From 9b69b382ffbafe4ea909b06d40d180e1670738e0 Mon Sep 17 00:00:00 2001 From: Philippe Marguinaud Date: Fri, 30 Sep 2016 09:52:13 +0200 Subject: [PATCH 001/414] First version of LAM support. --- definitions/grib2/section.3.def | 9 +++++- definitions/grib2/section.5.def | 1 + definitions/grib2/template.3.10.def | 32 ++----------------- definitions/grib2/template.3.20.def | 33 ++------------------ definitions/grib2/template.3.30.def | 48 +++-------------------------- src/CMakeLists.txt | 3 ++ src/grib_accessor_class.h | 2 ++ src/grib_accessor_factory.h | 2 ++ tests/CMakeLists.txt | 6 ++++ 9 files changed, 31 insertions(+), 105 deletions(-) diff --git a/definitions/grib2/section.3.def b/definitions/grib2/section.3.def index c0aa869f2..1344be9f4 100644 --- a/definitions/grib2/section.3.def +++ b/definitions/grib2/section.3.def @@ -76,8 +76,9 @@ concept gridType { "stretched_ll" = { gridDefinitionTemplateNumber=2; PLPresent=0; } "stretched_rotated_ll" = { gridDefinitionTemplateNumber=3; PLPresent=0; } "mercator" = { gridDefinitionTemplateNumber=10; PLPresent=0; } + "mercator" = { gridDefinitionTemplateNumber=10; PLPresent=0; } "transverse_mercator" = { gridDefinitionTemplateNumber=12; PLPresent=0; } - "polar_stereographic" = { gridDefinitionTemplateNumber=20; PLPresent=0; } + "polar_stereographic" = { gridDefinitionTemplateNumber=20; PLPresent=0; } "lambert" = { gridDefinitionTemplateNumber=30; PLPresent=0; } "albers" = { gridDefinitionTemplateNumber=31; PLPresent=0; } @@ -112,6 +113,12 @@ concept gridType { "cross_section" = { gridDefinitionTemplateNumber=1000;PLPresent=0; } "Hovmoller" = { gridDefinitionTemplateNumber=1100;PLPresent=0; } "time_section" = { gridDefinitionTemplateNumber=1200;PLPresent=0; } + "lambert_lam" = { gridDefinitionTemplateNumber=33001; PLPresent=0; } + "mercator_lam" = { gridDefinitionTemplateNumber=33002; PLPresent=0; } + "polar_stereographic_lam" = { gridDefinitionTemplateNumber=33003; PLPresent=0; } + "lambert_bf" = { gridDefinitionTemplateNumber=33010; PLPresent=0; } + "mercator_bf" = { gridDefinitionTemplateNumber=33011; PLPresent=0; } + "polar_stereographic_bf" = { gridDefinitionTemplateNumber=33012; PLPresent=0; } "unknown" = {PLPresent=0;} "unknown_PLPresent" = {PLPresent=1;} } : dump; diff --git a/definitions/grib2/section.5.def b/definitions/grib2/section.5.def index 4ba952ce9..65eb1fc7d 100644 --- a/definitions/grib2/section.5.def +++ b/definitions/grib2/section.5.def @@ -60,6 +60,7 @@ concept packingType (unknown) { "grid_second_order_SPD3" = { dataRepresentationTemplateNumber = 50001;orderOfSPD=3; } "spectral_ieee" = { dataRepresentationTemplateNumber=50000; } "grid_simple_log_preprocessing" = { dataRepresentationTemplateNumber = 61; } + "bifourier_complex" = { dataRepresentationTemplateNumber = 60000; spectralType=99; } } : dump; template dataRepresentation "grib2/template.5.[dataRepresentationTemplateNumber:l].def"; diff --git a/definitions/grib2/template.3.10.def b/definitions/grib2/template.3.10.def index 75c077fa0..63d666d93 100644 --- a/definitions/grib2/template.3.10.def +++ b/definitions/grib2/template.3.10.def @@ -21,41 +21,15 @@ alias numberOfPointsAlongAMeridian=Nj; alias Ny = Nj ; alias geography.Nj=Nj; -# La1 - latitude of first grid point -signed[4] latitudeOfFirstGridPoint: edition_specific,no_copy ; -alias La1 = latitudeOfFirstGridPoint; -meta geography.latitudeOfFirstGridPointInDegrees scale(latitudeOfFirstGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; - -# Lo1 - longitude of first grid point -signed[4] longitudeOfFirstGridPoint : edition_specific,no_copy; -alias Lo1 = longitudeOfFirstGridPoint; -meta geography.longitudeOfFirstGridPointInDegrees scale(longitudeOfFirstGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; +include "grib2/template.3.10.part1.def" include "grib2/template.3.resolution_flags.def"; -# LaD - Latitude(s) at which the Mercator projection intersects the Earth -# (Latitude(s) where Di and Dj are specified) -signed[4] LaD : edition_specific,no_copy; -meta geography.LaDInDegrees scale(LaD,oneConstant,grib2divider,truncateDegrees) : dump; - -# La2 - latitude of last grid point -signed[4] latitudeOfLastGridPoint : edition_specific,no_copy; -alias La2 = latitudeOfLastGridPoint; -meta geography.latitudeOfLastGridPointInDegrees scale(latitudeOfLastGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; - -# Lo2 - longitude of last grid point -signed[4] longitudeOfLastGridPoint: edition_specific,no_copy ; -alias Lo2 = longitudeOfLastGridPoint; -meta geography.longitudeOfLastGridPointInDegrees scale(longitudeOfLastGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; +include "grib2/template.3.10.part2.def" include "grib2/template.3.scanning_mode.def"; -# Orientation of the grid, angle between i direction on the map and the equator -# NOTE 1: Limited to the range of 0 to 90 degrees; if the angle of orientation of the grid is neither 0 nor 90 degrees, -# Di and Dj must be equal to each other -unsigned[4] orientationOfTheGrid : dump ; -meta geography.orientationOfTheGridInDegrees - scale(orientationOfTheGrid,oneConstant,grib2divider,truncateDegrees) : dump; +include "grib2/template.3.10.part3.def" # Di - longitudinal direction grid length # NOTE 2: Grid lengths are in units of 10**-3 m, at the latitude specified by LaD diff --git a/definitions/grib2/template.3.20.def b/definitions/grib2/template.3.20.def index c5d08df47..094716a1a 100644 --- a/definitions/grib2/template.3.20.def +++ b/definitions/grib2/template.3.20.def @@ -25,31 +25,7 @@ alias Nj = Ny; alias numberOfPointsAlongYAxis = Ny; alias geography.Ny=Ny; -# La1 - latitude of first grid point -signed[4] latitudeOfFirstGridPoint : edition_specific ; -meta geography.latitudeOfFirstGridPointInDegrees scale(latitudeOfFirstGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; -alias La1 = latitudeOfFirstGridPoint; - -# Lo1 - longitude of first grid point -unsigned[4] longitudeOfFirstGridPoint : edition_specific; -meta geography.longitudeOfFirstGridPointInDegrees scale(longitudeOfFirstGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; -alias Lo1 = longitudeOfFirstGridPoint; - -# Resolution and component flag -# NOTE 1 NOT FOUND -flags[1] resolutionAndComponentFlag 'grib2/tables/[tablesVersion]/3.3.table' : dump; - -# LaD - Latitude where Dx and Dy are specified -signed[4] LaD : edition_specific; -alias latitudeWhereDxAndDyAreSpecified=LaD; -meta geography.LaDInDegrees scale(LaD,oneConstant,grib2divider,truncateDegrees) : dump; -alias latitudeWhereDxAndDyAreSpecifiedInDegrees=LaDInDegrees; - -# LoV - orientation of the grid -# NOTE 2 NOT FOUND -signed[4] orientationOfTheGrid : edition_specific; -alias LoV = orientationOfTheGrid ; -meta geography.orientationOfTheGridInDegrees scale(orientationOfTheGrid,oneConstant,grib2divider,truncateDegrees) : dump; +include "grib2/template.3.20.part1.def" # Dx - X-direction grid length # NOTE 3: Grid length is in units of 10-3 m at the latitude specified by LaD @@ -63,12 +39,7 @@ unsigned[4] Dy : edition_specific; meta geography.DyInMetres scale(Dy,one,thousand,truncateDegrees) : dump; alias yDirectionGridLength=Dy; -# Projection centre flag -flags[1] projectionCentreFlag 'grib2/tables/[tablesVersion]/3.5.table' : dump; -# Note our flagbit numbers go from 7 to 0, while WMO convention is from 1 to 8 -# If bit 1 is 0, then the North Pole is on the projection plane -# If bit 1 is 1, then the South Pole is on the projection plane -flagbit southPoleOnProjectionPlane(projectionCentreFlag,7) : dump; # WMO bit 1 +include "grib2/template.3.20.part2.def" include "grib2/template.3.scanning_mode.def"; diff --git a/definitions/grib2/template.3.30.def b/definitions/grib2/template.3.30.def index 8f32e86a1..2844cbeda 100644 --- a/definitions/grib2/template.3.30.def +++ b/definitions/grib2/template.3.30.def @@ -20,32 +20,11 @@ alias Nj = Ny; alias numberOfPointsAlongYAxis = Ny; alias geography.Ny=Ny; -# La1 - latitude of first grid point -signed[4] latitudeOfFirstGridPoint : edition_specific; -alias La1 = latitudeOfFirstGridPoint; -meta geography.latitudeOfFirstGridPointInDegrees - scale(latitudeOfFirstGridPoint,one,grib2divider,truncateDegrees) : dump; -alias La1InDegrees=latitudeOfFirstGridPointInDegrees; -#meta latitudeOfFirstGridPointInMicrodegrees times(latitudeOfFirstGridPointInDegrees,oneConstant): no_copy; - -# Lo1 - longitude of first grid point -unsigned[4] longitudeOfFirstGridPoint : edition_specific; -alias Lo1 = longitudeOfFirstGridPoint; -meta geography.longitudeOfFirstGridPointInDegrees - scale(longitudeOfFirstGridPoint,one,grib2divider,truncateDegrees) : dump; -alias Lo1InDegrees = longitudeOfFirstGridPointInDegrees; -#meta longitudeOfFirstGridPointInMicrodegrees times(longitudeOfFirstGridPoint,oneConstant) : no_copy; +include "grib2/template.3.30.part1.def" include "grib2/template.3.resolution_flags.def"; -# LaD - Latitude where Dx and Dy are specified -signed[4] LaD : edition_specific ; -alias latitudeWhereDxAndDyAreSpecified=LaD; -meta geography.LaDInDegrees scale(LaD,one,grib2divider,truncateDegrees) : dump; - -# LoV - Longitude of meridian parallel to Y-axis along which latitude increases as the Y-coordinate increases -unsigned[4] LoV : edition_specific; -meta geography.LoVInDegrees scale(LoV,one,grib2divider,truncateDegrees) : dump; +include "grib2/template.3.30.part2.def" # Dx - X-direction grid length # NOTE 1 NOT FOUND @@ -61,30 +40,11 @@ alias yDirectionGridLength=Dy ; alias Dj = Dy; meta geography.DyInMetres scale(Dy,one,thousand) : dump; -# Projection centre flag -flags[1] projectionCentreFlag 'grib2/tables/[tablesVersion]/3.5.table' : dump; +include "grib2/template.3.30.part3.def" include "grib2/template.3.scanning_mode.def"; -# Latin 1 - first latitude from the pole at which the secant cone cuts the sphere -signed[4] Latin1 : edition_specific; -alias FirstLatitude=Latin1; -meta geography.Latin1InDegrees scale(Latin1,one,grib2divider,truncateDegrees) : dump; - -# Latin 2 - second latitude from the pole at which the secant cone cuts the sphere -signed[4] Latin2 : dump; -alias SecondLatitude=Latin2; -meta geography.Latin2InDegrees scale(Latin2,one,grib2divider,truncateDegrees) : dump; - -# Latitude of the southern pole of projection -signed[4] latitudeOfSouthernPole : edition_specific; -alias latitudeOfTheSouthernPoleOfProjection=latitudeOfSouthernPole; -meta geography.latitudeOfSouthernPoleInDegrees scale(latitudeOfSouthernPole ,one,grib2divider,truncateDegrees) : dump; - -# Longitude of the southern pole of projection -unsigned[4] longitudeOfSouthernPole : edition_specific; -alias longitudeOfTheSouthernPoleOfProjection=longitudeOfSouthernPole; -meta geography.longitudeOfSouthernPoleInDegrees scale(longitudeOfSouthernPole,oneConstant,grib2divider,truncateDegrees) : dump; +include "grib2/template.3.30.part4.def" iterator lambert_conformal(numberOfPoints,missingValue,values, radius,Nx,Ny, diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2d36fcbc3..bb9518680 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -361,6 +361,9 @@ list( APPEND grib_api_srcs grib_accessor_class_uint64_little_endian.c grib_accessor_class_uint8.c grib_accessor_class_blob.c + grib_optimize_decimal_factor.c + grib_accessor_class_data_g2bifourier_packing.c + grib_accessor_class_bifourier_truncation.c eccodes_windef.h # We ship our own generated lex/yacc C files grib_yacc.c grib_lex.c diff --git a/src/grib_accessor_class.h b/src/grib_accessor_class.h index 60a8e224c..8d3d93141 100644 --- a/src/grib_accessor_class.h +++ b/src/grib_accessor_class.h @@ -41,6 +41,8 @@ extern grib_accessor_class* grib_accessor_class_data_apply_boustrophedonic_bitma extern grib_accessor_class* grib_accessor_class_data_apply_gdsnotpresent; extern grib_accessor_class* grib_accessor_class_data_ccsds_packing; extern grib_accessor_class* grib_accessor_class_data_complex_packing; +extern grib_accessor_class* grib_accessor_class_data_g2bifourier_packing; +extern grib_accessor_class* grib_accessor_class_bifourier_truncation; extern grib_accessor_class* grib_accessor_class_data_constant_field; extern grib_accessor_class* grib_accessor_class_data_dummy_field; extern grib_accessor_class* grib_accessor_class_data_g1complex_packing; diff --git a/src/grib_accessor_factory.h b/src/grib_accessor_factory.h index f825d47b7..64771bdff 100644 --- a/src/grib_accessor_factory.h +++ b/src/grib_accessor_factory.h @@ -41,6 +41,8 @@ { "data_apply_gdsnotpresent", &grib_accessor_class_data_apply_gdsnotpresent, }, { "data_ccsds_packing", &grib_accessor_class_data_ccsds_packing, }, { "data_complex_packing", &grib_accessor_class_data_complex_packing, }, +{ "data_g2bifourier_packing", &grib_accessor_class_data_g2bifourier_packing, }, +{ "bifourier_truncation", &grib_accessor_class_bifourier_truncation, }, { "data_constant_field", &grib_accessor_class_data_constant_field, }, { "data_dummy_field", &grib_accessor_class_data_dummy_field, }, { "data_g1complex_packing", &grib_accessor_class_data_g1complex_packing, }, diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index e36b6b8fe..174c85aac 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -18,6 +18,8 @@ list( APPEND test_bins unit_tests gauss_sub grib_util_set_spec + lam_bf + lam_gp ) foreach( tool ${test_bins} ) @@ -56,6 +58,8 @@ list( APPEND tests2 metar_dump bufr_set ieee + lam_bf + lam_gp grib1to2 grib2to1 badgrib @@ -150,3 +154,5 @@ ecbuild_add_test( TARGET eccodes_t_ccsds COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/ccsds.sh TEST_DEPENDS eccodes_get_gribs ) + + From 08ac3b7dc4895ccb78fb59c10d93609fd598f73e Mon Sep 17 00:00:00 2001 From: Philippe Marguinaud Date: Fri, 30 Sep 2016 09:53:04 +0200 Subject: [PATCH 002/414] First version of LAM support. --- definitions/grib2/template.3.10.part1.def | 11 + definitions/grib2/template.3.10.part2.def | 16 + definitions/grib2/template.3.10.part3.def | 8 + definitions/grib2/template.3.20.part1.def | 27 + definitions/grib2/template.3.20.part2.def | 8 + definitions/grib2/template.3.30.part1.def | 17 + definitions/grib2/template.3.30.part2.def | 10 + definitions/grib2/template.3.30.part3.def | 4 + definitions/grib2/template.3.30.part4.def | 21 + definitions/grib2/template.3.33001.def | 12 + definitions/grib2/template.3.33002.def | 13 + definitions/grib2/template.3.33003.def | 12 + definitions/grib2/template.3.33010.def | 30 + definitions/grib2/template.3.33011.def | 28 + definitions/grib2/template.3.33012.def | 29 + definitions/grib2/template.3.bf.part1.def | 7 + definitions/grib2/template.3.bf.part2.def | 7 + definitions/grib2/template.3.bf.part3.def | 22 + definitions/grib2/template.3.lam.def | 13 + definitions/grib2/template.5.60000.def | 37 + definitions/grib2/template.7.60000.def | 55 + samples/lambert_bf_grib2.tmpl | Bin 0 -> 1326 bytes ...grib_accessor_class_bifourier_truncation.c | 193 ++++ ..._accessor_class_data_g2bifourier_packing.c | 949 ++++++++++++++++++ src/grib_optimize_decimal_factor.c | 216 ++++ src/grib_optimize_decimal_factor.h | 14 + tests/lam_bf.c | 681 +++++++++++++ tests/lam_bf.sh | 13 + tests/lam_gp.c | 894 +++++++++++++++++ tests/lam_gp.sh | 13 + 30 files changed, 3360 insertions(+) create mode 100644 definitions/grib2/template.3.10.part1.def create mode 100644 definitions/grib2/template.3.10.part2.def create mode 100644 definitions/grib2/template.3.10.part3.def create mode 100644 definitions/grib2/template.3.20.part1.def create mode 100644 definitions/grib2/template.3.20.part2.def create mode 100644 definitions/grib2/template.3.30.part1.def create mode 100644 definitions/grib2/template.3.30.part2.def create mode 100644 definitions/grib2/template.3.30.part3.def create mode 100644 definitions/grib2/template.3.30.part4.def create mode 100644 definitions/grib2/template.3.33001.def create mode 100644 definitions/grib2/template.3.33002.def create mode 100644 definitions/grib2/template.3.33003.def create mode 100644 definitions/grib2/template.3.33010.def create mode 100644 definitions/grib2/template.3.33011.def create mode 100644 definitions/grib2/template.3.33012.def create mode 100644 definitions/grib2/template.3.bf.part1.def create mode 100644 definitions/grib2/template.3.bf.part2.def create mode 100644 definitions/grib2/template.3.bf.part3.def create mode 100644 definitions/grib2/template.3.lam.def create mode 100644 definitions/grib2/template.5.60000.def create mode 100644 definitions/grib2/template.7.60000.def create mode 100644 samples/lambert_bf_grib2.tmpl create mode 100644 src/grib_accessor_class_bifourier_truncation.c create mode 100644 src/grib_accessor_class_data_g2bifourier_packing.c create mode 100644 src/grib_optimize_decimal_factor.c create mode 100644 src/grib_optimize_decimal_factor.h create mode 100644 tests/lam_bf.c create mode 100755 tests/lam_bf.sh create mode 100644 tests/lam_gp.c create mode 100755 tests/lam_gp.sh diff --git a/definitions/grib2/template.3.10.part1.def b/definitions/grib2/template.3.10.part1.def new file mode 100644 index 000000000..f5385b595 --- /dev/null +++ b/definitions/grib2/template.3.10.part1.def @@ -0,0 +1,11 @@ +# La1 - latitude of first grid point +signed[4] latitudeOfFirstGridPoint: edition_specific,no_copy ; +alias La1 = latitudeOfFirstGridPoint; +meta geography.latitudeOfFirstGridPointInDegrees scale(latitudeOfFirstGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; + +# Lo1 - longitude of first grid point +signed[4] longitudeOfFirstGridPoint : edition_specific,no_copy; +alias Lo1 = longitudeOfFirstGridPoint; +meta geography.longitudeOfFirstGridPointInDegrees scale(longitudeOfFirstGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; + + diff --git a/definitions/grib2/template.3.10.part2.def b/definitions/grib2/template.3.10.part2.def new file mode 100644 index 000000000..6c2e3e256 --- /dev/null +++ b/definitions/grib2/template.3.10.part2.def @@ -0,0 +1,16 @@ +# LaD - Latitude(s) at which the Mercator projection intersects the Earth +# (Latitude(s) where Di and Dj are specified) +signed[4] LaD : edition_specific,no_copy; +meta geography.LaDInDegrees scale(LaD,oneConstant,grib2divider,truncateDegrees) : dump; + +# La2 - latitude of last grid point +signed[4] latitudeOfLastGridPoint : edition_specific,no_copy; +alias La2 = latitudeOfLastGridPoint; +meta geography.latitudeOfLastGridPointInDegrees scale(latitudeOfLastGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; + +# Lo2 - longitude of last grid point +signed[4] longitudeOfLastGridPoint: edition_specific,no_copy ; +alias Lo2 = longitudeOfLastGridPoint; +meta geography.longitudeOfLastGridPointInDegrees scale(longitudeOfLastGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; + + diff --git a/definitions/grib2/template.3.10.part3.def b/definitions/grib2/template.3.10.part3.def new file mode 100644 index 000000000..2bc21e794 --- /dev/null +++ b/definitions/grib2/template.3.10.part3.def @@ -0,0 +1,8 @@ +# Orientation of the grid, angle between i direction on the map and the equator +# NOTE 1: Limited to the range of 0 to 90 degrees; if the angle of orientation of the grid is neither 0 nor 90 degrees, +# Di and Dj must be equal to each other +unsigned[4] orientationOfTheGrid : dump ; +meta geography.orientationOfTheGridInDegrees + scale(orientationOfTheGrid,oneConstant,grib2divider,truncateDegrees) : dump; + + diff --git a/definitions/grib2/template.3.20.part1.def b/definitions/grib2/template.3.20.part1.def new file mode 100644 index 000000000..86f6f13a3 --- /dev/null +++ b/definitions/grib2/template.3.20.part1.def @@ -0,0 +1,27 @@ +# La1 - latitude of first grid point +signed[4] latitudeOfFirstGridPoint : edition_specific ; +meta geography.latitudeOfFirstGridPointInDegrees scale(latitudeOfFirstGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; +alias La1 = latitudeOfFirstGridPoint; + +# Lo1 - longitude of first grid point +unsigned[4] longitudeOfFirstGridPoint : edition_specific; +meta geography.longitudeOfFirstGridPointInDegrees scale(longitudeOfFirstGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; +alias Lo1 = longitudeOfFirstGridPoint; + +# Resolution and component flag +# NOTE 1 NOT FOUND +flags[1] resolutionAndComponentFlag 'grib2/tables/[tablesVersion]/3.3.table' : dump; + +# LaD - Latitude where Dx and Dy are specified +signed[4] LaD : edition_specific; +alias latitudeWhereDxAndDyAreSpecified=LaD; +meta geography.LaDInDegrees scale(LaD,oneConstant,grib2divider,truncateDegrees) : dump; +alias latitudeWhereDxAndDyAreSpecifiedInDegrees=LaDInDegrees; + +# LoV - orientation of the grid +# NOTE 2 NOT FOUND +signed[4] orientationOfTheGrid : edition_specific; +alias LoV = orientationOfTheGrid ; +meta geography.orientationOfTheGridInDegrees scale(orientationOfTheGrid,oneConstant,grib2divider,truncateDegrees) : dump; + + diff --git a/definitions/grib2/template.3.20.part2.def b/definitions/grib2/template.3.20.part2.def new file mode 100644 index 000000000..d5fdee0e4 --- /dev/null +++ b/definitions/grib2/template.3.20.part2.def @@ -0,0 +1,8 @@ +# Projection centre flag +flags[1] projectionCentreFlag 'grib2/tables/[tablesVersion]/3.5.table' : dump; +# Note our flagbit numbers go from 7 to 0, while WMO convention is from 1 to 8 +# If bit 1 is 0, then the North Pole is on the projection plane +# If bit 1 is 1, then the South Pole is on the projection plane +flagbit southPoleOnProjectionPlane(projectionCentreFlag,7) : dump; # WMO bit 1 + + diff --git a/definitions/grib2/template.3.30.part1.def b/definitions/grib2/template.3.30.part1.def new file mode 100644 index 000000000..980ce52c0 --- /dev/null +++ b/definitions/grib2/template.3.30.part1.def @@ -0,0 +1,17 @@ +# La1 - latitude of first grid point +signed[4] latitudeOfFirstGridPoint : edition_specific; +alias La1 = latitudeOfFirstGridPoint; +meta geography.latitudeOfFirstGridPointInDegrees + scale(latitudeOfFirstGridPoint,one,grib2divider,truncateDegrees) : dump; +alias La1InDegrees=latitudeOfFirstGridPointInDegrees; +#meta latitudeOfFirstGridPointInMicrodegrees times(latitudeOfFirstGridPointInDegrees,oneConstant): no_copy; + +# Lo1 - longitude of first grid point +unsigned[4] longitudeOfFirstGridPoint : edition_specific; +alias Lo1 = longitudeOfFirstGridPoint; +meta geography.longitudeOfFirstGridPointInDegrees + scale(longitudeOfFirstGridPoint,one,grib2divider,truncateDegrees) : dump; +alias Lo1InDegrees = longitudeOfFirstGridPointInDegrees; +#meta longitudeOfFirstGridPointInMicrodegrees times(longitudeOfFirstGridPoint,oneConstant) : no_copy; + + diff --git a/definitions/grib2/template.3.30.part2.def b/definitions/grib2/template.3.30.part2.def new file mode 100644 index 000000000..a55022338 --- /dev/null +++ b/definitions/grib2/template.3.30.part2.def @@ -0,0 +1,10 @@ +# LaD - Latitude where Dx and Dy are specified +signed[4] LaD : edition_specific ; +alias latitudeWhereDxAndDyAreSpecified=LaD; +meta geography.LaDInDegrees scale(LaD,one,grib2divider,truncateDegrees) : dump; + + +# LoV - Longitude of meridian parallel to Y-axis along which latitude increases as the Y-coordinate increases +unsigned[4] LoV : edition_specific; +meta geography.LoVInDegrees scale(LoV,one,grib2divider,truncateDegrees) : dump; + diff --git a/definitions/grib2/template.3.30.part3.def b/definitions/grib2/template.3.30.part3.def new file mode 100644 index 000000000..bc905addd --- /dev/null +++ b/definitions/grib2/template.3.30.part3.def @@ -0,0 +1,4 @@ + +# Projection centre flag +flags[1] projectionCentreFlag 'grib2/tables/[tablesVersion]/3.5.table' : dump; + diff --git a/definitions/grib2/template.3.30.part4.def b/definitions/grib2/template.3.30.part4.def new file mode 100644 index 000000000..01cfdfb5e --- /dev/null +++ b/definitions/grib2/template.3.30.part4.def @@ -0,0 +1,21 @@ +# Latin 1 - first latitude from the pole at which the secant cone cuts the sphere +signed[4] Latin1 : edition_specific; +alias FirstLatitude=Latin1; +meta geography.Latin1InDegrees scale(Latin1,one,grib2divider,truncateDegrees) : dump; + +# Latin 2 - second latitude from the pole at which the secant cone cuts the sphere +signed[4] Latin2 : dump; +alias SecondLatitude=Latin2; +meta geography.Latin2InDegrees scale(Latin2,one,grib2divider,truncateDegrees) : dump; + +# Latitude of the southern pole of projection +signed[4] latitudeOfSouthernPole : edition_specific; +alias latitudeOfTheSouthernPoleOfProjection=latitudeOfSouthernPole; +meta geography.latitudeOfSouthernPoleInDegrees scale(latitudeOfSouthernPole ,one,grib2divider,truncateDegrees) : dump; + +# Longitude of the southern pole of projection +unsigned[4] longitudeOfSouthernPole : edition_specific; +alias longitudeOfTheSouthernPoleOfProjection=longitudeOfSouthernPole; +meta geography.longitudeOfSouthernPoleInDegrees scale(longitudeOfSouthernPole,oneConstant,grib2divider,truncateDegrees) : dump; + + diff --git a/definitions/grib2/template.3.33001.def b/definitions/grib2/template.3.33001.def new file mode 100644 index 000000000..a2c804c10 --- /dev/null +++ b/definitions/grib2/template.3.33001.def @@ -0,0 +1,12 @@ +# Copyright 2005-2015 ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +# TEMPLATE 3.33001, Lambert conformal for limited area models +include "grib2/template.3.30.def" +include "grib2/template.3.lam.def" diff --git a/definitions/grib2/template.3.33002.def b/definitions/grib2/template.3.33002.def new file mode 100644 index 000000000..25ca0c2cb --- /dev/null +++ b/definitions/grib2/template.3.33002.def @@ -0,0 +1,13 @@ +# Copyright 2005-2015 ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +# TEMPLATE 3.33002, Mercator for limited area models + +include "grib2/template.3.10.def" +include "grib2/template.3.lam.def" diff --git a/definitions/grib2/template.3.33003.def b/definitions/grib2/template.3.33003.def new file mode 100644 index 000000000..cd55cd331 --- /dev/null +++ b/definitions/grib2/template.3.33003.def @@ -0,0 +1,12 @@ +# Copyright 2005-2015 ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +# TEMPLATE 3.33003, Polar stereographic projection for limited area models +include "grib2/template.3.20.def" +include "grib2/template.3.lam.def" diff --git a/definitions/grib2/template.3.33010.def b/definitions/grib2/template.3.33010.def new file mode 100644 index 000000000..9ba3098a7 --- /dev/null +++ b/definitions/grib2/template.3.33010.def @@ -0,0 +1,30 @@ +# Copyright 2005-2015 ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +# TEMPLATE 3.33010, BiFourier coefficients on lambert projection + +transient biFourierMakeTemplate = 0; + +include "grib2/template.3.bf.part1.def" + +include "grib2/template.3.shape_of_the_earth.def"; + +include "grib2/template.3.bf.part2.def" + +include "grib2/template.3.30.part1.def" + +include "grib2/template.3.30.part2.def" + +include "grib2/template.3.bf.part3.def" + +include "grib2/template.3.30.part3.def" + +include "grib2/template.3.30.part4.def" + + diff --git a/definitions/grib2/template.3.33011.def b/definitions/grib2/template.3.33011.def new file mode 100644 index 000000000..cd8f2ac22 --- /dev/null +++ b/definitions/grib2/template.3.33011.def @@ -0,0 +1,28 @@ +# Copyright 2005-2015 ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +# TEMPLATE 3.33011, Bi-Fourier coefficients on Mercator projection + +transient biFourierMakeTemplate = 0; + +include "grib2/template.3.shape_of_the_earth.def"; + +include "grib2/template.3.bf.part1.def" + +include "grib2/template.3.10.part1.def" + +include "grib2/template.3.10.part2.def" + +include "grib2/template.3.10.part3.def" + +include "grib2/template.3.bf.part2.def" + +include "grib2/template.3.bf.part3.def" + +# END 2/template.3.33011 ---------------------------------------------------------------------- diff --git a/definitions/grib2/template.3.33012.def b/definitions/grib2/template.3.33012.def new file mode 100644 index 000000000..4c78e2be6 --- /dev/null +++ b/definitions/grib2/template.3.33012.def @@ -0,0 +1,29 @@ +# Copyright 2005-2015 ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + + +# TEMPLATE 3.33012, Bi-Fourier coefficients on polar stereographic projection + +transient biFourierMakeTemplate = 0; + +include "grib2/template.3.shape_of_the_earth.def"; + +transient oneThousand=1000; + +include "grib2/template.3.bf.part1.def" + +include "grib2/template.3.20.part1.def" + +include "grib2/template.3.bf.part2.def" + +include "grib2/template.3.20.part2.def" + +include "grib2/template.3.bf.part3.def" + +# END 2/template.3.33012 ---------------------------------------------------------------------- diff --git a/definitions/grib2/template.3.bf.part1.def b/definitions/grib2/template.3.bf.part1.def new file mode 100644 index 000000000..8379d2fd1 --- /dev/null +++ b/definitions/grib2/template.3.bf.part1.def @@ -0,0 +1,7 @@ +label "BiFourier coefficients"; +constant biFourierCoefficients=1; + +codetable[1] spectralType ('3.6.table',masterDir,localDir) = 99 : no_copy; +alias spectralDataRepresentationType=spectralType; + + diff --git a/definitions/grib2/template.3.bf.part2.def b/definitions/grib2/template.3.bf.part2.def new file mode 100644 index 000000000..f42038859 --- /dev/null +++ b/definitions/grib2/template.3.bf.part2.def @@ -0,0 +1,7 @@ + +unsigned[4] biFourierResolutionParameterN : dump; + +unsigned[4] biFourierResolutionParameterM : dump; + +codetable[1] biFourierTruncationType ('3.99.table',masterDir,localDir) : dump; + diff --git a/definitions/grib2/template.3.bf.part3.def b/definitions/grib2/template.3.bf.part3.def new file mode 100644 index 000000000..17351e85a --- /dev/null +++ b/definitions/grib2/template.3.bf.part3.def @@ -0,0 +1,22 @@ +# Lx - Full domain length in X-direction +unsigned[8] Lx; +meta geography.LxInMetres scale(Lx,one,thousand) : dump; +# Lux - Useful domain length in X-direction +unsigned[8] Lux; +meta geography.LuxInMetres scale(Lux,one,thousand) : dump; +# Lcx - Coupling domain width in X-direction +unsigned[8] Lcx; +meta geography.LcxInMetres scale(Lcx,one,thousand) : dump; + +# Ly - Full domain length in Y-direction +unsigned[8] Ly; +meta geography.LyInMetres scale(Ly,one,thousand) : dump; +# Luy - Useful domain length in Y-direction +unsigned[8] Luy; +meta geography.LuyInMetres scale(Luy,one,thousand) : dump; +# Lcy - Coupling domain width in Y-direction +unsigned[8] Lcy; +meta geography.LcyInMetres scale(Lcy,one,thousand) : dump; + + + diff --git a/definitions/grib2/template.3.lam.def b/definitions/grib2/template.3.lam.def new file mode 100644 index 000000000..281b07cc6 --- /dev/null +++ b/definitions/grib2/template.3.lam.def @@ -0,0 +1,13 @@ +unsigned[4] Nux : dump; +alias numberOfUsefulPointsAlongXAxis = Nux; + +unsigned[4] Ncx : dump; +alias numberOfPointsAlongXAxisInCouplingArea = Ncx; + +unsigned[4] Nuy : dump; +alias numberOfUsefulPointsAlongYAxis = Nuy; + +unsigned[4] Ncy : dump; +alias numberOfPointsAlongYAxisInCouplingArea = Ncy; + + diff --git a/definitions/grib2/template.5.60000.def b/definitions/grib2/template.5.60000.def new file mode 100644 index 000000000..d5a90bae0 --- /dev/null +++ b/definitions/grib2/template.5.60000.def @@ -0,0 +1,37 @@ +# Copyright 2005-2015 ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + + + +# TEMPLATE 5.60000, BiFourier coefficients data - complex packing + +include "grib2/template.5.packing.def"; + +transient computeLaplacianOperator=1 : hidden; + +codetable[1] biFourierSubTruncationType ('3.99.table',masterDir,localDir) : dump; +unsigned[1] biFourierDoNotPackAxes = 0 : dump; + +meta _numberOfValues bifourier_truncation(I,J,numberOfValues): read_only; + +constant laplacianScalingFactorUnset = -2147483647; +signed[4] laplacianScalingFactor : edition_specific ; + +meta data.laplacianOperator scale(laplacianScalingFactor,one,million,truncateLaplacian) ; +meta laplacianOperatorIsSet evaluate(laplacianScalingFactor != laplacianScalingFactorUnset && !computeLaplacianOperator); + +unsigned[2] biFourierResolutionSubSetParameterN ; +unsigned[2] biFourierResolutionSubSetParameterM ; + + +# This is read_only until we support other values +codetable[1] unpackedSubsetPrecision ('5.7.table',masterDir,localDir) = 1 : dump; + +alias precisionOfTheUnpackedSubset=unpackedSubsetPrecision; + diff --git a/definitions/grib2/template.7.60000.def b/definitions/grib2/template.7.60000.def new file mode 100644 index 000000000..b1798754f --- /dev/null +++ b/definitions/grib2/template.7.60000.def @@ -0,0 +1,55 @@ +# Copyright 2005-2015 ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +# TEMPLATE 7.60000, BiFourier coefficients - complex packing + +constant biFourierCoefficients = 1; +constant complexPacking = 1; + + +meta codedValues data_g2bifourier_packing( + section7Length, + offsetBeforeData, + offsetSection7, + + unitsFactor, + unitsBias, + changingPrecision, + numberOfValues, + bitsPerValue, + referenceValue, + binaryScaleFactor, + decimalScaleFactor, + optimizeScaleFactor, + + unpackedSubsetPrecision, + + laplacianOperatorIsSet, + laplacianOperator, + + biFourierTruncationType, + biFourierResolutionSubSetParameterN, + biFourierResolutionSubSetParameterM, + + biFourierResolutionParameterN, + biFourierResolutionParameterM, + biFourierSubTruncationType, + biFourierDoNotPackAxes, + biFourierMakeTemplate, + + numberOfValues + ): read_only; + +meta values data_apply_bitmap(codedValues, + bitmap, + missingValue, + binaryScaleFactor, + numberOfDataPoints, + numberOfValues) : dump; + diff --git a/samples/lambert_bf_grib2.tmpl b/samples/lambert_bf_grib2.tmpl new file mode 100644 index 0000000000000000000000000000000000000000..f1526633c74193c2bacc53d4812ad6fc6bd353a1 GIT binary patch literal 1326 zcmZ<{@^t$DpMi-13|RGmlqe%ZC<6lv10(x&W^o>%07$Zu8KgjmfuZ43GTVPt0F(g9 zGAFa}EZ)di|F9LLlyO>J1BhmjYiR&cL;)7&s|+BF0L)A*3_HNw{|!Kj5yZ>{5eyJF zfLIO;3@aS!j(%}?lYGU|ucOLwwZDK9`}sXiet%k=W`y2wx|tW}EcPeI*=MnVbNku_ z&Koj2oF9gtaN%8OP0+-Kps;M)V&4L==R5ANIHdfE1Z>(lH5u0PB(+*mI)xbZ)< zaFcR#a8vo+;imudgPXP05;wQyGu(nqUbw{`;Bm{;I^b3kVc}M<=HS+{*TJoG)&#dc zIRUpxmLJ@vK9q2q$BnE=Q_9veR<->G?B&i zsbzrcvHk?tm1P;OeTF++Gr#A#+9*Z23On1m+?S4US!BxK5`QMeMLrrxti^(wLC+;_rqlDUT!|G@&QX0cCJ_rA@u zHZ}0J?!Gj``n;BbjR<>#jnDfMn=V-?o2^H_*}O_{uoX#KZENvb-8R|clWpf+0o$c{ z6Ks!kT(Etf*kQ*m`NmFW)*L&NKnpv+Xdk<*i!F97PlD{GHfY%`7g=VvvuK{(nUqO( z_cs~XeKw7dump = (*(c->super))->dump; + c->next_offset = (*(c->super))->next_offset; + c->string_length = (*(c->super))->string_length; + c->value_count = (*(c->super))->value_count; + c->byte_count = (*(c->super))->byte_count; + c->byte_offset = (*(c->super))->byte_offset; + c->get_native_type = (*(c->super))->get_native_type; + c->sub_section = (*(c->super))->sub_section; + c->pack_missing = (*(c->super))->pack_missing; + c->is_missing = (*(c->super))->is_missing; + c->pack_long = (*(c->super))->pack_long; + c->pack_double = (*(c->super))->pack_double; + c->unpack_double = (*(c->super))->unpack_double; + c->pack_string = (*(c->super))->pack_string; + c->unpack_string = (*(c->super))->unpack_string; + c->pack_bytes = (*(c->super))->pack_bytes; + c->unpack_bytes = (*(c->super))->unpack_bytes; + c->pack_expression = (*(c->super))->pack_expression; + c->notify_change = (*(c->super))->notify_change; + c->update_size = (*(c->super))->update_size; + c->preferred_size = (*(c->super))->preferred_size; + c->resize = (*(c->super))->resize; + c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; + c->next = (*(c->super))->next; + c->compare = (*(c->super))->compare; + c->unpack_double_element = (*(c->super))->unpack_double_element; + c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; + c->clear = (*(c->super))->clear; +} + +/* END_CLASS_IMP */ + +static void init(grib_accessor* a,const long l, grib_arguments* c) +{ + grib_accessor_bifourier_truncation* self = (grib_accessor_bifourier_truncation*)a; + grib_handle* gh = grib_handle_of_accessor(a); + int n = 0; + + self->I = grib_arguments_get_name(gh,c,n++); + self->J = grib_arguments_get_name(gh,c,n++); + self->T = grib_arguments_get_name(gh,c,n++); + + a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; +} + +static int unpack_long (grib_accessor* a, long* val, size_t *len) +{ + grib_handle* gh = grib_handle_of_accessor(a); + grib_accessor_bifourier_truncation* self = (grib_accessor_bifourier_truncation*)a; + int ret = 0; + + long I,J,T,Tc; + + if(*len < 1) return GRIB_ARRAY_TOO_SMALL; + + if((ret = grib_get_long_internal(gh, self->I,&I)) + != GRIB_SUCCESS) + return ret; + + if((ret = grib_get_long_internal(gh, self->J,&J)) + != GRIB_SUCCESS) + return ret; + + Tc = I * J; + + *val=Tc; + + if((ret = grib_get_long_internal(gh, self->T,&T)) + != GRIB_SUCCESS) { + + if (Tc == -1) + grib_context_log(gh->context, GRIB_LOG_ERROR, + "%s. BiFourier Truncation Type Unknown: %s=%d %s=%d \n", + a->name, self->I,I, self->J,J); + + Tc=0; + grib_set_long(gh, self->T,Tc); + + } else { + + if (Tc != -1 && Tc != T ) grib_set_long(gh, self->T,Tc); + + } + + if (ret == GRIB_SUCCESS) *len = 1; + + return ret; +} + diff --git a/src/grib_accessor_class_data_g2bifourier_packing.c b/src/grib_accessor_class_data_g2bifourier_packing.c new file mode 100644 index 000000000..5ac6a7905 --- /dev/null +++ b/src/grib_accessor_class_data_g2bifourier_packing.c @@ -0,0 +1,949 @@ +/* + * Copyright 2005-2015 ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +/******************************** + * philippe.marguinaud@meteo.fr + *******************************/ + +#include "grib_api_internal.h" +#include "grib_accessor_class.h" +#include "grib_optimize_decimal_factor.h" +#include +#include + +/* + This is used by make_class.pl + + START_CLASS_DEF + CLASS = accessor + SUPER = grib_accessor_class_data_simple_packing + IMPLEMENTS = init + IMPLEMENTS = unpack_double + IMPLEMENTS = unpack_double_element + IMPLEMENTS = unpack_double_subarray + IMPLEMENTS = pack_double + IMPLEMENTS = value_count + MEMBERS= const char* ieee_floats + MEMBERS= const char* laplacianOperatorIsSet + MEMBERS= const char* laplacianOperator + MEMBERS= const char* biFourierTruncationType + MEMBERS= const char* sub_i + MEMBERS= const char* sub_j + MEMBERS= const char* bif_i + MEMBERS= const char* bif_j + MEMBERS= const char* biFourierSubTruncationType + MEMBERS= const char* biFourierDoNotPackAxes + MEMBERS= const char* biFourierMakeTemplate + MEMBERS=const char* numberOfValues + END_CLASS_DEF + + */ + +/* START_CLASS_IMP */ + +/* + +Don't edit anything between START_CLASS_IMP and END_CLASS_IMP +Instead edit values between START_CLASS_DEF and END_CLASS_DEF +or edit "accessor.class" and rerun ./make_class.pl + +*/ + +static int pack_double(grib_accessor*, const double* val,size_t *len); +static int unpack_double(grib_accessor*, double* val,size_t *len); +static int value_count(grib_accessor*,long*); +static void init(grib_accessor*,const long, grib_arguments* ); +static void init_class(grib_accessor_class*); + +typedef struct grib_accessor_data_g2bifourier_packing { + grib_accessor att; +/* Members defined in gen */ +/* Members defined in values */ + int carg; + const char* seclen; + const char* offsetdata; + const char* offsetsection; + int dirty; +/* Members defined in data_simple_packing */ + int edition; + const char* units_factor; + const char* units_bias; + const char* changing_precision; + const char* number_of_values; + const char* bits_per_value; + const char* reference_value; + const char* binary_scale_factor; + const char* decimal_scale_factor; + const char* optimize_scaling_factor; +/* Members defined in data_g2bifourier_packing */ + const char* ieee_floats; + const char* laplacianOperatorIsSet; + const char* laplacianOperator; + const char* biFourierTruncationType; + const char* sub_i; + const char* sub_j; + const char* bif_i; + const char* bif_j; + const char* biFourierSubTruncationType; + const char* biFourierDoNotPackAxes; + const char* biFourierMakeTemplate; + const char* numberOfValues; +} grib_accessor_data_g2bifourier_packing; + +extern grib_accessor_class* grib_accessor_class_values; + +static grib_accessor_class _grib_accessor_class_data_g2bifourier_packing = { + &grib_accessor_class_data_simple_packing, /* super */ + "data_g2bifourier_packing", /* name */ + sizeof(grib_accessor_data_g2bifourier_packing), /* size */ + 0, /* inited */ + &init_class, /* init_class */ + &init, /* init */ + 0, /* post_init */ + 0, /* free mem */ + 0, /* describes himself */ + 0, /* get length of section */ + 0, /* get length of string */ + &value_count, /* get number of values */ + 0, /* get number of bytes */ + 0, /* get offset to bytes */ + 0, /* get native type */ + 0, /* get sub_section */ + 0, /* grib_pack procedures long */ + 0, /* grib_pack procedures long */ + 0, /* grib_pack procedures long */ + 0, /* grib_unpack procedures long */ + &pack_double, /* grib_pack procedures double */ + &unpack_double, /* grib_unpack procedures double */ + 0, /* grib_pack procedures string */ + 0, /* grib_unpack procedures string */ + 0, /* grib_pack procedures bytes */ + 0, /* grib_unpack procedures bytes */ + 0, /* pack_expression */ + 0, /* notify_change */ + 0, /* update_size */ + 0, /* preferred_size */ + 0, /* resize */ + 0, /* nearest_smaller_value */ + 0, /* next accessor */ + 0, /* compare vs. another accessor */ + 0, /* unpack only ith value */ + 0, /* unpack a subarray */ + 0, /* clear */ +}; + + +grib_accessor_class* grib_accessor_class_data_g2bifourier_packing = &_grib_accessor_class_data_g2bifourier_packing; + + +typedef unsigned long (*encode_float_proc)(double); +typedef double (*decode_float_proc)(unsigned long); + +static void init_class(grib_accessor_class* c) +{ + c->dump = (*(c->super))->dump; + c->next_offset = (*(c->super))->next_offset; + c->string_length = (*(c->super))->string_length; + c->byte_count = (*(c->super))->byte_count; + c->byte_offset = (*(c->super))->byte_offset; + c->get_native_type = (*(c->super))->get_native_type; + c->sub_section = (*(c->super))->sub_section; + c->pack_missing = (*(c->super))->pack_missing; + c->is_missing = (*(c->super))->is_missing; + c->pack_long = (*(c->super))->pack_long; + c->unpack_long = (*(c->super))->unpack_long; + c->pack_string = (*(c->super))->pack_string; + c->unpack_string = (*(c->super))->unpack_string; + c->pack_bytes = (*(c->super))->pack_bytes; + c->unpack_bytes = (*(c->super))->unpack_bytes; + c->pack_expression = (*(c->super))->pack_expression; + c->notify_change = (*(c->super))->notify_change; + c->update_size = (*(c->super))->update_size; + c->preferred_size = (*(c->super))->preferred_size; + c->resize = (*(c->super))->resize; + c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; + c->next = (*(c->super))->next; + c->compare = (*(c->super))->compare; + c->clear = (*(c->super))->clear; +} + +/* END_CLASS_IMP */ + +static void init(grib_accessor* a,const long v, grib_arguments* args) +{ + grib_accessor_data_g2bifourier_packing *self =(grib_accessor_data_g2bifourier_packing*)a; + grib_handle* gh = grib_handle_of_accessor(a); + + self->ieee_floats = grib_arguments_get_name(gh,args,self->carg++); + self->laplacianOperatorIsSet = grib_arguments_get_name(gh,args,self->carg++); + self->laplacianOperator = grib_arguments_get_name(gh,args,self->carg++); + self->biFourierTruncationType = grib_arguments_get_name(gh,args,self->carg++); + self->sub_i = grib_arguments_get_name(gh,args,self->carg++); + self->sub_j = grib_arguments_get_name(gh,args,self->carg++); + self->bif_i = grib_arguments_get_name(gh,args,self->carg++); + self->bif_j = grib_arguments_get_name(gh,args,self->carg++); + self->biFourierSubTruncationType = grib_arguments_get_name(gh,args,self->carg++); + self->biFourierDoNotPackAxes = grib_arguments_get_name(gh,args,self->carg++); + self->biFourierMakeTemplate = grib_arguments_get_name(gh,args,self->carg++); + self->numberOfValues = grib_arguments_get_name(gh,args,self->carg++); + + a->flags |= GRIB_ACCESSOR_FLAG_DATA; + self->dirty=1; +} + +static int value_count(grib_accessor* a,long* numberOfValues) +{ + grib_accessor_data_g2bifourier_packing* self = (grib_accessor_data_g2bifourier_packing*)a; + grib_handle* gh = grib_handle_of_accessor(a); + *numberOfValues=0; + + return grib_get_long_internal(gh,self->numberOfValues,numberOfValues); +} + + +#define MAX(x,y) ((x) > (y) ? (x) : (y)) +#define MIN(x,y) ((x) < (y) ? (x) : (y)) + +static void ellipse (long ni, long nj, long itrunc[], long jtrunc[]) +{ + const double zeps = 1.E-10; + const double zauxil=0.; + int i, j; + double zi, zj; + +/* + * 1. Computing meridional limit wavenumbers along zonal wavenumbers + */ + + for (j = 1; j < nj; j++) + { + zi = (double)ni / (double)nj * sqrt (MAX (zauxil, (double)(nj * nj - j * j))); + itrunc[j] = (int)(zi + zeps); + } + + if (nj == 0) + { + itrunc[0] = ni; + } + else + { + itrunc[0] = ni; + itrunc[nj] = 0; + } + +/* + * 2. Computing zonal limit wavenumbers along meridional wavenumbers + */ + + for (i = 1; i < ni; i++) + { + zj = (double)nj / (double)ni * sqrt (MAX (zauxil, (double)(ni * ni - i * i))); + jtrunc[i] = (int)(zj + zeps); + } + + if (ni == 0) + { + jtrunc[0] = nj; + } + else + { + jtrunc[0] = nj; + jtrunc[ni] = 0; + } + + +} + +static void rectangle (long ni, long nj, long itrunc[], long jtrunc[]) +{ + int i, j; + +/* + * 1. Computing meridional limit wavenumbers along zonal wavenumbers + */ + + for (j = 0; j <= nj; j++) + itrunc[j] = ni; + +/* + * 2. Computing zonal limit wavenumbers along meridional wavenumbers + */ + + for (i = 0; i <= ni; i++) + jtrunc[i] = nj; + +} + +static void diamond (long ni, long nj, long itrunc[], long jtrunc[]) +{ + int i, j; + + for (j = 0; j <= nj; j++) + itrunc[j] = ni - (j * ni) / nj; + + for (i = 0; i <= ni; i++) + jtrunc[i] = nj - (i * nj) / ni; + +} + +#define scals(i,j) pow((double)((i)*(i)+(j)*(j)),bt->laplacianOperator) + + +#define for_ij() \ + for (j = 0; j <= bt->bif_j; j++) \ + for (i = 0; i <= bt->itruncation_bif[j]; i++) + +#define calc_insub() \ +do { \ + insub = (i <= bt->sub_i) && (j <= bt->sub_j); \ + if (insub) \ + insub = (i <= bt->itruncation_sub[j]) && (j <= bt->jtruncation_sub[i]); \ + if (bt->keepaxes) \ + insub = insub || (i == 0) || (j == 0); \ +} while (0) + +typedef struct bif_trunc_t +{ + long bits_per_value; + long decimal_scale_factor; + long binary_scale_factor; + long ieee_floats; + long laplacianOperatorIsSet; + double laplacianOperator; + double reference_value; + long sub_i, sub_j, bif_i, bif_j; + long biFourierTruncationType; + long biFourierSubTruncationType; + long keepaxes; + long maketemplate; + decode_float_proc decode_float; + encode_float_proc encode_float; + int bytes; + long * itruncation_bif; + long * jtruncation_bif; + long * itruncation_sub; + long * jtruncation_sub; + size_t n_vals_bif, n_vals_sub; +} bif_trunc_t; + +/* + * Total number of coefficients + */ +static size_t size_bif (bif_trunc_t * bt) +{ + size_t n_vals = 0; + int j; + for (j = 0; j <= bt->bif_j; j++) + n_vals += 4 * (bt->itruncation_bif[j] + 1); + return n_vals; +} + + +/* + * Number of unpacked coefficients + */ +static size_t size_sub (bif_trunc_t * bt) +{ + size_t n_vals = 0; + int i, j; + for_ij () + { + int insub; + + calc_insub (); + + if (insub) + n_vals += 4; + } + return n_vals; +} + +static +double laplam (bif_trunc_t * bt, const double val[]) +{ +/* + * For bi-Fourier spectral fields, the Laplacian operator is a multiplication by (i*i+j*j) + */ + + const double zeps = 1E-15; + double * znorm = NULL, * zw = NULL; + int kmax = 1 + bt->bif_i * bt->bif_i + bt->bif_j * bt->bif_j, lmax; + int * itab1 = NULL, * itab2 = NULL; + int i, j, k, l, isp; + double zxmw, zymw, zwsum, zx, zy, zsum1, zsum2, zbeta1, zp; + + itab1 = (int *)malloc (sizeof (int) * kmax); + itab2 = (int *)malloc (sizeof (int) * ((1 + bt->bif_i) * (1 + bt->bif_j))); + + for (k = 0; k < kmax; k++) + itab1[k] = 0; + +/* + * Keep record of the possible values of i**2+j**2 outside the non-packed truncation + */ + for_ij () + { + int insub; + + calc_insub (); + + if (! insub) + { + int k = i*i+j*j; + itab1[k] = 1; + } + } + + l = 0; + for (k = 0; k < kmax; k++) + if (itab1[k]) + { + itab2[l] = k; + itab1[k] = l; + l++; + } + lmax = l; + + +/* + * Now, itab2 contains all possible values of i*i+j*j, and itab1 contains + * the rank of all i*i+j*j + */ + + znorm = (double *)malloc (sizeof (double) * lmax); + zw = (double *)malloc (sizeof (double) * lmax); + +/* + * Compute norms of input field, gathered by values of i**2+j**2; we have to + * go through the unpacked truncation again + */ + + for (l = 0; l < lmax; l++) + znorm[l] = 0.; + + isp = 0; + for_ij () + { + int insub; + + calc_insub (); + + if (insub) + { + isp += 4; + } + else + { + int m, l = itab1[i*i+j*j]; + for (m = 0; m < 4; m++, isp++) + znorm[l] = MAX (znorm[l], fabs (val[isp])); + } + } + +/* + * Compute weights, fix very small norms to avoid problems with log function + */ + + for (l = 0; l < lmax; l++) + { + zw[l] = (double)lmax / (double)(l + 1); + if (znorm[l] < zeps) + { + znorm[l] = zeps; + zw[l] = 100. * zeps; + } + } + +/* + * Sum weights + */ + + zxmw = 0.; + zymw = 0.; + zwsum = 0.; + + for (l = 0; l < lmax; l++) + { + zx = log (itab2[l]); + zy = log (znorm[l]); + zxmw += zx * zw[l]; + zymw += zy * zw[l]; + zwsum += zw[l]; + } + +/* + * Least square regression + */ + + zxmw = zxmw / zwsum; + zymw = zymw / zwsum; + zsum1 = 0.; + zsum2 = 0.; + + for (l = 0; l < lmax; l++) + { + zx = log (itab2[l]); + zy = log (znorm[l]); + zsum1 += zw[l] * (zy - zymw) * (zx - zxmw); + zsum2 += zw[l] * (zx - zxmw) * (zx - zxmw); + } + + zbeta1 = zsum1 / zsum2; + zp = -zbeta1; + zp = MAX (-9.999, MIN (9.999, zp)); + + free (itab1); + free (itab2); + + free (znorm); + free (zw); + +//zp = ((long)(zp * 1000.)) / 1000.; FAPULA rounds Laplacian power to 1/1000th + + return zp; +} + +static void free_bif_trunc (bif_trunc_t * bt, grib_accessor * a) +{ + grib_handle* gh = grib_handle_of_accessor(a); + if (bt == NULL) + return; + if (bt->itruncation_bif != NULL) free (bt->itruncation_bif); + if (bt->jtruncation_bif != NULL) free (bt->jtruncation_bif); + if (bt->itruncation_sub != NULL) free (bt->itruncation_sub); + if (bt->jtruncation_sub != NULL) free (bt->jtruncation_sub); + memset (bt, 0, sizeof (bif_trunc_t)); + grib_context_free (gh->context, bt); +} + +static bif_trunc_t * new_bif_trunc (grib_accessor * a, grib_accessor_data_g2bifourier_packing * self) +{ + int ret; + grib_handle* gh = grib_handle_of_accessor(a); + bif_trunc_t * bt = (bif_trunc_t *)grib_context_malloc (gh->context, sizeof (bif_trunc_t)); + + memset (bt, 0, sizeof (bif_trunc_t)); + + if ((ret = grib_get_double_internal (gh, self->reference_value, &bt->reference_value)) != GRIB_SUCCESS) + goto cleanup; + if ((ret = grib_get_long_internal (gh, self->bits_per_value, &bt->bits_per_value)) != GRIB_SUCCESS) + goto cleanup; + if ((ret = grib_get_long_internal (gh, self->binary_scale_factor, &bt->binary_scale_factor)) != GRIB_SUCCESS) + goto cleanup; + if ((ret = grib_get_long_internal (gh, self->decimal_scale_factor, &bt->decimal_scale_factor)) != GRIB_SUCCESS) + goto cleanup; + if ((ret = grib_get_long_internal (gh, self->ieee_floats, &bt->ieee_floats)) != GRIB_SUCCESS) + goto cleanup; + if ((ret = grib_get_long_internal (gh, self->laplacianOperatorIsSet, &bt->laplacianOperatorIsSet)) != GRIB_SUCCESS) + goto cleanup; + if ((ret = grib_get_double_internal (gh, self->laplacianOperator, &bt->laplacianOperator)) != GRIB_SUCCESS) + goto cleanup; + if ((ret = grib_get_long_internal (gh, self->sub_i, &bt->sub_i)) != GRIB_SUCCESS) + goto cleanup; + if ((ret = grib_get_long_internal (gh, self->sub_j, &bt->sub_j)) != GRIB_SUCCESS) + goto cleanup; + if ((ret = grib_get_long_internal (gh, self->bif_i, &bt->bif_i)) != GRIB_SUCCESS) + goto cleanup; + if ((ret = grib_get_long_internal (gh, self->bif_j, &bt->bif_j)) != GRIB_SUCCESS) + goto cleanup; + if ((ret = grib_get_long_internal (gh, self->biFourierTruncationType, &bt->biFourierTruncationType)) != GRIB_SUCCESS) + goto cleanup; + if ((ret = grib_get_long_internal (gh, self->biFourierSubTruncationType, &bt->biFourierSubTruncationType)) != GRIB_SUCCESS) + goto cleanup; + if ((ret = grib_get_long_internal (gh, self->biFourierDoNotPackAxes, &bt->keepaxes)) != GRIB_SUCCESS) + goto cleanup; + if ((ret = grib_get_long_internal (gh, self->biFourierMakeTemplate, &bt->maketemplate)) != GRIB_SUCCESS) + goto cleanup; + + + switch (bt->ieee_floats) + { + case 0: + bt->decode_float = grib_long_to_ibm; + bt->encode_float = grib_ibm_to_long; + bt->bytes = 4; + break; + case 1: + bt->decode_float = grib_long_to_ieee; + bt->encode_float = grib_ieee_to_long; + bt->bytes = 4; + break; + case 2: + bt->decode_float = grib_long_to_ieee64; + bt->encode_float = grib_ieee64_to_long; + bt->bytes = 8; + break; + default: + ret = GRIB_NOT_IMPLEMENTED; + goto cleanup; + } + + bt->itruncation_sub = (long *)grib_context_malloc(gh->context, sizeof(long)*(1+bt->sub_j)); + bt->jtruncation_sub = (long *)grib_context_malloc(gh->context, sizeof(long)*(1+bt->sub_i)); + bt->itruncation_bif = (long *)grib_context_malloc(gh->context, sizeof(long)*(1+bt->bif_j)); + bt->jtruncation_bif = (long *)grib_context_malloc(gh->context, sizeof(long)*(1+bt->bif_i)); + + switch (bt->biFourierTruncationType) + { + case 77: diamond (bt->bif_i, bt->bif_j, bt->itruncation_bif, bt->jtruncation_bif); break; + case 88: rectangle (bt->bif_i, bt->bif_j, bt->itruncation_bif, bt->jtruncation_bif); break; + case 99: ellipse (bt->bif_i, bt->bif_j, bt->itruncation_bif, bt->jtruncation_bif); break; + default: + ret = GRIB_INVALID_KEY_VALUE; + goto cleanup; + } + switch (bt->biFourierSubTruncationType) + { + case 77: diamond (bt->sub_i, bt->sub_j, bt->itruncation_sub, bt->jtruncation_sub); break; + case 88: rectangle (bt->sub_i, bt->sub_j, bt->itruncation_sub, bt->jtruncation_sub); break; + case 99: ellipse (bt->sub_i, bt->sub_j, bt->itruncation_sub, bt->jtruncation_sub); break; + default: + ret = GRIB_INVALID_KEY_VALUE; + goto cleanup; + } + + bt->n_vals_bif = size_bif (bt); + bt->n_vals_sub = size_sub (bt); + + return bt; + +cleanup: + + free_bif_trunc (bt, a); + + return NULL; +} + + + +static int unpack_double(grib_accessor* a, double* val, size_t *len) { + grib_accessor_data_g2bifourier_packing* self = (grib_accessor_data_g2bifourier_packing*)a; + grib_handle* gh = grib_handle_of_accessor(a); + + size_t n_vals_bif = 0; + size_t n_vals_sub; + + unsigned char* buf = (unsigned char*)gh->buffer->data; + unsigned char* hres = NULL; + unsigned char* lres = NULL; + unsigned long packed_offset; + + long hpos = 0; + long lpos = 0; + + int isp; + + bif_trunc_t * bt; + + long count = 0; + + long offsetdata = 0; + + double s = 0; + double d = 0; + int ret = GRIB_SUCCESS; + int i, j, k; + + if ((ret = grib_value_count (a, &count)) != GRIB_SUCCESS) + goto cleanup; + + bt = new_bif_trunc (a, self); + + if (bt == NULL) + { + ret = GRIB_INTERNAL_ERROR; + goto cleanup; + } + + if (bt->n_vals_bif != count) + { + ret = GRIB_INTERNAL_ERROR; + goto cleanup; + } + + if ((ret = grib_get_long_internal (gh, self->offsetdata, &offsetdata)) != GRIB_SUCCESS) + goto cleanup; + if (*len < bt->n_vals_bif) + { + *len = (long)bt->n_vals_bif; + ret = GRIB_ARRAY_TOO_SMALL; + goto cleanup; + } + + self->dirty = 0; + + buf = (unsigned char*)gh->buffer->data; + buf += grib_byte_offset (a); + + s = grib_power (bt->binary_scale_factor, 2); + d = grib_power (-bt->decimal_scale_factor, 10); + +/* + * Decode data + */ + + hres = buf; + lres = buf; + + + packed_offset = grib_byte_offset (a) + bt->bytes * bt->n_vals_sub; + + lpos = 8 * (packed_offset - offsetdata); + hpos = 0; + + isp = 0; + for_ij () + { + double current_val; + int insub; + + calc_insub (); + + if (insub) + for (k = 0; k < 4; k++) + { + val[isp+k] = bt->decode_float (grib_decode_unsigned_long (hres, &hpos, 8 * bt->bytes)); + } + else + for (k = 0; k < 4; k++) + { + double S = scals (i, j); + long dec_val = grib_decode_unsigned_long (lres, &lpos, bt->bits_per_value); + val[isp+k] = (double)(((dec_val * s) + bt->reference_value) * d)/ S; + } + + isp += 4; + } + + + Assert (*len >= isp); + *len = isp; + +cleanup: + + free_bif_trunc (bt, a); + + return ret; +} + +static int pack_double(grib_accessor* a, const double* val, size_t *len) +{ + grib_accessor_data_g2bifourier_packing* self = (grib_accessor_data_g2bifourier_packing*)a; + grib_handle* gh = grib_handle_of_accessor(a); + size_t buflen = 0; + size_t hsize = 0; + size_t lsize = 0; + unsigned char* buf = NULL; + unsigned char* hres = NULL; + unsigned char* lres = NULL; + long hpos = 0; + long lpos = 0; + int isp; + bif_trunc_t * bt; + + int last; + double max = 0; + double min = 0; + grib_context* c = gh->context; + + int ret = GRIB_SUCCESS; + int i, j, k; + int minmax_set; + double d = 0., s = 0.; + + if (*len == 0) + { + ret = GRIB_NO_VALUES; + goto cleanup; + } + + bt = new_bif_trunc (a, self); + + if (bt == NULL) + { + long makeTemplate = 0; + if ((ret = grib_get_long_internal (gh, self->biFourierMakeTemplate, &makeTemplate)) != GRIB_SUCCESS) + goto cleanup; + if (! makeTemplate) + { + ret = GRIB_INTERNAL_ERROR; + goto cleanup; + } + else + { + printf ("Assuming we are creating a template\n"); + ret = GRIB_SUCCESS; + goto cleanup; + } + } + + self->dirty = 1; + + if (*len != bt->n_vals_bif) + { + grib_context_log(gh->context,GRIB_LOG_ERROR,"BIFOURIER_PACKING : wrong number of values, expected %d - got %d", bt->n_vals_bif, *len); + ret = GRIB_INTERNAL_ERROR; + goto cleanup; + } + + + if (! bt->laplacianOperatorIsSet) + { + bt->laplacianOperator = laplam (bt, val); + + if ((ret = grib_set_double_internal (gh, self->laplacianOperator, bt->laplacianOperator)) != GRIB_SUCCESS) + goto cleanup; + + grib_get_double_internal (gh, self->laplacianOperator, &bt->laplacianOperator); + + } + +/* + * Scan all values that will be truncated and find their minimum and maximum + */ + + minmax_set = 0; + + isp = 0; + for_ij () + { + int insub; + + calc_insub (); + + if (! insub) + { + for (k = 0; k < 4; k++) + { + double current_val = val[isp+k] * scals (i, j); + if (! minmax_set) + { + min = current_val; + max = current_val; + minmax_set++; + } + if (current_val < min) min = current_val; + if (current_val > max) max = current_val; + } + } + + isp += 4; + } + + if (bt->n_vals_bif != bt->n_vals_sub) + { + ret = grib_optimize_decimal_factor (a, self->reference_value, + max, min, bt->bits_per_value, 0, 1, + &bt->decimal_scale_factor, + &bt->binary_scale_factor, + &bt->reference_value); + if (ret != GRIB_SUCCESS) + goto cleanup; + + s = grib_power (-bt->binary_scale_factor, 2); + d = grib_power (+bt->decimal_scale_factor, 10); + } + else + { + bt->decimal_scale_factor = 0; + bt->binary_scale_factor = 0; + bt->reference_value = 0.; + } + +/* + * Encode values + */ + + hsize = bt->bytes * bt->n_vals_sub; + lsize = ((bt->n_vals_bif - bt->n_vals_sub) * bt->bits_per_value) / 8; + + buflen = hsize + lsize; + + buf = (unsigned char*)grib_context_malloc (gh->context, buflen); + + hres = buf; + lres = buf + hsize; + + lpos = 0; + hpos = 0; + + isp = 0; + + for_ij () + { + double current_val; + int insub; + + calc_insub (); + + + if (insub) + for (k = 0; k < 4; k++) + { + current_val = val[isp+k]; + grib_encode_unsigned_long (hres, bt->encode_float (current_val) , &hpos, 8 * bt->bytes); + } + else + for (k = 0; k < 4; k++) + { + double S = scals (i, j); + current_val = (((((val[isp+k] * d) * S) - bt->reference_value) * s) + 0.5); + + if (current_val < 0) + grib_context_log (gh->context, GRIB_LOG_ERROR, "BIFOURIER_PACKING : negative coput before packing (%g)", current_val); + + if (bt->bits_per_value % 8) + grib_encode_unsigned_longb (lres, current_val, &lpos, bt->bits_per_value); + else + grib_encode_unsigned_long (lres, current_val, &lpos, bt->bits_per_value); + } + + isp += 4; + + } + + if (((hpos / 8) != hsize) && ((lpos / 8) != lsize)) + { + grib_context_log (gh->context, GRIB_LOG_ERROR, "BIFOURIER_PACKING : Mismatch in packing between high resolution and low resolution part"); + ret = GRIB_INTERNAL_ERROR; + goto cleanup; + } + + buflen = ((hpos + lpos)/8); + + if ((ret = grib_set_double_internal (gh, self->reference_value, bt->reference_value)) != GRIB_SUCCESS) + goto cleanup; + + { + /* Make sure we can decode it again */ + double ref = 1e-100; + grib_get_double_internal (gh,self->reference_value,&ref); + Assert (ref == bt->reference_value); + } + + if ((ret = grib_set_long_internal (gh, self->binary_scale_factor, bt->binary_scale_factor)) != GRIB_SUCCESS) + goto cleanup; + if ((ret = grib_set_long_internal (gh, self->decimal_scale_factor, bt->decimal_scale_factor)) != GRIB_SUCCESS) + goto cleanup; + + grib_buffer_replace (a, buf, buflen, 1, 1); + + if ((ret = grib_set_long_internal (gh, self->numberOfValues, bt->n_vals_bif)) != GRIB_SUCCESS) + goto cleanup; + +cleanup: + + free_bif_trunc (bt, a); + + if (buf != NULL) + grib_context_free (gh->context, buf); + + return ret; +} diff --git a/src/grib_optimize_decimal_factor.c b/src/grib_optimize_decimal_factor.c new file mode 100644 index 000000000..570502fe2 --- /dev/null +++ b/src/grib_optimize_decimal_factor.c @@ -0,0 +1,216 @@ +#include "grib_api_internal.h" +#include "grib_optimize_decimal_factor.h" +#include +#include +#include +#include + +double epsilon () +{ + volatile double e = 1.; + while (1. != (1. + e)) + { + e /= 2; + } + return e; +} + + +static int range () +{ + return (int)(log (DBL_MAX) / log (10))-1; +} + +static void factec (int * krep, const double pa, const int knbit, const long kdec, const int range, long * ke, int * knutil) +{ + *krep = 0; + + *ke = 0; + *knutil = 0; + + if (pa < DBL_MIN) + { + *knutil = 1; + goto end; + } + + if ((fabs (log10 (fabs (pa)) + (double)kdec) >= range)) + { + *krep = 1; + goto end; + } + + /* Binary scale factor associated to kdec */ + *ke = floor (log2 ((pa * grib_power (kdec, 10)) / (grib_power (knbit, 2) - 0.5))) + 1; + /* Encoded value for pa = max - min */ + *knutil = floor (0.5 + pa * grib_power ( kdec, 10) * grib_power (-*ke, 2)); + + +end: + + return; +} + +int grib_optimize_decimal_factor (grib_accessor * a, const char * reference_value, + const double pmax, const double pmin, const int knbit, + const int compat_gribex, const int compat_32bit, + long * kdec, long * kbin, double * ref) +{ + grib_handle* gh = grib_handle_of_accessor(a); + int idecmin = -15; + int idecmax = 5; + long inbint; + double xtinyr4, xhuger4, xnbint; + int inumax, inu, inutil; + long jdec, ie; + int irep; + int RANGE = range (); + double EPSILON = epsilon (); + double pa = pmax-pmin; + + if (pa == 0) + { + *kdec = 0; + *kbin = 0; + *ref = 0.; + return GRIB_SUCCESS; + } + + inumax = 0; + + if (fabs (pa) <= EPSILON) + { + *kdec = 0; + idecmin = 1; + idecmax = 0; + } + else if (pmin != 0. && fabs (pmin) < EPSILON) + { + *kdec = 0; + idecmin = 1; + idecmax = 0; + } + + xtinyr4 = FLT_MIN; + xhuger4 = FLT_MAX; + + inbint = grib_power (knbit, 2) - 1; + xnbint = (double)inbint; + + /* Test decimal scale factors; keep the most suitable */ + for (jdec = idecmin; jdec <= idecmax; jdec++) + { + /* Fix a problem in GRIBEX */ + if (compat_gribex) + if (pa * grib_power (jdec, 10) <= 1.E-12) + continue; + + /* Check it will be possible to decode reference value with 32bit floats */ + if (compat_32bit) + if (fabs (pmin) > DBL_MIN) + if (log10 (fabs (pmin)) + (double)jdec <= log10 (xtinyr4)) + continue; + + /* Check if encoding will not cause an overflow */ + if (fabs (log10 (fabs (pa)) + (double)jdec) >= (double)RANGE) + continue; + + factec (&irep, pa, knbit, jdec, RANGE, &ie, &inutil); + + if (irep != 0) + continue; + + /* Check it will be possible to decode the maximum value of the fields using 32bit floats */ + if (compat_32bit) + if (pmin * grib_power (jdec, 10) + xnbint * grib_power (ie, 2) >= xhuger4) + continue; + + /* GRIB1 demands that the binary scale factor be encoded in a single byte */ + if (compat_gribex) + if ((ie < -126) || (ie > 127)) + continue; + + if (inutil > inumax) + { + inumax = inutil; + *kdec = jdec; + *kbin = ie; + } + } + + if (inumax > 0) + { + double decimal = grib_power (+*kdec, 10); + double divisor = grib_power (-*kbin, 2); + double min = pmin * decimal; + if (grib_get_nearest_smaller_value (gh, reference_value, min, ref) != GRIB_SUCCESS) + { + grib_context_log (gh->context, GRIB_LOG_ERROR, + "unable to find nearest_smaller_value of %g for %s", min, reference_value); + return GRIB_INTERNAL_ERROR; + } + + long vmax = (((pmax*decimal)-*ref)*divisor) + 0.5; + long vmin = (((pmin*decimal)-*ref)*divisor) + 0.5; + + /* This may happen if pmin*decimal-*ref is too large */ + if ((vmin != 0) || (vmax > inbint)) + inumax = 0; + + } + + /* If seeking for an optimal decimal scale factor fails, fall back to a basic method */ + if (inumax == 0) + { + int last = compat_gribex ? 99 : 127; + double min = pmin, max = pmax; + double range = max - min; + double f = grib_power (knbit, 2) - 1; + double minrange = grib_power (-last, 2) * f; + double maxrange = grib_power (+last, 2) * f; + double decimal = 1; + int err; + + *kdec = 0; + + while (range < minrange) + { + *kdec += 1; + decimal *= 10; + min = pmin * decimal; + max = pmax * decimal; + range = max - min; + } + + while (range > maxrange) + { + *kdec -= 1; + decimal /= 10; + min = pmin * decimal; + max = pmax * decimal; + range = max - min; + } + + if (grib_get_nearest_smaller_value (gh, reference_value, min, ref) != GRIB_SUCCESS) + { + grib_context_log (gh->context, GRIB_LOG_ERROR, + "unable to find nearest_smaller_value of %g for %s", min, reference_value); + return GRIB_INTERNAL_ERROR; + } + + *kbin = grib_get_binary_scale_fact (max, *ref, knbit, &err); + + if (err == GRIB_UNDERFLOW) + { + *kbin = 0; + *kdec = 0; + *ref = 0; + } + + } + + return GRIB_SUCCESS; +} + + + diff --git a/src/grib_optimize_decimal_factor.h b/src/grib_optimize_decimal_factor.h new file mode 100644 index 000000000..dda744ffe --- /dev/null +++ b/src/grib_optimize_decimal_factor.h @@ -0,0 +1,14 @@ +#ifndef _GRIB_OPTIMIZE_DECIMAL_FACTOR_H +#define _GRIB_OPTIMIZE_DECIMAL_FACTOR_H + +#include "grib_api_internal.h" + +int grib_optimize_decimal_factor (grib_accessor * a, const char * reference_value, + const double pmax, const double pmin, const int knbit, + const int compat_gribex, const int compat_32bit, + long * kdec, long * kbin, double * ref); + +int grib_use_optimized_decimal_factor (); + +#endif + diff --git a/tests/lam_bf.c b/tests/lam_bf.c new file mode 100644 index 000000000..62ce00340 --- /dev/null +++ b/tests/lam_bf.c @@ -0,0 +1,681 @@ +#include +#include +#include +#include + +#include "grib_api.h" + +/* + * Test encoding of LAM spectral fields + * philippe.marguinaud@meteo.fr, 02/2016 + */ + +static double values[] = { + 2.75181294152902012e+02, 0.00000000000000000e+00, 0.00000000000000000e+00, 0.00000000000000000e+00, -2.00031443764104797e-02, + 2.20986262423002011e-01, 0.00000000000000000e+00, 0.00000000000000000e+00, -6.50831583306859668e-02, 9.56915910153004201e-02, + 0.00000000000000000e+00, 0.00000000000000000e+00, -7.69949998097087390e-02, 2.15126568901680588e-02, 0.00000000000000000e+00, + 0.00000000000000000e+00, -2.15191777195716909e-02, -1.77751950764027111e-02, 0.00000000000000000e+00, 0.00000000000000000e+00, + -9.03325926869718264e-03, -6.45905357075528350e-03, 0.00000000000000000e+00, 0.00000000000000000e+00, 3.76554930890086407e-03, + 4.28150996355022243e-03, 0.00000000000000000e+00, 0.00000000000000000e+00, -4.48334654946085272e-03, -3.24945933688448613e-03, + 0.00000000000000000e+00, 0.00000000000000000e+00, -8.33958311735325322e-03, 2.67394757861415906e-03, 0.00000000000000000e+00, + 0.00000000000000000e+00, -2.88928782235351811e-03, 1.11276030204927202e-02, 0.00000000000000000e+00, 0.00000000000000000e+00, + -6.89744178202101980e-03, 1.68577225483147806e-03, 0.00000000000000000e+00, 0.00000000000000000e+00, -4.05911636160587782e-03, + -8.63040459605283984e-04, 0.00000000000000000e+00, 0.00000000000000000e+00, 1.77788775751947913e-03, 1.62646256200294588e-03, + 0.00000000000000000e+00, 0.00000000000000000e+00, -2.34489308196387896e-04, 6.26464829859012945e-03, 0.00000000000000000e+00, + 0.00000000000000000e+00, -1.52923310566158415e-03, 3.51952946092800104e-03, 0.00000000000000000e+00, 0.00000000000000000e+00, + -2.12456107651320296e-03, 7.80855898848169944e-04, 0.00000000000000000e+00, 0.00000000000000000e+00, -1.03218475301503098e-03, + -4.84939736793421616e-05, 0.00000000000000000e+00, 0.00000000000000000e+00, -1.27050726547289815e-03, 6.10515922008610795e-04, + 0.00000000000000000e+00, 0.00000000000000000e+00, -4.61636562893467212e-04, 3.78318476621734151e-04, 0.00000000000000000e+00, + 0.00000000000000000e+00, -1.90620242437837724e-04, 2.39481618132839210e-03, 0.00000000000000000e+00, 0.00000000000000000e+00, + -1.47687884032438608e-03, 2.42544367345591408e-03, 0.00000000000000000e+00, 0.00000000000000000e+00, -2.46192219258621788e-03, + 2.46579511004843988e-04, 0.00000000000000000e+00, 0.00000000000000000e+00, -1.50607540488831206e-03, -3.75857847911556075e-04, + 0.00000000000000000e+00, 0.00000000000000000e+00, -7.25805584180000754e-04, 9.78641239992627046e-05, 0.00000000000000000e+00, + 0.00000000000000000e+00, -7.80340606647248088e-04, 8.75931120319022039e-04, 0.00000000000000000e+00, 0.00000000000000000e+00, + -1.47851165924441194e-03, 1.17811049164095192e-03, 0.00000000000000000e+00, 0.00000000000000000e+00, -2.08460733839155700e-03, + 6.42619155220282463e-04, 0.00000000000000000e+00, 0.00000000000000000e+00, -1.86653178182583090e-03, -1.51572352026370312e-04, + 0.00000000000000000e+00, 0.00000000000000000e+00, -1.07549275530616001e-03, -4.44853427976503511e-04, 0.00000000000000000e+00, + 0.00000000000000000e+00, -6.33166214776187397e-04, 1.77518665839971507e-05, 0.00000000000000000e+00, 0.00000000000000000e+00, + -7.92028302924727146e-04, 4.38426731572627625e-04, 0.00000000000000000e+00, 0.00000000000000000e+00, -1.36111299097537602e-03, + 3.55302636498244784e-04, 0.00000000000000000e+00, 0.00000000000000000e+00, 4.31165906519952527e-02, 0.00000000000000000e+00, + 3.80339924146994024e-01, 0.00000000000000000e+00, -6.26107842259959399e-03, 1.64616708332782904e-03, 7.15529452992990245e-03, + -1.86210941905016296e-02, 5.36772367761992244e-03, -3.37215608643290496e-03, -6.27927374167897446e-03, 1.59410804744731308e-02, + -1.10370818380311399e-02, -6.84039900395983468e-04, -7.35117541436946381e-03, -4.87635242059330717e-03, -7.33706364752968569e-03, + 6.58538980656067294e-03, -6.56001297130070615e-03, 2.39042653237417005e-04, 4.18393771850396725e-04, -9.83382649555805503e-03, + -4.32676605363364018e-03, -1.10999673219588004e-02, -3.07797564052225605e-03, -2.83896250149829514e-03, 4.23882761382370337e-03, + -2.26439224781546308e-03, -2.32047257122214301e-03, -2.86523743964195400e-03, 1.16753700036647200e-03, -1.96688706621135590e-03, + -5.64532360297308362e-03, 3.86163113000431019e-03, -4.55210116404825178e-03, -2.31820675144046905e-03, -7.54930221713808131e-04, + 5.42645956136695879e-03, -1.37359456800822195e-04, -1.41701530146446709e-03, -7.24047803220819299e-04, 2.97282693804422219e-03, + -9.21178724545542739e-04, 2.17304781678062013e-03, 5.02933596226693130e-03, 4.19709065989953400e-04, -2.32808772095879088e-03, + -3.96816140679685759e-04, 1.66528807434054306e-03, -4.34672804984864508e-04, 6.71774253284030125e-04, -9.64395020788669558e-04, + 5.60151148527374262e-04, -2.54932855784003589e-03, 2.20163163376581403e-03, 9.04215953722457551e-04, 1.20823533199773401e-04, + -2.59868122477286410e-04, -1.65945495141917997e-04, 1.46538996917019689e-03, -1.68476757946802304e-03, 1.07540452680088500e-05, + 5.87513082394260696e-04, -1.24863532530485998e-03, -3.40155704130869251e-04, 5.06914392022354376e-04, 3.59174751231139280e-04, + -6.95434364128791230e-04, 5.31028293884702393e-04, -4.85338794987818855e-05, 9.80353244783757497e-04, -2.73784354447844888e-04, + 6.75383024029988280e-04, -5.75995357037249419e-04, 1.90931744053672494e-04, 4.24537699070617045e-04, -4.71947030265784521e-04, + -4.46465504992567892e-04, 3.33337956522936497e-04, -1.27617452248717108e-04, -8.67351806263058525e-05, 1.84741230040785993e-04, + 2.68168590454641613e-04, -1.31760079895587510e-05, -1.96141696634310206e-04, 3.15977777045840907e-05, 5.52964000678949098e-05, + -5.68648317683832915e-05, -1.24618526993470704e-04, -1.64319991484120808e-04, 9.90021761468646032e-05, -2.89641341863940680e-04, + 1.55648200162975805e-04, -1.61276662168002686e-04, 3.37883315497318677e-04, -3.00041726450727992e-04, 2.26196161548845496e-04, + 1.04382192438164800e-04, 4.50994722382257825e-04, -9.02537135361254129e-05, 5.64332474405111417e-05, 2.40936093599355207e-04, + 2.94628358869333785e-04, 9.40238863724802596e-05, -1.25490327018252206e-04, 1.13999493763013607e-04, 9.90868525905299344e-05, + 2.79939342717346504e-05, -1.21103070944854899e-04, -9.78183419047561525e-05, 7.97907489358191165e-05, -1.56274876625488320e-04, + 6.91110956986578159e-05, -1.78274579094107812e-04, 2.35172712320294510e-04, -1.86487667645096914e-04, 1.81359168243560220e-04, + -8.28267034951306894e-05, 3.64422258672049697e-04, -6.00161449209830129e-05, 1.53669854000615012e-04, 5.33940976909759048e-05, + 2.71098832854533114e-04, 1.16978179717633208e-04, -7.04014134697032723e-02, 0.00000000000000000e+00, 9.62756934345549015e-02, + 0.00000000000000000e+00, -5.01308988644840123e-02, 1.90874724562156602e-02, -2.80953874485262711e-02, 9.94764679201346272e-03, + -2.78516472981488912e-02, -3.06618517103302880e-02, 7.58078492851659708e-03, -4.18797526833174401e-03, -9.28131704978618285e-03, + -1.46423285050521004e-02, -1.12982430235375603e-02, -4.45163187034482329e-03, -8.86607378544559607e-04, -1.37678041188198305e-02, + -3.04744522425032726e-03, 1.40705206691586690e-02, 4.92736702444518219e-03, -5.90514134511184539e-03, -4.54964421596467609e-03, + -8.39159774589658125e-03, -4.46148003495234514e-03, -1.62058199127339503e-03, 5.61408022308887422e-03, 4.49055900394370114e-03, + -1.82071051913615303e-03, -4.09318011341107141e-03, -4.97865560096572360e-03, -3.90714411692000101e-03, -2.72428801010754702e-04, + 3.29022970106107040e-05, -3.71301533763268490e-03, 3.48487792329992983e-04, 1.15959669498262694e-03, 4.98979531764007374e-04, + 7.26403024471391199e-04, 1.64864318070091407e-03, 5.15149461852990758e-04, -1.86307159089303892e-03, 1.07464821641563204e-03, + 1.93916722418667302e-03, 1.78527114422754305e-03, -3.69908045453888525e-03, 1.35978350637315200e-03, 1.97378490377768823e-03, + -1.12077965666117305e-03, 1.89400552511022986e-03, 1.34901499797743002e-03, -7.17376936946564751e-04, 3.77336189237397162e-04, + -8.49455521901115469e-04, 1.76458772526797607e-03, -1.34910889239185107e-03, -8.88652895477685142e-04, -1.56500185302029806e-04, + -8.76093972833636445e-04, -2.00964500803350399e-03, 1.58208594440964988e-03, -4.99776272008587265e-04, 9.21092504090277532e-04, + -9.50973675462412054e-04, 9.34360703323434722e-04, 1.13569489093607798e-03, -2.35584557310445026e-04, -4.38069769484956937e-05, + 3.24577435798492555e-04, -1.25354645423132001e-03, 2.23682595620860417e-04, 3.66036513139383663e-04, 1.40216714894795505e-03, + 2.27750709584358922e-05, -1.93328972751045800e-04, 2.02025568799330516e-04, -2.74656452169796581e-04, -7.13136078966307191e-04, + -7.74076812485903487e-04, -1.02274882001159593e-03, 5.52829074765155888e-04, -3.68749942830809982e-04, 5.23471145957211991e-04, + -5.11988764810234896e-04, 6.02265891061533310e-04, -2.11327004479523907e-04, 6.41691954883075503e-04, -2.93053466696699415e-05, + 5.44704761041802841e-04, -5.66628145474610301e-05, 3.06917641025358854e-04, 2.85907713552362608e-04, 3.77388927634152475e-04, + -3.77819009899353793e-05, -7.23439228551873374e-05, 9.85771074035036001e-05, 3.21327432771281263e-04, -1.59908157634313996e-04, + -6.09095752283840726e-05, -2.76136058709174526e-04, 3.87616442158483353e-04, -2.26542483972600318e-04, 2.54495029230095593e-04, + -4.53136334566828323e-04, 4.85440002953321521e-04, -1.62296622208713188e-04, 5.57461157340177543e-04, -2.18109633528073014e-04, + 4.40938655580095133e-04, -2.50802656486350106e-05, 4.94156181908487774e-04, 1.46912930391045014e-04, 3.39995298139647573e-04, + 2.31575644258876931e-05, 1.27693888311369109e-04, 2.66757357090615819e-04, 2.81659456088537022e-04, -1.77008256058765415e-05, + -5.59528798333871517e-05, 8.03605031599087131e-05, 2.85552901830860538e-04, -4.53068755612621334e-05, 1.02695668114354909e-05, + -9.52364495838409209e-05, -5.81103624210425537e-02, 0.00000000000000000e+00, -6.11613220936809646e-03, 0.00000000000000000e+00, + 4.43140816018786771e-03, -2.60999931564933826e-03, -9.40668310127974576e-03, -1.48661226497603313e-02, -1.36502130860806405e-02, + -2.14796277886411605e-02, -4.29520125994365363e-03, -1.26923474000257205e-02, -7.86135852771467636e-03, 1.28725912652949892e-03, + -6.82233374677557874e-03, 4.39686715387468952e-03, 1.82006684281001488e-03, 1.49296576633828294e-03, -1.98801597839639611e-03, + 1.62071513114028917e-03, 5.34277138633573300e-03, 2.01625340607174391e-03, 4.65092297717760190e-03, -4.98019846270408330e-03, + -8.09160267604481370e-03, 3.44643931971669272e-04, -5.89232406165003143e-03, 2.42334465848842917e-03, -8.80352946027558960e-04, + 9.84336007576140171e-04, -7.45770687978821595e-03, 4.75822395048473845e-05, 1.47566490371992703e-04, 5.47124159393165554e-03, + 1.21021033478159695e-03, 9.69205973697771176e-04, 2.87549817812144098e-03, -3.61852844247361654e-04, 6.44364669700349130e-04, + 1.29877596456263100e-03, 9.38391522093622900e-04, -2.22314144452083603e-03, 3.10148815196359916e-03, 5.28716763746763570e-04, + 8.26155935032032562e-04, 1.57427796494904104e-03, -7.38296066748109475e-04, 1.14662499560429709e-03, -8.33016875095013713e-04, + -1.55185739616535206e-03, 2.04015157270918393e-03, -9.48182790145658426e-04, -8.81430768705695989e-04, -1.79127396420232423e-04, + -1.10273859532507507e-03, 6.53764928387371141e-04, -7.73895587008780373e-04, 2.68077770038103081e-04, 6.51103785496301673e-04, + -2.71669965700574879e-03, -3.88256693905312568e-04, 7.85903560292053544e-04, 1.18648988600738399e-03, 2.73534309775586828e-04, + -1.60929713471156209e-04, 1.29735976231497405e-03, 1.37988749081522505e-03, -1.59601915859147411e-04, 4.72539428788721608e-04, + -1.63508530969875198e-04, -8.04497515605788580e-04, -5.60952219538972049e-04, 9.62352783411973291e-04, -3.25986940863303451e-04, + -6.62865052534385266e-04, 1.83077290521144301e-04, -6.67815027189929333e-04, -8.20763509623387072e-04, 5.50944728278969943e-04, + -9.18368507559945896e-05, -4.97262747933818947e-05, 1.44527740863390717e-05, 6.02268801895407160e-04, -6.90060856109303935e-04, + -6.61151667662298806e-05, 5.24607915693856908e-05, 8.71389161220942712e-04, -5.22209563697972917e-05, -8.81069372491589524e-05, + 6.89674388639323560e-05, 4.89296492873659379e-04, 3.42949950767033190e-04, -1.04594279689411803e-04, 7.88048702858046301e-05, + -4.51080354005282619e-05, 1.92927499298747385e-04, -1.00799248168193510e-04, 8.42070445097134625e-05, -1.15456876718276306e-04, + -3.52801267299761995e-04, -1.17385826010707806e-04, 6.41826840143688848e-05, 3.00430937194893165e-04, -5.88191734441591263e-04, + -9.60097825665722621e-05, 3.24876263135078137e-05, 6.81936922695665707e-04, -2.77700061014415391e-04, -8.20877129250762892e-05, + 2.58047697700600437e-05, 6.00380468626232297e-04, 1.78126157739820522e-04, -8.91255866487739501e-05, 1.94618282851708810e-05, + 1.70413830952822023e-04, 3.43572086262713874e-04, -7.77228636917948808e-05, -3.36010502648343538e-05, -9.07658016101573108e-05, + 6.59277748270443569e-05, -3.98051260408716171e-05, -7.94909595164307867e-05, 7.05083701220457573e-06, -2.12150267214743503e-04, + -7.10752955220507326e-02, 0.00000000000000000e+00, -2.81525293764823895e-02, 0.00000000000000000e+00, -8.89502773245340675e-03, + 3.66324267155502007e-03, -1.50462462993148395e-02, -2.63916495927209518e-03, -6.79652165859046149e-03, -1.65529453407753518e-02, + -1.78928182217595808e-02, -3.14303722891423219e-03, -7.11006250769349781e-03, 5.34684474246508237e-03, -1.16327476368806200e-02, + -8.05468546023600102e-03, -1.64149955851847803e-03, -5.35863352681676449e-03, 3.15321608325506422e-03, 6.26277160082160155e-04, + -7.27484684891808748e-03, 2.70646376760276911e-05, 3.62617414329000813e-03, -3.65054682510651410e-03, -1.07696110037195595e-03, + 3.53182686525143003e-04, -3.38538738633310885e-03, -7.71206253588103529e-03, 2.05797839658368497e-03, -3.13248774975358191e-03, + -2.15184243056480489e-03, -3.10225639086903707e-03, -3.54796544314458281e-03, 5.24964106894207014e-03, -3.81132388565878430e-03, + 1.24107114742582204e-03, 2.71419662078310015e-03, -3.13258905575883794e-03, -9.86678579803712151e-04, 4.35158904158106617e-03, + 2.00811015548373484e-03, -2.44534593887737084e-04, 2.98862265427273909e-03, -2.36637278792602287e-03, 3.79010793951217370e-04, + -1.91817673989295003e-03, 2.40904857950564920e-03, -3.68671975810225518e-05, -7.50728259162286669e-04, -9.77411399558630834e-04, + 1.12160681390244201e-03, -9.57618916404621382e-04, -8.44772814505887035e-04, 1.60262870617885501e-04, -5.95028162206373166e-04, + -2.17343777372838720e-03, 3.90627040005680354e-04, -4.03549139392471315e-04, 3.97904392302268501e-04, -3.35021587533471910e-05, + 4.01596406318290207e-04, 6.19679429553130195e-04, -5.84235894305245641e-04, -6.29586561100089689e-04, 6.85720848834345492e-04, + -5.99546684685926617e-04, 6.48484311900055866e-04, 1.15749079052879009e-04, 5.89928032208336022e-04, 2.56662217500460083e-04, + 5.35723750474414269e-04, -3.87102961262356411e-05, 3.59715192754469484e-04, -9.00619185516589576e-04, -3.38206174007513985e-04, + -9.06717141110745728e-04, -1.06691607710405902e-05, -5.73066630815214089e-04, 5.82183667967025014e-04, -6.19647103989654315e-04, + 3.46608782632846157e-04, -3.19542958077236765e-04, 3.35326676850777677e-04, -1.19041590268576002e-04, 3.84807935714832959e-04, + -1.52580432572096801e-04, 2.88659162699535080e-04, -2.17457459774854719e-04, 3.15640030614073891e-04, -1.14589683204190809e-04, + 3.56359089290164666e-04, -2.36086433127905303e-04, 2.57962183435875032e-04, -1.32919881425900210e-04, 4.21275854832142444e-04, + -1.68637918303468496e-04, 2.60132103423249507e-04, -1.76518696101003004e-04, 3.98510318978629783e-04, -5.55874927229614931e-05, + 2.72262300197169426e-04, -1.54791064873725413e-04, 3.23912719054422868e-04, -3.97599407313694884e-05, 2.79412001537185026e-04, + -1.05419347221602004e-04, 2.74788768477940990e-04, -7.92444947406713388e-05, 2.69699801276835011e-04, -7.08821370313268408e-05, + 2.98757387283285329e-04, -1.28176226969026500e-04, 2.27528760050574108e-04, -3.45101835866923435e-05, 3.27201675215891879e-04, + -1.03881991208881104e-04, 2.10033165807443418e-04, -8.75501048007582717e-06, 3.14478195541950775e-04, -4.79621649743055035e-05, + 1.67328405215387999e-04, 5.84472169559277965e-05, 3.00859150369670600e-04, -4.13684186119337124e-05, -1.21379119254994196e-02, + 0.00000000000000000e+00, -3.44462771591686687e-02, 0.00000000000000000e+00, -2.10316876980239705e-03, -7.47964378791162073e-03, + 1.40631809424170899e-03, -4.56039796742323082e-03, -9.34831571155880781e-03, 2.15655290496510887e-03, -1.06117832938669408e-02, + -1.70679350958285111e-02, 3.45017088487963204e-03, 3.82119470199968102e-03, -1.04997387285308396e-02, 1.63770792198145408e-02, + -3.26765150921354405e-03, -3.41571868356958797e-03, 4.58286575207184597e-03, 7.06393644576057845e-03, 4.30168798968698536e-03, + 2.07824034827653725e-03, -5.00231032938888449e-03, 4.53087742807849192e-03, 2.91006074117702894e-03, -6.79674760908184714e-03, + -4.20731287313864249e-03, 5.57341847431139063e-03, 1.84243144490180903e-03, 1.09041767054943606e-03, 6.02340248129294817e-04, + 8.87323969884404020e-05, 4.08856464359921205e-04, -4.12118732042999428e-03, -2.92119223691378500e-03, 2.52960402262236098e-03, + -4.99253509354547322e-04, -2.00114581595349722e-03, 3.31933921536656500e-03, 7.87586653237865768e-04, -1.98777567108299191e-03, + -4.35319605759405999e-04, 1.21890703961077709e-03, -1.74310547912238505e-04, -1.83804873490097005e-03, -6.33286472639934075e-04, + -8.54973407243040696e-04, 8.38731087266057014e-04, 1.96859281933702002e-03, 6.71187690856791001e-04, -1.49680241656290503e-03, + -1.31746694774600721e-04, -5.85150551831325094e-05, -6.08777129793491617e-04, -1.55499350657023103e-03, 4.32423633493066899e-04, + -7.46011357659906449e-04, 5.16518970476651830e-04, 7.33542013514307950e-04, 3.00206273742392163e-04, -5.67707291610191050e-04, + -3.97317356634302660e-04, 2.64927626375300240e-04, 1.32652469615073400e-03, 9.03100594211069126e-04, 7.93215800430159003e-04, + 6.39870260721876012e-04, 7.82518537978101281e-05, 3.10263950097946896e-06, -1.26280600703676396e-03, 1.35625753882703392e-04, + 5.92621033709781484e-04, 2.51897673756406736e-04, 8.35622028888639260e-04, -6.93190155969104597e-05, -2.47307402787471232e-04, + 1.97347646277906523e-04, -1.34291266624796601e-03, 7.04966419754734131e-04, -7.06261498209776703e-05, -5.18409841922224825e-05, + 7.90341985335329185e-05, 1.80027806692415588e-04, -3.60528094008153680e-04, -7.56475687345502479e-05, -5.09855582516119030e-05, + 3.43362661185179466e-04, 1.61699210709818420e-05, 5.50871102682905156e-06, -1.02545159022227300e-04, 6.00035958822780515e-05, + 2.98136883703973015e-04, 1.16044262782009412e-04, -7.17220274644972855e-05, -2.43404673157207726e-04, 1.65311416998437696e-04, + 1.41142580311535314e-04, 4.05231207494100349e-05, -2.82502183903395997e-04, -1.58301868094413317e-04, 3.25713204301173530e-05, + 8.34399540573364004e-05, -1.26258103319842004e-05, -3.02338835543194398e-04, -3.51598517208215631e-05, 3.05105441207013402e-05, + 2.02208048958474806e-04, -1.11880851566251209e-04, -5.75222282747011801e-05, -7.53488797685568308e-05, 1.64740146653522901e-04, + 1.55665282582546916e-04, 2.78627075985471035e-05, -8.24982697512496936e-05, -7.68641253913072698e-05, 2.11795439387258810e-04, + 1.08497663196070504e-04, -1.30771986857948203e-05, -2.15508188823196713e-04, 5.93088828912528187e-05, 5.92245582038734042e-05, + 8.71924479130562830e-05, -1.39371452945136589e-04, -1.15412352616742702e-04, -1.55050056359223414e-02, 0.00000000000000000e+00, + 1.08882691507289995e-02, 0.00000000000000000e+00, -4.71011842162717600e-03, -5.87720496469847434e-03, 1.05047777608648796e-02, + 4.58059600186255811e-04, -2.00504402837270619e-03, -2.95424720587515992e-03, 4.87799357670548345e-03, 8.35135183044262257e-03, + 1.94658690699765899e-03, -2.51595561155665282e-03, -8.21127194754033354e-03, 3.70391436894767405e-03, 6.83120937695324247e-03, + -1.76002874535725103e-03, -8.63390502398148768e-03, -4.10387342301893592e-03, -2.35444581629096900e-03, -4.09310051133190012e-03, + 4.22858049368528928e-04, 3.15099824102575005e-03, -1.23657205447147900e-03, -8.10122047065819917e-04, -1.43423373808739592e-03, + 1.48713803506179206e-04, -5.85087310259259233e-04, -6.23235356221657727e-04, -1.06063231727299210e-03, 1.80378281336268697e-03, + -9.30282245216480525e-04, -3.76269823446016231e-03, 1.84105606293760693e-04, 3.37515462362718115e-03, -7.38805157796997296e-04, + -9.12877602010101418e-05, -1.02645186453899405e-03, 3.16915550462153802e-03, 8.21937753793873418e-05, 1.25314454345307408e-03, + -5.88422124427039972e-04, 4.22118976254676735e-04, 3.62450580886171467e-04, 4.90060323653639541e-04, -1.34998872593530199e-03, + -6.25809469695063941e-04, 1.07186821528799502e-03, 7.90345047493609437e-04, 2.06073300326440516e-03, 4.16554698971398525e-04, + 1.00476579342678512e-03, -5.22637914683046919e-04, -1.81017262357454885e-04, 6.19944137220488213e-04, 3.63742289398431666e-04, + -1.10527646027455098e-03, -1.42755618597237006e-03, -3.07067139655041281e-04, 5.03169289358491628e-04, -6.13386797343335724e-04, + -1.37656831881363109e-04, 1.21565460886625997e-03, 1.93210758951368198e-04, -7.27388822794831111e-04, -1.21911187459386103e-03, + 2.29157486346871021e-04, 6.67416548838800248e-05, 4.51521060719632748e-04, 4.64612988038229510e-04, 4.44675281930900941e-04, + -4.22961891024955822e-04, -2.87267784296158901e-04, 9.37302358619733185e-04, -2.37795974551285302e-04, -1.61418528524817423e-04, + 3.59975251107788624e-05, -1.57709648390207509e-04, 7.99467773702482827e-04, 4.21146651409620644e-04, -4.26833911251724520e-04, + -5.21716154653551769e-04, 4.97628543500075742e-04, 5.69987976708835435e-04, -1.00118566849244998e-04, -6.64319064977684495e-04, + 1.05701411709688202e-04, 3.40518869723608394e-04, 1.38903605427121693e-04, -3.87886151334127351e-04, -1.95775443050584909e-04, + 5.96229633518891928e-05, 7.96570701940503198e-05, -5.60593924645873246e-05, -1.03370927417524607e-04, 6.36583825020037681e-07, + -2.04477272097361299e-04, -3.83914221304656642e-06, 2.13649300126834708e-04, 2.31094008501680310e-04, -3.30860288794278951e-04, + -2.30463924421211216e-04, 3.94263693122693575e-04, 4.08880948289188305e-04, -1.53040820632931304e-04, -5.12662237394530674e-04, + 2.24113090569518506e-04, 3.65643596805839092e-04, 7.58146844467415010e-05, -4.58187196559824389e-04, -9.80416207378538508e-05, + 1.46100253250197316e-04, 1.33893857135371198e-04, -1.85809415470792585e-04, -2.14519862579163896e-04, 2.04062649947744427e-05, + 3.80782834009347831e-05, 6.10446036778424544e-06, -5.41890344947285041e-05, 7.34556813889813786e-05, -4.83384314725215133e-05, + -2.59332653570620112e-05, 9.78677118932030546e-05, 7.19857997319553727e-03, 0.00000000000000000e+00, 3.32311287830635389e-03, + 0.00000000000000000e+00, 1.29016889639107005e-03, 2.60642731444820416e-03, -5.79342819017824098e-04, 5.30553834626121441e-03, + -4.68788965044094827e-03, 2.08217120134517215e-03, 3.06452640436348598e-03, 5.58776901253584674e-03, -2.07323557931271898e-03, + -2.51258894621679899e-03, -3.85306585928035317e-03, 2.82848860506730321e-03, 1.90040888967029416e-03, -1.58852311515139590e-03, + -1.76310573539159793e-04, 5.21842268138928713e-04, 3.67316069752267500e-03, -6.98195275610524226e-03, 1.22648241960540911e-03, + -3.85429235509009193e-03, 1.91566146354165903e-04, -1.33552008300326001e-04, -2.39186538029803998e-03, 2.63157630488062991e-03, + 6.36877311590974615e-05, -3.36814172885773399e-03, -3.97233550032412720e-03, -1.23589782939034797e-03, -1.42523994062913190e-03, + 8.72837867417999738e-04, 3.32205772971433909e-03, 2.07205784967486126e-03, -1.63524299563669795e-03, -2.98899158700940103e-03, + -2.93061091875026396e-03, 2.44095189396288485e-03, -7.33561682360080094e-04, 2.19256835525849004e-04, -1.37923737441638804e-03, + 4.74155589490909838e-04, 5.50343470600480364e-04, 1.00710104262438410e-03, 7.63755994840873711e-04, 3.52120109902711968e-04, + -4.30626975626065701e-04, -1.05186955567569901e-03, 3.11980751557737598e-04, 6.58461838349606908e-04, 6.30925164678347626e-04, + 6.91309027775518218e-05, 1.47672053042282301e-03, 1.92736773096099717e-03, 3.53213480182088489e-04, 1.06216068629913702e-03, + 3.41679775713064481e-04, -6.50019951649382938e-04, -4.56695902171019223e-04, 3.93151598436330794e-05, 1.04036608397413606e-03, + -1.18660622982701093e-03, 1.15800807328811394e-03, -7.09182118909679562e-04, 1.90406623619408615e-04, -6.86534881354838433e-04, + 3.74063714066177986e-04, 2.87317791919599233e-05, -1.16732558544984798e-03, -1.10231759344286994e-03, -1.45057348478687506e-04, + -5.57631367297447612e-04, -1.26396191893281599e-03, 9.56518764874356837e-04, 2.31333566436199502e-04, 9.41915043002358412e-05, + -3.56903031585823878e-07, 1.70374203686440915e-04, 4.97443740660158911e-05, 5.02386869340809095e-05, -8.05492641090750411e-05, + 2.03150152926000996e-04, -2.65367060549427609e-05, -1.39929371447721412e-04, -1.81910288097425200e-04, 3.94364895467108318e-06, + 1.36003216887327697e-04, -2.46687639381463130e-04, -4.25147549979305140e-05, -8.12611885612382043e-05, 3.02172089350402477e-04, + -1.81936841170158323e-04, 3.92697525610298230e-05, -5.64000622052212617e-05, 2.99517040483845130e-04, 1.13720483995726007e-05, + 5.49904859412459219e-05, 3.88977423049413005e-05, 1.38947205623771099e-04, 1.02861024666216704e-04, -2.71713077848858631e-05, + 7.39149761082318377e-05, -2.13569983855703405e-06, 1.95773483474666312e-05, -8.34252306505384720e-05, 1.68968172956159728e-05, + 5.64292102822087512e-05, -1.35096864921712995e-04, -7.11597471040555693e-05, -2.52508230251673836e-05, 1.83000199944189002e-04, + -1.56863264288969296e-04, -2.39818567491244685e-06, -3.74840941875673682e-05, 2.52668447454548132e-04, -7.34450727330187984e-05, + 2.95967272053869410e-05, -5.33444905612428026e-06, 2.22014749180963908e-04, 2.93310494637914723e-05, 5.44126157522075029e-05, + 3.76250220322146280e-05, 2.78416115424583296e-03, 0.00000000000000000e+00, 1.26854722193290095e-02, 0.00000000000000000e+00, + -9.47804839873612852e-03, -4.45215591850271764e-03, -2.28388657889899401e-03, -3.32276281845919792e-03, 5.62482041639104599e-04, + -2.53847581390776594e-03, 1.34408286936057005e-04, -1.61357826059901704e-03, -2.84333470827229182e-03, -3.22367666765658104e-03, + -3.07078967414139861e-04, -1.05330262451769005e-03, 1.51227891659255200e-03, -2.70213282972538897e-03, 2.02388698147050521e-04, + 2.20186932966095301e-03, -3.46483641839626620e-03, 1.55788110436725713e-03, 1.30282918690895205e-04, 3.74261542464799681e-03, + -3.16046541370569589e-03, 1.31143131345886309e-03, -3.08399041187059568e-04, 5.99037253132680470e-04, 8.62250737785963677e-04, + -1.73930881785822793e-03, -5.02626684595700274e-04, -1.60752061144315206e-03, 7.20944097052917190e-04, 8.65412307424915685e-04, + -3.32776058197007101e-03, 2.18561816312586005e-04, -1.22068813598305397e-03, 8.37000871453652122e-05, 2.89630578538259539e-04, + 4.82163205454582029e-03, 1.58867890981335318e-03, -6.22401809893891717e-04, 1.73896479816057600e-03, -5.20439782855769287e-04, + 1.14168473800226804e-03, -7.20558866174143202e-04, 8.74793001198065205e-04, 1.64170074485570604e-03, -7.27026482331195574e-04, + 1.04357444655336007e-03, 4.59221225965631406e-04, 4.24503050387132737e-04, 8.77028221914163226e-04, -6.33662223335107683e-04, + 5.80098072084693720e-07, -1.94429183743168813e-03, -2.73977550274014515e-04, -1.22197633314669800e-03, -3.66274805050316758e-04, + -1.18302708414683407e-04, 4.83059391503256827e-04, -7.07985315638565041e-04, -7.25686338634964055e-04, 7.23020017804716305e-05, + -6.42241235767167500e-04, 9.07713195018969711e-04, -2.93369116036286404e-04, 1.04773232584438295e-03, -3.97340087708606071e-05, + -4.37058278643554128e-05, 8.83966961412785890e-04, 1.21999205784775700e-03, 8.94789314789739523e-04, -8.52167205194715740e-04, + 7.03592776492062985e-04, -1.02021757762579498e-03, 7.16083852460278780e-05, -2.48733302885627229e-04, -1.70335565690782711e-04, + -2.20660416975401708e-04, 1.87004473663415186e-04, -2.36331832688707318e-04, 1.15639534404308602e-04, -2.09475188880555710e-04, + 2.99683684796347039e-04, -1.29855910005338915e-04, 1.75091368398453285e-04, 3.55882792130287544e-05, 2.34718856730567211e-04, + 1.51728148824903899e-05, 2.54166504458850315e-05, 1.64049233181359300e-04, 9.01549142149536497e-05, -1.71648594910176101e-06, + -1.59944524407326617e-04, 1.19348548726544397e-04, 7.85268336308512794e-05, -1.03800844517790107e-04, -1.81405986799001117e-04, + -5.13845974642025707e-05, 1.63365999753164808e-04, -1.42106018914941090e-04, -1.00097984965546201e-05, -1.62863659689661610e-04, + 2.30666095969170819e-04, -8.81570200580615110e-05, 1.38332264647423106e-04, -7.84715508241847002e-05, 2.14089085919024407e-04, + -9.69562479731096954e-07, 1.16669648028640911e-04, 9.26066168070304737e-05, 1.42929551657034615e-04, 4.86176193502030807e-05, + -3.75360180136114031e-05, 1.36175658034411997e-04, 8.05716768732491124e-05, 1.91707714907214908e-05, -1.27718856709836399e-04, + 2.04269030182744926e-05, -1.03334865816164002e-02, 0.00000000000000000e+00, 2.69365088408525391e-03, 0.00000000000000000e+00, + -6.21250475397177519e-04, -1.35909955444097702e-04, -1.27945203373861101e-03, 1.90953207115528200e-03, -2.77850442376668429e-03, + 1.82862043928144194e-03, 2.66233674928770606e-03, -1.72532539859110087e-03, -1.01000873702640102e-03, 4.43243166778230311e-03, + 5.00370125591865882e-04, 6.35632869696106575e-03, -1.95259500854165317e-03, -1.87608290871500000e-03, 6.66882212379246231e-05, + 1.13997830429131398e-03, 2.26573181023742316e-03, 3.31913493881087112e-03, 7.10866341422408785e-05, 1.03399524854338207e-03, + -2.88342179376523534e-04, -7.57173461251488050e-04, 1.36785880414229898e-03, 1.77020330499936900e-03, -3.23746337552742285e-03, + -7.51329696680427665e-04, -3.11037507343977409e-03, 1.40367482810333389e-03, 2.03570909239716123e-03, 1.75365599912788613e-03, + -7.08325905403631834e-04, 1.68119206080417092e-03, 8.48077650551798824e-05, -2.99705652529596103e-04, 2.99009451038331677e-03, + 2.85542960442462627e-03, 1.23578474740311409e-04, -6.38235388827023439e-04, 1.51611990460678208e-03, 4.61776934587180546e-04, + -1.33829897826344001e-03, -3.75584022082175160e-04, 2.48101123647880809e-04, 3.85122657189657569e-04, 5.51670773382135333e-05, + -1.85882436015654090e-04, 4.87174768902445344e-04, -1.83533572841154896e-03, -1.27644194171767705e-03, 8.68015753068456745e-04, + -1.31905566544782702e-03, 7.65379040425717737e-04, -2.19797395477818716e-04, 3.88332435901323088e-04, 3.13034401313501485e-04, + -8.59762290013867548e-04, 1.13994740546106998e-03, 1.72994716473204605e-03, -1.89307846611188403e-04, 6.98495755050348890e-04, + 3.01973282939228989e-04, -7.74094999922277186e-05, 1.16378030420384910e-04, 1.29967573750049191e-04, -5.72500693830566416e-05, + -8.22972732968274339e-04, -3.12276374844850854e-04, -1.08545016715341010e-04, 4.78239995403885131e-05, -6.14717757473743454e-05, + -2.23684510111112999e-04, 6.04283674132463503e-05, 9.19527187931604801e-05, 2.31593535142378412e-05, -2.03967753321729318e-04, + -1.35370345643743119e-04, 1.14790539148631810e-05, -1.74220441476465203e-05, 1.82429012417977831e-05, -6.38348667371286822e-05, + -2.70462292805629515e-05, -6.86210087098047746e-05, 5.65492551243059147e-05, 8.81166356637452818e-05, 5.29353466250463340e-05, + -9.92223055798126811e-05, -8.05966223176598730e-05, 1.61920504601891299e-04, 8.00282427584589920e-05, -6.22535596383927311e-05, + -1.77477592715217017e-04, 1.06509181968351499e-04, 6.66734941894863201e-05, -1.20710760285688811e-05, -1.89746906538367400e-04, + -2.94151505612680823e-05, 4.31300335916989639e-05, 6.23352108610686946e-06, -6.80348953995890205e-05, -9.08766889893978445e-05, + -1.29721911177051616e-05, -1.67407832425932389e-05, 4.30275146318171822e-05, -2.82181843060568528e-05, -7.85956166541929683e-06, + -2.93591647656230893e-05, 4.59262032554511328e-05, 1.02171357029562308e-04, 3.63911400851528937e-05, -4.73433551198325242e-05, + -7.05174086134095903e-05, 1.12859884248809006e-04, 8.44054700606726937e-05, -1.95691919855953615e-05, -1.32409500860587216e-04, + 1.07325320429094103e-05, -3.85655230757970310e-03, 0.00000000000000000e+00, -5.39979047907412739e-03, 0.00000000000000000e+00, + 5.60193598745740377e-03, 1.34496931366289698e-03, 1.84053007999470698e-03, -3.07922098017868098e-03, 1.39726178798314999e-03, + 4.39676641449973649e-03, -1.68890814938530798e-03, 1.07275962852819507e-04, 9.37596905032942862e-04, 3.29160028373130104e-03, + -1.93176530108272017e-03, -3.82389751326079903e-03, 3.28111585382161977e-04, 1.35165071421654509e-03, -2.44934605063826206e-03, + -1.01374060585952093e-03, 1.90315179056236802e-03, -1.16243792021998994e-03, -2.23449354109382789e-03, -1.37390419356787702e-03, + 2.67043029813209421e-04, -2.46387317504163407e-04, 1.27404158449048992e-03, -3.11409821004060127e-03, 1.42054350882327412e-03, + 8.50945067451520584e-04, -2.18139096460945791e-03, 5.37585425556584451e-06, 7.70672126369275528e-04, 1.47205746609291919e-05, + -2.27122252035303826e-03, 2.73471086137731237e-04, -1.71770098939768396e-03, 1.79548953791325598e-03, 1.07201759382979695e-03, + 8.00872631239443744e-04, -6.93421194978720073e-04, -9.30281393379723794e-04, -6.30390648496625906e-05, -5.82231422949086564e-04, + -8.46299597976315013e-05, 9.00081479610586330e-04, 1.17059400966708599e-04, -1.17657919631858798e-03, 3.80463130954153492e-04, + 5.94799888416260611e-04, 1.37458545422499095e-03, -8.65911436633437981e-04, 4.03986631244411239e-04, -3.68569836363924258e-04, + -1.37212853610761101e-03, -3.54583726830509790e-04, 8.18394448681560531e-05, -6.41741245488995269e-05, -1.10730062409925695e-03, + -3.87839975193070567e-04, -1.49797684923353618e-03, 2.76129210001028514e-04, -2.21530592066440717e-04, 3.67206383764497469e-04, + -1.63449552926589903e-04, 1.33340756263806808e-04, 1.37461576726487196e-04, 9.37402543812214275e-04, 9.35976623153734815e-04, + 1.09446608551640808e-03, 6.60314338498173671e-04, 7.41023267300118505e-05, 1.96356821062653686e-05, 3.34462678969324925e-06, + 9.07111562029388140e-05, -8.59497626179119625e-05, -6.54182748356717204e-05, 3.18023886151265879e-04, 1.24059973148808592e-04, + 1.29131408350483987e-06, -2.85001271494982804e-04, 2.98328205348700711e-04, 7.22351177834776889e-05, 2.65141433646711721e-05, + -3.79703799498017980e-04, 1.00891724908919100e-04, -5.67380361354338442e-06, -1.33785413564818402e-05, -2.54723362593513693e-04, + -9.25645051781121415e-05, 2.47768104742008215e-05, -6.62764910229686775e-05, -5.69736192888645860e-05, -3.41068237011527789e-05, + 8.09156539163736121e-05, -5.62162696420001598e-05, -3.43941083506186279e-05, 1.33619279220014320e-04, 9.09933194450521986e-05, + 1.10025788491296402e-05, -1.41269448084213606e-04, 1.97425730308574887e-04, 4.13949297778524444e-05, 2.28029456020616418e-05, + -2.51957187227819538e-04, 1.07087421267623703e-04, 2.01951240903083911e-05, 2.16232156916533599e-06, -2.34732325786082114e-04, + -3.44848725799019331e-05, 1.02322264729879813e-05, -2.95808799705676908e-05, -1.27372633332256295e-04, -1.01181675232029001e-04, + 2.43965285934001316e-05, -1.56339350729979790e-05, -3.10666087069938407e-06, -6.48565764324702686e-05, 5.66240428071342533e-05, + -4.80947203208227109e-06, -3.27434987496428307e-03, 0.00000000000000000e+00, 1.94001371970481206e-04, 0.00000000000000000e+00, + -4.22146600015671676e-03, 1.85560412822053321e-04, 5.91960667993999233e-03, 3.46745751020892997e-03, -1.49624542277282911e-03, + -7.46997420480836351e-04, 2.71956837568511616e-03, -2.00362589759237692e-03, 2.84403667909016201e-03, 1.38522786944513302e-03, + -5.36253982302081788e-04, 8.98944385900057180e-04, 9.45948316279443557e-04, -1.10724429141635401e-03, 3.46491308247556264e-04, + 1.71076868721512518e-03, -2.83621464332214999e-03, -1.04214110182014098e-03, -3.29843443238391268e-04, 1.16249263818666692e-03, + -1.51263971259868598e-04, -5.12095086650722468e-04, -4.43868928176068683e-03, 1.09452571151002305e-03, -1.95905282494774008e-03, + -7.16502823696713313e-04, 1.80703181275910802e-03, 3.08021488597660107e-03, 7.63416447485232405e-05, -2.40820896115498200e-04, + -5.42123846874502098e-04, 2.79921673263123887e-03, 9.56711213597357204e-04, 9.12734617363823698e-04, 1.18329385902973100e-03, + 2.70548437862810518e-03, -7.56421605209681158e-04, -1.10451578857403000e-03, -4.68535394733205607e-04, 1.19301359831118807e-03, + 2.28790726615612307e-04, 1.01465655922533307e-04, 4.07810849728176426e-04, 2.37329397140924927e-05, 1.67118007317343706e-04, + -1.85034347043011804e-04, 2.39043782577092709e-04, 1.07377907210822799e-03, -5.05008157646158105e-04, -3.03557662440200656e-04, + -5.24421474456220906e-04, 7.10470807822329150e-04, -2.65441489219161812e-04, 1.86528767525131816e-04, 1.18768236344364813e-04, + 2.73773866769723212e-04, -1.37336329257661718e-04, 4.25102267178067332e-04, 3.61425250084589772e-04, 9.31561412223019954e-04, + 9.00923909497920207e-04, -6.91244956332927194e-05, 6.81184644780815534e-05, 4.94292460722651344e-04, 5.57832768280572605e-05, + -1.78247906031541014e-05, -5.39356541770310516e-05, 1.12847683543339510e-04, 6.97768161894662503e-05, -1.28801112173031391e-04, + -1.36258124552730511e-04, 7.52752984009248194e-05, 1.80478192845277815e-05, -1.41645378129016193e-04, -2.57661323644306191e-04, + 1.41172970367211290e-04, 1.68446669744071312e-04, -1.43510684701046498e-04, -2.49605693568589191e-04, 2.09270025912965222e-04, + 1.73380332203807320e-04, -4.31528168315061845e-05, -2.69385649188820129e-04, 1.44262017722768493e-04, 1.21410391924219496e-04, + -2.07613658141512274e-06, -2.75471606365465440e-04, 7.75847983715348654e-05, 6.67669015816173777e-05, -3.47205197316259882e-05, + -2.20564258990204199e-04, 6.79078647130726426e-05, 5.59892631528520842e-05, -7.15773427619622281e-05, -2.01846729733602123e-04, + 8.12540527443827596e-05, 8.67509042232947450e-05, -9.40223467407713106e-05, -2.10067860124576197e-04, 9.90070868211715723e-05, + 1.27019435552551516e-04, -5.23811311183937698e-05, -2.22191208252392599e-04, 8.42154234690965325e-05, 1.31078778198552006e-04, + 5.85256321380583660e-06, -2.20106146426574611e-04, 3.43903585322539085e-05, 8.17679926137757117e-05, 3.57696523905280228e-05, + -1.71306620715922918e-04, -1.69639454518841103e-05, 3.60183337728328407e-03, 0.00000000000000000e+00, 1.21002498222732104e-03, + 0.00000000000000000e+00, -5.31067389607137001e-04, -2.22812727852063006e-03, -8.94992413192695607e-04, 3.02492958377452523e-03, + 4.52889634571147846e-04, 7.04024195597577774e-04, -1.76994018522177218e-03, -2.78698760786973490e-03, 8.84419486352532524e-06, + -1.60114345443433800e-03, -1.79602328856612098e-03, 1.69645827046587699e-03, 1.22263306124923104e-03, -1.38672671784444796e-03, + -1.81715401816120699e-03, 1.12291672961585505e-04, -1.74014595698025396e-03, 3.00638238969133014e-03, 5.38769342023656716e-04, + 1.01168286456173001e-03, 1.25835738989465897e-03, -2.14855111778818704e-03, 1.94025636506503399e-03, 1.60138198682476798e-03, + 3.04996716051287957e-04, 1.51347934909390003e-04, 5.21670106763438379e-04, 1.75693890008179202e-04, -2.26149697116798717e-03, + -2.18303710192580295e-04, -1.51398914585641406e-03, -1.58816215964855886e-03, 1.55927169355978798e-04, -4.94225640241941215e-04, + 8.36202145908589763e-04, 4.73292588125403895e-04, 1.06473894198859907e-03, 2.09611117891008196e-03, 3.25952685546390664e-04, + -1.01655912251420307e-04, -5.18107271101577132e-04, -3.16226537170489612e-05, -6.51602000247405327e-04, -3.27558099950500984e-04, + 1.17758636912919704e-03, -2.12360966362415822e-04, -3.87091188014523164e-04, -9.60683801574256695e-05, -1.30698707823795617e-04, + -9.27708167827058093e-05, 4.67257929136822116e-04, 5.26735365201713777e-04, 8.67242094192128112e-05, -7.67583181024485969e-05, + 2.96172266445650628e-04, 1.17659790932125708e-04, 7.92032613046985052e-04, -4.73512687405615112e-04, -1.16486541346945304e-05, + -4.35223289100590137e-04, -4.07299279253803910e-04, 3.52623807285629663e-04, -5.29775841676903103e-04, -4.05973013715962621e-04, + 3.01167171669751194e-05, 4.49564889859656861e-05, 4.98072315856021145e-05, -4.68575668174601442e-05, -4.26129773365465023e-05, + 2.68927754707826733e-05, 4.85345234325915614e-05, 5.01423283319458619e-05, 3.74641852071465678e-05, -1.15116648622984601e-04, + -6.37275438469799910e-05, 4.80550144767946612e-05, 1.06992536936288300e-04, -1.04196940176600408e-04, -7.16075071301549481e-05, + 2.43099112315813413e-05, 1.17741921950054504e-04, -3.77547890067578420e-05, -9.10460029082267824e-05, -9.11504130315538267e-06, + 4.97971810224103162e-05, -1.58264998536182614e-05, -4.29621030846360960e-05, -1.14992848529921406e-05, 1.54112443854980599e-05, + 5.70264442689391733e-06, 1.07379249356645216e-05, -2.07929050873082623e-05, -5.79162054506014299e-07, -1.78040733197804610e-05, + 2.89084424773166903e-05, 2.71190365929275905e-05, 5.58295705560797958e-05, -6.04971618174102746e-05, -3.76119450581838938e-05, + 5.89902787458344548e-05, 9.92815613917080503e-05, -4.15442049260147703e-05, -9.02971715609474616e-05, 3.14235053266474025e-05, + 1.01079611905228811e-04, 4.68143507524649596e-06, -6.77319129898850883e-05, -1.82988584621209425e-05, 5.02189403381184127e-05, + 1.73189683402960021e-05, -4.66784771895106733e-05, -2.66409942440282929e-05, -1.34728524105830606e-03, 0.00000000000000000e+00, + 3.12714909306053895e-03, 0.00000000000000000e+00, 1.18306606932572895e-03, 6.05240992502963007e-04, 1.88764954821659086e-04, + 5.42596575385474313e-05, 2.38749601975439107e-03, 1.22954432709531194e-03, 1.48925894226772590e-03, -2.20463386750377596e-03, + -1.18702352618399401e-06, -1.90558390450811617e-03, 1.14020421473847301e-03, -2.28729301768068621e-04, -1.88094245511257613e-03, + -2.01084137143882813e-04, 1.32488933882795711e-03, 1.18616181726357499e-03, 1.29398001359800913e-03, -2.71207856984953012e-03, + 8.19803578829499032e-05, -6.65644985171580774e-04, 8.75321220674210219e-04, 1.84074218759263395e-03, 4.06738204865472806e-04, + 4.38901299441693939e-04, -2.67651935970348621e-03, 6.81954479043894637e-04, 6.68960422943894986e-05, -9.81998477803277181e-04, + 1.20805174682736713e-05, -2.81493824936257227e-04, 6.95809492034823291e-04, 4.19125664581867304e-04, 1.75523867792575210e-03, + 7.32292775253121737e-04, -2.82641400905200510e-04, -1.46138290430873900e-03, 5.75321504003394740e-04, 2.86865541338693028e-04, + 4.34876815609579008e-04, 7.83080633245084208e-04, 4.94068325342467878e-04, -8.49557197723212068e-04, -8.31842546134029881e-04, + 5.34145624564779644e-04, -6.14076102583219338e-04, -9.72964231627292640e-04, -1.43721827729833109e-04, 2.01814576789058711e-04, + 7.67106614249287539e-04, 7.90377521464399315e-04, 4.14567584917532341e-04, -1.99241162791407225e-05, -1.66330553501719002e-04, + -1.39824103009899810e-03, -4.42117898608442521e-05, 5.84579711485059780e-04, 5.75612275643427223e-04, 2.74664173075564607e-04, + 2.65715923566144636e-05, -4.21666909316897534e-05, -1.19734102816029612e-05, -1.94256110037154401e-04, 1.01515434301023007e-04, + 2.67927527956691980e-04, 1.21374022529998612e-04, -3.81182434679552928e-05, -3.99384457032958676e-05, 1.67162746294344109e-04, + 6.14866880150712615e-06, -3.85414892397567823e-05, -1.12966523933537806e-04, 6.34552866927493963e-05, 1.93741280076219993e-07, + 4.10563732161052979e-06, -1.26284088177673306e-04, -7.55315779155755080e-05, 1.92745758019108296e-05, -1.13406998393739012e-05, + 4.07566430480326360e-05, -4.48671856566166020e-05, 5.14430653688213020e-07, -4.07333593756617344e-05, 8.00104941396855918e-05, + 5.41507565868616441e-05, 3.98494652648809884e-05, -2.07914223765169624e-05, -1.25512252041928818e-05, 1.41940036871691613e-04, + 7.32425589110114811e-05, -2.51512828443974635e-05, -1.19512272253876809e-04, 9.67416793113340325e-05, 5.82166703146601216e-05, + -6.26370433431184249e-06, -1.09923499775177200e-04, -2.87744323783186204e-05, 2.54233406189743207e-05, -2.10691302726592179e-06, + -3.12188949662077221e-05, -5.86605172857020092e-05, 1.89560583816991700e-05, -1.04040428617575500e-05, 4.44595633021011336e-05, + -1.56251824021060200e-05, 3.41616520292055713e-05, -1.52515501601725206e-05, 2.31782612290289723e-05, 4.54765941433281945e-05, + 3.70353965639083326e-05, -2.48628648484161422e-05, -3.78366768210461839e-05, 6.18128780983269579e-05, 1.00801012570994608e-03, + 0.00000000000000000e+00, 3.47342291476345876e-04, 0.00000000000000000e+00, 7.91801506949049000e-04, 2.41648709536439622e-03, + 2.75878765148988314e-05, -1.42178280189469899e-03, 9.03240112720424823e-04, -1.56794445064509409e-03, 2.94565430782157717e-04, + 1.18232427518331494e-03, 2.50420503753315303e-03, 7.18942036700169896e-04, -5.36395691591266192e-04, -1.86258200998779509e-03, + 3.29548349853266565e-04, -5.13252882376217934e-05, -1.94254317541928687e-03, 2.18830456667285195e-04, -9.60854372387139272e-04, + -1.16624243286916505e-03, -7.85552741685865383e-05, -1.32933508428586297e-04, 3.09585668826129650e-04, -7.10966795883627824e-04, + -8.71756659030432663e-04, -2.27897207039004610e-04, 1.61772288010974315e-03, 7.16790313587811995e-04, -5.01650554121614123e-04, + 9.71216763704305639e-04, -1.22884709652954904e-03, -1.46349407630147108e-03, 3.77995433273275170e-04, 1.17850182886075107e-03, + -8.07524644944247099e-04, 5.47488208982875005e-04, -2.83179916648217922e-05, 3.22551697665504763e-04, -1.09287117692114400e-03, + -9.25209472688941724e-05, 1.55444562488144710e-05, -7.54245519189904352e-04, -1.14660162251744202e-03, 7.48883115386481937e-04, + 1.71732250142289308e-03, -1.47036164048469710e-05, 4.51407428437879436e-04, 1.18680813584906390e-03, -6.72638438381541063e-04, + -6.97316848749536490e-04, -3.08263583383085790e-04, 5.65595983350456626e-04, -5.59797981166573668e-04, -4.26396998746973431e-05, + 5.98503817888803680e-04, 1.13018384155006801e-03, 7.22319902981317995e-04, -4.73045270082827313e-04, -9.90990376668181587e-05, + 1.31642491991061888e-04, 1.56034616915051694e-04, -1.14773260272165305e-04, 2.03221727850923800e-07, -3.50912025092656228e-05, + 1.32230955962657016e-04, -1.98452567834938321e-05, 1.05361071131588310e-05, -3.98500767524021935e-06, 2.79257280511491612e-05, + -8.26066314796087718e-05, 3.94515619184286295e-06, 1.43449934940676807e-05, 7.28684565532049394e-06, -2.02274386187340809e-05, + -5.80238351293255621e-06, 6.41043912182615570e-05, 4.18971091022072242e-05, -1.17256699183353403e-04, -1.80114114610353696e-05, + 2.98002704400505139e-05, 6.00549650472916225e-05, -7.26624164000236908e-05, -5.08022754955713893e-05, 2.12961246777251218e-05, + 8.15905788537672430e-05, -5.24679151035354737e-05, -4.72793083387787640e-05, -1.00706341258723311e-05, 7.85407806503067980e-05, + -1.67426868521839296e-07, -1.53964885518920599e-05, -1.73452868932099002e-05, 5.41309373643272800e-06, -7.78796169440987244e-06, + 4.24209004120176683e-06, 1.31103899532218097e-06, 9.03134330516295739e-06, -5.47716075715314646e-05, -1.75259416817880711e-05, + 3.39369459010566274e-05, 4.45394216516285720e-05, -6.33645059964500198e-05, -4.53989029125374428e-05, 2.30499073301049214e-05, + 7.01930476332635278e-05, -3.70740476127565899e-05, -3.95730802289417580e-05, -1.28283101994449709e-05, 5.13649901186186223e-05, + 1.62222452549143097e-05, -3.95332838575619596e-03, 0.00000000000000000e+00, 9.73971711510582564e-04, 0.00000000000000000e+00, + -1.63334095657213601e-03, 2.47566297975661915e-03, -4.61067854034823989e-04, 1.00227945503756797e-03, -8.98849702359479129e-04, + -9.89062784124243724e-05, 4.16612817020121440e-04, 1.69845399686099387e-04, 1.40704833076194490e-03, 1.58608145473462586e-03, + -1.91534747392348593e-03, -1.50556041518790020e-04, -7.41177503466006714e-04, 1.80077341737210116e-03, 1.82148333058896402e-03, + -2.36480063043344104e-04, -6.69607791546209994e-04, 1.45142101651430299e-03, 1.73832130576143714e-04, 8.93804851118562668e-04, + 5.14804835010676596e-04, -8.60802883056195796e-04, -1.49094753190589895e-03, -5.49339444448599160e-04, -9.43782543463274435e-05, + 6.78581866352359793e-04, 2.40555226995407996e-03, 5.50420320933374310e-04, 1.06689345052416503e-03, 1.11546355912698204e-03, + -2.51654815915527226e-04, 1.05362642615015507e-04, 1.51342669550902598e-04, -1.18709605961395514e-05, -3.48687623727660372e-05, + 2.66172462883273715e-04, 1.22640520127150393e-04, -3.53049495511274401e-04, 2.10819480972762000e-04, -1.32719882022899207e-03, + -2.68288818956041589e-04, -2.09821739624757906e-04, 4.54672184206733891e-04, -1.85821605909427607e-04, -6.69258067322836808e-04, + 4.19466498351806936e-04, 5.98458432727136413e-04, 3.41464685789424362e-04, 3.08215819645630260e-04, -2.95548945659434843e-04, + -7.24507159240115662e-04, -1.69082755504923292e-03, -1.93520904983491714e-05, 1.35191372580951795e-04, -2.56397811086976233e-05, + 2.33630592103984520e-05, -3.87116937938718973e-05, 7.81921474464154553e-05, -6.33964727838977121e-05, -2.12567160577475314e-05, + -9.42215352607953948e-05, 5.33226219041193637e-05, -2.21376049296527211e-05, 6.92024697881541171e-05, -1.20697375237608106e-05, + -5.29224653986627494e-05, -5.69801791450185759e-06, -3.27120027041702426e-05, 2.85749659021073320e-05, -4.20546764722071632e-05, + 1.98781427031484195e-05, -5.38405801763815410e-06, -3.60922281559310912e-05, 2.75190032543574721e-05, -2.65219063811620724e-05, + 3.90728273668446096e-06, -4.56887670342133939e-05, 1.64537934490613995e-06, -4.85903112312865320e-05, 4.24402246231590422e-05, + -4.13561365234884525e-05, 8.75373073637312674e-06, -1.21030282885749017e-05, 6.58122011178998717e-07, -4.77810740958057329e-05, + 7.18444564697379224e-06, -1.26287955993816603e-05, -4.19957851422694573e-06, -3.40668636228985117e-05, -1.81427746122776006e-05, + -1.29807277238031617e-05, 1.52633508008959505e-05, -9.32846106770538938e-07, -8.25199093839484345e-06, -1.53075654575231387e-05, + 1.90849812166562513e-05, -1.94244976250517904e-05, 2.30351054519609033e-05, -8.12019352100231694e-06, 1.41254032313609714e-05, + -5.15379624616807793e-05, 2.10763449534356613e-05, -3.20853263814959310e-06, 8.77168653988632320e-06, -2.58071167847657522e-05, + -7.75701334972038760e-06, -9.93028892835044389e-06, 1.38436251757236696e-06, -5.72249229404819815e-03, 0.00000000000000000e+00, + -6.32581087658179333e-04, 0.00000000000000000e+00, 1.61767889408735797e-03, 2.19778973626455487e-03, 1.96918718115947095e-03, + -2.65739741538310219e-03, -4.02877235435324934e-04, 1.82841358339318606e-03, -1.98190948111654397e-04, 1.84031700925872818e-04, + 9.14586352256133118e-04, 3.19426607242560368e-04, -2.39250809083575884e-03, 5.81493000541998505e-04, 3.77857679493603688e-04, + -6.86936120110013377e-04, -2.82807248390244833e-04, -6.70701771087373505e-05, 1.05241439367069302e-04, 4.46545395702673144e-05, + 1.68820664009942988e-03, 1.18800350711883193e-03, -6.58313265148805686e-04, 1.17053380848879200e-04, -7.17271890677809485e-05, + 1.85577007448963415e-03, 6.56520849846081700e-04, 8.06017465774315294e-04, -1.93797726968085720e-04, -1.75313812654149300e-03, + 9.27674844695662668e-04, 1.17445496798684705e-03, 9.54690738368271698e-04, 6.09946281790876106e-04, -1.02725245012973807e-04, + -1.03470126681415200e-03, 2.71870677502123641e-04, 1.01664056791575709e-04, 1.40092211191593103e-04, -7.42827786391725441e-04, + 2.54015410108206197e-04, 4.62154858422488414e-04, 4.73601196282340514e-04, 8.36667553932069407e-04, -4.24839064668559993e-04, + -1.18580662211388403e-03, 5.53470270383688029e-06, -7.12069686521007972e-04, -3.12850226308962768e-04, -6.28311957809785690e-04, + -8.30599693854902740e-05, 1.55928940929191389e-04, -1.60018398001453190e-04, 1.85250076757384821e-04, -1.57732838480953709e-05, + 2.95813088176528736e-05, -2.23827148064990915e-04, 4.80249509368113500e-05, -5.82639775077897334e-05, 7.00915612005133102e-05, + -1.77709281195849987e-05, 9.54475479352618022e-05, -1.06501231685877503e-04, -2.52725768132289197e-06, -2.87163499743147541e-05, + 2.39634619540592104e-04, -7.01848644852101600e-05, -1.07730520602342608e-04, -9.15501307042449695e-05, 5.55930835071830897e-05, + 7.65236411313137280e-05, 3.78463407174196132e-05, -8.20428675414204951e-06, -5.70295554976857978e-06, 1.26162015242596914e-05, + 1.10521120895615412e-04, -6.19508662898057469e-05, 3.94284099299287429e-05, -1.06451388614695302e-04, 7.47878473709218306e-05, + -5.21118007184475231e-05, 5.90512347485764542e-05, -9.31374583187064725e-05, -1.76537540334046529e-05, -7.82954623428642381e-05, + 6.31966793043861619e-05, -3.36067601811582521e-05, -5.23997892308786733e-05, -6.79521363541582459e-05, 3.05704464569093182e-05, + 2.23407406348362189e-06, -1.17716210222080909e-05, -5.41817760084240387e-05, 2.65837093897156702e-05, 9.77892152361844917e-06, + 3.98189921094368982e-05, -4.68398123377187695e-05, 2.83937454235591119e-05, -2.31712065750914126e-05, 5.78505330157043243e-05, + -6.07388476988686199e-05, 2.80495746496069133e-05, -7.16977469524132671e-05, 3.06211359179215205e-05, -4.91673798626069715e-05, + 2.17809145436793205e-05, -1.20189266317283195e-03, 0.00000000000000000e+00, -1.24444005867499095e-03, 0.00000000000000000e+00, + 1.73864859937527096e-03, -2.10016679995760200e-03, 1.28097965557804499e-03, -9.37869122558217835e-04, 1.23244624215056511e-03, + 4.29296709581100113e-04, -1.39876407807240904e-03, -1.77139693497456300e-03, -1.75368292696427997e-03, -1.88220407037240512e-03, + -5.97882747390380697e-04, -3.20840209140584487e-04, 1.07829902637683606e-03, 3.48422576558867793e-04, -4.98399522356942812e-04, + 4.85015946638849439e-04, -7.40868022399493063e-04, 3.89788722352541486e-05, -1.50683679721151501e-03, -5.68710376996097691e-04, + -1.17794557282445807e-04, -6.69071298330275012e-04, -1.54243277037009394e-03, 3.93673397135044668e-04, 5.02542184595859242e-04, + -1.06141332845498607e-03, -4.68541722612586032e-04, 8.09111430645225208e-05, -5.50488474901892027e-04, -1.76232702790926301e-04, + 1.17927273469369909e-04, 8.80531874629222823e-04, -3.17470244298062771e-04, 4.64126640010351500e-04, -5.84186413684128505e-04, + -1.42019871106746317e-04, 1.14102906216628905e-03, -1.13422500815021313e-03, -4.40136070204560524e-04, 7.81230568059088971e-04, + -7.48231811144619272e-05, 2.70624883281615704e-06, 7.77629329803327529e-06, -4.64890263687434737e-05, 1.29456925148187810e-04, + -8.26415855695131331e-06, -1.35796182420071221e-04, -1.13417756509377808e-04, 4.71475937122163948e-05, -1.35640896999089205e-04, + -1.77588284877164021e-04, 4.44527488443097229e-05, 3.61597554605081118e-06, -8.57653366949178396e-05, -1.04773375499409501e-04, + 1.67387410624966980e-06, 3.27745304038831628e-05, -7.35752623470212766e-05, 9.67836329131315262e-06, 1.24611546920806011e-04, + -2.07100197446184124e-05, -4.74290184099852226e-05, -6.27778738001704550e-06, 1.14722525535037299e-04, 9.15928222588590575e-06, + -5.24769508651932535e-07, -2.64488074208383205e-05, 1.89369901667540120e-05, -9.02543609331752848e-06, 5.05981564857997049e-06, + 1.50033852168410511e-05, -3.22506474294869728e-05, 1.69892618976147802e-05, -1.22510414201922799e-05, -1.72479602440841401e-05, + -5.38753752232114648e-05, 3.82701797625889268e-05, -2.52126883145274404e-05, -2.72655360701411011e-06, 2.38136850519584826e-05, + 3.89460713712125724e-05, -1.44085864133448205e-05, -1.99183168836612192e-05, 1.40299281945465198e-05, 3.41954900402774203e-05, + -3.38967848729448998e-06, -3.34956295772950317e-05, -8.08169691723178865e-06, 1.75633301603197390e-05, 5.66459538142349871e-06, + -2.32417858834375024e-05, -2.61422397808690076e-06, 1.61959819366858825e-05, -1.41749825797410821e-05, -1.69536160529109602e-05, + -1.31441549108300885e-06, 1.56297638295987488e-05, -1.11585138806505809e-05, -1.65126158152218315e-05, 9.87884239323989340e-06, + 2.03783651816531221e-03, 0.00000000000000000e+00, 2.96441215597000821e-03, 0.00000000000000000e+00, -1.20692298413791507e-03, + -1.67976475604672201e-03, -5.55507989859292846e-04, 2.41084152649467202e-04, 1.56009441290519001e-03, 1.29451122431705899e-03, + -7.34843389900259429e-04, -1.14363222895938195e-03, -1.04558576783006095e-03, -1.36385048193016396e-03, -1.40388960701079294e-03, + 6.47371830280723940e-04, -7.50606293589330164e-04, -8.54271538689986695e-04, -4.38830402088630537e-04, 5.99525655311079764e-04, + -1.78097452143089407e-04, -2.74859279931684324e-05, 4.58302159015211809e-04, 6.96953952070895151e-04, -9.09138958706189721e-04, + 1.00859289053476311e-03, 1.03420094281303607e-03, 6.06923899074255464e-04, 1.89553126330842806e-04, 1.07961345910163406e-04, + 1.22474291555961902e-04, 8.97871951519685265e-04, -2.03363015143865218e-04, -2.90422734859094615e-04, -1.16390797079040211e-03, + -4.07437136982752909e-04, -3.33759313478539392e-05, -4.13217846735850717e-04, 6.11501445766974655e-05, 2.30660848037552498e-04, + -1.65860197748338308e-04, 7.32838125453208456e-05, 3.05772451206082208e-05, -5.86058550125370254e-06, -1.00712626716708905e-04, + -1.16636328519362104e-04, -4.39030870540731342e-05, 2.85746939544883230e-05, 1.21787965357839705e-04, 3.46888941913913528e-05, + 1.02679377633142107e-04, 4.05996014113190428e-05, 2.30543771929583613e-04, 5.14945396569508813e-06, -1.65368020862696715e-05, + 9.04748986364313894e-06, 2.93878012034917504e-05, -7.94825676720516274e-05, -3.80497824239483319e-05, 7.03625355594050394e-05, + 8.98471420453423214e-05, -2.80862342068120786e-04, -8.14566101491249101e-05, 3.25979861574083376e-05, 1.06156949242827603e-04, + -1.32132181275301412e-04, 1.27583620705697613e-05, -5.79628880366303540e-06, 2.43199623878137608e-05, -3.60126018132162520e-05, + 6.15951019505404804e-05, -3.99183515734159737e-06, -1.76186429787627617e-05, -4.49466237943879815e-06, -9.63231232761454656e-06, + 2.20206236945611825e-05, 4.64279356163652205e-05, -8.18007824948389131e-05, -1.75678833941443713e-05, 1.16166757075860911e-05, + 8.50503368640412397e-05, -5.73112362586235122e-05, -3.02595465759658291e-05, 2.43223590855599709e-05, 9.00167115746459403e-05, + -4.42196883338474652e-05, -4.77861166708995849e-05, 1.47871285798455200e-06, 6.46850476250585682e-05, -2.84469853186260997e-05, + -4.06690705935917952e-06, -1.52285477243602015e-05, 5.34350029362040406e-05, -2.36525750629738904e-05, 1.79723054916162533e-05, + -9.66549826127890040e-06, 5.63345183102968898e-05, -2.80051432389576894e-05, 3.21773388999549127e-06, 1.50608941802879105e-05, + 5.60896638506370299e-05, -2.17105368788846218e-05, -1.18764180976179311e-05, 7.83174918154457391e-06, -3.60332041478658661e-04, + 0.00000000000000000e+00, 3.49318793191280520e-03, 0.00000000000000000e+00, -4.69558634437114002e-05, 7.74460196242976196e-05, + -1.72713645917304507e-03, 9.25559109923871173e-04, 2.70769786797511226e-04, 1.31867157982758915e-03, 8.27630755758396825e-04, + -9.10032934212391328e-04, 1.05207266211394096e-03, -8.61162790483724626e-05, 5.89935325723504357e-04, 9.44401798870870619e-05, + -5.30424580391579309e-05, 6.46005187543645225e-05, -1.38406487947310611e-04, 7.71434788940860436e-04, 5.73812403577386287e-04, + 9.96893494257266189e-04, 1.03367888609143905e-03, -6.48856607584904002e-04, 1.75666860474048509e-04, 3.15758899087953469e-04, + 8.50083079068923893e-04, 3.13659018423505167e-04, 1.51559585553799191e-04, 1.51467162868235410e-04, -1.29431785041904613e-04, + -2.39797674845940504e-04, 2.33549706236320912e-04, -3.00841368338772394e-04, -7.95062782924988755e-05, -2.07935910158562009e-04, + -3.92408950341176794e-05, -3.35406314150178588e-04, -1.45057999540062810e-04, -1.56325561593936710e-04, -2.13483774208381123e-05, + 1.23660725477051607e-04, -4.52126231413514295e-06, 1.23543299691240512e-04, -2.02273348603037631e-05, -1.12762498094144112e-05, + 1.29264958426136413e-05, 1.42217450806022812e-04, 4.33277313716177756e-05, -8.88754036309822399e-05, -4.52579094020371517e-05, + 1.53952587710451221e-04, 1.49223702486409108e-04, 1.89769705761112033e-05, 8.79407357783015825e-05, -2.42581624364586902e-05, + -2.09538727115885126e-05, 3.19715400980995704e-06, 2.93210815056320497e-05, -9.82593484599446274e-06, 3.54911921458880570e-05, + -1.01403207835097905e-04, 4.75557097499886204e-05, -5.15654800601184123e-05, 2.56187188204641513e-05, -4.40789852288279039e-05, + 9.02715865368834106e-05, -6.39625122936784616e-06, 3.91163204254141270e-07, -1.43497473262268803e-05, 1.48738995955006900e-05, + 7.10059543838856299e-05, -1.44858422217440211e-05, -2.29202291658015780e-06, -4.74320720877375356e-05, 2.16688715314149923e-05, + 3.19024146278115502e-05, 6.65770850586241554e-06, -2.52674351434578406e-05, -5.95618473210036723e-05, 1.85160634771636908e-05, + -1.66385627558361417e-05, 3.01536532216370809e-05, -2.34318990675550609e-05, 1.99994047973059210e-05, 1.20799934486498588e-06, + 4.68905539792476611e-05, -4.05199614593984003e-07, 2.15121745493054430e-05, -9.06512486920190993e-06, 1.60091575368399188e-05, + 4.26017345086028326e-05, 2.60811047294765523e-05, -6.95236528206229650e-06, -1.14411704502663105e-05, 2.15010636838700904e-05, + 1.45470558851883310e-05, -6.07212258084767841e-06, -3.22028438478360636e-05, -3.17933241488657482e-07, -2.53151479665288202e-03, + 0.00000000000000000e+00, 1.12967622013809398e-03, 0.00000000000000000e+00, 5.16439235336714790e-04, 9.13502172529712803e-04, + -1.10885916513099808e-04, -5.87650332004382970e-04, -3.10824645598157688e-04, -2.04340181774912815e-04, 1.50058658499531005e-04, + -6.27762758616644544e-05, 6.34086998122845619e-04, 1.62611213591308410e-04, -2.58000457753021289e-04, -2.28405829315187425e-04, + -2.41752383261545410e-04, 3.87195735267530246e-04, 1.31350888922379520e-04, -1.29243632867355305e-04, -1.86027850373812504e-04, + 2.69006585922663719e-05, 5.31648558458435233e-05, -2.81913823664273785e-04, 6.12596182709963886e-05, -1.99722422596107518e-04, + 1.65292373762217508e-04, 1.93923419729845505e-04, 2.75862370177224576e-04, 2.77743170358154992e-04, -2.42249854023419709e-04, + -2.36920920177450216e-04, 1.24587860121446999e-04, 1.12559537025789104e-04, -8.91336246402938640e-05, -1.40571914192917500e-04, + 9.69331183964188236e-05, -1.44820965513538111e-04, -1.28839828734424514e-04, -5.82527231861141738e-05, 4.37826620002375143e-05, + -7.67180354379144502e-05, 5.74861437218499151e-06, 5.02678298138450438e-05, -5.91313323346461106e-05, -1.08838366163098205e-04, + 6.49284469111140313e-05, 1.76727711960057211e-04, -6.84530490306975691e-05, -1.42567887910064205e-04, -3.17538645802270311e-05, + 6.82633542136118585e-05, -2.69908329748347014e-05, 1.98739426028434396e-05, 7.54438074321606313e-05, -6.35141527967402148e-05, + 1.72478873877519024e-05, 6.65218946661316610e-05, 5.90351225582636660e-06, -5.29346479560344747e-05, -6.09586847041837740e-05, + 5.77794329008206426e-05, 5.15519395345650716e-05, -5.66799896792458604e-05, -7.73712507640684068e-05, -4.08972980683335022e-05, + 6.47698884178398945e-05, 2.56965476906213634e-05, -1.07169096508788499e-05, -3.11367084296445586e-05, 2.64692802759765304e-05, + 4.09729157302286519e-05, 3.11189278864267132e-05, -5.78741270881866221e-06, -1.16942216776686414e-05, -1.41167610522350718e-05, + 2.77421966670059834e-05, 3.43719238319505278e-05, -1.16804942644560203e-05, -6.12184985312735501e-05, -2.94284212452698707e-05, + 3.96388866360877800e-05, 3.78998547828979167e-05, -4.92209043992790452e-05, -5.40755588507646826e-05, 2.16255420278872399e-06, + 4.63317120113593031e-05, 6.94969244998754276e-07, -1.75200269820160494e-05, -3.06430625697614833e-05, 3.43536241910082486e-05, + 1.58233835524091911e-05, 1.81976913278585211e-05, -1.12638695311979910e-05, -1.18290933055904215e-05, 1.54065347512193402e-05, + -1.97457057792955592e-03, 0.00000000000000000e+00, -6.17903706175687285e-05, 0.00000000000000000e+00, 2.39974191600898101e-04, + 1.09676205964747407e-03, 2.66073294575686298e-04, 8.97726904827368986e-05, -4.21704772986081135e-04, -2.82186869262147694e-04, + -1.97386162412418906e-04, -4.55182257600979224e-04, 6.90018589665085673e-04, 4.30022425770627912e-04, -4.13602752490345210e-04, + 5.26412358602485543e-05, -2.99605019324083717e-04, 3.36147203973198865e-04, 5.35288011923700297e-05, 1.19957570327492498e-04, + -1.36669491045843299e-04, 1.94136007080692206e-04, 2.01776429817749806e-05, 4.22807143534335079e-06, -9.29802360975042527e-05, + -1.55693138695467696e-04, -2.64935701201438924e-04, 3.83809379110780418e-05, 3.68315910254809705e-04, 2.22675272309271816e-04, + -8.40837046939708617e-05, -1.26650144654841398e-04, 2.75725685385756389e-04, 2.08514653482221111e-04, -1.32192752900868492e-04, + 2.67546735251402909e-04, -1.46951286818532412e-05, -9.51276528158519121e-05, 1.12515159008266409e-05, 1.65126940488277810e-04, + -1.05096096778006392e-06, -1.48931894867637118e-04, 3.88335645430680542e-05, -6.79220808847396388e-05, -5.68333508117840373e-06, + -1.13497193495425101e-04, 4.40865395213776718e-05, 5.81689000146885115e-05, -1.07304496192630510e-04, -1.09553109663381809e-04, + -7.36678296651362596e-05, 3.05076035218356775e-07, -7.14562184723935252e-05, -2.17689602162982504e-05, -8.86635043731916103e-05, + 1.55830079922932419e-05, 8.53188645751188393e-06, 1.27616620265669114e-04, -3.07660183064505199e-06, 1.77693877526996815e-05, + -1.21881433351298308e-04, 9.70820239258155421e-05, -6.88477447173295197e-06, 8.35812145959487023e-05, -7.08861142732914167e-05, + -1.95410408058430200e-05, -2.99815675113649160e-06, 5.30146506678979022e-05, -1.17983237948369116e-05, -4.06521074556727538e-05, + -1.35928793450611709e-05, -2.69206670526964770e-06, 2.37405849777586631e-05, 1.41027369716773706e-05, 2.38608811716672410e-05, + -1.04093815988561802e-05, 2.94018573099677933e-05, 4.79097717318764199e-05, -3.04484990645996103e-05, -7.41822772705316389e-06, + -4.31780968615617526e-05, 6.00484819457901999e-05, -2.16148968238596922e-05, 2.63326485734068621e-05, -6.98149485535926799e-05, + 6.37673262907134300e-06, -1.49451539851202210e-05, 5.16763312907252601e-06, -3.01509621222700420e-05, -3.38437301504128696e-05, + -3.09602298739826106e-06, 1.17686850815125304e-05, -1.46172096654267804e-03, 0.00000000000000000e+00, -1.04257220251350712e-03, + 0.00000000000000000e+00, 3.37601615679230670e-04, 3.62179244244991653e-04, 4.66516969872935697e-04, 2.20896945250713200e-04, + -1.14856098350701606e-04, 3.71733378208419078e-04, -4.56528102625122800e-04, -5.00478119862720716e-04, 6.08268940632159427e-04, + -3.32928662560408225e-05, -5.59187320611888869e-04, 4.24940469217676927e-04, -1.54626662460820405e-04, 1.53803155025080491e-04, + 1.42877804893037906e-06, 6.98532531440891971e-05, -2.98746773248649629e-05, 1.35471141341737106e-04, 6.98092718847611736e-05, + 3.63862564501528970e-04, 1.77889982501028103e-04, -1.05830904220531507e-04, -5.61018978334430437e-04, -2.70461507638364820e-05, + 2.69731733460872600e-04, 6.85854381210795444e-05, 3.93859632863456042e-05, -3.31099850163778212e-05, 3.15642194180260993e-04, + -8.55565884347129894e-05, -8.81178757452353422e-06, 4.14099579966528220e-04, -1.18125841112851310e-04, -1.58864732692415517e-04, + 3.00173248333441702e-05, 2.77190872568433815e-04, -2.56765255788473531e-05, -1.57033171768035395e-04, -3.32959711484975829e-05, + -9.63927667599435235e-05, -2.54742433883303236e-05, -6.50765457697475766e-05, 5.04018352818951719e-05, -3.43950512225536629e-05, + -6.17363546212169873e-05, 5.10273923307524849e-06, -5.84607735450458815e-05, 1.64379737466675901e-05, 1.29734901817078911e-05, + -3.92696914882976447e-05, -1.64041530160981709e-04, 1.42915901318080097e-05, 4.48109662215338665e-05, 6.40760478636463835e-05, + -4.00827654443697601e-05, 5.23179794399272952e-05, -2.72653980923539735e-05, 4.13038148568586624e-06, -6.86097916757893300e-05, + 1.53031279669278410e-04, -3.76813873437484393e-05, -6.06148813378603305e-05, -6.39726082097255067e-05, 9.97952163664085433e-05, + -8.05566844538046094e-07, -1.79349356201000397e-05, -2.64035614102093801e-06, -2.27319992387671927e-05, 2.44803623725549528e-05, + -4.92446408524156795e-06, 1.69097417534366305e-05, -2.02331969300959902e-05, 2.23257754347340127e-05, 2.79953564079958715e-05, + -2.77971641526118441e-05, 5.31337018758826847e-05, -1.51685357707728206e-05, 1.21185601596955313e-05, -5.54255754132544848e-05, + 3.39800800142221935e-05, -1.37705220101120503e-05, 1.17026527332457494e-06, -4.84099736084911341e-05, 1.72580930219210916e-05, + -3.67873286266726476e-04, 0.00000000000000000e+00, -9.71856035308778688e-04, 0.00000000000000000e+00, 3.68001000603857041e-05, + -1.80366306297578393e-04, 5.95465838399280006e-04, -9.73074587525231199e-05, 4.33035509414850597e-04, 8.68813550017956382e-04, + -3.55604219599788853e-04, -2.09149810167836517e-04, 6.05497606635874435e-04, -4.44285688213212702e-04, -4.96326090016681234e-04, + 2.76200191743740885e-04, 1.05594362050475299e-04, -7.31746111760187581e-05, 5.25437405368234128e-05, -7.03636533238632066e-05, + -7.04810658251703114e-05, -2.21448446357462613e-04, 8.40919434072135200e-05, 3.61285642497185589e-04, 4.63859693039894900e-04, + 9.95447465281579533e-06, -3.90334836566050476e-04, -7.15137273935237281e-05, 1.58344253289186405e-04, -9.66561524647479064e-06, + -2.88464063028901239e-05, 3.20394934323419382e-05, 2.27870727298711814e-04, -3.85003894403811674e-04, 3.95453114218767795e-05, + 2.52344815518091095e-04, -1.28109809597042892e-04, -3.13591750088317250e-04, 4.95361157057811461e-05, 1.52566847685289017e-04, + -4.65342429065181135e-05, -4.37630316986734248e-05, -2.94250258841729114e-05, -2.88828323869860414e-05, 3.73909881626153694e-06, + 2.72162890905132315e-05, -2.00735783121399998e-06, -8.45647849999474224e-05, 1.21455512759758114e-05, -1.54519685732128702e-05, + -4.95728310623586458e-05, 4.23491907495121640e-05, 1.22893175677633306e-04, -2.68419786355757812e-05, -9.60596847652382831e-05, + 3.08820983081861631e-05, 5.83890486469687431e-05, -3.73708698488206477e-05, -5.19159241357444848e-05, 3.66386671593869911e-05, + 5.07658846861618521e-05, -1.07304750005830703e-04, -2.83663556542631599e-05, 9.28807206358021626e-05, 3.70104011521805719e-05, + -8.34551268891536098e-05, -3.14113155589142528e-05, 6.63182318337119205e-05, 1.60213917824094198e-05, -3.52794936491844085e-05, + -1.59225419093221418e-05, -8.34046194147479916e-07, -9.65280581409041511e-06, 5.07677914813006063e-06, 2.03902166810200127e-05, + -1.25974535618156500e-05, 3.67496199937445797e-05, -1.69153230944175091e-05, -3.29180959908194180e-05, 2.52964761838148521e-05, + 2.14550118421411021e-05, -2.55984106137294917e-05, -2.09892146802813526e-05, 1.45091691712559505e-05, 1.05889292279405406e-04, + 0.00000000000000000e+00, 6.96557645777117211e-04, 0.00000000000000000e+00, -3.20653240139645156e-04, -3.06664898492693173e-04, + -1.30135967286087193e-04, -3.43685687318228197e-04, 6.99243111115629935e-04, 1.00931484720404399e-03, 2.27872845646686414e-04, + 5.60556585522428805e-05, 5.06668770409637393e-04, -5.61098753829031857e-04, -1.77788812269638309e-04, -9.26838818560580326e-05, + 4.80704370686056920e-05, -3.94480920452870476e-05, 1.13743624415380402e-04, -1.95593364550650988e-04, -8.22385939115209569e-06, + -2.22550243804433797e-04, 3.83433777349945372e-05, -6.14113903833953543e-05, 5.65029175348560203e-04, 1.64254592755116099e-05, + 6.44997102970363238e-05, 6.58176612450044410e-05, 1.26948782028661410e-04, -6.85633288983039511e-05, -1.17595095165860504e-04, + -5.90185476888272837e-05, 1.31585913470637410e-04, -4.56978252250974911e-04, -1.00958846936701602e-04, -1.25259617920235096e-04, + -1.04798018922154108e-04, -2.72545293701832833e-04, 4.86208256378739653e-05, -4.49465427200034320e-05, -5.65278962179857657e-05, + 5.46913188228785663e-06, -7.25997168582917762e-05, 1.14384344901122901e-04, 1.12924097562157112e-05, 3.68523306125718506e-05, + -1.58208335465920613e-05, 1.20613043672090303e-05, 5.27346073833204513e-05, -3.86529074265486920e-05, 4.46597253672119545e-05, + 4.49755028762217115e-05, 1.30762541454545214e-04, -2.23656324639177317e-05, 3.19275114821177829e-05, 4.05961036565850809e-05, + 5.72814922207066132e-05, -6.32001323493957027e-05, -2.11556776338600419e-05, -5.16301940103973931e-05, 4.71248075383639623e-05, + -1.16687520784574999e-04, 3.37705783718914737e-05, -3.55213809620370029e-05, 2.36245507648186426e-05, -9.39852209287609514e-05, + 4.18229647627686027e-05, 2.05795533565095200e-05, 2.95759782556888409e-05, -1.11460217666459313e-05, 5.56781374858055805e-07, + 1.61083673677120723e-05, -8.87804840750498273e-06, 4.69737707507023012e-06, -1.46943693829812711e-05, 8.96017347561271887e-07, + 2.31898944912936817e-05, -5.75437116150547476e-06, -1.04050964809673511e-05, -2.31844808370536218e-05, -1.24228889211622706e-03, + 0.00000000000000000e+00, 1.91447976012779097e-03, 0.00000000000000000e+00, 1.86361784351676802e-04, 1.22099836958390012e-05, + -7.18563451828412871e-04, -5.44913205591266835e-04, 2.62429988030197430e-04, 7.46591568526208975e-04, 5.58329937558502609e-04, + 1.73536073229491603e-04, 3.28522185630468282e-04, -1.86008732903326717e-04, -5.28015697290392397e-05, -2.60360888337061416e-04, + 3.38623159395887096e-06, 3.98523056007639166e-05, 9.85712987849502202e-05, -1.84923290917329212e-04, -7.71217348849064299e-06, + -5.95492370208864554e-06, 9.80226288250609149e-05, -2.85565844690997426e-04, 2.03773487125666412e-04, -7.62700465832047414e-05, + 2.74605378426968504e-04, 1.01722822597336303e-04, 1.72888937367956423e-04, 6.14980529476756761e-05, -1.65564582674629617e-04, + -1.03937770636500405e-04, 1.79433136537534101e-04, -2.08448758771769422e-04, -1.89466752673463220e-04, -3.16495343152525463e-04, + -4.65119297713267725e-05, -1.06418923164135207e-04, 2.92133315556121309e-05, -6.26522370914165365e-05, -3.80204692959265470e-05, + -3.19351411420031736e-05, -2.69623453745025131e-05, 1.37371381422677307e-04, -2.75022603732538636e-05, -8.32319716531201625e-05, + -1.83373351979320508e-05, 5.83418131216442243e-05, 3.02271302751488504e-05, -4.98112931491525709e-05, 9.55320075053375307e-05, + 5.27885328323068648e-05, 1.74669745949123195e-05, 7.07665598251270749e-06, 7.65295271797020177e-05, -2.16827317655175404e-06, + 2.56158486391027717e-05, 3.90319152054964128e-06, 1.09187600520226411e-05, -7.09932774164822179e-05, -3.10808798303788108e-06, + -1.99276187654574111e-05, 6.66283232503938456e-05, -9.53193663619292649e-05, -1.38192357228852599e-05, -5.06310999643882654e-05, + 5.41699610443037853e-05, -3.01513898130062012e-05, 7.50384806164352122e-06, -2.46089181875213920e-05, 2.59233801595598333e-05, + 3.61281563025534099e-05, 1.03245043482577200e-05, 1.06651433549918202e-06, -2.36670929937189898e-05, 1.18133123540063415e-05, + -2.37752112057859405e-03, 0.00000000000000000e+00, 9.79902373011075313e-04, 0.00000000000000000e+00, 6.24243707435149868e-04, + 5.32552953373556688e-04, -3.43350821058730849e-04, -2.74480805820874235e-04, -2.27192880699002904e-04, 2.78499590851373610e-04, + 2.16286114391411107e-04, -1.60014133917291410e-05, 3.34567174557116290e-04, 1.63861606954495299e-04, -7.32105805604817811e-05, + -2.75173445122268732e-05, -1.63823844717904518e-04, 1.54240508845202994e-04, 2.27247826319914723e-05, -1.25891429989861308e-04, + -7.50300602967604688e-05, 2.19336099049784612e-04, 5.12062944564588537e-05, -1.20931381190694310e-04, -3.93305054302574525e-05, + -1.85764088661301817e-04, 1.26452686799904506e-04, 8.28267314219328091e-05, 1.70060420266698105e-04, 1.85986806711261124e-04, + -1.26597460571993109e-04, -6.99927087500373682e-05, 2.43504463420420004e-04, 8.90929191691563495e-05, -1.08361903761964912e-04, + -1.22129315467521012e-04, 3.69685678194193193e-06, -9.76853026011532927e-06, 2.31262017597801630e-05, 1.13627595483176917e-05, + -4.73528940188713203e-05, -6.48206454745550508e-05, -1.22100888451138691e-06, 7.56468638352087683e-05, -2.53416560145800336e-05, + -1.38940053681318499e-04, 7.20623765471817058e-06, 3.21809048129001281e-05, -2.21024328556184202e-05, -6.64125089630887160e-05, + 3.94708805911000318e-05, 9.71077583953939775e-06, -3.54527000430615696e-05, 3.69577787600789033e-05, 2.78095735286460204e-05, + -5.72103304090500763e-06, -2.29889369505701688e-07, 4.82107116030443131e-05, -2.41508628637585772e-06, -2.63405093477893100e-05, + -5.39352079240862240e-05, 5.49021393227147052e-05, 1.62938702966068904e-05, -3.35135604887079182e-05, -5.53241700444050103e-05, + -3.74072324766078626e-06, 4.09192387408724616e-05, -1.27958514490034509e-05, -1.86071122399451600e-03, 0.00000000000000000e+00, + -4.75292082404548451e-04, 0.00000000000000000e+00, 3.68780932191134698e-04, 5.54191148812023461e-04, 2.46565766805826323e-04, + 3.31614351952607561e-04, -1.71631555193545323e-04, 1.53116472177868300e-04, -3.93962061732021601e-04, -4.67407565386735021e-04, + 3.81580763254471577e-04, 2.04730687941415503e-04, -1.01606503900109209e-04, 2.85959959364757792e-04, -1.79032452140105822e-04, + 1.92416359225170601e-04, -7.84680634606176557e-05, 1.27965049428417914e-04, -8.79129716389746087e-05, 1.11181217880199307e-04, + 9.05309967637526850e-06, 1.00254047693470205e-04, 4.69931316356031836e-05, -1.26891478535794204e-04, -2.36948343468677716e-04, + -4.48140930566895122e-05, 1.56053941255461314e-04, 1.62691879050438606e-04, -3.04275795445205909e-05, 2.34900095260012922e-05, + 1.89834915726008312e-04, 4.41324083801779445e-05, -2.43723672445334893e-06, 2.63792044876342115e-04, 4.15153428121390933e-05, + -1.05194441751740605e-05, 3.07488334573277619e-05, 1.10224518899548499e-04, -4.91642006568435838e-05, -6.09507607897971724e-05, + 2.34553756526172398e-05, -5.48126075903642140e-05, -1.20368960697293707e-05, -1.24150118293778319e-04, -1.48408936527305184e-06, + -2.32711453314438716e-05, -2.44128815133471698e-05, -8.80086425816799928e-05, -6.20023416923870383e-05, 1.39888880163119112e-05, + -2.63313922516788706e-05, 2.90497335887282418e-05, -5.35969666694607321e-05, 7.45670074227807885e-06, 6.05689174479715297e-06, + 4.71747810724217328e-05, -7.45009495718939600e-06, 5.00189732462369597e-05, -4.37607562907335924e-05, 4.81409963763506648e-05, + -2.77590927613943195e-05, 4.52414041552540728e-05, -5.31259473640927006e-04, 0.00000000000000000e+00, -8.52598896055884966e-04, + 0.00000000000000000e+00, -1.34885197765120801e-04, 3.96653458139192421e-05, 3.79863748404974581e-04, 4.72379949916368639e-04, + 3.10022768658648959e-04, 5.69786980729471452e-04, -5.32004027356815690e-04, -5.51946785340620108e-04, 4.75232705602061337e-04, + -1.43688936593265289e-04, -1.34145640806652110e-04, 3.50186859951718285e-04, -9.73995300596363001e-05, 3.44420910592402329e-05, + -7.18080185080251102e-05, 1.60789183521345793e-04, -2.22624413329587016e-05, -1.28193723235865101e-04, -5.86367985071233234e-05, + 1.73808458946174806e-04, 3.30813591969955861e-04, -2.71856805616303913e-05, -3.78174032231158770e-04, -5.90252957383779106e-05, + 8.26749071828692322e-05, 4.95775684062529633e-05, 5.44580124316286832e-05, 4.66596997412812434e-05, 1.38805718688968211e-04, + -2.33571291413536304e-04, 1.03732179389248707e-05, 3.60726661880703256e-04, -1.47507354615690205e-05, -1.19512727220272909e-04, + 1.74914259207988697e-05, 1.47486413543964701e-04, -3.32823665073807436e-05, -1.22842848319823202e-05, 1.43169594952067807e-05, + -7.76973814947431698e-05, -3.88223282922580738e-06, -6.06833041894285847e-05, 1.69396426346393996e-05, -1.68622586139392799e-05, + 2.13089649442872411e-05, -4.32134801386761130e-05, -6.80517923313584582e-05, -7.35601065807071865e-06, 5.38945357647690934e-05, + -1.80635421990123584e-05, -7.24410824853465490e-05, -8.49791200553206016e-06, 2.38648729302909319e-04, 0.00000000000000000e+00, + -1.21834637822591509e-04, 0.00000000000000000e+00, -3.35292268503080285e-04, -2.25765584210752207e-04, 1.20333852013061409e-04, + 8.76160017921376148e-05, 5.77938304508217315e-04, 7.60972878504902238e-04, -1.82272425178899499e-04, -1.60779267929980014e-04, + 5.35448065399970162e-04, -3.79066952306616653e-04, -8.56199550095533123e-05, 6.92585641489698963e-05, -1.77063677568286815e-07, + -6.19787069144851961e-05, -4.12494051966487958e-06, 9.23467471398991294e-06, 2.20656813337354222e-05, -2.68841353591363623e-04, + -4.41569566824339039e-05, 9.39704392249946418e-05, 5.05686186431699705e-04, -1.34069787456886217e-05, -1.24401821560768692e-04, + -3.57022391309666403e-05, 3.18289650058353326e-05, -4.55877181661160831e-05, 1.88308936718896921e-05, 1.10332673498877904e-05, + 8.26712109978732347e-05, -3.60749199807011971e-04, 1.66345821208051797e-05, 1.38102500835173112e-04, -5.00940250071407793e-05, + -1.95402563658848610e-04, -3.17286321063148396e-05, 1.79777030274422993e-05, 7.63370547491521362e-06, -1.10396898961960510e-05, + 3.33369496271408800e-05, -3.04264250781569691e-05, -1.57216726797123306e-04, 0.00000000000000000e+00, 6.59370968572886660e-04, + 0.00000000000000000e+00, -1.58158308265806205e-04, -1.39270436780774621e-05, -1.30148387599806405e-04, -1.89881255738238400e-04, + 3.53165617144957002e-04, 5.52476715941731993e-04, 1.62507460835903910e-04, 1.96382682741124315e-04, 4.95030561024928590e-04, + -2.51538337834093535e-04, 1.01358288830775107e-04, -2.31117761155268212e-04, 1.61393344792953511e-05, 2.99917826599387518e-05, + 7.51186147023420687e-05, -9.84683991244665293e-05, -3.13331160710574486e-05, -1.62522943150101489e-04, -1.23500835514879590e-06, + -1.33566023652081705e-04, 3.97104494240615893e-04, 5.35531200087193626e-06, 2.03178932800896107e-04, 2.04733048314890730e-05, + 1.65109198739017411e-04, 3.56627616721475523e-05, 2.11796830261870299e-05, -2.55894236371568098e-05, -1.17754597691724491e-03, + 0.00000000000000000e+00, 8.07133621695610274e-04, 0.00000000000000000e+00 +}; + +#define ILCHAM 3128 +#define NSTRON 10 +#define NSMAX 31 +#define NMSMAX 31 + +int main (int argc, char * argv[]) +{ + grib_handle * h; + size_t len; + + GRIB_CHECK (((h = grib_handle_new_from_samples (NULL, "lambert_bf_grib2")) == NULL), 0); + GRIB_CHECK (grib_set_long (h, "centre", 85), 0); + len = strlen ("lambert_bf"); + GRIB_CHECK (grib_set_string (h, "gridType", "lambert_bf", &len), 0); + GRIB_CHECK (grib_set_long (h, "biFourierResolutionParameterN", NSMAX), 0); + GRIB_CHECK (grib_set_long (h, "biFourierResolutionParameterM", NMSMAX), 0); + GRIB_CHECK (grib_set_long (h, "biFourierTruncationType", 99) , 0); + GRIB_CHECK (grib_set_double (h, "latitudeOfFirstGridPointInDegrees", 67.9372009520603), 0); + GRIB_CHECK (grib_set_double (h, "longitudeOfFirstGridPointInDegrees", 25.1580207144963), 0); + GRIB_CHECK (grib_set_long (h, "latitudeOfSouthernPoleInDegrees", 0), 0); + GRIB_CHECK (grib_set_long (h, "longitudeOfSouthernPoleInDegrees", 0), 0); + GRIB_CHECK (grib_set_double (h, "LoVInDegrees", 26.6400000000000), 0); + GRIB_CHECK (grib_set_double (h, "Latin1InDegrees", 67.3600000000000), 0); + GRIB_CHECK (grib_set_double (h, "Latin2InDegrees", 67.3600000000000), 0); + GRIB_CHECK (grib_set_long (h, "projectionCentreFlag", 0), 0); + GRIB_CHECK (grib_set_long (h, "bitsPerValue", 16) , 0); + len = strlen ("bifourier_complex"); + GRIB_CHECK (grib_set_string (h, "packingType", "bifourier_complex", &len), 0); + GRIB_CHECK (grib_set_long (h, "biFourierResolutionSubSetParameterN", NSTRON), 0); + GRIB_CHECK (grib_set_long (h, "biFourierResolutionSubSetParameterM", NSTRON), 0); + GRIB_CHECK (grib_set_long (h, "biFourierSubTruncationType", 77) , 0); + GRIB_CHECK (grib_set_long (h, "biFourierDoNotPackAxes", 1), 0); + GRIB_CHECK (grib_set_long (h, "unpackedSubsetPrecision", 2), 0); + GRIB_CHECK (grib_set_long (h, "LxInMetres", 2000), 0); + len = ILCHAM; + GRIB_CHECK (grib_set_double_array (h, "values", values, len), 0); + GRIB_CHECK (grib_handle_delete (h), 0); + + return 0; +} diff --git a/tests/lam_bf.sh b/tests/lam_bf.sh new file mode 100755 index 000000000..728475da9 --- /dev/null +++ b/tests/lam_bf.sh @@ -0,0 +1,13 @@ +#!/bin/sh +# Copyright 2005-2015 ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.sh + +exec $test_dir/lam_bf diff --git a/tests/lam_gp.c b/tests/lam_gp.c new file mode 100644 index 000000000..0bafbe6fa --- /dev/null +++ b/tests/lam_gp.c @@ -0,0 +1,894 @@ +#include +#include +#include +#include + +#include "grib_api.h" + +/* + * Test encoding of grid-point LAM fields + * Test FA conversion to grib_api + * philippe.marguinaud@meteo.fr 02/2016 + */ + +static double values[] = { + 276.857846883478, 276.794176778727, 277.181087123710, 277.271328891367, 277.738150007595, + 277.811501271569, 277.782801498740, 277.720243049346, 277.697362352800, 277.645937156907, + 277.434690429892, 277.479415166828, 277.480779740851, 277.470370683483, 277.466233617218, + 277.519636477424, 277.546507075768, 277.533196530853, 277.638535538066, 277.660223799155, + 277.516239354148, 277.435042994882, 277.233848743540, 277.204873528392, 277.217411121384, + 277.145056043542, 277.359707505178, 277.563426568591, 277.359606573371, 277.302689400583, + 277.135925984483, 277.013670202527, 277.249004656066, 277.362196243717, 277.472882266866, + 277.551374864505, 277.332048151829, 277.879973060166, 277.925942918285, 278.260846010953, + 278.144732099878, 278.206939585072, 277.936934540523, 278.025569678971, 278.307756924958, + 278.369318574429, 278.609267078466, 278.634490902502, 278.686706704875, 278.328553888493, + 278.418908930386, 279.060194431430, 279.114168787979, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 276.922836958812, + 276.932069336471, 277.225397205068, 277.545476457484, 277.807111956190, 277.768185575062, + 277.713814690105, 277.662213334460, 277.653334089351, 277.591821807616, 277.519290878870, + 277.499671640950, 277.471580060430, 277.398162354734, 277.371544952255, 277.453879058484, + 277.474032112632, 277.458747675572, 277.588871038908, 277.540124772655, 277.464264615292, + 277.039835665510, 277.050815441941, 277.165791541588, 277.284327024201, 277.353876090779, + 277.399785414714, 277.512330802008, 277.438449711794, 277.419894070553, 277.165764618769, + 277.034846715507, 277.230872118099, 277.277310155004, 277.272952146249, 277.486209474088, + 277.453656185210, 277.613143953527, 278.070672412350, 278.079989482462, 278.338031969208, + 278.163685044856, 278.214343856183, 278.255744502346, 277.941149161137, 278.165921759503, + 278.022894706983, 278.499780589025, 278.158397461806, 278.611643581705, 278.438079674786, + 278.816122996613, 278.628190436440, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 277.048057829677, 277.280372081890, + 277.423859756998, 277.465672699176, 277.728939006340, 277.726575834584, 277.688480429396, + 277.635385647721, 277.626062350091, 277.604239400215, 277.556926439833, 277.519394378669, + 277.425044031161, 277.318865067295, 277.309205651263, 277.348943116883, 277.361861210203, + 277.430978988228, 277.477408565654, 277.638923535542, 277.418799606607, 277.017513285449, + 276.976808425920, 277.159242736589, 277.315106840602, 277.327868258207, 277.390541905514, + 277.608373786211, 277.473011211489, 277.578037079299, 277.353975261579, 277.253195520645, + 277.219244477693, 277.303161046293, 277.197720889628, 277.568280002996, 277.565774183730, + 278.056333010069, 278.360857981015, 278.182020399473, 278.393376099219, 278.363774312832, + 278.203283980677, 278.146185013281, 278.348861342242, 278.330399393385, 278.059284960522, + 277.920499351734, 278.030061320993, 278.226766351540, 278.217750387710, 278.516389162421, + 278.535938385310, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 277.255920436446, 277.480949345724, 277.444597425498, + 277.647882845088, 277.496111688818, 277.670322939349, 277.765213822002, 277.666760657851, + 277.656928637994, 277.678906056191, 277.667906868059, 277.539641562735, 277.369487702737, + 277.285648882293, 277.326341650870, 277.351600146853, 277.359573895370, 277.493766228910, + 277.649003177440, 277.460872384943, 277.243514998577, 277.056578101319, 277.226617780177, + 277.271740370610, 277.294132332584, 277.308093611741, 277.378433184955, 277.570114302521, + 277.548859645865, 277.723889890260, 277.429263433352, 277.272737053512, 277.398599847739, + 277.309448997716, 277.328344724582, 277.207058029377, 277.696248070705, 277.835043755662, + 278.062452681475, 277.850550227440, 278.265559859820, 278.272872090840, 278.465229599008, + 278.217031341802, 278.386132964535, 278.224365564792, 278.232702192636, 278.099733855522, + 278.082038386312, 278.064057694079, 278.385342869231, 278.700953905968, 278.673157999290, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 277.459327717938, 277.559547836427, 277.422638507574, 277.572825627337, + 277.571463907280, 277.548694860479, 277.544037804342, 277.524653326012, 277.693130140178, + 277.706143234839, 277.497931516767, 277.349914202908, 277.161676307980, 277.258114023397, + 277.410663587516, 277.481076538026, 277.519833710823, 277.631696408897, 277.418308903785, + 277.304804629716, 277.259147844963, 277.382350427133, 277.299040041596, 277.256710875078, + 277.280373232168, 277.342518042564, 277.164290846344, 277.428166532894, 277.401545619979, + 277.739369780501, 277.395945166703, 277.460368035024, 277.476322888924, 277.493513518766, + 277.351824398612, 277.358401183558, 277.509306514214, 278.029530363332, 278.214265489018, + 278.152451178774, 278.452249056059, 278.282135844771, 278.031146456185, 278.126155437803, + 278.340924990343, 278.274408568623, 278.095792700955, 278.045155910991, 278.044971189736, + 278.227690671411, 278.277414153890, 278.322932576059, 278.574745416009, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 277.352885697217, 277.465676965878, 277.313718088585, 277.571636446583, 277.752813057885, + 277.876072319293, 277.600399390414, 277.629804333290, 277.509786900336, 277.350032286595, + 277.710697230771, 277.302689293788, 276.964102591939, 277.129868245471, 277.506377821286, + 277.620243311629, 277.670677617944, 277.590396381881, 277.259332104000, 277.282466682171, + 277.510494889930, 277.420372093899, 277.372440940559, 277.334025248344, 277.133405320679, + 277.432373537602, 277.458193421654, 277.573994485106, 277.560836748035, 277.504546294795, + 277.722963359918, 277.429148743501, 277.415671650080, 277.296250262619, 277.426094729653, + 277.013478567167, 277.173619712680, 277.722720050144, 278.152541665310, 278.471048817117, + 278.595955610324, 278.466217631891, 278.437646585921, 278.321089675788, 278.198112904595, + 277.952153564447, 278.065664545600, 278.357066253341, 277.965448681613, 278.124513612433, + 278.162667811909, 278.277405316586, 278.574537792479, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 277.390479450263, + 277.345673673084, 277.364302907561, 277.605928275352, 277.789929872344, 277.903984493908, + 277.966933216759, 277.912882971090, 277.703988459187, 277.351015681331, 277.674063100141, + 277.408395530420, 277.007259003699, 276.877336007904, 277.057623772846, 277.601455267293, + 277.323874590069, 277.238673158792, 277.337325747808, 277.439493917521, 277.541788857115, + 277.749810750892, 277.278504087019, 277.414256185858, 277.429899941764, 277.493551649852, + 277.511929075685, 277.190651115649, 277.443504438646, 277.605668250438, 277.771466436681, + 277.767262688689, 277.716100034677, 277.618374865972, 277.415460290735, 277.086306373890, + 277.176226842383, 277.650329975958, 277.765271071796, 278.463221024006, 278.702998001410, + 278.624355987396, 278.467009674144, 278.568028046137, 278.284237092204, 278.456297664446, + 278.609188468591, 278.571107283134, 278.248413926530, 278.155161517380, 278.404700226527, + 278.246987177160, 278.091060834030, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 277.419054703888, 277.313454081577, + 277.427414463702, 277.682584699189, 277.791193561005, 277.837885785253, 277.920062626646, + 277.919899324178, 277.689677224346, 277.410500912168, 277.630756408261, 277.629189004816, + 277.397411408199, 277.319060037245, 277.402102256687, 277.322768000649, 277.822242558531, + 277.887351499372, 277.454007146918, 277.676721339532, 277.602004218075, 277.714201570065, + 277.566677175978, 277.587799289763, 277.530615330753, 277.556498697055, 277.452480002766, + 277.522252203614, 277.645085515486, 277.845531596217, 277.946658451859, 277.602481754126, + 277.727335587639, 277.560791900289, 277.284230600351, 277.484662737021, 277.763836962967, + 277.845000815162, 278.010847594804, 278.693344887027, 278.809251065654, 278.723035732378, + 278.424896815390, 278.623465372965, 278.347354282196, 278.788885219380, 278.765666653428, + 278.053095427463, 278.334108537083, 278.163143059112, 278.791210402345, 278.564612083899, + 278.156097707067, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 277.260418446226, 277.335071352700, 277.491938938790, + 277.691206395263, 277.704209378278, 277.669286596309, 277.754719412166, 277.870079071509, + 277.502780644528, 277.754473095834, 277.727974436459, 277.557807112427, 277.336457025286, + 277.383919705566, 277.656951776528, 277.778531969694, 277.546679431981, 277.433886594239, + 277.849054763829, 277.827905512882, 277.852324775739, 277.715592971272, 277.705949179344, + 277.784233780020, 277.513796321220, 277.651505656888, 277.679417351708, 277.712133821933, + 277.640023428435, 277.845573550891, 277.939074922095, 277.983471194163, 277.686692172136, + 277.654194453924, 277.864032570137, 277.868319164885, 277.949388853803, 278.090141829888, + 278.064378565379, 278.473111038064, 278.567543171754, 278.829326294043, 278.294846275015, + 278.860106433048, 278.796593070403, 278.824386010090, 278.760223015153, 278.048034602279, + 278.456786976534, 278.270707527732, 278.883481216381, 278.331828953117, 278.594265837323, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 277.265976322594, 277.170431045594, 277.485489657589, 277.518150163777, + 277.594346099824, 277.525106574839, 277.660446242218, 277.653585064744, 277.344627321906, + 277.549004645704, 277.850802344347, 277.583257392330, 277.353933834212, 277.483162324227, + 277.802093742320, 277.620873269675, 277.778845766219, 277.705264213562, 277.541346709049, + 277.429472445857, 277.832567758240, 277.874496054447, 277.713531133238, 277.960569830321, + 277.669206881492, 277.755260958946, 277.586916719101, 277.841135564379, 277.718811273917, + 277.786742393662, 277.829134182740, 277.760954990401, 277.727290357312, 277.802718821044, + 277.926844650633, 277.940517920966, 277.860498676370, 277.948632515039, 278.482136788291, + 278.576025918865, 278.759903750249, 278.682290037298, 278.803929269590, 278.813600952805, + 278.879253548731, 278.646151177629, 278.776315233178, 278.693319468861, 278.379375494188, + 278.648541321932, 278.852157864598, 278.997643614525, 279.027698942229, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 277.366680878019, 277.381150787692, 277.486313780854, 277.312232782158, 277.401101882668, + 277.567697032357, 277.761418956830, 277.631564641376, 277.355216207498, 277.579622423646, + 277.946803922538, 277.745864795866, 277.554670208171, 277.653554412702, 277.886277698790, + 277.865648942958, 277.749235588755, 277.653323813329, 277.549350491474, 277.771809470937, + 277.894339690909, 277.969462462647, 278.118951046477, 278.108173032796, 277.923612184096, + 277.725656808996, 277.917004359488, 278.013510348155, 277.903413295852, 277.848269398192, + 277.837731396906, 277.733960635088, 277.766101554254, 277.546687146201, 277.856867293302, + 277.905478550194, 277.736223835135, 278.472986192106, 278.717220540209, 278.760841954155, + 278.638659440517, 278.681901711759, 278.363012975511, 278.807884722018, 278.838462052377, + 278.928798765744, 278.952453872397, 278.865733112592, 278.729566964511, 278.884998970494, + 278.942907006798, 278.960762454434, 278.688569887665, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 277.591550421937, + 277.499030877279, 277.305275168613, 277.541796080983, 277.195139366615, 277.331665964937, + 277.445626505916, 277.215335680856, 277.530907774801, 277.843341282378, 277.963214149135, + 277.927219319293, 277.797424178773, 277.813442210719, 277.933664495794, 277.858047474598, + 277.696277323311, 277.361473125741, 277.479932829295, 277.389415841575, 277.553020377427, + 277.924940171380, 278.159459379598, 278.037019105043, 277.914055069608, 277.647200588818, + 277.916937939818, 277.909534469069, 277.749633166238, 277.904591816623, 277.826866398276, + 277.903480594745, 277.699082807175, 277.688363481753, 277.605172407277, 277.842865865160, + 278.021216292518, 278.414517122505, 278.681556989763, 278.680320091635, 278.574125022233, + 278.370197434153, 278.734504756703, 278.493143759543, 278.779235286269, 278.935546444982, + 278.663643683160, 278.899996705338, 278.900791563301, 278.879832866026, 278.858705900529, + 278.815825789004, 278.824798215775, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 277.567216721718, 277.522475814565, + 277.303456918119, 277.208997427907, 277.424224609638, 277.567326891009, 277.516826173608, + 277.498907180864, 277.469773038402, 277.832555441150, 277.982833034908, 278.034185232461, + 277.939076079863, 277.902634532238, 277.970739026974, 277.895772802147, 277.735591951345, + 277.571305898374, 277.401061840836, 277.802603400487, 277.964968147081, 278.120946309288, + 278.120357306337, 278.027951015641, 277.674224913903, 277.745718315661, 277.676284056601, + 277.869144896292, 277.970562609159, 277.897871250900, 277.988896836592, 277.828464108029, + 277.787944526233, 277.592034339979, 277.887975166605, 277.726333366592, 278.031409362000, + 278.341449368467, 278.429430372404, 278.651974989787, 278.066148305173, 278.615426251337, + 278.658109595447, 278.764842621618, 278.797171571925, 278.930322025553, 278.589836306622, + 278.878563250804, 278.928365819420, 278.890061138998, 278.711334675770, 278.384119162997, + 278.646351915830, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 277.663311094642, 277.507469698425, 277.389870268662, + 277.406179041586, 277.420737084474, 277.458518864884, 277.735139471721, 277.538528827908, + 277.851206036120, 277.883910964943, 277.957774069964, 277.977068942386, 277.944430734847, + 277.548495261116, 277.973300201287, 277.918203113366, 277.766347699266, 277.602195991588, + 277.779284913253, 277.876179934937, 277.970720881483, 278.083009243663, 278.104572434708, + 277.809070170494, 277.861807626314, 277.891365545407, 277.598480819644, 277.808955771559, + 277.877037325444, 277.848094780278, 277.931719704904, 277.914973085381, 277.584619210738, + 277.926657140828, 278.195616408992, 278.085463190691, 277.980335449674, 278.380371866981, + 278.427298049019, 278.662228114450, 278.596051250816, 278.616744598565, 278.803046455795, + 278.791647475311, 278.497809355494, 278.866809060531, 278.869411961323, 278.852587248998, + 278.873678034993, 278.840736102112, 278.718548564065, 278.079520049554, 278.242255144442, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 277.663037557399, 277.570818671989, 277.407747457760, 277.335813345664, + 277.408696086859, 277.372137478768, 277.687262360450, 277.795853080682, 277.908241927909, + 277.869637561962, 277.892224175058, 277.606701811400, 277.922429208801, 277.536273731865, + 277.514854228159, 277.491556490133, 277.238066098239, 277.372640648916, 277.841348851264, + 277.929444260057, 277.976213790096, 278.044032057611, 277.835719155503, 277.767503822122, + 277.843943315539, 277.920171435982, 277.647907981291, 277.916193738411, 277.839013360636, + 277.803033017271, 277.864319377224, 277.746027317625, 277.651770176824, 278.063583343182, + 278.140685366536, 278.122090447834, 278.051809880199, 278.142408676546, 278.306266717218, + 278.732451854741, 278.748488287575, 278.749619678915, 278.800360568621, 278.706276462243, + 278.492046737934, 278.862935429038, 278.836729260372, 278.789661732480, 278.792523085067, + 278.785266852082, 278.004813712433, 278.206206534037, 278.268595922962, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 277.655861325454, 277.470105519071, 277.399821904234, 277.079715748819, 277.206531740859, + 277.468381791645, 277.363994499400, 277.823385911566, 277.933105323249, 277.866664229846, + 277.852775583871, 277.877579704086, 277.963875663629, 277.928717010393, 277.828398792983, + 277.296954832861, 277.401013285608, 277.627465823518, 277.658221668447, 277.774377222669, + 277.868027943365, 278.023351410815, 277.746712993709, 278.009216578254, 277.993159001656, + 277.680853664988, 277.661928822189, 277.876061141195, 277.861750611024, 277.598049579725, + 277.828212743813, 277.655101339813, 277.951762031896, 277.838019817885, 278.179159164042, + 278.237226454496, 278.178567686687, 278.271357845148, 278.743948910507, 278.860705502890, + 278.683448271915, 278.784519721920, 278.823631988977, 278.720806055127, 278.798185740840, + 278.751147075398, 278.657468304086, 278.445253830843, 278.647530368995, 278.649158962300, + 278.320344550426, 278.521904549617, 278.418647841440, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 277.402768933310, + 277.337648751023, 277.288997139047, 277.307430980466, 277.273543109168, 277.307022035080, + 277.641453325741, 277.844770093515, 277.953627149863, 277.942556409526, 278.215884948157, + 277.975149183501, 277.975145850398, 277.900981141501, 277.505402827533, 277.362760181571, + 277.548236940679, 277.664353875572, 277.502568484867, 277.584445002441, 277.713270317726, + 277.965355998582, 277.690792988212, 278.006179713121, 278.001384579859, 277.828691144649, + 277.561216736042, 277.889988864492, 277.754326137754, 277.904050492162, 277.709121972134, + 277.690236890821, 278.007302124024, 278.153784599132, 278.279221305941, 278.375074001404, + 278.132932590898, 278.527166347114, 278.731939115244, 278.786940471844, 278.668914201410, + 278.548949997938, 278.592784358004, 278.703220908555, 278.607776530910, 278.504228677905, + 278.163645789480, 278.248484564569, 278.501193898172, 278.642560007634, 278.370053886907, + 278.408249992376, 278.403262082509, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 277.207648756580, 277.331137219044, + 277.479780517975, 277.377551184413, 277.272600399963, 277.500350726646, 277.705863349177, + 277.864606993211, 277.966389026012, 278.042544067771, 278.322542195089, 278.031457007641, + 277.941373758310, 277.636410155692, 277.858031016031, 277.252349029484, 277.532160327080, + 277.374767480318, 277.358447349268, 277.596000095572, 277.677202591650, 277.510417183120, + 277.771541403309, 277.999812504068, 277.710912956346, 277.651416447672, 277.782845548063, + 277.920184623648, 278.100817677521, 277.830890386789, 277.549163570987, 277.924816153170, + 277.939889612067, 278.226842544695, 278.334446154499, 278.384165815707, 278.595962695245, + 278.279446869139, 278.639495704751, 278.773812076980, 278.436948614430, 278.920203762416, + 278.841422131634, 278.427836855974, 278.741570912682, 278.508545454593, 278.339874209391, + 278.557063084230, 278.416922724100, 278.706534660227, 278.334083779964, 278.643830203774, + 278.639844363161, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 277.374416670460, 277.500945802563, 277.426407890967, + 277.396874709479, 277.318086237064, 277.616856624914, 277.899994797892, 277.698238913389, + 277.977172419143, 278.341279558064, 278.388060688379, 278.293360918814, 277.904418999468, + 277.876108809024, 277.943923864864, 277.721133375911, 277.442202818399, 277.253739466136, + 277.509607250232, 277.667492305596, 277.591852155885, 277.835292482825, 277.968936425109, + 277.955535101385, 277.936720370208, 277.583707892174, 277.868800957519, 277.945079514213, + 278.033236526786, 277.903343895031, 278.056619912872, 278.157071041598, 278.283239136885, + 278.176795659042, 278.214399736990, 278.377534497257, 278.505800329270, 278.397309694119, + 278.669295404261, 278.768294086585, 278.677030612244, 278.800406330589, 278.667560270694, + 278.786628105936, 278.570032149640, 278.492115471478, 278.447513823625, 278.631423391505, + 278.397821811388, 278.495161908060, 278.272485916042, 278.556447973070, 278.677966110168, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 277.317281721922, 277.505968584604, 277.114499942864, 277.204273695860, + 277.333957324466, 277.623957317731, 277.644603479615, 278.000151120404, 277.641642354499, + 278.324675421874, 278.417063688056, 278.331839246209, 277.968470256881, 277.964794190107, + 278.037060222090, 277.649723985672, 277.168203186638, 277.143187050201, 277.273553266251, + 277.552393261269, 277.634517104997, 277.802271465379, 277.881739212292, 277.940910603072, + 277.879001692426, 277.745720318329, 277.913410218013, 278.101729803357, 277.802314274772, + 277.915739600581, 278.217977656900, 278.416638900017, 278.379485432682, 278.328422581059, + 278.343399135787, 278.412171676156, 278.436343517073, 278.543604914389, 278.063377717316, + 278.540875146925, 278.533646068312, 278.735677942685, 278.780712168233, 278.761366160987, + 278.038154721897, 277.866532120266, 278.165321893048, 278.680388296020, 278.573200036194, + 278.586831345728, 278.488241868816, 278.717947283378, 278.836911122056, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 277.480116247201, 277.368756132519, 277.384832941860, 277.308509322704, 277.345442414908, + 277.590676884641, 277.990539450091, 278.008983298761, 277.523442305010, 277.718274275941, + 277.715931444292, 277.879291396559, 277.831199273422, 277.864571039565, 277.936717108059, + 277.383879543378, 277.479777256307, 277.499848020363, 277.547859827789, 277.305533315021, + 277.482950172282, 277.774397519738, 277.898868170053, 277.817079364159, 277.711025079660, + 277.980058933637, 278.099658611097, 278.100938650431, 278.142922246411, 277.996704723186, + 278.305020752925, 278.407688919361, 278.163649151564, 278.023096003471, 278.332110722164, + 278.268480918882, 278.421591670262, 278.546119434891, 278.568382938671, 278.587036101537, + 278.647194694244, 278.632463274801, 278.809178187614, 278.560416104309, 278.581259006153, + 278.321975280033, 278.397446094076, 278.464681382615, 278.596423306474, 278.667946458021, + 278.738020433360, 278.814420875995, 279.011631604617, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 277.428218736626, + 277.508626172290, 277.415642785172, 277.326956949725, 277.422044581352, 277.628551397821, + 278.032568055647, 277.613158572540, 277.713901836099, 277.885738420719, 277.917749048996, + 278.013884830796, 277.837463066963, 278.076080916673, 277.808832386222, 277.917564486129, + 277.577955670404, 277.241692902309, 277.577689403392, 277.226372942221, 277.416783611213, + 277.772320420235, 277.599211176025, 277.836487250781, 277.809253831983, 277.951052110206, + 278.127684219100, 277.805451324327, 278.205782665344, 277.865170697282, 278.375832904428, + 278.485020997838, 278.294257990030, 277.778871781181, 278.041861178526, 278.230259905805, + 278.579538089333, 278.512225093511, 278.620858449128, 278.484717004610, 278.559119647309, + 278.617542855681, 278.820763331162, 278.736385000030, 278.489854683578, 278.188909713201, + 278.004895490409, 278.007836877641, 278.638253545765, 278.730478954238, 278.787710783790, + 278.859125519494, 279.227392202470, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 277.393891145112, 277.465694686045, + 277.467507921517, 277.411878635866, 277.504059151580, 277.630651160882, 277.879970074861, + 277.995167439470, 277.902552985162, 277.839877260391, 277.886479575329, 277.964201298207, + 277.748472501319, 278.029116825528, 278.009583787838, 277.934526840383, 277.918798670404, + 277.415532843179, 277.226805056122, 277.387098345780, 277.370489382575, 277.592402088486, + 277.700296833394, 277.892605230371, 277.891485508185, 278.129626663091, 278.237884596150, + 278.280404041963, 278.283057722739, 278.176984809500, 278.428645957507, 278.109976506484, + 278.299865428307, 277.995343116520, 277.977547389843, 278.172188036825, 278.514038655551, + 278.675018218984, 278.625249773115, 278.608351762487, 278.536197132141, 278.726854763747, + 278.805234471385, 278.674105241850, 278.663153403020, 278.298350908914, 278.124861199903, + 278.252964651486, 278.482059693182, 278.696680548966, 278.654309837275, 278.837647755382, + 278.841089485443, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 277.328655950263, 277.427619472960, 277.487446231366, + 277.482177271494, 277.494902394691, 277.591252248805, 277.971747475921, 278.009447854320, + 277.958400013211, 277.920394743774, 277.910344201103, 277.904280958818, 277.937158186883, + 278.076707899491, 278.062378531395, 277.668974757625, 277.800233651596, 277.541009600309, + 277.635857852503, 277.317816179233, 277.324195107430, 277.304573477618, 277.583966858675, + 277.801468375244, 277.858184963214, 278.015052891651, 278.279565568836, 278.150440976593, + 278.333103904681, 278.001182976533, 278.378488809734, 278.398697539971, 278.106032442229, + 277.965961371387, 278.143415892015, 278.377058446346, 278.574510298617, 278.436449113920, + 278.556672883167, 278.474960861679, 277.671139137360, 278.608670196079, 278.823152806552, + 278.860633331916, 278.712151986816, 278.295366943143, 277.973512496151, 278.147084138199, + 278.272905044223, 278.608690016513, 278.742172545861, 278.836415342435, 278.950088390739, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 277.310255947307, 277.438715269565, 277.535027802511, 277.514844555789, + 277.462658101701, 277.525339149085, 277.905885035111, 278.029200074722, 278.012440418427, + 277.996696426728, 277.957260620693, 277.882273913448, 277.923722117905, 278.057432597146, + 278.044128097293, 277.761271445925, 277.825323905342, 277.691879001328, 277.446628829196, + 277.285529192993, 277.207992853587, 277.564191085190, 277.712353241969, 277.873266532172, + 278.065423477158, 278.272705886866, 278.158741722804, 278.295227598450, 278.196699266996, + 278.353184502646, 278.349997851807, 278.141054038599, 277.886475692701, 277.859485979835, + 277.988073922406, 278.056957014442, 278.165448109257, 278.437202004743, 278.532793916627, + 278.729865755553, 278.336824160806, 278.305882985596, 278.713096825648, 278.851216364801, + 278.766735587507, 278.187401602110, 277.936089073750, 278.098752788839, 278.239953058972, + 278.622711192950, 278.843801280644, 278.884179584854, 278.970925282742, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 277.333993153785, 277.421151644708, 277.494771266272, 277.504859778772, 277.471450172707, + 277.495380050697, 277.897156708496, 278.087047727013, 278.045437799738, 278.056224065926, + 278.016178427298, 277.909517544432, 277.875464078132, 277.670207024597, 277.846114070057, + 277.728674807606, 277.481683080213, 277.678434290214, 277.452220611572, 277.118933743421, + 277.289809580767, 277.553585984918, 277.846040916297, 277.958533555517, 277.851453386475, + 277.929222688602, 278.241588928175, 278.028359727517, 278.357330703968, 278.540247369890, + 278.402603488606, 278.262877702620, 278.294646895428, 278.106029411922, 277.786973188420, + 277.901937357612, 278.009410152606, 278.354845055124, 278.644262693781, 278.840216526960, + 278.726204045146, 278.600937232653, 278.803160024776, 278.814239641429, 278.406107089989, + 278.204915060477, 278.086114594041, 277.967943887986, 278.030839062421, 278.631386341730, + 278.299910112812, 278.884560848832, 278.886180066033, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 277.403818020342, + 277.385736612011, 277.419079763626, 277.484883608931, 277.520716730724, 277.513550730617, + 277.891587970187, 278.087015712643, 278.064211437361, 278.083756882686, 278.081608204113, + 278.004930191931, 277.667983116988, 277.465515703008, 277.770465817560, 277.486273012311, + 277.812487190729, 277.521348154187, 277.263007792215, 277.559643310698, 277.428266858300, + 277.713431147430, 277.934927582205, 278.100297973144, 278.141264584283, 278.086993250781, + 278.379658327306, 278.359962783622, 278.333521305086, 278.570844647226, 278.406928088404, + 278.423636196882, 278.392152949565, 278.201452070097, 277.856477990354, 277.873435248789, + 278.096769778375, 278.407680402316, 278.908043981651, 278.827575506572, 278.712139062362, + 278.769591044403, 278.756261553376, 278.826156376636, 278.419163229658, 278.090389246096, + 278.124356160438, 278.035593626588, 278.254910218263, 277.366924718560, 278.253233151469, + 278.902280750162, 279.023193013234, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 277.489905843838, 277.288144403828, + 277.451382178926, 277.543372549140, 277.562640697184, 277.535439380058, 277.787699174599, + 277.995109516110, 278.012353528589, 278.018214990669, 278.026842232206, 278.025758889394, + 278.001468911932, 277.958981418954, 277.934824068020, 277.751018859661, 277.513289938194, + 277.478190521822, 277.696713037172, 277.504466132445, 277.486066884529, 277.853056781128, + 278.077295875773, 278.234774297493, 278.327662456752, 278.433621081338, 278.296684198791, + 278.342578057961, 278.285379040344, 277.983925074627, 278.248926266098, 278.525007446921, + 278.445876128392, 278.104398493173, 277.910536085917, 277.940945008878, 278.081826796893, + 278.529637105590, 278.698715957456, 278.794762804276, 278.861716433298, 278.335244079482, + 278.692137237630, 278.680804581213, 278.556629862749, 278.398770705898, 278.455259276313, + 278.292491405216, 278.409341863253, 278.567127873446, 278.775114227671, 278.952795140027, + 279.084767747687, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 277.524648375830, 277.496311267119, 277.564912458774, + 277.619013556894, 277.606746819707, 277.595920519719, 277.854151971529, 278.023987432708, + 278.002073841870, 277.986021680999, 278.024941876269, 278.000914649286, 277.592433020840, + 277.681860660305, 277.885631704720, 277.778259318705, 277.871014021210, 277.876428015559, + 277.788723284443, 277.787820645805, 277.938530551964, 277.864376078717, 278.173275923391, + 278.289334853041, 278.451226379450, 278.501430038586, 278.374869508469, 278.453566275875, + 278.262940769041, 278.201339865362, 278.504357434437, 278.550458514972, 278.415280015529, + 278.309083469218, 278.099364666955, 278.034272070086, 278.181290664566, 278.418559586295, + 278.627322595506, 278.729885168807, 278.788171788983, 278.676468137618, 278.430465953748, + 278.583736392926, 278.738818934276, 278.497103463576, 278.513281650723, 278.121679354076, + 278.516294602332, 278.829577561129, 278.956682360007, 279.057955060579, 279.348107461088, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 277.474572686648, 277.620526101819, 277.579876191216, 277.360462826964, + 277.549474136816, 277.588274409193, 277.894949427885, 278.083728110620, 277.555347984217, + 277.733247247895, 278.015445953589, 277.664549184972, 277.226566090387, 277.319835583899, + 277.669759532369, 277.815087621214, 277.874161852679, 278.107783063761, 278.140316595456, + 278.161088443851, 278.102908173169, 278.119213950167, 278.224356967513, 278.368545269317, + 278.424386685907, 278.174769159603, 278.434721663051, 278.475700763337, 278.510069020504, + 278.551175436030, 278.571361830045, 278.638092447369, 278.646605205673, 278.513270253124, + 278.141327144780, 278.115950680075, 278.337373363097, 278.274464616686, 278.499148651879, + 278.595423351542, 278.569133302757, 278.443504364184, 278.470116786663, 278.405474202063, + 278.476174607142, 278.351734796539, 278.057044240619, 278.525864307774, 278.636236054564, + 278.673533956426, 278.958480628853, 279.107513277297, 279.177226197697, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 277.580570122543, 277.634318472725, 277.659616485035, 277.618057346549, 277.522030659488, + 277.362267071782, 277.372186333198, 278.055229170801, 277.784391394722, 277.537574683026, + 277.784340466299, 277.547947537627, 277.451990151210, 277.480643933265, 277.666856164943, + 277.711808172746, 277.673179528355, 278.161015825933, 277.956039470577, 278.147107822033, + 277.923934558538, 278.104047544295, 277.992356939665, 278.206672410603, 278.508947854374, + 278.256305068195, 278.356204246512, 278.556714187128, 278.604795250140, 278.664440436865, + 278.766423700238, 278.736535640997, 278.720042846867, 278.499145050840, 278.185061618328, + 278.500779492250, 278.288933571022, 278.296811610179, 278.411719697789, 278.517980608444, + 278.463145591579, 278.387209307015, 278.498542676419, 278.586457379716, 278.312529862807, + 278.273753392221, 278.452376606509, 278.515187531602, 278.424686213262, 278.745884182673, + 279.143006916710, 278.919075152226, 279.321139034238, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 277.662378493687, + 277.678435934163, 277.662375895032, 277.591158494953, 277.510569010252, 277.571350359624, + 277.754121208130, 277.990973977522, 277.757628494100, 277.561287021943, 277.486634316690, + 277.525042945477, 277.532619439937, 277.572471674363, 277.443489464657, 277.644319445620, + 277.665981899947, 278.128702193914, 278.134993079919, 277.939643867877, 277.829674444778, + 277.920407262541, 278.225109521812, 278.454420846245, 278.335636048648, 278.439755866968, + 278.556282205556, 278.641783528936, 278.681789272875, 278.705946366072, 278.807551296203, + 278.775139246657, 278.816740548483, 278.723779732785, 278.140623274423, 278.551611396458, + 278.438468292334, 278.371046387243, 278.432387336449, 278.271114366293, 278.280713350360, + 278.328592293660, 278.509010393596, 278.315046309223, 278.168349319322, 278.279893722304, + 278.388489929202, 278.028546414610, 278.067008312878, 278.735603677916, 278.875197099938, + 278.916380807791, 279.081185555734, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 277.675564771386, 277.635443490043, + 277.555593388636, 277.474215655524, 277.508785537502, 277.559272826965, 277.898963108355, + 278.160478537993, 277.698446328836, 277.535506294291, 277.650670399939, 277.713715654254, + 277.734628640441, 277.634344419146, 277.955083825013, 277.839312734512, 278.032298048669, + 277.878980044522, 277.940977547635, 278.228734022884, 278.183322722407, 278.317956053497, + 278.223938712345, 278.281454807630, 278.286552318883, 278.286369796342, 278.414024043537, + 278.659360323843, 278.716814326172, 278.768624030203, 278.839142757595, 278.825723621249, + 278.854881582904, 278.492476448520, 278.560515417031, 278.575788272122, 278.498507193087, + 278.406864865871, 278.466947148140, 278.325092661631, 278.469051212641, 278.408787619500, + 278.661902048190, 278.661367318075, 278.459305901808, 278.222284106910, 278.377818887784, + 277.959327267209, 278.623834307258, 278.738685964726, 278.800554549259, 278.851954436327, + 278.995254298110, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 277.584969222118, 277.627926693726, 277.432600717237, + 277.459047042982, 277.597393070604, 277.234297430406, 277.627802486716, 277.768761653507, + 277.858521156621, 277.718058564950, 277.536424253963, 277.886264022321, 277.953425182639, + 277.898146408245, 277.845543290783, 278.043517097872, 278.101299101003, 278.285342963779, + 278.272056517909, 277.993274994819, 277.857694108392, 278.387036994248, 278.124588570184, + 278.166963674206, 278.394923902234, 278.402876708228, 277.959213287923, 278.570898673058, + 278.714369994443, 278.790925545959, 278.865460063705, 278.887653108598, 278.925165577904, + 278.445683950808, 278.454662353423, 278.661881572607, 278.503970146357, 278.416849170500, + 278.313604733026, 278.551157387306, 278.536725681615, 278.621164456571, 278.693420303848, + 278.659085456184, 278.410157301715, 278.248100222314, 278.068519937287, 277.489258886793, + 278.582901560003, 278.758730417454, 278.753965383538, 278.760787016072, 279.095432709613, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 277.617881541072, 277.711309115784, 277.528121492641, 277.692656014265, + 277.729855515134, 277.324286569399, 277.806867446539, 277.771307124788, 277.941974315568, + 277.793422663721, 277.560140843400, 277.640329086171, 277.719016393704, 277.775996718354, + 277.776543735559, 278.069109429862, 278.047555848040, 278.042547866743, 277.879970814221, + 278.078945404616, 278.172068463404, 278.338754643149, 278.107330216076, 278.112910048865, + 278.445453513808, 278.413972889685, 278.281435948761, 278.688102249953, 278.748755950831, + 278.825775954851, 278.864385587829, 278.887954649503, 278.923518570963, 278.497911197741, + 278.577311671993, 278.567434824410, 278.538279003744, 278.579915443113, 278.528959489854, + 278.497061723077, 278.590410175821, 278.685518588178, 278.714343026087, 278.633658175898, + 278.394357807741, 278.239312017157, 278.085722164932, 278.380059590956, 278.739705486505, + 278.694694263682, 278.672923745762, 278.696715687286, 278.853484672915, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 277.864490745271, 277.943292827263, 277.719654098130, 277.620485639589, 277.472319039130, + 277.693129006556, 278.133689973093, 277.965457344363, 278.104287602920, 277.823621279948, + 277.618839688350, 277.615190026184, 277.755976640115, 277.813120706528, 277.967931066943, + 277.982623081629, 277.997140146694, 277.975617671251, 278.039568336506, 277.889611169291, + 278.218105661708, 278.124968954386, 278.376454955636, 278.278665136291, 278.301183298592, + 278.397428714062, 278.196778796572, 278.746656377329, 278.846907930532, 278.786561698973, + 278.841304821452, 278.874397654021, 278.909276839009, 278.143937356126, 278.097256838341, + 278.545815137404, 278.494309833488, 278.700417405390, 278.612579318198, 278.560830208376, + 278.548054206682, 278.619008303868, 278.609079484424, 278.483923041726, 278.208681314237, + 278.090402297370, 278.747716499947, 278.515614144343, 278.526325760542, 278.605377647849, + 278.717274877437, 278.819420463325, 278.599577926182, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 278.068675398310, + 277.997973826578, 277.749167591392, 277.971702730095, 277.895766091276, 277.766323744104, + 278.114006780512, 278.215465587629, 277.865744497808, 277.621846139857, 277.619176720160, + 277.665176866961, 277.892488116900, 277.825831734535, 277.991463449834, 277.928833353682, + 277.746440198884, 277.792686927302, 277.910135077567, 277.533121937113, 278.131357931757, + 278.388181942261, 278.402417692803, 278.227304284300, 278.415814342073, 278.378254025897, + 278.601248279164, 278.758242092388, 278.847426423313, 278.280248973563, 278.725834255314, + 278.842186363034, 278.868778923155, 278.494225795144, 278.020128379151, 278.679498884784, + 278.912318616850, 278.814308937895, 278.701152379232, 278.573422817796, 278.532102069194, + 278.542072630317, 278.495785291661, 278.388540928046, 277.931685199925, 278.182962322534, + 278.499946233316, 278.539211829192, 278.586336069633, 278.553089371418, 278.596056981041, + 278.533478404021, 278.457299600740, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 278.084632811174, 277.820012443785, + 277.847308696263, 277.849503278643, 277.798568623574, 277.797575835420, 278.095663099731, + 278.176160746854, 278.055153965908, 277.658857926577, 277.600990658349, 277.654026836536, + 277.704990323093, 277.793048321917, 277.910121578336, 277.820873697740, 277.745501713345, + 277.917800418041, 277.944391515021, 278.049145512055, 278.043694650275, 278.359223099294, + 278.070771695770, 278.214994954607, 278.330759821265, 278.205028068094, 278.559361787443, + 278.733217829340, 278.744268100279, 278.596208016795, 278.640483841563, 278.694916381717, + 278.907613386036, 278.818024141397, 278.832740735832, 278.864929258857, 279.066035941021, + 278.954370093400, 278.808689512194, 278.608053707239, 278.495744514278, 278.455081259502, + 278.372791655716, 278.141900258419, 278.157538472382, 278.129509127672, 278.226019505944, + 278.517786152116, 278.439174014992, 278.709414812548, 278.622228174999, 278.479038464346, + 278.411419063810, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 278.059317675418, 277.775909541424, 277.981685147100, + 277.820433102725, 277.757691649352, 277.791125337952, 278.114244862593, 278.017847302545, + 277.739587601083, 277.595204498445, 277.444481155752, 277.508867798333, 277.654580807842, + 277.801555631030, 277.946216001618, 277.717518898982, 277.766353468943, 277.682654248428, + 277.981754049258, 278.135151366502, 278.237042418896, 278.307870507241, 278.340706625625, + 278.321035354200, 278.320273358697, 278.158571181206, 278.405855009476, 278.698752162175, + 278.489714021957, 278.447399946515, 278.208281541154, 278.274999857765, 278.742819250719, + 278.267292067544, 278.472633364801, 278.954199073712, 278.507525942737, 278.740647038251, + 278.712056316088, 278.578495872832, 278.539513494423, 278.291124747294, 278.285971725264, + 278.217669844021, 278.204961536595, 278.111539468452, 277.987196715585, 278.301219174750, + 278.308770143463, 278.450474529455, 278.387913656980, 278.345354979068, 278.308192795967, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 278.078766967738, 278.054694472586, 277.996546131957, 277.478107514078, + 277.498293431515, 277.439272646630, 278.170812997380, 278.031766350648, 277.926719630068, + 277.660631490707, 277.405466505229, 277.448131221500, 277.639980374018, 277.771980499881, + 277.699632610951, 277.872363280302, 277.869398539167, 277.927769742648, 277.856196077938, + 278.052767006803, 278.215030316361, 277.961917700862, 278.291818910231, 278.337805197442, + 278.117323423329, 278.455733028684, 278.701018948664, 278.676322213600, 278.350822146256, + 278.266243351366, 278.328051517560, 278.614915559626, 278.558300997375, 278.813314535584, + 278.881108562772, 278.123693523522, 278.802821050470, 278.781438747715, 278.621781876457, + 278.564387365762, 278.583461368131, 278.350036130682, 278.383351889379, 278.383019058144, + 278.217555758541, 278.167422809838, 278.238477919987, 278.226153636247, 278.084761209123, + 278.088484041540, 278.083492218972, 278.205027655804, 278.230216899737, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 278.045557859900, 277.849040307617, 277.906197759880, 277.593465692124, 277.699758481137, + 277.871410461793, 278.058125626538, 278.204525836660, 277.952696685466, 277.738482364071, + 277.391817333672, 277.414211293355, 277.713291394110, 277.795254016927, 277.757654239367, + 277.707136929518, 277.820516499087, 277.833903133206, 277.958888974124, 277.727592050621, + 277.979297315556, 278.041516057377, 278.241728050372, 278.352662301885, 278.378421828891, + 278.668011089711, 278.720413573120, 278.293463018845, 278.471858803908, 278.456120759094, + 278.451834597551, 278.400966141086, 278.228702595541, 278.199778173421, 278.229599019782, + 278.763504882934, 278.797467161442, 278.406340958912, 278.639263357618, 278.738466024170, + 278.356147734832, 278.377301134964, 278.324739430270, 278.365219303220, 278.277074392752, + 278.246691447173, 278.325438536989, 278.410510194260, 278.004569449865, 277.972537483973, + 277.956821946510, 278.172942728027, 278.345344049598, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 277.996969175390, + 277.862497775047, 277.649762377272, 277.559149409384, 277.580356760509, 277.718009367429, + 278.068756822897, 277.878009666029, 277.969360198421, 277.610090666218, 277.828347857057, + 277.544325721216, 277.732583265551, 278.116016214294, 277.972299696618, 277.687262934771, + 277.957182102556, 277.863999567218, 278.051999720662, 278.158060596001, 278.155762387840, + 278.127890904723, 278.223511374158, 278.356916537157, 278.639719890896, 278.714037786705, + 278.558389050067, 278.315362526995, 278.636748281842, 278.421360309160, 278.615746331257, + 278.298886265158, 278.533659911339, 278.333792298766, 278.643055170670, 278.858025832867, + 279.020835079354, 278.870273814320, 278.740600676717, 278.482283444293, 278.534910048501, + 278.346778954967, 278.353117018506, 278.419908994646, 278.281125729824, 278.285144148911, + 278.365767158905, 278.333351670498, 277.972629892376, 277.989686782478, 278.095826308077, + 278.302698360631, 278.382668003966, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 277.875713517719, 277.634128413762, + 277.832973471346, 277.448621515103, 277.593144967346, 277.620070785560, 278.022268231048, + 277.650661530718, 277.728550931249, 277.789574269136, 277.607135652596, 277.558983827518, + 277.867823445271, 277.980868124118, 278.152155038418, 277.872425545108, 278.032213134824, + 278.055596269546, 277.794984263919, 277.846180947964, 278.137493702594, 278.095071965260, + 278.130969913741, 278.103726648322, 278.796162214483, 278.772300848655, 278.550498461136, + 278.394793765962, 278.623206154742, 278.611024899396, 278.578628218960, 278.276590748045, + 278.468413343561, 278.450779339504, 278.554459701664, 278.806252974651, 279.013699273923, + 278.748514001816, 278.788419863602, 278.642315613660, 278.454524896995, 278.491218667764, + 278.463773729676, 278.435969444734, 278.300796479766, 278.136749416946, 278.373140364489, + 278.132948804942, 278.027912210990, 278.148274414281, 278.336173789580, 278.280453796923, + 278.416601405752, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 277.958466871634, 277.914274026264, 277.771935237925, + 277.604840373088, 277.681191841525, 277.734814857704, 277.836253334677, 277.790546207519, + 277.679698274453, 277.762322999726, 277.735323729530, 277.547356221084, 277.724659181931, + 278.062792028695, 277.919073079645, 277.773076074541, 278.020996741625, 278.022325061818, + 277.919346621275, 277.950865675377, 278.008524131751, 278.023480753982, 277.924336723588, + 278.332258375312, 278.736366682898, 278.523695501482, 278.502092576710, 278.225439092820, + 278.256232776798, 278.449499552010, 278.137549943998, 278.422050300432, 278.431511965178, + 278.274661992411, 278.431568551580, 278.753808621318, 278.761885574921, 278.415607975957, + 278.555121959527, 278.654993170504, 278.544139116180, 278.520795378936, 278.533770309691, + 278.547957275597, 278.407434870158, 278.298762571130, 278.487164079960, 278.392357298054, + 278.268034972770, 278.187199824354, 278.276694644393, 278.256517908057, 278.378067854440, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 277.976299775529, 278.042031136275, 277.464188145920, 277.771621894762, + 277.784361473567, 277.859883815950, 277.814022087487, 277.852386883815, 277.843778414429, + 277.700529593730, 277.720782097285, 277.895752429155, 278.233578251075, 278.276392982912, + 277.953661711230, 277.591545218148, 277.985804556808, 277.938997069968, 277.916409711425, + 277.888611552732, 277.925456871836, 277.977042887254, 278.082218353152, 278.472003946117, + 278.646240659087, 278.404855822350, 278.163989456392, 277.954560473176, 278.556236453466, + 278.296451614769, 278.277688882445, 278.374637286269, 278.332791290590, 278.203289210287, + 278.562584129166, 278.329198281083, 278.823530241748, 278.763160870026, 278.543114999088, + 278.556718492736, 278.657498589218, 278.499789731658, 278.592487422433, 278.649244580966, + 278.669257850905, 278.201148346028, 278.586350077861, 278.457878133903, 278.245990792454, + 278.112034510986, 278.055946777769, 278.159436781041, 278.294828313829, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 278.055463728037, 277.938769906207, 277.908616747506, 277.697182984726, 277.767438599440, + 277.618954673948, 277.849284086165, 277.888500733412, 277.803726801356, 277.887984809149, + 277.963831684250, 278.063254030007, 278.264222060266, 278.247209209771, 278.010146150856, + 277.737515908542, 277.889412006510, 277.981344866797, 277.913904542254, 277.836061245756, + 277.808859499689, 277.970758433246, 278.239527080226, 278.275624726729, 278.397363141215, + 278.343527616747, 278.259845839951, 278.368292580968, 278.583172394714, 278.290379278148, + 278.385955212872, 278.352217326569, 278.420090515247, 278.134725529508, 278.418675419067, + 278.363034465810, 278.431779148022, 278.438454682849, 278.264539348808, 278.429698158323, + 278.607118714023, 278.464672697985, 278.443469155020, 278.604002661624, 278.807929770258, + 278.629594459038, 278.763699668360, 278.301897413578, 278.088831652212, 277.971815866599, + 277.908876996953, 277.949580119805, 277.929385688745, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 278.164247814763, + 278.017634128271, 278.126496201983, 278.041275562602, 277.963103307992, 277.882098915321, + 277.832817052899, 278.194630071008, 277.940734107132, 278.028855985157, 277.589337692257, + 278.007707016965, 278.159356263938, 278.097452374726, 277.964902829032, 277.890310856301, + 277.995095341973, 277.660207908446, 277.786361546086, 277.815119589775, 277.914655235766, + 278.276761510933, 278.028707200239, 278.334143087463, 278.232784850170, 278.182589303626, + 278.197293256951, 278.305926587915, 278.318792747211, 278.484167044288, 278.357400768639, + 278.328509261854, 278.448253183213, 278.163374893923, 278.104866385859, 278.044914087322, + 278.173224770928, 278.338413210359, 278.380896912261, 278.730673471804, 278.450424564609, + 278.503155223128, 278.491430165703, 278.474964969620, 278.246765035551, 278.931615118388, + 278.559599207653, 278.156636961710, 278.008740658705, 277.932135871154, 277.822627679854, + 277.736249285180, 277.878138412578, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 278.082480645173, 278.043241069493, + 277.697041095551, 277.989863518743, 277.717897740312, 277.701839125518, 277.861708621096, + 278.280953208980, 277.804372502188, 277.704826013697, 277.596403430525, 277.712365023901, + 278.034041843709, 277.947346670070, 277.846022907482, 277.820870191912, 277.874461715493, + 277.769161099427, 277.750268832592, 277.850701911325, 277.878534019060, 278.027904999404, + 278.090516114696, 278.109187477565, 278.190939004850, 278.278788556568, 278.380627825278, + 278.407390272678, 278.511725032938, 278.506674787575, 278.442874478011, 278.405398330435, + 278.395518040659, 278.357905587250, 278.210737031126, 278.122068999623, 278.170689655080, + 278.152435924905, 278.236404166308, 278.676963499355, 278.364031374287, 278.396399598455, + 278.375591815009, 278.342047071761, 278.407524619964, 278.529076426794, 278.148144221518, + 278.042521318864, 277.942078734795, 277.821562712711, 277.728530388654, 277.736969229001, + 277.907471093473, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 277.819603551272, 277.828647314803, 277.754535652466, + 277.824122707543, 277.762454320427, 277.748628587305, 278.031167797444, 277.857054897891, + 277.780437750936, 277.673341198976, 277.580777138276, 277.728655867446, 277.897137734936, + 277.750051876006, 277.442585133617, 277.536109280911, 277.666042104756, 277.637084619762, + 277.954517294964, 277.933011800326, 277.638355177335, 277.771459546012, 277.907366166404, + 278.038032680944, 278.223370782900, 278.077760957702, 278.513395348027, 278.519194273139, + 278.542309039934, 278.482080267916, 278.340394482155, 278.341759181533, 278.301704207586, + 278.255804929780, 278.195762993763, 278.152065600453, 278.109495057418, 278.225701450697, + 278.493902456915, 278.637437629165, 278.359832350456, 278.305034727926, 278.296015493113, + 278.356150546679, 278.036917652359, 277.636846916859, 278.031252957091, 278.053317552121, + 277.856967881711, 277.828489726312, 277.819981618468, 277.859938918796, 277.956551311373, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 277.884653219230, 277.884698802114, 277.844277877433, 277.934802186492, + 277.864463150351, 277.803952962222, 277.862512817816, 278.030331030810, 277.751952165263, + 277.680464702272, 277.585446567641, 277.958894193742, 277.524642689383, 277.589772555767, + 277.547487191290, 277.553287779719, 277.547903182893, 277.780326455565, 278.007585878669, + 277.822118711121, 277.682976359764, 277.843136947080, 277.894178961775, 277.954909292289, + 278.221226702389, 278.236512222249, 278.471628587781, 278.517076530718, 278.553486136797, + 278.548068978131, 278.394215898281, 278.289120256620, 278.234843510822, 278.157199428167, + 278.206792433064, 278.242705298579, 278.226263767876, 278.437906673139, 278.580162411397, + 278.567277080119, 278.296662334949, 278.275257848275, 278.404346162035, 278.002008395328, + 277.160000000000, 277.422452606158, 278.124308422995, 278.212576318432, 278.016005178567, + 277.861666847072, 277.831807919342, 277.987901581353, 278.061939469824, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 277.932091130649, 277.951064758320, 277.839412458507, 277.841315615141, 277.806577252520, + 277.842248927079, 277.988730868827, 277.881229491595, 277.827771128070, 277.852117171922, + 277.977131550724, 277.890734880932, 277.363447936035, 277.674357318546, 277.874045802482, + 277.619616361043, 277.959695749966, 278.034434774544, 278.011503092349, 277.792532523158, + 277.883473108928, 277.906659808602, 277.859039495732, 277.950830457718, 278.150472303852, + 278.280666827875, 278.497788485655, 278.510726053483, 278.601565268380, 278.496480151954, + 278.430095137542, 278.316738350851, 278.171640925745, 278.099215960220, 278.139092052815, + 278.217292849195, 278.260283772674, 278.395024109814, 278.411196388457, 278.432581257165, + 278.381536736126, 278.363111710685, 278.429680484566, 277.793989872273, 277.160000000000, + 277.160000000000, 278.256273592222, 278.264019723457, 278.140777061859, 277.960057434051, + 277.915191160621, 277.936547331889, 278.099249337367, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 277.917465588048, + 277.806536213298, 277.829468329766, 277.894769654517, 277.878874487338, 278.213198285885, + 277.882881751217, 277.892374439465, 277.858339532912, 277.923051748953, 277.681370662730, + 277.510761769121, 277.346031782172, 277.635591850736, 277.505752171465, 277.838565919297, + 278.145230449989, 278.110256581579, 277.857261961129, 277.892771986443, 277.933046869362, + 277.858290703051, 277.761688955039, 277.868954215183, 278.100209314485, 278.316913494119, + 278.444218906419, 278.557360529658, 278.561171208143, 278.461978486569, 278.557371359122, + 278.268552022994, 278.168263392393, 278.004287261093, 278.100378738598, 278.174276275285, + 278.571381129483, 278.432024829889, 278.351912980210, 278.426658874171, 278.422291931680, + 278.425551948989, 278.455607158869, 278.142898669707, 277.160000000000, 277.160000000000, + 278.358691525700, 278.271973931751, 278.175217065772, 278.113413453687, 278.060115945570, + 278.072147299547, 278.221325526498, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 277.947472331137, 277.986181501038, + 277.984568003653, 278.110290656444, 277.897470824458, 277.874164089902, 277.898939913517, + 277.902875083266, 277.889547948396, 277.798750008214, 277.895056427821, 277.559027635660, + 277.397787394390, 277.415750853834, 277.795000812736, 278.022111292969, 278.209968407002, + 278.081682250882, 278.091845240573, 277.941999949457, 277.909072268308, 277.784844781870, + 277.659181293741, 277.950679245143, 278.025258482602, 278.291405558634, 278.461051894477, + 278.543413260710, 278.637341256470, 278.536026584681, 278.345094023061, 278.314548843661, + 278.141679812436, 277.941455855832, 278.086647453443, 278.112323026882, 278.109913998848, + 278.098115462881, 278.381213778877, 278.424512212838, 278.401413477507, 278.394564786766, + 277.894149214730, 277.375874807682, 277.160000000000, 278.149965464308, 278.077148773966, + 278.225807651780, 278.284892879974, 278.351353534523, 278.240233215773, 278.349246487147, + 278.349466760844, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 279.240455299468, 279.223818551588, 279.285849037670, + 279.376293488344, 279.461192356391, 279.551808319930, 279.628646083334, 279.652829397263, + 279.616525840893, 279.502069589155, 279.291108765522, 279.053106080215, 278.902689297837, + 278.875704607117, 278.947740010309, 279.107704342158, 279.293681458493, 279.389614320839, + 279.411224941796, 279.444212582782, 279.386698602138, 279.136632845345, 278.940936666674, + 279.114221831018, 279.555753115819, 279.953434278201, 280.226196904095, 280.405256334886, + 280.410401720828, 280.251580808077, 280.098019623178, 279.974301676744, 279.757509415710, + 279.521564884780, 279.499039528544, 279.701996418489, 279.925134655518, 280.065775204607, + 280.157363074379, 280.210875088178, 280.228483742292, 280.242147600516, 280.253696133409, + 280.268103214047, 280.320185953974, 280.334307179838, 280.179831259660, 279.974644702474, + 279.996541178206, 280.236144650250, 280.430297213138, 280.482837320704, 280.457167561948, + 280.368438239921, 280.237631095078, 280.139468565491, 280.058914690017, 279.931995170108, + 279.790325543831, 279.694221168621, 279.601661392615, 279.495094732655, 279.400305289408, + 279.315406421361, 279.170992589248, 279.122968987120, 279.185857037526, 279.307459658628, + 279.447414156257, 279.576963540092, 279.657803270340, 279.678727839839, 279.638593829489, + 279.510130693798, 279.301628221226, 279.100500801839, 278.988560072117, 278.974724701028, + 279.039385051036, 279.169048776781, 279.318322140061, 279.420543807447, 279.465423007055, + 279.468796093395, 279.383211173889, 279.191917158746, 279.053391934990, 279.156356824790, + 279.471311615411, 279.820168782296, 280.098305477953, 280.261471383277, 280.248379234602, + 280.089100954212, 279.926106561752, 279.809077617043, 279.659975766627, 279.501440708651, + 279.482574293529, 279.633677127367, 279.825485681103, 279.976645685896, 280.097276400764, + 280.174628702763, 280.192294527831, 280.188521244807, 280.196296494675, 280.219850928100, + 280.263243682879, 280.275020899592, 280.180917507803, 280.066804281795, 280.125290168672, + 280.362949828249, 280.587574510106, 280.668985949904, 280.616788868068, 280.490498228663, + 280.363864563528, 280.257412245478, 280.131064435118, 279.982362781387, 279.855843458162, + 279.757509415710, 279.634477520736, 279.518134627486, 279.422430448960, 279.301399537407, + 279.066598425575, 279.006454581005, 279.065626519341, 279.211698309147, 279.406079555854, + 279.575362753355, 279.659346886123, 279.668951606549, 279.614810712245, 279.477714762361, + 279.291623304116, 279.135260742427, 279.045559514167, 279.027379150504, 279.089638320405, + 279.211583967237, 279.338331974281, 279.433350101348, 279.488062705201, 279.486633431328, + 279.403907059567, 279.254061986738, 279.134288836193, 279.172764888850, 279.399447725084, + 279.708456736394, 279.964353930589, 280.087328654609, 280.053540620255, 279.905525017983, + 279.744302925125, 279.629846673388, 279.535743281599, 279.456733021908, 279.457876441006, + 279.562213433724, 279.709028445943, 279.857215561080, 280.002143931787, 280.100420803284, + 280.113627293870, 280.091559305273, 280.106995463100, 280.164566614698, 280.221223031018, + 280.227511836058, 280.166796281940, 280.117915115488, 280.205157992687, 280.436986214863, + 280.676989883592, 280.785042988379, 280.731302290760, 280.595006734245, 280.462141435025, + 280.330190871084, 280.161879579817, 280.001686564148, 279.887230312410, 279.769572487197, + 279.608579078159, 279.472969573104, 279.366345742189, 279.220731320023, 278.926872611765, + 278.881364531654, 278.941165350494, 279.107361316429, 279.349823336219, 279.555124235315, + 279.648370062780, 279.657231560791, 279.594858048980, 279.449300797769, 279.279102864990, + 279.156814192429, 279.084607276373, 279.061052842948, 279.111248941363, 279.216443498405, + 279.328441399081, 279.431749314611, 279.511274112896, 279.525624022579, 279.454617696576, + 279.326783441388, 279.211183770552, 279.203065494955, 279.353482277333, 279.594915219935, + 279.794384681630, 279.871851325538, 279.829087451263, 279.710686403636, 279.579536233063, + 279.486233234644, 279.434950888086, 279.410081522698, 279.424259919517, 279.498524989950, + 279.624358261716, 279.778090959479, 279.931023263874, 280.032330195982, 280.046737276620, + 280.015807790012, 280.018609166803, 280.078867353282, 280.150102363105, 280.176515344275, + 280.155247749047, 280.155933800506, 280.263815392429, 280.485638697495, 280.723469869937, + 280.847759525920, 280.806825122202, 280.666184573113, 280.512566217259, 280.352087346816, + 280.173428112710, 280.012091677942, 279.876825198616, 279.728295057749, 279.552723055209, + 279.402363443785, 279.254576525332, 279.074545188308, 278.792063500078, 278.765650518908, + 278.830882578465, 279.019032191087, 279.293738629448, 279.517277063162, 279.622357278294, + 279.646254737448, 279.592056672189, 279.448328891536, 279.283562199474, 279.169791999195, + 279.110905915633, 279.105703358736, 279.159043859671, 279.239997931829, 279.325754364200, + 279.426489586758, 279.520307123772, 279.551522465155, 279.502412614884, 279.403907059567, + 279.305458675206, 279.267725844962, 279.333072246429, 279.477371736632, 279.617554918081, + 279.673753966761, 279.623843723122, 279.509902009978, 279.398532989806, 279.334215665527, + 279.320437465393, 279.333072246429, 279.360399962878, 279.425917877209, 279.551751148975, + 279.712973241832, 279.857558586810, 279.950404217590, 279.981390875154, 279.965840375417, + 279.949546653266, 279.977160224490, 280.044278925559, 280.106423753550, 280.144328096658, + 280.197382742819, 280.319728586334, 280.514567200681, 280.716094816753, 280.831294290905, + 280.809912353767, 280.682078098579, 280.512966413944, 280.338595001456, 280.166338914300, + 279.997684597304, 279.819425559882, 279.641966915829, 279.479658574828, 279.323296013139, + 279.126284902505, 278.919611900491, 278.663943390116, 278.635872451253, 278.714768369034, + 278.939335879936, 279.234966887797, 279.462164262625, 279.579536233063, 279.613667293147, + 279.557754099241, 279.422258936095, 279.273099914724, 279.160301620679, 279.104045401044, + 279.120339123194, 279.186371576120, 279.254633696287, 279.324610945102, 279.415912960099, + 279.503327350163, 279.544947805340, 279.525223825895, 279.451873490740, 279.359942595239, + 279.299512895895, 279.299970263534, 279.366460084099, 279.468510238620, 279.518877849899, + 279.450730071642, 279.310718403058, 279.198949186201, 279.159386885400, 279.179282377710, + 279.227706176523, 279.276816026794, 279.339704077199, 279.455246577080, 279.610637232536, + 279.746761276187, 279.834861717709, 279.879798088271, 279.885629525673, 279.875395924743, + 279.895577271828, 279.960923673294, 280.039133539617, 280.106137898776, 280.185090987512, + 280.316469841904, 280.499531239539, 280.676532515953, 280.779268721933, 280.774980900315, + 280.668928778949, 280.494271511687, 280.303091838455, 280.126605100635, 279.943315019181, + 279.733497614647, 279.533456443403, 279.369032777070, 279.193232090709, 278.974724701028, + 278.776684513206, 278.477337393277, 278.425769191944, 278.545142145805, 278.845003804328, + 279.186257234210, 279.442668966999, 279.589884175903, 279.616983208532, 279.523623039157, + 279.377551249352, 279.241884573341, 279.128514569747, 279.069113947591, 279.093354432475, + 279.156013799060, 279.215357250261, 279.294424680907, 279.396417664474, 279.488805927615, + 279.561470211310, 279.584338593276, 279.506586094593, 279.365716861685, 279.260465133688, + 279.228049202252, 279.263152168569, 279.346850446563, 279.384926302536, 279.287735679182, + 279.118681165502, 279.009884838300, 278.999765579281, 279.055793115096, 279.139091196406, + 279.206552923204, 279.259093030770, 279.356112141259, 279.517105550297, 279.681186190900, + 279.784379764520, 279.807991368899, 279.779234378578, 279.764598614120, 279.813822806301, + 279.907468830450, 279.993796972370, 280.053540620255, 280.119458731271, 280.251409295212, + 280.463342025078, 280.675217583990, 280.789616664772, 280.782813321138, 280.675389096854, + 280.489526322429, 280.273134258080, 280.072292693467, 279.874195334690, 279.652486371533, + 279.437866606786, 279.233594784879, 279.015659104747, 278.793149748221, 278.609916837722, + 278.278039444447, 278.221211515262, 278.401014168466, 278.772568204452, 279.153212422270, + 279.444384095647, 279.618984191954, 279.628074373785, 279.498410648040, 279.344049069773, + 279.206610094159, 279.080376625709, 279.029322962971, 279.074373675443, 279.126685099190, + 279.162645629830, 279.242742137665, 279.351767148686, 279.452445200289, 279.569245461179, + 279.648770259464, 279.570846247916, 279.375721778795, 279.219645071880, 279.156013799060, + 279.166704767629, 279.232965904375, 279.254862380107, 279.131601801312, 278.940307786170, + 278.834598690534, 278.852035831783, 278.945624684977, 279.059509227166, 279.135375084336, + 279.175966462325, 279.264581442442, 279.446042053339, 279.658031954160, 279.793812972081, + 279.790782911470, 279.698680503104, 279.650028020472, 279.710629232681, 279.826171732562, + 279.931480631514, 280.008375565873, 280.071149274369, 280.185319671332, 280.405427847751, + 280.652120518204, 280.782241611589, 280.760745332541, 280.639542908123, 280.451907834096, + 280.226482758870, 280.002544128472, 279.780835165315, 279.552780226163, 279.330785408232, + 279.096041467356, 278.847748010164, 278.625009969819, 278.440576469267, 278.096350149730, + 278.070394536199, 278.305481502805, 278.723172499407, 279.140120273594, 279.458219466736, + 279.619441559593, 279.587482995796, 279.450272704003, 279.311976164066, 279.151897490307, + 278.991590132728, 278.964262416279, 279.057565414699, 279.110848744678, 279.115708275846, + 279.175451923731, 279.273671624273, 279.378923352270, 279.532427366214, 279.652257687714, + 279.582966490358, 279.372234350545, 279.184370592698, 279.073115914435, 279.055564431277, + 279.140348957414, 279.183455857419, 279.030009014430, 278.774740700739, 278.632785219688, + 278.674634358685, 278.827795346899, 278.977697590684, 279.039842418675, 279.051848319207, + 279.138576657812, 279.348279720436, 279.602690469803, 279.771058932025, 279.762711972608, + 279.633848640231, 279.556153312503, 279.607664342881, 279.721663226979, 279.841322035614, + 279.946287908836, 280.009804839746, 280.088243389888, 280.289885347869, 280.563848563817, + 280.727185982006, 280.709577327893, 280.579627747373, 280.394736879182, 280.175657779951, + 279.933024247296, 279.673182257212, 279.415970131054, 279.180025600124, 278.938421144658, + 278.683210001922, 278.455841114229, 278.261631380386, 277.941131007138, 277.966000372526, + 278.239391878925, 278.690642226061, 279.154870379962, 279.488577243795, 279.591484962640, + 279.499382554274, 279.378065787946, 279.270984589392, 279.083235173455, 278.890283200620, + 278.882622292662, 279.001137682198, 279.046359907535, 279.033553613635, 279.073458940165, + 279.153498277044, 279.279102864990, 279.478858181460, 279.608007368610, 279.522536791014, + 279.321638055446, 279.132745220410, 278.967120964025, 278.916810523700, 279.055735944141, + 279.162588458876, 278.986158892011, 278.647764009875, 278.455212233725, 278.525875533999, + 278.751586463999, 278.936991870785, 278.962775971451, 278.923213670651, 279.010285034985, + 279.265381835811, 279.562499288499, 279.744017070351, 279.719890927377, 279.567816187306, + 279.484632447906, 279.544033070062, 279.658603663709, 279.771058932025, 279.864419101400, + 279.899522067717, 279.941314035759, 280.136266992016, 280.447905867252, 280.660295964757, + 280.667213650302, 280.534005325352, 280.343283019759, 280.121574056603, 279.869335803522, + 279.580336626432, 279.282304438465, 279.009084444932, 278.747527326200, 278.486313233198, + 278.257286387813, 278.072967229170, 277.832734876621, 277.928782080877, 278.259516055054, + 278.741524375934, 279.215242908351, 279.510416548572, 279.531626972845, 279.398304305986, + 279.305801700935, 279.217586917503, 279.013715292280, 278.826308902072, 278.825336995838, + 278.901088511099, 278.911836650623, 278.914523685504, 278.944767120653, 278.984443763364, + 279.143607701844, 279.421115516997, 279.532198682394, 279.369490144709, 279.175623436596, + 279.045273659392, 278.877476906720, 278.808128538409, 278.992847893736, 279.154127157548, + 278.970494050365, 278.596996201912, 278.388550900295, 278.466303398978, 278.711623966514, + 278.898973185767, 278.883880053670, 278.801782562413, 278.914009146910, 279.254004815783, + 279.617497747126, 279.797872109880, 279.722920987987, 279.523508697248, 279.433064246574, + 279.512074506265, 279.634420349781, 279.724636116635, 279.773059915447, 279.762197434013, + 279.783636542106, 279.992196185632, 280.333335273604, 280.578827354005, 280.616388671383, + 280.501589393916, 280.301891248401, 280.061601724898, 279.796328494097, 279.497438741807, + 279.181626386862, 278.861812065073, 278.555661601509, 278.284156736622, 278.068336381822, + 277.909000930477 +}; + +#define ILCHAM 3128 +#define NSTRON 10 +#define NSMAX 31 +#define NMSMAX 31 + +int main (int argc, char * argv[]) +{ + grib_handle * h; + size_t len; + + GRIB_CHECK (((h = grib_handle_new_from_samples (NULL, "reduced_gg_ml_grib2")) == NULL), 0); + len = strlen ("lambert_lam"); + GRIB_CHECK (grib_set_string (h, "gridType", "lambert_lam", &len), 0); + GRIB_CHECK (grib_set_long (h, "centre", 85), 0); + len = strlen ("lambert_lam"); + GRIB_CHECK (grib_set_string (h, "gridType", "lambert_lam", &len), 0); + GRIB_CHECK (grib_set_long (h, "Nx", 64), 0); + GRIB_CHECK (grib_set_long (h, "Ny", 64), 0); + GRIB_CHECK (grib_set_double (h, "DxInMetres", 2500.00000000000), 0); + GRIB_CHECK (grib_set_double (h, "DyInMetres", 2500.00000000000), 0); + GRIB_CHECK (grib_set_long (h, "iScansNegatively", 0), 0); + GRIB_CHECK (grib_set_long (h, "jScansPositively", 1), 0); + GRIB_CHECK (grib_set_long (h, "jPointsAreConsecutive", 0), 0); + GRIB_CHECK (grib_set_long (h, "uvRelativeToGrid", 1), 0); + GRIB_CHECK (grib_set_long (h, "Nux", 53), 0); + GRIB_CHECK (grib_set_long (h, "Nuy", 53), 0); + GRIB_CHECK (grib_set_long (h, "Ncx", 8), 0); + GRIB_CHECK (grib_set_long (h, "Ncy", 8), 0); + GRIB_CHECK (grib_set_double (h, "latitudeOfFirstGridPointInDegrees", 66.7684949529709), 0); + GRIB_CHECK (grib_set_double (h, "longitudeOfFirstGridPointInDegrees", 25.1580207144963), 0); + GRIB_CHECK (grib_set_double (h, "latitudeOfSouthernPoleInDegrees", 0.000000000000000E+000), 0); + GRIB_CHECK (grib_set_double (h, "longitudeOfSouthernPoleInDegrees", 0.000000000000000E+000), 0); + GRIB_CHECK (grib_set_double (h, "LaDInDegrees", 67.3600000000000), 0); + GRIB_CHECK (grib_set_double (h, "LoVInDegrees", 26.6400000000000), 0); + GRIB_CHECK (grib_set_double (h, "Latin1InDegrees", 67.3600000000000), 0); + GRIB_CHECK (grib_set_double (h, "Latin2InDegrees", 67.3600000000000), 0); + GRIB_CHECK (grib_set_long (h, "projectionCentreFlag", 0), 0); + GRIB_CHECK (grib_set_long (h, "NV", 0), 0); + GRIB_CHECK (grib_set_long (h, "year", 2009), 0); + GRIB_CHECK (grib_set_long (h, "month", 5), 0); + GRIB_CHECK (grib_set_long (h, "day", 28), 0); + GRIB_CHECK (grib_set_long (h, "hour", 0), 0); + GRIB_CHECK (grib_set_long (h, "minute", 0), 0); + GRIB_CHECK (grib_set_long (h, "second", 0), 0); + len = strlen ("s"); + GRIB_CHECK (grib_set_string (h, "indicatorOfUnitOfTimeRange", "s", &len), 0); + len = strlen ("s"); + GRIB_CHECK (grib_set_string (h, "stepUnits", "s", &len), 0); + GRIB_CHECK (grib_set_long (h, "endStep", 3600), 0); + GRIB_CHECK (grib_set_long (h, "bitsPerValue", 16), 0); + len = strlen ("grid_simple"); + GRIB_CHECK (grib_set_string (h, "packingType", "grid_simple", &len), 0); + GRIB_CHECK (grib_set_long (h, "numberOfDataPoints", 4096), 0); + GRIB_CHECK (grib_set_double_array (h, "values", values, len), 0); + GRIB_CHECK (grib_handle_delete (h), 0); + + return 0; +} diff --git a/tests/lam_gp.sh b/tests/lam_gp.sh new file mode 100755 index 000000000..aeafbb86b --- /dev/null +++ b/tests/lam_gp.sh @@ -0,0 +1,13 @@ +#!/bin/sh +# Copyright 2005-2015 ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.sh + +exec $test_dir/lam_gp From ff33ddf40da0fd2d38082afe869570eb8d46577b Mon Sep 17 00:00:00 2001 From: Philippe Marguinaud Date: Fri, 30 Sep 2016 10:03:21 +0200 Subject: [PATCH 003/414] Fix byte swapping. --- src/grib_ieeefloat.c | 45 ++++++++++++++++---------------------------- 1 file changed, 16 insertions(+), 29 deletions(-) diff --git a/src/grib_ieeefloat.c b/src/grib_ieeefloat.c index 3c1c21ada..7285f55ad 100644 --- a/src/grib_ieeefloat.c +++ b/src/grib_ieeefloat.c @@ -378,38 +378,25 @@ unsigned long grib_ieee_to_long(double x) #ifdef IEEE -unsigned long grib_ieee64_to_long(double x) +/* + * To make these two routines consistent to grib_ieee_to_long and grib_long_to_ieee, + * we should not do any byte swapping but rather perform a raw copy. + * Byte swapping is actually implemented in grib_decode_unsigned_long and + * grib_encode_unsigned_long. + */ + +unsigned long grib_ieee64_to_long (double x) { - unsigned long lval = 0; -#if IEEE_LE - unsigned char s[8]={0,}; - unsigned char* buf=(unsigned char*)&x; - int j=0; - for (j=7;j>=0;j--) - s[j]= *(buf++); - memcpy(&lval,s,8); -#elif IEEE_BE - memcpy(&lval,&x,8); -#endif - return lval; + unsigned long lval; + memcpy (&lval, &x, 8); + return lval; } -double grib_long_to_ieee64(unsigned long x){ - double dval = 0.0; -#if IEEE_LE - unsigned char s[8]={0,}; - unsigned char* buf=(unsigned char*)&x; - int j=0; - for (j=7;j>=0;j--) - s[j]= *(buf++); - memcpy(&dval,s,8); -#elif IEEE_BE - memcpy(&dval,&x,8); -#else - Assert(!"Neither IEEE_LE nor IEEE_BE defined."); -#endif - - return dval; +double grib_long_to_ieee64 (unsigned long x) +{ + double dval; + memcpy (&dval, &x, 8); + return dval; } int grib_ieee_decode_array(grib_context* c,unsigned char* buf,size_t nvals,int bytes,double* val) From 1cb9ae9600f010f2acf7a1971799d1a2e63fd252 Mon Sep 17 00:00:00 2001 From: Philippe Marguinaud Date: Fri, 30 Sep 2016 14:03:29 +0200 Subject: [PATCH 004/414] WMO LAM. --- definitions/grib2/section.3.def | 12 ++++++------ .../{template.3.33002.def => template.3.13.def} | 0 .../{template.3.33003.def => template.3.23.def} | 0 .../{template.3.33001.def => template.3.33.def} | 0 .../{template.3.33011.def => template.3.61.def} | 14 ++++---------- .../{template.3.33012.def => template.3.62.def} | 12 ++++-------- .../{template.3.33010.def => template.3.63.def} | 11 ++--------- .../{template.3.bf.part3.def => template.3.bf.def} | 14 ++++++++++++++ definitions/grib2/template.3.bf.part1.def | 7 ------- definitions/grib2/template.3.bf.part2.def | 7 ------- tests/lam_bf.sh | 1 + 11 files changed, 31 insertions(+), 47 deletions(-) rename definitions/grib2/{template.3.33002.def => template.3.13.def} (100%) rename definitions/grib2/{template.3.33003.def => template.3.23.def} (100%) rename definitions/grib2/{template.3.33001.def => template.3.33.def} (100%) rename definitions/grib2/{template.3.33011.def => template.3.61.def} (67%) rename definitions/grib2/{template.3.33012.def => template.3.62.def} (66%) rename definitions/grib2/{template.3.33010.def => template.3.63.def} (76%) rename definitions/grib2/{template.3.bf.part3.def => template.3.bf.def} (65%) delete mode 100644 definitions/grib2/template.3.bf.part1.def delete mode 100644 definitions/grib2/template.3.bf.part2.def diff --git a/definitions/grib2/section.3.def b/definitions/grib2/section.3.def index 1344be9f4..0c416ec11 100644 --- a/definitions/grib2/section.3.def +++ b/definitions/grib2/section.3.def @@ -113,12 +113,12 @@ concept gridType { "cross_section" = { gridDefinitionTemplateNumber=1000;PLPresent=0; } "Hovmoller" = { gridDefinitionTemplateNumber=1100;PLPresent=0; } "time_section" = { gridDefinitionTemplateNumber=1200;PLPresent=0; } - "lambert_lam" = { gridDefinitionTemplateNumber=33001; PLPresent=0; } - "mercator_lam" = { gridDefinitionTemplateNumber=33002; PLPresent=0; } - "polar_stereographic_lam" = { gridDefinitionTemplateNumber=33003; PLPresent=0; } - "lambert_bf" = { gridDefinitionTemplateNumber=33010; PLPresent=0; } - "mercator_bf" = { gridDefinitionTemplateNumber=33011; PLPresent=0; } - "polar_stereographic_bf" = { gridDefinitionTemplateNumber=33012; PLPresent=0; } + "lambert_lam" = { gridDefinitionTemplateNumber=33; PLPresent=0; } + "mercator_lam" = { gridDefinitionTemplateNumber=13; PLPresent=0; } + "polar_stereographic_lam" = { gridDefinitionTemplateNumber=23; PLPresent=0; } + "lambert_bf" = { gridDefinitionTemplateNumber=63; PLPresent=0; } + "mercator_bf" = { gridDefinitionTemplateNumber=61; PLPresent=0; } + "polar_stereographic_bf" = { gridDefinitionTemplateNumber=62; PLPresent=0; } "unknown" = {PLPresent=0;} "unknown_PLPresent" = {PLPresent=1;} } : dump; diff --git a/definitions/grib2/template.3.33002.def b/definitions/grib2/template.3.13.def similarity index 100% rename from definitions/grib2/template.3.33002.def rename to definitions/grib2/template.3.13.def diff --git a/definitions/grib2/template.3.33003.def b/definitions/grib2/template.3.23.def similarity index 100% rename from definitions/grib2/template.3.33003.def rename to definitions/grib2/template.3.23.def diff --git a/definitions/grib2/template.3.33001.def b/definitions/grib2/template.3.33.def similarity index 100% rename from definitions/grib2/template.3.33001.def rename to definitions/grib2/template.3.33.def diff --git a/definitions/grib2/template.3.33011.def b/definitions/grib2/template.3.61.def similarity index 67% rename from definitions/grib2/template.3.33011.def rename to definitions/grib2/template.3.61.def index cd8f2ac22..04ba90edc 100644 --- a/definitions/grib2/template.3.33011.def +++ b/definitions/grib2/template.3.61.def @@ -7,22 +7,16 @@ # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. # -# TEMPLATE 3.33011, Bi-Fourier coefficients on Mercator projection +# TEMPLATE 3.61, Bi-Fourier coefficients on Mercator projection transient biFourierMakeTemplate = 0; +include "grib2/template.3.bf.def" + include "grib2/template.3.shape_of_the_earth.def"; -include "grib2/template.3.bf.part1.def" - include "grib2/template.3.10.part1.def" - include "grib2/template.3.10.part2.def" - include "grib2/template.3.10.part3.def" - -include "grib2/template.3.bf.part2.def" -include "grib2/template.3.bf.part3.def" - -# END 2/template.3.33011 ---------------------------------------------------------------------- +# END 2/template.3.61 ---------------------------------------------------------------------- diff --git a/definitions/grib2/template.3.33012.def b/definitions/grib2/template.3.62.def similarity index 66% rename from definitions/grib2/template.3.33012.def rename to definitions/grib2/template.3.62.def index 4c78e2be6..10f7eee57 100644 --- a/definitions/grib2/template.3.33012.def +++ b/definitions/grib2/template.3.62.def @@ -8,22 +8,18 @@ # -# TEMPLATE 3.33012, Bi-Fourier coefficients on polar stereographic projection +# TEMPLATE 3.62, Bi-Fourier coefficients on polar stereographic projection transient biFourierMakeTemplate = 0; +include "grib2/template.3.bf.def" + include "grib2/template.3.shape_of_the_earth.def"; transient oneThousand=1000; -include "grib2/template.3.bf.part1.def" - include "grib2/template.3.20.part1.def" - -include "grib2/template.3.bf.part2.def" - include "grib2/template.3.20.part2.def" -include "grib2/template.3.bf.part3.def" -# END 2/template.3.33012 ---------------------------------------------------------------------- +# END 2/template.3.62 ---------------------------------------------------------------------- diff --git a/definitions/grib2/template.3.33010.def b/definitions/grib2/template.3.63.def similarity index 76% rename from definitions/grib2/template.3.33010.def rename to definitions/grib2/template.3.63.def index 9ba3098a7..cf22bb31f 100644 --- a/definitions/grib2/template.3.33010.def +++ b/definitions/grib2/template.3.63.def @@ -7,24 +7,17 @@ # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. # -# TEMPLATE 3.33010, BiFourier coefficients on lambert projection +# TEMPLATE 3.63, BiFourier coefficients on lambert projection transient biFourierMakeTemplate = 0; -include "grib2/template.3.bf.part1.def" +include "grib2/template.3.bf.def" include "grib2/template.3.shape_of_the_earth.def"; -include "grib2/template.3.bf.part2.def" - include "grib2/template.3.30.part1.def" - include "grib2/template.3.30.part2.def" - -include "grib2/template.3.bf.part3.def" - include "grib2/template.3.30.part3.def" - include "grib2/template.3.30.part4.def" diff --git a/definitions/grib2/template.3.bf.part3.def b/definitions/grib2/template.3.bf.def similarity index 65% rename from definitions/grib2/template.3.bf.part3.def rename to definitions/grib2/template.3.bf.def index 17351e85a..804be828c 100644 --- a/definitions/grib2/template.3.bf.part3.def +++ b/definitions/grib2/template.3.bf.def @@ -1,3 +1,17 @@ +label "BiFourier coefficients"; +constant biFourierCoefficients=1; + +codetable[1] spectralType ('3.6.table',masterDir,localDir) = 99 : no_copy; +alias spectralDataRepresentationType=spectralType; + + + +unsigned[4] biFourierResolutionParameterN : dump; + +unsigned[4] biFourierResolutionParameterM : dump; + +codetable[1] biFourierTruncationType ('3.99.table',masterDir,localDir) : dump; + # Lx - Full domain length in X-direction unsigned[8] Lx; meta geography.LxInMetres scale(Lx,one,thousand) : dump; diff --git a/definitions/grib2/template.3.bf.part1.def b/definitions/grib2/template.3.bf.part1.def deleted file mode 100644 index 8379d2fd1..000000000 --- a/definitions/grib2/template.3.bf.part1.def +++ /dev/null @@ -1,7 +0,0 @@ -label "BiFourier coefficients"; -constant biFourierCoefficients=1; - -codetable[1] spectralType ('3.6.table',masterDir,localDir) = 99 : no_copy; -alias spectralDataRepresentationType=spectralType; - - diff --git a/definitions/grib2/template.3.bf.part2.def b/definitions/grib2/template.3.bf.part2.def deleted file mode 100644 index f42038859..000000000 --- a/definitions/grib2/template.3.bf.part2.def +++ /dev/null @@ -1,7 +0,0 @@ - -unsigned[4] biFourierResolutionParameterN : dump; - -unsigned[4] biFourierResolutionParameterM : dump; - -codetable[1] biFourierTruncationType ('3.99.table',masterDir,localDir) : dump; - diff --git a/tests/lam_bf.sh b/tests/lam_bf.sh index 728475da9..ecc12da06 100755 --- a/tests/lam_bf.sh +++ b/tests/lam_bf.sh @@ -11,3 +11,4 @@ . ./include.sh exec $test_dir/lam_bf +#xterm -e gdb $test_dir/lam_bf From ae72d357f2c1a5c8b6a9c86bf3459b8670614528 Mon Sep 17 00:00:00 2001 From: Philippe Marguinaud Date: Fri, 30 Sep 2016 14:45:57 +0200 Subject: [PATCH 005/414] WMO LAM. --- definitions/grib2/section.5.def | 2 +- ...template.5.60000.def => template.5.53.def} | 2 +- ...template.7.60000.def => template.7.53.def} | 3 +-- samples/lambert_bf_grib2.tmpl | Bin 1326 -> 1870 bytes 4 files changed, 3 insertions(+), 4 deletions(-) rename definitions/grib2/{template.5.60000.def => template.5.53.def} (95%) rename definitions/grib2/{template.7.60000.def => template.7.53.def} (94%) diff --git a/definitions/grib2/section.5.def b/definitions/grib2/section.5.def index 65eb1fc7d..ab795c4f6 100644 --- a/definitions/grib2/section.5.def +++ b/definitions/grib2/section.5.def @@ -60,7 +60,7 @@ concept packingType (unknown) { "grid_second_order_SPD3" = { dataRepresentationTemplateNumber = 50001;orderOfSPD=3; } "spectral_ieee" = { dataRepresentationTemplateNumber=50000; } "grid_simple_log_preprocessing" = { dataRepresentationTemplateNumber = 61; } - "bifourier_complex" = { dataRepresentationTemplateNumber = 60000; spectralType=99; } + "bifourier_complex" = { dataRepresentationTemplateNumber = 53; spectralType=99; } } : dump; template dataRepresentation "grib2/template.5.[dataRepresentationTemplateNumber:l].def"; diff --git a/definitions/grib2/template.5.60000.def b/definitions/grib2/template.5.53.def similarity index 95% rename from definitions/grib2/template.5.60000.def rename to definitions/grib2/template.5.53.def index d5a90bae0..a0b94b1e6 100644 --- a/definitions/grib2/template.5.60000.def +++ b/definitions/grib2/template.5.53.def @@ -9,7 +9,7 @@ -# TEMPLATE 5.60000, BiFourier coefficients data - complex packing +# TEMPLATE 5.53, BiFourier coefficients data - complex packing include "grib2/template.5.packing.def"; diff --git a/definitions/grib2/template.7.60000.def b/definitions/grib2/template.7.53.def similarity index 94% rename from definitions/grib2/template.7.60000.def rename to definitions/grib2/template.7.53.def index b1798754f..2941e8bcc 100644 --- a/definitions/grib2/template.7.60000.def +++ b/definitions/grib2/template.7.53.def @@ -7,7 +7,7 @@ # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. # -# TEMPLATE 7.60000, BiFourier coefficients - complex packing +# TEMPLATE 7.53, BiFourier coefficients - complex packing constant biFourierCoefficients = 1; constant complexPacking = 1; @@ -26,7 +26,6 @@ meta codedValues data_g2bifourier_packing( referenceValue, binaryScaleFactor, decimalScaleFactor, - optimizeScaleFactor, unpackedSubsetPrecision, diff --git a/samples/lambert_bf_grib2.tmpl b/samples/lambert_bf_grib2.tmpl index f1526633c74193c2bacc53d4812ad6fc6bd353a1..ff911025bb2912fa29b12fa636bf122688396f86 100644 GIT binary patch delta 978 zcmZXN2~5&q7>7{^%2K-zZIa9ESS{1cwB?&7YSwgG&XyfAv%D2p-tbou%uGeef5%AY zm5H+jX(O`UtaYr}AzI>^Hd?b)mZ4S}mT3*v@!P&{@ALike$OR~$5ylbLUwphOi;`z zzrqMCoo#2GJUK(;SWJ{$cQ(UEu)TJ}2 zBE~k3bH604BdwIPn1EB6%`B&&Gtj=n&-THAtf`$p1D6{DT*lHnkQT}%)F@|^-JOvWnwkcAhZ2k8`|3d^ayU%uxqy{X8mnF8ZXhffJSp)C zIV)qVU1;4PG+*G?bykf<w`!e~g{O={OtHio zv^Mxj2MY^+aK1S^AP|9=K11~6dNn From 9b88b6f4fae806cb5d080e0d6f57e5e129405861 Mon Sep 17 00:00:00 2001 From: Philippe Marguinaud Date: Tue, 30 May 2017 15:45:36 +0200 Subject: [PATCH 006/414] Finalize limited area OMM standard. --- tests/lam_bf.c | 105 ++++++++++++++++++++++++++---------- tests/lam_bf.sh | 2 +- tests/lam_gp.c | 138 +++++++++++++++++++++++++++++++----------------- tests/lam_gp.sh | 3 +- 4 files changed, 170 insertions(+), 78 deletions(-) diff --git a/tests/lam_bf.c b/tests/lam_bf.c index 62ce00340..280c02077 100644 --- a/tests/lam_bf.c +++ b/tests/lam_bf.c @@ -648,34 +648,85 @@ int main (int argc, char * argv[]) { grib_handle * h; size_t len; + const char * grids[] = {"lambert_bf", "mercator_bf", "polar_stereographic_bf"}; + int igrid; - GRIB_CHECK (((h = grib_handle_new_from_samples (NULL, "lambert_bf_grib2")) == NULL), 0); - GRIB_CHECK (grib_set_long (h, "centre", 85), 0); - len = strlen ("lambert_bf"); - GRIB_CHECK (grib_set_string (h, "gridType", "lambert_bf", &len), 0); - GRIB_CHECK (grib_set_long (h, "biFourierResolutionParameterN", NSMAX), 0); - GRIB_CHECK (grib_set_long (h, "biFourierResolutionParameterM", NMSMAX), 0); - GRIB_CHECK (grib_set_long (h, "biFourierTruncationType", 99) , 0); - GRIB_CHECK (grib_set_double (h, "latitudeOfFirstGridPointInDegrees", 67.9372009520603), 0); - GRIB_CHECK (grib_set_double (h, "longitudeOfFirstGridPointInDegrees", 25.1580207144963), 0); - GRIB_CHECK (grib_set_long (h, "latitudeOfSouthernPoleInDegrees", 0), 0); - GRIB_CHECK (grib_set_long (h, "longitudeOfSouthernPoleInDegrees", 0), 0); - GRIB_CHECK (grib_set_double (h, "LoVInDegrees", 26.6400000000000), 0); - GRIB_CHECK (grib_set_double (h, "Latin1InDegrees", 67.3600000000000), 0); - GRIB_CHECK (grib_set_double (h, "Latin2InDegrees", 67.3600000000000), 0); - GRIB_CHECK (grib_set_long (h, "projectionCentreFlag", 0), 0); - GRIB_CHECK (grib_set_long (h, "bitsPerValue", 16) , 0); - len = strlen ("bifourier_complex"); - GRIB_CHECK (grib_set_string (h, "packingType", "bifourier_complex", &len), 0); - GRIB_CHECK (grib_set_long (h, "biFourierResolutionSubSetParameterN", NSTRON), 0); - GRIB_CHECK (grib_set_long (h, "biFourierResolutionSubSetParameterM", NSTRON), 0); - GRIB_CHECK (grib_set_long (h, "biFourierSubTruncationType", 77) , 0); - GRIB_CHECK (grib_set_long (h, "biFourierDoNotPackAxes", 1), 0); - GRIB_CHECK (grib_set_long (h, "unpackedSubsetPrecision", 2), 0); - GRIB_CHECK (grib_set_long (h, "LxInMetres", 2000), 0); - len = ILCHAM; - GRIB_CHECK (grib_set_double_array (h, "values", values, len), 0); - GRIB_CHECK (grib_handle_delete (h), 0); + for (igrid = 0; igrid < 3; igrid++) + { + GRIB_CHECK (((h = grib_handle_new_from_samples (NULL, "lambert_bf_grib2")) == NULL), 0); + GRIB_CHECK (grib_set_long (h, "centre", 85), 0); + len = strlen (grids[igrid]); + GRIB_CHECK (grib_set_string (h, "gridType", grids[igrid], &len), 0); + GRIB_CHECK (grib_set_long (h, "biFourierResolutionParameterN", NSMAX), 0); + GRIB_CHECK (grib_set_long (h, "biFourierResolutionParameterM", NMSMAX), 0); + GRIB_CHECK (grib_set_long (h, "biFourierTruncationType", 99) , 0); + + + GRIB_CHECK (grib_set_long (h, "LxInMetres", 2000), 0); + GRIB_CHECK (grib_set_long (h, "LyInMetres", 2000), 0); + + GRIB_CHECK (grib_set_long (h, "LuxInMetres", 1800), 0); + GRIB_CHECK (grib_set_long (h, "LuyInMetres", 1800), 0); + + GRIB_CHECK (grib_set_long (h, "LcxInMetres", 100), 0); + GRIB_CHECK (grib_set_long (h, "LcyInMetres", 100), 0); + + if (igrid == 0) + { + GRIB_CHECK (grib_set_double (h, "latitudeOfFirstGridPointInDegrees", 67.9372009520603), 0); + GRIB_CHECK (grib_set_double (h, "longitudeOfFirstGridPointInDegrees", 25.1580207144963), 0); + GRIB_CHECK (grib_set_long (h, "latitudeOfSouthernPoleInDegrees", 0), 0); + GRIB_CHECK (grib_set_long (h, "longitudeOfSouthernPoleInDegrees", 0), 0); + GRIB_CHECK (grib_set_double (h, "LoVInDegrees", 26.6400000000000), 0); + GRIB_CHECK (grib_set_double (h, "Latin1InDegrees", 67.3600000000000), 0); + GRIB_CHECK (grib_set_double (h, "Latin2InDegrees", 67.3600000000000), 0); + GRIB_CHECK (grib_set_long (h, "projectionCentreFlag", 0), 0); + GRIB_CHECK (grib_set_long (h, "bitsPerValue", 16) , 0); + } + else if (igrid == 1) + { + GRIB_CHECK (grib_set_double (h, "latitudeOfFirstGridPointInDegrees", 67.9372009520603), 0); + GRIB_CHECK (grib_set_double (h, "longitudeOfFirstGridPointInDegrees", 25.1580207144963), 0); + GRIB_CHECK (grib_set_double (h, "LaDInDegrees", 0.), 0); + GRIB_CHECK (grib_set_double (h, "latitudeOfLastGridPointInDegrees", 72.9372009520603), 0); + GRIB_CHECK (grib_set_double (h, "longitudeOfLastGridPointInDegrees", 29.1580207144963), 0); + GRIB_CHECK (grib_set_double (h, "orientationOfTheGridInDegrees", 0.), 0); + } + else if (igrid == 2) + { + + GRIB_CHECK (grib_set_double (h, "latitudeOfFirstGridPointInDegrees", 67.9372009520603), 0); + GRIB_CHECK (grib_set_double (h, "longitudeOfFirstGridPointInDegrees", 25.1580207144963), 0); + GRIB_CHECK (grib_set_double (h, "LaDInDegrees", 0.), 0); + GRIB_CHECK (grib_set_double (h, "orientationOfTheGridInDegrees", 0.), 0); + } + + len = strlen ("bifourier_complex"); + GRIB_CHECK (grib_set_string (h, "packingType", "bifourier_complex", &len), 0); + GRIB_CHECK (grib_set_long (h, "biFourierResolutionSubSetParameterN", NSTRON), 0); + GRIB_CHECK (grib_set_long (h, "biFourierResolutionSubSetParameterM", NSTRON), 0); + GRIB_CHECK (grib_set_long (h, "biFourierSubTruncationType", 77) , 0); + GRIB_CHECK (grib_set_long (h, "biFourierDoNotPackAxes", 1), 0); + GRIB_CHECK (grib_set_long (h, "unpackedSubsetPrecision", 2), 0); + + len = ILCHAM; + GRIB_CHECK (grib_set_double_array (h, "values", values, len), 0); + + if (1) + { + char f[128]; + FILE * fp; + size_t size; + char * buffer; + sprintf (f, "lam_bf_%s.grib", grids[igrid]); + fp = fopen (f, "w"); + GRIB_CHECK (grib_get_message (h, &buffer, &size), 0); + fwrite (buffer, 1, size, fp); + fclose (fp); + } + + GRIB_CHECK (grib_handle_delete (h), 0); + } return 0; } diff --git a/tests/lam_bf.sh b/tests/lam_bf.sh index ecc12da06..d3d7a15f3 100755 --- a/tests/lam_bf.sh +++ b/tests/lam_bf.sh @@ -10,5 +10,5 @@ . ./include.sh -exec $test_dir/lam_bf + exec $test_dir/lam_bf #xterm -e gdb $test_dir/lam_bf diff --git a/tests/lam_gp.c b/tests/lam_gp.c index 0bafbe6fa..ec6fc590c 100644 --- a/tests/lam_gp.c +++ b/tests/lam_gp.c @@ -834,61 +834,101 @@ static double values[] = { 277.909000930477 }; -#define ILCHAM 3128 -#define NSTRON 10 -#define NSMAX 31 -#define NMSMAX 31 int main (int argc, char * argv[]) { grib_handle * h; size_t len; + const char * grids[] = {"lambert_lam", "mercator_lam", "polar_stereographic_lam"}; + int igrid; - GRIB_CHECK (((h = grib_handle_new_from_samples (NULL, "reduced_gg_ml_grib2")) == NULL), 0); - len = strlen ("lambert_lam"); - GRIB_CHECK (grib_set_string (h, "gridType", "lambert_lam", &len), 0); - GRIB_CHECK (grib_set_long (h, "centre", 85), 0); - len = strlen ("lambert_lam"); - GRIB_CHECK (grib_set_string (h, "gridType", "lambert_lam", &len), 0); - GRIB_CHECK (grib_set_long (h, "Nx", 64), 0); - GRIB_CHECK (grib_set_long (h, "Ny", 64), 0); - GRIB_CHECK (grib_set_double (h, "DxInMetres", 2500.00000000000), 0); - GRIB_CHECK (grib_set_double (h, "DyInMetres", 2500.00000000000), 0); - GRIB_CHECK (grib_set_long (h, "iScansNegatively", 0), 0); - GRIB_CHECK (grib_set_long (h, "jScansPositively", 1), 0); - GRIB_CHECK (grib_set_long (h, "jPointsAreConsecutive", 0), 0); - GRIB_CHECK (grib_set_long (h, "uvRelativeToGrid", 1), 0); - GRIB_CHECK (grib_set_long (h, "Nux", 53), 0); - GRIB_CHECK (grib_set_long (h, "Nuy", 53), 0); - GRIB_CHECK (grib_set_long (h, "Ncx", 8), 0); - GRIB_CHECK (grib_set_long (h, "Ncy", 8), 0); - GRIB_CHECK (grib_set_double (h, "latitudeOfFirstGridPointInDegrees", 66.7684949529709), 0); - GRIB_CHECK (grib_set_double (h, "longitudeOfFirstGridPointInDegrees", 25.1580207144963), 0); - GRIB_CHECK (grib_set_double (h, "latitudeOfSouthernPoleInDegrees", 0.000000000000000E+000), 0); - GRIB_CHECK (grib_set_double (h, "longitudeOfSouthernPoleInDegrees", 0.000000000000000E+000), 0); - GRIB_CHECK (grib_set_double (h, "LaDInDegrees", 67.3600000000000), 0); - GRIB_CHECK (grib_set_double (h, "LoVInDegrees", 26.6400000000000), 0); - GRIB_CHECK (grib_set_double (h, "Latin1InDegrees", 67.3600000000000), 0); - GRIB_CHECK (grib_set_double (h, "Latin2InDegrees", 67.3600000000000), 0); - GRIB_CHECK (grib_set_long (h, "projectionCentreFlag", 0), 0); - GRIB_CHECK (grib_set_long (h, "NV", 0), 0); - GRIB_CHECK (grib_set_long (h, "year", 2009), 0); - GRIB_CHECK (grib_set_long (h, "month", 5), 0); - GRIB_CHECK (grib_set_long (h, "day", 28), 0); - GRIB_CHECK (grib_set_long (h, "hour", 0), 0); - GRIB_CHECK (grib_set_long (h, "minute", 0), 0); - GRIB_CHECK (grib_set_long (h, "second", 0), 0); - len = strlen ("s"); - GRIB_CHECK (grib_set_string (h, "indicatorOfUnitOfTimeRange", "s", &len), 0); - len = strlen ("s"); - GRIB_CHECK (grib_set_string (h, "stepUnits", "s", &len), 0); - GRIB_CHECK (grib_set_long (h, "endStep", 3600), 0); - GRIB_CHECK (grib_set_long (h, "bitsPerValue", 16), 0); - len = strlen ("grid_simple"); - GRIB_CHECK (grib_set_string (h, "packingType", "grid_simple", &len), 0); - GRIB_CHECK (grib_set_long (h, "numberOfDataPoints", 4096), 0); - GRIB_CHECK (grib_set_double_array (h, "values", values, len), 0); - GRIB_CHECK (grib_handle_delete (h), 0); + for (igrid = 0; igrid < 3; igrid++) + { + GRIB_CHECK (((h = grib_handle_new_from_samples (NULL, "reduced_gg_ml_grib2")) == NULL), 0); + len = strlen ("lambert_lam"); + GRIB_CHECK (grib_set_string (h, "gridType", "lambert_lam", &len), 0); + GRIB_CHECK (grib_set_long (h, "centre", 85), 0); + len = strlen (grids[igrid]); + GRIB_CHECK (grib_set_string (h, "gridType", grids[igrid], &len), 0); + GRIB_CHECK (grib_set_long (h, "Nx", 64), 0); + GRIB_CHECK (grib_set_long (h, "Ny", 64), 0); + GRIB_CHECK (grib_set_long (h, "iScansNegatively", 0), 0); + GRIB_CHECK (grib_set_long (h, "jScansPositively", 1), 0); + GRIB_CHECK (grib_set_long (h, "jPointsAreConsecutive", 0), 0); + GRIB_CHECK (grib_set_long (h, "Nux", 53), 0); + GRIB_CHECK (grib_set_long (h, "Nuy", 53), 0); + GRIB_CHECK (grib_set_long (h, "Ncx", 8), 0); + GRIB_CHECK (grib_set_long (h, "Ncy", 8), 0); + if (igrid == 0) + { + GRIB_CHECK (grib_set_double (h, "DxInMetres", 2500.00000000000), 0); + GRIB_CHECK (grib_set_double (h, "DyInMetres", 2500.00000000000), 0); + GRIB_CHECK (grib_set_double (h, "latitudeOfFirstGridPointInDegrees", 66.7684949529709), 0); + GRIB_CHECK (grib_set_double (h, "longitudeOfFirstGridPointInDegrees", 25.1580207144963), 0); + GRIB_CHECK (grib_set_double (h, "latitudeOfSouthernPoleInDegrees", 0.000000000000000E+000), 0); + GRIB_CHECK (grib_set_double (h, "longitudeOfSouthernPoleInDegrees", 0.000000000000000E+000), 0); + GRIB_CHECK (grib_set_double (h, "LaDInDegrees", 67.3600000000000), 0); + GRIB_CHECK (grib_set_double (h, "LoVInDegrees", 26.6400000000000), 0); + GRIB_CHECK (grib_set_double (h, "Latin1InDegrees", 67.3600000000000), 0); + GRIB_CHECK (grib_set_double (h, "Latin2InDegrees", 67.3600000000000), 0); + GRIB_CHECK (grib_set_long (h, "projectionCentreFlag", 0), 0); + GRIB_CHECK (grib_set_long (h, "uvRelativeToGrid", 1), 0); + } + else if (igrid == 1) + { + GRIB_CHECK (grib_set_double (h, "latitudeOfFirstGridPointInDegrees", 67.9372009520603), 0); + GRIB_CHECK (grib_set_double (h, "longitudeOfFirstGridPointInDegrees", 25.1580207144963), 0); + GRIB_CHECK (grib_set_double (h, "LaDInDegrees", 0.), 0); + GRIB_CHECK (grib_set_double (h, "latitudeOfLastGridPointInDegrees", 72.9372009520603), 0); + GRIB_CHECK (grib_set_double (h, "longitudeOfLastGridPointInDegrees", 29.1580207144963), 0); + GRIB_CHECK (grib_set_double (h, "orientationOfTheGridInDegrees", 0.), 0); + GRIB_CHECK (grib_set_long (h, "uvRelativeToGrid", 1), 0); + } + else if (igrid == 2) + { + GRIB_CHECK (grib_set_double (h, "DxInMetres", 2500.00000000000), 0); + GRIB_CHECK (grib_set_double (h, "DyInMetres", 2500.00000000000), 0); + GRIB_CHECK (grib_set_double (h, "latitudeOfFirstGridPointInDegrees", 67.9372009520603), 0); + GRIB_CHECK (grib_set_double (h, "longitudeOfFirstGridPointInDegrees", 25.1580207144963), 0); + GRIB_CHECK (grib_set_double (h, "LaDInDegrees", 0.), 0); + GRIB_CHECK (grib_set_double (h, "orientationOfTheGridInDegrees", 0.), 0); + } + + + GRIB_CHECK (grib_set_long (h, "NV", 0), 0); + GRIB_CHECK (grib_set_long (h, "year", 2009), 0); + GRIB_CHECK (grib_set_long (h, "month", 5), 0); + GRIB_CHECK (grib_set_long (h, "day", 28), 0); + GRIB_CHECK (grib_set_long (h, "hour", 0), 0); + GRIB_CHECK (grib_set_long (h, "minute", 0), 0); + GRIB_CHECK (grib_set_long (h, "second", 0), 0); + len = strlen ("s"); + GRIB_CHECK (grib_set_string (h, "indicatorOfUnitOfTimeRange", "s", &len), 0); + len = strlen ("s"); + GRIB_CHECK (grib_set_string (h, "stepUnits", "s", &len), 0); + GRIB_CHECK (grib_set_long (h, "endStep", 3600), 0); + GRIB_CHECK (grib_set_long (h, "bitsPerValue", 16), 0); + len = strlen ("grid_simple"); + GRIB_CHECK (grib_set_string (h, "packingType", "grid_simple", &len), 0); + GRIB_CHECK (grib_set_long (h, "numberOfDataPoints", 4096), 0); + len = 4096; + GRIB_CHECK (grib_set_double_array (h, "values", values, len), 0); + + if (1) + { + char f[128]; + FILE * fp; + size_t size; + char * buffer; + sprintf (f, "lam_gp_%s.grib", grids[igrid]); + fp = fopen (f, "w"); + GRIB_CHECK (grib_get_message (h, &buffer, &size), 0); + fwrite (buffer, 1, size, fp); + fclose (fp); + } + + GRIB_CHECK (grib_handle_delete (h), 0); + } return 0; } diff --git a/tests/lam_gp.sh b/tests/lam_gp.sh index aeafbb86b..692b93371 100755 --- a/tests/lam_gp.sh +++ b/tests/lam_gp.sh @@ -10,4 +10,5 @@ . ./include.sh -exec $test_dir/lam_gp + exec $test_dir/lam_gp +#xterm -e gdb $test_dir/lam_gp From aa6f3930373755a681414d7a4d48c424a4e53bd2 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 10 May 2018 12:12:44 +0100 Subject: [PATCH 007/414] MeteoFrance lam OMM: improve test code --- tests/lam_bf.c | 9 ++++++--- tests/lam_bf.sh | 7 +++++-- tests/lam_gp.c | 9 ++++++--- tests/lam_gp.sh | 7 +++++-- 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/tests/lam_bf.c b/tests/lam_bf.c index 280c02077..d242c51fa 100644 --- a/tests/lam_bf.c +++ b/tests/lam_bf.c @@ -717,11 +717,14 @@ int main (int argc, char * argv[]) char f[128]; FILE * fp; size_t size; - char * buffer; - sprintf (f, "lam_bf_%s.grib", grids[igrid]); + const void * buffer = NULL; + sprintf (f, "lam_bf_%s.grib", grids[igrid]); fp = fopen (f, "w"); GRIB_CHECK (grib_get_message (h, &buffer, &size), 0); - fwrite (buffer, 1, size, fp); + if (fwrite (buffer, 1, size, fp) != size) { + perror(f); + return 1; + } fclose (fp); } diff --git a/tests/lam_bf.sh b/tests/lam_bf.sh index d3d7a15f3..8f285636b 100755 --- a/tests/lam_bf.sh +++ b/tests/lam_bf.sh @@ -10,5 +10,8 @@ . ./include.sh - exec $test_dir/lam_bf -#xterm -e gdb $test_dir/lam_bf +${test_dir}/lam_bf + +${tools_dir}/grib_dump -O lam_bf_lambert_bf.grib +${tools_dir}/grib_dump -O lam_bf_mercator_bf.grib +${tools_dir}/grib_dump -O lam_bf_polar_stereographic_bf.grib diff --git a/tests/lam_gp.c b/tests/lam_gp.c index ec6fc590c..f85babb57 100644 --- a/tests/lam_gp.c +++ b/tests/lam_gp.c @@ -920,11 +920,14 @@ int main (int argc, char * argv[]) char f[128]; FILE * fp; size_t size; - char * buffer; - sprintf (f, "lam_gp_%s.grib", grids[igrid]); + const void * buffer = NULL; + sprintf (f, "lam_gp_%s.grib", grids[igrid]); fp = fopen (f, "w"); GRIB_CHECK (grib_get_message (h, &buffer, &size), 0); - fwrite (buffer, 1, size, fp); + if (fwrite (buffer, 1, size, fp) != size) { + perror(f); + return 1; + } fclose (fp); } diff --git a/tests/lam_gp.sh b/tests/lam_gp.sh index 692b93371..17aa6d9a8 100755 --- a/tests/lam_gp.sh +++ b/tests/lam_gp.sh @@ -10,5 +10,8 @@ . ./include.sh - exec $test_dir/lam_gp -#xterm -e gdb $test_dir/lam_gp +${test_dir}/lam_gp + +${tools_dir}/grib_dump -O lam_gp_lambert_lam.grib +${tools_dir}/grib_dump -O lam_gp_mercator_lam.grib +${tools_dir}/grib_dump -O lam_gp_polar_stereographic_lam.grib From bdda7f44b70c53295bd6828775c8edeffe254480 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 10 May 2018 12:13:12 +0100 Subject: [PATCH 008/414] MeteoFrance lam OMM: Add note re non-existent key I (need to revisit) --- definitions/grib2/template.5.53.def | 1 + 1 file changed, 1 insertion(+) diff --git a/definitions/grib2/template.5.53.def b/definitions/grib2/template.5.53.def index a0b94b1e6..1cddecafb 100644 --- a/definitions/grib2/template.5.53.def +++ b/definitions/grib2/template.5.53.def @@ -18,6 +18,7 @@ transient computeLaplacianOperator=1 : hidden; codetable[1] biFourierSubTruncationType ('3.99.table',masterDir,localDir) : dump; unsigned[1] biFourierDoNotPackAxes = 0 : dump; +# TODO: What is I? meta _numberOfValues bifourier_truncation(I,J,numberOfValues): read_only; constant laplacianScalingFactorUnset = -2147483647; From f17b4c7716bfa098f81a89e6c67983c37de736d4 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 10 May 2018 12:13:50 +0100 Subject: [PATCH 009/414] MeteoFrance lam OMM: Fix numberOfValues key and compiler warnings --- ..._accessor_class_data_g2bifourier_packing.c | 21 +++++++------------ 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/src/grib_accessor_class_data_g2bifourier_packing.c b/src/grib_accessor_class_data_g2bifourier_packing.c index 5ac6a7905..3855b6143 100644 --- a/src/grib_accessor_class_data_g2bifourier_packing.c +++ b/src/grib_accessor_class_data_g2bifourier_packing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2015 ECMWF. + * Copyright 2005-2018 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. @@ -192,7 +192,7 @@ static void init(grib_accessor* a,const long v, grib_arguments* args) self->biFourierSubTruncationType = grib_arguments_get_name(gh,args,self->carg++); self->biFourierDoNotPackAxes = grib_arguments_get_name(gh,args,self->carg++); self->biFourierMakeTemplate = grib_arguments_get_name(gh,args,self->carg++); - self->numberOfValues = grib_arguments_get_name(gh,args,self->carg++); + /*self->numberOfValues = grib_arguments_get_name(gh,args,self->carg++);*/ a->flags |= GRIB_ACCESSOR_FLAG_DATA; self->dirty=1; @@ -204,10 +204,9 @@ static int value_count(grib_accessor* a,long* numberOfValues) grib_handle* gh = grib_handle_of_accessor(a); *numberOfValues=0; - return grib_get_long_internal(gh,self->numberOfValues,numberOfValues); + return grib_get_long_internal(gh,self->number_of_values,numberOfValues); } - #define MAX(x,y) ((x) > (y) ? (x) : (y)) #define MIN(x,y) ((x) < (y) ? (x) : (y)) @@ -621,15 +620,11 @@ cleanup: return NULL; } - - -static int unpack_double(grib_accessor* a, double* val, size_t *len) { +static int unpack_double(grib_accessor* a, double* val, size_t *len) +{ grib_accessor_data_g2bifourier_packing* self = (grib_accessor_data_g2bifourier_packing*)a; grib_handle* gh = grib_handle_of_accessor(a); - size_t n_vals_bif = 0; - size_t n_vals_sub; - unsigned char* buf = (unsigned char*)gh->buffer->data; unsigned char* hres = NULL; unsigned char* lres = NULL; @@ -701,7 +696,6 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len) { isp = 0; for_ij () { - double current_val; int insub; calc_insub (); @@ -748,10 +742,9 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len) int isp; bif_trunc_t * bt; - int last; double max = 0; double min = 0; - grib_context* c = gh->context; + /*grib_context* c = gh->context;*/ int ret = GRIB_SUCCESS; int i, j, k; @@ -935,7 +928,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len) grib_buffer_replace (a, buf, buflen, 1, 1); - if ((ret = grib_set_long_internal (gh, self->numberOfValues, bt->n_vals_bif)) != GRIB_SUCCESS) + if ((ret = grib_set_long_internal (gh, self->number_of_values, bt->n_vals_bif)) != GRIB_SUCCESS) goto cleanup; cleanup: From 6150f8415ebdf775c0e9ee8488713e2d83105963 Mon Sep 17 00:00:00 2001 From: Sebastien Villaume Date: Tue, 15 May 2018 14:30:14 +0100 Subject: [PATCH 010/414] latest template file from Yann, removed part template files --- definitions/grib2/template.3.10.def | 34 ++++++++++-- definitions/grib2/template.3.10.part1.def | 11 ---- definitions/grib2/template.3.10.part2.def | 16 ------ definitions/grib2/template.3.10.part3.def | 8 --- definitions/grib2/template.3.20.def | 41 ++++++++++++--- definitions/grib2/template.3.20.part1.def | 27 ---------- definitions/grib2/template.3.20.part2.def | 8 --- definitions/grib2/template.3.30.def | 50 ++++++++++++++++-- definitions/grib2/template.3.30.part1.def | 17 ------ definitions/grib2/template.3.30.part2.def | 10 ---- definitions/grib2/template.3.30.part3.def | 4 -- definitions/grib2/template.3.30.part4.def | 21 -------- definitions/grib2/template.3.61.def | 38 ++++++++++++-- definitions/grib2/template.3.62.def | 37 ++++++++++++- definitions/grib2/template.3.63.def | 63 +++++++++++++++++++++-- definitions/grib2/template.5.53.def | 1 - definitions/grib2/template.7.53.def | 2 +- 17 files changed, 238 insertions(+), 150 deletions(-) delete mode 100644 definitions/grib2/template.3.10.part1.def delete mode 100644 definitions/grib2/template.3.10.part2.def delete mode 100644 definitions/grib2/template.3.10.part3.def delete mode 100644 definitions/grib2/template.3.20.part1.def delete mode 100644 definitions/grib2/template.3.20.part2.def delete mode 100644 definitions/grib2/template.3.30.part1.def delete mode 100644 definitions/grib2/template.3.30.part2.def delete mode 100644 definitions/grib2/template.3.30.part3.def delete mode 100644 definitions/grib2/template.3.30.part4.def diff --git a/definitions/grib2/template.3.10.def b/definitions/grib2/template.3.10.def index 46b8c8260..07d495dca 100644 --- a/definitions/grib2/template.3.10.def +++ b/definitions/grib2/template.3.10.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2017 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. @@ -21,15 +21,41 @@ alias numberOfPointsAlongAMeridian=Nj; alias Ny = Nj ; alias geography.Nj=Nj; -include "grib2/template.3.10.part1.def" +# La1 - latitude of first grid point +signed[4] latitudeOfFirstGridPoint: edition_specific,no_copy ; +alias La1 = latitudeOfFirstGridPoint; +meta geography.latitudeOfFirstGridPointInDegrees scale(latitudeOfFirstGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; + +# Lo1 - longitude of first grid point +signed[4] longitudeOfFirstGridPoint : edition_specific,no_copy; +alias Lo1 = longitudeOfFirstGridPoint; +meta geography.longitudeOfFirstGridPointInDegrees scale(longitudeOfFirstGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; include "grib2/template.3.resolution_flags.def"; -include "grib2/template.3.10.part2.def" +# LaD - Latitude(s) at which the Mercator projection intersects the Earth +# (Latitude(s) where Di and Dj are specified) +signed[4] LaD : edition_specific,no_copy; +meta geography.LaDInDegrees scale(LaD,oneConstant,grib2divider,truncateDegrees) : dump; + +# La2 - latitude of last grid point +signed[4] latitudeOfLastGridPoint : edition_specific,no_copy; +alias La2 = latitudeOfLastGridPoint; +meta geography.latitudeOfLastGridPointInDegrees scale(latitudeOfLastGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; + +# Lo2 - longitude of last grid point +signed[4] longitudeOfLastGridPoint: edition_specific,no_copy ; +alias Lo2 = longitudeOfLastGridPoint; +meta geography.longitudeOfLastGridPointInDegrees scale(longitudeOfLastGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; include "grib2/template.3.scanning_mode.def"; -include "grib2/template.3.10.part3.def" +# Orientation of the grid, angle between i direction on the map and the equator +# NOTE 1: Limited to the range of 0 to 90 degrees; if the angle of orientation of the grid is neither 0 nor 90 degrees, +# Di and Dj must be equal to each other +unsigned[4] orientationOfTheGrid : dump ; +meta geography.orientationOfTheGridInDegrees + scale(orientationOfTheGrid,oneConstant,grib2divider,truncateDegrees) : dump; # Di - longitudinal direction grid length # NOTE 2: Grid lengths are in units of 10**-3 m, at the latitude specified by LaD diff --git a/definitions/grib2/template.3.10.part1.def b/definitions/grib2/template.3.10.part1.def deleted file mode 100644 index f5385b595..000000000 --- a/definitions/grib2/template.3.10.part1.def +++ /dev/null @@ -1,11 +0,0 @@ -# La1 - latitude of first grid point -signed[4] latitudeOfFirstGridPoint: edition_specific,no_copy ; -alias La1 = latitudeOfFirstGridPoint; -meta geography.latitudeOfFirstGridPointInDegrees scale(latitudeOfFirstGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; - -# Lo1 - longitude of first grid point -signed[4] longitudeOfFirstGridPoint : edition_specific,no_copy; -alias Lo1 = longitudeOfFirstGridPoint; -meta geography.longitudeOfFirstGridPointInDegrees scale(longitudeOfFirstGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; - - diff --git a/definitions/grib2/template.3.10.part2.def b/definitions/grib2/template.3.10.part2.def deleted file mode 100644 index 6c2e3e256..000000000 --- a/definitions/grib2/template.3.10.part2.def +++ /dev/null @@ -1,16 +0,0 @@ -# LaD - Latitude(s) at which the Mercator projection intersects the Earth -# (Latitude(s) where Di and Dj are specified) -signed[4] LaD : edition_specific,no_copy; -meta geography.LaDInDegrees scale(LaD,oneConstant,grib2divider,truncateDegrees) : dump; - -# La2 - latitude of last grid point -signed[4] latitudeOfLastGridPoint : edition_specific,no_copy; -alias La2 = latitudeOfLastGridPoint; -meta geography.latitudeOfLastGridPointInDegrees scale(latitudeOfLastGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; - -# Lo2 - longitude of last grid point -signed[4] longitudeOfLastGridPoint: edition_specific,no_copy ; -alias Lo2 = longitudeOfLastGridPoint; -meta geography.longitudeOfLastGridPointInDegrees scale(longitudeOfLastGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; - - diff --git a/definitions/grib2/template.3.10.part3.def b/definitions/grib2/template.3.10.part3.def deleted file mode 100644 index 2bc21e794..000000000 --- a/definitions/grib2/template.3.10.part3.def +++ /dev/null @@ -1,8 +0,0 @@ -# Orientation of the grid, angle between i direction on the map and the equator -# NOTE 1: Limited to the range of 0 to 90 degrees; if the angle of orientation of the grid is neither 0 nor 90 degrees, -# Di and Dj must be equal to each other -unsigned[4] orientationOfTheGrid : dump ; -meta geography.orientationOfTheGridInDegrees - scale(orientationOfTheGrid,oneConstant,grib2divider,truncateDegrees) : dump; - - diff --git a/definitions/grib2/template.3.20.def b/definitions/grib2/template.3.20.def index 4e83975b5..5b72d7516 100644 --- a/definitions/grib2/template.3.20.def +++ b/definitions/grib2/template.3.20.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2017 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. @@ -25,22 +25,50 @@ alias Nj = Ny; alias numberOfPointsAlongYAxis = Ny; alias geography.Ny=Ny; -include "grib2/template.3.20.part1.def" +# La1 - latitude of first grid point +signed[4] latitudeOfFirstGridPoint : edition_specific ; +meta geography.latitudeOfFirstGridPointInDegrees scale(latitudeOfFirstGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; +alias La1 = latitudeOfFirstGridPoint; +# Lo1 - longitude of first grid point +unsigned[4] longitudeOfFirstGridPoint : edition_specific; +meta geography.longitudeOfFirstGridPointInDegrees scale(longitudeOfFirstGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; +alias Lo1 = longitudeOfFirstGridPoint; + +# Resolution and component flag +# NOTE 1 NOT FOUND +flags[1] resolutionAndComponentFlags 'grib2/tables/[tablesVersion]/3.3.table' : dump; + +# LaD - Latitude where Dx and Dy are specified +signed[4] LaD : edition_specific; +alias latitudeWhereDxAndDyAreSpecified=LaD; +meta geography.LaDInDegrees scale(LaD,oneConstant,grib2divider,truncateDegrees) : dump; +alias latitudeWhereDxAndDyAreSpecifiedInDegrees=LaDInDegrees; + +# LoV - orientation of the grid +# NOTE 2 NOT FOUND +signed[4] orientationOfTheGrid : edition_specific; +alias LoV = orientationOfTheGrid ; +meta geography.orientationOfTheGridInDegrees scale(orientationOfTheGrid,oneConstant,grib2divider,truncateDegrees) : dump; # Dx - X-direction grid length -# Grid length is in units of 10-3 m at the latitude specified by LaD +# NOTE 3: Grid length is in units of 10-3 m at the latitude specified by LaD unsigned[4] Dx : edition_specific; meta geography.DxInMetres scale(Dx,one,thousand,truncateDegrees) : dump; alias xDirectionGridLength=Dx; # Dy - Y-direction grid length -# Grid length is in units of 10-3 m at the latitude specified by LaD +# NOTE 3: Grid length is in units of 10-3 m at the latitude specified by LaD unsigned[4] Dy : edition_specific; meta geography.DyInMetres scale(Dy,one,thousand,truncateDegrees) : dump; alias yDirectionGridLength=Dy; -include "grib2/template.3.20.part2.def" +# Projection centre flag +flags[1] projectionCentreFlag 'grib2/tables/[tablesVersion]/3.5.table' : dump; +# Note our flagbit numbers go from 7 to 0, while WMO convention is from 1 to 8 +# If bit 1 is 0, then the North Pole is on the projection plane +# If bit 1 is 1, then the South Pole is on the projection plane +flagbit southPoleOnProjectionPlane(projectionCentreFlag,7) : dump; # WMO bit 1 include "grib2/template.3.scanning_mode.def"; @@ -50,14 +78,11 @@ iterator polar_stereographic(numberOfPoints,missingValue,values, latitudeOfFirstGridPointInDegrees,longitudeOfFirstGridPointInDegrees, southPoleOnProjectionPlane, orientationOfTheGridInDegrees, - LaDInDegrees, DxInMetres,DyInMetres, iScansNegatively, jScansPositively, jPointsAreConsecutive, alternativeRowScanning); -nearest polar_stereographic(values,radius,Nx,Ny); - # END 2/template.3.20 ---------------------------------------------------------------------- diff --git a/definitions/grib2/template.3.20.part1.def b/definitions/grib2/template.3.20.part1.def deleted file mode 100644 index 86f6f13a3..000000000 --- a/definitions/grib2/template.3.20.part1.def +++ /dev/null @@ -1,27 +0,0 @@ -# La1 - latitude of first grid point -signed[4] latitudeOfFirstGridPoint : edition_specific ; -meta geography.latitudeOfFirstGridPointInDegrees scale(latitudeOfFirstGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; -alias La1 = latitudeOfFirstGridPoint; - -# Lo1 - longitude of first grid point -unsigned[4] longitudeOfFirstGridPoint : edition_specific; -meta geography.longitudeOfFirstGridPointInDegrees scale(longitudeOfFirstGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; -alias Lo1 = longitudeOfFirstGridPoint; - -# Resolution and component flag -# NOTE 1 NOT FOUND -flags[1] resolutionAndComponentFlag 'grib2/tables/[tablesVersion]/3.3.table' : dump; - -# LaD - Latitude where Dx and Dy are specified -signed[4] LaD : edition_specific; -alias latitudeWhereDxAndDyAreSpecified=LaD; -meta geography.LaDInDegrees scale(LaD,oneConstant,grib2divider,truncateDegrees) : dump; -alias latitudeWhereDxAndDyAreSpecifiedInDegrees=LaDInDegrees; - -# LoV - orientation of the grid -# NOTE 2 NOT FOUND -signed[4] orientationOfTheGrid : edition_specific; -alias LoV = orientationOfTheGrid ; -meta geography.orientationOfTheGridInDegrees scale(orientationOfTheGrid,oneConstant,grib2divider,truncateDegrees) : dump; - - diff --git a/definitions/grib2/template.3.20.part2.def b/definitions/grib2/template.3.20.part2.def deleted file mode 100644 index d5fdee0e4..000000000 --- a/definitions/grib2/template.3.20.part2.def +++ /dev/null @@ -1,8 +0,0 @@ -# Projection centre flag -flags[1] projectionCentreFlag 'grib2/tables/[tablesVersion]/3.5.table' : dump; -# Note our flagbit numbers go from 7 to 0, while WMO convention is from 1 to 8 -# If bit 1 is 0, then the North Pole is on the projection plane -# If bit 1 is 1, then the South Pole is on the projection plane -flagbit southPoleOnProjectionPlane(projectionCentreFlag,7) : dump; # WMO bit 1 - - diff --git a/definitions/grib2/template.3.30.def b/definitions/grib2/template.3.30.def index 0fe65ba22..b8036c9b3 100644 --- a/definitions/grib2/template.3.30.def +++ b/definitions/grib2/template.3.30.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2017 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. @@ -20,11 +20,32 @@ alias Nj = Ny; alias numberOfPointsAlongYAxis = Ny; alias geography.Ny=Ny; -include "grib2/template.3.30.part1.def" +# La1 - latitude of first grid point +signed[4] latitudeOfFirstGridPoint : edition_specific; +alias La1 = latitudeOfFirstGridPoint; +meta geography.latitudeOfFirstGridPointInDegrees + scale(latitudeOfFirstGridPoint,one,grib2divider,truncateDegrees) : dump; +alias La1InDegrees=latitudeOfFirstGridPointInDegrees; +#meta latitudeOfFirstGridPointInMicrodegrees times(latitudeOfFirstGridPointInDegrees,oneConstant): no_copy; + +# Lo1 - longitude of first grid point +unsigned[4] longitudeOfFirstGridPoint : edition_specific; +alias Lo1 = longitudeOfFirstGridPoint; +meta geography.longitudeOfFirstGridPointInDegrees + scale(longitudeOfFirstGridPoint,one,grib2divider,truncateDegrees) : dump; +alias Lo1InDegrees = longitudeOfFirstGridPointInDegrees; +#meta longitudeOfFirstGridPointInMicrodegrees times(longitudeOfFirstGridPoint,oneConstant) : no_copy; include "grib2/template.3.resolution_flags.def"; -include "grib2/template.3.30.part2.def" +# LaD - Latitude where Dx and Dy are specified +signed[4] LaD : edition_specific ; +alias latitudeWhereDxAndDyAreSpecified=LaD; +meta geography.LaDInDegrees scale(LaD,one,grib2divider,truncateDegrees) : dump; + +# LoV - Longitude of meridian parallel to Y-axis along which latitude increases as the Y-coordinate increases +unsigned[4] LoV : edition_specific; +meta geography.LoVInDegrees scale(LoV,one,grib2divider,truncateDegrees) : dump; # Dx - X-direction grid length # NOTE 1 NOT FOUND @@ -40,11 +61,30 @@ alias yDirectionGridLength=Dy ; alias Dj = Dy; meta geography.DyInMetres scale(Dy,one,thousand) : dump; -include "grib2/template.3.30.part3.def" +# Projection centre flag +flags[1] projectionCentreFlag 'grib2/tables/[tablesVersion]/3.5.table' : dump; include "grib2/template.3.scanning_mode.def"; -include "grib2/template.3.30.part4.def" +# Latin 1 - first latitude from the pole at which the secant cone cuts the sphere +signed[4] Latin1 : edition_specific; +alias FirstLatitude=Latin1; +meta geography.Latin1InDegrees scale(Latin1,one,grib2divider,truncateDegrees) : dump; + +# Latin 2 - second latitude from the pole at which the secant cone cuts the sphere +signed[4] Latin2 : dump; +alias SecondLatitude=Latin2; +meta geography.Latin2InDegrees scale(Latin2,one,grib2divider,truncateDegrees) : dump; + +# Latitude of the southern pole of projection +signed[4] latitudeOfSouthernPole : edition_specific; +alias latitudeOfTheSouthernPoleOfProjection=latitudeOfSouthernPole; +meta geography.latitudeOfSouthernPoleInDegrees scale(latitudeOfSouthernPole ,one,grib2divider,truncateDegrees) : dump; + +# Longitude of the southern pole of projection +unsigned[4] longitudeOfSouthernPole : edition_specific; +alias longitudeOfTheSouthernPoleOfProjection=longitudeOfSouthernPole; +meta geography.longitudeOfSouthernPoleInDegrees scale(longitudeOfSouthernPole,oneConstant,grib2divider,truncateDegrees) : dump; iterator lambert_conformal(numberOfPoints,missingValue,values, radius,Nx,Ny, diff --git a/definitions/grib2/template.3.30.part1.def b/definitions/grib2/template.3.30.part1.def deleted file mode 100644 index 980ce52c0..000000000 --- a/definitions/grib2/template.3.30.part1.def +++ /dev/null @@ -1,17 +0,0 @@ -# La1 - latitude of first grid point -signed[4] latitudeOfFirstGridPoint : edition_specific; -alias La1 = latitudeOfFirstGridPoint; -meta geography.latitudeOfFirstGridPointInDegrees - scale(latitudeOfFirstGridPoint,one,grib2divider,truncateDegrees) : dump; -alias La1InDegrees=latitudeOfFirstGridPointInDegrees; -#meta latitudeOfFirstGridPointInMicrodegrees times(latitudeOfFirstGridPointInDegrees,oneConstant): no_copy; - -# Lo1 - longitude of first grid point -unsigned[4] longitudeOfFirstGridPoint : edition_specific; -alias Lo1 = longitudeOfFirstGridPoint; -meta geography.longitudeOfFirstGridPointInDegrees - scale(longitudeOfFirstGridPoint,one,grib2divider,truncateDegrees) : dump; -alias Lo1InDegrees = longitudeOfFirstGridPointInDegrees; -#meta longitudeOfFirstGridPointInMicrodegrees times(longitudeOfFirstGridPoint,oneConstant) : no_copy; - - diff --git a/definitions/grib2/template.3.30.part2.def b/definitions/grib2/template.3.30.part2.def deleted file mode 100644 index a55022338..000000000 --- a/definitions/grib2/template.3.30.part2.def +++ /dev/null @@ -1,10 +0,0 @@ -# LaD - Latitude where Dx and Dy are specified -signed[4] LaD : edition_specific ; -alias latitudeWhereDxAndDyAreSpecified=LaD; -meta geography.LaDInDegrees scale(LaD,one,grib2divider,truncateDegrees) : dump; - - -# LoV - Longitude of meridian parallel to Y-axis along which latitude increases as the Y-coordinate increases -unsigned[4] LoV : edition_specific; -meta geography.LoVInDegrees scale(LoV,one,grib2divider,truncateDegrees) : dump; - diff --git a/definitions/grib2/template.3.30.part3.def b/definitions/grib2/template.3.30.part3.def deleted file mode 100644 index bc905addd..000000000 --- a/definitions/grib2/template.3.30.part3.def +++ /dev/null @@ -1,4 +0,0 @@ - -# Projection centre flag -flags[1] projectionCentreFlag 'grib2/tables/[tablesVersion]/3.5.table' : dump; - diff --git a/definitions/grib2/template.3.30.part4.def b/definitions/grib2/template.3.30.part4.def deleted file mode 100644 index 01cfdfb5e..000000000 --- a/definitions/grib2/template.3.30.part4.def +++ /dev/null @@ -1,21 +0,0 @@ -# Latin 1 - first latitude from the pole at which the secant cone cuts the sphere -signed[4] Latin1 : edition_specific; -alias FirstLatitude=Latin1; -meta geography.Latin1InDegrees scale(Latin1,one,grib2divider,truncateDegrees) : dump; - -# Latin 2 - second latitude from the pole at which the secant cone cuts the sphere -signed[4] Latin2 : dump; -alias SecondLatitude=Latin2; -meta geography.Latin2InDegrees scale(Latin2,one,grib2divider,truncateDegrees) : dump; - -# Latitude of the southern pole of projection -signed[4] latitudeOfSouthernPole : edition_specific; -alias latitudeOfTheSouthernPoleOfProjection=latitudeOfSouthernPole; -meta geography.latitudeOfSouthernPoleInDegrees scale(latitudeOfSouthernPole ,one,grib2divider,truncateDegrees) : dump; - -# Longitude of the southern pole of projection -unsigned[4] longitudeOfSouthernPole : edition_specific; -alias longitudeOfTheSouthernPoleOfProjection=longitudeOfSouthernPole; -meta geography.longitudeOfSouthernPoleInDegrees scale(longitudeOfSouthernPole,oneConstant,grib2divider,truncateDegrees) : dump; - - diff --git a/definitions/grib2/template.3.61.def b/definitions/grib2/template.3.61.def index 04ba90edc..5a25dfa8b 100644 --- a/definitions/grib2/template.3.61.def +++ b/definitions/grib2/template.3.61.def @@ -15,8 +15,40 @@ include "grib2/template.3.bf.def" include "grib2/template.3.shape_of_the_earth.def"; -include "grib2/template.3.10.part1.def" -include "grib2/template.3.10.part2.def" -include "grib2/template.3.10.part3.def" +#include "grib2/template.3.10.part1.def" +# La1 - latitude of first grid point +signed[4] latitudeOfFirstGridPoint: edition_specific,no_copy ; +alias La1 = latitudeOfFirstGridPoint; +meta geography.latitudeOfFirstGridPointInDegrees scale(latitudeOfFirstGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; + +# Lo1 - longitude of first grid point +signed[4] longitudeOfFirstGridPoint : edition_specific,no_copy; +alias Lo1 = longitudeOfFirstGridPoint; +meta geography.longitudeOfFirstGridPointInDegrees scale(longitudeOfFirstGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; + + +#include "grib2/template.3.10.part2.def" +# LaD - Latitude(s) at which the Mercator projection intersects the Earth +# (Latitude(s) where Di and Dj are specified) +signed[4] LaD : edition_specific,no_copy; +meta geography.LaDInDegrees scale(LaD,oneConstant,grib2divider,truncateDegrees) : dump; + +# La2 - latitude of last grid point +signed[4] latitudeOfLastGridPoint : edition_specific,no_copy; +alias La2 = latitudeOfLastGridPoint; +meta geography.latitudeOfLastGridPointInDegrees scale(latitudeOfLastGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; + +# Lo2 - longitude of last grid point +signed[4] longitudeOfLastGridPoint: edition_specific,no_copy ; +alias Lo2 = longitudeOfLastGridPoint; +meta geography.longitudeOfLastGridPointInDegrees scale(longitudeOfLastGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; + +#include "grib2/template.3.10.part3.def" +# Orientation of the grid, angle between i direction on the map and the equator +# NOTE 1: Limited to the range of 0 to 90 degrees; if the angle of orientation of the grid is neither 0 nor 90 degrees, +# Di and Dj must be equal to each other +unsigned[4] orientationOfTheGrid : dump ; +meta geography.orientationOfTheGridInDegrees + scale(orientationOfTheGrid,oneConstant,grib2divider,truncateDegrees) : dump; # END 2/template.3.61 ---------------------------------------------------------------------- diff --git a/definitions/grib2/template.3.62.def b/definitions/grib2/template.3.62.def index 10f7eee57..f455397ae 100644 --- a/definitions/grib2/template.3.62.def +++ b/definitions/grib2/template.3.62.def @@ -18,8 +18,41 @@ include "grib2/template.3.shape_of_the_earth.def"; transient oneThousand=1000; -include "grib2/template.3.20.part1.def" -include "grib2/template.3.20.part2.def" +#include "grib2/template.3.20.part1.def" +# La1 - latitude of first grid point +signed[4] latitudeOfFirstGridPoint : edition_specific ; +meta geography.latitudeOfFirstGridPointInDegrees scale(latitudeOfFirstGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; +alias La1 = latitudeOfFirstGridPoint; + +# Lo1 - longitude of first grid point +unsigned[4] longitudeOfFirstGridPoint : edition_specific; +meta geography.longitudeOfFirstGridPointInDegrees scale(longitudeOfFirstGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; +alias Lo1 = longitudeOfFirstGridPoint; + +# Resolution and component flag +flags[1] resolutionAndComponentFlags 'grib2/tables/[tablesVersion]/3.3.table' : dump; + +# LaD - Latitude where Dx and Dy are specified +signed[4] LaD : edition_specific; +alias latitudeWhereDxAndDyAreSpecified=LaD; +meta geography.LaDInDegrees scale(LaD,oneConstant,grib2divider,truncateDegrees) : dump; +alias latitudeWhereDxAndDyAreSpecifiedInDegrees=LaDInDegrees; + +# LoV - orientation of the grid +# LoV is the longitude value of the meridian which is parallel to the y-axis (or columns of the grid) +# along which latitude increases as the y-coordinate increases +signed[4] orientationOfTheGrid : edition_specific; +alias LoV = orientationOfTheGrid ; +meta geography.orientationOfTheGridInDegrees scale(orientationOfTheGrid,oneConstant,grib2divider,truncateDegrees) : dump; + + +#include "grib2/template.3.20.part2.def" +# Projection centre flag +flags[1] projectionCentreFlag 'grib2/tables/[tablesVersion]/3.5.table' : dump; +# Note our flagbit numbers go from 7 to 0, while WMO convention is from 1 to 8 +# If bit 1 is 0, then the North Pole is on the projection plane +# If bit 1 is 1, then the South Pole is on the projection plane +flagbit southPoleOnProjectionPlane(projectionCentreFlag,7) : dump; # WMO bit 1 # END 2/template.3.62 ---------------------------------------------------------------------- diff --git a/definitions/grib2/template.3.63.def b/definitions/grib2/template.3.63.def index cf22bb31f..4a2ab9dea 100644 --- a/definitions/grib2/template.3.63.def +++ b/definitions/grib2/template.3.63.def @@ -15,9 +15,64 @@ include "grib2/template.3.bf.def" include "grib2/template.3.shape_of_the_earth.def"; -include "grib2/template.3.30.part1.def" -include "grib2/template.3.30.part2.def" -include "grib2/template.3.30.part3.def" -include "grib2/template.3.30.part4.def" +#include "grib2/template.3.30.part1.def" +# La1 - latitude of first grid point +signed[4] latitudeOfFirstGridPoint : edition_specific; +alias La1 = latitudeOfFirstGridPoint; +meta geography.latitudeOfFirstGridPointInDegrees + scale(latitudeOfFirstGridPoint,one,grib2divider,truncateDegrees) : dump; +alias La1InDegrees=latitudeOfFirstGridPointInDegrees; +#meta latitudeOfFirstGridPointInMicrodegrees times(latitudeOfFirstGridPointInDegrees,oneConstant): no_copy; + +# Lo1 - longitude of first grid point +unsigned[4] longitudeOfFirstGridPoint : edition_specific; +alias Lo1 = longitudeOfFirstGridPoint; +meta geography.longitudeOfFirstGridPointInDegrees + scale(longitudeOfFirstGridPoint,one,grib2divider,truncateDegrees) : dump; +alias Lo1InDegrees = longitudeOfFirstGridPointInDegrees; +#meta longitudeOfFirstGridPointInMicrodegrees times(longitudeOfFirstGridPoint,oneConstant) : no_copy; + + + +#include "grib2/template.3.30.part2.def" +# LaD - Latitude where Dx and Dy are specified +signed[4] LaD : edition_specific ; +alias latitudeWhereDxAndDyAreSpecified=LaD; +meta geography.LaDInDegrees scale(LaD,one,grib2divider,truncateDegrees) : dump; + +# LoV - Longitude of meridian parallel to Y-axis along which latitude increases as the Y-coordinate increases +unsigned[4] LoV : edition_specific; +meta geography.LoVInDegrees scale(LoV,one,grib2divider,truncateDegrees) : dump; + + + +#include "grib2/template.3.30.part3.def" +# Projection centre flag +flags[1] projectionCentreFlag 'grib2/tables/[tablesVersion]/3.5.table' : dump; + + +#include "grib2/template.3.30.part4.def" +# Latin 1 - first latitude from the pole at which the secant cone cuts the sphere +signed[4] Latin1 : edition_specific; +alias FirstLatitude=Latin1; +meta geography.Latin1InDegrees scale(Latin1,one,grib2divider,truncateDegrees) : dump; + +# Latin 2 - second latitude from the pole at which the secant cone cuts the sphere +signed[4] Latin2 : dump; +alias SecondLatitude=Latin2; +meta geography.Latin2InDegrees scale(Latin2,one,grib2divider,truncateDegrees) : dump; + +# Latitude of the southern pole of projection +signed[4] latitudeOfSouthernPole : edition_specific; +alias latitudeOfTheSouthernPoleOfProjection=latitudeOfSouthernPole; +meta geography.latitudeOfSouthernPoleInDegrees scale(latitudeOfSouthernPole ,one,grib2divider,truncateDegrees) : dump; + +# Longitude of the southern pole of projection +unsigned[4] longitudeOfSouthernPole : edition_specific; +alias longitudeOfTheSouthernPoleOfProjection=longitudeOfSouthernPole; +meta geography.longitudeOfSouthernPoleInDegrees scale(longitudeOfSouthernPole,oneConstant,grib2divider,truncateDegrees) : dump; + + + diff --git a/definitions/grib2/template.5.53.def b/definitions/grib2/template.5.53.def index 1cddecafb..c714b486d 100644 --- a/definitions/grib2/template.5.53.def +++ b/definitions/grib2/template.5.53.def @@ -30,7 +30,6 @@ meta laplacianOperatorIsSet evaluate(laplacianScalingFactor != laplacianScal unsigned[2] biFourierResolutionSubSetParameterN ; unsigned[2] biFourierResolutionSubSetParameterM ; - # This is read_only until we support other values codetable[1] unpackedSubsetPrecision ('5.7.table',masterDir,localDir) = 1 : dump; diff --git a/definitions/grib2/template.7.53.def b/definitions/grib2/template.7.53.def index 2941e8bcc..a41353c35 100644 --- a/definitions/grib2/template.7.53.def +++ b/definitions/grib2/template.7.53.def @@ -26,7 +26,7 @@ meta codedValues data_g2bifourier_packing( referenceValue, binaryScaleFactor, decimalScaleFactor, - + optimizeScaleFactor, unpackedSubsetPrecision, laplacianOperatorIsSet, From 3894a7c79f3f90cbdb16431f7c41da3df69f844c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 15 May 2018 17:29:14 +0100 Subject: [PATCH 011/414] Fix polar stereographic iterator crash --- definitions/grib2/section.3.def | 3 +-- definitions/grib2/template.3.20.def | 13 ++++++++----- definitions/grib2/template.3.30.def | 2 +- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/definitions/grib2/section.3.def b/definitions/grib2/section.3.def index 84262acf5..50fe74358 100644 --- a/definitions/grib2/section.3.def +++ b/definitions/grib2/section.3.def @@ -76,9 +76,8 @@ concept gridType { "stretched_ll" = { gridDefinitionTemplateNumber=2; PLPresent=0; } "stretched_rotated_ll" = { gridDefinitionTemplateNumber=3; PLPresent=0; } "mercator" = { gridDefinitionTemplateNumber=10; PLPresent=0; } - "mercator" = { gridDefinitionTemplateNumber=10; PLPresent=0; } "transverse_mercator" = { gridDefinitionTemplateNumber=12; PLPresent=0; } - "polar_stereographic" = { gridDefinitionTemplateNumber=20; PLPresent=0; } + "polar_stereographic" = { gridDefinitionTemplateNumber=20; PLPresent=0; } "lambert" = { gridDefinitionTemplateNumber=30; PLPresent=0; } "albers" = { gridDefinitionTemplateNumber=31; PLPresent=0; } diff --git a/definitions/grib2/template.3.20.def b/definitions/grib2/template.3.20.def index 5b72d7516..9b4780765 100644 --- a/definitions/grib2/template.3.20.def +++ b/definitions/grib2/template.3.20.def @@ -1,4 +1,4 @@ -# Copyright 2005-2017 ECMWF. +# Copyright 2005-2018 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. @@ -36,7 +36,6 @@ meta geography.longitudeOfFirstGridPointInDegrees scale(longitudeOfFirstGridPoin alias Lo1 = longitudeOfFirstGridPoint; # Resolution and component flag -# NOTE 1 NOT FOUND flags[1] resolutionAndComponentFlags 'grib2/tables/[tablesVersion]/3.3.table' : dump; # LaD - Latitude where Dx and Dy are specified @@ -46,19 +45,20 @@ meta geography.LaDInDegrees scale(LaD,oneConstant,grib2divider,truncateDegrees) alias latitudeWhereDxAndDyAreSpecifiedInDegrees=LaDInDegrees; # LoV - orientation of the grid -# NOTE 2 NOT FOUND +# LoV is the longitude value of the meridian which is parallel to the y-axis (or columns of the grid) +# along which latitude increases as the y-coordinate increases signed[4] orientationOfTheGrid : edition_specific; alias LoV = orientationOfTheGrid ; meta geography.orientationOfTheGridInDegrees scale(orientationOfTheGrid,oneConstant,grib2divider,truncateDegrees) : dump; # Dx - X-direction grid length -# NOTE 3: Grid length is in units of 10-3 m at the latitude specified by LaD +# Grid length is in units of 10-3 m at the latitude specified by LaD unsigned[4] Dx : edition_specific; meta geography.DxInMetres scale(Dx,one,thousand,truncateDegrees) : dump; alias xDirectionGridLength=Dx; # Dy - Y-direction grid length -# NOTE 3: Grid length is in units of 10-3 m at the latitude specified by LaD +# Grid length is in units of 10-3 m at the latitude specified by LaD unsigned[4] Dy : edition_specific; meta geography.DyInMetres scale(Dy,one,thousand,truncateDegrees) : dump; alias yDirectionGridLength=Dy; @@ -78,11 +78,14 @@ iterator polar_stereographic(numberOfPoints,missingValue,values, latitudeOfFirstGridPointInDegrees,longitudeOfFirstGridPointInDegrees, southPoleOnProjectionPlane, orientationOfTheGridInDegrees, + LaDInDegrees, DxInMetres,DyInMetres, iScansNegatively, jScansPositively, jPointsAreConsecutive, alternativeRowScanning); +nearest polar_stereographic(values,radius,Nx,Ny); + # END 2/template.3.20 ---------------------------------------------------------------------- diff --git a/definitions/grib2/template.3.30.def b/definitions/grib2/template.3.30.def index b8036c9b3..817da1cbc 100644 --- a/definitions/grib2/template.3.30.def +++ b/definitions/grib2/template.3.30.def @@ -1,4 +1,4 @@ -# Copyright 2005-2017 ECMWF. +# Copyright 2005-2018 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. From 0db15d351913c703110465e0945f197593448d5b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 15 May 2018 18:03:02 +0100 Subject: [PATCH 012/414] Update copyright notices --- definitions/grib2/local.98.41.def | 2 +- definitions/grib2/template.3.10.def | 2 +- definitions/grib2/template.3.13.def | 2 +- definitions/grib2/template.3.23.def | 2 +- definitions/grib2/template.3.33.def | 2 +- definitions/grib2/template.3.61.def | 2 +- definitions/grib2/template.3.62.def | 2 +- definitions/grib2/template.3.63.def | 2 +- definitions/grib2/template.5.53.def | 2 +- definitions/grib2/template.7.53.def | 2 +- src/grib_accessor_class_bifourier_truncation.c | 2 +- tests/grib_efas.sh | 2 +- tests/lam_bf.sh | 2 +- tests/lam_gp.sh | 2 +- tests/optimize_scaling.sh | 2 +- tests/optimize_scaling_sh.sh | 2 +- tests/sh_ieee64.sh | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/definitions/grib2/local.98.41.def b/definitions/grib2/local.98.41.def index ec4841985..f015f6995 100644 --- a/definitions/grib2/local.98.41.def +++ b/definitions/grib2/local.98.41.def @@ -1,4 +1,4 @@ -# Copyright 2005-2017 ECMWF. +# Copyright 2005-2018 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.10.def b/definitions/grib2/template.3.10.def index 07d495dca..9f3fedbb7 100644 --- a/definitions/grib2/template.3.10.def +++ b/definitions/grib2/template.3.10.def @@ -1,4 +1,4 @@ -# Copyright 2005-2017 ECMWF. +# Copyright 2005-2018 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.13.def b/definitions/grib2/template.3.13.def index 25ca0c2cb..33df979d2 100644 --- a/definitions/grib2/template.3.13.def +++ b/definitions/grib2/template.3.13.def @@ -1,4 +1,4 @@ -# Copyright 2005-2015 ECMWF. +# Copyright 2005-2018 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.23.def b/definitions/grib2/template.3.23.def index cd55cd331..119d588da 100644 --- a/definitions/grib2/template.3.23.def +++ b/definitions/grib2/template.3.23.def @@ -1,4 +1,4 @@ -# Copyright 2005-2015 ECMWF. +# Copyright 2005-2018 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.33.def b/definitions/grib2/template.3.33.def index a2c804c10..00c06b3e1 100644 --- a/definitions/grib2/template.3.33.def +++ b/definitions/grib2/template.3.33.def @@ -1,4 +1,4 @@ -# Copyright 2005-2015 ECMWF. +# Copyright 2005-2018 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.61.def b/definitions/grib2/template.3.61.def index 5a25dfa8b..6816fa1e5 100644 --- a/definitions/grib2/template.3.61.def +++ b/definitions/grib2/template.3.61.def @@ -1,4 +1,4 @@ -# Copyright 2005-2015 ECMWF. +# Copyright 2005-2018 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.62.def b/definitions/grib2/template.3.62.def index f455397ae..c8450ed13 100644 --- a/definitions/grib2/template.3.62.def +++ b/definitions/grib2/template.3.62.def @@ -1,4 +1,4 @@ -# Copyright 2005-2015 ECMWF. +# Copyright 2005-2018 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.63.def b/definitions/grib2/template.3.63.def index 4a2ab9dea..bfa553227 100644 --- a/definitions/grib2/template.3.63.def +++ b/definitions/grib2/template.3.63.def @@ -1,4 +1,4 @@ -# Copyright 2005-2015 ECMWF. +# Copyright 2005-2018 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.5.53.def b/definitions/grib2/template.5.53.def index c714b486d..e8a13a772 100644 --- a/definitions/grib2/template.5.53.def +++ b/definitions/grib2/template.5.53.def @@ -1,4 +1,4 @@ -# Copyright 2005-2015 ECMWF. +# Copyright 2005-2018 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.7.53.def b/definitions/grib2/template.7.53.def index a41353c35..e003aee9e 100644 --- a/definitions/grib2/template.7.53.def +++ b/definitions/grib2/template.7.53.def @@ -1,4 +1,4 @@ -# Copyright 2005-2015 ECMWF. +# Copyright 2005-2018 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_bifourier_truncation.c b/src/grib_accessor_class_bifourier_truncation.c index 4cbd8315f..00e36b119 100644 --- a/src/grib_accessor_class_bifourier_truncation.c +++ b/src/grib_accessor_class_bifourier_truncation.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2015 ECMWF. + * Copyright 2005-2018 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_efas.sh b/tests/grib_efas.sh index 6cfa61121..62ebc2677 100755 --- a/tests/grib_efas.sh +++ b/tests/grib_efas.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2017 ECMWF. +# Copyright 2005-2018 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/lam_bf.sh b/tests/lam_bf.sh index 8f285636b..b2d250ee3 100755 --- a/tests/lam_bf.sh +++ b/tests/lam_bf.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2015 ECMWF. +# Copyright 2005-2018 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/lam_gp.sh b/tests/lam_gp.sh index 17aa6d9a8..7d88c487c 100755 --- a/tests/lam_gp.sh +++ b/tests/lam_gp.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2015 ECMWF. +# Copyright 2005-2018 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/optimize_scaling.sh b/tests/optimize_scaling.sh index 17bd5b6be..358ab90b2 100755 --- a/tests/optimize_scaling.sh +++ b/tests/optimize_scaling.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2015 ECMWF. +# Copyright 2005-2018 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/optimize_scaling_sh.sh b/tests/optimize_scaling_sh.sh index 800e2b236..3dbb2244d 100755 --- a/tests/optimize_scaling_sh.sh +++ b/tests/optimize_scaling_sh.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2015 ECMWF. +# Copyright 2005-2018 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/sh_ieee64.sh b/tests/sh_ieee64.sh index 313c27ad0..c1f60baf0 100755 --- a/tests/sh_ieee64.sh +++ b/tests/sh_ieee64.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2015 ECMWF. +# Copyright 2005-2018 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. From 664399a9257d2ce03cb1b3f15e4e1bf99def2de6 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 17 May 2018 12:52:03 +0100 Subject: [PATCH 013/414] Fix the accessor classes. Needs more work for performance --- src/grib_accessor_class.c | 2 +- src/grib_accessor_class_bufr_data_array.c | 6 +++--- src/grib_iterator_class_gaussian.c | 1 + src/grib_iterator_class_gen.c | 6 +++--- src/grib_iterator_class_latlon.c | 16 ++++++++-------- src/grib_iterator_class_regular.c | 6 +++--- src/grib_nearest_class.h | 2 +- 7 files changed, 20 insertions(+), 19 deletions(-) diff --git a/src/grib_accessor_class.c b/src/grib_accessor_class.c index ef2e22beb..d4caa77c1 100644 --- a/src/grib_accessor_class.c +++ b/src/grib_accessor_class.c @@ -120,7 +120,7 @@ static GRIB_INLINE grib_accessor_class* get_class(grib_context* c,char* type) grib_context_log(c,GRIB_LOG_FATAL,"unable to create class %s",type); return NULL; } - +#define ACCESSOR_FACTORY_USE_TRIE /*TODO: sort out the hash of accessor classes */ grib_accessor* grib_accessor_factory(grib_section* p, grib_action* creator, const long len, grib_arguments* params) { diff --git a/src/grib_accessor_class_bufr_data_array.c b/src/grib_accessor_class_bufr_data_array.c index 0023051d3..cd18b50b9 100644 --- a/src/grib_accessor_class_bufr_data_array.c +++ b/src/grib_accessor_class_bufr_data_array.c @@ -143,9 +143,9 @@ typedef struct grib_accessor_bufr_data_array { grib_trie_with_rank* dataAccessorsTrie; grib_sarray* tempStrings; int change_ref_value_operand; - size_t refValListSize; - long* refValList; - long refValIndex; + size_t refValListSize; + long* refValList; + long refValIndex; bufr_tableb_override* tableb_override; } grib_accessor_bufr_data_array; diff --git a/src/grib_iterator_class_gaussian.c b/src/grib_iterator_class_gaussian.c index 4a2cebd5f..b30f90e9a 100644 --- a/src/grib_iterator_class_gaussian.c +++ b/src/grib_iterator_class_gaussian.c @@ -57,6 +57,7 @@ typedef struct grib_iterator_gaussian{ double angleOfRotation; double southPoleLat; double southPoleLon; + long jPointsAreConsecutive; /* Members defined in gaussian */ } grib_iterator_gaussian; diff --git a/src/grib_iterator_class_gen.c b/src/grib_iterator_class_gen.c index 8ec599dc6..a65f9cd11 100644 --- a/src/grib_iterator_class_gen.c +++ b/src/grib_iterator_class_gen.c @@ -38,10 +38,10 @@ or edit "iterator.class" and rerun ./make_class.pl static void init_class (grib_iterator_class*); -static int init (grib_iterator* iter,grib_handle*,grib_arguments*); +static int init (grib_iterator* i,grib_handle*,grib_arguments*); static int destroy (grib_iterator* i); -static int reset (grib_iterator* iter); -static long has_next (grib_iterator* iter); +static int reset (grib_iterator* i); +static long has_next (grib_iterator* i); typedef struct grib_iterator_gen{ diff --git a/src/grib_iterator_class_latlon.c b/src/grib_iterator_class_latlon.c index c6042b5f7..9ba574036 100644 --- a/src/grib_iterator_class_latlon.c +++ b/src/grib_iterator_class_latlon.c @@ -34,8 +34,8 @@ or edit "iterator.class" and rerun ./make_class.pl static void init_class (grib_iterator_class*); -static int init (grib_iterator* iter,grib_handle*,grib_arguments*); -static int next (grib_iterator* iter, double *lat, double *lon, double *val); +static int init (grib_iterator* i,grib_handle*,grib_arguments*); +static int next (grib_iterator* i, double *lat, double *lon, double *val); typedef struct grib_iterator_latlon{ @@ -48,12 +48,12 @@ typedef struct grib_iterator_latlon{ double *los; long nap; long nam; - long iScansNegatively; - long isRotated; - double angleOfRotation; - double southPoleLat; - double southPoleLon; - long jPointsAreConsecutive; + long iScansNegatively; + long isRotated; + double angleOfRotation; + double southPoleLat; + double southPoleLon; + long jPointsAreConsecutive; /* Members defined in latlon */ } grib_iterator_latlon; diff --git a/src/grib_iterator_class_regular.c b/src/grib_iterator_class_regular.c index 9fe907972..769060746 100644 --- a/src/grib_iterator_class_regular.c +++ b/src/grib_iterator_class_regular.c @@ -62,12 +62,12 @@ typedef struct grib_iterator_regular{ double *los; long nap; long nam; - long iScansNegatively; - long isRotated; + long iScansNegatively; + long isRotated; double angleOfRotation; double southPoleLat; double southPoleLon; - long jPointsAreConsecutive; + long jPointsAreConsecutive; } grib_iterator_regular; extern grib_iterator_class* grib_iterator_class_gen; diff --git a/src/grib_nearest_class.h b/src/grib_nearest_class.h index 441e501a9..772129e18 100644 --- a/src/grib_nearest_class.h +++ b/src/grib_nearest_class.h @@ -1,8 +1,8 @@ /* This file is automatically generated by ./make_class.pl, do not edit */ extern grib_nearest_class* grib_nearest_class_gen; extern grib_nearest_class* grib_nearest_class_lambert_conformal; -extern grib_nearest_class* grib_nearest_class_polar_stereographic; extern grib_nearest_class* grib_nearest_class_latlon_reduced; +extern grib_nearest_class* grib_nearest_class_polar_stereographic; extern grib_nearest_class* grib_nearest_class_reduced; extern grib_nearest_class* grib_nearest_class_regular; extern grib_nearest_class* grib_nearest_class_sh; From 711ce42192db6e93951e953b5489c7dd1fe96138 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 17 May 2018 12:58:05 +0100 Subject: [PATCH 014/414] Move declarations outside the auto-generated block --- src/grib_accessor_class_data_g2bifourier_packing.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/grib_accessor_class_data_g2bifourier_packing.c b/src/grib_accessor_class_data_g2bifourier_packing.c index 3855b6143..15b3c81fc 100644 --- a/src/grib_accessor_class_data_g2bifourier_packing.c +++ b/src/grib_accessor_class_data_g2bifourier_packing.c @@ -142,10 +142,6 @@ static grib_accessor_class _grib_accessor_class_data_g2bifourier_packing = { grib_accessor_class* grib_accessor_class_data_g2bifourier_packing = &_grib_accessor_class_data_g2bifourier_packing; - -typedef unsigned long (*encode_float_proc)(double); -typedef double (*decode_float_proc)(unsigned long); - static void init_class(grib_accessor_class* c) { c->dump = (*(c->super))->dump; @@ -176,6 +172,9 @@ static void init_class(grib_accessor_class* c) /* END_CLASS_IMP */ +typedef unsigned long (*encode_float_proc)(double); +typedef double (*decode_float_proc)(unsigned long); + static void init(grib_accessor* a,const long v, grib_arguments* args) { grib_accessor_data_g2bifourier_packing *self =(grib_accessor_data_g2bifourier_packing*)a; From e28cda429ea3a5252b243b0e7afc70a6ba970e78 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 31 Aug 2018 15:34:32 +0100 Subject: [PATCH 015/414] Remove the use of the offending key 'I' and add checks on dump output --- definitions/grib2/template.5.53.def | 2 +- tests/lam_bf.sh | 25 ++++++++++++++++++++++--- tests/lam_gp.sh | 26 +++++++++++++++++++++++--- 3 files changed, 46 insertions(+), 7 deletions(-) diff --git a/definitions/grib2/template.5.53.def b/definitions/grib2/template.5.53.def index e8a13a772..d579972d9 100644 --- a/definitions/grib2/template.5.53.def +++ b/definitions/grib2/template.5.53.def @@ -19,7 +19,7 @@ codetable[1] biFourierSubTruncationType ('3.99.table',masterDir,localDir) : dump unsigned[1] biFourierDoNotPackAxes = 0 : dump; # TODO: What is I? -meta _numberOfValues bifourier_truncation(I,J,numberOfValues): read_only; +# meta _numberOfValues bifourier_truncation(I,J,numberOfValues): read_only; constant laplacianScalingFactorUnset = -2147483647; signed[4] laplacianScalingFactor : edition_specific ; diff --git a/tests/lam_bf.sh b/tests/lam_bf.sh index b2d250ee3..8b2b5c7c8 100755 --- a/tests/lam_bf.sh +++ b/tests/lam_bf.sh @@ -10,8 +10,27 @@ . ./include.sh +label="grib_lam_bf" +temp=temp.$label.txt + +dump_and_check() +{ + input=$1 + ${tools_dir}/grib_dump -O $input >$temp 2>&1 + set +e + # Look for the word ERROR in output. We should not find any + grep -q 'ERROR ' $temp + if [ $? -eq 0 ]; then + echo "File $input: found string ERROR in grib_dump output!" + exit 1 + fi + set -e +} + ${test_dir}/lam_bf -${tools_dir}/grib_dump -O lam_bf_lambert_bf.grib -${tools_dir}/grib_dump -O lam_bf_mercator_bf.grib -${tools_dir}/grib_dump -O lam_bf_polar_stereographic_bf.grib +dump_and_check lam_bf_lambert_bf.grib +dump_and_check lam_bf_mercator_bf.grib +dump_and_check lam_bf_polar_stereographic_bf.grib + +rm -f $temp diff --git a/tests/lam_gp.sh b/tests/lam_gp.sh index 7d88c487c..65aed05f3 100755 --- a/tests/lam_gp.sh +++ b/tests/lam_gp.sh @@ -10,8 +10,28 @@ . ./include.sh +label="grib_lam_gp" +temp=temp.$label.txt + +dump_and_check() +{ + input=$1 + ${tools_dir}/grib_dump -O $input >$temp 2>&1 + set +e + # Look for the word ERROR in output. We should not find any + grep -q 'ERROR ' $temp + if [ $? -eq 0 ]; then + echo "File $input: found string ERROR in grib_dump output!" + exit 1 + fi + set -e +} + + ${test_dir}/lam_gp -${tools_dir}/grib_dump -O lam_gp_lambert_lam.grib -${tools_dir}/grib_dump -O lam_gp_mercator_lam.grib -${tools_dir}/grib_dump -O lam_gp_polar_stereographic_lam.grib +dump_and_check lam_gp_lambert_lam.grib +dump_and_check lam_gp_mercator_lam.grib +dump_and_check lam_gp_polar_stereographic_lam.grib + +rm -f $temp From cc92f7e530f20774e02f13712880856050e061b2 Mon Sep 17 00:00:00 2001 From: Philippe Marguinaud Date: Mon, 3 Sep 2018 09:04:52 +0200 Subject: [PATCH 016/414] Remove _numberOfValues bifourier_truncation from definitions/grib2/template.5.53.def (avoid warning from grib_dump -O). Check GRIB messages produced by tests/lam_bf.c & tests/lam_gp.c. Fix warning issued by cppcheck on src/grib_accessor_class_data_g2bifourier_packing.c. --- definitions/grib2/template.5.53.def | 2 - ..._accessor_class_data_g2bifourier_packing.c | 6 +- src/grib_jasper_encoding.c | 2 - tests/lam_bf.c | 65 +++++++++++++++++++ tests/lam_gp.c | 55 ++++++++++++++++ 5 files changed, 125 insertions(+), 5 deletions(-) diff --git a/definitions/grib2/template.5.53.def b/definitions/grib2/template.5.53.def index e8a13a772..467ccbb34 100644 --- a/definitions/grib2/template.5.53.def +++ b/definitions/grib2/template.5.53.def @@ -18,8 +18,6 @@ transient computeLaplacianOperator=1 : hidden; codetable[1] biFourierSubTruncationType ('3.99.table',masterDir,localDir) : dump; unsigned[1] biFourierDoNotPackAxes = 0 : dump; -# TODO: What is I? -meta _numberOfValues bifourier_truncation(I,J,numberOfValues): read_only; constant laplacianScalingFactorUnset = -2147483647; signed[4] laplacianScalingFactor : edition_specific ; diff --git a/src/grib_accessor_class_data_g2bifourier_packing.c b/src/grib_accessor_class_data_g2bifourier_packing.c index 15b3c81fc..a4ed7bc2c 100644 --- a/src/grib_accessor_class_data_g2bifourier_packing.c +++ b/src/grib_accessor_class_data_g2bifourier_packing.c @@ -302,7 +302,11 @@ static void diamond (long ni, long nj, long itrunc[], long jtrunc[]) do { \ insub = (i <= bt->sub_i) && (j <= bt->sub_j); \ if (insub) \ - insub = (i <= bt->itruncation_sub[j]) && (j <= bt->jtruncation_sub[i]); \ + { \ + int insubi = (i <= bt->itruncation_sub[j]); \ + int insubj = (j <= bt->jtruncation_sub[i]); \ + insub = insubi && insubj; \ + } \ if (bt->keepaxes) \ insub = insub || (i == 0) || (j == 0); \ } while (0) diff --git a/src/grib_jasper_encoding.c b/src/grib_jasper_encoding.c index a7a46d490..0c1143894 100644 --- a/src/grib_jasper_encoding.c +++ b/src/grib_jasper_encoding.c @@ -111,12 +111,10 @@ int grib_jasper_encode(grib_context *c, j2k_encode_helper *helper) image.clrspc_ = JAS_CLRSPC_SGRAY; image.cmprof_ = 0; -#if JASPER_VERSION_MAJOR == 1 /* ECC-396: Support for Jasper 2.0 * Jasper version 1 had the 'inmem_' data member but * version 2 removed it from the interface */ image.inmem_ = 1; -#endif cmpt.tlx_ = 0; cmpt.tly_ = 0; diff --git a/tests/lam_bf.c b/tests/lam_bf.c index d242c51fa..ddcc00efe 100644 --- a/tests/lam_bf.c +++ b/tests/lam_bf.c @@ -729,6 +729,71 @@ int main (int argc, char * argv[]) } GRIB_CHECK (grib_handle_delete (h), 0); + + /* Check message correctness */ + { + char f[128]; + FILE * fp; + double * vals; + double norm = 0.; + int i, err; + size_t values_len, geometry_len; + long int LxInMetres, LyInMetres, LuxInMetres, LuyInMetres, LcxInMetres, LcyInMetres; + long int nsmax, nmsmax; + char geometry[128]; + + + sprintf (f, "lam_bf_%s.grib", grids[igrid]); + fp = fopen (f, "r"); + h = grib_handle_new_from_file (0, fp, &err); + vals = (double *)malloc (sizeof (double) * ILCHAM); + values_len = ILCHAM; + GRIB_CHECK (grib_get_double_array (h, "values", vals, &values_len), 0); + for (i = 0; i < ILCHAM; i++) + norm += (values[i] - vals[i]) * (values[i] - vals[i]); + norm = sqrt (norm / ILCHAM); + free (vals); + + if (norm > 0.0001) + { + printf ("Error too large !\n"); + abort (); + } + fclose (fp); + + GRIB_CHECK (grib_get_long (h, "biFourierResolutionParameterN", &nsmax), 0); + GRIB_CHECK (grib_get_long (h, "biFourierResolutionParameterM", &nmsmax), 0); + + GRIB_CHECK (grib_get_long (h, "LxInMetres", &LxInMetres), 0); + GRIB_CHECK (grib_get_long (h, "LyInMetres", &LyInMetres), 0); + + GRIB_CHECK (grib_get_long (h, "LuxInMetres", &LuxInMetres), 0); + GRIB_CHECK (grib_get_long (h, "LuyInMetres", &LuyInMetres), 0); + + GRIB_CHECK (grib_get_long (h, "LcxInMetres", &LcxInMetres), 0); + GRIB_CHECK (grib_get_long (h, "LcyInMetres", &LcyInMetres), 0); + + if (LxInMetres != 2000 || LyInMetres != 2000 || LuxInMetres != 1800 || + LuyInMetres != 1800 || LcxInMetres != 100 || LcyInMetres != 100 || + NSMAX != nsmax || NMSMAX != nmsmax) + { + printf ("Geometry is incorrect\n"); + abort (); + } + + geometry_len = 128; + GRIB_CHECK (grib_get_string (h, "gridType", geometry, &geometry_len), 0); + if (strcmp (geometry, grids[igrid])) + { + printf ("Geometry is incorrect\n"); + abort (); + } + + + GRIB_CHECK (grib_handle_delete (h), 0); + + } + } return 0; diff --git a/tests/lam_gp.c b/tests/lam_gp.c index f85babb57..bdc8b2bda 100644 --- a/tests/lam_gp.c +++ b/tests/lam_gp.c @@ -932,6 +932,61 @@ int main (int argc, char * argv[]) } GRIB_CHECK (grib_handle_delete (h), 0); + + /* Check message correctness */ + { + char f[128]; + FILE * fp; + double * vals; + double norm = 0.; + int i, err; + size_t values_len, geometry_len; + long int Nux, Nuy, Ncx, Ncy; + char geometry[128]; + + sprintf (f, "lam_gp_%s.grib", grids[igrid]); + fp = fopen (f, "r"); + h = grib_handle_new_from_file (0, fp, &err); + vals = (double *)malloc (sizeof (double) * 4096); + values_len = 4096; + GRIB_CHECK (grib_get_double_array (h, "values", vals, &values_len), 0); + for (i = 0; i < 4096; i++) + norm += (values[i] - vals[i]) * (values[i] - vals[i]); + norm = sqrt (norm / 4096); + free (vals); + printf ("%s : %lf\n", grids[igrid], norm); + if (norm > 0.0001) + { + printf ("Error too large !\n"); + abort (); + } + fclose (fp); + + + GRIB_CHECK (grib_get_long (h, "Nux", &Nux), 0); + GRIB_CHECK (grib_get_long (h, "Nuy", &Nuy), 0); + GRIB_CHECK (grib_get_long (h, "Ncx", &Ncx), 0); + GRIB_CHECK (grib_get_long (h, "Ncy", &Ncy), 0); + + if (Nux != 53 || Nuy != 53 || Ncx != 8 || Ncy != 8) + { + printf ("Geometry is incorrect\n"); + abort (); + } + + geometry_len = 128; + GRIB_CHECK (grib_get_string (h, "gridType", geometry, &geometry_len), 0); + if (strcmp (geometry, grids[igrid])) + { + printf ("Geometry is incorrect\n"); + abort (); + } + + + GRIB_CHECK (grib_handle_delete (h), 0); + + } + } return 0; } From 13e21d5b94495a4be0fc8d2f14223fb3129f291f Mon Sep 17 00:00:00 2001 From: Philippe Marguinaud Date: Mon, 3 Sep 2018 13:27:44 +0200 Subject: [PATCH 017/414] Add LAM geometry names in tables. --- definitions/grib2/tables/4/3.1.table | 6 ++++++ definitions/grib2/tables/4/3.6.table | 1 + 2 files changed, 7 insertions(+) diff --git a/definitions/grib2/tables/4/3.1.table b/definitions/grib2/tables/4/3.1.table index a989a78a9..2f2f1a625 100644 --- a/definitions/grib2/tables/4/3.1.table +++ b/definitions/grib2/tables/4/3.1.table @@ -5,11 +5,14 @@ 3 3 Stretched and rotated latitude/longitude # 4-9 Reserved 10 10 Mercator +13 13 Mercator projection with LAM extension # 11-19 Reserved 20 20 Polar stereographic (can be south or north) +23 23 Polar stereographic projection with LAM extension # 21-29 Reserved 30 30 Lambert Conformal (can be secant or tangent, conical or bipolar) 31 31 Albers equal-area +33 33 Lambert Conformal projection with LAM extension # 32-39 Reserved 40 40 Gaussian latitude/longitude 41 41 Rotated Gaussian latitude/longitude @@ -20,6 +23,9 @@ 51 51 Rotated spherical harmonic coefficients 52 52 Stretched spherical harmonic coefficients 53 53 Stretched and rotated spherical harmonic coefficients +61 61 Bi-Fourier coefficients on Mercator projection (LAM models) +62 62 Bi-Fourier coefficients on Polar stereographic projection (LAM models) +63 63 Bi-Fourier coefficient on Lambert Conformal projection (LAM models) # 54-89 Reserved 90 90 Space view perspective orthographic # 91-99 Reserved diff --git a/definitions/grib2/tables/4/3.6.table b/definitions/grib2/tables/4/3.6.table index 41dd97e4a..079e3a124 100644 --- a/definitions/grib2/tables/4/3.6.table +++ b/definitions/grib2/tables/4/3.6.table @@ -1,2 +1,3 @@ # CODE TABLE 3.6, Spectral data representation type 1 1 The Associated Legendre Functions of the first kind are defined by: +99 99 Bi-Fourier coefficients From 58bafc5f184190bd35834e4a7a8d29e67a11b9e7 Mon Sep 17 00:00:00 2001 From: Philippe Marguinaud Date: Mon, 3 Sep 2018 13:33:16 +0200 Subject: [PATCH 018/414] Reset JASPER macro. --- src/grib_jasper_encoding.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/grib_jasper_encoding.c b/src/grib_jasper_encoding.c index 0c1143894..a7a46d490 100644 --- a/src/grib_jasper_encoding.c +++ b/src/grib_jasper_encoding.c @@ -111,10 +111,12 @@ int grib_jasper_encode(grib_context *c, j2k_encode_helper *helper) image.clrspc_ = JAS_CLRSPC_SGRAY; image.cmprof_ = 0; +#if JASPER_VERSION_MAJOR == 1 /* ECC-396: Support for Jasper 2.0 * Jasper version 1 had the 'inmem_' data member but * version 2 removed it from the interface */ image.inmem_ = 1; +#endif cmpt.tlx_ = 0; cmpt.tly_ = 0; From e1f60707c094fae5f066f13e66ad6013657db2b2 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 3 Sep 2018 13:21:41 +0100 Subject: [PATCH 019/414] Compiler warning --- src/grib_accessor_classes_hash.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/grib_accessor_classes_hash.c b/src/grib_accessor_classes_hash.c index 51deed99a..aa46c1dfd 100644 --- a/src/grib_accessor_classes_hash.c +++ b/src/grib_accessor_classes_hash.c @@ -52,9 +52,7 @@ struct accessor_class_hash { char *name; grib_accessor_class **cclass;}; #endif #endif static unsigned int -grib_accessor_classes_get_id (str, len) - register const char *str; - register unsigned int len; +grib_accessor_classes_get_id (const char *str, unsigned int len) { static const unsigned short asso_values[] = { @@ -708,9 +706,10 @@ grib_accessor_classes_hash (const char *str, unsigned int len) #ifdef DEBUG { + const char *s; Assert( len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH ); Assert( key <= MAX_HASH_VALUE && key >= 0 ); - const char *s = classes[key].name; + s = classes[key].name; Assert( *str == *s && strcmp(str + 1, s + 1)==0 ); } #endif From f5853a8c560f7524ecbc3ebb6a4f19ba92aec299 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 3 Sep 2018 13:23:20 +0100 Subject: [PATCH 020/414] Testing: LAM GP/BF. Check number of values --- tests/lam_bf.sh | 3 +++ tests/lam_gp.sh | 3 +++ 2 files changed, 6 insertions(+) diff --git a/tests/lam_bf.sh b/tests/lam_bf.sh index 8b2b5c7c8..f654c7b4b 100755 --- a/tests/lam_bf.sh +++ b/tests/lam_bf.sh @@ -16,6 +16,9 @@ temp=temp.$label.txt dump_and_check() { input=$1 + + grib_check_key_equals $input numberOfValues 3128 + ${tools_dir}/grib_dump -O $input >$temp 2>&1 set +e # Look for the word ERROR in output. We should not find any diff --git a/tests/lam_gp.sh b/tests/lam_gp.sh index 65aed05f3..9edf0ade2 100755 --- a/tests/lam_gp.sh +++ b/tests/lam_gp.sh @@ -16,6 +16,9 @@ temp=temp.$label.txt dump_and_check() { input=$1 + + grib_check_key_equals $input numberOfValues 4096 + ${tools_dir}/grib_dump -O $input >$temp 2>&1 set +e # Look for the word ERROR in output. We should not find any From abf622a05466152c0b84b9d4b494a7ec510ffb91 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 3 Sep 2018 13:25:19 +0100 Subject: [PATCH 021/414] Undo additions in GRIB2 table version 4 --- definitions/grib2/tables/4/3.1.table | 6 ------ definitions/grib2/tables/4/3.6.table | 1 - 2 files changed, 7 deletions(-) diff --git a/definitions/grib2/tables/4/3.1.table b/definitions/grib2/tables/4/3.1.table index 2f2f1a625..a989a78a9 100644 --- a/definitions/grib2/tables/4/3.1.table +++ b/definitions/grib2/tables/4/3.1.table @@ -5,14 +5,11 @@ 3 3 Stretched and rotated latitude/longitude # 4-9 Reserved 10 10 Mercator -13 13 Mercator projection with LAM extension # 11-19 Reserved 20 20 Polar stereographic (can be south or north) -23 23 Polar stereographic projection with LAM extension # 21-29 Reserved 30 30 Lambert Conformal (can be secant or tangent, conical or bipolar) 31 31 Albers equal-area -33 33 Lambert Conformal projection with LAM extension # 32-39 Reserved 40 40 Gaussian latitude/longitude 41 41 Rotated Gaussian latitude/longitude @@ -23,9 +20,6 @@ 51 51 Rotated spherical harmonic coefficients 52 52 Stretched spherical harmonic coefficients 53 53 Stretched and rotated spherical harmonic coefficients -61 61 Bi-Fourier coefficients on Mercator projection (LAM models) -62 62 Bi-Fourier coefficients on Polar stereographic projection (LAM models) -63 63 Bi-Fourier coefficient on Lambert Conformal projection (LAM models) # 54-89 Reserved 90 90 Space view perspective orthographic # 91-99 Reserved diff --git a/definitions/grib2/tables/4/3.6.table b/definitions/grib2/tables/4/3.6.table index 079e3a124..41dd97e4a 100644 --- a/definitions/grib2/tables/4/3.6.table +++ b/definitions/grib2/tables/4/3.6.table @@ -1,3 +1,2 @@ # CODE TABLE 3.6, Spectral data representation type 1 1 The Associated Legendre Functions of the first kind are defined by: -99 99 Bi-Fourier coefficients From 6e9a6e008d584be847b1f8352fcb3a4c82c4a2fd Mon Sep 17 00:00:00 2001 From: Philippe Marguinaud Date: Mon, 3 Sep 2018 16:31:31 +0200 Subject: [PATCH 022/414] Use different truncation types in LAM bi-Fourier testing. --- src/grib_jasper_encoding.c | 4 +- tests/lam_bf.c | 78 ++++++++++++++++++++++++++++++++------ tests/lam_bf.sh | 13 +++++-- 3 files changed, 77 insertions(+), 18 deletions(-) diff --git a/src/grib_jasper_encoding.c b/src/grib_jasper_encoding.c index a7a46d490..463c5f384 100644 --- a/src/grib_jasper_encoding.c +++ b/src/grib_jasper_encoding.c @@ -111,12 +111,12 @@ int grib_jasper_encode(grib_context *c, j2k_encode_helper *helper) image.clrspc_ = JAS_CLRSPC_SGRAY; image.cmprof_ = 0; -#if JASPER_VERSION_MAJOR == 1 +//#if JASPER_VERSION_MAJOR == 1 /* ECC-396: Support for Jasper 2.0 * Jasper version 1 had the 'inmem_' data member but * version 2 removed it from the interface */ image.inmem_ = 1; -#endif +//#endif cmpt.tlx_ = 0; cmpt.tly_ = 0; diff --git a/tests/lam_bf.c b/tests/lam_bf.c index ddcc00efe..4298b2ca3 100644 --- a/tests/lam_bf.c +++ b/tests/lam_bf.c @@ -644,13 +644,67 @@ static double values[] = { #define NSMAX 31 #define NMSMAX 31 +static void rectfromellipse (double * vr, const double * ve, int nsmax, int nmsmax) +{ + int i, j, kr = 0, ke = 0; + for (i = 0; i <= nsmax; i++) + for (j = 0; j <= nmsmax; j++) + { + double xi = (double)i / (double)nsmax; + double xj = (double)j / (double)nmsmax; + if (xi * xi + xj * xj < 1) + { + vr[kr+0] = ve[ke+0]; + vr[kr+1] = ve[ke+1]; + vr[kr+2] = ve[ke+2]; + vr[kr+3] = ve[ke+3]; + ke += 4; + } + else + { + vr[kr+0] = 0.; + vr[kr+1] = 0.; + vr[kr+2] = 0.; + vr[kr+3] = 0.; + } + kr += 4; + } +} + +typedef struct +{ + int trunc; /* 77, 88, 99 = truncation type */ + int subtrunc; /* 77, 88, 99 = subtruncation type */ + double * values; + int len; + const char * name; +} trunc_t; + int main (int argc, char * argv[]) { grib_handle * h; size_t len; const char * grids[] = {"lambert_bf", "mercator_bf", "polar_stereographic_bf"}; - int igrid; + int igrid, itrunc; + trunc_t trunc[2]; + /* Elliptic truncation with diamond subtruncation */ + trunc[0].trunc = 99; + trunc[0].subtrunc = 77; + trunc[0].len = ILCHAM; + trunc[0].values = (double *)values; + trunc[0].name = "ellipse_diamond"; + + /* Rectangle truncation with rectangle subtruncation */ + trunc[1].trunc = 88; + trunc[1].subtrunc = 88; + trunc[1].len = 4 * (NSMAX + 1) * (NMSMAX + 1); + trunc[1].values = (double *)malloc (sizeof (double) * trunc[1].len); + trunc[1].name = "rectangle_rectangle"; + + rectfromellipse (trunc[1].values, trunc[0].values, NSMAX, NMSMAX); + + for (itrunc = 0; itrunc < 2; itrunc++) for (igrid = 0; igrid < 3; igrid++) { GRIB_CHECK (((h = grib_handle_new_from_samples (NULL, "lambert_bf_grib2")) == NULL), 0); @@ -659,7 +713,7 @@ int main (int argc, char * argv[]) GRIB_CHECK (grib_set_string (h, "gridType", grids[igrid], &len), 0); GRIB_CHECK (grib_set_long (h, "biFourierResolutionParameterN", NSMAX), 0); GRIB_CHECK (grib_set_long (h, "biFourierResolutionParameterM", NMSMAX), 0); - GRIB_CHECK (grib_set_long (h, "biFourierTruncationType", 99) , 0); + GRIB_CHECK (grib_set_long (h, "biFourierTruncationType", trunc[itrunc].trunc) , 0); GRIB_CHECK (grib_set_long (h, "LxInMetres", 2000), 0); @@ -705,12 +759,12 @@ int main (int argc, char * argv[]) GRIB_CHECK (grib_set_string (h, "packingType", "bifourier_complex", &len), 0); GRIB_CHECK (grib_set_long (h, "biFourierResolutionSubSetParameterN", NSTRON), 0); GRIB_CHECK (grib_set_long (h, "biFourierResolutionSubSetParameterM", NSTRON), 0); - GRIB_CHECK (grib_set_long (h, "biFourierSubTruncationType", 77) , 0); + GRIB_CHECK (grib_set_long (h, "biFourierSubTruncationType", trunc[itrunc].subtrunc) , 0); GRIB_CHECK (grib_set_long (h, "biFourierDoNotPackAxes", 1), 0); GRIB_CHECK (grib_set_long (h, "unpackedSubsetPrecision", 2), 0); - len = ILCHAM; - GRIB_CHECK (grib_set_double_array (h, "values", values, len), 0); + len = trunc[itrunc].len; + GRIB_CHECK (grib_set_double_array (h, "values", trunc[itrunc].values, len), 0); if (1) { @@ -718,7 +772,7 @@ int main (int argc, char * argv[]) FILE * fp; size_t size; const void * buffer = NULL; - sprintf (f, "lam_bf_%s.grib", grids[igrid]); + sprintf (f, "lam_bf_%s_%s.grib", grids[igrid], trunc[itrunc].name); fp = fopen (f, "w"); GRIB_CHECK (grib_get_message (h, &buffer, &size), 0); if (fwrite (buffer, 1, size, fp) != size) { @@ -743,15 +797,15 @@ int main (int argc, char * argv[]) char geometry[128]; - sprintf (f, "lam_bf_%s.grib", grids[igrid]); + sprintf (f, "lam_bf_%s_%s.grib", grids[igrid], trunc[itrunc].name); fp = fopen (f, "r"); h = grib_handle_new_from_file (0, fp, &err); - vals = (double *)malloc (sizeof (double) * ILCHAM); - values_len = ILCHAM; + vals = (double *)malloc (sizeof (double) * trunc[itrunc].len); + values_len = trunc[itrunc].len; GRIB_CHECK (grib_get_double_array (h, "values", vals, &values_len), 0); - for (i = 0; i < ILCHAM; i++) - norm += (values[i] - vals[i]) * (values[i] - vals[i]); - norm = sqrt (norm / ILCHAM); + for (i = 0; i < trunc[itrunc].len; i++) + norm += (trunc[itrunc].values[i] - vals[i]) * (trunc[itrunc].values[i] - vals[i]); + norm = sqrt (norm / trunc[itrunc].len); free (vals); if (norm > 0.0001) diff --git a/tests/lam_bf.sh b/tests/lam_bf.sh index f654c7b4b..693ed6cd4 100755 --- a/tests/lam_bf.sh +++ b/tests/lam_bf.sh @@ -16,8 +16,9 @@ temp=temp.$label.txt dump_and_check() { input=$1 + numberOfValues=$2 - grib_check_key_equals $input numberOfValues 3128 + grib_check_key_equals $input numberOfValues $numberOfValues ${tools_dir}/grib_dump -O $input >$temp 2>&1 set +e @@ -32,8 +33,12 @@ dump_and_check() ${test_dir}/lam_bf -dump_and_check lam_bf_lambert_bf.grib -dump_and_check lam_bf_mercator_bf.grib -dump_and_check lam_bf_polar_stereographic_bf.grib +dump_and_check lam_bf_lambert_bf_ellipse_diamond.grib 3128 +dump_and_check lam_bf_mercator_bf_ellipse_diamond.grib 3128 +dump_and_check lam_bf_polar_stereographic_bf_ellipse_diamond.grib 3128 + +dump_and_check lam_bf_lambert_bf_rectangle_rectangle.grib 4096 +dump_and_check lam_bf_mercator_bf_rectangle_rectangle.grib 4096 +dump_and_check lam_bf_polar_stereographic_bf_rectangle_rectangle.grib 4096 rm -f $temp From 7cd642a9e3fe8643b49ea297a9edacf9950c0ecd Mon Sep 17 00:00:00 2001 From: Philippe Marguinaud Date: Mon, 3 Sep 2018 16:58:09 +0200 Subject: [PATCH 023/414] Remove src/grib_accessor_class_bifourier_truncation.c --- src/CMakeLists.txt | 1 - src/grib_accessor_class.h | 1 - ...grib_accessor_class_bifourier_truncation.c | 193 ------------------ src/grib_accessor_factory.h | 1 - 4 files changed, 196 deletions(-) delete mode 100644 src/grib_accessor_class_bifourier_truncation.c diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 796df1a78..53c23b589 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -396,7 +396,6 @@ list( APPEND grib_api_srcs grib_accessor_class_blob.c grib_optimize_decimal_factor.c grib_accessor_class_data_g2bifourier_packing.c - grib_accessor_class_bifourier_truncation.c eccodes_windef.h # We ship our own generated lex/yacc C files grib_yacc.c grib_lex.c diff --git a/src/grib_accessor_class.h b/src/grib_accessor_class.h index 2f828b072..5d83fd1c2 100644 --- a/src/grib_accessor_class.h +++ b/src/grib_accessor_class.h @@ -46,7 +46,6 @@ extern grib_accessor_class* grib_accessor_class_data_apply_gdsnotpresent; extern grib_accessor_class* grib_accessor_class_data_ccsds_packing; extern grib_accessor_class* grib_accessor_class_data_complex_packing; extern grib_accessor_class* grib_accessor_class_data_g2bifourier_packing; -extern grib_accessor_class* grib_accessor_class_bifourier_truncation; extern grib_accessor_class* grib_accessor_class_data_constant_field; extern grib_accessor_class* grib_accessor_class_data_dummy_field; extern grib_accessor_class* grib_accessor_class_data_g1complex_packing; diff --git a/src/grib_accessor_class_bifourier_truncation.c b/src/grib_accessor_class_bifourier_truncation.c deleted file mode 100644 index 00e36b119..000000000 --- a/src/grib_accessor_class_bifourier_truncation.c +++ /dev/null @@ -1,193 +0,0 @@ -/* - * Copyright 2005-2018 ECMWF. - * - * This software is licensed under the terms of the Apache Licence Version 2.0 - * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. - * - * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by - * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. - */ - -/************************************** - * Enrico Fucile - **************************************/ - - -#include "grib_api_internal.h" -/* - This is used by make_class.pl - - START_CLASS_DEF - CLASS = accessor - SUPER = grib_accessor_class_long - IMPLEMENTS = unpack_long - IMPLEMENTS = init - MEMBERS=const char* J - MEMBERS=const char* K - MEMBERS=const char* M - MEMBERS=const char* T - END_CLASS_DEF - - */ - -/* START_CLASS_IMP */ - -/* - -Don't edit anything between START_CLASS_IMP and END_CLASS_IMP -Instead edit values between START_CLASS_DEF and END_CLASS_DEF -or edit "accessor.class" and rerun ./make_class.pl - -*/ - -static int unpack_long(grib_accessor*, long* val,size_t *len); -static void init(grib_accessor*,const long, grib_arguments* ); -static void init_class(grib_accessor_class*); - -typedef struct grib_accessor_bifourier_truncation { - grib_accessor att; -/* Members defined in gen */ -/* Members defined in long */ -/* Members defined in bifourier_truncation */ - const char* I; - const char* J; - const char* T; -} grib_accessor_bifourier_truncation; - -extern grib_accessor_class* grib_accessor_class_long; - -static grib_accessor_class _grib_accessor_class_bifourier_truncation = { - &grib_accessor_class_long, /* super */ - "bifourier_truncation", /* name */ - sizeof(grib_accessor_bifourier_truncation), /* size */ - 0, /* inited */ - &init_class, /* init_class */ - &init, /* init */ - 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ - 0, /* get length of string */ - 0, /* get number of values */ - 0, /* get number of bytes */ - 0, /* get offset to bytes */ - 0, /* get native type */ - 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_unpack procedures double */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ - 0, /* pack_expression */ - 0, /* notify_change */ - 0, /* update_size */ - 0, /* preferred_size */ - 0, /* resize */ - 0, /* nearest_smaller_value */ - 0, /* next accessor */ - 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack a subarray */ - 0, /* clear */ -}; - - -grib_accessor_class* grib_accessor_class_bifourier_truncation = &_grib_accessor_class_bifourier_truncation; - - -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->pack_double = (*(c->super))->pack_double; - c->unpack_double = (*(c->super))->unpack_double; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; -} - -/* END_CLASS_IMP */ - -static void init(grib_accessor* a,const long l, grib_arguments* c) -{ - grib_accessor_bifourier_truncation* self = (grib_accessor_bifourier_truncation*)a; - grib_handle* gh = grib_handle_of_accessor(a); - int n = 0; - - self->I = grib_arguments_get_name(gh,c,n++); - self->J = grib_arguments_get_name(gh,c,n++); - self->T = grib_arguments_get_name(gh,c,n++); - - a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; -} - -static int unpack_long (grib_accessor* a, long* val, size_t *len) -{ - grib_handle* gh = grib_handle_of_accessor(a); - grib_accessor_bifourier_truncation* self = (grib_accessor_bifourier_truncation*)a; - int ret = 0; - - long I,J,T,Tc; - - if(*len < 1) return GRIB_ARRAY_TOO_SMALL; - - if((ret = grib_get_long_internal(gh, self->I,&I)) - != GRIB_SUCCESS) - return ret; - - if((ret = grib_get_long_internal(gh, self->J,&J)) - != GRIB_SUCCESS) - return ret; - - Tc = I * J; - - *val=Tc; - - if((ret = grib_get_long_internal(gh, self->T,&T)) - != GRIB_SUCCESS) { - - if (Tc == -1) - grib_context_log(gh->context, GRIB_LOG_ERROR, - "%s. BiFourier Truncation Type Unknown: %s=%d %s=%d \n", - a->name, self->I,I, self->J,J); - - Tc=0; - grib_set_long(gh, self->T,Tc); - - } else { - - if (Tc != -1 && Tc != T ) grib_set_long(gh, self->T,Tc); - - } - - if (ret == GRIB_SUCCESS) *len = 1; - - return ret; -} - diff --git a/src/grib_accessor_factory.h b/src/grib_accessor_factory.h index 6799dba23..afa4b9791 100644 --- a/src/grib_accessor_factory.h +++ b/src/grib_accessor_factory.h @@ -46,7 +46,6 @@ { "data_ccsds_packing", &grib_accessor_class_data_ccsds_packing, }, { "data_complex_packing", &grib_accessor_class_data_complex_packing, }, { "data_g2bifourier_packing", &grib_accessor_class_data_g2bifourier_packing, }, -{ "bifourier_truncation", &grib_accessor_class_bifourier_truncation, }, { "data_constant_field", &grib_accessor_class_data_constant_field, }, { "data_dummy_field", &grib_accessor_class_data_dummy_field, }, { "data_g1complex_packing", &grib_accessor_class_data_g1complex_packing, }, From decd49687e979774682902b1fce4b9704e5d0211 Mon Sep 17 00:00:00 2001 From: Philippe Marguinaud Date: Mon, 3 Sep 2018 16:58:46 +0200 Subject: [PATCH 024/414] Reset JASPER macro. --- src/grib_jasper_encoding.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/grib_jasper_encoding.c b/src/grib_jasper_encoding.c index 463c5f384..a7a46d490 100644 --- a/src/grib_jasper_encoding.c +++ b/src/grib_jasper_encoding.c @@ -111,12 +111,12 @@ int grib_jasper_encode(grib_context *c, j2k_encode_helper *helper) image.clrspc_ = JAS_CLRSPC_SGRAY; image.cmprof_ = 0; -//#if JASPER_VERSION_MAJOR == 1 +#if JASPER_VERSION_MAJOR == 1 /* ECC-396: Support for Jasper 2.0 * Jasper version 1 had the 'inmem_' data member but * version 2 removed it from the interface */ image.inmem_ = 1; -//#endif +#endif cmpt.tlx_ = 0; cmpt.tly_ = 0; From a1f43594a9794b260df86458f03962dfcf1c8c53 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 3 Sep 2018 17:19:17 +0100 Subject: [PATCH 025/414] Clean up --- definitions/Makefile.am | 10 ++++++++++ src/grib_accessor_class_data_g2bifourier_packing.c | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/definitions/Makefile.am b/definitions/Makefile.am index 0a94a591d..5b4ed5980 100644 --- a/definitions/Makefile.am +++ b/definitions/Makefile.am @@ -10887,13 +10887,16 @@ dist_definitionsgrib2_DATA = \ grib2/template.3.12.def\ grib2/template.3.120.def\ grib2/template.3.1200.def\ + grib2/template.3.13.def\ grib2/template.3.130.def\ grib2/template.3.140.def\ grib2/template.3.2.def\ grib2/template.3.20.def\ + grib2/template.3.23.def\ grib2/template.3.3.def\ grib2/template.3.30.def\ grib2/template.3.31.def\ + grib2/template.3.33.def\ grib2/template.3.4.def\ grib2/template.3.40.def\ grib2/template.3.41.def\ @@ -10904,9 +10907,14 @@ dist_definitionsgrib2_DATA = \ grib2/template.3.51.def\ grib2/template.3.52.def\ grib2/template.3.53.def\ + grib2/template.3.61.def\ + grib2/template.3.62.def\ + grib2/template.3.63.def\ grib2/template.3.90.def\ + grib2/template.3.bf.def\ grib2/template.3.gaussian.def\ grib2/template.3.grid.def\ + grib2/template.3.lam.def\ grib2/template.3.latlon.def\ grib2/template.3.latlon_vares.def\ grib2/template.3.resolution_flags.def\ @@ -11010,6 +11018,7 @@ dist_definitionsgrib2_DATA = \ grib2/template.5.50001.def\ grib2/template.5.50002.def\ grib2/template.5.51.def\ + grib2/template.5.53.def\ grib2/template.5.6.def\ grib2/template.5.61.def\ grib2/template.5.original_values.def\ @@ -11030,6 +11039,7 @@ dist_definitionsgrib2_DATA = \ grib2/template.7.50001.def\ grib2/template.7.50002.def\ grib2/template.7.51.def\ + grib2/template.7.53.def\ grib2/template.7.6.def\ grib2/template.7.61.def\ grib2/template.7.second_order.def\ diff --git a/src/grib_accessor_class_data_g2bifourier_packing.c b/src/grib_accessor_class_data_g2bifourier_packing.c index a4ed7bc2c..88952f779 100644 --- a/src/grib_accessor_class_data_g2bifourier_packing.c +++ b/src/grib_accessor_class_data_g2bifourier_packing.c @@ -507,7 +507,7 @@ double laplam (bif_trunc_t * bt, const double val[]) free (znorm); free (zw); -//zp = ((long)(zp * 1000.)) / 1000.; FAPULA rounds Laplacian power to 1/1000th +/*zp = ((long)(zp * 1000.)) / 1000.; FAPULA rounds Laplacian power to 1/1000th*/ return zp; } From d067dcf5f73d7e7fbff2e925a6cb86496f5ca1e8 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 3 Sep 2018 17:31:40 +0100 Subject: [PATCH 026/414] Testing: clean up after tests pass --- tests/lam_bf.sh | 9 +++++++++ tests/lam_gp.sh | 7 ++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/tests/lam_bf.sh b/tests/lam_bf.sh index 693ed6cd4..b06bccdcc 100755 --- a/tests/lam_bf.sh +++ b/tests/lam_bf.sh @@ -31,6 +31,8 @@ dump_and_check() set -e } +# Spectral LAM fields +# Run the test which generates the GRIB files ${test_dir}/lam_bf dump_and_check lam_bf_lambert_bf_ellipse_diamond.grib 3128 @@ -41,4 +43,11 @@ dump_and_check lam_bf_lambert_bf_rectangle_rectangle.grib 4096 dump_and_check lam_bf_mercator_bf_rectangle_rectangle.grib 4096 dump_and_check lam_bf_polar_stereographic_bf_rectangle_rectangle.grib 4096 +# Clean up test outputs rm -f $temp +rm -f lam_bf_lambert_bf_ellipse_diamond.grib +rm -f lam_bf_mercator_bf_ellipse_diamond.grib +rm -f lam_bf_polar_stereographic_bf_ellipse_diamond.grib +rm -f lam_bf_lambert_bf_rectangle_rectangle.grib +rm -f lam_bf_mercator_bf_rectangle_rectangle.grib +rm -f lam_bf_polar_stereographic_bf_rectangle_rectangle.grib diff --git a/tests/lam_gp.sh b/tests/lam_gp.sh index 9edf0ade2..50fedc0d5 100755 --- a/tests/lam_gp.sh +++ b/tests/lam_gp.sh @@ -30,11 +30,16 @@ dump_and_check() set -e } - +# Grid-point LAM fields +# Run the test which generates the GRIB files ${test_dir}/lam_gp dump_and_check lam_gp_lambert_lam.grib dump_and_check lam_gp_mercator_lam.grib dump_and_check lam_gp_polar_stereographic_lam.grib +# Clean up test outputs rm -f $temp +rm -f lam_gp_lambert_lam.grib +rm -f dump_and_check lam_gp_mercator_lam.grib +rm -f dump_and_check lam_gp_polar_stereographic_lam.grib From 38db6c8f65318a1c1cc5478088f549ecc07103c7 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 3 Sep 2018 17:31:59 +0100 Subject: [PATCH 027/414] Add extra source file --- src/Makefile.am | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Makefile.am b/src/Makefile.am index e3a529429..45e970291 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -377,6 +377,7 @@ libeccodes_la_prototypes= \ string_util.c \ functions.c \ codes_memfs.c \ + grib_accessor_class_data_g2bifourier_packing.c \ grib_optimize_decimal_factor.c \ grib_api_version.c From 63aceccca553d3486cb107f887706d9a16b4cbfc Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 3 Sep 2018 17:57:28 +0100 Subject: [PATCH 028/414] Testing: Clean up memory leaks etc --- tests/lam_bf.c | 2 +- tests/lam_gp.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/lam_bf.c b/tests/lam_bf.c index 4298b2ca3..4b8579005 100644 --- a/tests/lam_bf.c +++ b/tests/lam_bf.c @@ -849,6 +849,6 @@ int main (int argc, char * argv[]) } } - + free(trunc[1].values); return 0; } diff --git a/tests/lam_gp.c b/tests/lam_gp.c index bdc8b2bda..f72f92595 100644 --- a/tests/lam_gp.c +++ b/tests/lam_gp.c @@ -844,7 +844,7 @@ int main (int argc, char * argv[]) for (igrid = 0; igrid < 3; igrid++) { - GRIB_CHECK (((h = grib_handle_new_from_samples (NULL, "reduced_gg_ml_grib2")) == NULL), 0); + GRIB_CHECK (((h = grib_handle_new_from_samples (NULL, "regular_ll_pl_grib2")) == NULL), 0); len = strlen ("lambert_lam"); GRIB_CHECK (grib_set_string (h, "gridType", "lambert_lam", &len), 0); GRIB_CHECK (grib_set_long (h, "centre", 85), 0); From 8dc05749a83620e94a21e36ee3ec3ec4355ab115 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Wed, 12 Dec 2018 11:26:07 +0000 Subject: [PATCH 029/414] Fix critical error message instructions --- cmake/eccodes_test_endiness.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/eccodes_test_endiness.cmake b/cmake/eccodes_test_endiness.cmake index 634de4227..0f1870d68 100644 --- a/cmake/eccodes_test_endiness.cmake +++ b/cmake/eccodes_test_endiness.cmake @@ -53,7 +53,7 @@ if( NOT DEFINED IEEE_BE ) endif() if( ECCODES_BIG_ENDIAN AND NOT IEEE_BE ) - ecbuild_critical("Failed to sanity check on endiness: OS should be Big-Endian but compiled code runs differently -- to ignore this pass -DIEEE_BE=0 to CMake/ecBuild") + ecbuild_critical("Failed to sanity check on endiness: OS should be Big-Endian but compiled code runs differently -- to ignore this pass -DIEEE_BE=1 to CMake/ecBuild") endif() if( NOT DEFINED IEEE_LE ) @@ -89,5 +89,5 @@ if( NOT DEFINED IEEE_LE ) endif() if( ECCODES_LITTLE_ENDIAN AND NOT IEEE_LE ) - ecbuild_critical("Failed to sanity check on endiness: OS should be Little-Endian but compiled code runs differently -- to ignore this pass -DIEEE_LE=0 to CMake/ecBuild") + ecbuild_critical("Failed to sanity check on endiness: OS should be Little-Endian but compiled code runs differently -- to ignore this pass -DIEEE_LE=1 to CMake/ecBuild") endif() From 3d3a52518ddfa0cfbcfb90bca5373b14de5595a2 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Wed, 12 Dec 2018 11:30:07 +0000 Subject: [PATCH 030/414] Windows: define YY_NO_UNISTD_H when using MSVC --- src/eccodes_windef.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/eccodes_windef.h b/src/eccodes_windef.h index 043c495a1..4f6992575 100644 --- a/src/eccodes_windef.h +++ b/src/eccodes_windef.h @@ -14,6 +14,7 @@ /* Microsoft Windows Visual Studio support */ #if defined(_WIN32) && defined(_MSC_VER) # define ECCODES_ON_WINDOWS +# define YY_NO_UNISTD_H #endif #endif From a475a413a329033807ac0ce075d3e425f607faa2 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Wed, 12 Dec 2018 11:56:37 +0000 Subject: [PATCH 031/414] Windows: add wingetopt.c to grib_tools sources --- tools/CMakeLists.txt | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index c1a0b528b..2fac9cda9 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -9,11 +9,21 @@ # nor does it submit to any jurisdiction. # +list( APPEND grib_tools_sources + grib_tools.c + grib_options.c + grib_tools.h + ) + +if( EC_OS_NAME MATCHES "windows" ) + list( APPEND grib_tools_sources wingetopt.c ) +endif() + # tools library ecbuild_add_library( TARGET grib_tools TYPE STATIC NOINSTALL - SOURCES grib_tools.c grib_options.c grib_tools.h + SOURCES ${grib_tools_sources} LIBS eccodes ) # tools binaries From a3853d6078da5d745ead4d966bf3abdbcd6f7974 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Wed, 12 Dec 2018 11:57:03 +0000 Subject: [PATCH 032/414] Windows: include wingetopt in codes_info.c --- tools/codes_info.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tools/codes_info.c b/tools/codes_info.c index 720aadccf..bfa230026 100644 --- a/tools/codes_info.c +++ b/tools/codes_info.c @@ -13,6 +13,11 @@ extern char *optarg; extern int optind; +#ifdef ECCODES_ON_WINDOWS +/* Microsoft Windows Visual Studio support */ +#include "wingetopt.h" +#endif + static void usage_and_exit(const char* progname) { printf("\nUsage: %s [-v] [-d] [-s]\n",progname); exit(1); From 287c0d5c81aaee4d2b22b4f7431cca25b6484af2 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Wed, 12 Dec 2018 12:03:34 +0000 Subject: [PATCH 033/414] Windows: remove redundant comments I think the context makes it obvious that these changes are for MSVS. --- src/grib_accessor_class_codetable.c | 1 - src/grib_api.h | 1 - src/grib_api_internal.h | 1 - src/grib_jasper_encoding.c | 1 - tools/codes_info.c | 1 - tools/grib_options.c | 1 - tools/wingetopt.h | 2 -- 7 files changed, 8 deletions(-) diff --git a/src/grib_accessor_class_codetable.c b/src/grib_accessor_class_codetable.c index c0afc2e0d..8c3d7d86a 100644 --- a/src/grib_accessor_class_codetable.c +++ b/src/grib_accessor_class_codetable.c @@ -656,7 +656,6 @@ static int pack_string(grib_accessor* a, const char* buffer, size_t *len) #ifndef ECCODES_ON_WINDOWS cmpproc cmp = (a->flags & GRIB_ACCESSOR_FLAG_LOWERCASE) ? strcmp_nocase : strcmp; #else - /* Microsoft Windows Visual Studio support */ cmpproc cmp = (a->flags & GRIB_ACCESSOR_FLAG_LOWERCASE) ? stricmp : strcmp; #endif diff --git a/src/grib_api.h b/src/grib_api.h index 43061b002..a741aa43e 100644 --- a/src/grib_api.h +++ b/src/grib_api.h @@ -21,7 +21,6 @@ #include #include -/* Microsoft Windows Visual Studio support */ #include "eccodes_windef.h" #ifndef ECCODES_ON_WINDOWS diff --git a/src/grib_api_internal.h b/src/grib_api_internal.h index 3b108f8b3..b2be9291d 100644 --- a/src/grib_api_internal.h +++ b/src/grib_api_internal.h @@ -58,7 +58,6 @@ #include #include -/* Microsoft Windows Visual Studio support */ #include "eccodes_windef.h" #ifndef ECCODES_ON_WINDOWS diff --git a/src/grib_jasper_encoding.c b/src/grib_jasper_encoding.c index a7a46d490..965f8183f 100644 --- a/src/grib_jasper_encoding.c +++ b/src/grib_jasper_encoding.c @@ -164,7 +164,6 @@ int grib_jasper_encode(grib_context *c, j2k_encode_helper *helper) #ifndef ECCODES_ON_WINDOWS snprintf (opts, MAXOPTSSIZE, "mode=real\nrate=%f", 1.0/helper->compression); #else - /* Microsoft Windows Visual Studio support */ _snprintf(opts, MAXOPTSSIZE, "mode=real\nrate=%f", 1.0/helper->compression); #endif } diff --git a/tools/codes_info.c b/tools/codes_info.c index bfa230026..1f1f37a0a 100644 --- a/tools/codes_info.c +++ b/tools/codes_info.c @@ -14,7 +14,6 @@ extern char *optarg; extern int optind; #ifdef ECCODES_ON_WINDOWS -/* Microsoft Windows Visual Studio support */ #include "wingetopt.h" #endif diff --git a/tools/grib_options.c b/tools/grib_options.c index e5116cea9..893208bc3 100644 --- a/tools/grib_options.c +++ b/tools/grib_options.c @@ -18,7 +18,6 @@ extern char *optarg; extern int optind; #ifdef ECCODES_ON_WINDOWS -/* Microsoft Windows Visual Studio support */ #include "wingetopt.h" #endif diff --git a/tools/wingetopt.h b/tools/wingetopt.h index 170676d1c..3e074ef6a 100644 --- a/tools/wingetopt.h +++ b/tools/wingetopt.h @@ -11,11 +11,9 @@ #ifndef WINGETOPT_H #define WINGETOPT_H -/* Microsoft Windows Visual Studio support */ #include "eccodes_windef.h" #ifdef ECCODES_ON_WINDOWS -/* Microsoft Windows Visual Studio support */ extern int optind, opterr; extern char *optarg; int getopt(int argc, char *argv[], const char *optstring); From e0f916bac98b0c7ed44534e1a562454a8cdf3379 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Wed, 12 Dec 2018 13:25:16 +0000 Subject: [PATCH 034/414] Windows: tests: remove unistd.h --- tests/largefile.c | 3 +++ tests/multi_from_message.c | 3 +++ tests/values_to_ascii.c | 3 +++ 3 files changed, 9 insertions(+) diff --git a/tests/largefile.c b/tests/largefile.c index 8ff86ca81..9ad42affb 100644 --- a/tests/largefile.c +++ b/tests/largefile.c @@ -16,7 +16,10 @@ /* #include */ /* #include */ #include "grib_api_internal.h" + +#ifndef ECCODES_ON_WINDOWS #include +#endif void usage(char* prog) { printf("usage: %s filename\n",prog); diff --git a/tests/multi_from_message.c b/tests/multi_from_message.c index 5cff4ef7e..8023c3baa 100644 --- a/tests/multi_from_message.c +++ b/tests/multi_from_message.c @@ -15,7 +15,10 @@ #include "grib_api.h" #include #include + +#ifndef ECCODES_ON_WINDOWS #include +#endif static void usage(const char* prog) { printf("usage: %s [-m] file.grib\n",prog); diff --git a/tests/values_to_ascii.c b/tests/values_to_ascii.c index 7a1694c82..161edee05 100755 --- a/tests/values_to_ascii.c +++ b/tests/values_to_ascii.c @@ -10,7 +10,10 @@ #include #include + +#ifndef ECCODES_ON_WINDOWS #include +#endif #include "grib_api.h" From e496ae16f640baef05bdff9e3fe7d39a38129fa2 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Wed, 12 Dec 2018 12:35:55 +0000 Subject: [PATCH 035/414] Windows: examples: remove unistd.h --- examples/C/grib_keys_iterator.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/examples/C/grib_keys_iterator.c b/examples/C/grib_keys_iterator.c index 3fc6a38ed..e26fac72e 100644 --- a/examples/C/grib_keys_iterator.c +++ b/examples/C/grib_keys_iterator.c @@ -21,9 +21,12 @@ #include #include #include -#include #include +#if !(defined(_WIN32) && defined(_MSC_VER)) +#include +#endif + #include "eccodes.h" #define MAX_VAL_LEN 1024 From 3232f7a0e8e726ae6016b6b48296c738d5c9308b Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Wed, 12 Dec 2018 12:33:10 +0000 Subject: [PATCH 036/414] Windows: tigge: implement windows build --- tigge/tigge_check.c | 13 ++++++++++++- tigge/tigge_name.c | 8 +++++++- tigge/tigge_split.c | 17 +++++++++++++++-- tigge/tigge_tools.c | 40 +++++++++++++++++++++++++++++++++++++++- 4 files changed, 73 insertions(+), 5 deletions(-) diff --git a/tigge/tigge_check.c b/tigge/tigge_check.c index 32b3b74d1..0ded67674 100755 --- a/tigge/tigge_check.c +++ b/tigge/tigge_check.c @@ -25,7 +25,18 @@ #include #include #include -#include + +#ifndef ECCODES_ON_WINDOWS + #include +#else + #include + #include + + #ifdef _MSC_VER + # define strcasecmp _stricmp + #endif +#endif + #include #include "tigge_tools.h" diff --git a/tigge/tigge_name.c b/tigge/tigge_name.c index b3a9837b9..e2878a915 100755 --- a/tigge/tigge_name.c +++ b/tigge/tigge_name.c @@ -25,9 +25,15 @@ #include #include #include -#include #include "tigge_tools.h" +#ifndef ECCODES_ON_WINDOWS + #include +#else + #include + #include +#endif + /* #define CHECK(a) check(#a,a) */ #define NUMBER(a) (sizeof(a)/sizeof(a[0])) diff --git a/tigge/tigge_split.c b/tigge/tigge_split.c index 7e69fd060..b634fbfbb 100755 --- a/tigge/tigge_split.c +++ b/tigge/tigge_split.c @@ -25,9 +25,22 @@ #include #include #include -#include -#include +#ifndef ECCODES_ON_WINDOWS + #include + #include +#else + #include + #include + + #ifndef F_OK + # define F_OK 0 + #endif + + #ifdef _MSC_VER + # define access(path,mode) _access(path,mode) + #endif +#endif #define CHECK(a) check(#a,a) diff --git a/tigge/tigge_tools.c b/tigge/tigge_tools.c index f6501a915..d33cc9bb2 100644 --- a/tigge/tigge_tools.c +++ b/tigge/tigge_tools.c @@ -13,14 +13,23 @@ */ #include "tigge_tools.h" +#include "eccodes_windef.h" #include #include -#include + +#ifndef ECCODES_ON_WINDOWS + #include +#else + #include + #include +#endif + #include extern void validate(const char* path); +#ifndef ECCODES_ON_WINDOWS void scan(const char* name) { DIR *dir; @@ -41,3 +50,32 @@ void scan(const char* name) validate(name); } } +#else +// based on similar code in grib_tools.c +static int isWinDir(const struct _finddata_t *fileinfo) +{ + if((fileinfo->attrib & 16) == 16) + return 1; + return 0; +} +void scan(const char* name) +{ + struct _finddata_t fileinfo; + intptr_t handle; + if((handle = _findfirst(name, &fileinfo)) != -1) + { + char tmp[1024]; + do { + if(isWinDir(&fileinfo)) + { + if(fileinfo.name[0] != '.') { + sprintf(tmp, "%s/%s", name, fileinfo.name); + scan(tmp); + } + } + } while(!_findnext(handle, &fileinfo)); + } + else + validate(name); +} +#endif From 0da0b8f10609bb880a5b28bbbcdf61d94f7a33cd Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Wed, 12 Dec 2018 12:38:15 +0000 Subject: [PATCH 037/414] Windows: examples: switch bzero to memset Lets the examples work on Windows. --- examples/C/bufr_keys_iterator.c | 2 +- examples/C/grib_keys_iterator.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/C/bufr_keys_iterator.c b/examples/C/bufr_keys_iterator.c index bea9615fa..69c6b1494 100644 --- a/examples/C/bufr_keys_iterator.c +++ b/examples/C/bufr_keys_iterator.c @@ -88,7 +88,7 @@ int main(int argc,char* argv[]) { /* not array */ vlen=MAX_VAL_LEN; - bzero(value,vlen); + memset(value, 0, vlen); codes_get_string(h,name,value,&vlen); printf("%s\n",value); } diff --git a/examples/C/grib_keys_iterator.c b/examples/C/grib_keys_iterator.c index e26fac72e..0ef3a60f0 100644 --- a/examples/C/grib_keys_iterator.c +++ b/examples/C/grib_keys_iterator.c @@ -85,7 +85,7 @@ int main(int argc, char *argv[]) { const char* name = codes_keys_iterator_get_name(kiter); vlen=MAX_VAL_LEN; - bzero(value,vlen); + memset(value, 0, vlen); CODES_CHECK(codes_get_string(h,name,value,&vlen),name); printf("%s = %s\n",name,value); From 92ec367efd21d8614b78547ef279fcddd9c560ac Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Wed, 12 Dec 2018 12:39:31 +0000 Subject: [PATCH 038/414] Windows: examples: switch random to rand random() doesn't exist on Windows. --- examples/C/large_grib1.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/C/large_grib1.c b/examples/C/large_grib1.c index ee64bea19..2cfc88132 100644 --- a/examples/C/large_grib1.c +++ b/examples/C/large_grib1.c @@ -29,8 +29,8 @@ int main() } for (i=0; i Date: Wed, 12 Dec 2018 13:12:32 +0000 Subject: [PATCH 039/414] Windows: add windows_testing.bashrc Lets us pass the `--strip-trailing-cr` option to `diff` on Windows without changing the Unix tests. --- tests/windows_testing.bashrc | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 tests/windows_testing.bashrc diff --git a/tests/windows_testing.bashrc b/tests/windows_testing.bashrc new file mode 100644 index 000000000..f65068a8b --- /dev/null +++ b/tests/windows_testing.bashrc @@ -0,0 +1,11 @@ +# bashrc to be used for running tests on windows. +# In order for the functions to be usable by the tests, we need to use the -i option. +# Typical usage: +# bash --rcfile windows_testing.bashrc -ci "some/test/script.sh" + +# During testing we diff Windows files with Unix files => need to ignore the carriage +# return. +function diff { + command diff --strip-trailing-cr "$@" +} +export -f diff From 79f354248cbec05e45514868022a5eee5cd33c9b Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Fri, 14 Dec 2018 09:51:38 +0000 Subject: [PATCH 040/414] Remove dead file: grib_timer.c_off --- src/grib_timer.c_off | 336 ------------------------------------------- 1 file changed, 336 deletions(-) delete mode 100644 src/grib_timer.c_off diff --git a/src/grib_timer.c_off b/src/grib_timer.c_off deleted file mode 100644 index 3f28bda00..000000000 --- a/src/grib_timer.c_off +++ /dev/null @@ -1,336 +0,0 @@ -#include "grib_api_internal.h" -#include -#include -#include - - -static grib_timer *timers = NULL; -int false=0; -int true=1; -#define long64 long - -#define ROUND(a) ((long)((a)+0.5)) - -double proc_cpu() -{ - struct rusage rup; - - if(getrusage(RUSAGE_SELF,&rup) != -1) - { - return (rup.ru_utime.tv_sec + rup.ru_utime.tv_usec / 1000000.0 + - rup.ru_stime.tv_sec + rup.ru_stime.tv_usec / 1000000.0); - } - return clock()/(double)CLOCKS_PER_SEC; -} - -static char *timetext(char *pfx,double ds,char *text) -{ - long s = ROUND(ds); - long x = s; - long n; - char sec[20]; - char min[20]; - char hou[20]; - char day[20]; - - *text = *sec = *min = *hou = *day = 0; - if(s) - { - - if((n = x % 60) != 0) sprintf(sec,"%ld sec ",n); - x /= 60; - if((n = x % 60) != 0) sprintf(min,"%ld min ",n); - x /= 60; - if((n = x % 24) != 0) sprintf(hou,"%ld hour ",n); - x /= 24; - if((n = x) != 0) sprintf(day,"%ld day ",n); - - sprintf(text,"%s%s%s%s%s",pfx,day,hou,min,sec); - } - - return text; - -} - -char *timename(double t) -{ - static char buf[80]; - return timetext("",t,buf); -} - -grib_timer *grib_get_timer(grib_context* c,const char* name, const char *statname, int elapsed) -{ - grib_timer *t = timers; - if (!c) c=grib_context_get_default( ); - - while(t) - { - if(strcmp(name,t->name_) == 0) - return t; - t = t->next_; - } - - t = grib_context_malloc_clear(c,sizeof(grib_timer)); - t->name_ = (char*) name; - t->context =c; - t->active_ = false; - t->count_ = 0; - t->timer_ = 0; - t->total_ = 0; - - t->elapsed_ = elapsed; /* Whether to print CPU usage */ - t->cpu_ = 0; - t->total_cpu_ = 0; - - t->statname_ = 0; - if(statname) - t->statname_ = (char*)statname; - - t->next_ = timers; - timers = t; - - return t; -} - -int grib_timer_start(grib_timer* t) -{ - -#ifndef NOTIMER - int e = gettimeofday(&t->start_,NULL); - if(e != 0) - grib_context_log(t->context,GRIB_LOG_WARNING|GRIB_LOG_PERROR,"Error starting timer '%s'",t->name_?t->name_:"unnamed"); - t->active_ = true; - t->cpu_ = proc_cpu(); - return e; -#else - return 0; -#endif -} - -int grib_timer_stop(grib_timer* t, long total) -{ - -#ifndef NOTIMER - struct timeval stop, diff; - int e = gettimeofday(&stop,NULL); - double c = proc_cpu(); - - if(e != 0) - grib_context_log(t->context,GRIB_LOG_WARNING|GRIB_LOG_PERROR,"Error stopping timer '%s'",t->name_?t->name_:"unnamed"); - - if(!t->active_) - { - grib_context_log(t->context,GRIB_LOG_WARNING,"Stopping non-started timer '%s'",t->name_?t->name_:"unnamed"); - return 1; - } - - diff.tv_sec = stop.tv_sec - t->start_.tv_sec; - diff.tv_usec = stop.tv_usec - t->start_.tv_usec; - if (diff.tv_usec < 0) - { - diff.tv_sec--; - diff.tv_usec += 1000000; - } - - t->timer_ += (double)diff.tv_sec + ((double)diff.tv_usec / 1000000.); - t->total_ += total; - t->total_cpu_ += (c - t->cpu_); - - t->active_=false; - t->count_++; - - return e; - -#else - return 0; -#endif -} - -double grib_timer_value(grib_timer *t) -{ - return t->timer_; -} - -const char *bytename(double bytes) -{ - static char *names[] = { - "","K","M","G","T" }; - double x = bytes; - int n = 0; - static char buf[20]; - - while(x>=1024.0) - { - x /= 1024.0; - n++; - } - - sprintf(buf,"%.2f %s",x,names[n]); - - return buf; -} - -void grib_timer_print(grib_timer* t) -{ - char cpu[1024] = ""; - char *name = t->name_?t->name_:""; - if(t->timer_>=1) { - if(! t->elapsed_ && t->total_cpu_ >= 1.0) - sprintf(cpu,"cpu: %s",timename(t->total_cpu_)); - - if(t->total_ != 0) - { - double rate = (double)t->total_/t->timer_; - char bytes[80]; - sprintf(bytes,"%sbyte(s)",bytename(t->total_)); - grib_context_print(t->context,stdout," %s: %s in %s [%sbyte/sec] %s\n", - name,bytes,timename(t->timer_),bytename(rate),cpu); - } - else { - char* ctimename=timename(t->timer_); - grib_context_print(t->context,stdout," %s: wall: %s%s\n",name,ctimename,cpu); - } -/* - if(t->statname_) - log_statistics(t->statname_,"%ld",(long)t->timer_); - */ - } -} - -void grib_timer_partial_rate(grib_timer *t, double start, long total) -{ - double ptime = t->timer_ - start; - long ptotal = total; - char *name = t->name_?t->name_:""; - if(ptime>=1) - { - double rate = (double)ptotal/ptime; - char bytes[80]; - sprintf(bytes,"%sbyte(s)",bytename(ptotal)); - grib_context_log(t->context,GRIB_LOG_INFO," %s: %s in %s [%sbyte/sec]", - name,bytes,timename(ptime),bytename(rate)); - } -} - -void grib_print_all_timers() -{ - grib_timer *t = timers; - while(t) - { - grib_timer_print(t); - t = t->next_; - } -} - -void grib_reset_all_timers() -{ - grib_timer *t = timers; - while(t) - { - t->count_ = 0; - t->timer_ = 0; - t->active_ = 0; - t->total_ = 0; - t->total_cpu_ = 0; - t = t->next_; - } -} - - -/************************************************* -* Timed functions -**************************************************/ -/* -int timed_fread(char *buffer, int n, int length, FILE *f, grib_timer *t) -{ - int r = 0; - long total = 0; - timer_start(t); - if((r = fread(buffer,n,length,f)) > 0) - total = r*n; - - timer_stop(t,total); - - return r; -} - - -int timed_wind_next(wind* w, FILE *f, char *buffer, long *length, grib_timer *t) -{ - int r = 0; - long64 total = 0; - timer_start(t); - if((r = wind_next(w,f,buffer,length)) == 0) - total = *length; - - timer_stop(t,total); - - return r; -} - -int timed_fwrite(char *buffer, int n, int length, FILE *f, grib_timer *t) -{ - int r = 0; - long64 total = 0; - timer_start(t); - if((r = fwrite(buffer,n,length,f)) > 0) - total = r*n; - timer_stop(t,total); - - return r; -} - -int timed_fclose(FILE *f, grib_timer *t) -{ - int r = 0; - timer_start(t); - r = fclose(f); - timer_stop(t,0); - - return r; -} - -int timed_writetcp(void *data, char *buffer, int n, grib_timer *t) -{ - int r = 0; - long64 total = 0; - timer_start(t); - if((r = writetcp(data,buffer,n)) > 0) - total = r; - timer_stop(t,total); - - return r; -} - -int timed_readtcp(void *data, char *buffer, int n, grib_timer *t) -{ - int r = 0; - long64 total = 0; - timer_start(t); - if((r = readtcp(data,buffer,n)) > 0) - total = r; - timer_stop(t,total); - return r; -} - -int timed_readany(FILE *f, char *buffer, long *length, grib_timer *t) -{ - int e; - long original = *length; - long64 total = 0; - timer_start(t); - if(((e = _readany(f,buffer,length)) == NOERR) || (e == BUF_TO_SMALL)) - total = (e == BUF_TO_SMALL)?original:*length; - timer_stop(t,total); - - if(e != NOERR && e != BUF_TO_SMALL && e != EOF) - { - if(e == NOT_FOUND_7777) - marslog(LOG_WARN,"Group 7777 not found by readany",e); - else - marslog(LOG_WARN,"Error %d returned by readany",e); - } - - return e; -} -*/ From 3b3c51a518c5e6d9cece50d27e829432d4117e8a Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Mon, 17 Dec 2018 15:38:34 +0000 Subject: [PATCH 041/414] Windows: include stdint.h for int64_t --- tools/grib_to_netcdf.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tools/grib_to_netcdf.c b/tools/grib_to_netcdf.c index 211be8026..2d78f921b 100644 --- a/tools/grib_to_netcdf.c +++ b/tools/grib_to_netcdf.c @@ -23,6 +23,11 @@ #include #include "grib_tools.h" +#include "eccodes_windef.h" + +#ifdef ECCODES_ON_WINDOWS +#include +#endif const char* grib_tool_description = "Convert a GRIB file to netCDF format."; const char* grib_tool_name = "grib_to_netcdf"; From 235635af76c400d4890e88d1472d31c620b690f5 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Wed, 2 Jan 2019 09:58:34 +0000 Subject: [PATCH 042/414] Windows: export all symbols --- CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2af9428da..85967971c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -283,6 +283,11 @@ if( IEEE_LE ) set( IEEE_BE 0 ) endif() +# Symbols need to be explicitly exported on Windows so we can link to dlls. +if( EC_OS_NAME MATCHES "windows" ) + set( CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE ) +endif() + ############################################################################### # contents From 6df8711a8c1918044cea365c1165fff9d7c8fb0b Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Wed, 2 Jan 2019 11:00:35 +0000 Subject: [PATCH 043/414] Windows: allow MEMFS without fmemopen or funopen --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 85967971c..97e995147 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -127,7 +127,7 @@ endif() ecbuild_add_option( FEATURE MEMFS DESCRIPTION "Memory based access to definitions/samples" DEFAULT OFF - CONDITION ECCODES_HAVE_FMEMOPEN OR ECCODES_HAVE_FUNOPEN + CONDITION ECCODES_HAVE_FMEMOPEN OR ECCODES_HAVE_FUNOPEN OR (EC_OS_NAME MATCHES "windows") REQUIRED_PACKAGES PythonInterp ) From e591a0f7a6ecf594cd4ea25acb6adbd8d63036db Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Wed, 2 Jan 2019 12:07:09 +0000 Subject: [PATCH 044/414] Windows: use ECCODES_ON_WINDOWS in memfs --- memfs.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/memfs.py b/memfs.py index 61ed7bdbc..a1bd41b1b 100755 --- a/memfs.py +++ b/memfs.py @@ -86,6 +86,7 @@ print(""" #include #include #include +#include "eccodes_windef.h" struct entry { const char* path; @@ -173,7 +174,7 @@ static FILE* fmemopen(const char* buffer, size_t size, const char* mode){ return funopen(f, &read_mem, &write_mem, &seek_mem, &close_mem); } -#elif defined(_WIN32) +#elif defined(ECCODES_ON_WINDOWS) #include #include From 566cb67d0c5504f997cb792a239baf923ca6b7e1 Mon Sep 17 00:00:00 2001 From: StephanSiemen Date: Mon, 7 Jan 2019 09:38:45 +0000 Subject: [PATCH 045/414] Hardcode UNIX file endings - also for Windows --- .gitattributes | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..4282322ac --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Set the default behavior, in case people don't have core.autocrlf set. +* text eol=lf From fa5c758cf9f0e34719099c701dfb4614a1d60e2f Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Tue, 8 Jan 2019 17:18:02 +0000 Subject: [PATCH 046/414] README: switch to .md and add Windows build shields --- README => README.md | 6 ++++++ 1 file changed, 6 insertions(+) rename README => README.md (84%) diff --git a/README b/README.md similarity index 84% rename from README rename to README.md index 23d6e598e..3f0172ab2 100644 --- a/README +++ b/README.md @@ -1,3 +1,9 @@ +ecCodes +======= + +[![Windows: master](https://img.shields.io/appveyor/ci/ecmwf/eccodes/master.svg?label=windows-master)](https://ci.appveyor.com/project/ecmwf/eccodes/branch/master) +[![Windows: develop](https://img.shields.io/appveyor/ci/ecmwf/eccodes/develop.svg?label=windows-dev)](https://ci.appveyor.com/project/ecmwf/eccodes/branch/develop) + ecCodes is a package developed by ECMWF which provides an application programming interface and a set of tools for decoding and encoding messages in the following formats: From f877a47f008639212ce9ddd0c336d19632df8cbd Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Tue, 8 Jan 2019 11:24:40 +0000 Subject: [PATCH 047/414] Windows: add appveyor.yml --- .appveyor.yml | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 .appveyor.yml diff --git a/.appveyor.yml b/.appveyor.yml new file mode 100644 index 000000000..454d87981 --- /dev/null +++ b/.appveyor.yml @@ -0,0 +1,94 @@ +#---------------------------------# +# general configuration # +#---------------------------------# + +version: 2.9.2-{build}-{branch} + +branches: + only: + - dtip-windows + - develop + - master + +image: Visual Studio 2015 + +environment: + CONDA: c:\Miniconda37-x64 + ECMWF: c:\ecmwf + GIT_CLONE_DIR: $(ECMWF)\git + INSTALL_DIR: $(ECMWF)\install + ECCODES_SRC: $(GIT_CLONE_DIR)\eccodes + ECBUILD_SRC: $(GIT_CLONE_DIR)\ecbuild + +# scripts that are called at very beginning, before repo cloning +init: + # make sure git clones symlinks as symlinks + - cmd: git config --global core.symlinks true + # add conda bins to path so test can find linux utils + - cmd: set PATH=%CONDA%\Library\usr\bin;%CONDA%\Library\bin;%CONDA%\Scripts;%CONDA%\bin;%PATH% + # add eccodes\build\bin to path so tests can find eccodes.dll + - cmd: set PATH=%PATH%;%ECCODES_SRC%\build\bin + # auto-yes for conda + - cmd: conda config --set always_yes yes + +clone_folder: $(ECCODES_SRC) + +clone_depth: 1 + +# scripts that run after cloning repository +install: + # install ecbuild + # TODO: switch from the dtip-windows branch once the windows changes are merged + - cmd: git clone --depth 1 -b dtip-windows https://github.com/ecmwf/ecbuild.git %ECBUILD_SRC% + + # debug + - cmd: conda --version + + # install linux utils + - cmd: conda install -c msys2 m2-bash ^ + m2-findutils ^ + m2-coreutils ^ + m2-grep ^ + m2-sed ^ + m2-gawk ^ + m2-diffutils ^ + m2-perl + + # get the latest version of cmake + - cmd: conda install -c conda-forge cmake + +#---------------------------------# +# build configuration # +#---------------------------------# + +platform: + - x64 + +before_build: + - cmd: call "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64 + - cmd: call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86_amd64 + +build_script: + - cmd: cd %ECCODES_SRC% + - cmd: mkdir build && cd build + - cmd: cmake -G "NMake Makefiles" ^ + -D CMAKE_INSTALL_PREFIX=%INSTALL_DIR% ^ + -D CMAKE_BUILD_TYPE=Release ^ + -D ENABLE_FORTRAN=0 ^ + -D ENABLE_PYTHON=0 ^ + -D IEEE_LE=1 ^ + -D ENABLE_MEMFS=0 ^ + -D ENABLE_EXTRA_TESTS=OFF ^ + .. + - cmd: nmake + - cmd: ctest + - cmd: nmake install + +#---------------------------------# +# tests configuration # +#---------------------------------# + +test_script: + - cmd: codes_info + - cmd: for /F "tokens=* USEBACKQ" %%F IN (`codes_info -s`) DO (ls %%F) + - cmd: for /F "tokens=* USEBACKQ" %%F IN (`codes_info -d`) DO (ls %%F) From 8b39e500c145a95c08f335bb2c5f1880b2e04a83 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Wed, 9 Jan 2019 12:24:27 +0000 Subject: [PATCH 048/414] Tigge: remove dead code --- tigge/tigge_name.c | 43 ------------------------------------------- 1 file changed, 43 deletions(-) diff --git a/tigge/tigge_name.c b/tigge/tigge_name.c index e2878a915..7474c3772 100755 --- a/tigge/tigge_name.c +++ b/tigge/tigge_name.c @@ -34,7 +34,6 @@ #include #endif -/* #define CHECK(a) check(#a,a) */ #define NUMBER(a) (sizeof(a)/sizeof(a[0])) int error = 0; @@ -44,48 +43,6 @@ const char* param = "unknown"; int list_mode = 0; int compare_mode = 0; -#if 0 -static void check(const char* name,int a) -{ - if(!a) { - printf("%s, field %d [%s]: %s failed\n",file,field,param,name); - error++; - } -} - -static double dget(grib_handle *h,const char* what) -{ - int e; double val; - if((e = grib_get_double(h,what,&val)) != GRIB_SUCCESS) - { - printf("%s, field %d [%s]: cannot get %s: %s\n",file,field,param,what,grib_get_error_message(e)); - error++; - val = -1; - } - return val; -} - -static int missing(grib_handle *h,const char* what) -{ - int err=0; - return grib_is_missing(h,what,&err); -} - -static int eq(grib_handle *h,const char* what,long value) -{ - return get(h,what) == value; -} - -static int ne(grib_handle *h,const char* what,long value) -{ - return get(h,what) != value; -} - -static int ge(grib_handle *h,const char* what,long value) -{ - return get(h,what) >= value; -} -#endif static long get(grib_handle *h,const char* what) { int e; long val; From eaf16f3f8636fa5a0ef961eacf3ac8a6aa213abf Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Wed, 9 Jan 2019 12:45:43 +0000 Subject: [PATCH 049/414] Windows: tidy md5 uint64_t is defined in stdint.h on Windows. --- src/md5.c | 6 +++--- src/md5.h | 11 ++--------- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/src/md5.c b/src/md5.c index 3cb03e7f9..4bda9c492 100644 --- a/src/md5.c +++ b/src/md5.c @@ -215,7 +215,7 @@ static void grib_md5_flush(grib_md5_state* s) void grib_md5_init(grib_md5_state* s) { - Assert( sizeof(UnsignedInt64) == 8 ); + Assert( sizeof(uint64_t) == 8 ); memset(s,0,sizeof(grib_md5_state)); s->h0 = 0x67452301; s->h1 = 0xefcdab89; @@ -243,8 +243,8 @@ void grib_md5_add(grib_md5_state* s,const void* data,size_t len) void grib_md5_end(grib_md5_state* s, char *digest) { - UnsignedInt64 h = 8; - UnsignedInt64 bits, leng = s->size * h; + uint64_t h = 8; + uint64_t bits, leng = s->size * h; unsigned char c = 0x80; int i; diff --git a/src/md5.h b/src/md5.h index 053507c44..28fab5c47 100644 --- a/src/md5.h +++ b/src/md5.h @@ -12,17 +12,10 @@ */ #include -#include "eccodes_windef.h" - -#ifdef ECCODES_ON_WINDOWS - typedef unsigned __int64 UnsignedInt64; -#else -# include - typedef uint64_t UnsignedInt64; -#endif +#include typedef struct grib_md5_state { - UnsignedInt64 size; + uint64_t size; unsigned long words[64]; unsigned long word_count; From 26b1ce923daedf5eded82c317bae85234079c65b Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Wed, 9 Jan 2019 12:52:55 +0000 Subject: [PATCH 050/414] Remove dead code --- src/grib_context.c | 47 ---------------------------------------------- 1 file changed, 47 deletions(-) diff --git a/src/grib_context.c b/src/grib_context.c index cb91bc8c6..d894251d7 100644 --- a/src/grib_context.c +++ b/src/grib_context.c @@ -482,53 +482,6 @@ grib_context* grib_context_get_default() return &default_grib_context; } -#if 0 /* function removed */ -grib_context* grib_context_new(grib_context* parent) -{ - grib_context* c; -#if GRIB_PTHREADS - pthread_mutexattr_t attr; -#endif - - if (!parent) parent=grib_context_get_default(); - - GRIB_MUTEX_INIT_ONCE(&once,&init); - GRIB_MUTEX_LOCK(&(parent->mutex)); - - c = (grib_context*)grib_context_malloc_clear_persistent(&default_grib_context,sizeof(grib_context)); - - c->inited = default_grib_context.inited; - c->debug = default_grib_context.debug; - - c->real_mode = default_grib_context.real_mode; - - c->free_mem = default_grib_context.free_mem; - c->alloc_mem = default_grib_context.alloc_mem; - - c->free_persistent_mem = default_grib_context.free_persistent_mem; - c->alloc_persistent_mem= default_grib_context.alloc_persistent_mem; - - c->read = default_grib_context.read; - c->write = default_grib_context.write; - c->tell = default_grib_context.tell; - - c->output_log = default_grib_context.output_log; - c->print = default_grib_context.print ; - c->user_data = default_grib_context.user_data; - c->def_files = default_grib_context.def_files; - c->lists = default_grib_context.lists; - -#if GRIB_PTHREADS - pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE); - pthread_mutex_init(&mutex_c,&attr); - pthread_mutexattr_destroy(&attr); -#endif - - GRIB_MUTEX_UNLOCK(&(parent->mutex)); - return c; -} -#endif /* function removed */ - /* GRIB-235: Resolve path to expand symbolic links etc */ static char* resolve_path(grib_context* c, char* path) { From bcbd72dccf7ef457f7fe923a479d4666481b7f7d Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Wed, 9 Jan 2019 13:09:59 +0000 Subject: [PATCH 051/414] Remove dead code --- tests/largefile.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/tests/largefile.c b/tests/largefile.c index 9ad42affb..8b9f7dccb 100644 --- a/tests/largefile.c +++ b/tests/largefile.c @@ -9,12 +9,6 @@ */ #include "config.h" -/* #include */ -/* #include */ -/* #include */ -/* #include */ -/* #include */ -/* #include */ #include "grib_api_internal.h" #ifndef ECCODES_ON_WINDOWS From 72b5e1ffb0ce4dde3d6e8834712d55478aa537b2 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Wed, 9 Jan 2019 13:29:39 +0000 Subject: [PATCH 052/414] Appveyor: remove dtip-windows branch --- .appveyor.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.appveyor.yml b/.appveyor.yml index 454d87981..eb317b8d8 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -6,7 +6,6 @@ version: 2.9.2-{build}-{branch} branches: only: - - dtip-windows - develop - master From 42bceb042479ec2a9c2e6894125e79bd528267e4 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Wed, 9 Jan 2019 14:20:06 +0000 Subject: [PATCH 053/414] Windows: suppress compiler warnings Moved from ecBuild so the suppressions are project-specific. --- CMakeLists.txt | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 97e995147..e511865d2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -283,9 +283,18 @@ if( IEEE_LE ) set( IEEE_BE 0 ) endif() -# Symbols need to be explicitly exported on Windows so we can link to dlls. if( EC_OS_NAME MATCHES "windows" ) + # Symbols need to be explicitly exported on Windows so we can link to dlls. set( CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE ) + + # Suppress compliler warnings - see ECC-850 + # Suppress warnings about using 'insecure' functions. Fixing this would require changes all over + # the codebase which would damage portability. + ecbuild_add_c_flags("/D_CRT_SECURE_NO_WARNINGS") + # Suppress warnings about using well-known C functions. + ecbuild_add_c_flags("/D_CRT_NONSTDC_NO_DEPRECATE") + # Suppress C4267: warns about possible loss of data when converting 'size_t' to 'int'. + ecbuild_add_c_flags("/wd4267") endif() ############################################################################### From 7af69ef6e400bcf80197d31f6c16fa5dc77702ca Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Wed, 9 Jan 2019 14:29:01 +0000 Subject: [PATCH 054/414] Appveyor: remove debug --- .appveyor.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index eb317b8d8..fa3aa9941 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -40,9 +40,6 @@ install: # TODO: switch from the dtip-windows branch once the windows changes are merged - cmd: git clone --depth 1 -b dtip-windows https://github.com/ecmwf/ecbuild.git %ECBUILD_SRC% - # debug - - cmd: conda --version - # install linux utils - cmd: conda install -c msys2 m2-bash ^ m2-findutils ^ From d609b35486df9a7abd1efb68d6d974b97a0b26dc Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Wed, 9 Jan 2019 18:03:38 +0000 Subject: [PATCH 055/414] Appveyor: speed up builds by using jom jom is an nmake clone with a -j option. --- .appveyor.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index fa3aa9941..bac0753f9 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -50,8 +50,8 @@ install: m2-diffutils ^ m2-perl - # get the latest version of cmake - - cmd: conda install -c conda-forge cmake + # get the latest version of cmake & jom + - cmd: conda install -c conda-forge cmake jom #---------------------------------# # build configuration # @@ -67,7 +67,7 @@ before_build: build_script: - cmd: cd %ECCODES_SRC% - cmd: mkdir build && cd build - - cmd: cmake -G "NMake Makefiles" ^ + - cmd: cmake -G "NMake Makefiles JOM" ^ -D CMAKE_INSTALL_PREFIX=%INSTALL_DIR% ^ -D CMAKE_BUILD_TYPE=Release ^ -D ENABLE_FORTRAN=0 ^ @@ -76,9 +76,9 @@ build_script: -D ENABLE_MEMFS=0 ^ -D ENABLE_EXTRA_TESTS=OFF ^ .. - - cmd: nmake + - cmd: jom -j2 - cmd: ctest - - cmd: nmake install + - cmd: jom install #---------------------------------# # tests configuration # From 937a71ef44712f9b23daf41fbd2c91589ad5c344 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Wed, 9 Jan 2019 18:37:58 +0000 Subject: [PATCH 056/414] Appveyor: fix typo --- .appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.appveyor.yml b/.appveyor.yml index bac0753f9..90ade3727 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -23,7 +23,7 @@ environment: init: # make sure git clones symlinks as symlinks - cmd: git config --global core.symlinks true - # add conda bins to path so test can find linux utils + # add conda bins to path so tests can find linux utils - cmd: set PATH=%CONDA%\Library\usr\bin;%CONDA%\Library\bin;%CONDA%\Scripts;%CONDA%\bin;%PATH% # add eccodes\build\bin to path so tests can find eccodes.dll - cmd: set PATH=%PATH%;%ECCODES_SRC%\build\bin From 9d7f7cf0ec1c30be97da382218200d3806e0b89d Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Thu, 10 Jan 2019 11:53:36 +0000 Subject: [PATCH 057/414] Windows: define YY_NO_UNISTD_H only if it's not defined already This was causing a macro redefinition warning for those building with Visual Studio instead of cmake. --- src/eccodes_windef.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/eccodes_windef.h b/src/eccodes_windef.h index 4f6992575..59815e17d 100644 --- a/src/eccodes_windef.h +++ b/src/eccodes_windef.h @@ -13,8 +13,10 @@ /* Microsoft Windows Visual Studio support */ #if defined(_WIN32) && defined(_MSC_VER) -# define ECCODES_ON_WINDOWS -# define YY_NO_UNISTD_H + #define ECCODES_ON_WINDOWS + #ifndef YY_NO_UNISTD_H + #define YY_NO_UNISTD_H + #endif #endif #endif From 073fd7d987b8fd220519e0833ff3565f8988b7ce Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Thu, 10 Jan 2019 16:23:14 +0000 Subject: [PATCH 058/414] Windows: tigge: close directory when finished --- tigge/tigge_tools.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tigge/tigge_tools.c b/tigge/tigge_tools.c index d33cc9bb2..e2e38a5d2 100644 --- a/tigge/tigge_tools.c +++ b/tigge/tigge_tools.c @@ -74,6 +74,8 @@ void scan(const char* name) } } } while(!_findnext(handle, &fileinfo)); + + _findclose(handle); } else validate(name); From 496c8cf19277b011d1224b3974c8e75b8b973a97 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Thu, 10 Jan 2019 17:10:13 +0000 Subject: [PATCH 059/414] Remove dead code --- tools/grib_tools.c | 26 +------------------------- 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/tools/grib_tools.c b/tools/grib_tools.c index fb364e2f1..831d48ba3 100644 --- a/tools/grib_tools.c +++ b/tools/grib_tools.c @@ -1140,32 +1140,8 @@ void grib_tools_write_message(grib_runtime_options* options, grib_handle* h) } options->outfile->file = NULL; - -#if 0 - if (!options->outfile->file) { - options->outfile->file = fopen(options->outfile->name,"w"); - if(!options->outfile->file) { - perror(options->outfile->name); - exit(1); - } - } - GRIB_CHECK_NOLINE(grib_get_message(h,&buffer,&size),0); - if (options->gts && h->gts_header) - fwrite(h->gts_header,1,h->gts_header_len,options->outfile->file); - - if(fwrite(buffer,1,size,options->outfile->file) != size) - { - perror(options->outfile->name); - exit(1); - } - - if (options->gts && h->gts_header) { - char gts_trailer[4]={'\x0D','\x0D','\x0A','\x03'}; - fwrite(gts_trailer,1,4,options->outfile->file); - } -#endif - } + int exit_if_input_is_directory(const char* tool_name, const char* filename) { struct stat s; From 35ce157d9375f678fe1ee2b9b2cabee661b62ede Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Thu, 10 Jan 2019 17:13:05 +0000 Subject: [PATCH 060/414] Windows: tigge: remove isWinDir check So it's the same as on non-Windows --- tigge/tigge_tools.c | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/tigge/tigge_tools.c b/tigge/tigge_tools.c index e2e38a5d2..0c87c37ed 100644 --- a/tigge/tigge_tools.c +++ b/tigge/tigge_tools.c @@ -52,12 +52,6 @@ void scan(const char* name) } #else // based on similar code in grib_tools.c -static int isWinDir(const struct _finddata_t *fileinfo) -{ - if((fileinfo->attrib & 16) == 16) - return 1; - return 0; -} void scan(const char* name) { struct _finddata_t fileinfo; @@ -66,12 +60,9 @@ void scan(const char* name) { char tmp[1024]; do { - if(isWinDir(&fileinfo)) - { - if(fileinfo.name[0] != '.') { - sprintf(tmp, "%s/%s", name, fileinfo.name); - scan(tmp); - } + if(fileinfo.name[0] != '.') { + sprintf(tmp, "%s/%s", name, fileinfo.name); + scan(tmp); } } while(!_findnext(handle, &fileinfo)); From 7da82c678d7f273b06624fabfb38880f701d92cc Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Thu, 10 Jan 2019 17:35:24 +0000 Subject: [PATCH 061/414] Windows: tigge: append wildcard to directory name So _findfirst actually works. --- tigge/tigge_tools.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tigge/tigge_tools.c b/tigge/tigge_tools.c index 0c87c37ed..d08e63ae8 100644 --- a/tigge/tigge_tools.c +++ b/tigge/tigge_tools.c @@ -56,9 +56,10 @@ void scan(const char* name) { struct _finddata_t fileinfo; intptr_t handle; - if((handle = _findfirst(name, &fileinfo)) != -1) + char tmp[1024]; + sprintf(tmp, "%s/*", name); + if((handle = _findfirst(tmp, &fileinfo)) != -1) { - char tmp[1024]; do { if(fileinfo.name[0] != '.') { sprintf(tmp, "%s/%s", name, fileinfo.name); From 1603eae8221639a3377f037a37d9b0c7ae8961e7 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Thu, 10 Jan 2019 17:37:27 +0000 Subject: [PATCH 062/414] Windows: fix usage of _findfirst --- tools/grib_tools.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/grib_tools.c b/tools/grib_tools.c index 831d48ba3..c267ef1af 100644 --- a/tools/grib_tools.c +++ b/tools/grib_tools.c @@ -555,7 +555,9 @@ static void doProcessing(grib_context* c,grib_runtime_options* options,const cha static int scan(grib_context* c,grib_runtime_options* options,const char* dir) { struct _finddata_t fileinfo; intptr_t handle; - if((handle = _findfirst(dir, &fileinfo)) != -1) + char buffer[1024]; + sprintf(buffer, "%s/*", dir); + if((handle = _findfirst(buffer, &fileinfo)) != -1) doProcessing(c, options, dir, &fileinfo); else { From c0fbbba586798ea967dc58857163dd371641c96b Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Thu, 10 Jan 2019 17:38:36 +0000 Subject: [PATCH 063/414] Windows: remove directory check There's no directory check in the non-Windows code. --- tools/grib_tools.c | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/tools/grib_tools.c b/tools/grib_tools.c index c267ef1af..b59473bf0 100644 --- a/tools/grib_tools.c +++ b/tools/grib_tools.c @@ -535,21 +535,12 @@ static int scan(grib_context* c,grib_runtime_options* options,const char* dir) return 0; } #else -static int isWinDir(const struct _finddata_t *fileinfo) -{ - if((fileinfo->attrib & 16) == 16) - return 1; - return 0; -} static void doProcessing(grib_context* c,grib_runtime_options* options,const char* dir, const struct _finddata_t *fileinfo) { - if(isWinDir(fileinfo)) - { - if(strcmp(fileinfo->name, ".") != 0 && strcmp(fileinfo->name,"..") != 0) { - char buf[1024]; - sprintf(buf,"%s/%s",dir,fileinfo->name); - process(c,options,buf); - } + if(strcmp(fileinfo->name, ".") != 0 && strcmp(fileinfo->name,"..") != 0) { + char buf[1024]; + sprintf(buf,"%s/%s",dir,fileinfo->name); + process(c,options,buf); } } static int scan(grib_context* c,grib_runtime_options* options,const char* dir) { From 667fc41f643f75ea22886a02478a0538cac9dbcf Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Thu, 10 Jan 2019 17:39:15 +0000 Subject: [PATCH 064/414] Windows: remove dead comment --- tigge/tigge_tools.c | 1 - 1 file changed, 1 deletion(-) diff --git a/tigge/tigge_tools.c b/tigge/tigge_tools.c index d08e63ae8..1b16c4333 100644 --- a/tigge/tigge_tools.c +++ b/tigge/tigge_tools.c @@ -51,7 +51,6 @@ void scan(const char* name) } } #else -// based on similar code in grib_tools.c void scan(const char* name) { struct _finddata_t fileinfo; From 6e97dc6858be21162219aa4f7d7a1259607b68f8 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Thu, 10 Jan 2019 17:42:10 +0000 Subject: [PATCH 065/414] Windows: refactor grib_tools.c scan --- tools/grib_tools.c | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/tools/grib_tools.c b/tools/grib_tools.c index b59473bf0..857171299 100644 --- a/tools/grib_tools.c +++ b/tools/grib_tools.c @@ -535,28 +535,26 @@ static int scan(grib_context* c,grib_runtime_options* options,const char* dir) return 0; } #else -static void doProcessing(grib_context* c,grib_runtime_options* options,const char* dir, const struct _finddata_t *fileinfo) -{ - if(strcmp(fileinfo->name, ".") != 0 && strcmp(fileinfo->name,"..") != 0) { - char buf[1024]; - sprintf(buf,"%s/%s",dir,fileinfo->name); - process(c,options,buf); - } -} static int scan(grib_context* c,grib_runtime_options* options,const char* dir) { struct _finddata_t fileinfo; intptr_t handle; char buffer[1024]; sprintf(buffer, "%s/*", dir); if((handle = _findfirst(buffer, &fileinfo)) != -1) - doProcessing(c, options, dir, &fileinfo); + { + do { + if(strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name,"..") != 0) { + char buf[1024]; + sprintf(buf, "%s/%s", dir, fileinfo.name); + process(c, options, buf); + } + } while(!_findnext(handle, &fileinfo)); + } else { grib_context_log(c,(GRIB_LOG_ERROR) | (GRIB_LOG_PERROR) , "opendir %s",dir); return GRIB_IO_PROBLEM; } - while(!_findnext(handle, &fileinfo)) - doProcessing(c, options, dir, &fileinfo); return 0; } #endif From 47d7085bc41e42a3397e07eba06907cb4dc99956 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Thu, 10 Jan 2019 17:42:39 +0000 Subject: [PATCH 066/414] Windows: close dir when we've finished scanning --- tools/grib_tools.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/grib_tools.c b/tools/grib_tools.c index 857171299..a8031424a 100644 --- a/tools/grib_tools.c +++ b/tools/grib_tools.c @@ -549,6 +549,8 @@ static int scan(grib_context* c,grib_runtime_options* options,const char* dir) { process(c, options, buf); } } while(!_findnext(handle, &fileinfo)); + + _findclose(handle); } else { From 6c2e3db27162f8760beeacc658bd17a6848328af Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Thu, 10 Jan 2019 17:45:17 +0000 Subject: [PATCH 067/414] Close dir when we've finished scanning --- tools/grib_tools.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/grib_tools.c b/tools/grib_tools.c index a8031424a..fd6e23439 100644 --- a/tools/grib_tools.c +++ b/tools/grib_tools.c @@ -532,6 +532,7 @@ static int scan(grib_context* c,grib_runtime_options* options,const char* dir) process(c,options,buf); } } + closedir(d); return 0; } #else From 56ff5503ea716545b2aca0df8c3ab4a6cadc2d09 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Fri, 11 Jan 2019 10:12:08 +0000 Subject: [PATCH 068/414] Appveyor: switch back to nmake jom seems to be causing intermittent build failures. That's no good. --- .appveyor.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index 90ade3727..2ff3fc9c7 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -50,8 +50,8 @@ install: m2-diffutils ^ m2-perl - # get the latest version of cmake & jom - - cmd: conda install -c conda-forge cmake jom + # get the latest version of cmake + - cmd: conda install -c conda-forge cmake #---------------------------------# # build configuration # @@ -67,7 +67,7 @@ before_build: build_script: - cmd: cd %ECCODES_SRC% - cmd: mkdir build && cd build - - cmd: cmake -G "NMake Makefiles JOM" ^ + - cmd: cmake -G "NMake Makefiles" ^ -D CMAKE_INSTALL_PREFIX=%INSTALL_DIR% ^ -D CMAKE_BUILD_TYPE=Release ^ -D ENABLE_FORTRAN=0 ^ @@ -76,9 +76,9 @@ build_script: -D ENABLE_MEMFS=0 ^ -D ENABLE_EXTRA_TESTS=OFF ^ .. - - cmd: jom -j2 + - cmd: nmake - cmd: ctest - - cmd: jom install + - cmd: nmake install #---------------------------------# # tests configuration # From 132a72202091195b6044b3dd8fbcf397f6e0f976 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Fri, 11 Jan 2019 11:02:04 +0000 Subject: [PATCH 069/414] Remove .gitattributes It's making unsafe changes. --- .gitattributes | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 4282322ac..000000000 --- a/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -# Set the default behavior, in case people don't have core.autocrlf set. -* text eol=lf From ec7495c289768ee2155b25e04aaf8bafec8f0325 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Sat, 12 Jan 2019 11:30:05 +0000 Subject: [PATCH 070/414] Appveyor: enable NETCDF --- .appveyor.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.appveyor.yml b/.appveyor.yml index 2ff3fc9c7..b49059e2a 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -53,6 +53,9 @@ install: # get the latest version of cmake - cmd: conda install -c conda-forge cmake + # other deps + - cmd: conda install netcdf4 + #---------------------------------# # build configuration # #---------------------------------# @@ -72,6 +75,7 @@ build_script: -D CMAKE_BUILD_TYPE=Release ^ -D ENABLE_FORTRAN=0 ^ -D ENABLE_PYTHON=0 ^ + -D ENABLE_NETCDF=1 ^ -D IEEE_LE=1 ^ -D ENABLE_MEMFS=0 ^ -D ENABLE_EXTRA_TESTS=OFF ^ From 67bb6588a27f19cfe97dc6eb9f5d15950582bbf7 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Sat, 12 Jan 2019 12:01:05 +0000 Subject: [PATCH 071/414] Appveyor: enable JPG --- .appveyor.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.appveyor.yml b/.appveyor.yml index b49059e2a..a1da61268 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -76,6 +76,7 @@ build_script: -D ENABLE_FORTRAN=0 ^ -D ENABLE_PYTHON=0 ^ -D ENABLE_NETCDF=1 ^ + -D ENABLE_JPG=1 ^ -D IEEE_LE=1 ^ -D ENABLE_MEMFS=0 ^ -D ENABLE_EXTRA_TESTS=OFF ^ From 50e1a413edf3707bad7c9da56cb1d4d692621485 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Sat, 12 Jan 2019 12:14:33 +0000 Subject: [PATCH 072/414] Appveyor: build both with & without MEMFS --- .appveyor.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.appveyor.yml b/.appveyor.yml index a1da61268..14dda59fb 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -19,6 +19,10 @@ environment: ECCODES_SRC: $(GIT_CLONE_DIR)\eccodes ECBUILD_SRC: $(GIT_CLONE_DIR)\ecbuild + matrix: + - ENABLE_MEMFS: 0 + - ENABLE_MEMFS: 1 + # scripts that are called at very beginning, before repo cloning init: # make sure git clones symlinks as symlinks @@ -78,7 +82,7 @@ build_script: -D ENABLE_NETCDF=1 ^ -D ENABLE_JPG=1 ^ -D IEEE_LE=1 ^ - -D ENABLE_MEMFS=0 ^ + -D ENABLE_MEMFS=%ENABLE_MEMFS% ^ -D ENABLE_EXTRA_TESTS=OFF ^ .. - cmd: nmake From 6f117addb14d3fe9bc248e5dcc1d0f3d74af2c12 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Sat, 12 Jan 2019 14:19:24 +0000 Subject: [PATCH 073/414] Appveyor: bump build version --- .appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.appveyor.yml b/.appveyor.yml index 14dda59fb..e3fa56210 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -2,7 +2,7 @@ # general configuration # #---------------------------------# -version: 2.9.2-{build}-{branch} +version: 2.11.0-{build}-{branch} branches: only: From 2eb9668779e3f73b2775b63e66c55f842fd48d33 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Mon, 14 Jan 2019 09:17:58 +0000 Subject: [PATCH 074/414] Appveyor: activate conda environment This is more straightforward than manually changing the system path. --- .appveyor.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index e3fa56210..0d001653e 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -27,8 +27,8 @@ environment: init: # make sure git clones symlinks as symlinks - cmd: git config --global core.symlinks true - # add conda bins to path so tests can find linux utils - - cmd: set PATH=%CONDA%\Library\usr\bin;%CONDA%\Library\bin;%CONDA%\Scripts;%CONDA%\bin;%PATH% + # activate conda environment so the tests can find linux utils + - cmd: call %CONDA%\Scripts\activate.bat # add eccodes\build\bin to path so tests can find eccodes.dll - cmd: set PATH=%PATH%;%ECCODES_SRC%\build\bin # auto-yes for conda From e212ae79c4d2c07d52e50b7c591ac83e002800e4 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Mon, 14 Jan 2019 11:02:20 +0000 Subject: [PATCH 075/414] ECC-852: Add eccodes_find_linux_utils.cmake We require a handful of standard linux utils to run the tests - these need to be explicitly installed on Windows. We add a check for the utils so we can notify the user if any util is missing. --- cmake/eccodes_find_linux_utils.cmake | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 cmake/eccodes_find_linux_utils.cmake diff --git a/cmake/eccodes_find_linux_utils.cmake b/cmake/eccodes_find_linux_utils.cmake new file mode 100644 index 000000000..906365b0c --- /dev/null +++ b/cmake/eccodes_find_linux_utils.cmake @@ -0,0 +1,24 @@ +# (C) Copyright 2011- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# In applying this licence, ECMWF does not waive the privileges and immunities +# granted to it by virtue of its status as an intergovernmental organisation nor +# does it submit to any jurisdiction. + +function( eccodes_find_linux_util ) + find_program( FOUND_PROGRAM ${_FIRST_ARG} ) + if( NOT FOUND_PROGRAM ) + ecbuild_critical( "Failed to find linux util: ${_FIRST_ARG}" ) + endif() +endfunction( eccodes_find_linux_util ) + +# These utils are required for the tests to run. +# To install them on Windows, install the appropriate m2-* conda package. +# e.g. for bash: `conda install -msys2 m2-bash` +# Make sure to activate the conda environment so the utils are in the system path. +set( REQUIRED_UTILS bash find grep sed gawk diff ) + +foreach( UTIL ${REQUIRED_UTILS} ) + eccodes_find_linux_utils( ${UTIL} ) +endforeach() From e2fc544a01b486ba77715d150bede143326e9277 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Mon, 14 Jan 2019 12:43:34 +0000 Subject: [PATCH 076/414] Include eccodes_find_linux_utils in CMakeLists --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index e511865d2..adf53793a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -58,6 +58,7 @@ check_c_source_compiles( " ECCODES_HAVE_C_INLINE ) include(eccodes_test_endiness) +include(eccodes_find_linux_utils) ecbuild_debug("ECCODES_BIG_ENDIAN=${ECCODES_BIG_ENDIAN}") ecbuild_debug("ECCODES_LITTLE_ENDIAN=${ECCODES_LITTLE_ENDIAN}") From 891c454987c98d7ef05488c7926a665710a9a1cb Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Mon, 14 Jan 2019 12:43:46 +0000 Subject: [PATCH 077/414] Check for linux utils only if tests are enabled --- cmake/eccodes_find_linux_utils.cmake | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/cmake/eccodes_find_linux_utils.cmake b/cmake/eccodes_find_linux_utils.cmake index 906365b0c..3803a00a0 100644 --- a/cmake/eccodes_find_linux_utils.cmake +++ b/cmake/eccodes_find_linux_utils.cmake @@ -13,12 +13,14 @@ function( eccodes_find_linux_util ) endif() endfunction( eccodes_find_linux_util ) -# These utils are required for the tests to run. -# To install them on Windows, install the appropriate m2-* conda package. -# e.g. for bash: `conda install -msys2 m2-bash` -# Make sure to activate the conda environment so the utils are in the system path. -set( REQUIRED_UTILS bash find grep sed gawk diff ) +if( ENABLE_TESTS ) + # These utils are required for the tests to run. + # To install them on Windows, install the appropriate m2-* conda package. + # e.g. for bash: `conda install -msys2 m2-bash` + # Make sure to activate the conda environment so the utils are in the system path. + set( REQUIRED_UTILS bash find grep sed gawk diff ) -foreach( UTIL ${REQUIRED_UTILS} ) - eccodes_find_linux_utils( ${UTIL} ) -endforeach() + foreach( UTIL ${REQUIRED_UTILS} ) + eccodes_find_linux_utils( ${UTIL} ) + endforeach() +endif() From 2a3fd806daa5964ba1bfaf7db207d0016c8b2c15 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Mon, 14 Jan 2019 13:00:44 +0000 Subject: [PATCH 078/414] Revert "Appveyor: build both with & without MEMFS" This reverts commit 50e1a413edf3707bad7c9da56cb1d4d692621485. --- .appveyor.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index 0d001653e..f73ac965f 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -19,10 +19,6 @@ environment: ECCODES_SRC: $(GIT_CLONE_DIR)\eccodes ECBUILD_SRC: $(GIT_CLONE_DIR)\ecbuild - matrix: - - ENABLE_MEMFS: 0 - - ENABLE_MEMFS: 1 - # scripts that are called at very beginning, before repo cloning init: # make sure git clones symlinks as symlinks @@ -82,7 +78,7 @@ build_script: -D ENABLE_NETCDF=1 ^ -D ENABLE_JPG=1 ^ -D IEEE_LE=1 ^ - -D ENABLE_MEMFS=%ENABLE_MEMFS% ^ + -D ENABLE_MEMFS=0 ^ -D ENABLE_EXTRA_TESTS=OFF ^ .. - cmd: nmake From a4494550854301c7e6ff41d4dd5d76de4e4e8ef4 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Mon, 14 Jan 2019 13:22:11 +0000 Subject: [PATCH 079/414] Make find_linux_utils a windows-only check --- CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index adf53793a..2b08f1a81 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -58,7 +58,9 @@ check_c_source_compiles( " ECCODES_HAVE_C_INLINE ) include(eccodes_test_endiness) -include(eccodes_find_linux_utils) +if( EC_OS_NAME MATCHES "windows" ) + include(eccodes_find_linux_utils) +endif() ecbuild_debug("ECCODES_BIG_ENDIAN=${ECCODES_BIG_ENDIAN}") ecbuild_debug("ECCODES_LITTLE_ENDIAN=${ECCODES_LITTLE_ENDIAN}") From 11a2352d4ef2c58ca92c5d9a49dc5e4eb3c03ce3 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Mon, 14 Jan 2019 13:27:50 +0000 Subject: [PATCH 080/414] Windows: fix find_linux_utils function call --- cmake/eccodes_find_linux_utils.cmake | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cmake/eccodes_find_linux_utils.cmake b/cmake/eccodes_find_linux_utils.cmake index 3803a00a0..f17abcab0 100644 --- a/cmake/eccodes_find_linux_utils.cmake +++ b/cmake/eccodes_find_linux_utils.cmake @@ -6,10 +6,10 @@ # granted to it by virtue of its status as an intergovernmental organisation nor # does it submit to any jurisdiction. -function( eccodes_find_linux_util ) - find_program( FOUND_PROGRAM ${_FIRST_ARG} ) +function( eccodes_find_linux_util _p_UTIL ) + find_program( FOUND_PROGRAM ${_p_UTIL} ) if( NOT FOUND_PROGRAM ) - ecbuild_critical( "Failed to find linux util: ${_FIRST_ARG}" ) + ecbuild_critical( "Failed to find linux util: ${_p_UTIL}" ) endif() endfunction( eccodes_find_linux_util ) @@ -21,6 +21,6 @@ if( ENABLE_TESTS ) set( REQUIRED_UTILS bash find grep sed gawk diff ) foreach( UTIL ${REQUIRED_UTILS} ) - eccodes_find_linux_utils( ${UTIL} ) + eccodes_find_linux_util( ${UTIL} ) endforeach() endif() From bc25f907b36d631149aab168497c8a192cbd711d Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Wed, 16 Jan 2019 09:18:13 +0000 Subject: [PATCH 081/414] Appveyor: switch to develop branch of ecbuild --- .appveyor.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index f73ac965f..f10096654 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -37,8 +37,7 @@ clone_depth: 1 # scripts that run after cloning repository install: # install ecbuild - # TODO: switch from the dtip-windows branch once the windows changes are merged - - cmd: git clone --depth 1 -b dtip-windows https://github.com/ecmwf/ecbuild.git %ECBUILD_SRC% + - cmd: git clone --depth 1 https://github.com/ecmwf/ecbuild.git %ECBUILD_SRC% # install linux utils - cmd: conda install -c msys2 m2-bash ^ From a398dec293f47c1767549cc7616c15901f3f233c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 23 Jan 2019 11:49:57 +0000 Subject: [PATCH 082/414] ECC-837, ECC-868, ECC-830, ECC-870: Changes needed for PGen --- VERSION.cmake | 2 +- definitions/boot.def | 4 +- definitions/bufr/boot.def | 1 + .../bufr/tables/0/wmo/18/element.table | 2 +- .../bufr/tables/0/wmo/22/element.table | 2 +- .../bufr/tables/0/wmo/23/element.table | 2 +- .../bufr/tables/0/wmo/24/element.table | 2 +- .../bufr/tables/0/wmo/25/element.table | 2 +- .../bufr/tables/0/wmo/26/element.table | 2 +- .../bufr/tables/0/wmo/27/element.table | 2 +- .../bufr/tables/0/wmo/28/element.table | 2 +- .../bufr/tables/0/wmo/29/element.table | 2 +- .../bufr/tables/0/wmo/30/element.table | 2 +- .../bufr/tables/0/wmo/31/element.table | 2 +- definitions/grib2/cfVarName.def | 16 ++++++- definitions/grib2/name.def | 16 ++++++- definitions/grib2/paramId.def | 14 +++++- definitions/grib2/shortName.def | 16 ++++++- definitions/grib2/units.def | 14 +++++- src/grib_accessor_class_bufr_data_array.c | 31 ++++++++++--- src/grib_accessor_class_data_simple_packing.c | 23 +++++++++- tests/bufr_ecc-379.sh | 43 ++++++++++++++++++- version.sh | 2 +- 23 files changed, 174 insertions(+), 30 deletions(-) diff --git a/VERSION.cmake b/VERSION.cmake index 776a44077..9480c7ca6 100644 --- a/VERSION.cmake +++ b/VERSION.cmake @@ -1 +1 @@ -set( ${PROJECT_NAME}_VERSION_STR "2.10.1" ) +set( ${PROJECT_NAME}_VERSION_STR "2.10.2" ) diff --git a/definitions/boot.def b/definitions/boot.def index ccd367ae7..318f4eb69 100644 --- a/definitions/boot.def +++ b/definitions/boot.def @@ -53,8 +53,8 @@ transient unitsBias=0 : hidden; constant globalDomain = "g"; transient timeRangeIndicatorFromStepRange=-1 : hidden; -# GRIB-802 -transient override_large_constant_fields = 0 : hidden; +# ECC-868 +transient produceLargeConstantFields = 0 : hidden; meta libraryVersion library_version() : hidden; diff --git a/definitions/bufr/boot.def b/definitions/bufr/boot.def index fc9aa46fd..0c3f5b413 100644 --- a/definitions/bufr/boot.def +++ b/definitions/bufr/boot.def @@ -9,6 +9,7 @@ lookup[1] ed (7,editionNumber); transient missingValue=999999 : hidden; +transient setToMissingIfOutOfRange=0 : hidden; # This gets updated twice a year by WMO. # See http://www.wmo.int/pages/prog/www/WMOCodes/WMO306_vI2/LatestVERSION/LatestVERSION.html diff --git a/definitions/bufr/tables/0/wmo/18/element.table b/definitions/bufr/tables/0/wmo/18/element.table index e5bee2121..4befd8a1a 100644 --- a/definitions/bufr/tables/0/wmo/18/element.table +++ b/definitions/bufr/tables/0/wmo/18/element.table @@ -794,7 +794,7 @@ 015051|meteorologicalOpticalRange|long|METEOROLOGICAL OPTICAL RANGE|m|0|0|18|m|0|6 015052|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan5Nm|double|LOG_10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 5 NM|log (m-3)|1|60|6|log (m-3)|1|3 015053|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan14Nm|double|LOG_10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 14 NM|log (m-3)|2|600|9|log (m-3)|2|4 -015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG_10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 µM|log (m-3)|2|550|9|log (m-3)|2|4 +015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG_10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 uM|log (m-3)|2|550|9|log (m-3)|2|4 015055|nonVolatileAerosolRatio|long|NON VOLATILE AEROSOL RATIO|Numeric|2|0|7|Numeric|2|3 019001|synopticFeatureType|table|TYPE OF SYNOPTIC FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2 019002|effectiveRadiusOfFeature|long|EFFECTIVE RADIUS OF FEATURE|m|-2|0|12|m|-2|4 diff --git a/definitions/bufr/tables/0/wmo/22/element.table b/definitions/bufr/tables/0/wmo/22/element.table index ae26cf436..b89814242 100644 --- a/definitions/bufr/tables/0/wmo/22/element.table +++ b/definitions/bufr/tables/0/wmo/22/element.table @@ -787,7 +787,7 @@ 015051|meteorologicalOpticalRange|long|METEOROLOGICAL OPTICAL RANGE|m|0|0|18|m|0|6 015052|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan5Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 5 NM|log (m-3)|1|60|6|log (m-3)|1|3 015053|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan14Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 14 NM|log (m-3)|2|600|9|log (m-3)|2|4 -015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 µM|log (m-3)|2|550|9|log (m-3)|2|4 +015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 uM|log (m-3)|2|550|9|log (m-3)|2|4 015055|nonVolatileAerosolRatio|long|NON VOLATILE AEROSOL RATIO|Numeric|2|0|7|Numeric|2|3 015062|aerosolOpticalThickness|long|AEROSOL OPTICAL THICKNESS|Numeric|3|-1000|14|Numeric|3|5 019001|synopticFeatureType|table|TYPE OF SYNOPTIC FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2 diff --git a/definitions/bufr/tables/0/wmo/23/element.table b/definitions/bufr/tables/0/wmo/23/element.table index 3cf7dec61..0dc3205d1 100644 --- a/definitions/bufr/tables/0/wmo/23/element.table +++ b/definitions/bufr/tables/0/wmo/23/element.table @@ -789,7 +789,7 @@ 015051|meteorologicalOpticalRange|long|METEOROLOGICAL OPTICAL RANGE|m|0|0|18|m|0|6 015052|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan5Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 5 NM|log (m-3)|1|60|6|log (m-3)|1|3 015053|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan14Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 14 NM|log (m-3)|2|600|9|log (m-3)|2|4 -015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 µM|log (m-3)|2|550|9|log (m-3)|2|4 +015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 uM|log (m-3)|2|550|9|log (m-3)|2|4 015055|nonVolatileAerosolRatio|long|NON VOLATILE AEROSOL RATIO|Numeric|2|0|7|Numeric|2|3 015062|aerosolOpticalThickness|long|AEROSOL OPTICAL THICKNESS|Numeric|3|-1000|14|Numeric|3|5 019001|synopticFeatureType|table|TYPE OF SYNOPTIC FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2 diff --git a/definitions/bufr/tables/0/wmo/24/element.table b/definitions/bufr/tables/0/wmo/24/element.table index bc72b42fe..19571910f 100644 --- a/definitions/bufr/tables/0/wmo/24/element.table +++ b/definitions/bufr/tables/0/wmo/24/element.table @@ -789,7 +789,7 @@ 015051|meteorologicalOpticalRange|long|METEOROLOGICAL OPTICAL RANGE|m|0|0|18|m|0|6 015052|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan5Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 5 NM|log (m-3)|1|60|6|log (m-3)|1|3 015053|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan14Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 14 NM|log (m-3)|2|600|9|log (m-3)|2|4 -015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 µM|log (m-3)|2|550|9|log (m-3)|2|4 +015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 uM|log (m-3)|2|550|9|log (m-3)|2|4 015055|nonVolatileAerosolRatio|long|NON VOLATILE AEROSOL RATIO|Numeric|2|0|7|Numeric|2|3 015062|aerosolOpticalThickness|long|AEROSOL OPTICAL THICKNESS|Numeric|3|-1000|14|Numeric|3|5 019001|synopticFeatureType|table|TYPE OF SYNOPTIC FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2 diff --git a/definitions/bufr/tables/0/wmo/25/element.table b/definitions/bufr/tables/0/wmo/25/element.table index bd1689da6..55cc8a235 100644 --- a/definitions/bufr/tables/0/wmo/25/element.table +++ b/definitions/bufr/tables/0/wmo/25/element.table @@ -795,7 +795,7 @@ 015051|meteorologicalOpticalRange|long|METEOROLOGICAL OPTICAL RANGE|m|0|0|18|m|0|6 015052|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan5Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 5 NM|log (m-3)|1|60|6|log (m-3)|1|3 015053|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan14Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 14 NM|log (m-3)|2|600|9|log (m-3)|2|4 -015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween025And25M|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 µM|log (m-3)|2|550|9|log (m-3)|2|4 +015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween025And25M|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 uM|log (m-3)|2|550|9|log (m-3)|2|4 015055|nonVolatileAerosolRatio|long|NON VOLATILE AEROSOL RATIO|Numeric|2|0|7|Numeric|2|3 015062|aerosolOpticalThickness|long|AEROSOL OPTICAL THICKNESS|Numeric|3|-1000|14|Numeric|3|5 019001|synopticFeatureType|table|TYPE OF SYNOPTIC FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2 diff --git a/definitions/bufr/tables/0/wmo/26/element.table b/definitions/bufr/tables/0/wmo/26/element.table index 698311257..c6966123d 100644 --- a/definitions/bufr/tables/0/wmo/26/element.table +++ b/definitions/bufr/tables/0/wmo/26/element.table @@ -809,7 +809,7 @@ 015051|meteorologicalOpticalRange|long|METEOROLOGICAL OPTICAL RANGE|m|0|0|18|m|0|6 015052|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan5Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 5 NM|log (m-3)|1|60|6|log (m-3)|1|3 015053|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan14Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 14 NM|log (m-3)|2|600|9|log (m-3)|2|4 -015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 µM|log (m-3)|2|550|9|log (m-3)|2|4 +015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 uM|log (m-3)|2|550|9|log (m-3)|2|4 015055|nonVolatileAerosolRatio|long|NON VOLATILE AEROSOL RATIO|Numeric|2|0|7|Numeric|2|3 015062|aerosolOpticalThickness|long|AEROSOL OPTICAL THICKNESS|Numeric|3|-1000|14|Numeric|3|5 019001|synopticFeatureType|table|TYPE OF SYNOPTIC FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2 diff --git a/definitions/bufr/tables/0/wmo/27/element.table b/definitions/bufr/tables/0/wmo/27/element.table index 9841331b8..4c577b417 100644 --- a/definitions/bufr/tables/0/wmo/27/element.table +++ b/definitions/bufr/tables/0/wmo/27/element.table @@ -843,7 +843,7 @@ 015051|meteorologicalOpticalRange|long|METEOROLOGICAL OPTICAL RANGE|m|0|0|18|m|0|6 015052|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan5Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 5 NM|log (m-3)|1|60|6|log (m-3)|1|3 015053|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan14Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 14 NM|log (m-3)|2|600|9|log (m-3)|2|4 -015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 µM|log (m-3)|2|550|9|log (m-3)|2|4 +015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 uM|log (m-3)|2|550|9|log (m-3)|2|4 015055|nonVolatileAerosolRatio|long|NON VOLATILE AEROSOL RATIO|Numeric|2|0|7|Numeric|2|3 015062|aerosolOpticalThickness|long|AEROSOL OPTICAL THICKNESS|Numeric|3|-1000|14|Numeric|3|5 019001|synopticFeatureType|table|TYPE OF SYNOPTIC FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2 diff --git a/definitions/bufr/tables/0/wmo/28/element.table b/definitions/bufr/tables/0/wmo/28/element.table index cf493fd5c..92d44fa43 100644 --- a/definitions/bufr/tables/0/wmo/28/element.table +++ b/definitions/bufr/tables/0/wmo/28/element.table @@ -858,7 +858,7 @@ 015051|meteorologicalOpticalRange|long|METEOROLOGICAL OPTICAL RANGE|m|0|0|18|m|0|6 015052|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan5Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 5 NM|log (m-3)|1|60|6|log (m-3)|1|3 015053|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan14Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 14 NM|log (m-3)|2|600|9|log (m-3)|2|4 -015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 µM|log (m-3)|2|550|9|log (m-3)|2|4 +015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 uM|log (m-3)|2|550|9|log (m-3)|2|4 015055|nonVolatileAerosolRatio|long|NON VOLATILE AEROSOL RATIO|Numeric|2|0|7|Numeric|2|3 015062|aerosolOpticalThickness|long|AEROSOL OPTICAL THICKNESS|Numeric|3|-1000|14|Numeric|3|5 015063|attenuatedBackscatter|double|ATTENUATED BACKSCATTER|m-1 Sr-1|8|0|20|m-1 Sr-1|8|7 diff --git a/definitions/bufr/tables/0/wmo/29/element.table b/definitions/bufr/tables/0/wmo/29/element.table index bbae0feed..c1a58d38f 100644 --- a/definitions/bufr/tables/0/wmo/29/element.table +++ b/definitions/bufr/tables/0/wmo/29/element.table @@ -863,7 +863,7 @@ 015051|meteorologicalOpticalRange|long|METEOROLOGICAL OPTICAL RANGE|m|0|0|18|m|0|6 015052|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan5Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 5 NM|log (m-3)|1|60|6|log (m-3)|1|3 015053|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan14Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 14 NM|log (m-3)|2|600|9|log (m-3)|2|4 -015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 µM|log (m-3)|2|550|9|log (m-3)|2|4 +015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 uM|log (m-3)|2|550|9|log (m-3)|2|4 015055|nonVolatileAerosolRatio|long|NON VOLATILE AEROSOL RATIO|Numeric|2|0|7|Numeric|2|3 015062|aerosolOpticalThickness|long|AEROSOL OPTICAL THICKNESS|Numeric|3|-1000|14|Numeric|3|5 015063|attenuatedBackscatter|double|ATTENUATED BACKSCATTER|m-1 Sr-1|8|0|20|m-1 Sr-1|8|7 diff --git a/definitions/bufr/tables/0/wmo/30/element.table b/definitions/bufr/tables/0/wmo/30/element.table index 69235223c..055b05949 100644 --- a/definitions/bufr/tables/0/wmo/30/element.table +++ b/definitions/bufr/tables/0/wmo/30/element.table @@ -864,7 +864,7 @@ 015051|meteorologicalOpticalRange|long|METEOROLOGICAL OPTICAL RANGE|m|0|0|18|m|0|6 015052|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan5Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 5 NM|log (m-3)|1|60|6|log (m-3)|1|3 015053|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan14Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 14 NM|log (m-3)|2|600|9|log (m-3)|2|4 -015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 µM|log (m-3)|2|550|9|log (m-3)|2|4 +015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 uM|log (m-3)|2|550|9|log (m-3)|2|4 015055|nonVolatileAerosolRatio|long|NON VOLATILE AEROSOL RATIO|Numeric|2|0|7|Numeric|2|3 015062|aerosolOpticalThickness|long|AEROSOL OPTICAL THICKNESS|Numeric|3|-1000|14|Numeric|3|5 015063|attenuatedBackscatter|double|ATTENUATED BACKSCATTER|m-1 sr-1|8|0|20|m-1 sr-1|8|7 diff --git a/definitions/bufr/tables/0/wmo/31/element.table b/definitions/bufr/tables/0/wmo/31/element.table index 26e9f58a6..a0b1ef0bc 100644 --- a/definitions/bufr/tables/0/wmo/31/element.table +++ b/definitions/bufr/tables/0/wmo/31/element.table @@ -869,7 +869,7 @@ 015051|meteorologicalOpticalRange|long|METEOROLOGICAL OPTICAL RANGE|m|0|0|18|m|0|6 015052|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan5Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 5 NM|log (m-3)|1|60|6|log (m-3)|1|3 015053|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan14Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 14 NM|log (m-3)|2|600|9|log (m-3)|2|4 -015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 µM|log (m-3)|2|550|9|log (m-3)|2|4 +015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 uM|log (m-3)|2|550|9|log (m-3)|2|4 015055|nonVolatileAerosolRatio|long|NON VOLATILE AEROSOL RATIO|Numeric|2|0|7|Numeric|2|3 015062|aerosolOpticalThickness|long|AEROSOL OPTICAL THICKNESS|Numeric|3|-1000|14|Numeric|3|5 015063|attenuatedBackscatter|double|ATTENUATED BACKSCATTER|m-1 sr-1|8|0|20|m-1 sr-1|8|7 diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index 1554d0ccb..a4ef007e1 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -857,6 +857,18 @@ parameterCategory = 1 ; parameterNumber = 121 ; } +#Clear air turbulence (CAT) +'cat' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 29 ; + } +#Mountain wave turbulence (eddy dissipation rate) +'mwt' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 28 ; + } #Soil temperature 'sot' = { discipline = 2 ; @@ -2378,8 +2390,8 @@ parameterCategory = 19 ; parameterNumber = 21 ; } -#Clear air turbulence (CAT) -'cat' = { +#Relative clear air turbulence (RCAT) +'rcat' = { discipline = 0 ; parameterCategory = 19 ; parameterNumber = 22 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index 50119503e..6c5eaed52 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -857,6 +857,18 @@ parameterCategory = 1 ; parameterNumber = 121 ; } +#Clear air turbulence (CAT) +'Clear air turbulence (CAT)' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 29 ; + } +#Mountain wave turbulence (eddy dissipation rate) +'Mountain wave turbulence (eddy dissipation rate)' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 28 ; + } #Soil temperature 'Soil temperature' = { discipline = 2 ; @@ -2378,8 +2390,8 @@ parameterCategory = 19 ; parameterNumber = 21 ; } -#Clear air turbulence (CAT) -'Clear air turbulence (CAT)' = { +#Relative clear air turbulence (RCAT) +'Relative clear air turbulence (RCAT)' = { discipline = 0 ; parameterCategory = 19 ; parameterNumber = 22 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index b3bf0375b..536914e97 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -857,6 +857,18 @@ parameterCategory = 1 ; parameterNumber = 121 ; } +#Clear air turbulence (CAT) +'260290' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 29 ; + } +#Mountain wave turbulence (eddy dissipation rate) +'260291' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 28 ; + } #Soil temperature '260360' = { discipline = 2 ; @@ -2378,7 +2390,7 @@ parameterCategory = 19 ; parameterNumber = 21 ; } -#Clear air turbulence (CAT) +#Relative clear air turbulence (RCAT) '260165' = { discipline = 0 ; parameterCategory = 19 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 654c2ebe2..8a8a3f0d7 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -857,6 +857,18 @@ parameterCategory = 1 ; parameterNumber = 121 ; } +#Clear air turbulence (CAT) +'cat' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 29 ; + } +#Mountain wave turbulence (eddy dissipation rate) +'mwt' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 28 ; + } #Soil temperature 'sot' = { discipline = 2 ; @@ -2378,8 +2390,8 @@ parameterCategory = 19 ; parameterNumber = 21 ; } -#Clear air turbulence (CAT) -'cat' = { +#Relative clear air turbulence (RCAT) +'rcat' = { discipline = 0 ; parameterCategory = 19 ; parameterNumber = 22 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index fabda402e..4c6c79113 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -857,6 +857,18 @@ parameterCategory = 1 ; parameterNumber = 121 ; } +#Clear air turbulence (CAT) +'m**2/3 s**-1' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 29 ; + } +#Mountain wave turbulence (eddy dissipation rate) +'m**2/3 s**-1' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 28 ; + } #Soil temperature 'K' = { discipline = 2 ; @@ -2378,7 +2390,7 @@ parameterCategory = 19 ; parameterNumber = 21 ; } -#Clear air turbulence (CAT) +#Relative clear air turbulence (RCAT) '%' = { discipline = 0 ; parameterCategory = 19 ; diff --git a/src/grib_accessor_class_bufr_data_array.c b/src/grib_accessor_class_bufr_data_array.c index 89fff89ed..2fcd05b66 100644 --- a/src/grib_accessor_class_bufr_data_array.c +++ b/src/grib_accessor_class_bufr_data_array.c @@ -69,6 +69,7 @@ MEMBERS = long* refValList MEMBERS = long refValIndex MEMBERS = bufr_tableb_override* tableb_override + MEMBERS = int set_to_missing_if_out_of_range END_CLASS_DEF @@ -147,6 +148,7 @@ typedef struct grib_accessor_bufr_data_array { long* refValList; long refValIndex; bufr_tableb_override* tableb_override; + int set_to_missing_if_out_of_range; } grib_accessor_bufr_data_array; extern grib_accessor_class* grib_accessor_class_gen; @@ -401,6 +403,7 @@ static void init(grib_accessor* a,const long v, grib_arguments* params) self->refValList=NULL; /* Operator 203YYY: overridden reference values array */ self->refValIndex=0; /* Operator 203YYY: index into overridden reference values array */ self->tableb_override = NULL; /* Operator 203YYY: Table B lookup linked list */ + self->set_to_missing_if_out_of_range = 0; /* By default fail if out of range */ a->length=0; self->bitsToEndData=get_length(a)*8; @@ -449,6 +452,7 @@ static void self_clear(grib_context* c,grib_accessor_bufr_data_array* self) if (self->refValList) grib_context_free(c, self->refValList); self->refValIndex=0; tableB_override_clear(c, self); + self->set_to_missing_if_out_of_range = 0; } static int get_native_type(grib_accessor* a) @@ -732,7 +736,8 @@ static int encode_double_array(grib_context* c,grib_buffer* buff,long* pos, bufr int thereIsAMissing=0; int is_constant; double val0; - const int dont_fail_if_out_of_range = c->bufr_set_to_missing_if_out_of_range;/* ECC-379 */ + /* ECC-379, ECC-830 */ + const int dont_fail_if_out_of_range = self->set_to_missing_if_out_of_range; if (self->iss_list==NULL) { grib_context_log(c, GRIB_LOG_ERROR,"encode_double_array: self->iss_list==NULL"); @@ -763,7 +768,7 @@ static int encode_double_array(grib_context* c,grib_buffer* buff,long* pos, bufr if (*v > maxAllowed || *v < minAllowed) { if (dont_fail_if_out_of_range) { grib_context_log(c, GRIB_LOG_ERROR, "encode_double_array: %s. Value (%g) out of range (minAllowed=%g, maxAllowed=%g)." - "Setting it to missing value\n", bd->shortName, *v, minAllowed, maxAllowed); + " Setting it to missing value\n", bd->shortName, *v, minAllowed, maxAllowed); grib_set_bits_on(buff->data,pos,modifiedWidth); } else { grib_context_log(c, GRIB_LOG_ERROR, "encode_double_array: %s. Value (%g) out of range (minAllowed=%g, maxAllowed=%g).", @@ -817,7 +822,7 @@ static int encode_double_array(grib_context* c,grib_buffer* buff,long* pos, bufr /* Turn out-of-range values into 'missing' */ if (*v!=GRIB_MISSING_DOUBLE && (*v < minAllowed || *v > maxAllowed)) { grib_context_log(c, GRIB_LOG_ERROR, "encode_double_array: %s. Value at index %ld (%g) out of range (minAllowed=%g, maxAllowed=%g)." - "Setting it to missing value\n", + " Setting it to missing value\n", bd->shortName, (long)ii, *v, minAllowed, maxAllowed); *v = GRIB_MISSING_DOUBLE; } @@ -910,7 +915,8 @@ static int encode_double_value(grib_context* c,grib_buffer* buff,long* pos,bufr_ int err=0; int modifiedWidth,modifiedReference; double modifiedFactor; - const int dont_fail_if_out_of_range = c->bufr_set_to_missing_if_out_of_range; /* ECC-379 */ + /* ECC-379, ECC-830 */ + const int dont_fail_if_out_of_range = self->set_to_missing_if_out_of_range; modifiedReference= bd->reference; modifiedFactor= bd->factor; @@ -925,7 +931,7 @@ static int encode_double_value(grib_context* c,grib_buffer* buff,long* pos,bufr_ else if (value>maxAllowed || valueshortName, value, minAllowed, maxAllowed); value = GRIB_MISSING_DOUBLE; /* Ignore the bad value and instead use 'missing' */ grib_set_bits_on(buff->data,pos,modifiedWidth); @@ -2478,6 +2484,19 @@ static void set_input_bitmap(grib_handle* h,grib_accessor_bufr_data_array *self) } } +static int set_to_missing_if_out_of_range(grib_handle* h) +{ + /* First check if the transient key is set */ + long setToMissingIfOutOfRange=0; + if (grib_get_long(h, "setToMissingIfOutOfRange", &setToMissingIfOutOfRange)==GRIB_SUCCESS && + setToMissingIfOutOfRange != 0) + { + return 1; + } + /* Then check the environment variable via the context */ + return h->context->bufr_set_to_missing_if_out_of_range; +} + static int process_elements(grib_accessor* a,int flag,long onlySubset,long startSubset,long endSubset) { int err=0; @@ -2535,6 +2554,7 @@ static int process_elements(grib_accessor* a,int flag,long onlySubset,long start decoding=0; do_clean=1; self->do_decode=1; + self->set_to_missing_if_out_of_range = set_to_missing_if_out_of_range(h); pos=0; codec_element=&encode_new_element; codec_replication=&encode_new_replication; @@ -2548,6 +2568,7 @@ static int process_elements(grib_accessor* a,int flag,long onlySubset,long start decoding=0; do_clean=0; self->do_decode=0; + self->set_to_missing_if_out_of_range = set_to_missing_if_out_of_range(h); pos=0; codec_element=&encode_element; grib_get_long(grib_handle_of_accessor(a),"extractSubset",&onlySubset); diff --git a/src/grib_accessor_class_data_simple_packing.c b/src/grib_accessor_class_data_simple_packing.c index 5e485c205..91a4db32e 100644 --- a/src/grib_accessor_class_data_simple_packing.c +++ b/src/grib_accessor_class_data_simple_packing.c @@ -447,6 +447,26 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len) #endif /* Return true(1) if large constant fields are to be created, otherwise false(0) */ +static int producing_large_constant_fields(grib_handle* h, int edition) +{ + /* First check if the transient key is set */ + grib_context* c = h->context; + long produceLargeConstantFields=0; + if (grib_get_long(h, "produceLargeConstantFields", &produceLargeConstantFields)==GRIB_SUCCESS && + produceLargeConstantFields != 0) + { + return 1; + } + + if (c->gribex_mode_on==1 && edition==1) { + return 1; + } + + /* Finally check the environment variable via the context */ + return c->large_constant_fields; +} + +#if 0 static int producing_large_constant_fields(const grib_context* c, grib_handle* h, int edition) { /* GRIB-802: If override key is set, ignore env. var and produce compressed fields */ @@ -466,6 +486,7 @@ static int producing_large_constant_fields(const grib_context* c, grib_handle* h return 0; } +#endif static int check_range(const double val) { @@ -570,7 +591,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len) Assert(ref == reference_value); } - large_constant_fields = producing_large_constant_fields(c, gh, self->edition); + large_constant_fields = producing_large_constant_fields(gh, self->edition); if (large_constant_fields) { if((err = grib_set_long_internal(gh,self->binary_scale_factor, 0)) != GRIB_SUCCESS) diff --git a/tests/bufr_ecc-379.sh b/tests/bufr_ecc-379.sh index 8aa23bbef..a673e0983 100755 --- a/tests/bufr_ecc-379.sh +++ b/tests/bufr_ecc-379.sh @@ -11,7 +11,7 @@ . ./include.sh # --------------------------------------------------------- -# This is the test for the JIRA issue ECC-379 +# This is the test for the JIRA issue ECC-379 (Also ECC-830) # BUFR encoding failing when value out of range # --------------------------------------------------------- cd ${data_dir}/bufr @@ -96,5 +96,46 @@ export ECCODES_BUFR_SET_TO_MISSING_IF_OUT_OF_RANGE=1 ${tools_dir}/codes_bufr_filter -o $tempOut $tempRules $BufrFile unset ECCODES_BUFR_SET_TO_MISSING_IF_OUT_OF_RANGE + +# -------------------------------------------------------- +# Test 4: use the key setToMissingIfOutOfRange +# -------------------------------------------------------- +BufrFile=airc_144.bufr +cat > $tempRules < $tempRules < Date: Wed, 23 Jan 2019 12:06:44 +0000 Subject: [PATCH 083/414] For MIR: Encoding of spherical harmonics when truncation less than 20 --- src/grib_util.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/grib_util.c b/src/grib_util.c index c5f32a502..4112971db 100644 --- a/src/grib_util.c +++ b/src/grib_util.c @@ -1200,11 +1200,12 @@ grib_handle* grib_util_set_spec2(grib_handle* h, if(packing_spec->packing_type == GRIB_UTIL_PACKING_TYPE_SPECTRAL_COMPLEX) { + const long JS = spec->truncation < 20 ? spec->truncation : 20; SET_STRING_VALUE("packingType", "spectral_complex"); packingTypeIsSet=1; - SET_LONG_VALUE("JS", 20); - SET_LONG_VALUE("KS", 20); - SET_LONG_VALUE("MS", 20); + SET_LONG_VALUE("JS", JS); + SET_LONG_VALUE("KS", JS); + SET_LONG_VALUE("MS", JS); if (packing_spec->packing == GRIB_UTIL_PACKING_USE_PROVIDED && editionNumber==2 ) { SET_LONG_VALUE("computeLaplacianOperator", 1); } else if ((!(*err) && strcmp(input_grid_type,"sh")) || packing_spec->computeLaplacianOperator ) { From 2f5a3e9a03632c9186f8a372cff572baf49edd57 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Tue, 29 Jan 2019 10:44:24 +0000 Subject: [PATCH 084/414] Appveyor: use --output-on-failure for ctest --- .appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.appveyor.yml b/.appveyor.yml index f10096654..806439d19 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -81,7 +81,7 @@ build_script: -D ENABLE_EXTRA_TESTS=OFF ^ .. - cmd: nmake - - cmd: ctest + - cmd: ctest --output-on-failure - cmd: nmake install #---------------------------------# From 73fa3851e60a8d9b84efef3595684222db6fdf8c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 1 Feb 2019 12:13:53 +0000 Subject: [PATCH 085/414] Bump up version to 2.10.3 --- VERSION.cmake | 2 +- version.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/VERSION.cmake b/VERSION.cmake index 9480c7ca6..cd5631cd1 100644 --- a/VERSION.cmake +++ b/VERSION.cmake @@ -1 +1 @@ -set( ${PROJECT_NAME}_VERSION_STR "2.10.2" ) +set( ${PROJECT_NAME}_VERSION_STR "2.10.3" ) diff --git a/version.sh b/version.sh index 4fe5bfed1..476a004de 100644 --- a/version.sh +++ b/version.sh @@ -15,7 +15,7 @@ PACKAGE_NAME='eccodes' # Package version ECCODES_MAJOR_VERSION=2 ECCODES_MINOR_VERSION=10 -ECCODES_REVISION_VERSION=2 +ECCODES_REVISION_VERSION=3 ECCODES_CURRENT=1 ECCODES_REVISION=0 From d78e5ed6694d43f6734c85ba692c2e082c631766 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 1 Feb 2019 13:05:34 +0000 Subject: [PATCH 086/414] ECC-876 and Support for legacy GRIB2 encoded with discipline=192 --- definitions/grib1/2.98.228.table | 3 + .../grib1/localConcepts/ecmf/cfVarName.def | 15 +++ definitions/grib1/localConcepts/ecmf/name.def | 15 +++ .../grib1/localConcepts/ecmf/paramId.def | 15 +++ .../grib1/localConcepts/ecmf/shortName.def | 15 +++ .../grib1/localConcepts/ecmf/units.def | 15 +++ definitions/grib2/cfVarName.def | 54 ++++++++ .../grib2/localConcepts/ecmf/cfVarName.def | 18 --- definitions/grib2/localConcepts/ecmf/name.def | 18 --- .../grib2/localConcepts/ecmf/paramId.def | 18 --- .../grib2/localConcepts/ecmf/shortName.def | 18 --- .../grib2/localConcepts/ecmf/units.def | 18 --- definitions/grib2/name.def | 54 ++++++++ definitions/grib2/paramId.def | 54 ++++++++ definitions/grib2/shortName.def | 54 ++++++++ definitions/grib2/units.def | 54 ++++++++ src/grib_accessor_class_concept.c | 120 +++++++++++++++--- 17 files changed, 453 insertions(+), 105 deletions(-) diff --git a/definitions/grib1/2.98.228.table b/definitions/grib1/2.98.228.table index e1801b2da..daad8fd53 100644 --- a/definitions/grib1/2.98.228.table +++ b/definitions/grib1/2.98.228.table @@ -85,6 +85,9 @@ 228 tp TP Total Precipitation (kg m**-2) 229 smos_tb_cdfa SMOS_TB_CDFA SMOS first Brightness Temperature Bias Correction parameter (K) 230 smos_tb_cdfb SMOS_TB_CDFB SMOS second Brightness Temperature Bias Correction parameter (dimensionless) +239 200U 200 metre U wind component (m s**-1) +240 200V 200 metre V wind component (m s**-1) +241 200SI 200 metre wind speed (m s**-1) 242 fdif FDIF Surface solar radiation diffuse total sky (J m**-2) 243 cdif CDIF Surface solar radiation diffuse clear-sky (J m**-2) 244 aldr ALDR Surface albedo of direct radiation (0 - 1) diff --git a/definitions/grib1/localConcepts/ecmf/cfVarName.def b/definitions/grib1/localConcepts/ecmf/cfVarName.def index bd11bc379..d238cc0c1 100644 --- a/definitions/grib1/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib1/localConcepts/ecmf/cfVarName.def @@ -9559,6 +9559,21 @@ table2Version = 228 ; indicatorOfParameter = 230 ; } +#200 metre U wind component +'u200' = { + table2Version = 228 ; + indicatorOfParameter = 239 ; + } +#200 metre V wind component +'v200' = { + table2Version = 228 ; + indicatorOfParameter = 240 ; + } +#200 metre wind speed +'si200' = { + table2Version = 228 ; + indicatorOfParameter = 241 ; + } #Surface solar radiation diffuse total sky 'fdif' = { table2Version = 228 ; diff --git a/definitions/grib1/localConcepts/ecmf/name.def b/definitions/grib1/localConcepts/ecmf/name.def index 78169a694..bd7ba2320 100644 --- a/definitions/grib1/localConcepts/ecmf/name.def +++ b/definitions/grib1/localConcepts/ecmf/name.def @@ -9559,6 +9559,21 @@ table2Version = 228 ; indicatorOfParameter = 230 ; } +#200 metre U wind component +'200 metre U wind component' = { + table2Version = 228 ; + indicatorOfParameter = 239 ; + } +#200 metre V wind component +'200 metre V wind component' = { + table2Version = 228 ; + indicatorOfParameter = 240 ; + } +#200 metre wind speed +'200 metre wind speed' = { + table2Version = 228 ; + indicatorOfParameter = 241 ; + } #Surface solar radiation diffuse total sky 'Surface solar radiation diffuse total sky' = { table2Version = 228 ; diff --git a/definitions/grib1/localConcepts/ecmf/paramId.def b/definitions/grib1/localConcepts/ecmf/paramId.def index d88458cf8..3265063b6 100644 --- a/definitions/grib1/localConcepts/ecmf/paramId.def +++ b/definitions/grib1/localConcepts/ecmf/paramId.def @@ -9559,6 +9559,21 @@ table2Version = 228 ; indicatorOfParameter = 230 ; } +#200 metre U wind component +'228239' = { + table2Version = 228 ; + indicatorOfParameter = 239 ; + } +#200 metre V wind component +'228240' = { + table2Version = 228 ; + indicatorOfParameter = 240 ; + } +#200 metre wind speed +'228241' = { + table2Version = 228 ; + indicatorOfParameter = 241 ; + } #Surface solar radiation diffuse total sky '228242' = { table2Version = 228 ; diff --git a/definitions/grib1/localConcepts/ecmf/shortName.def b/definitions/grib1/localConcepts/ecmf/shortName.def index 23a98e99e..c93a57bb1 100644 --- a/definitions/grib1/localConcepts/ecmf/shortName.def +++ b/definitions/grib1/localConcepts/ecmf/shortName.def @@ -9559,6 +9559,21 @@ table2Version = 228 ; indicatorOfParameter = 230 ; } +#200 metre U wind component +'200u' = { + table2Version = 228 ; + indicatorOfParameter = 239 ; + } +#200 metre V wind component +'200v' = { + table2Version = 228 ; + indicatorOfParameter = 240 ; + } +#200 metre wind speed +'200si' = { + table2Version = 228 ; + indicatorOfParameter = 241 ; + } #Surface solar radiation diffuse total sky 'fdif' = { table2Version = 228 ; diff --git a/definitions/grib1/localConcepts/ecmf/units.def b/definitions/grib1/localConcepts/ecmf/units.def index 82822f9d7..6a184c837 100644 --- a/definitions/grib1/localConcepts/ecmf/units.def +++ b/definitions/grib1/localConcepts/ecmf/units.def @@ -9559,6 +9559,21 @@ table2Version = 228 ; indicatorOfParameter = 230 ; } +#200 metre U wind component +'m s**-1' = { + table2Version = 228 ; + indicatorOfParameter = 239 ; + } +#200 metre V wind component +'m s**-1' = { + table2Version = 228 ; + indicatorOfParameter = 240 ; + } +#200 metre wind speed +'m s**-1' = { + table2Version = 228 ; + indicatorOfParameter = 241 ; + } #Surface solar radiation diffuse total sky 'J m**-2' = { table2Version = 228 ; diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index a4ef007e1..2ed13e201 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -535,6 +535,42 @@ parameterCategory = 0 ; parameterNumber = 33 ; } +#200 metre U wind component +'u200' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 200 ; + typeOfFirstFixedSurface = 103 ; + } +#200 metre V wind component +'v200' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 103 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 200 ; + } +#200 metre wind speed +'si200' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 103 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 200 ; + } +#100 metre wind speed +'si100' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + scaledValueOfFirstFixedSurface = 100 ; + typeOfFirstFixedSurface = 103 ; + scaleFactorOfFirstFixedSurface = 0 ; + } #Mean temperature tendency due to short-wave radiation 'mttswr' = { discipline = 0 ; @@ -1117,6 +1153,24 @@ parameterCategory = 0 ; parameterNumber = 34 ; } +#100 metre U wind component +'u100' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 2 ; + scaledValueOfFirstFixedSurface = 100 ; + typeOfFirstFixedSurface = 103 ; + scaleFactorOfFirstFixedSurface = 0 ; + } +#100 metre V wind component +'v100' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 103 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 100 ; + } #Total precipitation of at least 10 mm 'tpg10' = { discipline = 0 ; diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index 9319e5300..63e6ddcd8 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -13437,12 +13437,6 @@ parameterCategory = 228 ; parameterNumber = 248 ; } -#100 metre wind speed -'si100' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 249 ; - } #Irrigation fraction 'irrfr' = { discipline = 192 ; @@ -21915,18 +21909,6 @@ parameterCategory = 254 ; parameterNumber = 136 ; } -#100 metre U wind component -'u100' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 246 ; - } -#100 metre V wind component -'v100' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 247 ; - } #ASCAT first soil moisture CDF matching parameter 'ascat_sm_cdfa' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index f35354a59..b44b56a5f 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -13437,12 +13437,6 @@ parameterCategory = 228 ; parameterNumber = 248 ; } -#100 metre wind speed -'100 metre wind speed' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 249 ; - } #Irrigation fraction 'Irrigation fraction' = { discipline = 192 ; @@ -21915,18 +21909,6 @@ parameterCategory = 254 ; parameterNumber = 136 ; } -#100 metre U wind component -'100 metre U wind component' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 246 ; - } -#100 metre V wind component -'100 metre V wind component' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 247 ; - } #ASCAT first soil moisture CDF matching parameter 'ASCAT first soil moisture CDF matching parameter' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index 555bdd599..e5d559710 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -13437,12 +13437,6 @@ parameterCategory = 228 ; parameterNumber = 248 ; } -#100 metre wind speed -'228249' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 249 ; - } #Irrigation fraction '228250' = { discipline = 192 ; @@ -21915,18 +21909,6 @@ parameterCategory = 254 ; parameterNumber = 136 ; } -#100 metre U wind component -'228246' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 246 ; - } -#100 metre V wind component -'228247' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 247 ; - } #ASCAT first soil moisture CDF matching parameter '228253' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index c4a324965..4306096d8 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -13437,12 +13437,6 @@ parameterCategory = 228 ; parameterNumber = 248 ; } -#100 metre wind speed -'100si' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 249 ; - } #Irrigation fraction 'irrfr' = { discipline = 192 ; @@ -21915,18 +21909,6 @@ parameterCategory = 254 ; parameterNumber = 136 ; } -#100 metre U wind component -'100u' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 246 ; - } -#100 metre V wind component -'100v' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 247 ; - } #ASCAT first soil moisture CDF matching parameter 'ascat_sm_cdfa' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index 721b0c55c..c6c7811fa 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -13437,12 +13437,6 @@ parameterCategory = 228 ; parameterNumber = 248 ; } -#100 metre wind speed -'m s**-1' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 249 ; - } #Irrigation fraction 'Proportion' = { discipline = 192 ; @@ -21915,18 +21909,6 @@ parameterCategory = 254 ; parameterNumber = 136 ; } -#100 metre U wind component -'m s**-1' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 246 ; - } -#100 metre V wind component -'m s**-1' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 247 ; - } #ASCAT first soil moisture CDF matching parameter 'm**3 m**-3' = { discipline = 192 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index 6c5eaed52..0f1adfa28 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -535,6 +535,42 @@ parameterCategory = 0 ; parameterNumber = 33 ; } +#200 metre U wind component +'200 metre U wind component' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 2 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 200 ; + scaleFactorOfFirstFixedSurface = 0 ; + } +#200 metre V wind component +'200 metre V wind component' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 3 ; + scaledValueOfFirstFixedSurface = 200 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfFirstFixedSurface = 103 ; + } +#200 metre wind speed +'200 metre wind speed' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 200 ; + } +#100 metre wind speed +'100 metre wind speed' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + scaledValueOfFirstFixedSurface = 100 ; + typeOfFirstFixedSurface = 103 ; + scaleFactorOfFirstFixedSurface = 0 ; + } #Mean temperature tendency due to short-wave radiation 'Mean temperature tendency due to short-wave radiation' = { discipline = 0 ; @@ -1117,6 +1153,24 @@ parameterCategory = 0 ; parameterNumber = 34 ; } +#100 metre U wind component +'100 metre U wind component' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 2 ; + scaledValueOfFirstFixedSurface = 100 ; + typeOfFirstFixedSurface = 103 ; + scaleFactorOfFirstFixedSurface = 0 ; + } +#100 metre V wind component +'100 metre V wind component' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 3 ; + scaledValueOfFirstFixedSurface = 100 ; + typeOfFirstFixedSurface = 103 ; + scaleFactorOfFirstFixedSurface = 0 ; + } #Total precipitation of at least 10 mm 'Total precipitation of at least 10 mm' = { discipline = 0 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 536914e97..ce4ccc134 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -535,6 +535,42 @@ parameterCategory = 0 ; parameterNumber = 33 ; } +#200 metre U wind component +'228239' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 2 ; + typeOfFirstFixedSurface = 103 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 200 ; + } +#200 metre V wind component +'228240' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 103 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 200 ; + } +#200 metre wind speed +'228241' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 103 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 200 ; + } +#100 metre wind speed +'228249' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 100 ; + typeOfFirstFixedSurface = 103 ; + } #Mean temperature tendency due to short-wave radiation '235001' = { discipline = 0 ; @@ -1117,6 +1153,24 @@ parameterCategory = 0 ; parameterNumber = 34 ; } +#100 metre U wind component +'228246' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 100 ; + typeOfFirstFixedSurface = 103 ; + } +#100 metre V wind component +'228247' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 3 ; + scaledValueOfFirstFixedSurface = 100 ; + typeOfFirstFixedSurface = 103 ; + scaleFactorOfFirstFixedSurface = 0 ; + } #Total precipitation of at least 10 mm '131062' = { discipline = 0 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 8a8a3f0d7..c62978901 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -535,6 +535,42 @@ parameterCategory = 0 ; parameterNumber = 33 ; } +#200 metre U wind component +'200u' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 200 ; + typeOfFirstFixedSurface = 103 ; + } +#200 metre V wind component +'200v' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 103 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 200 ; + } +#200 metre wind speed +'200si' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 103 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 200 ; + } +#100 metre wind speed +'100si' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + scaledValueOfFirstFixedSurface = 100 ; + typeOfFirstFixedSurface = 103 ; + scaleFactorOfFirstFixedSurface = 0 ; + } #Mean temperature tendency due to short-wave radiation 'mttswr' = { discipline = 0 ; @@ -1117,6 +1153,24 @@ parameterCategory = 0 ; parameterNumber = 34 ; } +#100 metre U wind component +'100u' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 2 ; + scaledValueOfFirstFixedSurface = 100 ; + typeOfFirstFixedSurface = 103 ; + scaleFactorOfFirstFixedSurface = 0 ; + } +#100 metre V wind component +'100v' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 103 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 100 ; + } #Total precipitation of at least 10 mm 'tpg10' = { discipline = 0 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 4c6c79113..43973320d 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -535,6 +535,42 @@ parameterCategory = 0 ; parameterNumber = 33 ; } +#200 metre U wind component +'m s**-1' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 2 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 200 ; + scaleFactorOfFirstFixedSurface = 0 ; + } +#200 metre V wind component +'m s**-1' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 3 ; + scaledValueOfFirstFixedSurface = 200 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfFirstFixedSurface = 103 ; + } +#200 metre wind speed +'m s**-1' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 200 ; + } +#100 metre wind speed +'m s**-1' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + scaledValueOfFirstFixedSurface = 100 ; + typeOfFirstFixedSurface = 103 ; + scaleFactorOfFirstFixedSurface = 0 ; + } #Mean temperature tendency due to short-wave radiation 'K s**-1' = { discipline = 0 ; @@ -1117,6 +1153,24 @@ parameterCategory = 0 ; parameterNumber = 34 ; } +#100 metre U wind component +'m s**-1' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 2 ; + scaledValueOfFirstFixedSurface = 100 ; + typeOfFirstFixedSurface = 103 ; + scaleFactorOfFirstFixedSurface = 0 ; + } +#100 metre V wind component +'m s**-1' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 3 ; + scaledValueOfFirstFixedSurface = 100 ; + typeOfFirstFixedSurface = 103 ; + scaleFactorOfFirstFixedSurface = 0 ; + } #Total precipitation of at least 10 mm '%' = { discipline = 0 ; diff --git a/src/grib_accessor_class_concept.c b/src/grib_accessor_class_concept.c index 59ded63a9..df1dc3ae3 100644 --- a/src/grib_accessor_class_concept.c +++ b/src/grib_accessor_class_concept.c @@ -160,17 +160,10 @@ static void dump(grib_accessor* a, grib_dumper* dumper) static int concept_condition_expression_true(grib_handle* h,grib_concept_condition* c) { long lval; - double dval; long lres=0; - double dres=0.0; - const char *cval; - char buf[80]; - char tmp[80]; - size_t len = sizeof(buf); - size_t size=sizeof(tmp); int ok = 0; int err=0; - int type = grib_expression_native_type(h,c->expression); + const int type = grib_expression_native_type(h,c->expression); switch(type) { @@ -180,17 +173,27 @@ static int concept_condition_expression_true(grib_handle* h,grib_concept_conditi (lval == lres); break; - case GRIB_TYPE_DOUBLE: + case GRIB_TYPE_DOUBLE: { + double dval; + double dres=0.0; grib_expression_evaluate_double(h,c->expression,&dres); ok = (grib_get_double(h,c->name,&dval) == GRIB_SUCCESS) && (dval == dres); break; + } + + case GRIB_TYPE_STRING: { + const char *cval; + char buf[80]; + char tmp[80]; + size_t len = sizeof(buf); + size_t size=sizeof(tmp); - case GRIB_TYPE_STRING: ok = (grib_get_string(h,c->name,buf,&len) == GRIB_SUCCESS) && ((cval = grib_expression_evaluate_string(h,c->expression,tmp,&size,&err)) != NULL) && (err==0) && (grib_inline_strcmp(buf,cval) == 0); break; + } default: /* TODO: */ @@ -425,14 +428,54 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len) return ret; } +static long guess_paramId(grib_handle* h) +{ + int err = 0; + long discipline, category, number; + err=grib_get_long(h,"discipline",&discipline); + if (err || discipline != 192) + return -1; + err=grib_get_long(h,"parameterCategory",&category); + if (err) return -1; + err=grib_get_long(h,"parameterNumber",&number); + if (err) return -1; + + if (category==128) return number; + else return (category * 1000 + number); +} + +/* Return -1 if cannot match */ +static long get_ECMWF_local_paramId(grib_accessor* a, grib_handle* h) +{ + int err = 0; + long edition, centre; + if (h->product_kind != PRODUCT_GRIB) + return -1; + err=grib_get_long(h,"centre",¢re); + if (err) return -1; + err=grib_get_long(h,"edition",&edition); + if (err) return -1; + if (edition==2 && centre==98 && strncmp(a->name,"paramId",7)==0) { + return guess_paramId(h); + } + return -1; +} + static int unpack_long(grib_accessor* a, long* val, size_t *len) { - /* TODO properly calling concept_evaluate_long ! */ const char *p = concept_evaluate(a); if(!p) { + grib_handle* h = grib_handle_of_accessor(a); + const long pid = get_ECMWF_local_paramId(a, h); + if (pid != -1) { + grib_context_log(h->context,GRIB_LOG_DEBUG,"ECMWF local grib2: paramId guessed to be %ld",pid); + *val = pid; + *len = 1; + return GRIB_SUCCESS; + } if (a->creator->defaultkey) - return grib_get_long_internal(grib_handle_of_accessor(a),a->creator->defaultkey,val); + return grib_get_long_internal(h,a->creator->defaultkey,val); return GRIB_NOT_FOUND; } @@ -460,16 +503,63 @@ static void destroy(grib_context* c,grib_accessor* a) */ } +static int is_local_ecmwf_grib2_param_key(grib_accessor* a, long edition, long centre) +{ + if (edition==2 && centre==98) { + if (a->parent->owner && a->parent->owner->name && strcmp(a->parent->owner->name,"parameters")==0) + return 1; + } + return 0; +} + +/* Try to get the name, shortName, units etc for a GRIB2 message with + * local ECMWF coding i.e. discipline=192 etc + */ +static const char* get_ECMWF_local_parameter(grib_accessor* a, grib_handle* h) +{ + int err = 0; + const char* key_name = a->name; /*this is the key whose value we want*/ + long edition, centre; + if (h->product_kind != PRODUCT_GRIB) + return NULL; + err=grib_get_long(h,"centre",¢re); + if (err) return NULL; + err=grib_get_long(h,"edition",&edition); + if (err) return NULL; + if (is_local_ecmwf_grib2_param_key(a,edition,centre)) { + /* Must be one of: 'name', 'shortName', 'units', 'cfName' etc */ + grib_accessor* a2 = NULL; + long pid_guess = guess_paramId(h); + if (pid_guess == -1) return NULL; + + /* Change the paramId so we can get the other string key*/ + err = grib_set_long(h, "paramId", pid_guess); + if (err) return NULL; + /* Get the string value of key. Do not call grib_get_string() to avoid + * dangers of infinite recursion as that calls unpack_string()! + */ + a2 = grib_find_accessor(h, key_name); + if (!a2) return NULL; + return concept_evaluate(a2); + } + return NULL; + +} static int unpack_string (grib_accessor* a, char* val, size_t *len) { size_t slen ; const char *p = concept_evaluate(a); if(!p) { - if (a->creator->defaultkey) - return grib_get_string_internal(grib_handle_of_accessor(a),a->creator->defaultkey,val,len); + grib_handle* h = grib_handle_of_accessor(a); + p = get_ECMWF_local_parameter(a, h); + if (!p) { + if (a->creator->defaultkey) + return grib_get_string_internal(h,a->creator->defaultkey,val,len); - return GRIB_NOT_FOUND; + return GRIB_NOT_FOUND; + } + grib_context_log(h->context,GRIB_LOG_DEBUG,"ECMWF local grib2 parameter: %s=%s", a->name,p); } slen = strlen(p) +1; From 7327eeec1759388da0c0035ce1c2a6a7e3e12e9c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 1 Feb 2019 13:31:34 +0000 Subject: [PATCH 087/414] ECC-877 and ECC-878 --- definitions/grib1/2.98.140.table | 14 ++++ .../grib1/localConcepts/ecmf/cfVarName.def | 70 +++++++++++++++++++ definitions/grib1/localConcepts/ecmf/name.def | 70 +++++++++++++++++++ .../grib1/localConcepts/ecmf/paramId.def | 70 +++++++++++++++++++ .../grib1/localConcepts/ecmf/shortName.def | 70 +++++++++++++++++++ .../grib1/localConcepts/ecmf/units.def | 70 +++++++++++++++++++ definitions/grib2/cfVarName.def | 12 ++++ definitions/grib2/name.def | 12 ++++ definitions/grib2/paramId.def | 12 ++++ definitions/grib2/shortName.def | 12 ++++ definitions/grib2/units.def | 12 ++++ 11 files changed, 424 insertions(+) diff --git a/definitions/grib1/2.98.140.table b/definitions/grib1/2.98.140.table index 19e2c325a..6147bcc8a 100644 --- a/definitions/grib1/2.98.140.table +++ b/definitions/grib1/2.98.140.table @@ -4,6 +4,20 @@ 82 82 WX3 Wave experimental parameter 3 (~) 83 83 WX4 Wave experimental parameter 4 (~) 84 84 WX5 Wave experimental parameter 5 (~) +98 98 WETA Wave induced mean sea level correction (m) +99 99 WRAF Ratio of wave angular and frequency width (dimensionless) +100 100 WNSLC Number of events in freak waves statistics (dimensionless) +101 101 UTAUA U-component of atmospheric surface momentum flux (N m**-2) +102 102 VTAUA V-component of atmospheric surface momentum flux (N m**-2) +103 103 UTAUO U-component of surface momentum flux into ocean (N m**-2) +104 104 VTAUO V-component of surface momentum flux into ocean (N m**-2) +105 105 WPHIO Wave turbulent energy flux into ocean (W m**-2) +106 106 WDW1 Wave directional width of first swell partition (dimensionless) +107 107 WFW1 Wave frequency width of first swell partition (dimensionless) +108 108 WDW2 Wave directional width of second swell partition (dimensionless) +109 109 WFW2 Wave frequency width of second swell partition (dimensionless) +110 110 WDW3 Wave directional width of third swell partition (dimensionless) +111 111 WFW3 Wave frequency width of third swell partition (dimensionless) 112 112 WEFXM Wave energy flux magnitude (W m**-1) 113 113 WEFXD Wave energy flux mean direction (Degree true) 114 114 H1012 Significant wave height of all waves with periods within the inclusive range from 10 to 12 seconds (m) diff --git a/definitions/grib1/localConcepts/ecmf/cfVarName.def b/definitions/grib1/localConcepts/ecmf/cfVarName.def index d238cc0c1..1e3d0e26f 100644 --- a/definitions/grib1/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib1/localConcepts/ecmf/cfVarName.def @@ -3359,6 +3359,76 @@ table2Version = 140 ; indicatorOfParameter = 84 ; } +#Wave induced mean sea level correction +'weta' = { + table2Version = 140 ; + indicatorOfParameter = 98 ; + } +#Ratio of wave angular and frequency width +'wraf' = { + table2Version = 140 ; + indicatorOfParameter = 99 ; + } +#Number of events in freak waves statistics +'wnslc' = { + table2Version = 140 ; + indicatorOfParameter = 100 ; + } +#U-component of atmospheric surface momentum flux +'utaua' = { + table2Version = 140 ; + indicatorOfParameter = 101 ; + } +#V-component of atmospheric surface momentum flux +'vtaua' = { + table2Version = 140 ; + indicatorOfParameter = 102 ; + } +#U-component of surface momentum flux into ocean +'utauo' = { + table2Version = 140 ; + indicatorOfParameter = 103 ; + } +#V-component of surface momentum flux into ocean +'vtauo' = { + table2Version = 140 ; + indicatorOfParameter = 104 ; + } +#Wave turbulent energy flux into ocean +'wphio' = { + table2Version = 140 ; + indicatorOfParameter = 105 ; + } +#Wave directional width of first swell partition +'wdw1' = { + table2Version = 140 ; + indicatorOfParameter = 106 ; + } +#Wave frequency width of first swell partition +'wfw1' = { + table2Version = 140 ; + indicatorOfParameter = 107 ; + } +#Wave directional width of second swell partition +'wdw2' = { + table2Version = 140 ; + indicatorOfParameter = 108 ; + } +#Wave frequency width of second swell partition +'wfw2' = { + table2Version = 140 ; + indicatorOfParameter = 109 ; + } +#Wave directional width of third swell partition +'wdw3' = { + table2Version = 140 ; + indicatorOfParameter = 110 ; + } +#Wave frequency width of third swell partition +'wfw3' = { + table2Version = 140 ; + indicatorOfParameter = 111 ; + } #Wave energy flux magnitude 'wefxm' = { table2Version = 140 ; diff --git a/definitions/grib1/localConcepts/ecmf/name.def b/definitions/grib1/localConcepts/ecmf/name.def index bd7ba2320..c79d9ad14 100644 --- a/definitions/grib1/localConcepts/ecmf/name.def +++ b/definitions/grib1/localConcepts/ecmf/name.def @@ -3359,6 +3359,76 @@ table2Version = 140 ; indicatorOfParameter = 84 ; } +#Wave induced mean sea level correction +'Wave induced mean sea level correction' = { + table2Version = 140 ; + indicatorOfParameter = 98 ; + } +#Ratio of wave angular and frequency width +'Ratio of wave angular and frequency width' = { + table2Version = 140 ; + indicatorOfParameter = 99 ; + } +#Number of events in freak waves statistics +'Number of events in freak waves statistics' = { + table2Version = 140 ; + indicatorOfParameter = 100 ; + } +#U-component of atmospheric surface momentum flux +'U-component of atmospheric surface momentum flux' = { + table2Version = 140 ; + indicatorOfParameter = 101 ; + } +#V-component of atmospheric surface momentum flux +'V-component of atmospheric surface momentum flux' = { + table2Version = 140 ; + indicatorOfParameter = 102 ; + } +#U-component of surface momentum flux into ocean +'U-component of surface momentum flux into ocean' = { + table2Version = 140 ; + indicatorOfParameter = 103 ; + } +#V-component of surface momentum flux into ocean +'V-component of surface momentum flux into ocean' = { + table2Version = 140 ; + indicatorOfParameter = 104 ; + } +#Wave turbulent energy flux into ocean +'Wave turbulent energy flux into ocean' = { + table2Version = 140 ; + indicatorOfParameter = 105 ; + } +#Wave directional width of first swell partition +'Wave directional width of first swell partition' = { + table2Version = 140 ; + indicatorOfParameter = 106 ; + } +#Wave frequency width of first swell partition +'Wave frequency width of first swell partition' = { + table2Version = 140 ; + indicatorOfParameter = 107 ; + } +#Wave directional width of second swell partition +'Wave directional width of second swell partition' = { + table2Version = 140 ; + indicatorOfParameter = 108 ; + } +#Wave frequency width of second swell partition +'Wave frequency width of second swell partition' = { + table2Version = 140 ; + indicatorOfParameter = 109 ; + } +#Wave directional width of third swell partition +'Wave directional width of third swell partition' = { + table2Version = 140 ; + indicatorOfParameter = 110 ; + } +#Wave frequency width of third swell partition +'Wave frequency width of third swell partition' = { + table2Version = 140 ; + indicatorOfParameter = 111 ; + } #Wave energy flux magnitude 'Wave energy flux magnitude' = { table2Version = 140 ; diff --git a/definitions/grib1/localConcepts/ecmf/paramId.def b/definitions/grib1/localConcepts/ecmf/paramId.def index 3265063b6..1c8bcdbbd 100644 --- a/definitions/grib1/localConcepts/ecmf/paramId.def +++ b/definitions/grib1/localConcepts/ecmf/paramId.def @@ -3359,6 +3359,76 @@ table2Version = 140 ; indicatorOfParameter = 84 ; } +#Wave induced mean sea level correction +'140098' = { + table2Version = 140 ; + indicatorOfParameter = 98 ; + } +#Ratio of wave angular and frequency width +'140099' = { + table2Version = 140 ; + indicatorOfParameter = 99 ; + } +#Number of events in freak waves statistics +'140100' = { + table2Version = 140 ; + indicatorOfParameter = 100 ; + } +#U-component of atmospheric surface momentum flux +'140101' = { + table2Version = 140 ; + indicatorOfParameter = 101 ; + } +#V-component of atmospheric surface momentum flux +'140102' = { + table2Version = 140 ; + indicatorOfParameter = 102 ; + } +#U-component of surface momentum flux into ocean +'140103' = { + table2Version = 140 ; + indicatorOfParameter = 103 ; + } +#V-component of surface momentum flux into ocean +'140104' = { + table2Version = 140 ; + indicatorOfParameter = 104 ; + } +#Wave turbulent energy flux into ocean +'140105' = { + table2Version = 140 ; + indicatorOfParameter = 105 ; + } +#Wave directional width of first swell partition +'140106' = { + table2Version = 140 ; + indicatorOfParameter = 106 ; + } +#Wave frequency width of first swell partition +'140107' = { + table2Version = 140 ; + indicatorOfParameter = 107 ; + } +#Wave directional width of second swell partition +'140108' = { + table2Version = 140 ; + indicatorOfParameter = 108 ; + } +#Wave frequency width of second swell partition +'140109' = { + table2Version = 140 ; + indicatorOfParameter = 109 ; + } +#Wave directional width of third swell partition +'140110' = { + table2Version = 140 ; + indicatorOfParameter = 110 ; + } +#Wave frequency width of third swell partition +'140111' = { + table2Version = 140 ; + indicatorOfParameter = 111 ; + } #Wave energy flux magnitude '140112' = { table2Version = 140 ; diff --git a/definitions/grib1/localConcepts/ecmf/shortName.def b/definitions/grib1/localConcepts/ecmf/shortName.def index c93a57bb1..c5c21d4b4 100644 --- a/definitions/grib1/localConcepts/ecmf/shortName.def +++ b/definitions/grib1/localConcepts/ecmf/shortName.def @@ -3359,6 +3359,76 @@ table2Version = 140 ; indicatorOfParameter = 84 ; } +#Wave induced mean sea level correction +'weta' = { + table2Version = 140 ; + indicatorOfParameter = 98 ; + } +#Ratio of wave angular and frequency width +'wraf' = { + table2Version = 140 ; + indicatorOfParameter = 99 ; + } +#Number of events in freak waves statistics +'wnslc' = { + table2Version = 140 ; + indicatorOfParameter = 100 ; + } +#U-component of atmospheric surface momentum flux +'utaua' = { + table2Version = 140 ; + indicatorOfParameter = 101 ; + } +#V-component of atmospheric surface momentum flux +'vtaua' = { + table2Version = 140 ; + indicatorOfParameter = 102 ; + } +#U-component of surface momentum flux into ocean +'utauo' = { + table2Version = 140 ; + indicatorOfParameter = 103 ; + } +#V-component of surface momentum flux into ocean +'vtauo' = { + table2Version = 140 ; + indicatorOfParameter = 104 ; + } +#Wave turbulent energy flux into ocean +'wphio' = { + table2Version = 140 ; + indicatorOfParameter = 105 ; + } +#Wave directional width of first swell partition +'wdw1' = { + table2Version = 140 ; + indicatorOfParameter = 106 ; + } +#Wave frequency width of first swell partition +'wfw1' = { + table2Version = 140 ; + indicatorOfParameter = 107 ; + } +#Wave directional width of second swell partition +'wdw2' = { + table2Version = 140 ; + indicatorOfParameter = 108 ; + } +#Wave frequency width of second swell partition +'wfw2' = { + table2Version = 140 ; + indicatorOfParameter = 109 ; + } +#Wave directional width of third swell partition +'wdw3' = { + table2Version = 140 ; + indicatorOfParameter = 110 ; + } +#Wave frequency width of third swell partition +'wfw3' = { + table2Version = 140 ; + indicatorOfParameter = 111 ; + } #Wave energy flux magnitude 'wefxm' = { table2Version = 140 ; diff --git a/definitions/grib1/localConcepts/ecmf/units.def b/definitions/grib1/localConcepts/ecmf/units.def index 6a184c837..839a1100e 100644 --- a/definitions/grib1/localConcepts/ecmf/units.def +++ b/definitions/grib1/localConcepts/ecmf/units.def @@ -3359,6 +3359,76 @@ table2Version = 140 ; indicatorOfParameter = 84 ; } +#Wave induced mean sea level correction +'m' = { + table2Version = 140 ; + indicatorOfParameter = 98 ; + } +#Ratio of wave angular and frequency width +'dimensionless' = { + table2Version = 140 ; + indicatorOfParameter = 99 ; + } +#Number of events in freak waves statistics +'dimensionless' = { + table2Version = 140 ; + indicatorOfParameter = 100 ; + } +#U-component of atmospheric surface momentum flux +'N m**-2' = { + table2Version = 140 ; + indicatorOfParameter = 101 ; + } +#V-component of atmospheric surface momentum flux +'N m**-2' = { + table2Version = 140 ; + indicatorOfParameter = 102 ; + } +#U-component of surface momentum flux into ocean +'N m**-2' = { + table2Version = 140 ; + indicatorOfParameter = 103 ; + } +#V-component of surface momentum flux into ocean +'N m**-2' = { + table2Version = 140 ; + indicatorOfParameter = 104 ; + } +#Wave turbulent energy flux into ocean +'W m**-2' = { + table2Version = 140 ; + indicatorOfParameter = 105 ; + } +#Wave directional width of first swell partition +'dimensionless' = { + table2Version = 140 ; + indicatorOfParameter = 106 ; + } +#Wave frequency width of first swell partition +'dimensionless' = { + table2Version = 140 ; + indicatorOfParameter = 107 ; + } +#Wave directional width of second swell partition +'dimensionless' = { + table2Version = 140 ; + indicatorOfParameter = 108 ; + } +#Wave frequency width of second swell partition +'dimensionless' = { + table2Version = 140 ; + indicatorOfParameter = 109 ; + } +#Wave directional width of third swell partition +'dimensionless' = { + table2Version = 140 ; + indicatorOfParameter = 110 ; + } +#Wave frequency width of third swell partition +'dimensionless' = { + table2Version = 140 ; + indicatorOfParameter = 111 ; + } #Wave energy flux magnitude 'W m**-1' = { table2Version = 140 ; diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index 2ed13e201..9449ab748 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -293,6 +293,18 @@ scaleFactorOfLowerLimit = 0 ; productDefinitionTemplateNumber = 9 ; } +#Mean sea water temperature in the upper 300 m +'mswt300m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 15 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + } #10 metre wind gust in the last 3 hours 'fg310' = { discipline = 0 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index 0f1adfa28..fc0db0df7 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -293,6 +293,18 @@ probabilityType = 0 ; typeOfStatisticalProcessing = 10 ; } +#Mean sea water temperature in the upper 300 m +'Mean sea water temperature in the upper 300 m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 15 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + } #10 metre wind gust in the last 3 hours '10 metre wind gust in the last 3 hours' = { discipline = 0 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index ce4ccc134..bd56a2d45 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -293,6 +293,18 @@ probabilityType = 0 ; scaleFactorOfLowerLimit = 0 ; } +#Mean sea water temperature in the upper 300 m +'151127' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 15 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + } #10 metre wind gust in the last 3 hours '228028' = { discipline = 0 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index c62978901..2a36719dd 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -293,6 +293,18 @@ scaleFactorOfLowerLimit = 0 ; productDefinitionTemplateNumber = 9 ; } +#Mean sea water temperature in the upper 300 m +'mswt300m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 15 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + } #10 metre wind gust in the last 3 hours '10fg3' = { discipline = 0 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 43973320d..de317a8be 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -293,6 +293,18 @@ probabilityType = 0 ; typeOfStatisticalProcessing = 10 ; } +#Mean sea water temperature in the upper 300 m +'K' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 15 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + } #10 metre wind gust in the last 3 hours 'm s**-1' = { discipline = 0 ; From a36f3acf514357e1e46d4605168e2cc1a034a52e Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Mon, 11 Feb 2019 11:19:36 +0000 Subject: [PATCH 088/414] Appveyor: reformat with tabstop=2 --- .appveyor.yml | 90 +++++++++++++++++++++++++-------------------------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index 806439d19..20fc68542 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -12,23 +12,23 @@ branches: image: Visual Studio 2015 environment: - CONDA: c:\Miniconda37-x64 - ECMWF: c:\ecmwf - GIT_CLONE_DIR: $(ECMWF)\git - INSTALL_DIR: $(ECMWF)\install - ECCODES_SRC: $(GIT_CLONE_DIR)\eccodes - ECBUILD_SRC: $(GIT_CLONE_DIR)\ecbuild + CONDA: c:\Miniconda37-x64 + ECMWF: c:\ecmwf + GIT_CLONE_DIR: $(ECMWF)\git + INSTALL_DIR: $(ECMWF)\install + ECCODES_SRC: $(GIT_CLONE_DIR)\eccodes + ECBUILD_SRC: $(GIT_CLONE_DIR)\ecbuild # scripts that are called at very beginning, before repo cloning init: - # make sure git clones symlinks as symlinks - - cmd: git config --global core.symlinks true + # make sure git clones symlinks as symlinks + - cmd: git config --global core.symlinks true # activate conda environment so the tests can find linux utils - - cmd: call %CONDA%\Scripts\activate.bat + - cmd: call %CONDA%\Scripts\activate.bat # add eccodes\build\bin to path so tests can find eccodes.dll - - cmd: set PATH=%PATH%;%ECCODES_SRC%\build\bin + - cmd: set PATH=%PATH%;%ECCODES_SRC%\build\bin # auto-yes for conda - - cmd: conda config --set always_yes yes + - cmd: conda config --set always_yes yes clone_folder: $(ECCODES_SRC) @@ -36,59 +36,59 @@ clone_depth: 1 # scripts that run after cloning repository install: - # install ecbuild - - cmd: git clone --depth 1 https://github.com/ecmwf/ecbuild.git %ECBUILD_SRC% + # install ecbuild + - cmd: git clone --depth 1 https://github.com/ecmwf/ecbuild.git %ECBUILD_SRC% # install linux utils - - cmd: conda install -c msys2 m2-bash ^ - m2-findutils ^ - m2-coreutils ^ - m2-grep ^ - m2-sed ^ - m2-gawk ^ - m2-diffutils ^ - m2-perl + - cmd: conda install -c msys2 m2-bash ^ + m2-findutils ^ + m2-coreutils ^ + m2-grep ^ + m2-sed ^ + m2-gawk ^ + m2-diffutils ^ + m2-perl # get the latest version of cmake - - cmd: conda install -c conda-forge cmake + - cmd: conda install -c conda-forge cmake # other deps - - cmd: conda install netcdf4 + - cmd: conda install netcdf4 #---------------------------------# # build configuration # #---------------------------------# platform: - - x64 + - x64 before_build: - - cmd: call "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64 - - cmd: call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86_amd64 + - cmd: call "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64 + - cmd: call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86_amd64 build_script: - - cmd: cd %ECCODES_SRC% - - cmd: mkdir build && cd build - - cmd: cmake -G "NMake Makefiles" ^ - -D CMAKE_INSTALL_PREFIX=%INSTALL_DIR% ^ - -D CMAKE_BUILD_TYPE=Release ^ - -D ENABLE_FORTRAN=0 ^ - -D ENABLE_PYTHON=0 ^ - -D ENABLE_NETCDF=1 ^ - -D ENABLE_JPG=1 ^ - -D IEEE_LE=1 ^ - -D ENABLE_MEMFS=0 ^ - -D ENABLE_EXTRA_TESTS=OFF ^ - .. - - cmd: nmake - - cmd: ctest --output-on-failure - - cmd: nmake install + - cmd: cd %ECCODES_SRC% + - cmd: mkdir build && cd build + - cmd: cmake -G "NMake Makefiles" ^ + -D CMAKE_INSTALL_PREFIX=%INSTALL_DIR% ^ + -D CMAKE_BUILD_TYPE=Release ^ + -D ENABLE_FORTRAN=0 ^ + -D ENABLE_PYTHON=0 ^ + -D ENABLE_NETCDF=1 ^ + -D ENABLE_JPG=1 ^ + -D IEEE_LE=1 ^ + -D ENABLE_MEMFS=0 ^ + -D ENABLE_EXTRA_TESTS=OFF ^ + .. + - cmd: nmake + - cmd: ctest --output-on-failure + - cmd: nmake install #---------------------------------# # tests configuration # #---------------------------------# test_script: - - cmd: codes_info - - cmd: for /F "tokens=* USEBACKQ" %%F IN (`codes_info -s`) DO (ls %%F) - - cmd: for /F "tokens=* USEBACKQ" %%F IN (`codes_info -d`) DO (ls %%F) + - cmd: codes_info + - cmd: for /F "tokens=* USEBACKQ" %%F IN (`codes_info -s`) DO (ls %%F) + - cmd: for /F "tokens=* USEBACKQ" %%F IN (`codes_info -d`) DO (ls %%F) From 470c32af0149b215afc34f6bdab06775f9ffba29 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Mon, 11 Feb 2019 11:54:01 +0000 Subject: [PATCH 089/414] Appveyor: switch to libnetcdf --- .appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.appveyor.yml b/.appveyor.yml index 20fc68542..0c617e235 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -53,7 +53,7 @@ install: - cmd: conda install -c conda-forge cmake # other deps - - cmd: conda install netcdf4 + - cmd: conda install libnetcdf #---------------------------------# # build configuration # From 80b8b726b233a91dd21dd50acdb6583babe6d0e7 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Mon, 11 Feb 2019 12:28:34 +0000 Subject: [PATCH 090/414] MacOS: add .travis.yml --- .travis.yml | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..e7512b251 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,59 @@ +#---------------------------------# +# general configuration # +#---------------------------------# + +sudo: false + +branches: + only: + - develop + - master + +language: c + +os: osx +osx_image: xcode10.1 + +env: + global: + - ECCODES_SRC=${TRAVIS_BUILD_DIR} + - ECBUILD_SRC=${ECCODES_SRC}/../ecbuild + - BUILD_DIR=${ECCODES_SRC}/build + +git: + depth: 1 + +install: + # install ecbuild + - git clone --depth 1 https://github.com/ecmwf/ecbuild.git ${ECBUILD_SRC} + + # install netcdf + - brew install netcdf + +#---------------------------------# +# build configuration # +#---------------------------------# + +script: + # env vars + - echo ${ECCODES_SRC} + - echo ${ECBUILD_SRC} + - echo ${BUILD_DIR} + + # build ecCodes + - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR} + - cmake -D ENABLE_FORTRAN=0 + -D ENABLE_PYTHON=0 + -D ENABLE_NETCDF=1 + -D ENABLE_JPG=1 + -D ENABLE_MEMFS=0 + -D ENABLE_EXTRA_TESTS=ON + ${ECCODES_SRC} + - make -j4 + - ctest -j4 --output-on-failure + - make install --silent + + # extra sanity tests + - codes_info + - ls $(codes_info -s) + - ls $(codes_info -d) From 486b3f876e1d098aef00b81dfb32ee81bbc82665 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Mon, 11 Feb 2019 13:25:24 +0000 Subject: [PATCH 091/414] README: add travis-ci shields --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 3f0172ab2..d28771d65 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ ecCodes ======= +[![macOS: master](https://img.shields.io/travis/ecmwf/eccodes/master.svg?label=macos-master)](https://travis-ci.org/ecmwf/eccodes/branches/master) +[![macOS: develop](https://img.shields.io/travis/ecmwf/eccodes/develop.svg?label=macos-dev)](https://travis-ci.org/ecmwf/eccodes/branches/develop) [![Windows: master](https://img.shields.io/appveyor/ci/ecmwf/eccodes/master.svg?label=windows-master)](https://ci.appveyor.com/project/ecmwf/eccodes/branch/master) [![Windows: develop](https://img.shields.io/appveyor/ci/ecmwf/eccodes/develop.svg?label=windows-dev)](https://ci.appveyor.com/project/ecmwf/eccodes/branch/develop) From 94eca21bec5f65c9990db2b31018b8b411a6d526 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Mon, 11 Feb 2019 13:29:17 +0000 Subject: [PATCH 092/414] README: fix shields capitalisation --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index d28771d65..d4164517b 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ ecCodes ======= -[![macOS: master](https://img.shields.io/travis/ecmwf/eccodes/master.svg?label=macos-master)](https://travis-ci.org/ecmwf/eccodes/branches/master) -[![macOS: develop](https://img.shields.io/travis/ecmwf/eccodes/develop.svg?label=macos-dev)](https://travis-ci.org/ecmwf/eccodes/branches/develop) -[![Windows: master](https://img.shields.io/appveyor/ci/ecmwf/eccodes/master.svg?label=windows-master)](https://ci.appveyor.com/project/ecmwf/eccodes/branch/master) -[![Windows: develop](https://img.shields.io/appveyor/ci/ecmwf/eccodes/develop.svg?label=windows-dev)](https://ci.appveyor.com/project/ecmwf/eccodes/branch/develop) +[![macOS: master](https://img.shields.io/travis/ecmwf/eccodes/master.svg?label=macOS-master)](https://travis-ci.org/ecmwf/eccodes/branches) +[![macOS: develop](https://img.shields.io/travis/ecmwf/eccodes/develop.svg?label=macOS-dev)](https://travis-ci.org/ecmwf/eccodes/branches) +[![Windows: master](https://img.shields.io/appveyor/ci/ecmwf/eccodes/master.svg?label=Windows-master)](https://ci.appveyor.com/project/ecmwf/eccodes/branch/master) +[![Windows: develop](https://img.shields.io/appveyor/ci/ecmwf/eccodes/develop.svg?label=Windows-dev)](https://ci.appveyor.com/project/ecmwf/eccodes/branch/develop) ecCodes is a package developed by ECMWF which provides an application programming interface and a set of tools for decoding and encoding messages in the following formats: From 3f37b70fa41842a3ec91f3849a0b78c16b668b8b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 13 Feb 2019 13:27:43 +0000 Subject: [PATCH 093/414] ECC-886: Converting non-regular grib to netCDF file (Initial attempt) --- definitions/grib2/template.3.140.def | 4 ++++ tools/grib_to_netcdf.c | 22 ++++++++++++---------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/definitions/grib2/template.3.140.def b/definitions/grib2/template.3.140.def index 12329960d..5e679895f 100644 --- a/definitions/grib2/template.3.140.def +++ b/definitions/grib2/template.3.140.def @@ -13,10 +13,12 @@ include "grib2/template.3.shape_of_the_earth.def"; # Nx - number of points along X-axis unsigned[4] numberOfPointsAlongXAxis : dump ; alias Nx = numberOfPointsAlongXAxis; +alias Ni = Nx; # Ny - number of points along Y-axis unsigned[4] numberOfPointsAlongYAxis : dump ; alias Ny = numberOfPointsAlongYAxis; +alias Nj = Ny; # La1 - latitude of first grid point signed[4] latitudeOfFirstGridPoint: edition_specific ; @@ -69,3 +71,5 @@ meta latLonValues latlonvalues(values); alias latitudeLongitudeValues=latLonValues; meta latitudes latitudes(values,0); meta longitudes longitudes(values,0); +meta distinctLatitudes latitudes(values,1); +meta distinctLongitudes longitudes(values,1); diff --git a/tools/grib_to_netcdf.c b/tools/grib_to_netcdf.c index d9f493d59..36eb306fe 100644 --- a/tools/grib_to_netcdf.c +++ b/tools/grib_to_netcdf.c @@ -2185,35 +2185,37 @@ static int check_grid(field *f) if (strcmp(grid_type, "regular_ll") != 0 && (strcmp(grid_type, "regular_gg") != 0)) { - grib_context_log(ctx, GRIB_LOG_ERROR, "First GRIB is not on a regular lat/lon grid or on a regular Gaussian grid. Exiting.\n"); - return GRIB_GEOCALCULUS_PROBLEM; + if(strcmp(grid_type,"lambert_azimuthal_equal_area")==0) { + fprintf(stderr, "grib_to_netcdf: WARNING: Support for gridType of lambert_azimuthal_equal_area is currently experimental.\n"); + } else { + grib_context_log(ctx, GRIB_LOG_ERROR, "First GRIB is not on a regular lat/lon grid or on a regular Gaussian grid. Exiting.\n"); + return GRIB_GEOCALCULUS_PROBLEM; + } } return e; } static int def_latlon(int ncid, fieldset *fs) { int n = 0; - size_t l = 0; + long l = 0; int var_id = 0; err e = 0; field *g = get_field(fs, 0, expand_mem); Assert( check_grid(g)==GRIB_SUCCESS ); - - /* Define longitude */ - if((e = grib_get_size(g->handle, "distinctLongitudes", &l)) != GRIB_SUCCESS) + + if((e = grib_get_long(g->handle, "Ni", &l)) != GRIB_SUCCESS) { - grib_context_log(ctx, GRIB_LOG_ERROR, "ecCodes: cannot get distinctLongitudes: %s", grib_get_error_message(e)); + grib_context_log(ctx, GRIB_LOG_ERROR, "ecCodes: cannot get Ni %s", grib_get_error_message(e)); return e; } n = l; var_id = set_dimension(ncid, "longitude", n, NC_FLOAT, "degrees_east", "longitude"); - /* Define latitude */ - if((e = grib_get_size(g->handle, "distinctLatitudes", &l)) != GRIB_SUCCESS) + if((e = grib_get_long(g->handle, "Nj", &l)) != GRIB_SUCCESS) { - grib_context_log(ctx, GRIB_LOG_ERROR, "ecCodes: cannot get distinctLatitudes: %s", grib_get_error_message(e)); + grib_context_log(ctx, GRIB_LOG_ERROR, "ecCodes: cannot get Nj %s", grib_get_error_message(e)); return e; } n = l; From 92646068becafca27b9a00d0409acfaa8fcf8c0e Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Wed, 13 Feb 2019 15:45:22 +0000 Subject: [PATCH 094/414] Linux: add CI build --- .travis.yml | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index e7512b251..d7552be20 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,8 +11,21 @@ branches: language: c -os: osx -osx_image: xcode10.1 +matrix: + include: + - os: linux + dist: xenial + addons: + apt: + packages: + - libnetcdf-dev + + - os: osx + osx_image: xcode10.1 + addons: + homebrew: + packages: + - netcdf env: global: @@ -27,9 +40,6 @@ install: # install ecbuild - git clone --depth 1 https://github.com/ecmwf/ecbuild.git ${ECBUILD_SRC} - # install netcdf - - brew install netcdf - #---------------------------------# # build configuration # #---------------------------------# From 2a0196a0adc3ee423f167b2460faaf984fbc0f23 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Wed, 13 Feb 2019 15:48:39 +0000 Subject: [PATCH 095/414] README: update shields --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d4164517b..fb0aeb816 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ ecCodes ======= -[![macOS: master](https://img.shields.io/travis/ecmwf/eccodes/master.svg?label=macOS-master)](https://travis-ci.org/ecmwf/eccodes/branches) -[![macOS: develop](https://img.shields.io/travis/ecmwf/eccodes/develop.svg?label=macOS-dev)](https://travis-ci.org/ecmwf/eccodes/branches) +[![Linux & macOS: master](https://img.shields.io/travis/ecmwf/eccodes/master.svg?label=Linux-&-macOS-master)](https://travis-ci.org/ecmwf/eccodes/branches) +[![Linux & macOS: develop](https://img.shields.io/travis/ecmwf/eccodes/develop.svg?label=Linux-&-macOS-dev)](https://travis-ci.org/ecmwf/eccodes/branches) [![Windows: master](https://img.shields.io/appveyor/ci/ecmwf/eccodes/master.svg?label=Windows-master)](https://ci.appveyor.com/project/ecmwf/eccodes/branch/master) [![Windows: develop](https://img.shields.io/appveyor/ci/ecmwf/eccodes/develop.svg?label=Windows-dev)](https://ci.appveyor.com/project/ecmwf/eccodes/branch/develop) From 2fc1e4443c7af3b715a22164bd3bb50e63a64e6a Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Wed, 13 Feb 2019 16:08:41 +0000 Subject: [PATCH 096/414] Travis: install to /tmp --- .travis.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index d7552be20..b91832510 100644 --- a/.travis.yml +++ b/.travis.yml @@ -32,10 +32,15 @@ env: - ECCODES_SRC=${TRAVIS_BUILD_DIR} - ECBUILD_SRC=${ECCODES_SRC}/../ecbuild - BUILD_DIR=${ECCODES_SRC}/build + - INSTALL_DIR=/tmp/install git: depth: 1 +before_install: + - mkdir ${INSTALL_DIR} + - export PATH=$PATH:${INSTALL_DIR} + install: # install ecbuild - git clone --depth 1 https://github.com/ecmwf/ecbuild.git ${ECBUILD_SRC} @@ -52,7 +57,8 @@ script: # build ecCodes - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR} - - cmake -D ENABLE_FORTRAN=0 + - cmake -D CMAKE_INSTALL_PREFIX=${INSTALL_DIR} + -D ENABLE_FORTRAN=0 -D ENABLE_PYTHON=0 -D ENABLE_NETCDF=1 -D ENABLE_JPG=1 From 98c18c919d946ec96dd6cb18123b418ed06ae78b Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Wed, 13 Feb 2019 16:14:23 +0000 Subject: [PATCH 097/414] Travis: hide `make install` STDOUT --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index b91832510..e7520b411 100644 --- a/.travis.yml +++ b/.travis.yml @@ -67,7 +67,7 @@ script: ${ECCODES_SRC} - make -j4 - ctest -j4 --output-on-failure - - make install --silent + - make install > /dev/null # extra sanity tests - codes_info From 86227f9f8b863b641dfa477b2805a8719f3d7072 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Wed, 13 Feb 2019 16:31:53 +0000 Subject: [PATCH 098/414] Travis: add install/bin to path --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index e7520b411..8a5dc0fd0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -39,7 +39,7 @@ git: before_install: - mkdir ${INSTALL_DIR} - - export PATH=$PATH:${INSTALL_DIR} + - export PATH=${PATH}:${INSTALL_DIR}/bin install: # install ecbuild From 7ed563396378f8afb0d328d47c70d4c5eff4043c Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Wed, 13 Feb 2019 16:48:30 +0000 Subject: [PATCH 099/414] README: replace ampersand in shield labels --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index fb0aeb816..ecb5f21f9 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ ecCodes ======= -[![Linux & macOS: master](https://img.shields.io/travis/ecmwf/eccodes/master.svg?label=Linux-&-macOS-master)](https://travis-ci.org/ecmwf/eccodes/branches) -[![Linux & macOS: develop](https://img.shields.io/travis/ecmwf/eccodes/develop.svg?label=Linux-&-macOS-dev)](https://travis-ci.org/ecmwf/eccodes/branches) +[![Linux & macOS: master](https://img.shields.io/travis/ecmwf/eccodes/master.svg?label=Linux-and-macOS-master)](https://travis-ci.org/ecmwf/eccodes/branches) +[![Linux & macOS: develop](https://img.shields.io/travis/ecmwf/eccodes/develop.svg?label=Linux-and-macOS-dev)](https://travis-ci.org/ecmwf/eccodes/branches) [![Windows: master](https://img.shields.io/appveyor/ci/ecmwf/eccodes/master.svg?label=Windows-master)](https://ci.appveyor.com/project/ecmwf/eccodes/branch/master) [![Windows: develop](https://img.shields.io/appveyor/ci/ecmwf/eccodes/develop.svg?label=Windows-dev)](https://ci.appveyor.com/project/ecmwf/eccodes/branch/develop) From 477ad681e785ab98f8de2d7d5968562b5116bf43 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 16 Feb 2019 14:56:14 +0000 Subject: [PATCH 100/414] ECC-846: grib_to_netcdf slow for high resolution data (Part 1) --- tools/grib_to_netcdf.c | 74 +++++++++++++++++++++++++++++------------- 1 file changed, 51 insertions(+), 23 deletions(-) diff --git a/tools/grib_to_netcdf.c b/tools/grib_to_netcdf.c index d9f493d59..9544c1ec7 100644 --- a/tools/grib_to_netcdf.c +++ b/tools/grib_to_netcdf.c @@ -2190,33 +2190,69 @@ static int check_grid(field *f) } return e; } + +static int get_num_latitudes_longitudes(grib_handle* h, size_t* nlats, size_t* nlons) +{ + err e=0; + char grid_type[80]; + size_t size = sizeof(grid_type); + + if (grib_get_string(h, "typeOfGrid", grid_type, &size) == GRIB_SUCCESS && + strcmp(grid_type, "regular_ll") == 0) + { + /* Special shortcut for regular lat/on grids */ + long n; + if ((e = grib_get_long(h, "Ni", &n)) != GRIB_SUCCESS) { + grib_context_log(ctx, GRIB_LOG_ERROR, "ecCodes: cannot get Ni: %s", grib_get_error_message(e)); + return e; + } + *nlons = n; + if ((e = grib_get_long(h, "Nj", &n)) != GRIB_SUCCESS) + { + grib_context_log(ctx, GRIB_LOG_ERROR, "ecCodes: cannot get Nj: %s", grib_get_error_message(e)); + return e; + } + *nlats = n; + } + else + { + if((e = grib_get_size(h, "distinctLatitudes", nlats)) != GRIB_SUCCESS) + { + grib_context_log(ctx, GRIB_LOG_ERROR, "ecCodes: cannot get distinctLatitudes: %s", grib_get_error_message(e)); + return e; + } + if((e = grib_get_size(h, "distinctLongitudes", nlons)) != GRIB_SUCCESS) + { + grib_context_log(ctx, GRIB_LOG_ERROR, "ecCodes: cannot get distinctLongitudes: %s", grib_get_error_message(e)); + return e; + } + } + return e; +} + static int def_latlon(int ncid, fieldset *fs) { int n = 0; - size_t l = 0; + long l = 0; + size_t nlats=0, nlons=0; int var_id = 0; err e = 0; field *g = get_field(fs, 0, expand_mem); - Assert( check_grid(g)==GRIB_SUCCESS ); - - /* Define longitude */ - if((e = grib_get_size(g->handle, "distinctLongitudes", &l)) != GRIB_SUCCESS) - { - grib_context_log(ctx, GRIB_LOG_ERROR, "ecCodes: cannot get distinctLongitudes: %s", grib_get_error_message(e)); + DebugAssert( check_grid(g)==GRIB_SUCCESS ); + + if((e = get_num_latitudes_longitudes(g->handle, &nlats, &nlons)) != GRIB_SUCCESS) { + grib_context_log(ctx, GRIB_LOG_ERROR, "ecCodes: cannot get lat/lon info: %s", grib_get_error_message(e)); return e; } - n = l; + + /* Define longitude */ + n = (int)nlons; var_id = set_dimension(ncid, "longitude", n, NC_FLOAT, "degrees_east", "longitude"); /* Define latitude */ - if((e = grib_get_size(g->handle, "distinctLatitudes", &l)) != GRIB_SUCCESS) - { - grib_context_log(ctx, GRIB_LOG_ERROR, "ecCodes: cannot get distinctLatitudes: %s", grib_get_error_message(e)); - return e; - } - n = l; + n = nlats; var_id = set_dimension(ncid, "latitude", n, NC_FLOAT, "degrees_north", "latitude"); /* g->purge_header = TRUE; */ @@ -2272,19 +2308,11 @@ static int put_latlon(int ncid, fieldset *fs) #endif - if((e = grib_get_size(g->handle, "distinctLatitudes", &nj)) != GRIB_SUCCESS) - { + if((e = get_num_latitudes_longitudes(g->handle, &nj, &ni)) != GRIB_SUCCESS) { grib_context_log(ctx, GRIB_LOG_ERROR, "ecCodes: cannot get distinctLatitudes: %s", grib_get_error_message(e)); return e; - } - if((e = grib_get_size(g->handle, "distinctLongitudes", &ni)) != GRIB_SUCCESS) - { - grib_context_log(ctx, GRIB_LOG_ERROR, "ecCodes: cannot get distinctLongitudes: %s", grib_get_error_message(e)); - return e; - - } /* Compute max. # values and allocate */ nv = ni; if(nv < nj) From 5a6c0fded7e85647fa19d056c028f30484d703a7 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 16 Feb 2019 16:40:31 +0000 Subject: [PATCH 101/414] ECC-846: extra checks --- tools/grib_to_netcdf.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/grib_to_netcdf.c b/tools/grib_to_netcdf.c index 9544c1ec7..915586aa3 100644 --- a/tools/grib_to_netcdf.c +++ b/tools/grib_to_netcdf.c @@ -2202,11 +2202,13 @@ static int get_num_latitudes_longitudes(grib_handle* h, size_t* nlats, size_t* n { /* Special shortcut for regular lat/on grids */ long n; + Assert( !grib_is_missing(h, "Ni", &e) ); if ((e = grib_get_long(h, "Ni", &n)) != GRIB_SUCCESS) { grib_context_log(ctx, GRIB_LOG_ERROR, "ecCodes: cannot get Ni: %s", grib_get_error_message(e)); return e; } *nlons = n; + if ((e = grib_get_long(h, "Nj", &n)) != GRIB_SUCCESS) { grib_context_log(ctx, GRIB_LOG_ERROR, "ecCodes: cannot get Nj: %s", grib_get_error_message(e)); @@ -2233,7 +2235,6 @@ static int get_num_latitudes_longitudes(grib_handle* h, size_t* nlats, size_t* n static int def_latlon(int ncid, fieldset *fs) { int n = 0; - long l = 0; size_t nlats=0, nlons=0; int var_id = 0; err e = 0; From 031bef2e137d147176c84290e630006af8ae558f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 16 Feb 2019 19:00:14 +0000 Subject: [PATCH 102/414] ECC-896: Fortran API: Memory leak in grib_index_get_int and grib_index_get_string --- examples/F90/grib_index.f90 | 5 +++++ fortran/grib_fortran.c | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/examples/F90/grib_index.f90 b/examples/F90/grib_index.f90 index 96e7b8d4a..7b69e0f94 100644 --- a/examples/F90/grib_index.f90 +++ b/examples/F90/grib_index.f90 @@ -108,5 +108,10 @@ program index call codes_index_write(idx,index_file) call codes_index_release(idx) + + deallocate(level) + deallocate(shortName) + deallocate(step) + deallocate(number) end program index diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c index 3fa83f3b5..8a0276a51 100644 --- a/fortran/grib_fortran.c +++ b/fortran/grib_fortran.c @@ -2390,6 +2390,9 @@ int grib_f_index_get_string_(int* gid, char* key, char* val, int *eachsize,int* p+=l; for (j=0;j<*eachsize-l;j++) *(p++)=' '; } + for (i=0;icontext, bufval[i]); + } grib_context_free(h->context,bufval); return err; @@ -2440,6 +2443,7 @@ int grib_f_index_get_int_(int* gid, char* key, int *val, int* size, int len){ for (i=0;icontext, lval); return err; } int grib_f_index_get_int__(int* gid, char* key, int *val, int* size, int len){ From 1c8065f5764b8b9540df07a6573d0c2d46f86580 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 16 Feb 2019 20:51:54 +0000 Subject: [PATCH 103/414] ECC-787: Memory leak in grib_index.c --- src/grib_index.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/grib_index.c b/src/grib_index.c index d638b860b..293906c10 100644 --- a/src/grib_index.c +++ b/src/grib_index.c @@ -663,8 +663,13 @@ static void grib_field_tree_delete(grib_context* c,grib_field_tree* tree) static void grib_field_list_delete(grib_context* c, grib_field_list* field_list) { + grib_field_list* p = field_list; if (!field_list) return; - grib_context_free(c,field_list); + while (p) { + grib_field_list* q=p; + p = p->next; + grib_context_free(c,q); + } } void grib_index_delete(grib_index* index) @@ -1597,10 +1602,8 @@ int grib_index_dump_file(FILE* fout, const char* filename) fh=fopen(filename,"r"); if (fh) { grib_file *file,*f; - char* identifier=NULL; unsigned char marker=0; - - identifier = grib_read_string(c,fh,&err); + char* identifier = grib_read_string(c,fh,&err); if (err) return err; grib_context_free(c,identifier); err = grib_read_uchar(fh,&marker); From 60a5600db55960fb9c2ecedd201f027490622086 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 18 Feb 2019 14:05:05 +0000 Subject: [PATCH 104/414] Documentation --- tools/bufr_filter.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/bufr_filter.sh b/tools/bufr_filter.sh index b0dc2bc54..49a3a014d 100755 --- a/tools/bufr_filter.sh +++ b/tools/bufr_filter.sh @@ -122,7 +122,7 @@ echo "set unpack=1;" echo "transient statid=1000*blockNumber+stationNumber;" echo "" echo "if (dataCategory ==0 && statid == 1003) {" -echo " write out.bufr;" +echo " write \"out.bufr\";" echo "}" echo "\\endverbatim\\n" From fcf95a58d36a2f8a0dec03c2c00a680b721934f4 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 18 Feb 2019 14:10:53 +0000 Subject: [PATCH 105/414] Experimental: Add case for TAF mode (e.g. grib_dump -TF) --- tools/grib_options.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/grib_options.c b/tools/grib_options.c index c1ea4ddbf..e4f71a294 100644 --- a/tools/grib_options.c +++ b/tools/grib_options.c @@ -206,9 +206,10 @@ int grib_process_runtime_options(grib_context* context,int argc,char** argv,grib if (grib_options_on("T:")) { char* x=grib_options_get_option("T:"); - if ( *x == 'T' ) options->mode=MODE_GTS; + if ( *x == 'T' ) options->mode=MODE_GTS; else if ( *x == 'B' ) options->mode=MODE_BUFR; else if ( *x == 'M' ) options->mode=MODE_METAR; + else if ( *x == 'F' ) options->mode=MODE_TAF; else if ( *x == 'A' ) options->mode=MODE_ANY; else options->mode=MODE_GRIB; } From 7df5d9ff4e3478c9f6a3691369aa6ab8e4ffbc27 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 18 Feb 2019 14:42:56 +0000 Subject: [PATCH 106/414] Fix name of aerosol parameters --- definitions/grib1/2.98.215.table | 4 ++-- definitions/grib1/localConcepts/ecmf/cfVarName.def | 4 ++-- definitions/grib1/localConcepts/ecmf/name.def | 8 ++++---- definitions/grib1/localConcepts/ecmf/paramId.def | 4 ++-- definitions/grib1/localConcepts/ecmf/shortName.def | 4 ++-- definitions/grib1/localConcepts/ecmf/units.def | 4 ++-- definitions/grib2/tables/local/ecmf/1/4.233.table | 2 ++ 7 files changed, 16 insertions(+), 14 deletions(-) create mode 100644 definitions/grib2/tables/local/ecmf/1/4.233.table diff --git a/definitions/grib1/2.98.215.table b/definitions/grib1/2.98.215.table index d75e6051a..96de89678 100644 --- a/definitions/grib1/2.98.215.table +++ b/definitions/grib1/2.98.215.table @@ -201,8 +201,8 @@ 200 200 AERNGTNIC Negative fixer of coarse-mode nitrate aerosol (kg m**-2 s**-1) 201 201 AERMSSNIF Vertically integrated mass of fine-mode nitrate aerosol (kg m**-2) 202 202 AERMSSNIC Vertically integrated mass of coarse-mode nitrate aerosol (kg m**-2) -203 203 AERODNIF Fine-mode nitrate aerosol optical depth at 550mn (dimensionless) -204 204 AERODNIC Coarse-mode nitrate aerosol optical depth at 550nm (dimensionless) +203 203 AERODNIF Fine-mode nitrate aerosol optical depth at 550 nm (dimensionless) +204 204 AERODNIC Coarse-mode nitrate aerosol optical depth at 550 nm (dimensionless) 205 205 AERSRCAM Source/gain of ammonium aerosol (kg m**-2 s**-1) 206 206 AERDDPAM Dry deposition of ammonium aerosol (kg m**-2 s**-1) 207 207 AERSDMAM Sedimentation of ammonium aerosol (kg m**-2 s**-1) diff --git a/definitions/grib1/localConcepts/ecmf/cfVarName.def b/definitions/grib1/localConcepts/ecmf/cfVarName.def index 04be3a19b..0ae09a8b6 100644 --- a/definitions/grib1/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib1/localConcepts/ecmf/cfVarName.def @@ -7134,12 +7134,12 @@ table2Version = 215 ; indicatorOfParameter = 202 ; } -#Fine-mode nitrate aerosol optical depth at 550mn +#Fine-mode nitrate aerosol optical depth at 550 nm 'aerodnif' = { table2Version = 215 ; indicatorOfParameter = 203 ; } -#Coarse-mode nitrate aerosol optical depth at 550nm +#Coarse-mode nitrate aerosol optical depth at 550 nm 'aerodnic' = { table2Version = 215 ; indicatorOfParameter = 204 ; diff --git a/definitions/grib1/localConcepts/ecmf/name.def b/definitions/grib1/localConcepts/ecmf/name.def index e98c5cc89..d8f677d8b 100644 --- a/definitions/grib1/localConcepts/ecmf/name.def +++ b/definitions/grib1/localConcepts/ecmf/name.def @@ -7134,13 +7134,13 @@ table2Version = 215 ; indicatorOfParameter = 202 ; } -#Fine-mode nitrate aerosol optical depth at 550mn -'Fine-mode nitrate aerosol optical depth at 550mn' = { +#Fine-mode nitrate aerosol optical depth at 550 nm +'Fine-mode nitrate aerosol optical depth at 550 nm' = { table2Version = 215 ; indicatorOfParameter = 203 ; } -#Coarse-mode nitrate aerosol optical depth at 550nm -'Coarse-mode nitrate aerosol optical depth at 550nm' = { +#Coarse-mode nitrate aerosol optical depth at 550 nm +'Coarse-mode nitrate aerosol optical depth at 550 nm' = { table2Version = 215 ; indicatorOfParameter = 204 ; } diff --git a/definitions/grib1/localConcepts/ecmf/paramId.def b/definitions/grib1/localConcepts/ecmf/paramId.def index 083336457..76bdba23e 100644 --- a/definitions/grib1/localConcepts/ecmf/paramId.def +++ b/definitions/grib1/localConcepts/ecmf/paramId.def @@ -7134,12 +7134,12 @@ table2Version = 215 ; indicatorOfParameter = 202 ; } -#Fine-mode nitrate aerosol optical depth at 550mn +#Fine-mode nitrate aerosol optical depth at 550 nm '215203' = { table2Version = 215 ; indicatorOfParameter = 203 ; } -#Coarse-mode nitrate aerosol optical depth at 550nm +#Coarse-mode nitrate aerosol optical depth at 550 nm '215204' = { table2Version = 215 ; indicatorOfParameter = 204 ; diff --git a/definitions/grib1/localConcepts/ecmf/shortName.def b/definitions/grib1/localConcepts/ecmf/shortName.def index fec3780e4..53b3ebe25 100644 --- a/definitions/grib1/localConcepts/ecmf/shortName.def +++ b/definitions/grib1/localConcepts/ecmf/shortName.def @@ -7134,12 +7134,12 @@ table2Version = 215 ; indicatorOfParameter = 202 ; } -#Fine-mode nitrate aerosol optical depth at 550mn +#Fine-mode nitrate aerosol optical depth at 550 nm 'aerodnif' = { table2Version = 215 ; indicatorOfParameter = 203 ; } -#Coarse-mode nitrate aerosol optical depth at 550nm +#Coarse-mode nitrate aerosol optical depth at 550 nm 'aerodnic' = { table2Version = 215 ; indicatorOfParameter = 204 ; diff --git a/definitions/grib1/localConcepts/ecmf/units.def b/definitions/grib1/localConcepts/ecmf/units.def index a7e3eef05..12cda4f59 100644 --- a/definitions/grib1/localConcepts/ecmf/units.def +++ b/definitions/grib1/localConcepts/ecmf/units.def @@ -7134,12 +7134,12 @@ table2Version = 215 ; indicatorOfParameter = 202 ; } -#Fine-mode nitrate aerosol optical depth at 550mn +#Fine-mode nitrate aerosol optical depth at 550 nm 'dimensionless' = { table2Version = 215 ; indicatorOfParameter = 203 ; } -#Coarse-mode nitrate aerosol optical depth at 550nm +#Coarse-mode nitrate aerosol optical depth at 550 nm 'dimensionless' = { table2Version = 215 ; indicatorOfParameter = 204 ; diff --git a/definitions/grib2/tables/local/ecmf/1/4.233.table b/definitions/grib2/tables/local/ecmf/1/4.233.table new file mode 100644 index 000000000..bea3eb698 --- /dev/null +++ b/definitions/grib2/tables/local/ecmf/1/4.233.table @@ -0,0 +1,2 @@ +# Code table 4.233 - Aerosol type for ECMWF +65534 65534 Nitrate Fine Mode From 7da9e18851dcffd653dab6b75c330623b3b80205 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 18 Feb 2019 14:59:00 +0000 Subject: [PATCH 107/414] ECC-890: CAMS parameters --- definitions/grib2/tables/local/ecmf/1/4.233.table | 1 + 1 file changed, 1 insertion(+) diff --git a/definitions/grib2/tables/local/ecmf/1/4.233.table b/definitions/grib2/tables/local/ecmf/1/4.233.table index bea3eb698..9deeecdfa 100644 --- a/definitions/grib2/tables/local/ecmf/1/4.233.table +++ b/definitions/grib2/tables/local/ecmf/1/4.233.table @@ -1,2 +1,3 @@ # Code table 4.233 - Aerosol type for ECMWF +65533 65533 Nitrate Coarse Mode 65534 65534 Nitrate Fine Mode From 89ce8f8a203ef027affb15fbb591889b7db037a8 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 18 Feb 2019 15:02:40 +0000 Subject: [PATCH 108/414] ECC-890: CAMS parameter 210247 --- definitions/grib2/localConcepts/ecmf/cfVarName.def | 9 +++++++++ definitions/grib2/localConcepts/ecmf/name.def | 9 +++++++++ definitions/grib2/localConcepts/ecmf/paramId.def | 9 +++++++++ definitions/grib2/localConcepts/ecmf/shortName.def | 9 +++++++++ definitions/grib2/localConcepts/ecmf/units.def | 9 +++++++++ 5 files changed, 45 insertions(+) diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index 57e88c73c..ff3641240 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -3281,6 +3281,15 @@ parameterCategory = 210 ; parameterNumber = 246 ; } +#Nitrate fine mode aerosol mass mixing ratio +'aermr16' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + is_aerosol = 1 ; + aerosolType = 65534 ; + } #Aerosol type 13 mass mixing ratio 'aermr13diff' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index fa2c35e8f..aba9734e6 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -3281,6 +3281,15 @@ parameterCategory = 210 ; parameterNumber = 246 ; } +#Nitrate fine mode aerosol mass mixing ratio +'Nitrate fine mode aerosol mass mixing ratio' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } #Aerosol type 13 mass mixing ratio 'Aerosol type 13 mass mixing ratio' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index 721fc6763..88720d61c 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -3281,6 +3281,15 @@ parameterCategory = 210 ; parameterNumber = 246 ; } +#Nitrate fine mode aerosol mass mixing ratio +'210247' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } #Aerosol type 13 mass mixing ratio '211013' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index 5478390b4..008013bbe 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -3281,6 +3281,15 @@ parameterCategory = 210 ; parameterNumber = 246 ; } +#Nitrate fine mode aerosol mass mixing ratio +'aermr16' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + is_aerosol = 1 ; + aerosolType = 65534 ; + } #Aerosol type 13 mass mixing ratio 'aermr13diff' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index 1c045cb3e..1190cd75b 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -3281,6 +3281,15 @@ parameterCategory = 210 ; parameterNumber = 246 ; } +#Nitrate fine mode aerosol mass mixing ratio +'kg kg**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } #Aerosol type 13 mass mixing ratio 'kg kg**-1' = { discipline = 192 ; From 6b4b8c9f145a30d0de1d07cb9c8d7f100194f517 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 18 Feb 2019 15:52:20 +0000 Subject: [PATCH 109/414] ECC-890: CAMS parameter 210248 --- definitions/grib2/localConcepts/ecmf/cfVarName.def | 11 ++++++++++- definitions/grib2/localConcepts/ecmf/name.def | 9 +++++++++ definitions/grib2/localConcepts/ecmf/paramId.def | 9 +++++++++ definitions/grib2/localConcepts/ecmf/shortName.def | 11 ++++++++++- definitions/grib2/localConcepts/ecmf/units.def | 9 +++++++++ 5 files changed, 47 insertions(+), 2 deletions(-) diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index ff3641240..7835d42f4 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -3287,8 +3287,17 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 2 ; - is_aerosol = 1 ; aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Nitrate coarse mode aerosol mass mixing ratio +'aermr17' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + is_aerosol = 1 ; + aerosolType = 65533 ; } #Aerosol type 13 mass mixing ratio 'aermr13diff' = { diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index aba9734e6..449891c18 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -3287,7 +3287,16 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 2 ; + is_aerosol = 1 ; aerosolType = 65534 ; + } +#Nitrate coarse mode aerosol mass mixing ratio +'Nitrate coarse mode aerosol mass mixing ratio' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + aerosolType = 65533 ; is_aerosol = 1 ; } #Aerosol type 13 mass mixing ratio diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index 88720d61c..83fe7f821 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -3290,6 +3290,15 @@ aerosolType = 65534 ; is_aerosol = 1 ; } +#Nitrate coarse mode aerosol mass mixing ratio +'210248' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } #Aerosol type 13 mass mixing ratio '211013' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index 008013bbe..5f1622724 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -3287,8 +3287,17 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 2 ; - is_aerosol = 1 ; aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Nitrate coarse mode aerosol mass mixing ratio +'aermr17' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + is_aerosol = 1 ; + aerosolType = 65533 ; } #Aerosol type 13 mass mixing ratio 'aermr13diff' = { diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index 1190cd75b..32914def7 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -3290,6 +3290,15 @@ aerosolType = 65534 ; is_aerosol = 1 ; } +#Nitrate coarse mode aerosol mass mixing ratio +'kg kg**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + is_aerosol = 1 ; + aerosolType = 65533 ; + } #Aerosol type 13 mass mixing ratio 'kg kg**-1' = { discipline = 192 ; From a819c9dcaf0e85a6fb1616deccd4e115fd195c02 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 18 Feb 2019 16:23:26 +0000 Subject: [PATCH 110/414] ECC-890: CAMS parameter 210249 --- definitions/grib2/cfVarName.def | 8 ++++++++ definitions/grib2/name.def | 8 ++++++++ definitions/grib2/paramId.def | 8 ++++++++ definitions/grib2/shortName.def | 8 ++++++++ definitions/grib2/units.def | 8 ++++++++ 5 files changed, 40 insertions(+) diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index c683a790b..72491818b 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -305,6 +305,14 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } +#Ammonium aerosol mass mixing ratio +'aermr18' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } #10 metre wind gust in the last 3 hours 'fg310' = { discipline = 0 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index 9f0c361b9..3034666da 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -305,6 +305,14 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } +#Ammonium aerosol mass mixing ratio +'Ammonium aerosol mass mixing ratio' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + is_aerosol = 1 ; + aerosolType = 62003 ; + } #10 metre wind gust in the last 3 hours '10 metre wind gust in the last 3 hours' = { discipline = 0 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 5fdf89fa2..2d2019bce 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -305,6 +305,14 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } +#Ammonium aerosol mass mixing ratio +'210249' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } #10 metre wind gust in the last 3 hours '228028' = { discipline = 0 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 9d8fdc1cf..038a51aa4 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -305,6 +305,14 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } +#Ammonium aerosol mass mixing ratio +'aermr18' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } #10 metre wind gust in the last 3 hours '10fg3' = { discipline = 0 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 0c8e4fc7c..9125f4c3a 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -305,6 +305,14 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } +#Ammonium aerosol mass mixing ratio +'kg kg**-1' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + is_aerosol = 1 ; + aerosolType = 62003 ; + } #10 metre wind gust in the last 3 hours 'm s**-1' = { discipline = 0 ; From 0cfe82fe094698789d3c872f0a42b99fd2ec591e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 18 Feb 2019 17:31:48 +0000 Subject: [PATCH 111/414] ECC-890: CAMS parameter 215189 --- definitions/grib2/localConcepts/ecmf/cfVarName.def | 9 +++++++++ definitions/grib2/localConcepts/ecmf/name.def | 9 +++++++++ definitions/grib2/localConcepts/ecmf/paramId.def | 9 +++++++++ definitions/grib2/localConcepts/ecmf/shortName.def | 9 +++++++++ definitions/grib2/localConcepts/ecmf/units.def | 9 +++++++++ definitions/grib2/tables/local/ecmf/1/4.2.0.20.table | 2 ++ 6 files changed, 47 insertions(+) create mode 100644 definitions/grib2/tables/local/ecmf/1/4.2.0.20.table diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index 7835d42f4..d5dbd6ac6 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -6677,6 +6677,15 @@ parameterCategory = 215 ; parameterNumber = 188 ; } +#Source/gain of fine-mode nitrate aerosol +'aersrcnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 192 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } #Experimental product 'p1.216' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index 449891c18..1d39705de 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -6677,6 +6677,15 @@ parameterCategory = 215 ; parameterNumber = 188 ; } +#Source/gain of fine-mode nitrate aerosol +'Source/gain of fine-mode nitrate aerosol' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 192 ; + is_aerosol = 1 ; + aerosolType = 65534 ; + } #Experimental product 'Experimental product' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index 83fe7f821..db02de472 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -6677,6 +6677,15 @@ parameterCategory = 215 ; parameterNumber = 188 ; } +#Source/gain of fine-mode nitrate aerosol +'215189' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 192 ; + is_aerosol = 1 ; + aerosolType = 65534 ; + } #Experimental product '216001' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index 5f1622724..960e51660 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -6677,6 +6677,15 @@ parameterCategory = 215 ; parameterNumber = 188 ; } +#Source/gain of fine-mode nitrate aerosol +'aersrcnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 192 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } #Experimental product '~' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index 32914def7..f0d367e05 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -6677,6 +6677,15 @@ parameterCategory = 215 ; parameterNumber = 188 ; } +#Source/gain of fine-mode nitrate aerosol +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 192 ; + is_aerosol = 1 ; + aerosolType = 65534 ; + } #Experimental product '~' = { discipline = 192 ; diff --git a/definitions/grib2/tables/local/ecmf/1/4.2.0.20.table b/definitions/grib2/tables/local/ecmf/1/4.2.0.20.table new file mode 100644 index 000000000..70f0a38e7 --- /dev/null +++ b/definitions/grib2/tables/local/ecmf/1/4.2.0.20.table @@ -0,0 +1,2 @@ +# Code table 4.2 - discipline=0 category=20 for ECMWF +192 192 Source/gain From 3f8b04022385b17c7d1044f4ed52b37c3880a68e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 18 Feb 2019 18:22:24 +0000 Subject: [PATCH 112/414] ECC-890: CAMS parameters --- .../grib2/localConcepts/ecmf/cfVarName.def | 45 +++++++++++++++++++ definitions/grib2/localConcepts/ecmf/name.def | 45 +++++++++++++++++++ .../grib2/localConcepts/ecmf/paramId.def | 45 +++++++++++++++++++ .../grib2/localConcepts/ecmf/shortName.def | 45 +++++++++++++++++++ .../grib2/localConcepts/ecmf/units.def | 45 +++++++++++++++++++ .../grib2/tables/local/ecmf/1/4.2.0.20.table | 1 + 6 files changed, 226 insertions(+) diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index d5dbd6ac6..9b9b6e61d 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -6686,6 +6686,51 @@ aerosolType = 65534 ; is_aerosol = 1 ; } +#Dry deposition of fine-mode nitrate aerosol +'aerddpnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Sedimentation of fine-mode nitrate aerosol +'aersdmnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 11 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Wet deposition of fine-mode nitrate aerosol by large-scale precipitation +'aerwdlnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 9 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Wet deposition of fine-mode nitrate aerosol by convective precipitation +'aerwdcnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 10 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Negative fixer of fine-mode nitrate aerosol +'aerngtnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 193 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } #Experimental product 'p1.216' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index 1d39705de..ea84488e5 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -6686,6 +6686,51 @@ is_aerosol = 1 ; aerosolType = 65534 ; } +#Dry deposition of fine-mode nitrate aerosol +'Dry deposition of fine-mode nitrate aerosol' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + is_aerosol = 1 ; + aerosolType = 65534 ; + } +#Sedimentation of fine-mode nitrate aerosol +'Sedimentation of fine-mode nitrate aerosol' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 11 ; + is_aerosol = 1 ; + aerosolType = 65534 ; + } +#Wet deposition of fine-mode nitrate aerosol by large-scale precipitation +'Wet deposition of fine-mode nitrate aerosol by large-scale precipitation' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 9 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Wet deposition of fine-mode nitrate aerosol by convective precipitation +'Wet deposition of fine-mode nitrate aerosol by convective precipitation' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 10 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Negative fixer of fine-mode nitrate aerosol +'Negative fixer of fine-mode nitrate aerosol' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 193 ; + is_aerosol = 1 ; + aerosolType = 65534 ; + } #Experimental product 'Experimental product' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index db02de472..2e64e8b52 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -6683,9 +6683,54 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 192 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Dry deposition of fine-mode nitrate aerosol +'215191' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Sedimentation of fine-mode nitrate aerosol +'215193' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 11 ; is_aerosol = 1 ; aerosolType = 65534 ; } +#Wet deposition of fine-mode nitrate aerosol by large-scale precipitation +'215195' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 9 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Wet deposition of fine-mode nitrate aerosol by convective precipitation +'215197' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 10 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Negative fixer of fine-mode nitrate aerosol +'215199' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 193 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } #Experimental product '216001' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index 960e51660..271ac9d12 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -6686,6 +6686,51 @@ aerosolType = 65534 ; is_aerosol = 1 ; } +#Dry deposition of fine-mode nitrate aerosol +'aerddpnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Sedimentation of fine-mode nitrate aerosol +'aersdmnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 11 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Wet deposition of fine-mode nitrate aerosol by large-scale precipitation +'aerwdlnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 9 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Wet deposition of fine-mode nitrate aerosol by convective precipitation +'aerwdcnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 10 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Negative fixer of fine-mode nitrate aerosol +'aerngtnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 193 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } #Experimental product '~' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index f0d367e05..d625c10fa 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -6686,6 +6686,51 @@ is_aerosol = 1 ; aerosolType = 65534 ; } +#Dry deposition of fine-mode nitrate aerosol +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + is_aerosol = 1 ; + aerosolType = 65534 ; + } +#Sedimentation of fine-mode nitrate aerosol +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 11 ; + is_aerosol = 1 ; + aerosolType = 65534 ; + } +#Wet deposition of fine-mode nitrate aerosol by large-scale precipitation +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 9 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Wet deposition of fine-mode nitrate aerosol by convective precipitation +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 10 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Negative fixer of fine-mode nitrate aerosol +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 193 ; + is_aerosol = 1 ; + aerosolType = 65534 ; + } #Experimental product '~' = { discipline = 192 ; diff --git a/definitions/grib2/tables/local/ecmf/1/4.2.0.20.table b/definitions/grib2/tables/local/ecmf/1/4.2.0.20.table index 70f0a38e7..3a777827c 100644 --- a/definitions/grib2/tables/local/ecmf/1/4.2.0.20.table +++ b/definitions/grib2/tables/local/ecmf/1/4.2.0.20.table @@ -1,2 +1,3 @@ # Code table 4.2 - discipline=0 category=20 for ECMWF 192 192 Source/gain +193 193 Negative Fixer From 7b58678623d1cd99ebf1661e54ddda8eb73c2605 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 19 Feb 2019 09:55:56 +0000 Subject: [PATCH 113/414] ECC-890: CAMS parameters --- .../grib2/localConcepts/ecmf/cfVarName.def | 54 +++++++++ definitions/grib2/localConcepts/ecmf/name.def | 104 +++++++++++++---- .../grib2/localConcepts/ecmf/paramId.def | 94 +++++++++++---- .../grib2/localConcepts/ecmf/shortName.def | 100 ++++++++++++---- .../grib2/localConcepts/ecmf/units.def | 110 +++++++++++++----- 5 files changed, 366 insertions(+), 96 deletions(-) diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index 9b9b6e61d..e28b96918 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -6686,6 +6686,15 @@ aerosolType = 65534 ; is_aerosol = 1 ; } +#Source/gain of coarse-mode nitrate aerosol +'aersrcnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 192 ; + is_aerosol = 1 ; + aerosolType = 65533 ; + } #Dry deposition of fine-mode nitrate aerosol 'aerddpnif' = { localTablesVersion = 1 ; @@ -6695,6 +6704,15 @@ aerosolType = 65534 ; is_aerosol = 1 ; } +#Dry deposition of coarse-mode nitrate aerosol +'aerddpnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + is_aerosol = 1 ; + aerosolType = 65533 ; + } #Sedimentation of fine-mode nitrate aerosol 'aersdmnif' = { localTablesVersion = 1 ; @@ -6704,6 +6722,15 @@ aerosolType = 65534 ; is_aerosol = 1 ; } +#Sedimentation of coarse-mode nitrate aerosol +'aersdmnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 11 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } #Wet deposition of fine-mode nitrate aerosol by large-scale precipitation 'aerwdlnif' = { localTablesVersion = 1 ; @@ -6713,6 +6740,15 @@ aerosolType = 65534 ; is_aerosol = 1 ; } +#Wet deposition of coarse-mode nitrate aerosol by large-scale precipitation +'aerwdlnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 9 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } #Wet deposition of fine-mode nitrate aerosol by convective precipitation 'aerwdcnif' = { localTablesVersion = 1 ; @@ -6722,6 +6758,15 @@ aerosolType = 65534 ; is_aerosol = 1 ; } +#Wet deposition of coarse-mode nitrate aerosol by convective precipitation +'aerwdcnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 10 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } #Negative fixer of fine-mode nitrate aerosol 'aerngtnif' = { localTablesVersion = 1 ; @@ -6731,6 +6776,15 @@ aerosolType = 65534 ; is_aerosol = 1 ; } +#Negative fixer of coarse-mode nitrate aerosol +'aerngtnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 193 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } #Experimental product 'p1.216' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index ea84488e5..dd57dd6fa 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -316,24 +316,24 @@ discipline = 0 ; parameterCategory = 0 ; parameterNumber = 0 ; + lengthOfTimeRange = 24 ; scaledValueOfFirstFixedSurface = 2 ; scaleFactorOfFirstFixedSurface = 0 ; + indicatorOfUnitForTimeRange = 1 ; typeOfFirstFixedSurface = 103 ; typeOfStatisticalProcessing = 2 ; - indicatorOfUnitForTimeRange = 1 ; - lengthOfTimeRange = 24 ; } #Minimum temperature at 2 metres in the last 24 hours 'Minimum temperature at 2 metres in the last 24 hours' = { discipline = 0 ; parameterCategory = 0 ; parameterNumber = 0 ; + typeOfStatisticalProcessing = 3 ; + indicatorOfUnitForTimeRange = 1 ; lengthOfTimeRange = 24 ; scaledValueOfFirstFixedSurface = 2 ; scaleFactorOfFirstFixedSurface = 0 ; typeOfFirstFixedSurface = 103 ; - typeOfStatisticalProcessing = 3 ; - indicatorOfUnitForTimeRange = 1 ; } #Montgomery potential 'Montgomery potential' = { @@ -1129,8 +1129,8 @@ discipline = 0 ; parameterCategory = 1 ; parameterNumber = 52 ; - typeOfStatisticalProcessing = 1 ; typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; unitsFactor = 1000 ; } #Instantaneous eastward turbulent surface stress @@ -6683,8 +6683,17 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 192 ; - is_aerosol = 1 ; aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Source/gain of coarse-mode nitrate aerosol +'Source/gain of coarse-mode nitrate aerosol' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 192 ; + aerosolType = 65533 ; + is_aerosol = 1 ; } #Dry deposition of fine-mode nitrate aerosol 'Dry deposition of fine-mode nitrate aerosol' = { @@ -6692,8 +6701,17 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 6 ; - is_aerosol = 1 ; aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Dry deposition of coarse-mode nitrate aerosol +'Dry deposition of coarse-mode nitrate aerosol' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + aerosolType = 65533 ; + is_aerosol = 1 ; } #Sedimentation of fine-mode nitrate aerosol 'Sedimentation of fine-mode nitrate aerosol' = { @@ -6701,8 +6719,17 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 11 ; - is_aerosol = 1 ; aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Sedimentation of coarse-mode nitrate aerosol +'Sedimentation of coarse-mode nitrate aerosol' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 11 ; + is_aerosol = 1 ; + aerosolType = 65533 ; } #Wet deposition of fine-mode nitrate aerosol by large-scale precipitation 'Wet deposition of fine-mode nitrate aerosol by large-scale precipitation' = { @@ -6710,8 +6737,17 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 9 ; - aerosolType = 65534 ; is_aerosol = 1 ; + aerosolType = 65534 ; + } +#Wet deposition of coarse-mode nitrate aerosol by large-scale precipitation +'Wet deposition of coarse-mode nitrate aerosol by large-scale precipitation' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 9 ; + is_aerosol = 1 ; + aerosolType = 65533 ; } #Wet deposition of fine-mode nitrate aerosol by convective precipitation 'Wet deposition of fine-mode nitrate aerosol by convective precipitation' = { @@ -6719,8 +6755,17 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 10 ; - aerosolType = 65534 ; is_aerosol = 1 ; + aerosolType = 65534 ; + } +#Wet deposition of coarse-mode nitrate aerosol by convective precipitation +'Wet deposition of coarse-mode nitrate aerosol by convective precipitation' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 10 ; + is_aerosol = 1 ; + aerosolType = 65533 ; } #Negative fixer of fine-mode nitrate aerosol 'Negative fixer of fine-mode nitrate aerosol' = { @@ -6728,8 +6773,17 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 193 ; - is_aerosol = 1 ; aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Negative fixer of coarse-mode nitrate aerosol +'Negative fixer of coarse-mode nitrate aerosol' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 193 ; + aerosolType = 65533 ; + is_aerosol = 1 ; } #Experimental product 'Experimental product' = { @@ -13240,11 +13294,11 @@ discipline = 0 ; parameterCategory = 0 ; parameterNumber = 0 ; - lengthOfTimeRange = 3 ; - scaledValueOfFirstFixedSurface = 2 ; scaleFactorOfFirstFixedSurface = 0 ; typeOfStatisticalProcessing = 2 ; typeOfFirstFixedSurface = 103 ; + lengthOfTimeRange = 3 ; + scaledValueOfFirstFixedSurface = 2 ; indicatorOfUnitForTimeRange = 1 ; } #Minimum temperature at 2 metres in the last 3 hours @@ -13252,9 +13306,9 @@ discipline = 0 ; parameterCategory = 0 ; parameterNumber = 0 ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 3 ; typeOfFirstFixedSurface = 103 ; - indicatorOfUnitForTimeRange = 1 ; lengthOfTimeRange = 3 ; scaledValueOfFirstFixedSurface = 2 ; scaleFactorOfFirstFixedSurface = 0 ; @@ -15254,14 +15308,14 @@ discipline = 0 ; parameterCategory = 2 ; parameterNumber = 22 ; - scaledValueOfLowerLimit = 25 ; - productDefinitionTemplateNumber = 9 ; - typeOfFirstFixedSurface = 103 ; - scaleFactorOfLowerLimit = 0 ; - probabilityType = 3 ; typeOfStatisticalProcessing = 2 ; scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfLowerLimit = 25 ; + productDefinitionTemplateNumber = 9 ; + scaleFactorOfLowerLimit = 0 ; + typeOfFirstFixedSurface = 103 ; + probabilityType = 3 ; } #2 metre temperature less than 273.15 K '2 metre temperature less than 273.15 K' = { @@ -15274,44 +15328,44 @@ discipline = 10 ; parameterCategory = 0 ; parameterNumber = 3 ; - typeOfFirstFixedSurface = 101 ; - probabilityType = 3 ; scaleFactorOfLowerLimit = 0 ; productDefinitionTemplateNumber = 5 ; scaledValueOfLowerLimit = 2 ; + typeOfFirstFixedSurface = 101 ; + probabilityType = 3 ; } #Significant wave height of at least 4 m 'Significant wave height of at least 4 m' = { discipline = 10 ; parameterCategory = 0 ; parameterNumber = 3 ; + probabilityType = 3 ; typeOfFirstFixedSurface = 101 ; productDefinitionTemplateNumber = 5 ; scaleFactorOfLowerLimit = 0 ; scaledValueOfLowerLimit = 4 ; - probabilityType = 3 ; } #Significant wave height of at least 6 m 'Significant wave height of at least 6 m' = { discipline = 10 ; parameterCategory = 0 ; parameterNumber = 3 ; + scaleFactorOfLowerLimit = 0 ; + scaledValueOfLowerLimit = 6 ; productDefinitionTemplateNumber = 5 ; typeOfFirstFixedSurface = 101 ; probabilityType = 3 ; - scaleFactorOfLowerLimit = 0 ; - scaledValueOfLowerLimit = 6 ; } #Significant wave height of at least 8 m 'Significant wave height of at least 8 m' = { discipline = 10 ; parameterCategory = 0 ; parameterNumber = 3 ; + scaledValueOfLowerLimit = 8 ; typeOfFirstFixedSurface = 101 ; productDefinitionTemplateNumber = 5 ; scaleFactorOfLowerLimit = 0 ; probabilityType = 3 ; - scaledValueOfLowerLimit = 8 ; } #Mean wave period of at least 8 s 'Mean wave period of at least 8 s' = { diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index 2e64e8b52..2b0af47ca 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -34,12 +34,12 @@ discipline = 0 ; parameterCategory = 1 ; parameterNumber = 52 ; - productDefinitionTemplateNumber = 9 ; typeOfStatisticalProcessing = 1 ; scaledValueOfLowerLimit = 100 ; probabilityType = 3 ; scaleFactorOfLowerLimit = 0 ; typeOfFirstFixedSurface = 1 ; + productDefinitionTemplateNumber = 9 ; } #Total precipitation of at least 100 mm '131085' = { @@ -316,12 +316,12 @@ discipline = 0 ; parameterCategory = 0 ; parameterNumber = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - typeOfStatisticalProcessing = 2 ; scaledValueOfFirstFixedSurface = 2 ; typeOfFirstFixedSurface = 103 ; - indicatorOfUnitForTimeRange = 1 ; lengthOfTimeRange = 24 ; + indicatorOfUnitForTimeRange = 1 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 2 ; } #Minimum temperature at 2 metres in the last 24 hours '52' = { @@ -6686,6 +6686,15 @@ aerosolType = 65534 ; is_aerosol = 1 ; } +#Source/gain of coarse-mode nitrate aerosol +'215190' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 192 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } #Dry deposition of fine-mode nitrate aerosol '215191' = { localTablesVersion = 1 ; @@ -6695,6 +6704,15 @@ aerosolType = 65534 ; is_aerosol = 1 ; } +#Dry deposition of coarse-mode nitrate aerosol +'215192' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } #Sedimentation of fine-mode nitrate aerosol '215193' = { localTablesVersion = 1 ; @@ -6704,6 +6722,15 @@ is_aerosol = 1 ; aerosolType = 65534 ; } +#Sedimentation of coarse-mode nitrate aerosol +'215194' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 11 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } #Wet deposition of fine-mode nitrate aerosol by large-scale precipitation '215195' = { localTablesVersion = 1 ; @@ -6713,6 +6740,15 @@ aerosolType = 65534 ; is_aerosol = 1 ; } +#Wet deposition of coarse-mode nitrate aerosol by large-scale precipitation +'215196' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 9 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } #Wet deposition of fine-mode nitrate aerosol by convective precipitation '215197' = { localTablesVersion = 1 ; @@ -6722,6 +6758,15 @@ aerosolType = 65534 ; is_aerosol = 1 ; } +#Wet deposition of coarse-mode nitrate aerosol by convective precipitation +'215198' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 10 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } #Negative fixer of fine-mode nitrate aerosol '215199' = { localTablesVersion = 1 ; @@ -6731,6 +6776,15 @@ aerosolType = 65534 ; is_aerosol = 1 ; } +#Negative fixer of coarse-mode nitrate aerosol +'215200' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 193 ; + is_aerosol = 1 ; + aerosolType = 65533 ; + } #Experimental product '216001' = { discipline = 192 ; @@ -13240,24 +13294,24 @@ discipline = 0 ; parameterCategory = 0 ; parameterNumber = 0 ; - typeOfFirstFixedSurface = 103 ; - scaleFactorOfFirstFixedSurface = 0 ; - indicatorOfUnitForTimeRange = 1 ; scaledValueOfFirstFixedSurface = 2 ; typeOfStatisticalProcessing = 2 ; lengthOfTimeRange = 3 ; + typeOfFirstFixedSurface = 103 ; + scaleFactorOfFirstFixedSurface = 0 ; + indicatorOfUnitForTimeRange = 1 ; } #Minimum temperature at 2 metres in the last 3 hours '228027' = { discipline = 0 ; parameterCategory = 0 ; parameterNumber = 0 ; - typeOfFirstFixedSurface = 103 ; - scaleFactorOfFirstFixedSurface = 0 ; - indicatorOfUnitForTimeRange = 1 ; scaledValueOfFirstFixedSurface = 2 ; typeOfStatisticalProcessing = 3 ; lengthOfTimeRange = 3 ; + typeOfFirstFixedSurface = 103 ; + indicatorOfUnitForTimeRange = 1 ; + scaleFactorOfFirstFixedSurface = 0 ; } #10 metre wind gust in the last 3 hours '228028' = { @@ -13337,8 +13391,8 @@ discipline = 0 ; parameterCategory = 17 ; parameterNumber = 2 ; - typeOfSecondFixedSurface = 8 ; typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } #Instantaneous cloud-to-ground lightning flash density '228052' = { @@ -13351,11 +13405,11 @@ discipline = 0 ; parameterCategory = 17 ; parameterNumber = 2 ; + indicatorOfUnitForTimeRange = 1 ; typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; typeOfStatisticalProcessing = 0 ; lengthOfTimeRange = 1 ; - indicatorOfUnitForTimeRange = 1 ; } #Averaged cloud-to-ground lightning flash density in the last hour '228053' = { @@ -13368,11 +13422,11 @@ discipline = 0 ; parameterCategory = 17 ; parameterNumber = 4 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 0 ; typeOfSecondFixedSurface = 8 ; lengthOfTimeRange = 3 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfFirstFixedSurface = 1 ; } #Averaged total lightning flash density in the last 3 hours '228057' = { @@ -13385,11 +13439,11 @@ discipline = 0 ; parameterCategory = 17 ; parameterNumber = 4 ; + typeOfStatisticalProcessing = 0 ; lengthOfTimeRange = 6 ; typeOfFirstFixedSurface = 1 ; indicatorOfUnitForTimeRange = 1 ; typeOfSecondFixedSurface = 8 ; - typeOfStatisticalProcessing = 0 ; } #Averaged total lightning flash density in the last 6 hours '228058' = { @@ -13419,11 +13473,11 @@ discipline = 0 ; parameterCategory = 17 ; parameterNumber = 2 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; typeOfStatisticalProcessing = 0 ; lengthOfTimeRange = 6 ; indicatorOfUnitForTimeRange = 1 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; } #Averaged cloud-to-ground lightning flash density in the last 6 hours '228060' = { @@ -15254,14 +15308,14 @@ discipline = 0 ; parameterCategory = 2 ; parameterNumber = 22 ; + probabilityType = 3 ; + scaleFactorOfLowerLimit = 0 ; typeOfFirstFixedSurface = 103 ; scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfFirstFixedSurface = 10 ; productDefinitionTemplateNumber = 9 ; typeOfStatisticalProcessing = 2 ; scaledValueOfLowerLimit = 25 ; - scaleFactorOfLowerLimit = 0 ; - probabilityType = 3 ; } #2 metre temperature less than 273.15 K '131073' = { @@ -15296,11 +15350,11 @@ discipline = 10 ; parameterCategory = 0 ; parameterNumber = 3 ; + scaledValueOfLowerLimit = 6 ; productDefinitionTemplateNumber = 5 ; typeOfFirstFixedSurface = 101 ; scaleFactorOfLowerLimit = 0 ; probabilityType = 3 ; - scaledValueOfLowerLimit = 6 ; } #Significant wave height of at least 8 m '131077' = { diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index 271ac9d12..79144248a 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -34,12 +34,12 @@ discipline = 0 ; parameterCategory = 1 ; parameterNumber = 52 ; - scaleFactorOfLowerLimit = 0 ; - typeOfFirstFixedSurface = 1 ; productDefinitionTemplateNumber = 9 ; typeOfStatisticalProcessing = 1 ; scaledValueOfLowerLimit = 100 ; probabilityType = 3 ; + scaleFactorOfLowerLimit = 0 ; + typeOfFirstFixedSurface = 1 ; } #Total precipitation of at least 100 mm 'tpg100' = { @@ -317,23 +317,23 @@ parameterCategory = 0 ; parameterNumber = 0 ; scaledValueOfFirstFixedSurface = 2 ; + indicatorOfUnitForTimeRange = 1 ; typeOfFirstFixedSurface = 103 ; lengthOfTimeRange = 24 ; scaleFactorOfFirstFixedSurface = 0 ; typeOfStatisticalProcessing = 2 ; - indicatorOfUnitForTimeRange = 1 ; } #Minimum temperature at 2 metres in the last 24 hours 'mn2t24' = { discipline = 0 ; parameterCategory = 0 ; parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; lengthOfTimeRange = 24 ; scaleFactorOfFirstFixedSurface = 0 ; typeOfStatisticalProcessing = 3 ; indicatorOfUnitForTimeRange = 1 ; scaledValueOfFirstFixedSurface = 2 ; - typeOfFirstFixedSurface = 103 ; } #Montgomery potential 'mont' = { @@ -3296,8 +3296,8 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 2 ; - is_aerosol = 1 ; aerosolType = 65533 ; + is_aerosol = 1 ; } #Aerosol type 13 mass mixing ratio 'aermr13diff' = { @@ -6686,6 +6686,15 @@ aerosolType = 65534 ; is_aerosol = 1 ; } +#Source/gain of coarse-mode nitrate aerosol +'aersrcnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 192 ; + is_aerosol = 1 ; + aerosolType = 65533 ; + } #Dry deposition of fine-mode nitrate aerosol 'aerddpnif' = { localTablesVersion = 1 ; @@ -6695,6 +6704,15 @@ aerosolType = 65534 ; is_aerosol = 1 ; } +#Dry deposition of coarse-mode nitrate aerosol +'aerddpnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + is_aerosol = 1 ; + aerosolType = 65533 ; + } #Sedimentation of fine-mode nitrate aerosol 'aersdmnif' = { localTablesVersion = 1 ; @@ -6704,6 +6722,15 @@ aerosolType = 65534 ; is_aerosol = 1 ; } +#Sedimentation of coarse-mode nitrate aerosol +'aersdmnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 11 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } #Wet deposition of fine-mode nitrate aerosol by large-scale precipitation 'aerwdlnif' = { localTablesVersion = 1 ; @@ -6713,6 +6740,15 @@ aerosolType = 65534 ; is_aerosol = 1 ; } +#Wet deposition of coarse-mode nitrate aerosol by large-scale precipitation +'aerwdlnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 9 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } #Wet deposition of fine-mode nitrate aerosol by convective precipitation 'aerwdcnif' = { localTablesVersion = 1 ; @@ -6722,6 +6758,15 @@ aerosolType = 65534 ; is_aerosol = 1 ; } +#Wet deposition of coarse-mode nitrate aerosol by convective precipitation +'aerwdcnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 10 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } #Negative fixer of fine-mode nitrate aerosol 'aerngtnif' = { localTablesVersion = 1 ; @@ -6731,6 +6776,15 @@ aerosolType = 65534 ; is_aerosol = 1 ; } +#Negative fixer of coarse-mode nitrate aerosol +'aerngtnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 193 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } #Experimental product '~' = { discipline = 192 ; @@ -13242,9 +13296,9 @@ parameterNumber = 0 ; typeOfStatisticalProcessing = 2 ; lengthOfTimeRange = 3 ; - indicatorOfUnitForTimeRange = 1 ; typeOfFirstFixedSurface = 103 ; scaleFactorOfFirstFixedSurface = 0 ; + indicatorOfUnitForTimeRange = 1 ; scaledValueOfFirstFixedSurface = 2 ; } #Minimum temperature at 2 metres in the last 3 hours @@ -13252,12 +13306,12 @@ discipline = 0 ; parameterCategory = 0 ; parameterNumber = 0 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfFirstFixedSurface = 103 ; scaleFactorOfFirstFixedSurface = 0 ; + indicatorOfUnitForTimeRange = 1 ; scaledValueOfFirstFixedSurface = 2 ; typeOfStatisticalProcessing = 3 ; lengthOfTimeRange = 3 ; + typeOfFirstFixedSurface = 103 ; } #10 metre wind gust in the last 3 hours '10fg3' = { @@ -13320,11 +13374,11 @@ discipline = 0 ; parameterCategory = 17 ; parameterNumber = 4 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 1 ; indicatorOfUnitForTimeRange = 1 ; typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 1 ; } #Averaged total lightning flash density in the last hour 'litota1' = { @@ -13351,11 +13405,11 @@ discipline = 0 ; parameterCategory = 17 ; parameterNumber = 2 ; + lengthOfTimeRange = 1 ; + typeOfSecondFixedSurface = 8 ; indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; typeOfFirstFixedSurface = 1 ; - lengthOfTimeRange = 1 ; - typeOfSecondFixedSurface = 8 ; } #Averaged cloud-to-ground lightning flash density in the last hour 'licga1' = { @@ -13368,11 +13422,11 @@ discipline = 0 ; parameterCategory = 17 ; parameterNumber = 4 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 3 ; indicatorOfUnitForTimeRange = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + typeOfSecondFixedSurface = 8 ; + lengthOfTimeRange = 3 ; } #Averaged total lightning flash density in the last 3 hours 'litota3' = { @@ -13402,11 +13456,11 @@ discipline = 0 ; parameterCategory = 17 ; parameterNumber = 2 ; + typeOfSecondFixedSurface = 8 ; typeOfStatisticalProcessing = 0 ; lengthOfTimeRange = 3 ; indicatorOfUnitForTimeRange = 1 ; typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; } #Averaged cloud-to-ground lightning flash density in the last 3 hours 'licga3' = { @@ -15254,14 +15308,14 @@ discipline = 0 ; parameterCategory = 2 ; parameterNumber = 22 ; - scaledValueOfFirstFixedSurface = 10 ; - productDefinitionTemplateNumber = 9 ; - scaleFactorOfLowerLimit = 0 ; typeOfStatisticalProcessing = 2 ; scaledValueOfLowerLimit = 25 ; typeOfFirstFixedSurface = 103 ; probabilityType = 3 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 10 ; + productDefinitionTemplateNumber = 9 ; + scaleFactorOfLowerLimit = 0 ; } #2 metre temperature less than 273.15 K '2tl273' = { @@ -15274,22 +15328,22 @@ discipline = 10 ; parameterCategory = 0 ; parameterNumber = 3 ; - scaledValueOfLowerLimit = 2 ; scaleFactorOfLowerLimit = 0 ; typeOfFirstFixedSurface = 101 ; productDefinitionTemplateNumber = 5 ; probabilityType = 3 ; + scaledValueOfLowerLimit = 2 ; } #Significant wave height of at least 4 m 'swhg4' = { discipline = 10 ; parameterCategory = 0 ; parameterNumber = 3 ; - typeOfFirstFixedSurface = 101 ; - productDefinitionTemplateNumber = 5 ; scaleFactorOfLowerLimit = 0 ; probabilityType = 3 ; scaledValueOfLowerLimit = 4 ; + productDefinitionTemplateNumber = 5 ; + typeOfFirstFixedSurface = 101 ; } #Significant wave height of at least 6 m 'swhg6' = { diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index d625c10fa..fe4a7650f 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -316,24 +316,24 @@ discipline = 0 ; parameterCategory = 0 ; parameterNumber = 0 ; + lengthOfTimeRange = 24 ; scaledValueOfFirstFixedSurface = 2 ; scaleFactorOfFirstFixedSurface = 0 ; + indicatorOfUnitForTimeRange = 1 ; typeOfFirstFixedSurface = 103 ; typeOfStatisticalProcessing = 2 ; - indicatorOfUnitForTimeRange = 1 ; - lengthOfTimeRange = 24 ; } #Minimum temperature at 2 metres in the last 24 hours 'K' = { discipline = 0 ; parameterCategory = 0 ; parameterNumber = 0 ; + typeOfStatisticalProcessing = 3 ; + indicatorOfUnitForTimeRange = 1 ; lengthOfTimeRange = 24 ; scaledValueOfFirstFixedSurface = 2 ; scaleFactorOfFirstFixedSurface = 0 ; typeOfFirstFixedSurface = 103 ; - typeOfStatisticalProcessing = 3 ; - indicatorOfUnitForTimeRange = 1 ; } #Montgomery potential 'm**2 s**-2' = { @@ -1129,8 +1129,8 @@ discipline = 0 ; parameterCategory = 1 ; parameterNumber = 52 ; - typeOfStatisticalProcessing = 1 ; typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; unitsFactor = 1000 ; } #Instantaneous eastward turbulent surface stress @@ -3287,8 +3287,8 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 2 ; - aerosolType = 65534 ; is_aerosol = 1 ; + aerosolType = 65534 ; } #Nitrate coarse mode aerosol mass mixing ratio 'kg kg**-1' = { @@ -3296,8 +3296,8 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 2 ; - is_aerosol = 1 ; aerosolType = 65533 ; + is_aerosol = 1 ; } #Aerosol type 13 mass mixing ratio 'kg kg**-1' = { @@ -6683,8 +6683,17 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 192 ; - is_aerosol = 1 ; aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Source/gain of coarse-mode nitrate aerosol +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 192 ; + aerosolType = 65533 ; + is_aerosol = 1 ; } #Dry deposition of fine-mode nitrate aerosol 'kg m**-2 s**-1' = { @@ -6692,8 +6701,17 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 6 ; - is_aerosol = 1 ; aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Dry deposition of coarse-mode nitrate aerosol +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + aerosolType = 65533 ; + is_aerosol = 1 ; } #Sedimentation of fine-mode nitrate aerosol 'kg m**-2 s**-1' = { @@ -6701,8 +6719,17 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 11 ; - is_aerosol = 1 ; aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Sedimentation of coarse-mode nitrate aerosol +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 11 ; + is_aerosol = 1 ; + aerosolType = 65533 ; } #Wet deposition of fine-mode nitrate aerosol by large-scale precipitation 'kg m**-2 s**-1' = { @@ -6710,8 +6737,17 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 9 ; - aerosolType = 65534 ; is_aerosol = 1 ; + aerosolType = 65534 ; + } +#Wet deposition of coarse-mode nitrate aerosol by large-scale precipitation +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 9 ; + is_aerosol = 1 ; + aerosolType = 65533 ; } #Wet deposition of fine-mode nitrate aerosol by convective precipitation 'kg m**-2 s**-1' = { @@ -6719,8 +6755,17 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 10 ; - aerosolType = 65534 ; is_aerosol = 1 ; + aerosolType = 65534 ; + } +#Wet deposition of coarse-mode nitrate aerosol by convective precipitation +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 10 ; + is_aerosol = 1 ; + aerosolType = 65533 ; } #Negative fixer of fine-mode nitrate aerosol 'kg m**-2 s**-1' = { @@ -6728,8 +6773,17 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 193 ; - is_aerosol = 1 ; aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Negative fixer of coarse-mode nitrate aerosol +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 193 ; + aerosolType = 65533 ; + is_aerosol = 1 ; } #Experimental product '~' = { @@ -13240,21 +13294,21 @@ discipline = 0 ; parameterCategory = 0 ; parameterNumber = 0 ; - lengthOfTimeRange = 3 ; - scaledValueOfFirstFixedSurface = 2 ; scaleFactorOfFirstFixedSurface = 0 ; - indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 2 ; typeOfFirstFixedSurface = 103 ; + lengthOfTimeRange = 3 ; + scaledValueOfFirstFixedSurface = 2 ; + indicatorOfUnitForTimeRange = 1 ; } #Minimum temperature at 2 metres in the last 3 hours 'K' = { discipline = 0 ; parameterCategory = 0 ; parameterNumber = 0 ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 3 ; typeOfFirstFixedSurface = 103 ; - indicatorOfUnitForTimeRange = 1 ; lengthOfTimeRange = 3 ; scaledValueOfFirstFixedSurface = 2 ; scaleFactorOfFirstFixedSurface = 0 ; @@ -15254,14 +15308,14 @@ discipline = 0 ; parameterCategory = 2 ; parameterNumber = 22 ; - scaledValueOfLowerLimit = 25 ; - productDefinitionTemplateNumber = 9 ; - typeOfFirstFixedSurface = 103 ; - scaleFactorOfLowerLimit = 0 ; - probabilityType = 3 ; typeOfStatisticalProcessing = 2 ; scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfLowerLimit = 25 ; + productDefinitionTemplateNumber = 9 ; + scaleFactorOfLowerLimit = 0 ; + typeOfFirstFixedSurface = 103 ; + probabilityType = 3 ; } #2 metre temperature less than 273.15 K '%' = { @@ -15274,44 +15328,44 @@ discipline = 10 ; parameterCategory = 0 ; parameterNumber = 3 ; - typeOfFirstFixedSurface = 101 ; - probabilityType = 3 ; scaleFactorOfLowerLimit = 0 ; productDefinitionTemplateNumber = 5 ; scaledValueOfLowerLimit = 2 ; + typeOfFirstFixedSurface = 101 ; + probabilityType = 3 ; } #Significant wave height of at least 4 m '%' = { discipline = 10 ; parameterCategory = 0 ; parameterNumber = 3 ; + probabilityType = 3 ; typeOfFirstFixedSurface = 101 ; productDefinitionTemplateNumber = 5 ; scaleFactorOfLowerLimit = 0 ; scaledValueOfLowerLimit = 4 ; - probabilityType = 3 ; } #Significant wave height of at least 6 m '%' = { discipline = 10 ; parameterCategory = 0 ; parameterNumber = 3 ; + scaleFactorOfLowerLimit = 0 ; + scaledValueOfLowerLimit = 6 ; productDefinitionTemplateNumber = 5 ; typeOfFirstFixedSurface = 101 ; probabilityType = 3 ; - scaleFactorOfLowerLimit = 0 ; - scaledValueOfLowerLimit = 6 ; } #Significant wave height of at least 8 m '%' = { discipline = 10 ; parameterCategory = 0 ; parameterNumber = 3 ; + scaledValueOfLowerLimit = 8 ; typeOfFirstFixedSurface = 101 ; productDefinitionTemplateNumber = 5 ; scaleFactorOfLowerLimit = 0 ; probabilityType = 3 ; - scaledValueOfLowerLimit = 8 ; } #Mean wave period of at least 8 s '%' = { From e109623bfa9d6f89a352ee2edf9a9b219a3993f0 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 19 Feb 2019 12:05:42 +0000 Subject: [PATCH 114/414] ECC-890: CAMS parameters --- definitions/grib2/cfVarName.def | 42 +++++++++++++++++++ .../grib2/localConcepts/ecmf/cfVarName.def | 18 ++++++++ definitions/grib2/localConcepts/ecmf/name.def | 20 ++++++++- .../grib2/localConcepts/ecmf/paramId.def | 20 ++++++++- .../grib2/localConcepts/ecmf/shortName.def | 18 ++++++++ .../grib2/localConcepts/ecmf/units.def | 20 ++++++++- definitions/grib2/name.def | 42 +++++++++++++++++++ definitions/grib2/paramId.def | 42 +++++++++++++++++++ definitions/grib2/shortName.def | 42 +++++++++++++++++++ definitions/grib2/units.def | 42 +++++++++++++++++++ 10 files changed, 303 insertions(+), 3 deletions(-) diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index 72491818b..adae77aee 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -313,6 +313,48 @@ aerosolType = 62003 ; is_aerosol = 1 ; } +#Dry deposition of ammonium aerosol +'aerddpam' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Sedimentation of ammonium aerosol +'aersdmam' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 11 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Wet deposition of ammonium aerosol by large-scale precipitation +'aerwdlam' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 9 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Wet deposition of ammonium aerosol by convective precipitation +'aerwdcam' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 10 ; + is_aerosol = 1 ; + aerosolType = 62003 ; + } +#Vertically integrated mass of ammonium aerosol +'aermssam' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + is_aerosol = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfFirstFixedSurface = 1 ; + aerosolType = 62003 ; + } #10 metre wind gust in the last 3 hours 'fg310' = { discipline = 0 ; diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index e28b96918..435a21cc6 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -6785,6 +6785,24 @@ aerosolType = 65533 ; is_aerosol = 1 ; } +#Source/gain of ammonium aerosol +'aersrcam' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 192 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Negative fixer of ammonium aerosol +'aerngtam' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 193 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } #Experimental product 'p1.216' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index dd57dd6fa..f7de85397 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -6782,8 +6782,26 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 193 ; - aerosolType = 65533 ; is_aerosol = 1 ; + aerosolType = 65533 ; + } +#Source/gain of ammonium aerosol +'Source/gain of ammonium aerosol' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 192 ; + is_aerosol = 1 ; + aerosolType = 62003 ; + } +#Negative fixer of ammonium aerosol +'Negative fixer of ammonium aerosol' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 193 ; + is_aerosol = 1 ; + aerosolType = 62003 ; } #Experimental product 'Experimental product' = { diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index 2b0af47ca..332a4cc46 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -6782,8 +6782,26 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 193 ; - is_aerosol = 1 ; aerosolType = 65533 ; + is_aerosol = 1 ; + } +#Source/gain of ammonium aerosol +'215205' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 192 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Negative fixer of ammonium aerosol +'215210' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 193 ; + aerosolType = 62003 ; + is_aerosol = 1 ; } #Experimental product '216001' = { diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index 79144248a..71c0f2bdb 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -6785,6 +6785,24 @@ aerosolType = 65533 ; is_aerosol = 1 ; } +#Source/gain of ammonium aerosol +'aersrcam' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 192 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Negative fixer of ammonium aerosol +'aerngtam' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 193 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } #Experimental product '~' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index fe4a7650f..756f34c22 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -6782,8 +6782,26 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 193 ; - aerosolType = 65533 ; is_aerosol = 1 ; + aerosolType = 65533 ; + } +#Source/gain of ammonium aerosol +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 192 ; + is_aerosol = 1 ; + aerosolType = 62003 ; + } +#Negative fixer of ammonium aerosol +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 193 ; + is_aerosol = 1 ; + aerosolType = 62003 ; } #Experimental product '~' = { diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index 3034666da..19021a08a 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -310,9 +310,51 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 2 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Dry deposition of ammonium aerosol +'Dry deposition of ammonium aerosol' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Sedimentation of ammonium aerosol +'Sedimentation of ammonium aerosol' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 11 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Wet deposition of ammonium aerosol by large-scale precipitation +'Wet deposition of ammonium aerosol by large-scale precipitation' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 9 ; is_aerosol = 1 ; aerosolType = 62003 ; } +#Wet deposition of ammonium aerosol by convective precipitation +'Wet deposition of ammonium aerosol by convective precipitation' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 10 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Vertically integrated mass of ammonium aerosol +'Vertically integrated mass of ammonium aerosol' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #10 metre wind gust in the last 3 hours '10 metre wind gust in the last 3 hours' = { discipline = 0 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 2d2019bce..59582f073 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -313,6 +313,48 @@ aerosolType = 62003 ; is_aerosol = 1 ; } +#Dry deposition of ammonium aerosol +'215206' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Sedimentation of ammonium aerosol +'215207' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 11 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Wet deposition of ammonium aerosol by large-scale precipitation +'215208' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 9 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Wet deposition of ammonium aerosol by convective precipitation +'215209' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 10 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Vertically integrated mass of ammonium aerosol +'215211' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfFirstFixedSurface = 1 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } #10 metre wind gust in the last 3 hours '228028' = { discipline = 0 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 038a51aa4..7388b89c3 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -313,6 +313,48 @@ aerosolType = 62003 ; is_aerosol = 1 ; } +#Dry deposition of ammonium aerosol +'aerddpam' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Sedimentation of ammonium aerosol +'aersdmam' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 11 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Wet deposition of ammonium aerosol by large-scale precipitation +'aerwdlam' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 9 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Wet deposition of ammonium aerosol by convective precipitation +'aerwdcam' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 10 ; + is_aerosol = 1 ; + aerosolType = 62003 ; + } +#Vertically integrated mass of ammonium aerosol +'aermssam' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + is_aerosol = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfFirstFixedSurface = 1 ; + aerosolType = 62003 ; + } #10 metre wind gust in the last 3 hours '10fg3' = { discipline = 0 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 9125f4c3a..158c0d52a 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -310,9 +310,51 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 2 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Dry deposition of ammonium aerosol +'kg m**-2 s**-1' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Sedimentation of ammonium aerosol +'kg m**-2 s**-1' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 11 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Wet deposition of ammonium aerosol by large-scale precipitation +'kg m**-2 s**-1' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 9 ; is_aerosol = 1 ; aerosolType = 62003 ; } +#Wet deposition of ammonium aerosol by convective precipitation +'kg m**-2 s**-1' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 10 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Vertically integrated mass of ammonium aerosol +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #10 metre wind gust in the last 3 hours 'm s**-1' = { discipline = 0 ; From afb5a2ee62372c5ed98e79bc2dac30f50cc73972 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 19 Feb 2019 12:32:33 +0000 Subject: [PATCH 115/414] ECC-890: CAMS parameters --- .../grib2/localConcepts/ecmf/cfVarName.def | 22 +++++++++++++++++++ definitions/grib2/localConcepts/ecmf/name.def | 22 +++++++++++++++++++ .../grib2/localConcepts/ecmf/paramId.def | 22 +++++++++++++++++++ .../grib2/localConcepts/ecmf/shortName.def | 22 +++++++++++++++++++ .../grib2/localConcepts/ecmf/units.def | 22 +++++++++++++++++++ 5 files changed, 110 insertions(+) diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index 435a21cc6..129560538 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -6785,6 +6785,28 @@ aerosolType = 65533 ; is_aerosol = 1 ; } +#Vertically integrated mass of fine-mode nitrate aerosol +'aermssnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Vertically integrated mass of coarse-mode nitrate aerosol +'aermssnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + typeOfSecondFixedSurface = 8 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + typeOfFirstFixedSurface = 1 ; + } #Source/gain of ammonium aerosol 'aersrcam' = { localTablesVersion = 1 ; diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index f7de85397..39c041fc7 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -6785,6 +6785,28 @@ is_aerosol = 1 ; aerosolType = 65533 ; } +#Vertically integrated mass of fine-mode nitrate aerosol +'Vertically integrated mass of fine-mode nitrate aerosol' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + is_aerosol = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfFirstFixedSurface = 1 ; + aerosolType = 65534 ; + } +#Vertically integrated mass of coarse-mode nitrate aerosol +'Vertically integrated mass of coarse-mode nitrate aerosol' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + is_aerosol = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfFirstFixedSurface = 1 ; + aerosolType = 65533 ; + } #Source/gain of ammonium aerosol 'Source/gain of ammonium aerosol' = { localTablesVersion = 1 ; diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index 332a4cc46..094c3db2b 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -6785,6 +6785,28 @@ aerosolType = 65533 ; is_aerosol = 1 ; } +#Vertically integrated mass of fine-mode nitrate aerosol +'215201' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Vertically integrated mass of coarse-mode nitrate aerosol +'215202' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + typeOfSecondFixedSurface = 8 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + typeOfFirstFixedSurface = 1 ; + } #Source/gain of ammonium aerosol '215205' = { localTablesVersion = 1 ; diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index 71c0f2bdb..937e18caf 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -6785,6 +6785,28 @@ aerosolType = 65533 ; is_aerosol = 1 ; } +#Vertically integrated mass of fine-mode nitrate aerosol +'aermssnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Vertically integrated mass of coarse-mode nitrate aerosol +'aermssnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + typeOfSecondFixedSurface = 8 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + typeOfFirstFixedSurface = 1 ; + } #Source/gain of ammonium aerosol 'aersrcam' = { localTablesVersion = 1 ; diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index 756f34c22..18c2c08a0 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -6785,6 +6785,28 @@ is_aerosol = 1 ; aerosolType = 65533 ; } +#Vertically integrated mass of fine-mode nitrate aerosol +'kg m**-2' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + is_aerosol = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfFirstFixedSurface = 1 ; + aerosolType = 65534 ; + } +#Vertically integrated mass of coarse-mode nitrate aerosol +'kg m**-2' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + is_aerosol = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfFirstFixedSurface = 1 ; + aerosolType = 65533 ; + } #Source/gain of ammonium aerosol 'kg m**-2 s**-1' = { localTablesVersion = 1 ; From be0672322edf86ab7476969be11efd88701f3a2d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 19 Feb 2019 15:31:42 +0000 Subject: [PATCH 116/414] Put back lost code --- src/grib_context.c | 47 ++++++++++++++++++++++++++++++++++++++++++++++ tools/grib_tools.c | 26 ++++++++++++++++++++++++- 2 files changed, 72 insertions(+), 1 deletion(-) diff --git a/src/grib_context.c b/src/grib_context.c index d894251d7..cb91bc8c6 100644 --- a/src/grib_context.c +++ b/src/grib_context.c @@ -482,6 +482,53 @@ grib_context* grib_context_get_default() return &default_grib_context; } +#if 0 /* function removed */ +grib_context* grib_context_new(grib_context* parent) +{ + grib_context* c; +#if GRIB_PTHREADS + pthread_mutexattr_t attr; +#endif + + if (!parent) parent=grib_context_get_default(); + + GRIB_MUTEX_INIT_ONCE(&once,&init); + GRIB_MUTEX_LOCK(&(parent->mutex)); + + c = (grib_context*)grib_context_malloc_clear_persistent(&default_grib_context,sizeof(grib_context)); + + c->inited = default_grib_context.inited; + c->debug = default_grib_context.debug; + + c->real_mode = default_grib_context.real_mode; + + c->free_mem = default_grib_context.free_mem; + c->alloc_mem = default_grib_context.alloc_mem; + + c->free_persistent_mem = default_grib_context.free_persistent_mem; + c->alloc_persistent_mem= default_grib_context.alloc_persistent_mem; + + c->read = default_grib_context.read; + c->write = default_grib_context.write; + c->tell = default_grib_context.tell; + + c->output_log = default_grib_context.output_log; + c->print = default_grib_context.print ; + c->user_data = default_grib_context.user_data; + c->def_files = default_grib_context.def_files; + c->lists = default_grib_context.lists; + +#if GRIB_PTHREADS + pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE); + pthread_mutex_init(&mutex_c,&attr); + pthread_mutexattr_destroy(&attr); +#endif + + GRIB_MUTEX_UNLOCK(&(parent->mutex)); + return c; +} +#endif /* function removed */ + /* GRIB-235: Resolve path to expand symbolic links etc */ static char* resolve_path(grib_context* c, char* path) { diff --git a/tools/grib_tools.c b/tools/grib_tools.c index 2143a1f9f..08dd97c2e 100644 --- a/tools/grib_tools.c +++ b/tools/grib_tools.c @@ -1138,8 +1138,32 @@ void grib_tools_write_message(grib_runtime_options* options, grib_handle* h) } options->outfile->file = NULL; -} +#if 0 + if (!options->outfile->file) { + options->outfile->file = fopen(options->outfile->name,"w"); + if(!options->outfile->file) { + perror(options->outfile->name); + exit(1); + } + } + GRIB_CHECK_NOLINE(grib_get_message(h,&buffer,&size),0); + if (options->gts && h->gts_header) + fwrite(h->gts_header,1,h->gts_header_len,options->outfile->file); + + if(fwrite(buffer,1,size,options->outfile->file) != size) + { + perror(options->outfile->name); + exit(1); + } + + if (options->gts && h->gts_header) { + char gts_trailer[4]={'\x0D','\x0D','\x0A','\x03'}; + fwrite(gts_trailer,1,4,options->outfile->file); + } +#endif + +} int exit_if_input_is_directory(const char* tool_name, const char* filename) { struct stat s; From 1663a69b8300d2271b30ac5b370fa5842331b443 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 19 Feb 2019 15:32:28 +0000 Subject: [PATCH 117/414] Comments --- .../grib2/tables/local/ecmf/1/4.2.0.20.table | 4 +-- .../template.4.parameter_aerosol_optical.def | 27 +++++++++---------- 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/definitions/grib2/tables/local/ecmf/1/4.2.0.20.table b/definitions/grib2/tables/local/ecmf/1/4.2.0.20.table index 3a777827c..30b94d7a7 100644 --- a/definitions/grib2/tables/local/ecmf/1/4.2.0.20.table +++ b/definitions/grib2/tables/local/ecmf/1/4.2.0.20.table @@ -1,3 +1,3 @@ # Code table 4.2 - discipline=0 category=20 for ECMWF -192 192 Source/gain -193 193 Negative Fixer +192 192 Source/gain (kg m-2 s-1) +193 193 Negative Fixer (kg m-2 s-1) diff --git a/definitions/grib2/template.4.parameter_aerosol_optical.def b/definitions/grib2/template.4.parameter_aerosol_optical.def index 69d0d3747..0699bc7a7 100644 --- a/definitions/grib2/template.4.parameter_aerosol_optical.def +++ b/definitions/grib2/template.4.parameter_aerosol_optical.def @@ -7,20 +7,21 @@ # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. # -# Parameter category +# Parameter category codetable[1] parameterCategory ('4.1.[discipline:l].table',masterDir,localDir) : dump; -# Parameter number +# Parameter number codetable[1] parameterNumber ('4.2.[discipline:l].[parameterCategory:l].table',masterDir,localDir) : dump; meta parameterUnits codetable_units(parameterNumber) : dump; meta parameterName codetable_title(parameterNumber) : dump; -# Atmospheric chemical or physical constitutent type +# Aerosol type codetable[2] aerosolType ('4.233.table',masterDir,localDir) : dump; codetable[1] typeOfSizeInterval ('4.91.table',masterDir,localDir) : dump; alias typeOfIntervalForFirstAndSecondSize=typeOfSizeInterval; +# Size in metres signed[1] scaleFactorOfFirstSize : dump; signed[4] scaledValueOfFirstSize :dump; signed[1] scaleFactorOfSecondSize = missing() : can_be_missing,dump; @@ -29,39 +30,35 @@ signed[4] scaledValueOfSecondSize = missing() : can_be_missing,dump; codetable[1] typeOfWavelengthInterval ('4.91.table',masterDir,localDir) : dump; alias typeOfIntervalForFirstAndSecondWavelength=typeOfWavelengthInterval; -# wavelengths in metres +# Wavelengths in metres signed[1] scaleFactorOfFirstWavelength : dump; signed[4] scaledValueOfFirstWavelength : dump; signed[1] scaleFactorOfSecondWavelength = missing(): can_be_missing,dump; signed[4] scaledValueOfSecondWavelength = missing(): can_be_missing,dump; -# Type of generating process +# Type of generating process codetable[1] typeOfGeneratingProcess ('4.3.table',masterDir,localDir) : dump; -# Background generating process identifier -# (defined by originating centre) +# Background generating process identifier unsigned[1] backgroundProcess = 255 : edition_specific; alias backgroundGeneratingProcessIdentifier=backgroundProcess; - -# Analysis or forecast generating processes identifier -# (defined by originating centre) +# Analysis or forecast generating processes identifier unsigned[1] generatingProcessIdentifier : dump; -# Hours of observational data cut-off after reference time +# Hours of observational data cut-off after reference time unsigned[2] hoursAfterDataCutoff = missing() : edition_specific,can_be_missing; alias hoursAfterReferenceTimeOfDataCutoff=hoursAfterDataCutoff; -# Minutes of observational data cut-off after reference time +# Minutes of observational data cut-off after reference time unsigned[1] minutesAfterDataCutoff = missing() : edition_specific,can_be_missing; alias minutesAfterReferenceTimeOfDataCutoff=minutesAfterDataCutoff; -# Indicator of unit of time range +# Indicator of unit of time range codetable[1] indicatorOfUnitOfTimeRange ('4.4.table',masterDir,localDir) : dump; alias defaultStepUnits = one; # 1 means Hour. See code table 4.4 template_nofail default_step_units "grib2/localConcepts/[centre:s]/default_step_units.def"; codetable[1] stepUnits 'stepUnits.table' = defaultStepUnits : transient,dump,no_copy; -# Forecast time in units defined by octet 18 (GRIB-29: supports negative forecast time) +# Forecast time in units defined by octet 18 (GRIB-29: supports negative forecast time) signed[4] forecastTime : dump; - From 53daa553e1f6af2a50eb45430f470194411460d8 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 19 Feb 2019 15:46:12 +0000 Subject: [PATCH 118/414] ECC-890: CAMS parameters --- definitions/grib2/cfVarName.def | 24 ++++++++++++++++++++++++ definitions/grib2/name.def | 26 +++++++++++++++++++++++++- definitions/grib2/paramId.def | 24 ++++++++++++++++++++++++ definitions/grib2/shortName.def | 24 ++++++++++++++++++++++++ definitions/grib2/units.def | 26 +++++++++++++++++++++++++- 5 files changed, 122 insertions(+), 2 deletions(-) diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index adae77aee..0b8ce5d07 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -313,6 +313,30 @@ aerosolType = 62003 ; is_aerosol = 1 ; } +#Nitrate aerosol optical depth at 550 nm +'niaod550' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + is_aerosol_optical = 1 ; + typeOfWavelengthInterval = 11 ; + scaleFactorOfFirstWavelength = 8 ; + scaledValueOfFirstWavelength = 55 ; + typeOfSizeInterval = 255 ; + aerosolType = 62004 ; + } +#Ammonium aerosol optical depth at 550 nm +'amaod550' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + typeOfWavelengthInterval = 11 ; + scaleFactorOfFirstWavelength = 8 ; + scaledValueOfFirstWavelength = 55 ; + typeOfSizeInterval = 255 ; + aerosolType = 62003 ; + is_aerosol_optical = 1 ; + } #Dry deposition of ammonium aerosol 'aerddpam' = { discipline = 0 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index 19021a08a..b4f8cfb91 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -310,8 +310,32 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 2 ; - aerosolType = 62003 ; is_aerosol = 1 ; + aerosolType = 62003 ; + } +#Nitrate aerosol optical depth at 550 nm +'Nitrate aerosol optical depth at 550 nm' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + typeOfWavelengthInterval = 11 ; + aerosolType = 62004 ; + typeOfSizeInterval = 255 ; + scaleFactorOfFirstWavelength = 8 ; + is_aerosol_optical = 1 ; + scaledValueOfFirstWavelength = 55 ; + } +#Ammonium aerosol optical depth at 550 nm +'Ammonium aerosol optical depth at 550 nm' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + scaledValueOfFirstWavelength = 55 ; + typeOfWavelengthInterval = 11 ; + aerosolType = 62003 ; + scaleFactorOfFirstWavelength = 8 ; + is_aerosol_optical = 1 ; + typeOfSizeInterval = 255 ; } #Dry deposition of ammonium aerosol 'Dry deposition of ammonium aerosol' = { diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 59582f073..17221481e 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -313,6 +313,30 @@ aerosolType = 62003 ; is_aerosol = 1 ; } +#Nitrate aerosol optical depth at 550 nm +'210250' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + typeOfSizeInterval = 255 ; + aerosolType = 62004 ; + is_aerosol_optical = 1 ; + typeOfWavelengthInterval = 11 ; + scaleFactorOfFirstWavelength = 8 ; + scaledValueOfFirstWavelength = 55 ; + } +#Ammonium aerosol optical depth at 550 nm +'210251' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + typeOfWavelengthInterval = 11 ; + scaleFactorOfFirstWavelength = 8 ; + scaledValueOfFirstWavelength = 55 ; + typeOfSizeInterval = 255 ; + aerosolType = 62003 ; + is_aerosol_optical = 1 ; + } #Dry deposition of ammonium aerosol '215206' = { discipline = 0 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 7388b89c3..a12f3e5a3 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -313,6 +313,30 @@ aerosolType = 62003 ; is_aerosol = 1 ; } +#Nitrate aerosol optical depth at 550 nm +'niaod550' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + is_aerosol_optical = 1 ; + typeOfWavelengthInterval = 11 ; + scaleFactorOfFirstWavelength = 8 ; + scaledValueOfFirstWavelength = 55 ; + typeOfSizeInterval = 255 ; + aerosolType = 62004 ; + } +#Ammonium aerosol optical depth at 550 nm +'amaod550' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + typeOfWavelengthInterval = 11 ; + scaleFactorOfFirstWavelength = 8 ; + scaledValueOfFirstWavelength = 55 ; + typeOfSizeInterval = 255 ; + aerosolType = 62003 ; + is_aerosol_optical = 1 ; + } #Dry deposition of ammonium aerosol 'aerddpam' = { discipline = 0 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 158c0d52a..7e033df6a 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -310,8 +310,32 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 2 ; - aerosolType = 62003 ; is_aerosol = 1 ; + aerosolType = 62003 ; + } +#Nitrate aerosol optical depth at 550 nm +'dimensionless' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + typeOfWavelengthInterval = 11 ; + aerosolType = 62004 ; + typeOfSizeInterval = 255 ; + scaleFactorOfFirstWavelength = 8 ; + is_aerosol_optical = 1 ; + scaledValueOfFirstWavelength = 55 ; + } +#Ammonium aerosol optical depth at 550 nm +'dimensionless' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + scaledValueOfFirstWavelength = 55 ; + typeOfWavelengthInterval = 11 ; + aerosolType = 62003 ; + scaleFactorOfFirstWavelength = 8 ; + is_aerosol_optical = 1 ; + typeOfSizeInterval = 255 ; } #Dry deposition of ammonium aerosol 'kg m**-2 s**-1' = { From 9e6cc54856747aaf5e455312e39ee852fc55375d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 19 Feb 2019 16:19:49 +0000 Subject: [PATCH 119/414] ECC-890: CAMS parameters (final) --- .../grib2/localConcepts/ecmf/cfVarName.def | 28 ++++++++++++++++++- definitions/grib2/localConcepts/ecmf/name.def | 26 +++++++++++++++++ .../grib2/localConcepts/ecmf/paramId.def | 28 ++++++++++++++++++- .../grib2/localConcepts/ecmf/shortName.def | 28 ++++++++++++++++++- .../grib2/localConcepts/ecmf/units.def | 26 +++++++++++++++++ 5 files changed, 133 insertions(+), 3 deletions(-) diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index 129560538..691c2318b 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -6802,10 +6802,36 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; aerosolType = 65533 ; is_aerosol = 1 ; - typeOfFirstFixedSurface = 1 ; + } +#Fine-mode nitrate aerosol optical depth at 550 nm +'aerodnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + is_aerosol_optical = 1 ; + typeOfWavelengthInterval = 11 ; + scaleFactorOfFirstWavelength = 8 ; + scaledValueOfFirstWavelength = 55 ; + typeOfSizeInterval = 255 ; + aerosolType = 65534 ; + } +#Coarse-mode nitrate aerosol optical depth at 550 nm +'aerodnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + typeOfSizeInterval = 255 ; + aerosolType = 65533 ; + is_aerosol_optical = 1 ; + typeOfWavelengthInterval = 11 ; + scaleFactorOfFirstWavelength = 8 ; + scaledValueOfFirstWavelength = 55 ; } #Source/gain of ammonium aerosol 'aersrcam' = { diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index 39c041fc7..64e0be7fe 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -6802,10 +6802,36 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 1 ; + aerosolType = 65533 ; is_aerosol = 1 ; typeOfSecondFixedSurface = 8 ; typeOfFirstFixedSurface = 1 ; + } +#Fine-mode nitrate aerosol optical depth at 550 nm +'Fine-mode nitrate aerosol optical depth at 550 nm' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + scaleFactorOfFirstWavelength = 8 ; + is_aerosol_optical = 1 ; + typeOfSizeInterval = 255 ; + scaledValueOfFirstWavelength = 55 ; + typeOfWavelengthInterval = 11 ; + aerosolType = 65534 ; + } +#Coarse-mode nitrate aerosol optical depth at 550 nm +'Coarse-mode nitrate aerosol optical depth at 550 nm' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + typeOfWavelengthInterval = 11 ; aerosolType = 65533 ; + scaleFactorOfFirstWavelength = 8 ; + is_aerosol_optical = 1 ; + typeOfSizeInterval = 255 ; + scaledValueOfFirstWavelength = 55 ; } #Source/gain of ammonium aerosol 'Source/gain of ammonium aerosol' = { diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index 094c3db2b..fdcd04d9d 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -6802,10 +6802,36 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; aerosolType = 65533 ; is_aerosol = 1 ; - typeOfFirstFixedSurface = 1 ; + } +#Fine-mode nitrate aerosol optical depth at 550 nm +'215203' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + typeOfSizeInterval = 255 ; + aerosolType = 65534 ; + is_aerosol_optical = 1 ; + typeOfWavelengthInterval = 11 ; + scaleFactorOfFirstWavelength = 8 ; + scaledValueOfFirstWavelength = 55 ; + } +#Coarse-mode nitrate aerosol optical depth at 550 nm +'215204' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + aerosolType = 65533 ; + is_aerosol_optical = 1 ; + typeOfWavelengthInterval = 11 ; + scaleFactorOfFirstWavelength = 8 ; + scaledValueOfFirstWavelength = 55 ; + typeOfSizeInterval = 255 ; } #Source/gain of ammonium aerosol '215205' = { diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index 937e18caf..bfbd0d0af 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -6802,10 +6802,36 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; aerosolType = 65533 ; is_aerosol = 1 ; - typeOfFirstFixedSurface = 1 ; + } +#Fine-mode nitrate aerosol optical depth at 550 nm +'aerodnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + is_aerosol_optical = 1 ; + typeOfWavelengthInterval = 11 ; + scaleFactorOfFirstWavelength = 8 ; + scaledValueOfFirstWavelength = 55 ; + typeOfSizeInterval = 255 ; + aerosolType = 65534 ; + } +#Coarse-mode nitrate aerosol optical depth at 550 nm +'aerodnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + typeOfSizeInterval = 255 ; + aerosolType = 65533 ; + is_aerosol_optical = 1 ; + typeOfWavelengthInterval = 11 ; + scaleFactorOfFirstWavelength = 8 ; + scaledValueOfFirstWavelength = 55 ; } #Source/gain of ammonium aerosol 'aersrcam' = { diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index 18c2c08a0..1ec32c746 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -6802,10 +6802,36 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 1 ; + aerosolType = 65533 ; is_aerosol = 1 ; typeOfSecondFixedSurface = 8 ; typeOfFirstFixedSurface = 1 ; + } +#Fine-mode nitrate aerosol optical depth at 550 nm +'dimensionless' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + scaleFactorOfFirstWavelength = 8 ; + is_aerosol_optical = 1 ; + typeOfSizeInterval = 255 ; + scaledValueOfFirstWavelength = 55 ; + typeOfWavelengthInterval = 11 ; + aerosolType = 65534 ; + } +#Coarse-mode nitrate aerosol optical depth at 550 nm +'dimensionless' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + typeOfWavelengthInterval = 11 ; aerosolType = 65533 ; + scaleFactorOfFirstWavelength = 8 ; + is_aerosol_optical = 1 ; + typeOfSizeInterval = 255 ; + scaledValueOfFirstWavelength = 55 ; } #Source/gain of ammonium aerosol 'kg m**-2 s**-1' = { From c4e4aba85d86f494d396a0d03ec18be5a6a53a78 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 20 Feb 2019 12:55:17 +0000 Subject: [PATCH 120/414] ECC-600: Implement grib_find_nearest for rotated lat/lon grids --- src/grib_api_prototypes.h | 2 +- src/grib_iterator_class_latlon.c | 4 +- src/grib_nearest_class_regular.c | 72 ++++++++++++++++++++++++++++++-- tests/CMakeLists.txt | 1 + tests/grib_ecc-600.sh | 32 ++++++++++++++ 5 files changed, 105 insertions(+), 6 deletions(-) create mode 100755 tests/grib_ecc-600.sh diff --git a/src/grib_api_prototypes.h b/src/grib_api_prototypes.h index 9617606f2..59762588f 100644 --- a/src/grib_api_prototypes.h +++ b/src/grib_api_prototypes.h @@ -1423,7 +1423,7 @@ grib_iterator *grib_iterator_factory(grib_handle *h, grib_arguments *args, unsig int transform_iterator_data(grib_handle *h, double *data, long iScansNegatively, long jScansPositively, long jPointsAreConsecutive, long alternativeRowScanning, size_t numPoints, long nx, long ny); /* grib_iterator_class_latlon.c */ -void unrotate(grib_handle *h, const double inlat, const double inlon, const double angleOfRot, const double southPoleLat, const double southPoleLon, double *outlat, double *outlon); +void unrotate(const double inlat, const double inlon, const double angleOfRot, const double southPoleLat, const double southPoleLon, double *outlat, double *outlon); /* grib_iterator_class_regular.c */ diff --git a/src/grib_iterator_class_latlon.c b/src/grib_iterator_class_latlon.c index 4d66eb72c..3cfe6a3b6 100644 --- a/src/grib_iterator_class_latlon.c +++ b/src/grib_iterator_class_latlon.c @@ -88,7 +88,7 @@ static void init_class(grib_iterator_class* c) #define RAD2DEG 57.29577951308232087684 /* 180 over pi */ #define DEG2RAD 0.01745329251994329576 /* pi over 180 */ -void unrotate(grib_handle* h, +void unrotate( const double inlat, const double inlon, const double angleOfRot, const double southPoleLat, const double southPoleLon, double* outlat, double* outlon) @@ -170,7 +170,7 @@ static int next(grib_iterator* iter, double *lat, double *lon, double *val) if (self->isRotated && !self->disableUnrotate) { double new_lat = 0, new_lon = 0; - unrotate(iter->h, ret_lat, ret_lon, + unrotate(ret_lat, ret_lon, self->angleOfRotation, self->southPoleLat, self->southPoleLon, &new_lat, &new_lon); ret_lat = new_lat; diff --git a/src/grib_nearest_class_regular.c b/src/grib_nearest_class_regular.c index 07c957714..15a663eee 100644 --- a/src/grib_nearest_class_regular.c +++ b/src/grib_nearest_class_regular.c @@ -89,6 +89,49 @@ static void init_class(grib_nearest_class* c) } /* END_CLASS_IMP */ +#ifndef MAX +#define MAX(a,b) (((a)>(b))?(a):(b)) +#endif +#ifndef MIN +#define MIN(a,b) (((a)<(b))?(a):(b)) +#endif +#define RAD2DEG 57.29577951308232087684 /* 180 over pi */ +#define DEG2RAD 0.01745329251994329576 /* pi over 180 */ + +/* Inspired by Magics GribRotatedInterpretor::rotate */ +static int rotate(const double inlat, const double inlon, + const double angleOfRot, const double southPoleLat, const double southPoleLon, + double* outlat, double* outlon) +{ + double PYROT, PXROT, ZCYROT, ZCXROT, ZSXROT; + const double ZSYCEN = sin(DEG2RAD * (southPoleLat + 90.)); + const double ZCYCEN = cos(DEG2RAD * (southPoleLat + 90.)); + const double ZXMXC = DEG2RAD * (inlon - southPoleLon); + const double ZSXMXC = sin(ZXMXC); + const double ZCXMXC = cos(ZXMXC); + const double ZSYREG = sin(DEG2RAD * inlat); + const double ZCYREG = cos(DEG2RAD * inlat); + double ZSYROT = ZCYCEN * ZSYREG - ZSYCEN * ZCYREG * ZCXMXC; + + ZSYROT = MAX(MIN(ZSYROT, +1.0), -1.0); + + PYROT = asin(ZSYROT) * RAD2DEG; + + ZCYROT = cos(PYROT * DEG2RAD); + ZCXROT = (ZCYCEN * ZCYREG * ZCXMXC + ZSYCEN * ZSYREG) / ZCYROT; + ZCXROT = MAX(MIN(ZCXROT, +1.0), -1.0); + ZSXROT = ZCYREG * ZSXMXC / ZCYROT; + + PXROT = acos(ZCXROT) * RAD2DEG; + + if (ZSXROT < 0.0) + PXROT = -PXROT; + + *outlat = PYROT; + *outlon = PXROT; + + return GRIB_SUCCESS; +} static int init(grib_nearest* nearest,grib_handle* h,grib_arguments* args) { @@ -236,6 +279,8 @@ static int find(grib_nearest* nearest, grib_handle* h, grib_iterator* iter=NULL; double lat=0,lon=0; + const int is_rotated = is_rotated_grid(h); + double angleOfRotation=0, southPoleLat=0, southPoleLon=0; while (inlon<0) inlon+=360; while (inlon>360) inlon-=360; @@ -270,10 +315,23 @@ static int find(grib_nearest* nearest, grib_handle* h, } /* Support for rotated grids not yet implemented */ - if (is_rotated_grid(h)) { - grib_context_log(h->context,GRIB_LOG_ERROR, + if (is_rotated) { + int err = 0; + double new_lat = 0, new_lon = 0; + ret = grib_get_double(h,"angleOfRotation", &angleOfRotation); if (ret) err=1; + ret = grib_get_double(h,"latitudeOfSouthernPoleInDegrees", &southPoleLat); if (ret) err=1; + ret = grib_get_double(h,"longitudeOfSouthernPoleInDegrees", &southPoleLon); if (ret) err=1; + if (err) { + grib_context_log(h->context,GRIB_LOG_ERROR, "Nearest neighbour functionality is not supported for rotated grids."); - return GRIB_NOT_IMPLEMENTED; + return GRIB_NOT_IMPLEMENTED; + } + ret = grib_set_long(h, "iteratorDisableUnrotate", 1); + // Rotate the inlat, inlon + rotate(inlat, inlon, angleOfRotation, southPoleLat, southPoleLon, &new_lat, &new_lon); + inlat = new_lat; + inlon = new_lon; + if(h->context->debug) printf("nearest find: rotated grid: new point=(%g,%g)\n",new_lat,new_lon); } if ((ret = grib_get_long(h,self->Ni,&n))!= GRIB_SUCCESS) @@ -401,6 +459,14 @@ static int find(grib_nearest* nearest, grib_handle* h, distances[kk]=self->distances[kk]; outlats[kk]=self->lats[self->j[jj]]; outlons[kk]=self->lons[self->i[ii]]; + if (is_rotated) { + // Unrotate resulting lat/lon + double inlat = outlats[kk], inlon = outlons[kk]; + double new_lat = 0, new_lon = 0; + unrotate(inlat, inlon, angleOfRotation, southPoleLat, southPoleLon, &new_lat, &new_lon); + outlats[kk] = new_lat; + outlons[kk] = new_lon; + } grib_get_double_element_internal(h,self->values_key,self->k[kk],&(values[kk])); /* Using the brute force approach described above */ /* Assert(self->k[kk] < nvalues); */ diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index e942207b1..262140867 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -98,6 +98,7 @@ list( APPEND tests_data_reqd grib_ecc-490 grib_ecc-756 grib_ecc-873 + grib_ecc-600 bufr_ecc-556 gts_get gts_ls diff --git a/tests/grib_ecc-600.sh b/tests/grib_ecc-600.sh new file mode 100755 index 000000000..7958d22e2 --- /dev/null +++ b/tests/grib_ecc-600.sh @@ -0,0 +1,32 @@ +#!/bin/sh +# Copyright 2005-2018 ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.sh +set -u +# --------------------------------------------------------- +# This is the test for the JIRA issue ECC-600. +# Nearest neighbour for rotated grids +# --------------------------------------------------------- +label="grib_ecc-600-test" +tempOut=temp.${label}.out +tempGrib=temp.${label}.grib + +tigge=${data_dir}/tiggelam_cnmc_sfc.grib +${tools_dir}/grib_copy -w count=4 $input $tempGrib + +${tools_dir}/grib_ls -l 40,0,1 $tempGrib > $tempOut +grep -q "Grid Point chosen #3 index=54294 latitude=39.98 longitude=0.00 distance=2.03 (Km)" $tempOut + +${tools_dir}/grib_ls -l 50,-10,1 $tempGrib > $tempOut +grep -q "Grid Point chosen #3 index=145684 latitude=49.99 longitude=-9.97 distance=2.57 (Km)" $tempOut + + +# Clean up +rm -f $tempOut $tempGrib From c15df25139d45f59b60299a0eb51c96dc3c1498f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 20 Feb 2019 13:29:11 +0000 Subject: [PATCH 121/414] ECC-600: Fix test --- tests/grib_ecc-600.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/grib_ecc-600.sh b/tests/grib_ecc-600.sh index 7958d22e2..74141cecf 100755 --- a/tests/grib_ecc-600.sh +++ b/tests/grib_ecc-600.sh @@ -12,16 +12,16 @@ set -u # --------------------------------------------------------- # This is the test for the JIRA issue ECC-600. -# Nearest neighbour for rotated grids +# Nearest neighbour for rotated lat/lon grids. # --------------------------------------------------------- label="grib_ecc-600-test" tempOut=temp.${label}.out tempGrib=temp.${label}.grib -tigge=${data_dir}/tiggelam_cnmc_sfc.grib +input=${data_dir}/tigge/tiggelam_cnmc_sfc.grib ${tools_dir}/grib_copy -w count=4 $input $tempGrib -${tools_dir}/grib_ls -l 40,0,1 $tempGrib > $tempOut +${tools_dir}/grib_ls -l 40,0,1 $tempGrib > $tempOut grep -q "Grid Point chosen #3 index=54294 latitude=39.98 longitude=0.00 distance=2.03 (Km)" $tempOut ${tools_dir}/grib_ls -l 50,-10,1 $tempGrib > $tempOut From 1e1d335cbbcd2a220e6612d434d71bde92081034 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 20 Feb 2019 13:30:51 +0000 Subject: [PATCH 122/414] ECC-600: Refactor --- src/grib_api_prototypes.h | 3 +- src/grib_geography.c | 95 ++++++++++++++++++++++++++++++++ src/grib_iterator_class_latlon.c | 56 ------------------- src/grib_nearest_class_regular.c | 70 ++++------------------- 4 files changed, 109 insertions(+), 115 deletions(-) diff --git a/src/grib_api_prototypes.h b/src/grib_api_prototypes.h index 59762588f..c27c20080 100644 --- a/src/grib_api_prototypes.h +++ b/src/grib_api_prototypes.h @@ -1043,6 +1043,8 @@ void grib_file_delete(grib_file *file); /* grib_geography.c */ int grib_get_gaussian_latitudes(long trunc, double *lats); int is_gaussian_global(double lat1, double lat2, double lon1, double lon2, long num_points_equator, const double *latitudes, double angular_precision); +void rotate(const double inlat, const double inlon, const double angleOfRot, const double southPoleLat, const double southPoleLon, double* outlat, double* outlon); +void unrotate(const double inlat, const double inlon, const double angleOfRot, const double southPoleLat, const double southPoleLon, double *outlat, double *outlon); /* grib_handle.c */ grib_section *grib_section_create(grib_handle *h, grib_accessor *owner); @@ -1423,7 +1425,6 @@ grib_iterator *grib_iterator_factory(grib_handle *h, grib_arguments *args, unsig int transform_iterator_data(grib_handle *h, double *data, long iScansNegatively, long jScansPositively, long jPointsAreConsecutive, long alternativeRowScanning, size_t numPoints, long nx, long ny); /* grib_iterator_class_latlon.c */ -void unrotate(const double inlat, const double inlon, const double angleOfRot, const double southPoleLat, const double southPoleLon, double *outlat, double *outlon); /* grib_iterator_class_regular.c */ diff --git a/src/grib_geography.c b/src/grib_geography.c index 85fe607eb..0812ea643 100644 --- a/src/grib_geography.c +++ b/src/grib_geography.c @@ -19,6 +19,16 @@ #define NUMBER(x) (sizeof(x)/sizeof(x[0])) #define MAXITER 10 +#define RAD2DEG 57.29577951308232087684 /* 180 over pi */ +#define DEG2RAD 0.01745329251994329576 /* pi over 180 */ + +#ifndef MAX +#define MAX(a,b) (((a)>(b))?(a):(b)) +#endif +#ifndef MIN +#define MIN(a,b) (((a)<(b))?(a):(b)) +#endif + #ifndef M_PI #define M_PI 3.14159265358979323846 #endif @@ -153,3 +163,88 @@ int is_gaussian_global( } return global; } + +/* From Magics GribRotatedInterpretor::rotate */ +void rotate(const double inlat, const double inlon, + const double angleOfRot, const double southPoleLat, const double southPoleLon, + double* outlat, double* outlon) +{ + double PYROT, PXROT, ZCYROT, ZCXROT, ZSXROT; + const double ZSYCEN = sin(DEG2RAD * (southPoleLat + 90.)); + const double ZCYCEN = cos(DEG2RAD * (southPoleLat + 90.)); + const double ZXMXC = DEG2RAD * (inlon - southPoleLon); + const double ZSXMXC = sin(ZXMXC); + const double ZCXMXC = cos(ZXMXC); + const double ZSYREG = sin(DEG2RAD * inlat); + const double ZCYREG = cos(DEG2RAD * inlat); + double ZSYROT = ZCYCEN * ZSYREG - ZSYCEN * ZCYREG * ZCXMXC; + + ZSYROT = MAX(MIN(ZSYROT, +1.0), -1.0); + + PYROT = asin(ZSYROT) * RAD2DEG; + + ZCYROT = cos(PYROT * DEG2RAD); + ZCXROT = (ZCYCEN * ZCYREG * ZCXMXC + ZSYCEN * ZSYREG) / ZCYROT; + ZCXROT = MAX(MIN(ZCXROT, +1.0), -1.0); + ZSXROT = ZCYREG * ZSXMXC / ZCYROT; + + PXROT = acos(ZCXROT) * RAD2DEG; + + if (ZSXROT < 0.0) + PXROT = -PXROT; + + *outlat = PYROT; + *outlon = PXROT; +} + +/* From old ecKit RotateGrid::unrotate (Tag 2015.11.0) */ +void unrotate(const double inlat, const double inlon, + const double angleOfRot, const double southPoleLat, const double southPoleLon, + double* outlat, double* outlon) +{ + const double lon_x = inlon; + const double lat_y = inlat; + /* First convert the data point from spherical lat lon to (x',y',z') */ + double latr = lat_y * DEG2RAD; + double lonr = lon_x * DEG2RAD; + double xd = cos(lonr)*cos(latr); + double yd = sin(lonr)*cos(latr); + double zd = sin(latr); + + double t = -(90.0 + southPoleLat); + double o = -southPoleLon; + + double sin_t = sin(DEG2RAD * t); + double cos_t = cos(DEG2RAD * t); + double sin_o = sin(DEG2RAD * o); + double cos_o = cos(DEG2RAD * o); + + double x = cos_t*cos_o*xd + sin_o*yd + sin_t*cos_o*zd; + double y = -cos_t*sin_o*xd + cos_o*yd - sin_t*sin_o*zd; + double z = -sin_t*xd + cos_t*zd; + + double ret_lat=0, ret_lon=0; + + /* Then convert back to 'normal' (lat,lon) + * Uses arcsin, to convert back to degrees, put in range -1 to 1 in case of slight rounding error + * avoid error on calculating e.g. asin(1.00000001) */ + if (z > 1.0) z = 1.0; + if (z < -1.0) z = -1.0; + + ret_lat = asin(z) * RAD2DEG; + ret_lon = atan2(y, x) * RAD2DEG; + + /* Still get a very small rounding error, round to 6 decimal places */ + ret_lat = roundf( ret_lat * 1000000.0 )/1000000.0; + ret_lon = roundf( ret_lon * 1000000.0 )/1000000.0; + + ret_lon -= angleOfRot; + + /* Make sure ret_lon is in range*/ + /* + while (ret_lon < lonmin_) ret_lon += 360.0; + while (ret_lon >= lonmax_) ret_lon -= 360.0; + */ + *outlat = ret_lat; + *outlon = ret_lon; +} diff --git a/src/grib_iterator_class_latlon.c b/src/grib_iterator_class_latlon.c index 3cfe6a3b6..01eab20ab 100644 --- a/src/grib_iterator_class_latlon.c +++ b/src/grib_iterator_class_latlon.c @@ -85,62 +85,6 @@ static void init_class(grib_iterator_class* c) } /* END_CLASS_IMP */ -#define RAD2DEG 57.29577951308232087684 /* 180 over pi */ -#define DEG2RAD 0.01745329251994329576 /* pi over 180 */ - -void unrotate( - const double inlat, const double inlon, - const double angleOfRot, const double southPoleLat, const double southPoleLon, - double* outlat, double* outlon) -{ - /* Algorithm taken from ecKit */ - const double lon_x = inlon; - const double lat_y = inlat; - /* First convert the data point from spherical lat lon to (x',y',z') */ - double latr = lat_y * DEG2RAD; - double lonr = lon_x * DEG2RAD; - double xd = cos(lonr)*cos(latr); - double yd = sin(lonr)*cos(latr); - double zd = sin(latr); - - double t = -(90.0 + southPoleLat); - double o = -southPoleLon; - - double sin_t = sin(DEG2RAD * t); - double cos_t = cos(DEG2RAD * t); - double sin_o = sin(DEG2RAD * o); - double cos_o = cos(DEG2RAD * o); - - double x = cos_t*cos_o*xd + sin_o*yd + sin_t*cos_o*zd; - double y = -cos_t*sin_o*xd + cos_o*yd - sin_t*sin_o*zd; - double z = -sin_t*xd + cos_t*zd; - - double ret_lat=0, ret_lon=0; - - /* Then convert back to 'normal' (lat,lon) - * Uses arcsin, to convert back to degrees, put in range -1 to 1 in case of slight rounding error - * avoid error on calculating e.g. asin(1.00000001) */ - if (z > 1.0) z = 1.0; - if (z < -1.0) z = -1.0; - - ret_lat = asin(z) * RAD2DEG; - ret_lon = atan2(y, x) * RAD2DEG; - - /* Still get a very small rounding error, round to 6 decimal places */ - ret_lat = roundf( ret_lat * 1000000.0 )/1000000.0; - ret_lon = roundf( ret_lon * 1000000.0 )/1000000.0; - - ret_lon -= angleOfRot; - - /* Make sure ret_lon is in range*/ - /* - while (ret_lon < lonmin_) ret_lon += 360.0; - while (ret_lon >= lonmax_) ret_lon -= 360.0; - */ - *outlat = ret_lat; - *outlon = ret_lon; -} - static int next(grib_iterator* iter, double *lat, double *lon, double *val) { /* GRIB-238: Support rotated lat/lon grids */ diff --git a/src/grib_nearest_class_regular.c b/src/grib_nearest_class_regular.c index 15a663eee..9116f423b 100644 --- a/src/grib_nearest_class_regular.c +++ b/src/grib_nearest_class_regular.c @@ -89,50 +89,6 @@ static void init_class(grib_nearest_class* c) } /* END_CLASS_IMP */ -#ifndef MAX -#define MAX(a,b) (((a)>(b))?(a):(b)) -#endif -#ifndef MIN -#define MIN(a,b) (((a)<(b))?(a):(b)) -#endif -#define RAD2DEG 57.29577951308232087684 /* 180 over pi */ -#define DEG2RAD 0.01745329251994329576 /* pi over 180 */ - -/* Inspired by Magics GribRotatedInterpretor::rotate */ -static int rotate(const double inlat, const double inlon, - const double angleOfRot, const double southPoleLat, const double southPoleLon, - double* outlat, double* outlon) -{ - double PYROT, PXROT, ZCYROT, ZCXROT, ZSXROT; - const double ZSYCEN = sin(DEG2RAD * (southPoleLat + 90.)); - const double ZCYCEN = cos(DEG2RAD * (southPoleLat + 90.)); - const double ZXMXC = DEG2RAD * (inlon - southPoleLon); - const double ZSXMXC = sin(ZXMXC); - const double ZCXMXC = cos(ZXMXC); - const double ZSYREG = sin(DEG2RAD * inlat); - const double ZCYREG = cos(DEG2RAD * inlat); - double ZSYROT = ZCYCEN * ZSYREG - ZSYCEN * ZCYREG * ZCXMXC; - - ZSYROT = MAX(MIN(ZSYROT, +1.0), -1.0); - - PYROT = asin(ZSYROT) * RAD2DEG; - - ZCYROT = cos(PYROT * DEG2RAD); - ZCXROT = (ZCYCEN * ZCYREG * ZCXMXC + ZSYCEN * ZSYREG) / ZCYROT; - ZCXROT = MAX(MIN(ZCXROT, +1.0), -1.0); - ZSXROT = ZCYREG * ZSXMXC / ZCYROT; - - PXROT = acos(ZCXROT) * RAD2DEG; - - if (ZSXROT < 0.0) - PXROT = -PXROT; - - *outlat = PYROT; - *outlon = PXROT; - - return GRIB_SUCCESS; -} - static int init(grib_nearest* nearest,grib_handle* h,grib_arguments* args) { grib_nearest_regular* self = (grib_nearest_regular*) nearest; @@ -314,24 +270,22 @@ static int find(grib_nearest* nearest, grib_handle* h, return ret ? ret : GRIB_GEOCALCULUS_PROBLEM; } - /* Support for rotated grids not yet implemented */ + /* ECC-600: Support for rotated grids + * First: rotate the input point + * Then: run the lat/lon iterator over the rotated grid (disableUnrotate) + * Finally: unrotate the resulting point + */ if (is_rotated) { - int err = 0; double new_lat = 0, new_lon = 0; - ret = grib_get_double(h,"angleOfRotation", &angleOfRotation); if (ret) err=1; - ret = grib_get_double(h,"latitudeOfSouthernPoleInDegrees", &southPoleLat); if (ret) err=1; - ret = grib_get_double(h,"longitudeOfSouthernPoleInDegrees", &southPoleLon); if (ret) err=1; - if (err) { - grib_context_log(h->context,GRIB_LOG_ERROR, - "Nearest neighbour functionality is not supported for rotated grids."); - return GRIB_NOT_IMPLEMENTED; - } - ret = grib_set_long(h, "iteratorDisableUnrotate", 1); - // Rotate the inlat, inlon + ret = grib_get_double_internal(h,"angleOfRotation", &angleOfRotation); if (ret) return ret; + ret = grib_get_double_internal(h,"latitudeOfSouthernPoleInDegrees", &southPoleLat); if (ret) return ret; + ret = grib_get_double_internal(h,"longitudeOfSouthernPoleInDegrees", &southPoleLon); if (ret) return ret; + ret = grib_set_long(h, "iteratorDisableUnrotate", 1); if (ret) return ret; + /* Rotate the inlat, inlon */ rotate(inlat, inlon, angleOfRotation, southPoleLat, southPoleLon, &new_lat, &new_lon); inlat = new_lat; inlon = new_lon; - if(h->context->debug) printf("nearest find: rotated grid: new point=(%g,%g)\n",new_lat,new_lon); + /*if(h->context->debug) printf("nearest find: rotated grid: new point=(%g,%g)\n",new_lat,new_lon);*/ } if ((ret = grib_get_long(h,self->Ni,&n))!= GRIB_SUCCESS) @@ -460,7 +414,7 @@ static int find(grib_nearest* nearest, grib_handle* h, outlats[kk]=self->lats[self->j[jj]]; outlons[kk]=self->lons[self->i[ii]]; if (is_rotated) { - // Unrotate resulting lat/lon + /* Unrotate resulting lat/lon */ double inlat = outlats[kk], inlon = outlons[kk]; double new_lat = 0, new_lon = 0; unrotate(inlat, inlon, angleOfRotation, southPoleLat, southPoleLon, &new_lat, &new_lon); From 35db3145b8868b38fe81ae3f940c8ebeb5b395c4 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 20 Feb 2019 13:53:57 +0000 Subject: [PATCH 123/414] ECC-600: Compiler warning --- src/grib_nearest_class_regular.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/grib_nearest_class_regular.c b/src/grib_nearest_class_regular.c index 9116f423b..835160d7d 100644 --- a/src/grib_nearest_class_regular.c +++ b/src/grib_nearest_class_regular.c @@ -415,9 +415,8 @@ static int find(grib_nearest* nearest, grib_handle* h, outlons[kk]=self->lons[self->i[ii]]; if (is_rotated) { /* Unrotate resulting lat/lon */ - double inlat = outlats[kk], inlon = outlons[kk]; double new_lat = 0, new_lon = 0; - unrotate(inlat, inlon, angleOfRotation, southPoleLat, southPoleLon, &new_lat, &new_lon); + unrotate(outlats[kk], outlons[kk], angleOfRotation, southPoleLat, southPoleLon, &new_lat, &new_lon); outlats[kk] = new_lat; outlons[kk] = new_lon; } From 3f83ce74c3b98be4813b6f4e862a5d5b3f154f3d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 20 Feb 2019 17:54:43 +0000 Subject: [PATCH 124/414] Refactoring --- tools/grib_get.c | 21 ++++++++++----------- tools/grib_ls.c | 25 ++++++++++++------------- 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/tools/grib_get.c b/tools/grib_get.c index 008f94523..294a67e37 100644 --- a/tools/grib_get.c +++ b/tools/grib_get.c @@ -49,7 +49,7 @@ int grib_options_count=sizeof(grib_options)/sizeof(grib_option); double lat=0; double lon=0; int mode=0; -grib_nearest* n=NULL; +grib_nearest* nearest=NULL; int main(int argc, char *argv[]) { @@ -108,9 +108,8 @@ int grib_tool_init(grib_runtime_options* options) } if (options->latlon && options->latlon_mask) { - FILE* f=NULL; grib_handle* hh; - f=fopen(options->latlon_mask,"r"); + FILE* f=fopen(options->latlon_mask,"r"); if(!f) { perror(options->latlon_mask); exit(1); @@ -118,12 +117,12 @@ int grib_tool_init(grib_runtime_options* options) hh=grib_handle_new_from_file(0,f,&ret); fclose(f); GRIB_CHECK_NOLINE(ret,0); - n=grib_nearest_new(hh,&ret); + nearest=grib_nearest_new(hh,&ret); GRIB_CHECK_NOLINE(ret,0); - GRIB_CHECK_NOLINE(grib_nearest_find(n,hh,lat,lon,mode, - options->lats,options->lons,options->mask_values,options->distances,options->indexes,&size),0); - grib_nearest_delete(n); - n=NULL; + GRIB_CHECK_NOLINE(grib_nearest_find(nearest,hh,lat,lon,mode, + options->lats,options->lons,options->mask_values,options->distances,options->indexes,&size),0); + grib_nearest_delete(nearest); + nearest=NULL; grib_handle_delete( hh); options->latlon_idx=-1; @@ -181,9 +180,9 @@ int grib_tool_new_handle_action(grib_runtime_options* options,grib_handle* h) int i; double min; err=0; - if (!n) n=grib_nearest_new(h,&err); + if (!nearest) nearest=grib_nearest_new(h,&err); GRIB_CHECK_NOLINE(err,0); - GRIB_CHECK_NOLINE(grib_nearest_find(n,h,lat,lon,0, + GRIB_CHECK_NOLINE(grib_nearest_find(nearest,h,lat,lon,0, options->lats,options->lons,options->values, options->distances,options->indexes,&size),0); min=options->distances[0]; @@ -213,7 +212,7 @@ void grib_tool_print_key_values(grib_runtime_options* options,grib_handle* h) int grib_tool_finalise_action(grib_runtime_options* options) { - if (n) grib_nearest_delete(n); + if (nearest) grib_nearest_delete(nearest); return 0; } diff --git a/tools/grib_ls.c b/tools/grib_ls.c index d3fa35800..de5a8b3e9 100644 --- a/tools/grib_ls.c +++ b/tools/grib_ls.c @@ -54,7 +54,7 @@ double lon=0; int mode=0; static int json_latlon=0; -grib_nearest* n=NULL; +grib_nearest* nearest=NULL; int main(int argc, char *argv[]) { @@ -122,12 +122,11 @@ int grib_tool_init(grib_runtime_options* options) } if (options->latlon && options->latlon_mask) { - FILE* f=NULL; grib_handle* hh; int idx=0, land_found=0; double min_overall = 0.0; int idx_overall = -1; - f=fopen(options->latlon_mask,"r"); + FILE* f=fopen(options->latlon_mask,"r"); if(!f) { perror(options->latlon_mask); exit(1); @@ -135,13 +134,13 @@ int grib_tool_init(grib_runtime_options* options) hh=grib_handle_new_from_file(0,f,&ret); fclose(f); GRIB_CHECK_NOLINE(ret,0); - n=grib_nearest_new(hh,&ret); + nearest=grib_nearest_new(hh,&ret); GRIB_CHECK_NOLINE(ret,0); - GRIB_CHECK_NOLINE(grib_nearest_find(n,hh,lat,lon,mode, + GRIB_CHECK_NOLINE(grib_nearest_find(nearest,hh,lat,lon,mode, options->lats,options->lons,options->mask_values,options->distances,options->indexes,&size),0); - grib_nearest_delete(n); - n=NULL; - grib_handle_delete( hh); + grib_nearest_delete(nearest); + nearest=NULL; + grib_handle_delete(hh); options->latlon_idx=-1; max=options->distances[0]; @@ -263,7 +262,7 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) if (options->latlon) { double min; err=0; - if (!n) n=grib_nearest_new(h,&err); + if (!nearest) nearest=grib_nearest_new(h,&err); if (err == GRIB_NOT_IMPLEMENTED) { char grid_type[100]; size_t grid_type_len=100; @@ -278,9 +277,9 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) if (options->latlon_mask) { nn_flag = mode; /* ECC-638 */ } - GRIB_CHECK_NOLINE(grib_nearest_find(n,h,lat,lon,nn_flag, - options->lats,options->lons,options->values, - options->distances,options->indexes,&size),0); + GRIB_CHECK_NOLINE(grib_nearest_find(nearest,h,lat,lon,nn_flag, + options->lats,options->lons,options->values, + options->distances,options->indexes,&size),0); } if (!options->latlon_mask) { @@ -383,7 +382,7 @@ int grib_tool_finalise_action(grib_runtime_options* options) } } - if (n) grib_nearest_delete(n); + if (nearest) grib_nearest_delete(nearest); if (json_latlon) printf("\n]\n"); return 0; From dcd732a8f82e68496fe9c2484f7bde50db225071 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 21 Feb 2019 13:27:03 +0000 Subject: [PATCH 125/414] Add check for no 7777 in GRIB message --- src/grib_handle.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/grib_handle.c b/src/grib_handle.c index 097071f09..ece2080db 100644 --- a/src/grib_handle.c +++ b/src/grib_handle.c @@ -448,6 +448,15 @@ grib_handle* grib_handle_new_from_message ( grib_context* c, const void* data, s if (determine_product_kind(h, &product_kind) == GRIB_SUCCESS) { h->product_kind = product_kind; } + + if (h->product_kind == PRODUCT_GRIB) { + if (!grib_is_defined(h,"7777")) { + grib_context_log (c,GRIB_LOG_ERROR,"grib_handle_new_from_message: No final 7777 in message!"); + /* TODO: Return NULL. An incomplete message is no use to anyone. + * But first check the MARS Client and other applications + */ + } + } return h; } From 6410c77cc7a9181a2b79775d5c908c6649a1bba4 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 21 Feb 2019 14:31:27 +0000 Subject: [PATCH 126/414] ECC-897: Add GRIB edition 2 representation to 8 vegetation/biomass parameters --- .../grib2/localConcepts/ecmf/cfVarName.def | 59 +++++++++++++++++++ definitions/grib2/localConcepts/ecmf/name.def | 59 +++++++++++++++++++ .../grib2/localConcepts/ecmf/paramId.def | 59 +++++++++++++++++++ .../grib2/localConcepts/ecmf/shortName.def | 59 +++++++++++++++++++ .../grib2/localConcepts/ecmf/units.def | 59 +++++++++++++++++++ 5 files changed, 295 insertions(+) diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index 691c2318b..8da2c9b0d 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -13551,6 +13551,65 @@ parameterCategory = 228 ; parameterNumber = 60 ; } +#GPP coefficient from Biogenic Flux Adjustment System +'gppbfas' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 198 ; + } +#Rec coefficient from Biogenic Flux Adjustment System +'recbfas' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 199 ; + } +#Accumulated Carbon Dioxide Net Ecosystem Exchange +'aco2nee' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 192 ; + typeOfStatisticalProcessing = 1 ; + } +#Accumulated Carbon Dioxide Gross Primary Production +'aco2gpp' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 193 ; + typeOfStatisticalProcessing = 1 ; + } +#Accumulated Carbon Dioxide Ecosystem Respiration +'aco2rec' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 194 ; + typeOfStatisticalProcessing = 1 ; + } +#Flux of Carbon Dioxide Net Ecosystem Exchange +'fco2nee' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 195 ; + } +#Flux of Carbon Dioxide Gross Primary Production +'fco2gpp' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 197 ; + } +#Flux of Carbon Dioxide Ecosystem Respiration +'fco2rec' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 196 ; + } #Total column rain water 'tcrw' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index 64e0be7fe..dd4218777 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -13551,6 +13551,65 @@ parameterCategory = 228 ; parameterNumber = 60 ; } +#GPP coefficient from Biogenic Flux Adjustment System +'GPP coefficient from Biogenic Flux Adjustment System' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 198 ; + } +#Rec coefficient from Biogenic Flux Adjustment System +'Rec coefficient from Biogenic Flux Adjustment System' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 199 ; + } +#Accumulated Carbon Dioxide Net Ecosystem Exchange +'Accumulated Carbon Dioxide Net Ecosystem Exchange' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 192 ; + typeOfStatisticalProcessing = 1 ; + } +#Accumulated Carbon Dioxide Gross Primary Production +'Accumulated Carbon Dioxide Gross Primary Production' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 193 ; + typeOfStatisticalProcessing = 1 ; + } +#Accumulated Carbon Dioxide Ecosystem Respiration +'Accumulated Carbon Dioxide Ecosystem Respiration' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 194 ; + typeOfStatisticalProcessing = 1 ; + } +#Flux of Carbon Dioxide Net Ecosystem Exchange +'Flux of Carbon Dioxide Net Ecosystem Exchange' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 195 ; + } +#Flux of Carbon Dioxide Gross Primary Production +'Flux of Carbon Dioxide Gross Primary Production' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 197 ; + } +#Flux of Carbon Dioxide Ecosystem Respiration +'Flux of Carbon Dioxide Ecosystem Respiration' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 196 ; + } #Total column rain water 'Total column rain water' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index fdcd04d9d..80eca0d7a 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -13551,6 +13551,65 @@ parameterCategory = 228 ; parameterNumber = 60 ; } +#GPP coefficient from Biogenic Flux Adjustment System +'228078' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 198 ; + } +#Rec coefficient from Biogenic Flux Adjustment System +'228079' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 199 ; + } +#Accumulated Carbon Dioxide Net Ecosystem Exchange +'228080' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 192 ; + typeOfStatisticalProcessing = 1 ; + } +#Accumulated Carbon Dioxide Gross Primary Production +'228081' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 193 ; + typeOfStatisticalProcessing = 1 ; + } +#Accumulated Carbon Dioxide Ecosystem Respiration +'228082' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 194 ; + typeOfStatisticalProcessing = 1 ; + } +#Flux of Carbon Dioxide Net Ecosystem Exchange +'228083' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 195 ; + } +#Flux of Carbon Dioxide Gross Primary Production +'228084' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 197 ; + } +#Flux of Carbon Dioxide Ecosystem Respiration +'228085' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 196 ; + } #Total column rain water '228089' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index bfbd0d0af..5e5826475 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -13551,6 +13551,65 @@ parameterCategory = 228 ; parameterNumber = 60 ; } +#GPP coefficient from Biogenic Flux Adjustment System +'gppbfas' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 198 ; + } +#Rec coefficient from Biogenic Flux Adjustment System +'recbfas' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 199 ; + } +#Accumulated Carbon Dioxide Net Ecosystem Exchange +'aco2nee' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 192 ; + typeOfStatisticalProcessing = 1 ; + } +#Accumulated Carbon Dioxide Gross Primary Production +'aco2gpp' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 193 ; + typeOfStatisticalProcessing = 1 ; + } +#Accumulated Carbon Dioxide Ecosystem Respiration +'aco2rec' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 194 ; + typeOfStatisticalProcessing = 1 ; + } +#Flux of Carbon Dioxide Net Ecosystem Exchange +'fco2nee' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 195 ; + } +#Flux of Carbon Dioxide Gross Primary Production +'fco2gpp' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 197 ; + } +#Flux of Carbon Dioxide Ecosystem Respiration +'fco2rec' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 196 ; + } #Total column rain water 'tcrw' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index 1ec32c746..f4181205b 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -13551,6 +13551,65 @@ parameterCategory = 228 ; parameterNumber = 60 ; } +#GPP coefficient from Biogenic Flux Adjustment System +'dimensionless' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 198 ; + } +#Rec coefficient from Biogenic Flux Adjustment System +'dimensionless' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 199 ; + } +#Accumulated Carbon Dioxide Net Ecosystem Exchange +'kg m**-2' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 192 ; + typeOfStatisticalProcessing = 1 ; + } +#Accumulated Carbon Dioxide Gross Primary Production +'kg m**-2' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 193 ; + typeOfStatisticalProcessing = 1 ; + } +#Accumulated Carbon Dioxide Ecosystem Respiration +'kg m**-2' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 194 ; + typeOfStatisticalProcessing = 1 ; + } +#Flux of Carbon Dioxide Net Ecosystem Exchange +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 195 ; + } +#Flux of Carbon Dioxide Gross Primary Production +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 197 ; + } +#Flux of Carbon Dioxide Ecosystem Respiration +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 196 ; + } #Total column rain water 'kg m**-2' = { discipline = 192 ; From a9e8281754146be36091183a2045424e62c84753 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 21 Feb 2019 15:27:30 +0000 Subject: [PATCH 127/414] ECC-898: GRIB: Neural network soil moisture data --- definitions/grib1/2.98.228.table | 5 ++++ .../grib1/localConcepts/ecmf/cfVarName.def | 25 +++++++++++++++++++ definitions/grib1/localConcepts/ecmf/name.def | 25 +++++++++++++++++++ .../grib1/localConcepts/ecmf/paramId.def | 25 +++++++++++++++++++ .../grib1/localConcepts/ecmf/shortName.def | 25 +++++++++++++++++++ .../grib1/localConcepts/ecmf/units.def | 25 +++++++++++++++++++ 6 files changed, 130 insertions(+) diff --git a/definitions/grib1/2.98.228.table b/definitions/grib1/2.98.228.table index daad8fd53..5dd02af69 100644 --- a/definitions/grib1/2.98.228.table +++ b/definitions/grib1/2.98.228.table @@ -40,6 +40,11 @@ 51 litota1 LITOTA1 Averaged total lightning flash density in the last hour (km**-2 day**-1) 52 licgi LICGI Instantaneous cloud-to-ground lightning flash density (km**-2 day**-1) 53 licga1 LICGA1 Averaged cloud-to-ground lightning flash density in the last hour (km**-2 day**-1) +70 smnnob SMNNOB SMOS observed soil moisture retrieved using neural network (m**3 m**-3) +71 smnner SMNNER SMOS observed soil moisture uncertainty retrieved using neural network (m**3 m**-3) +72 smnnrfi SMNNRFI SMOS radio frequency interference probability (%) +73 smnnnb SMNNNB SMOS number of observations per grid point (dimensionless) +74 smnntim SMNNTIM SMOS observation time for the satellite soil moisture data (hour) 78 gppbfas GPPBFAS GPP coefficient from Biogenic Flux Adjustment System (dimensionless) 79 recbfas RECBFAS Rec coefficient from Biogenic Flux Adjustment System (dimensionless) 80 aco2nee ACO2NEE Accumulated Carbon Dioxide Net Ecosystem Exchange (kg m**-2) diff --git a/definitions/grib1/localConcepts/ecmf/cfVarName.def b/definitions/grib1/localConcepts/ecmf/cfVarName.def index 0ae09a8b6..45c63f5e9 100644 --- a/definitions/grib1/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib1/localConcepts/ecmf/cfVarName.def @@ -9614,6 +9614,31 @@ table2Version = 228 ; indicatorOfParameter = 53 ; } +#SMOS observed soil moisture retrieved using neural network +'smnnob' = { + table2Version = 228 ; + indicatorOfParameter = 70 ; + } +#SMOS observed soil moisture uncertainty retrieved using neural network +'smnner' = { + table2Version = 228 ; + indicatorOfParameter = 71 ; + } +#SMOS radio frequency interference probability +'smnnrfi' = { + table2Version = 228 ; + indicatorOfParameter = 72 ; + } +#SMOS number of observations per grid point +'smnnnb' = { + table2Version = 228 ; + indicatorOfParameter = 73 ; + } +#SMOS observation time for the satellite soil moisture data +'smnntim' = { + table2Version = 228 ; + indicatorOfParameter = 74 ; + } #GPP coefficient from Biogenic Flux Adjustment System 'gppbfas' = { table2Version = 228 ; diff --git a/definitions/grib1/localConcepts/ecmf/name.def b/definitions/grib1/localConcepts/ecmf/name.def index d8f677d8b..1ecbe273e 100644 --- a/definitions/grib1/localConcepts/ecmf/name.def +++ b/definitions/grib1/localConcepts/ecmf/name.def @@ -9614,6 +9614,31 @@ table2Version = 228 ; indicatorOfParameter = 53 ; } +#SMOS observed soil moisture retrieved using neural network +'SMOS observed soil moisture retrieved using neural network' = { + table2Version = 228 ; + indicatorOfParameter = 70 ; + } +#SMOS observed soil moisture uncertainty retrieved using neural network +'SMOS observed soil moisture uncertainty retrieved using neural network' = { + table2Version = 228 ; + indicatorOfParameter = 71 ; + } +#SMOS radio frequency interference probability +'SMOS radio frequency interference probability' = { + table2Version = 228 ; + indicatorOfParameter = 72 ; + } +#SMOS number of observations per grid point +'SMOS number of observations per grid point' = { + table2Version = 228 ; + indicatorOfParameter = 73 ; + } +#SMOS observation time for the satellite soil moisture data +'SMOS observation time for the satellite soil moisture data' = { + table2Version = 228 ; + indicatorOfParameter = 74 ; + } #GPP coefficient from Biogenic Flux Adjustment System 'GPP coefficient from Biogenic Flux Adjustment System' = { table2Version = 228 ; diff --git a/definitions/grib1/localConcepts/ecmf/paramId.def b/definitions/grib1/localConcepts/ecmf/paramId.def index 76bdba23e..6eb71a2bc 100644 --- a/definitions/grib1/localConcepts/ecmf/paramId.def +++ b/definitions/grib1/localConcepts/ecmf/paramId.def @@ -9614,6 +9614,31 @@ table2Version = 228 ; indicatorOfParameter = 53 ; } +#SMOS observed soil moisture retrieved using neural network +'228070' = { + table2Version = 228 ; + indicatorOfParameter = 70 ; + } +#SMOS observed soil moisture uncertainty retrieved using neural network +'228071' = { + table2Version = 228 ; + indicatorOfParameter = 71 ; + } +#SMOS radio frequency interference probability +'228072' = { + table2Version = 228 ; + indicatorOfParameter = 72 ; + } +#SMOS number of observations per grid point +'228073' = { + table2Version = 228 ; + indicatorOfParameter = 73 ; + } +#SMOS observation time for the satellite soil moisture data +'228074' = { + table2Version = 228 ; + indicatorOfParameter = 74 ; + } #GPP coefficient from Biogenic Flux Adjustment System '228078' = { table2Version = 228 ; diff --git a/definitions/grib1/localConcepts/ecmf/shortName.def b/definitions/grib1/localConcepts/ecmf/shortName.def index 53b3ebe25..9871d5d43 100644 --- a/definitions/grib1/localConcepts/ecmf/shortName.def +++ b/definitions/grib1/localConcepts/ecmf/shortName.def @@ -9614,6 +9614,31 @@ table2Version = 228 ; indicatorOfParameter = 53 ; } +#SMOS observed soil moisture retrieved using neural network +'smnnob' = { + table2Version = 228 ; + indicatorOfParameter = 70 ; + } +#SMOS observed soil moisture uncertainty retrieved using neural network +'smnner' = { + table2Version = 228 ; + indicatorOfParameter = 71 ; + } +#SMOS radio frequency interference probability +'smnnrfi' = { + table2Version = 228 ; + indicatorOfParameter = 72 ; + } +#SMOS number of observations per grid point +'smnnnb' = { + table2Version = 228 ; + indicatorOfParameter = 73 ; + } +#SMOS observation time for the satellite soil moisture data +'smnntim' = { + table2Version = 228 ; + indicatorOfParameter = 74 ; + } #GPP coefficient from Biogenic Flux Adjustment System 'gppbfas' = { table2Version = 228 ; diff --git a/definitions/grib1/localConcepts/ecmf/units.def b/definitions/grib1/localConcepts/ecmf/units.def index 12cda4f59..a1bfae7de 100644 --- a/definitions/grib1/localConcepts/ecmf/units.def +++ b/definitions/grib1/localConcepts/ecmf/units.def @@ -9614,6 +9614,31 @@ table2Version = 228 ; indicatorOfParameter = 53 ; } +#SMOS observed soil moisture retrieved using neural network +'m**3 m**-3' = { + table2Version = 228 ; + indicatorOfParameter = 70 ; + } +#SMOS observed soil moisture uncertainty retrieved using neural network +'m**3 m**-3' = { + table2Version = 228 ; + indicatorOfParameter = 71 ; + } +#SMOS radio frequency interference probability +'%' = { + table2Version = 228 ; + indicatorOfParameter = 72 ; + } +#SMOS number of observations per grid point +'dimensionless' = { + table2Version = 228 ; + indicatorOfParameter = 73 ; + } +#SMOS observation time for the satellite soil moisture data +'hour' = { + table2Version = 228 ; + indicatorOfParameter = 74 ; + } #GPP coefficient from Biogenic Flux Adjustment System 'dimensionless' = { table2Version = 228 ; From 487ae774ac59a2c1ef1a93c06f732c776e6326ce Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 22 Feb 2019 11:31:27 +0000 Subject: [PATCH 128/414] Message printed twice --- tools/grib_to_netcdf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/grib_to_netcdf.c b/tools/grib_to_netcdf.c index 36eb306fe..e17349baa 100644 --- a/tools/grib_to_netcdf.c +++ b/tools/grib_to_netcdf.c @@ -2203,7 +2203,7 @@ static int def_latlon(int ncid, fieldset *fs) field *g = get_field(fs, 0, expand_mem); - Assert( check_grid(g)==GRIB_SUCCESS ); + DebugAssert( check_grid(g)==GRIB_SUCCESS ); if((e = grib_get_long(g->handle, "Ni", &l)) != GRIB_SUCCESS) { From 932fc98aa8b0e3c7ead7d867274d27a609d9a8d9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 22 Feb 2019 13:22:32 +0000 Subject: [PATCH 129/414] Clean up --- src/eccodes.h | 14 +++---- src/grib_api.h | 99 +++++++++++++++++++++++--------------------------- 2 files changed, 53 insertions(+), 60 deletions(-) diff --git a/src/eccodes.h b/src/eccodes.h index e22d74a43..842f9890a 100644 --- a/src/eccodes.h +++ b/src/eccodes.h @@ -548,7 +548,7 @@ int codes_grib_multi_handle_write(codes_multi_handle* mh,FILE* f); * @param message_length : On exit, the message size in number of bytes * @return 0 if OK, integer value on error */ -int codes_get_message(codes_handle* h ,const void** message, size_t *message_length ); +int codes_get_message(codes_handle* h ,const void** message, size_t *message_length); /** @@ -560,7 +560,7 @@ int codes_get_message(codes_handle* h ,const void** message, size_t *message_len * On exit, the actual message length in number of bytes * @return 0 if OK, integer value on error */ -int codes_get_message_copy(codes_handle* h, void* message,size_t *message_length ); +int codes_get_message_copy(codes_handle* h, void* message,size_t *message_length); /*! @} */ /*! \defgroup iterators Iterating on latitude/longitude/values */ @@ -750,7 +750,7 @@ int codes_get_length(codes_handle* h, const char* key,size_t *length); * @param value : the address of a long where the data will be retrieved * @return 0 if OK, integer value on error */ -int codes_get_long(codes_handle* h, const char* key, long* value ); +int codes_get_long(codes_handle* h, const char* key, long* value); /** * Get a double value from a key, if several keys of the same name are present, the last one is returned @@ -761,7 +761,7 @@ int codes_get_long(codes_handle* h, const char* key, long* value ); * @param value : the address of a double where the data will be retrieved * @return 0 if OK, integer value on error */ -int codes_get_double(codes_handle* h, const char* key, double* value ); +int codes_get_double(codes_handle* h, const char* key, double* value); /** * Get as double the i-th element of the "key" array @@ -796,7 +796,7 @@ int codes_get_double_elements(codes_handle* h, const char* key, int* i, long siz * @param length : the address of a size_t that contains allocated length of the string on input, and that contains the actual length of the string on output * @return 0 if OK, integer value on error */ -int codes_get_string(codes_handle* h, const char* key, char* mesg, size_t *length ); +int codes_get_string(codes_handle* h, const char* key, char* mesg, size_t *length); /** * Get string array values from a key. If several keys of the same name are present, the last one is returned @@ -1086,7 +1086,7 @@ char* codes_definition_path(const codes_context *c); /** * Get the API version * -* @return API version +* @return API version */ long codes_get_api_version(void); @@ -1201,7 +1201,7 @@ int codes_datetime_to_julian(long year, long month, long day, long hour, long mi long codes_julian_to_date(long jdate); long codes_date_to_julian(long ddate); -void codes_get_reduced_row(long pl,double lon_first,double lon_last,long* npoints,long* ilon_first, long* ilon_last ); +void codes_get_reduced_row(long pl,double lon_first,double lon_last,long* npoints,long* ilon_first, long* ilon_last); void codes_get_reduced_row_p(long pl, double lon_first, double lon_last, long *npoints, double *olon_first, double *olon_last); diff --git a/src/grib_api.h b/src/grib_api.h index a741aa43e..9d6a6c91c 100644 --- a/src/grib_api.h +++ b/src/grib_api.h @@ -502,7 +502,7 @@ grib_handle* grib_handle_new_from_samples (grib_context* c, const char* sample_n * @param h : The handle to be cloned * @return the new handle, NULL if the message is invalid or a problem is encountered */ -grib_handle* grib_handle_clone (grib_handle* h) ; +grib_handle* grib_handle_clone(grib_handle* h) ; /** * Frees a handle, also frees the message if it is not a user message @@ -510,7 +510,7 @@ grib_handle* grib_handle_clone (grib_handle* h) ; * @param h : The handle to be deleted * @return 0 if OK, integer value on error */ -int grib_handle_delete (grib_handle* h); +int grib_handle_delete(grib_handle* h); /** * Create an empty multi field handle. @@ -591,7 +591,7 @@ int grib_get_message_copy(grib_handle* h , void* message,size_t *message_length * \param error : error code * \return the new iterator, NULL if no iterator can be created */ -grib_iterator* grib_iterator_new (grib_handle* h, unsigned long flags,int* error); +grib_iterator* grib_iterator_new(grib_handle* h, unsigned long flags,int* error); /** * Get latitude/longitude and data values. @@ -615,7 +615,7 @@ int grib_get_data(grib_handle *h, double *lats, double *lons, double *values); * @param value : on output value of the point * @return positive value if successful, 0 if no more data are available */ -int grib_iterator_next (grib_iterator *i, double* lat,double* lon,double* value); +int grib_iterator_next(grib_iterator *i, double* lat,double* lon,double* value); /** * Get the previous value from an iterator. @@ -626,7 +626,7 @@ int grib_iterator_next (grib_iterator *i, double* lat,double * @param value : on output value of the point* * @return positive value if successful, 0 if no more data are available */ -int grib_iterator_previous (grib_iterator *i, double* lat,double* lon,double* value); +int grib_iterator_previous(grib_iterator *i, double* lat,double* lon,double* value); /** * Test procedure for values in an iterator. @@ -634,7 +634,7 @@ int grib_iterator_previous (grib_iterator *i, double* lat,double * @param i : the iterator * @return boolean, 1 if the iterator still nave next values, 0 otherwise */ -int grib_iterator_has_next (grib_iterator *i); +int grib_iterator_has_next(grib_iterator *i); /** * Test procedure for values in an iterator. @@ -642,7 +642,7 @@ int grib_iterator_has_next (grib_iterator *i); * @param i : the iterator * @return 0 if OK, integer value on error */ -int grib_iterator_reset (grib_iterator *i); +int grib_iterator_reset(grib_iterator *i); /** * Frees an iterator from memory @@ -650,7 +650,7 @@ int grib_iterator_reset (grib_iterator *i); * @param i : the iterator * @return 0 if OK, integer value on error */ -int grib_iterator_delete (grib_iterator *i); +int grib_iterator_delete(grib_iterator *i); /*! * \brief Create a new nearest from a handle, using current geometry . @@ -659,7 +659,7 @@ int grib_iterator_delete (grib_iterator *i); * \param error : error code * \return the new nearest, NULL if no nearest can be created */ -grib_nearest* grib_nearest_new (grib_handle* h, int* error); +grib_nearest* grib_nearest_new(grib_handle* h, int* error); /** * Find the 4 nearest points of a latitude longitude point. @@ -683,8 +683,8 @@ grib_nearest* grib_nearest_new (grib_handle* h, int* error); * @return 0 if OK, integer value on error */ int grib_nearest_find(grib_nearest *nearest,grib_handle* h,double inlat,double inlon, - unsigned long flags,double* outlats,double* outlons, - double* values,double* distances,int* indexes,size_t *len); + unsigned long flags,double* outlats,double* outlons, + double* values,double* distances,int* indexes,size_t *len); /** * Frees an nearest from memory @@ -692,7 +692,7 @@ int grib_nearest_find(grib_nearest *nearest,grib_handle* h,double inlat,double i * @param nearest : the nearest * @return 0 if OK, integer value on error */ -int grib_nearest_delete (grib_nearest *nearest); +int grib_nearest_delete(grib_nearest *nearest); /** * Find the nearest point of a set of points whose latitudes and longitudes @@ -736,7 +736,7 @@ int grib_nearest_find_multiple(grib_handle* h,int is_lsm, * @param offset : the address of a size_t where the offset will be set * @return 0 if OK, integer value on error */ -int grib_get_offset(grib_handle* h, const char* key, size_t* offset); +int grib_get_offset(grib_handle* h, const char* key, size_t* offset); /** * Get the number of coded value from a key, if several keys of the same name are present, the total sum is returned @@ -746,7 +746,7 @@ int grib_get_offset(grib_handle* h, const char* key, size_t* of * @param size : the address of a size_t where the size will be set * @return 0 if OK, integer value on error */ -int grib_get_size(grib_handle* h, const char* key,size_t *size); +int grib_get_size(grib_handle* h, const char* key,size_t *size); /** * Get the length of the string representation of the key, if several keys of the same name are present, the maximum length is returned @@ -756,7 +756,7 @@ int grib_get_size(grib_handle* h, const char* key,size_t *size); * @param length : the address of a size_t where the length will be set * @return 0 if OK, integer value on error */ -int grib_get_length(grib_handle* h, const char* key,size_t *length); +int grib_get_length(grib_handle* h, const char* key,size_t *length); /** * Get a long value from a key, if several keys of the same name are present, the last one is returned @@ -767,7 +767,7 @@ int grib_get_length(grib_handle* h, const char* key,size_t *length); * @param value : the address of a long where the data will be retrieved * @return 0 if OK, integer value on error */ -int grib_get_long (grib_handle* h, const char* key, long* value); +int grib_get_long(grib_handle* h, const char* key, long* value); /** * Get a double value from a key, if several keys of the same name are present, the last one is returned @@ -778,7 +778,7 @@ int grib_get_long (grib_handle* h, const char* key, long* val * @param value : the address of a double where the data will be retrieved * @return 0 if OK, integer value on error */ -int grib_get_double (grib_handle* h, const char* key, double* value); +int grib_get_double(grib_handle* h, const char* key, double* value); /** * Get as double the i-th element of the "key" array @@ -837,7 +837,7 @@ int grib_get_string_array(grib_handle* h, const char* key, char** vals, size_t * * @param length : the address of a size_t that contains allocated length of the byte array on input, and that contains the actual length of the byte array on output * @return 0 if OK, integer value on error */ -int grib_get_bytes (grib_handle* h, const char* key, unsigned char* bytes, size_t *length); +int grib_get_bytes(grib_handle* h, const char* key, unsigned char* bytes, size_t *length); /** * Get double array values from a key. If several keys of the same name are present, the last one is returned * @see grib_set_double_array @@ -848,7 +848,7 @@ int grib_get_bytes (grib_handle* h, const char* key, unsigned char* byte * @param length : the address of a size_t that contains allocated length of the double array on input, and that contains the actual length of the double array on output * @return 0 if OK, integer value on error */ -int grib_get_double_array (grib_handle* h, const char* key, double* vals, size_t *length); +int grib_get_double_array(grib_handle* h, const char* key, double* vals, size_t *length); /** * Get long array values from a key. If several keys of the same name are present, the last one is returned @@ -884,7 +884,7 @@ int grib_copy_namespace(grib_handle* dest, const char* name, grib_handle* src); * @param val : a long where the data will be read * @return 0 if OK, integer value on error */ -int grib_set_long (grib_handle* h, const char* key , long val); +int grib_set_long(grib_handle* h, const char* key, long val); /** * Set a double value from a key. If several keys of the same name are present, the last one is set @@ -895,7 +895,7 @@ int grib_set_long (grib_handle* h, const char* key , long val); * @param val : a double where the data will be read * @return 0 if OK, integer value on error */ -int grib_set_double (grib_handle* h, const char* key , double val); +int grib_set_double(grib_handle* h, const char* key, double val); /** * Set a string value from a key. If several keys of the same name are present, the last one is set @@ -907,7 +907,7 @@ int grib_set_double (grib_handle* h, const char* key , double val); * @param length : the address of a size_t that contains the length of the string on input, and that contains the actual packed length of the string on output * @return 0 if OK, integer value on error */ -int grib_set_string (grib_handle* h, const char* key , const char* mesg, size_t *length); +int grib_set_string(grib_handle* h, const char* key, const char* mesg, size_t *length); /** * Set a bytes array from a key. If several keys of the same name are present, the last one is set @@ -919,7 +919,7 @@ int grib_set_string (grib_handle* h, const char* key , const char* mesg, * @param length : the address of a size_t that contains the length of the byte array on input, and that contains the actual packed length of the byte array on output * @return 0 if OK, integer value on error */ -int grib_set_bytes (grib_handle* h, const char* key, const unsigned char* bytes, size_t *length); +int grib_set_bytes(grib_handle* h, const char* key, const unsigned char* bytes, size_t *length); /** * Set a double array from a key. If several keys of the same name are present, the last one is set @@ -931,7 +931,7 @@ int grib_set_bytes (grib_handle* h, const char* key, const unsigned char * @param length : a size_t that contains the length of the byte array on input * @return 0 if OK, integer value on error */ -int grib_set_double_array (grib_handle* h, const char* key , const double* vals , size_t length); +int grib_set_double_array(grib_handle* h, const char* key , const double* vals , size_t length); /** * Same as grib_set_double_array but allows setting of READ-ONLY keys like codedValues. @@ -950,7 +950,7 @@ int grib_set_force_double_array(grib_handle* h, const char* key, const double* v * @param length : a size_t that contains the length of the long array on input * @return 0 if OK, integer value on error */ -int grib_set_long_array (grib_handle* h, const char* key , const long* vals , size_t length); +int grib_set_long_array(grib_handle* h, const char* key , const long* vals, size_t length); /** * Set a string array from a key. If several keys of the same name are present, the last one is set @@ -975,7 +975,7 @@ int grib_set_string_array(grib_handle* h, const char *key, const char **vals, si * @param option_flags : all the GRIB_DUMP_FLAG_x flags can be used * @param arg : used to provide a format to output data (experimental) */ -void grib_dump_content(grib_handle* h,FILE* out,const char* mode, unsigned long option_flags,void* arg); +void grib_dump_content(grib_handle* h,FILE* out,const char* mode, unsigned long option_flags,void* arg); /** * Print all keys from the parsed definition files available in a context @@ -983,7 +983,7 @@ void grib_dump_content(grib_handle* h,FILE* out,const char* mode, unsigned lon * @param f : the File used to print the keys on * @param c : the context that contains the cached definition files to be printed */ -void grib_dump_action_tree(grib_context* c, FILE* f) ; +void grib_dump_action_tree(grib_context* c, FILE* f) ; /*! \defgroup context The context object The context is a long life configuration object of the grib_api. @@ -998,7 +998,7 @@ void grib_dump_action_tree(grib_context* c, FILE* f) ; * @param data : pointer to the data to be freed * must match @see grib_malloc_proc */ -typedef void (*grib_free_proc) (const grib_context* c, void* data); +typedef void (*grib_free_proc)(const grib_context* c, void* data); /** * Grib malloc procedure, format of a procedure referenced in the context that is used to allocate memory @@ -1007,7 +1007,7 @@ typedef void (*grib_free_proc) (const grib_context* c, void* data); * @return a pointer to the allocated memory, NULL if no memory can be allocated * must match @see grib_free_proc */ -typedef void* (*grib_malloc_proc) (const grib_context* c, size_t length); +typedef void* (*grib_malloc_proc)(const grib_context* c, size_t length); /** * Grib realloc procedure, format of a procedure referenced in the context that is used to reallocate memory @@ -1016,7 +1016,7 @@ typedef void* (*grib_malloc_proc) (const grib_context* c, size_t length); * @param length : length to be allocated in number of bytes * @return a pointer to the allocated memory */ -typedef void* (*grib_realloc_proc) (const grib_context* c, void* data, size_t length); +typedef void* (*grib_realloc_proc)(const grib_context* c, void* data, size_t length); /** * Grib loc proc, format of a procedure referenced in the context that is used to log internal messages @@ -1025,7 +1025,7 @@ typedef void* (*grib_realloc_proc) (const grib_context* c, void* data, size_t * @param level : the log level, as defined in log modes * @param mesg : the message to be logged */ -typedef void (*grib_log_proc) (const grib_context* c, int level, const char* mesg); +typedef void (*grib_log_proc)(const grib_context* c, int level, const char* mesg); /** * Grib print proc, format of a procedure referenced in the context that is used to print external messages @@ -1034,7 +1034,7 @@ typedef void (*grib_log_proc) (const grib_context* c, int level, const cha * @param descriptor : the structure to be printed on, must match the implementation * @param mesg : the message to be printed */ -typedef void (*grib_print_proc) (const grib_context* c, void* descriptor, const char* mesg); +typedef void (*grib_print_proc)(const grib_context* c, void* descriptor, const char* mesg); /** @@ -1046,7 +1046,7 @@ typedef void (*grib_print_proc) (const grib_context* c, void* descriptor, co * @param stream : the stream * @return size read */ -typedef size_t (*grib_data_read_proc) (const grib_context* c,void *ptr, size_t size, void *stream); +typedef size_t (*grib_data_read_proc)(const grib_context* c,void *ptr, size_t size, void *stream); /** * Grib data read write, format of a procedure referenced in the context that is used to write to a stream from a resource @@ -1057,7 +1057,7 @@ typedef size_t (*grib_data_read_proc) (const grib_context* c,void *ptr, size_t * @param stream : the stream * @return size written */ -typedef size_t (*grib_data_write_proc)(const grib_context* c,const void *ptr, size_t size, void *stream); +typedef size_t (*grib_data_write_proc)(const grib_context* c,const void *ptr, size_t size, void *stream); /** * Grib data tell, format of a procedure referenced in the context that is used to tell the current position in a stream @@ -1066,7 +1066,7 @@ typedef size_t (*grib_data_write_proc)(const grib_context* c,const void *ptr, s * @param stream : the stream * @return the position in the stream */ -typedef off_t (*grib_data_tell_proc) (const grib_context* c, void *stream); +typedef off_t (*grib_data_tell_proc) (const grib_context* c, void *stream); /** * Grib data seek, format of a procedure referenced in the context that is used to seek the current position in a stream @@ -1079,7 +1079,7 @@ typedef off_t (*grib_data_tell_proc) (const grib_context* c, void *stream); * @param stream : the stream * @return 0 if OK, integer value on error */ -typedef off_t (*grib_data_seek_proc) (const grib_context* c, off_t offset, int whence, void *stream); +typedef off_t (*grib_data_seek_proc)(const grib_context* c, off_t offset, int whence, void *stream); /** * Grib data eof, format of a procedure referenced in the context that is used to test end of file @@ -1088,21 +1088,21 @@ typedef off_t (*grib_data_seek_proc) (const grib_context* c, off_t offset, in * @param stream : the stream * @return the position in the stream */ -typedef int (*grib_data_eof_proc) (const grib_context* c, void *stream); +typedef int (*grib_data_eof_proc) (const grib_context* c, void *stream); /** * Get the static default context * * @return the default context, NULL it the context is not available */ -grib_context* grib_context_get_default(void); +grib_context* grib_context_get_default(void); /** * Frees the cached definition files of the context * * @param c : the context to be deleted */ -void grib_context_delete(grib_context* c); +void grib_context_delete(grib_context* c); /** * Set the GTS header mode on. @@ -1133,7 +1133,7 @@ void grib_gribex_mode_on(grib_context* c); * * @param c : the context */ -int grib_get_gribex_mode ( grib_context* c); +int grib_get_gribex_mode(grib_context* c); /** * Set the GRIBEX mode off. @@ -1178,7 +1178,7 @@ void grib_context_set_memory_proc(grib_context* c, grib_malloc_proc griballoc, * @param gribfree : the memory freeing procedure to be set @see grib_free_proc */ void grib_context_set_persistent_memory_proc(grib_context* c, grib_malloc_proc griballoc, - grib_free_proc gribfree); + grib_free_proc gribfree); /** * Sets memory procedures of the context for large buffers @@ -1187,9 +1187,9 @@ void grib_context_set_persistent_memory_proc(grib_context* c, grib_malloc_proc * @param griballoc : the memory allocation procedure to be set @see grib_malloc_proc * @param gribfree : the memory freeing procedure to be set @see grib_free_proc */ -void grib_context_set_buffer_memory_proc(grib_context* c, grib_malloc_proc griballoc, - grib_free_proc gribfree, - grib_realloc_proc gribrealloc); +void grib_context_set_buffer_memory_proc(grib_context* c, grib_malloc_proc griballoc, + grib_free_proc gribfree, + grib_realloc_proc gribrealloc); /** * Sets the context printing procedure used for user interaction @@ -1197,7 +1197,7 @@ void grib_context_set_buffer_memory_proc(grib_context* c, grib_malloc_proc grib * @param c : the context to be modified * @param printp : the printing procedure to be set @see grib_print_proc */ -void grib_context_set_print_proc(grib_context* c, grib_print_proc printp); +void grib_context_set_print_proc(grib_context* c, grib_print_proc printp); /** * Sets the context logging procedure used for system (warning, errors, infos ...) messages @@ -1205,7 +1205,7 @@ void grib_context_set_print_proc(grib_context* c, grib_print_proc printp); * @param c : the context to be modified * @param logp : the logging procedure to be set @see grib_log_proc */ -void grib_context_set_logging_proc(grib_context* c, grib_log_proc logp); +void grib_context_set_logging_proc(grib_context* c, grib_log_proc logp); /** * Turn on support for multiple fields in single grib messages @@ -1256,8 +1256,6 @@ const char* grib_get_package_name(void); /** * Prints the API version -* -* */ void grib_print_api_version(FILE* out); @@ -1384,10 +1382,6 @@ int grib_points_get_values(grib_handle* h, grib_points* points, double* val); /* --------------------------------------- */ - - - - #define GRIB_UTIL_GRID_SPEC_REGULAR_LL 1 #define GRIB_UTIL_GRID_SPEC_ROTATED_LL 2 @@ -1560,7 +1554,6 @@ grib_handle *grib_util_set_spec2(grib_handle *h, /* --------------------------------------- */ - typedef void (*codes_assertion_failed_proc)(const char* message); void codes_set_codes_assertion_failed_proc(codes_assertion_failed_proc proc); From 2da922ee1418e95b8e6ec66575a4e4a27ac0e1e3 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 22 Feb 2019 13:46:21 +0000 Subject: [PATCH 130/414] ECC-897: Add local table --- definitions/grib2/tables/local/ecmf/1/4.2.2.0.table | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 definitions/grib2/tables/local/ecmf/1/4.2.2.0.table diff --git a/definitions/grib2/tables/local/ecmf/1/4.2.2.0.table b/definitions/grib2/tables/local/ecmf/1/4.2.2.0.table new file mode 100644 index 000000000..ce920325e --- /dev/null +++ b/definitions/grib2/tables/local/ecmf/1/4.2.2.0.table @@ -0,0 +1,10 @@ +# Code table 4.2 - discipline=2 category=0 for ECMWF +192 192 Carbon Dioxide Net Ecosystem Exchange +193 193 Carbon Dioxide Gross Primary Production +194 194 Carbon Dioxide Ecosystem Respiration +195 195 Flux of Carbon Dioxide Net Ecosystem Exchange +196 196 Flux of Carbon Dioxide Ecosystem Respiration +197 197 Flux of Carbon Dioxide Gross Primary Production +198 198 GPP coefficient from Biogenic Flux Adjustment System +199 199 Rec coefficient from Biogenic Flux Adjustment System +255 255 Missing From bea5c81e072cad49012a0e2555b45a42556cb708 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 22 Feb 2019 13:58:34 +0000 Subject: [PATCH 131/414] Fix failure on MacOS (on GitHub CI) due to use of 'head' --- tests/bufr_ecc-875.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/bufr_ecc-875.sh b/tests/bufr_ecc-875.sh index 38d16f6eb..1ffbd69c8 100755 --- a/tests/bufr_ecc-875.sh +++ b/tests/bufr_ecc-875.sh @@ -23,7 +23,8 @@ tempBufr=temp.${label}.bufr # -------------------------------- input=${data_dir}/gts/EGRR20150317121020_00493212.DAT ${tools_dir}/bufr_copy -g -w numberOfSubsets=9 $input $tempBufr -${tools_dir}/gts_ls $tempBufr | sed 1d | head -n -3 > $tempOut +# Remove the first line and the last three +${tools_dir}/gts_ls $tempBufr | sed 1d | sed 9,11d > $tempOut cat > $tempRef < Date: Fri, 22 Feb 2019 14:06:42 +0000 Subject: [PATCH 132/414] MacOS: fix failing test --- tests/bufr_ecc-875.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/bufr_ecc-875.sh b/tests/bufr_ecc-875.sh index 38d16f6eb..1ffbd69c8 100755 --- a/tests/bufr_ecc-875.sh +++ b/tests/bufr_ecc-875.sh @@ -23,7 +23,8 @@ tempBufr=temp.${label}.bufr # -------------------------------- input=${data_dir}/gts/EGRR20150317121020_00493212.DAT ${tools_dir}/bufr_copy -g -w numberOfSubsets=9 $input $tempBufr -${tools_dir}/gts_ls $tempBufr | sed 1d | head -n -3 > $tempOut +# Remove the first line and the last three +${tools_dir}/gts_ls $tempBufr | sed 1d | sed 9,11d > $tempOut cat > $tempRef < Date: Fri, 22 Feb 2019 16:14:45 +0000 Subject: [PATCH 133/414] Smaller buffer size --- src/grib_errors.c | 24 ++++++++++++------------ src/grib_errors.c.in | 35 +++++++++++++++++------------------ 2 files changed, 29 insertions(+), 30 deletions(-) diff --git a/src/grib_errors.c b/src/grib_errors.c index 1719797d8..d6b7c5952 100644 --- a/src/grib_errors.c +++ b/src/grib_errors.c @@ -89,27 +89,27 @@ static const char *errors[] = { const char* grib_get_error_message(int code) { - code = -code; - if(code <0 || code >= NUMBER(errors)) { - static char mess[80]; - sprintf(mess,"Unknown error %d",code); - return mess; - } - return errors[code]; + code = -code; + if (code < 0 || code >= NUMBER(errors)) { + static char mess[64]; + sprintf(mess,"Unknown error %d",code); + return mess; + } + return errors[code]; } -void grib_check(const char* call,const char* file,int line,int e,const char* msg) +void grib_check(const char* call, const char* file, int line, int e, const char* msg) { grib_context* c=grib_context_get_default(); - if(e) { + if (e) { if (file) { fprintf(stderr,"%s at line %d: %s failed: %s", - file,line, call,grib_get_error_message(e)); + file,line, call,grib_get_error_message(e)); if (msg) fprintf(stderr," (%s)",msg); printf("\n"); } else { grib_context_log(c,GRIB_LOG_ERROR,"%s",grib_get_error_message(e)); } - exit(e); - } + exit(e); + } } diff --git a/src/grib_errors.c.in b/src/grib_errors.c.in index 7def1bb56..0fdd6ac97 100644 --- a/src/grib_errors.c.in +++ b/src/grib_errors.c.in @@ -10,28 +10,27 @@ static const char *errors[] = { const char* grib_get_error_message(int code) { - code = -code; - if(code <0 || code >= NUMBER(errors)) { - static char mess[80]; - sprintf(mess,"Unknown error %d",code); - return mess; + code = -code; + if (code < 0 || code >= NUMBER(errors)) { + static char mess[64]; + sprintf(mess,"Unknown error %d",code); + return mess; } - return errors[code]; + return errors[code]; } -void grib_check(const char* call,const char* file,int line,int e,const char* msg) +void grib_check(const char* call, const char* file, int line, int e, const char* msg) { - grib_context* c=grib_context_get_default(); - if(e) { - if (file) { - fprintf(stderr,"%s at line %d: %s failed: %s", - file,line, call,grib_get_error_message(e)); - if (msg) fprintf(stderr," (%s)",msg); - printf("\n"); - } else { - grib_context_log(c,GRIB_LOG_ERROR,"%s",grib_get_error_message(e)); - } + grib_context* c=grib_context_get_default(); + if (e) { + if (file) { + fprintf(stderr,"%s at line %d: %s failed: %s", + file,line, call,grib_get_error_message(e)); + if (msg) fprintf(stderr," (%s)",msg); + printf("\n"); + } else { + grib_context_log(c,GRIB_LOG_ERROR,"%s",grib_get_error_message(e)); + } exit(e); } } - From 6eb42de19981faaad9f6fde9fd39c16192a77fbb Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 22 Feb 2019 18:07:46 +0000 Subject: [PATCH 134/414] GCC 8.3.0: fix all sprintf buffer size issues --- src/action_class_concept.c | 4 +- src/action_class_hash_array.c | 4 +- src/grib_accessor_class_bufr_elements_table.c | 6 +- src/grib_accessor_class_codetable.c | 4 +- src/grib_accessor_class_dictionary.c | 6 +- src/grib_accessor_class_g1step_range.c | 2 +- src/grib_accessor_class_g2_mars_labeling.c | 399 +++++++++--------- src/grib_accessor_class_lookup.c | 2 +- src/grib_accessor_class_smart_table.c | 6 +- src/grib_accessor_class_sprintf.c | 2 +- tools/grib_merge.c | 2 +- 11 files changed, 219 insertions(+), 218 deletions(-) diff --git a/src/action_class_concept.c b/src/action_class_concept.c index c3f3c1055..b714a08cf 100644 --- a/src/action_class_concept.c +++ b/src/action_class_concept.c @@ -218,12 +218,12 @@ static void destroy(grib_context* context,grib_action* act) static grib_concept_value* get_concept_impl(grib_handle* h,grib_action_concept* self) { - char buf[1024]={0,}; + char buf[4096]={0,}; char master[1024]={0,}; char local[1024]={0,}; char masterDir[1024]={0,}; size_t lenMasterDir=1024; - char key[1024]={0,}; + char key[4096]={0,}; char* full=0; int id; diff --git a/src/action_class_hash_array.c b/src/action_class_hash_array.c index 2443b0046..dbf976c84 100644 --- a/src/action_class_hash_array.c +++ b/src/action_class_hash_array.c @@ -213,7 +213,7 @@ static void destroy(grib_context* context,grib_action* act) static grib_hash_array_value* get_hash_array_impl(grib_handle* h,grib_action* a) { - char buf[1024]={0,}; + char buf[4096]={0,}; char master[1024]={0,}; char local[1024]={0,}; char ecmf[1024]={0,}; @@ -223,7 +223,7 @@ static grib_hash_array_value* get_hash_array_impl(grib_handle* h,grib_action* a) size_t lenLocalDir=1024; char ecmfDir[1024]={0,}; size_t lenEcmfDir=1024; - char key[1024]={0,}; + char key[4096]={0,}; char* full=0; int id; int err; diff --git a/src/grib_accessor_class_bufr_elements_table.c b/src/grib_accessor_class_bufr_elements_table.c index ae9b438eb..a589a1658 100644 --- a/src/grib_accessor_class_bufr_elements_table.c +++ b/src/grib_accessor_class_bufr_elements_table.c @@ -208,8 +208,8 @@ static grib_trie* load_bufr_elements_table(grib_accessor* a, int* err) GRIB_MUTEX_LOCK(&mutex1); if (*masterDir!=0) { - char name[1024]={0,}; - char recomposed[1024]={0,}; + char name[4096]={0,}; + char recomposed[4096]={0,}; sprintf(name,"%s/%s",masterDir,self->dictionary); grib_recompose_name(h, NULL,name, recomposed,0); filename=grib_context_full_defs_path(c,recomposed); @@ -219,7 +219,7 @@ static grib_trie* load_bufr_elements_table(grib_accessor* a, int* err) if (*localDir!=0) { char localRecomposed[1024]={0,}; - char localName[1024]={0,}; + char localName[2048]={0,}; sprintf(localName,"%s/%s",localDir,self->dictionary); grib_recompose_name(h, NULL,localName, localRecomposed,0); localFilename=grib_context_full_defs_path(c,localRecomposed); diff --git a/src/grib_accessor_class_codetable.c b/src/grib_accessor_class_codetable.c index 8c3d7d86a..48a420557 100644 --- a/src/grib_accessor_class_codetable.c +++ b/src/grib_accessor_class_codetable.c @@ -306,7 +306,7 @@ static grib_codetable* load_table(grib_accessor_codetable* self) grib_get_string(h,self->localDir,localDir,&len); if (*masterDir!=0) { - char name[1024]={0,}; + char name[2048]={0,}; sprintf(name,"%s/%s",masterDir,self->tablename); grib_recompose_name(h, NULL,name, recomposed,0); filename=grib_context_full_defs_path(c,recomposed); @@ -316,7 +316,7 @@ static grib_codetable* load_table(grib_accessor_codetable* self) } if (*localDir!=0) { - char localName[1024]={0,}; + char localName[2048]={0,}; sprintf(localName,"%s/%s",localDir,self->tablename); grib_recompose_name(h, NULL,localName, localRecomposed,0); localFilename=grib_context_full_defs_path(c,localRecomposed); diff --git a/src/grib_accessor_class_dictionary.c b/src/grib_accessor_class_dictionary.c index ff20b440a..96497b706 100644 --- a/src/grib_accessor_class_dictionary.c +++ b/src/grib_accessor_class_dictionary.c @@ -185,8 +185,8 @@ static grib_trie* load_dictionary(grib_context* c,grib_accessor* a, int* err) if (self->localDir != NULL) grib_get_string(h,self->localDir,localDir,&len); if (*masterDir!=0) { - char name[1024]={0,}; - char recomposed[1024]={0,}; + char name[2048]={0,}; + char recomposed[2048]={0,}; sprintf(name,"%s/%s",masterDir,self->dictionary); grib_recompose_name(h, NULL,name, recomposed,0); filename=grib_context_full_defs_path(c,recomposed); @@ -195,7 +195,7 @@ static grib_trie* load_dictionary(grib_context* c,grib_accessor* a, int* err) } if (*localDir!=0) { - char localName[1024]={0,}; + char localName[2048]={0,}; char localRecomposed[1024]={0,}; sprintf(localName,"%s/%s",localDir,self->dictionary); grib_recompose_name(h, NULL,localName, localRecomposed,0); diff --git a/src/grib_accessor_class_g1step_range.c b/src/grib_accessor_class_g1step_range.c index 09540778b..4a00b13ef 100644 --- a/src/grib_accessor_class_g1step_range.c +++ b/src/grib_accessor_class_g1step_range.c @@ -614,7 +614,7 @@ static size_t string_length(grib_accessor* a) static int pack_long(grib_accessor* a, const long* val, size_t *len) { - char buff[100]; + char buff[256]; size_t bufflen=100; char sval[100] = {0}; char* p=sval; diff --git a/src/grib_accessor_class_g2_mars_labeling.c b/src/grib_accessor_class_g2_mars_labeling.c index 12cd4a8cf..62643499e 100644 --- a/src/grib_accessor_class_g2_mars_labeling.c +++ b/src/grib_accessor_class_g2_mars_labeling.c @@ -225,210 +225,211 @@ static int unpack_string(grib_accessor* a, char* val, size_t *len) static int extra_set(grib_accessor* a,long val) { -/*TODO chemicals*/ - int ret=0; - grib_accessor_g2_mars_labeling* self = (grib_accessor_g2_mars_labeling*)a; - char stepType[30]={0,}; - size_t stepTypelen=30; - long derivedForecast=-1; - long productDefinitionTemplateNumberNew=-1; - long productDefinitionTemplateNumber; - long typeOfProcessedData=-1; - long typeOfGeneratingProcess=-1; + /*TODO chemicals*/ + int ret=0; + grib_accessor_g2_mars_labeling* self = (grib_accessor_g2_mars_labeling*)a; + char stepType[30]={0,}; + size_t stepTypelen=30; + long derivedForecast=-1; + long productDefinitionTemplateNumberNew=-1; + long productDefinitionTemplateNumber; + long typeOfProcessedData=-1; + long typeOfGeneratingProcess=-1; - switch (self->index) { - case 0: - /* class */ - return ret; - break; - case 1: - /* type */ - switch (val) { - case 0: /* Unknown (0) */ - typeOfProcessedData=255; - typeOfGeneratingProcess=255; - break; - case 1: /* First guess (fg) */ - case 3: /* Initialised analysis (ia) */ - typeOfProcessedData=0; - typeOfGeneratingProcess=1; - break; - case 2: /* Analysis (an) */ - case 4: /* Oi analysis (oi) */ - case 5: /* 3d variational analysis (3v) */ - case 6: /* 4d variational analysis (4v) */ - case 7: /* 3d variational gradients (3g) */ - case 8: /* 4d variational gradients (4g) */ - typeOfProcessedData=0; - typeOfGeneratingProcess=0; - break; - case 9: /* Forecast (fc) */ - typeOfProcessedData=1; - typeOfGeneratingProcess=2; - break; - case 10: /* Control forecast (cf) */ - typeOfProcessedData=3; - typeOfGeneratingProcess=4; - break; - case 11: /* Perturbed forecast (pf) */ - typeOfProcessedData=4; - typeOfGeneratingProcess=4; - break; - case 12: /* Errors in first guess (ef) */ - case 13: /* Errors in analysis (ea) */ - typeOfProcessedData=255; - typeOfGeneratingProcess=7; - break; - case 14: /* Cluster means (cm) */ - case 15: /* Cluster std deviations (cs) */ - typeOfProcessedData=255; - typeOfGeneratingProcess=4; - break; - case 16: /* Forecast probability (fp) */ - typeOfProcessedData=8; - typeOfGeneratingProcess=5; - break; - case 17: /* Ensemble mean (em) */ - derivedForecast=0; - grib_get_string(grib_handle_of_accessor(a),self->stepType,stepType,&stepTypelen); - if (!strcmp(stepType,"instant")) { - productDefinitionTemplateNumberNew=2; - } else { - productDefinitionTemplateNumberNew=12; - } - typeOfProcessedData=255; - typeOfGeneratingProcess=4; - break; - case 18: /* Ensemble standard deviation (es) */ - derivedForecast=4; - grib_get_string(grib_handle_of_accessor(a),self->stepType,stepType,&stepTypelen); - if (!strcmp(stepType,"instant")) { - productDefinitionTemplateNumberNew=2; - } else { - productDefinitionTemplateNumberNew=12; - } - typeOfProcessedData=255; - typeOfGeneratingProcess=4; - break; - case 19: /* Forecast accumulation (fa) */ - case 20: /* Climatology (cl) */ - case 21: /* Climate simulation (si) */ - case 22: /* Climate 30 days simulation (s3) */ - case 23: /* Empirical distribution (ed) */ - case 24: /* Tubes (tu) */ - case 25: /* Flux forcing realtime (ff) */ - case 26: /* Ocean forward (of) */ - case 27: /* Extreme forecast index (efi) */ - case 28: /* Extreme forecast index control (efic)*/ - case 29: /* Probability boundaries (pb) */ - typeOfProcessedData=255; - typeOfGeneratingProcess=255; - break; - case 30: /* Event probability (ep) */ - typeOfProcessedData=8; - typeOfGeneratingProcess=5; - break; - case 31: /* Bias-corrected forecast (bf) */ - typeOfProcessedData=1; - typeOfGeneratingProcess=3; - break; - case 32: /* Climate distribution (cd) */ - case 33: /* 4D analysis increments (4i) */ - case 34: /* Gridded observations (go) */ - case 35: /* Model errors (me) */ - case 36: /* Probability distribution (pd) */ - case 37: /* Cluster information (ci) */ - case 38: /* Shift of Tail (sot) */ - case 40: /* Images (im) */ - case 42: /* Simulated images (sim) */ - typeOfProcessedData=255; - typeOfGeneratingProcess=255; - break; - case 43: /* Weighted ensemble mean (wem) */ - case 44: /* Weighted ensemble standard deviation (wes) */ - case 45: /* Cluster representative (cr) */ - case 46: /* Scaled ensemble standard deviation (ses) */ - case 47: /* Time average ensemble mean (taem) */ - case 48: /* Time average ensemble standard deviation (taes) */ - typeOfProcessedData=255; - typeOfGeneratingProcess=4; - break; - case 50: /* Sensitivity gradient (sg) */ - case 52: /* Sensitivity forecast (sf) */ - case 60: /* Perturbed analysis (pa) */ - case 61: /* Initial condition perturbation (icp) */ - case 62: /* Singular vector (sv) */ - case 63: /* Adjoint singular vector (as) */ - case 64: /* Signal variance (svar) */ - typeOfProcessedData=255; - typeOfGeneratingProcess=255; - break; - case 65: /* Calibration/Validation forecast (cv) */ - typeOfProcessedData=5; - typeOfGeneratingProcess=4; - break; - case 70: /* Ocean reanalysis (or) */ - case 71: /* Flux forcing (fx) */ - case 72: /* Fill-up (fu) */ - case 73: /* Simulation forced with observations (sfo) */ - case 80: /* Forecast mean (fcmean) */ - case 81: /* Forecast maximum (fcmax) */ - case 82: /* Forecast minimum (fcmin) */ - case 83: /* Forecast standard deviation (fcstdev) */ - case 86: /* Hindcast climate mean (hcmean) */ - case 87: /* Simulated satellite data */ - case 88: /* Gridded satellite data */ - case 89: /* GFAS analysis */ - typeOfProcessedData=255; - typeOfGeneratingProcess=255; - break; - case 84: /* Ensemble mean of temporal mean (emtm) */ - case 85: /* Ensemble standard deviation of temporal mean (estdtm) */ - typeOfProcessedData=255; - typeOfGeneratingProcess=4; - break; - default : - grib_context_log(a->context,GRIB_LOG_ERROR,"unknown mars.type %d",(int)val); - return GRIB_ENCODING_ERROR; - } - case 2: - /* stream */ - switch (val) { - case 1030: /* enda */ - case 1249: /* elda */ - case 1250: /* ewla */ - grib_get_string(grib_handle_of_accessor(a),self->stepType,stepType,&stepTypelen); - if (!strcmp(stepType,"instant")) { - productDefinitionTemplateNumberNew=1; - } else { - productDefinitionTemplateNumberNew=11; - } - break; - } - break; - default : - grib_context_log(a->context,GRIB_LOG_ERROR, - "invalid first argument of g2_mars_labeling in %s",a->name); - return GRIB_INTERNAL_ERROR; - break; - } + switch (self->index) { + case 0: + /* class */ + return ret; + break; + case 1: + /* type */ + switch (val) { + case 0: /* Unknown (0) */ + typeOfProcessedData=255; + typeOfGeneratingProcess=255; + break; + case 1: /* First guess (fg) */ + case 3: /* Initialised analysis (ia) */ + typeOfProcessedData=0; + typeOfGeneratingProcess=1; + break; + case 2: /* Analysis (an) */ + case 4: /* Oi analysis (oi) */ + case 5: /* 3d variational analysis (3v) */ + case 6: /* 4d variational analysis (4v) */ + case 7: /* 3d variational gradients (3g) */ + case 8: /* 4d variational gradients (4g) */ + typeOfProcessedData=0; + typeOfGeneratingProcess=0; + break; + case 9: /* Forecast (fc) */ + typeOfProcessedData=1; + typeOfGeneratingProcess=2; + break; + case 10: /* Control forecast (cf) */ + typeOfProcessedData=3; + typeOfGeneratingProcess=4; + break; + case 11: /* Perturbed forecast (pf) */ + typeOfProcessedData=4; + typeOfGeneratingProcess=4; + break; + case 12: /* Errors in first guess (ef) */ + case 13: /* Errors in analysis (ea) */ + typeOfProcessedData=255; + typeOfGeneratingProcess=7; + break; + case 14: /* Cluster means (cm) */ + case 15: /* Cluster std deviations (cs) */ + typeOfProcessedData=255; + typeOfGeneratingProcess=4; + break; + case 16: /* Forecast probability (fp) */ + typeOfProcessedData=8; + typeOfGeneratingProcess=5; + break; + case 17: /* Ensemble mean (em) */ + derivedForecast=0; + grib_get_string(grib_handle_of_accessor(a),self->stepType,stepType,&stepTypelen); + if (!strcmp(stepType,"instant")) { + productDefinitionTemplateNumberNew=2; + } else { + productDefinitionTemplateNumberNew=12; + } + typeOfProcessedData=255; + typeOfGeneratingProcess=4; + break; + case 18: /* Ensemble standard deviation (es) */ + derivedForecast=4; + grib_get_string(grib_handle_of_accessor(a),self->stepType,stepType,&stepTypelen); + if (!strcmp(stepType,"instant")) { + productDefinitionTemplateNumberNew=2; + } else { + productDefinitionTemplateNumberNew=12; + } + typeOfProcessedData=255; + typeOfGeneratingProcess=4; + break; + case 19: /* Forecast accumulation (fa) */ + case 20: /* Climatology (cl) */ + case 21: /* Climate simulation (si) */ + case 22: /* Climate 30 days simulation (s3) */ + case 23: /* Empirical distribution (ed) */ + case 24: /* Tubes (tu) */ + case 25: /* Flux forcing realtime (ff) */ + case 26: /* Ocean forward (of) */ + case 27: /* Extreme forecast index (efi) */ + case 28: /* Extreme forecast index control (efic)*/ + case 29: /* Probability boundaries (pb) */ + typeOfProcessedData=255; + typeOfGeneratingProcess=255; + break; + case 30: /* Event probability (ep) */ + typeOfProcessedData=8; + typeOfGeneratingProcess=5; + break; + case 31: /* Bias-corrected forecast (bf) */ + typeOfProcessedData=1; + typeOfGeneratingProcess=3; + break; + case 32: /* Climate distribution (cd) */ + case 33: /* 4D analysis increments (4i) */ + case 34: /* Gridded observations (go) */ + case 35: /* Model errors (me) */ + case 36: /* Probability distribution (pd) */ + case 37: /* Cluster information (ci) */ + case 38: /* Shift of Tail (sot) */ + case 40: /* Images (im) */ + case 42: /* Simulated images (sim) */ + typeOfProcessedData=255; + typeOfGeneratingProcess=255; + break; + case 43: /* Weighted ensemble mean (wem) */ + case 44: /* Weighted ensemble standard deviation (wes) */ + case 45: /* Cluster representative (cr) */ + case 46: /* Scaled ensemble standard deviation (ses) */ + case 47: /* Time average ensemble mean (taem) */ + case 48: /* Time average ensemble standard deviation (taes) */ + typeOfProcessedData=255; + typeOfGeneratingProcess=4; + break; + case 50: /* Sensitivity gradient (sg) */ + case 52: /* Sensitivity forecast (sf) */ + case 60: /* Perturbed analysis (pa) */ + case 61: /* Initial condition perturbation (icp) */ + case 62: /* Singular vector (sv) */ + case 63: /* Adjoint singular vector (as) */ + case 64: /* Signal variance (svar) */ + typeOfProcessedData=255; + typeOfGeneratingProcess=255; + break; + case 65: /* Calibration/Validation forecast (cv) */ + typeOfProcessedData=5; + typeOfGeneratingProcess=4; + break; + case 70: /* Ocean reanalysis (or) */ + case 71: /* Flux forcing (fx) */ + case 72: /* Fill-up (fu) */ + case 73: /* Simulation forced with observations (sfo) */ + case 80: /* Forecast mean (fcmean) */ + case 81: /* Forecast maximum (fcmax) */ + case 82: /* Forecast minimum (fcmin) */ + case 83: /* Forecast standard deviation (fcstdev) */ + case 86: /* Hindcast climate mean (hcmean) */ + case 87: /* Simulated satellite data */ + case 88: /* Gridded satellite data */ + case 89: /* GFAS analysis */ + typeOfProcessedData=255; + typeOfGeneratingProcess=255; + break; + case 84: /* Ensemble mean of temporal mean (emtm) */ + case 85: /* Ensemble standard deviation of temporal mean (estdtm) */ + typeOfProcessedData=255; + typeOfGeneratingProcess=4; + break; + default : + grib_context_log(a->context,GRIB_LOG_ERROR,"unknown mars.type %d",(int)val); + return GRIB_ENCODING_ERROR; + } + break; + case 2: + /* stream */ + switch (val) { + case 1030: /* enda */ + case 1249: /* elda */ + case 1250: /* ewla */ + grib_get_string(grib_handle_of_accessor(a),self->stepType,stepType,&stepTypelen); + if (!strcmp(stepType,"instant")) { + productDefinitionTemplateNumberNew=1; + } else { + productDefinitionTemplateNumberNew=11; + } + break; + } + break; + default : + grib_context_log(a->context,GRIB_LOG_ERROR, + "invalid first argument of g2_mars_labeling in %s",a->name); + return GRIB_INTERNAL_ERROR; + break; + } - if (productDefinitionTemplateNumberNew>=0) { - grib_get_long(grib_handle_of_accessor(a),self->productDefinitionTemplateNumber,&productDefinitionTemplateNumber); - if (productDefinitionTemplateNumber!=productDefinitionTemplateNumberNew) - grib_set_long(grib_handle_of_accessor(a),self->productDefinitionTemplateNumber,productDefinitionTemplateNumberNew); - } + if (productDefinitionTemplateNumberNew>=0) { + grib_get_long(grib_handle_of_accessor(a),self->productDefinitionTemplateNumber,&productDefinitionTemplateNumber); + if (productDefinitionTemplateNumber!=productDefinitionTemplateNumberNew) + grib_set_long(grib_handle_of_accessor(a),self->productDefinitionTemplateNumber,productDefinitionTemplateNumberNew); + } - if (derivedForecast>=0) { - grib_set_long(grib_handle_of_accessor(a),self->derivedForecast,derivedForecast); - } + if (derivedForecast>=0) { + grib_set_long(grib_handle_of_accessor(a),self->derivedForecast,derivedForecast); + } - if (typeOfProcessedData>0) - grib_set_long(grib_handle_of_accessor(a),self->typeOfProcessedData,typeOfProcessedData); - if (typeOfGeneratingProcess>0) - grib_set_long(grib_handle_of_accessor(a),self->typeOfGeneratingProcess,typeOfGeneratingProcess); + if (typeOfProcessedData>0) + grib_set_long(grib_handle_of_accessor(a),self->typeOfProcessedData,typeOfProcessedData); + if (typeOfGeneratingProcess>0) + grib_set_long(grib_handle_of_accessor(a),self->typeOfGeneratingProcess,typeOfGeneratingProcess); - return ret; + return ret; } static int pack_string(grib_accessor* a, const char* val, size_t *len) diff --git a/src/grib_accessor_class_lookup.c b/src/grib_accessor_class_lookup.c index f98ab513e..f5d07cfeb 100644 --- a/src/grib_accessor_class_lookup.c +++ b/src/grib_accessor_class_lookup.c @@ -162,7 +162,7 @@ static void dump(grib_accessor* a,grib_dumper* dumper) grib_accessor_lookup* self = (grib_accessor_lookup*)a; unsigned char bytes[1024] = {0,}; char msg[1024]= {0,}; - char buf[1024]; + char buf[2048]; int i; unsigned long v = 0; diff --git a/src/grib_accessor_class_smart_table.c b/src/grib_accessor_class_smart_table.c index 54bf927c4..823d4472d 100644 --- a/src/grib_accessor_class_smart_table.c +++ b/src/grib_accessor_class_smart_table.c @@ -219,17 +219,17 @@ static grib_smart_table* load_table(grib_accessor_smart_table* self) grib_smart_table* t = NULL; grib_smart_table* next=NULL ; char *filename=0; - char name[1024]={0,}; + char name[2048]={0,}; char recomposed[1024]={0,}; char localRecomposed[1024]={0,}; char *localFilename=0; char extraRecomposed[1024]={0,}; char *extraFilename=0; - char localName[1024]={0,}; + char localName[2048]={0,}; char masterDir[1024]={0,}; char localDir[1024]={0,}; char extraDir[1024]={0,}; - char extraTable[1024]={0,}; + char extraTable[2048]={0,}; size_t len=1024; if (self->masterDir != NULL) { diff --git a/src/grib_accessor_class_sprintf.c b/src/grib_accessor_class_sprintf.c index 23a1af4a2..be279edab 100644 --- a/src/grib_accessor_class_sprintf.c +++ b/src/grib_accessor_class_sprintf.c @@ -145,7 +145,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t *len) { grib_accessor_sprintf* self = (grib_accessor_sprintf*)a; char result[1024] ; - char tempBuffer[1024]; + char tempBuffer[2048]; char sres[1024] ; long ires = 0; double dres= 0; diff --git a/tools/grib_merge.c b/tools/grib_merge.c index 8b941659e..34a1a0ade 100644 --- a/tools/grib_merge.c +++ b/tools/grib_merge.c @@ -306,7 +306,7 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) int err=0; grib_handle* hm=0; char md5[200]={0,}; - char fname[210]={0,}; + char fname[256]={0,}; size_t lmd5=32; if (!hh) { hh=grib_handle_clone(h); return 0; } From 1b263f0ec829d0ee03fc72b20a2286be679057b2 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 22 Feb 2019 18:13:04 +0000 Subject: [PATCH 135/414] grib_util_set_spec: Print status of GRIBEX mode --- src/grib_util.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/grib_util.c b/src/grib_util.c index 4b0eeae97..f378b10f7 100644 --- a/src/grib_util.c +++ b/src/grib_util.c @@ -382,6 +382,7 @@ static void print_values(grib_context* c, const grib_util_grid_spec2* spec, } printf("ECCODES DEBUG grib_util: data_values are CONSTANT? %d\t(min=%.16e, max=%.16e)\n", isConstant, minVal, maxVal); + if (c->gribex_mode_on) printf("ECCODES DEBUG grib_util: GRIBEX mode is turned on!\n"); #if 0 if (spec->bitmapPresent) { From 4430798914d9c0f2817d424caaf43640cdfb33e8 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 25 Feb 2019 10:54:06 +0000 Subject: [PATCH 136/414] Testing: Add basic test for product kind of samples --- examples/C/CMakeLists.txt | 1 + examples/C/get_product_kind.sh | 21 ++++++++++++++++++--- examples/C/get_product_kind_samples.sh | 24 ++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 3 deletions(-) create mode 100755 examples/C/get_product_kind_samples.sh diff --git a/examples/C/CMakeLists.txt b/examples/C/CMakeLists.txt index 2ac333763..b2d664071 100644 --- a/examples/C/CMakeLists.txt +++ b/examples/C/CMakeLists.txt @@ -65,6 +65,7 @@ list( APPEND tests_basic grib_set_data large_grib1 sections_copy + get_product_kind_samples ) list( APPEND tests_extra grib_iterator diff --git a/examples/C/get_product_kind.sh b/examples/C/get_product_kind.sh index ba127456f..3e5376960 100755 --- a/examples/C/get_product_kind.sh +++ b/examples/C/get_product_kind.sh @@ -12,10 +12,25 @@ label="get_product_kind_c" fTmp=${label}.tmp +fOut=${label}.tmp.out +fRef=${label}.tmp.ref -# Create a file containing both GRIB and BUFR messages +# Create a file containing one GRIB and three BUFR messages cat ${data_dir}/sample.grib2 ${data_dir}/bufr/syno_multi.bufr >$fTmp -${examples_dir}/c_get_product_kind $fTmp +${examples_dir}/c_get_product_kind $fTmp > $fOut -rm -f $fTmp +cat > $fRef < $fTmp +grep -q 'product: GRIB' $fTmp + +sample_bufr4=${ECCODES_SAMPLES_PATH}/BUFR4.tmpl +${examples_dir}/c_get_product_kind $sample_bufr4 > $fTmp +grep -q 'product: BUFR' $fTmp + +rm -f $fTmp From 7e5f4fa118d15fabaffd34f0ac2773eda369fe6b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 25 Feb 2019 12:40:31 +0000 Subject: [PATCH 137/414] Bump up version to 2.12.1 --- VERSION.cmake | 2 +- definitions/grib1/2.98.228.table | 5 ++ .../grib1/localConcepts/ecmf/cfVarName.def | 25 ++++++++ definitions/grib1/localConcepts/ecmf/name.def | 25 ++++++++ .../grib1/localConcepts/ecmf/paramId.def | 25 ++++++++ .../grib1/localConcepts/ecmf/shortName.def | 25 ++++++++ .../grib1/localConcepts/ecmf/units.def | 25 ++++++++ .../grib2/localConcepts/ecmf/cfVarName.def | 59 +++++++++++++++++++ definitions/grib2/localConcepts/ecmf/name.def | 59 +++++++++++++++++++ .../grib2/localConcepts/ecmf/paramId.def | 59 +++++++++++++++++++ .../grib2/localConcepts/ecmf/shortName.def | 59 +++++++++++++++++++ .../grib2/localConcepts/ecmf/units.def | 59 +++++++++++++++++++ .../grib2/tables/local/ecmf/1/4.2.2.0.table | 10 ++++ version.sh | 2 +- 14 files changed, 437 insertions(+), 2 deletions(-) create mode 100644 definitions/grib2/tables/local/ecmf/1/4.2.2.0.table diff --git a/VERSION.cmake b/VERSION.cmake index cfad35a46..1f4932340 100644 --- a/VERSION.cmake +++ b/VERSION.cmake @@ -1 +1 @@ -set( ${PROJECT_NAME}_VERSION_STR "2.12.0" ) +set( ${PROJECT_NAME}_VERSION_STR "2.12.1" ) diff --git a/definitions/grib1/2.98.228.table b/definitions/grib1/2.98.228.table index daad8fd53..5dd02af69 100644 --- a/definitions/grib1/2.98.228.table +++ b/definitions/grib1/2.98.228.table @@ -40,6 +40,11 @@ 51 litota1 LITOTA1 Averaged total lightning flash density in the last hour (km**-2 day**-1) 52 licgi LICGI Instantaneous cloud-to-ground lightning flash density (km**-2 day**-1) 53 licga1 LICGA1 Averaged cloud-to-ground lightning flash density in the last hour (km**-2 day**-1) +70 smnnob SMNNOB SMOS observed soil moisture retrieved using neural network (m**3 m**-3) +71 smnner SMNNER SMOS observed soil moisture uncertainty retrieved using neural network (m**3 m**-3) +72 smnnrfi SMNNRFI SMOS radio frequency interference probability (%) +73 smnnnb SMNNNB SMOS number of observations per grid point (dimensionless) +74 smnntim SMNNTIM SMOS observation time for the satellite soil moisture data (hour) 78 gppbfas GPPBFAS GPP coefficient from Biogenic Flux Adjustment System (dimensionless) 79 recbfas RECBFAS Rec coefficient from Biogenic Flux Adjustment System (dimensionless) 80 aco2nee ACO2NEE Accumulated Carbon Dioxide Net Ecosystem Exchange (kg m**-2) diff --git a/definitions/grib1/localConcepts/ecmf/cfVarName.def b/definitions/grib1/localConcepts/ecmf/cfVarName.def index 04be3a19b..28353a0f3 100644 --- a/definitions/grib1/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib1/localConcepts/ecmf/cfVarName.def @@ -9614,6 +9614,31 @@ table2Version = 228 ; indicatorOfParameter = 53 ; } +#SMOS observed soil moisture retrieved using neural network +'smnnob' = { + table2Version = 228 ; + indicatorOfParameter = 70 ; + } +#SMOS observed soil moisture uncertainty retrieved using neural network +'smnner' = { + table2Version = 228 ; + indicatorOfParameter = 71 ; + } +#SMOS radio frequency interference probability +'smnnrfi' = { + table2Version = 228 ; + indicatorOfParameter = 72 ; + } +#SMOS number of observations per grid point +'smnnnb' = { + table2Version = 228 ; + indicatorOfParameter = 73 ; + } +#SMOS observation time for the satellite soil moisture data +'smnntim' = { + table2Version = 228 ; + indicatorOfParameter = 74 ; + } #GPP coefficient from Biogenic Flux Adjustment System 'gppbfas' = { table2Version = 228 ; diff --git a/definitions/grib1/localConcepts/ecmf/name.def b/definitions/grib1/localConcepts/ecmf/name.def index e98c5cc89..523b9307c 100644 --- a/definitions/grib1/localConcepts/ecmf/name.def +++ b/definitions/grib1/localConcepts/ecmf/name.def @@ -9614,6 +9614,31 @@ table2Version = 228 ; indicatorOfParameter = 53 ; } +#SMOS observed soil moisture retrieved using neural network +'SMOS observed soil moisture retrieved using neural network' = { + table2Version = 228 ; + indicatorOfParameter = 70 ; + } +#SMOS observed soil moisture uncertainty retrieved using neural network +'SMOS observed soil moisture uncertainty retrieved using neural network' = { + table2Version = 228 ; + indicatorOfParameter = 71 ; + } +#SMOS radio frequency interference probability +'SMOS radio frequency interference probability' = { + table2Version = 228 ; + indicatorOfParameter = 72 ; + } +#SMOS number of observations per grid point +'SMOS number of observations per grid point' = { + table2Version = 228 ; + indicatorOfParameter = 73 ; + } +#SMOS observation time for the satellite soil moisture data +'SMOS observation time for the satellite soil moisture data' = { + table2Version = 228 ; + indicatorOfParameter = 74 ; + } #GPP coefficient from Biogenic Flux Adjustment System 'GPP coefficient from Biogenic Flux Adjustment System' = { table2Version = 228 ; diff --git a/definitions/grib1/localConcepts/ecmf/paramId.def b/definitions/grib1/localConcepts/ecmf/paramId.def index 083336457..f2d0cc05b 100644 --- a/definitions/grib1/localConcepts/ecmf/paramId.def +++ b/definitions/grib1/localConcepts/ecmf/paramId.def @@ -9614,6 +9614,31 @@ table2Version = 228 ; indicatorOfParameter = 53 ; } +#SMOS observed soil moisture retrieved using neural network +'228070' = { + table2Version = 228 ; + indicatorOfParameter = 70 ; + } +#SMOS observed soil moisture uncertainty retrieved using neural network +'228071' = { + table2Version = 228 ; + indicatorOfParameter = 71 ; + } +#SMOS radio frequency interference probability +'228072' = { + table2Version = 228 ; + indicatorOfParameter = 72 ; + } +#SMOS number of observations per grid point +'228073' = { + table2Version = 228 ; + indicatorOfParameter = 73 ; + } +#SMOS observation time for the satellite soil moisture data +'228074' = { + table2Version = 228 ; + indicatorOfParameter = 74 ; + } #GPP coefficient from Biogenic Flux Adjustment System '228078' = { table2Version = 228 ; diff --git a/definitions/grib1/localConcepts/ecmf/shortName.def b/definitions/grib1/localConcepts/ecmf/shortName.def index fec3780e4..95902571e 100644 --- a/definitions/grib1/localConcepts/ecmf/shortName.def +++ b/definitions/grib1/localConcepts/ecmf/shortName.def @@ -9614,6 +9614,31 @@ table2Version = 228 ; indicatorOfParameter = 53 ; } +#SMOS observed soil moisture retrieved using neural network +'smnnob' = { + table2Version = 228 ; + indicatorOfParameter = 70 ; + } +#SMOS observed soil moisture uncertainty retrieved using neural network +'smnner' = { + table2Version = 228 ; + indicatorOfParameter = 71 ; + } +#SMOS radio frequency interference probability +'smnnrfi' = { + table2Version = 228 ; + indicatorOfParameter = 72 ; + } +#SMOS number of observations per grid point +'smnnnb' = { + table2Version = 228 ; + indicatorOfParameter = 73 ; + } +#SMOS observation time for the satellite soil moisture data +'smnntim' = { + table2Version = 228 ; + indicatorOfParameter = 74 ; + } #GPP coefficient from Biogenic Flux Adjustment System 'gppbfas' = { table2Version = 228 ; diff --git a/definitions/grib1/localConcepts/ecmf/units.def b/definitions/grib1/localConcepts/ecmf/units.def index a7e3eef05..f5c5a1970 100644 --- a/definitions/grib1/localConcepts/ecmf/units.def +++ b/definitions/grib1/localConcepts/ecmf/units.def @@ -9614,6 +9614,31 @@ table2Version = 228 ; indicatorOfParameter = 53 ; } +#SMOS observed soil moisture retrieved using neural network +'m**3 m**-3' = { + table2Version = 228 ; + indicatorOfParameter = 70 ; + } +#SMOS observed soil moisture uncertainty retrieved using neural network +'m**3 m**-3' = { + table2Version = 228 ; + indicatorOfParameter = 71 ; + } +#SMOS radio frequency interference probability +'%' = { + table2Version = 228 ; + indicatorOfParameter = 72 ; + } +#SMOS number of observations per grid point +'dimensionless' = { + table2Version = 228 ; + indicatorOfParameter = 73 ; + } +#SMOS observation time for the satellite soil moisture data +'hour' = { + table2Version = 228 ; + indicatorOfParameter = 74 ; + } #GPP coefficient from Biogenic Flux Adjustment System 'dimensionless' = { table2Version = 228 ; diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index 57e88c73c..ac04aee31 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -13359,6 +13359,65 @@ parameterCategory = 228 ; parameterNumber = 60 ; } +#GPP coefficient from Biogenic Flux Adjustment System +'gppbfas' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 198 ; + } +#Rec coefficient from Biogenic Flux Adjustment System +'recbfas' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 199 ; + } +#Accumulated Carbon Dioxide Net Ecosystem Exchange +'aco2nee' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 192 ; + typeOfStatisticalProcessing = 1 ; + } +#Accumulated Carbon Dioxide Gross Primary Production +'aco2gpp' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 193 ; + typeOfStatisticalProcessing = 1 ; + } +#Accumulated Carbon Dioxide Ecosystem Respiration +'aco2rec' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 194 ; + typeOfStatisticalProcessing = 1 ; + } +#Flux of Carbon Dioxide Net Ecosystem Exchange +'fco2nee' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 195 ; + } +#Flux of Carbon Dioxide Gross Primary Production +'fco2gpp' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 197 ; + } +#Flux of Carbon Dioxide Ecosystem Respiration +'fco2rec' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 196 ; + } #Total column rain water 'tcrw' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index fa2c35e8f..0e8ad9f53 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -13359,6 +13359,65 @@ parameterCategory = 228 ; parameterNumber = 60 ; } +#GPP coefficient from Biogenic Flux Adjustment System +'GPP coefficient from Biogenic Flux Adjustment System' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 198 ; + } +#Rec coefficient from Biogenic Flux Adjustment System +'Rec coefficient from Biogenic Flux Adjustment System' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 199 ; + } +#Accumulated Carbon Dioxide Net Ecosystem Exchange +'Accumulated Carbon Dioxide Net Ecosystem Exchange' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 192 ; + typeOfStatisticalProcessing = 1 ; + } +#Accumulated Carbon Dioxide Gross Primary Production +'Accumulated Carbon Dioxide Gross Primary Production' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 193 ; + typeOfStatisticalProcessing = 1 ; + } +#Accumulated Carbon Dioxide Ecosystem Respiration +'Accumulated Carbon Dioxide Ecosystem Respiration' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 194 ; + typeOfStatisticalProcessing = 1 ; + } +#Flux of Carbon Dioxide Net Ecosystem Exchange +'Flux of Carbon Dioxide Net Ecosystem Exchange' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 195 ; + } +#Flux of Carbon Dioxide Gross Primary Production +'Flux of Carbon Dioxide Gross Primary Production' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 197 ; + } +#Flux of Carbon Dioxide Ecosystem Respiration +'Flux of Carbon Dioxide Ecosystem Respiration' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 196 ; + } #Total column rain water 'Total column rain water' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index 721fc6763..73615c8cd 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -13359,6 +13359,65 @@ parameterCategory = 228 ; parameterNumber = 60 ; } +#GPP coefficient from Biogenic Flux Adjustment System +'228078' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 198 ; + } +#Rec coefficient from Biogenic Flux Adjustment System +'228079' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 199 ; + } +#Accumulated Carbon Dioxide Net Ecosystem Exchange +'228080' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 192 ; + typeOfStatisticalProcessing = 1 ; + } +#Accumulated Carbon Dioxide Gross Primary Production +'228081' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 193 ; + typeOfStatisticalProcessing = 1 ; + } +#Accumulated Carbon Dioxide Ecosystem Respiration +'228082' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 194 ; + typeOfStatisticalProcessing = 1 ; + } +#Flux of Carbon Dioxide Net Ecosystem Exchange +'228083' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 195 ; + } +#Flux of Carbon Dioxide Gross Primary Production +'228084' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 197 ; + } +#Flux of Carbon Dioxide Ecosystem Respiration +'228085' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 196 ; + } #Total column rain water '228089' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index 5478390b4..6817dff9f 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -13359,6 +13359,65 @@ parameterCategory = 228 ; parameterNumber = 60 ; } +#GPP coefficient from Biogenic Flux Adjustment System +'gppbfas' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 198 ; + } +#Rec coefficient from Biogenic Flux Adjustment System +'recbfas' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 199 ; + } +#Accumulated Carbon Dioxide Net Ecosystem Exchange +'aco2nee' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 192 ; + typeOfStatisticalProcessing = 1 ; + } +#Accumulated Carbon Dioxide Gross Primary Production +'aco2gpp' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 193 ; + typeOfStatisticalProcessing = 1 ; + } +#Accumulated Carbon Dioxide Ecosystem Respiration +'aco2rec' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 194 ; + typeOfStatisticalProcessing = 1 ; + } +#Flux of Carbon Dioxide Net Ecosystem Exchange +'fco2nee' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 195 ; + } +#Flux of Carbon Dioxide Gross Primary Production +'fco2gpp' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 197 ; + } +#Flux of Carbon Dioxide Ecosystem Respiration +'fco2rec' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 196 ; + } #Total column rain water 'tcrw' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index 1c045cb3e..384725899 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -13359,6 +13359,65 @@ parameterCategory = 228 ; parameterNumber = 60 ; } +#GPP coefficient from Biogenic Flux Adjustment System +'dimensionless' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 198 ; + } +#Rec coefficient from Biogenic Flux Adjustment System +'dimensionless' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 199 ; + } +#Accumulated Carbon Dioxide Net Ecosystem Exchange +'kg m**-2' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 192 ; + typeOfStatisticalProcessing = 1 ; + } +#Accumulated Carbon Dioxide Gross Primary Production +'kg m**-2' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 193 ; + typeOfStatisticalProcessing = 1 ; + } +#Accumulated Carbon Dioxide Ecosystem Respiration +'kg m**-2' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 194 ; + typeOfStatisticalProcessing = 1 ; + } +#Flux of Carbon Dioxide Net Ecosystem Exchange +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 195 ; + } +#Flux of Carbon Dioxide Gross Primary Production +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 197 ; + } +#Flux of Carbon Dioxide Ecosystem Respiration +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 196 ; + } #Total column rain water 'kg m**-2' = { discipline = 192 ; diff --git a/definitions/grib2/tables/local/ecmf/1/4.2.2.0.table b/definitions/grib2/tables/local/ecmf/1/4.2.2.0.table new file mode 100644 index 000000000..ce920325e --- /dev/null +++ b/definitions/grib2/tables/local/ecmf/1/4.2.2.0.table @@ -0,0 +1,10 @@ +# Code table 4.2 - discipline=2 category=0 for ECMWF +192 192 Carbon Dioxide Net Ecosystem Exchange +193 193 Carbon Dioxide Gross Primary Production +194 194 Carbon Dioxide Ecosystem Respiration +195 195 Flux of Carbon Dioxide Net Ecosystem Exchange +196 196 Flux of Carbon Dioxide Ecosystem Respiration +197 197 Flux of Carbon Dioxide Gross Primary Production +198 198 GPP coefficient from Biogenic Flux Adjustment System +199 199 Rec coefficient from Biogenic Flux Adjustment System +255 255 Missing diff --git a/version.sh b/version.sh index e785dbce2..c195766c2 100644 --- a/version.sh +++ b/version.sh @@ -15,7 +15,7 @@ PACKAGE_NAME='eccodes' # Package version ECCODES_MAJOR_VERSION=2 ECCODES_MINOR_VERSION=12 -ECCODES_REVISION_VERSION=0 +ECCODES_REVISION_VERSION=1 ECCODES_CURRENT=1 ECCODES_REVISION=0 From b70a31215bd0cbc9195f509f9c03bd50b1516e82 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 25 Feb 2019 13:17:30 +0000 Subject: [PATCH 138/414] ECC-890: CAMS parameters --- definitions/grib1/2.98.215.table | 4 +- .../grib1/localConcepts/ecmf/cfVarName.def | 4 +- definitions/grib1/localConcepts/ecmf/name.def | 8 +- .../grib1/localConcepts/ecmf/paramId.def | 4 +- .../grib1/localConcepts/ecmf/shortName.def | 4 +- .../grib1/localConcepts/ecmf/units.def | 4 +- definitions/grib2/cfVarName.def | 74 ++++++ .../grib2/localConcepts/ecmf/cfVarName.def | 192 ++++++++++++++ definitions/grib2/localConcepts/ecmf/name.def | 230 +++++++++++++++-- .../grib2/localConcepts/ecmf/paramId.def | 232 +++++++++++++++-- .../grib2/localConcepts/ecmf/shortName.def | 236 ++++++++++++++++-- .../grib2/localConcepts/ecmf/units.def | 232 +++++++++++++++-- definitions/grib2/name.def | 74 ++++++ definitions/grib2/paramId.def | 74 ++++++ definitions/grib2/shortName.def | 74 ++++++ .../grib2/tables/local/ecmf/1/4.2.0.20.table | 3 + .../grib2/tables/local/ecmf/1/4.233.table | 3 + definitions/grib2/units.def | 74 ++++++ 18 files changed, 1431 insertions(+), 95 deletions(-) create mode 100644 definitions/grib2/tables/local/ecmf/1/4.2.0.20.table create mode 100644 definitions/grib2/tables/local/ecmf/1/4.233.table diff --git a/definitions/grib1/2.98.215.table b/definitions/grib1/2.98.215.table index d75e6051a..96de89678 100644 --- a/definitions/grib1/2.98.215.table +++ b/definitions/grib1/2.98.215.table @@ -201,8 +201,8 @@ 200 200 AERNGTNIC Negative fixer of coarse-mode nitrate aerosol (kg m**-2 s**-1) 201 201 AERMSSNIF Vertically integrated mass of fine-mode nitrate aerosol (kg m**-2) 202 202 AERMSSNIC Vertically integrated mass of coarse-mode nitrate aerosol (kg m**-2) -203 203 AERODNIF Fine-mode nitrate aerosol optical depth at 550mn (dimensionless) -204 204 AERODNIC Coarse-mode nitrate aerosol optical depth at 550nm (dimensionless) +203 203 AERODNIF Fine-mode nitrate aerosol optical depth at 550 nm (dimensionless) +204 204 AERODNIC Coarse-mode nitrate aerosol optical depth at 550 nm (dimensionless) 205 205 AERSRCAM Source/gain of ammonium aerosol (kg m**-2 s**-1) 206 206 AERDDPAM Dry deposition of ammonium aerosol (kg m**-2 s**-1) 207 207 AERSDMAM Sedimentation of ammonium aerosol (kg m**-2 s**-1) diff --git a/definitions/grib1/localConcepts/ecmf/cfVarName.def b/definitions/grib1/localConcepts/ecmf/cfVarName.def index 28353a0f3..45c63f5e9 100644 --- a/definitions/grib1/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib1/localConcepts/ecmf/cfVarName.def @@ -7134,12 +7134,12 @@ table2Version = 215 ; indicatorOfParameter = 202 ; } -#Fine-mode nitrate aerosol optical depth at 550mn +#Fine-mode nitrate aerosol optical depth at 550 nm 'aerodnif' = { table2Version = 215 ; indicatorOfParameter = 203 ; } -#Coarse-mode nitrate aerosol optical depth at 550nm +#Coarse-mode nitrate aerosol optical depth at 550 nm 'aerodnic' = { table2Version = 215 ; indicatorOfParameter = 204 ; diff --git a/definitions/grib1/localConcepts/ecmf/name.def b/definitions/grib1/localConcepts/ecmf/name.def index 523b9307c..1ecbe273e 100644 --- a/definitions/grib1/localConcepts/ecmf/name.def +++ b/definitions/grib1/localConcepts/ecmf/name.def @@ -7134,13 +7134,13 @@ table2Version = 215 ; indicatorOfParameter = 202 ; } -#Fine-mode nitrate aerosol optical depth at 550mn -'Fine-mode nitrate aerosol optical depth at 550mn' = { +#Fine-mode nitrate aerosol optical depth at 550 nm +'Fine-mode nitrate aerosol optical depth at 550 nm' = { table2Version = 215 ; indicatorOfParameter = 203 ; } -#Coarse-mode nitrate aerosol optical depth at 550nm -'Coarse-mode nitrate aerosol optical depth at 550nm' = { +#Coarse-mode nitrate aerosol optical depth at 550 nm +'Coarse-mode nitrate aerosol optical depth at 550 nm' = { table2Version = 215 ; indicatorOfParameter = 204 ; } diff --git a/definitions/grib1/localConcepts/ecmf/paramId.def b/definitions/grib1/localConcepts/ecmf/paramId.def index f2d0cc05b..6eb71a2bc 100644 --- a/definitions/grib1/localConcepts/ecmf/paramId.def +++ b/definitions/grib1/localConcepts/ecmf/paramId.def @@ -7134,12 +7134,12 @@ table2Version = 215 ; indicatorOfParameter = 202 ; } -#Fine-mode nitrate aerosol optical depth at 550mn +#Fine-mode nitrate aerosol optical depth at 550 nm '215203' = { table2Version = 215 ; indicatorOfParameter = 203 ; } -#Coarse-mode nitrate aerosol optical depth at 550nm +#Coarse-mode nitrate aerosol optical depth at 550 nm '215204' = { table2Version = 215 ; indicatorOfParameter = 204 ; diff --git a/definitions/grib1/localConcepts/ecmf/shortName.def b/definitions/grib1/localConcepts/ecmf/shortName.def index 95902571e..9871d5d43 100644 --- a/definitions/grib1/localConcepts/ecmf/shortName.def +++ b/definitions/grib1/localConcepts/ecmf/shortName.def @@ -7134,12 +7134,12 @@ table2Version = 215 ; indicatorOfParameter = 202 ; } -#Fine-mode nitrate aerosol optical depth at 550mn +#Fine-mode nitrate aerosol optical depth at 550 nm 'aerodnif' = { table2Version = 215 ; indicatorOfParameter = 203 ; } -#Coarse-mode nitrate aerosol optical depth at 550nm +#Coarse-mode nitrate aerosol optical depth at 550 nm 'aerodnic' = { table2Version = 215 ; indicatorOfParameter = 204 ; diff --git a/definitions/grib1/localConcepts/ecmf/units.def b/definitions/grib1/localConcepts/ecmf/units.def index f5c5a1970..a1bfae7de 100644 --- a/definitions/grib1/localConcepts/ecmf/units.def +++ b/definitions/grib1/localConcepts/ecmf/units.def @@ -7134,12 +7134,12 @@ table2Version = 215 ; indicatorOfParameter = 202 ; } -#Fine-mode nitrate aerosol optical depth at 550mn +#Fine-mode nitrate aerosol optical depth at 550 nm 'dimensionless' = { table2Version = 215 ; indicatorOfParameter = 203 ; } -#Coarse-mode nitrate aerosol optical depth at 550nm +#Coarse-mode nitrate aerosol optical depth at 550 nm 'dimensionless' = { table2Version = 215 ; indicatorOfParameter = 204 ; diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index c683a790b..0b8ce5d07 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -305,6 +305,80 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } +#Ammonium aerosol mass mixing ratio +'aermr18' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Nitrate aerosol optical depth at 550 nm +'niaod550' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + is_aerosol_optical = 1 ; + typeOfWavelengthInterval = 11 ; + scaleFactorOfFirstWavelength = 8 ; + scaledValueOfFirstWavelength = 55 ; + typeOfSizeInterval = 255 ; + aerosolType = 62004 ; + } +#Ammonium aerosol optical depth at 550 nm +'amaod550' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + typeOfWavelengthInterval = 11 ; + scaleFactorOfFirstWavelength = 8 ; + scaledValueOfFirstWavelength = 55 ; + typeOfSizeInterval = 255 ; + aerosolType = 62003 ; + is_aerosol_optical = 1 ; + } +#Dry deposition of ammonium aerosol +'aerddpam' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Sedimentation of ammonium aerosol +'aersdmam' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 11 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Wet deposition of ammonium aerosol by large-scale precipitation +'aerwdlam' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 9 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Wet deposition of ammonium aerosol by convective precipitation +'aerwdcam' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 10 ; + is_aerosol = 1 ; + aerosolType = 62003 ; + } +#Vertically integrated mass of ammonium aerosol +'aermssam' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + is_aerosol = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfFirstFixedSurface = 1 ; + aerosolType = 62003 ; + } #10 metre wind gust in the last 3 hours 'fg310' = { discipline = 0 ; diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index ac04aee31..8da2c9b0d 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -3281,6 +3281,24 @@ parameterCategory = 210 ; parameterNumber = 246 ; } +#Nitrate fine mode aerosol mass mixing ratio +'aermr16' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Nitrate coarse mode aerosol mass mixing ratio +'aermr17' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + is_aerosol = 1 ; + aerosolType = 65533 ; + } #Aerosol type 13 mass mixing ratio 'aermr13diff' = { discipline = 192 ; @@ -6659,6 +6677,180 @@ parameterCategory = 215 ; parameterNumber = 188 ; } +#Source/gain of fine-mode nitrate aerosol +'aersrcnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 192 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Source/gain of coarse-mode nitrate aerosol +'aersrcnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 192 ; + is_aerosol = 1 ; + aerosolType = 65533 ; + } +#Dry deposition of fine-mode nitrate aerosol +'aerddpnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Dry deposition of coarse-mode nitrate aerosol +'aerddpnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + is_aerosol = 1 ; + aerosolType = 65533 ; + } +#Sedimentation of fine-mode nitrate aerosol +'aersdmnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 11 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Sedimentation of coarse-mode nitrate aerosol +'aersdmnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 11 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } +#Wet deposition of fine-mode nitrate aerosol by large-scale precipitation +'aerwdlnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 9 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Wet deposition of coarse-mode nitrate aerosol by large-scale precipitation +'aerwdlnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 9 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } +#Wet deposition of fine-mode nitrate aerosol by convective precipitation +'aerwdcnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 10 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Wet deposition of coarse-mode nitrate aerosol by convective precipitation +'aerwdcnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 10 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } +#Negative fixer of fine-mode nitrate aerosol +'aerngtnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 193 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Negative fixer of coarse-mode nitrate aerosol +'aerngtnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 193 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } +#Vertically integrated mass of fine-mode nitrate aerosol +'aermssnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Vertically integrated mass of coarse-mode nitrate aerosol +'aermssnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } +#Fine-mode nitrate aerosol optical depth at 550 nm +'aerodnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + is_aerosol_optical = 1 ; + typeOfWavelengthInterval = 11 ; + scaleFactorOfFirstWavelength = 8 ; + scaledValueOfFirstWavelength = 55 ; + typeOfSizeInterval = 255 ; + aerosolType = 65534 ; + } +#Coarse-mode nitrate aerosol optical depth at 550 nm +'aerodnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + typeOfSizeInterval = 255 ; + aerosolType = 65533 ; + is_aerosol_optical = 1 ; + typeOfWavelengthInterval = 11 ; + scaleFactorOfFirstWavelength = 8 ; + scaledValueOfFirstWavelength = 55 ; + } +#Source/gain of ammonium aerosol +'aersrcam' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 192 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Negative fixer of ammonium aerosol +'aerngtam' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 193 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } #Experimental product 'p1.216' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index 0e8ad9f53..dd4218777 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -316,24 +316,24 @@ discipline = 0 ; parameterCategory = 0 ; parameterNumber = 0 ; + lengthOfTimeRange = 24 ; scaledValueOfFirstFixedSurface = 2 ; scaleFactorOfFirstFixedSurface = 0 ; + indicatorOfUnitForTimeRange = 1 ; typeOfFirstFixedSurface = 103 ; typeOfStatisticalProcessing = 2 ; - indicatorOfUnitForTimeRange = 1 ; - lengthOfTimeRange = 24 ; } #Minimum temperature at 2 metres in the last 24 hours 'Minimum temperature at 2 metres in the last 24 hours' = { discipline = 0 ; parameterCategory = 0 ; parameterNumber = 0 ; + typeOfStatisticalProcessing = 3 ; + indicatorOfUnitForTimeRange = 1 ; lengthOfTimeRange = 24 ; scaledValueOfFirstFixedSurface = 2 ; scaleFactorOfFirstFixedSurface = 0 ; typeOfFirstFixedSurface = 103 ; - typeOfStatisticalProcessing = 3 ; - indicatorOfUnitForTimeRange = 1 ; } #Montgomery potential 'Montgomery potential' = { @@ -1129,8 +1129,8 @@ discipline = 0 ; parameterCategory = 1 ; parameterNumber = 52 ; - typeOfStatisticalProcessing = 1 ; typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; unitsFactor = 1000 ; } #Instantaneous eastward turbulent surface stress @@ -3281,6 +3281,24 @@ parameterCategory = 210 ; parameterNumber = 246 ; } +#Nitrate fine mode aerosol mass mixing ratio +'Nitrate fine mode aerosol mass mixing ratio' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + is_aerosol = 1 ; + aerosolType = 65534 ; + } +#Nitrate coarse mode aerosol mass mixing ratio +'Nitrate coarse mode aerosol mass mixing ratio' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } #Aerosol type 13 mass mixing ratio 'Aerosol type 13 mass mixing ratio' = { discipline = 192 ; @@ -6659,6 +6677,180 @@ parameterCategory = 215 ; parameterNumber = 188 ; } +#Source/gain of fine-mode nitrate aerosol +'Source/gain of fine-mode nitrate aerosol' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 192 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Source/gain of coarse-mode nitrate aerosol +'Source/gain of coarse-mode nitrate aerosol' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 192 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } +#Dry deposition of fine-mode nitrate aerosol +'Dry deposition of fine-mode nitrate aerosol' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Dry deposition of coarse-mode nitrate aerosol +'Dry deposition of coarse-mode nitrate aerosol' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } +#Sedimentation of fine-mode nitrate aerosol +'Sedimentation of fine-mode nitrate aerosol' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 11 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Sedimentation of coarse-mode nitrate aerosol +'Sedimentation of coarse-mode nitrate aerosol' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 11 ; + is_aerosol = 1 ; + aerosolType = 65533 ; + } +#Wet deposition of fine-mode nitrate aerosol by large-scale precipitation +'Wet deposition of fine-mode nitrate aerosol by large-scale precipitation' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 9 ; + is_aerosol = 1 ; + aerosolType = 65534 ; + } +#Wet deposition of coarse-mode nitrate aerosol by large-scale precipitation +'Wet deposition of coarse-mode nitrate aerosol by large-scale precipitation' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 9 ; + is_aerosol = 1 ; + aerosolType = 65533 ; + } +#Wet deposition of fine-mode nitrate aerosol by convective precipitation +'Wet deposition of fine-mode nitrate aerosol by convective precipitation' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 10 ; + is_aerosol = 1 ; + aerosolType = 65534 ; + } +#Wet deposition of coarse-mode nitrate aerosol by convective precipitation +'Wet deposition of coarse-mode nitrate aerosol by convective precipitation' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 10 ; + is_aerosol = 1 ; + aerosolType = 65533 ; + } +#Negative fixer of fine-mode nitrate aerosol +'Negative fixer of fine-mode nitrate aerosol' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 193 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Negative fixer of coarse-mode nitrate aerosol +'Negative fixer of coarse-mode nitrate aerosol' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 193 ; + is_aerosol = 1 ; + aerosolType = 65533 ; + } +#Vertically integrated mass of fine-mode nitrate aerosol +'Vertically integrated mass of fine-mode nitrate aerosol' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + is_aerosol = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfFirstFixedSurface = 1 ; + aerosolType = 65534 ; + } +#Vertically integrated mass of coarse-mode nitrate aerosol +'Vertically integrated mass of coarse-mode nitrate aerosol' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfFirstFixedSurface = 1 ; + } +#Fine-mode nitrate aerosol optical depth at 550 nm +'Fine-mode nitrate aerosol optical depth at 550 nm' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + scaleFactorOfFirstWavelength = 8 ; + is_aerosol_optical = 1 ; + typeOfSizeInterval = 255 ; + scaledValueOfFirstWavelength = 55 ; + typeOfWavelengthInterval = 11 ; + aerosolType = 65534 ; + } +#Coarse-mode nitrate aerosol optical depth at 550 nm +'Coarse-mode nitrate aerosol optical depth at 550 nm' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + typeOfWavelengthInterval = 11 ; + aerosolType = 65533 ; + scaleFactorOfFirstWavelength = 8 ; + is_aerosol_optical = 1 ; + typeOfSizeInterval = 255 ; + scaledValueOfFirstWavelength = 55 ; + } +#Source/gain of ammonium aerosol +'Source/gain of ammonium aerosol' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 192 ; + is_aerosol = 1 ; + aerosolType = 62003 ; + } +#Negative fixer of ammonium aerosol +'Negative fixer of ammonium aerosol' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 193 ; + is_aerosol = 1 ; + aerosolType = 62003 ; + } #Experimental product 'Experimental product' = { discipline = 192 ; @@ -13168,11 +13360,11 @@ discipline = 0 ; parameterCategory = 0 ; parameterNumber = 0 ; - lengthOfTimeRange = 3 ; - scaledValueOfFirstFixedSurface = 2 ; scaleFactorOfFirstFixedSurface = 0 ; typeOfStatisticalProcessing = 2 ; typeOfFirstFixedSurface = 103 ; + lengthOfTimeRange = 3 ; + scaledValueOfFirstFixedSurface = 2 ; indicatorOfUnitForTimeRange = 1 ; } #Minimum temperature at 2 metres in the last 3 hours @@ -13180,9 +13372,9 @@ discipline = 0 ; parameterCategory = 0 ; parameterNumber = 0 ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 3 ; typeOfFirstFixedSurface = 103 ; - indicatorOfUnitForTimeRange = 1 ; lengthOfTimeRange = 3 ; scaledValueOfFirstFixedSurface = 2 ; scaleFactorOfFirstFixedSurface = 0 ; @@ -15241,14 +15433,14 @@ discipline = 0 ; parameterCategory = 2 ; parameterNumber = 22 ; - scaledValueOfLowerLimit = 25 ; - productDefinitionTemplateNumber = 9 ; - typeOfFirstFixedSurface = 103 ; - scaleFactorOfLowerLimit = 0 ; - probabilityType = 3 ; typeOfStatisticalProcessing = 2 ; scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfLowerLimit = 25 ; + productDefinitionTemplateNumber = 9 ; + scaleFactorOfLowerLimit = 0 ; + typeOfFirstFixedSurface = 103 ; + probabilityType = 3 ; } #2 metre temperature less than 273.15 K '2 metre temperature less than 273.15 K' = { @@ -15261,44 +15453,44 @@ discipline = 10 ; parameterCategory = 0 ; parameterNumber = 3 ; - typeOfFirstFixedSurface = 101 ; - probabilityType = 3 ; scaleFactorOfLowerLimit = 0 ; productDefinitionTemplateNumber = 5 ; scaledValueOfLowerLimit = 2 ; + typeOfFirstFixedSurface = 101 ; + probabilityType = 3 ; } #Significant wave height of at least 4 m 'Significant wave height of at least 4 m' = { discipline = 10 ; parameterCategory = 0 ; parameterNumber = 3 ; + probabilityType = 3 ; typeOfFirstFixedSurface = 101 ; productDefinitionTemplateNumber = 5 ; scaleFactorOfLowerLimit = 0 ; scaledValueOfLowerLimit = 4 ; - probabilityType = 3 ; } #Significant wave height of at least 6 m 'Significant wave height of at least 6 m' = { discipline = 10 ; parameterCategory = 0 ; parameterNumber = 3 ; + scaleFactorOfLowerLimit = 0 ; + scaledValueOfLowerLimit = 6 ; productDefinitionTemplateNumber = 5 ; typeOfFirstFixedSurface = 101 ; probabilityType = 3 ; - scaleFactorOfLowerLimit = 0 ; - scaledValueOfLowerLimit = 6 ; } #Significant wave height of at least 8 m 'Significant wave height of at least 8 m' = { discipline = 10 ; parameterCategory = 0 ; parameterNumber = 3 ; + scaledValueOfLowerLimit = 8 ; typeOfFirstFixedSurface = 101 ; productDefinitionTemplateNumber = 5 ; scaleFactorOfLowerLimit = 0 ; probabilityType = 3 ; - scaledValueOfLowerLimit = 8 ; } #Mean wave period of at least 8 s 'Mean wave period of at least 8 s' = { diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index 73615c8cd..80eca0d7a 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -34,12 +34,12 @@ discipline = 0 ; parameterCategory = 1 ; parameterNumber = 52 ; - productDefinitionTemplateNumber = 9 ; typeOfStatisticalProcessing = 1 ; scaledValueOfLowerLimit = 100 ; probabilityType = 3 ; scaleFactorOfLowerLimit = 0 ; typeOfFirstFixedSurface = 1 ; + productDefinitionTemplateNumber = 9 ; } #Total precipitation of at least 100 mm '131085' = { @@ -316,12 +316,12 @@ discipline = 0 ; parameterCategory = 0 ; parameterNumber = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - typeOfStatisticalProcessing = 2 ; scaledValueOfFirstFixedSurface = 2 ; typeOfFirstFixedSurface = 103 ; - indicatorOfUnitForTimeRange = 1 ; lengthOfTimeRange = 24 ; + indicatorOfUnitForTimeRange = 1 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 2 ; } #Minimum temperature at 2 metres in the last 24 hours '52' = { @@ -3281,6 +3281,24 @@ parameterCategory = 210 ; parameterNumber = 246 ; } +#Nitrate fine mode aerosol mass mixing ratio +'210247' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Nitrate coarse mode aerosol mass mixing ratio +'210248' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } #Aerosol type 13 mass mixing ratio '211013' = { discipline = 192 ; @@ -6659,6 +6677,180 @@ parameterCategory = 215 ; parameterNumber = 188 ; } +#Source/gain of fine-mode nitrate aerosol +'215189' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 192 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Source/gain of coarse-mode nitrate aerosol +'215190' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 192 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } +#Dry deposition of fine-mode nitrate aerosol +'215191' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Dry deposition of coarse-mode nitrate aerosol +'215192' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } +#Sedimentation of fine-mode nitrate aerosol +'215193' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 11 ; + is_aerosol = 1 ; + aerosolType = 65534 ; + } +#Sedimentation of coarse-mode nitrate aerosol +'215194' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 11 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } +#Wet deposition of fine-mode nitrate aerosol by large-scale precipitation +'215195' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 9 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Wet deposition of coarse-mode nitrate aerosol by large-scale precipitation +'215196' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 9 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } +#Wet deposition of fine-mode nitrate aerosol by convective precipitation +'215197' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 10 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Wet deposition of coarse-mode nitrate aerosol by convective precipitation +'215198' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 10 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } +#Negative fixer of fine-mode nitrate aerosol +'215199' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 193 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Negative fixer of coarse-mode nitrate aerosol +'215200' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 193 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } +#Vertically integrated mass of fine-mode nitrate aerosol +'215201' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Vertically integrated mass of coarse-mode nitrate aerosol +'215202' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } +#Fine-mode nitrate aerosol optical depth at 550 nm +'215203' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + typeOfSizeInterval = 255 ; + aerosolType = 65534 ; + is_aerosol_optical = 1 ; + typeOfWavelengthInterval = 11 ; + scaleFactorOfFirstWavelength = 8 ; + scaledValueOfFirstWavelength = 55 ; + } +#Coarse-mode nitrate aerosol optical depth at 550 nm +'215204' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + aerosolType = 65533 ; + is_aerosol_optical = 1 ; + typeOfWavelengthInterval = 11 ; + scaleFactorOfFirstWavelength = 8 ; + scaledValueOfFirstWavelength = 55 ; + typeOfSizeInterval = 255 ; + } +#Source/gain of ammonium aerosol +'215205' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 192 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Negative fixer of ammonium aerosol +'215210' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 193 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } #Experimental product '216001' = { discipline = 192 ; @@ -13168,24 +13360,24 @@ discipline = 0 ; parameterCategory = 0 ; parameterNumber = 0 ; - typeOfFirstFixedSurface = 103 ; - scaleFactorOfFirstFixedSurface = 0 ; - indicatorOfUnitForTimeRange = 1 ; scaledValueOfFirstFixedSurface = 2 ; typeOfStatisticalProcessing = 2 ; lengthOfTimeRange = 3 ; + typeOfFirstFixedSurface = 103 ; + scaleFactorOfFirstFixedSurface = 0 ; + indicatorOfUnitForTimeRange = 1 ; } #Minimum temperature at 2 metres in the last 3 hours '228027' = { discipline = 0 ; parameterCategory = 0 ; parameterNumber = 0 ; - typeOfFirstFixedSurface = 103 ; - scaleFactorOfFirstFixedSurface = 0 ; - indicatorOfUnitForTimeRange = 1 ; scaledValueOfFirstFixedSurface = 2 ; typeOfStatisticalProcessing = 3 ; lengthOfTimeRange = 3 ; + typeOfFirstFixedSurface = 103 ; + indicatorOfUnitForTimeRange = 1 ; + scaleFactorOfFirstFixedSurface = 0 ; } #10 metre wind gust in the last 3 hours '228028' = { @@ -13265,8 +13457,8 @@ discipline = 0 ; parameterCategory = 17 ; parameterNumber = 2 ; - typeOfSecondFixedSurface = 8 ; typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; } #Instantaneous cloud-to-ground lightning flash density '228052' = { @@ -13279,11 +13471,11 @@ discipline = 0 ; parameterCategory = 17 ; parameterNumber = 2 ; + indicatorOfUnitForTimeRange = 1 ; typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; typeOfStatisticalProcessing = 0 ; lengthOfTimeRange = 1 ; - indicatorOfUnitForTimeRange = 1 ; } #Averaged cloud-to-ground lightning flash density in the last hour '228053' = { @@ -13296,11 +13488,11 @@ discipline = 0 ; parameterCategory = 17 ; parameterNumber = 4 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 0 ; typeOfSecondFixedSurface = 8 ; lengthOfTimeRange = 3 ; + indicatorOfUnitForTimeRange = 1 ; + typeOfFirstFixedSurface = 1 ; } #Averaged total lightning flash density in the last 3 hours '228057' = { @@ -13313,11 +13505,11 @@ discipline = 0 ; parameterCategory = 17 ; parameterNumber = 4 ; + typeOfStatisticalProcessing = 0 ; lengthOfTimeRange = 6 ; typeOfFirstFixedSurface = 1 ; indicatorOfUnitForTimeRange = 1 ; typeOfSecondFixedSurface = 8 ; - typeOfStatisticalProcessing = 0 ; } #Averaged total lightning flash density in the last 6 hours '228058' = { @@ -13347,11 +13539,11 @@ discipline = 0 ; parameterCategory = 17 ; parameterNumber = 2 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; typeOfStatisticalProcessing = 0 ; lengthOfTimeRange = 6 ; indicatorOfUnitForTimeRange = 1 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; } #Averaged cloud-to-ground lightning flash density in the last 6 hours '228060' = { @@ -15241,14 +15433,14 @@ discipline = 0 ; parameterCategory = 2 ; parameterNumber = 22 ; + probabilityType = 3 ; + scaleFactorOfLowerLimit = 0 ; typeOfFirstFixedSurface = 103 ; scaleFactorOfFirstFixedSurface = 0 ; scaledValueOfFirstFixedSurface = 10 ; productDefinitionTemplateNumber = 9 ; typeOfStatisticalProcessing = 2 ; scaledValueOfLowerLimit = 25 ; - scaleFactorOfLowerLimit = 0 ; - probabilityType = 3 ; } #2 metre temperature less than 273.15 K '131073' = { @@ -15283,11 +15475,11 @@ discipline = 10 ; parameterCategory = 0 ; parameterNumber = 3 ; + scaledValueOfLowerLimit = 6 ; productDefinitionTemplateNumber = 5 ; typeOfFirstFixedSurface = 101 ; scaleFactorOfLowerLimit = 0 ; probabilityType = 3 ; - scaledValueOfLowerLimit = 6 ; } #Significant wave height of at least 8 m '131077' = { diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index 6817dff9f..5e5826475 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -34,12 +34,12 @@ discipline = 0 ; parameterCategory = 1 ; parameterNumber = 52 ; - scaleFactorOfLowerLimit = 0 ; - typeOfFirstFixedSurface = 1 ; productDefinitionTemplateNumber = 9 ; typeOfStatisticalProcessing = 1 ; scaledValueOfLowerLimit = 100 ; probabilityType = 3 ; + scaleFactorOfLowerLimit = 0 ; + typeOfFirstFixedSurface = 1 ; } #Total precipitation of at least 100 mm 'tpg100' = { @@ -317,23 +317,23 @@ parameterCategory = 0 ; parameterNumber = 0 ; scaledValueOfFirstFixedSurface = 2 ; + indicatorOfUnitForTimeRange = 1 ; typeOfFirstFixedSurface = 103 ; lengthOfTimeRange = 24 ; scaleFactorOfFirstFixedSurface = 0 ; typeOfStatisticalProcessing = 2 ; - indicatorOfUnitForTimeRange = 1 ; } #Minimum temperature at 2 metres in the last 24 hours 'mn2t24' = { discipline = 0 ; parameterCategory = 0 ; parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; lengthOfTimeRange = 24 ; scaleFactorOfFirstFixedSurface = 0 ; typeOfStatisticalProcessing = 3 ; indicatorOfUnitForTimeRange = 1 ; scaledValueOfFirstFixedSurface = 2 ; - typeOfFirstFixedSurface = 103 ; } #Montgomery potential 'mont' = { @@ -3281,6 +3281,24 @@ parameterCategory = 210 ; parameterNumber = 246 ; } +#Nitrate fine mode aerosol mass mixing ratio +'aermr16' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Nitrate coarse mode aerosol mass mixing ratio +'aermr17' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } #Aerosol type 13 mass mixing ratio 'aermr13diff' = { discipline = 192 ; @@ -6659,6 +6677,180 @@ parameterCategory = 215 ; parameterNumber = 188 ; } +#Source/gain of fine-mode nitrate aerosol +'aersrcnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 192 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Source/gain of coarse-mode nitrate aerosol +'aersrcnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 192 ; + is_aerosol = 1 ; + aerosolType = 65533 ; + } +#Dry deposition of fine-mode nitrate aerosol +'aerddpnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Dry deposition of coarse-mode nitrate aerosol +'aerddpnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + is_aerosol = 1 ; + aerosolType = 65533 ; + } +#Sedimentation of fine-mode nitrate aerosol +'aersdmnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 11 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Sedimentation of coarse-mode nitrate aerosol +'aersdmnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 11 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } +#Wet deposition of fine-mode nitrate aerosol by large-scale precipitation +'aerwdlnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 9 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Wet deposition of coarse-mode nitrate aerosol by large-scale precipitation +'aerwdlnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 9 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } +#Wet deposition of fine-mode nitrate aerosol by convective precipitation +'aerwdcnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 10 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Wet deposition of coarse-mode nitrate aerosol by convective precipitation +'aerwdcnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 10 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } +#Negative fixer of fine-mode nitrate aerosol +'aerngtnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 193 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Negative fixer of coarse-mode nitrate aerosol +'aerngtnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 193 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } +#Vertically integrated mass of fine-mode nitrate aerosol +'aermssnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Vertically integrated mass of coarse-mode nitrate aerosol +'aermssnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } +#Fine-mode nitrate aerosol optical depth at 550 nm +'aerodnif' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + is_aerosol_optical = 1 ; + typeOfWavelengthInterval = 11 ; + scaleFactorOfFirstWavelength = 8 ; + scaledValueOfFirstWavelength = 55 ; + typeOfSizeInterval = 255 ; + aerosolType = 65534 ; + } +#Coarse-mode nitrate aerosol optical depth at 550 nm +'aerodnic' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + typeOfSizeInterval = 255 ; + aerosolType = 65533 ; + is_aerosol_optical = 1 ; + typeOfWavelengthInterval = 11 ; + scaleFactorOfFirstWavelength = 8 ; + scaledValueOfFirstWavelength = 55 ; + } +#Source/gain of ammonium aerosol +'aersrcam' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 192 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Negative fixer of ammonium aerosol +'aerngtam' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 193 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } #Experimental product '~' = { discipline = 192 ; @@ -13170,9 +13362,9 @@ parameterNumber = 0 ; typeOfStatisticalProcessing = 2 ; lengthOfTimeRange = 3 ; - indicatorOfUnitForTimeRange = 1 ; typeOfFirstFixedSurface = 103 ; scaleFactorOfFirstFixedSurface = 0 ; + indicatorOfUnitForTimeRange = 1 ; scaledValueOfFirstFixedSurface = 2 ; } #Minimum temperature at 2 metres in the last 3 hours @@ -13180,12 +13372,12 @@ discipline = 0 ; parameterCategory = 0 ; parameterNumber = 0 ; - indicatorOfUnitForTimeRange = 1 ; - typeOfFirstFixedSurface = 103 ; scaleFactorOfFirstFixedSurface = 0 ; + indicatorOfUnitForTimeRange = 1 ; scaledValueOfFirstFixedSurface = 2 ; typeOfStatisticalProcessing = 3 ; lengthOfTimeRange = 3 ; + typeOfFirstFixedSurface = 103 ; } #10 metre wind gust in the last 3 hours '10fg3' = { @@ -13248,11 +13440,11 @@ discipline = 0 ; parameterCategory = 17 ; parameterNumber = 4 ; + typeOfStatisticalProcessing = 0 ; + lengthOfTimeRange = 1 ; indicatorOfUnitForTimeRange = 1 ; typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 1 ; } #Averaged total lightning flash density in the last hour 'litota1' = { @@ -13279,11 +13471,11 @@ discipline = 0 ; parameterCategory = 17 ; parameterNumber = 2 ; + lengthOfTimeRange = 1 ; + typeOfSecondFixedSurface = 8 ; indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 0 ; typeOfFirstFixedSurface = 1 ; - lengthOfTimeRange = 1 ; - typeOfSecondFixedSurface = 8 ; } #Averaged cloud-to-ground lightning flash density in the last hour 'licga1' = { @@ -13296,11 +13488,11 @@ discipline = 0 ; parameterCategory = 17 ; parameterNumber = 4 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - typeOfStatisticalProcessing = 0 ; - lengthOfTimeRange = 3 ; indicatorOfUnitForTimeRange = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + typeOfSecondFixedSurface = 8 ; + lengthOfTimeRange = 3 ; } #Averaged total lightning flash density in the last 3 hours 'litota3' = { @@ -13330,11 +13522,11 @@ discipline = 0 ; parameterCategory = 17 ; parameterNumber = 2 ; + typeOfSecondFixedSurface = 8 ; typeOfStatisticalProcessing = 0 ; lengthOfTimeRange = 3 ; indicatorOfUnitForTimeRange = 1 ; typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; } #Averaged cloud-to-ground lightning flash density in the last 3 hours 'licga3' = { @@ -15241,14 +15433,14 @@ discipline = 0 ; parameterCategory = 2 ; parameterNumber = 22 ; - scaledValueOfFirstFixedSurface = 10 ; - productDefinitionTemplateNumber = 9 ; - scaleFactorOfLowerLimit = 0 ; typeOfStatisticalProcessing = 2 ; scaledValueOfLowerLimit = 25 ; typeOfFirstFixedSurface = 103 ; probabilityType = 3 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 10 ; + productDefinitionTemplateNumber = 9 ; + scaleFactorOfLowerLimit = 0 ; } #2 metre temperature less than 273.15 K '2tl273' = { @@ -15261,22 +15453,22 @@ discipline = 10 ; parameterCategory = 0 ; parameterNumber = 3 ; - scaledValueOfLowerLimit = 2 ; scaleFactorOfLowerLimit = 0 ; typeOfFirstFixedSurface = 101 ; productDefinitionTemplateNumber = 5 ; probabilityType = 3 ; + scaledValueOfLowerLimit = 2 ; } #Significant wave height of at least 4 m 'swhg4' = { discipline = 10 ; parameterCategory = 0 ; parameterNumber = 3 ; - typeOfFirstFixedSurface = 101 ; - productDefinitionTemplateNumber = 5 ; scaleFactorOfLowerLimit = 0 ; probabilityType = 3 ; scaledValueOfLowerLimit = 4 ; + productDefinitionTemplateNumber = 5 ; + typeOfFirstFixedSurface = 101 ; } #Significant wave height of at least 6 m 'swhg6' = { diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index 384725899..f4181205b 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -316,24 +316,24 @@ discipline = 0 ; parameterCategory = 0 ; parameterNumber = 0 ; + lengthOfTimeRange = 24 ; scaledValueOfFirstFixedSurface = 2 ; scaleFactorOfFirstFixedSurface = 0 ; + indicatorOfUnitForTimeRange = 1 ; typeOfFirstFixedSurface = 103 ; typeOfStatisticalProcessing = 2 ; - indicatorOfUnitForTimeRange = 1 ; - lengthOfTimeRange = 24 ; } #Minimum temperature at 2 metres in the last 24 hours 'K' = { discipline = 0 ; parameterCategory = 0 ; parameterNumber = 0 ; + typeOfStatisticalProcessing = 3 ; + indicatorOfUnitForTimeRange = 1 ; lengthOfTimeRange = 24 ; scaledValueOfFirstFixedSurface = 2 ; scaleFactorOfFirstFixedSurface = 0 ; typeOfFirstFixedSurface = 103 ; - typeOfStatisticalProcessing = 3 ; - indicatorOfUnitForTimeRange = 1 ; } #Montgomery potential 'm**2 s**-2' = { @@ -1129,8 +1129,8 @@ discipline = 0 ; parameterCategory = 1 ; parameterNumber = 52 ; - typeOfStatisticalProcessing = 1 ; typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; unitsFactor = 1000 ; } #Instantaneous eastward turbulent surface stress @@ -3281,6 +3281,24 @@ parameterCategory = 210 ; parameterNumber = 246 ; } +#Nitrate fine mode aerosol mass mixing ratio +'kg kg**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + is_aerosol = 1 ; + aerosolType = 65534 ; + } +#Nitrate coarse mode aerosol mass mixing ratio +'kg kg**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } #Aerosol type 13 mass mixing ratio 'kg kg**-1' = { discipline = 192 ; @@ -6659,6 +6677,180 @@ parameterCategory = 215 ; parameterNumber = 188 ; } +#Source/gain of fine-mode nitrate aerosol +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 192 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Source/gain of coarse-mode nitrate aerosol +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 192 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } +#Dry deposition of fine-mode nitrate aerosol +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Dry deposition of coarse-mode nitrate aerosol +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + } +#Sedimentation of fine-mode nitrate aerosol +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 11 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Sedimentation of coarse-mode nitrate aerosol +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 11 ; + is_aerosol = 1 ; + aerosolType = 65533 ; + } +#Wet deposition of fine-mode nitrate aerosol by large-scale precipitation +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 9 ; + is_aerosol = 1 ; + aerosolType = 65534 ; + } +#Wet deposition of coarse-mode nitrate aerosol by large-scale precipitation +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 9 ; + is_aerosol = 1 ; + aerosolType = 65533 ; + } +#Wet deposition of fine-mode nitrate aerosol by convective precipitation +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 10 ; + is_aerosol = 1 ; + aerosolType = 65534 ; + } +#Wet deposition of coarse-mode nitrate aerosol by convective precipitation +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 10 ; + is_aerosol = 1 ; + aerosolType = 65533 ; + } +#Negative fixer of fine-mode nitrate aerosol +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 193 ; + aerosolType = 65534 ; + is_aerosol = 1 ; + } +#Negative fixer of coarse-mode nitrate aerosol +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 193 ; + is_aerosol = 1 ; + aerosolType = 65533 ; + } +#Vertically integrated mass of fine-mode nitrate aerosol +'kg m**-2' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + is_aerosol = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfFirstFixedSurface = 1 ; + aerosolType = 65534 ; + } +#Vertically integrated mass of coarse-mode nitrate aerosol +'kg m**-2' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + aerosolType = 65533 ; + is_aerosol = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfFirstFixedSurface = 1 ; + } +#Fine-mode nitrate aerosol optical depth at 550 nm +'dimensionless' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + scaleFactorOfFirstWavelength = 8 ; + is_aerosol_optical = 1 ; + typeOfSizeInterval = 255 ; + scaledValueOfFirstWavelength = 55 ; + typeOfWavelengthInterval = 11 ; + aerosolType = 65534 ; + } +#Coarse-mode nitrate aerosol optical depth at 550 nm +'dimensionless' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + typeOfWavelengthInterval = 11 ; + aerosolType = 65533 ; + scaleFactorOfFirstWavelength = 8 ; + is_aerosol_optical = 1 ; + typeOfSizeInterval = 255 ; + scaledValueOfFirstWavelength = 55 ; + } +#Source/gain of ammonium aerosol +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 192 ; + is_aerosol = 1 ; + aerosolType = 62003 ; + } +#Negative fixer of ammonium aerosol +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 193 ; + is_aerosol = 1 ; + aerosolType = 62003 ; + } #Experimental product '~' = { discipline = 192 ; @@ -13168,21 +13360,21 @@ discipline = 0 ; parameterCategory = 0 ; parameterNumber = 0 ; - lengthOfTimeRange = 3 ; - scaledValueOfFirstFixedSurface = 2 ; scaleFactorOfFirstFixedSurface = 0 ; - indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 2 ; typeOfFirstFixedSurface = 103 ; + lengthOfTimeRange = 3 ; + scaledValueOfFirstFixedSurface = 2 ; + indicatorOfUnitForTimeRange = 1 ; } #Minimum temperature at 2 metres in the last 3 hours 'K' = { discipline = 0 ; parameterCategory = 0 ; parameterNumber = 0 ; + indicatorOfUnitForTimeRange = 1 ; typeOfStatisticalProcessing = 3 ; typeOfFirstFixedSurface = 103 ; - indicatorOfUnitForTimeRange = 1 ; lengthOfTimeRange = 3 ; scaledValueOfFirstFixedSurface = 2 ; scaleFactorOfFirstFixedSurface = 0 ; @@ -15241,14 +15433,14 @@ discipline = 0 ; parameterCategory = 2 ; parameterNumber = 22 ; - scaledValueOfLowerLimit = 25 ; - productDefinitionTemplateNumber = 9 ; - typeOfFirstFixedSurface = 103 ; - scaleFactorOfLowerLimit = 0 ; - probabilityType = 3 ; typeOfStatisticalProcessing = 2 ; scaledValueOfFirstFixedSurface = 10 ; scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfLowerLimit = 25 ; + productDefinitionTemplateNumber = 9 ; + scaleFactorOfLowerLimit = 0 ; + typeOfFirstFixedSurface = 103 ; + probabilityType = 3 ; } #2 metre temperature less than 273.15 K '%' = { @@ -15261,44 +15453,44 @@ discipline = 10 ; parameterCategory = 0 ; parameterNumber = 3 ; - typeOfFirstFixedSurface = 101 ; - probabilityType = 3 ; scaleFactorOfLowerLimit = 0 ; productDefinitionTemplateNumber = 5 ; scaledValueOfLowerLimit = 2 ; + typeOfFirstFixedSurface = 101 ; + probabilityType = 3 ; } #Significant wave height of at least 4 m '%' = { discipline = 10 ; parameterCategory = 0 ; parameterNumber = 3 ; + probabilityType = 3 ; typeOfFirstFixedSurface = 101 ; productDefinitionTemplateNumber = 5 ; scaleFactorOfLowerLimit = 0 ; scaledValueOfLowerLimit = 4 ; - probabilityType = 3 ; } #Significant wave height of at least 6 m '%' = { discipline = 10 ; parameterCategory = 0 ; parameterNumber = 3 ; + scaleFactorOfLowerLimit = 0 ; + scaledValueOfLowerLimit = 6 ; productDefinitionTemplateNumber = 5 ; typeOfFirstFixedSurface = 101 ; probabilityType = 3 ; - scaleFactorOfLowerLimit = 0 ; - scaledValueOfLowerLimit = 6 ; } #Significant wave height of at least 8 m '%' = { discipline = 10 ; parameterCategory = 0 ; parameterNumber = 3 ; + scaledValueOfLowerLimit = 8 ; typeOfFirstFixedSurface = 101 ; productDefinitionTemplateNumber = 5 ; scaleFactorOfLowerLimit = 0 ; probabilityType = 3 ; - scaledValueOfLowerLimit = 8 ; } #Mean wave period of at least 8 s '%' = { diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index 9f0c361b9..b4f8cfb91 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -305,6 +305,80 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } +#Ammonium aerosol mass mixing ratio +'Ammonium aerosol mass mixing ratio' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + is_aerosol = 1 ; + aerosolType = 62003 ; + } +#Nitrate aerosol optical depth at 550 nm +'Nitrate aerosol optical depth at 550 nm' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + typeOfWavelengthInterval = 11 ; + aerosolType = 62004 ; + typeOfSizeInterval = 255 ; + scaleFactorOfFirstWavelength = 8 ; + is_aerosol_optical = 1 ; + scaledValueOfFirstWavelength = 55 ; + } +#Ammonium aerosol optical depth at 550 nm +'Ammonium aerosol optical depth at 550 nm' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + scaledValueOfFirstWavelength = 55 ; + typeOfWavelengthInterval = 11 ; + aerosolType = 62003 ; + scaleFactorOfFirstWavelength = 8 ; + is_aerosol_optical = 1 ; + typeOfSizeInterval = 255 ; + } +#Dry deposition of ammonium aerosol +'Dry deposition of ammonium aerosol' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Sedimentation of ammonium aerosol +'Sedimentation of ammonium aerosol' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 11 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Wet deposition of ammonium aerosol by large-scale precipitation +'Wet deposition of ammonium aerosol by large-scale precipitation' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 9 ; + is_aerosol = 1 ; + aerosolType = 62003 ; + } +#Wet deposition of ammonium aerosol by convective precipitation +'Wet deposition of ammonium aerosol by convective precipitation' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 10 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Vertically integrated mass of ammonium aerosol +'Vertically integrated mass of ammonium aerosol' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #10 metre wind gust in the last 3 hours '10 metre wind gust in the last 3 hours' = { discipline = 0 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 5fdf89fa2..17221481e 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -305,6 +305,80 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } +#Ammonium aerosol mass mixing ratio +'210249' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Nitrate aerosol optical depth at 550 nm +'210250' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + typeOfSizeInterval = 255 ; + aerosolType = 62004 ; + is_aerosol_optical = 1 ; + typeOfWavelengthInterval = 11 ; + scaleFactorOfFirstWavelength = 8 ; + scaledValueOfFirstWavelength = 55 ; + } +#Ammonium aerosol optical depth at 550 nm +'210251' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + typeOfWavelengthInterval = 11 ; + scaleFactorOfFirstWavelength = 8 ; + scaledValueOfFirstWavelength = 55 ; + typeOfSizeInterval = 255 ; + aerosolType = 62003 ; + is_aerosol_optical = 1 ; + } +#Dry deposition of ammonium aerosol +'215206' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Sedimentation of ammonium aerosol +'215207' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 11 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Wet deposition of ammonium aerosol by large-scale precipitation +'215208' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 9 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Wet deposition of ammonium aerosol by convective precipitation +'215209' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 10 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Vertically integrated mass of ammonium aerosol +'215211' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfFirstFixedSurface = 1 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } #10 metre wind gust in the last 3 hours '228028' = { discipline = 0 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 9d8fdc1cf..a12f3e5a3 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -305,6 +305,80 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } +#Ammonium aerosol mass mixing ratio +'aermr18' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Nitrate aerosol optical depth at 550 nm +'niaod550' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + is_aerosol_optical = 1 ; + typeOfWavelengthInterval = 11 ; + scaleFactorOfFirstWavelength = 8 ; + scaledValueOfFirstWavelength = 55 ; + typeOfSizeInterval = 255 ; + aerosolType = 62004 ; + } +#Ammonium aerosol optical depth at 550 nm +'amaod550' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + typeOfWavelengthInterval = 11 ; + scaleFactorOfFirstWavelength = 8 ; + scaledValueOfFirstWavelength = 55 ; + typeOfSizeInterval = 255 ; + aerosolType = 62003 ; + is_aerosol_optical = 1 ; + } +#Dry deposition of ammonium aerosol +'aerddpam' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Sedimentation of ammonium aerosol +'aersdmam' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 11 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Wet deposition of ammonium aerosol by large-scale precipitation +'aerwdlam' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 9 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Wet deposition of ammonium aerosol by convective precipitation +'aerwdcam' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 10 ; + is_aerosol = 1 ; + aerosolType = 62003 ; + } +#Vertically integrated mass of ammonium aerosol +'aermssam' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + is_aerosol = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfFirstFixedSurface = 1 ; + aerosolType = 62003 ; + } #10 metre wind gust in the last 3 hours '10fg3' = { discipline = 0 ; diff --git a/definitions/grib2/tables/local/ecmf/1/4.2.0.20.table b/definitions/grib2/tables/local/ecmf/1/4.2.0.20.table new file mode 100644 index 000000000..30b94d7a7 --- /dev/null +++ b/definitions/grib2/tables/local/ecmf/1/4.2.0.20.table @@ -0,0 +1,3 @@ +# Code table 4.2 - discipline=0 category=20 for ECMWF +192 192 Source/gain (kg m-2 s-1) +193 193 Negative Fixer (kg m-2 s-1) diff --git a/definitions/grib2/tables/local/ecmf/1/4.233.table b/definitions/grib2/tables/local/ecmf/1/4.233.table new file mode 100644 index 000000000..9deeecdfa --- /dev/null +++ b/definitions/grib2/tables/local/ecmf/1/4.233.table @@ -0,0 +1,3 @@ +# Code table 4.233 - Aerosol type for ECMWF +65533 65533 Nitrate Coarse Mode +65534 65534 Nitrate Fine Mode diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 0c8e4fc7c..7e033df6a 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -305,6 +305,80 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } +#Ammonium aerosol mass mixing ratio +'kg kg**-1' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 2 ; + is_aerosol = 1 ; + aerosolType = 62003 ; + } +#Nitrate aerosol optical depth at 550 nm +'dimensionless' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + typeOfWavelengthInterval = 11 ; + aerosolType = 62004 ; + typeOfSizeInterval = 255 ; + scaleFactorOfFirstWavelength = 8 ; + is_aerosol_optical = 1 ; + scaledValueOfFirstWavelength = 55 ; + } +#Ammonium aerosol optical depth at 550 nm +'dimensionless' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 102 ; + scaledValueOfFirstWavelength = 55 ; + typeOfWavelengthInterval = 11 ; + aerosolType = 62003 ; + scaleFactorOfFirstWavelength = 8 ; + is_aerosol_optical = 1 ; + typeOfSizeInterval = 255 ; + } +#Dry deposition of ammonium aerosol +'kg m**-2 s**-1' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Sedimentation of ammonium aerosol +'kg m**-2 s**-1' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 11 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Wet deposition of ammonium aerosol by large-scale precipitation +'kg m**-2 s**-1' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 9 ; + is_aerosol = 1 ; + aerosolType = 62003 ; + } +#Wet deposition of ammonium aerosol by convective precipitation +'kg m**-2 s**-1' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 10 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + } +#Vertically integrated mass of ammonium aerosol +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 1 ; + aerosolType = 62003 ; + is_aerosol = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #10 metre wind gust in the last 3 hours 'm s**-1' = { discipline = 0 ; From 74ac44013cd1c3dd378adcd49c0b0268b585ab5d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 25 Feb 2019 16:45:52 +0000 Subject: [PATCH 139/414] ECC-817: grib_ls for GRIB1 has problems dealing with mars.step when it's unaliased --- src/grib_accessor_class_validity_date.c | 6 +++++- src/grib_accessor_class_validity_time.c | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/grib_accessor_class_validity_date.c b/src/grib_accessor_class_validity_date.c index 696160d14..f1099f6c5 100644 --- a/src/grib_accessor_class_validity_date.c +++ b/src/grib_accessor_class_validity_date.c @@ -216,7 +216,11 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len) } if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->date,&date))!=GRIB_SUCCESS) return ret; if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->time,&time))!=GRIB_SUCCESS) return ret; - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->step,&step))!=GRIB_SUCCESS) return ret; + if ((ret=grib_get_long(grib_handle_of_accessor(a), self->step,&step))!=GRIB_SUCCESS) { + if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), "endStep",&step))!=GRIB_SUCCESS) { + return ret; /* See ECC-817 */ + } + } if (self->stepUnits) { if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->stepUnits,&stepUnits))!=GRIB_SUCCESS) return ret; diff --git a/src/grib_accessor_class_validity_time.c b/src/grib_accessor_class_validity_time.c index 3666cf71d..a2be5ede4 100644 --- a/src/grib_accessor_class_validity_time.c +++ b/src/grib_accessor_class_validity_time.c @@ -211,7 +211,11 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len) } if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->date,&date))!=GRIB_SUCCESS) return ret; if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->time,&time))!=GRIB_SUCCESS) return ret; - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->step,&step))!=GRIB_SUCCESS) return ret; + if ((ret=grib_get_long(grib_handle_of_accessor(a), self->step,&step))!=GRIB_SUCCESS) { + if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), "endStep",&step))!=GRIB_SUCCESS) { + return ret; /* See ECC-817 */ + } + } /* Seconds will always be zero. So convert to minutes */ if (self->stepUnits) { From e0f7c8bd91249f25c4cb9f62ab99252b7b7d9d36 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 25 Feb 2019 16:52:51 +0000 Subject: [PATCH 140/414] Clean up --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index 7d23e966e..2f3f623d6 100644 --- a/.gitignore +++ b/.gitignore @@ -118,7 +118,6 @@ data/bufr/*decode data/bufr/*test *.sublime-workspace -*.old .idea build/ From 3492d922eaa1ac0f07931f85c3ca3cccc0593ef1 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 26 Feb 2019 13:34:54 +0000 Subject: [PATCH 141/414] ECC-902: UERRA: wind speed fields match different paramIds --- definitions/grib2/cfVarName.def | 32 ++++++++++++++++++++++++++------ definitions/grib2/name.def | 32 ++++++++++++++++++++++++++------ definitions/grib2/paramId.def | 32 ++++++++++++++++++++++++++------ definitions/grib2/shortName.def | 32 ++++++++++++++++++++++++++------ definitions/grib2/units.def | 32 ++++++++++++++++++++++++++------ 5 files changed, 130 insertions(+), 30 deletions(-) diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index 0b8ce5d07..470be6fab 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -11,6 +11,32 @@ typeOfFirstFixedSurface = 1 ; productDefinitionTemplateNumber = 9 ; } +#Wind speed +'ws' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + } +#Wind speed +'ws' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + is_uerra = 1 ; + scaledValueOfFirstFixedSurface = 100 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfFirstFixedSurface = 103 ; + } +#Wind speed +'ws' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + scaledValueOfFirstFixedSurface = 200 ; + is_uerra = 1 ; + typeOfFirstFixedSurface = 103 ; + scaleFactorOfFirstFixedSurface = 0 ; + } #Unbalanced component of temperature 'uctp' = { discipline = 0 ; @@ -1299,12 +1325,6 @@ parameterCategory = 0 ; parameterNumber = 2 ; } -#Wind speed -'ws' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - } #Pressure 'pres' = { discipline = 0 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index b4f8cfb91..fdae428a9 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -11,6 +11,32 @@ probabilityType = 3 ; typeOfStatisticalProcessing = 1 ; } +#Wind speed +'Wind speed' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + } +#Wind speed +'Wind speed' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 100 ; + typeOfFirstFixedSurface = 103 ; + is_uerra = 1 ; + } +#Wind speed +'Wind speed' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + is_uerra = 1 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 200 ; + scaleFactorOfFirstFixedSurface = 0 ; + } #Unbalanced component of temperature 'Unbalanced component of temperature' = { discipline = 0 ; @@ -1299,12 +1325,6 @@ parameterCategory = 0 ; parameterNumber = 2 ; } -#Wind speed -'Wind speed' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - } #Pressure 'Pressure' = { discipline = 0 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 17221481e..30e686c74 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -11,6 +11,32 @@ scaleFactorOfLowerLimit = 0 ; typeOfFirstFixedSurface = 1 ; } +#Wind speed +'10' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + } +#Wind speed +'10' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfFirstFixedSurface = 103 ; + is_uerra = 1 ; + scaledValueOfFirstFixedSurface = 100 ; + } +#Wind speed +'10' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + is_uerra = 1 ; + typeOfFirstFixedSurface = 103 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 200 ; + } #Unbalanced component of temperature '21' = { discipline = 0 ; @@ -1299,12 +1325,6 @@ parameterCategory = 0 ; parameterNumber = 2 ; } -#Wind speed -'10' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - } #Pressure '54' = { discipline = 0 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index a12f3e5a3..567bcfd3f 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -11,6 +11,32 @@ typeOfFirstFixedSurface = 1 ; productDefinitionTemplateNumber = 9 ; } +#Wind speed +'ws' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + } +#Wind speed +'ws' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + is_uerra = 1 ; + scaledValueOfFirstFixedSurface = 100 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfFirstFixedSurface = 103 ; + } +#Wind speed +'ws' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + scaledValueOfFirstFixedSurface = 200 ; + is_uerra = 1 ; + typeOfFirstFixedSurface = 103 ; + scaleFactorOfFirstFixedSurface = 0 ; + } #Unbalanced component of temperature 'uctp' = { discipline = 0 ; @@ -1299,12 +1325,6 @@ parameterCategory = 0 ; parameterNumber = 2 ; } -#Wind speed -'ws' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - } #Pressure 'pres' = { discipline = 0 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 7e033df6a..53015d70e 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -11,6 +11,32 @@ probabilityType = 3 ; typeOfStatisticalProcessing = 1 ; } +#Wind speed +'m s**-1' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + } +#Wind speed +'m s**-1' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 100 ; + typeOfFirstFixedSurface = 103 ; + is_uerra = 1 ; + } +#Wind speed +'m s**-1' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 1 ; + is_uerra = 1 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 200 ; + scaleFactorOfFirstFixedSurface = 0 ; + } #Unbalanced component of temperature 'K' = { discipline = 0 ; @@ -1299,12 +1325,6 @@ parameterCategory = 0 ; parameterNumber = 2 ; } -#Wind speed -'m s**-1' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - } #Pressure 'Pa' = { discipline = 0 ; From 5bac99bc738e80917c2d1a51a180538908a7ef27 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 28 Feb 2019 11:25:20 +0000 Subject: [PATCH 142/414] Write errors to stderr not stdout. Also use const --- src/grib_accessor_class_data_ccsds_packing.c | 4 ++-- tools/grib_compare.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/grib_accessor_class_data_ccsds_packing.c b/src/grib_accessor_class_data_ccsds_packing.c index 652f96406..fbed2e6ab 100644 --- a/src/grib_accessor_class_data_ccsds_packing.c +++ b/src/grib_accessor_class_data_ccsds_packing.c @@ -285,7 +285,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len) if((err = aec_buffer_decode(&strm)) != AEC_OK) { - printf("aec_buffer_decode Error %d\n", err); + fprintf(stderr, "aec_buffer_decode Error %d\n", err); err = GRIB_ENCODING_ERROR; goto cleanup; } @@ -496,7 +496,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len) if((err = aec_buffer_encode(&strm)) != AEC_OK) { - printf("aec_buffer_encode Error %d\n", err); + fprintf(stderr,"aec_buffer_encode Error %d\n", err); err = GRIB_ENCODING_ERROR; goto cleanup; } diff --git a/tools/grib_compare.c b/tools/grib_compare.c index 7cefdb09e..3c31af3fd 100644 --- a/tools/grib_compare.c +++ b/tools/grib_compare.c @@ -180,7 +180,7 @@ int grib_tool_init(grib_runtime_options* options) { int ret=0,i=0; int nfiles=1; - char orderby[]="md5Headers"; + const char orderby[]="md5Headers"; grib_context* context=grib_context_get_default(); options->strict=1; @@ -238,7 +238,7 @@ int grib_tool_init(grib_runtime_options* options) options->idx=grib_fieldset_new_from_files(context,filename, nfiles,0,0,0,orderby,&ret); if (ret) { - printf("unable to create index for input file %s (%s)", + fprintf(stderr, "Unable to create index for input file %s (%s)", options->infile_extra->name,grib_get_error_message(ret)); exit(ret); } From 974999976e179a3ac236dcf23fbe93b94980b1a4 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 28 Feb 2019 12:19:28 +0000 Subject: [PATCH 143/414] Use fopen in binary mode (Windows support) --- tests/bufr_ecc-517.c | 2 +- tests/bufr_get_element.c | 2 +- tests/bufr_keys_iter.c | 2 +- tests/gauss_sub.c | 4 +- tests/grib_double_cmp.c | 2 +- tests/grib_ecc-386.c | 4 +- tests/grib_util_set_spec.c | 12 ++-- tests/read_any.c | 121 +++++++++++++++++++------------------ 8 files changed, 76 insertions(+), 73 deletions(-) diff --git a/tests/bufr_ecc-517.c b/tests/bufr_ecc-517.c index 54ca05e79..d6515232a 100644 --- a/tests/bufr_ecc-517.c +++ b/tests/bufr_ecc-517.c @@ -90,7 +90,7 @@ int main(int argc, char** argv) /* Encode the keys back in the data section */ CODES_CHECK(codes_set_long(h, "pack", 1), 0); - fout = fopen(outfilename, "w"); + fout = fopen(outfilename, "wb"); if (!fout) { fprintf(stderr, "Failed to open (create) output file.\n"); return 1; diff --git a/tests/bufr_get_element.c b/tests/bufr_get_element.c index 1de3588a3..ca44af265 100644 --- a/tests/bufr_get_element.c +++ b/tests/bufr_get_element.c @@ -29,7 +29,7 @@ int main(int argc,char* argv[]) const char* key_name = "#5#brightnessTemperature"; const double tolerance = 1e-6; - in=fopen(infile,"r"); + in=fopen(infile,"rb"); assert(in); while ((h = codes_handle_new_from_file(NULL, in, PRODUCT_BUFR, &err)) != NULL || err != CODES_SUCCESS) diff --git a/tests/bufr_keys_iter.c b/tests/bufr_keys_iter.c index ce7df3b77..eb38feb73 100644 --- a/tests/bufr_keys_iter.c +++ b/tests/bufr_keys_iter.c @@ -46,7 +46,7 @@ int main(int argc,char* argv[]) } assert(input_filename); - f = fopen(input_filename, "r"); + f = fopen(input_filename, "rb"); assert(f); h = codes_handle_new_from_file(NULL, f, PRODUCT_BUFR, &err); assert(h); diff --git a/tests/gauss_sub.c b/tests/gauss_sub.c index 6941d74c9..a9e8ee5a8 100644 --- a/tests/gauss_sub.c +++ b/tests/gauss_sub.c @@ -38,13 +38,13 @@ int main(int argc, char* argv[]) { infile1=argv[1]; infile2=argv[2]; - f1=fopen(infile1,"r"); + f1=fopen(infile1,"rb"); if (!f1) { perror(infile1); exit(1); } - f2=fopen(infile2,"r"); + f2=fopen(infile2,"rb"); if (!f2) { perror(infile2); exit(1); diff --git a/tests/grib_double_cmp.c b/tests/grib_double_cmp.c index bbec47ca5..bbd0b02d9 100644 --- a/tests/grib_double_cmp.c +++ b/tests/grib_double_cmp.c @@ -36,7 +36,7 @@ int main(int argc, char** argv) if (argc<2) usage(argv[0]); filename=argv[1]; - in = fopen(filename,"r"); + in = fopen(filename,"rb"); if(!in) { printf("ERROR: unable to open file %s\n",filename); return 1; diff --git a/tests/grib_ecc-386.c b/tests/grib_ecc-386.c index 5883b2e57..a51cd1f07 100644 --- a/tests/grib_ecc-386.c +++ b/tests/grib_ecc-386.c @@ -36,13 +36,13 @@ int main(int argc, char** argv) if (argc<2) usage(argv[0]); - in = fopen(argv[1],"r"); + in = fopen(argv[1],"rb"); if(!in) { printf("ERROR: unable to open file %s\n",argv[1]); return 1; } - /* create new handle from a message in a file*/ + /* create new handle */ err = 0; h = grib_handle_new_from_file(0,in,&err); if (h == NULL) { diff --git a/tests/grib_util_set_spec.c b/tests/grib_util_set_spec.c index c736a65e0..beed53378 100644 --- a/tests/grib_util_set_spec.c +++ b/tests/grib_util_set_spec.c @@ -51,7 +51,7 @@ static void test_reduced_gg(int remove_local_def, int edition, const char* packi grib_util_packing_spec packing_spec={0,}; assert(input_filename); - in = fopen(input_filename,"r"); assert(in); + in = fopen(input_filename,"rb"); assert(in); handle = grib_handle_new_from_file(0,in,&err); assert(handle); CODES_CHECK(grib_get_string(handle, "gridType", gridType, &slen),0); @@ -60,7 +60,7 @@ static void test_reduced_gg(int remove_local_def, int edition, const char* packi return; } assert(output_filename); - out = fopen(output_filename,"w"); assert(out); + out = fopen(output_filename,"wb"); assert(out); CODES_CHECK(grib_get_size(handle,"values",&inlen), 0); values = (double*)malloc(sizeof(double)*inlen); @@ -155,7 +155,7 @@ static void test_regular_ll(int remove_local_def, int edition, const char* packi grib_util_packing_spec packing_spec={0,}; assert(input_filename); - in = fopen(input_filename,"r"); assert(in); + in = fopen(input_filename,"rb"); assert(in); handle = codes_handle_new_from_file(0, in, PRODUCT_GRIB, &err); assert(handle); CODES_CHECK(codes_get_long(handle, "edition", &input_edition), 0); @@ -166,7 +166,7 @@ static void test_regular_ll(int remove_local_def, int edition, const char* packi return; } assert(output_filename); - out = fopen(output_filename,"w"); assert(out); + out = fopen(output_filename,"wb"); assert(out); CODES_CHECK(codes_get_size(handle,"values",&inlen), 0); values = (double*)malloc(sizeof(double)*inlen); @@ -255,7 +255,7 @@ static void test_grid_complex_spatial_differencing(int remove_local_def, int edi grib_util_grid_spec spec={0,}; grib_util_packing_spec packing_spec={0,}; - in = fopen(input_filename,"r"); assert(in); + in = fopen(input_filename,"rb"); assert(in); handle = codes_handle_new_from_file(0, in, PRODUCT_GRIB, &err); assert(handle); CODES_CHECK(grib_get_string(handle, "packingType", gridType, &slen),0); @@ -263,7 +263,7 @@ static void test_grid_complex_spatial_differencing(int remove_local_def, int edi grib_handle_delete(handle); return; } - out = fopen(output_filename,"w"); assert(out); + out = fopen(output_filename,"wb"); assert(out); CODES_CHECK(codes_get_size(handle,"values",&inlen), 0); values = (double*)malloc(sizeof(double)*inlen); diff --git a/tests/read_any.c b/tests/read_any.c index 6b8a81f99..e292b01fc 100644 --- a/tests/read_any.c +++ b/tests/read_any.c @@ -9,71 +9,74 @@ */ #include "grib_api_internal.h" -static void usage(const char* prog) { - printf("usage: %s infile\n",prog); - exit(1); +static void usage (const char *prog) +{ + printf ("usage: %s infile\n", prog); + exit (1); } static unsigned char buffer[50000000]; -int main(int argc,char* argv[]) { +int main (int argc, char *argv[]) +{ + char *filename; + FILE *f; + grib_handle *h = NULL; + grib_context *c; + size_t size = 0; + int ret = 0; + size_t bufsize = sizeof (buffer); + long count, step, edition, totalLength; + char gridType[50], levelType[50], level[50], shortName[50]; + size_t gridTypelen = sizeof (gridType); + size_t levelTypelen = sizeof (levelType); + size_t levellen = sizeof (level); + size_t shortNamelen = sizeof (shortName); + size_t len; - char* filename; - FILE* f; - grib_handle* h=NULL; - grib_context* c; - size_t size=0; - int ret=0; - size_t bufsize=sizeof(buffer); - long count,step,edition,totalLength; - char gridType[50],levelType[50],level[50],shortName[50]; - size_t gridTypelen=sizeof(gridType); - size_t levelTypelen=sizeof(levelType); - size_t levellen=sizeof(level); - size_t shortNamelen=sizeof(shortName); - size_t len; + if (argc != 2) + usage (argv[0]); + filename = argv[1]; - if (argc!=2) usage(argv[0]); - filename=argv[1]; + f = fopen (filename, "rb"); + if (!f) { + perror (filename); + exit (1); + } + c = grib_context_get_default (); - f=fopen(filename,"r"); - if (!f) { - perror(filename); - exit(1); - } - c=grib_context_get_default(); - - size=bufsize; - count=1; - while ((ret=grib_read_any_from_file(c,f,buffer,&size))==GRIB_SUCCESS) { - if ((1)) { - h=grib_handle_new_from_message_copy(c,buffer,size); - if (!h) { - printf("unable to new from message\n"); - exit(1); - } else { - grib_get_long(h,"edition",&edition); - grib_get_long(h,"step",&step); - grib_get_long(h,"totalLength",&totalLength); - len=gridTypelen; - grib_get_string(h,"gridType",gridType,&len); - len=levelTypelen; - GRIB_CHECK(grib_get_string(h,"levelType",levelType,&len),0); - len=levellen; - grib_get_string(h,"level",level,&len); - len=shortNamelen; - grib_get_string(h,"shortName",shortName,&len); - printf("- %3ld -\t ed=%ld\t size=%8ld totalLength=%8ld \t %s\t %s\t %s\t level=%s\t step=%ld\n", - count, edition, (long)size, totalLength, shortName, gridType, levelType, level, step); - grib_handle_delete(h); - } - } else { - printf("MESSAGE #%ld\n",count); - } - size=bufsize; - count++; - } - - return 0; + size = bufsize; + count = 1; + while ((ret = grib_read_any_from_file (c, f, buffer, &size)) == GRIB_SUCCESS) { + if ((1)) { + h = grib_handle_new_from_message_copy (c, buffer, size); + if (!h) { + printf ("unable to new from message\n"); + exit (1); + } + else { + grib_get_long (h, "edition", &edition); + grib_get_long (h, "step", &step); + grib_get_long (h, "totalLength", &totalLength); + len = gridTypelen; + grib_get_string (h, "gridType", gridType, &len); + len = levelTypelen; + GRIB_CHECK (grib_get_string (h, "levelType", levelType, &len), 0); + len = levellen; + grib_get_string (h, "level", level, &len); + len = shortNamelen; + grib_get_string (h, "shortName", shortName, &len); + printf ("- %3ld -\t ed=%ld\t size=%8ld totalLength=%8ld \t %s\t %s\t %s\t level=%s\t step=%ld\n", + count, edition, (long) size, totalLength, shortName, gridType, levelType, level, step); + grib_handle_delete (h); + } + } + else { + printf ("MESSAGE #%ld\n", count); + } + size = bufsize; + count++; + } + return 0; } From 79de511928da99c2b8cad8dfea77d182cd22b427 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 1 Mar 2019 13:46:13 +0000 Subject: [PATCH 144/414] Add size of array as comment --- src/grib_dumper_class_bufr_encode_python.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/grib_dumper_class_bufr_encode_python.c b/src/grib_dumper_class_bufr_encode_python.c index 8410f9996..7d1580fbc 100644 --- a/src/grib_dumper_class_bufr_encode_python.c +++ b/src/grib_dumper_class_bufr_encode_python.c @@ -205,7 +205,8 @@ static void dump_values(grib_dumper* d,grib_accessor* a) depth-=2; /* Note: In Python to make a tuple with one element, you need the trailing comma */ - fprintf(self->dumper.out,",)\n"); + if (size > 4) fprintf(self->dumper.out,",) # %ld values\n", size); + else fprintf(self->dumper.out,",)\n"); grib_context_free(c,values); if ((r=compute_bufr_key_rank(h,self->keys,a->name))!=0) @@ -286,7 +287,8 @@ static void dump_values_attribute(grib_dumper* d,grib_accessor* a, const char* p depth-=2; /* Note: In python to make a tuple with one element, you need the trailing comma */ - fprintf(self->dumper.out,",)\n"); + if (size > 4) fprintf(self->dumper.out,",) # %ld values\n", size); + else fprintf(self->dumper.out,",)\n"); grib_context_free(c,values); fprintf(self->dumper.out," codes_set_array(ibufr, '%s->%s' \n, rvalues)\n",prefix,a->name); @@ -372,7 +374,8 @@ static void dump_long(grib_dumper* d, grib_accessor* a, const char* comment) depth-=2; /* Note: In python to make a tuple with one element, you need the trailing comma */ - fprintf(self->dumper.out,",)\n"); + if (size > 4) fprintf(self->dumper.out,",) # %ld values\n", size); + else fprintf(self->dumper.out,",)\n"); grib_context_free(a->context,values); if ((r=compute_bufr_key_rank(h,self->keys,a->name))!=0) { @@ -457,7 +460,8 @@ static void dump_long_attribute(grib_dumper* d, grib_accessor* a, const char* pr depth-=2; /* Note: In python to make a tuple with one element, you need the trailing comma */ - fprintf(self->dumper.out,",)\n"); + if (size > 4) fprintf(self->dumper.out,",) # %ld values\n", size); + else fprintf(self->dumper.out,",)\n"); grib_context_free(a->context,values); fprintf(self->dumper.out," codes_set_array(ibufr, '%s->%s', ivalues)\n",prefix,a->name); @@ -691,7 +695,8 @@ static void _dump_long_array(grib_handle* h, FILE* f, const char* key, const cha } if (icount>cols) {fprintf(f," \n ");} /* Note: In python to make a tuple with one element, you need the trailing comma */ - fprintf(f,"%ld ,)\n",val[size-1]); + if (size > 4) fprintf(f,"%ld ,) # %ld values\n",val[size-1], size); + else fprintf(f,"%ld ,)\n",val[size-1]); grib_context_free(h->context,val); fprintf(f," codes_set_array(ibufr, '%s', ivalues)\n",print_key); From 25595620b8dedd3e72744090c92d89747b23330b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 11 Mar 2019 12:24:43 +0000 Subject: [PATCH 145/414] Python examples: Fix keys iterator argument --- examples/python/grib_keys_iterator.py | 2 +- examples/python/grib_ls_JSON.py | 2 +- examples/python/keys_iterator_gts.py | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/examples/python/grib_keys_iterator.py b/examples/python/grib_keys_iterator.py index fe4607ea8..0e834f4a0 100644 --- a/examples/python/grib_keys_iterator.py +++ b/examples/python/grib_keys_iterator.py @@ -39,7 +39,7 @@ def example(): while codes_keys_iterator_next(iterid): keyname = codes_keys_iterator_get_name(iterid) - keyval = codes_get_string(iterid, keyname) + keyval = codes_get_string(gid, keyname) print("%s = %s" % (keyname, keyval)) codes_keys_iterator_delete(iterid) diff --git a/examples/python/grib_ls_JSON.py b/examples/python/grib_ls_JSON.py index 377cbecf8..c179c198b 100644 --- a/examples/python/grib_ls_JSON.py +++ b/examples/python/grib_ls_JSON.py @@ -44,7 +44,7 @@ def do_print(namespace, INPUT): f1 = True while codes_keys_iterator_next(iterid): keyname = codes_keys_iterator_get_name(iterid) - keyval = codes_get_string(iterid, keyname) + keyval = codes_get_string(gid, keyname) if not f1: print(',') else: diff --git a/examples/python/keys_iterator_gts.py b/examples/python/keys_iterator_gts.py index 8d5ae116c..7a3277717 100644 --- a/examples/python/keys_iterator_gts.py +++ b/examples/python/keys_iterator_gts.py @@ -23,11 +23,11 @@ def example(): f = open(INPUT, 'rb') while 1: - bid = gts_new_from_file(f) - if bid is None: + gid = gts_new_from_file(f) + if gid is None: break - iterid = codes_keys_iterator_new(bid) + iterid = codes_keys_iterator_new(gid) # Different types of keys can be skipped # codes_skip_computed(iterid) @@ -36,11 +36,11 @@ def example(): while codes_keys_iterator_next(iterid): keyname = codes_keys_iterator_get_name(iterid) - keyval = codes_get_string(iterid, keyname) + keyval = codes_get_string(gid, keyname) print("%s = %s" % (keyname, keyval)) codes_keys_iterator_delete(iterid) - codes_release(bid) + codes_release(gid) f.close() From a77570cd19f1ed5cee467f591454bc77beacadee Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 11 Mar 2019 12:53:05 +0000 Subject: [PATCH 146/414] C examples: binary open --- examples/C/box.c | 2 +- examples/C/bufr_attributes.c | 2 +- examples/C/bufr_clone.c | 4 ++-- examples/C/bufr_copy_data.c | 2 +- examples/C/bufr_expanded.c | 2 +- examples/C/bufr_get_keys.c | 2 +- examples/C/bufr_get_string_array.c | 2 +- examples/C/bufr_keys_iterator.c | 2 +- examples/C/bufr_missing.c | 3 +-- examples/C/bufr_pthreads.c | 2 +- examples/C/bufr_read_header.c | 2 +- examples/C/bufr_read_scatterometer.c | 2 +- examples/C/bufr_read_synop.c | 2 +- examples/C/bufr_read_temp.c | 2 +- examples/C/bufr_set_keys.c | 4 ++-- examples/C/bufr_subset.c | 2 +- examples/C/get_product_kind.c | 2 +- examples/C/grib_clone.c | 4 ++-- examples/C/grib_copy_message.c | 2 +- examples/C/grib_get_data.c | 2 +- examples/C/grib_get_keys.c | 2 +- examples/C/grib_iterator.c | 2 +- examples/C/grib_iterator_bitmap.c | 2 +- examples/C/grib_keys_iterator.c | 2 +- examples/C/grib_list.c | 2 +- examples/C/grib_multi.c | 2 +- examples/C/grib_multi_write.c | 2 +- examples/C/grib_precision.c | 4 ++-- examples/C/grib_print_data.c | 2 +- examples/C/grib_set_bitmap.c | 4 ++-- examples/C/grib_set_keys.c | 4 ++-- examples/C/grib_set_pv.c | 4 ++-- examples/C/multi2.c | 2 +- examples/C/new_sample.c | 2 +- examples/C/points.c | 2 +- examples/C/sections_copy.c | 4 ++-- examples/C/set_missing.c | 4 ++-- examples/C/values_check.c | 2 +- 38 files changed, 47 insertions(+), 48 deletions(-) diff --git a/examples/C/box.c b/examples/C/box.c index 1c7a02ee9..9b1bf05f3 100644 --- a/examples/C/box.c +++ b/examples/C/box.c @@ -28,7 +28,7 @@ int main(int argc, char* argv[]) west=-10; east=30; - f=fopen(infile,"r"); + f=fopen(infile,"rb"); if (!f) { perror(infile); exit(1); diff --git a/examples/C/bufr_attributes.c b/examples/C/bufr_attributes.c index d387b8f18..b7e86eba0 100644 --- a/examples/C/bufr_attributes.c +++ b/examples/C/bufr_attributes.c @@ -34,7 +34,7 @@ int main(int argc,char* argv[]) int cnt=0; const char* infile = "../../data/bufr/syno_multi.bufr"; - in=fopen(infile,"r"); + in=fopen(infile,"rb"); if (!in) { printf("ERROR: unable to open file %s\n", infile); return 1; diff --git a/examples/C/bufr_clone.c b/examples/C/bufr_clone.c index c5ddc3405..35a1f8c9f 100644 --- a/examples/C/bufr_clone.c +++ b/examples/C/bufr_clone.c @@ -40,8 +40,8 @@ int main(int argc, char *argv[]) return 1; } - in = fopen(argv[1],"r"); - out = fopen(argv[2],"w"); + in = fopen(argv[1],"rb"); + out = fopen(argv[2],"wb"); /* open input and output */ if (!in || !out) { diff --git a/examples/C/bufr_copy_data.c b/examples/C/bufr_copy_data.c index bafa95899..6dc731b8a 100644 --- a/examples/C/bufr_copy_data.c +++ b/examples/C/bufr_copy_data.c @@ -46,7 +46,7 @@ int main(int argc, char *argv[]) outfile=argv[2]; - f = fopen(argv[1],"r"); + f = fopen(argv[1],"rb"); if(!f) { perror(argv[1]); exit(1); diff --git a/examples/C/bufr_expanded.c b/examples/C/bufr_expanded.c index b339d9c25..c494bcced 100644 --- a/examples/C/bufr_expanded.c +++ b/examples/C/bufr_expanded.c @@ -40,7 +40,7 @@ int main(int argc,char* argv[]) filename=argv[1]; /* open bufr file */ - in=fopen(filename,"r"); + in=fopen(filename,"rb"); if (!in) { printf("ERROR: unable to open file %s\n", filename); return 1; diff --git a/examples/C/bufr_get_keys.c b/examples/C/bufr_get_keys.c index f3c844d17..8f2343e03 100644 --- a/examples/C/bufr_get_keys.c +++ b/examples/C/bufr_get_keys.c @@ -34,7 +34,7 @@ int main(int argc,char* argv[]) int cnt=0; const char* infile = "../../data/bufr/syno_multi.bufr"; - in=fopen(infile,"r"); + in=fopen(infile,"rb"); if (!in) { printf("ERROR: unable to open file %s\n", infile); return 1; diff --git a/examples/C/bufr_get_string_array.c b/examples/C/bufr_get_string_array.c index bc3ee165e..458b60447 100644 --- a/examples/C/bufr_get_string_array.c +++ b/examples/C/bufr_get_string_array.c @@ -27,7 +27,7 @@ int main(int argc,char* argv[]) char** strArray = NULL; /* array of strings */ const char* infile = "../../data/bufr/pgps_110.bufr"; - FILE* in = fopen(infile,"r"); + FILE* in = fopen(infile,"rb"); if (!in) { printf("ERROR: unable to open file %s\n", infile); return 1; diff --git a/examples/C/bufr_keys_iterator.c b/examples/C/bufr_keys_iterator.c index 69c6b1494..386dd5a4a 100644 --- a/examples/C/bufr_keys_iterator.c +++ b/examples/C/bufr_keys_iterator.c @@ -44,7 +44,7 @@ int main(int argc,char* argv[]) filename=argv[1]; - in=fopen(filename,"r"); + in=fopen(filename,"rb"); if (!in) { printf("ERROR: unable to open file %s\n", filename); return 1; diff --git a/examples/C/bufr_missing.c b/examples/C/bufr_missing.c index c65f750ab..ed7c5581c 100644 --- a/examples/C/bufr_missing.c +++ b/examples/C/bufr_missing.c @@ -12,7 +12,6 @@ * C Implementation: bufr_missing * * Description: how to handle missing values in BUFR messages. - * */ #include "eccodes.h" @@ -30,7 +29,7 @@ int main(int argc,char* argv[]) int cnt=0; const char* infile = "../../data/bufr/syno_1.bufr"; - in=fopen(infile,"r"); + in=fopen(infile,"rb"); if (!in) { printf("ERROR: unable to open file %s\n", infile); diff --git a/examples/C/bufr_pthreads.c b/examples/C/bufr_pthreads.c index 9a1480b1e..003da02cc 100644 --- a/examples/C/bufr_pthreads.c +++ b/examples/C/bufr_pthreads.c @@ -66,7 +66,7 @@ int main(int argc, char** argv) FILE* fin = 0; codes_handle* h1 = 0; codes_handle* h2 = 0; - fin = fopen("../../data/bufr/syno_multi.bufr", "r"); + fin = fopen("../../data/bufr/syno_multi.bufr", "rb"); assert(fin); err = pthread_create(&thread1, NULL, process_bufr, (void *)fin); diff --git a/examples/C/bufr_read_header.c b/examples/C/bufr_read_header.c index e99ec9cb1..e43a86e60 100644 --- a/examples/C/bufr_read_header.c +++ b/examples/C/bufr_read_header.c @@ -36,7 +36,7 @@ int main(int argc,char* argv[]) filename=argv[1]; - in=fopen(filename,"r"); + in=fopen(filename,"rb"); if (!in) { printf("ERROR: unable to open file %s\n", filename); return 1; diff --git a/examples/C/bufr_read_scatterometer.c b/examples/C/bufr_read_scatterometer.c index 86ef43b44..6bf85c811 100644 --- a/examples/C/bufr_read_scatterometer.c +++ b/examples/C/bufr_read_scatterometer.c @@ -38,7 +38,7 @@ int main(int argc,char* argv[]) const char* infile = "../../data/bufr/asca_139.bufr"; char key_name[128]; - in=fopen(infile,"r"); + in=fopen(infile,"rb"); if (!in) { printf("ERROR: unable to open file %s\n", infile); return 1; diff --git a/examples/C/bufr_read_synop.c b/examples/C/bufr_read_synop.c index c54cebe4a..9ee8a3be1 100644 --- a/examples/C/bufr_read_synop.c +++ b/examples/C/bufr_read_synop.c @@ -37,7 +37,7 @@ int main(int argc,char* argv[]) int cnt=0; const char* infile = "../../data/bufr/syno_multi.bufr"; - in=fopen(infile,"r"); + in=fopen(infile,"rb"); if (!in) { printf("ERROR: unable to open file %s\n", infile); return 1; diff --git a/examples/C/bufr_read_temp.c b/examples/C/bufr_read_temp.c index b26aa022e..9ba53f872 100644 --- a/examples/C/bufr_read_temp.c +++ b/examples/C/bufr_read_temp.c @@ -38,7 +38,7 @@ int main(int argc,char* argv[]) const char* infile = "../../data/bufr/temp_101.bufr"; char key_name[128]; - in=fopen(infile,"r"); + in=fopen(infile,"rb"); if (!in) { printf("ERROR: unable to open file %s\n", infile); return 1; diff --git a/examples/C/bufr_set_keys.c b/examples/C/bufr_set_keys.c index dd9591b96..e3a55d4fd 100644 --- a/examples/C/bufr_set_keys.c +++ b/examples/C/bufr_set_keys.c @@ -43,8 +43,8 @@ int main(int argc,char* argv[]) return 1; } - in = fopen(infile,"r"); - out = fopen(argv[1],"w"); + in = fopen(infile,"rb"); + out = fopen(argv[1],"wb"); if (!in || !out) { perror("ERROR: unable to open files"); diff --git a/examples/C/bufr_subset.c b/examples/C/bufr_subset.c index 454b2e00e..0db2f7e6e 100644 --- a/examples/C/bufr_subset.c +++ b/examples/C/bufr_subset.c @@ -35,7 +35,7 @@ int main(int argc,char* argv[]) int cnt=0; const char* infile = "../../data/bufr/synop_multi_subset.bufr"; - in=fopen(infile,"r"); + in=fopen(infile,"rb"); if (!in) { printf("ERROR: unable to open file %s\n", infile); return 1; diff --git a/examples/C/get_product_kind.c b/examples/C/get_product_kind.c index 7d95d8d77..a69af27c2 100644 --- a/examples/C/get_product_kind.c +++ b/examples/C/get_product_kind.c @@ -34,7 +34,7 @@ int main(int argc,char* argv[]) return 1; } infile = argv[1]; - in=fopen(infile,"r"); + in=fopen(infile,"rb"); if (!in) { printf("ERROR: unable to open file %s\n", infile); return 1; diff --git a/examples/C/grib_clone.c b/examples/C/grib_clone.c index 2d38cac98..c11d7e2a7 100644 --- a/examples/C/grib_clone.c +++ b/examples/C/grib_clone.c @@ -37,8 +37,8 @@ int main(int argc, char *argv[]) return 1; } - in = fopen(argv[1],"r"); - out = fopen(argv[2],"w"); + in = fopen(argv[1],"rb"); + out = fopen(argv[2],"wb"); if (!in || !out) { perror("ERROR: unable to open files"); diff --git a/examples/C/grib_copy_message.c b/examples/C/grib_copy_message.c index 39488f10c..c85dff594 100644 --- a/examples/C/grib_copy_message.c +++ b/examples/C/grib_copy_message.c @@ -34,7 +34,7 @@ int main(int argc, char *argv[]) return 1; } - in = fopen(argv[1],"r"); + in = fopen(argv[1],"rb"); if (!in) { perror("ERROR: unable to input file"); diff --git a/examples/C/grib_get_data.c b/examples/C/grib_get_data.c index 93880ac97..d26cd0088 100644 --- a/examples/C/grib_get_data.c +++ b/examples/C/grib_get_data.c @@ -30,7 +30,7 @@ int main (int argc, char **argv) const double missing = 9999.0; double *lats, *lons, *values; /* arrays */ - in = fopen (filename, "r"); + in = fopen(filename, "rb"); if (!in) { printf ("ERROR: unable to open input file %s\n", filename); return 1; diff --git a/examples/C/grib_get_keys.c b/examples/C/grib_get_keys.c index ce0f4054c..c0a391eff 100644 --- a/examples/C/grib_get_keys.c +++ b/examples/C/grib_get_keys.c @@ -44,7 +44,7 @@ int main(int argc, char** argv) const char* filename = "../../data/regular_latlon_surface.grib1"; codes_handle *h = NULL; - in = fopen(filename,"r"); + in = fopen(filename,"rb"); if(!in) { printf("ERROR: unable to open file %s\n",filename); return 1; diff --git a/examples/C/grib_iterator.c b/examples/C/grib_iterator.c index 4289a33db..294a8b370 100644 --- a/examples/C/grib_iterator.c +++ b/examples/C/grib_iterator.c @@ -44,7 +44,7 @@ int main(int argc, char** argv) filename=argv[1]; - in = fopen(filename,"r"); + in = fopen(filename,"rb"); if(!in) { printf("ERROR: unable to open file %s\n", filename); return 1; diff --git a/examples/C/grib_iterator_bitmap.c b/examples/C/grib_iterator_bitmap.c index e96a1fea6..801b441a0 100644 --- a/examples/C/grib_iterator_bitmap.c +++ b/examples/C/grib_iterator_bitmap.c @@ -42,7 +42,7 @@ int main(int argc, char** argv) if (argc != 2) usage(argv[0]); filename=argv[1]; - in = fopen(filename,"r"); + in = fopen(filename,"rb"); if(!in) { fprintf(stderr, "ERROR: unable to open file %s\n",filename); return 1; diff --git a/examples/C/grib_keys_iterator.c b/examples/C/grib_keys_iterator.c index 0ef3a60f0..0446d22ff 100644 --- a/examples/C/grib_keys_iterator.c +++ b/examples/C/grib_keys_iterator.c @@ -59,7 +59,7 @@ int main(int argc, char *argv[]) if (argc != 2) usage(argv[0]); - f = fopen(argv[1],"r"); + f = fopen(argv[1],"rb"); if(!f) { perror(argv[1]); exit(1); diff --git a/examples/C/grib_list.c b/examples/C/grib_list.c index fae19b7c5..04fd8da76 100644 --- a/examples/C/grib_list.c +++ b/examples/C/grib_list.c @@ -36,7 +36,7 @@ int main(int argc, char** argv) const char* filename = "../../data/satellite.grib"; codes_handle *h = NULL; - in = fopen(filename,"r"); + in = fopen(filename,"rb"); if(!in) { printf("ERROR: unable to open input file %s\n",filename); return 1; diff --git a/examples/C/grib_multi.c b/examples/C/grib_multi.c index fc6a6c404..8a0cbba10 100644 --- a/examples/C/grib_multi.c +++ b/examples/C/grib_multi.c @@ -36,7 +36,7 @@ int main(int argc, char** argv) /* turn off support for multi fields messages */ /* codes_multi_support_off(0); */ - in = fopen(filename,"r"); + in = fopen(filename,"rb"); if(!in) { printf("ERROR: unable to open file %s\n",filename); return 1; diff --git a/examples/C/grib_multi_write.c b/examples/C/grib_multi_write.c index 5fed7c938..e7a45ffef 100644 --- a/examples/C/grib_multi_write.c +++ b/examples/C/grib_multi_write.c @@ -41,7 +41,7 @@ int main(int argc, char** argv) ofilename=argv[2]; /* open input file */ - in = fopen(filename,"r"); + in = fopen(filename,"rb"); if(!in) { fprintf(stderr, "ERROR: unable to open input file %s\n",filename); return 1; diff --git a/examples/C/grib_precision.c b/examples/C/grib_precision.c index 2f535900c..3bb99a022 100644 --- a/examples/C/grib_precision.c +++ b/examples/C/grib_precision.c @@ -45,13 +45,13 @@ int main(int argc, char** argv) long bitsPerValue1=0, bitsPerValue2=0; int i=0; - in = fopen(infile,"r"); + in = fopen(infile,"rb"); if(!in) { printf("ERROR: unable to open input file %s\n",infile); return 1; } - out = fopen(outfile,"w"); + out = fopen(outfile,"wb"); if(!out) { printf("ERROR: unable to open output file %s\n",outfile); fclose(in); diff --git a/examples/C/grib_print_data.c b/examples/C/grib_print_data.c index 61087cc9c..7f98a63d6 100644 --- a/examples/C/grib_print_data.c +++ b/examples/C/grib_print_data.c @@ -38,7 +38,7 @@ int main(int argc, char** argv) if (argc<2) usage(argv[0]); filename=argv[1]; - in = fopen(filename,"r"); + in = fopen(filename,"rb"); if(!in) { printf("ERROR: unable to open file %s\n",filename); return 1; diff --git a/examples/C/grib_set_bitmap.c b/examples/C/grib_set_bitmap.c index 6e6f7f65a..78939e693 100644 --- a/examples/C/grib_set_bitmap.c +++ b/examples/C/grib_set_bitmap.c @@ -37,13 +37,13 @@ int main(int argc, char** argv) double missing=9999; int i=0; - in = fopen(infile, "r"); + in = fopen(infile, "rb"); if(!in) { printf("ERROR: unable to open input file %s\n",infile); return 1; } - out = fopen(outfile, "w"); + out = fopen(outfile, "wb"); if(!out) { printf("ERROR: unable to open output file %s\n",outfile); fclose(in); diff --git a/examples/C/grib_set_keys.c b/examples/C/grib_set_keys.c index bfca44f85..6b155064b 100644 --- a/examples/C/grib_set_keys.c +++ b/examples/C/grib_set_keys.c @@ -36,13 +36,13 @@ int main(int argc, char** argv) const void* buffer = NULL; size_t str_len = 0; /* See the call to codes_set_string later */ - in = fopen(infile,"r"); + in = fopen(infile,"rb"); if(!in) { printf("ERROR: unable to open file %s\n",infile); return 1; } - out = fopen(outfile,"w"); + out = fopen(outfile,"wb"); if(!out) { printf("ERROR: unable to open file %s\n",outfile); fclose(in); diff --git a/examples/C/grib_set_pv.c b/examples/C/grib_set_pv.c index f1c14b7df..4848c0e6c 100644 --- a/examples/C/grib_set_pv.c +++ b/examples/C/grib_set_pv.c @@ -43,13 +43,13 @@ int main(int argc, char** argv) infile = argv[1]; outfile= argv[2]; - in = fopen(infile, "r"); + in = fopen(infile, "rb"); if(!in) { fprintf(stderr, "ERROR: unable to open input file %s\n",infile); return 1; } - out = fopen(outfile, "w"); + out = fopen(outfile, "wb"); if(!out) { fprintf(stderr, "ERROR: unable to open output file %s\n",outfile); fclose(in); diff --git a/examples/C/multi2.c b/examples/C/multi2.c index 7b2449f74..3b59ede12 100644 --- a/examples/C/multi2.c +++ b/examples/C/multi2.c @@ -32,7 +32,7 @@ static void read_data(int num_msgs) long stepRange = 0; codes_handle *h = NULL; - fp = fopen(file_path, "r"); + fp = fopen(file_path, "rb"); if(!fp) { fprintf(stderr, "ERROR: unable to open grib file %s\n", file_path); exit(1); diff --git a/examples/C/new_sample.c b/examples/C/new_sample.c index cb12ea6d1..7f641d5ca 100644 --- a/examples/C/new_sample.c +++ b/examples/C/new_sample.c @@ -369,7 +369,7 @@ int main(int argc, char** argv) CODES_CHECK(codes_set_long(h,"setBitsPerValue",0),0); /* Save the message */ - f = fopen(argv[1],"w"); + f = fopen(argv[1],"wb"); if(!f) { perror(argv[1]); exit(1); diff --git a/examples/C/points.c b/examples/C/points.c index e1deccbac..58f8f50fa 100644 --- a/examples/C/points.c +++ b/examples/C/points.c @@ -84,7 +84,7 @@ int main(int argc, char** argv) fclose(fin); fname=argv[2]; - fin=fopen(fname,"r"); + fin=fopen(fname,"rb"); if(!fin) { perror(fname); exit(1); } h=codes_handle_new_from_file(0,fin,PRODUCT_GRIB, &ret); if (!h || ret!=CODES_SUCCESS) {printf(" unable to create handle\n");exit(1);} diff --git a/examples/C/sections_copy.c b/examples/C/sections_copy.c index 701b0bb58..55ad776b3 100644 --- a/examples/C/sections_copy.c +++ b/examples/C/sections_copy.c @@ -33,7 +33,7 @@ int main ( int argc, char* argv[]) what_str=argv[3]; out_name=argv[4]; - in=fopen(in_name1,"r"); + in=fopen(in_name1,"rb"); if (!in) { perror(in_name1); exit(1); @@ -43,7 +43,7 @@ int main ( int argc, char* argv[]) CODES_CHECK(err,0); fclose(in); - in=fopen(in_name2,"r"); + in=fopen(in_name2,"rb"); if (!in) { perror(in_name2); exit(1); diff --git a/examples/C/set_missing.c b/examples/C/set_missing.c index 047a8fefc..e8783b24a 100644 --- a/examples/C/set_missing.c +++ b/examples/C/set_missing.c @@ -34,13 +34,13 @@ int main(int argc, char** argv) size_t str_len=3; long Ni = 0; - in = fopen(infile,"r"); + in = fopen(infile,"rb"); if(!in) { printf("ERROR: unable to open input file %s\n",infile); return 1; } - out = fopen(outfile,"w"); + out = fopen(outfile,"wb"); if(!out) { printf("ERROR: unable to open output file %s\n",outfile); fclose(in); diff --git a/examples/C/values_check.c b/examples/C/values_check.c index e68d3d5eb..cba687aac 100644 --- a/examples/C/values_check.c +++ b/examples/C/values_check.c @@ -21,7 +21,7 @@ int main(int argc, char* argv[]) int i; char* name = NULL; - f=fopen(infile,"r"); + f=fopen(infile,"rb"); if (!f) { perror(infile); exit(1); From 5a1b4dfd663ee850cf838a65e295cc84babef754 Mon Sep 17 00:00:00 2001 From: Olivier Iffrig Date: Fri, 1 Mar 2019 17:07:01 +0000 Subject: [PATCH 147/414] Import Find{AEC,NumPy,OpenJPEG}.cmake from ecbuild --- cmake/FindAEC.cmake | 39 +++++++++++++++ cmake/FindNumPy.cmake | 101 +++++++++++++++++++++++++++++++++++++++ cmake/FindOpenJPEG.cmake | 54 +++++++++++++++++++++ 3 files changed, 194 insertions(+) create mode 100644 cmake/FindAEC.cmake create mode 100644 cmake/FindNumPy.cmake create mode 100644 cmake/FindOpenJPEG.cmake diff --git a/cmake/FindAEC.cmake b/cmake/FindAEC.cmake new file mode 100644 index 000000000..ae1d7ffad --- /dev/null +++ b/cmake/FindAEC.cmake @@ -0,0 +1,39 @@ +# (C) Copyright 2011- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# In applying this licence, ECMWF does not waive the privileges and immunities +# granted to it by virtue of its status as an intergovernmental organisation +# nor does it submit to any jurisdiction. + +# - Try to find AEC (Adaptive Entropy Coding library) +# See https://www.dkrz.de/redmine/projects/aec/wiki + +# Once done this will define +# AEC_FOUND - System has AEC +# AEC_INCLUDE_DIRS - The AEC include directories +# AEC_LIBRARIES - The libraries needed to use AEC +# +# The following paths will be searched with priority if set in CMake or env +# +# AEC_DIR - prefix path of the AEC installation +# AEC_PATH - prefix path of the AEC installation + +find_path( AEC_INCLUDE_DIR szlib.h + PATHS ${AEC_DIR} ${AEC_PATH} ENV AEC_DIR ENV AEC_PATH + PATH_SUFFIXES include include/aec NO_DEFAULT_PATH ) +find_path( AEC_INCLUDE_DIR szlib.h PATH_SUFFIXES include include/aec ) + +find_library( AEC_LIBRARY NAMES aec + PATHS ${AEC_DIR} ${AEC_PATH} ENV AEC_DIR ENV AEC_PATH + PATH_SUFFIXES lib lib64 lib/aec lib64/aec NO_DEFAULT_PATH ) +find_library( AEC_LIBRARY NAMES aec PATH_SUFFIXES lib lib64 lib/aec lib64/aec ) + +set( AEC_LIBRARIES ${AEC_LIBRARY} ) +set( AEC_INCLUDE_DIRS ${AEC_INCLUDE_DIR} ) + +include(FindPackageHandleStandardArgs) + +find_package_handle_standard_args(AEC DEFAULT_MSG AEC_LIBRARY AEC_INCLUDE_DIR) + +mark_as_advanced(AEC_INCLUDE_DIR AEC_LIBRARY ) diff --git a/cmake/FindNumPy.cmake b/cmake/FindNumPy.cmake new file mode 100644 index 000000000..ba02cec57 --- /dev/null +++ b/cmake/FindNumPy.cmake @@ -0,0 +1,101 @@ +# - Find the NumPy libraries +# This module finds if NumPy is installed, and sets the following variables +# indicating where it is. +# +# TODO: Update to provide the libraries and paths for linking npymath lib. +# +# NUMPY_FOUND - was NumPy found +# NUMPY_VERSION - the version of NumPy found as a string +# NUMPY_VERSION_MAJOR - the major version number of NumPy +# NUMPY_VERSION_MINOR - the minor version number of NumPy +# NUMPY_VERSION_PATCH - the patch version number of NumPy +# NUMPY_VERSION_DECIMAL - e.g. version 1.6.1 is 10601 +# NUMPY_INCLUDE_DIRS - path to the NumPy include files + +#============================================================================ +# Copyright 2012 Continuum Analytics, Inc. +# +# MIT License +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files +# (the "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to permit +# persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR +# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. +# +#============================================================================ + +# Finding NumPy involves calling the Python interpreter +if(NumPy_FIND_REQUIRED) + find_package(PythonInterp REQUIRED) +else() + find_package(PythonInterp) +endif() + +if(NOT PYTHONINTERP_FOUND) + set(NUMPY_FOUND FALSE) + return() +endif() + +execute_process(COMMAND "${PYTHON_EXECUTABLE}" "-c" + "import numpy as n; print(n.__version__); print(n.get_include());" + RESULT_VARIABLE _NUMPY_SEARCH_SUCCESS + OUTPUT_VARIABLE _NUMPY_VALUES_OUTPUT + ERROR_VARIABLE _NUMPY_ERROR_VALUE + OUTPUT_STRIP_TRAILING_WHITESPACE) + +if(NOT _NUMPY_SEARCH_SUCCESS MATCHES 0) + if(NumPy_FIND_REQUIRED) + message(FATAL_ERROR + "NumPy import failure:\n${_NUMPY_ERROR_VALUE}") + endif() + set(NUMPY_FOUND FALSE) + return() +endif() + +# Convert the process output into a list +string(REGEX REPLACE ";" "\\\\;" _NUMPY_VALUES ${_NUMPY_VALUES_OUTPUT}) +string(REGEX REPLACE "\n" ";" _NUMPY_VALUES ${_NUMPY_VALUES}) +# Just in case there is unexpected output from the Python command. +list(GET _NUMPY_VALUES -2 NUMPY_VERSION) +list(GET _NUMPY_VALUES -1 NUMPY_INCLUDE_DIRS) + +string(REGEX MATCH "^[0-9]+\\.[0-9]+\\.[0-9]+" _VER_CHECK "${NUMPY_VERSION}") +if("${_VER_CHECK}" STREQUAL "") + # The output from Python was unexpected. Raise an error always + # here, because we found NumPy, but it appears to be corrupted somehow. + message(FATAL_ERROR + "Requested version and include path from NumPy, got instead:\n${_NUMPY_VALUES_OUTPUT}\n") + return() +endif() + +# Make sure all directory separators are '/' +string(REGEX REPLACE "\\\\" "/" NUMPY_INCLUDE_DIRS ${NUMPY_INCLUDE_DIRS}) + +# Get the major and minor version numbers +string(REGEX REPLACE "\\." ";" _NUMPY_VERSION_LIST ${NUMPY_VERSION}) +list(GET _NUMPY_VERSION_LIST 0 NUMPY_VERSION_MAJOR) +list(GET _NUMPY_VERSION_LIST 1 NUMPY_VERSION_MINOR) +list(GET _NUMPY_VERSION_LIST 2 NUMPY_VERSION_PATCH) +string(REGEX MATCH "[0-9]*" NUMPY_VERSION_PATCH ${NUMPY_VERSION_PATCH}) +math(EXPR NUMPY_VERSION_DECIMAL + "(${NUMPY_VERSION_MAJOR} * 10000) + (${NUMPY_VERSION_MINOR} * 100) + ${NUMPY_VERSION_PATCH}") + +find_package_message(NUMPY + "Found NumPy: version \"${NUMPY_VERSION}\" ${NUMPY_INCLUDE_DIRS}" + "${NUMPY_INCLUDE_DIRS}${NUMPY_VERSION}") + +set(NUMPY_FOUND TRUE) \ No newline at end of file diff --git a/cmake/FindOpenJPEG.cmake b/cmake/FindOpenJPEG.cmake new file mode 100644 index 000000000..2e26ade26 --- /dev/null +++ b/cmake/FindOpenJPEG.cmake @@ -0,0 +1,54 @@ +# (C) Copyright 2011- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# In applying this licence, ECMWF does not waive the privileges and immunities +# granted to it by virtue of its status as an intergovernmental organisation nor +# does it submit to any jurisdiction. + +# - Try to find the OpenJPEG includes and library (version 1.5.x or 2.1.x) +# This module defines +# +# OPENJPEG_FOUND - System has OpenJPEG +# OPENJPEG_INCLUDE_DIRS - the OpenJPEG include directories +# OPENJPEG_LIBRARIES - the libraries needed to use OpenJPEG +# +# The following paths will be searched with priority if set in CMake or env +# +# OPENJPEG_DIR - root folder of the OpenJPEG installation +# OPENJPEG_PATH - root folder of the OpenJPEG installation + +# Note: OpenJPEG has a version-specific subdirectory in the include +# e.g. include/openjpeg-2.0 or include/openjpeg-2.1. +# Only version 1.5.x and 2.1.x are supported. +# The library name is different for 1.x (libopenjpeg) and 2.x (libopenjp2). + +set( _suff include include/openjpeg include/openjpeg-1.5 include/openjpeg-2.1 ) +find_path( OPENJPEG_INCLUDE_DIR openjpeg.h + PATHS ${OPENJPEG_PATH} ENV OPENJPEG_PATH + ${OPENJPEG_DIR} ENV OPENJPEG_DIR + PATH_SUFFIXES ${_suff} + NO_DEFAULT_PATH ) +find_path( OPENJPEG_INCLUDE_DIR openjpeg.h + PATH_SUFFIXES ${_suff} ) +unset( _suff ) + +find_library( OPENJPEG_LIBRARY NAMES openjpeg openjp2 + PATHS ${OPENJPEG_PATH} ENV OPENJPEG_PATH + ${OPENJPEG_DIR} ENV OPENJPEG_DIR + PATH_SUFFIXES lib lib/openjpeg + NO_DEFAULT_PATH ) +find_library( OPENJPEG_LIBRARY NAMES openjpeg openjp2 + PATH_SUFFIXES lib lib/openjpeg ) + +set( OPENJPEG_LIBRARIES ${OPENJPEG_LIBRARY} ) +set( OPENJPEG_INCLUDE_DIRS ${OPENJPEG_INCLUDE_DIR} ) + +include(FindPackageHandleStandardArgs) + +# handle the QUIETLY and REQUIRED arguments and set OPENJPEG_FOUND to TRUE +# if all listed variables are TRUE +find_package_handle_standard_args(OpenJPEG DEFAULT_MSG + OPENJPEG_LIBRARY OPENJPEG_INCLUDE_DIR) + +mark_as_advanced( OPENJPEG_INCLUDE_DIR OPENJPEG_LIBRARY ) From f0f949532776439931ce9e63e0ce15f1d6e6df47 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 12 Mar 2019 13:49:02 +0000 Subject: [PATCH 148/414] ECC-904: grib_get_data returns wrong lat-lons for sub-area of a reduced Gaussian grid --- src/grib_iterator_class_gaussian_reduced.c | 34 ++++++++++++++-------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/src/grib_iterator_class_gaussian_reduced.c b/src/grib_iterator_class_gaussian_reduced.c index 505f2f3c0..1926d06d4 100644 --- a/src/grib_iterator_class_gaussian_reduced.c +++ b/src/grib_iterator_class_gaussian_reduced.c @@ -14,6 +14,7 @@ #include "grib_api_internal.h" +#include #include /* @@ -130,13 +131,14 @@ static size_t count_subarea_points(grib_handle* h, get_reduced_row_proc get_redu static int iterate_reduced_gaussian_subarea_algorithm2(grib_iterator* iter, grib_handle* h, double lat_first, double lon_first, double lat_last, double lon_last, - double* lats, long* pl, size_t plsize) + double* lats, long* pl, size_t plsize, size_t numlats) { int err = 0; - int l = 0; - size_t j = 0; + size_t l = 0; + size_t j = 0, il = 0; + size_t min_i = 0; + double min_d = DBL_MAX; long row_count=0, i=0; - double d=0; double olon_first, olon_last; grib_iterator_gaussian_reduced* self = (grib_iterator_gaussian_reduced*)iter; get_reduced_row_proc get_reduced_row = &grib_get_reduced_row; @@ -146,9 +148,14 @@ static int iterate_reduced_gaussian_subarea_algorithm2(grib_iterator* iter, grib printf("ECCODES DEBUG grib_iterator_class_gaussian_reduced: sub-area num points=%ld\n", (long)np); } - /*find starting latitude */ - d = fabs(lats[0] - lats[1]); - while (fabs(lat_first-lats[l]) > d ) {l++;} + /* Find starting latitude */ + for(il=0; ile=0; for (j=0;jlos[iter->e]=lon2; + DebugAssertAccess(lats, j+l, numlats); self->las[iter->e]=lats[j+l]; iter->e++; } @@ -236,9 +244,9 @@ static int iterate_reduced_gaussian_subarea(grib_iterator* iter, grib_handle* h, static int iterate_reduced_gaussian_subarea_wrapper(grib_iterator* iter, grib_handle* h, double lat_first, double lon_first, double lat_last, double lon_last, - double* lats, long* pl, size_t plsize) + double* lats, long* pl, size_t plsize, size_t numlats) { - return iterate_reduced_gaussian_subarea_algorithm2(iter, h, lat_first, lon_first, lat_last, lon_last, lats, pl, plsize); + return iterate_reduced_gaussian_subarea_algorithm2(iter, h, lat_first, lon_first, lat_last, lon_last, lats, pl, plsize, numlats); #if 0 /* Try legacy approach, if that fails try the next algorithm */ @@ -258,6 +266,7 @@ static int init(grib_iterator* iter, grib_handle* h, grib_arguments* args) double angular_precision = 1.0/1000000.0; double* lats; size_t plsize=0; + size_t numlats=0; long* pl; long max_pl=0; long nj=0,order=0,i; @@ -291,7 +300,8 @@ static int init(grib_iterator* iter, grib_handle* h, grib_arguments* args) if (editionNumber == 1) angular_precision = 1.0/1000; } - lats=(double*)grib_context_malloc(h->context,sizeof(double)*order*2); + numlats = order*2; + lats=(double*)grib_context_malloc(h->context,sizeof(double)*numlats); if (!lats) return GRIB_OUT_OF_MEMORY; if((ret = grib_get_gaussian_latitudes(order, lats)) != GRIB_SUCCESS) return ret; @@ -323,7 +333,7 @@ static int init(grib_iterator* iter, grib_handle* h, grib_arguments* args) is_global = is_gaussian_global(lat_first, lat_last, lon_first, lon_last, max_pl, lats, angular_precision); if ( !is_global ) { /*sub area*/ - ret = iterate_reduced_gaussian_subarea_wrapper(iter, h, lat_first, lon_first, lat_last, lon_last, lats, pl, plsize); + ret = iterate_reduced_gaussian_subarea_wrapper(iter, h, lat_first, lon_first, lat_last, lon_last, lats, pl, plsize, numlats); } else { /*global*/ iter->e=0; @@ -340,7 +350,7 @@ static int init(grib_iterator* iter, grib_handle* h, grib_arguments* args) /*grib_context_log(h->context,GRIB_LOG_ERROR, "Failed to initialise reduced Gaussian iterator (global)");*/ /*return GRIB_WRONG_GRID;*/ /*Try now as NON-global*/ - ret = iterate_reduced_gaussian_subarea_wrapper(iter, h, lat_first, lon_first, lat_last, lon_last, lats, pl, plsize); + ret = iterate_reduced_gaussian_subarea_wrapper(iter, h, lat_first, lon_first, lat_last, lon_last, lats, pl, plsize, numlats); if (ret !=GRIB_SUCCESS) grib_context_log(h->context,GRIB_LOG_ERROR, "Failed to initialise reduced Gaussian iterator (global)"); goto finalise; } From 9e60a55e632982dfbde50cf60af64e4d758216e6 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 12 Mar 2019 17:04:28 +0000 Subject: [PATCH 149/414] ECC-904: grib_get_data returns wrong lat-lons for sub-area of a reduced Gaussian grid --- src/grib_iterator_class_gaussian_reduced.c | 35 ++++++++++++++++++---- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/src/grib_iterator_class_gaussian_reduced.c b/src/grib_iterator_class_gaussian_reduced.c index 1926d06d4..85ec67dd2 100644 --- a/src/grib_iterator_class_gaussian_reduced.c +++ b/src/grib_iterator_class_gaussian_reduced.c @@ -127,6 +127,28 @@ static size_t count_subarea_points(grib_handle* h, get_reduced_row_proc get_redu return result; } +/* Search for 'x' in the array 'xx' (the index of last element being 'n') and return index in 'j' */ +static void binary_search(double xx[], const unsigned long n, double x, long *j) +{ + /*This routine works only on descending ordered arrays*/ +#define EPSILON 1e-3 + + unsigned long ju,jm,jl; + jl=0; + ju=n; + while (ju-jl > 1) { + jm=(ju+jl) >> 1; + if (fabs(x-xx[jm]) < EPSILON) { + /* found something close enough. We're done */ + *j=jm; + return; + } + if (x < xx[jm]) jl=jm; + else ju=jm; + } + *j=jl; +} + /* ECC-747 */ static int iterate_reduced_gaussian_subarea_algorithm2(grib_iterator* iter, grib_handle* h, double lat_first, double lon_first, @@ -134,10 +156,8 @@ static int iterate_reduced_gaussian_subarea_algorithm2(grib_iterator* iter, grib double* lats, long* pl, size_t plsize, size_t numlats) { int err = 0; - size_t l = 0; - size_t j = 0, il = 0; - size_t min_i = 0; - double min_d = DBL_MAX; + long l = 0; + size_t j = 0; long row_count=0, i=0; double olon_first, olon_last; grib_iterator_gaussian_reduced* self = (grib_iterator_gaussian_reduced*)iter; @@ -149,6 +169,10 @@ static int iterate_reduced_gaussian_subarea_algorithm2(grib_iterator* iter, grib } /* Find starting latitude */ + binary_search(lats, numlats-1, lat_first, &l); + Assert(l < numlats); + +#if 0 for(il=0; ile=0; for (j=0;jlos[iter->e]=lon2; - DebugAssertAccess(lats, j+l, numlats); + DebugAssert(j+l < numlats); self->las[iter->e]=lats[j+l]; iter->e++; } From 5e2942a84f4ed9969d03cd3caf5e28fb11bcb635 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 13 Mar 2019 18:24:35 +0000 Subject: [PATCH 150/414] ECC-869: BUFR: Bitmap created inconsistently for different type of data (Try 01) --- src/grib_accessor_class_bufr_data_array.c | 46 ++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/src/grib_accessor_class_bufr_data_array.c b/src/grib_accessor_class_bufr_data_array.c index 386917711..40eb64e62 100644 --- a/src/grib_accessor_class_bufr_data_array.c +++ b/src/grib_accessor_class_bufr_data_array.c @@ -2067,6 +2067,36 @@ static int bitmap_ref_skip(grib_accessors_list* al,int* err) return 0; } +static int accessor_descriptor_is_bitmap(grib_accessors_list* al, int* err) +{ + grib_accessor* acode=NULL; + long code[1]; + size_t l=1; + if (!al || !al->accessor) return 0; + + acode=grib_accessor_get_attribute(al->accessor,"code"); + if (acode) *err=grib_unpack_long(acode,code,&l); + else return 1; + + switch (code[0]) { + case 222000: + case 223000: + case 224000: + case 225000: + case 232000: + /*case 236000:*/ + case 237000: + /*case 243000:*/ + { + //long index[1]; + //grib_accessor* anindex=grib_accessor_get_attribute(al->accessor,"index"); + //grib_unpack_long(anindex,index,&l); + return 1; + } + } + return 0; +} + static void print_bitmap_debug_info(grib_context* c, bitmap_s* bitmap, grib_accessors_list* bitmapStart, int bitmapSize) { int i = 0, ret = 0; @@ -2082,6 +2112,7 @@ static void print_bitmap_debug_info(grib_context* c, bitmap_s* bitmap, grib_acce } } } + static int bitmap_init(grib_context* c, bitmap_s* bitmap, grib_accessors_list* bitmapStart, int bitmapSize, grib_accessors_list* lastAccessorInList) { @@ -2092,7 +2123,20 @@ static int bitmap_init(grib_context* c, bitmap_s* bitmap, return ret; } bitmap->referredElement=bitmapStart; - while (bitmap_ref_skip(bitmap->referredElement,&ret)) bitmap->referredElement=bitmap->referredElement->prev; + /*while (bitmap_ref_skip(bitmap->referredElement,&ret)) bitmap->referredElement=bitmap->referredElement->prev;*/ + /* See ECC-869 + * We have to INCLUDE the replication factors that come after the bitmap operators + */ + while (bitmap_ref_skip(bitmap->referredElement,&ret)) { + int is_bmp = 0; + if (accessor_descriptor_is_bitmap(bitmap->referredElement,&ret)) { + is_bmp = 1; + } + bitmap->referredElement=bitmap->referredElement->prev; + if (is_bmp) { + break; + } + } /*printf("bitmap_init: bitmapSize=%d\n", bitmapSize);*/ for (i=1;ireferredElement==NULL) { From 42c1b8894dfadc8e14d65c24ae26c15db5bab39b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 14 Mar 2019 10:38:24 +0000 Subject: [PATCH 151/414] ECC-869: Rename function --- src/grib_accessor_class_bufr_data_array.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/grib_accessor_class_bufr_data_array.c b/src/grib_accessor_class_bufr_data_array.c index 40eb64e62..bab28e5b3 100644 --- a/src/grib_accessor_class_bufr_data_array.c +++ b/src/grib_accessor_class_bufr_data_array.c @@ -2067,7 +2067,8 @@ static int bitmap_ref_skip(grib_accessors_list* al,int* err) return 0; } -static int accessor_descriptor_is_bitmap(grib_accessors_list* al, int* err) +/* Return 1 if the descriptor is an operator marking the start of a bitmap */ +static int is_bitmap_start_descriptor(grib_accessors_list* al, int* err) { grib_accessor* acode=NULL; long code[1]; @@ -2129,7 +2130,7 @@ static int bitmap_init(grib_context* c, bitmap_s* bitmap, */ while (bitmap_ref_skip(bitmap->referredElement,&ret)) { int is_bmp = 0; - if (accessor_descriptor_is_bitmap(bitmap->referredElement,&ret)) { + if (is_bitmap_start_descriptor(bitmap->referredElement,&ret)) { is_bmp = 1; } bitmap->referredElement=bitmap->referredElement->prev; From 20b92853b0c95a36515582cc0de4ce4f2a878abb Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Tue, 12 Feb 2019 16:51:53 +0000 Subject: [PATCH 152/414] Add option to replace TPL absolute paths with library names This should help with relocatability: instead of generating eccodes-config.cmake with an absolute path to Third Party Libraries (TPLs) (e.g. /lib/x86_64-linux-gnu/libm.so.6) we have the option to use the library name instead (e.g. -lm). We also use library names in eccodes-targets.cmake and eccodes.pc if the option is set. The motivation is so that we can distribute packages with conda-forge. Without this change, the conda-forge build leaves its build path in the files above. When we come to build another package downstream, e.g. Magics, we are unable to find the ecCodes libraries because the absolute paths to the TPLs are no longer valid. Using library names instead lets cmake find the TPLs on the downstream build system. --- CMakeLists.txt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index c81aaaace..ac1069483 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -351,6 +351,21 @@ get_directory_property( COMPILE_DEFINITIONS ECCODES_DEFINITIONS ) foreach( _tpl ${ECCODES_TPLS} ) string( TOUPPER ${_tpl} TPL ) if( ${TPL}_FOUND ) + if( REPLACE_TPL_ABSOLUTE_PATHS ) + # replace TPL absolute paths with their library names + # this helps make ecCodes relocatable + set( _TMP "" ) + + foreach( _lib ${${TPL}_LIBRARIES} ) + get_filename_component( _lib_name ${_lib} NAME_WE ) + string( REGEX REPLACE "^lib" "" _name ${_lib_name} ) + list( APPEND _TMP "-l${_name}" ) + endforeach() + + set( ${TPL}_LIBRARIES ${_TMP} ) + set( _TMP "" ) + endif() + list( APPEND ECCODES_EXTRA_DEFINITIONS ${${TPL}_DEFINITIONS} ) list( APPEND ECCODES_EXTRA_INCLUDE_DIRS ${${TPL}_INCLUDE_DIRS} ${${TPL}_INCLUDE_DIR} ) list( APPEND ECCODES_EXTRA_LIBRARIES ${${TPL}_LIBRARIES} ) From 79b1853de86b817627a09be0df325b74313994ee Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 14 Mar 2019 12:34:41 +0000 Subject: [PATCH 153/414] Windows: use binary open --- tools/bufr_split_by_rdbSubtype.c | 4 ++-- tools/codes_count.c | 2 +- tools/codes_split_file.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/bufr_split_by_rdbSubtype.c b/tools/bufr_split_by_rdbSubtype.c index 253a109e7..0b74daa8f 100644 --- a/tools/bufr_split_by_rdbSubtype.c +++ b/tools/bufr_split_by_rdbSubtype.c @@ -135,7 +135,7 @@ static int split_file_by_subtype(FILE* in, const char* filename, unsigned long * if (verbose) { if (!file_exists(ofilename)) printf("Writing output to %s\n", ofilename); } - out=fopen(ofilename,"a"); + out=fopen(ofilename,"ab"); if (!out) { fprintf(stderr,"ERROR: Failed to open output file '%s'\n", ofilename); perror(ofilename); @@ -183,7 +183,7 @@ int main(int argc,char* argv[]) return 1; } } - infh=fopen(filename,"r"); + infh=fopen(filename,"rb"); if (!infh) { perror(filename); return 1; diff --git a/tools/codes_count.c b/tools/codes_count.c index 3b09553f3..67a61db02 100644 --- a/tools/codes_count.c +++ b/tools/codes_count.c @@ -91,7 +91,7 @@ int main(int argc,char* argv[]) if (strcmp(filename,"-")==0) infh=stdin; else - infh=fopen(filename,"r"); + infh=fopen(filename,"rb"); if (!infh) { perror(filename); exit(1); diff --git a/tools/codes_split_file.c b/tools/codes_split_file.c index daa9879de..8b2973379 100644 --- a/tools/codes_split_file.c +++ b/tools/codes_split_file.c @@ -127,7 +127,7 @@ int main(int argc,char* argv[]) return 1; } } - infh=fopen(filename,"r"); + infh=fopen(filename,"rb"); if (!infh) { perror(filename); return 1; From abb7ea8b3db50ae8a2f035056bac330667201de9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 14 Mar 2019 18:42:40 +0000 Subject: [PATCH 154/414] ECC-869: debugging help when bitmap info is wrong --- examples/python/CMakeLists.txt | 1 + examples/python/bufr_ecc-869.py | 136 ++++++++++++++++++++++ examples/python/bufr_ecc-869.sh | 35 ++++++ src/grib_accessor_class_bufr_data_array.c | 20 +++- 4 files changed, 188 insertions(+), 4 deletions(-) create mode 100644 examples/python/bufr_ecc-869.py create mode 100755 examples/python/bufr_ecc-869.sh diff --git a/examples/python/CMakeLists.txt b/examples/python/CMakeLists.txt index 0e7db276a..ffd8eb187 100644 --- a/examples/python/CMakeLists.txt +++ b/examples/python/CMakeLists.txt @@ -31,6 +31,7 @@ list( APPEND tests_basic grib_set_pv grib_read_sample bufr_read_sample + bufr_ecc-869 ) list( APPEND tests_extra grib_clone diff --git a/examples/python/bufr_ecc-869.py b/examples/python/bufr_ecc-869.py new file mode 100644 index 000000000..4d97e8b3b --- /dev/null +++ b/examples/python/bufr_ecc-869.py @@ -0,0 +1,136 @@ +# This program was automatically generated with bufr_dump -Epython +# and then edited to add the bitmap. +# See ECC-869 + +from __future__ import print_function +import traceback +import sys +from eccodes import * + +OUTPUT_FILENAME = 'outfile_ecc_869_test.bufr' + +def bufr_encode(): + ibufr = codes_bufr_new_from_samples('BUFR3_local') + ivalues = (0, 0, 0, 0 ,) + codes_set_array(ibufr, 'inputShortDelayedDescriptorReplicationFactor', ivalues) + + SIZE_OF_BMP = 41 + bitMask = [1]*SIZE_OF_BMP + bitMask[0] = 0 # marineObservingPlatformIdentifier + bitMask[37] = 0 # pressureReducedToMeanSeaLevel + codes_set_array(ibufr, 'inputDataPresentIndicator', bitMask) + + codes_set(ibufr, 'edition', 3) + codes_set(ibufr, 'masterTableNumber', 0) + codes_set(ibufr, 'bufrHeaderSubCentre', 0) + codes_set(ibufr, 'bufrHeaderCentre', 98) + codes_set(ibufr, 'updateSequenceNumber', 0) + codes_set(ibufr, 'dataCategory', 1) + codes_set(ibufr, 'dataSubCategory', 182) + codes_set(ibufr, 'masterTablesVersionNumber', 22) + codes_set(ibufr, 'localTablesVersionNumber', 0) + codes_set(ibufr, 'typicalYearOfCentury', 18) + codes_set(ibufr, 'typicalMonth', 11) + codes_set(ibufr, 'typicalDay', 21) + codes_set(ibufr, 'typicalHour', 21) + codes_set(ibufr, 'typicalMinute', 4) + codes_set(ibufr, 'rdbType', 1) + codes_set(ibufr, 'oldSubtype', 182) + codes_set(ibufr, 'localYear', 2018) + codes_set(ibufr, 'localMonth', 11) + codes_set(ibufr, 'localDay', 21) + codes_set(ibufr, 'localHour', 21) + codes_set(ibufr, 'localMinute', 4) + codes_set(ibufr, 'localSecond', 0) + codes_set(ibufr, 'ident',' 3101544') + codes_set(ibufr, 'rdbtimeDay', 21) + codes_set(ibufr, 'rdbtimeHour', 21) + codes_set(ibufr, 'rdbtimeMinute', 26) + codes_set(ibufr, 'rdbtimeSecond', 59) + codes_set(ibufr, 'rectimeDay', 10) + codes_set(ibufr, 'rectimeHour', 10) + codes_set(ibufr, 'rectimeMinute', 0) + codes_set(ibufr, 'rectimeSecond', 0) + codes_set(ibufr, 'correction1', 0) + codes_set(ibufr, 'correction1Part', 0) + codes_set(ibufr, 'correction2', 0) + codes_set(ibufr, 'correction2Part', 0) + codes_set(ibufr, 'correction3', 0) + codes_set(ibufr, 'correction3Part', 0) + codes_set(ibufr, 'correction4', 0) + codes_set(ibufr, 'correction4Part', 0) + codes_set(ibufr, 'qualityControl', 70) + codes_set(ibufr, 'newSubtype', 0) + codes_set(ibufr, 'numberOfSubsets', 1) + codes_set(ibufr, 'localLatitude', -3.598198000000000008e+01) + codes_set(ibufr, 'localLongitude', -4.484317000000000064e+01) + codes_set(ibufr, 'observedData', 1) + codes_set(ibufr, 'compressedData', 0) + + # Create the structure of the data section + codes_set_array(ibufr, 'unexpandedDescriptors', + (315009, + 222000, 236000, + 101000 + SIZE_OF_BMP, 31031, + 33007, 33007) + ) + + codes_set(ibufr, 'marineObservingPlatformIdentifier', 3101544) + codes_set(ibufr, 'marineObservingPlatformIdentifier->percentConfidence', 44) + codes_set(ibufr, 'longStationName','SIO Lagrangian Drifter Lab') + codes_set(ibufr, 'dataBuoyType', 1) + codes_set(ibufr, '#1#timeSignificance', 26) + codes_set(ibufr, '#1#year', 2018) + codes_set(ibufr, '#1#month', 11) + codes_set(ibufr, '#1#day', 21) + codes_set(ibufr, '#1#hour', 21) + codes_set(ibufr, '#1#minute', 4) + codes_set(ibufr, 'latitude', -3.598198000000000008e+01) + codes_set(ibufr, 'longitude', -4.484317000000000064e+01) + codes_set(ibufr, 'platformTransmitterIdNumber',' 300234065315740') + codes_set(ibufr, 'dataCollectionLocationSystem', 8) + codes_set(ibufr, 'directionOfMotionOfMovingObservingPlatform', CODES_MISSING_LONG) + codes_set(ibufr, 'platformDriftSpeed', CODES_MISSING_DOUBLE) + codes_set(ibufr, 'qualityOfBuoySatelliteTransmission', 0) + codes_set(ibufr, 'qualityOfBuoyLocation', 0) + codes_set(ibufr, 'locationQualityClassRangeOfRadiusOf66Confidence', 3) + codes_set(ibufr, 'batteryVoltageLargeRange', 1.020000000000000107e+01) + codes_set(ibufr, 'drogueType', 1) + codes_set(ibufr, 'lagrangianDrifterDrogueStatus', 2) + codes_set(ibufr, 'drogueDepth', 15) + codes_set(ibufr, 'lagrangianDrifterSubmergenceTimeSubmerged', 30) + codes_set(ibufr, '#2#timeSignificance', 25) + codes_set(ibufr, '#2#year', 2018) + codes_set(ibufr, '#2#month', 11) + codes_set(ibufr, '#2#day', 21) + codes_set(ibufr, '#2#hour', 21) + codes_set(ibufr, '#2#minute', 4) + codes_set(ibufr, 'temperatureObservationPrecision', CODES_MISSING_DOUBLE) + codes_set(ibufr, 'oceanographicWaterTemperature', 2.914499999999999886e+02) + codes_set(ibufr, 'methodOfSalinityOrDepthMeasurement', CODES_MISSING_LONG) + codes_set(ibufr, 'seaSurfaceSalinity', CODES_MISSING_DOUBLE) + codes_set(ibufr, 'surfaceType', CODES_MISSING_LONG) + codes_set(ibufr, 'iceThickness', CODES_MISSING_DOUBLE) + codes_set(ibufr, 'nonCoordinatePressure', CODES_MISSING_DOUBLE) + codes_set(ibufr, 'pressureReducedToMeanSeaLevel', 1.021700000000000000e+05) + codes_set(ibufr, 'pressureReducedToMeanSeaLevel->percentConfidence', 45) + + # Encode the keys back in the data section + codes_set(ibufr, 'pack', 1) + + outfile = open(OUTPUT_FILENAME, 'wb') + codes_write(ibufr, outfile) + print ("Created output BUFR file ",OUTPUT_FILENAME) + codes_release(ibufr) + + +def main(): + try: + bufr_encode() + except CodesInternalError as err: + traceback.print_exc(file=sys.stderr) + return 1 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/examples/python/bufr_ecc-869.sh b/examples/python/bufr_ecc-869.sh new file mode 100755 index 000000000..162603c2d --- /dev/null +++ b/examples/python/bufr_ecc-869.sh @@ -0,0 +1,35 @@ +#!/bin/sh +# Copyright 2005-2018 ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.sh + +#Define a common label for all the tmp files +label="bufr_ecc_869_test_p" + +temp=${label}".tmp.txt" + +# The output BUFR filename is hardcoded in the Python script +output="outfile_ecc_869_test.bufr" +$PYTHON $examples_src/bufr_ecc-869.py + +# Check the output +${tools_dir}/bufr_dump -p $output + +echo 'print "[expandedDescriptors%06d]";' | ${tools_dir}/bufr_filter - $output + +# The bitmap should have been correctly applied to the 1st and last elements +${tools_dir}/bufr_filter - $output <percentConfidence==44); + assert(pressureReducedToMeanSeaLevel->percentConfidence==45); +EOF + +# Clean up +rm -f $temp $output diff --git a/src/grib_accessor_class_bufr_data_array.c b/src/grib_accessor_class_bufr_data_array.c index bab28e5b3..39e4ceb81 100644 --- a/src/grib_accessor_class_bufr_data_array.c +++ b/src/grib_accessor_class_bufr_data_array.c @@ -2089,9 +2089,11 @@ static int is_bitmap_start_descriptor(grib_accessors_list* al, int* err) case 237000: /*case 243000:*/ { - //long index[1]; - //grib_accessor* anindex=grib_accessor_get_attribute(al->accessor,"index"); - //grib_unpack_long(anindex,index,&l); +#if 0 + long index[1]; + grib_accessor* anindex=grib_accessor_get_attribute(al->accessor,"index"); + grib_unpack_long(anindex,index,&l); +#endif return 1; } } @@ -2104,8 +2106,18 @@ static void print_bitmap_debug_info(grib_context* c, bitmap_s* bitmap, grib_acce printf("ECCODES DEBUG: bitmap_init: bitmapSize=%d\n", bitmapSize); bitmap->cursor=bitmapStart->next; bitmap->referredElement=bitmapStart; - while (bitmap_ref_skip(bitmap->referredElement,&ret)) + + while (bitmap_ref_skip(bitmap->referredElement,&ret)) { + int is_bmp = 0; + if (is_bitmap_start_descriptor(bitmap->referredElement,&ret)) { + is_bmp = 1; + } bitmap->referredElement=bitmap->referredElement->prev; + if (is_bmp) { + break; + } + } + for (i=1;ireferredElement) { printf("ECCODES DEBUG:\t bitmap_init: i=%d |%s|\n", i,bitmap->referredElement->accessor->name); From 2c6af0f389f4f0afbfadd55a58837aaaa7deeb4e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 18 Mar 2019 15:25:59 +0000 Subject: [PATCH 155/414] ECC-909: Add a key monthlyVerificationTime in all monthly streams --- definitions/mars/grib.edmm.an.def | 3 +++ definitions/mars/grib.edmm.fc.def | 4 ++++ definitions/mars/grib.edmo.an.def | 4 ++++ definitions/mars/grib.edmo.fc.def | 4 ++++ definitions/mars/grib.ewmm.an.def | 4 ++++ definitions/mars/grib.ewmm.fc.def | 4 ++++ definitions/mars/grib.ewmo.an.def | 4 ++++ definitions/mars/grib.ewmo.fc.def | 4 ++++ definitions/mars/grib.mnth.an.def | 4 ++++ definitions/mars/grib.mnth.fc.def | 7 ++++++- definitions/mars/grib.moda.an.def | 4 ++++ definitions/mars/grib.moda.fc.def | 4 ++++ definitions/mars/grib.wamd.an.def | 4 ++++ definitions/mars/grib.wamd.fc.def | 4 ++++ definitions/mars/grib.wamo.an.def | 4 ++++ definitions/mars/grib.wamo.fc.def | 4 ++++ 16 files changed, 65 insertions(+), 1 deletion(-) diff --git a/definitions/mars/grib.edmm.an.def b/definitions/mars/grib.edmm.an.def index c0cd1875f..ce3197f81 100644 --- a/definitions/mars/grib.edmm.an.def +++ b/definitions/mars/grib.edmm.an.def @@ -4,3 +4,6 @@ alias mars.step = startStep; alias mars.number=perturbationNumber; +alias monthlyVerificationTime = validityTime; +alias CDSmmTime = monthlyVerificationTime; +alias CDSmmDate = dataDate; diff --git a/definitions/mars/grib.edmm.fc.def b/definitions/mars/grib.edmm.fc.def index 5abcbfa63..b1e3bb6d1 100644 --- a/definitions/mars/grib.edmm.fc.def +++ b/definitions/mars/grib.edmm.fc.def @@ -8,6 +8,10 @@ meta monthlyVerificationYear evaluate(monthlyVerificationDate/10000); meta verificationMonth evaluate( (verificationDate/100)%100 ); meta monthlyVerificationMonth evaluate( (monthlyVerificationDate/100)%100 ); +alias monthlyVerificationTime = validityTime; +alias CDSmmTime = monthlyVerificationTime; +alias CDSmmDate = monthlyVerificationDate; + # class e4 # constant six = 6; diff --git a/definitions/mars/grib.edmo.an.def b/definitions/mars/grib.edmo.an.def index db73d6ba5..258be9ea9 100644 --- a/definitions/mars/grib.edmo.an.def +++ b/definitions/mars/grib.edmo.an.def @@ -8,3 +8,7 @@ if(class != 3) { unalias mars.step; } alias mars.number=perturbationNumber; + +alias monthlyVerificationTime = validityTime; +alias CDSmmTime = monthlyVerificationTime; +alias CDSmmDate = dataDate; diff --git a/definitions/mars/grib.edmo.fc.def b/definitions/mars/grib.edmo.fc.def index d0744e69a..4b7b3840b 100644 --- a/definitions/mars/grib.edmo.fc.def +++ b/definitions/mars/grib.edmo.fc.def @@ -9,6 +9,10 @@ meta monthlyVerificationYear evaluate(monthlyVerificationDate/10000); meta verificationMonth evaluate( (verificationDate/100)%100 ); meta monthlyVerificationMonth evaluate( (monthlyVerificationDate/100)%100 ); +alias monthlyVerificationTime = validityTime; +alias CDSmmTime = monthlyVerificationTime; +alias CDSmmDate = monthlyVerificationDate; + # class 3 is "er" which is 15 year re-analysis (ERA15) # Only ERA15 has time and step if(class != 3) { diff --git a/definitions/mars/grib.ewmm.an.def b/definitions/mars/grib.ewmm.an.def index 942668e19..5efe68b34 100644 --- a/definitions/mars/grib.ewmm.an.def +++ b/definitions/mars/grib.ewmm.an.def @@ -1,2 +1,6 @@ alias mars.step = startStep; alias mars.number=perturbationNumber; + +alias monthlyVerificationTime = validityTime; +alias CDSmmTime = monthlyVerificationTime; +alias CDSmmDate = dataDate; diff --git a/definitions/mars/grib.ewmm.fc.def b/definitions/mars/grib.ewmm.fc.def index e452c8e4c..403decf04 100644 --- a/definitions/mars/grib.ewmm.fc.def +++ b/definitions/mars/grib.ewmm.fc.def @@ -8,6 +8,10 @@ meta monthlyVerificationYear evaluate(monthlyVerificationDate/10000); meta verificationMonth evaluate( (verificationDate/100)%100 ); meta monthlyVerificationMonth evaluate( (monthlyVerificationDate/100)%100 ); +alias monthlyVerificationTime = validityTime; +alias CDSmmTime = monthlyVerificationTime; +alias CDSmmDate = monthlyVerificationDate; + # # See GRIB-422, GRIB-497, GRIB-766, GRIB-833 # diff --git a/definitions/mars/grib.ewmo.an.def b/definitions/mars/grib.ewmo.an.def index 38e4bb841..4969e24c4 100644 --- a/definitions/mars/grib.ewmo.an.def +++ b/definitions/mars/grib.ewmo.an.def @@ -1,6 +1,10 @@ # NOTE: step is startStep alias mars.step = startStep; +alias monthlyVerificationTime = validityTime; +alias CDSmmTime = monthlyVerificationTime; +alias CDSmmDate = dataDate; + # class 3 is "er" which is 15 year re-analysis (ERA15) # Only ERA15 has time and step if(class != 3) { diff --git a/definitions/mars/grib.ewmo.fc.def b/definitions/mars/grib.ewmo.fc.def index d0744e69a..4b7b3840b 100644 --- a/definitions/mars/grib.ewmo.fc.def +++ b/definitions/mars/grib.ewmo.fc.def @@ -9,6 +9,10 @@ meta monthlyVerificationYear evaluate(monthlyVerificationDate/10000); meta verificationMonth evaluate( (verificationDate/100)%100 ); meta monthlyVerificationMonth evaluate( (monthlyVerificationDate/100)%100 ); +alias monthlyVerificationTime = validityTime; +alias CDSmmTime = monthlyVerificationTime; +alias CDSmmDate = monthlyVerificationDate; + # class 3 is "er" which is 15 year re-analysis (ERA15) # Only ERA15 has time and step if(class != 3) { diff --git a/definitions/mars/grib.mnth.an.def b/definitions/mars/grib.mnth.an.def index e06aac5ae..03ae447f9 100644 --- a/definitions/mars/grib.mnth.an.def +++ b/definitions/mars/grib.mnth.an.def @@ -1,2 +1,6 @@ # class e4 alias mars.step = startStep; + +alias monthlyVerificationTime = validityTime; +alias CDSmmTime = monthlyVerificationTime; +alias CDSmmDate = dataDate; diff --git a/definitions/mars/grib.mnth.fc.def b/definitions/mars/grib.mnth.fc.def index 44a3b924a..3b3c8f74c 100644 --- a/definitions/mars/grib.mnth.fc.def +++ b/definitions/mars/grib.mnth.fc.def @@ -7,7 +7,12 @@ meta verificationYear evaluate(verificationDate/10000); meta monthlyVerificationYear evaluate(monthlyVerificationDate/10000); meta verificationMonth evaluate( (verificationDate/100)%100 ); meta monthlyVerificationMonth evaluate( (monthlyVerificationDate/100)%100 ); -# + + +alias monthlyVerificationTime = validityTime; +alias CDSmmTime = monthlyVerificationTime; +alias CDSmmDate = monthlyVerificationDate; + # See GRIB-497, GRIB-766, GRIB-833 # if (class is "em" || class is "e2" || class is "ea" || class is "ep" || diff --git a/definitions/mars/grib.moda.an.def b/definitions/mars/grib.moda.an.def index a2d44724e..4c0f92440 100644 --- a/definitions/mars/grib.moda.an.def +++ b/definitions/mars/grib.moda.an.def @@ -2,6 +2,10 @@ alias mars.step = startStep; +alias monthlyVerificationTime = zero; +alias CDSmmTime = monthlyVerificationTime; +alias CDSmmDate = dataDate; + # class 3 is "er" which is 15 year re-analysis (ERA15) # Only ERA15 has time and step if(class != 3) { diff --git a/definitions/mars/grib.moda.fc.def b/definitions/mars/grib.moda.fc.def index ad96bb391..b55fb41f1 100644 --- a/definitions/mars/grib.moda.fc.def +++ b/definitions/mars/grib.moda.fc.def @@ -4,6 +4,10 @@ meta verificationDate g1verificationdate(dataDate, dataTime, endStep) : r meta monthlyVerificationDate g1monthlydate(verificationDate) : dump,no_copy; alias mars.date = monthlyVerificationDate; +alias monthlyVerificationTime = zero; +alias CDSmmTime = monthlyVerificationTime; +alias CDSmmDate = monthlyVerificationDate; + meta verificationYear evaluate(verificationDate/10000); meta monthlyVerificationYear evaluate(monthlyVerificationDate/10000); meta verificationMonth evaluate( (verificationDate/100)%100 ); diff --git a/definitions/mars/grib.wamd.an.def b/definitions/mars/grib.wamd.an.def index a2d44724e..4c0f92440 100644 --- a/definitions/mars/grib.wamd.an.def +++ b/definitions/mars/grib.wamd.an.def @@ -2,6 +2,10 @@ alias mars.step = startStep; +alias monthlyVerificationTime = zero; +alias CDSmmTime = monthlyVerificationTime; +alias CDSmmDate = dataDate; + # class 3 is "er" which is 15 year re-analysis (ERA15) # Only ERA15 has time and step if(class != 3) { diff --git a/definitions/mars/grib.wamd.fc.def b/definitions/mars/grib.wamd.fc.def index ad96bb391..b55fb41f1 100644 --- a/definitions/mars/grib.wamd.fc.def +++ b/definitions/mars/grib.wamd.fc.def @@ -4,6 +4,10 @@ meta verificationDate g1verificationdate(dataDate, dataTime, endStep) : r meta monthlyVerificationDate g1monthlydate(verificationDate) : dump,no_copy; alias mars.date = monthlyVerificationDate; +alias monthlyVerificationTime = zero; +alias CDSmmTime = monthlyVerificationTime; +alias CDSmmDate = monthlyVerificationDate; + meta verificationYear evaluate(verificationDate/10000); meta monthlyVerificationYear evaluate(monthlyVerificationDate/10000); meta verificationMonth evaluate( (verificationDate/100)%100 ); diff --git a/definitions/mars/grib.wamo.an.def b/definitions/mars/grib.wamo.an.def index 0807371d8..a283b7bff 100644 --- a/definitions/mars/grib.wamo.an.def +++ b/definitions/mars/grib.wamo.an.def @@ -1 +1,5 @@ alias mars.step = startStep; + +alias monthlyVerificationTime = validityTime; +alias CDSmmTime = monthlyVerificationTime; +alias CDSmmDate = dataDate; diff --git a/definitions/mars/grib.wamo.fc.def b/definitions/mars/grib.wamo.fc.def index 72cbbd335..33ddffa04 100644 --- a/definitions/mars/grib.wamo.fc.def +++ b/definitions/mars/grib.wamo.fc.def @@ -8,6 +8,10 @@ meta monthlyVerificationYear evaluate(monthlyVerificationDate/10000); meta verificationMonth evaluate( (verificationDate/100)%100 ); meta monthlyVerificationMonth evaluate( (monthlyVerificationDate/100)%100 ); +alias monthlyVerificationTime = validityTime; +alias CDSmmTime = monthlyVerificationTime; +alias CDSmmDate = monthlyVerificationDate; + # # See GRIB-497, GRIB-766, GRIB-833 # From ea996f00422e4dfb8a63899b8402e93ebab0c254 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Tue, 19 Mar 2019 08:57:08 +0000 Subject: [PATCH 156/414] Appveyor: update ecCodes version --- .appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.appveyor.yml b/.appveyor.yml index 0c617e235..4ae2f7cb0 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -2,7 +2,7 @@ # general configuration # #---------------------------------# -version: 2.11.0-{build}-{branch} +version: 2.12.0-{build}-{branch} branches: only: From 3dc640ccc70e9bc3dde3e95b272319b07bb0d4b6 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 19 Mar 2019 14:21:51 +0000 Subject: [PATCH 157/414] ECC-909: Use keys monthlyVerificationDate/monthlyVerificationTime --- definitions/mars/grib.edmm.an.def | 3 +-- definitions/mars/grib.edmm.fc.def | 2 -- definitions/mars/grib.edmo.an.def | 7 +++---- definitions/mars/grib.edmo.fc.def | 2 -- definitions/mars/grib.ewmm.an.def | 3 +-- definitions/mars/grib.ewmm.fc.def | 2 -- definitions/mars/grib.ewmo.an.def | 3 +-- definitions/mars/grib.ewmo.fc.def | 2 -- definitions/mars/grib.mnth.an.def | 3 +-- definitions/mars/grib.mnth.fc.def | 3 --- definitions/mars/grib.moda.an.def | 3 +-- definitions/mars/grib.moda.fc.def | 2 -- definitions/mars/grib.wamd.an.def | 3 +-- definitions/mars/grib.wamd.fc.def | 2 -- definitions/mars/grib.wamo.an.def | 3 +-- definitions/mars/grib.wamo.fc.def | 2 -- 16 files changed, 10 insertions(+), 35 deletions(-) diff --git a/definitions/mars/grib.edmm.an.def b/definitions/mars/grib.edmm.an.def index ce3197f81..23352e770 100644 --- a/definitions/mars/grib.edmm.an.def +++ b/definitions/mars/grib.edmm.an.def @@ -5,5 +5,4 @@ alias mars.step = startStep; alias mars.number=perturbationNumber; alias monthlyVerificationTime = validityTime; -alias CDSmmTime = monthlyVerificationTime; -alias CDSmmDate = dataDate; +alias monthlyVerificationDate = dataDate; diff --git a/definitions/mars/grib.edmm.fc.def b/definitions/mars/grib.edmm.fc.def index b1e3bb6d1..5d94b1664 100644 --- a/definitions/mars/grib.edmm.fc.def +++ b/definitions/mars/grib.edmm.fc.def @@ -9,8 +9,6 @@ meta verificationMonth evaluate( (verificationDate/100)%100 ); meta monthlyVerificationMonth evaluate( (monthlyVerificationDate/100)%100 ); alias monthlyVerificationTime = validityTime; -alias CDSmmTime = monthlyVerificationTime; -alias CDSmmDate = monthlyVerificationDate; # class e4 # constant six = 6; diff --git a/definitions/mars/grib.edmo.an.def b/definitions/mars/grib.edmo.an.def index 258be9ea9..e9fd89b5b 100644 --- a/definitions/mars/grib.edmo.an.def +++ b/definitions/mars/grib.edmo.an.def @@ -1,6 +1,9 @@ # NOTE: MARS step is startStep. See GRIB-378 alias mars.step = startStep; +alias monthlyVerificationTime = validityTime; +alias monthlyVerificationDate = dataDate; + # class 3 is "er" which is 15 year re-analysis (ERA15) # Only ERA15 has time and step if(class != 3) { @@ -8,7 +11,3 @@ if(class != 3) { unalias mars.step; } alias mars.number=perturbationNumber; - -alias monthlyVerificationTime = validityTime; -alias CDSmmTime = monthlyVerificationTime; -alias CDSmmDate = dataDate; diff --git a/definitions/mars/grib.edmo.fc.def b/definitions/mars/grib.edmo.fc.def index 4b7b3840b..bcd321571 100644 --- a/definitions/mars/grib.edmo.fc.def +++ b/definitions/mars/grib.edmo.fc.def @@ -10,8 +10,6 @@ meta verificationMonth evaluate( (verificationDate/100)%100 ); meta monthlyVerificationMonth evaluate( (monthlyVerificationDate/100)%100 ); alias monthlyVerificationTime = validityTime; -alias CDSmmTime = monthlyVerificationTime; -alias CDSmmDate = monthlyVerificationDate; # class 3 is "er" which is 15 year re-analysis (ERA15) # Only ERA15 has time and step diff --git a/definitions/mars/grib.ewmm.an.def b/definitions/mars/grib.ewmm.an.def index 5efe68b34..5202a2231 100644 --- a/definitions/mars/grib.ewmm.an.def +++ b/definitions/mars/grib.ewmm.an.def @@ -2,5 +2,4 @@ alias mars.step = startStep; alias mars.number=perturbationNumber; alias monthlyVerificationTime = validityTime; -alias CDSmmTime = monthlyVerificationTime; -alias CDSmmDate = dataDate; +alias monthlyVerificationDate = dataDate; diff --git a/definitions/mars/grib.ewmm.fc.def b/definitions/mars/grib.ewmm.fc.def index 403decf04..ed1cf7d98 100644 --- a/definitions/mars/grib.ewmm.fc.def +++ b/definitions/mars/grib.ewmm.fc.def @@ -9,8 +9,6 @@ meta verificationMonth evaluate( (verificationDate/100)%100 ); meta monthlyVerificationMonth evaluate( (monthlyVerificationDate/100)%100 ); alias monthlyVerificationTime = validityTime; -alias CDSmmTime = monthlyVerificationTime; -alias CDSmmDate = monthlyVerificationDate; # # See GRIB-422, GRIB-497, GRIB-766, GRIB-833 diff --git a/definitions/mars/grib.ewmo.an.def b/definitions/mars/grib.ewmo.an.def index 4969e24c4..caf87ad9b 100644 --- a/definitions/mars/grib.ewmo.an.def +++ b/definitions/mars/grib.ewmo.an.def @@ -2,8 +2,7 @@ alias mars.step = startStep; alias monthlyVerificationTime = validityTime; -alias CDSmmTime = monthlyVerificationTime; -alias CDSmmDate = dataDate; +alias monthlyVerificationDate = dataDate; # class 3 is "er" which is 15 year re-analysis (ERA15) # Only ERA15 has time and step diff --git a/definitions/mars/grib.ewmo.fc.def b/definitions/mars/grib.ewmo.fc.def index 4b7b3840b..bcd321571 100644 --- a/definitions/mars/grib.ewmo.fc.def +++ b/definitions/mars/grib.ewmo.fc.def @@ -10,8 +10,6 @@ meta verificationMonth evaluate( (verificationDate/100)%100 ); meta monthlyVerificationMonth evaluate( (monthlyVerificationDate/100)%100 ); alias monthlyVerificationTime = validityTime; -alias CDSmmTime = monthlyVerificationTime; -alias CDSmmDate = monthlyVerificationDate; # class 3 is "er" which is 15 year re-analysis (ERA15) # Only ERA15 has time and step diff --git a/definitions/mars/grib.mnth.an.def b/definitions/mars/grib.mnth.an.def index 03ae447f9..a300aae3b 100644 --- a/definitions/mars/grib.mnth.an.def +++ b/definitions/mars/grib.mnth.an.def @@ -2,5 +2,4 @@ alias mars.step = startStep; alias monthlyVerificationTime = validityTime; -alias CDSmmTime = monthlyVerificationTime; -alias CDSmmDate = dataDate; +alias monthlyVerificationDate = dataDate; diff --git a/definitions/mars/grib.mnth.fc.def b/definitions/mars/grib.mnth.fc.def index 3b3c8f74c..fc25f40af 100644 --- a/definitions/mars/grib.mnth.fc.def +++ b/definitions/mars/grib.mnth.fc.def @@ -8,10 +8,7 @@ meta monthlyVerificationYear evaluate(monthlyVerificationDate/10000); meta verificationMonth evaluate( (verificationDate/100)%100 ); meta monthlyVerificationMonth evaluate( (monthlyVerificationDate/100)%100 ); - alias monthlyVerificationTime = validityTime; -alias CDSmmTime = monthlyVerificationTime; -alias CDSmmDate = monthlyVerificationDate; # See GRIB-497, GRIB-766, GRIB-833 # diff --git a/definitions/mars/grib.moda.an.def b/definitions/mars/grib.moda.an.def index 4c0f92440..3afa70813 100644 --- a/definitions/mars/grib.moda.an.def +++ b/definitions/mars/grib.moda.an.def @@ -3,8 +3,7 @@ alias mars.step = startStep; alias monthlyVerificationTime = zero; -alias CDSmmTime = monthlyVerificationTime; -alias CDSmmDate = dataDate; +alias monthlyVerificationDate = dataDate; # class 3 is "er" which is 15 year re-analysis (ERA15) # Only ERA15 has time and step diff --git a/definitions/mars/grib.moda.fc.def b/definitions/mars/grib.moda.fc.def index b55fb41f1..ab21b8b45 100644 --- a/definitions/mars/grib.moda.fc.def +++ b/definitions/mars/grib.moda.fc.def @@ -5,8 +5,6 @@ meta monthlyVerificationDate g1monthlydate(verificationDate) : dump,no_copy; alias mars.date = monthlyVerificationDate; alias monthlyVerificationTime = zero; -alias CDSmmTime = monthlyVerificationTime; -alias CDSmmDate = monthlyVerificationDate; meta verificationYear evaluate(verificationDate/10000); meta monthlyVerificationYear evaluate(monthlyVerificationDate/10000); diff --git a/definitions/mars/grib.wamd.an.def b/definitions/mars/grib.wamd.an.def index 4c0f92440..3afa70813 100644 --- a/definitions/mars/grib.wamd.an.def +++ b/definitions/mars/grib.wamd.an.def @@ -3,8 +3,7 @@ alias mars.step = startStep; alias monthlyVerificationTime = zero; -alias CDSmmTime = monthlyVerificationTime; -alias CDSmmDate = dataDate; +alias monthlyVerificationDate = dataDate; # class 3 is "er" which is 15 year re-analysis (ERA15) # Only ERA15 has time and step diff --git a/definitions/mars/grib.wamd.fc.def b/definitions/mars/grib.wamd.fc.def index b55fb41f1..ab21b8b45 100644 --- a/definitions/mars/grib.wamd.fc.def +++ b/definitions/mars/grib.wamd.fc.def @@ -5,8 +5,6 @@ meta monthlyVerificationDate g1monthlydate(verificationDate) : dump,no_copy; alias mars.date = monthlyVerificationDate; alias monthlyVerificationTime = zero; -alias CDSmmTime = monthlyVerificationTime; -alias CDSmmDate = monthlyVerificationDate; meta verificationYear evaluate(verificationDate/10000); meta monthlyVerificationYear evaluate(monthlyVerificationDate/10000); diff --git a/definitions/mars/grib.wamo.an.def b/definitions/mars/grib.wamo.an.def index a283b7bff..2e623021e 100644 --- a/definitions/mars/grib.wamo.an.def +++ b/definitions/mars/grib.wamo.an.def @@ -1,5 +1,4 @@ alias mars.step = startStep; alias monthlyVerificationTime = validityTime; -alias CDSmmTime = monthlyVerificationTime; -alias CDSmmDate = dataDate; +alias monthlyVerificationDate = dataDate; diff --git a/definitions/mars/grib.wamo.fc.def b/definitions/mars/grib.wamo.fc.def index 33ddffa04..180df73d0 100644 --- a/definitions/mars/grib.wamo.fc.def +++ b/definitions/mars/grib.wamo.fc.def @@ -9,8 +9,6 @@ meta verificationMonth evaluate( (verificationDate/100)%100 ); meta monthlyVerificationMonth evaluate( (monthlyVerificationDate/100)%100 ); alias monthlyVerificationTime = validityTime; -alias CDSmmTime = monthlyVerificationTime; -alias CDSmmDate = monthlyVerificationDate; # # See GRIB-497, GRIB-766, GRIB-833 From 27f37da83be5379a2e6e82b96bec9bb213edc052 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 19 Mar 2019 15:36:25 +0000 Subject: [PATCH 158/414] ECC-913: Tools: Add gts_count --- tests/CMakeLists.txt | 1 + tests/bufr_ecc-875.sh | 4 ++++ tests/gts_count.sh | 30 ++++++++++++++++++++++++++++++ tools/CMakeLists.txt | 5 ++++- tools/codes_count.c | 2 ++ 5 files changed, 41 insertions(+), 1 deletion(-) create mode 100755 tests/gts_count.sh diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 262140867..c788da2c5 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -102,6 +102,7 @@ list( APPEND tests_data_reqd bufr_ecc-556 gts_get gts_ls + gts_count gts_compare metar_ls metar_get diff --git a/tests/bufr_ecc-875.sh b/tests/bufr_ecc-875.sh index 1ffbd69c8..f538ddc76 100755 --- a/tests/bufr_ecc-875.sh +++ b/tests/bufr_ecc-875.sh @@ -22,6 +22,10 @@ tempBufr=temp.${label}.bufr # Case 1: # -------------------------------- input=${data_dir}/gts/EGRR20150317121020_00493212.DAT + +numBufrs=`${tools_dir}/bufr_count $input` +[ $numBufrs -eq 94 ] + ${tools_dir}/bufr_copy -g -w numberOfSubsets=9 $input $tempBufr # Remove the first line and the last three ${tools_dir}/gts_ls $tempBufr | sed 1d | sed 9,11d > $tempOut diff --git a/tests/gts_count.sh b/tests/gts_count.sh new file mode 100755 index 000000000..91494ce54 --- /dev/null +++ b/tests/gts_count.sh @@ -0,0 +1,30 @@ +#!/bin/sh +# Copyright 2005-2018 ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.sh + +#Enter data dir +cd ${data_dir}/gts + +#Define a common label for all the tmp files +label="gts_count_test" + +#Create log file +fLog=${label}".log" +rm -f $fLog + +#Define tmp file +fTmp=${label}".tmp.txt" + +gts_file=EGRR20150317121020_00493212.DAT +count=`${tools_dir}/gts_count $gts_file` +[ $count -eq 300 ] + +rm -f $fLog diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index 2fac9cda9..d0deedca5 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -64,13 +64,16 @@ foreach( tool ${grib_tools_bins_EXTRA} ) LIBS grib_tools ) endforeach() -# grib_count/bufr_count tools. Same source code, different executable names +# grib_count/bufr_count etc. Same source code, different executable names ecbuild_add_executable( TARGET grib_count SOURCES codes_count.c LIBS grib_tools ) ecbuild_add_executable( TARGET bufr_count SOURCES codes_count.c LIBS grib_tools ) +ecbuild_add_executable( TARGET gts_count + SOURCES codes_count.c + LIBS grib_tools ) # grib to netcdf is optional ecbuild_add_executable( TARGET grib_to_netcdf diff --git a/tools/codes_count.c b/tools/codes_count.c index 67a61db02..a28ca6acb 100644 --- a/tools/codes_count.c +++ b/tools/codes_count.c @@ -31,6 +31,7 @@ static int count_messages(FILE* in, int message_type, unsigned long *count) /* printf("message_type=%d\n", message_type); */ if (message_type == CODES_GRIB) wmo_read=wmo_read_grib_from_file_malloc; else if (message_type == CODES_BUFR) wmo_read=wmo_read_bufr_from_file_malloc; + else if (message_type == CODES_GTS) wmo_read=wmo_read_gts_from_file_malloc; else wmo_read=wmo_read_any_from_file_malloc; if (fail_on_error) @@ -76,6 +77,7 @@ int main(int argc,char* argv[]) if (strstr(argv[0], "grib_count")) message_type = CODES_GRIB; if (strstr(argv[0], "bufr_count")) message_type = CODES_BUFR; + if (strstr(argv[0], "gts_count")) message_type = CODES_GTS; count_total=0; for (i=1;i Date: Tue, 19 Mar 2019 16:00:07 +0000 Subject: [PATCH 159/414] Add CODES_PRODUCT_GTS --- python/eccodes/eccodes.py | 1 + python/gribapi/gribapi.py | 2 +- python3/eccodes/eccodes.py | 1 + python3/gribapi/gribapi.py | 2 +- 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/python/eccodes/eccodes.py b/python/eccodes/eccodes.py index 1e008ffb8..6399ba94c 100644 --- a/python/eccodes/eccodes.py +++ b/python/eccodes/eccodes.py @@ -4,6 +4,7 @@ from gribapi import GRIB_CHECK as CODES_CHECK from gribapi import CODES_PRODUCT_GRIB from gribapi import CODES_PRODUCT_BUFR +from gribapi import CODES_PRODUCT_GTS from gribapi import CODES_PRODUCT_ANY from gribapi import GRIB_MISSING_DOUBLE as CODES_MISSING_DOUBLE from gribapi import GRIB_MISSING_LONG as CODES_MISSING_LONG diff --git a/python/gribapi/gribapi.py b/python/gribapi/gribapi.py index a6a18ff5f..406e4cf44 100644 --- a/python/gribapi/gribapi.py +++ b/python/gribapi/gribapi.py @@ -194,7 +194,7 @@ def codes_new_from_file(fileobj, product_kind, headers_only=False): \b Examples: \ref get_product_kind.py "get_product_kind.py" @param fileobj python file object - @param product_kind one of CODES_PRODUCT_GRIB, CODES_PRODUCT_BUFR, CODES_PRODUCT_METAR or CODES_PRODUCT_GTS + @param product_kind one of CODES_PRODUCT_GRIB, CODES_PRODUCT_BUFR, CODES_PRODUCT_GTS or CODES_PRODUCT_ANY @param headers_only whether or not to load the message with the headers only @return id of the message loaded in memory @exception GribInternalError diff --git a/python3/eccodes/eccodes.py b/python3/eccodes/eccodes.py index 5d6d07e99..8146272f2 100644 --- a/python3/eccodes/eccodes.py +++ b/python3/eccodes/eccodes.py @@ -4,6 +4,7 @@ from gribapi import GRIB_CHECK as CODES_CHECK from gribapi import CODES_PRODUCT_GRIB from gribapi import CODES_PRODUCT_BUFR +from gribapi import CODES_PRODUCT_GTS from gribapi import CODES_PRODUCT_ANY from gribapi import GRIB_MISSING_DOUBLE as CODES_MISSING_DOUBLE from gribapi import GRIB_MISSING_LONG as CODES_MISSING_LONG diff --git a/python3/gribapi/gribapi.py b/python3/gribapi/gribapi.py index c077681d3..702188edf 100644 --- a/python3/gribapi/gribapi.py +++ b/python3/gribapi/gribapi.py @@ -203,7 +203,7 @@ def codes_new_from_file(fileobj, product_kind, headers_only=False): \b Examples: \ref get_product_kind.py "get_product_kind.py" @param fileobj python file object - @param product_kind one of CODES_PRODUCT_GRIB, CODES_PRODUCT_BUFR, CODES_PRODUCT_METAR or CODES_PRODUCT_GTS + @param product_kind one of CODES_PRODUCT_GRIB, CODES_PRODUCT_BUFR, CODES_PRODUCT_GTS or CODES_PRODUCT_ANY @param headers_only whether or not to load the message with the headers only @return id of the message loaded in memory @exception GribInternalError From 0b1c4574bfbf0f26fc63e8cda61a746089faa65b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 19 Mar 2019 16:31:49 +0000 Subject: [PATCH 160/414] Add option to replace TPL absolute paths with library names This should help with relocatability: instead of generating eccodes-config.cmake with an absolute path to Third Party Libraries (TPLs) (e.g. /lib/x86_64-linux-gnu/libm.so.6) we have the option to use the library name instead (e.g. -lm). We also use library names in eccodes-targets.cmake and eccodes.pc if the option is set. The motivation is so that we can distribute packages with conda-forge. Without this change, the conda-forge build leaves its build path in the files above. When we come to build another package downstream, e.g. Magics, we are unable to find the ecCodes libraries because the absolute paths to the TPLs are no longer valid. Using library names instead lets cmake find the TPLs on the downstream build system. --- CMakeLists.txt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index c81aaaace..ac1069483 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -351,6 +351,21 @@ get_directory_property( COMPILE_DEFINITIONS ECCODES_DEFINITIONS ) foreach( _tpl ${ECCODES_TPLS} ) string( TOUPPER ${_tpl} TPL ) if( ${TPL}_FOUND ) + if( REPLACE_TPL_ABSOLUTE_PATHS ) + # replace TPL absolute paths with their library names + # this helps make ecCodes relocatable + set( _TMP "" ) + + foreach( _lib ${${TPL}_LIBRARIES} ) + get_filename_component( _lib_name ${_lib} NAME_WE ) + string( REGEX REPLACE "^lib" "" _name ${_lib_name} ) + list( APPEND _TMP "-l${_name}" ) + endforeach() + + set( ${TPL}_LIBRARIES ${_TMP} ) + set( _TMP "" ) + endif() + list( APPEND ECCODES_EXTRA_DEFINITIONS ${${TPL}_DEFINITIONS} ) list( APPEND ECCODES_EXTRA_INCLUDE_DIRS ${${TPL}_INCLUDE_DIRS} ${${TPL}_INCLUDE_DIR} ) list( APPEND ECCODES_EXTRA_LIBRARIES ${${TPL}_LIBRARIES} ) From ef87a37ffdc5e7d724015bb2214c4212bd106f34 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 19 Mar 2019 16:33:52 +0000 Subject: [PATCH 161/414] Appveyor: update ecCodes version --- .appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.appveyor.yml b/.appveyor.yml index 0c617e235..4ae2f7cb0 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -2,7 +2,7 @@ # general configuration # #---------------------------------# -version: 2.11.0-{build}-{branch} +version: 2.12.0-{build}-{branch} branches: only: From 4ea554f0cdc66abab2868773186dc64ab02747f6 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 20 Mar 2019 11:13:43 +0000 Subject: [PATCH 162/414] ECC-911: grib_util_set_spec: packing keyword has no effect (packing type=5) --- src/grib_util.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/grib_util.c b/src/grib_util.c index f378b10f7..8a052202b 100644 --- a/src/grib_util.c +++ b/src/grib_util.c @@ -1281,9 +1281,13 @@ grib_handle* grib_util_set_spec2(grib_handle* h, break; } } - if (!strcmp(input_packing_type,"grid_simple_matrix")) { + if (strcmp(input_packing_type,"grid_simple_matrix")==0) { long numberOfDirections,numberOfFrequencies; - if (h->context->keep_matrix) { + int keep_matrix = h->context->keep_matrix; + if (packing_spec->packing_type == GRIB_UTIL_PACKING_TYPE_GRID_SIMPLE) { + keep_matrix = 0; /* ECC-911 */ + } + if (keep_matrix) { int ret; SET_STRING_VALUE("packingType","grid_simple_matrix"); ret=grib_get_long(h,"numberOfDirections",&numberOfDirections); From 1e55c3c63090649a8944d43f4f9f21548e87e43a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 20 Mar 2019 12:13:17 +0000 Subject: [PATCH 163/414] Update versions --- .appveyor.yml | 2 +- CMakeLists.txt | 15 +++++++++++++++ VERSION.cmake | 2 +- src/grib_util.c | 8 ++++++-- version.sh | 2 +- 5 files changed, 24 insertions(+), 5 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index 0c617e235..e75d7c1c7 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -2,7 +2,7 @@ # general configuration # #---------------------------------# -version: 2.11.0-{build}-{branch} +version: 2.12.2-{build}-{branch} branches: only: diff --git a/CMakeLists.txt b/CMakeLists.txt index c81aaaace..ac1069483 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -351,6 +351,21 @@ get_directory_property( COMPILE_DEFINITIONS ECCODES_DEFINITIONS ) foreach( _tpl ${ECCODES_TPLS} ) string( TOUPPER ${_tpl} TPL ) if( ${TPL}_FOUND ) + if( REPLACE_TPL_ABSOLUTE_PATHS ) + # replace TPL absolute paths with their library names + # this helps make ecCodes relocatable + set( _TMP "" ) + + foreach( _lib ${${TPL}_LIBRARIES} ) + get_filename_component( _lib_name ${_lib} NAME_WE ) + string( REGEX REPLACE "^lib" "" _name ${_lib_name} ) + list( APPEND _TMP "-l${_name}" ) + endforeach() + + set( ${TPL}_LIBRARIES ${_TMP} ) + set( _TMP "" ) + endif() + list( APPEND ECCODES_EXTRA_DEFINITIONS ${${TPL}_DEFINITIONS} ) list( APPEND ECCODES_EXTRA_INCLUDE_DIRS ${${TPL}_INCLUDE_DIRS} ${${TPL}_INCLUDE_DIR} ) list( APPEND ECCODES_EXTRA_LIBRARIES ${${TPL}_LIBRARIES} ) diff --git a/VERSION.cmake b/VERSION.cmake index 1f4932340..a8ab90833 100644 --- a/VERSION.cmake +++ b/VERSION.cmake @@ -1 +1 @@ -set( ${PROJECT_NAME}_VERSION_STR "2.12.1" ) +set( ${PROJECT_NAME}_VERSION_STR "2.12.2" ) diff --git a/src/grib_util.c b/src/grib_util.c index 4b0eeae97..0da9bfe27 100644 --- a/src/grib_util.c +++ b/src/grib_util.c @@ -1280,9 +1280,13 @@ grib_handle* grib_util_set_spec2(grib_handle* h, break; } } - if (!strcmp(input_packing_type,"grid_simple_matrix")) { + if (strcmp(input_packing_type,"grid_simple_matrix")==0) { long numberOfDirections,numberOfFrequencies; - if (h->context->keep_matrix) { + int keep_matrix = h->context->keep_matrix; + if (packing_spec->packing_type == GRIB_UTIL_PACKING_TYPE_GRID_SIMPLE) { + keep_matrix = 0; /* ECC-911 */ + } + if (keep_matrix) { int ret; SET_STRING_VALUE("packingType","grid_simple_matrix"); ret=grib_get_long(h,"numberOfDirections",&numberOfDirections); diff --git a/version.sh b/version.sh index c195766c2..b64ccacfc 100644 --- a/version.sh +++ b/version.sh @@ -15,7 +15,7 @@ PACKAGE_NAME='eccodes' # Package version ECCODES_MAJOR_VERSION=2 ECCODES_MINOR_VERSION=12 -ECCODES_REVISION_VERSION=1 +ECCODES_REVISION_VERSION=2 ECCODES_CURRENT=1 ECCODES_REVISION=0 From f734d83307594036ba0521aca35b84092f4b2e80 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 20 Mar 2019 12:54:46 +0000 Subject: [PATCH 164/414] Update Appveyor version --- .appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.appveyor.yml b/.appveyor.yml index 4ae2f7cb0..c521562e2 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -2,7 +2,7 @@ # general configuration # #---------------------------------# -version: 2.12.0-{build}-{branch} +version: 2.13.0-{build}-{branch} branches: only: From 219daa9fdef18248eeabc828988ed8638f386c50 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 20 Mar 2019 15:48:24 +0000 Subject: [PATCH 165/414] Documentation --- src/grib_io.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/grib_io.c b/src/grib_io.c index b1c5f53b3..9b5a1bed1 100644 --- a/src/grib_io.c +++ b/src/grib_io.c @@ -902,8 +902,8 @@ static int read_any_gts(reader *r) int err = 0; unsigned char* buffer=NULL; unsigned long magic = 0; - unsigned long start = 0x010d0d0a; - unsigned long theEnd = 0x0d0d0a03; + unsigned long start = 0x010d0d0a; /* SOH CR CR LF */ + unsigned long theEnd = 0x0d0d0a03; /* CR CR LF ETX */ unsigned char tmp[128]={0,}; /* See ECC-735 */ size_t message_size=0; size_t already_read=0; From a0f883a4c9d94776b6df9a07f1af882b3294baaf Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 20 Mar 2019 16:36:26 +0000 Subject: [PATCH 166/414] ECC-909: monthlyVerificationTime=0 for edmo/ewmo --- definitions/mars/grib.edmo.an.def | 2 +- definitions/mars/grib.edmo.fc.def | 2 +- definitions/mars/grib.ewmo.an.def | 2 +- definitions/mars/grib.ewmo.fc.def | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/definitions/mars/grib.edmo.an.def b/definitions/mars/grib.edmo.an.def index e9fd89b5b..09791db5d 100644 --- a/definitions/mars/grib.edmo.an.def +++ b/definitions/mars/grib.edmo.an.def @@ -1,7 +1,7 @@ # NOTE: MARS step is startStep. See GRIB-378 alias mars.step = startStep; -alias monthlyVerificationTime = validityTime; +alias monthlyVerificationTime = zero; alias monthlyVerificationDate = dataDate; # class 3 is "er" which is 15 year re-analysis (ERA15) diff --git a/definitions/mars/grib.edmo.fc.def b/definitions/mars/grib.edmo.fc.def index bcd321571..dda3104a0 100644 --- a/definitions/mars/grib.edmo.fc.def +++ b/definitions/mars/grib.edmo.fc.def @@ -9,7 +9,7 @@ meta monthlyVerificationYear evaluate(monthlyVerificationDate/10000); meta verificationMonth evaluate( (verificationDate/100)%100 ); meta monthlyVerificationMonth evaluate( (monthlyVerificationDate/100)%100 ); -alias monthlyVerificationTime = validityTime; +alias monthlyVerificationTime = zero; # class 3 is "er" which is 15 year re-analysis (ERA15) # Only ERA15 has time and step diff --git a/definitions/mars/grib.ewmo.an.def b/definitions/mars/grib.ewmo.an.def index caf87ad9b..c28a8be78 100644 --- a/definitions/mars/grib.ewmo.an.def +++ b/definitions/mars/grib.ewmo.an.def @@ -1,7 +1,7 @@ # NOTE: step is startStep alias mars.step = startStep; -alias monthlyVerificationTime = validityTime; +alias monthlyVerificationTime = zero; alias monthlyVerificationDate = dataDate; # class 3 is "er" which is 15 year re-analysis (ERA15) diff --git a/definitions/mars/grib.ewmo.fc.def b/definitions/mars/grib.ewmo.fc.def index bcd321571..dda3104a0 100644 --- a/definitions/mars/grib.ewmo.fc.def +++ b/definitions/mars/grib.ewmo.fc.def @@ -9,7 +9,7 @@ meta monthlyVerificationYear evaluate(monthlyVerificationDate/10000); meta verificationMonth evaluate( (verificationDate/100)%100 ); meta monthlyVerificationMonth evaluate( (monthlyVerificationDate/100)%100 ); -alias monthlyVerificationTime = validityTime; +alias monthlyVerificationTime = zero; # class 3 is "er" which is 15 year re-analysis (ERA15) # Only ERA15 has time and step From a95f8f099578a85cd701e78828f3d80d1fc9f130 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 20 Mar 2019 17:27:31 +0000 Subject: [PATCH 167/414] ECC-909: monthly means monthlyVerificationTime --- definitions/mars/grib.edmm.an.def | 2 ++ definitions/mars/grib.edmm.fc.def | 2 ++ definitions/mars/grib.edmo.an.def | 3 +++ definitions/mars/grib.edmo.fc.def | 2 ++ definitions/mars/grib.ewmm.an.def | 3 +++ definitions/mars/grib.ewmm.fc.def | 2 ++ definitions/mars/grib.ewmo.an.def | 3 +++ definitions/mars/grib.ewmo.fc.def | 2 ++ definitions/mars/grib.mnth.an.def | 3 +++ definitions/mars/grib.mnth.fc.def | 4 +++- definitions/mars/grib.moda.an.def | 3 +++ definitions/mars/grib.moda.fc.def | 2 ++ definitions/mars/grib.wamd.an.def | 3 +++ definitions/mars/grib.wamd.fc.def | 2 ++ definitions/mars/grib.wamo.an.def | 3 +++ definitions/mars/grib.wamo.fc.def | 2 ++ 16 files changed, 40 insertions(+), 1 deletion(-) diff --git a/definitions/mars/grib.edmm.an.def b/definitions/mars/grib.edmm.an.def index c0cd1875f..23352e770 100644 --- a/definitions/mars/grib.edmm.an.def +++ b/definitions/mars/grib.edmm.an.def @@ -4,3 +4,5 @@ alias mars.step = startStep; alias mars.number=perturbationNumber; +alias monthlyVerificationTime = validityTime; +alias monthlyVerificationDate = dataDate; diff --git a/definitions/mars/grib.edmm.fc.def b/definitions/mars/grib.edmm.fc.def index 5abcbfa63..5d94b1664 100644 --- a/definitions/mars/grib.edmm.fc.def +++ b/definitions/mars/grib.edmm.fc.def @@ -8,6 +8,8 @@ meta monthlyVerificationYear evaluate(monthlyVerificationDate/10000); meta verificationMonth evaluate( (verificationDate/100)%100 ); meta monthlyVerificationMonth evaluate( (monthlyVerificationDate/100)%100 ); +alias monthlyVerificationTime = validityTime; + # class e4 # constant six = 6; diff --git a/definitions/mars/grib.edmo.an.def b/definitions/mars/grib.edmo.an.def index db73d6ba5..09791db5d 100644 --- a/definitions/mars/grib.edmo.an.def +++ b/definitions/mars/grib.edmo.an.def @@ -1,6 +1,9 @@ # NOTE: MARS step is startStep. See GRIB-378 alias mars.step = startStep; +alias monthlyVerificationTime = zero; +alias monthlyVerificationDate = dataDate; + # class 3 is "er" which is 15 year re-analysis (ERA15) # Only ERA15 has time and step if(class != 3) { diff --git a/definitions/mars/grib.edmo.fc.def b/definitions/mars/grib.edmo.fc.def index d0744e69a..dda3104a0 100644 --- a/definitions/mars/grib.edmo.fc.def +++ b/definitions/mars/grib.edmo.fc.def @@ -9,6 +9,8 @@ meta monthlyVerificationYear evaluate(monthlyVerificationDate/10000); meta verificationMonth evaluate( (verificationDate/100)%100 ); meta monthlyVerificationMonth evaluate( (monthlyVerificationDate/100)%100 ); +alias monthlyVerificationTime = zero; + # class 3 is "er" which is 15 year re-analysis (ERA15) # Only ERA15 has time and step if(class != 3) { diff --git a/definitions/mars/grib.ewmm.an.def b/definitions/mars/grib.ewmm.an.def index 942668e19..5202a2231 100644 --- a/definitions/mars/grib.ewmm.an.def +++ b/definitions/mars/grib.ewmm.an.def @@ -1,2 +1,5 @@ alias mars.step = startStep; alias mars.number=perturbationNumber; + +alias monthlyVerificationTime = validityTime; +alias monthlyVerificationDate = dataDate; diff --git a/definitions/mars/grib.ewmm.fc.def b/definitions/mars/grib.ewmm.fc.def index e452c8e4c..ed1cf7d98 100644 --- a/definitions/mars/grib.ewmm.fc.def +++ b/definitions/mars/grib.ewmm.fc.def @@ -8,6 +8,8 @@ meta monthlyVerificationYear evaluate(monthlyVerificationDate/10000); meta verificationMonth evaluate( (verificationDate/100)%100 ); meta monthlyVerificationMonth evaluate( (monthlyVerificationDate/100)%100 ); +alias monthlyVerificationTime = validityTime; + # # See GRIB-422, GRIB-497, GRIB-766, GRIB-833 # diff --git a/definitions/mars/grib.ewmo.an.def b/definitions/mars/grib.ewmo.an.def index 38e4bb841..c28a8be78 100644 --- a/definitions/mars/grib.ewmo.an.def +++ b/definitions/mars/grib.ewmo.an.def @@ -1,6 +1,9 @@ # NOTE: step is startStep alias mars.step = startStep; +alias monthlyVerificationTime = zero; +alias monthlyVerificationDate = dataDate; + # class 3 is "er" which is 15 year re-analysis (ERA15) # Only ERA15 has time and step if(class != 3) { diff --git a/definitions/mars/grib.ewmo.fc.def b/definitions/mars/grib.ewmo.fc.def index d0744e69a..dda3104a0 100644 --- a/definitions/mars/grib.ewmo.fc.def +++ b/definitions/mars/grib.ewmo.fc.def @@ -9,6 +9,8 @@ meta monthlyVerificationYear evaluate(monthlyVerificationDate/10000); meta verificationMonth evaluate( (verificationDate/100)%100 ); meta monthlyVerificationMonth evaluate( (monthlyVerificationDate/100)%100 ); +alias monthlyVerificationTime = zero; + # class 3 is "er" which is 15 year re-analysis (ERA15) # Only ERA15 has time and step if(class != 3) { diff --git a/definitions/mars/grib.mnth.an.def b/definitions/mars/grib.mnth.an.def index e06aac5ae..a300aae3b 100644 --- a/definitions/mars/grib.mnth.an.def +++ b/definitions/mars/grib.mnth.an.def @@ -1,2 +1,5 @@ # class e4 alias mars.step = startStep; + +alias monthlyVerificationTime = validityTime; +alias monthlyVerificationDate = dataDate; diff --git a/definitions/mars/grib.mnth.fc.def b/definitions/mars/grib.mnth.fc.def index 44a3b924a..fc25f40af 100644 --- a/definitions/mars/grib.mnth.fc.def +++ b/definitions/mars/grib.mnth.fc.def @@ -7,7 +7,9 @@ meta verificationYear evaluate(verificationDate/10000); meta monthlyVerificationYear evaluate(monthlyVerificationDate/10000); meta verificationMonth evaluate( (verificationDate/100)%100 ); meta monthlyVerificationMonth evaluate( (monthlyVerificationDate/100)%100 ); -# + +alias monthlyVerificationTime = validityTime; + # See GRIB-497, GRIB-766, GRIB-833 # if (class is "em" || class is "e2" || class is "ea" || class is "ep" || diff --git a/definitions/mars/grib.moda.an.def b/definitions/mars/grib.moda.an.def index a2d44724e..3afa70813 100644 --- a/definitions/mars/grib.moda.an.def +++ b/definitions/mars/grib.moda.an.def @@ -2,6 +2,9 @@ alias mars.step = startStep; +alias monthlyVerificationTime = zero; +alias monthlyVerificationDate = dataDate; + # class 3 is "er" which is 15 year re-analysis (ERA15) # Only ERA15 has time and step if(class != 3) { diff --git a/definitions/mars/grib.moda.fc.def b/definitions/mars/grib.moda.fc.def index ad96bb391..ab21b8b45 100644 --- a/definitions/mars/grib.moda.fc.def +++ b/definitions/mars/grib.moda.fc.def @@ -4,6 +4,8 @@ meta verificationDate g1verificationdate(dataDate, dataTime, endStep) : r meta monthlyVerificationDate g1monthlydate(verificationDate) : dump,no_copy; alias mars.date = monthlyVerificationDate; +alias monthlyVerificationTime = zero; + meta verificationYear evaluate(verificationDate/10000); meta monthlyVerificationYear evaluate(monthlyVerificationDate/10000); meta verificationMonth evaluate( (verificationDate/100)%100 ); diff --git a/definitions/mars/grib.wamd.an.def b/definitions/mars/grib.wamd.an.def index a2d44724e..3afa70813 100644 --- a/definitions/mars/grib.wamd.an.def +++ b/definitions/mars/grib.wamd.an.def @@ -2,6 +2,9 @@ alias mars.step = startStep; +alias monthlyVerificationTime = zero; +alias monthlyVerificationDate = dataDate; + # class 3 is "er" which is 15 year re-analysis (ERA15) # Only ERA15 has time and step if(class != 3) { diff --git a/definitions/mars/grib.wamd.fc.def b/definitions/mars/grib.wamd.fc.def index ad96bb391..ab21b8b45 100644 --- a/definitions/mars/grib.wamd.fc.def +++ b/definitions/mars/grib.wamd.fc.def @@ -4,6 +4,8 @@ meta verificationDate g1verificationdate(dataDate, dataTime, endStep) : r meta monthlyVerificationDate g1monthlydate(verificationDate) : dump,no_copy; alias mars.date = monthlyVerificationDate; +alias monthlyVerificationTime = zero; + meta verificationYear evaluate(verificationDate/10000); meta monthlyVerificationYear evaluate(monthlyVerificationDate/10000); meta verificationMonth evaluate( (verificationDate/100)%100 ); diff --git a/definitions/mars/grib.wamo.an.def b/definitions/mars/grib.wamo.an.def index 0807371d8..2e623021e 100644 --- a/definitions/mars/grib.wamo.an.def +++ b/definitions/mars/grib.wamo.an.def @@ -1 +1,4 @@ alias mars.step = startStep; + +alias monthlyVerificationTime = validityTime; +alias monthlyVerificationDate = dataDate; diff --git a/definitions/mars/grib.wamo.fc.def b/definitions/mars/grib.wamo.fc.def index 72cbbd335..180df73d0 100644 --- a/definitions/mars/grib.wamo.fc.def +++ b/definitions/mars/grib.wamo.fc.def @@ -8,6 +8,8 @@ meta monthlyVerificationYear evaluate(monthlyVerificationDate/10000); meta verificationMonth evaluate( (verificationDate/100)%100 ); meta monthlyVerificationMonth evaluate( (monthlyVerificationDate/100)%100 ); +alias monthlyVerificationTime = validityTime; + # # See GRIB-497, GRIB-766, GRIB-833 # From 0908a0267a8eea5849dc613582688c3058e50fc8 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 21 Mar 2019 15:48:42 +0000 Subject: [PATCH 168/414] ECC-915: Support for type=ssd under stream=scda --- definitions/mars/grib.scda.ssd.def | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 definitions/mars/grib.scda.ssd.def diff --git a/definitions/mars/grib.scda.ssd.def b/definitions/mars/grib.scda.ssd.def new file mode 100644 index 000000000..2b2f6a4db --- /dev/null +++ b/definitions/mars/grib.scda.ssd.def @@ -0,0 +1,3 @@ +alias mars.instrument = instrumentType; +alias mars.ident = satelliteNumber; + From 4123fa8c974bd5e4d77341b76346d93a757000f6 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 21 Mar 2019 15:50:04 +0000 Subject: [PATCH 169/414] ECC-915: Support for type=ssd under stream=scda --- definitions/mars/grib.scda.ssd.def | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 definitions/mars/grib.scda.ssd.def diff --git a/definitions/mars/grib.scda.ssd.def b/definitions/mars/grib.scda.ssd.def new file mode 100644 index 000000000..2b2f6a4db --- /dev/null +++ b/definitions/mars/grib.scda.ssd.def @@ -0,0 +1,3 @@ +alias mars.instrument = instrumentType; +alias mars.ident = satelliteNumber; + From 5865385ac08fdb6888b9065acf98d5cd41f9ffa4 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 21 Mar 2019 15:52:15 +0000 Subject: [PATCH 170/414] Version increment --- VERSION.cmake | 2 +- version.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/VERSION.cmake b/VERSION.cmake index a8ab90833..5c1467e91 100644 --- a/VERSION.cmake +++ b/VERSION.cmake @@ -1 +1 @@ -set( ${PROJECT_NAME}_VERSION_STR "2.12.2" ) +set( ${PROJECT_NAME}_VERSION_STR "2.12.3" ) diff --git a/version.sh b/version.sh index b64ccacfc..f0f6a8040 100644 --- a/version.sh +++ b/version.sh @@ -15,7 +15,7 @@ PACKAGE_NAME='eccodes' # Package version ECCODES_MAJOR_VERSION=2 ECCODES_MINOR_VERSION=12 -ECCODES_REVISION_VERSION=2 +ECCODES_REVISION_VERSION=3 ECCODES_CURRENT=1 ECCODES_REVISION=0 From 656c1d38a987344a16a22342918d821ee7e539e1 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 21 Mar 2019 17:27:34 +0000 Subject: [PATCH 171/414] Legacy Gaussian: Improve debug message --- src/grib_accessor_class_number_of_points_gaussian.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/grib_accessor_class_number_of_points_gaussian.c b/src/grib_accessor_class_number_of_points_gaussian.c index ae4b0e619..6a87a0f73 100644 --- a/src/grib_accessor_class_number_of_points_gaussian.c +++ b/src/grib_accessor_class_number_of_points_gaussian.c @@ -437,7 +437,8 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len) if (get_number_of_data_values(h, &numDataValues) == GRIB_SUCCESS) { if (*val != numDataValues) { if (h->context->debug) - printf("ECCODES DEBUG number_of_points_gaussian: LEGACY MODE activated. Count(=%ld) changed to size(values)\n",*val); + printf("ECCODES DEBUG number_of_points_gaussian: LEGACY MODE activated. " + "Count(=%ld) changed to num values(=%ld)\n",*val,(long)numDataValues); *val = numDataValues; } } From 6651e1bbcde142edbed87a132890d31f52aa2a57 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 25 Mar 2019 15:39:10 +0000 Subject: [PATCH 172/414] ECC-906: grib_get_data not working correctly with old-style sub-areas of reduced grids produced by PRODGEN --- src/grib_api_prototypes.h | 1 + src/grib_gaussian_reduced.c | 5 +- src/grib_iterator_class_gaussian_reduced.c | 117 ++++++++++----------- 3 files changed, 60 insertions(+), 63 deletions(-) diff --git a/src/grib_api_prototypes.h b/src/grib_api_prototypes.h index c27c20080..8f5291eed 100644 --- a/src/grib_api_prototypes.h +++ b/src/grib_api_prototypes.h @@ -809,6 +809,7 @@ long accessor_raw_get_offset(grib_accessor *a); /* grib_gaussian_reduced.c */ void grib_get_reduced_row_wrapper(grib_handle *h, long pl, double lon_first, double lon_last, long *npoints, long *ilon_first, long *ilon_last); void grib_get_reduced_row(long pl, double lon_first, double lon_last, long *npoints, long *ilon_first, long *ilon_last); +void grib_get_reduced_row_legacy(long pl, double lon_first, double lon_last, long *npoints, long *ilon_first, long *ilon_last); void grib_get_reduced_row_p(long pl, double lon_first, double lon_last, long *npoints, double *olon_first, double *olon_last); /* grib_accessor_class_abstract_vector.c */ diff --git a/src/grib_gaussian_reduced.c b/src/grib_gaussian_reduced.c index 1647bda2b..59060b720 100644 --- a/src/grib_gaussian_reduced.c +++ b/src/grib_gaussian_reduced.c @@ -310,9 +310,8 @@ void grib_get_reduced_row_wrapper(grib_handle* h, long pl, double lon_first, dou */ } -#if 0 /* This was the legacy way of counting the points. Now deprecated */ -static void grib_get_reduced_row1(long pl, double lon_first, double lon_last, long* npoints, long* ilon_first, long* ilon_last ) +void grib_get_reduced_row_legacy(long pl, double lon_first, double lon_last, long* npoints, long* ilon_first, long* ilon_last) { double range=0,dlon_first=0,dlon_last=0; long irange; @@ -393,14 +392,12 @@ static void grib_get_reduced_row1(long pl, double lon_first, double lon_last, lo pl,*npoints,range,*ilon_first,*ilon_last,irange); #endif } - } if (*ilon_first<0) *ilon_first+=pl; return; } -#endif /* New method based on eckit Fractions and matching MIR count */ void grib_get_reduced_row(long pl, double lon_first, double lon_last, long* npoints, long* ilon_first, long* ilon_last ) diff --git a/src/grib_iterator_class_gaussian_reduced.c b/src/grib_iterator_class_gaussian_reduced.c index 85ec67dd2..7fcee806a 100644 --- a/src/grib_iterator_class_gaussian_reduced.c +++ b/src/grib_iterator_class_gaussian_reduced.c @@ -149,6 +149,60 @@ static void binary_search(double xx[], const unsigned long n, double x, long *j) *j=jl; } +/* Use legacy way to compute the iterator latitude/longitude values */ +static int iterate_reduced_gaussian_subarea_legacy(grib_iterator* iter, grib_handle* h, + double lat_first, double lon_first, + double lat_last, double lon_last, + double* lats, long* pl, size_t plsize) +{ + int err = 0; + int l = 0; + size_t j = 0; + long row_count=0; + double d=0; + long ilon_first, ilon_last, i; + grib_iterator_gaussian_reduced* self = (grib_iterator_gaussian_reduced*)iter; + get_reduced_row_proc get_reduced_row = &grib_get_reduced_row; + get_reduced_row = &grib_get_reduced_row_legacy; /* switch to legacy algorithm */ + + if (h->context->debug) { + const size_t np = count_subarea_points(h, get_reduced_row, pl, plsize, lon_first, lon_last); + printf("ECCODES DEBUG grib_iterator_class_gaussian_reduced: sub-area num points=%ld\n", (long)np); + } + + /*find starting latitude */ + d = fabs(lats[0] - lats[1]); + while (fabs(lat_first-lats[l]) > d ) {l++;} + + iter->e=0; + for (j=0;jilon_last) ilon_first-=pl[j]; + for (i=ilon_first;i<=ilon_last;i++) { + + if(iter->e >= iter->nv){ + size_t np = count_subarea_points(h, get_reduced_row, pl, plsize, lon_first, lon_last); + grib_context_log(h->context,GRIB_LOG_ERROR, + "Reduced Gaussian iterator (sub-area). Num points=%ld, size(values)=%ld", np, iter->nv); + return GRIB_WRONG_GRID; + } + + self->los[iter->e]=((i)*360.0)/pl[j]; + self->las[iter->e]=lats[j+l]; + iter->e++; + k++; + if (k >= row_count) { + /* Ensure we exit the loop and only process 'row_count' points */ + break; + } + } + } + return err; +} + /* ECC-747 */ static int iterate_reduced_gaussian_subarea_algorithm2(grib_iterator* iter, grib_handle* h, double lat_first, double lon_first, @@ -202,69 +256,14 @@ static int iterate_reduced_gaussian_subarea_algorithm2(grib_iterator* iter, grib iter->e++; } } - return err; -} -#if 0 -/* ECC-445: Try to compute the iterator latitude/longitude values. If algorithm2 is set, try a different point count */ -static int iterate_reduced_gaussian_subarea(grib_iterator* iter, grib_handle* h, - double lat_first, double lon_first, - double lat_last, double lon_last, - double* lats, long* pl, size_t plsize, int algorithm2) -{ - int err = 0; - int l = 0; - size_t j = 0; - long row_count=0; - double d=0; - long ilon_first, ilon_last, i; - grib_iterator_gaussian_reduced* self = (grib_iterator_gaussian_reduced*)iter; - get_reduced_row_proc get_reduced_row = &grib_get_reduced_row; - if (algorithm2) { - get_reduced_row = &grib_get_reduced_row2; /* switch to 2nd algorithm */ - } - - if (h->context->debug) { - const size_t np = count_subarea_points(h, get_reduced_row, pl, plsize, lon_first, lon_last); - printf("ECCODES DEBUG grib_iterator_class_gaussian_reduced: sub-area num points=%ld\n", (long)np); - } - - /*find starting latitude */ - d = fabs(lats[0] - lats[1]); - while (fabs(lat_first-lats[l]) > d ) {l++;} - - iter->e=0; - for (j=0;jilon_last) ilon_first-=pl[j]; - for (i=ilon_first;i<=ilon_last;i++) { - - if(iter->e >= iter->nv){ - if (algorithm2) { - /* Only print error message on the second pass */ - size_t np = count_subarea_points(h, get_reduced_row, pl, plsize, lon_first, lon_last); - grib_context_log(h->context,GRIB_LOG_ERROR, - "Reduced Gaussian iterator (sub-area). Num points=%ld, size(values)=%ld", np, iter->nv); - } - return GRIB_WRONG_GRID; - } - - self->los[iter->e]=((i)*360.0)/pl[j]; - self->las[iter->e]=lats[j+l]; - iter->e++; - k++; - if (k >= row_count) { - /* Ensure we exit the loop and only process 'row_count' points */ - break; - } - } + if (iter->e != iter->nv) { + // Fewer counted points in the sub-area than the number of data values. + // Either inconsistent GRIB or Legacy (produced by PRODGEN/LIBEMOS) + return iterate_reduced_gaussian_subarea_legacy(iter, h, lat_first, lon_first, lat_last, lon_last, lats, pl, plsize); } return err; } -#endif static int iterate_reduced_gaussian_subarea_wrapper(grib_iterator* iter, grib_handle* h, double lat_first, double lon_first, From 69ca93ac826fcc73e595ba1049accee01f11f471 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 25 Mar 2019 18:09:42 +0000 Subject: [PATCH 173/414] ECC-906: Fix check on legacy --- src/grib_iterator_class_gaussian_reduced.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/grib_iterator_class_gaussian_reduced.c b/src/grib_iterator_class_gaussian_reduced.c index 7fcee806a..f8c383e54 100644 --- a/src/grib_iterator_class_gaussian_reduced.c +++ b/src/grib_iterator_class_gaussian_reduced.c @@ -163,11 +163,11 @@ static int iterate_reduced_gaussian_subarea_legacy(grib_iterator* iter, grib_han long ilon_first, ilon_last, i; grib_iterator_gaussian_reduced* self = (grib_iterator_gaussian_reduced*)iter; get_reduced_row_proc get_reduced_row = &grib_get_reduced_row; - get_reduced_row = &grib_get_reduced_row_legacy; /* switch to legacy algorithm */ + get_reduced_row = &grib_get_reduced_row_legacy; /* legacy algorithm */ if (h->context->debug) { const size_t np = count_subarea_points(h, get_reduced_row, pl, plsize, lon_first, lon_last); - printf("ECCODES DEBUG grib_iterator_class_gaussian_reduced: sub-area num points=%ld\n", (long)np); + printf("ECCODES DEBUG grib_iterator_class_gaussian_reduced: Legacy sub-area num points=%ld\n", (long)np); } /*find starting latitude */ @@ -186,7 +186,7 @@ static int iterate_reduced_gaussian_subarea_legacy(grib_iterator* iter, grib_han if(iter->e >= iter->nv){ size_t np = count_subarea_points(h, get_reduced_row, pl, plsize, lon_first, lon_last); grib_context_log(h->context,GRIB_LOG_ERROR, - "Reduced Gaussian iterator (sub-area). Num points=%ld, size(values)=%ld", np, iter->nv); + "Reduced Gaussian iterator (sub-area legacy). Num points=%ld, size(values)=%ld", np, iter->nv); return GRIB_WRONG_GRID; } @@ -258,9 +258,14 @@ static int iterate_reduced_gaussian_subarea_algorithm2(grib_iterator* iter, grib } if (iter->e != iter->nv) { - // Fewer counted points in the sub-area than the number of data values. - // Either inconsistent GRIB or Legacy (produced by PRODGEN/LIBEMOS) - return iterate_reduced_gaussian_subarea_legacy(iter, h, lat_first, lon_first, lat_last, lon_last, lats, pl, plsize); + /* Fewer counted points in the sub-area than the number of data values */ + const size_t legacy_count = count_subarea_points(h, grib_get_reduced_row_legacy, pl, plsize, lon_first, lon_last); + if (iter->nv == legacy_count) { + /* Legacy (produced by PRODGEN/LIBEMOS) */ + return iterate_reduced_gaussian_subarea_legacy(iter, h, lat_first, lon_first, lat_last, lon_last, lats, pl, plsize); + } else { + /* TODO: A gap exists! Not all values can be mapped. Inconsistent grid or error in calculating num. points! */ + } } return err; } From 0479c91ba97888b89a952034a085cd10d70d6ba0 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 26 Mar 2019 12:02:57 +0000 Subject: [PATCH 174/414] Add support for pre-release mode --- src/grib_context.c | 10 +++++----- tools/codes_info.c | 4 +++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/grib_context.c b/src/grib_context.c index cb91bc8c6..f8b8df076 100644 --- a/src/grib_context.c +++ b/src/grib_context.c @@ -246,11 +246,11 @@ void grib_print_api_version(FILE* out) ECCODES_MAJOR_VERSION, ECCODES_MINOR_VERSION, ECCODES_REVISION_VERSION); - /* - * if (ECCODES_MAJOR_VERSION < 1) { - * fprintf(out, "%s", " PRE-RELEASE"); - * } - */ +#ifdef ECCODES_PRE_RELEASE + if (ECCODES_MAJOR_VERSION < 1) { + fprintf(out, "%s", " PRE-RELEASE"); + } +#endif } const char* grib_get_package_name() diff --git a/tools/codes_info.c b/tools/codes_info.c index 1f1f37a0a..3de54fb0c 100644 --- a/tools/codes_info.c +++ b/tools/codes_info.c @@ -65,7 +65,9 @@ int main( int argc,char* argv[]) printf("\n"); printf("%s Version %d.%d.%d", grib_get_package_name(), major,minor,revision); - /* if (ECCODES_MAJOR_VERSION < 1) printf(" PRE-RELEASE"); */ +#ifdef ECCODES_PRE_RELEASE + if (ECCODES_MAJOR_VERSION < 1) printf(" PRE-RELEASE"); +#endif printf("\n"); printf("\n"); if(context->debug) { From 798014d127559ca9e97437e9509d28033d3728c3 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 26 Mar 2019 15:34:13 +0000 Subject: [PATCH 175/414] Rename test --- tests/CMakeLists.txt | 6 +++--- tests/Makefile.am | 4 ++-- tests/{lamb_az_eq_area.ref => grib_lamb_az_eq_area.ref} | 0 tests/{lamb_az_eq_area.sh => grib_lamb_az_eq_area.sh} | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) rename tests/{lamb_az_eq_area.ref => grib_lamb_az_eq_area.ref} (100%) rename tests/{lamb_az_eq_area.sh => grib_lamb_az_eq_area.sh} (98%) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index c788da2c5..b23693fee 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -217,11 +217,11 @@ endif() ########################################### # Note: the reference file is in the tests dir not data dir! -ecbuild_add_test( TARGET eccodes_t_lamb_az_eq_area +ecbuild_add_test( TARGET eccodes_t_grib_lamb_az_eq_area TYPE SCRIPT CONDITION ENABLE_EXTRA_TESTS - COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/lamb_az_eq_area.sh - RESOURCES lamb_az_eq_area.ref + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/grib_lamb_az_eq_area.sh + RESOURCES grib_lamb_az_eq_area.ref TEST_DEPENDS eccodes_download_gribs ) diff --git a/tests/Makefile.am b/tests/Makefile.am index ed9dc6c25..655a72cf3 100755 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -55,7 +55,7 @@ TESTS = definitions.sh \ tigge_conversions.sh \ read_any.sh \ grib_padding.sh \ - lamb_az_eq_area.sh \ + grib_lamb_az_eq_area.sh \ grib_to_netcdf.sh \ grib_dump_debug.sh \ grib_jpeg.sh \ @@ -102,5 +102,5 @@ LDADD = $(top_builddir)/src/libeccodes.la $(EMOS_LIB) INCLUDES = -I$(top_builddir)/src EXTRA_DIST = $(TESTS) mf.rules filter_rules include.sh include.ctest.sh.in utils.sh \ - lamb_az_eq_area.ref CMakeLists.txt number_compare.pl + grib_lamb_az_eq_area.ref CMakeLists.txt number_compare.pl diff --git a/tests/lamb_az_eq_area.ref b/tests/grib_lamb_az_eq_area.ref similarity index 100% rename from tests/lamb_az_eq_area.ref rename to tests/grib_lamb_az_eq_area.ref diff --git a/tests/lamb_az_eq_area.sh b/tests/grib_lamb_az_eq_area.sh similarity index 98% rename from tests/lamb_az_eq_area.sh rename to tests/grib_lamb_az_eq_area.sh index 23e34cdb8..cc73cb03d 100755 --- a/tests/lamb_az_eq_area.sh +++ b/tests/grib_lamb_az_eq_area.sh @@ -11,7 +11,7 @@ #set -x GRIB_INFILE=${data_dir}/regular_gaussian_pressure_level_constant.grib2 -REF_FILE=lamb_az_eq_area.ref +REF_FILE=grib_lamb_az_eq_area.ref # Temporary files created for this test FILTER_FILE=lamb_az_eq_area.filter From 44988df27437e8ff551ed01d773f25f938ea0cf2 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 26 Mar 2019 15:41:07 +0000 Subject: [PATCH 176/414] Rename test --- tests/CMakeLists.txt | 2 +- tests/Makefile.am | 2 +- tests/{uerra.sh => grib_uerra.sh} | 9 ++++----- 3 files changed, 6 insertions(+), 7 deletions(-) rename tests/{uerra.sh => grib_uerra.sh} (93%) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index b23693fee..e20bc3523 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -49,7 +49,7 @@ list( APPEND tests_no_data_reqd grib_calendar unit_tests md5 - uerra + grib_uerra grib_2nd_order_numValues julian bufr_dump_samples diff --git a/tests/Makefile.am b/tests/Makefile.am index 655a72cf3..cdfd331da 100755 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -51,7 +51,7 @@ TESTS = definitions.sh \ julian.sh \ grib_statistics.sh \ tigge.sh \ - uerra.sh \ + grib_uerra.sh \ tigge_conversions.sh \ read_any.sh \ grib_padding.sh \ diff --git a/tests/uerra.sh b/tests/grib_uerra.sh similarity index 93% rename from tests/uerra.sh rename to tests/grib_uerra.sh index 1d470d987..9d3e25a38 100755 --- a/tests/uerra.sh +++ b/tests/grib_uerra.sh @@ -12,12 +12,11 @@ REDIRECT=/dev/null -#set -eax grib2_sample=$ECCODES_SAMPLES_PATH/GRIB2.tmpl -this_test=ecCodes-uerra -tempSample=tempSample.${this_test}.grib2 -temp1=temp1.${this_test}.grib2 -temp2=temp2.${this_test}.grib2 +label=grib_uerra_test +tempSample=tempSample.${label}.grib2 +temp1=temp1.${label}.grib2 +temp2=temp2.${label}.grib2 test_stream_and_type() { From a97734cf99f0e76610b6103195b655b0ae912c7d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 26 Mar 2019 16:21:20 +0000 Subject: [PATCH 177/414] Rename test --- tests/CMakeLists.txt | 4 ++-- tests/Makefile.am | 4 ++-- tests/{tigge.sh => grib_tigge.sh} | 0 tests/{tigge_conversions.sh => grib_tigge_conversions.sh} | 0 4 files changed, 4 insertions(+), 4 deletions(-) rename tests/{tigge.sh => grib_tigge.sh} (100%) rename tests/{tigge_conversions.sh => grib_tigge_conversions.sh} (100%) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index e20bc3523..8cd554a75 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -145,7 +145,7 @@ list( APPEND tests_data_reqd multi_from_message grib_change_scanning grib_statistics - tigge + grib_tigge read_any grib_dump grib_dump_debug @@ -162,7 +162,7 @@ endif() if( ENABLE_EXTRA_TESTS ) list(APPEND tests_data_reqd grib_util_set_spec) list(APPEND tests_data_reqd grib_padding) - list(APPEND tests_data_reqd tigge_conversions) + list(APPEND tests_data_reqd grib_tigge_conversions) list(APPEND tests_data_reqd bufr_dump_encode_C) list(APPEND tests_data_reqd bufr_dump_decode_C) endif() diff --git a/tests/Makefile.am b/tests/Makefile.am index cdfd331da..19c54289e 100755 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -50,9 +50,9 @@ TESTS = definitions.sh \ grib_change_scanning.sh \ julian.sh \ grib_statistics.sh \ - tigge.sh \ + grib_tigge.sh \ grib_uerra.sh \ - tigge_conversions.sh \ + grib_tigge_conversions.sh \ read_any.sh \ grib_padding.sh \ grib_lamb_az_eq_area.sh \ diff --git a/tests/tigge.sh b/tests/grib_tigge.sh similarity index 100% rename from tests/tigge.sh rename to tests/grib_tigge.sh diff --git a/tests/tigge_conversions.sh b/tests/grib_tigge_conversions.sh similarity index 100% rename from tests/tigge_conversions.sh rename to tests/grib_tigge_conversions.sh From 09a6ab48ad164fc22d40d6508373ae307c9834c2 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 26 Mar 2019 17:22:28 +0000 Subject: [PATCH 178/414] Examples: add codes_get_double_elements for Python --- examples/python/grib_print_data.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/examples/python/grib_print_data.py b/examples/python/grib_print_data.py index f7ac9cd18..51f641419 100644 --- a/examples/python/grib_print_data.py +++ b/examples/python/grib_print_data.py @@ -24,14 +24,20 @@ def example(): gid = codes_grib_new_from_file(f) values = codes_get_values(gid) - for i in range(len(values)): + num_vals = len(values) + for i in range(num_vals): print("%d %.10e" % (i + 1, values[i])) - print('%d values found in %s' % (len(values), INPUT)) + print('%d values found in %s' % (num_vals, INPUT)) for key in ('max', 'min', 'average'): print('%s=%.10e' % (key, codes_get(gid, key))) + # Example of accessing specific elements from data values + # Get first, middle and last elements + indexes = [0, num_vals/2, num_vals-1] + elems = codes_get_double_elements(gid, 'values', indexes) + codes_release(gid) f.close() From 039ed1d201756994e645201badff1911dddc582f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 27 Mar 2019 12:33:27 +0000 Subject: [PATCH 179/414] Simplify rule re PRE RELEASE --- src/grib_context.c | 3 +-- tools/codes_info.c | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/grib_context.c b/src/grib_context.c index f8b8df076..e53bf864a 100644 --- a/src/grib_context.c +++ b/src/grib_context.c @@ -246,11 +246,10 @@ void grib_print_api_version(FILE* out) ECCODES_MAJOR_VERSION, ECCODES_MINOR_VERSION, ECCODES_REVISION_VERSION); -#ifdef ECCODES_PRE_RELEASE + if (ECCODES_MAJOR_VERSION < 1) { fprintf(out, "%s", " PRE-RELEASE"); } -#endif } const char* grib_get_package_name() diff --git a/tools/codes_info.c b/tools/codes_info.c index 3de54fb0c..243e350fc 100644 --- a/tools/codes_info.c +++ b/tools/codes_info.c @@ -65,9 +65,9 @@ int main( int argc,char* argv[]) printf("\n"); printf("%s Version %d.%d.%d", grib_get_package_name(), major,minor,revision); -#ifdef ECCODES_PRE_RELEASE + if (ECCODES_MAJOR_VERSION < 1) printf(" PRE-RELEASE"); -#endif + printf("\n"); printf("\n"); if(context->debug) { From 0b0804b3fb87688fbb1b612549027d50b1ea89fb Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 28 Mar 2019 16:45:57 +0000 Subject: [PATCH 180/414] Added legacyGaussSubarea and use this in nearest --- .../grib1/grid_definition_gaussian.def | 13 +- definitions/grib2/template.3.gaussian.def | 11 +- ...accessor_class_number_of_points_gaussian.c | 129 ++++++++++++++++++ src/grib_gaussian_reduced.c | 3 +- src/grib_nearest_class_reduced.c | 28 +++- 5 files changed, 168 insertions(+), 16 deletions(-) diff --git a/definitions/grib1/grid_definition_gaussian.def b/definitions/grib1/grid_definition_gaussian.def index 1addb30af..58d2fbefd 100644 --- a/definitions/grib1/grid_definition_gaussian.def +++ b/definitions/grib1/grid_definition_gaussian.def @@ -52,10 +52,17 @@ meta global global_gaussian(N,Ni,iDirectionIncrement, longitudeOfLastGridPoint, PLPresent,pl) = 0 : dump; -meta numberOfDataPoints number_of_points_gaussian(Ni,Nj,PLPresent,pl, - N, +# With legacy mode support +meta numberOfDataPoints number_of_points_gaussian(Ni,Nj,PLPresent,pl,N, latitudeOfFirstGridPointInDegrees,longitudeOfFirstGridPointInDegrees, - latitudeOfLastGridPointInDegrees,longitudeOfLastGridPointInDegrees) : dump; + latitudeOfLastGridPointInDegrees,longitudeOfLastGridPointInDegrees,one) : dump; + +# Use the new algorithm for counting. No support for legacy mode +meta numberOfDataPointsExpected number_of_points_gaussian(Ni,Nj,PLPresent,pl,N, + latitudeOfFirstGridPointInDegrees,longitudeOfFirstGridPointInDegrees, + latitudeOfLastGridPointInDegrees,longitudeOfLastGridPointInDegrees,zero) : dump; + +meta legacyGaussSubarea evaluate(numberOfDataPoints != numberOfDataPointsExpected); alias numberOfPoints=numberOfDataPoints; # alias numberOfExpectedPoints=numberOfDataPoints; diff --git a/definitions/grib2/template.3.gaussian.def b/definitions/grib2/template.3.gaussian.def index 352b406cb..1db8ba404 100755 --- a/definitions/grib2/template.3.gaussian.def +++ b/definitions/grib2/template.3.gaussian.def @@ -89,9 +89,10 @@ meta gaussianGridName gaussian_grid_name(N, Ni, isOctahedral); alias gridName=gaussianGridName; -# Useful for sub-areas -# meta numberOfExpectedPoints number_of_points_gaussian(Ni,Nj,PLPresent,pl, -# N, -# latitudeOfFirstGridPointInDegrees,longitudeOfFirstGridPointInDegrees, -# latitudeOfLastGridPointInDegrees,longitudeOfLastGridPointInDegrees) : dump; +# For sub-areas +# Uses new algorithm for counting. No support for legacy mode +meta numberOfDataPointsExpected number_of_points_gaussian(Ni,Nj,PLPresent,pl,N, + latitudeOfFirstGridPointInDegrees,longitudeOfFirstGridPointInDegrees, + latitudeOfLastGridPointInDegrees,longitudeOfLastGridPointInDegrees,zero) : dump; +meta legacyGaussSubarea evaluate(numberOfDataPoints != numberOfDataPointsExpected); diff --git a/src/grib_accessor_class_number_of_points_gaussian.c b/src/grib_accessor_class_number_of_points_gaussian.c index 6a87a0f73..20bd3a4b9 100644 --- a/src/grib_accessor_class_number_of_points_gaussian.c +++ b/src/grib_accessor_class_number_of_points_gaussian.c @@ -32,6 +32,7 @@ MEMBERS = const char* lon_first MEMBERS = const char* lat_last MEMBERS = const char* lon_last + MEMBERS = const char* support_legacy END_CLASS_DEF */ @@ -63,6 +64,7 @@ typedef struct grib_accessor_number_of_points_gaussian { const char* lon_first; const char* lat_last; const char* lon_last; + const char* support_legacy; } grib_accessor_number_of_points_gaussian; extern grib_accessor_class* grib_accessor_class_long; @@ -167,6 +169,7 @@ static void init(grib_accessor* a,const long l, grib_arguments* c) self->lon_first = grib_arguments_get_name(h,c,n++); self->lat_last = grib_arguments_get_name(h,c,n++); self->lon_last = grib_arguments_get_name(h,c,n++); + self->support_legacy = grib_arguments_get_name(h,c,n++); a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION; a->length=0; @@ -303,7 +306,133 @@ static int get_number_of_data_values(grib_handle* h, size_t* numDataValues) return err; } +static int unpack_long_with_legacy_support(grib_accessor* a, long* val, size_t *len); +static int unpack_long_new(grib_accessor* a, long* val, size_t *len); + static int unpack_long(grib_accessor* a, long* val, size_t *len) +{ + int ret=GRIB_SUCCESS; + long support_legacy=1; + grib_accessor_number_of_points_gaussian* self = (grib_accessor_number_of_points_gaussian*)a; + grib_handle* h = grib_handle_of_accessor(a); + + if((ret = grib_get_long_internal(h, self->support_legacy,&support_legacy)) != GRIB_SUCCESS) + return ret; + if (support_legacy==1) return unpack_long_with_legacy_support(a, val, len); + else return unpack_long_new(a, val, len); +} + +// ------------ +// New way +static int unpack_long_new(grib_accessor* a, long* val, size_t *len) +{ + int ret=GRIB_SUCCESS; + int is_global = 0; + long ni=0,nj=0,plpresent=0,order=0; + size_t plsize=0; + double* lats={0,}; + double lat_first,lat_last,lon_first,lon_last; + long* pl=NULL; + long* plsave=NULL; + long row_count; + long ilon_first=0,ilon_last=0; + double angular_precision = 1.0/1000000.0; + long editionNumber = 0; + grib_handle* h = grib_handle_of_accessor(a); + + grib_accessor_number_of_points_gaussian* self = (grib_accessor_number_of_points_gaussian*)a; + grib_context* c=a->context; + + if((ret = grib_get_long_internal(h, self->ni,&ni)) != GRIB_SUCCESS) + return ret; + + if((ret = grib_get_long_internal(h, self->nj,&nj)) != GRIB_SUCCESS) + return ret; + + if((ret = grib_get_long_internal(h, self->plpresent,&plpresent)) != GRIB_SUCCESS) + return ret; + + if (nj == 0) return GRIB_GEOCALCULUS_PROBLEM; + + if (grib_get_long(h, "editionNumber", &editionNumber)==GRIB_SUCCESS) { + if (editionNumber == 1) angular_precision = 1.0/1000; + } + + if (plpresent) { + long max_pl=0; + float d = 0; + int j=0; + double lon_first_row=0,lon_last_row=0; + + /*reduced*/ + if((ret = grib_get_long_internal(h, self->order,&order)) != GRIB_SUCCESS) + return ret; + if((ret = grib_get_double_internal(h, self->lat_first,&lat_first)) != GRIB_SUCCESS) + return ret; + if((ret = grib_get_double_internal(h, self->lon_first,&lon_first)) != GRIB_SUCCESS) + return ret; + if((ret = grib_get_double_internal(h, self->lat_last,&lat_last)) != GRIB_SUCCESS) + return ret; + if((ret = grib_get_double_internal(h, self->lon_last,&lon_last)) != GRIB_SUCCESS) + return ret; + + lats=(double*)grib_context_malloc(a->context,sizeof(double)*order*2); + if((ret = grib_get_gaussian_latitudes(order, lats)) != GRIB_SUCCESS) + return ret; + + if((ret = grib_get_size(h,self->pl,&plsize)) != GRIB_SUCCESS) + return ret; + + pl=(long*)grib_context_malloc_clear(c,sizeof(long)*plsize); + plsave=pl; + grib_get_long_array_internal(h,self->pl,pl, &plsize); + + if (lon_last<0) lon_last+=360; + if (lon_first<0) lon_first+=360; + + /* Find the maximum element of "pl" array, do not assume it's 4*N! */ + /* This could be an Octahedral Gaussian Grid */ + max_pl = pl[0]; + for (j=1; j max_pl) max_pl = pl[j]; + } + + d=fabs(lats[0]-lats[1]); + is_global = 0; /* ECC-445 */ + + correctWestEast(max_pl, angular_precision, &lon_first, &lon_last); + + if ( !is_global ) { + /*sub area*/ + (void)d; + *val=0; + for (j=0;jvalues_key,&nvalues))!= GRIB_SUCCESS) return ret; @@ -188,7 +201,8 @@ static int find(grib_nearest* nearest, grib_handle* h, } while(lon>360) lon-=360; if(!self->global) { /* ECC-756 */ - if (lon>180 && lon<360) lon-=360; + if (!is_legacy_grib) //TODO + if (lon>180 && lon<360) lon-=360; } self->lons[ilon++]=lon; } @@ -247,11 +261,11 @@ static int find(grib_nearest* nearest, grib_handle* h, nlon=0; for (jj=0;jjj[0];jj++) { row_count=0;ilon_first=0;ilon_last=0; - grib_get_reduced_row_wrapper(h, pl[jj],self->lon_first,self->lon_last,&row_count,&ilon_first,&ilon_last); + get_reduced_row_func(pl[jj],self->lon_first,self->lon_last,&row_count,&ilon_first,&ilon_last); nlon+=row_count; } row_count=0;ilon_first=0;ilon_last=0; - grib_get_reduced_row_wrapper(h, pl[self->j[0]],self->lon_first,self->lon_last,&row_count,&ilon_first,&ilon_last); + get_reduced_row_func(pl[self->j[0]],self->lon_first,self->lon_last,&row_count,&ilon_first,&ilon_last); nplm1=row_count-1; } lons=self->lons+nlon; @@ -283,7 +297,7 @@ static int find(grib_nearest* nearest, grib_handle* h, if (!nearest_lons_found) { if (!self->global) { row_count=0;ilon_first=0;ilon_last=0; - grib_get_reduced_row_wrapper(h, pl[self->j[0]],self->lon_first,self->lon_last,&row_count,&ilon_first,&ilon_last); + get_reduced_row_func(pl[self->j[0]],self->lon_first,self->lon_last,&row_count,&ilon_first,&ilon_last); } else { row_count=pl[self->j[0]]; } @@ -301,11 +315,11 @@ static int find(grib_nearest* nearest, grib_handle* h, } else { for (jj=0;jjj[1];jj++) { row_count=0;ilon_first=0;ilon_last=0; - grib_get_reduced_row_wrapper(h, pl[jj],self->lon_first,self->lon_last,&row_count,&ilon_first,&ilon_last); + get_reduced_row_func(pl[jj],self->lon_first,self->lon_last,&row_count,&ilon_first,&ilon_last); nlon+=row_count; } row_count=0;ilon_first=0;ilon_last=0; - grib_get_reduced_row_wrapper(h, pl[self->j[1]],self->lon_first,self->lon_last,&nplm1,&ilon_first,&ilon_last); + get_reduced_row_func(pl[self->j[1]],self->lon_first,self->lon_last,&nplm1,&ilon_first,&ilon_last); nplm1--; } lons=self->lons+nlon; @@ -334,7 +348,7 @@ static int find(grib_nearest* nearest, grib_handle* h, if (!nearest_lons_found) { if (!self->global) { row_count=0;ilon_first=0;ilon_last=0; - grib_get_reduced_row_wrapper(h, pl[self->j[1]],self->lon_first,self->lon_last,&row_count,&ilon_first,&ilon_last); + get_reduced_row_func(pl[self->j[1]],self->lon_first,self->lon_last,&row_count,&ilon_first,&ilon_last); } else { row_count=pl[self->j[1]]; } From 2dcb46ed5a5f466f2c7cf5c6a29bf11dbeb5b18c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 28 Mar 2019 17:17:05 +0000 Subject: [PATCH 181/414] ECC-906: Fix longitude issue --- src/grib_nearest_class_reduced.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/grib_nearest_class_reduced.c b/src/grib_nearest_class_reduced.c index dd068cf3d..d73159cef 100644 --- a/src/grib_nearest_class_reduced.c +++ b/src/grib_nearest_class_reduced.c @@ -224,6 +224,10 @@ static int find(grib_nearest* nearest, grib_handle* h, if (self->global) { while (inlon<0) inlon+=360; while (inlon>360) inlon-=360; + } else { + //TODO: Experimental + if (!is_legacy_grib) + if (inlon>180 && inlon<360) inlon-=360; } ilat=self->lats_count; From 75069268a361b2769ef27cb402dce149eb0c8bd8 Mon Sep 17 00:00:00 2001 From: Alessandro Amici Date: Mon, 8 Apr 2019 10:28:10 +0200 Subject: [PATCH 182/414] Fix grib_keys_iterator access to key name. At the moment it works by chance, because both iterid and gid are the index `0` of the corresponding array. --- examples/python/grib_keys_iterator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/python/grib_keys_iterator.py b/examples/python/grib_keys_iterator.py index 0e834f4a0..baa98b676 100644 --- a/examples/python/grib_keys_iterator.py +++ b/examples/python/grib_keys_iterator.py @@ -38,7 +38,7 @@ def example(): # codes_skip_function(iterid) while codes_keys_iterator_next(iterid): - keyname = codes_keys_iterator_get_name(iterid) + keyname = codes_keys_iterator_get_name(gid) keyval = codes_get_string(gid, keyname) print("%s = %s" % (keyname, keyval)) From 922a64661978d71a0d0a78ce51a44adf4b1927e5 Mon Sep 17 00:00:00 2001 From: Alessandro Amici Date: Mon, 8 Apr 2019 10:33:39 +0200 Subject: [PATCH 183/414] Open GRIB files in binary mode, relevant for Python 3 --- examples/python/high_level_api.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/python/high_level_api.py b/examples/python/high_level_api.py index 17925d4f5..bad34a46d 100644 --- a/examples/python/high_level_api.py +++ b/examples/python/high_level_api.py @@ -388,7 +388,7 @@ class TestBufrMessage(unittest.TestCase): """Message can be serialized to file.""" with BufrFile(TESTBUFR) as bufr_file: msg = BufrMessage(bufr_file) - with open(TEST_OUTPUT, "w") as test: + with open(TEST_OUTPUT, "wb") as test: msg.write(test) os.unlink(TEST_OUTPUT) @@ -439,7 +439,7 @@ class TestBufrMessage(unittest.TestCase): bufr['unexpandedDescriptors'] = ivalues bufrin.unpack() bufrin.copy_data(bufr) - with open(TEST_OUTPUT, 'w') as test: + with open(TEST_OUTPUT, 'wb') as test: bufr.write(test) os.unlink(TEST_OUTPUT) From 18595a0d104b762aca676c40d244626d6e7fe55c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 8 Apr 2019 19:57:30 +0100 Subject: [PATCH 184/414] Python3 mode --- examples/python/high_level_api.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/python/high_level_api.py b/examples/python/high_level_api.py index 17925d4f5..8ccc3fe34 100644 --- a/examples/python/high_level_api.py +++ b/examples/python/high_level_api.py @@ -264,7 +264,7 @@ class TestGribMessage(unittest.TestCase): """Message can be serialized to file.""" with GribFile(TESTGRIB) as grib_file: msg = GribMessage(grib_file) - with open(TEST_OUTPUT, "w") as test: + with open(TEST_OUTPUT, "wb") as test: msg.write(test) os.unlink(TEST_OUTPUT) @@ -388,7 +388,7 @@ class TestBufrMessage(unittest.TestCase): """Message can be serialized to file.""" with BufrFile(TESTBUFR) as bufr_file: msg = BufrMessage(bufr_file) - with open(TEST_OUTPUT, "w") as test: + with open(TEST_OUTPUT, "wb") as test: msg.write(test) os.unlink(TEST_OUTPUT) @@ -439,7 +439,7 @@ class TestBufrMessage(unittest.TestCase): bufr['unexpandedDescriptors'] = ivalues bufrin.unpack() bufrin.copy_data(bufr) - with open(TEST_OUTPUT, 'w') as test: + with open(TEST_OUTPUT, 'wb') as test: bufr.write(test) os.unlink(TEST_OUTPUT) From 7e21f4dd4c32b81a14b69a41fb8f49aac32200f9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 15 Apr 2019 13:45:20 +0100 Subject: [PATCH 185/414] Intel netcdf4 issue --- bamboo/INTEL-env.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bamboo/INTEL-env.sh b/bamboo/INTEL-env.sh index 4b2e13f19..4b1101f22 100644 --- a/bamboo/INTEL-env.sh +++ b/bamboo/INTEL-env.sh @@ -12,6 +12,8 @@ module unload fftw module unload libemos module unload metview +module list + module load cmake/3.10.2 module switch gnu intel/17.0.3 From 02e934b688c091ef3c4186225b40ffa2435f49f7 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 15 Apr 2019 14:44:45 +0100 Subject: [PATCH 186/414] Copyright updated --- CMakeLists.txt | 2 +- NOTICE | 2 +- README.md | 2 +- definitions/boot.def | 2 +- definitions/budg/boot.def | 2 +- definitions/budg/mars_labeling.def | 2 +- definitions/budg/section.1.def | 2 +- definitions/budg/section.4.def | 2 +- definitions/bufr/boot.def | 2 +- definitions/bufr/boot_edition_0.def | 2 +- definitions/bufr/boot_edition_1.def | 2 +- definitions/bufr/boot_edition_2.def | 2 +- definitions/bufr/boot_edition_3.def | 2 +- definitions/bufr/boot_edition_4.def | 2 +- definitions/bufr/old_section.1.def | 2 +- definitions/bufr/section.0.def | 2 +- definitions/bufr/section.1.1.def | 2 +- definitions/bufr/section.1.2.def | 2 +- definitions/bufr/section.1.3.def | 2 +- definitions/bufr/section.1.4.def | 2 +- definitions/bufr/section.2.def | 2 +- definitions/bufr/section.3.def | 2 +- definitions/bufr/section.4.def | 2 +- definitions/bufr/section.5.def | 2 +- definitions/check_grib_defs.pl | 2 +- definitions/common/statistics_grid.def | 2 +- definitions/common/statistics_spectral.def | 2 +- definitions/grib1/boot.def | 2 +- definitions/grib1/data.grid_ieee.def | 2 +- definitions/grib1/data.grid_second_order.def | 2 +- definitions/grib1/data.grid_second_order_constant_width.def | 2 +- definitions/grib1/data.grid_second_order_general_grib1.def | 2 +- definitions/grib1/data.grid_second_order_row_by_row.def | 2 +- definitions/grib1/data.grid_simple.def | 2 +- definitions/grib1/data.grid_simple_matrix.def | 2 +- definitions/grib1/data.spectral_complex.def | 2 +- definitions/grib1/data.spectral_ieee.def | 2 +- definitions/grib1/data.spectral_simple.def | 2 +- definitions/grib1/gds_not_present_bitmap.def | 2 +- definitions/grib1/grid_21.def | 2 +- definitions/grib1/grid_22.def | 2 +- definitions/grib1/grid_23.def | 2 +- definitions/grib1/grid_24.def | 2 +- definitions/grib1/grid_25.def | 2 +- definitions/grib1/grid_26.def | 2 +- definitions/grib1/grid_61.def | 2 +- definitions/grib1/grid_62.def | 2 +- definitions/grib1/grid_63.def | 2 +- definitions/grib1/grid_64.def | 2 +- definitions/grib1/grid_definition_0.def | 2 +- definitions/grib1/grid_definition_1.def | 2 +- definitions/grib1/grid_definition_10.def | 2 +- definitions/grib1/grid_definition_13.def | 2 +- definitions/grib1/grid_definition_14.def | 2 +- definitions/grib1/grid_definition_192.78.def | 2 +- definitions/grib1/grid_definition_192.98.def | 2 +- definitions/grib1/grid_definition_193.98.def | 2 +- definitions/grib1/grid_definition_20.def | 2 +- definitions/grib1/grid_definition_24.def | 2 +- definitions/grib1/grid_definition_3.def | 2 +- definitions/grib1/grid_definition_30.def | 2 +- definitions/grib1/grid_definition_34.def | 2 +- definitions/grib1/grid_definition_4.def | 2 +- definitions/grib1/grid_definition_5.def | 2 +- definitions/grib1/grid_definition_50.def | 2 +- definitions/grib1/grid_definition_60.def | 2 +- definitions/grib1/grid_definition_70.def | 2 +- definitions/grib1/grid_definition_8.def | 2 +- definitions/grib1/grid_definition_80.def | 2 +- definitions/grib1/grid_definition_90.def | 2 +- definitions/grib1/grid_definition_gaussian.def | 2 +- definitions/grib1/grid_definition_lambert.def | 2 +- definitions/grib1/grid_definition_latlon.def | 2 +- definitions/grib1/grid_definition_spherical_harmonics.def | 2 +- definitions/grib1/grid_first_last_resandcomp.def | 2 +- definitions/grib1/grid_rotation.def | 2 +- definitions/grib1/grid_stretching.def | 2 +- definitions/grib1/local.1.def | 2 +- definitions/grib1/local.214.1.def | 2 +- definitions/grib1/local.214.244.def | 2 +- definitions/grib1/local.214.245.def | 2 +- definitions/grib1/local.253.def | 2 +- definitions/grib1/local.254.def | 2 +- definitions/grib1/local.46.def | 2 +- definitions/grib1/local.54.def | 2 +- definitions/grib1/local.7.1.def | 2 +- definitions/grib1/local.80.def | 2 +- definitions/grib1/local.98.1.def | 2 +- definitions/grib1/local.98.10.def | 2 +- definitions/grib1/local.98.11.def | 2 +- definitions/grib1/local.98.13.def | 2 +- definitions/grib1/local.98.14.def | 2 +- definitions/grib1/local.98.15.def | 2 +- definitions/grib1/local.98.16.def | 2 +- definitions/grib1/local.98.17.def | 2 +- definitions/grib1/local.98.18.def | 2 +- definitions/grib1/local.98.19.def | 2 +- definitions/grib1/local.98.190.def | 2 +- definitions/grib1/local.98.191.def | 2 +- definitions/grib1/local.98.192.def | 2 +- definitions/grib1/local.98.2.def | 2 +- definitions/grib1/local.98.20.def | 2 +- definitions/grib1/local.98.21.def | 2 +- definitions/grib1/local.98.218.def | 2 +- definitions/grib1/local.98.23.def | 2 +- definitions/grib1/local.98.24.def | 2 +- definitions/grib1/local.98.25.def | 2 +- definitions/grib1/local.98.26.def | 2 +- definitions/grib1/local.98.27.def | 2 +- definitions/grib1/local.98.28.def | 2 +- definitions/grib1/local.98.29.def | 2 +- definitions/grib1/local.98.3.def | 2 +- definitions/grib1/local.98.30.def | 2 +- definitions/grib1/local.98.31.def | 2 +- definitions/grib1/local.98.32.def | 2 +- definitions/grib1/local.98.33.def | 2 +- definitions/grib1/local.98.35.def | 2 +- definitions/grib1/local.98.36.def | 2 +- definitions/grib1/local.98.37.def | 2 +- definitions/grib1/local.98.38.def | 2 +- definitions/grib1/local.98.39.def | 2 +- definitions/grib1/local.98.4.def | 2 +- definitions/grib1/local.98.40.def | 2 +- definitions/grib1/local.98.5.def | 2 +- definitions/grib1/local.98.50.def | 2 +- definitions/grib1/local.98.6.def | 2 +- definitions/grib1/local.98.7.def | 2 +- definitions/grib1/local.98.8.def | 2 +- definitions/grib1/local.98.9.def | 2 +- definitions/grib1/local.98.def | 2 +- definitions/grib1/local_no_mars.98.1.def | 2 +- definitions/grib1/local_no_mars.98.24.def | 2 +- definitions/grib1/mars_labeling.23.def | 2 +- definitions/grib1/mars_labeling.4.def | 2 +- definitions/grib1/mars_labeling.def | 2 +- definitions/grib1/predefined_grid.def | 2 +- definitions/grib1/resolution_flags.def | 2 +- definitions/grib1/scanning_mode.def | 2 +- definitions/grib1/section.0.def | 2 +- definitions/grib1/section.1.def | 2 +- definitions/grib1/section.2.def | 2 +- definitions/grib1/section.3.def | 2 +- definitions/grib1/section.4.def | 2 +- definitions/grib1/section.5.def | 2 +- definitions/grib2/boot.def | 2 +- definitions/grib2/boot_multifield.def | 2 +- definitions/grib2/local.98.41.def | 2 +- definitions/grib2/local.98.42.def | 2 +- definitions/grib2/local.98.5.def | 2 +- definitions/grib2/local.98.7.def | 2 +- definitions/grib2/local.98.9.def | 2 +- definitions/grib2/mars_labeling.def | 2 +- definitions/grib2/meta.def | 2 +- definitions/grib2/parameters.def | 2 +- definitions/grib2/products_0.def | 2 +- definitions/grib2/products_1.def | 2 +- definitions/grib2/products_2.def | 2 +- definitions/grib2/products_3.def | 2 +- definitions/grib2/products_4.def | 2 +- definitions/grib2/products_5.def | 2 +- definitions/grib2/products_6.def | 2 +- definitions/grib2/products_7.def | 2 +- definitions/grib2/products_8.def | 2 +- definitions/grib2/products_9.def | 2 +- definitions/grib2/products_s2s.def | 2 +- definitions/grib2/products_tigge.def | 2 +- definitions/grib2/products_uerra.def | 2 +- definitions/grib2/rules.def | 2 +- definitions/grib2/section.0.def | 2 +- definitions/grib2/section.1.def | 2 +- definitions/grib2/section.2.def | 2 +- definitions/grib2/section.3.def | 2 +- definitions/grib2/section.4.def | 2 +- definitions/grib2/section.5.def | 2 +- definitions/grib2/section.6.def | 2 +- definitions/grib2/section.7.def | 2 +- definitions/grib2/section.8.def | 2 +- definitions/grib2/sections.def | 2 +- definitions/grib2/template.1.0.def | 2 +- definitions/grib2/template.1.1.def | 2 +- definitions/grib2/template.1.2.def | 2 +- definitions/grib2/template.1.calendar.def | 2 +- definitions/grib2/template.1.offset.def | 2 +- definitions/grib2/template.3.0.def | 2 +- definitions/grib2/template.3.1.def | 2 +- definitions/grib2/template.3.10.def | 2 +- definitions/grib2/template.3.100.def | 2 +- definitions/grib2/template.3.1000.def | 2 +- definitions/grib2/template.3.101.def | 2 +- definitions/grib2/template.3.110.def | 2 +- definitions/grib2/template.3.1100.def | 2 +- definitions/grib2/template.3.12.def | 2 +- definitions/grib2/template.3.120.def | 2 +- definitions/grib2/template.3.1200.def | 2 +- definitions/grib2/template.3.130.def | 2 +- definitions/grib2/template.3.140.def | 2 +- definitions/grib2/template.3.2.def | 2 +- definitions/grib2/template.3.20.def | 2 +- definitions/grib2/template.3.3.def | 2 +- definitions/grib2/template.3.30.def | 2 +- definitions/grib2/template.3.31.def | 2 +- definitions/grib2/template.3.4.def | 2 +- definitions/grib2/template.3.40.def | 2 +- definitions/grib2/template.3.41.def | 2 +- definitions/grib2/template.3.42.def | 2 +- definitions/grib2/template.3.43.def | 2 +- definitions/grib2/template.3.5.def | 2 +- definitions/grib2/template.3.50.def | 2 +- definitions/grib2/template.3.51.def | 2 +- definitions/grib2/template.3.52.def | 2 +- definitions/grib2/template.3.53.def | 2 +- definitions/grib2/template.3.90.def | 2 +- definitions/grib2/template.3.gaussian.def | 2 +- definitions/grib2/template.3.grid.def | 2 +- definitions/grib2/template.3.latlon.def | 2 +- definitions/grib2/template.3.latlon_vares.def | 2 +- definitions/grib2/template.3.resolution_flags.def | 2 +- definitions/grib2/template.3.rotation.def | 2 +- definitions/grib2/template.3.scanning_mode.def | 2 +- definitions/grib2/template.3.shape_of_the_earth.def | 2 +- definitions/grib2/template.3.spherical_harmonics.def | 2 +- definitions/grib2/template.3.stretching.def | 2 +- definitions/grib2/template.4.0.def | 2 +- definitions/grib2/template.4.1.def | 2 +- definitions/grib2/template.4.10.def | 2 +- definitions/grib2/template.4.1000.def | 2 +- definitions/grib2/template.4.1001.def | 2 +- definitions/grib2/template.4.1002.def | 2 +- definitions/grib2/template.4.11.def | 2 +- definitions/grib2/template.4.1100.def | 2 +- definitions/grib2/template.4.1101.def | 2 +- definitions/grib2/template.4.12.def | 2 +- definitions/grib2/template.4.13.def | 2 +- definitions/grib2/template.4.14.def | 2 +- definitions/grib2/template.4.15.def | 2 +- definitions/grib2/template.4.2.def | 2 +- definitions/grib2/template.4.20.def | 2 +- definitions/grib2/template.4.2000.def | 2 +- definitions/grib2/template.4.254.def | 2 +- definitions/grib2/template.4.3.def | 2 +- definitions/grib2/template.4.30.def | 2 +- definitions/grib2/template.4.31.def | 2 +- definitions/grib2/template.4.311.def | 2 +- definitions/grib2/template.4.32.def | 2 +- definitions/grib2/template.4.33.def | 2 +- definitions/grib2/template.4.34.def | 2 +- definitions/grib2/template.4.35.def | 2 +- definitions/grib2/template.4.4.def | 2 +- definitions/grib2/template.4.40.def | 2 +- definitions/grib2/template.4.40033.def | 2 +- definitions/grib2/template.4.40034.def | 2 +- definitions/grib2/template.4.41.def | 2 +- definitions/grib2/template.4.42.def | 2 +- definitions/grib2/template.4.43.def | 2 +- definitions/grib2/template.4.44.def | 2 +- definitions/grib2/template.4.45.def | 2 +- definitions/grib2/template.4.46.def | 2 +- definitions/grib2/template.4.47.def | 2 +- definitions/grib2/template.4.48.def | 2 +- definitions/grib2/template.4.49.def | 2 +- definitions/grib2/template.4.5.def | 2 +- definitions/grib2/template.4.51.def | 2 +- definitions/grib2/template.4.53.def | 2 +- definitions/grib2/template.4.54.def | 2 +- definitions/grib2/template.4.55.def | 2 +- definitions/grib2/template.4.57.def | 2 +- definitions/grib2/template.4.58.def | 2 +- definitions/grib2/template.4.59.def | 2 +- definitions/grib2/template.4.6.def | 2 +- definitions/grib2/template.4.60.def | 2 +- definitions/grib2/template.4.61.def | 2 +- definitions/grib2/template.4.67.def | 2 +- definitions/grib2/template.4.68.def | 2 +- definitions/grib2/template.4.70.def | 2 +- definitions/grib2/template.4.71.def | 2 +- definitions/grib2/template.4.72.def | 2 +- definitions/grib2/template.4.73.def | 2 +- definitions/grib2/template.4.8.def | 2 +- definitions/grib2/template.4.9.def | 2 +- definitions/grib2/template.4.91.def | 2 +- definitions/grib2/template.4.categorical.def | 2 +- definitions/grib2/template.4.circular_cluster.def | 2 +- definitions/grib2/template.4.derived.def | 2 +- definitions/grib2/template.4.eps.def | 2 +- definitions/grib2/template.4.horizontal.def | 2 +- definitions/grib2/template.4.parameter.def | 2 +- definitions/grib2/template.4.parameter_aerosol.def | 2 +- definitions/grib2/template.4.parameter_aerosol_44.def | 2 +- definitions/grib2/template.4.parameter_aerosol_optical.def | 2 +- definitions/grib2/template.4.parameter_chemical.def | 2 +- .../grib2/template.4.parameter_chemical_distribution.def | 2 +- definitions/grib2/template.4.parameter_partition.def | 2 +- definitions/grib2/template.4.parameter_postproc.def | 2 +- definitions/grib2/template.4.parameter_tile.def | 2 +- definitions/grib2/template.4.percentile.def | 2 +- definitions/grib2/template.4.point_in_time.def | 2 +- definitions/grib2/template.4.probability.def | 2 +- definitions/grib2/template.4.rectangular_cluster.def | 2 +- definitions/grib2/template.4.statistical.def | 2 +- definitions/grib2/template.5.0.def | 2 +- definitions/grib2/template.5.1.def | 2 +- definitions/grib2/template.5.2.def | 2 +- definitions/grib2/template.5.3.def | 2 +- definitions/grib2/template.5.4.def | 2 +- definitions/grib2/template.5.40.def | 2 +- definitions/grib2/template.5.40000.def | 2 +- definitions/grib2/template.5.40010.def | 2 +- definitions/grib2/template.5.41.def | 2 +- definitions/grib2/template.5.42.def | 2 +- definitions/grib2/template.5.50.def | 2 +- definitions/grib2/template.5.50000.def | 2 +- definitions/grib2/template.5.50001.def | 2 +- definitions/grib2/template.5.50002.def | 2 +- definitions/grib2/template.5.51.def | 2 +- definitions/grib2/template.5.6.def | 2 +- definitions/grib2/template.5.61.def | 2 +- definitions/grib2/template.5.original_values.def | 2 +- definitions/grib2/template.5.packing.def | 2 +- definitions/grib2/template.5.second_order.def | 2 +- definitions/grib2/template.7.0.def | 2 +- definitions/grib2/template.7.1.def | 2 +- definitions/grib2/template.7.2.def | 2 +- definitions/grib2/template.7.3.def | 2 +- definitions/grib2/template.7.4.def | 2 +- definitions/grib2/template.7.40.def | 2 +- definitions/grib2/template.7.40000.def | 2 +- definitions/grib2/template.7.40010.def | 2 +- definitions/grib2/template.7.41.def | 2 +- definitions/grib2/template.7.42.def | 2 +- definitions/grib2/template.7.50.def | 2 +- definitions/grib2/template.7.50000.def | 2 +- definitions/grib2/template.7.50001.def | 2 +- definitions/grib2/template.7.50002.def | 2 +- definitions/grib2/template.7.51.def | 2 +- definitions/grib2/template.7.6.def | 2 +- definitions/grib2/template.7.61.def | 2 +- definitions/grib2/template.7.second_order.def | 2 +- definitions/grib3/boot.def | 2 +- definitions/grib3/local.98.11.def | 2 +- definitions/grib3/local.98.14.def | 2 +- definitions/grib3/local.98.15.def | 2 +- definitions/grib3/local.98.16.def | 2 +- definitions/grib3/local.98.18.def | 2 +- definitions/grib3/local.98.192.def | 2 +- definitions/grib3/local.98.20.def | 2 +- definitions/grib3/local.98.21.def | 2 +- definitions/grib3/local.98.24.def | 2 +- definitions/grib3/local.98.25.def | 2 +- definitions/grib3/local.98.26.def | 2 +- definitions/grib3/local.98.28.def | 2 +- definitions/grib3/local.98.30.def | 2 +- definitions/grib3/local.98.300.def | 2 +- definitions/grib3/local.98.36.def | 2 +- definitions/grib3/local.98.38.def | 2 +- definitions/grib3/local.98.39.def | 2 +- definitions/grib3/local.98.7.def | 2 +- definitions/grib3/local.98.9.def | 2 +- definitions/grib3/mars_labeling.def | 2 +- definitions/grib3/meta.def | 2 +- definitions/grib3/parameters.def | 2 +- definitions/grib3/products_0.def | 2 +- definitions/grib3/products_1.def | 2 +- definitions/grib3/products_2.def | 2 +- definitions/grib3/products_3.def | 2 +- definitions/grib3/products_4.def | 2 +- definitions/grib3/products_5.def | 2 +- definitions/grib3/products_6.def | 2 +- definitions/grib3/products_7.def | 2 +- definitions/grib3/products_8.def | 2 +- definitions/grib3/products_9.def | 2 +- definitions/grib3/products_s2s.def | 2 +- definitions/grib3/products_tigge.def | 2 +- definitions/grib3/products_uerra.def | 2 +- definitions/grib3/rules.def | 2 +- definitions/grib3/section.00.def | 2 +- definitions/grib3/section.01.def | 2 +- definitions/grib3/section.02.def | 2 +- definitions/grib3/section.03.def | 2 +- definitions/grib3/section.04.def | 2 +- definitions/grib3/section.05.def | 2 +- definitions/grib3/section.06.def | 2 +- definitions/grib3/section.07.def | 2 +- definitions/grib3/section.08.def | 2 +- definitions/grib3/section.09.def | 2 +- definitions/grib3/section.10.def | 2 +- definitions/grib3/section.11.def | 2 +- definitions/grib3/sections.def | 2 +- definitions/grib3/template.10.0.def | 2 +- definitions/grib3/template.3.0.def | 2 +- definitions/grib3/template.3.110.def | 2 +- definitions/grib3/template.3.140.def | 2 +- definitions/grib3/template.3.20.def | 2 +- definitions/grib3/template.3.resolution_flags.def | 2 +- definitions/grib3/template.4.0.def | 2 +- definitions/grib3/template.4.1.def | 2 +- definitions/grib3/template.4.2.def | 2 +- definitions/grib3/template.4.3.def | 2 +- definitions/grib3/template.4.horizontal.def | 2 +- definitions/grib3/template.4.resolution_flags.def | 2 +- definitions/grib3/template.4.scanning_mode.def | 2 +- definitions/grib3/template.5.0.def | 2 +- definitions/grib3/template.5.1.def | 2 +- definitions/grib3/template.6.0.def | 2 +- definitions/grib3/template.6.1.def | 2 +- definitions/grib3/template.6.2.def | 2 +- definitions/grib3/template.7.0.def | 2 +- definitions/grib3/template.7.1.def | 2 +- definitions/grib3/template.7.2.def | 2 +- definitions/grib3/template.7.3.def | 2 +- definitions/grib3/template.7.4.def | 2 +- definitions/grib3/template.8.0.def | 2 +- definitions/grib3/template.8.1.def | 2 +- definitions/grib3/template.9.0.def | 2 +- definitions/gts/boot.def | 2 +- definitions/installDefinitions.sh | 2 +- definitions/mars/make_type_switch_case.sh | 2 +- definitions/metar/boot.def | 2 +- definitions/metar/boot.flexible.def | 2 +- definitions/publish_new_parameters.sh | 2 +- definitions/taf/boot.def | 2 +- definitions/tide/boot.def | 2 +- definitions/tide/mars_labeling.def | 2 +- definitions/tide/section.1.def | 2 +- definitions/tide/section.4.def | 2 +- definitions/wrap/boot.def | 2 +- eccodes_config.h.in | 2 +- examples/C/box.c | 2 +- examples/C/bufr_attributes.c | 2 +- examples/C/bufr_attributes.sh | 2 +- examples/C/bufr_clone.c | 2 +- examples/C/bufr_clone.sh | 2 +- examples/C/bufr_copy_data.c | 2 +- examples/C/bufr_copy_data.sh | 2 +- examples/C/bufr_expanded.c | 2 +- examples/C/bufr_expanded.sh | 2 +- examples/C/bufr_get_keys.c | 2 +- examples/C/bufr_get_keys.sh | 2 +- examples/C/bufr_get_string_array.c | 2 +- examples/C/bufr_get_string_array.sh | 2 +- examples/C/bufr_keys_iterator.c | 2 +- examples/C/bufr_keys_iterator.sh | 2 +- examples/C/bufr_missing.c | 2 +- examples/C/bufr_missing.sh | 2 +- examples/C/bufr_pthreads.c | 2 +- examples/C/bufr_pthreads.sh | 2 +- examples/C/bufr_read_header.c | 2 +- examples/C/bufr_read_header.sh | 2 +- examples/C/bufr_read_scatterometer.c | 2 +- examples/C/bufr_read_scatterometer.sh | 2 +- examples/C/bufr_read_synop.c | 2 +- examples/C/bufr_read_synop.sh | 2 +- examples/C/bufr_read_temp.c | 2 +- examples/C/bufr_read_temp.sh | 2 +- examples/C/bufr_set_keys.c | 2 +- examples/C/bufr_set_keys.sh | 2 +- examples/C/bufr_subset.c | 2 +- examples/C/bufr_subset.sh | 2 +- examples/C/ecmwf_link.sh | 2 +- examples/C/fieldset.c | 2 +- examples/C/get_product_kind.c | 2 +- examples/C/get_product_kind.sh | 2 +- examples/C/get_product_kind_samples.sh | 2 +- examples/C/grib_clone.c | 2 +- examples/C/grib_clone.sh | 2 +- examples/C/grib_copy_message.c | 2 +- examples/C/grib_copy_message.sh | 2 +- examples/C/grib_ensemble_index.c | 2 +- examples/C/grib_ensemble_index.sh | 2 +- examples/C/grib_get_data.c | 2 +- examples/C/grib_get_data.sh | 2 +- examples/C/grib_get_keys.c | 2 +- examples/C/grib_get_keys.sh | 2 +- examples/C/grib_index.c | 2 +- examples/C/grib_iterator.c | 2 +- examples/C/grib_iterator.sh | 2 +- examples/C/grib_iterator_bitmap.c | 2 +- examples/C/grib_keys_iterator.c | 2 +- examples/C/grib_keys_iterator.sh | 2 +- examples/C/grib_list.c | 2 +- examples/C/grib_list.sh | 2 +- examples/C/grib_multi.c | 2 +- examples/C/grib_multi.sh | 2 +- examples/C/grib_multi_write.c | 2 +- examples/C/grib_multi_write.sh | 2 +- examples/C/grib_nearest.c | 2 +- examples/C/grib_precipitation.c | 2 +- examples/C/grib_precision.c | 2 +- examples/C/grib_precision.sh | 2 +- examples/C/grib_print_data.c | 2 +- examples/C/grib_print_data.sh | 2 +- examples/C/grib_pthreads.c | 2 +- examples/C/grib_pthreads.sh | 2 +- examples/C/grib_set_bitmap.c | 2 +- examples/C/grib_set_bitmap.sh | 2 +- examples/C/grib_set_data.c | 2 +- examples/C/grib_set_data.sh | 2 +- examples/C/grib_set_keys.c | 2 +- examples/C/grib_set_keys.sh | 2 +- examples/C/grib_set_pv.c | 2 +- examples/C/grib_set_pv.sh | 2 +- examples/C/include.sh | 2 +- examples/C/large_grib1.c | 2 +- examples/C/large_grib1.sh | 2 +- examples/C/mars_param.c | 2 +- examples/C/multi2.c | 2 +- examples/C/nc.c | 2 +- examples/C/new_sample.c | 2 +- examples/C/points.c | 2 +- examples/C/rename.sh | 2 +- examples/C/run_examples.sh | 2 +- examples/C/sections_copy.c | 2 +- examples/C/sections_copy.sh | 2 +- examples/C/set_missing.c | 2 +- examples/C/set_missing.sh | 2 +- examples/C/values_check.c | 2 +- examples/F90/bufr_attributes.f90 | 2 +- examples/F90/bufr_attributes.sh | 2 +- examples/F90/bufr_clone.f90 | 2 +- examples/F90/bufr_clone.sh | 2 +- examples/F90/bufr_copy_data.f90 | 2 +- examples/F90/bufr_copy_data.sh | 2 +- examples/F90/bufr_copy_keys.f90 | 2 +- examples/F90/bufr_copy_keys.sh | 2 +- examples/F90/bufr_copy_message.f90 | 2 +- examples/F90/bufr_copy_message.sh | 2 +- examples/F90/bufr_expanded.f90 | 2 +- examples/F90/bufr_expanded.sh | 2 +- examples/F90/bufr_get_keys.f90 | 2 +- examples/F90/bufr_get_keys.sh | 2 +- examples/F90/bufr_get_string_array.f90 | 2 +- examples/F90/bufr_get_string_array.sh | 2 +- examples/F90/bufr_keys_iterator.f90 | 2 +- examples/F90/bufr_keys_iterator.sh | 2 +- examples/F90/bufr_read_header.f90 | 2 +- examples/F90/bufr_read_header.sh | 2 +- examples/F90/bufr_read_scatterometer.f90 | 2 +- examples/F90/bufr_read_scatterometer.sh | 2 +- examples/F90/bufr_read_synop.f90 | 2 +- examples/F90/bufr_read_synop.sh | 2 +- examples/F90/bufr_read_temp.f90 | 2 +- examples/F90/bufr_read_temp.sh | 2 +- examples/F90/bufr_read_tropical_cyclone.f90 | 2 +- examples/F90/bufr_read_tropical_cyclone.sh | 2 +- examples/F90/bufr_set_keys.f90 | 2 +- examples/F90/bufr_set_keys.sh | 2 +- examples/F90/bufr_subset.f90 | 2 +- examples/F90/bufr_subset.sh | 2 +- examples/F90/get_fortran.f90 | 2 +- examples/F90/get_pl.f90 | 2 +- examples/F90/get_pl.sh | 2 +- examples/F90/get_product_kind.f90 | 2 +- examples/F90/get_product_kind.sh | 2 +- examples/F90/get_pv.f90 | 2 +- examples/F90/get_pv.sh | 2 +- examples/F90/get_set_uuid.f90 | 2 +- examples/F90/get_set_uuid.sh | 2 +- examples/F90/grib_clone.f90 | 2 +- examples/F90/grib_clone.sh | 2 +- examples/F90/grib_copy_message.f90 | 2 +- examples/F90/grib_copy_message.sh | 2 +- examples/F90/grib_copy_namespace.f90 | 2 +- examples/F90/grib_copy_namespace.sh | 2 +- examples/F90/grib_count_messages.f90 | 2 +- examples/F90/grib_count_messages.sh | 2 +- examples/F90/grib_count_messages_multi.f90 | 2 +- examples/F90/grib_count_messages_multi.sh | 2 +- examples/F90/grib_ecc-671.f90 | 2 +- examples/F90/grib_ecc-671.sh | 2 +- examples/F90/grib_get_data.f90 | 2 +- examples/F90/grib_get_data.sh | 2 +- examples/F90/grib_get_keys.f90 | 2 +- examples/F90/grib_get_keys.sh | 2 +- examples/F90/grib_index.f90 | 2 +- examples/F90/grib_index.sh | 2 +- examples/F90/grib_keys_iterator.f90 | 2 +- examples/F90/grib_keys_iterator.sh | 2 +- examples/F90/grib_multi.f90 | 2 +- examples/F90/grib_multi.sh | 2 +- examples/F90/grib_multi_write.f90 | 2 +- examples/F90/grib_multi_write.sh | 2 +- examples/F90/grib_nearest.f90 | 2 +- examples/F90/grib_nearest.sh | 2 +- examples/F90/grib_precision.f90 | 2 +- examples/F90/grib_precision.sh | 2 +- examples/F90/grib_print_data.f90 | 2 +- examples/F90/grib_print_data.sh | 2 +- examples/F90/grib_print_data_static.f90 | 2 +- examples/F90/grib_samples.f90 | 2 +- examples/F90/grib_samples.sh | 2 +- examples/F90/grib_set_bitmap.f90 | 2 +- examples/F90/grib_set_bitmap.sh | 2 +- examples/F90/grib_set_data.f90 | 2 +- examples/F90/grib_set_data.sh | 2 +- examples/F90/grib_set_gvc.f90 | 2 +- examples/F90/grib_set_keys.f90 | 2 +- examples/F90/grib_set_keys.sh | 2 +- examples/F90/grib_set_missing.f90 | 2 +- examples/F90/grib_set_missing.sh | 2 +- examples/F90/grib_set_pv.f90 | 2 +- examples/F90/grib_set_pv.sh | 2 +- examples/F90/include.sh | 2 +- examples/F90/iterator_fortran.f90 | 2 +- examples/F90/keys_iterator_fortran.f90 | 2 +- examples/F90/multi_fortran.f90 | 2 +- examples/F90/new_from_file.f90 | 2 +- examples/F90/precision_fortran.f90 | 2 +- examples/F90/print_data_fortran.f90 | 2 +- examples/F90/read_from_file.f90 | 2 +- examples/F90/read_from_file.sh | 2 +- examples/F90/read_message.f90 | 2 +- examples/F90/read_message.sh | 2 +- examples/F90/set_fortran.f90 | 2 +- examples/F90/set_missing_fortran.f90 | 2 +- examples/deprecated/fieldset.c | 2 +- examples/deprecated/get.c | 2 +- examples/deprecated/get_fortran.F | 2 +- examples/deprecated/grib_precipitation.c | 2 +- examples/deprecated/iterator.c | 2 +- examples/deprecated/iterator_fortran.F | 2 +- examples/deprecated/keys_iterator.c | 2 +- examples/deprecated/keys_iterator_fortran.F | 2 +- examples/deprecated/multi.c | 2 +- examples/deprecated/multi_fortran.F | 2 +- examples/deprecated/nearest.c | 2 +- examples/deprecated/precision.c | 2 +- examples/deprecated/precision_fortran.F | 2 +- examples/deprecated/print_data.c | 2 +- examples/deprecated/print_data_fortran.F | 2 +- examples/deprecated/set.c | 2 +- examples/deprecated/set_bitmap.c | 2 +- examples/deprecated/set_fortran.F | 2 +- examples/deprecated/set_pv.c | 2 +- examples/deprecated/set_pv_fortran.F | 2 +- examples/extra/ens_mean.f90 | 2 +- examples/extra/f_clone.f90 | 2 +- examples/extra/message_count_multi.f90 | 2 +- examples/python/binary_message.py | 2 +- examples/python/bufr_attributes.py | 2 +- examples/python/bufr_attributes.sh | 2 +- examples/python/bufr_clone.py | 2 +- examples/python/bufr_clone.sh | 2 +- examples/python/bufr_copy_data.py | 2 +- examples/python/bufr_copy_data.sh | 2 +- examples/python/bufr_copy_data2.py | 2 +- examples/python/bufr_ecc-448.py | 2 +- examples/python/bufr_ecc-448.sh | 2 +- examples/python/bufr_ecc-869.sh | 2 +- examples/python/bufr_encode_flight.py | 2 +- examples/python/bufr_expanded.py | 2 +- examples/python/bufr_expanded.sh | 2 +- examples/python/bufr_get_keys.py | 2 +- examples/python/bufr_get_keys.sh | 2 +- examples/python/bufr_keys_iterator.py | 2 +- examples/python/bufr_keys_iterator.sh | 2 +- examples/python/bufr_read_header.py | 2 +- examples/python/bufr_read_sample.py | 2 +- examples/python/bufr_read_sample.sh | 2 +- examples/python/bufr_read_scatterometer.py | 2 +- examples/python/bufr_read_scatterometer.sh | 2 +- examples/python/bufr_read_synop.py | 2 +- examples/python/bufr_read_synop.sh | 2 +- examples/python/bufr_read_temp.py | 2 +- examples/python/bufr_read_temp.sh | 2 +- examples/python/bufr_read_tropical_cyclone.py | 2 +- examples/python/bufr_read_tropical_cyclone.sh | 2 +- examples/python/bufr_set_keys.py | 2 +- examples/python/bufr_set_keys.sh | 2 +- examples/python/bufr_subset.py | 2 +- examples/python/bufr_subset.sh | 2 +- examples/python/get_product_kind.py | 2 +- examples/python/get_product_kind.sh | 2 +- examples/python/grib_ccsds.py | 2 +- examples/python/grib_clone.py | 2 +- examples/python/grib_count_messages.c | 2 +- examples/python/grib_count_messages.py | 2 +- examples/python/grib_get_keys.py | 2 +- examples/python/grib_get_message_offset.py | 2 +- examples/python/grib_get_message_offset.sh | 2 +- examples/python/grib_index.py | 2 +- examples/python/grib_iterator.c | 2 +- examples/python/grib_iterator.py | 2 +- examples/python/grib_iterator_bitmap.py | 2 +- examples/python/grib_keys_iterator.c | 2 +- examples/python/grib_keys_iterator.py | 2 +- examples/python/grib_ls_JSON.py | 2 +- examples/python/grib_multi_write.py | 2 +- examples/python/grib_nearest.py | 2 +- examples/python/grib_print_data.c | 2 +- examples/python/grib_print_data.py | 2 +- examples/python/grib_read_sample.py | 2 +- examples/python/grib_read_sample.sh | 2 +- examples/python/grib_samples.py | 2 +- examples/python/grib_set_bitmap.py | 2 +- examples/python/grib_set_keys.py | 2 +- examples/python/grib_set_missing.py | 2 +- examples/python/grib_set_pv.py | 2 +- examples/python/gts_get_keys.py | 2 +- examples/python/gts_get_keys.sh | 2 +- examples/python/keys_iterator_gts.py | 2 +- examples/python/metar_get_keys.py | 2 +- examples/python/metar_get_keys.sh | 2 +- fortran/create_grib_f90.sh | 2 +- fortran/eccodes_f90_head.f90 | 2 +- fortran/eccodes_f90_int.f90 | 2 +- fortran/eccodes_f90_int_size_t.f90 | 2 +- fortran/eccodes_f90_long_int.f90 | 2 +- fortran/eccodes_f90_long_size_t.f90 | 2 +- fortran/grib_f77.c | 2 +- fortran/grib_f90_head.f90 | 2 +- fortran/grib_f90_int.f90 | 2 +- fortran/grib_f90_int_size_t.f90 | 2 +- fortran/grib_f90_long_int.f90 | 2 +- fortran/grib_f90_long_size_t.f90 | 2 +- fortran/grib_fortran.c | 2 +- fortran/grib_fortran_kinds.c | 2 +- fortran/grib_fortran_prototypes.h | 2 +- fortran/grib_types.f90 | 2 +- fortran/same_int_long.f90 | 2 +- fortran/same_int_size_t.f90 | 2 +- license.pl | 2 +- perf/jmeter.awk | 2 +- perf/time.sh | 2 +- perl/GRIB-API/README | 2 +- perl/GRIB-API/convert.pl | 2 +- perl/GRIB-API/lib/GRIB/API.pm | 2 +- perl/GRIB-API/test.pl | 2 +- python/grib_interface.c | 2 +- python/gribapi.c | 2 +- python3/grib_interface.c | 2 +- python3/gribapi.c | 2 +- show_compile.sh | 2 +- src/CMakeLists.txt | 2 +- src/action.c | 2 +- src/action_class_alias.c | 2 +- src/action_class_assert.c | 2 +- src/action_class_close.c | 2 +- src/action_class_concept.c | 2 +- src/action_class_gen.c | 2 +- src/action_class_hash_array.c | 2 +- src/action_class_if.c | 2 +- src/action_class_list.c | 2 +- src/action_class_meta.c | 2 +- src/action_class_modify.c | 2 +- src/action_class_noop.c | 2 +- src/action_class_print.c | 2 +- src/action_class_put.c | 2 +- src/action_class_remove.c | 2 +- src/action_class_rename.c | 2 +- src/action_class_section.c | 2 +- src/action_class_set.c | 2 +- src/action_class_set_darray.c | 2 +- src/action_class_set_iarray.c | 2 +- src/action_class_set_missing.c | 2 +- src/action_class_set_sarray.c | 2 +- src/action_class_switch.c | 2 +- src/action_class_template.c | 2 +- src/action_class_transient_darray.c | 2 +- src/action_class_trigger.c | 2 +- src/action_class_variable.c | 2 +- src/action_class_when.c | 2 +- src/action_class_while.c | 2 +- src/action_class_write.c | 2 +- src/bufr_keys_iterator.c | 2 +- src/bufr_util.c | 2 +- src/codes_memfs.c | 2 +- src/eccodes.c | 2 +- src/eccodes.h | 2 +- src/eccodes_version.h.in | 2 +- src/eccodes_windef.h | 2 +- src/encode_double_array.c | 2 +- src/errors.pl | 2 +- src/functions.c | 2 +- src/grib2c.pl | 2 +- src/grib_2order_packer_simple.c | 2 +- src/grib_accessor.c | 2 +- src/grib_accessor_class.c | 2 +- src/grib_accessor_class_abstract_long_vector.c | 2 +- src/grib_accessor_class_abstract_vector.c | 2 +- src/grib_accessor_class_apply_operators.c | 2 +- src/grib_accessor_class_array.c | 2 +- src/grib_accessor_class_ascii.c | 2 +- src/grib_accessor_class_assert.c | 2 +- src/grib_accessor_class_bit.c | 2 +- src/grib_accessor_class_bitmap.c | 2 +- src/grib_accessor_class_bits.c | 2 +- src/grib_accessor_class_bits_per_value.c | 2 +- src/grib_accessor_class_blob.c | 2 +- src/grib_accessor_class_box.c | 2 +- src/grib_accessor_class_budgdate.c | 2 +- src/grib_accessor_class_bufr_clear_tables.c | 2 +- src/grib_accessor_class_bufr_data.c | 2 +- src/grib_accessor_class_bufr_data_array.c | 2 +- src/grib_accessor_class_bufr_data_element.c | 2 +- src/grib_accessor_class_bufr_elements_table.c | 2 +- src/grib_accessor_class_bufr_extract_area_subsets.c | 2 +- src/grib_accessor_class_bufr_extract_datetime_subsets.c | 2 +- src/grib_accessor_class_bufr_extract_subsets.c | 2 +- src/grib_accessor_class_bufr_group.c | 2 +- src/grib_accessor_class_bufr_has_delayed_replication.c | 2 +- src/grib_accessor_class_bufr_simple_thinning.c | 2 +- src/grib_accessor_class_bufr_string_values.c | 2 +- src/grib_accessor_class_bufrdc_expanded_descriptors.c | 2 +- src/grib_accessor_class_bytes.c | 2 +- src/grib_accessor_class_change_scanning_direction.c | 2 +- src/grib_accessor_class_check_internal_version.c | 2 +- src/grib_accessor_class_codeflag.c | 2 +- src/grib_accessor_class_codetable.c | 2 +- src/grib_accessor_class_codetable_title.c | 2 +- src/grib_accessor_class_codetable_units.c | 2 +- src/grib_accessor_class_concept.c | 2 +- src/grib_accessor_class_constant.c | 2 +- src/grib_accessor_class_count_file.c | 2 +- src/grib_accessor_class_count_missing.c | 2 +- src/grib_accessor_class_count_total.c | 2 +- src/grib_accessor_class_data_2order_packing.c | 2 +- src/grib_accessor_class_data_2order_packing_count.c | 2 +- src/grib_accessor_class_data_apply_bitmap.c | 2 +- src/grib_accessor_class_data_apply_boustrophedonic.c | 2 +- src/grib_accessor_class_data_apply_boustrophedonic_bitmap.c | 2 +- src/grib_accessor_class_data_apply_gdsnotpresent.c | 2 +- src/grib_accessor_class_data_ccsds_packing.c | 2 +- src/grib_accessor_class_data_complex_packing.c | 2 +- src/grib_accessor_class_data_constant_field.c | 2 +- src/grib_accessor_class_data_dummy_field.c | 2 +- src/grib_accessor_class_data_g1complex_packing.c | 2 +- ..._accessor_class_data_g1second_order_constant_width_packing.c | 2 +- ...ccessor_class_data_g1second_order_general_extended_packing.c | 2 +- src/grib_accessor_class_data_g1second_order_general_packing.c | 2 +- ...grib_accessor_class_data_g1second_order_row_by_row_packing.c | 2 +- src/grib_accessor_class_data_g1secondary_bitmap.c | 2 +- src/grib_accessor_class_data_g1shsimple_packing.c | 2 +- src/grib_accessor_class_data_g1simple_packing.c | 2 +- src/grib_accessor_class_data_g22order_packing.c | 2 +- src/grib_accessor_class_data_g2complex_packing.c | 2 +- src/grib_accessor_class_data_g2secondary_bitmap.c | 2 +- src/grib_accessor_class_data_g2shsimple_packing.c | 2 +- src/grib_accessor_class_data_g2simple_packing.c | 2 +- ...ib_accessor_class_data_g2simple_packing_with_preprocessing.c | 2 +- src/grib_accessor_class_data_jpeg2000_packing.c | 2 +- src/grib_accessor_class_data_png_packing.c | 2 +- src/grib_accessor_class_data_raw_packing.c | 2 +- src/grib_accessor_class_data_secondary_bitmap.c | 2 +- src/grib_accessor_class_data_sh_packed.c | 2 +- src/grib_accessor_class_data_sh_unpacked.c | 2 +- src/grib_accessor_class_data_shsimple_packing.c | 2 +- src/grib_accessor_class_data_simple_packing.c | 2 +- src/grib_accessor_class_decimal_precision.c | 2 +- src/grib_accessor_class_dictionary.c | 2 +- src/grib_accessor_class_dirty.c | 2 +- src/grib_accessor_class_divdouble.c | 2 +- src/grib_accessor_class_double.c | 2 +- src/grib_accessor_class_element.c | 2 +- src/grib_accessor_class_evaluate.c | 2 +- src/grib_accessor_class_expanded_descriptors.c | 2 +- src/grib_accessor_class_forward.c | 2 +- src/grib_accessor_class_from_scale_factor_scaled_value.c | 2 +- src/grib_accessor_class_g1_half_byte_codeflag.c | 2 +- src/grib_accessor_class_g1_increment.c | 2 +- src/grib_accessor_class_g1_message_length.c | 2 +- src/grib_accessor_class_g1_section4_length.c | 2 +- src/grib_accessor_class_g1area.c | 2 +- src/grib_accessor_class_g1bitmap.c | 2 +- src/grib_accessor_class_g1date.c | 2 +- src/grib_accessor_class_g1day_of_the_year_date.c | 2 +- src/grib_accessor_class_g1end_of_interval_monthly.c | 2 +- src/grib_accessor_class_g1fcperiod.c | 2 +- src/grib_accessor_class_g1forecastmonth.c | 2 +- src/grib_accessor_class_g1monthlydate.c | 2 +- src/grib_accessor_class_g1number_of_coded_values_sh_complex.c | 2 +- src/grib_accessor_class_g1number_of_coded_values_sh_simple.c | 2 +- src/grib_accessor_class_g1p1p2.c | 2 +- src/grib_accessor_class_g1param.c | 2 +- src/grib_accessor_class_g1step_range.c | 2 +- src/grib_accessor_class_g1verificationdate.c | 2 +- src/grib_accessor_class_g2_aerosol.c | 2 +- src/grib_accessor_class_g2_chemical.c | 2 +- src/grib_accessor_class_g2_eps.c | 2 +- src/grib_accessor_class_g2_mars_labeling.c | 2 +- src/grib_accessor_class_g2bitmap.c | 2 +- src/grib_accessor_class_g2bitmap_present.c | 2 +- src/grib_accessor_class_g2date.c | 2 +- src/grib_accessor_class_g2end_step.c | 2 +- src/grib_accessor_class_g2grid.c | 2 +- src/grib_accessor_class_g2latlon.c | 2 +- src/grib_accessor_class_g2level.c | 2 +- src/grib_accessor_class_g2lon.c | 2 +- src/grib_accessor_class_g2step.c | 2 +- src/grib_accessor_class_g2step_range.c | 2 +- src/grib_accessor_class_gaussian_grid_name.c | 2 +- src/grib_accessor_class_gds_is_present.c | 2 +- src/grib_accessor_class_gds_not_present_bitmap.c | 2 +- src/grib_accessor_class_gen.c | 2 +- src/grib_accessor_class_getenv.c | 2 +- src/grib_accessor_class_global_gaussian.c | 2 +- src/grib_accessor_class_group.c | 2 +- src/grib_accessor_class_gts_header.c | 2 +- src/grib_accessor_class_hash_array.c | 2 +- src/grib_accessor_class_headers_only.c | 2 +- src/grib_accessor_class_ibmfloat.c | 2 +- src/grib_accessor_class_ieeefloat.c | 2 +- src/grib_accessor_class_ifs_param.c | 2 +- src/grib_accessor_class_int16.c | 2 +- src/grib_accessor_class_int16_little_endian.c | 2 +- src/grib_accessor_class_int32.c | 2 +- src/grib_accessor_class_int32_little_endian.c | 2 +- src/grib_accessor_class_int64.c | 2 +- src/grib_accessor_class_int64_little_endian.c | 2 +- src/grib_accessor_class_int8.c | 2 +- src/grib_accessor_class_iterator.c | 2 +- src/grib_accessor_class_julian_date.c | 2 +- src/grib_accessor_class_julian_day.c | 2 +- src/grib_accessor_class_ksec1expver.c | 2 +- src/grib_accessor_class_label.c | 2 +- src/grib_accessor_class_laplacian.c | 2 +- src/grib_accessor_class_latitudes.c | 2 +- src/grib_accessor_class_latlon_increment.c | 2 +- src/grib_accessor_class_latlonvalues.c | 2 +- src/grib_accessor_class_library_version.c | 2 +- src/grib_accessor_class_local_definition.c | 2 +- src/grib_accessor_class_long.c | 2 +- src/grib_accessor_class_long_vector.c | 2 +- src/grib_accessor_class_longitudes.c | 2 +- src/grib_accessor_class_lookup.c | 2 +- src/grib_accessor_class_mars_param.c | 2 +- src/grib_accessor_class_mars_step.c | 2 +- src/grib_accessor_class_md5.c | 2 +- src/grib_accessor_class_message.c | 2 +- src/grib_accessor_class_message_copy.c | 2 +- src/grib_accessor_class_missing.c | 2 +- src/grib_accessor_class_nearest.c | 2 +- src/grib_accessor_class_non_alpha.c | 2 +- src/grib_accessor_class_number_of_coded_values.c | 2 +- src/grib_accessor_class_number_of_points.c | 2 +- src/grib_accessor_class_number_of_points_gaussian.c | 2 +- src/grib_accessor_class_number_of_values.c | 2 +- src/grib_accessor_class_number_of_values_data_raw_packing.c | 2 +- src/grib_accessor_class_octahedral_gaussian.c | 2 +- src/grib_accessor_class_octect_number.c | 2 +- src/grib_accessor_class_offset_file.c | 2 +- src/grib_accessor_class_offset_values.c | 2 +- src/grib_accessor_class_pack_bufr_values.c | 2 +- src/grib_accessor_class_pad.c | 2 +- src/grib_accessor_class_padding.c | 2 +- src/grib_accessor_class_padto.c | 2 +- src/grib_accessor_class_padtoeven.c | 2 +- src/grib_accessor_class_padtomultiple.c | 2 +- src/grib_accessor_class_position.c | 2 +- src/grib_accessor_class_raw.c | 2 +- src/grib_accessor_class_rdbtime_guess_date.c | 2 +- src/grib_accessor_class_reference_value_error.c | 2 +- src/grib_accessor_class_round.c | 2 +- src/grib_accessor_class_scale.c | 2 +- src/grib_accessor_class_scale_values.c | 2 +- src/grib_accessor_class_second_order_bits_per_value.c | 2 +- src/grib_accessor_class_section.c | 2 +- src/grib_accessor_class_section_length.c | 2 +- src/grib_accessor_class_section_padding.c | 2 +- src/grib_accessor_class_section_pointer.c | 2 +- src/grib_accessor_class_select_step_template.c | 2 +- src/grib_accessor_class_sexagesimal2decimal.c | 2 +- src/grib_accessor_class_signed.c | 2 +- src/grib_accessor_class_signed_bits.c | 2 +- src/grib_accessor_class_simple_packing_error.c | 2 +- src/grib_accessor_class_size.c | 2 +- src/grib_accessor_class_smart_table.c | 2 +- src/grib_accessor_class_smart_table_column.c | 2 +- src/grib_accessor_class_spd.c | 2 +- src/grib_accessor_class_spectral_truncation.c | 2 +- src/grib_accessor_class_sprintf.c | 2 +- src/grib_accessor_class_statistics.c | 2 +- src/grib_accessor_class_statistics_spectral.c | 2 +- src/grib_accessor_class_step_in_units.c | 2 +- src/grib_accessor_class_sum.c | 2 +- src/grib_accessor_class_suppressed.c | 2 +- src/grib_accessor_class_time.c | 2 +- src/grib_accessor_class_times.c | 2 +- src/grib_accessor_class_to_double.c | 2 +- src/grib_accessor_class_to_integer.c | 2 +- src/grib_accessor_class_to_string.c | 2 +- src/grib_accessor_class_transient.c | 2 +- src/grib_accessor_class_transient_darray.c | 2 +- src/grib_accessor_class_uint16.c | 2 +- src/grib_accessor_class_uint16_little_endian.c | 2 +- src/grib_accessor_class_uint32.c | 2 +- src/grib_accessor_class_uint32_little_endian.c | 2 +- src/grib_accessor_class_uint64.c | 2 +- src/grib_accessor_class_uint64_little_endian.c | 2 +- src/grib_accessor_class_uint8.c | 2 +- src/grib_accessor_class_unexpanded_descriptors.c | 2 +- src/grib_accessor_class_unpack_bufr_values.c | 2 +- src/grib_accessor_class_unsigned.c | 2 +- src/grib_accessor_class_unsigned_bits.c | 2 +- src/grib_accessor_class_validity_date.c | 2 +- src/grib_accessor_class_validity_time.c | 2 +- src/grib_accessor_class_values.c | 2 +- src/grib_accessor_class_variable.c | 2 +- src/grib_accessor_class_vector.c | 2 +- src/grib_accessor_class_when.c | 2 +- src/grib_api.h | 2 +- src/grib_api_internal.h | 2 +- src/grib_bits.c | 2 +- src/grib_bits_any_endian.c | 2 +- src/grib_bits_any_endian_omp.c | 2 +- src/grib_bits_any_endian_simple.c | 2 +- src/grib_bits_any_endian_vector.c | 2 +- src/grib_bits_fast_big_endian.c | 2 +- src/grib_bits_fast_big_endian_omp.c | 2 +- src/grib_bits_fast_big_endian_simple.c | 2 +- src/grib_bits_fast_big_endian_vector.c | 2 +- src/grib_bits_ibmpow.c | 2 +- src/grib_bits_ibmpow_opt.c | 2 +- src/grib_box.c | 2 +- src/grib_box_class.c | 2 +- src/grib_box_class_gen.c | 2 +- src/grib_box_class_reduced_gaussian.c | 2 +- src/grib_box_class_regular_gaussian.c | 2 +- src/grib_buffer.c | 2 +- src/grib_bufr_descriptor.c | 2 +- src/grib_bufr_descriptors_array.c | 2 +- src/grib_compressor.c | 2 +- src/grib_concept.c | 2 +- src/grib_concept_index.c | 2 +- src/grib_context.c | 2 +- src/grib_darray.c | 2 +- src/grib_date.c | 2 +- src/grib_db.c | 2 +- src/grib_dependency.c | 2 +- src/grib_dumper.c | 2 +- src/grib_dumper_class.c | 2 +- src/grib_dumper_class_bufr_decode_C.c | 2 +- src/grib_dumper_class_bufr_decode_filter.c | 2 +- src/grib_dumper_class_bufr_decode_fortran.c | 2 +- src/grib_dumper_class_bufr_decode_python.c | 2 +- src/grib_dumper_class_bufr_encode_C.c | 2 +- src/grib_dumper_class_bufr_encode_filter.c | 2 +- src/grib_dumper_class_bufr_encode_fortran.c | 2 +- src/grib_dumper_class_bufr_encode_python.c | 2 +- src/grib_dumper_class_bufr_simple.c | 2 +- src/grib_dumper_class_debug.c | 2 +- src/grib_dumper_class_default.c | 2 +- src/grib_dumper_class_grib_encode_C.c | 2 +- src/grib_dumper_class_json.c | 2 +- src/grib_dumper_class_keys.c | 2 +- src/grib_dumper_class_serialize.c | 2 +- src/grib_dumper_class_wmo.c | 2 +- src/grib_emoslib.h | 2 +- src/grib_expression.c | 2 +- src/grib_expression.h | 2 +- src/grib_expression_class_accessor.c | 2 +- src/grib_expression_class_binop.c | 2 +- src/grib_expression_class_column.c | 2 +- src/grib_expression_class_constant.c | 2 +- src/grib_expression_class_double.c | 2 +- src/grib_expression_class_functor.c | 2 +- src/grib_expression_class_is_in_dict.c | 2 +- src/grib_expression_class_is_in_list.c | 2 +- src/grib_expression_class_is_integer.c | 2 +- src/grib_expression_class_length.c | 2 +- src/grib_expression_class_logical_and.c | 2 +- src/grib_expression_class_logical_or.c | 2 +- src/grib_expression_class_long.c | 2 +- src/grib_expression_class_string.c | 2 +- src/grib_expression_class_string_compare.c | 2 +- src/grib_expression_class_sub_string.c | 2 +- src/grib_expression_class_true.c | 2 +- src/grib_expression_class_unop.c | 2 +- src/grib_fieldset.c | 2 +- src/grib_filepool.c | 2 +- src/grib_gaussian_reduced.c | 2 +- src/grib_geography.c | 2 +- src/grib_handle.c | 2 +- src/grib_hash_array.c | 2 +- src/grib_hash_keys.c | 2 +- src/grib_header_compute.c | 2 +- src/grib_iarray.c | 2 +- src/grib_ibmfloat.c | 2 +- src/grib_ieeefloat.c | 2 +- src/grib_index.c | 2 +- src/grib_io.c | 2 +- src/grib_iterator.c | 2 +- src/grib_iterator_class.c | 2 +- src/grib_iterator_class_gaussian.c | 2 +- src/grib_iterator_class_gaussian_reduced.c | 2 +- src/grib_iterator_class_gen.c | 2 +- src/grib_iterator_class_lambert_azimuthal_equal_area.c | 2 +- src/grib_iterator_class_lambert_conformal.c | 2 +- src/grib_iterator_class_latlon.c | 2 +- src/grib_iterator_class_latlon_reduced.c | 2 +- src/grib_iterator_class_polar_stereographic.c | 2 +- src/grib_iterator_class_regular.c | 2 +- src/grib_iterator_class_space_view.c | 2 +- src/grib_itrie.c | 2 +- src/grib_itrie_keys.c | 2 +- src/grib_jasper_encoding.c | 2 +- src/grib_keys_iterator.c | 2 +- src/grib_lex.c | 2 +- src/grib_loader_from_array.c | 2 +- src/grib_loader_from_file.c | 2 +- src/grib_loader_from_handle.c | 2 +- src/grib_memory.c | 2 +- src/grib_nearest.c | 2 +- src/grib_nearest_class.c | 2 +- src/grib_nearest_class_gen.c | 2 +- src/grib_nearest_class_lambert_conformal.c | 2 +- src/grib_nearest_class_latlon_reduced.c | 2 +- src/grib_nearest_class_polar_stereographic.c | 2 +- src/grib_nearest_class_reduced.c | 2 +- src/grib_nearest_class_regular.c | 2 +- src/grib_nearest_class_sh.c | 2 +- src/grib_oarray.c | 2 +- src/grib_openjpeg_encoding.c | 2 +- src/grib_optimize_decimal_factor.c | 2 +- src/grib_parse_utils.c | 2 +- src/grib_query.c | 2 +- src/grib_rules.c | 2 +- src/grib_sarray.c | 2 +- src/grib_scaling.c | 2 +- src/grib_templates.c | 2 +- src/grib_templates.h | 2 +- src/grib_timer.c | 2 +- src/grib_trie.c | 2 +- src/grib_trie_with_rank.c | 2 +- src/grib_util.c | 2 +- src/grib_value.c | 2 +- src/grib_vdarray.c | 2 +- src/grib_viarray.c | 2 +- src/grib_vsarray.c | 2 +- src/gribl.l | 2 +- src/griby.y | 2 +- src/jgribapi_GribFile.h | 2 +- src/jgribapi_GribHandle.h | 2 +- src/jgribapi_GribIterator.h | 2 +- src/md5.c | 2 +- src/md5.h | 2 +- src/minmax_val.c | 2 +- src/string_util.c | 2 +- tests/badgrib.sh | 2 +- tests/bits.c | 2 +- tests/bpv_limit.c | 2 +- tests/bpv_limit.sh | 2 +- tests/budg.sh | 2 +- tests/bufr_change_edition.sh | 2 +- tests/bufr_compare.sh | 2 +- tests/bufr_copy.sh | 2 +- tests/bufr_count.sh | 2 +- tests/bufr_dump_data.sh | 2 +- tests/bufr_dump_decode_C.sh | 2 +- tests/bufr_dump_decode_filter.sh | 2 +- tests/bufr_dump_decode_fortran.sh | 2 +- tests/bufr_dump_decode_python.sh | 2 +- tests/bufr_dump_encode_C.sh | 2 +- tests/bufr_dump_encode_filter.sh | 2 +- tests/bufr_dump_encode_fortran.sh | 2 +- tests/bufr_dump_encode_python.sh | 2 +- tests/bufr_dump_samples.sh | 2 +- tests/bufr_ecc-197.sh | 2 +- tests/bufr_ecc-286.sh | 2 +- tests/bufr_ecc-288.sh | 2 +- tests/bufr_ecc-313.sh | 2 +- tests/bufr_ecc-359.sh | 2 +- tests/bufr_ecc-379.sh | 2 +- tests/bufr_ecc-393.sh | 2 +- tests/bufr_ecc-433.sh | 2 +- tests/bufr_ecc-517.c | 2 +- tests/bufr_ecc-517.sh | 2 +- tests/bufr_ecc-556.sh | 2 +- tests/bufr_ecc-616.sh | 2 +- tests/bufr_ecc-686.sh | 2 +- tests/bufr_ecc-690.sh | 2 +- tests/bufr_ecc-750.sh | 2 +- tests/bufr_ecc-875.sh | 2 +- tests/bufr_ecc-887.sh | 2 +- tests/bufr_filter.sh | 2 +- tests/bufr_filter_extract_area.sh | 2 +- tests/bufr_filter_extract_datetime.sh | 2 +- tests/bufr_get.sh | 2 +- tests/bufr_get_element.c | 2 +- tests/bufr_get_element.sh | 2 +- tests/bufr_json_data.sh | 2 +- tests/bufr_json_samples.sh | 2 +- tests/bufr_keys_iter.c | 2 +- tests/bufr_keys_iter.sh | 2 +- tests/bufr_ls.sh | 2 +- tests/bufr_rdbSubTypes.sh | 2 +- tests/bufr_set.sh | 2 +- tests/bufr_split_by_rdbSubtype.sh | 2 +- tests/bufr_wmo_tables.sh | 2 +- tests/bufrdc_desc_ref.sh | 2 +- tests/bufrdc_ref.sh | 2 +- tests/codes_split_file.sh | 2 +- tests/decimalPrecision.sh | 2 +- tests/decode.c | 2 +- tests/definitions.sh | 2 +- tests/fortran_interface.sh | 2 +- tests/gauss_sub.c | 2 +- tests/get_fail.sh | 2 +- tests/grib1to2.sh | 2 +- tests/grib1to3.sh | 2 +- tests/grib2to1.sh | 2 +- tests/grib2to3.sh | 2 +- tests/grib3_templates.sh | 2 +- tests/grib_2nd_order_numValues.c | 2 +- tests/grib_2nd_order_numValues.sh | 2 +- tests/grib_bitmap.sh | 2 +- tests/grib_bitsPerValue.sh | 2 +- tests/grib_calendar.sh | 2 +- tests/grib_ccsds.sh | 2 +- tests/grib_ccsds_perf.c | 2 +- tests/grib_change_scanning.sh | 2 +- tests/grib_check_gaussian_grids.sh | 2 +- tests/grib_check_param_concepts.sh | 2 +- tests/grib_compare.sh | 2 +- tests/grib_concept.sh | 2 +- tests/grib_copy.sh | 2 +- tests/grib_double_cmp.c | 2 +- tests/grib_double_cmp.sh | 2 +- tests/grib_dump.sh | 2 +- tests/grib_dump_debug.sh | 2 +- tests/grib_dump_json.sh | 2 +- tests/grib_ecc-386.c | 2 +- tests/grib_ecc-386.sh | 2 +- tests/grib_ecc-490.sh | 2 +- tests/grib_ecc-600.sh | 2 +- tests/grib_ecc-756.sh | 2 +- tests/grib_ecc-873.sh | 2 +- tests/grib_efas.sh | 2 +- tests/grib_encode_pthreads.c | 2 +- tests/grib_encode_pthreads.sh | 2 +- tests/grib_filter.sh | 2 +- tests/grib_global.sh | 2 +- tests/grib_gridType.sh | 2 +- tests/grib_iterator.sh | 2 +- tests/grib_jpeg.sh | 2 +- tests/grib_lamb_az_eq_area.sh | 2 +- tests/grib_level.sh | 2 +- tests/grib_local.sh | 2 +- tests/grib_local_MeteoFrance.c | 2 +- tests/grib_local_MeteoFrance.sh | 2 +- tests/grib_ls.sh | 2 +- tests/grib_mars_types.sh | 2 +- tests/grib_multi.sh | 2 +- tests/grib_neg_fctime.sh | 2 +- tests/grib_octahedral.sh | 2 +- tests/grib_padding.sh | 2 +- tests/grib_png.sh | 2 +- tests/grib_second_order.sh | 2 +- tests/grib_set.sh | 2 +- tests/grib_sh_ieee64.c | 2 +- tests/grib_sh_ieee64.sh | 2 +- tests/grib_sh_imag.c | 2 +- tests/grib_sh_imag.sh | 2 +- tests/grib_statistics.sh | 2 +- tests/grib_step.sh | 2 +- tests/grib_tigge.sh | 2 +- tests/grib_tigge_conversions.sh | 2 +- tests/grib_to_netcdf.sh | 2 +- tests/grib_uerra.sh | 2 +- tests/grib_util_set_spec.c | 2 +- tests/grib_util_set_spec.sh | 2 +- tests/gribex_perf.c | 2 +- tests/gts_compare.sh | 2 +- tests/gts_count.sh | 2 +- tests/gts_get.sh | 2 +- tests/gts_ls.sh | 2 +- tests/ibm.c | 2 +- tests/ieee.c | 2 +- tests/ieee.sh | 2 +- tests/include.sh | 2 +- tests/index.c | 2 +- tests/index.sh | 2 +- tests/index_orderby.c | 2 +- tests/jpeg_perf.c | 2 +- tests/julian.c | 2 +- tests/julian.sh | 2 +- tests/laplacian.c | 2 +- tests/largefile.c | 2 +- tests/list.sh | 2 +- tests/list_all_keys.ksh | 2 +- tests/metar_compare.sh | 2 +- tests/metar_dump.sh | 2 +- tests/metar_get.sh | 2 +- tests/metar_ls.sh | 2 +- tests/missing.sh | 2 +- tests/multi_from_message.c | 2 +- tests/multi_from_message.sh | 2 +- tests/mybufrdc_ref.sh | 2 +- tests/optimize_scaling.c | 2 +- tests/optimize_scaling.sh | 2 +- tests/optimize_scaling_sh.c | 2 +- tests/optimize_scaling_sh.sh | 2 +- tests/pack_unpack.c | 2 +- tests/packing.c | 2 +- tests/packing_check.c | 2 +- tests/png_perf.c | 2 +- tests/read_any.c | 2 +- tests/read_any.sh | 2 +- tests/read_index.c | 2 +- tests/so_perf.c | 2 +- tests/timing.c | 2 +- tests/tiny.sh | 2 +- tests/unit_tests.c | 2 +- tests/unit_tests.sh | 2 +- tests/utils.sh | 2 +- tests/values_to_ascii.c | 2 +- tigge/jma.pl | 2 +- tigge/tigge_accumulations.c | 2 +- tigge/tigge_check.c | 2 +- tigge/tigge_check.h | 2 +- tigge/tigge_name.c | 2 +- tigge/tigge_split.c | 2 +- tigge/tigge_tools.c | 2 +- tigge/tigge_tools.h | 2 +- tools/CMakeLists.txt | 2 +- tools/big2gribex.c | 2 +- tools/bufr_3to4.c | 2 +- tools/bufr_compare.c | 2 +- tools/bufr_copy.c | 2 +- tools/bufr_dump.c | 2 +- tools/bufr_filter.c | 2 +- tools/bufr_get.c | 2 +- tools/bufr_index_build.c | 2 +- tools/bufr_ls.c | 2 +- tools/bufr_set.c | 2 +- tools/bufr_split_by_rdbSubtype.c | 2 +- tools/codes_count.c | 2 +- tools/codes_info.c | 2 +- tools/codes_parser.c | 2 +- tools/codes_split_file.c | 2 +- tools/compile.c | 2 +- tools/deprecated/all_keys.c | 2 +- tools/deprecated/dump.c | 2 +- tools/deprecated/dumpload.c | 2 +- tools/deprecated/grib_add.c | 2 +- tools/deprecated/grib_cmp.c | 2 +- tools/deprecated/grib_convert.c | 2 +- tools/deprecated/grib_corruption_check.c | 2 +- tools/deprecated/grib_debug.c | 2 +- tools/deprecated/grib_diff.c | 2 +- tools/deprecated/grib_distance.c | 2 +- tools/deprecated/grib_error.c | 2 +- tools/deprecated/grib_gen.c | 2 +- tools/deprecated/grib_keys.c | 2 +- tools/deprecated/grib_moments.c | 2 +- tools/deprecated/grib_packing.c | 2 +- tools/deprecated/grib_points.c | 2 +- tools/gaussian.c | 2 +- tools/gg_sub_area_check.c | 2 +- tools/grib2ppm.c | 2 +- tools/grib_2_request.c | 2 +- tools/grib_check_gaussian_grid.c | 2 +- tools/grib_compare.c | 2 +- tools/grib_copy.c | 2 +- tools/grib_dump.c | 2 +- tools/grib_filter.c | 2 +- tools/grib_filter.h | 2 +- tools/grib_get.c | 2 +- tools/grib_get_data.c | 2 +- tools/grib_histogram.c | 2 +- tools/grib_index_build.c | 2 +- tools/grib_ls.c | 2 +- tools/grib_merge.c | 2 +- tools/grib_nearest_land.c | 2 +- tools/grib_options.c | 2 +- tools/grib_repair.c | 2 +- tools/grib_set.c | 2 +- tools/grib_to_json.c | 2 +- tools/grib_to_netcdf.c | 2 +- tools/grib_tools.c | 2 +- tools/grib_tools.h | 2 +- tools/gts_compare.c | 2 +- tools/gts_copy.c | 2 +- tools/gts_dump.c | 2 +- tools/gts_filter.c | 2 +- tools/gts_get.c | 2 +- tools/gts_ls.c | 2 +- tools/list_keys.c | 2 +- tools/load.c | 2 +- tools/load.h | 2 +- tools/mars_request.c | 2 +- tools/metar_compare.c | 2 +- tools/metar_copy.c | 2 +- tools/metar_dump.c | 2 +- tools/metar_filter.c | 2 +- tools/metar_get.c | 2 +- tools/metar_ls.c | 2 +- tools/taf_dump.c | 2 +- tools/taf_filter.c | 2 +- tools/taf_get.c | 2 +- tools/taf_ls.c | 2 +- tools/test.c | 2 +- tools/wingetopt.c | 2 +- tools/wingetopt.h | 2 +- tools/xref.c | 2 +- version.sh | 2 +- 1394 files changed, 1394 insertions(+), 1394 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ac1069483..772268a14 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ # -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/NOTICE b/NOTICE index df9c976f1..27d9f85aa 100644 --- a/NOTICE +++ b/NOTICE @@ -1,5 +1,5 @@ ECMWF ecCodes -Copyright 2005-2018 ECMWF. +Copyright 2005-2019 ECMWF. This product includes software developed at ECMWF (http://www.ecmwf.int). diff --git a/README.md b/README.md index ecb5f21f9..fc4afc7bf 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ If you encounter any problems please send an e-mail with your problem to: COPYRIGHT AND LICENSE ---------------------- -Copyright 2005-2018 ECMWF. +Copyright 2005-2019 ECMWF. This software is licensed under the terms of the Apache Licence Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/boot.def b/definitions/boot.def index a0b540ef0..15ff30351 100644 --- a/definitions/boot.def +++ b/definitions/boot.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/budg/boot.def b/definitions/budg/boot.def index b8156801d..0d0425db4 100644 --- a/definitions/budg/boot.def +++ b/definitions/budg/boot.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/budg/mars_labeling.def b/definitions/budg/mars_labeling.def index 8fa2063f7..56cffed33 100644 --- a/definitions/budg/mars_labeling.def +++ b/definitions/budg/mars_labeling.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/budg/section.1.def b/definitions/budg/section.1.def index f202eb1a2..de06ed58b 100644 --- a/definitions/budg/section.1.def +++ b/definitions/budg/section.1.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/budg/section.4.def b/definitions/budg/section.4.def index bb7366b28..8aa36257f 100644 --- a/definitions/budg/section.4.def +++ b/definitions/budg/section.4.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/bufr/boot.def b/definitions/bufr/boot.def index 0c3f5b413..5a94054c5 100644 --- a/definitions/bufr/boot.def +++ b/definitions/bufr/boot.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/bufr/boot_edition_0.def b/definitions/bufr/boot_edition_0.def index eff274d45..c6e327579 100644 --- a/definitions/bufr/boot_edition_0.def +++ b/definitions/bufr/boot_edition_0.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/bufr/boot_edition_1.def b/definitions/bufr/boot_edition_1.def index 344ce87ad..a9d68ab1a 100644 --- a/definitions/bufr/boot_edition_1.def +++ b/definitions/bufr/boot_edition_1.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/bufr/boot_edition_2.def b/definitions/bufr/boot_edition_2.def index 50be7b81e..95c831838 100644 --- a/definitions/bufr/boot_edition_2.def +++ b/definitions/bufr/boot_edition_2.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/bufr/boot_edition_3.def b/definitions/bufr/boot_edition_3.def index 7b3fa7abf..e6ad7a21e 100644 --- a/definitions/bufr/boot_edition_3.def +++ b/definitions/bufr/boot_edition_3.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/bufr/boot_edition_4.def b/definitions/bufr/boot_edition_4.def index 310f88dbd..466aa07b2 100644 --- a/definitions/bufr/boot_edition_4.def +++ b/definitions/bufr/boot_edition_4.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/bufr/old_section.1.def b/definitions/bufr/old_section.1.def index 74efd5803..976607bfa 100644 --- a/definitions/bufr/old_section.1.def +++ b/definitions/bufr/old_section.1.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/bufr/section.0.def b/definitions/bufr/section.0.def index f5f44d4dd..7fd9d6bd7 100644 --- a/definitions/bufr/section.0.def +++ b/definitions/bufr/section.0.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/bufr/section.1.1.def b/definitions/bufr/section.1.1.def index c7b8e9b90..91c3db205 100644 --- a/definitions/bufr/section.1.1.def +++ b/definitions/bufr/section.1.1.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/bufr/section.1.2.def b/definitions/bufr/section.1.2.def index bb146b221..18c860c6e 100644 --- a/definitions/bufr/section.1.2.def +++ b/definitions/bufr/section.1.2.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/bufr/section.1.3.def b/definitions/bufr/section.1.3.def index ac16dc6bb..ca174510a 100644 --- a/definitions/bufr/section.1.3.def +++ b/definitions/bufr/section.1.3.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/bufr/section.1.4.def b/definitions/bufr/section.1.4.def index f08737043..18fb8c174 100644 --- a/definitions/bufr/section.1.4.def +++ b/definitions/bufr/section.1.4.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/bufr/section.2.def b/definitions/bufr/section.2.def index 2262e62ac..da3fd9fb0 100644 --- a/definitions/bufr/section.2.def +++ b/definitions/bufr/section.2.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/bufr/section.3.def b/definitions/bufr/section.3.def index 4e1750ad3..f7ede0427 100644 --- a/definitions/bufr/section.3.def +++ b/definitions/bufr/section.3.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/bufr/section.4.def b/definitions/bufr/section.4.def index ef90e0c21..65cc3e5e7 100644 --- a/definitions/bufr/section.4.def +++ b/definitions/bufr/section.4.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/bufr/section.5.def b/definitions/bufr/section.5.def index d89781560..df7e6bda8 100644 --- a/definitions/bufr/section.5.def +++ b/definitions/bufr/section.5.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/check_grib_defs.pl b/definitions/check_grib_defs.pl index 6760dfb14..48dc64193 100755 --- a/definitions/check_grib_defs.pl +++ b/definitions/check_grib_defs.pl @@ -1,7 +1,7 @@ #!/usr/bin/env perl # -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/common/statistics_grid.def b/definitions/common/statistics_grid.def index 06f0d4aa0..fba296d80 100644 --- a/definitions/common/statistics_grid.def +++ b/definitions/common/statistics_grid.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/common/statistics_spectral.def b/definitions/common/statistics_spectral.def index 1d34220e1..4e3f74b9b 100644 --- a/definitions/common/statistics_spectral.def +++ b/definitions/common/statistics_spectral.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/boot.def b/definitions/grib1/boot.def index dfa445cca..5824f390c 100644 --- a/definitions/grib1/boot.def +++ b/definitions/grib1/boot.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/data.grid_ieee.def b/definitions/grib1/data.grid_ieee.def index 1b19d9831..020ebe88d 100644 --- a/definitions/grib1/data.grid_ieee.def +++ b/definitions/grib1/data.grid_ieee.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/data.grid_second_order.def b/definitions/grib1/data.grid_second_order.def index 99c254e25..6a34c32b0 100644 --- a/definitions/grib1/data.grid_second_order.def +++ b/definitions/grib1/data.grid_second_order.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/data.grid_second_order_constant_width.def b/definitions/grib1/data.grid_second_order_constant_width.def index 6f5e4c77b..c9bc34c77 100644 --- a/definitions/grib1/data.grid_second_order_constant_width.def +++ b/definitions/grib1/data.grid_second_order_constant_width.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/data.grid_second_order_general_grib1.def b/definitions/grib1/data.grid_second_order_general_grib1.def index ae53bc5ed..641dee6df 100644 --- a/definitions/grib1/data.grid_second_order_general_grib1.def +++ b/definitions/grib1/data.grid_second_order_general_grib1.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/data.grid_second_order_row_by_row.def b/definitions/grib1/data.grid_second_order_row_by_row.def index 0ff9c4430..e9b2e5d78 100644 --- a/definitions/grib1/data.grid_second_order_row_by_row.def +++ b/definitions/grib1/data.grid_second_order_row_by_row.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/data.grid_simple.def b/definitions/grib1/data.grid_simple.def index e82f08cf8..86ec3be62 100644 --- a/definitions/grib1/data.grid_simple.def +++ b/definitions/grib1/data.grid_simple.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/data.grid_simple_matrix.def b/definitions/grib1/data.grid_simple_matrix.def index eb1f1a126..76876c01c 100644 --- a/definitions/grib1/data.grid_simple_matrix.def +++ b/definitions/grib1/data.grid_simple_matrix.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/data.spectral_complex.def b/definitions/grib1/data.spectral_complex.def index 872c31464..eb1e1c9f6 100644 --- a/definitions/grib1/data.spectral_complex.def +++ b/definitions/grib1/data.spectral_complex.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/data.spectral_ieee.def b/definitions/grib1/data.spectral_ieee.def index 76d585616..88b237ef0 100644 --- a/definitions/grib1/data.spectral_ieee.def +++ b/definitions/grib1/data.spectral_ieee.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/data.spectral_simple.def b/definitions/grib1/data.spectral_simple.def index ea4dd203c..bfb9eefa0 100644 --- a/definitions/grib1/data.spectral_simple.def +++ b/definitions/grib1/data.spectral_simple.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/gds_not_present_bitmap.def b/definitions/grib1/gds_not_present_bitmap.def index ade720878..5d1d3adc0 100644 --- a/definitions/grib1/gds_not_present_bitmap.def +++ b/definitions/grib1/gds_not_present_bitmap.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/grid_21.def b/definitions/grib1/grid_21.def index 72406a0f4..655607bf4 100644 --- a/definitions/grib1/grid_21.def +++ b/definitions/grib1/grid_21.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/grid_22.def b/definitions/grib1/grid_22.def index 64ac35bfc..e343b3c6d 100644 --- a/definitions/grib1/grid_22.def +++ b/definitions/grib1/grid_22.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/grid_23.def b/definitions/grib1/grid_23.def index 0ddd06881..52a31f0c1 100644 --- a/definitions/grib1/grid_23.def +++ b/definitions/grib1/grid_23.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/grid_24.def b/definitions/grib1/grid_24.def index 16004021f..a5f1935dd 100644 --- a/definitions/grib1/grid_24.def +++ b/definitions/grib1/grid_24.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/grid_25.def b/definitions/grib1/grid_25.def index 84c02ad03..99783c4e1 100644 --- a/definitions/grib1/grid_25.def +++ b/definitions/grib1/grid_25.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/grid_26.def b/definitions/grib1/grid_26.def index 68c7e9fca..3b33451e0 100644 --- a/definitions/grib1/grid_26.def +++ b/definitions/grib1/grid_26.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/grid_61.def b/definitions/grib1/grid_61.def index 401c0f108..10b4d9d2e 100644 --- a/definitions/grib1/grid_61.def +++ b/definitions/grib1/grid_61.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/grid_62.def b/definitions/grib1/grid_62.def index 94f33e892..76cdae613 100644 --- a/definitions/grib1/grid_62.def +++ b/definitions/grib1/grid_62.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/grid_63.def b/definitions/grib1/grid_63.def index 7da4889fd..a288c63bd 100644 --- a/definitions/grib1/grid_63.def +++ b/definitions/grib1/grid_63.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/grid_64.def b/definitions/grib1/grid_64.def index 853b60d3c..8e8ac4b2b 100644 --- a/definitions/grib1/grid_64.def +++ b/definitions/grib1/grid_64.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/grid_definition_0.def b/definitions/grib1/grid_definition_0.def index 838595ced..3c51fcd65 100644 --- a/definitions/grib1/grid_definition_0.def +++ b/definitions/grib1/grid_definition_0.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # GRID DEFINITION latitude/longitude grid - equidistant cylindrical or Plate Carree projection diff --git a/definitions/grib1/grid_definition_1.def b/definitions/grib1/grid_definition_1.def index 2fe6174b2..2b3508886 100644 --- a/definitions/grib1/grid_definition_1.def +++ b/definitions/grib1/grid_definition_1.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/grid_definition_10.def b/definitions/grib1/grid_definition_10.def index 2c94b3e6b..ecee84311 100644 --- a/definitions/grib1/grid_definition_10.def +++ b/definitions/grib1/grid_definition_10.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # GRID DEFINITION rotated latitude/longitude grid # grib 1 -> 2 diff --git a/definitions/grib1/grid_definition_13.def b/definitions/grib1/grid_definition_13.def index 7bbb5f0c1..8d0a38216 100644 --- a/definitions/grib1/grid_definition_13.def +++ b/definitions/grib1/grid_definition_13.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # GRID DEFINITION Oblique Lambert conformal, secant or tangent, conic or bi-polar # grib 1 -> 2 diff --git a/definitions/grib1/grid_definition_14.def b/definitions/grib1/grid_definition_14.def index dd278101d..64c21a0d4 100644 --- a/definitions/grib1/grid_definition_14.def +++ b/definitions/grib1/grid_definition_14.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # GRID DEFINITION Rotated Gaussian latitude/longitude grid # grib 1 -> 2 diff --git a/definitions/grib1/grid_definition_192.78.def b/definitions/grib1/grid_definition_192.78.def index 4383338d0..6f7e5bfd0 100755 --- a/definitions/grib1/grid_definition_192.78.def +++ b/definitions/grib1/grid_definition_192.78.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/grid_definition_192.98.def b/definitions/grib1/grid_definition_192.98.def index 89d6ed7f7..52d25ca6e 100644 --- a/definitions/grib1/grid_definition_192.98.def +++ b/definitions/grib1/grid_definition_192.98.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/grid_definition_193.98.def b/definitions/grib1/grid_definition_193.98.def index d096388e8..d277a7b87 100644 --- a/definitions/grib1/grid_definition_193.98.def +++ b/definitions/grib1/grid_definition_193.98.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/grid_definition_20.def b/definitions/grib1/grid_definition_20.def index c008b0b7c..70c7d9c1c 100644 --- a/definitions/grib1/grid_definition_20.def +++ b/definitions/grib1/grid_definition_20.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # GRID DEFINITION stretched latitude/longitude grid # grib 1 -> 2 diff --git a/definitions/grib1/grid_definition_24.def b/definitions/grib1/grid_definition_24.def index 60355ccbd..6e9b6ecb4 100644 --- a/definitions/grib1/grid_definition_24.def +++ b/definitions/grib1/grid_definition_24.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # GRID DEFINITION Stretched Gaussian latitude/longitude grid # grib 1 -> 2 diff --git a/definitions/grib1/grid_definition_3.def b/definitions/grib1/grid_definition_3.def index 418966921..a10647997 100644 --- a/definitions/grib1/grid_definition_3.def +++ b/definitions/grib1/grid_definition_3.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # GRID DEFINITION Lambert conformal, secant or tangent, conic or bi-polar # grib 1 -> 2 diff --git a/definitions/grib1/grid_definition_30.def b/definitions/grib1/grid_definition_30.def index 897c77893..ab1560774 100644 --- a/definitions/grib1/grid_definition_30.def +++ b/definitions/grib1/grid_definition_30.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # GRID DEFINITION stretched and rotated latitude/longitude grids # grib 1 -> 2 diff --git a/definitions/grib1/grid_definition_34.def b/definitions/grib1/grid_definition_34.def index 39cf90751..da4daab4c 100644 --- a/definitions/grib1/grid_definition_34.def +++ b/definitions/grib1/grid_definition_34.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # GRID DEFINITION Stretched and rotated Gaussian latitude/longitude grids # grib 1 -> 2 diff --git a/definitions/grib1/grid_definition_4.def b/definitions/grib1/grid_definition_4.def index 7889e794f..109405499 100644 --- a/definitions/grib1/grid_definition_4.def +++ b/definitions/grib1/grid_definition_4.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # GRID DEFINITION Gaussian latitude/longitude grid # grib 1 -> 2 diff --git a/definitions/grib1/grid_definition_5.def b/definitions/grib1/grid_definition_5.def index caae0bcbe..791d5950e 100644 --- a/definitions/grib1/grid_definition_5.def +++ b/definitions/grib1/grid_definition_5.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/grid_definition_50.def b/definitions/grib1/grid_definition_50.def index e6899a815..6bc67bec8 100644 --- a/definitions/grib1/grid_definition_50.def +++ b/definitions/grib1/grid_definition_50.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # GRID DEFINITION Spherical harmonic coefficients # grib 1 -> 2 diff --git a/definitions/grib1/grid_definition_60.def b/definitions/grib1/grid_definition_60.def index 3e0116d10..7cf296c16 100644 --- a/definitions/grib1/grid_definition_60.def +++ b/definitions/grib1/grid_definition_60.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # GRID DEFINITION Rotated spherical harmonic coefficients # grib 1 -> 2 diff --git a/definitions/grib1/grid_definition_70.def b/definitions/grib1/grid_definition_70.def index bf654c283..6578e61f1 100644 --- a/definitions/grib1/grid_definition_70.def +++ b/definitions/grib1/grid_definition_70.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # GRID DEFINITION Stretched spherical harmonics diff --git a/definitions/grib1/grid_definition_8.def b/definitions/grib1/grid_definition_8.def index a2f96897c..c59efca65 100644 --- a/definitions/grib1/grid_definition_8.def +++ b/definitions/grib1/grid_definition_8.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # GRID DEFINITION Albers equal area, secant or tangent, conic or bi-polar # grib 1 -> 2 diff --git a/definitions/grib1/grid_definition_80.def b/definitions/grib1/grid_definition_80.def index 527418e1d..e8871aa9f 100644 --- a/definitions/grib1/grid_definition_80.def +++ b/definitions/grib1/grid_definition_80.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # GRID DEFINITION Stretched and rotated spherical harmonic coefficients diff --git a/definitions/grib1/grid_definition_90.def b/definitions/grib1/grid_definition_90.def index d6dc9f69d..f666cbb9e 100644 --- a/definitions/grib1/grid_definition_90.def +++ b/definitions/grib1/grid_definition_90.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/grid_definition_gaussian.def b/definitions/grib1/grid_definition_gaussian.def index 58d2fbefd..ca313cd99 100644 --- a/definitions/grib1/grid_definition_gaussian.def +++ b/definitions/grib1/grid_definition_gaussian.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/grid_definition_lambert.def b/definitions/grib1/grid_definition_lambert.def index d524de608..61a46e7d7 100644 --- a/definitions/grib1/grid_definition_lambert.def +++ b/definitions/grib1/grid_definition_lambert.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/grid_definition_latlon.def b/definitions/grib1/grid_definition_latlon.def index a6d8c3c06..e1d03d0e0 100644 --- a/definitions/grib1/grid_definition_latlon.def +++ b/definitions/grib1/grid_definition_latlon.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/grid_definition_spherical_harmonics.def b/definitions/grib1/grid_definition_spherical_harmonics.def index 492cee75a..f9ad288f2 100644 --- a/definitions/grib1/grid_definition_spherical_harmonics.def +++ b/definitions/grib1/grid_definition_spherical_harmonics.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/grid_first_last_resandcomp.def b/definitions/grib1/grid_first_last_resandcomp.def index 4c948506a..1ac7a4233 100644 --- a/definitions/grib1/grid_first_last_resandcomp.def +++ b/definitions/grib1/grid_first_last_resandcomp.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/grid_rotation.def b/definitions/grib1/grid_rotation.def index 495d60842..d65e58e14 100644 --- a/definitions/grib1/grid_rotation.def +++ b/definitions/grib1/grid_rotation.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/grid_stretching.def b/definitions/grib1/grid_stretching.def index a26b29313..2e52cf0b6 100644 --- a/definitions/grib1/grid_stretching.def +++ b/definitions/grib1/grid_stretching.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.1.def b/definitions/grib1/local.1.def index 24bd1ed3a..f4774c79d 100644 --- a/definitions/grib1/local.1.def +++ b/definitions/grib1/local.1.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # Definition for BOM , same as ECWF unsigned[1] localDefinitionNumber = 1 : dump; diff --git a/definitions/grib1/local.214.1.def b/definitions/grib1/local.214.1.def index 627c4e0fc..9ec0998e2 100644 --- a/definitions/grib1/local.214.1.def +++ b/definitions/grib1/local.214.1.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.214.244.def b/definitions/grib1/local.214.244.def index 4ce78d9ec..c43428f89 100644 --- a/definitions/grib1/local.214.244.def +++ b/definitions/grib1/local.214.244.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.214.245.def b/definitions/grib1/local.214.245.def index e1bcf2c0c..0fa443265 100644 --- a/definitions/grib1/local.214.245.def +++ b/definitions/grib1/local.214.245.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.253.def b/definitions/grib1/local.253.def index 77d3953c8..9aed270c7 100644 --- a/definitions/grib1/local.253.def +++ b/definitions/grib1/local.253.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. label "local.253.def"; diff --git a/definitions/grib1/local.254.def b/definitions/grib1/local.254.def index c86215229..7b64af437 100644 --- a/definitions/grib1/local.254.def +++ b/definitions/grib1/local.254.def @@ -1,3 +1,3 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. label "EUMETSAT local definition (unknown)"; diff --git a/definitions/grib1/local.46.def b/definitions/grib1/local.46.def index 599d99ba6..41896029a 100644 --- a/definitions/grib1/local.46.def +++ b/definitions/grib1/local.46.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. label "CPTEC local definition"; # Same as NCEP diff --git a/definitions/grib1/local.54.def b/definitions/grib1/local.54.def index 89e7f440f..aa3e30873 100644 --- a/definitions/grib1/local.54.def +++ b/definitions/grib1/local.54.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.7.1.def b/definitions/grib1/local.7.1.def index 01458ce17..f7d484818 100644 --- a/definitions/grib1/local.7.1.def +++ b/definitions/grib1/local.7.1.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.80.def b/definitions/grib1/local.80.def index ffbb59fbf..b981f7dd3 100644 --- a/definitions/grib1/local.80.def +++ b/definitions/grib1/local.80.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. #Local definition for Rome label "Local definition for Rome CNMC"; diff --git a/definitions/grib1/local.98.1.def b/definitions/grib1/local.98.1.def index 40264af00..363979b55 100644 --- a/definitions/grib1/local.98.1.def +++ b/definitions/grib1/local.98.1.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.10.def b/definitions/grib1/local.98.10.def index 180dcb846..b606c38a9 100644 --- a/definitions/grib1/local.98.10.def +++ b/definitions/grib1/local.98.10.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.11.def b/definitions/grib1/local.98.11.def index fa8815e48..8d66795f7 100644 --- a/definitions/grib1/local.98.11.def +++ b/definitions/grib1/local.98.11.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.13.def b/definitions/grib1/local.98.13.def index 445fd2a84..91a57817b 100644 --- a/definitions/grib1/local.98.13.def +++ b/definitions/grib1/local.98.13.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.14.def b/definitions/grib1/local.98.14.def index 76e1bb4ac..c85e0a865 100644 --- a/definitions/grib1/local.98.14.def +++ b/definitions/grib1/local.98.14.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.15.def b/definitions/grib1/local.98.15.def index 8659af698..bd0b8e7dd 100644 --- a/definitions/grib1/local.98.15.def +++ b/definitions/grib1/local.98.15.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.16.def b/definitions/grib1/local.98.16.def index d6aaae30b..cf4d0b43b 100644 --- a/definitions/grib1/local.98.16.def +++ b/definitions/grib1/local.98.16.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.17.def b/definitions/grib1/local.98.17.def index 957356025..7bd1848d7 100644 --- a/definitions/grib1/local.98.17.def +++ b/definitions/grib1/local.98.17.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.18.def b/definitions/grib1/local.98.18.def index 6a0ac3862..bf710a2b4 100644 --- a/definitions/grib1/local.98.18.def +++ b/definitions/grib1/local.98.18.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.19.def b/definitions/grib1/local.98.19.def index 0208753ee..3eeb4eaab 100644 --- a/definitions/grib1/local.98.19.def +++ b/definitions/grib1/local.98.19.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.190.def b/definitions/grib1/local.98.190.def index fabe01b2c..ec934dd9b 100644 --- a/definitions/grib1/local.98.190.def +++ b/definitions/grib1/local.98.190.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.191.def b/definitions/grib1/local.98.191.def index 495534361..af0db62f5 100644 --- a/definitions/grib1/local.98.191.def +++ b/definitions/grib1/local.98.191.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.192.def b/definitions/grib1/local.98.192.def index 7fdd73c95..96421c382 100644 --- a/definitions/grib1/local.98.192.def +++ b/definitions/grib1/local.98.192.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.2.def b/definitions/grib1/local.98.2.def index c9f1f003b..11c51c8e3 100644 --- a/definitions/grib1/local.98.2.def +++ b/definitions/grib1/local.98.2.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.20.def b/definitions/grib1/local.98.20.def index c9f8e01c5..1d5c5c60e 100644 --- a/definitions/grib1/local.98.20.def +++ b/definitions/grib1/local.98.20.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.21.def b/definitions/grib1/local.98.21.def index e38bf7f7b..3ef3b9506 100644 --- a/definitions/grib1/local.98.21.def +++ b/definitions/grib1/local.98.21.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.218.def b/definitions/grib1/local.98.218.def index 49644e558..300d1910a 100644 --- a/definitions/grib1/local.98.218.def +++ b/definitions/grib1/local.98.218.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.23.def b/definitions/grib1/local.98.23.def index a8f78b7f5..038c9528c 100644 --- a/definitions/grib1/local.98.23.def +++ b/definitions/grib1/local.98.23.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.24.def b/definitions/grib1/local.98.24.def index 28ff5d404..f0cd3967d 100644 --- a/definitions/grib1/local.98.24.def +++ b/definitions/grib1/local.98.24.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.25.def b/definitions/grib1/local.98.25.def index 0a1df8a3f..c0de12fe1 100644 --- a/definitions/grib1/local.98.25.def +++ b/definitions/grib1/local.98.25.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.26.def b/definitions/grib1/local.98.26.def index 1dc573308..64719d82f 100644 --- a/definitions/grib1/local.98.26.def +++ b/definitions/grib1/local.98.26.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.27.def b/definitions/grib1/local.98.27.def index d5e872488..f7027dc40 100644 --- a/definitions/grib1/local.98.27.def +++ b/definitions/grib1/local.98.27.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.28.def b/definitions/grib1/local.98.28.def index ed2a018cc..4ff717ce8 100644 --- a/definitions/grib1/local.98.28.def +++ b/definitions/grib1/local.98.28.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.29.def b/definitions/grib1/local.98.29.def index a87215506..3ce908c40 100644 --- a/definitions/grib1/local.98.29.def +++ b/definitions/grib1/local.98.29.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.3.def b/definitions/grib1/local.98.3.def index 18461be54..e419adb47 100644 --- a/definitions/grib1/local.98.3.def +++ b/definitions/grib1/local.98.3.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.30.def b/definitions/grib1/local.98.30.def index 9f7b53df2..41b4db4b3 100644 --- a/definitions/grib1/local.98.30.def +++ b/definitions/grib1/local.98.30.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.31.def b/definitions/grib1/local.98.31.def index 4c6ccbd44..355281cdc 100644 --- a/definitions/grib1/local.98.31.def +++ b/definitions/grib1/local.98.31.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.32.def b/definitions/grib1/local.98.32.def index a794f8e6b..891f36ace 100644 --- a/definitions/grib1/local.98.32.def +++ b/definitions/grib1/local.98.32.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.33.def b/definitions/grib1/local.98.33.def index 2ad477ffe..e8f662ccd 100644 --- a/definitions/grib1/local.98.33.def +++ b/definitions/grib1/local.98.33.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.35.def b/definitions/grib1/local.98.35.def index 40ff72bb8..7d6f32f15 100644 --- a/definitions/grib1/local.98.35.def +++ b/definitions/grib1/local.98.35.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.36.def b/definitions/grib1/local.98.36.def index 9a54e5d1a..310987eaf 100644 --- a/definitions/grib1/local.98.36.def +++ b/definitions/grib1/local.98.36.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.37.def b/definitions/grib1/local.98.37.def index dc6f0c056..7015246a8 100644 --- a/definitions/grib1/local.98.37.def +++ b/definitions/grib1/local.98.37.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.38.def b/definitions/grib1/local.98.38.def index 652b22225..0514d6515 100644 --- a/definitions/grib1/local.98.38.def +++ b/definitions/grib1/local.98.38.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.39.def b/definitions/grib1/local.98.39.def index b9d309eb5..40be3eb70 100644 --- a/definitions/grib1/local.98.39.def +++ b/definitions/grib1/local.98.39.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.4.def b/definitions/grib1/local.98.4.def index 3f66b4118..367b02806 100644 --- a/definitions/grib1/local.98.4.def +++ b/definitions/grib1/local.98.4.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.40.def b/definitions/grib1/local.98.40.def index c2a6ee85d..06ddba6c8 100644 --- a/definitions/grib1/local.98.40.def +++ b/definitions/grib1/local.98.40.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.5.def b/definitions/grib1/local.98.5.def index 4cbd84fdd..f1da72350 100644 --- a/definitions/grib1/local.98.5.def +++ b/definitions/grib1/local.98.5.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.50.def b/definitions/grib1/local.98.50.def index 81579db9a..90e774c0f 100644 --- a/definitions/grib1/local.98.50.def +++ b/definitions/grib1/local.98.50.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.6.def b/definitions/grib1/local.98.6.def index 42bf98aca..54c92008b 100644 --- a/definitions/grib1/local.98.6.def +++ b/definitions/grib1/local.98.6.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.7.def b/definitions/grib1/local.98.7.def index 633026163..1a8b34722 100644 --- a/definitions/grib1/local.98.7.def +++ b/definitions/grib1/local.98.7.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.8.def b/definitions/grib1/local.98.8.def index 53028bf25..530246c67 100644 --- a/definitions/grib1/local.98.8.def +++ b/definitions/grib1/local.98.8.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.9.def b/definitions/grib1/local.98.9.def index 41eee3392..9af69d3e3 100644 --- a/definitions/grib1/local.98.9.def +++ b/definitions/grib1/local.98.9.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local.98.def b/definitions/grib1/local.98.def index 00627ea40..c54d53c4f 100644 --- a/definitions/grib1/local.98.def +++ b/definitions/grib1/local.98.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. unsigned[1] localDefinitionNumber = 1 : dump,edition_specific,no_copy; template localDefinition "grib1/local.[centre:l].[localDefinitionNumber:l].def"; diff --git a/definitions/grib1/local_no_mars.98.1.def b/definitions/grib1/local_no_mars.98.1.def index efbb56468..5bdd5a604 100644 --- a/definitions/grib1/local_no_mars.98.1.def +++ b/definitions/grib1/local_no_mars.98.1.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/local_no_mars.98.24.def b/definitions/grib1/local_no_mars.98.24.def index 77cfe7946..73f58c3ee 100644 --- a/definitions/grib1/local_no_mars.98.24.def +++ b/definitions/grib1/local_no_mars.98.24.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/mars_labeling.23.def b/definitions/grib1/mars_labeling.23.def index 6d1554b27..42295f9ea 100644 --- a/definitions/grib1/mars_labeling.23.def +++ b/definitions/grib1/mars_labeling.23.def @@ -1 +1 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. diff --git a/definitions/grib1/mars_labeling.4.def b/definitions/grib1/mars_labeling.4.def index 9088c1f74..4dc25ddd0 100644 --- a/definitions/grib1/mars_labeling.4.def +++ b/definitions/grib1/mars_labeling.4.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/mars_labeling.def b/definitions/grib1/mars_labeling.def index 63a01f378..c387ef5e0 100644 --- a/definitions/grib1/mars_labeling.def +++ b/definitions/grib1/mars_labeling.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/predefined_grid.def b/definitions/grib1/predefined_grid.def index 0933e6fc7..4f5db1dd5 100644 --- a/definitions/grib1/predefined_grid.def +++ b/definitions/grib1/predefined_grid.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/resolution_flags.def b/definitions/grib1/resolution_flags.def index 4edf29662..3e18ba934 100644 --- a/definitions/grib1/resolution_flags.def +++ b/definitions/grib1/resolution_flags.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/scanning_mode.def b/definitions/grib1/scanning_mode.def index 9ac268f34..ec0610d1b 100644 --- a/definitions/grib1/scanning_mode.def +++ b/definitions/grib1/scanning_mode.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/section.0.def b/definitions/grib1/section.0.def index 3c451e5a2..1965b8610 100644 --- a/definitions/grib1/section.0.def +++ b/definitions/grib1/section.0.def @@ -1,3 +1,3 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. label "_empty"; diff --git a/definitions/grib1/section.1.def b/definitions/grib1/section.1.def index 2f6790255..7a05c1d4b 100644 --- a/definitions/grib1/section.1.def +++ b/definitions/grib1/section.1.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/section.2.def b/definitions/grib1/section.2.def index 690923e39..6d435dd01 100644 --- a/definitions/grib1/section.2.def +++ b/definitions/grib1/section.2.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/section.3.def b/definitions/grib1/section.3.def index 51389f544..43255d432 100644 --- a/definitions/grib1/section.3.def +++ b/definitions/grib1/section.3.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/section.4.def b/definitions/grib1/section.4.def index 663258917..00966af9a 100644 --- a/definitions/grib1/section.4.def +++ b/definitions/grib1/section.4.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib1/section.5.def b/definitions/grib1/section.5.def index 3800feaa7..7fc5f995b 100644 --- a/definitions/grib1/section.5.def +++ b/definitions/grib1/section.5.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. position offsetSection5; constant section5Length=4; diff --git a/definitions/grib2/boot.def b/definitions/grib2/boot.def index bb0030c66..c8da2d42c 100644 --- a/definitions/grib2/boot.def +++ b/definitions/grib2/boot.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/boot_multifield.def b/definitions/grib2/boot_multifield.def index a1eeba83f..8e8ec3066 100644 --- a/definitions/grib2/boot_multifield.def +++ b/definitions/grib2/boot_multifield.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/local.98.41.def b/definitions/grib2/local.98.41.def index 2fe09bfea..576b4690b 100644 --- a/definitions/grib2/local.98.41.def +++ b/definitions/grib2/local.98.41.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/local.98.42.def b/definitions/grib2/local.98.42.def index a555a0dd3..39ce7960d 100644 --- a/definitions/grib2/local.98.42.def +++ b/definitions/grib2/local.98.42.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/local.98.5.def b/definitions/grib2/local.98.5.def index eb7df53d9..e06d51f60 100644 --- a/definitions/grib2/local.98.5.def +++ b/definitions/grib2/local.98.5.def @@ -1,3 +1,3 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. label "_empty section"; diff --git a/definitions/grib2/local.98.7.def b/definitions/grib2/local.98.7.def index 935299a6d..42de2e798 100644 --- a/definitions/grib2/local.98.7.def +++ b/definitions/grib2/local.98.7.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/local.98.9.def b/definitions/grib2/local.98.9.def index 75dd2ae7a..60da0fd00 100644 --- a/definitions/grib2/local.98.9.def +++ b/definitions/grib2/local.98.9.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/mars_labeling.def b/definitions/grib2/mars_labeling.def index 6b1d8b623..189e0259b 100644 --- a/definitions/grib2/mars_labeling.def +++ b/definitions/grib2/mars_labeling.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/meta.def b/definitions/grib2/meta.def index fab3fa312..2f4ef7ba2 100644 --- a/definitions/grib2/meta.def +++ b/definitions/grib2/meta.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/parameters.def b/definitions/grib2/parameters.def index 4c75baa62..6104d79e5 100644 --- a/definitions/grib2/parameters.def +++ b/definitions/grib2/parameters.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/products_0.def b/definitions/grib2/products_0.def index becfb2029..900434965 100644 --- a/definitions/grib2/products_0.def +++ b/definitions/grib2/products_0.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # Operational products diff --git a/definitions/grib2/products_1.def b/definitions/grib2/products_1.def index 6c22b6c58..0caf0d7fd 100644 --- a/definitions/grib2/products_1.def +++ b/definitions/grib2/products_1.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # Operationl test products diff --git a/definitions/grib2/products_2.def b/definitions/grib2/products_2.def index 31fe75bfa..a12158642 100644 --- a/definitions/grib2/products_2.def +++ b/definitions/grib2/products_2.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # Research products diff --git a/definitions/grib2/products_3.def b/definitions/grib2/products_3.def index c64d86a44..ce5461f62 100644 --- a/definitions/grib2/products_3.def +++ b/definitions/grib2/products_3.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # Re-analysis products diff --git a/definitions/grib2/products_4.def b/definitions/grib2/products_4.def index 94dbcb812..9cb9fffc4 100644 --- a/definitions/grib2/products_4.def +++ b/definitions/grib2/products_4.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # Tigge constant marsExpver = 'prod'; diff --git a/definitions/grib2/products_5.def b/definitions/grib2/products_5.def index 10499ac26..80e5f6fbd 100644 --- a/definitions/grib2/products_5.def +++ b/definitions/grib2/products_5.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # Tigge constant marsExpver = 'test'; diff --git a/definitions/grib2/products_6.def b/definitions/grib2/products_6.def index 780096cc0..3f5b045e3 100644 --- a/definitions/grib2/products_6.def +++ b/definitions/grib2/products_6.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # S2S constant marsExpver = 'prod'; diff --git a/definitions/grib2/products_7.def b/definitions/grib2/products_7.def index d22bc0d6c..eab672fd2 100644 --- a/definitions/grib2/products_7.def +++ b/definitions/grib2/products_7.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # S2S test constant marsExpver = 'test'; diff --git a/definitions/grib2/products_8.def b/definitions/grib2/products_8.def index 3321d2a9a..a71100618 100644 --- a/definitions/grib2/products_8.def +++ b/definitions/grib2/products_8.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # Uncertainties in ensembles of regional re-analysis project (UERRA) constant marsExpver = 'prod'; diff --git a/definitions/grib2/products_9.def b/definitions/grib2/products_9.def index be2b9692a..a19dd0f41 100644 --- a/definitions/grib2/products_9.def +++ b/definitions/grib2/products_9.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # Uncertainties in ensembles of regional re-analysis project test (UERRA) constant marsExpver = 'test'; diff --git a/definitions/grib2/products_s2s.def b/definitions/grib2/products_s2s.def index c1c323af2..ce034e8ec 100644 --- a/definitions/grib2/products_s2s.def +++ b/definitions/grib2/products_s2s.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/products_tigge.def b/definitions/grib2/products_tigge.def index 409c9650b..00597a1e9 100644 --- a/definitions/grib2/products_tigge.def +++ b/definitions/grib2/products_tigge.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/products_uerra.def b/definitions/grib2/products_uerra.def index 040f617bf..c60223f3f 100644 --- a/definitions/grib2/products_uerra.def +++ b/definitions/grib2/products_uerra.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/rules.def b/definitions/grib2/rules.def index fb9f0ef79..e369e9dd3 100644 --- a/definitions/grib2/rules.def +++ b/definitions/grib2/rules.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/section.0.def b/definitions/grib2/section.0.def index 93d43ca9b..4065c9ada 100644 --- a/definitions/grib2/section.0.def +++ b/definitions/grib2/section.0.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/section.1.def b/definitions/grib2/section.1.def index a90201bfa..557fbb8cb 100644 --- a/definitions/grib2/section.1.def +++ b/definitions/grib2/section.1.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/section.2.def b/definitions/grib2/section.2.def index bb7fcd12d..fe788c798 100644 --- a/definitions/grib2/section.2.def +++ b/definitions/grib2/section.2.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/section.3.def b/definitions/grib2/section.3.def index 833132e8e..43a53331e 100644 --- a/definitions/grib2/section.3.def +++ b/definitions/grib2/section.3.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/section.4.def b/definitions/grib2/section.4.def index a4e389254..2a249de11 100644 --- a/definitions/grib2/section.4.def +++ b/definitions/grib2/section.4.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/section.5.def b/definitions/grib2/section.5.def index 0f51a97d8..1faa6f621 100644 --- a/definitions/grib2/section.5.def +++ b/definitions/grib2/section.5.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/section.6.def b/definitions/grib2/section.6.def index d8e0d0cc9..c81c273fb 100644 --- a/definitions/grib2/section.6.def +++ b/definitions/grib2/section.6.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/section.7.def b/definitions/grib2/section.7.def index c65aebfd5..95ddc41f6 100644 --- a/definitions/grib2/section.7.def +++ b/definitions/grib2/section.7.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/section.8.def b/definitions/grib2/section.8.def index 244b1edc2..5ba5062ba 100644 --- a/definitions/grib2/section.8.def +++ b/definitions/grib2/section.8.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/sections.def b/definitions/grib2/sections.def index 9374d4f69..cadd03b67 100644 --- a/definitions/grib2/sections.def +++ b/definitions/grib2/sections.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.1.0.def b/definitions/grib2/template.1.0.def index 7d598b2d8..885d921ce 100644 --- a/definitions/grib2/template.1.0.def +++ b/definitions/grib2/template.1.0.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # TEMPLATE 1.0, Calendar Definition diff --git a/definitions/grib2/template.1.1.def b/definitions/grib2/template.1.1.def index 03b7521e0..b01b45817 100644 --- a/definitions/grib2/template.1.1.def +++ b/definitions/grib2/template.1.1.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # TEMPLATE 1.1, Paleontological Offset diff --git a/definitions/grib2/template.1.2.def b/definitions/grib2/template.1.2.def index 63c754a05..644c04611 100644 --- a/definitions/grib2/template.1.2.def +++ b/definitions/grib2/template.1.2.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # TEMPLATE 1.2, Calendar Definition and Paleontological Offset diff --git a/definitions/grib2/template.1.calendar.def b/definitions/grib2/template.1.calendar.def index f66c26b78..3da8621e7 100644 --- a/definitions/grib2/template.1.calendar.def +++ b/definitions/grib2/template.1.calendar.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # Type of Calendar (see Code Table 1.6) codetable[1] typeOfCalendar ('1.6.table',masterDir,localDir) = 255 : dump,no_copy,edition_specific; diff --git a/definitions/grib2/template.1.offset.def b/definitions/grib2/template.1.offset.def index a2055b9e4..3905acfe2 100644 --- a/definitions/grib2/template.1.offset.def +++ b/definitions/grib2/template.1.offset.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.0.def b/definitions/grib2/template.3.0.def index ddc80838d..75e0cf09a 100644 --- a/definitions/grib2/template.3.0.def +++ b/definitions/grib2/template.3.0.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # TEMPLATE 3.0, Latitude/longitude (or equidistant cylindrical, or Plate Carree) diff --git a/definitions/grib2/template.3.1.def b/definitions/grib2/template.3.1.def index d0c680494..791e5f1a4 100644 --- a/definitions/grib2/template.3.1.def +++ b/definitions/grib2/template.3.1.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # TEMPLATE 3.1, Rotated Latitude/longitude (or equidistant cylindrical, or Plate Carree) diff --git a/definitions/grib2/template.3.10.def b/definitions/grib2/template.3.10.def index ca7af925f..6570a5062 100644 --- a/definitions/grib2/template.3.10.def +++ b/definitions/grib2/template.3.10.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.100.def b/definitions/grib2/template.3.100.def index 00c95192d..02fc39d6b 100644 --- a/definitions/grib2/template.3.100.def +++ b/definitions/grib2/template.3.100.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.1000.def b/definitions/grib2/template.3.1000.def index 8cb9ff55f..9cae69bea 100644 --- a/definitions/grib2/template.3.1000.def +++ b/definitions/grib2/template.3.1000.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.101.def b/definitions/grib2/template.3.101.def index 74c76f20d..4168145fe 100644 --- a/definitions/grib2/template.3.101.def +++ b/definitions/grib2/template.3.101.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.110.def b/definitions/grib2/template.3.110.def index da4461a19..408ac64ed 100644 --- a/definitions/grib2/template.3.110.def +++ b/definitions/grib2/template.3.110.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.1100.def b/definitions/grib2/template.3.1100.def index 0b43c40ec..6dd25c28e 100644 --- a/definitions/grib2/template.3.1100.def +++ b/definitions/grib2/template.3.1100.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.12.def b/definitions/grib2/template.3.12.def index 51e5d5291..f3772224e 100644 --- a/definitions/grib2/template.3.12.def +++ b/definitions/grib2/template.3.12.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.120.def b/definitions/grib2/template.3.120.def index a3818e678..e44c49e95 100644 --- a/definitions/grib2/template.3.120.def +++ b/definitions/grib2/template.3.120.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.1200.def b/definitions/grib2/template.3.1200.def index b977d1fe0..975d8f2de 100644 --- a/definitions/grib2/template.3.1200.def +++ b/definitions/grib2/template.3.1200.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.130.def b/definitions/grib2/template.3.130.def index 69cee5a08..2184800a5 100644 --- a/definitions/grib2/template.3.130.def +++ b/definitions/grib2/template.3.130.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.140.def b/definitions/grib2/template.3.140.def index 5e679895f..8d86b6dca 100644 --- a/definitions/grib2/template.3.140.def +++ b/definitions/grib2/template.3.140.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.2.def b/definitions/grib2/template.3.2.def index 15175d4e3..5739ea9a1 100644 --- a/definitions/grib2/template.3.2.def +++ b/definitions/grib2/template.3.2.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # TEMPLATE 3.2, Stretched Latitude/longitude (or equidistant cylindrical, or Plate Carree) diff --git a/definitions/grib2/template.3.20.def b/definitions/grib2/template.3.20.def index 948d98840..51d23df20 100644 --- a/definitions/grib2/template.3.20.def +++ b/definitions/grib2/template.3.20.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.3.def b/definitions/grib2/template.3.3.def index 151658a88..5f561d0f2 100644 --- a/definitions/grib2/template.3.3.def +++ b/definitions/grib2/template.3.3.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # TEMPLATE 3.3, Stretched and Rotated Latitude/longitude (or equidistant cylindrical, or Plate Carree) diff --git a/definitions/grib2/template.3.30.def b/definitions/grib2/template.3.30.def index f6db50628..fb556b48c 100644 --- a/definitions/grib2/template.3.30.def +++ b/definitions/grib2/template.3.30.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.31.def b/definitions/grib2/template.3.31.def index bfda27d04..6d494abde 100644 --- a/definitions/grib2/template.3.31.def +++ b/definitions/grib2/template.3.31.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.4.def b/definitions/grib2/template.3.4.def index 28a14248a..e7ebaeba2 100644 --- a/definitions/grib2/template.3.4.def +++ b/definitions/grib2/template.3.4.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # TEMPLATE 3.4, Variable resolution latitude/longitude diff --git a/definitions/grib2/template.3.40.def b/definitions/grib2/template.3.40.def index 8f083595c..5e38fa8b1 100644 --- a/definitions/grib2/template.3.40.def +++ b/definitions/grib2/template.3.40.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # TEMPLATE 3.40, Gaussian latitude/longitude diff --git a/definitions/grib2/template.3.41.def b/definitions/grib2/template.3.41.def index 6ebcb0214..e302b8f86 100644 --- a/definitions/grib2/template.3.41.def +++ b/definitions/grib2/template.3.41.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # TEMPLATE 3.41, Rotated Gaussian latitude/longitude diff --git a/definitions/grib2/template.3.42.def b/definitions/grib2/template.3.42.def index 60db69f7a..4053a0486 100644 --- a/definitions/grib2/template.3.42.def +++ b/definitions/grib2/template.3.42.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # TEMPLATE 3.42, Stretched Gaussian latitude/longitude diff --git a/definitions/grib2/template.3.43.def b/definitions/grib2/template.3.43.def index 2db2cc3cc..bb68fddb0 100644 --- a/definitions/grib2/template.3.43.def +++ b/definitions/grib2/template.3.43.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # TEMPLATE 3.43, Stretched and rotated Gaussian latitude/longitude diff --git a/definitions/grib2/template.3.5.def b/definitions/grib2/template.3.5.def index 49493015c..b98f7b96a 100644 --- a/definitions/grib2/template.3.5.def +++ b/definitions/grib2/template.3.5.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # TEMPLATE 3.5, Variable resolution rotated latitude/longitude diff --git a/definitions/grib2/template.3.50.def b/definitions/grib2/template.3.50.def index 3ef8e1287..294c1b808 100644 --- a/definitions/grib2/template.3.50.def +++ b/definitions/grib2/template.3.50.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # TEMPLATE 3.50, Spherical harmonic coefficients diff --git a/definitions/grib2/template.3.51.def b/definitions/grib2/template.3.51.def index 9f94d43df..ce9bc3051 100644 --- a/definitions/grib2/template.3.51.def +++ b/definitions/grib2/template.3.51.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # TEMPLATE 3.51, Rotated spherical harmonic coefficients diff --git a/definitions/grib2/template.3.52.def b/definitions/grib2/template.3.52.def index 857642ad2..92c3344cd 100644 --- a/definitions/grib2/template.3.52.def +++ b/definitions/grib2/template.3.52.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # TEMPLATE 3.52, Stretched spherical harmonic coefficients diff --git a/definitions/grib2/template.3.53.def b/definitions/grib2/template.3.53.def index b8994282d..1b7f3d666 100644 --- a/definitions/grib2/template.3.53.def +++ b/definitions/grib2/template.3.53.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # TEMPLATE 3.53, Stretched and rotated spherical harmonic coefficients diff --git a/definitions/grib2/template.3.90.def b/definitions/grib2/template.3.90.def index 3bc426aac..24a70c527 100644 --- a/definitions/grib2/template.3.90.def +++ b/definitions/grib2/template.3.90.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.gaussian.def b/definitions/grib2/template.3.gaussian.def index 1db8ba404..33d3de861 100755 --- a/definitions/grib2/template.3.gaussian.def +++ b/definitions/grib2/template.3.gaussian.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.grid.def b/definitions/grib2/template.3.grid.def index deeef43a3..78c19e93b 100644 --- a/definitions/grib2/template.3.grid.def +++ b/definitions/grib2/template.3.grid.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.latlon.def b/definitions/grib2/template.3.latlon.def index 74bc10c35..bc1bee458 100755 --- a/definitions/grib2/template.3.latlon.def +++ b/definitions/grib2/template.3.latlon.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.latlon_vares.def b/definitions/grib2/template.3.latlon_vares.def index e23c44f38..cd87379b0 100755 --- a/definitions/grib2/template.3.latlon_vares.def +++ b/definitions/grib2/template.3.latlon_vares.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.resolution_flags.def b/definitions/grib2/template.3.resolution_flags.def index 43232288f..ed229ac44 100644 --- a/definitions/grib2/template.3.resolution_flags.def +++ b/definitions/grib2/template.3.resolution_flags.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.rotation.def b/definitions/grib2/template.3.rotation.def index 5e0da8c4d..6718d4365 100755 --- a/definitions/grib2/template.3.rotation.def +++ b/definitions/grib2/template.3.rotation.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.scanning_mode.def b/definitions/grib2/template.3.scanning_mode.def index 7e35f0dfc..32a3a402f 100644 --- a/definitions/grib2/template.3.scanning_mode.def +++ b/definitions/grib2/template.3.scanning_mode.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.shape_of_the_earth.def b/definitions/grib2/template.3.shape_of_the_earth.def index facd9aef1..c8d7dc72b 100755 --- a/definitions/grib2/template.3.shape_of_the_earth.def +++ b/definitions/grib2/template.3.shape_of_the_earth.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.spherical_harmonics.def b/definitions/grib2/template.3.spherical_harmonics.def index b7c6f4678..cdeb9df23 100755 --- a/definitions/grib2/template.3.spherical_harmonics.def +++ b/definitions/grib2/template.3.spherical_harmonics.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.3.stretching.def b/definitions/grib2/template.3.stretching.def index 59f4ae710..1f0b9f1f5 100755 --- a/definitions/grib2/template.3.stretching.def +++ b/definitions/grib2/template.3.stretching.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.0.def b/definitions/grib2/template.4.0.def index 394697ee2..5f7fe6463 100644 --- a/definitions/grib2/template.4.0.def +++ b/definitions/grib2/template.4.0.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.1.def b/definitions/grib2/template.4.1.def index a1e3000f4..f816242e6 100644 --- a/definitions/grib2/template.4.1.def +++ b/definitions/grib2/template.4.1.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.10.def b/definitions/grib2/template.4.10.def index de8777e0f..adcdbed66 100644 --- a/definitions/grib2/template.4.10.def +++ b/definitions/grib2/template.4.10.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.1000.def b/definitions/grib2/template.4.1000.def index d1e0cbc2f..1872ccfdd 100644 --- a/definitions/grib2/template.4.1000.def +++ b/definitions/grib2/template.4.1000.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.1001.def b/definitions/grib2/template.4.1001.def index 389abf1bb..34f5974ef 100644 --- a/definitions/grib2/template.4.1001.def +++ b/definitions/grib2/template.4.1001.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.1002.def b/definitions/grib2/template.4.1002.def index e105239d9..4518b7b6d 100644 --- a/definitions/grib2/template.4.1002.def +++ b/definitions/grib2/template.4.1002.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.11.def b/definitions/grib2/template.4.11.def index 5bd728abd..770616c7d 100644 --- a/definitions/grib2/template.4.11.def +++ b/definitions/grib2/template.4.11.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.1100.def b/definitions/grib2/template.4.1100.def index 1c99020b9..e6e7b786d 100644 --- a/definitions/grib2/template.4.1100.def +++ b/definitions/grib2/template.4.1100.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.1101.def b/definitions/grib2/template.4.1101.def index ce51894d7..6bc3db399 100644 --- a/definitions/grib2/template.4.1101.def +++ b/definitions/grib2/template.4.1101.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.12.def b/definitions/grib2/template.4.12.def index 3e71ccdfd..9ee23d286 100644 --- a/definitions/grib2/template.4.12.def +++ b/definitions/grib2/template.4.12.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.13.def b/definitions/grib2/template.4.13.def index d5352e0b6..0d012de0c 100644 --- a/definitions/grib2/template.4.13.def +++ b/definitions/grib2/template.4.13.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.14.def b/definitions/grib2/template.4.14.def index 4ab1c6a5c..fd03e1c22 100644 --- a/definitions/grib2/template.4.14.def +++ b/definitions/grib2/template.4.14.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.15.def b/definitions/grib2/template.4.15.def index eb382035f..6e2572b97 100644 --- a/definitions/grib2/template.4.15.def +++ b/definitions/grib2/template.4.15.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.2.def b/definitions/grib2/template.4.2.def index 79204568f..da90b8d20 100644 --- a/definitions/grib2/template.4.2.def +++ b/definitions/grib2/template.4.2.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.20.def b/definitions/grib2/template.4.20.def index 3159e9ea0..1df5c1a7c 100644 --- a/definitions/grib2/template.4.20.def +++ b/definitions/grib2/template.4.20.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.2000.def b/definitions/grib2/template.4.2000.def index 0332c720c..1148739f6 100644 --- a/definitions/grib2/template.4.2000.def +++ b/definitions/grib2/template.4.2000.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # test template label "_test template"; diff --git a/definitions/grib2/template.4.254.def b/definitions/grib2/template.4.254.def index 3a9ecd25e..60f98e102 100644 --- a/definitions/grib2/template.4.254.def +++ b/definitions/grib2/template.4.254.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.3.def b/definitions/grib2/template.4.3.def index 4cd9d0ed5..287598de8 100644 --- a/definitions/grib2/template.4.3.def +++ b/definitions/grib2/template.4.3.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.30.def b/definitions/grib2/template.4.30.def index e9f7e35ef..21240d0d9 100644 --- a/definitions/grib2/template.4.30.def +++ b/definitions/grib2/template.4.30.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.31.def b/definitions/grib2/template.4.31.def index 8dbe1b2fb..06d5a3ae5 100644 --- a/definitions/grib2/template.4.31.def +++ b/definitions/grib2/template.4.31.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.311.def b/definitions/grib2/template.4.311.def index 11501f837..aa18ea470 100644 --- a/definitions/grib2/template.4.311.def +++ b/definitions/grib2/template.4.311.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.32.def b/definitions/grib2/template.4.32.def index 96ece6858..5445e2897 100644 --- a/definitions/grib2/template.4.32.def +++ b/definitions/grib2/template.4.32.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.33.def b/definitions/grib2/template.4.33.def index a26c5e931..cb582d3ee 100644 --- a/definitions/grib2/template.4.33.def +++ b/definitions/grib2/template.4.33.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.34.def b/definitions/grib2/template.4.34.def index a0d88cc05..8cbb1d435 100644 --- a/definitions/grib2/template.4.34.def +++ b/definitions/grib2/template.4.34.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.35.def b/definitions/grib2/template.4.35.def index 0ec4237c2..570551b6e 100644 --- a/definitions/grib2/template.4.35.def +++ b/definitions/grib2/template.4.35.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.4.def b/definitions/grib2/template.4.4.def index da5fa6f51..37ae90c59 100644 --- a/definitions/grib2/template.4.4.def +++ b/definitions/grib2/template.4.4.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.40.def b/definitions/grib2/template.4.40.def index ea7050c10..78cb3d79a 100644 --- a/definitions/grib2/template.4.40.def +++ b/definitions/grib2/template.4.40.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.40033.def b/definitions/grib2/template.4.40033.def index f14560111..4c2362b5e 100644 --- a/definitions/grib2/template.4.40033.def +++ b/definitions/grib2/template.4.40033.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This is deprecated and only included for backward compatibility, use template 4.33 diff --git a/definitions/grib2/template.4.40034.def b/definitions/grib2/template.4.40034.def index d80275e5e..4d56ad477 100644 --- a/definitions/grib2/template.4.40034.def +++ b/definitions/grib2/template.4.40034.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This is deprecated and only included for backward compatibility, use template 4.34 diff --git a/definitions/grib2/template.4.41.def b/definitions/grib2/template.4.41.def index 72fbe3b1c..6a17780d1 100644 --- a/definitions/grib2/template.4.41.def +++ b/definitions/grib2/template.4.41.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.42.def b/definitions/grib2/template.4.42.def index cb3377799..2e8340d8d 100644 --- a/definitions/grib2/template.4.42.def +++ b/definitions/grib2/template.4.42.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.43.def b/definitions/grib2/template.4.43.def index 9dbd42f25..c55dd4fc0 100644 --- a/definitions/grib2/template.4.43.def +++ b/definitions/grib2/template.4.43.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.44.def b/definitions/grib2/template.4.44.def index b06d0ef58..c1ff5673a 100644 --- a/definitions/grib2/template.4.44.def +++ b/definitions/grib2/template.4.44.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.45.def b/definitions/grib2/template.4.45.def index fb7a92de2..6aee2bedc 100644 --- a/definitions/grib2/template.4.45.def +++ b/definitions/grib2/template.4.45.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.46.def b/definitions/grib2/template.4.46.def index c95db213b..77c314d72 100644 --- a/definitions/grib2/template.4.46.def +++ b/definitions/grib2/template.4.46.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.47.def b/definitions/grib2/template.4.47.def index 347b09e4a..b8709f4a2 100644 --- a/definitions/grib2/template.4.47.def +++ b/definitions/grib2/template.4.47.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.48.def b/definitions/grib2/template.4.48.def index 766e13dff..2e4e92698 100644 --- a/definitions/grib2/template.4.48.def +++ b/definitions/grib2/template.4.48.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.49.def b/definitions/grib2/template.4.49.def index d59df36bd..cfa265e65 100644 --- a/definitions/grib2/template.4.49.def +++ b/definitions/grib2/template.4.49.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.5.def b/definitions/grib2/template.4.5.def index b8428565f..d2f1b4d9d 100644 --- a/definitions/grib2/template.4.5.def +++ b/definitions/grib2/template.4.5.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.51.def b/definitions/grib2/template.4.51.def index 51c462f0f..413fbd96d 100644 --- a/definitions/grib2/template.4.51.def +++ b/definitions/grib2/template.4.51.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.53.def b/definitions/grib2/template.4.53.def index 963d2cb56..def629956 100644 --- a/definitions/grib2/template.4.53.def +++ b/definitions/grib2/template.4.53.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.54.def b/definitions/grib2/template.4.54.def index b126a8a42..9902f45a2 100644 --- a/definitions/grib2/template.4.54.def +++ b/definitions/grib2/template.4.54.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.55.def b/definitions/grib2/template.4.55.def index 7ffc92c79..ca297d60e 100644 --- a/definitions/grib2/template.4.55.def +++ b/definitions/grib2/template.4.55.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.57.def b/definitions/grib2/template.4.57.def index 233e08f10..3ec979206 100644 --- a/definitions/grib2/template.4.57.def +++ b/definitions/grib2/template.4.57.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.58.def b/definitions/grib2/template.4.58.def index c96699378..8b4f2cc36 100644 --- a/definitions/grib2/template.4.58.def +++ b/definitions/grib2/template.4.58.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.59.def b/definitions/grib2/template.4.59.def index fe3ee42b7..0e73b7317 100644 --- a/definitions/grib2/template.4.59.def +++ b/definitions/grib2/template.4.59.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.6.def b/definitions/grib2/template.4.6.def index 3fd04c342..f7e800090 100644 --- a/definitions/grib2/template.4.6.def +++ b/definitions/grib2/template.4.6.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.60.def b/definitions/grib2/template.4.60.def index e4e982f0b..2458a7c5e 100644 --- a/definitions/grib2/template.4.60.def +++ b/definitions/grib2/template.4.60.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.61.def b/definitions/grib2/template.4.61.def index 13099607c..3a8094201 100644 --- a/definitions/grib2/template.4.61.def +++ b/definitions/grib2/template.4.61.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.67.def b/definitions/grib2/template.4.67.def index cd198f96d..561815e33 100644 --- a/definitions/grib2/template.4.67.def +++ b/definitions/grib2/template.4.67.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.68.def b/definitions/grib2/template.4.68.def index 8ce0d013b..b584d9d16 100644 --- a/definitions/grib2/template.4.68.def +++ b/definitions/grib2/template.4.68.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.70.def b/definitions/grib2/template.4.70.def index 9775ca3db..e1248b5a8 100644 --- a/definitions/grib2/template.4.70.def +++ b/definitions/grib2/template.4.70.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.71.def b/definitions/grib2/template.4.71.def index 98d3bdf41..d6128fdeb 100644 --- a/definitions/grib2/template.4.71.def +++ b/definitions/grib2/template.4.71.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.72.def b/definitions/grib2/template.4.72.def index a1bc728ff..de07dfc21 100644 --- a/definitions/grib2/template.4.72.def +++ b/definitions/grib2/template.4.72.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.73.def b/definitions/grib2/template.4.73.def index 1ac374c98..232c63b87 100644 --- a/definitions/grib2/template.4.73.def +++ b/definitions/grib2/template.4.73.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.8.def b/definitions/grib2/template.4.8.def index 5a8efa631..3bdd98cd5 100644 --- a/definitions/grib2/template.4.8.def +++ b/definitions/grib2/template.4.8.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.9.def b/definitions/grib2/template.4.9.def index 75b9b98f5..531a5bde0 100644 --- a/definitions/grib2/template.4.9.def +++ b/definitions/grib2/template.4.9.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.91.def b/definitions/grib2/template.4.91.def index ba488031d..8ab2ab831 100644 --- a/definitions/grib2/template.4.91.def +++ b/definitions/grib2/template.4.91.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.categorical.def b/definitions/grib2/template.4.categorical.def index c97eeb653..f59bd67b7 100755 --- a/definitions/grib2/template.4.categorical.def +++ b/definitions/grib2/template.4.categorical.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.circular_cluster.def b/definitions/grib2/template.4.circular_cluster.def index bd3ff3384..c6c5c4dc1 100755 --- a/definitions/grib2/template.4.circular_cluster.def +++ b/definitions/grib2/template.4.circular_cluster.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.derived.def b/definitions/grib2/template.4.derived.def index 1cbf5d596..2a0dd2612 100755 --- a/definitions/grib2/template.4.derived.def +++ b/definitions/grib2/template.4.derived.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.eps.def b/definitions/grib2/template.4.eps.def index 89adab12f..c9678f553 100644 --- a/definitions/grib2/template.4.eps.def +++ b/definitions/grib2/template.4.eps.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.horizontal.def b/definitions/grib2/template.4.horizontal.def index 5775a6f80..2cb59656f 100755 --- a/definitions/grib2/template.4.horizontal.def +++ b/definitions/grib2/template.4.horizontal.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.parameter.def b/definitions/grib2/template.4.parameter.def index 06484f47f..72085b37c 100644 --- a/definitions/grib2/template.4.parameter.def +++ b/definitions/grib2/template.4.parameter.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.parameter_aerosol.def b/definitions/grib2/template.4.parameter_aerosol.def index 415d1406c..0a8e361d0 100644 --- a/definitions/grib2/template.4.parameter_aerosol.def +++ b/definitions/grib2/template.4.parameter_aerosol.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.parameter_aerosol_44.def b/definitions/grib2/template.4.parameter_aerosol_44.def index 0074a5e9c..16a52530a 100644 --- a/definitions/grib2/template.4.parameter_aerosol_44.def +++ b/definitions/grib2/template.4.parameter_aerosol_44.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.parameter_aerosol_optical.def b/definitions/grib2/template.4.parameter_aerosol_optical.def index 0699bc7a7..a4f377d5d 100644 --- a/definitions/grib2/template.4.parameter_aerosol_optical.def +++ b/definitions/grib2/template.4.parameter_aerosol_optical.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.parameter_chemical.def b/definitions/grib2/template.4.parameter_chemical.def index df6151400..7a424058c 100644 --- a/definitions/grib2/template.4.parameter_chemical.def +++ b/definitions/grib2/template.4.parameter_chemical.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.parameter_chemical_distribution.def b/definitions/grib2/template.4.parameter_chemical_distribution.def index 476f22bac..dfcecba31 100644 --- a/definitions/grib2/template.4.parameter_chemical_distribution.def +++ b/definitions/grib2/template.4.parameter_chemical_distribution.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.parameter_partition.def b/definitions/grib2/template.4.parameter_partition.def index e32b52020..d1d351950 100644 --- a/definitions/grib2/template.4.parameter_partition.def +++ b/definitions/grib2/template.4.parameter_partition.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.parameter_postproc.def b/definitions/grib2/template.4.parameter_postproc.def index 848f8c308..54cd4cbda 100644 --- a/definitions/grib2/template.4.parameter_postproc.def +++ b/definitions/grib2/template.4.parameter_postproc.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.parameter_tile.def b/definitions/grib2/template.4.parameter_tile.def index 4a79c1155..2ea4b7c65 100644 --- a/definitions/grib2/template.4.parameter_tile.def +++ b/definitions/grib2/template.4.parameter_tile.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.percentile.def b/definitions/grib2/template.4.percentile.def index 53ce95f36..4b0e103df 100755 --- a/definitions/grib2/template.4.percentile.def +++ b/definitions/grib2/template.4.percentile.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # Percentile value # (from 100% to 0%) diff --git a/definitions/grib2/template.4.point_in_time.def b/definitions/grib2/template.4.point_in_time.def index 11a8283ee..d32c6f77b 100644 --- a/definitions/grib2/template.4.point_in_time.def +++ b/definitions/grib2/template.4.point_in_time.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.probability.def b/definitions/grib2/template.4.probability.def index a026d4ec2..24e0ed7a6 100755 --- a/definitions/grib2/template.4.probability.def +++ b/definitions/grib2/template.4.probability.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.rectangular_cluster.def b/definitions/grib2/template.4.rectangular_cluster.def index 64ebb3a27..91579e03a 100755 --- a/definitions/grib2/template.4.rectangular_cluster.def +++ b/definitions/grib2/template.4.rectangular_cluster.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.4.statistical.def b/definitions/grib2/template.4.statistical.def index 2f7e71819..60af6fe77 100644 --- a/definitions/grib2/template.4.statistical.def +++ b/definitions/grib2/template.4.statistical.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.5.0.def b/definitions/grib2/template.5.0.def index 843a40a7a..95feda945 100644 --- a/definitions/grib2/template.5.0.def +++ b/definitions/grib2/template.5.0.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.5.1.def b/definitions/grib2/template.5.1.def index f7c73a096..1c51f03d9 100644 --- a/definitions/grib2/template.5.1.def +++ b/definitions/grib2/template.5.1.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.5.2.def b/definitions/grib2/template.5.2.def index 740e97c74..614dd8ab9 100644 --- a/definitions/grib2/template.5.2.def +++ b/definitions/grib2/template.5.2.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.5.3.def b/definitions/grib2/template.5.3.def index 978a10232..ce89f221c 100644 --- a/definitions/grib2/template.5.3.def +++ b/definitions/grib2/template.5.3.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.5.4.def b/definitions/grib2/template.5.4.def index f147ff1e7..954a07ce9 100644 --- a/definitions/grib2/template.5.4.def +++ b/definitions/grib2/template.5.4.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.5.40.def b/definitions/grib2/template.5.40.def index b7c64776e..f391d0d1e 100644 --- a/definitions/grib2/template.5.40.def +++ b/definitions/grib2/template.5.40.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.5.40000.def b/definitions/grib2/template.5.40000.def index dd98b21a3..287ce2a0b 100644 --- a/definitions/grib2/template.5.40000.def +++ b/definitions/grib2/template.5.40000.def @@ -1,3 +1,3 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. include "grib2/template.5.40.def" diff --git a/definitions/grib2/template.5.40010.def b/definitions/grib2/template.5.40010.def index f8d7963e6..c275b8686 100644 --- a/definitions/grib2/template.5.40010.def +++ b/definitions/grib2/template.5.40010.def @@ -1,3 +1,3 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. include "grib2/template.5.41.def" diff --git a/definitions/grib2/template.5.41.def b/definitions/grib2/template.5.41.def index 9e159574e..6505fde81 100644 --- a/definitions/grib2/template.5.41.def +++ b/definitions/grib2/template.5.41.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.5.42.def b/definitions/grib2/template.5.42.def index 5595cb937..00098759c 100644 --- a/definitions/grib2/template.5.42.def +++ b/definitions/grib2/template.5.42.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.5.50.def b/definitions/grib2/template.5.50.def index 594f5e7e4..7c00fa040 100644 --- a/definitions/grib2/template.5.50.def +++ b/definitions/grib2/template.5.50.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.5.50000.def b/definitions/grib2/template.5.50000.def index c218d44d0..d3cc902f8 100644 --- a/definitions/grib2/template.5.50000.def +++ b/definitions/grib2/template.5.50000.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.5.50001.def b/definitions/grib2/template.5.50001.def index b332a5226..0ec257dc1 100755 --- a/definitions/grib2/template.5.50001.def +++ b/definitions/grib2/template.5.50001.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.5.50002.def b/definitions/grib2/template.5.50002.def index 57b49dc19..08ddf3d4b 100755 --- a/definitions/grib2/template.5.50002.def +++ b/definitions/grib2/template.5.50002.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.5.51.def b/definitions/grib2/template.5.51.def index 0de9d7aee..f57ee1e67 100644 --- a/definitions/grib2/template.5.51.def +++ b/definitions/grib2/template.5.51.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.5.6.def b/definitions/grib2/template.5.6.def index 1946a572b..50ab17827 100644 --- a/definitions/grib2/template.5.6.def +++ b/definitions/grib2/template.5.6.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.5.61.def b/definitions/grib2/template.5.61.def index 26e8d46f8..738c9aca3 100644 --- a/definitions/grib2/template.5.61.def +++ b/definitions/grib2/template.5.61.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.5.original_values.def b/definitions/grib2/template.5.original_values.def index b3730c946..6d2833c28 100644 --- a/definitions/grib2/template.5.original_values.def +++ b/definitions/grib2/template.5.original_values.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # Type of original field values codetable[1] typeOfOriginalFieldValues ('5.1.table',masterDir,localDir) = 0; # Default set to floating diff --git a/definitions/grib2/template.5.packing.def b/definitions/grib2/template.5.packing.def index 17b1ad659..f7d9003cf 100755 --- a/definitions/grib2/template.5.packing.def +++ b/definitions/grib2/template.5.packing.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.5.second_order.def b/definitions/grib2/template.5.second_order.def index 7a67a47f9..93b36858a 100644 --- a/definitions/grib2/template.5.second_order.def +++ b/definitions/grib2/template.5.second_order.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.7.0.def b/definitions/grib2/template.7.0.def index 36f5434e0..01e13a393 100644 --- a/definitions/grib2/template.7.0.def +++ b/definitions/grib2/template.7.0.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.7.1.def b/definitions/grib2/template.7.1.def index 91407473a..098c422a2 100644 --- a/definitions/grib2/template.7.1.def +++ b/definitions/grib2/template.7.1.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.7.2.def b/definitions/grib2/template.7.2.def index 9a4daea21..da03ab814 100644 --- a/definitions/grib2/template.7.2.def +++ b/definitions/grib2/template.7.2.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.7.3.def b/definitions/grib2/template.7.3.def index 688d99f56..d42a8914e 100644 --- a/definitions/grib2/template.7.3.def +++ b/definitions/grib2/template.7.3.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.7.4.def b/definitions/grib2/template.7.4.def index 75fa669a7..1412cdd60 100644 --- a/definitions/grib2/template.7.4.def +++ b/definitions/grib2/template.7.4.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.7.40.def b/definitions/grib2/template.7.40.def index 32d74d0b3..960e4d31f 100644 --- a/definitions/grib2/template.7.40.def +++ b/definitions/grib2/template.7.40.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.7.40000.def b/definitions/grib2/template.7.40000.def index 5d2085a3b..0c85d28b0 100644 --- a/definitions/grib2/template.7.40000.def +++ b/definitions/grib2/template.7.40000.def @@ -1,3 +1,3 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. include "grib2/template.7.40.def" diff --git a/definitions/grib2/template.7.40010.def b/definitions/grib2/template.7.40010.def index e9f359fc9..bd84d7242 100644 --- a/definitions/grib2/template.7.40010.def +++ b/definitions/grib2/template.7.40010.def @@ -1,3 +1,3 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. include "grib2/template.7.41.def" diff --git a/definitions/grib2/template.7.41.def b/definitions/grib2/template.7.41.def index f4a5c3074..c4eb3dd85 100644 --- a/definitions/grib2/template.7.41.def +++ b/definitions/grib2/template.7.41.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.7.42.def b/definitions/grib2/template.7.42.def index 556b3f5b0..f47ca3689 100644 --- a/definitions/grib2/template.7.42.def +++ b/definitions/grib2/template.7.42.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.7.50.def b/definitions/grib2/template.7.50.def index 67e30c838..27a16feca 100644 --- a/definitions/grib2/template.7.50.def +++ b/definitions/grib2/template.7.50.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.7.50000.def b/definitions/grib2/template.7.50000.def index 89f933bf3..5592eb045 100644 --- a/definitions/grib2/template.7.50000.def +++ b/definitions/grib2/template.7.50000.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.7.50001.def b/definitions/grib2/template.7.50001.def index 1eee87349..1c3e91643 100644 --- a/definitions/grib2/template.7.50001.def +++ b/definitions/grib2/template.7.50001.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.7.50002.def b/definitions/grib2/template.7.50002.def index 0845e331c..ba6f987cc 100644 --- a/definitions/grib2/template.7.50002.def +++ b/definitions/grib2/template.7.50002.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.7.51.def b/definitions/grib2/template.7.51.def index 27de5e8d2..decfe0b63 100644 --- a/definitions/grib2/template.7.51.def +++ b/definitions/grib2/template.7.51.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.7.6.def b/definitions/grib2/template.7.6.def index 62288bf0a..5726294f1 100644 --- a/definitions/grib2/template.7.6.def +++ b/definitions/grib2/template.7.6.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.7.61.def b/definitions/grib2/template.7.61.def index 62288bf0a..5726294f1 100644 --- a/definitions/grib2/template.7.61.def +++ b/definitions/grib2/template.7.61.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib2/template.7.second_order.def b/definitions/grib2/template.7.second_order.def index e681dfac8..64ebcedca 100644 --- a/definitions/grib2/template.7.second_order.def +++ b/definitions/grib2/template.7.second_order.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/boot.def b/definitions/grib3/boot.def index 9191c4249..928ad96f2 100644 --- a/definitions/grib3/boot.def +++ b/definitions/grib3/boot.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/local.98.11.def b/definitions/grib3/local.98.11.def index ced90725c..e3ee83334 100644 --- a/definitions/grib3/local.98.11.def +++ b/definitions/grib3/local.98.11.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/local.98.14.def b/definitions/grib3/local.98.14.def index b8939c21a..8a9cd1b4a 100644 --- a/definitions/grib3/local.98.14.def +++ b/definitions/grib3/local.98.14.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/local.98.15.def b/definitions/grib3/local.98.15.def index 04362e8be..278e5328c 100644 --- a/definitions/grib3/local.98.15.def +++ b/definitions/grib3/local.98.15.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/local.98.16.def b/definitions/grib3/local.98.16.def index 1f678eb0b..40f0b53e7 100644 --- a/definitions/grib3/local.98.16.def +++ b/definitions/grib3/local.98.16.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/local.98.18.def b/definitions/grib3/local.98.18.def index 8c19da155..cf98daf1a 100644 --- a/definitions/grib3/local.98.18.def +++ b/definitions/grib3/local.98.18.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/local.98.192.def b/definitions/grib3/local.98.192.def index 8f7edfe0b..42edc5211 100644 --- a/definitions/grib3/local.98.192.def +++ b/definitions/grib3/local.98.192.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/local.98.20.def b/definitions/grib3/local.98.20.def index 54abf2713..f27ed13b8 100644 --- a/definitions/grib3/local.98.20.def +++ b/definitions/grib3/local.98.20.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/local.98.21.def b/definitions/grib3/local.98.21.def index 97de3e133..d177a790e 100644 --- a/definitions/grib3/local.98.21.def +++ b/definitions/grib3/local.98.21.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/local.98.24.def b/definitions/grib3/local.98.24.def index 71f60509c..5280e4364 100644 --- a/definitions/grib3/local.98.24.def +++ b/definitions/grib3/local.98.24.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/local.98.25.def b/definitions/grib3/local.98.25.def index be886be9d..8f51c8ad0 100644 --- a/definitions/grib3/local.98.25.def +++ b/definitions/grib3/local.98.25.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/local.98.26.def b/definitions/grib3/local.98.26.def index feb8c5268..d1bf498f6 100644 --- a/definitions/grib3/local.98.26.def +++ b/definitions/grib3/local.98.26.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/local.98.28.def b/definitions/grib3/local.98.28.def index e3748a5ad..11e744e1a 100644 --- a/definitions/grib3/local.98.28.def +++ b/definitions/grib3/local.98.28.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/local.98.30.def b/definitions/grib3/local.98.30.def index c0cbc7a95..11cc28ed0 100644 --- a/definitions/grib3/local.98.30.def +++ b/definitions/grib3/local.98.30.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/local.98.300.def b/definitions/grib3/local.98.300.def index 75477fe2f..2e00e8a29 100644 --- a/definitions/grib3/local.98.300.def +++ b/definitions/grib3/local.98.300.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/local.98.36.def b/definitions/grib3/local.98.36.def index a627ec0ae..283f78af2 100644 --- a/definitions/grib3/local.98.36.def +++ b/definitions/grib3/local.98.36.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/local.98.38.def b/definitions/grib3/local.98.38.def index 897c3037c..227d65edd 100644 --- a/definitions/grib3/local.98.38.def +++ b/definitions/grib3/local.98.38.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/local.98.39.def b/definitions/grib3/local.98.39.def index e4aac6498..538e254b8 100644 --- a/definitions/grib3/local.98.39.def +++ b/definitions/grib3/local.98.39.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/local.98.7.def b/definitions/grib3/local.98.7.def index 935299a6d..42de2e798 100644 --- a/definitions/grib3/local.98.7.def +++ b/definitions/grib3/local.98.7.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/local.98.9.def b/definitions/grib3/local.98.9.def index 75dd2ae7a..60da0fd00 100644 --- a/definitions/grib3/local.98.9.def +++ b/definitions/grib3/local.98.9.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/mars_labeling.def b/definitions/grib3/mars_labeling.def index 6b1d8b623..189e0259b 100644 --- a/definitions/grib3/mars_labeling.def +++ b/definitions/grib3/mars_labeling.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/meta.def b/definitions/grib3/meta.def index 52ff4f542..2e02e3322 100644 --- a/definitions/grib3/meta.def +++ b/definitions/grib3/meta.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/parameters.def b/definitions/grib3/parameters.def index 9c38d061c..f1a67f3a7 100644 --- a/definitions/grib3/parameters.def +++ b/definitions/grib3/parameters.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/products_0.def b/definitions/grib3/products_0.def index 0d139fb29..79b568927 100644 --- a/definitions/grib3/products_0.def +++ b/definitions/grib3/products_0.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/products_1.def b/definitions/grib3/products_1.def index 4929b1450..782b04983 100644 --- a/definitions/grib3/products_1.def +++ b/definitions/grib3/products_1.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/products_2.def b/definitions/grib3/products_2.def index 8195dd66b..2b0e02af5 100644 --- a/definitions/grib3/products_2.def +++ b/definitions/grib3/products_2.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/products_3.def b/definitions/grib3/products_3.def index 79a207f1d..7a7eb9105 100644 --- a/definitions/grib3/products_3.def +++ b/definitions/grib3/products_3.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/products_4.def b/definitions/grib3/products_4.def index 3c6213d84..fc828608f 100644 --- a/definitions/grib3/products_4.def +++ b/definitions/grib3/products_4.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/products_5.def b/definitions/grib3/products_5.def index 3f3f8aa79..55b3839b7 100644 --- a/definitions/grib3/products_5.def +++ b/definitions/grib3/products_5.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/products_6.def b/definitions/grib3/products_6.def index 68e2b3af3..18b355d65 100644 --- a/definitions/grib3/products_6.def +++ b/definitions/grib3/products_6.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/products_7.def b/definitions/grib3/products_7.def index d347abd53..3784fa6ef 100644 --- a/definitions/grib3/products_7.def +++ b/definitions/grib3/products_7.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/products_8.def b/definitions/grib3/products_8.def index ce765650a..35ac8f435 100644 --- a/definitions/grib3/products_8.def +++ b/definitions/grib3/products_8.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/products_9.def b/definitions/grib3/products_9.def index 12b757342..419a2ef66 100644 --- a/definitions/grib3/products_9.def +++ b/definitions/grib3/products_9.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/products_s2s.def b/definitions/grib3/products_s2s.def index c1c323af2..ce034e8ec 100644 --- a/definitions/grib3/products_s2s.def +++ b/definitions/grib3/products_s2s.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/products_tigge.def b/definitions/grib3/products_tigge.def index 409c9650b..00597a1e9 100644 --- a/definitions/grib3/products_tigge.def +++ b/definitions/grib3/products_tigge.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/products_uerra.def b/definitions/grib3/products_uerra.def index f82e7ac3b..5a057ed15 100644 --- a/definitions/grib3/products_uerra.def +++ b/definitions/grib3/products_uerra.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/rules.def b/definitions/grib3/rules.def index fb9f0ef79..e369e9dd3 100644 --- a/definitions/grib3/rules.def +++ b/definitions/grib3/rules.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/section.00.def b/definitions/grib3/section.00.def index 4b8b92e74..1b361d046 100644 --- a/definitions/grib3/section.00.def +++ b/definitions/grib3/section.00.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/section.01.def b/definitions/grib3/section.01.def index 32dc909cf..a1fd7384c 100644 --- a/definitions/grib3/section.01.def +++ b/definitions/grib3/section.01.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/section.02.def b/definitions/grib3/section.02.def index 5993b2434..308bf2a9f 100644 --- a/definitions/grib3/section.02.def +++ b/definitions/grib3/section.02.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/section.03.def b/definitions/grib3/section.03.def index 743790173..b31b93d5a 100644 --- a/definitions/grib3/section.03.def +++ b/definitions/grib3/section.03.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/section.04.def b/definitions/grib3/section.04.def index 574cc4c66..072936071 100644 --- a/definitions/grib3/section.04.def +++ b/definitions/grib3/section.04.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/section.05.def b/definitions/grib3/section.05.def index 8632eb2c8..e839e9761 100644 --- a/definitions/grib3/section.05.def +++ b/definitions/grib3/section.05.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/section.06.def b/definitions/grib3/section.06.def index b8f1dbd5d..73a071017 100644 --- a/definitions/grib3/section.06.def +++ b/definitions/grib3/section.06.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/section.07.def b/definitions/grib3/section.07.def index 7c784f134..1d4bd345e 100644 --- a/definitions/grib3/section.07.def +++ b/definitions/grib3/section.07.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/section.08.def b/definitions/grib3/section.08.def index f60a39519..7475b8b5e 100644 --- a/definitions/grib3/section.08.def +++ b/definitions/grib3/section.08.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/section.09.def b/definitions/grib3/section.09.def index 19c36bdff..e95630cbf 100644 --- a/definitions/grib3/section.09.def +++ b/definitions/grib3/section.09.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/section.10.def b/definitions/grib3/section.10.def index e1a9c927e..df08b0dc9 100644 --- a/definitions/grib3/section.10.def +++ b/definitions/grib3/section.10.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/section.11.def b/definitions/grib3/section.11.def index e69e76d78..af4cc9716 100644 --- a/definitions/grib3/section.11.def +++ b/definitions/grib3/section.11.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/sections.def b/definitions/grib3/sections.def index 817a8f161..1ba940c34 100644 --- a/definitions/grib3/sections.def +++ b/definitions/grib3/sections.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/template.10.0.def b/definitions/grib3/template.10.0.def index bb217fb1f..3a5695abb 100644 --- a/definitions/grib3/template.10.0.def +++ b/definitions/grib3/template.10.0.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/template.3.0.def b/definitions/grib3/template.3.0.def index b4ce6d481..29fe1d3b7 100644 --- a/definitions/grib3/template.3.0.def +++ b/definitions/grib3/template.3.0.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/template.3.110.def b/definitions/grib3/template.3.110.def index da4461a19..408ac64ed 100644 --- a/definitions/grib3/template.3.110.def +++ b/definitions/grib3/template.3.110.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/template.3.140.def b/definitions/grib3/template.3.140.def index e3317027e..63f6a1cbc 100644 --- a/definitions/grib3/template.3.140.def +++ b/definitions/grib3/template.3.140.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/template.3.20.def b/definitions/grib3/template.3.20.def index 0d250e417..1e85eb8ab 100644 --- a/definitions/grib3/template.3.20.def +++ b/definitions/grib3/template.3.20.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/template.3.resolution_flags.def b/definitions/grib3/template.3.resolution_flags.def index 43232288f..ed229ac44 100644 --- a/definitions/grib3/template.3.resolution_flags.def +++ b/definitions/grib3/template.3.resolution_flags.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/template.4.0.def b/definitions/grib3/template.4.0.def index 02aeaa786..97307c0c7 100644 --- a/definitions/grib3/template.4.0.def +++ b/definitions/grib3/template.4.0.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/template.4.1.def b/definitions/grib3/template.4.1.def index ed2a878c6..30d9caa2c 100644 --- a/definitions/grib3/template.4.1.def +++ b/definitions/grib3/template.4.1.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/template.4.2.def b/definitions/grib3/template.4.2.def index 570852e75..02bddb9ba 100644 --- a/definitions/grib3/template.4.2.def +++ b/definitions/grib3/template.4.2.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/template.4.3.def b/definitions/grib3/template.4.3.def index 5d1546238..f867aa74e 100644 --- a/definitions/grib3/template.4.3.def +++ b/definitions/grib3/template.4.3.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/template.4.horizontal.def b/definitions/grib3/template.4.horizontal.def index c6425edbd..e57f253f2 100755 --- a/definitions/grib3/template.4.horizontal.def +++ b/definitions/grib3/template.4.horizontal.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/template.4.resolution_flags.def b/definitions/grib3/template.4.resolution_flags.def index 43232288f..ed229ac44 100644 --- a/definitions/grib3/template.4.resolution_flags.def +++ b/definitions/grib3/template.4.resolution_flags.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/template.4.scanning_mode.def b/definitions/grib3/template.4.scanning_mode.def index 7e35f0dfc..32a3a402f 100644 --- a/definitions/grib3/template.4.scanning_mode.def +++ b/definitions/grib3/template.4.scanning_mode.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/template.5.0.def b/definitions/grib3/template.5.0.def index cf38cff8b..01765efc3 100644 --- a/definitions/grib3/template.5.0.def +++ b/definitions/grib3/template.5.0.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/template.5.1.def b/definitions/grib3/template.5.1.def index fefcf11a7..58ae13023 100644 --- a/definitions/grib3/template.5.1.def +++ b/definitions/grib3/template.5.1.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/template.6.0.def b/definitions/grib3/template.6.0.def index 24e24c152..9fc7c995d 100644 --- a/definitions/grib3/template.6.0.def +++ b/definitions/grib3/template.6.0.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/template.6.1.def b/definitions/grib3/template.6.1.def index ce1dad1c0..a29ca1319 100644 --- a/definitions/grib3/template.6.1.def +++ b/definitions/grib3/template.6.1.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/template.6.2.def b/definitions/grib3/template.6.2.def index 13224a3d7..eaa996806 100644 --- a/definitions/grib3/template.6.2.def +++ b/definitions/grib3/template.6.2.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/template.7.0.def b/definitions/grib3/template.7.0.def index 8a433f2ac..4bab6d48d 100644 --- a/definitions/grib3/template.7.0.def +++ b/definitions/grib3/template.7.0.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/template.7.1.def b/definitions/grib3/template.7.1.def index e9671c257..4ac769672 100644 --- a/definitions/grib3/template.7.1.def +++ b/definitions/grib3/template.7.1.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/template.7.2.def b/definitions/grib3/template.7.2.def index a625d7366..fcc6667ff 100644 --- a/definitions/grib3/template.7.2.def +++ b/definitions/grib3/template.7.2.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/template.7.3.def b/definitions/grib3/template.7.3.def index 58be03ca7..48a086848 100644 --- a/definitions/grib3/template.7.3.def +++ b/definitions/grib3/template.7.3.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/template.7.4.def b/definitions/grib3/template.7.4.def index 3ac77497a..cab1fc71d 100644 --- a/definitions/grib3/template.7.4.def +++ b/definitions/grib3/template.7.4.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/template.8.0.def b/definitions/grib3/template.8.0.def index aa7cb8d03..96d77b31f 100644 --- a/definitions/grib3/template.8.0.def +++ b/definitions/grib3/template.8.0.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/template.8.1.def b/definitions/grib3/template.8.1.def index e368989e3..06c7d5056 100644 --- a/definitions/grib3/template.8.1.def +++ b/definitions/grib3/template.8.1.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/grib3/template.9.0.def b/definitions/grib3/template.9.0.def index be1325620..6e95c427a 100644 --- a/definitions/grib3/template.9.0.def +++ b/definitions/grib3/template.9.0.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/gts/boot.def b/definitions/gts/boot.def index f0d8d7cfa..53905caa1 100644 --- a/definitions/gts/boot.def +++ b/definitions/gts/boot.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/installDefinitions.sh b/definitions/installDefinitions.sh index 9b11635e2..502ede5d0 100755 --- a/definitions/installDefinitions.sh +++ b/definitions/installDefinitions.sh @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/mars/make_type_switch_case.sh b/definitions/mars/make_type_switch_case.sh index 8434b03d1..932827e8d 100755 --- a/definitions/mars/make_type_switch_case.sh +++ b/definitions/mars/make_type_switch_case.sh @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/metar/boot.def b/definitions/metar/boot.def index 4d3a5830e..022f86ffb 100644 --- a/definitions/metar/boot.def +++ b/definitions/metar/boot.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/metar/boot.flexible.def b/definitions/metar/boot.flexible.def index 769fa6ccd..b40967096 100644 --- a/definitions/metar/boot.flexible.def +++ b/definitions/metar/boot.flexible.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/publish_new_parameters.sh b/definitions/publish_new_parameters.sh index 63a90c503..fe7e9792d 100755 --- a/definitions/publish_new_parameters.sh +++ b/definitions/publish_new_parameters.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/taf/boot.def b/definitions/taf/boot.def index 86cf31b1f..88f36a19d 100644 --- a/definitions/taf/boot.def +++ b/definitions/taf/boot.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/tide/boot.def b/definitions/tide/boot.def index 756c30f3e..702f6fa12 100644 --- a/definitions/tide/boot.def +++ b/definitions/tide/boot.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/tide/mars_labeling.def b/definitions/tide/mars_labeling.def index c67018373..aba58fde5 100644 --- a/definitions/tide/mars_labeling.def +++ b/definitions/tide/mars_labeling.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/tide/section.1.def b/definitions/tide/section.1.def index d44b89bfa..ef2f397e4 100644 --- a/definitions/tide/section.1.def +++ b/definitions/tide/section.1.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/tide/section.4.def b/definitions/tide/section.4.def index 99e320c92..4d19308db 100644 --- a/definitions/tide/section.4.def +++ b/definitions/tide/section.4.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/definitions/wrap/boot.def b/definitions/wrap/boot.def index e84e1f709..456df4c94 100644 --- a/definitions/wrap/boot.def +++ b/definitions/wrap/boot.def @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/eccodes_config.h.in b/eccodes_config.h.in index 0b2d1cdb1..65d0b81c3 100644 --- a/eccodes_config.h.in +++ b/eccodes_config.h.in @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/box.c b/examples/C/box.c index 9b1bf05f3..b7d9166bc 100644 --- a/examples/C/box.c +++ b/examples/C/box.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/bufr_attributes.c b/examples/C/bufr_attributes.c index b7e86eba0..12af8ca84 100644 --- a/examples/C/bufr_attributes.c +++ b/examples/C/bufr_attributes.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/bufr_attributes.sh b/examples/C/bufr_attributes.sh index 8597949f3..372ca92dd 100755 --- a/examples/C/bufr_attributes.sh +++ b/examples/C/bufr_attributes.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/bufr_clone.c b/examples/C/bufr_clone.c index 35a1f8c9f..582fd8e87 100644 --- a/examples/C/bufr_clone.c +++ b/examples/C/bufr_clone.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/bufr_clone.sh b/examples/C/bufr_clone.sh index b0b44e5c5..8b1520e49 100755 --- a/examples/C/bufr_clone.sh +++ b/examples/C/bufr_clone.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/bufr_copy_data.c b/examples/C/bufr_copy_data.c index 6dc731b8a..fb6f3bdfe 100644 --- a/examples/C/bufr_copy_data.c +++ b/examples/C/bufr_copy_data.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/bufr_copy_data.sh b/examples/C/bufr_copy_data.sh index 772f60b71..959a71411 100755 --- a/examples/C/bufr_copy_data.sh +++ b/examples/C/bufr_copy_data.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/bufr_expanded.c b/examples/C/bufr_expanded.c index c494bcced..5d70c6a07 100644 --- a/examples/C/bufr_expanded.c +++ b/examples/C/bufr_expanded.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/bufr_expanded.sh b/examples/C/bufr_expanded.sh index e2b797fe5..344ce4a4d 100755 --- a/examples/C/bufr_expanded.sh +++ b/examples/C/bufr_expanded.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/bufr_get_keys.c b/examples/C/bufr_get_keys.c index 8f2343e03..677c41939 100644 --- a/examples/C/bufr_get_keys.c +++ b/examples/C/bufr_get_keys.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/bufr_get_keys.sh b/examples/C/bufr_get_keys.sh index 62b935557..41cb72c0b 100755 --- a/examples/C/bufr_get_keys.sh +++ b/examples/C/bufr_get_keys.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/bufr_get_string_array.c b/examples/C/bufr_get_string_array.c index 458b60447..2241f1c29 100644 --- a/examples/C/bufr_get_string_array.c +++ b/examples/C/bufr_get_string_array.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/bufr_get_string_array.sh b/examples/C/bufr_get_string_array.sh index ed078c3e8..c8dc0975a 100755 --- a/examples/C/bufr_get_string_array.sh +++ b/examples/C/bufr_get_string_array.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/bufr_keys_iterator.c b/examples/C/bufr_keys_iterator.c index 386dd5a4a..433c10963 100644 --- a/examples/C/bufr_keys_iterator.c +++ b/examples/C/bufr_keys_iterator.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/bufr_keys_iterator.sh b/examples/C/bufr_keys_iterator.sh index e263a26bc..246f7e954 100755 --- a/examples/C/bufr_keys_iterator.sh +++ b/examples/C/bufr_keys_iterator.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/bufr_missing.c b/examples/C/bufr_missing.c index ed7c5581c..d98eb5b05 100644 --- a/examples/C/bufr_missing.c +++ b/examples/C/bufr_missing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/bufr_missing.sh b/examples/C/bufr_missing.sh index 7de18cc8a..935b91e05 100755 --- a/examples/C/bufr_missing.sh +++ b/examples/C/bufr_missing.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/bufr_pthreads.c b/examples/C/bufr_pthreads.c index 003da02cc..08b9ae9d7 100644 --- a/examples/C/bufr_pthreads.c +++ b/examples/C/bufr_pthreads.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/bufr_pthreads.sh b/examples/C/bufr_pthreads.sh index 460eb89a4..74d7d00eb 100755 --- a/examples/C/bufr_pthreads.sh +++ b/examples/C/bufr_pthreads.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/bufr_read_header.c b/examples/C/bufr_read_header.c index e43a86e60..e61a5e014 100644 --- a/examples/C/bufr_read_header.c +++ b/examples/C/bufr_read_header.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/bufr_read_header.sh b/examples/C/bufr_read_header.sh index 6e6721d28..d844092be 100755 --- a/examples/C/bufr_read_header.sh +++ b/examples/C/bufr_read_header.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/bufr_read_scatterometer.c b/examples/C/bufr_read_scatterometer.c index 6bf85c811..f1bf5e791 100644 --- a/examples/C/bufr_read_scatterometer.c +++ b/examples/C/bufr_read_scatterometer.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/bufr_read_scatterometer.sh b/examples/C/bufr_read_scatterometer.sh index cd00c7580..bcb5b4055 100755 --- a/examples/C/bufr_read_scatterometer.sh +++ b/examples/C/bufr_read_scatterometer.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/bufr_read_synop.c b/examples/C/bufr_read_synop.c index 9ee8a3be1..b02895d3f 100644 --- a/examples/C/bufr_read_synop.c +++ b/examples/C/bufr_read_synop.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/bufr_read_synop.sh b/examples/C/bufr_read_synop.sh index 86cc2d083..60f8d5761 100755 --- a/examples/C/bufr_read_synop.sh +++ b/examples/C/bufr_read_synop.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/bufr_read_temp.c b/examples/C/bufr_read_temp.c index 9ba53f872..542dd4db0 100644 --- a/examples/C/bufr_read_temp.c +++ b/examples/C/bufr_read_temp.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/bufr_read_temp.sh b/examples/C/bufr_read_temp.sh index bfacdeb58..e12c89076 100755 --- a/examples/C/bufr_read_temp.sh +++ b/examples/C/bufr_read_temp.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/bufr_set_keys.c b/examples/C/bufr_set_keys.c index e3a55d4fd..5c4041e23 100644 --- a/examples/C/bufr_set_keys.c +++ b/examples/C/bufr_set_keys.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/bufr_set_keys.sh b/examples/C/bufr_set_keys.sh index cc102f551..1eb63f336 100755 --- a/examples/C/bufr_set_keys.sh +++ b/examples/C/bufr_set_keys.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/bufr_subset.c b/examples/C/bufr_subset.c index 0db2f7e6e..dd07f0fcf 100644 --- a/examples/C/bufr_subset.c +++ b/examples/C/bufr_subset.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/bufr_subset.sh b/examples/C/bufr_subset.sh index bd59ddff6..8dec4a021 100755 --- a/examples/C/bufr_subset.sh +++ b/examples/C/bufr_subset.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/ecmwf_link.sh b/examples/C/ecmwf_link.sh index 765a5627b..ffc94a1fc 100755 --- a/examples/C/ecmwf_link.sh +++ b/examples/C/ecmwf_link.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/fieldset.c b/examples/C/fieldset.c index 748548c53..1ad72dd71 100644 --- a/examples/C/fieldset.c +++ b/examples/C/fieldset.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/get_product_kind.c b/examples/C/get_product_kind.c index a69af27c2..f703440e5 100644 --- a/examples/C/get_product_kind.c +++ b/examples/C/get_product_kind.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/get_product_kind.sh b/examples/C/get_product_kind.sh index 3e5376960..5cfdfb3f4 100755 --- a/examples/C/get_product_kind.sh +++ b/examples/C/get_product_kind.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/get_product_kind_samples.sh b/examples/C/get_product_kind_samples.sh index 0675fa19c..a2b657ee8 100755 --- a/examples/C/get_product_kind_samples.sh +++ b/examples/C/get_product_kind_samples.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_clone.c b/examples/C/grib_clone.c index c11d7e2a7..a1216bbe2 100644 --- a/examples/C/grib_clone.c +++ b/examples/C/grib_clone.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_clone.sh b/examples/C/grib_clone.sh index b88ed1916..3e118dd03 100755 --- a/examples/C/grib_clone.sh +++ b/examples/C/grib_clone.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_copy_message.c b/examples/C/grib_copy_message.c index c85dff594..3b501a7ba 100644 --- a/examples/C/grib_copy_message.c +++ b/examples/C/grib_copy_message.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_copy_message.sh b/examples/C/grib_copy_message.sh index 850f337cd..767576064 100755 --- a/examples/C/grib_copy_message.sh +++ b/examples/C/grib_copy_message.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_ensemble_index.c b/examples/C/grib_ensemble_index.c index 5a9401a5c..31da3eaa1 100644 --- a/examples/C/grib_ensemble_index.c +++ b/examples/C/grib_ensemble_index.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_ensemble_index.sh b/examples/C/grib_ensemble_index.sh index 887509647..bab2a8fc4 100755 --- a/examples/C/grib_ensemble_index.sh +++ b/examples/C/grib_ensemble_index.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_get_data.c b/examples/C/grib_get_data.c index d26cd0088..c24f261ba 100644 --- a/examples/C/grib_get_data.c +++ b/examples/C/grib_get_data.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_get_data.sh b/examples/C/grib_get_data.sh index 5d0edca62..49e5f6b6a 100755 --- a/examples/C/grib_get_data.sh +++ b/examples/C/grib_get_data.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_get_keys.c b/examples/C/grib_get_keys.c index c0a391eff..2b0f3014e 100644 --- a/examples/C/grib_get_keys.c +++ b/examples/C/grib_get_keys.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_get_keys.sh b/examples/C/grib_get_keys.sh index 5f0d6acfd..c81f32028 100755 --- a/examples/C/grib_get_keys.sh +++ b/examples/C/grib_get_keys.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_index.c b/examples/C/grib_index.c index 8f9afd39e..bd17440c0 100644 --- a/examples/C/grib_index.c +++ b/examples/C/grib_index.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_iterator.c b/examples/C/grib_iterator.c index 294a8b370..1193a8e28 100644 --- a/examples/C/grib_iterator.c +++ b/examples/C/grib_iterator.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_iterator.sh b/examples/C/grib_iterator.sh index 3ae26c913..5fb52531c 100755 --- a/examples/C/grib_iterator.sh +++ b/examples/C/grib_iterator.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_iterator_bitmap.c b/examples/C/grib_iterator_bitmap.c index 801b441a0..1da1200a8 100644 --- a/examples/C/grib_iterator_bitmap.c +++ b/examples/C/grib_iterator_bitmap.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_keys_iterator.c b/examples/C/grib_keys_iterator.c index 0446d22ff..66fb47049 100644 --- a/examples/C/grib_keys_iterator.c +++ b/examples/C/grib_keys_iterator.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_keys_iterator.sh b/examples/C/grib_keys_iterator.sh index 2d87ca4ba..e3eadce5c 100755 --- a/examples/C/grib_keys_iterator.sh +++ b/examples/C/grib_keys_iterator.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_list.c b/examples/C/grib_list.c index 04fd8da76..5d6eac68e 100644 --- a/examples/C/grib_list.c +++ b/examples/C/grib_list.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_list.sh b/examples/C/grib_list.sh index f74d5f167..78fac44e3 100755 --- a/examples/C/grib_list.sh +++ b/examples/C/grib_list.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_multi.c b/examples/C/grib_multi.c index 8a0cbba10..2c9b3c991 100644 --- a/examples/C/grib_multi.c +++ b/examples/C/grib_multi.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_multi.sh b/examples/C/grib_multi.sh index 0dec1c91c..b140b65a1 100755 --- a/examples/C/grib_multi.sh +++ b/examples/C/grib_multi.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_multi_write.c b/examples/C/grib_multi_write.c index e7a45ffef..4e4dcc63c 100644 --- a/examples/C/grib_multi_write.c +++ b/examples/C/grib_multi_write.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_multi_write.sh b/examples/C/grib_multi_write.sh index b0de12693..024a1d2d8 100755 --- a/examples/C/grib_multi_write.sh +++ b/examples/C/grib_multi_write.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_nearest.c b/examples/C/grib_nearest.c index 1a9599220..192203e0f 100644 --- a/examples/C/grib_nearest.c +++ b/examples/C/grib_nearest.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_precipitation.c b/examples/C/grib_precipitation.c index a16d70060..7fd94ff57 100644 --- a/examples/C/grib_precipitation.c +++ b/examples/C/grib_precipitation.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_precision.c b/examples/C/grib_precision.c index 3bb99a022..e60d689c1 100644 --- a/examples/C/grib_precision.c +++ b/examples/C/grib_precision.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_precision.sh b/examples/C/grib_precision.sh index f1f65832a..4e9b92438 100755 --- a/examples/C/grib_precision.sh +++ b/examples/C/grib_precision.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_print_data.c b/examples/C/grib_print_data.c index 7f98a63d6..df7d5d90b 100644 --- a/examples/C/grib_print_data.c +++ b/examples/C/grib_print_data.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_print_data.sh b/examples/C/grib_print_data.sh index f76ff5dfe..45639a906 100755 --- a/examples/C/grib_print_data.sh +++ b/examples/C/grib_print_data.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_pthreads.c b/examples/C/grib_pthreads.c index 443315d4a..b99b5fb27 100644 --- a/examples/C/grib_pthreads.c +++ b/examples/C/grib_pthreads.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_pthreads.sh b/examples/C/grib_pthreads.sh index 47376e75c..6da255f39 100755 --- a/examples/C/grib_pthreads.sh +++ b/examples/C/grib_pthreads.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_set_bitmap.c b/examples/C/grib_set_bitmap.c index 78939e693..7b431db7a 100644 --- a/examples/C/grib_set_bitmap.c +++ b/examples/C/grib_set_bitmap.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_set_bitmap.sh b/examples/C/grib_set_bitmap.sh index e12b5fbc0..0abf513ae 100755 --- a/examples/C/grib_set_bitmap.sh +++ b/examples/C/grib_set_bitmap.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_set_data.c b/examples/C/grib_set_data.c index 1f8b2b057..e8ea5dfec 100644 --- a/examples/C/grib_set_data.c +++ b/examples/C/grib_set_data.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_set_data.sh b/examples/C/grib_set_data.sh index c7d10e341..5f6ba3916 100755 --- a/examples/C/grib_set_data.sh +++ b/examples/C/grib_set_data.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_set_keys.c b/examples/C/grib_set_keys.c index 6b155064b..1bf2d16ac 100644 --- a/examples/C/grib_set_keys.c +++ b/examples/C/grib_set_keys.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_set_keys.sh b/examples/C/grib_set_keys.sh index 23d6c4145..6633411c3 100755 --- a/examples/C/grib_set_keys.sh +++ b/examples/C/grib_set_keys.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_set_pv.c b/examples/C/grib_set_pv.c index 4848c0e6c..4e50c6768 100644 --- a/examples/C/grib_set_pv.c +++ b/examples/C/grib_set_pv.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/grib_set_pv.sh b/examples/C/grib_set_pv.sh index 216200a95..b4fcce81e 100755 --- a/examples/C/grib_set_pv.sh +++ b/examples/C/grib_set_pv.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/include.sh b/examples/C/include.sh index 46033e998..472180fe3 100644 --- a/examples/C/include.sh +++ b/examples/C/include.sh @@ -1,5 +1,5 @@ set -ea -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/large_grib1.c b/examples/C/large_grib1.c index 2cfc88132..f631824c3 100644 --- a/examples/C/large_grib1.c +++ b/examples/C/large_grib1.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/large_grib1.sh b/examples/C/large_grib1.sh index b88399605..77037d8da 100755 --- a/examples/C/large_grib1.sh +++ b/examples/C/large_grib1.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/mars_param.c b/examples/C/mars_param.c index e578f8c98..37595fbed 100644 --- a/examples/C/mars_param.c +++ b/examples/C/mars_param.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/multi2.c b/examples/C/multi2.c index 3b59ede12..f6759fd40 100644 --- a/examples/C/multi2.c +++ b/examples/C/multi2.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/nc.c b/examples/C/nc.c index 10458a42a..55a21b86c 100644 --- a/examples/C/nc.c +++ b/examples/C/nc.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/new_sample.c b/examples/C/new_sample.c index 7f641d5ca..b39e73315 100644 --- a/examples/C/new_sample.c +++ b/examples/C/new_sample.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/points.c b/examples/C/points.c index 58f8f50fa..070f991c4 100644 --- a/examples/C/points.c +++ b/examples/C/points.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/rename.sh b/examples/C/rename.sh index df8aaf1f8..fec2d088c 100755 --- a/examples/C/rename.sh +++ b/examples/C/rename.sh @@ -1,5 +1,5 @@ #!/bin/ksh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/run_examples.sh b/examples/C/run_examples.sh index 7a90c2d3b..04f953da8 100644 --- a/examples/C/run_examples.sh +++ b/examples/C/run_examples.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/sections_copy.c b/examples/C/sections_copy.c index 55ad776b3..f597a216c 100644 --- a/examples/C/sections_copy.c +++ b/examples/C/sections_copy.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/sections_copy.sh b/examples/C/sections_copy.sh index 93dc39817..a76549241 100755 --- a/examples/C/sections_copy.sh +++ b/examples/C/sections_copy.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/set_missing.c b/examples/C/set_missing.c index e8783b24a..bb7ae284a 100644 --- a/examples/C/set_missing.c +++ b/examples/C/set_missing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/set_missing.sh b/examples/C/set_missing.sh index ff9be97e1..0d3ecb1e3 100755 --- a/examples/C/set_missing.sh +++ b/examples/C/set_missing.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/C/values_check.c b/examples/C/values_check.c index cba687aac..de6d22e37 100644 --- a/examples/C/values_check.c +++ b/examples/C/values_check.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_attributes.f90 b/examples/F90/bufr_attributes.f90 index ccffbd0c6..4ffe812bb 100644 --- a/examples/F90/bufr_attributes.f90 +++ b/examples/F90/bufr_attributes.f90 @@ -1,5 +1,5 @@ ! -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_attributes.sh b/examples/F90/bufr_attributes.sh index 0f2a39d66..0802d52ba 100755 --- a/examples/F90/bufr_attributes.sh +++ b/examples/F90/bufr_attributes.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_clone.f90 b/examples/F90/bufr_clone.f90 index 77a073ed6..ae0c07772 100644 --- a/examples/F90/bufr_clone.f90 +++ b/examples/F90/bufr_clone.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_clone.sh b/examples/F90/bufr_clone.sh index d97b756c5..60a8fef97 100755 --- a/examples/F90/bufr_clone.sh +++ b/examples/F90/bufr_clone.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_copy_data.f90 b/examples/F90/bufr_copy_data.f90 index 443700527..1b561f70f 100644 --- a/examples/F90/bufr_copy_data.f90 +++ b/examples/F90/bufr_copy_data.f90 @@ -1,5 +1,5 @@ ! -!Copyright 2005-2018 ECMWF. +!Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 !which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_copy_data.sh b/examples/F90/bufr_copy_data.sh index 8d99f9e38..086e28d8d 100755 --- a/examples/F90/bufr_copy_data.sh +++ b/examples/F90/bufr_copy_data.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_copy_keys.f90 b/examples/F90/bufr_copy_keys.f90 index 569c762a4..94b6d3f70 100644 --- a/examples/F90/bufr_copy_keys.f90 +++ b/examples/F90/bufr_copy_keys.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_copy_keys.sh b/examples/F90/bufr_copy_keys.sh index 8dbf89168..ecc109fb5 100755 --- a/examples/F90/bufr_copy_keys.sh +++ b/examples/F90/bufr_copy_keys.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_copy_message.f90 b/examples/F90/bufr_copy_message.f90 index 4e37eab8f..167a443d3 100644 --- a/examples/F90/bufr_copy_message.f90 +++ b/examples/F90/bufr_copy_message.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_copy_message.sh b/examples/F90/bufr_copy_message.sh index 44bf3e9db..4078bc01e 100755 --- a/examples/F90/bufr_copy_message.sh +++ b/examples/F90/bufr_copy_message.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_expanded.f90 b/examples/F90/bufr_expanded.f90 index 2a5d76918..f16c554b3 100644 --- a/examples/F90/bufr_expanded.f90 +++ b/examples/F90/bufr_expanded.f90 @@ -1,5 +1,5 @@ ! -!Copyright 2005-2018 ECMWF. +!Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 !which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_expanded.sh b/examples/F90/bufr_expanded.sh index d15b51307..ccf816306 100755 --- a/examples/F90/bufr_expanded.sh +++ b/examples/F90/bufr_expanded.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_get_keys.f90 b/examples/F90/bufr_get_keys.f90 index 5e4003178..80947c0e1 100644 --- a/examples/F90/bufr_get_keys.f90 +++ b/examples/F90/bufr_get_keys.f90 @@ -1,5 +1,5 @@ ! -!Copyright 2005-2018 ECMWF. +!Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 !which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_get_keys.sh b/examples/F90/bufr_get_keys.sh index e43ba8ea5..118abca06 100755 --- a/examples/F90/bufr_get_keys.sh +++ b/examples/F90/bufr_get_keys.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_get_string_array.f90 b/examples/F90/bufr_get_string_array.f90 index 936a0368c..dbc4462b8 100644 --- a/examples/F90/bufr_get_string_array.f90 +++ b/examples/F90/bufr_get_string_array.f90 @@ -1,5 +1,5 @@ ! -!Copyright 2005-2018 ECMWF. +!Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 !which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_get_string_array.sh b/examples/F90/bufr_get_string_array.sh index fbf65dd16..e469e7cc5 100755 --- a/examples/F90/bufr_get_string_array.sh +++ b/examples/F90/bufr_get_string_array.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_keys_iterator.f90 b/examples/F90/bufr_keys_iterator.f90 index 772b495ce..3c20c7172 100644 --- a/examples/F90/bufr_keys_iterator.f90 +++ b/examples/F90/bufr_keys_iterator.f90 @@ -1,5 +1,5 @@ ! -!Copyright 2005-2018 ECMWF. +!Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 !which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_keys_iterator.sh b/examples/F90/bufr_keys_iterator.sh index c6f11f361..b3190cec2 100755 --- a/examples/F90/bufr_keys_iterator.sh +++ b/examples/F90/bufr_keys_iterator.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_read_header.f90 b/examples/F90/bufr_read_header.f90 index 2628710e2..c14cddd3f 100644 --- a/examples/F90/bufr_read_header.f90 +++ b/examples/F90/bufr_read_header.f90 @@ -1,5 +1,5 @@ ! -!Copyright 2005-2018 ECMWF. +!Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 !which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_read_header.sh b/examples/F90/bufr_read_header.sh index 21296348b..02993f895 100755 --- a/examples/F90/bufr_read_header.sh +++ b/examples/F90/bufr_read_header.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_read_scatterometer.f90 b/examples/F90/bufr_read_scatterometer.f90 index a2bd75c28..16e615cc6 100644 --- a/examples/F90/bufr_read_scatterometer.f90 +++ b/examples/F90/bufr_read_scatterometer.f90 @@ -1,5 +1,5 @@ ! -!Copyright 2005-2018 ECMWF. +!Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 !which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_read_scatterometer.sh b/examples/F90/bufr_read_scatterometer.sh index 1d041ce9f..997e56a01 100755 --- a/examples/F90/bufr_read_scatterometer.sh +++ b/examples/F90/bufr_read_scatterometer.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_read_synop.f90 b/examples/F90/bufr_read_synop.f90 index e97641c8c..31e0334fd 100644 --- a/examples/F90/bufr_read_synop.f90 +++ b/examples/F90/bufr_read_synop.f90 @@ -1,5 +1,5 @@ ! -!Copyright 2005-2018 ECMWF. +!Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 !which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_read_synop.sh b/examples/F90/bufr_read_synop.sh index 3adc11aff..c6529abd5 100755 --- a/examples/F90/bufr_read_synop.sh +++ b/examples/F90/bufr_read_synop.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_read_temp.f90 b/examples/F90/bufr_read_temp.f90 index 9f10175b0..ca5a5a876 100644 --- a/examples/F90/bufr_read_temp.f90 +++ b/examples/F90/bufr_read_temp.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_read_temp.sh b/examples/F90/bufr_read_temp.sh index a3dc7b4ca..56573e14b 100755 --- a/examples/F90/bufr_read_temp.sh +++ b/examples/F90/bufr_read_temp.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_read_tropical_cyclone.f90 b/examples/F90/bufr_read_tropical_cyclone.f90 index f2ed9b06b..e1bc5560f 100644 --- a/examples/F90/bufr_read_tropical_cyclone.f90 +++ b/examples/F90/bufr_read_tropical_cyclone.f90 @@ -1,5 +1,5 @@ -!Copyright 2005-2018 ECMWF. +!Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 !which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_read_tropical_cyclone.sh b/examples/F90/bufr_read_tropical_cyclone.sh index bdf56624a..0bc86aa95 100755 --- a/examples/F90/bufr_read_tropical_cyclone.sh +++ b/examples/F90/bufr_read_tropical_cyclone.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_set_keys.f90 b/examples/F90/bufr_set_keys.f90 index e9dbb62d8..22705fe8d 100644 --- a/examples/F90/bufr_set_keys.f90 +++ b/examples/F90/bufr_set_keys.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_set_keys.sh b/examples/F90/bufr_set_keys.sh index 01cfb9b2c..fd8d2bd36 100755 --- a/examples/F90/bufr_set_keys.sh +++ b/examples/F90/bufr_set_keys.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_subset.f90 b/examples/F90/bufr_subset.f90 index 6aa562c5b..a8a327564 100644 --- a/examples/F90/bufr_subset.f90 +++ b/examples/F90/bufr_subset.f90 @@ -1,5 +1,5 @@ ! -!Copyright 2005-2018 ECMWF. +!Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 !which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/bufr_subset.sh b/examples/F90/bufr_subset.sh index 895f04f91..80d44e649 100755 --- a/examples/F90/bufr_subset.sh +++ b/examples/F90/bufr_subset.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/get_fortran.f90 b/examples/F90/get_fortran.f90 index 8d74d43a1..5ebe81a07 100644 --- a/examples/F90/get_fortran.f90 +++ b/examples/F90/get_fortran.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/get_pl.f90 b/examples/F90/get_pl.f90 index 0a6c59e2b..59b29108e 100644 --- a/examples/F90/get_pl.f90 +++ b/examples/F90/get_pl.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/get_pl.sh b/examples/F90/get_pl.sh index 72a63ea36..2953dd9e7 100755 --- a/examples/F90/get_pl.sh +++ b/examples/F90/get_pl.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/get_product_kind.f90 b/examples/F90/get_product_kind.f90 index 0c30221d3..582cfc5de 100644 --- a/examples/F90/get_product_kind.f90 +++ b/examples/F90/get_product_kind.f90 @@ -1,5 +1,5 @@ ! -!Copyright 2005-2018 ECMWF. +!Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 !which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/get_product_kind.sh b/examples/F90/get_product_kind.sh index c0eccd0d3..fa1dc9f61 100755 --- a/examples/F90/get_product_kind.sh +++ b/examples/F90/get_product_kind.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/get_pv.f90 b/examples/F90/get_pv.f90 index 3c9c9df32..1c9200a65 100644 --- a/examples/F90/get_pv.f90 +++ b/examples/F90/get_pv.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/get_pv.sh b/examples/F90/get_pv.sh index b8078e516..ac432e076 100755 --- a/examples/F90/get_pv.sh +++ b/examples/F90/get_pv.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/get_set_uuid.f90 b/examples/F90/get_set_uuid.f90 index d059ae2b3..f4f4d6118 100644 --- a/examples/F90/get_set_uuid.f90 +++ b/examples/F90/get_set_uuid.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/get_set_uuid.sh b/examples/F90/get_set_uuid.sh index 823206562..9ba8c0398 100755 --- a/examples/F90/get_set_uuid.sh +++ b/examples/F90/get_set_uuid.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_clone.f90 b/examples/F90/grib_clone.f90 index d91e28839..232abc5fe 100644 --- a/examples/F90/grib_clone.f90 +++ b/examples/F90/grib_clone.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_clone.sh b/examples/F90/grib_clone.sh index 1887b61fa..f3d1361b6 100755 --- a/examples/F90/grib_clone.sh +++ b/examples/F90/grib_clone.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_copy_message.f90 b/examples/F90/grib_copy_message.f90 index 08d7d5cbb..159b3609d 100644 --- a/examples/F90/grib_copy_message.f90 +++ b/examples/F90/grib_copy_message.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_copy_message.sh b/examples/F90/grib_copy_message.sh index a700947e3..730536d81 100755 --- a/examples/F90/grib_copy_message.sh +++ b/examples/F90/grib_copy_message.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_copy_namespace.f90 b/examples/F90/grib_copy_namespace.f90 index 99659fc7e..7ef09c36a 100644 --- a/examples/F90/grib_copy_namespace.f90 +++ b/examples/F90/grib_copy_namespace.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_copy_namespace.sh b/examples/F90/grib_copy_namespace.sh index 0fb5f9251..b14af3632 100755 --- a/examples/F90/grib_copy_namespace.sh +++ b/examples/F90/grib_copy_namespace.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_count_messages.f90 b/examples/F90/grib_count_messages.f90 index 5a105de23..ab977d70d 100644 --- a/examples/F90/grib_count_messages.f90 +++ b/examples/F90/grib_count_messages.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_count_messages.sh b/examples/F90/grib_count_messages.sh index 129aa03cb..1f08f31b1 100755 --- a/examples/F90/grib_count_messages.sh +++ b/examples/F90/grib_count_messages.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_count_messages_multi.f90 b/examples/F90/grib_count_messages_multi.f90 index b06631b3b..715464db8 100644 --- a/examples/F90/grib_count_messages_multi.f90 +++ b/examples/F90/grib_count_messages_multi.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_count_messages_multi.sh b/examples/F90/grib_count_messages_multi.sh index 41691dcd7..2ce515ecb 100755 --- a/examples/F90/grib_count_messages_multi.sh +++ b/examples/F90/grib_count_messages_multi.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_ecc-671.f90 b/examples/F90/grib_ecc-671.f90 index 8a02233c8..c2a1d3f06 100644 --- a/examples/F90/grib_ecc-671.f90 +++ b/examples/F90/grib_ecc-671.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_ecc-671.sh b/examples/F90/grib_ecc-671.sh index a0f80e41e..421f00b22 100755 --- a/examples/F90/grib_ecc-671.sh +++ b/examples/F90/grib_ecc-671.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_get_data.f90 b/examples/F90/grib_get_data.f90 index bb8f65170..63492aa80 100644 --- a/examples/F90/grib_get_data.f90 +++ b/examples/F90/grib_get_data.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_get_data.sh b/examples/F90/grib_get_data.sh index 47db9e321..34097bfea 100755 --- a/examples/F90/grib_get_data.sh +++ b/examples/F90/grib_get_data.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_get_keys.f90 b/examples/F90/grib_get_keys.f90 index 2039dcede..071a433bc 100644 --- a/examples/F90/grib_get_keys.f90 +++ b/examples/F90/grib_get_keys.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_get_keys.sh b/examples/F90/grib_get_keys.sh index 2ba5ad200..b9b8fd42c 100755 --- a/examples/F90/grib_get_keys.sh +++ b/examples/F90/grib_get_keys.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_index.f90 b/examples/F90/grib_index.f90 index 7b69e0f94..bbb13ffaa 100644 --- a/examples/F90/grib_index.f90 +++ b/examples/F90/grib_index.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_index.sh b/examples/F90/grib_index.sh index c24bbc732..d2259928a 100755 --- a/examples/F90/grib_index.sh +++ b/examples/F90/grib_index.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_keys_iterator.f90 b/examples/F90/grib_keys_iterator.f90 index d43c13785..085ae093f 100644 --- a/examples/F90/grib_keys_iterator.f90 +++ b/examples/F90/grib_keys_iterator.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_keys_iterator.sh b/examples/F90/grib_keys_iterator.sh index d294ce5f9..e087d4bc6 100755 --- a/examples/F90/grib_keys_iterator.sh +++ b/examples/F90/grib_keys_iterator.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_multi.f90 b/examples/F90/grib_multi.f90 index f663d4546..98b5b833f 100644 --- a/examples/F90/grib_multi.f90 +++ b/examples/F90/grib_multi.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_multi.sh b/examples/F90/grib_multi.sh index d0e49f32d..cb34d3d48 100755 --- a/examples/F90/grib_multi.sh +++ b/examples/F90/grib_multi.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_multi_write.f90 b/examples/F90/grib_multi_write.f90 index 1f418d3ea..6bd1eea8c 100644 --- a/examples/F90/grib_multi_write.f90 +++ b/examples/F90/grib_multi_write.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_multi_write.sh b/examples/F90/grib_multi_write.sh index fbb20ec2c..cb2cd274e 100755 --- a/examples/F90/grib_multi_write.sh +++ b/examples/F90/grib_multi_write.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_nearest.f90 b/examples/F90/grib_nearest.f90 index e8d87d7ec..9dcb4b321 100644 --- a/examples/F90/grib_nearest.f90 +++ b/examples/F90/grib_nearest.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_nearest.sh b/examples/F90/grib_nearest.sh index fa5a56524..7c4110219 100755 --- a/examples/F90/grib_nearest.sh +++ b/examples/F90/grib_nearest.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_precision.f90 b/examples/F90/grib_precision.f90 index 89b179d90..08d02aacb 100644 --- a/examples/F90/grib_precision.f90 +++ b/examples/F90/grib_precision.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_precision.sh b/examples/F90/grib_precision.sh index 940fd4e96..8d106930b 100755 --- a/examples/F90/grib_precision.sh +++ b/examples/F90/grib_precision.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_print_data.f90 b/examples/F90/grib_print_data.f90 index 0da83a366..909030f9f 100644 --- a/examples/F90/grib_print_data.f90 +++ b/examples/F90/grib_print_data.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_print_data.sh b/examples/F90/grib_print_data.sh index 9a549a7d4..4d667c85d 100755 --- a/examples/F90/grib_print_data.sh +++ b/examples/F90/grib_print_data.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_print_data_static.f90 b/examples/F90/grib_print_data_static.f90 index 7510f6540..0f9f071b3 100644 --- a/examples/F90/grib_print_data_static.f90 +++ b/examples/F90/grib_print_data_static.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_samples.f90 b/examples/F90/grib_samples.f90 index c6ce1411f..c2667572e 100644 --- a/examples/F90/grib_samples.f90 +++ b/examples/F90/grib_samples.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_samples.sh b/examples/F90/grib_samples.sh index e3c781c3b..ac6611a87 100755 --- a/examples/F90/grib_samples.sh +++ b/examples/F90/grib_samples.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_set_bitmap.f90 b/examples/F90/grib_set_bitmap.f90 index 4608ef417..20e0490d5 100644 --- a/examples/F90/grib_set_bitmap.f90 +++ b/examples/F90/grib_set_bitmap.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_set_bitmap.sh b/examples/F90/grib_set_bitmap.sh index c47317cfc..534691605 100755 --- a/examples/F90/grib_set_bitmap.sh +++ b/examples/F90/grib_set_bitmap.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_set_data.f90 b/examples/F90/grib_set_data.f90 index 1b0e48296..65149f6c5 100644 --- a/examples/F90/grib_set_data.f90 +++ b/examples/F90/grib_set_data.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_set_data.sh b/examples/F90/grib_set_data.sh index e8109178e..9e63ddffe 100755 --- a/examples/F90/grib_set_data.sh +++ b/examples/F90/grib_set_data.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_set_gvc.f90 b/examples/F90/grib_set_gvc.f90 index 813a6a895..5b570a8b8 100644 --- a/examples/F90/grib_set_gvc.f90 +++ b/examples/F90/grib_set_gvc.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_set_keys.f90 b/examples/F90/grib_set_keys.f90 index dd488f65c..123ead546 100644 --- a/examples/F90/grib_set_keys.f90 +++ b/examples/F90/grib_set_keys.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_set_keys.sh b/examples/F90/grib_set_keys.sh index 5bce26dbb..79270a42c 100755 --- a/examples/F90/grib_set_keys.sh +++ b/examples/F90/grib_set_keys.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_set_missing.f90 b/examples/F90/grib_set_missing.f90 index 8e0c94239..2b5abec52 100644 --- a/examples/F90/grib_set_missing.f90 +++ b/examples/F90/grib_set_missing.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_set_missing.sh b/examples/F90/grib_set_missing.sh index 44f8d511d..e0353668d 100755 --- a/examples/F90/grib_set_missing.sh +++ b/examples/F90/grib_set_missing.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_set_pv.f90 b/examples/F90/grib_set_pv.f90 index 7781f0bb0..7dbbc41d2 100644 --- a/examples/F90/grib_set_pv.f90 +++ b/examples/F90/grib_set_pv.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/grib_set_pv.sh b/examples/F90/grib_set_pv.sh index d2dcca8d8..04f65ed0e 100755 --- a/examples/F90/grib_set_pv.sh +++ b/examples/F90/grib_set_pv.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/include.sh b/examples/F90/include.sh index bd85956a9..54f716e40 100755 --- a/examples/F90/include.sh +++ b/examples/F90/include.sh @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/iterator_fortran.f90 b/examples/F90/iterator_fortran.f90 index d51403723..e540daa3d 100644 --- a/examples/F90/iterator_fortran.f90 +++ b/examples/F90/iterator_fortran.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/keys_iterator_fortran.f90 b/examples/F90/keys_iterator_fortran.f90 index 020e38d45..5be973a7a 100644 --- a/examples/F90/keys_iterator_fortran.f90 +++ b/examples/F90/keys_iterator_fortran.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/multi_fortran.f90 b/examples/F90/multi_fortran.f90 index 61ff43a4a..ab08f1943 100644 --- a/examples/F90/multi_fortran.f90 +++ b/examples/F90/multi_fortran.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/new_from_file.f90 b/examples/F90/new_from_file.f90 index 47e25b4f9..6b4459f62 100644 --- a/examples/F90/new_from_file.f90 +++ b/examples/F90/new_from_file.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/precision_fortran.f90 b/examples/F90/precision_fortran.f90 index 24ddbf183..61db04510 100644 --- a/examples/F90/precision_fortran.f90 +++ b/examples/F90/precision_fortran.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/print_data_fortran.f90 b/examples/F90/print_data_fortran.f90 index ade610479..55983e66e 100644 --- a/examples/F90/print_data_fortran.f90 +++ b/examples/F90/print_data_fortran.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/read_from_file.f90 b/examples/F90/read_from_file.f90 index b712f76ce..97835cf75 100644 --- a/examples/F90/read_from_file.f90 +++ b/examples/F90/read_from_file.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/read_from_file.sh b/examples/F90/read_from_file.sh index e9530af61..886016d48 100755 --- a/examples/F90/read_from_file.sh +++ b/examples/F90/read_from_file.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/read_message.f90 b/examples/F90/read_message.f90 index 2a6be435e..131a39b34 100644 --- a/examples/F90/read_message.f90 +++ b/examples/F90/read_message.f90 @@ -1,5 +1,5 @@ ! -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/read_message.sh b/examples/F90/read_message.sh index 3cce12b20..b2ada6a55 100755 --- a/examples/F90/read_message.sh +++ b/examples/F90/read_message.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/set_fortran.f90 b/examples/F90/set_fortran.f90 index ccb1f8b63..0579e6a83 100644 --- a/examples/F90/set_fortran.f90 +++ b/examples/F90/set_fortran.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/F90/set_missing_fortran.f90 b/examples/F90/set_missing_fortran.f90 index 36114f5bb..ef2837ed1 100644 --- a/examples/F90/set_missing_fortran.f90 +++ b/examples/F90/set_missing_fortran.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/deprecated/fieldset.c b/examples/deprecated/fieldset.c index 4b9a49fb3..91909058e 100644 --- a/examples/deprecated/fieldset.c +++ b/examples/deprecated/fieldset.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/deprecated/get.c b/examples/deprecated/get.c index 830dd9a70..149676e86 100644 --- a/examples/deprecated/get.c +++ b/examples/deprecated/get.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/deprecated/get_fortran.F b/examples/deprecated/get_fortran.F index 19e7d6be8..3cedfaa7d 100644 --- a/examples/deprecated/get_fortran.F +++ b/examples/deprecated/get_fortran.F @@ -1,4 +1,4 @@ -C Copyright 2005-2018 ECMWF. +C Copyright 2005-2019 ECMWF. C C This software is licensed under the terms of the Apache Licence Version 2.0 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/deprecated/grib_precipitation.c b/examples/deprecated/grib_precipitation.c index 051c4aa98..8fa29e696 100644 --- a/examples/deprecated/grib_precipitation.c +++ b/examples/deprecated/grib_precipitation.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/deprecated/iterator.c b/examples/deprecated/iterator.c index 0c168a263..57457c54a 100644 --- a/examples/deprecated/iterator.c +++ b/examples/deprecated/iterator.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/deprecated/iterator_fortran.F b/examples/deprecated/iterator_fortran.F index 846af195a..caa1b55d5 100644 --- a/examples/deprecated/iterator_fortran.F +++ b/examples/deprecated/iterator_fortran.F @@ -1,4 +1,4 @@ -C Copyright 2005-2018 ECMWF. +C Copyright 2005-2019 ECMWF. C C This software is licensed under the terms of the Apache Licence Version 2.0 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/deprecated/keys_iterator.c b/examples/deprecated/keys_iterator.c index 33f95c821..a82ae527d 100644 --- a/examples/deprecated/keys_iterator.c +++ b/examples/deprecated/keys_iterator.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/deprecated/keys_iterator_fortran.F b/examples/deprecated/keys_iterator_fortran.F index 6082864c0..f173be932 100644 --- a/examples/deprecated/keys_iterator_fortran.F +++ b/examples/deprecated/keys_iterator_fortran.F @@ -1,4 +1,4 @@ -C Copyright 2005-2018 ECMWF. +C Copyright 2005-2019 ECMWF. C C This software is licensed under the terms of the Apache Licence Version 2.0 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/deprecated/multi.c b/examples/deprecated/multi.c index 9d5973901..6eb780fb4 100644 --- a/examples/deprecated/multi.c +++ b/examples/deprecated/multi.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/deprecated/multi_fortran.F b/examples/deprecated/multi_fortran.F index b568d0edc..29b363cad 100644 --- a/examples/deprecated/multi_fortran.F +++ b/examples/deprecated/multi_fortran.F @@ -1,4 +1,4 @@ -C Copyright 2005-2018 ECMWF. +C Copyright 2005-2019 ECMWF. C C This software is licensed under the terms of the Apache Licence Version 2.0 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/deprecated/nearest.c b/examples/deprecated/nearest.c index d133819bb..0b3b864b8 100644 --- a/examples/deprecated/nearest.c +++ b/examples/deprecated/nearest.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/deprecated/precision.c b/examples/deprecated/precision.c index bc94918d3..71cb1c076 100644 --- a/examples/deprecated/precision.c +++ b/examples/deprecated/precision.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/deprecated/precision_fortran.F b/examples/deprecated/precision_fortran.F index ce662996c..fe44f380b 100644 --- a/examples/deprecated/precision_fortran.F +++ b/examples/deprecated/precision_fortran.F @@ -1,4 +1,4 @@ -C Copyright 2005-2018 ECMWF. +C Copyright 2005-2019 ECMWF. C C This software is licensed under the terms of the Apache Licence Version 2.0 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/deprecated/print_data.c b/examples/deprecated/print_data.c index d3e179cfc..ba2c89557 100644 --- a/examples/deprecated/print_data.c +++ b/examples/deprecated/print_data.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/deprecated/print_data_fortran.F b/examples/deprecated/print_data_fortran.F index c3f8a11e2..25a61b62a 100644 --- a/examples/deprecated/print_data_fortran.F +++ b/examples/deprecated/print_data_fortran.F @@ -1,4 +1,4 @@ -C Copyright 2005-2018 ECMWF. +C Copyright 2005-2019 ECMWF. C C This software is licensed under the terms of the Apache Licence Version 2.0 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/deprecated/set.c b/examples/deprecated/set.c index 135a2b6c3..602ded937 100644 --- a/examples/deprecated/set.c +++ b/examples/deprecated/set.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/deprecated/set_bitmap.c b/examples/deprecated/set_bitmap.c index c78c47224..e9dc4a745 100644 --- a/examples/deprecated/set_bitmap.c +++ b/examples/deprecated/set_bitmap.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/deprecated/set_fortran.F b/examples/deprecated/set_fortran.F index b9b911426..4058ab53a 100644 --- a/examples/deprecated/set_fortran.F +++ b/examples/deprecated/set_fortran.F @@ -1,4 +1,4 @@ -C Copyright 2005-2018 ECMWF. +C Copyright 2005-2019 ECMWF. C C This software is licensed under the terms of the Apache Licence Version 2.0 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/deprecated/set_pv.c b/examples/deprecated/set_pv.c index 3aa4d8b18..0e3fbace5 100644 --- a/examples/deprecated/set_pv.c +++ b/examples/deprecated/set_pv.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/deprecated/set_pv_fortran.F b/examples/deprecated/set_pv_fortran.F index b74f6f5d2..47b9cea5a 100644 --- a/examples/deprecated/set_pv_fortran.F +++ b/examples/deprecated/set_pv_fortran.F @@ -1,4 +1,4 @@ -C Copyright 2005-2018 ECMWF. +C Copyright 2005-2019 ECMWF. C C This software is licensed under the terms of the Apache Licence Version 2.0 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/extra/ens_mean.f90 b/examples/extra/ens_mean.f90 index 3410f7c8f..653abdddd 100644 --- a/examples/extra/ens_mean.f90 +++ b/examples/extra/ens_mean.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/extra/f_clone.f90 b/examples/extra/f_clone.f90 index 335f1dfff..17f29297d 100755 --- a/examples/extra/f_clone.f90 +++ b/examples/extra/f_clone.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/extra/message_count_multi.f90 b/examples/extra/message_count_multi.f90 index 3b8412e52..4e10fca3a 100644 --- a/examples/extra/message_count_multi.f90 +++ b/examples/extra/message_count_multi.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/binary_message.py b/examples/python/binary_message.py index 93bf219c1..11049f66f 100644 --- a/examples/python/binary_message.py +++ b/examples/python/binary_message.py @@ -1,5 +1,5 @@ # -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_attributes.py b/examples/python/bufr_attributes.py index 662ea28d9..f9de3251b 100644 --- a/examples/python/bufr_attributes.py +++ b/examples/python/bufr_attributes.py @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_attributes.sh b/examples/python/bufr_attributes.sh index 3e53d1120..71aa171b8 100755 --- a/examples/python/bufr_attributes.sh +++ b/examples/python/bufr_attributes.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_clone.py b/examples/python/bufr_clone.py index d0053d514..243c2e38e 100644 --- a/examples/python/bufr_clone.py +++ b/examples/python/bufr_clone.py @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_clone.sh b/examples/python/bufr_clone.sh index 8e347b6f8..53624e38a 100755 --- a/examples/python/bufr_clone.sh +++ b/examples/python/bufr_clone.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_copy_data.py b/examples/python/bufr_copy_data.py index 4ec4dcbe9..f56a87612 100644 --- a/examples/python/bufr_copy_data.py +++ b/examples/python/bufr_copy_data.py @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_copy_data.sh b/examples/python/bufr_copy_data.sh index b93b4743a..0eb85a595 100755 --- a/examples/python/bufr_copy_data.sh +++ b/examples/python/bufr_copy_data.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_copy_data2.py b/examples/python/bufr_copy_data2.py index 7f05768a4..03f9b423f 100644 --- a/examples/python/bufr_copy_data2.py +++ b/examples/python/bufr_copy_data2.py @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_ecc-448.py b/examples/python/bufr_ecc-448.py index 604631340..f441f769c 100644 --- a/examples/python/bufr_ecc-448.py +++ b/examples/python/bufr_ecc-448.py @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_ecc-448.sh b/examples/python/bufr_ecc-448.sh index a75431aef..802266dd1 100755 --- a/examples/python/bufr_ecc-448.sh +++ b/examples/python/bufr_ecc-448.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_ecc-869.sh b/examples/python/bufr_ecc-869.sh index 162603c2d..c874445a2 100755 --- a/examples/python/bufr_ecc-869.sh +++ b/examples/python/bufr_ecc-869.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_encode_flight.py b/examples/python/bufr_encode_flight.py index 9f8d4c340..0491cb310 100644 --- a/examples/python/bufr_encode_flight.py +++ b/examples/python/bufr_encode_flight.py @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_expanded.py b/examples/python/bufr_expanded.py index 0506d9e77..e26f04fb8 100644 --- a/examples/python/bufr_expanded.py +++ b/examples/python/bufr_expanded.py @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_expanded.sh b/examples/python/bufr_expanded.sh index d9d287cdc..89fdbf01b 100755 --- a/examples/python/bufr_expanded.sh +++ b/examples/python/bufr_expanded.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_get_keys.py b/examples/python/bufr_get_keys.py index a32674d6e..24c23ec96 100644 --- a/examples/python/bufr_get_keys.py +++ b/examples/python/bufr_get_keys.py @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_get_keys.sh b/examples/python/bufr_get_keys.sh index 4eccaa295..186ea268c 100755 --- a/examples/python/bufr_get_keys.sh +++ b/examples/python/bufr_get_keys.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_keys_iterator.py b/examples/python/bufr_keys_iterator.py index 880779e76..21dc68563 100644 --- a/examples/python/bufr_keys_iterator.py +++ b/examples/python/bufr_keys_iterator.py @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_keys_iterator.sh b/examples/python/bufr_keys_iterator.sh index 6e896bf7c..e968fe7ff 100755 --- a/examples/python/bufr_keys_iterator.sh +++ b/examples/python/bufr_keys_iterator.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_read_header.py b/examples/python/bufr_read_header.py index 084df82e6..f8e20b076 100644 --- a/examples/python/bufr_read_header.py +++ b/examples/python/bufr_read_header.py @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_read_sample.py b/examples/python/bufr_read_sample.py index 55db06eef..d7c21b15e 100644 --- a/examples/python/bufr_read_sample.py +++ b/examples/python/bufr_read_sample.py @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_read_sample.sh b/examples/python/bufr_read_sample.sh index 3e0886fc8..fabfff5c6 100755 --- a/examples/python/bufr_read_sample.sh +++ b/examples/python/bufr_read_sample.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_read_scatterometer.py b/examples/python/bufr_read_scatterometer.py index 5e74afe98..c387410c1 100644 --- a/examples/python/bufr_read_scatterometer.py +++ b/examples/python/bufr_read_scatterometer.py @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_read_scatterometer.sh b/examples/python/bufr_read_scatterometer.sh index bc81c125b..f586d902b 100755 --- a/examples/python/bufr_read_scatterometer.sh +++ b/examples/python/bufr_read_scatterometer.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_read_synop.py b/examples/python/bufr_read_synop.py index 1dfc93804..38c4f69b9 100644 --- a/examples/python/bufr_read_synop.py +++ b/examples/python/bufr_read_synop.py @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_read_synop.sh b/examples/python/bufr_read_synop.sh index 6bd88e33b..8e4fb79aa 100755 --- a/examples/python/bufr_read_synop.sh +++ b/examples/python/bufr_read_synop.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_read_temp.py b/examples/python/bufr_read_temp.py index 7b1ab034a..7dbd14b35 100644 --- a/examples/python/bufr_read_temp.py +++ b/examples/python/bufr_read_temp.py @@ -1,5 +1,5 @@ # -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_read_temp.sh b/examples/python/bufr_read_temp.sh index dc8f4c7fa..4ffa0927f 100755 --- a/examples/python/bufr_read_temp.sh +++ b/examples/python/bufr_read_temp.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_read_tropical_cyclone.py b/examples/python/bufr_read_tropical_cyclone.py index 1b7b87708..daf58da0a 100644 --- a/examples/python/bufr_read_tropical_cyclone.py +++ b/examples/python/bufr_read_tropical_cyclone.py @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_read_tropical_cyclone.sh b/examples/python/bufr_read_tropical_cyclone.sh index a7a463f8b..db93bd3c1 100755 --- a/examples/python/bufr_read_tropical_cyclone.sh +++ b/examples/python/bufr_read_tropical_cyclone.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_set_keys.py b/examples/python/bufr_set_keys.py index c976d0bdd..2a238aa87 100644 --- a/examples/python/bufr_set_keys.py +++ b/examples/python/bufr_set_keys.py @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_set_keys.sh b/examples/python/bufr_set_keys.sh index 8d7d8d68b..bc1c87221 100755 --- a/examples/python/bufr_set_keys.sh +++ b/examples/python/bufr_set_keys.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_subset.py b/examples/python/bufr_subset.py index 1356911e1..ba949e6f5 100644 --- a/examples/python/bufr_subset.py +++ b/examples/python/bufr_subset.py @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/bufr_subset.sh b/examples/python/bufr_subset.sh index 7dfe8cfce..789130a01 100755 --- a/examples/python/bufr_subset.sh +++ b/examples/python/bufr_subset.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/get_product_kind.py b/examples/python/get_product_kind.py index f6e57bd0b..640420b7b 100644 --- a/examples/python/get_product_kind.py +++ b/examples/python/get_product_kind.py @@ -1,5 +1,5 @@ # -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/get_product_kind.sh b/examples/python/get_product_kind.sh index 235b8cbec..c08272c87 100755 --- a/examples/python/get_product_kind.sh +++ b/examples/python/get_product_kind.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/grib_ccsds.py b/examples/python/grib_ccsds.py index 38b212d63..e8feb5ed1 100644 --- a/examples/python/grib_ccsds.py +++ b/examples/python/grib_ccsds.py @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/grib_clone.py b/examples/python/grib_clone.py index c165a318a..c7d1f487d 100644 --- a/examples/python/grib_clone.py +++ b/examples/python/grib_clone.py @@ -1,5 +1,5 @@ # -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/grib_count_messages.c b/examples/python/grib_count_messages.c index 059e43eeb..01259c629 100644 --- a/examples/python/grib_count_messages.c +++ b/examples/python/grib_count_messages.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/grib_count_messages.py b/examples/python/grib_count_messages.py index 12a5ac4e2..0747c6a65 100644 --- a/examples/python/grib_count_messages.py +++ b/examples/python/grib_count_messages.py @@ -1,5 +1,5 @@ # -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/grib_get_keys.py b/examples/python/grib_get_keys.py index d0d69b381..cdf558938 100644 --- a/examples/python/grib_get_keys.py +++ b/examples/python/grib_get_keys.py @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/grib_get_message_offset.py b/examples/python/grib_get_message_offset.py index ecd2dc6a6..39825da21 100644 --- a/examples/python/grib_get_message_offset.py +++ b/examples/python/grib_get_message_offset.py @@ -1,5 +1,5 @@ # -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/grib_get_message_offset.sh b/examples/python/grib_get_message_offset.sh index 2b6526c27..bd9aa0938 100755 --- a/examples/python/grib_get_message_offset.sh +++ b/examples/python/grib_get_message_offset.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/grib_index.py b/examples/python/grib_index.py index e6721505e..5ab535783 100644 --- a/examples/python/grib_index.py +++ b/examples/python/grib_index.py @@ -1,5 +1,5 @@ # -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/grib_iterator.c b/examples/python/grib_iterator.c index bb14418f4..b3f4bcad2 100644 --- a/examples/python/grib_iterator.c +++ b/examples/python/grib_iterator.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/grib_iterator.py b/examples/python/grib_iterator.py index e11350cf7..ac835e812 100644 --- a/examples/python/grib_iterator.py +++ b/examples/python/grib_iterator.py @@ -1,5 +1,5 @@ # -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/grib_iterator_bitmap.py b/examples/python/grib_iterator_bitmap.py index db448e641..c1901cc42 100644 --- a/examples/python/grib_iterator_bitmap.py +++ b/examples/python/grib_iterator_bitmap.py @@ -1,5 +1,5 @@ # -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/grib_keys_iterator.c b/examples/python/grib_keys_iterator.c index a7dca4c93..a1ce7f60a 100644 --- a/examples/python/grib_keys_iterator.c +++ b/examples/python/grib_keys_iterator.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/grib_keys_iterator.py b/examples/python/grib_keys_iterator.py index 0e834f4a0..c79d4e455 100644 --- a/examples/python/grib_keys_iterator.py +++ b/examples/python/grib_keys_iterator.py @@ -1,5 +1,5 @@ # -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/grib_ls_JSON.py b/examples/python/grib_ls_JSON.py index c179c198b..d692a2452 100644 --- a/examples/python/grib_ls_JSON.py +++ b/examples/python/grib_ls_JSON.py @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/grib_multi_write.py b/examples/python/grib_multi_write.py index 45550832d..4b0528ae6 100644 --- a/examples/python/grib_multi_write.py +++ b/examples/python/grib_multi_write.py @@ -1,5 +1,5 @@ # -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/grib_nearest.py b/examples/python/grib_nearest.py index 727a84c72..493d42b98 100644 --- a/examples/python/grib_nearest.py +++ b/examples/python/grib_nearest.py @@ -1,5 +1,5 @@ # -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/grib_print_data.c b/examples/python/grib_print_data.c index aed3c0058..a76ae8a0e 100644 --- a/examples/python/grib_print_data.c +++ b/examples/python/grib_print_data.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/grib_print_data.py b/examples/python/grib_print_data.py index 51f641419..c6209de4c 100644 --- a/examples/python/grib_print_data.py +++ b/examples/python/grib_print_data.py @@ -1,5 +1,5 @@ # -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/grib_read_sample.py b/examples/python/grib_read_sample.py index c8a14fdf1..6af421392 100644 --- a/examples/python/grib_read_sample.py +++ b/examples/python/grib_read_sample.py @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/grib_read_sample.sh b/examples/python/grib_read_sample.sh index 0e1e5bbfd..ed3e33749 100755 --- a/examples/python/grib_read_sample.sh +++ b/examples/python/grib_read_sample.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/grib_samples.py b/examples/python/grib_samples.py index f6a2b6b3c..8a7cf059a 100644 --- a/examples/python/grib_samples.py +++ b/examples/python/grib_samples.py @@ -1,5 +1,5 @@ # -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/grib_set_bitmap.py b/examples/python/grib_set_bitmap.py index 21ffd904f..db6be3372 100644 --- a/examples/python/grib_set_bitmap.py +++ b/examples/python/grib_set_bitmap.py @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/grib_set_keys.py b/examples/python/grib_set_keys.py index 4f9444621..ac26840eb 100644 --- a/examples/python/grib_set_keys.py +++ b/examples/python/grib_set_keys.py @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/grib_set_missing.py b/examples/python/grib_set_missing.py index 9a3e88282..c9259751a 100644 --- a/examples/python/grib_set_missing.py +++ b/examples/python/grib_set_missing.py @@ -1,5 +1,5 @@ # -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/grib_set_pv.py b/examples/python/grib_set_pv.py index 97ee2a105..8e22e7909 100644 --- a/examples/python/grib_set_pv.py +++ b/examples/python/grib_set_pv.py @@ -1,5 +1,5 @@ # -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/gts_get_keys.py b/examples/python/gts_get_keys.py index 885b9ae77..db837534b 100644 --- a/examples/python/gts_get_keys.py +++ b/examples/python/gts_get_keys.py @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/gts_get_keys.sh b/examples/python/gts_get_keys.sh index 73c3fd46b..c0ac8564b 100755 --- a/examples/python/gts_get_keys.sh +++ b/examples/python/gts_get_keys.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/keys_iterator_gts.py b/examples/python/keys_iterator_gts.py index 7a3277717..a5df0f1e3 100644 --- a/examples/python/keys_iterator_gts.py +++ b/examples/python/keys_iterator_gts.py @@ -1,5 +1,5 @@ # -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/metar_get_keys.py b/examples/python/metar_get_keys.py index 6d86b144d..bd24b4d7e 100644 --- a/examples/python/metar_get_keys.py +++ b/examples/python/metar_get_keys.py @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/examples/python/metar_get_keys.sh b/examples/python/metar_get_keys.sh index d79b56b95..3aa76c19d 100755 --- a/examples/python/metar_get_keys.sh +++ b/examples/python/metar_get_keys.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/fortran/create_grib_f90.sh b/fortran/create_grib_f90.sh index 488b20eb3..c7e006eac 100755 --- a/fortran/create_grib_f90.sh +++ b/fortran/create_grib_f90.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/fortran/eccodes_f90_head.f90 b/fortran/eccodes_f90_head.f90 index 8b5a7f882..ee4dcdb4c 100644 --- a/fortran/eccodes_f90_head.f90 +++ b/fortran/eccodes_f90_head.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/fortran/eccodes_f90_int.f90 b/fortran/eccodes_f90_int.f90 index 0bd070b98..a5ca7898c 100644 --- a/fortran/eccodes_f90_int.f90 +++ b/fortran/eccodes_f90_int.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/fortran/eccodes_f90_int_size_t.f90 b/fortran/eccodes_f90_int_size_t.f90 index dcb8884e6..2282ca4e4 100644 --- a/fortran/eccodes_f90_int_size_t.f90 +++ b/fortran/eccodes_f90_int_size_t.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/fortran/eccodes_f90_long_int.f90 b/fortran/eccodes_f90_long_int.f90 index bace61b3a..e3f582cdf 100644 --- a/fortran/eccodes_f90_long_int.f90 +++ b/fortran/eccodes_f90_long_int.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/fortran/eccodes_f90_long_size_t.f90 b/fortran/eccodes_f90_long_size_t.f90 index 10003dcfe..968ddc6f6 100644 --- a/fortran/eccodes_f90_long_size_t.f90 +++ b/fortran/eccodes_f90_long_size_t.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/fortran/grib_f77.c b/fortran/grib_f77.c index 8640732f8..792eaf45d 100644 --- a/fortran/grib_f77.c +++ b/fortran/grib_f77.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/fortran/grib_f90_head.f90 b/fortran/grib_f90_head.f90 index 6bbb35588..5045d8365 100644 --- a/fortran/grib_f90_head.f90 +++ b/fortran/grib_f90_head.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/fortran/grib_f90_int.f90 b/fortran/grib_f90_int.f90 index fe398f5c4..719abd440 100644 --- a/fortran/grib_f90_int.f90 +++ b/fortran/grib_f90_int.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/fortran/grib_f90_int_size_t.f90 b/fortran/grib_f90_int_size_t.f90 index 4f1a3d473..e83ba2721 100644 --- a/fortran/grib_f90_int_size_t.f90 +++ b/fortran/grib_f90_int_size_t.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/fortran/grib_f90_long_int.f90 b/fortran/grib_f90_long_int.f90 index 63f97453d..002d3b3a3 100644 --- a/fortran/grib_f90_long_int.f90 +++ b/fortran/grib_f90_long_int.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/fortran/grib_f90_long_size_t.f90 b/fortran/grib_f90_long_size_t.f90 index 60734ae2c..39d61ec3b 100644 --- a/fortran/grib_f90_long_size_t.f90 +++ b/fortran/grib_f90_long_size_t.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c index 8a0276a51..f77930a20 100644 --- a/fortran/grib_fortran.c +++ b/fortran/grib_fortran.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/fortran/grib_fortran_kinds.c b/fortran/grib_fortran_kinds.c index fce941cfd..ffd8780b0 100644 --- a/fortran/grib_fortran_kinds.c +++ b/fortran/grib_fortran_kinds.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/fortran/grib_fortran_prototypes.h b/fortran/grib_fortran_prototypes.h index ae9e1c585..d414384da 100644 --- a/fortran/grib_fortran_prototypes.h +++ b/fortran/grib_fortran_prototypes.h @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/fortran/grib_types.f90 b/fortran/grib_types.f90 index e3a174c07..e6eaff47f 100644 --- a/fortran/grib_types.f90 +++ b/fortran/grib_types.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/fortran/same_int_long.f90 b/fortran/same_int_long.f90 index fa3a705a9..41a7d82f6 100644 --- a/fortran/same_int_long.f90 +++ b/fortran/same_int_long.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/fortran/same_int_size_t.f90 b/fortran/same_int_size_t.f90 index 67f41ebe7..d28dfffa5 100644 --- a/fortran/same_int_size_t.f90 +++ b/fortran/same_int_size_t.f90 @@ -1,4 +1,4 @@ -! Copyright 2005-2018 ECMWF. +! Copyright 2005-2019 ECMWF. ! ! This software is licensed under the terms of the Apache Licence Version 2.0 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/license.pl b/license.pl index df39e6306..394a5b571 100755 --- a/license.pl +++ b/license.pl @@ -2,7 +2,7 @@ use strict; my $APACHE = <<"EOF"; -Copyright 2005-2018 ECMWF. +Copyright 2005-2019 ECMWF. This software is licensed under the terms of the Apache Licence Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/perf/jmeter.awk b/perf/jmeter.awk index 7ed39683e..603a848f5 100644 --- a/perf/jmeter.awk +++ b/perf/jmeter.awk @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/perf/time.sh b/perf/time.sh index 19110c55e..b16be6052 100755 --- a/perf/time.sh +++ b/perf/time.sh @@ -1,6 +1,6 @@ # This script times stuff to get nice reports -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/perl/GRIB-API/README b/perl/GRIB-API/README index 860305697..6b4f38114 100644 --- a/perl/GRIB-API/README +++ b/perl/GRIB-API/README @@ -28,7 +28,7 @@ This module requires these other modules and libraries: blah blah blah COPYRIGHT AND LICENCE -Copyright 2005-2018 ECMWF. +Copyright 2005-2019 ECMWF. This software is licensed under the terms of the Apache Licence Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/perl/GRIB-API/convert.pl b/perl/GRIB-API/convert.pl index 487ebac86..0c9a7a97d 100755 --- a/perl/GRIB-API/convert.pl +++ b/perl/GRIB-API/convert.pl @@ -1,5 +1,5 @@ #!/usr/bin/perl -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/perl/GRIB-API/lib/GRIB/API.pm b/perl/GRIB-API/lib/GRIB/API.pm index 3e7b97108..4e194dbd8 100644 --- a/perl/GRIB-API/lib/GRIB/API.pm +++ b/perl/GRIB-API/lib/GRIB/API.pm @@ -86,7 +86,7 @@ If you have a web site set up for your module, mention it here. Baudouin Raoult =head1 COPYRIGHT AND LICENSE -Copyright 2005-2018 ECMWF. +Copyright 2005-2019 ECMWF. This software is licensed under the terms of the Apache Licence Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/perl/GRIB-API/test.pl b/perl/GRIB-API/test.pl index 0ba0f4fa5..36f80ea1e 100755 --- a/perl/GRIB-API/test.pl +++ b/perl/GRIB-API/test.pl @@ -1,5 +1,5 @@ #!/usr/local/bin/perl56 -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/python/grib_interface.c b/python/grib_interface.c index 667996656..5c73d24f6 100644 --- a/python/grib_interface.c +++ b/python/grib_interface.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/python/gribapi.c b/python/gribapi.c index 79548ac5b..2c9f15d94 100644 --- a/python/gribapi.c +++ b/python/gribapi.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/python3/grib_interface.c b/python3/grib_interface.c index 62b09d066..c3f8db02f 100644 --- a/python3/grib_interface.c +++ b/python3/grib_interface.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/python3/gribapi.c b/python3/gribapi.c index 79548ac5b..2c9f15d94 100644 --- a/python3/gribapi.c +++ b/python3/gribapi.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/show_compile.sh b/show_compile.sh index 9b413efe4..b9b458245 100755 --- a/show_compile.sh +++ b/show_compile.sh @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 00d4dd2c8..b6d8c5a9c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,5 +1,5 @@ # -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/action.c b/src/action.c index 065760f5e..7d5256acd 100644 --- a/src/action.c +++ b/src/action.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/action_class_alias.c b/src/action_class_alias.c index 21f190c75..a97e59fdb 100644 --- a/src/action_class_alias.c +++ b/src/action_class_alias.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/action_class_assert.c b/src/action_class_assert.c index 300067e45..e4bc1a773 100644 --- a/src/action_class_assert.c +++ b/src/action_class_assert.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/action_class_close.c b/src/action_class_close.c index d44c4cc58..4556d15a9 100644 --- a/src/action_class_close.c +++ b/src/action_class_close.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/action_class_concept.c b/src/action_class_concept.c index b714a08cf..19589c458 100644 --- a/src/action_class_concept.c +++ b/src/action_class_concept.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/action_class_gen.c b/src/action_class_gen.c index da423a4e7..f4f0e97f6 100644 --- a/src/action_class_gen.c +++ b/src/action_class_gen.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/action_class_hash_array.c b/src/action_class_hash_array.c index dbf976c84..5b9039b45 100644 --- a/src/action_class_hash_array.c +++ b/src/action_class_hash_array.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/action_class_if.c b/src/action_class_if.c index e318dd975..318f0ebfd 100644 --- a/src/action_class_if.c +++ b/src/action_class_if.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/action_class_list.c b/src/action_class_list.c index b6c1ee58a..ea805cc82 100644 --- a/src/action_class_list.c +++ b/src/action_class_list.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/action_class_meta.c b/src/action_class_meta.c index f3f9c880a..a25bfd3d3 100644 --- a/src/action_class_meta.c +++ b/src/action_class_meta.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/action_class_modify.c b/src/action_class_modify.c index 2961b0cd5..64fca9bef 100644 --- a/src/action_class_modify.c +++ b/src/action_class_modify.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/action_class_noop.c b/src/action_class_noop.c index 6c5360902..f0812412f 100644 --- a/src/action_class_noop.c +++ b/src/action_class_noop.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/action_class_print.c b/src/action_class_print.c index 4754029ce..01e2b3b4e 100644 --- a/src/action_class_print.c +++ b/src/action_class_print.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/action_class_put.c b/src/action_class_put.c index 06941e96a..deb3823c9 100644 --- a/src/action_class_put.c +++ b/src/action_class_put.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/action_class_remove.c b/src/action_class_remove.c index 54cde8f36..7ea6f3bc0 100644 --- a/src/action_class_remove.c +++ b/src/action_class_remove.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/action_class_rename.c b/src/action_class_rename.c index 94a655487..06bd6767b 100644 --- a/src/action_class_rename.c +++ b/src/action_class_rename.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/action_class_section.c b/src/action_class_section.c index a1a599019..7fb102a80 100644 --- a/src/action_class_section.c +++ b/src/action_class_section.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/action_class_set.c b/src/action_class_set.c index 7479e159d..86e28d6fb 100644 --- a/src/action_class_set.c +++ b/src/action_class_set.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/action_class_set_darray.c b/src/action_class_set_darray.c index 3be0d595d..d5941638b 100644 --- a/src/action_class_set_darray.c +++ b/src/action_class_set_darray.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/action_class_set_iarray.c b/src/action_class_set_iarray.c index 3edde3b1b..f5971f7f7 100644 --- a/src/action_class_set_iarray.c +++ b/src/action_class_set_iarray.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/action_class_set_missing.c b/src/action_class_set_missing.c index 1969ab444..73d75057c 100644 --- a/src/action_class_set_missing.c +++ b/src/action_class_set_missing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/action_class_set_sarray.c b/src/action_class_set_sarray.c index 432b3d688..48f621c91 100644 --- a/src/action_class_set_sarray.c +++ b/src/action_class_set_sarray.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/action_class_switch.c b/src/action_class_switch.c index 265c095ac..734e08a24 100644 --- a/src/action_class_switch.c +++ b/src/action_class_switch.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/action_class_template.c b/src/action_class_template.c index bbcaccbc0..24aef7ae7 100644 --- a/src/action_class_template.c +++ b/src/action_class_template.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/action_class_transient_darray.c b/src/action_class_transient_darray.c index 5e368c48c..ca1f66566 100644 --- a/src/action_class_transient_darray.c +++ b/src/action_class_transient_darray.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/action_class_trigger.c b/src/action_class_trigger.c index 01c00dee3..796770633 100644 --- a/src/action_class_trigger.c +++ b/src/action_class_trigger.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/action_class_variable.c b/src/action_class_variable.c index af1b6c794..b6f23bbef 100644 --- a/src/action_class_variable.c +++ b/src/action_class_variable.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/action_class_when.c b/src/action_class_when.c index 7eda1b2f6..420620cbe 100644 --- a/src/action_class_when.c +++ b/src/action_class_when.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/action_class_while.c b/src/action_class_while.c index d185ea24c..6be44a512 100644 --- a/src/action_class_while.c +++ b/src/action_class_while.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/action_class_write.c b/src/action_class_write.c index f9aabcd5a..c3238a441 100644 --- a/src/action_class_write.c +++ b/src/action_class_write.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/bufr_keys_iterator.c b/src/bufr_keys_iterator.c index 6a7bce321..178d69d7e 100644 --- a/src/bufr_keys_iterator.c +++ b/src/bufr_keys_iterator.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/bufr_util.c b/src/bufr_util.c index 27e44d0ff..f40dc0b5b 100644 --- a/src/bufr_util.c +++ b/src/bufr_util.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/codes_memfs.c b/src/codes_memfs.c index 8db651ed8..bc4552101 100644 --- a/src/codes_memfs.c +++ b/src/codes_memfs.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/eccodes.c b/src/eccodes.c index 330f4b798..0958c6c45 100644 --- a/src/eccodes.c +++ b/src/eccodes.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/eccodes.h b/src/eccodes.h index 842f9890a..3d39be6a9 100644 --- a/src/eccodes.h +++ b/src/eccodes.h @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/eccodes_version.h.in b/src/eccodes_version.h.in index a7ab91de4..ea19b4162 100644 --- a/src/eccodes_version.h.in +++ b/src/eccodes_version.h.in @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/eccodes_windef.h b/src/eccodes_windef.h index 59815e17d..903ba8dd7 100644 --- a/src/eccodes_windef.h +++ b/src/eccodes_windef.h @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/encode_double_array.c b/src/encode_double_array.c index 41ca017ab..e41131126 100644 --- a/src/encode_double_array.c +++ b/src/encode_double_array.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/errors.pl b/src/errors.pl index ba15ab716..a8fbfdc58 100755 --- a/src/errors.pl +++ b/src/errors.pl @@ -1,5 +1,5 @@ #!/usr/bin/perl -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/functions.c b/src/functions.c index 3a4821b90..b1ad7cafb 100644 --- a/src/functions.c +++ b/src/functions.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib2c.pl b/src/grib2c.pl index ec38c8475..3b48e852d 100755 --- a/src/grib2c.pl +++ b/src/grib2c.pl @@ -1,5 +1,5 @@ #!/usr/bin/perl -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_2order_packer_simple.c b/src/grib_2order_packer_simple.c index ac157fe3c..4517532a9 100644 --- a/src/grib_2order_packer_simple.c +++ b/src/grib_2order_packer_simple.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor.c b/src/grib_accessor.c index c7850b4ae..01d11fc46 100644 --- a/src/grib_accessor.c +++ b/src/grib_accessor.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class.c b/src/grib_accessor_class.c index 402638ffc..ca206ce56 100644 --- a/src/grib_accessor_class.c +++ b/src/grib_accessor_class.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_abstract_long_vector.c b/src/grib_accessor_class_abstract_long_vector.c index 73700511b..8dcf3f286 100644 --- a/src/grib_accessor_class_abstract_long_vector.c +++ b/src/grib_accessor_class_abstract_long_vector.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_abstract_vector.c b/src/grib_accessor_class_abstract_vector.c index 35f727a34..399eb9707 100644 --- a/src/grib_accessor_class_abstract_vector.c +++ b/src/grib_accessor_class_abstract_vector.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_apply_operators.c b/src/grib_accessor_class_apply_operators.c index 167f8fcf0..b8779e768 100644 --- a/src/grib_accessor_class_apply_operators.c +++ b/src/grib_accessor_class_apply_operators.c @@ -1,5 +1,5 @@ /* -* Copyright 2005-2018 ECMWF. +* Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_array.c b/src/grib_accessor_class_array.c index 63241bdc5..d275430ad 100644 --- a/src/grib_accessor_class_array.c +++ b/src/grib_accessor_class_array.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_ascii.c b/src/grib_accessor_class_ascii.c index d628651ab..fe09b6c23 100644 --- a/src/grib_accessor_class_ascii.c +++ b/src/grib_accessor_class_ascii.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_assert.c b/src/grib_accessor_class_assert.c index d6d67e735..01395b96f 100644 --- a/src/grib_accessor_class_assert.c +++ b/src/grib_accessor_class_assert.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_bit.c b/src/grib_accessor_class_bit.c index 3654d215d..31131b209 100644 --- a/src/grib_accessor_class_bit.c +++ b/src/grib_accessor_class_bit.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_bitmap.c b/src/grib_accessor_class_bitmap.c index 01ffc41ac..5a7c67634 100644 --- a/src/grib_accessor_class_bitmap.c +++ b/src/grib_accessor_class_bitmap.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_bits.c b/src/grib_accessor_class_bits.c index 81039ff55..f325a6b98 100644 --- a/src/grib_accessor_class_bits.c +++ b/src/grib_accessor_class_bits.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_bits_per_value.c b/src/grib_accessor_class_bits_per_value.c index 67b576da5..7024b391b 100644 --- a/src/grib_accessor_class_bits_per_value.c +++ b/src/grib_accessor_class_bits_per_value.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_blob.c b/src/grib_accessor_class_blob.c index 38e686ef7..d36c473c3 100644 --- a/src/grib_accessor_class_blob.c +++ b/src/grib_accessor_class_blob.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_box.c b/src/grib_accessor_class_box.c index a07a14ddc..dfcb8148c 100644 --- a/src/grib_accessor_class_box.c +++ b/src/grib_accessor_class_box.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_budgdate.c b/src/grib_accessor_class_budgdate.c index 0246666da..0c87186f6 100644 --- a/src/grib_accessor_class_budgdate.c +++ b/src/grib_accessor_class_budgdate.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_bufr_clear_tables.c b/src/grib_accessor_class_bufr_clear_tables.c index 7e4ac1410..8faace2d7 100644 --- a/src/grib_accessor_class_bufr_clear_tables.c +++ b/src/grib_accessor_class_bufr_clear_tables.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_bufr_data.c b/src/grib_accessor_class_bufr_data.c index 2240880fd..b6b5ef4b9 100644 --- a/src/grib_accessor_class_bufr_data.c +++ b/src/grib_accessor_class_bufr_data.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_bufr_data_array.c b/src/grib_accessor_class_bufr_data_array.c index 39e4ceb81..048f03aea 100644 --- a/src/grib_accessor_class_bufr_data_array.c +++ b/src/grib_accessor_class_bufr_data_array.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_bufr_data_element.c b/src/grib_accessor_class_bufr_data_element.c index a3d8c9e11..d7fa033c8 100644 --- a/src/grib_accessor_class_bufr_data_element.c +++ b/src/grib_accessor_class_bufr_data_element.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_bufr_elements_table.c b/src/grib_accessor_class_bufr_elements_table.c index a589a1658..4a2b3176d 100644 --- a/src/grib_accessor_class_bufr_elements_table.c +++ b/src/grib_accessor_class_bufr_elements_table.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_bufr_extract_area_subsets.c b/src/grib_accessor_class_bufr_extract_area_subsets.c index ccf0000b6..6c3148ae4 100644 --- a/src/grib_accessor_class_bufr_extract_area_subsets.c +++ b/src/grib_accessor_class_bufr_extract_area_subsets.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_bufr_extract_datetime_subsets.c b/src/grib_accessor_class_bufr_extract_datetime_subsets.c index ce457bdd2..3753b9ccd 100644 --- a/src/grib_accessor_class_bufr_extract_datetime_subsets.c +++ b/src/grib_accessor_class_bufr_extract_datetime_subsets.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_bufr_extract_subsets.c b/src/grib_accessor_class_bufr_extract_subsets.c index fc0295366..a67239640 100644 --- a/src/grib_accessor_class_bufr_extract_subsets.c +++ b/src/grib_accessor_class_bufr_extract_subsets.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_bufr_group.c b/src/grib_accessor_class_bufr_group.c index 6bcc70b25..07510b351 100644 --- a/src/grib_accessor_class_bufr_group.c +++ b/src/grib_accessor_class_bufr_group.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_bufr_has_delayed_replication.c b/src/grib_accessor_class_bufr_has_delayed_replication.c index 9e0c81ac4..b80ba4324 100644 --- a/src/grib_accessor_class_bufr_has_delayed_replication.c +++ b/src/grib_accessor_class_bufr_has_delayed_replication.c @@ -1,5 +1,5 @@ /* -* Copyright 2005-2018 ECMWF. +* Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_bufr_simple_thinning.c b/src/grib_accessor_class_bufr_simple_thinning.c index a6d6703a6..253218d74 100644 --- a/src/grib_accessor_class_bufr_simple_thinning.c +++ b/src/grib_accessor_class_bufr_simple_thinning.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_bufr_string_values.c b/src/grib_accessor_class_bufr_string_values.c index 17c509947..a7f7aa1a4 100644 --- a/src/grib_accessor_class_bufr_string_values.c +++ b/src/grib_accessor_class_bufr_string_values.c @@ -1,5 +1,5 @@ /* -* Copyright 2005-2018 ECMWF. +* Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_bufrdc_expanded_descriptors.c b/src/grib_accessor_class_bufrdc_expanded_descriptors.c index 68f1c8f60..2a8b0c5e0 100644 --- a/src/grib_accessor_class_bufrdc_expanded_descriptors.c +++ b/src/grib_accessor_class_bufrdc_expanded_descriptors.c @@ -1,5 +1,5 @@ /* -* Copyright 2005-2018 ECMWF. +* Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_bytes.c b/src/grib_accessor_class_bytes.c index 76f025ec3..f684bc171 100644 --- a/src/grib_accessor_class_bytes.c +++ b/src/grib_accessor_class_bytes.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_change_scanning_direction.c b/src/grib_accessor_class_change_scanning_direction.c index f6f75655d..5f1dd0ecb 100644 --- a/src/grib_accessor_class_change_scanning_direction.c +++ b/src/grib_accessor_class_change_scanning_direction.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_check_internal_version.c b/src/grib_accessor_class_check_internal_version.c index d234f1cb2..432366b51 100644 --- a/src/grib_accessor_class_check_internal_version.c +++ b/src/grib_accessor_class_check_internal_version.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_codeflag.c b/src/grib_accessor_class_codeflag.c index 7f19d2282..5a5c6daa8 100644 --- a/src/grib_accessor_class_codeflag.c +++ b/src/grib_accessor_class_codeflag.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_codetable.c b/src/grib_accessor_class_codetable.c index 48a420557..d0881e2b7 100644 --- a/src/grib_accessor_class_codetable.c +++ b/src/grib_accessor_class_codetable.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_codetable_title.c b/src/grib_accessor_class_codetable_title.c index a04fc4008..a5ea8d6d2 100644 --- a/src/grib_accessor_class_codetable_title.c +++ b/src/grib_accessor_class_codetable_title.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_codetable_units.c b/src/grib_accessor_class_codetable_units.c index aed64965d..5ea7e3a54 100644 --- a/src/grib_accessor_class_codetable_units.c +++ b/src/grib_accessor_class_codetable_units.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_concept.c b/src/grib_accessor_class_concept.c index df1dc3ae3..37ccd7c93 100644 --- a/src/grib_accessor_class_concept.c +++ b/src/grib_accessor_class_concept.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_constant.c b/src/grib_accessor_class_constant.c index 27d82cc3e..04e97959b 100644 --- a/src/grib_accessor_class_constant.c +++ b/src/grib_accessor_class_constant.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_count_file.c b/src/grib_accessor_class_count_file.c index 602ef2c01..9ef4084b9 100644 --- a/src/grib_accessor_class_count_file.c +++ b/src/grib_accessor_class_count_file.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_count_missing.c b/src/grib_accessor_class_count_missing.c index caa9d03d4..e1ee98f79 100644 --- a/src/grib_accessor_class_count_missing.c +++ b/src/grib_accessor_class_count_missing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_count_total.c b/src/grib_accessor_class_count_total.c index 70d6054ff..bd99c4b1c 100644 --- a/src/grib_accessor_class_count_total.c +++ b/src/grib_accessor_class_count_total.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_2order_packing.c b/src/grib_accessor_class_data_2order_packing.c index 06967ec3f..917ec1704 100644 --- a/src/grib_accessor_class_data_2order_packing.c +++ b/src/grib_accessor_class_data_2order_packing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_2order_packing_count.c b/src/grib_accessor_class_data_2order_packing_count.c index 3c94879b3..e0e938e31 100644 --- a/src/grib_accessor_class_data_2order_packing_count.c +++ b/src/grib_accessor_class_data_2order_packing_count.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_apply_bitmap.c b/src/grib_accessor_class_data_apply_bitmap.c index c5c601260..05705e350 100644 --- a/src/grib_accessor_class_data_apply_bitmap.c +++ b/src/grib_accessor_class_data_apply_bitmap.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_apply_boustrophedonic.c b/src/grib_accessor_class_data_apply_boustrophedonic.c index 13c8d0327..6c8a2917d 100644 --- a/src/grib_accessor_class_data_apply_boustrophedonic.c +++ b/src/grib_accessor_class_data_apply_boustrophedonic.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.c b/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.c index b2b316f5a..aaf0c270f 100644 --- a/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.c +++ b/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_apply_gdsnotpresent.c b/src/grib_accessor_class_data_apply_gdsnotpresent.c index 04bbfb34b..b398fafca 100644 --- a/src/grib_accessor_class_data_apply_gdsnotpresent.c +++ b/src/grib_accessor_class_data_apply_gdsnotpresent.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_ccsds_packing.c b/src/grib_accessor_class_data_ccsds_packing.c index fbed2e6ab..05d2f4241 100644 --- a/src/grib_accessor_class_data_ccsds_packing.c +++ b/src/grib_accessor_class_data_ccsds_packing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_complex_packing.c b/src/grib_accessor_class_data_complex_packing.c index 816790f38..1ed10628d 100644 --- a/src/grib_accessor_class_data_complex_packing.c +++ b/src/grib_accessor_class_data_complex_packing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_constant_field.c b/src/grib_accessor_class_data_constant_field.c index 6b2c517db..3c22cd09f 100644 --- a/src/grib_accessor_class_data_constant_field.c +++ b/src/grib_accessor_class_data_constant_field.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_dummy_field.c b/src/grib_accessor_class_data_dummy_field.c index e41477310..9d7e51345 100644 --- a/src/grib_accessor_class_data_dummy_field.c +++ b/src/grib_accessor_class_data_dummy_field.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_g1complex_packing.c b/src/grib_accessor_class_data_g1complex_packing.c index 0e94c3271..d73f57664 100644 --- a/src/grib_accessor_class_data_g1complex_packing.c +++ b/src/grib_accessor_class_data_g1complex_packing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_g1second_order_constant_width_packing.c b/src/grib_accessor_class_data_g1second_order_constant_width_packing.c index 6662c7c7e..26f3784d9 100644 --- a/src/grib_accessor_class_data_g1second_order_constant_width_packing.c +++ b/src/grib_accessor_class_data_g1second_order_constant_width_packing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_g1second_order_general_extended_packing.c b/src/grib_accessor_class_data_g1second_order_general_extended_packing.c index 2d1b28c5a..9e2fcae32 100644 --- a/src/grib_accessor_class_data_g1second_order_general_extended_packing.c +++ b/src/grib_accessor_class_data_g1second_order_general_extended_packing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_g1second_order_general_packing.c b/src/grib_accessor_class_data_g1second_order_general_packing.c index bc5b8391b..747bc329c 100644 --- a/src/grib_accessor_class_data_g1second_order_general_packing.c +++ b/src/grib_accessor_class_data_g1second_order_general_packing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_g1second_order_row_by_row_packing.c b/src/grib_accessor_class_data_g1second_order_row_by_row_packing.c index 656a4fe27..14af69442 100644 --- a/src/grib_accessor_class_data_g1second_order_row_by_row_packing.c +++ b/src/grib_accessor_class_data_g1second_order_row_by_row_packing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_g1secondary_bitmap.c b/src/grib_accessor_class_data_g1secondary_bitmap.c index 272fac458..ccec04802 100644 --- a/src/grib_accessor_class_data_g1secondary_bitmap.c +++ b/src/grib_accessor_class_data_g1secondary_bitmap.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_g1shsimple_packing.c b/src/grib_accessor_class_data_g1shsimple_packing.c index 8aa7fe530..10c4ebc89 100644 --- a/src/grib_accessor_class_data_g1shsimple_packing.c +++ b/src/grib_accessor_class_data_g1shsimple_packing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_g1simple_packing.c b/src/grib_accessor_class_data_g1simple_packing.c index 31a613d0c..6f9ab42c3 100644 --- a/src/grib_accessor_class_data_g1simple_packing.c +++ b/src/grib_accessor_class_data_g1simple_packing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_g22order_packing.c b/src/grib_accessor_class_data_g22order_packing.c index 4c47e801a..fc94cd0d8 100644 --- a/src/grib_accessor_class_data_g22order_packing.c +++ b/src/grib_accessor_class_data_g22order_packing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_g2complex_packing.c b/src/grib_accessor_class_data_g2complex_packing.c index 20aaa5445..9c923da85 100644 --- a/src/grib_accessor_class_data_g2complex_packing.c +++ b/src/grib_accessor_class_data_g2complex_packing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_g2secondary_bitmap.c b/src/grib_accessor_class_data_g2secondary_bitmap.c index 8262faead..4bc538cd3 100644 --- a/src/grib_accessor_class_data_g2secondary_bitmap.c +++ b/src/grib_accessor_class_data_g2secondary_bitmap.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_g2shsimple_packing.c b/src/grib_accessor_class_data_g2shsimple_packing.c index 72f670019..7bdee9a2a 100644 --- a/src/grib_accessor_class_data_g2shsimple_packing.c +++ b/src/grib_accessor_class_data_g2shsimple_packing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_g2simple_packing.c b/src/grib_accessor_class_data_g2simple_packing.c index 58e56e35a..6748b965d 100644 --- a/src/grib_accessor_class_data_g2simple_packing.c +++ b/src/grib_accessor_class_data_g2simple_packing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.c b/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.c index b4431ee75..5c845bc4f 100644 --- a/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.c +++ b/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_jpeg2000_packing.c b/src/grib_accessor_class_data_jpeg2000_packing.c index 90a394d8c..04d50fd99 100644 --- a/src/grib_accessor_class_data_jpeg2000_packing.c +++ b/src/grib_accessor_class_data_jpeg2000_packing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_png_packing.c b/src/grib_accessor_class_data_png_packing.c index c326c9406..a7ebfbaa3 100644 --- a/src/grib_accessor_class_data_png_packing.c +++ b/src/grib_accessor_class_data_png_packing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_raw_packing.c b/src/grib_accessor_class_data_raw_packing.c index 37904cda1..da88af29c 100644 --- a/src/grib_accessor_class_data_raw_packing.c +++ b/src/grib_accessor_class_data_raw_packing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_secondary_bitmap.c b/src/grib_accessor_class_data_secondary_bitmap.c index d8a890b4e..1dd0606c2 100644 --- a/src/grib_accessor_class_data_secondary_bitmap.c +++ b/src/grib_accessor_class_data_secondary_bitmap.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_sh_packed.c b/src/grib_accessor_class_data_sh_packed.c index f29718d94..6c3374809 100644 --- a/src/grib_accessor_class_data_sh_packed.c +++ b/src/grib_accessor_class_data_sh_packed.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_sh_unpacked.c b/src/grib_accessor_class_data_sh_unpacked.c index 25736ee3e..f11265863 100644 --- a/src/grib_accessor_class_data_sh_unpacked.c +++ b/src/grib_accessor_class_data_sh_unpacked.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_shsimple_packing.c b/src/grib_accessor_class_data_shsimple_packing.c index 4361f3ff9..eb16418f2 100644 --- a/src/grib_accessor_class_data_shsimple_packing.c +++ b/src/grib_accessor_class_data_shsimple_packing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_data_simple_packing.c b/src/grib_accessor_class_data_simple_packing.c index 91a4db32e..dc5e04c8e 100644 --- a/src/grib_accessor_class_data_simple_packing.c +++ b/src/grib_accessor_class_data_simple_packing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_decimal_precision.c b/src/grib_accessor_class_decimal_precision.c index c12cc658d..4eb5fcbe3 100644 --- a/src/grib_accessor_class_decimal_precision.c +++ b/src/grib_accessor_class_decimal_precision.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_dictionary.c b/src/grib_accessor_class_dictionary.c index 96497b706..4bcdc5ce3 100644 --- a/src/grib_accessor_class_dictionary.c +++ b/src/grib_accessor_class_dictionary.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_dirty.c b/src/grib_accessor_class_dirty.c index 9ef84e711..50b3c7ecc 100644 --- a/src/grib_accessor_class_dirty.c +++ b/src/grib_accessor_class_dirty.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_divdouble.c b/src/grib_accessor_class_divdouble.c index f81f14966..9841af158 100644 --- a/src/grib_accessor_class_divdouble.c +++ b/src/grib_accessor_class_divdouble.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_double.c b/src/grib_accessor_class_double.c index b1e76a376..7e1e50b97 100644 --- a/src/grib_accessor_class_double.c +++ b/src/grib_accessor_class_double.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_element.c b/src/grib_accessor_class_element.c index f4726b54d..36d571975 100644 --- a/src/grib_accessor_class_element.c +++ b/src/grib_accessor_class_element.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_evaluate.c b/src/grib_accessor_class_evaluate.c index 205af3a14..10974350a 100644 --- a/src/grib_accessor_class_evaluate.c +++ b/src/grib_accessor_class_evaluate.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_expanded_descriptors.c b/src/grib_accessor_class_expanded_descriptors.c index b1ad4648d..949e05fc9 100644 --- a/src/grib_accessor_class_expanded_descriptors.c +++ b/src/grib_accessor_class_expanded_descriptors.c @@ -1,5 +1,5 @@ /* -* Copyright 2005-2018 ECMWF. +* Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_forward.c b/src/grib_accessor_class_forward.c index 66e33f698..c79995a50 100644 --- a/src/grib_accessor_class_forward.c +++ b/src/grib_accessor_class_forward.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_from_scale_factor_scaled_value.c b/src/grib_accessor_class_from_scale_factor_scaled_value.c index a881d2572..49d2b5004 100644 --- a/src/grib_accessor_class_from_scale_factor_scaled_value.c +++ b/src/grib_accessor_class_from_scale_factor_scaled_value.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g1_half_byte_codeflag.c b/src/grib_accessor_class_g1_half_byte_codeflag.c index 0969f587a..bf4bfbb8e 100644 --- a/src/grib_accessor_class_g1_half_byte_codeflag.c +++ b/src/grib_accessor_class_g1_half_byte_codeflag.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g1_increment.c b/src/grib_accessor_class_g1_increment.c index d27fa1be0..d7de7a695 100644 --- a/src/grib_accessor_class_g1_increment.c +++ b/src/grib_accessor_class_g1_increment.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g1_message_length.c b/src/grib_accessor_class_g1_message_length.c index 45e196ae7..aa0a81d67 100644 --- a/src/grib_accessor_class_g1_message_length.c +++ b/src/grib_accessor_class_g1_message_length.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g1_section4_length.c b/src/grib_accessor_class_g1_section4_length.c index 9804bb2b5..261d3c6d7 100644 --- a/src/grib_accessor_class_g1_section4_length.c +++ b/src/grib_accessor_class_g1_section4_length.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g1area.c b/src/grib_accessor_class_g1area.c index 37294371e..48a550a17 100644 --- a/src/grib_accessor_class_g1area.c +++ b/src/grib_accessor_class_g1area.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g1bitmap.c b/src/grib_accessor_class_g1bitmap.c index b88246533..e4808bb84 100644 --- a/src/grib_accessor_class_g1bitmap.c +++ b/src/grib_accessor_class_g1bitmap.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g1date.c b/src/grib_accessor_class_g1date.c index b7c02f796..9f27b6a59 100644 --- a/src/grib_accessor_class_g1date.c +++ b/src/grib_accessor_class_g1date.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g1day_of_the_year_date.c b/src/grib_accessor_class_g1day_of_the_year_date.c index 07a91ded0..e61c5b430 100644 --- a/src/grib_accessor_class_g1day_of_the_year_date.c +++ b/src/grib_accessor_class_g1day_of_the_year_date.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g1end_of_interval_monthly.c b/src/grib_accessor_class_g1end_of_interval_monthly.c index 0e4c6aa69..a3f2f58f7 100644 --- a/src/grib_accessor_class_g1end_of_interval_monthly.c +++ b/src/grib_accessor_class_g1end_of_interval_monthly.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g1fcperiod.c b/src/grib_accessor_class_g1fcperiod.c index 53a46d061..fe7eaccf8 100644 --- a/src/grib_accessor_class_g1fcperiod.c +++ b/src/grib_accessor_class_g1fcperiod.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g1forecastmonth.c b/src/grib_accessor_class_g1forecastmonth.c index 66b21a062..2eb5c6bbb 100644 --- a/src/grib_accessor_class_g1forecastmonth.c +++ b/src/grib_accessor_class_g1forecastmonth.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g1monthlydate.c b/src/grib_accessor_class_g1monthlydate.c index 2c4a6596f..df817aa7d 100644 --- a/src/grib_accessor_class_g1monthlydate.c +++ b/src/grib_accessor_class_g1monthlydate.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g1number_of_coded_values_sh_complex.c b/src/grib_accessor_class_g1number_of_coded_values_sh_complex.c index ceb5bebea..69f170a00 100644 --- a/src/grib_accessor_class_g1number_of_coded_values_sh_complex.c +++ b/src/grib_accessor_class_g1number_of_coded_values_sh_complex.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g1number_of_coded_values_sh_simple.c b/src/grib_accessor_class_g1number_of_coded_values_sh_simple.c index 40d08b2d9..baf51c618 100644 --- a/src/grib_accessor_class_g1number_of_coded_values_sh_simple.c +++ b/src/grib_accessor_class_g1number_of_coded_values_sh_simple.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g1p1p2.c b/src/grib_accessor_class_g1p1p2.c index 06cb1fe58..f819065cf 100644 --- a/src/grib_accessor_class_g1p1p2.c +++ b/src/grib_accessor_class_g1p1p2.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g1param.c b/src/grib_accessor_class_g1param.c index d5a7b3aaa..2eac111b3 100644 --- a/src/grib_accessor_class_g1param.c +++ b/src/grib_accessor_class_g1param.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g1step_range.c b/src/grib_accessor_class_g1step_range.c index 4a00b13ef..0e9a274f0 100644 --- a/src/grib_accessor_class_g1step_range.c +++ b/src/grib_accessor_class_g1step_range.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g1verificationdate.c b/src/grib_accessor_class_g1verificationdate.c index 5cc8177d3..550f9e5f2 100644 --- a/src/grib_accessor_class_g1verificationdate.c +++ b/src/grib_accessor_class_g1verificationdate.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g2_aerosol.c b/src/grib_accessor_class_g2_aerosol.c index c67832b30..ef5e1d591 100644 --- a/src/grib_accessor_class_g2_aerosol.c +++ b/src/grib_accessor_class_g2_aerosol.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g2_chemical.c b/src/grib_accessor_class_g2_chemical.c index 82ba43b1a..ad7b7224c 100644 --- a/src/grib_accessor_class_g2_chemical.c +++ b/src/grib_accessor_class_g2_chemical.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g2_eps.c b/src/grib_accessor_class_g2_eps.c index 0b23bbb7d..ae996591a 100644 --- a/src/grib_accessor_class_g2_eps.c +++ b/src/grib_accessor_class_g2_eps.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g2_mars_labeling.c b/src/grib_accessor_class_g2_mars_labeling.c index 62643499e..5e4a2bc0d 100644 --- a/src/grib_accessor_class_g2_mars_labeling.c +++ b/src/grib_accessor_class_g2_mars_labeling.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g2bitmap.c b/src/grib_accessor_class_g2bitmap.c index f2dc7c84e..218288e01 100644 --- a/src/grib_accessor_class_g2bitmap.c +++ b/src/grib_accessor_class_g2bitmap.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g2bitmap_present.c b/src/grib_accessor_class_g2bitmap_present.c index f95523b86..4796a5566 100644 --- a/src/grib_accessor_class_g2bitmap_present.c +++ b/src/grib_accessor_class_g2bitmap_present.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g2date.c b/src/grib_accessor_class_g2date.c index 35b6183e1..5b8e60a6c 100644 --- a/src/grib_accessor_class_g2date.c +++ b/src/grib_accessor_class_g2date.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g2end_step.c b/src/grib_accessor_class_g2end_step.c index e3f1ea888..2800373d4 100644 --- a/src/grib_accessor_class_g2end_step.c +++ b/src/grib_accessor_class_g2end_step.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g2grid.c b/src/grib_accessor_class_g2grid.c index d656c8e39..ff1e9fc27 100644 --- a/src/grib_accessor_class_g2grid.c +++ b/src/grib_accessor_class_g2grid.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g2latlon.c b/src/grib_accessor_class_g2latlon.c index 24c5ab06b..ff7441c6f 100644 --- a/src/grib_accessor_class_g2latlon.c +++ b/src/grib_accessor_class_g2latlon.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g2level.c b/src/grib_accessor_class_g2level.c index 64d1178c7..035d4b141 100644 --- a/src/grib_accessor_class_g2level.c +++ b/src/grib_accessor_class_g2level.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g2lon.c b/src/grib_accessor_class_g2lon.c index e6dd2af66..178b4d00b 100644 --- a/src/grib_accessor_class_g2lon.c +++ b/src/grib_accessor_class_g2lon.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g2step.c b/src/grib_accessor_class_g2step.c index 9e2709f86..fa80b415b 100644 --- a/src/grib_accessor_class_g2step.c +++ b/src/grib_accessor_class_g2step.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_g2step_range.c b/src/grib_accessor_class_g2step_range.c index 3fc755e4b..70784abcd 100644 --- a/src/grib_accessor_class_g2step_range.c +++ b/src/grib_accessor_class_g2step_range.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_gaussian_grid_name.c b/src/grib_accessor_class_gaussian_grid_name.c index 8e4fccb8b..e6502b41c 100644 --- a/src/grib_accessor_class_gaussian_grid_name.c +++ b/src/grib_accessor_class_gaussian_grid_name.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_gds_is_present.c b/src/grib_accessor_class_gds_is_present.c index 0a007b25e..ee8110b40 100644 --- a/src/grib_accessor_class_gds_is_present.c +++ b/src/grib_accessor_class_gds_is_present.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_gds_not_present_bitmap.c b/src/grib_accessor_class_gds_not_present_bitmap.c index a72bc0006..3c98b2b91 100644 --- a/src/grib_accessor_class_gds_not_present_bitmap.c +++ b/src/grib_accessor_class_gds_not_present_bitmap.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_gen.c b/src/grib_accessor_class_gen.c index 1c3a8d0d0..994d997aa 100644 --- a/src/grib_accessor_class_gen.c +++ b/src/grib_accessor_class_gen.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_getenv.c b/src/grib_accessor_class_getenv.c index 1c4af275f..bfa9f5021 100644 --- a/src/grib_accessor_class_getenv.c +++ b/src/grib_accessor_class_getenv.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_global_gaussian.c b/src/grib_accessor_class_global_gaussian.c index 843a443da..2971da4eb 100644 --- a/src/grib_accessor_class_global_gaussian.c +++ b/src/grib_accessor_class_global_gaussian.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_group.c b/src/grib_accessor_class_group.c index 1f5c80b17..2c8d42b7e 100644 --- a/src/grib_accessor_class_group.c +++ b/src/grib_accessor_class_group.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_gts_header.c b/src/grib_accessor_class_gts_header.c index bc000e846..9c735503f 100644 --- a/src/grib_accessor_class_gts_header.c +++ b/src/grib_accessor_class_gts_header.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_hash_array.c b/src/grib_accessor_class_hash_array.c index 891b60810..6fd96eb42 100644 --- a/src/grib_accessor_class_hash_array.c +++ b/src/grib_accessor_class_hash_array.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_headers_only.c b/src/grib_accessor_class_headers_only.c index 22a8b1764..97bdab972 100644 --- a/src/grib_accessor_class_headers_only.c +++ b/src/grib_accessor_class_headers_only.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_ibmfloat.c b/src/grib_accessor_class_ibmfloat.c index bea4c4493..127089c74 100644 --- a/src/grib_accessor_class_ibmfloat.c +++ b/src/grib_accessor_class_ibmfloat.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_ieeefloat.c b/src/grib_accessor_class_ieeefloat.c index 3226ffac7..3aa482a0d 100644 --- a/src/grib_accessor_class_ieeefloat.c +++ b/src/grib_accessor_class_ieeefloat.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_ifs_param.c b/src/grib_accessor_class_ifs_param.c index 07e6b1bf4..44e593eef 100644 --- a/src/grib_accessor_class_ifs_param.c +++ b/src/grib_accessor_class_ifs_param.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_int16.c b/src/grib_accessor_class_int16.c index 07e44c655..9bcb10705 100644 --- a/src/grib_accessor_class_int16.c +++ b/src/grib_accessor_class_int16.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_int16_little_endian.c b/src/grib_accessor_class_int16_little_endian.c index 5d937dbb2..5781a875d 100644 --- a/src/grib_accessor_class_int16_little_endian.c +++ b/src/grib_accessor_class_int16_little_endian.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_int32.c b/src/grib_accessor_class_int32.c index 628d5b219..09186f3c1 100644 --- a/src/grib_accessor_class_int32.c +++ b/src/grib_accessor_class_int32.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_int32_little_endian.c b/src/grib_accessor_class_int32_little_endian.c index dcaaf19cd..8e9409a8c 100644 --- a/src/grib_accessor_class_int32_little_endian.c +++ b/src/grib_accessor_class_int32_little_endian.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_int64.c b/src/grib_accessor_class_int64.c index de585fbc8..cc179a903 100644 --- a/src/grib_accessor_class_int64.c +++ b/src/grib_accessor_class_int64.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_int64_little_endian.c b/src/grib_accessor_class_int64_little_endian.c index 3a7717336..3d86069c7 100644 --- a/src/grib_accessor_class_int64_little_endian.c +++ b/src/grib_accessor_class_int64_little_endian.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_int8.c b/src/grib_accessor_class_int8.c index 7d27c455c..d2c2df488 100644 --- a/src/grib_accessor_class_int8.c +++ b/src/grib_accessor_class_int8.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_iterator.c b/src/grib_accessor_class_iterator.c index 721ded3c6..02ac0dd3e 100644 --- a/src/grib_accessor_class_iterator.c +++ b/src/grib_accessor_class_iterator.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_julian_date.c b/src/grib_accessor_class_julian_date.c index 584e7c865..b17c2daa5 100644 --- a/src/grib_accessor_class_julian_date.c +++ b/src/grib_accessor_class_julian_date.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_julian_day.c b/src/grib_accessor_class_julian_day.c index 270decc08..24b23bd4e 100644 --- a/src/grib_accessor_class_julian_day.c +++ b/src/grib_accessor_class_julian_day.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_ksec1expver.c b/src/grib_accessor_class_ksec1expver.c index 12529c2e6..bd4fde6b4 100644 --- a/src/grib_accessor_class_ksec1expver.c +++ b/src/grib_accessor_class_ksec1expver.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_label.c b/src/grib_accessor_class_label.c index 9b0b360df..a51fa7616 100644 --- a/src/grib_accessor_class_label.c +++ b/src/grib_accessor_class_label.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_laplacian.c b/src/grib_accessor_class_laplacian.c index 0c0926ed7..ea90b720b 100644 --- a/src/grib_accessor_class_laplacian.c +++ b/src/grib_accessor_class_laplacian.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_latitudes.c b/src/grib_accessor_class_latitudes.c index 116483eda..48d2994d0 100644 --- a/src/grib_accessor_class_latitudes.c +++ b/src/grib_accessor_class_latitudes.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_latlon_increment.c b/src/grib_accessor_class_latlon_increment.c index 9fb318c04..353b64bc7 100644 --- a/src/grib_accessor_class_latlon_increment.c +++ b/src/grib_accessor_class_latlon_increment.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_latlonvalues.c b/src/grib_accessor_class_latlonvalues.c index 6ef139104..09e8787c1 100644 --- a/src/grib_accessor_class_latlonvalues.c +++ b/src/grib_accessor_class_latlonvalues.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_library_version.c b/src/grib_accessor_class_library_version.c index 19ed11e2c..f1f9e59c2 100644 --- a/src/grib_accessor_class_library_version.c +++ b/src/grib_accessor_class_library_version.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_local_definition.c b/src/grib_accessor_class_local_definition.c index 4d086c662..098c33070 100644 --- a/src/grib_accessor_class_local_definition.c +++ b/src/grib_accessor_class_local_definition.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_long.c b/src/grib_accessor_class_long.c index ed8c3707f..00d3da2f7 100644 --- a/src/grib_accessor_class_long.c +++ b/src/grib_accessor_class_long.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_long_vector.c b/src/grib_accessor_class_long_vector.c index 0380326a8..8787adf18 100644 --- a/src/grib_accessor_class_long_vector.c +++ b/src/grib_accessor_class_long_vector.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_longitudes.c b/src/grib_accessor_class_longitudes.c index 96bd7c9c0..06d593b33 100644 --- a/src/grib_accessor_class_longitudes.c +++ b/src/grib_accessor_class_longitudes.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_lookup.c b/src/grib_accessor_class_lookup.c index f5d07cfeb..7ed6b6b79 100644 --- a/src/grib_accessor_class_lookup.c +++ b/src/grib_accessor_class_lookup.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_mars_param.c b/src/grib_accessor_class_mars_param.c index c98910ec7..cec7f1ad9 100644 --- a/src/grib_accessor_class_mars_param.c +++ b/src/grib_accessor_class_mars_param.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_mars_step.c b/src/grib_accessor_class_mars_step.c index ce904df3e..538cd6766 100644 --- a/src/grib_accessor_class_mars_step.c +++ b/src/grib_accessor_class_mars_step.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_md5.c b/src/grib_accessor_class_md5.c index 2a981e3ff..857fc3349 100644 --- a/src/grib_accessor_class_md5.c +++ b/src/grib_accessor_class_md5.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_message.c b/src/grib_accessor_class_message.c index aafe7f6e8..7dd2c1e71 100644 --- a/src/grib_accessor_class_message.c +++ b/src/grib_accessor_class_message.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_message_copy.c b/src/grib_accessor_class_message_copy.c index 6fdf94b3b..01a04e37e 100644 --- a/src/grib_accessor_class_message_copy.c +++ b/src/grib_accessor_class_message_copy.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_missing.c b/src/grib_accessor_class_missing.c index 670e2d7f1..d926e690d 100644 --- a/src/grib_accessor_class_missing.c +++ b/src/grib_accessor_class_missing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_nearest.c b/src/grib_accessor_class_nearest.c index 0c3d27a62..df7e0351e 100644 --- a/src/grib_accessor_class_nearest.c +++ b/src/grib_accessor_class_nearest.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_non_alpha.c b/src/grib_accessor_class_non_alpha.c index 2bda48862..d4e606f79 100644 --- a/src/grib_accessor_class_non_alpha.c +++ b/src/grib_accessor_class_non_alpha.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_number_of_coded_values.c b/src/grib_accessor_class_number_of_coded_values.c index fbb94cc33..31bd85f69 100644 --- a/src/grib_accessor_class_number_of_coded_values.c +++ b/src/grib_accessor_class_number_of_coded_values.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_number_of_points.c b/src/grib_accessor_class_number_of_points.c index af4d76737..651a533eb 100644 --- a/src/grib_accessor_class_number_of_points.c +++ b/src/grib_accessor_class_number_of_points.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_number_of_points_gaussian.c b/src/grib_accessor_class_number_of_points_gaussian.c index c09b47141..20bdcadbd 100644 --- a/src/grib_accessor_class_number_of_points_gaussian.c +++ b/src/grib_accessor_class_number_of_points_gaussian.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_number_of_values.c b/src/grib_accessor_class_number_of_values.c index 2ca566878..23d9d2a85 100644 --- a/src/grib_accessor_class_number_of_values.c +++ b/src/grib_accessor_class_number_of_values.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_number_of_values_data_raw_packing.c b/src/grib_accessor_class_number_of_values_data_raw_packing.c index ac2004817..4865b6268 100644 --- a/src/grib_accessor_class_number_of_values_data_raw_packing.c +++ b/src/grib_accessor_class_number_of_values_data_raw_packing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_octahedral_gaussian.c b/src/grib_accessor_class_octahedral_gaussian.c index 0b8a5000f..10ec416ee 100644 --- a/src/grib_accessor_class_octahedral_gaussian.c +++ b/src/grib_accessor_class_octahedral_gaussian.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_octect_number.c b/src/grib_accessor_class_octect_number.c index 208f2da6c..76ec3c62b 100644 --- a/src/grib_accessor_class_octect_number.c +++ b/src/grib_accessor_class_octect_number.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_offset_file.c b/src/grib_accessor_class_offset_file.c index 02dba8bb1..09d11b5ae 100644 --- a/src/grib_accessor_class_offset_file.c +++ b/src/grib_accessor_class_offset_file.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_offset_values.c b/src/grib_accessor_class_offset_values.c index dd344ad1e..08ed22e75 100644 --- a/src/grib_accessor_class_offset_values.c +++ b/src/grib_accessor_class_offset_values.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_pack_bufr_values.c b/src/grib_accessor_class_pack_bufr_values.c index 14cfec7d7..7b7a10986 100644 --- a/src/grib_accessor_class_pack_bufr_values.c +++ b/src/grib_accessor_class_pack_bufr_values.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_pad.c b/src/grib_accessor_class_pad.c index 4a941d546..3ac7299d2 100644 --- a/src/grib_accessor_class_pad.c +++ b/src/grib_accessor_class_pad.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_padding.c b/src/grib_accessor_class_padding.c index 91838bdc4..48a063666 100644 --- a/src/grib_accessor_class_padding.c +++ b/src/grib_accessor_class_padding.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_padto.c b/src/grib_accessor_class_padto.c index 22f7c3b74..106e88182 100644 --- a/src/grib_accessor_class_padto.c +++ b/src/grib_accessor_class_padto.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_padtoeven.c b/src/grib_accessor_class_padtoeven.c index b8bbd0e7a..7a9a786a9 100644 --- a/src/grib_accessor_class_padtoeven.c +++ b/src/grib_accessor_class_padtoeven.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_padtomultiple.c b/src/grib_accessor_class_padtomultiple.c index 401023f93..0cecb813f 100644 --- a/src/grib_accessor_class_padtomultiple.c +++ b/src/grib_accessor_class_padtomultiple.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_position.c b/src/grib_accessor_class_position.c index 8248064f4..b411f09fc 100644 --- a/src/grib_accessor_class_position.c +++ b/src/grib_accessor_class_position.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_raw.c b/src/grib_accessor_class_raw.c index 1c7e74407..7d251a509 100644 --- a/src/grib_accessor_class_raw.c +++ b/src/grib_accessor_class_raw.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_rdbtime_guess_date.c b/src/grib_accessor_class_rdbtime_guess_date.c index a0d3e0133..acd05c1ab 100644 --- a/src/grib_accessor_class_rdbtime_guess_date.c +++ b/src/grib_accessor_class_rdbtime_guess_date.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_reference_value_error.c b/src/grib_accessor_class_reference_value_error.c index e4776d3cc..d463b78a1 100644 --- a/src/grib_accessor_class_reference_value_error.c +++ b/src/grib_accessor_class_reference_value_error.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_round.c b/src/grib_accessor_class_round.c index e2d757ce9..7891755af 100644 --- a/src/grib_accessor_class_round.c +++ b/src/grib_accessor_class_round.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_scale.c b/src/grib_accessor_class_scale.c index b1e41755b..c43727636 100644 --- a/src/grib_accessor_class_scale.c +++ b/src/grib_accessor_class_scale.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_scale_values.c b/src/grib_accessor_class_scale_values.c index b9eb6779b..4375a5389 100644 --- a/src/grib_accessor_class_scale_values.c +++ b/src/grib_accessor_class_scale_values.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_second_order_bits_per_value.c b/src/grib_accessor_class_second_order_bits_per_value.c index ef0628b67..e260adce2 100644 --- a/src/grib_accessor_class_second_order_bits_per_value.c +++ b/src/grib_accessor_class_second_order_bits_per_value.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_section.c b/src/grib_accessor_class_section.c index 0d543588f..bd5476e35 100644 --- a/src/grib_accessor_class_section.c +++ b/src/grib_accessor_class_section.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_section_length.c b/src/grib_accessor_class_section_length.c index 908e3999b..291074715 100644 --- a/src/grib_accessor_class_section_length.c +++ b/src/grib_accessor_class_section_length.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_section_padding.c b/src/grib_accessor_class_section_padding.c index 0a3491f6f..c69f791db 100644 --- a/src/grib_accessor_class_section_padding.c +++ b/src/grib_accessor_class_section_padding.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_section_pointer.c b/src/grib_accessor_class_section_pointer.c index 643e7f855..96a4dc9c4 100644 --- a/src/grib_accessor_class_section_pointer.c +++ b/src/grib_accessor_class_section_pointer.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_select_step_template.c b/src/grib_accessor_class_select_step_template.c index ffdbac68c..b78e75e95 100644 --- a/src/grib_accessor_class_select_step_template.c +++ b/src/grib_accessor_class_select_step_template.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_sexagesimal2decimal.c b/src/grib_accessor_class_sexagesimal2decimal.c index da7dc2885..677c8ba55 100644 --- a/src/grib_accessor_class_sexagesimal2decimal.c +++ b/src/grib_accessor_class_sexagesimal2decimal.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_signed.c b/src/grib_accessor_class_signed.c index 71523c38b..617f0a878 100644 --- a/src/grib_accessor_class_signed.c +++ b/src/grib_accessor_class_signed.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_signed_bits.c b/src/grib_accessor_class_signed_bits.c index b1e9e21de..2513441ea 100644 --- a/src/grib_accessor_class_signed_bits.c +++ b/src/grib_accessor_class_signed_bits.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_simple_packing_error.c b/src/grib_accessor_class_simple_packing_error.c index 96d426eb4..6b52e0f81 100644 --- a/src/grib_accessor_class_simple_packing_error.c +++ b/src/grib_accessor_class_simple_packing_error.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_size.c b/src/grib_accessor_class_size.c index 45d71c784..dd3922761 100644 --- a/src/grib_accessor_class_size.c +++ b/src/grib_accessor_class_size.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_smart_table.c b/src/grib_accessor_class_smart_table.c index 823d4472d..7d620a227 100644 --- a/src/grib_accessor_class_smart_table.c +++ b/src/grib_accessor_class_smart_table.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_smart_table_column.c b/src/grib_accessor_class_smart_table_column.c index cdc311277..d029b7c8e 100644 --- a/src/grib_accessor_class_smart_table_column.c +++ b/src/grib_accessor_class_smart_table_column.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_spd.c b/src/grib_accessor_class_spd.c index 62ac5c055..4538bbace 100644 --- a/src/grib_accessor_class_spd.c +++ b/src/grib_accessor_class_spd.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_spectral_truncation.c b/src/grib_accessor_class_spectral_truncation.c index 871b8fceb..859f922c8 100644 --- a/src/grib_accessor_class_spectral_truncation.c +++ b/src/grib_accessor_class_spectral_truncation.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_sprintf.c b/src/grib_accessor_class_sprintf.c index be279edab..bbca4eb59 100644 --- a/src/grib_accessor_class_sprintf.c +++ b/src/grib_accessor_class_sprintf.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_statistics.c b/src/grib_accessor_class_statistics.c index 257e78504..2a6082d95 100644 --- a/src/grib_accessor_class_statistics.c +++ b/src/grib_accessor_class_statistics.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_statistics_spectral.c b/src/grib_accessor_class_statistics_spectral.c index 0568196d9..c3327fb3e 100644 --- a/src/grib_accessor_class_statistics_spectral.c +++ b/src/grib_accessor_class_statistics_spectral.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_step_in_units.c b/src/grib_accessor_class_step_in_units.c index ace38ece8..e1c11ff5b 100644 --- a/src/grib_accessor_class_step_in_units.c +++ b/src/grib_accessor_class_step_in_units.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_sum.c b/src/grib_accessor_class_sum.c index 37d2d9c08..98e3d8291 100644 --- a/src/grib_accessor_class_sum.c +++ b/src/grib_accessor_class_sum.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_suppressed.c b/src/grib_accessor_class_suppressed.c index 3a6f8c8a1..44a77cfd1 100644 --- a/src/grib_accessor_class_suppressed.c +++ b/src/grib_accessor_class_suppressed.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_time.c b/src/grib_accessor_class_time.c index 5c182c58d..0d79ed3a3 100644 --- a/src/grib_accessor_class_time.c +++ b/src/grib_accessor_class_time.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_times.c b/src/grib_accessor_class_times.c index 90bdf2af9..e3c30ede2 100644 --- a/src/grib_accessor_class_times.c +++ b/src/grib_accessor_class_times.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_to_double.c b/src/grib_accessor_class_to_double.c index ba21f56a3..fbbef682b 100644 --- a/src/grib_accessor_class_to_double.c +++ b/src/grib_accessor_class_to_double.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_to_integer.c b/src/grib_accessor_class_to_integer.c index 57a7129d2..f87479038 100644 --- a/src/grib_accessor_class_to_integer.c +++ b/src/grib_accessor_class_to_integer.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_to_string.c b/src/grib_accessor_class_to_string.c index 3316719ec..284b16bae 100644 --- a/src/grib_accessor_class_to_string.c +++ b/src/grib_accessor_class_to_string.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_transient.c b/src/grib_accessor_class_transient.c index 9f141bfd1..2f0f41baf 100644 --- a/src/grib_accessor_class_transient.c +++ b/src/grib_accessor_class_transient.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_transient_darray.c b/src/grib_accessor_class_transient_darray.c index 863671d96..9b9943595 100644 --- a/src/grib_accessor_class_transient_darray.c +++ b/src/grib_accessor_class_transient_darray.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_uint16.c b/src/grib_accessor_class_uint16.c index 03e0329ef..eb9c7c016 100644 --- a/src/grib_accessor_class_uint16.c +++ b/src/grib_accessor_class_uint16.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_uint16_little_endian.c b/src/grib_accessor_class_uint16_little_endian.c index 3be34efc7..7831d5db3 100644 --- a/src/grib_accessor_class_uint16_little_endian.c +++ b/src/grib_accessor_class_uint16_little_endian.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_uint32.c b/src/grib_accessor_class_uint32.c index ec5f4e49c..9503fcb89 100644 --- a/src/grib_accessor_class_uint32.c +++ b/src/grib_accessor_class_uint32.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_uint32_little_endian.c b/src/grib_accessor_class_uint32_little_endian.c index 71228d856..ba1e7227d 100644 --- a/src/grib_accessor_class_uint32_little_endian.c +++ b/src/grib_accessor_class_uint32_little_endian.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_uint64.c b/src/grib_accessor_class_uint64.c index 4d615298a..affd9dd8d 100644 --- a/src/grib_accessor_class_uint64.c +++ b/src/grib_accessor_class_uint64.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_uint64_little_endian.c b/src/grib_accessor_class_uint64_little_endian.c index ac68b945e..eb384b963 100644 --- a/src/grib_accessor_class_uint64_little_endian.c +++ b/src/grib_accessor_class_uint64_little_endian.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_uint8.c b/src/grib_accessor_class_uint8.c index f81a2d1a4..729f59aa4 100644 --- a/src/grib_accessor_class_uint8.c +++ b/src/grib_accessor_class_uint8.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_unexpanded_descriptors.c b/src/grib_accessor_class_unexpanded_descriptors.c index fd6e419b1..24fbedc83 100644 --- a/src/grib_accessor_class_unexpanded_descriptors.c +++ b/src/grib_accessor_class_unexpanded_descriptors.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_unpack_bufr_values.c b/src/grib_accessor_class_unpack_bufr_values.c index 0cea64b73..b73207732 100644 --- a/src/grib_accessor_class_unpack_bufr_values.c +++ b/src/grib_accessor_class_unpack_bufr_values.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_unsigned.c b/src/grib_accessor_class_unsigned.c index c9afe553a..46644d85a 100644 --- a/src/grib_accessor_class_unsigned.c +++ b/src/grib_accessor_class_unsigned.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_unsigned_bits.c b/src/grib_accessor_class_unsigned_bits.c index 8c347dc5d..4954b7a92 100644 --- a/src/grib_accessor_class_unsigned_bits.c +++ b/src/grib_accessor_class_unsigned_bits.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_validity_date.c b/src/grib_accessor_class_validity_date.c index f1099f6c5..697fe8c3e 100644 --- a/src/grib_accessor_class_validity_date.c +++ b/src/grib_accessor_class_validity_date.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_validity_time.c b/src/grib_accessor_class_validity_time.c index a2be5ede4..0636cd058 100644 --- a/src/grib_accessor_class_validity_time.c +++ b/src/grib_accessor_class_validity_time.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_values.c b/src/grib_accessor_class_values.c index 033b4f893..02db95b51 100644 --- a/src/grib_accessor_class_values.c +++ b/src/grib_accessor_class_values.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_variable.c b/src/grib_accessor_class_variable.c index 68b9189ee..82dc86a9c 100644 --- a/src/grib_accessor_class_variable.c +++ b/src/grib_accessor_class_variable.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_vector.c b/src/grib_accessor_class_vector.c index ea9580ddd..3179eef97 100644 --- a/src/grib_accessor_class_vector.c +++ b/src/grib_accessor_class_vector.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_accessor_class_when.c b/src/grib_accessor_class_when.c index 381a16688..03871ea83 100644 --- a/src/grib_accessor_class_when.c +++ b/src/grib_accessor_class_when.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_api.h b/src/grib_api.h index 9d6a6c91c..f5009b399 100644 --- a/src/grib_api.h +++ b/src/grib_api.h @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_api_internal.h b/src/grib_api_internal.h index b2be9291d..285a67e8e 100644 --- a/src/grib_api_internal.h +++ b/src/grib_api_internal.h @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_bits.c b/src/grib_bits.c index 335fcc97d..066509d18 100644 --- a/src/grib_bits.c +++ b/src/grib_bits.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_bits_any_endian.c b/src/grib_bits_any_endian.c index e30f94076..c87fe9d20 100644 --- a/src/grib_bits_any_endian.c +++ b/src/grib_bits_any_endian.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_bits_any_endian_omp.c b/src/grib_bits_any_endian_omp.c index 95d13e7ff..5ccc43d0e 100644 --- a/src/grib_bits_any_endian_omp.c +++ b/src/grib_bits_any_endian_omp.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_bits_any_endian_simple.c b/src/grib_bits_any_endian_simple.c index 24d745e15..9e6bc816e 100644 --- a/src/grib_bits_any_endian_simple.c +++ b/src/grib_bits_any_endian_simple.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_bits_any_endian_vector.c b/src/grib_bits_any_endian_vector.c index 4ea9a3dc1..fd6672613 100644 --- a/src/grib_bits_any_endian_vector.c +++ b/src/grib_bits_any_endian_vector.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_bits_fast_big_endian.c b/src/grib_bits_fast_big_endian.c index db92ed67d..e5345759d 100644 --- a/src/grib_bits_fast_big_endian.c +++ b/src/grib_bits_fast_big_endian.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_bits_fast_big_endian_omp.c b/src/grib_bits_fast_big_endian_omp.c index ff3281013..ff75e9d6a 100644 --- a/src/grib_bits_fast_big_endian_omp.c +++ b/src/grib_bits_fast_big_endian_omp.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_bits_fast_big_endian_simple.c b/src/grib_bits_fast_big_endian_simple.c index 91f8ebf27..46358c22b 100644 --- a/src/grib_bits_fast_big_endian_simple.c +++ b/src/grib_bits_fast_big_endian_simple.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_bits_fast_big_endian_vector.c b/src/grib_bits_fast_big_endian_vector.c index 0eaba286b..4d2d08226 100644 --- a/src/grib_bits_fast_big_endian_vector.c +++ b/src/grib_bits_fast_big_endian_vector.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_bits_ibmpow.c b/src/grib_bits_ibmpow.c index 1bb91942d..04b773ae5 100644 --- a/src/grib_bits_ibmpow.c +++ b/src/grib_bits_ibmpow.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_bits_ibmpow_opt.c b/src/grib_bits_ibmpow_opt.c index 50aba47d9..c4f4bc8cb 100644 --- a/src/grib_bits_ibmpow_opt.c +++ b/src/grib_bits_ibmpow_opt.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_box.c b/src/grib_box.c index c8dc4a0e3..3d5f2721d 100644 --- a/src/grib_box.c +++ b/src/grib_box.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_box_class.c b/src/grib_box_class.c index 12eb5672d..fcd4c2f76 100644 --- a/src/grib_box_class.c +++ b/src/grib_box_class.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_box_class_gen.c b/src/grib_box_class_gen.c index 8eac54b62..735851277 100644 --- a/src/grib_box_class_gen.c +++ b/src/grib_box_class_gen.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_box_class_reduced_gaussian.c b/src/grib_box_class_reduced_gaussian.c index 1bf2c1327..7aa31227d 100644 --- a/src/grib_box_class_reduced_gaussian.c +++ b/src/grib_box_class_reduced_gaussian.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_box_class_regular_gaussian.c b/src/grib_box_class_regular_gaussian.c index 6ee029177..51255f6d9 100644 --- a/src/grib_box_class_regular_gaussian.c +++ b/src/grib_box_class_regular_gaussian.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_buffer.c b/src/grib_buffer.c index 351de07d9..d6c052e2b 100644 --- a/src/grib_buffer.c +++ b/src/grib_buffer.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_bufr_descriptor.c b/src/grib_bufr_descriptor.c index fec01ddc4..729d3a02f 100644 --- a/src/grib_bufr_descriptor.c +++ b/src/grib_bufr_descriptor.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_bufr_descriptors_array.c b/src/grib_bufr_descriptors_array.c index 0965db234..7df7ba115 100644 --- a/src/grib_bufr_descriptors_array.c +++ b/src/grib_bufr_descriptors_array.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_compressor.c b/src/grib_compressor.c index aecb54704..1ea22324e 100644 --- a/src/grib_compressor.c +++ b/src/grib_compressor.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_concept.c b/src/grib_concept.c index 281bf8219..3e12bedf0 100644 --- a/src/grib_concept.c +++ b/src/grib_concept.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_concept_index.c b/src/grib_concept_index.c index bd6c4964a..63d15299d 100644 --- a/src/grib_concept_index.c +++ b/src/grib_concept_index.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_context.c b/src/grib_context.c index e53bf864a..aada39c26 100644 --- a/src/grib_context.c +++ b/src/grib_context.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_darray.c b/src/grib_darray.c index 90333786e..5dfe35f60 100644 --- a/src/grib_darray.c +++ b/src/grib_darray.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_date.c b/src/grib_date.c index 74582f041..f7c5441b6 100644 --- a/src/grib_date.c +++ b/src/grib_date.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_db.c b/src/grib_db.c index a2334ee49..5931522d7 100644 --- a/src/grib_db.c +++ b/src/grib_db.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_dependency.c b/src/grib_dependency.c index 539d59cb3..fc730d809 100644 --- a/src/grib_dependency.c +++ b/src/grib_dependency.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_dumper.c b/src/grib_dumper.c index 34c52c972..831481ef4 100644 --- a/src/grib_dumper.c +++ b/src/grib_dumper.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_dumper_class.c b/src/grib_dumper_class.c index 73c098490..4540773df 100644 --- a/src/grib_dumper_class.c +++ b/src/grib_dumper_class.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_dumper_class_bufr_decode_C.c b/src/grib_dumper_class_bufr_decode_C.c index 7d7213255..1bbbac69f 100644 --- a/src/grib_dumper_class_bufr_decode_C.c +++ b/src/grib_dumper_class_bufr_decode_C.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_dumper_class_bufr_decode_filter.c b/src/grib_dumper_class_bufr_decode_filter.c index 8c99614a6..bf24dfadb 100644 --- a/src/grib_dumper_class_bufr_decode_filter.c +++ b/src/grib_dumper_class_bufr_decode_filter.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_dumper_class_bufr_decode_fortran.c b/src/grib_dumper_class_bufr_decode_fortran.c index b054e733d..592f04327 100644 --- a/src/grib_dumper_class_bufr_decode_fortran.c +++ b/src/grib_dumper_class_bufr_decode_fortran.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_dumper_class_bufr_decode_python.c b/src/grib_dumper_class_bufr_decode_python.c index 2cd6bc8fb..0bf477f4b 100644 --- a/src/grib_dumper_class_bufr_decode_python.c +++ b/src/grib_dumper_class_bufr_decode_python.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_dumper_class_bufr_encode_C.c b/src/grib_dumper_class_bufr_encode_C.c index 6a3540197..d517fd44d 100644 --- a/src/grib_dumper_class_bufr_encode_C.c +++ b/src/grib_dumper_class_bufr_encode_C.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_dumper_class_bufr_encode_filter.c b/src/grib_dumper_class_bufr_encode_filter.c index 734d0492d..fce8a6ab2 100644 --- a/src/grib_dumper_class_bufr_encode_filter.c +++ b/src/grib_dumper_class_bufr_encode_filter.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_dumper_class_bufr_encode_fortran.c b/src/grib_dumper_class_bufr_encode_fortran.c index 8e6126393..9518ab3ce 100644 --- a/src/grib_dumper_class_bufr_encode_fortran.c +++ b/src/grib_dumper_class_bufr_encode_fortran.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_dumper_class_bufr_encode_python.c b/src/grib_dumper_class_bufr_encode_python.c index 7d1580fbc..06da5ee69 100644 --- a/src/grib_dumper_class_bufr_encode_python.c +++ b/src/grib_dumper_class_bufr_encode_python.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_dumper_class_bufr_simple.c b/src/grib_dumper_class_bufr_simple.c index 3eb7af82a..d55594fcf 100644 --- a/src/grib_dumper_class_bufr_simple.c +++ b/src/grib_dumper_class_bufr_simple.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_dumper_class_debug.c b/src/grib_dumper_class_debug.c index 651b2b3df..bb3126418 100644 --- a/src/grib_dumper_class_debug.c +++ b/src/grib_dumper_class_debug.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_dumper_class_default.c b/src/grib_dumper_class_default.c index d88dc8dfe..36fed9693 100644 --- a/src/grib_dumper_class_default.c +++ b/src/grib_dumper_class_default.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_dumper_class_grib_encode_C.c b/src/grib_dumper_class_grib_encode_C.c index 6975a5bfb..771551752 100644 --- a/src/grib_dumper_class_grib_encode_C.c +++ b/src/grib_dumper_class_grib_encode_C.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_dumper_class_json.c b/src/grib_dumper_class_json.c index 64541de4c..8fd8b05ee 100644 --- a/src/grib_dumper_class_json.c +++ b/src/grib_dumper_class_json.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_dumper_class_keys.c b/src/grib_dumper_class_keys.c index b288160d3..e11347552 100644 --- a/src/grib_dumper_class_keys.c +++ b/src/grib_dumper_class_keys.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_dumper_class_serialize.c b/src/grib_dumper_class_serialize.c index 120089e1b..85bbb706b 100644 --- a/src/grib_dumper_class_serialize.c +++ b/src/grib_dumper_class_serialize.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_dumper_class_wmo.c b/src/grib_dumper_class_wmo.c index 9d5eb8668..3cba3a273 100644 --- a/src/grib_dumper_class_wmo.c +++ b/src/grib_dumper_class_wmo.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_emoslib.h b/src/grib_emoslib.h index c863b95e4..c741ddfa6 100644 --- a/src/grib_emoslib.h +++ b/src/grib_emoslib.h @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_expression.c b/src/grib_expression.c index fdbbbc422..31fe8868b 100644 --- a/src/grib_expression.c +++ b/src/grib_expression.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_expression.h b/src/grib_expression.h index 93d9b0d1f..a746cb60a 100644 --- a/src/grib_expression.h +++ b/src/grib_expression.h @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_expression_class_accessor.c b/src/grib_expression_class_accessor.c index 99c70e953..ce7922b86 100644 --- a/src/grib_expression_class_accessor.c +++ b/src/grib_expression_class_accessor.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_expression_class_binop.c b/src/grib_expression_class_binop.c index ebe56084a..0ae71145c 100644 --- a/src/grib_expression_class_binop.c +++ b/src/grib_expression_class_binop.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_expression_class_column.c b/src/grib_expression_class_column.c index 8479771b6..f69c45baa 100644 --- a/src/grib_expression_class_column.c +++ b/src/grib_expression_class_column.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_expression_class_constant.c b/src/grib_expression_class_constant.c index e587d763b..44775ce98 100644 --- a/src/grib_expression_class_constant.c +++ b/src/grib_expression_class_constant.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_expression_class_double.c b/src/grib_expression_class_double.c index 7e48dd889..64dd36407 100644 --- a/src/grib_expression_class_double.c +++ b/src/grib_expression_class_double.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_expression_class_functor.c b/src/grib_expression_class_functor.c index c4787d121..365c85ea0 100644 --- a/src/grib_expression_class_functor.c +++ b/src/grib_expression_class_functor.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_expression_class_is_in_dict.c b/src/grib_expression_class_is_in_dict.c index efab734e2..d568b9477 100644 --- a/src/grib_expression_class_is_in_dict.c +++ b/src/grib_expression_class_is_in_dict.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_expression_class_is_in_list.c b/src/grib_expression_class_is_in_list.c index 80327007f..51cf8c057 100644 --- a/src/grib_expression_class_is_in_list.c +++ b/src/grib_expression_class_is_in_list.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_expression_class_is_integer.c b/src/grib_expression_class_is_integer.c index 5fc82574a..6933f7365 100644 --- a/src/grib_expression_class_is_integer.c +++ b/src/grib_expression_class_is_integer.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_expression_class_length.c b/src/grib_expression_class_length.c index 4309ffe66..c5c48a667 100644 --- a/src/grib_expression_class_length.c +++ b/src/grib_expression_class_length.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_expression_class_logical_and.c b/src/grib_expression_class_logical_and.c index f92eeb6aa..99c29c132 100644 --- a/src/grib_expression_class_logical_and.c +++ b/src/grib_expression_class_logical_and.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_expression_class_logical_or.c b/src/grib_expression_class_logical_or.c index 1b54f8109..ce60481b0 100644 --- a/src/grib_expression_class_logical_or.c +++ b/src/grib_expression_class_logical_or.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_expression_class_long.c b/src/grib_expression_class_long.c index 640b56535..3968cc177 100644 --- a/src/grib_expression_class_long.c +++ b/src/grib_expression_class_long.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_expression_class_string.c b/src/grib_expression_class_string.c index 43f96c886..31e7b8642 100644 --- a/src/grib_expression_class_string.c +++ b/src/grib_expression_class_string.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_expression_class_string_compare.c b/src/grib_expression_class_string_compare.c index 9e3b11fb8..ee123b387 100644 --- a/src/grib_expression_class_string_compare.c +++ b/src/grib_expression_class_string_compare.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_expression_class_sub_string.c b/src/grib_expression_class_sub_string.c index 33bd6de0a..13e201b7f 100644 --- a/src/grib_expression_class_sub_string.c +++ b/src/grib_expression_class_sub_string.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_expression_class_true.c b/src/grib_expression_class_true.c index fa540d804..bde3869cc 100644 --- a/src/grib_expression_class_true.c +++ b/src/grib_expression_class_true.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_expression_class_unop.c b/src/grib_expression_class_unop.c index 7eae32349..d3c19af8a 100644 --- a/src/grib_expression_class_unop.c +++ b/src/grib_expression_class_unop.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_fieldset.c b/src/grib_fieldset.c index 51eecc5b7..85fbfe3b3 100644 --- a/src/grib_fieldset.c +++ b/src/grib_fieldset.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_filepool.c b/src/grib_filepool.c index 5492c6bd3..39f129797 100644 --- a/src/grib_filepool.c +++ b/src/grib_filepool.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_gaussian_reduced.c b/src/grib_gaussian_reduced.c index 8f1d056af..2ff49cf74 100644 --- a/src/grib_gaussian_reduced.c +++ b/src/grib_gaussian_reduced.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_geography.c b/src/grib_geography.c index 0812ea643..7fffce81e 100644 --- a/src/grib_geography.c +++ b/src/grib_geography.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_handle.c b/src/grib_handle.c index ece2080db..2c8e136f3 100644 --- a/src/grib_handle.c +++ b/src/grib_handle.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_hash_array.c b/src/grib_hash_array.c index 25f0b158f..fd294b200 100644 --- a/src/grib_hash_array.c +++ b/src/grib_hash_array.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_hash_keys.c b/src/grib_hash_keys.c index 99b695c5c..4556cf9f6 100644 --- a/src/grib_hash_keys.c +++ b/src/grib_hash_keys.c @@ -10880,7 +10880,7 @@ grib_keys_hash_get (const char *str, unsigned int len) return 0; } /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_header_compute.c b/src/grib_header_compute.c index 88122baf9..fb5b279f4 100644 --- a/src/grib_header_compute.c +++ b/src/grib_header_compute.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_iarray.c b/src/grib_iarray.c index c2baa4bc7..4e4e38b3c 100644 --- a/src/grib_iarray.c +++ b/src/grib_iarray.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_ibmfloat.c b/src/grib_ibmfloat.c index 67f10b21e..030f9c2c5 100644 --- a/src/grib_ibmfloat.c +++ b/src/grib_ibmfloat.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_ieeefloat.c b/src/grib_ieeefloat.c index 517065bcd..d2e1224cd 100644 --- a/src/grib_ieeefloat.c +++ b/src/grib_ieeefloat.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_index.c b/src/grib_index.c index 293906c10..f91aba3a8 100644 --- a/src/grib_index.c +++ b/src/grib_index.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_io.c b/src/grib_io.c index 9b5a1bed1..5515f3555 100644 --- a/src/grib_io.c +++ b/src/grib_io.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_iterator.c b/src/grib_iterator.c index 97233ba59..cd90ad813 100644 --- a/src/grib_iterator.c +++ b/src/grib_iterator.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_iterator_class.c b/src/grib_iterator_class.c index 30005c86d..a81c03cf3 100644 --- a/src/grib_iterator_class.c +++ b/src/grib_iterator_class.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_iterator_class_gaussian.c b/src/grib_iterator_class_gaussian.c index b30f90e9a..e68d7d81c 100644 --- a/src/grib_iterator_class_gaussian.c +++ b/src/grib_iterator_class_gaussian.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_iterator_class_gaussian_reduced.c b/src/grib_iterator_class_gaussian_reduced.c index f8c383e54..e1b12b630 100644 --- a/src/grib_iterator_class_gaussian_reduced.c +++ b/src/grib_iterator_class_gaussian_reduced.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_iterator_class_gen.c b/src/grib_iterator_class_gen.c index c4effd40d..ea346be32 100644 --- a/src/grib_iterator_class_gen.c +++ b/src/grib_iterator_class_gen.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_iterator_class_lambert_azimuthal_equal_area.c b/src/grib_iterator_class_lambert_azimuthal_equal_area.c index 908781808..3b7365b78 100644 --- a/src/grib_iterator_class_lambert_azimuthal_equal_area.c +++ b/src/grib_iterator_class_lambert_azimuthal_equal_area.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_iterator_class_lambert_conformal.c b/src/grib_iterator_class_lambert_conformal.c index c93f090cd..d8e4ccbb9 100644 --- a/src/grib_iterator_class_lambert_conformal.c +++ b/src/grib_iterator_class_lambert_conformal.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_iterator_class_latlon.c b/src/grib_iterator_class_latlon.c index 01eab20ab..36eac3554 100644 --- a/src/grib_iterator_class_latlon.c +++ b/src/grib_iterator_class_latlon.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_iterator_class_latlon_reduced.c b/src/grib_iterator_class_latlon_reduced.c index 2b7646e8f..911e539ef 100644 --- a/src/grib_iterator_class_latlon_reduced.c +++ b/src/grib_iterator_class_latlon_reduced.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_iterator_class_polar_stereographic.c b/src/grib_iterator_class_polar_stereographic.c index 5afac4021..11eb2653e 100644 --- a/src/grib_iterator_class_polar_stereographic.c +++ b/src/grib_iterator_class_polar_stereographic.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_iterator_class_regular.c b/src/grib_iterator_class_regular.c index 9616a3f6b..a6d755465 100644 --- a/src/grib_iterator_class_regular.c +++ b/src/grib_iterator_class_regular.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_iterator_class_space_view.c b/src/grib_iterator_class_space_view.c index e57c09b87..caf21f9ed 100644 --- a/src/grib_iterator_class_space_view.c +++ b/src/grib_iterator_class_space_view.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_itrie.c b/src/grib_itrie.c index 9457abe7c..3f40bfbc5 100644 --- a/src/grib_itrie.c +++ b/src/grib_itrie.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_itrie_keys.c b/src/grib_itrie_keys.c index 2346497a5..5f66aa113 100644 --- a/src/grib_itrie_keys.c +++ b/src/grib_itrie_keys.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_jasper_encoding.c b/src/grib_jasper_encoding.c index 965f8183f..f51846535 100644 --- a/src/grib_jasper_encoding.c +++ b/src/grib_jasper_encoding.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_keys_iterator.c b/src/grib_keys_iterator.c index a9dd51daa..17e65c23f 100644 --- a/src/grib_keys_iterator.c +++ b/src/grib_keys_iterator.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_lex.c b/src/grib_lex.c index ff0bf6e2d..3928dd268 100644 --- a/src/grib_lex.c +++ b/src/grib_lex.c @@ -1160,7 +1160,7 @@ int grib_yy_flex_debug = 0; char *grib_yytext; #line 1 "gribl.l" /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_loader_from_array.c b/src/grib_loader_from_array.c index 7bec1458d..fe5bacfbb 100644 --- a/src/grib_loader_from_array.c +++ b/src/grib_loader_from_array.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_loader_from_file.c b/src/grib_loader_from_file.c index 29f86f737..f5f50c1fe 100644 --- a/src/grib_loader_from_file.c +++ b/src/grib_loader_from_file.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_loader_from_handle.c b/src/grib_loader_from_handle.c index 696537aa2..83fa154b7 100644 --- a/src/grib_loader_from_handle.c +++ b/src/grib_loader_from_handle.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_memory.c b/src/grib_memory.c index ed681036b..43ef41dbd 100644 --- a/src/grib_memory.c +++ b/src/grib_memory.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_nearest.c b/src/grib_nearest.c index 58c271e2c..60b5a5b14 100644 --- a/src/grib_nearest.c +++ b/src/grib_nearest.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_nearest_class.c b/src/grib_nearest_class.c index e9d6c2e2f..d1715b3ec 100644 --- a/src/grib_nearest_class.c +++ b/src/grib_nearest_class.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_nearest_class_gen.c b/src/grib_nearest_class_gen.c index 37e082e55..3b86f4d87 100644 --- a/src/grib_nearest_class_gen.c +++ b/src/grib_nearest_class_gen.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_nearest_class_lambert_conformal.c b/src/grib_nearest_class_lambert_conformal.c index 1888a3abe..d75d0cd3a 100644 --- a/src/grib_nearest_class_lambert_conformal.c +++ b/src/grib_nearest_class_lambert_conformal.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_nearest_class_latlon_reduced.c b/src/grib_nearest_class_latlon_reduced.c index 10d58930b..4e704a3a7 100644 --- a/src/grib_nearest_class_latlon_reduced.c +++ b/src/grib_nearest_class_latlon_reduced.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_nearest_class_polar_stereographic.c b/src/grib_nearest_class_polar_stereographic.c index a7c395045..a4d26c077 100644 --- a/src/grib_nearest_class_polar_stereographic.c +++ b/src/grib_nearest_class_polar_stereographic.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_nearest_class_reduced.c b/src/grib_nearest_class_reduced.c index 64b1971bd..ccb0884f4 100644 --- a/src/grib_nearest_class_reduced.c +++ b/src/grib_nearest_class_reduced.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_nearest_class_regular.c b/src/grib_nearest_class_regular.c index 835160d7d..d138ba0db 100644 --- a/src/grib_nearest_class_regular.c +++ b/src/grib_nearest_class_regular.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_nearest_class_sh.c b/src/grib_nearest_class_sh.c index 7714e8fa2..e409f6160 100644 --- a/src/grib_nearest_class_sh.c +++ b/src/grib_nearest_class_sh.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_oarray.c b/src/grib_oarray.c index b7c4e5ae9..e56e74f1a 100644 --- a/src/grib_oarray.c +++ b/src/grib_oarray.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_openjpeg_encoding.c b/src/grib_openjpeg_encoding.c index 4a29d3fc9..03c45834a 100644 --- a/src/grib_openjpeg_encoding.c +++ b/src/grib_openjpeg_encoding.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_optimize_decimal_factor.c b/src/grib_optimize_decimal_factor.c index b0c3a5147..afeb6c008 100644 --- a/src/grib_optimize_decimal_factor.c +++ b/src/grib_optimize_decimal_factor.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_parse_utils.c b/src/grib_parse_utils.c index c3c38d01d..57f4730b6 100644 --- a/src/grib_parse_utils.c +++ b/src/grib_parse_utils.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_query.c b/src/grib_query.c index 0ba905a09..963a535a9 100644 --- a/src/grib_query.c +++ b/src/grib_query.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_rules.c b/src/grib_rules.c index beb8034e3..f426566a8 100644 --- a/src/grib_rules.c +++ b/src/grib_rules.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_sarray.c b/src/grib_sarray.c index 7eafd3286..d343fa954 100644 --- a/src/grib_sarray.c +++ b/src/grib_sarray.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_scaling.c b/src/grib_scaling.c index d1204b2a8..a6f898074 100644 --- a/src/grib_scaling.c +++ b/src/grib_scaling.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_templates.c b/src/grib_templates.c index 410c66209..66251f873 100644 --- a/src/grib_templates.c +++ b/src/grib_templates.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_templates.h b/src/grib_templates.h index 230942625..805418677 100644 --- a/src/grib_templates.h +++ b/src/grib_templates.h @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_timer.c b/src/grib_timer.c index 2a9e75e90..42ea49fa8 100644 --- a/src/grib_timer.c +++ b/src/grib_timer.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_trie.c b/src/grib_trie.c index 13d935c27..8d31819c1 100644 --- a/src/grib_trie.c +++ b/src/grib_trie.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_trie_with_rank.c b/src/grib_trie_with_rank.c index c07deb9e8..28bb1910f 100644 --- a/src/grib_trie_with_rank.c +++ b/src/grib_trie_with_rank.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_util.c b/src/grib_util.c index 8a052202b..07fb94c5a 100644 --- a/src/grib_util.c +++ b/src/grib_util.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_value.c b/src/grib_value.c index e1a2a3287..1d826440f 100644 --- a/src/grib_value.c +++ b/src/grib_value.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_vdarray.c b/src/grib_vdarray.c index 79053f2e7..50f16034c 100644 --- a/src/grib_vdarray.c +++ b/src/grib_vdarray.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_viarray.c b/src/grib_viarray.c index a5c200c19..b54ea1c07 100644 --- a/src/grib_viarray.c +++ b/src/grib_viarray.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/grib_vsarray.c b/src/grib_vsarray.c index 359ac46c3..e1ceef83c 100644 --- a/src/grib_vsarray.c +++ b/src/grib_vsarray.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/gribl.l b/src/gribl.l index 53ae0c851..5acc16852 100644 --- a/src/gribl.l +++ b/src/gribl.l @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/griby.y b/src/griby.y index 0cf3a72a3..697a6a9cb 100644 --- a/src/griby.y +++ b/src/griby.y @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/jgribapi_GribFile.h b/src/jgribapi_GribFile.h index 0eb02546e..73a30b825 100644 --- a/src/jgribapi_GribFile.h +++ b/src/jgribapi_GribFile.h @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/jgribapi_GribHandle.h b/src/jgribapi_GribHandle.h index a3e91f582..f748832dd 100644 --- a/src/jgribapi_GribHandle.h +++ b/src/jgribapi_GribHandle.h @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/jgribapi_GribIterator.h b/src/jgribapi_GribIterator.h index 929f9409a..9b17338a4 100644 --- a/src/jgribapi_GribIterator.h +++ b/src/jgribapi_GribIterator.h @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/md5.c b/src/md5.c index 4bda9c492..9a2f52c67 100644 --- a/src/md5.c +++ b/src/md5.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/md5.h b/src/md5.h index 28fab5c47..153bdbe04 100644 --- a/src/md5.h +++ b/src/md5.h @@ -2,7 +2,7 @@ #define md5_H /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/minmax_val.c b/src/minmax_val.c index 2bcd88bf7..1609de9a2 100644 --- a/src/minmax_val.c +++ b/src/minmax_val.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/src/string_util.c b/src/string_util.c index 1254d105a..87162602e 100644 --- a/src/string_util.c +++ b/src/string_util.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/badgrib.sh b/tests/badgrib.sh index d515debc3..e9a7edf11 100755 --- a/tests/badgrib.sh +++ b/tests/badgrib.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bits.c b/tests/bits.c index a996f3ae4..187d6ff47 100755 --- a/tests/bits.c +++ b/tests/bits.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bpv_limit.c b/tests/bpv_limit.c index b9d41cdaf..50a1769d2 100644 --- a/tests/bpv_limit.c +++ b/tests/bpv_limit.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bpv_limit.sh b/tests/bpv_limit.sh index fc8d305f1..205ead64d 100755 --- a/tests/bpv_limit.sh +++ b/tests/bpv_limit.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/budg.sh b/tests/budg.sh index 001bfb864..e1f9b21d0 100755 --- a/tests/budg.sh +++ b/tests/budg.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_change_edition.sh b/tests/bufr_change_edition.sh index ed0d44386..5b051f5fa 100755 --- a/tests/bufr_change_edition.sh +++ b/tests/bufr_change_edition.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_compare.sh b/tests/bufr_compare.sh index 5481c039d..e77367961 100755 --- a/tests/bufr_compare.sh +++ b/tests/bufr_compare.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_copy.sh b/tests/bufr_copy.sh index 6511e0e88..5f0785d7e 100755 --- a/tests/bufr_copy.sh +++ b/tests/bufr_copy.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_count.sh b/tests/bufr_count.sh index fd386431f..963ee8b34 100755 --- a/tests/bufr_count.sh +++ b/tests/bufr_count.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_dump_data.sh b/tests/bufr_dump_data.sh index 568bfd300..7fe2485dd 100755 --- a/tests/bufr_dump_data.sh +++ b/tests/bufr_dump_data.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_dump_decode_C.sh b/tests/bufr_dump_decode_C.sh index 4db61d62c..8be9a2f3c 100755 --- a/tests/bufr_dump_decode_C.sh +++ b/tests/bufr_dump_decode_C.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_dump_decode_filter.sh b/tests/bufr_dump_decode_filter.sh index a111cefba..1d9aa4f67 100755 --- a/tests/bufr_dump_decode_filter.sh +++ b/tests/bufr_dump_decode_filter.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_dump_decode_fortran.sh b/tests/bufr_dump_decode_fortran.sh index 98a9e92f5..dceb7ee7f 100755 --- a/tests/bufr_dump_decode_fortran.sh +++ b/tests/bufr_dump_decode_fortran.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_dump_decode_python.sh b/tests/bufr_dump_decode_python.sh index 89ae258f9..3ccbac43e 100755 --- a/tests/bufr_dump_decode_python.sh +++ b/tests/bufr_dump_decode_python.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_dump_encode_C.sh b/tests/bufr_dump_encode_C.sh index 0d1999491..1d2a5204f 100755 --- a/tests/bufr_dump_encode_C.sh +++ b/tests/bufr_dump_encode_C.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_dump_encode_filter.sh b/tests/bufr_dump_encode_filter.sh index 82089afe8..71277c195 100755 --- a/tests/bufr_dump_encode_filter.sh +++ b/tests/bufr_dump_encode_filter.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_dump_encode_fortran.sh b/tests/bufr_dump_encode_fortran.sh index 96cef2918..7664c8607 100755 --- a/tests/bufr_dump_encode_fortran.sh +++ b/tests/bufr_dump_encode_fortran.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_dump_encode_python.sh b/tests/bufr_dump_encode_python.sh index f7eace9cb..9aa20a643 100755 --- a/tests/bufr_dump_encode_python.sh +++ b/tests/bufr_dump_encode_python.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_dump_samples.sh b/tests/bufr_dump_samples.sh index ceb5966e1..2e66b5faf 100755 --- a/tests/bufr_dump_samples.sh +++ b/tests/bufr_dump_samples.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_ecc-197.sh b/tests/bufr_ecc-197.sh index f7fdf3bb7..e19fcf3d6 100755 --- a/tests/bufr_ecc-197.sh +++ b/tests/bufr_ecc-197.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_ecc-286.sh b/tests/bufr_ecc-286.sh index c026b18a8..5baa601a3 100755 --- a/tests/bufr_ecc-286.sh +++ b/tests/bufr_ecc-286.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_ecc-288.sh b/tests/bufr_ecc-288.sh index 6ef1b412f..719f54562 100755 --- a/tests/bufr_ecc-288.sh +++ b/tests/bufr_ecc-288.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_ecc-313.sh b/tests/bufr_ecc-313.sh index 1198abacd..5c418b9e8 100755 --- a/tests/bufr_ecc-313.sh +++ b/tests/bufr_ecc-313.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_ecc-359.sh b/tests/bufr_ecc-359.sh index 0679fc69d..db001afa5 100755 --- a/tests/bufr_ecc-359.sh +++ b/tests/bufr_ecc-359.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_ecc-379.sh b/tests/bufr_ecc-379.sh index a673e0983..a7d2b635d 100755 --- a/tests/bufr_ecc-379.sh +++ b/tests/bufr_ecc-379.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_ecc-393.sh b/tests/bufr_ecc-393.sh index 68c00fd09..76a092ef5 100755 --- a/tests/bufr_ecc-393.sh +++ b/tests/bufr_ecc-393.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_ecc-433.sh b/tests/bufr_ecc-433.sh index 701df2976..c08a1f3ff 100755 --- a/tests/bufr_ecc-433.sh +++ b/tests/bufr_ecc-433.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_ecc-517.c b/tests/bufr_ecc-517.c index d6515232a..f27d46e6b 100644 --- a/tests/bufr_ecc-517.c +++ b/tests/bufr_ecc-517.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_ecc-517.sh b/tests/bufr_ecc-517.sh index 51ce13fbb..387ee168b 100755 --- a/tests/bufr_ecc-517.sh +++ b/tests/bufr_ecc-517.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_ecc-556.sh b/tests/bufr_ecc-556.sh index b4fb12d69..880586d76 100755 --- a/tests/bufr_ecc-556.sh +++ b/tests/bufr_ecc-556.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_ecc-616.sh b/tests/bufr_ecc-616.sh index ef161fad6..8aabba9f1 100755 --- a/tests/bufr_ecc-616.sh +++ b/tests/bufr_ecc-616.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_ecc-686.sh b/tests/bufr_ecc-686.sh index 5577286cf..072a3b730 100755 --- a/tests/bufr_ecc-686.sh +++ b/tests/bufr_ecc-686.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_ecc-690.sh b/tests/bufr_ecc-690.sh index 23530f57c..0b1d3959b 100755 --- a/tests/bufr_ecc-690.sh +++ b/tests/bufr_ecc-690.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_ecc-750.sh b/tests/bufr_ecc-750.sh index f6cba0cd9..5b84f4788 100755 --- a/tests/bufr_ecc-750.sh +++ b/tests/bufr_ecc-750.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_ecc-875.sh b/tests/bufr_ecc-875.sh index f538ddc76..1f5120039 100755 --- a/tests/bufr_ecc-875.sh +++ b/tests/bufr_ecc-875.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_ecc-887.sh b/tests/bufr_ecc-887.sh index dd4afef14..6e2221dec 100755 --- a/tests/bufr_ecc-887.sh +++ b/tests/bufr_ecc-887.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_filter.sh b/tests/bufr_filter.sh index 60c5e53d5..46166ab81 100755 --- a/tests/bufr_filter.sh +++ b/tests/bufr_filter.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_filter_extract_area.sh b/tests/bufr_filter_extract_area.sh index 28f3e245c..e47824b8e 100755 --- a/tests/bufr_filter_extract_area.sh +++ b/tests/bufr_filter_extract_area.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_filter_extract_datetime.sh b/tests/bufr_filter_extract_datetime.sh index 66bf348da..c07ef5e31 100755 --- a/tests/bufr_filter_extract_datetime.sh +++ b/tests/bufr_filter_extract_datetime.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_get.sh b/tests/bufr_get.sh index b3f76c6d8..237e9321d 100755 --- a/tests/bufr_get.sh +++ b/tests/bufr_get.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_get_element.c b/tests/bufr_get_element.c index ca44af265..b993be185 100644 --- a/tests/bufr_get_element.c +++ b/tests/bufr_get_element.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_get_element.sh b/tests/bufr_get_element.sh index 36a348dc5..ea20e69b7 100755 --- a/tests/bufr_get_element.sh +++ b/tests/bufr_get_element.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_json_data.sh b/tests/bufr_json_data.sh index 3885dc1c8..8c6b8cb86 100755 --- a/tests/bufr_json_data.sh +++ b/tests/bufr_json_data.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_json_samples.sh b/tests/bufr_json_samples.sh index 28e872d33..e9cd9adcf 100755 --- a/tests/bufr_json_samples.sh +++ b/tests/bufr_json_samples.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_keys_iter.c b/tests/bufr_keys_iter.c index eb38feb73..58440362f 100644 --- a/tests/bufr_keys_iter.c +++ b/tests/bufr_keys_iter.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_keys_iter.sh b/tests/bufr_keys_iter.sh index bb40ad146..8ead913bf 100755 --- a/tests/bufr_keys_iter.sh +++ b/tests/bufr_keys_iter.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_ls.sh b/tests/bufr_ls.sh index 2dbd43501..31df73011 100755 --- a/tests/bufr_ls.sh +++ b/tests/bufr_ls.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_rdbSubTypes.sh b/tests/bufr_rdbSubTypes.sh index f638b9869..aad772768 100755 --- a/tests/bufr_rdbSubTypes.sh +++ b/tests/bufr_rdbSubTypes.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_set.sh b/tests/bufr_set.sh index b6c1a0deb..6e66c310c 100755 --- a/tests/bufr_set.sh +++ b/tests/bufr_set.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_split_by_rdbSubtype.sh b/tests/bufr_split_by_rdbSubtype.sh index d404ff389..33b85bb87 100755 --- a/tests/bufr_split_by_rdbSubtype.sh +++ b/tests/bufr_split_by_rdbSubtype.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufr_wmo_tables.sh b/tests/bufr_wmo_tables.sh index 1bb00ad1c..0cab9bdd8 100755 --- a/tests/bufr_wmo_tables.sh +++ b/tests/bufr_wmo_tables.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufrdc_desc_ref.sh b/tests/bufrdc_desc_ref.sh index 9fb94704b..49c32ae5e 100755 --- a/tests/bufrdc_desc_ref.sh +++ b/tests/bufrdc_desc_ref.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/bufrdc_ref.sh b/tests/bufrdc_ref.sh index dc6624982..dcb75416e 100755 --- a/tests/bufrdc_ref.sh +++ b/tests/bufrdc_ref.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/codes_split_file.sh b/tests/codes_split_file.sh index 8811c9ed3..4af647070 100755 --- a/tests/codes_split_file.sh +++ b/tests/codes_split_file.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/decimalPrecision.sh b/tests/decimalPrecision.sh index c06716d64..2ffe29e4a 100755 --- a/tests/decimalPrecision.sh +++ b/tests/decimalPrecision.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/decode.c b/tests/decode.c index 0d717f876..595f677a0 100755 --- a/tests/decode.c +++ b/tests/decode.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/definitions.sh b/tests/definitions.sh index 3456faba6..2f693889e 100755 --- a/tests/definitions.sh +++ b/tests/definitions.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/fortran_interface.sh b/tests/fortran_interface.sh index 8f4b909ef..9664cf514 100755 --- a/tests/fortran_interface.sh +++ b/tests/fortran_interface.sh @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/gauss_sub.c b/tests/gauss_sub.c index a9e8ee5a8..88d224f20 100644 --- a/tests/gauss_sub.c +++ b/tests/gauss_sub.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/get_fail.sh b/tests/get_fail.sh index 8f13281bf..68b145078 100755 --- a/tests/get_fail.sh +++ b/tests/get_fail.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib1to2.sh b/tests/grib1to2.sh index f4829ef58..5f8b6e593 100755 --- a/tests/grib1to2.sh +++ b/tests/grib1to2.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib1to3.sh b/tests/grib1to3.sh index dc91e7180..6bd86180a 100755 --- a/tests/grib1to3.sh +++ b/tests/grib1to3.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib2to1.sh b/tests/grib2to1.sh index 2cfbd91e8..351011961 100755 --- a/tests/grib2to1.sh +++ b/tests/grib2to1.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib2to3.sh b/tests/grib2to3.sh index bb155efbb..2337234b7 100755 --- a/tests/grib2to3.sh +++ b/tests/grib2to3.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib3_templates.sh b/tests/grib3_templates.sh index 9fb6441f0..588f77e21 100755 --- a/tests/grib3_templates.sh +++ b/tests/grib3_templates.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_2nd_order_numValues.c b/tests/grib_2nd_order_numValues.c index 7d28783c2..c9676fc44 100644 --- a/tests/grib_2nd_order_numValues.c +++ b/tests/grib_2nd_order_numValues.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_2nd_order_numValues.sh b/tests/grib_2nd_order_numValues.sh index 3adc357ef..9da9c3042 100755 --- a/tests/grib_2nd_order_numValues.sh +++ b/tests/grib_2nd_order_numValues.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_bitmap.sh b/tests/grib_bitmap.sh index 55da2ac9d..69e7d84b1 100755 --- a/tests/grib_bitmap.sh +++ b/tests/grib_bitmap.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_bitsPerValue.sh b/tests/grib_bitsPerValue.sh index 8c7561c1b..0d9bc7328 100755 --- a/tests/grib_bitsPerValue.sh +++ b/tests/grib_bitsPerValue.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_calendar.sh b/tests/grib_calendar.sh index 47e88c5fa..0a72b0442 100755 --- a/tests/grib_calendar.sh +++ b/tests/grib_calendar.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_ccsds.sh b/tests/grib_ccsds.sh index 6726c144a..8a1b27a29 100755 --- a/tests/grib_ccsds.sh +++ b/tests/grib_ccsds.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_ccsds_perf.c b/tests/grib_ccsds_perf.c index e490176cc..3efc82c81 100644 --- a/tests/grib_ccsds_perf.c +++ b/tests/grib_ccsds_perf.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_change_scanning.sh b/tests/grib_change_scanning.sh index fb6e5f086..a43690585 100755 --- a/tests/grib_change_scanning.sh +++ b/tests/grib_change_scanning.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_check_gaussian_grids.sh b/tests/grib_check_gaussian_grids.sh index 4f2c5b075..4ba61982e 100755 --- a/tests/grib_check_gaussian_grids.sh +++ b/tests/grib_check_gaussian_grids.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_check_param_concepts.sh b/tests/grib_check_param_concepts.sh index 8276d00ee..1e12ca526 100755 --- a/tests/grib_check_param_concepts.sh +++ b/tests/grib_check_param_concepts.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_compare.sh b/tests/grib_compare.sh index a87898383..d44942218 100755 --- a/tests/grib_compare.sh +++ b/tests/grib_compare.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_concept.sh b/tests/grib_concept.sh index d370590c4..3d40b434d 100755 --- a/tests/grib_concept.sh +++ b/tests/grib_concept.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_copy.sh b/tests/grib_copy.sh index 87b8b9336..b7414e741 100755 --- a/tests/grib_copy.sh +++ b/tests/grib_copy.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_double_cmp.c b/tests/grib_double_cmp.c index bbd0b02d9..94c77b025 100644 --- a/tests/grib_double_cmp.c +++ b/tests/grib_double_cmp.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_double_cmp.sh b/tests/grib_double_cmp.sh index b4ef74c7b..d36dcb0b3 100755 --- a/tests/grib_double_cmp.sh +++ b/tests/grib_double_cmp.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_dump.sh b/tests/grib_dump.sh index cd158ef72..2bc7b640b 100755 --- a/tests/grib_dump.sh +++ b/tests/grib_dump.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_dump_debug.sh b/tests/grib_dump_debug.sh index 312a67da4..e59a7ba98 100755 --- a/tests/grib_dump_debug.sh +++ b/tests/grib_dump_debug.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_dump_json.sh b/tests/grib_dump_json.sh index 8d2250ce0..e02b760f1 100755 --- a/tests/grib_dump_json.sh +++ b/tests/grib_dump_json.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_ecc-386.c b/tests/grib_ecc-386.c index a51cd1f07..857b52ffc 100644 --- a/tests/grib_ecc-386.c +++ b/tests/grib_ecc-386.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_ecc-386.sh b/tests/grib_ecc-386.sh index 0aea99921..06653afc2 100755 --- a/tests/grib_ecc-386.sh +++ b/tests/grib_ecc-386.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_ecc-490.sh b/tests/grib_ecc-490.sh index 17a422569..b2b9d05e3 100755 --- a/tests/grib_ecc-490.sh +++ b/tests/grib_ecc-490.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_ecc-600.sh b/tests/grib_ecc-600.sh index 74141cecf..e919704d2 100755 --- a/tests/grib_ecc-600.sh +++ b/tests/grib_ecc-600.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_ecc-756.sh b/tests/grib_ecc-756.sh index 70d7cca81..6276c7946 100755 --- a/tests/grib_ecc-756.sh +++ b/tests/grib_ecc-756.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_ecc-873.sh b/tests/grib_ecc-873.sh index 4cb832953..bc7c73693 100755 --- a/tests/grib_ecc-873.sh +++ b/tests/grib_ecc-873.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_efas.sh b/tests/grib_efas.sh index 5253bdb3f..2c2584d40 100755 --- a/tests/grib_efas.sh +++ b/tests/grib_efas.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_encode_pthreads.c b/tests/grib_encode_pthreads.c index f8bd92276..6c8472f76 100644 --- a/tests/grib_encode_pthreads.c +++ b/tests/grib_encode_pthreads.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_encode_pthreads.sh b/tests/grib_encode_pthreads.sh index d3972cfdf..5c7479091 100755 --- a/tests/grib_encode_pthreads.sh +++ b/tests/grib_encode_pthreads.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_filter.sh b/tests/grib_filter.sh index 8c5a230c9..d9599eab7 100755 --- a/tests/grib_filter.sh +++ b/tests/grib_filter.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_global.sh b/tests/grib_global.sh index 0c0c28534..1ca22d351 100755 --- a/tests/grib_global.sh +++ b/tests/grib_global.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_gridType.sh b/tests/grib_gridType.sh index a319b9282..35e20264d 100755 --- a/tests/grib_gridType.sh +++ b/tests/grib_gridType.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_iterator.sh b/tests/grib_iterator.sh index 18df6bba5..6350595b5 100755 --- a/tests/grib_iterator.sh +++ b/tests/grib_iterator.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_jpeg.sh b/tests/grib_jpeg.sh index 674970273..e038c408b 100755 --- a/tests/grib_jpeg.sh +++ b/tests/grib_jpeg.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_lamb_az_eq_area.sh b/tests/grib_lamb_az_eq_area.sh index cc73cb03d..2c12a64a4 100755 --- a/tests/grib_lamb_az_eq_area.sh +++ b/tests/grib_lamb_az_eq_area.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_level.sh b/tests/grib_level.sh index f650c6245..055ee698f 100755 --- a/tests/grib_level.sh +++ b/tests/grib_level.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_local.sh b/tests/grib_local.sh index d736a2c7e..50e858048 100755 --- a/tests/grib_local.sh +++ b/tests/grib_local.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_local_MeteoFrance.c b/tests/grib_local_MeteoFrance.c index 8a534d8a0..be5843da3 100644 --- a/tests/grib_local_MeteoFrance.c +++ b/tests/grib_local_MeteoFrance.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_local_MeteoFrance.sh b/tests/grib_local_MeteoFrance.sh index 45590a42e..c7f6405d0 100755 --- a/tests/grib_local_MeteoFrance.sh +++ b/tests/grib_local_MeteoFrance.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_ls.sh b/tests/grib_ls.sh index 257682504..7cbdff77e 100755 --- a/tests/grib_ls.sh +++ b/tests/grib_ls.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_mars_types.sh b/tests/grib_mars_types.sh index c48f487f4..2ae3c5b81 100755 --- a/tests/grib_mars_types.sh +++ b/tests/grib_mars_types.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_multi.sh b/tests/grib_multi.sh index 1bb5649d8..82529fc43 100755 --- a/tests/grib_multi.sh +++ b/tests/grib_multi.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_neg_fctime.sh b/tests/grib_neg_fctime.sh index 5c4fd3c26..675eb6d3a 100755 --- a/tests/grib_neg_fctime.sh +++ b/tests/grib_neg_fctime.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_octahedral.sh b/tests/grib_octahedral.sh index e4ed9ea73..045b3553b 100755 --- a/tests/grib_octahedral.sh +++ b/tests/grib_octahedral.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_padding.sh b/tests/grib_padding.sh index 7a3550fcd..79ec46aed 100755 --- a/tests/grib_padding.sh +++ b/tests/grib_padding.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_png.sh b/tests/grib_png.sh index f1a4bfa76..4cb26af50 100755 --- a/tests/grib_png.sh +++ b/tests/grib_png.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_second_order.sh b/tests/grib_second_order.sh index 994690aa1..668f54672 100755 --- a/tests/grib_second_order.sh +++ b/tests/grib_second_order.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_set.sh b/tests/grib_set.sh index 8aab32365..1c5291b63 100755 --- a/tests/grib_set.sh +++ b/tests/grib_set.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_sh_ieee64.c b/tests/grib_sh_ieee64.c index 3c7fdb5db..ffce2f9b9 100644 --- a/tests/grib_sh_ieee64.c +++ b/tests/grib_sh_ieee64.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_sh_ieee64.sh b/tests/grib_sh_ieee64.sh index 2f0debfd7..43d2b4bb5 100755 --- a/tests/grib_sh_ieee64.sh +++ b/tests/grib_sh_ieee64.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_sh_imag.c b/tests/grib_sh_imag.c index f128bf358..b306b0d11 100644 --- a/tests/grib_sh_imag.c +++ b/tests/grib_sh_imag.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_sh_imag.sh b/tests/grib_sh_imag.sh index 4787d6a99..09d4fb471 100755 --- a/tests/grib_sh_imag.sh +++ b/tests/grib_sh_imag.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_statistics.sh b/tests/grib_statistics.sh index 2bfde2e39..090732c2b 100755 --- a/tests/grib_statistics.sh +++ b/tests/grib_statistics.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_step.sh b/tests/grib_step.sh index f0294d467..8ec8e4060 100755 --- a/tests/grib_step.sh +++ b/tests/grib_step.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_tigge.sh b/tests/grib_tigge.sh index dd5ec4298..7a9954601 100755 --- a/tests/grib_tigge.sh +++ b/tests/grib_tigge.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_tigge_conversions.sh b/tests/grib_tigge_conversions.sh index c6db3f685..6b3b2aa46 100755 --- a/tests/grib_tigge_conversions.sh +++ b/tests/grib_tigge_conversions.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_to_netcdf.sh b/tests/grib_to_netcdf.sh index 68acefbff..bb5fd53a0 100755 --- a/tests/grib_to_netcdf.sh +++ b/tests/grib_to_netcdf.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_uerra.sh b/tests/grib_uerra.sh index 9d3e25a38..d89bda96a 100755 --- a/tests/grib_uerra.sh +++ b/tests/grib_uerra.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_util_set_spec.c b/tests/grib_util_set_spec.c index beed53378..022792634 100644 --- a/tests/grib_util_set_spec.c +++ b/tests/grib_util_set_spec.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/grib_util_set_spec.sh b/tests/grib_util_set_spec.sh index 7c19d2321..35d0a81b0 100755 --- a/tests/grib_util_set_spec.sh +++ b/tests/grib_util_set_spec.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/gribex_perf.c b/tests/gribex_perf.c index 5c22f24d7..6f8add8cf 100644 --- a/tests/gribex_perf.c +++ b/tests/gribex_perf.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/gts_compare.sh b/tests/gts_compare.sh index dfa735a7f..e1dce6e92 100755 --- a/tests/gts_compare.sh +++ b/tests/gts_compare.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/gts_count.sh b/tests/gts_count.sh index 91494ce54..e202abaa5 100755 --- a/tests/gts_count.sh +++ b/tests/gts_count.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/gts_get.sh b/tests/gts_get.sh index 2facd4eff..7fde60b28 100755 --- a/tests/gts_get.sh +++ b/tests/gts_get.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/gts_ls.sh b/tests/gts_ls.sh index 6bf67bd65..83f85edc2 100755 --- a/tests/gts_ls.sh +++ b/tests/gts_ls.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/ibm.c b/tests/ibm.c index 04902cc8a..0c43b3a40 100755 --- a/tests/ibm.c +++ b/tests/ibm.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/ieee.c b/tests/ieee.c index 177abafc7..6101d2a21 100755 --- a/tests/ieee.c +++ b/tests/ieee.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/ieee.sh b/tests/ieee.sh index 6c4781a49..a5831247e 100755 --- a/tests/ieee.sh +++ b/tests/ieee.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/include.sh b/tests/include.sh index 42b225338..96f8dbb8d 100644 --- a/tests/include.sh +++ b/tests/include.sh @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/index.c b/tests/index.c index 81bbf405e..ca551d0a7 100644 --- a/tests/index.c +++ b/tests/index.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/index.sh b/tests/index.sh index 4e80bce69..7a780ad3f 100755 --- a/tests/index.sh +++ b/tests/index.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/index_orderby.c b/tests/index_orderby.c index 8f1055187..a114a5ad9 100644 --- a/tests/index_orderby.c +++ b/tests/index_orderby.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/jpeg_perf.c b/tests/jpeg_perf.c index 23278e663..9c4d9008e 100644 --- a/tests/jpeg_perf.c +++ b/tests/jpeg_perf.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/julian.c b/tests/julian.c index a649f670c..175d1ef4c 100644 --- a/tests/julian.c +++ b/tests/julian.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/julian.sh b/tests/julian.sh index 7fa34c3e5..065f6e48f 100755 --- a/tests/julian.sh +++ b/tests/julian.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/laplacian.c b/tests/laplacian.c index aa5d497d4..0483fb961 100644 --- a/tests/laplacian.c +++ b/tests/laplacian.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/largefile.c b/tests/largefile.c index 8b9f7dccb..97bb5faa6 100644 --- a/tests/largefile.c +++ b/tests/largefile.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/list.sh b/tests/list.sh index c985b5195..9ab15c1f7 100755 --- a/tests/list.sh +++ b/tests/list.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/list_all_keys.ksh b/tests/list_all_keys.ksh index cb579beac..79eb8a9ce 100755 --- a/tests/list_all_keys.ksh +++ b/tests/list_all_keys.ksh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/metar_compare.sh b/tests/metar_compare.sh index ba25a8749..3322d0d4a 100755 --- a/tests/metar_compare.sh +++ b/tests/metar_compare.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/metar_dump.sh b/tests/metar_dump.sh index 1244dc0c7..8217a3a20 100755 --- a/tests/metar_dump.sh +++ b/tests/metar_dump.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/metar_get.sh b/tests/metar_get.sh index 247919cee..f94eb1fe3 100755 --- a/tests/metar_get.sh +++ b/tests/metar_get.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/metar_ls.sh b/tests/metar_ls.sh index b3061ef8d..8704d2448 100755 --- a/tests/metar_ls.sh +++ b/tests/metar_ls.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/missing.sh b/tests/missing.sh index c4e07ad08..7ffcff089 100755 --- a/tests/missing.sh +++ b/tests/missing.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/multi_from_message.c b/tests/multi_from_message.c index 8023c3baa..46d652f60 100644 --- a/tests/multi_from_message.c +++ b/tests/multi_from_message.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/multi_from_message.sh b/tests/multi_from_message.sh index 031abe36a..873af94d0 100755 --- a/tests/multi_from_message.sh +++ b/tests/multi_from_message.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/mybufrdc_ref.sh b/tests/mybufrdc_ref.sh index e601b6878..eeb3312b3 100755 --- a/tests/mybufrdc_ref.sh +++ b/tests/mybufrdc_ref.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/optimize_scaling.c b/tests/optimize_scaling.c index 56635effc..e13b6be9d 100644 --- a/tests/optimize_scaling.c +++ b/tests/optimize_scaling.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/optimize_scaling.sh b/tests/optimize_scaling.sh index 358ab90b2..d01b15f89 100755 --- a/tests/optimize_scaling.sh +++ b/tests/optimize_scaling.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/optimize_scaling_sh.c b/tests/optimize_scaling_sh.c index d6bb1260c..ea3031445 100644 --- a/tests/optimize_scaling_sh.c +++ b/tests/optimize_scaling_sh.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/optimize_scaling_sh.sh b/tests/optimize_scaling_sh.sh index 3dbb2244d..85e096801 100755 --- a/tests/optimize_scaling_sh.sh +++ b/tests/optimize_scaling_sh.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/pack_unpack.c b/tests/pack_unpack.c index acece6a20..5d25d9f1a 100644 --- a/tests/pack_unpack.c +++ b/tests/pack_unpack.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/packing.c b/tests/packing.c index 1bed6edfd..6c319fce0 100644 --- a/tests/packing.c +++ b/tests/packing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/packing_check.c b/tests/packing_check.c index d2aa60410..1753407a9 100644 --- a/tests/packing_check.c +++ b/tests/packing_check.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/png_perf.c b/tests/png_perf.c index 5e5ee5a48..f1867c73c 100644 --- a/tests/png_perf.c +++ b/tests/png_perf.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/read_any.c b/tests/read_any.c index e292b01fc..82ce10e93 100644 --- a/tests/read_any.c +++ b/tests/read_any.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/read_any.sh b/tests/read_any.sh index 153452568..413a50e49 100755 --- a/tests/read_any.sh +++ b/tests/read_any.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/read_index.c b/tests/read_index.c index b80157dfa..7249beb65 100644 --- a/tests/read_index.c +++ b/tests/read_index.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/so_perf.c b/tests/so_perf.c index fee5daddf..cf16c991d 100644 --- a/tests/so_perf.c +++ b/tests/so_perf.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/timing.c b/tests/timing.c index 98aec24e3..21e28aee1 100644 --- a/tests/timing.c +++ b/tests/timing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/tiny.sh b/tests/tiny.sh index 45c297c2e..8e70ab1f3 100755 --- a/tests/tiny.sh +++ b/tests/tiny.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/unit_tests.c b/tests/unit_tests.c index 81897b646..69053e3d5 100644 --- a/tests/unit_tests.c +++ b/tests/unit_tests.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/unit_tests.sh b/tests/unit_tests.sh index 725288523..6d8ef611d 100755 --- a/tests/unit_tests.sh +++ b/tests/unit_tests.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/utils.sh b/tests/utils.sh index 9dd110eb4..ec613381e 100644 --- a/tests/utils.sh +++ b/tests/utils.sh @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tests/values_to_ascii.c b/tests/values_to_ascii.c index 161edee05..bd1458676 100755 --- a/tests/values_to_ascii.c +++ b/tests/values_to_ascii.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tigge/jma.pl b/tigge/jma.pl index d348830c1..2a673c393 100755 --- a/tigge/jma.pl +++ b/tigge/jma.pl @@ -1,5 +1,5 @@ #!/usr/bin/perl -I../perl/GRIB-API/blib/lib -I../perl/GRIB-API/blib/arch -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tigge/tigge_accumulations.c b/tigge/tigge_accumulations.c index 8e4de0a1a..3794a784a 100755 --- a/tigge/tigge_accumulations.c +++ b/tigge/tigge_accumulations.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tigge/tigge_check.c b/tigge/tigge_check.c index 4cf930080..c88f8afc5 100755 --- a/tigge/tigge_check.c +++ b/tigge/tigge_check.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tigge/tigge_check.h b/tigge/tigge_check.h index 4ffb36dc7..5b5f61c9c 100644 --- a/tigge/tigge_check.h +++ b/tigge/tigge_check.h @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tigge/tigge_name.c b/tigge/tigge_name.c index 7474c3772..4389d661a 100755 --- a/tigge/tigge_name.c +++ b/tigge/tigge_name.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tigge/tigge_split.c b/tigge/tigge_split.c index b634fbfbb..5882fdc91 100755 --- a/tigge/tigge_split.c +++ b/tigge/tigge_split.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tigge/tigge_tools.c b/tigge/tigge_tools.c index 1b16c4333..0526d6d0e 100644 --- a/tigge/tigge_tools.c +++ b/tigge/tigge_tools.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tigge/tigge_tools.h b/tigge/tigge_tools.h index 04d110e04..fd22c679f 100644 --- a/tigge/tigge_tools.h +++ b/tigge/tigge_tools.h @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index d0deedca5..ce203a6a8 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -1,5 +1,5 @@ # -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/big2gribex.c b/tools/big2gribex.c index d8e938cb1..02e535fc1 100644 --- a/tools/big2gribex.c +++ b/tools/big2gribex.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/bufr_3to4.c b/tools/bufr_3to4.c index 130cbc9c9..b2bbd6968 100644 --- a/tools/bufr_3to4.c +++ b/tools/bufr_3to4.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/bufr_compare.c b/tools/bufr_compare.c index 0201c39f7..5d5a8d331 100644 --- a/tools/bufr_compare.c +++ b/tools/bufr_compare.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/bufr_copy.c b/tools/bufr_copy.c index 6a94d71e4..66440991a 100644 --- a/tools/bufr_copy.c +++ b/tools/bufr_copy.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/bufr_dump.c b/tools/bufr_dump.c index 0ab394c74..7ed605e02 100644 --- a/tools/bufr_dump.c +++ b/tools/bufr_dump.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/bufr_filter.c b/tools/bufr_filter.c index 765d1422b..d50930953 100644 --- a/tools/bufr_filter.c +++ b/tools/bufr_filter.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/bufr_get.c b/tools/bufr_get.c index d1d643763..c1543fa6e 100644 --- a/tools/bufr_get.c +++ b/tools/bufr_get.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/bufr_index_build.c b/tools/bufr_index_build.c index acf86129b..eb0638190 100644 --- a/tools/bufr_index_build.c +++ b/tools/bufr_index_build.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/bufr_ls.c b/tools/bufr_ls.c index e62ae3d30..3c4c298ce 100644 --- a/tools/bufr_ls.c +++ b/tools/bufr_ls.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/bufr_set.c b/tools/bufr_set.c index 5e3a6bcf0..dc83e36d7 100644 --- a/tools/bufr_set.c +++ b/tools/bufr_set.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/bufr_split_by_rdbSubtype.c b/tools/bufr_split_by_rdbSubtype.c index 0b74daa8f..29d9a9a68 100644 --- a/tools/bufr_split_by_rdbSubtype.c +++ b/tools/bufr_split_by_rdbSubtype.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/codes_count.c b/tools/codes_count.c index a28ca6acb..d3df3744b 100644 --- a/tools/codes_count.c +++ b/tools/codes_count.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/codes_info.c b/tools/codes_info.c index 243e350fc..9e7034601 100644 --- a/tools/codes_info.c +++ b/tools/codes_info.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/codes_parser.c b/tools/codes_parser.c index 5aa7620cb..7845ce246 100755 --- a/tools/codes_parser.c +++ b/tools/codes_parser.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/codes_split_file.c b/tools/codes_split_file.c index 8b2973379..8659b9b7f 100644 --- a/tools/codes_split_file.c +++ b/tools/codes_split_file.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/compile.c b/tools/compile.c index c89e1df03..bd6cfa54f 100755 --- a/tools/compile.c +++ b/tools/compile.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/deprecated/all_keys.c b/tools/deprecated/all_keys.c index 806defeb2..4f8c16569 100755 --- a/tools/deprecated/all_keys.c +++ b/tools/deprecated/all_keys.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/deprecated/dump.c b/tools/deprecated/dump.c index a151e240a..669866fed 100644 --- a/tools/deprecated/dump.c +++ b/tools/deprecated/dump.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/deprecated/dumpload.c b/tools/deprecated/dumpload.c index e553602bf..bb7ce5660 100644 --- a/tools/deprecated/dumpload.c +++ b/tools/deprecated/dumpload.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/deprecated/grib_add.c b/tools/deprecated/grib_add.c index 75963ba43..c70989432 100644 --- a/tools/deprecated/grib_add.c +++ b/tools/deprecated/grib_add.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/deprecated/grib_cmp.c b/tools/deprecated/grib_cmp.c index da39a3b60..d07e5a469 100644 --- a/tools/deprecated/grib_cmp.c +++ b/tools/deprecated/grib_cmp.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/deprecated/grib_convert.c b/tools/deprecated/grib_convert.c index a6f51804d..9910f573b 100644 --- a/tools/deprecated/grib_convert.c +++ b/tools/deprecated/grib_convert.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/deprecated/grib_corruption_check.c b/tools/deprecated/grib_corruption_check.c index 3a600b846..8cac650aa 100644 --- a/tools/deprecated/grib_corruption_check.c +++ b/tools/deprecated/grib_corruption_check.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/deprecated/grib_debug.c b/tools/deprecated/grib_debug.c index 554077aa1..05ff79d8c 100644 --- a/tools/deprecated/grib_debug.c +++ b/tools/deprecated/grib_debug.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/deprecated/grib_diff.c b/tools/deprecated/grib_diff.c index 116b74555..07ebee022 100644 --- a/tools/deprecated/grib_diff.c +++ b/tools/deprecated/grib_diff.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/deprecated/grib_distance.c b/tools/deprecated/grib_distance.c index a842721a7..fd74be2d7 100644 --- a/tools/deprecated/grib_distance.c +++ b/tools/deprecated/grib_distance.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/deprecated/grib_error.c b/tools/deprecated/grib_error.c index a370f48bf..2a65e33ff 100644 --- a/tools/deprecated/grib_error.c +++ b/tools/deprecated/grib_error.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/deprecated/grib_gen.c b/tools/deprecated/grib_gen.c index 2e98dc436..7ace1e7b5 100644 --- a/tools/deprecated/grib_gen.c +++ b/tools/deprecated/grib_gen.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/deprecated/grib_keys.c b/tools/deprecated/grib_keys.c index cb54c7c41..3db4cf60b 100644 --- a/tools/deprecated/grib_keys.c +++ b/tools/deprecated/grib_keys.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/deprecated/grib_moments.c b/tools/deprecated/grib_moments.c index 63e765bd4..e8798af6e 100644 --- a/tools/deprecated/grib_moments.c +++ b/tools/deprecated/grib_moments.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/deprecated/grib_packing.c b/tools/deprecated/grib_packing.c index eab486a02..b24b15eb1 100644 --- a/tools/deprecated/grib_packing.c +++ b/tools/deprecated/grib_packing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/deprecated/grib_points.c b/tools/deprecated/grib_points.c index 7f3b19f80..9fc64b7b8 100644 --- a/tools/deprecated/grib_points.c +++ b/tools/deprecated/grib_points.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/gaussian.c b/tools/gaussian.c index 4184339ec..9c712ce7f 100644 --- a/tools/gaussian.c +++ b/tools/gaussian.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/gg_sub_area_check.c b/tools/gg_sub_area_check.c index 227995209..df59cf4d7 100644 --- a/tools/gg_sub_area_check.c +++ b/tools/gg_sub_area_check.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/grib2ppm.c b/tools/grib2ppm.c index 73e15fb64..9c931a3f4 100644 --- a/tools/grib2ppm.c +++ b/tools/grib2ppm.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/grib_2_request.c b/tools/grib_2_request.c index e04748a40..eb03b89d5 100644 --- a/tools/grib_2_request.c +++ b/tools/grib_2_request.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/grib_check_gaussian_grid.c b/tools/grib_check_gaussian_grid.c index 6221ae6a0..59936d05d 100644 --- a/tools/grib_check_gaussian_grid.c +++ b/tools/grib_check_gaussian_grid.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/grib_compare.c b/tools/grib_compare.c index 3c31af3fd..8833981db 100644 --- a/tools/grib_compare.c +++ b/tools/grib_compare.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/grib_copy.c b/tools/grib_copy.c index e94084fd5..33f30e2da 100644 --- a/tools/grib_copy.c +++ b/tools/grib_copy.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/grib_dump.c b/tools/grib_dump.c index 961392f89..acb2b2c2e 100644 --- a/tools/grib_dump.c +++ b/tools/grib_dump.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/grib_filter.c b/tools/grib_filter.c index ba6098895..d581724bc 100644 --- a/tools/grib_filter.c +++ b/tools/grib_filter.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/grib_filter.h b/tools/grib_filter.h index 2ffda4aaf..96e860b28 100644 --- a/tools/grib_filter.h +++ b/tools/grib_filter.h @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/grib_get.c b/tools/grib_get.c index 294a67e37..c1cb080a5 100644 --- a/tools/grib_get.c +++ b/tools/grib_get.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/grib_get_data.c b/tools/grib_get_data.c index f4fe54eaf..fcd699f11 100644 --- a/tools/grib_get_data.c +++ b/tools/grib_get_data.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/grib_histogram.c b/tools/grib_histogram.c index 16d6f0f81..cb0c6295f 100644 --- a/tools/grib_histogram.c +++ b/tools/grib_histogram.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/grib_index_build.c b/tools/grib_index_build.c index 8a571bcfe..711d505aa 100644 --- a/tools/grib_index_build.c +++ b/tools/grib_index_build.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/grib_ls.c b/tools/grib_ls.c index de5a8b3e9..b9d615715 100644 --- a/tools/grib_ls.c +++ b/tools/grib_ls.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/grib_merge.c b/tools/grib_merge.c index 34a1a0ade..376291cb4 100644 --- a/tools/grib_merge.c +++ b/tools/grib_merge.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/grib_nearest_land.c b/tools/grib_nearest_land.c index e39a314cb..b9b6ddc7d 100644 --- a/tools/grib_nearest_land.c +++ b/tools/grib_nearest_land.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/grib_options.c b/tools/grib_options.c index e4f71a294..9019a362e 100644 --- a/tools/grib_options.c +++ b/tools/grib_options.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/grib_repair.c b/tools/grib_repair.c index 55146f1d3..61024cbad 100644 --- a/tools/grib_repair.c +++ b/tools/grib_repair.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/grib_set.c b/tools/grib_set.c index bbff4f728..00c30a82a 100644 --- a/tools/grib_set.c +++ b/tools/grib_set.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/grib_to_json.c b/tools/grib_to_json.c index 080c22bfa..d830e12c4 100644 --- a/tools/grib_to_json.c +++ b/tools/grib_to_json.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/grib_to_netcdf.c b/tools/grib_to_netcdf.c index 441e3990b..0a650c242 100644 --- a/tools/grib_to_netcdf.c +++ b/tools/grib_to_netcdf.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/grib_tools.c b/tools/grib_tools.c index 08dd97c2e..05c9cc3cc 100644 --- a/tools/grib_tools.c +++ b/tools/grib_tools.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/grib_tools.h b/tools/grib_tools.h index 278532867..47ecfa253 100644 --- a/tools/grib_tools.h +++ b/tools/grib_tools.h @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/gts_compare.c b/tools/gts_compare.c index bef5c68ab..b2c0314c9 100644 --- a/tools/gts_compare.c +++ b/tools/gts_compare.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/gts_copy.c b/tools/gts_copy.c index ab7de604e..b44060857 100644 --- a/tools/gts_copy.c +++ b/tools/gts_copy.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/gts_dump.c b/tools/gts_dump.c index 6cbb435a3..d16cd60ed 100644 --- a/tools/gts_dump.c +++ b/tools/gts_dump.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/gts_filter.c b/tools/gts_filter.c index 139c3f345..2224ffa9f 100644 --- a/tools/gts_filter.c +++ b/tools/gts_filter.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/gts_get.c b/tools/gts_get.c index 2ef23718e..b51acb787 100644 --- a/tools/gts_get.c +++ b/tools/gts_get.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/gts_ls.c b/tools/gts_ls.c index 7ee3c305f..ee794f492 100644 --- a/tools/gts_ls.c +++ b/tools/gts_ls.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/list_keys.c b/tools/list_keys.c index b66732686..ae78c3ec4 100755 --- a/tools/list_keys.c +++ b/tools/list_keys.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/load.c b/tools/load.c index cdde67c32..b13cf97fa 100644 --- a/tools/load.c +++ b/tools/load.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/load.h b/tools/load.h index 4b71c4d37..d6aa84a8e 100644 --- a/tools/load.h +++ b/tools/load.h @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/mars_request.c b/tools/mars_request.c index a68c1c96d..eba45ce2d 100644 --- a/tools/mars_request.c +++ b/tools/mars_request.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/metar_compare.c b/tools/metar_compare.c index 1dd2c582e..89f03e085 100644 --- a/tools/metar_compare.c +++ b/tools/metar_compare.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/metar_copy.c b/tools/metar_copy.c index 590093160..f88bd2c92 100644 --- a/tools/metar_copy.c +++ b/tools/metar_copy.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/metar_dump.c b/tools/metar_dump.c index 2055c7197..b88a3c549 100644 --- a/tools/metar_dump.c +++ b/tools/metar_dump.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/metar_filter.c b/tools/metar_filter.c index 31fb72e9c..0cd4a3d37 100644 --- a/tools/metar_filter.c +++ b/tools/metar_filter.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/metar_get.c b/tools/metar_get.c index eeefbd233..24e1d8fd2 100644 --- a/tools/metar_get.c +++ b/tools/metar_get.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/metar_ls.c b/tools/metar_ls.c index fec08a810..eb7e2a794 100644 --- a/tools/metar_ls.c +++ b/tools/metar_ls.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/taf_dump.c b/tools/taf_dump.c index 5bdc2aee0..162172175 100644 --- a/tools/taf_dump.c +++ b/tools/taf_dump.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/taf_filter.c b/tools/taf_filter.c index 3dfbf66c6..e57393849 100644 --- a/tools/taf_filter.c +++ b/tools/taf_filter.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/taf_get.c b/tools/taf_get.c index e42ae3f6a..82558d3c0 100644 --- a/tools/taf_get.c +++ b/tools/taf_get.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/taf_ls.c b/tools/taf_ls.c index 4341919c6..db7571d8a 100644 --- a/tools/taf_ls.c +++ b/tools/taf_ls.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/test.c b/tools/test.c index 421b4cd0a..66abfdce1 100644 --- a/tools/test.c +++ b/tools/test.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/wingetopt.c b/tools/wingetopt.c index cde10760a..f1d6ccd59 100644 --- a/tools/wingetopt.c +++ b/tools/wingetopt.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/wingetopt.h b/tools/wingetopt.h index 3e074ef6a..0d9d939c2 100644 --- a/tools/wingetopt.h +++ b/tools/wingetopt.h @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/tools/xref.c b/tools/xref.c index 572d9c06a..55ddd7984 100755 --- a/tools/xref.c +++ b/tools/xref.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/version.sh b/version.sh index 49dc9a73f..3df9c0fb8 100644 --- a/version.sh +++ b/version.sh @@ -1,4 +1,4 @@ -# Copyright 2005-2018 ECMWF. +# Copyright 2005-2019 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. From ceb061c43bc2d7d461f4e26f558ca595c4bfdff3 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 15 Apr 2019 16:41:53 +0100 Subject: [PATCH 187/414] Bamboo: unload netcdf4 for Intel --- bamboo/INTEL-env.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/bamboo/INTEL-env.sh b/bamboo/INTEL-env.sh index 4b1101f22..36d6f525f 100644 --- a/bamboo/INTEL-env.sh +++ b/bamboo/INTEL-env.sh @@ -11,6 +11,7 @@ module unload emos module unload fftw module unload libemos module unload metview +module unload netcdf4 module list From a215de3fa563fdef278b5259aafbd509d7e20446 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 16 Apr 2019 14:48:15 +0100 Subject: [PATCH 188/414] BUFR encoding: skip --- src/grib_dumper_class_bufr_encode_C.c | 2 ++ src/grib_dumper_class_bufr_encode_fortran.c | 2 ++ src/grib_dumper_class_bufr_encode_python.c | 2 ++ 3 files changed, 6 insertions(+) diff --git a/src/grib_dumper_class_bufr_encode_C.c b/src/grib_dumper_class_bufr_encode_C.c index d517fd44d..e9cccca63 100644 --- a/src/grib_dumper_class_bufr_encode_C.c +++ b/src/grib_dumper_class_bufr_encode_C.c @@ -387,6 +387,7 @@ static void dump_long(grib_dumper* d,grib_accessor* a, const char* comment) } else { if (doing_unexpandedDescriptors) { fprintf(self->dumper.out,"\n /* Create the structure of the data section */\n"); + /* fprintf(self->dumper.out," CODES_CHECK(codes_set_long(h, \"skipExtraKeyAttributes\", 1), 0);\n"); */ } fprintf(self->dumper.out," CODES_CHECK(codes_set_long_array(h, \"%s\", ivalues, size), 0);\n",a->name); if (doing_unexpandedDescriptors) fprintf(self->dumper.out,"\n"); @@ -400,6 +401,7 @@ static void dump_long(grib_dumper* d,grib_accessor* a, const char* comment) } else { if (doing_unexpandedDescriptors) { fprintf(self->dumper.out,"\n /* Create the structure of the data section */\n"); + /* fprintf(self->dumper.out," CODES_CHECK(codes_set_long(h, \"skipExtraKeyAttributes\", 1), 0);\n"); */ } fprintf(self->dumper.out," CODES_CHECK(codes_set_long(h, \"%s\", ", a->name); } diff --git a/src/grib_dumper_class_bufr_encode_fortran.c b/src/grib_dumper_class_bufr_encode_fortran.c index 9518ab3ce..d5c88da95 100644 --- a/src/grib_dumper_class_bufr_encode_fortran.c +++ b/src/grib_dumper_class_bufr_encode_fortran.c @@ -434,6 +434,7 @@ static void dump_long(grib_dumper* d,grib_accessor* a, const char* comment) } else { if (doing_unexpandedDescriptors) { fprintf(self->dumper.out,"\n ! Create the structure of the data section\n"); + /* fprintf(self->dumper.out," call codes_set(ibufr,'skipExtraKeyAttributes',1)\n"); */ } fprintf(self->dumper.out," call codes_set(ibufr,'%s',ivalues)\n",a->name); if (doing_unexpandedDescriptors) fprintf(self->dumper.out,"\n"); @@ -447,6 +448,7 @@ static void dump_long(grib_dumper* d,grib_accessor* a, const char* comment) } else { if (doing_unexpandedDescriptors) { fprintf(self->dumper.out,"\n ! Create the structure of the data section\n"); + /* fprintf(self->dumper.out," call codes_set(ibufr,'skipExtraKeyAttributes',1)\n"); */ } fprintf(self->dumper.out," call codes_set(ibufr,'%s',",a->name); } diff --git a/src/grib_dumper_class_bufr_encode_python.c b/src/grib_dumper_class_bufr_encode_python.c index 06da5ee69..d2fd1501b 100644 --- a/src/grib_dumper_class_bufr_encode_python.c +++ b/src/grib_dumper_class_bufr_encode_python.c @@ -383,6 +383,7 @@ static void dump_long(grib_dumper* d, grib_accessor* a, const char* comment) } else { if (doing_unexpandedDescriptors) { fprintf(self->dumper.out,"\n # Create the structure of the data section\n"); + /* fprintf(self->dumper.out," codes_set(ibufr, 'skipExtraKeyAttributes', 1)\n"); */ } fprintf(self->dumper.out," codes_set_array(ibufr, '%s', ivalues)\n",a->name); if (doing_unexpandedDescriptors) fprintf(self->dumper.out,"\n"); @@ -395,6 +396,7 @@ static void dump_long(grib_dumper* d, grib_accessor* a, const char* comment) } else { if (doing_unexpandedDescriptors) { fprintf(self->dumper.out,"\n # Create the structure of the data section\n"); + /* fprintf(self->dumper.out," codes_set(ibufr, 'skipExtraKeyAttributes', 1)\n"); */ } fprintf(self->dumper.out," codes_set(ibufr, '%s', ",a->name); } From 9f04d616bfa9ce3db65ab3ece9832dfdb153668c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 17 Apr 2019 11:26:31 +0100 Subject: [PATCH 189/414] Update list of keys and hash --- src/grib_hash_keys.c | 16846 +++++++++++++++++++++-------------------- tests/keys | 2539 +++---- 2 files changed, 10073 insertions(+), 9312 deletions(-) diff --git a/src/grib_hash_keys.c b/src/grib_hash_keys.c index 4556cf9f6..249f2d84f 100644 --- a/src/grib_hash_keys.c +++ b/src/grib_hash_keys.c @@ -36,12 +36,12 @@ error "gperf generated tables don't work with this execution character set. Plea struct grib_keys_hash { char* name; int id;}; #include -#define TOTAL_KEYWORDS 2312 +#define TOTAL_KEYWORDS 2315 #define MIN_WORD_LENGTH 1 #define MAX_WORD_LENGTH 74 #define MIN_HASH_VALUE 1 -#define MAX_HASH_VALUE 28724 -/* maximum key range = 28724, duplicates = 0 */ +#define MAX_HASH_VALUE 32806 +/* maximum key range = 32806, duplicates = 0 */ #ifdef __GNUC__ @@ -55,32 +55,32 @@ hash_keys (const char *str, unsigned int len) { static const unsigned short asso_values[] = { - 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, - 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, - 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, - 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, - 28725, 28725, 0, 28725, 28725, 0, 28725, 28725, 169, 1809, - 1972, 2312, 1667, 2762, 2409, 2423, 150, 42, 1, 0, - 0, 0, 28725, 28725, 28725, 511, 3780, 2013, 164, 1615, - 42, 3043, 3933, 1272, 3001, 564, 972, 1869, 403, 35, - 1097, 701, 306, 178, 84, 4430, 1242, 1864, 1832, 3764, - 150, 0, 3, 28725, 0, 2517, 28725, 3, 335, 51, - 0, 5, 310, 95, 99, 4, 2191, 1688, 73, 4, - 0, 10, 21, 466, 2, 11, 2, 60, 172, 29, - 583, 55, 2589, 4, 4133, 19, 28725, 28725, 28725, 28725, - 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, - 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, - 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, - 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, - 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, - 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, - 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, - 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, - 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, - 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, - 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, - 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, - 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725, 28725 + 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, + 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, + 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, + 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, + 32807, 32807, 0, 32807, 32807, 0, 32807, 32807, 33, 1938, + 2217, 2394, 1965, 1888, 2775, 1268, 419, 1, 2, 0, + 0, 0, 32807, 32807, 32807, 1574, 4045, 1536, 164, 1783, + 42, 3000, 2985, 848, 2407, 531, 655, 2071, 1625, 35, + 935, 395, 145, 178, 84, 4757, 1023, 2612, 1397, 3943, + 36, 0, 0, 32807, 0, 2961, 32807, 3, 335, 51, + 0, 5, 310, 95, 99, 4, 2121, 734, 73, 4, + 0, 10, 21, 695, 2, 11, 2, 60, 172, 29, + 432, 55, 1842, 56, 1319, 8, 32807, 32807, 32807, 32807, + 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, + 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, + 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, + 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, + 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, + 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, + 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, + 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, + 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, + 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, + 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, + 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, + 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807 }; register int hval = len; @@ -170,7 +170,7 @@ static const unsigned char lengthtable[] = 0, 9, 9, 0, 7, 3, 0, 0, 4, 6, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 6, 4, 4, 10, 10, 5, 10, 6, 0, 7, 6, 9, 0, 0, 7, 7, 4, 5, 0, 0, 0, 6, - 6, 0, 0, 0, 10, 0, 0, 4, 6, 0, 0, 8, 0, 0, + 6, 0, 0, 0, 10, 0, 0, 4, 6, 0, 0, 8, 8, 0, 2, 0, 7, 5, 3, 9, 8, 5, 8, 6, 10, 5, 6, 0, 6, 0, 0, 7, 5, 0, 0, 0, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 5, 0, 0, 0, 0, @@ -179,862 +179,898 @@ static const unsigned char lengthtable[] = 0, 5, 0, 0, 8, 0, 10, 0, 0, 1, 6, 8, 0, 8, 9, 0, 8, 7, 0, 0, 5, 0, 0, 0, 0, 0, 9, 10, 8, 7, 5, 0, 0, 10, 10, 8, 0, 5, 0, 11, 10, 0, - 8, 7, 6, 0, 10, 0, 13, 6, 0, 0, 14, 0, 0, 0, + 0, 7, 6, 0, 10, 0, 13, 6, 0, 0, 14, 0, 0, 0, 0, 7, 0, 10, 7, 0, 8, 0, 10, 0, 0, 0, 0, 9, 0, 0, 2, 8, 9, 10, 11, 0, 0, 0, 0, 9, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 8, - 0, 10, 0, 9, 0, 0, 0, 2, 5, 10, 0, 0, 0, 0, - 0, 11, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, + 0, 10, 9, 9, 0, 0, 0, 2, 5, 10, 0, 0, 0, 0, + 0, 11, 8, 7, 0, 0, 0, 9, 0, 0, 0, 0, 0, 12, 0, 0, 9, 7, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 10, 0, 8, 8, 0, 0, 0, 0, 11, 0, 14, 0, 12, 0, 0, 0, 0, 7, 0, 6, 4, 0, 0, 7, 17, 0, 10, 13, 0, 0, 0, 20, 0, 8, 6, 0, 0, 0, 10, 0, 9, 0, - 7, 0, 0, 2, 3, 10, 0, 0, 0, 8, 0, 0, 0, 0, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 8, 8, + 7, 0, 0, 2, 3, 10, 0, 0, 10, 8, 0, 0, 0, 0, + 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 11, 11, 8, 0, 0, 0, 0, 0, 6, 14, 0, 9, 0, 4, 0, 0, 10, 0, - 5, 0, 0, 2, 13, 8, 5, 2, 6, 0, 11, 0, 0, 0, + 5, 0, 0, 0, 13, 8, 5, 0, 6, 0, 11, 0, 0, 0, 0, 11, 0, 0, 0, 3, 4, 0, 6, 0, 0, 0, 13, 13, - 12, 0, 0, 8, 0, 11, 0, 0, 2, 9, 0, 0, 0, 0, - 0, 11, 0, 7, 0, 0, 0, 0, 0, 8, 0, 0, 10, 0, - 9, 15, 0, 0, 14, 0, 0, 0, 11, 0, 0, 0, 0, 17, + 12, 0, 0, 8, 0, 11, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 11, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, + 0, 15, 0, 0, 14, 0, 0, 0, 11, 0, 0, 0, 0, 17, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, - 0, 0, 0, 11, 13, 8, 10, 6, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 9, 5, 13, 0, 9, 0, 6, 7, 2, 18, 0, - 0, 0, 0, 9, 0, 10, 0, 0, 0, 9, 0, 8, 0, 0, - 0, 10, 0, 0, 0, 0, 12, 0, 0, 9, 24, 10, 0, 0, - 0, 0, 0, 0, 0, 0, 19, 9, 0, 0, 0, 0, 0, 11, - 11, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 2, + 0, 0, 0, 11, 0, 8, 10, 6, 0, 0, 0, 6, 0, 0, + 0, 0, 0, 9, 5, 13, 0, 0, 0, 6, 7, 0, 18, 0, + 0, 0, 0, 0, 7, 10, 0, 0, 0, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 24, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 11, + 11, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 15, 0, 0, 0, 14, 0, 15, 4, 0, 7, 0, 0, 13, 0, 0, - 0, 0, 6, 12, 18, 0, 0, 10, 0, 10, 0, 0, 0, 13, - 0, 6, 0, 0, 0, 12, 0, 0, 0, 0, 12, 13, 6, 0, - 0, 0, 0, 12, 0, 0, 0, 0, 0, 12, 8, 0, 0, 0, - 0, 0, 0, 0, 9, 0, 11, 0, 0, 10, 23, 0, 0, 18, - 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, - 0, 0, 6, 8, 8, 0, 0, 0, 0, 3, 6, 0, 18, 13, - 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 18, 0, 6, 12, 18, 0, 0, 0, 0, 10, 0, 0, 0, 13, + 0, 0, 0, 0, 0, 12, 0, 0, 12, 0, 12, 10, 0, 0, + 0, 0, 0, 12, 0, 0, 0, 0, 0, 12, 0, 0, 8, 8, + 0, 0, 0, 0, 0, 0, 11, 0, 0, 10, 23, 0, 0, 18, + 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 6, 5, 18, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, - 0, 0, 13, 19, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 14, 0, 0, 13, 11, 13, 0, 0, 0, 0, 17, 0, 0, 0, - 21, 10, 0, 0, 0, 0, 15, 25, 0, 11, 0, 0, 0, 0, - 0, 15, 0, 13, 13, 0, 0, 0, 0, 12, 0, 14, 10, 12, + 9, 0, 13, 3, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, + 14, 0, 30, 0, 11, 13, 0, 0, 0, 0, 17, 0, 6, 0, + 21, 10, 0, 0, 0, 5, 0, 25, 0, 11, 15, 0, 0, 0, + 0, 15, 12, 0, 13, 0, 0, 0, 13, 12, 0, 14, 10, 19, 0, 0, 14, 0, 17, 16, 0, 16, 0, 0, 0, 0, 0, 0, - 0, 0, 14, 23, 10, 14, 0, 0, 0, 8, 0, 0, 0, 0, - 0, 0, 0, 6, 13, 3, 0, 0, 13, 17, 0, 0, 6, 0, - 31, 0, 0, 0, 0, 0, 0, 6, 0, 1, 14, 0, 0, 19, - 0, 0, 0, 0, 0, 15, 0, 13, 0, 0, 0, 0, 0, 0, - 15, 0, 11, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 31, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 0, 0, 0, 0, 30, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, - 0, 0, 0, 15, 0, 13, 0, 0, 0, 0, 14, 0, 0, 0, - 0, 0, 0, 0, 14, 0, 12, 30, 0, 0, 0, 12, 2, 15, - 13, 0, 0, 0, 43, 0, 12, 0, 0, 0, 0, 0, 0, 24, - 0, 0, 11, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, - 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, - 0, 0, 0, 0, 11, 0, 0, 20, 0, 12, 0, 0, 11, 0, - 0, 0, 0, 0, 0, 17, 5, 0, 0, 0, 0, 0, 0, 9, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 2, 9, 0, 3, 0, - 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 27, 0, 12, 6, 0, 0, 0, 0, 0, 0, - 5, 37, 0, 0, 27, 22, 0, 14, 0, 0, 0, 0, 0, 12, - 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, - 0, 0, 23, 0, 0, 0, 23, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, - 0, 10, 0, 0, 0, 0, 0, 48, 18, 0, 0, 10, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 23, 0, 0, - 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 8, 0, - 16, 0, 20, 0, 18, 0, 2, 0, 0, 0, 0, 0, 0, 17, - 3, 0, 13, 22, 0, 0, 17, 0, 0, 0, 0, 0, 0, 31, - 0, 23, 0, 17, 0, 11, 17, 8, 0, 21, 0, 0, 0, 0, - 0, 0, 0, 16, 0, 0, 16, 0, 0, 0, 27, 15, 0, 0, - 0, 0, 15, 0, 0, 10, 0, 0, 0, 0, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 17, - 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 15, 0, 0, 9, 0, 15, 0, 0, 14, - 12, 0, 12, 23, 0, 0, 0, 0, 0, 0, 0, 0, 27, 22, - 31, 0, 10, 0, 0, 0, 0, 0, 0, 0, 11, 0, 6, 0, - 0, 0, 15, 0, 3, 0, 0, 0, 9, 14, 7, 0, 19, 19, - 0, 0, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 9, - 12, 0, 2, 0, 15, 0, 0, 0, 19, 0, 0, 8, 18, 0, - 0, 0, 19, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 10, - 0, 15, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 37, - 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 13, 0, 35, 0, 0, 0, - 0, 17, 0, 0, 20, 0, 0, 13, 0, 0, 16, 0, 0, 20, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, - 0, 18, 16, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, - 0, 0, 0, 33, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 0, 13, 0, 0, 0, 12, 0, 0, 0, - 22, 0, 0, 0, 32, 0, 0, 0, 27, 0, 0, 0, 26, 0, - 0, 0, 0, 0, 14, 39, 0, 0, 9, 0, 0, 0, 0, 0, - 25, 0, 0, 25, 24, 0, 0, 0, 0, 21, 0, 13, 14, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 44, 0, 0, 0, 0, 0, 2, 0, 15, 0, 0, - 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 25, - 15, 25, 10, 2, 0, 0, 15, 0, 0, 0, 5, 0, 0, 0, - 0, 15, 15, 0, 0, 0, 0, 0, 3, 0, 0, 0, 21, 0, - 0, 3, 0, 15, 0, 0, 18, 0, 0, 0, 3, 25, 0, 0, - 0, 11, 0, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 15, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 35, 11, 0, 21, 15, 0, 0, 0, 0, 21, - 0, 14, 0, 0, 0, 0, 23, 24, 13, 25, 30, 0, 0, 16, - 0, 0, 17, 0, 0, 14, 0, 12, 0, 0, 11, 19, 5, 34, - 0, 0, 31, 0, 0, 16, 14, 0, 0, 25, 29, 0, 0, 29, - 14, 0, 0, 0, 21, 10, 0, 0, 0, 0, 34, 0, 0, 0, - 0, 0, 16, 0, 14, 0, 15, 0, 0, 0, 0, 0, 0, 14, - 16, 23, 42, 0, 7, 0, 24, 0, 24, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 18, 0, 0, 12, - 22, 21, 0, 0, 0, 17, 0, 0, 4, 0, 0, 0, 0, 15, - 0, 22, 4, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 13, - 0, 8, 0, 0, 26, 0, 0, 19, 12, 0, 0, 0, 0, 0, - 0, 0, 7, 11, 0, 8, 0, 0, 0, 0, 0, 0, 13, 0, - 13, 8, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, - 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, - 18, 0, 0, 0, 0, 0, 0, 12, 22, 0, 0, 13, 0, 20, - 0, 0, 0, 17, 23, 0, 2, 23, 0, 0, 18, 15, 0, 14, - 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 21, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 32, 13, - 0, 0, 0, 17, 13, 16, 11, 0, 18, 0, 0, 0, 0, 0, - 0, 0, 30, 0, 0, 19, 11, 0, 0, 0, 0, 10, 9, 0, - 0, 0, 42, 0, 0, 16, 0, 0, 0, 14, 0, 0, 7, 13, - 0, 0, 0, 0, 0, 26, 27, 6, 0, 0, 24, 0, 0, 0, - 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 11, 0, 0, 0, 0, 37, 15, 0, 16, 0, 0, 0, 11, - 0, 11, 22, 10, 0, 0, 13, 18, 0, 0, 0, 0, 0, 0, - 0, 18, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 18, 0, 0, 0, 9, 24, 0, 0, 0, 0, 0, 13, 0, 0, - 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, - 0, 18, 0, 0, 0, 0, 28, 9, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 19, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, - 9, 9, 0, 0, 0, 0, 19, 11, 13, 0, 10, 0, 0, 0, - 20, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 24, 17, 0, - 0, 14, 0, 0, 0, 0, 10, 0, 15, 0, 11, 14, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 19, 0, 0, 0, 27, 0, 10, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 13, 0, 23, 0, 16, 0, 11, 15, 0, 16, 38, - 0, 0, 0, 0, 12, 0, 13, 0, 10, 9, 17, 0, 0, 0, - 0, 0, 0, 20, 0, 13, 22, 0, 0, 3, 30, 0, 0, 0, - 0, 0, 11, 0, 6, 14, 0, 0, 0, 15, 13, 0, 0, 0, - 0, 0, 20, 0, 32, 15, 0, 0, 0, 0, 22, 1, 0, 0, - 0, 0, 15, 0, 0, 0, 14, 21, 0, 0, 0, 0, 18, 0, - 0, 0, 0, 0, 19, 0, 0, 0, 0, 9, 0, 0, 18, 19, - 0, 2, 0, 0, 0, 16, 18, 20, 0, 23, 0, 0, 11, 17, - 0, 10, 6, 18, 0, 0, 0, 12, 0, 0, 0, 0, 19, 0, - 12, 0, 0, 0, 12, 0, 11, 0, 19, 0, 3, 0, 10, 12, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, - 0, 0, 0, 0, 14, 0, 31, 28, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 10, 23, 0, 0, 0, 0, 24, 0, 13, 0, 18, - 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, - 11, 20, 24, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, - 0, 0, 17, 0, 0, 0, 0, 0, 17, 0, 0, 20, 0, 14, - 18, 0, 0, 0, 0, 0, 19, 15, 0, 0, 0, 0, 0, 0, - 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, - 0, 0, 0, 0, 17, 15, 0, 15, 0, 0, 15, 15, 0, 0, - 0, 0, 0, 0, 18, 34, 0, 0, 10, 0, 23, 0, 0, 14, - 0, 0, 0, 23, 0, 0, 25, 0, 0, 0, 2, 9, 0, 0, - 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 26, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 23, 0, 0, 0, 0, 15, 0, 0, 0, 0, 11, 15, 0, - 0, 0, 19, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, - 0, 0, 29, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, - 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 9, 0, 0, 0, 0, 14, 0, 0, 0, 22, 0, 0, - 0, 0, 13, 22, 0, 18, 29, 0, 0, 0, 0, 0, 0, 9, - 0, 26, 34, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 17, 0, 13, 0, 20, 12, 0, 0, 15, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 17, 12, 2, 0, 0, 0, 0, - 31, 0, 0, 28, 0, 0, 15, 0, 0, 0, 0, 8, 28, 9, - 0, 0, 4, 0, 16, 0, 0, 0, 0, 0, 0, 0, 14, 0, - 14, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 23, - 0, 17, 30, 0, 0, 0, 23, 0, 10, 0, 0, 12, 0, 0, - 0, 0, 0, 0, 0, 25, 37, 0, 0, 0, 0, 0, 0, 2, - 0, 0, 0, 0, 0, 0, 16, 0, 0, 21, 21, 0, 21, 0, - 0, 0, 0, 24, 18, 0, 0, 0, 0, 0, 0, 0, 27, 0, - 20, 13, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, - 0, 0, 12, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 10, 8, 17, 23, 0, 0, 10, 9, 0, 0, 0, 0, 0, - 0, 29, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 14, 0, 0, 0, 0, 31, 0, 29, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 19, 0, 11, 0, 0, 0, 0, - 34, 8, 0, 47, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, - 0, 0, 14, 9, 0, 23, 0, 0, 14, 31, 0, 18, 0, 0, - 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, - 18, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 19, - 0, 0, 0, 9, 13, 0, 0, 10, 0, 0, 0, 24, 0, 13, - 21, 18, 0, 0, 21, 0, 0, 17, 0, 7, 0, 0, 28, 0, - 0, 0, 0, 0, 0, 2, 0, 21, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 20, 0, 0, 23, 0, 27, 34, 9, 0, 0, - 0, 22, 23, 0, 0, 31, 0, 0, 30, 22, 0, 20, 0, 15, - 0, 0, 0, 0, 0, 0, 0, 14, 0, 16, 0, 0, 0, 23, - 0, 0, 0, 0, 0, 14, 0, 0, 7, 0, 0, 35, 0, 0, - 0, 0, 0, 13, 13, 15, 3, 0, 11, 0, 0, 14, 0, 0, - 0, 16, 25, 30, 22, 0, 21, 0, 12, 26, 25, 13, 0, 12, - 0, 0, 15, 0, 0, 0, 0, 0, 0, 31, 20, 0, 0, 0, - 24, 0, 15, 0, 0, 0, 0, 0, 18, 24, 0, 26, 0, 0, - 0, 0, 23, 12, 0, 25, 0, 13, 0, 0, 28, 10, 0, 0, - 27, 0, 0, 17, 0, 17, 0, 0, 0, 42, 0, 29, 29, 0, - 0, 0, 0, 0, 22, 22, 0, 0, 22, 0, 0, 0, 0, 17, - 35, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, - 22, 27, 0, 11, 27, 0, 12, 0, 0, 0, 0, 8, 0, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 21, 0, 0, - 0, 0, 0, 0, 0, 18, 0, 12, 0, 0, 14, 0, 22, 28, - 0, 0, 0, 3, 30, 0, 0, 0, 0, 0, 0, 0, 0, 14, - 0, 21, 0, 14, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, - 0, 0, 0, 24, 0, 0, 0, 16, 0, 12, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 25, 19, 0, 8, 13, 27, 0, 0, - 28, 31, 22, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 11, - 30, 9, 0, 0, 28, 0, 0, 14, 0, 0, 0, 0, 0, 16, - 0, 0, 0, 23, 13, 0, 14, 23, 0, 0, 9, 0, 0, 0, - 10, 0, 0, 28, 0, 31, 0, 0, 0, 30, 0, 0, 0, 0, - 16, 0, 0, 0, 0, 0, 32, 0, 0, 42, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 19, 29, 0, 0, 16, 0, 0, 25, 0, 30, 0, 18, 0, - 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 12, 14, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 16, - 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 6, 15, 0, 0, - 11, 0, 0, 0, 0, 29, 0, 0, 10, 0, 0, 15, 0, 26, - 0, 0, 0, 0, 0, 17, 0, 0, 0, 10, 14, 0, 0, 2, - 0, 0, 32, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 30, - 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 4, 7, 15, 13, - 0, 0, 0, 0, 10, 0, 0, 0, 0, 18, 0, 0, 16, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 0, 0, 0, - 15, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 4, 0, 0, - 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 38, 0, - 9, 12, 0, 0, 23, 0, 17, 0, 0, 0, 0, 17, 22, 0, - 3, 10, 0, 28, 0, 0, 40, 13, 0, 0, 0, 0, 0, 16, + 0, 0, 14, 23, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 10, 0, 0, 17, 0, 0, 0, 0, + 31, 0, 10, 0, 0, 0, 4, 6, 0, 0, 14, 0, 0, 19, + 4, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 8, + 15, 0, 11, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 8, + 0, 8, 0, 0, 20, 0, 0, 0, 0, 9, 0, 0, 2, 0, + 0, 0, 0, 0, 16, 0, 3, 0, 6, 0, 0, 17, 0, 0, + 0, 0, 0, 0, 9, 0, 7, 2, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 22, 0, 14, 0, 0, 0, + 0, 0, 0, 0, 14, 0, 0, 30, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 43, 8, 0, 0, 0, 10, 0, 0, 0, 24, + 0, 0, 0, 0, 12, 0, 18, 0, 13, 0, 0, 0, 0, 3, + 0, 18, 0, 0, 0, 12, 3, 12, 0, 0, 0, 0, 27, 0, + 0, 0, 0, 0, 0, 0, 0, 10, 0, 14, 7, 0, 0, 0, + 9, 0, 0, 0, 0, 6, 0, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 9, 0, 17, 0, 0, 13, 3, 0, 0, 0, + 0, 0, 8, 20, 0, 0, 22, 0, 2, 0, 0, 11, 0, 8, + 0, 0, 0, 14, 27, 0, 12, 0, 0, 0, 0, 0, 21, 0, + 0, 37, 0, 0, 15, 0, 0, 0, 0, 15, 0, 0, 0, 1, + 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, + 0, 0, 23, 22, 0, 0, 23, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, - 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, - 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 28, 0, 0, 0, - 13, 0, 10, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, - 0, 12, 0, 0, 0, 0, 15, 0, 0, 0, 24, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 29, 0, 0, 15, 31, 0, 32, 0, 18, - 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 21, 0, 0, 0, 25, 0, 0, 0, 11, 23, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, - 30, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 3, - 0, 0, 0, 0, 0, 0, 25, 17, 31, 16, 0, 0, 25, 0, - 13, 0, 0, 0, 0, 0, 0, 0, 22, 14, 0, 8, 0, 0, - 15, 0, 39, 40, 0, 0, 18, 33, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 11, 0, 0, 42, 0, 0, 14, 0, 8, - 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 15, 0, 24, 0, - 13, 1, 0, 0, 0, 13, 0, 0, 0, 6, 0, 0, 0, 24, - 0, 0, 32, 0, 0, 25, 0, 0, 0, 0, 24, 0, 0, 0, - 0, 0, 13, 0, 38, 25, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 13, 0, 0, 2, 0, 0, 22, 31, 0, 0, 16, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 50, 0, 44, 3, 0, - 2, 18, 0, 14, 9, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 24, 0, 0, 0, 9, 0, 0, 16, 0, 0, 0, - 0, 10, 0, 0, 14, 16, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 34, 34, 25, 0, 0, - 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 9, 0, 15, 18, 0, 0, 12, 20, 0, 20, 0, - 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 12, 0, 0, 0, - 20, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, - 0, 0, 0, 0, 0, 13, 0, 12, 15, 17, 0, 20, 0, 32, - 0, 0, 32, 0, 0, 0, 0, 0, 16, 0, 19, 14, 0, 24, - 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 26, 0, 25, 0, - 0, 0, 6, 0, 0, 9, 0, 0, 0, 0, 10, 0, 0, 0, - 12, 0, 0, 0, 0, 13, 0, 0, 0, 23, 27, 0, 0, 0, - 0, 0, 15, 15, 0, 2, 25, 0, 0, 0, 0, 0, 15, 10, - 0, 0, 0, 0, 22, 0, 0, 0, 24, 0, 0, 0, 19, 13, - 0, 0, 20, 0, 0, 0, 0, 0, 11, 0, 13, 23, 19, 12, - 20, 12, 0, 0, 15, 23, 0, 0, 24, 0, 0, 20, 0, 6, - 0, 0, 30, 0, 0, 26, 0, 14, 0, 0, 22, 27, 35, 0, - 0, 15, 0, 0, 22, 0, 0, 20, 12, 11, 0, 13, 14, 17, - 30, 36, 0, 0, 0, 0, 0, 21, 25, 0, 0, 25, 0, 0, - 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 11, 0, 0, 23, 22, 0, 9, 0, 0, - 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, - 0, 0, 0, 0, 0, 23, 0, 11, 0, 0, 0, 0, 0, 0, - 30, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 11, 0, 31, - 0, 0, 0, 0, 0, 37, 0, 25, 38, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 9, 16, - 0, 21, 0, 0, 28, 13, 0, 0, 0, 15, 11, 0, 27, 0, - 0, 33, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 11, 0, 0, 0, 0, 0, 0, 0, 0, 21, 19, 0, 0, 0, - 26, 16, 22, 0, 0, 0, 0, 0, 24, 0, 0, 0, 23, 21, - 0, 11, 0, 0, 0, 13, 28, 0, 30, 0, 13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 17, 14, 0, 26, 0, 0, - 0, 0, 0, 16, 0, 0, 33, 0, 0, 31, 0, 26, 0, 0, - 0, 0, 19, 13, 0, 0, 0, 0, 15, 0, 7, 0, 0, 0, - 8, 0, 0, 0, 0, 0, 0, 0, 15, 2, 0, 34, 0, 0, + 0, 0, 0, 15, 5, 0, 0, 48, 15, 0, 23, 9, 0, 0, + 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, + 17, 0, 22, 0, 0, 0, 0, 0, 0, 14, 0, 23, 0, 0, + 0, 12, 12, 0, 15, 13, 0, 0, 0, 0, 0, 12, 0, 0, + 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 15, 0, 0, 0, + 19, 0, 0, 0, 0, 0, 17, 11, 19, 0, 0, 0, 0, 31, + 0, 23, 0, 0, 19, 19, 24, 0, 15, 0, 0, 21, 15, 0, + 10, 0, 0, 0, 0, 0, 37, 0, 0, 0, 27, 15, 0, 0, + 0, 0, 0, 0, 15, 0, 0, 0, 14, 21, 15, 0, 0, 0, + 0, 0, 40, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 17, + 0, 9, 16, 14, 0, 0, 0, 19, 0, 34, 18, 0, 0, 0, + 0, 16, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, + 0, 0, 0, 13, 0, 0, 0, 0, 0, 27, 8, 0, 16, 0, + 14, 0, 0, 0, 0, 0, 11, 0, 13, 0, 0, 16, 0, 0, + 0, 0, 15, 0, 0, 14, 22, 0, 0, 0, 0, 0, 19, 0, + 0, 0, 0, 0, 35, 0, 0, 32, 0, 0, 0, 27, 39, 0, + 9, 0, 0, 0, 0, 0, 13, 0, 13, 0, 0, 22, 24, 0, + 0, 0, 0, 0, 14, 25, 0, 10, 0, 0, 0, 0, 0, 0, + 13, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 20, 15, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 18, 24, 0, 0, + 0, 0, 0, 0, 22, 2, 0, 13, 17, 0, 11, 0, 13, 0, + 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 0, 0, 3, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 14, 0, 0, 0, 0, 0, 13, 0, 0, 0, 23, + 25, 0, 20, 0, 0, 13, 0, 0, 23, 0, 0, 0, 26, 0, + 21, 34, 11, 0, 0, 0, 4, 14, 0, 0, 0, 0, 0, 18, + 0, 0, 0, 30, 14, 16, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 23, 0, 0, 0, 31, 0, 18, 0, 31, 0, 0, 12, 0, + 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, + 0, 0, 0, 0, 0, 13, 0, 4, 0, 0, 12, 0, 0, 18, + 0, 0, 23, 0, 13, 0, 16, 0, 0, 42, 0, 0, 0, 12, + 0, 21, 0, 0, 0, 0, 0, 0, 0, 15, 8, 0, 28, 0, + 0, 18, 0, 0, 0, 0, 0, 0, 0, 10, 19, 0, 30, 0, + 39, 0, 0, 0, 17, 15, 0, 0, 0, 0, 0, 0, 42, 6, + 21, 0, 0, 0, 0, 27, 0, 0, 11, 11, 0, 0, 16, 0, + 0, 35, 0, 0, 0, 0, 17, 2, 0, 0, 0, 2, 23, 0, + 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 17, 0, 7, 0, 21, 0, 0, 16, + 6, 22, 0, 0, 0, 0, 18, 0, 9, 0, 0, 6, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 29, 11, 0, 0, + 0, 0, 27, 19, 0, 26, 0, 0, 0, 13, 0, 0, 0, 11, + 0, 0, 12, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, + 0, 6, 0, 0, 10, 0, 0, 0, 0, 17, 0, 9, 0, 0, + 13, 2, 0, 14, 12, 0, 0, 9, 0, 3, 0, 0, 0, 0, + 0, 8, 0, 0, 14, 0, 11, 0, 44, 0, 0, 29, 0, 9, + 0, 6, 10, 25, 0, 0, 0, 0, 0, 14, 0, 9, 12, 0, + 13, 0, 0, 0, 25, 0, 0, 0, 26, 3, 0, 0, 0, 13, + 0, 17, 18, 2, 0, 0, 25, 0, 18, 27, 11, 27, 0, 0, + 0, 0, 13, 0, 9, 14, 0, 0, 22, 10, 12, 10, 16, 18, + 23, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, + 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 11, + 14, 20, 0, 0, 0, 0, 0, 13, 0, 1, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 18, 0, 0, 2, 0, 18, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 16, 0, 14, 0, - 0, 0, 0, 0, 0, 25, 0, 0, 21, 0, 0, 0, 0, 0, - 8, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 11, 0, 0, 2, 11, 0, 22, 0, 0, 0, - 14, 0, 0, 0, 0, 0, 15, 20, 0, 0, 0, 0, 0, 0, - 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, - 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 28, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, - 43, 0, 0, 0, 0, 0, 9, 24, 0, 0, 0, 0, 9, 0, - 0, 0, 8, 0, 0, 0, 0, 12, 0, 18, 0, 10, 0, 0, - 0, 0, 0, 0, 0, 8, 35, 0, 0, 0, 15, 26, 0, 0, - 0, 0, 14, 34, 14, 0, 0, 6, 0, 0, 0, 0, 2, 0, - 0, 22, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 0, - 13, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 14, - 0, 0, 11, 0, 3, 0, 0, 4, 0, 0, 0, 3, 23, 6, - 4, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 15, - 0, 12, 30, 0, 34, 28, 2, 0, 12, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 30, 15, 12, 0, 0, 0, 0, 0, 11, - 0, 0, 0, 0, 31, 0, 19, 13, 0, 0, 0, 3, 14, 0, - 0, 0, 7, 0, 0, 0, 11, 0, 0, 11, 0, 0, 0, 26, - 0, 0, 28, 30, 18, 28, 15, 13, 13, 0, 0, 15, 0, 27, - 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 19, 0, 0, 30, 15, 8, 0, 2, - 0, 0, 13, 0, 18, 0, 0, 0, 0, 13, 0, 0, 16, 0, - 0, 0, 0, 0, 13, 0, 0, 28, 0, 24, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 10, 0, 12, - 22, 0, 0, 0, 0, 0, 0, 0, 73, 74, 15, 32, 0, 18, - 22, 26, 0, 25, 20, 0, 0, 0, 13, 0, 0, 0, 22, 2, - 28, 24, 0, 0, 0, 0, 0, 0, 15, 0, 0, 26, 0, 12, - 0, 7, 0, 0, 0, 19, 0, 0, 0, 0, 0, 27, 0, 0, - 0, 0, 0, 0, 30, 0, 0, 28, 0, 28, 0, 0, 0, 0, - 0, 15, 0, 0, 0, 9, 24, 0, 26, 35, 0, 0, 15, 0, - 0, 0, 16, 0, 0, 0, 33, 0, 27, 0, 0, 30, 0, 0, - 0, 0, 23, 0, 0, 0, 0, 0, 11, 0, 19, 11, 0, 0, - 19, 0, 13, 0, 0, 16, 0, 4, 0, 15, 11, 0, 0, 0, - 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, - 15, 0, 22, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, - 0, 0, 29, 14, 19, 0, 23, 0, 3, 0, 0, 4, 34, 0, - 0, 3, 0, 6, 4, 26, 0, 0, 0, 8, 0, 0, 0, 29, - 0, 0, 14, 0, 0, 0, 0, 23, 0, 0, 24, 0, 0, 43, - 0, 16, 0, 11, 0, 0, 0, 0, 0, 0, 0, 18, 33, 0, - 0, 0, 17, 0, 0, 0, 15, 0, 0, 15, 0, 26, 0, 23, - 15, 0, 28, 0, 0, 0, 15, 28, 0, 0, 19, 22, 0, 0, - 0, 21, 0, 23, 0, 0, 3, 0, 0, 0, 23, 0, 0, 0, - 0, 0, 0, 0, 0, 17, 30, 0, 18, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 8, 0, 0, 28, 0, 18, 0, 31, 0, - 0, 0, 19, 2, 0, 0, 24, 0, 0, 0, 20, 0, 0, 0, - 14, 0, 0, 15, 0, 18, 0, 0, 0, 0, 0, 22, 0, 0, - 0, 0, 0, 15, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, - 0, 14, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 3, 37, - 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 18, - 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 24, 0, - 0, 0, 0, 24, 28, 0, 0, 18, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 12, 15, 0, 0, 0, 0, - 0, 0, 0, 29, 0, 0, 0, 12, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 26, 0, - 0, 0, 0, 0, 13, 0, 25, 15, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 32, 0, 0, 12, 0, 15, 0, 34, 0, 0, 22, - 8, 17, 0, 0, 0, 12, 15, 0, 0, 0, 0, 0, 35, 15, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, - 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 8, 0, 0, - 0, 24, 0, 0, 0, 31, 0, 16, 0, 18, 0, 0, 7, 0, - 0, 37, 0, 0, 0, 0, 14, 0, 0, 18, 23, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 16, 0, - 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 19, 0, 0, 0, 0, 10, 28, 0, 0, 0, 0, 15, 0, 15, - 19, 13, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 14, 0, - 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, - 0, 15, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, - 0, 11, 0, 24, 0, 0, 0, 0, 0, 19, 0, 0, 35, 0, - 0, 22, 0, 0, 0, 18, 0, 30, 0, 0, 0, 0, 18, 0, - 0, 0, 0, 19, 18, 28, 0, 0, 31, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 18, 28, 35, 0, 0, 0, 0, 0, 27, 0, - 0, 0, 14, 23, 0, 11, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 18, 0, 0, 28, - 0, 0, 0, 16, 11, 38, 21, 29, 0, 0, 0, 0, 0, 15, - 0, 0, 16, 0, 8, 0, 30, 0, 0, 0, 0, 0, 0, 0, - 23, 0, 0, 0, 0, 0, 14, 0, 11, 17, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 32, 0, - 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 10, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 27, 6, 0, 29, 0, 0, - 19, 0, 21, 0, 0, 41, 0, 0, 0, 15, 31, 0, 0, 0, - 0, 30, 0, 21, 0, 0, 0, 0, 35, 0, 0, 0, 13, 0, - 7, 24, 0, 0, 0, 0, 22, 0, 0, 0, 7, 14, 14, 0, - 0, 8, 0, 0, 14, 0, 0, 25, 0, 0, 0, 0, 18, 0, - 0, 8, 0, 0, 29, 0, 0, 22, 0, 0, 27, 27, 27, 0, - 0, 0, 0, 0, 0, 17, 0, 0, 0, 20, 0, 0, 0, 6, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, - 15, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, - 31, 17, 0, 0, 0, 0, 0, 21, 0, 0, 0, 16, 0, 0, - 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 31, 0, - 0, 0, 0, 14, 26, 35, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 21, 0, 0, 11, 15, 0, 0, 0, 0, - 0, 0, 0, 0, 26, 31, 37, 0, 0, 0, 0, 0, 0, 29, - 14, 0, 30, 35, 0, 0, 0, 0, 17, 36, 0, 0, 22, 0, - 0, 0, 0, 0, 38, 10, 0, 0, 18, 28, 0, 0, 0, 20, - 0, 0, 0, 0, 0, 0, 18, 18, 18, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 20, 43, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8, 14, 14, 0, 30, 0, - 22, 0, 25, 24, 16, 0, 0, 22, 0, 0, 14, 0, 27, 0, - 20, 0, 0, 0, 19, 29, 0, 0, 23, 0, 15, 0, 0, 0, - 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 15, 24, 0, - 0, 0, 17, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, - 21, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 36, 0, 0, - 0, 33, 0, 0, 0, 36, 0, 0, 0, 14, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 20, - 0, 19, 18, 0, 0, 31, 0, 15, 0, 0, 0, 0, 0, 0, - 18, 0, 0, 11, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, - 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, + 22, 0, 0, 0, 0, 0, 20, 0, 0, 0, 11, 0, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, + 0, 0, 0, 0, 0, 15, 0, 13, 20, 0, 0, 0, 0, 0, + 0, 0, 0, 18, 0, 32, 0, 0, 34, 0, 0, 17, 0, 19, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 18, 16, + 0, 22, 19, 0, 0, 0, 0, 0, 10, 9, 15, 0, 21, 0, + 0, 0, 38, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 16, + 0, 0, 30, 0, 0, 0, 0, 6, 18, 0, 0, 0, 13, 0, + 0, 14, 0, 0, 0, 0, 0, 24, 0, 15, 0, 0, 0, 31, + 0, 11, 0, 0, 0, 0, 16, 15, 26, 0, 0, 13, 0, 0, + 0, 0, 0, 0, 18, 0, 0, 0, 16, 0, 8, 0, 0, 0, + 19, 0, 0, 0, 10, 0, 11, 0, 15, 0, 0, 31, 0, 20, + 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 21, 0, 26, 0, + 0, 20, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 28, 23, 0, 0, 0, 0, 22, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 30, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 15, 0, 30, 0, 0, 19, 0, 0, 1, 0, 0, - 0, 29, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 28, 11, 11, + 0, 0, 0, 0, 0, 14, 13, 30, 0, 0, 0, 0, 11, 0, + 0, 0, 17, 17, 0, 0, 11, 0, 0, 19, 0, 0, 0, 0, + 0, 22, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 11, 0, 0, 9, 0, 0, 17, 0, 11, 17, 12, 0, 12, 0, + 16, 0, 11, 0, 16, 0, 0, 0, 0, 0, 9, 17, 0, 0, + 0, 0, 9, 9, 20, 17, 0, 0, 0, 0, 0, 21, 23, 16, + 12, 0, 0, 0, 26, 0, 21, 21, 0, 12, 0, 0, 0, 0, + 0, 13, 0, 0, 23, 0, 0, 2, 0, 13, 0, 0, 0, 0, + 13, 0, 0, 19, 0, 0, 14, 9, 0, 0, 0, 0, 0, 12, + 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 19, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, + 0, 2, 16, 0, 37, 14, 0, 0, 0, 17, 17, 0, 0, 0, + 0, 0, 0, 0, 0, 34, 34, 12, 0, 0, 0, 0, 10, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 12, 14, + 0, 0, 0, 0, 0, 11, 21, 26, 0, 0, 0, 25, 0, 0, + 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 0, 0, 0, 0, 13, 0, 18, 0, 0, 0, + 0, 0, 0, 14, 14, 0, 19, 0, 13, 13, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 31, 29, 0, 25, 0, 0, 14, 0, + 0, 0, 35, 15, 0, 0, 19, 0, 0, 0, 0, 6, 0, 24, + 0, 12, 14, 0, 0, 19, 0, 2, 0, 30, 26, 0, 0, 14, + 0, 0, 0, 0, 0, 0, 31, 10, 0, 10, 0, 10, 0, 0, + 0, 0, 24, 0, 0, 18, 12, 0, 14, 0, 12, 0, 11, 0, + 0, 0, 9, 0, 0, 12, 0, 0, 0, 16, 30, 0, 0, 0, + 0, 0, 0, 13, 0, 0, 0, 20, 0, 0, 0, 0, 0, 2, + 0, 0, 0, 27, 23, 24, 0, 0, 0, 10, 14, 0, 0, 0, + 33, 0, 23, 0, 0, 0, 0, 0, 13, 0, 19, 0, 0, 0, + 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 2, 9, + 0, 0, 0, 0, 12, 16, 0, 0, 20, 0, 0, 23, 0, 9, + 17, 0, 0, 0, 0, 14, 13, 0, 0, 0, 11, 0, 19, 0, + 0, 0, 0, 0, 0, 34, 19, 0, 0, 0, 0, 0, 32, 0, + 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, + 16, 15, 0, 0, 0, 0, 0, 31, 0, 0, 17, 0, 25, 0, + 0, 0, 18, 0, 0, 0, 14, 0, 30, 8, 0, 0, 0, 0, + 13, 0, 0, 0, 29, 32, 0, 15, 0, 0, 0, 9, 0, 15, + 20, 0, 22, 0, 0, 0, 0, 42, 15, 15, 26, 15, 0, 0, + 21, 0, 0, 21, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 30, 15, 0, 0, + 0, 0, 26, 0, 0, 0, 0, 0, 0, 14, 42, 0, 0, 0, + 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 3, 0, + 0, 0, 0, 23, 23, 0, 0, 17, 0, 22, 0, 12, 0, 0, + 24, 0, 0, 38, 15, 0, 0, 16, 13, 35, 0, 16, 0, 14, + 0, 0, 0, 0, 0, 0, 12, 22, 0, 21, 0, 0, 0, 18, + 0, 0, 0, 0, 20, 0, 0, 2, 0, 0, 13, 0, 0, 12, + 0, 0, 0, 23, 27, 0, 0, 0, 0, 17, 0, 0, 0, 15, + 23, 31, 33, 13, 0, 0, 12, 0, 0, 22, 0, 18, 15, 31, + 0, 0, 16, 42, 0, 0, 17, 18, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 22, 0, 0, + 26, 0, 0, 0, 0, 19, 0, 23, 0, 0, 0, 0, 0, 0, + 0, 22, 0, 0, 24, 29, 0, 0, 0, 30, 0, 20, 20, 0, + 14, 0, 0, 0, 29, 0, 0, 0, 0, 0, 37, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3, 0, 14, 0, 0, 23, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 15, 36, 0, 0, 0, 19, 0, 0, 0, - 0, 0, 19, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, - 0, 23, 0, 0, 0, 0, 0, 35, 0, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 18, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, - 14, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 18, - 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 22, 0, - 0, 0, 27, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, - 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 15, 14, - 0, 0, 0, 24, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 21, 0, 0, 0, 0, 35, 0, 9, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, - 0, 0, 0, 20, 0, 16, 0, 0, 0, 0, 13, 0, 17, 0, - 0, 17, 0, 0, 0, 0, 43, 25, 0, 17, 14, 22, 0, 0, - 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, - 0, 0, 15, 26, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, - 0, 18, 21, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 24, 6, 0, 0, 0, 0, 0, 0, 30, - 0, 0, 0, 0, 0, 0, 11, 0, 0, 12, 0, 0, 14, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 14, 0, - 0, 0, 0, 0, 0, 23, 0, 3, 18, 0, 0, 10, 0, 0, - 6, 0, 0, 23, 0, 24, 0, 24, 0, 0, 0, 0, 0, 0, - 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 12, 10, - 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 15, 0, 0, 0, 0, 21, 0, 31, 7, 0, 0, 16, + 0, 0, 0, 0, 16, 0, 0, 0, 0, 18, 0, 0, 0, 13, + 18, 23, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 15, 9, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, + 0, 12, 0, 12, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 12, 0, 0, 17, 0, 0, 0, 10, 32, 0, 0, + 0, 0, 11, 0, 0, 0, 0, 0, 32, 0, 0, 0, 18, 0, + 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 22, 0, 0, 0, 20, 0, 24, 24, 0, 0, 12, 0, 0, 0, + 0, 25, 0, 0, 10, 19, 0, 0, 0, 21, 0, 32, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 8, 0, 13, 0, + 0, 0, 9, 0, 29, 0, 0, 0, 0, 17, 0, 0, 10, 0, + 0, 0, 0, 13, 0, 0, 0, 8, 18, 0, 0, 0, 27, 18, + 0, 18, 0, 27, 0, 0, 0, 24, 22, 0, 0, 0, 0, 8, + 22, 0, 0, 10, 0, 0, 0, 0, 0, 10, 39, 40, 0, 15, + 5, 0, 0, 0, 0, 11, 0, 12, 0, 0, 0, 12, 0, 0, + 0, 0, 32, 13, 10, 0, 0, 0, 8, 0, 0, 0, 17, 15, + 13, 15, 26, 0, 0, 0, 0, 0, 0, 2, 0, 10, 14, 14, + 20, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 29, 16, 0, + 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 15, 0, 0, + 12, 0, 15, 15, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, + 0, 0, 23, 0, 0, 12, 10, 28, 0, 0, 0, 10, 8, 0, + 0, 0, 0, 10, 9, 0, 0, 0, 0, 11, 0, 0, 0, 31, + 0, 20, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 19, + 0, 0, 16, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 11, 25, 0, 27, 0, 26, 0, 14, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 17, 0, 0, 0, 0, 0, 0, 0, 15, 9, + 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, + 16, 0, 9, 0, 0, 0, 0, 23, 9, 6, 0, 11, 0, 0, + 13, 0, 0, 0, 18, 0, 0, 0, 0, 16, 0, 0, 17, 26, + 37, 0, 0, 12, 0, 0, 0, 0, 30, 25, 0, 0, 21, 21, + 0, 22, 0, 0, 0, 7, 0, 0, 0, 32, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 16, 0, 0, 23, + 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 3, 0, 0, 0, + 0, 24, 10, 0, 0, 0, 0, 11, 14, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 34, 34, 0, 0, 0, 13, 0, 0, 0, 22, 0, + 0, 0, 0, 0, 0, 0, 0, 11, 14, 0, 0, 3, 0, 0, + 0, 0, 18, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, + 10, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 10, 29, 0, 0, 0, 15, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 11, 25, 17, 0, 16, 0, + 20, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, + 0, 28, 0, 25, 0, 0, 0, 0, 0, 14, 23, 25, 0, 0, + 0, 23, 0, 0, 0, 21, 0, 0, 0, 0, 33, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 33, 0, 14, 13, 18, 0, 0, 14, + 0, 0, 15, 0, 22, 16, 0, 42, 0, 0, 0, 27, 22, 0, + 7, 0, 0, 0, 20, 10, 0, 0, 0, 0, 0, 0, 0, 0, + 19, 36, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, + 0, 0, 23, 16, 0, 0, 14, 14, 0, 0, 0, 0, 0, 24, + 0, 24, 0, 0, 20, 11, 33, 0, 0, 0, 0, 14, 0, 0, + 0, 0, 0, 22, 0, 0, 18, 0, 0, 0, 0, 9, 0, 13, + 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, + 27, 0, 0, 0, 12, 0, 0, 14, 0, 0, 0, 16, 0, 0, + 30, 34, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 20, 0, 0, 0, 0, 0, 25, 26, 0, 24, 0, 0, 28, 0, + 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, + 24, 0, 12, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 24, 0, 0, 0, + 0, 25, 18, 0, 25, 15, 0, 0, 0, 0, 0, 0, 0, 44, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 20, + 15, 0, 0, 30, 0, 0, 31, 0, 14, 0, 11, 0, 0, 0, + 0, 0, 31, 0, 0, 0, 0, 15, 0, 0, 15, 28, 23, 0, + 0, 20, 0, 0, 15, 15, 0, 0, 0, 0, 0, 0, 14, 28, + 28, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 18, 15, 31, + 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 19, 0, 0, 25, + 12, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 31, 15, 18, + 0, 0, 0, 0, 0, 18, 0, 34, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 22, 30, 0, 0, 0, 0, 0, 30, 0, 0, + 15, 0, 15, 0, 0, 0, 16, 20, 0, 20, 0, 0, 0, 9, + 0, 13, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 23, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 24, 0, + 0, 0, 0, 40, 0, 10, 0, 0, 0, 0, 15, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, + 22, 0, 0, 0, 13, 0, 0, 0, 0, 15, 0, 0, 23, 15, + 15, 0, 14, 2, 18, 8, 26, 33, 0, 0, 0, 0, 0, 0, + 21, 28, 0, 0, 0, 0, 0, 23, 0, 26, 0, 2, 0, 16, + 25, 0, 0, 0, 0, 0, 28, 15, 25, 0, 0, 12, 0, 0, + 0, 6, 0, 22, 0, 12, 0, 0, 0, 0, 0, 0, 12, 0, + 15, 13, 0, 8, 20, 0, 15, 0, 0, 16, 0, 0, 0, 0, + 0, 0, 28, 0, 0, 13, 28, 0, 0, 19, 12, 0, 0, 0, + 0, 0, 0, 0, 0, 11, 0, 0, 20, 0, 0, 0, 0, 0, + 0, 0, 23, 0, 23, 0, 14, 0, 0, 0, 9, 0, 73, 74, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 9, + 0, 0, 0, 0, 0, 18, 29, 0, 0, 0, 32, 20, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 26, 0, 0, 23, + 30, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 11, 0, + 24, 0, 18, 0, 0, 0, 17, 29, 11, 24, 0, 27, 16, 1, + 0, 26, 0, 0, 30, 0, 0, 0, 0, 0, 7, 35, 0, 0, + 0, 25, 9, 0, 15, 0, 0, 0, 13, 0, 31, 0, 0, 0, + 0, 0, 9, 0, 29, 0, 0, 0, 14, 0, 0, 0, 37, 3, + 0, 0, 0, 36, 0, 0, 14, 38, 0, 0, 0, 26, 0, 0, + 16, 11, 15, 0, 15, 0, 0, 0, 0, 15, 0, 15, 0, 0, + 0, 0, 0, 0, 13, 11, 0, 0, 0, 15, 13, 0, 0, 0, + 0, 0, 0, 13, 0, 11, 26, 2, 0, 28, 0, 0, 0, 0, + 0, 25, 14, 0, 17, 0, 0, 0, 0, 0, 0, 11, 0, 30, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 30, 0, 15, 0, + 0, 0, 0, 0, 0, 0, 15, 0, 0, 30, 0, 12, 0, 0, + 0, 0, 0, 17, 21, 0, 0, 0, 13, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 15, 0, - 0, 14, 8, 0, 33, 0, 23, 11, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 21, 0, 0, 15, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 21, 0, 0, 0, 15, 0, 0, 0, 0, - 0, 9, 0, 15, 0, 0, 0, 0, 24, 24, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, - 13, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 18, 0, - 14, 0, 0, 24, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, - 22, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 13, 0, + 0, 0, 10, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 30, + 15, 0, 12, 15, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 33, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 29, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, - 36, 14, 0, 0, 0, 0, 24, 0, 0, 0, 12, 0, 0, 0, - 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 17, 0, - 0, 0, 0, 10, 0, 0, 20, 21, 0, 0, 0, 0, 0, 28, - 0, 0, 0, 0, 0, 24, 0, 22, 0, 18, 0, 0, 10, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 15, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 14, 0, 16, 0, 0, 0, 0, 0, - 0, 0, 24, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, - 0, 20, 0, 28, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 27, 0, 0, 0, - 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 20, 0, 0, - 0, 0, 0, 27, 27, 0, 0, 0, 15, 0, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 28, 0, 11, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 32, 0, 32, 0, 0, 0, 0, 20, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 14, 0, 0, 24, 0, 0, 0, 0, - 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 14, 19, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 32, 0, 0, 23, 0, 0, 0, 0, 13, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, - 28, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 25, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 6, 0, 0, 12, 0, 29, 0, 0, 33, - 0, 0, 0, 0, 0, 37, 0, 27, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 39, 41, 0, 0, - 0, 0, 0, 0, 0, 0, 20, 0, 14, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 30, 0, 28, 0, 0, 0, 0, 0, - 0, 36, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 31, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 11, 24, 0, 0, 0, 11, + 12, 32, 0, 0, 15, 0, 30, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, + 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 28, + 0, 0, 0, 24, 0, 0, 0, 0, 15, 0, 0, 0, 2, 0, + 20, 0, 0, 13, 0, 0, 11, 29, 24, 0, 23, 0, 0, 0, + 0, 15, 0, 0, 0, 26, 11, 25, 11, 0, 0, 0, 0, 0, + 16, 0, 0, 3, 0, 0, 0, 35, 0, 0, 18, 0, 0, 0, + 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 32, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 10, + 0, 0, 0, 22, 0, 0, 0, 0, 14, 0, 0, 0, 0, 11, + 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 4, 0, 0, 0, 3, 0, 6, 4, 21, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 6, + 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 14, 0, 0, 26, 0, 0, 12, 0, 19, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 38, 0, 32, 0, 0, 0, 11, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, + 0, 0, 0, 0, 8, 0, 0, 0, 9, 0, 15, 0, 23, 28, + 35, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 9, 0, 0, + 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 28, 24, + 21, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 24, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 24, 12, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, + 28, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, + 0, 0, 0, 0, 0, 11, 2, 0, 0, 0, 0, 0, 0, 28, + 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, + 0, 0, 13, 14, 21, 0, 12, 0, 24, 18, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 24, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 28, + 0, 15, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 31, 0, 13, 0, 0, 0, 0, 2, 0, 1, + 13, 0, 22, 0, 15, 0, 15, 3, 0, 0, 0, 9, 0, 0, + 0, 0, 31, 9, 0, 0, 0, 19, 0, 22, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 14, 0, 8, 0, 0, 0, 0, 27, 0, + 0, 0, 0, 16, 0, 0, 0, 15, 26, 0, 21, 0, 13, 0, + 23, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 15, 0, + 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 14, 0, 0, 0, 0, 37, 39, 15, 0, 28, 0, + 0, 30, 0, 0, 0, 0, 0, 0, 22, 0, 10, 0, 0, 0, + 0, 11, 0, 0, 18, 32, 0, 6, 0, 0, 0, 0, 14, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 18, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, + 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, 0, 21, 28, + 0, 0, 0, 0, 13, 0, 0, 0, 30, 0, 0, 0, 33, 0, + 35, 9, 11, 0, 0, 11, 0, 0, 29, 0, 0, 0, 0, 13, + 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 25, 12, 29, + 0, 23, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, + 0, 14, 0, 0, 0, 0, 0, 19, 0, 0, 23, 14, 0, 16, + 0, 15, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 50, 0, + 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 25, 14, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 3, + 18, 0, 4, 0, 0, 19, 3, 7, 6, 4, 0, 0, 0, 13, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 18, + 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, - 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 15, 25, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 23, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 27, 0, 2, 0, 0, 0, 0, 0, 24, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 10, 0, 27, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, - 0, 0, 0, 0, 0, 0, 0, 9, 0, 16, 0, 0, 14, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, - 25, 0, 5, 0, 0, 0, 0, 9, 0, 25, 0, 0, 0, 0, - 0, 0, 0, 0, 28, 0, 25, 0, 0, 21, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 27, 0, 0, 0, - 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 19, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, + 0, 0, 16, 33, 31, 0, 0, 18, 0, 0, 0, 32, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 22, 0, 0, 0, + 0, 0, 22, 41, 0, 0, 18, 0, 0, 0, 31, 0, 0, 0, + 0, 8, 20, 0, 0, 0, 21, 18, 0, 22, 0, 0, 0, 0, + 37, 0, 19, 0, 0, 0, 0, 0, 24, 0, 6, 0, 0, 21, + 22, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 33, 0, + 10, 0, 0, 0, 0, 0, 0, 0, 14, 0, 15, 0, 0, 8, + 0, 0, 29, 19, 0, 0, 0, 0, 22, 0, 0, 2, 0, 0, + 0, 0, 0, 15, 0, 0, 18, 16, 0, 0, 18, 19, 7, 0, + 0, 15, 0, 0, 0, 0, 14, 28, 0, 0, 0, 17, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 16, 0, + 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 13, 18, + 0, 0, 0, 0, 17, 0, 0, 0, 15, 0, 11, 0, 30, 0, + 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 24, 0, 0, + 0, 0, 0, 14, 0, 23, 0, 0, 7, 0, 0, 0, 0, 22, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, + 0, 43, 0, 0, 0, 0, 18, 0, 0, 0, 0, 23, 0, 0, + 0, 0, 37, 0, 0, 0, 34, 0, 0, 22, 0, 0, 0, 7, + 0, 29, 0, 0, 0, 0, 15, 0, 15, 0, 0, 14, 0, 0, + 0, 16, 0, 0, 15, 0, 8, 0, 0, 0, 19, 0, 0, 0, + 0, 2, 21, 0, 0, 0, 35, 0, 17, 15, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 11, 0, 0, + 0, 34, 0, 0, 0, 22, 0, 0, 0, 0, 10, 28, 22, 0, + 0, 0, 27, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, + 23, 29, 9, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, + 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 8, 0, 9, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 41, 31, 14, 0, 0, 0, + 0, 0, 0, 18, 0, 0, 0, 0, 0, 10, 0, 0, 0, 15, + 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, + 0, 0, 0, 0, 22, 0, 12, 0, 0, 0, 0, 0, 31, 0, + 0, 0, 0, 19, 0, 14, 0, 0, 0, 0, 35, 0, 0, 0, + 11, 0, 0, 17, 0, 0, 0, 24, 0, 18, 0, 31, 8, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 15, 35, 0, 0, 0, 0, + 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, + 17, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 22, 13, 0, 0, 0, 0, 23, 0, 0, 0, 0, 14, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 20, 0, 0, 0, 0, 0, 35, 14, 0, 21, 0, 11, 0, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, + 0, 0, 0, 0, 16, 0, 0, 8, 0, 0, 0, 5, 0, 0, + 0, 0, 24, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 25, + 0, 19, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 21, 0, + 0, 32, 0, 32, 0, 0, 0, 21, 18, 0, 19, 0, 0, 0, + 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 15, + 0, 14, 37, 2, 0, 0, 11, 0, 0, 27, 0, 0, 0, 0, + 0, 0, 25, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 24, 0, 0, 0, 0, 0, 24, 25, 0, 0, 0, + 0, 13, 0, 16, 0, 0, 0, 27, 20, 23, 0, 31, 0, 24, + 0, 0, 23, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, + 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 11, 28, 0, + 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 15, 14, 14, 0, + 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 30, + 0, 0, 0, 0, 18, 0, 0, 19, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 23, 0, 28, 0, 0, 0, 26, 29, 0, 0, 17, + 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, + 0, 0, 15, 0, 0, 0, 0, 0, 11, 24, 0, 0, 0, 2, + 0, 0, 0, 0, 0, 15, 0, 30, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 10, 33, 0, 0, 0, 0, + 0, 0, 0, 0, 19, 0, 31, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 35, 28, 30, 0, 0, 0, 0, 0, 0, 15, + 0, 0, 0, 0, 0, 43, 15, 0, 0, 0, 23, 0, 15, 0, + 0, 0, 0, 30, 0, 0, 0, 26, 24, 0, 0, 0, 26, 0, + 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 21, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 19, 0, 0, 23, 21, 0, 36, 0, 0, + 0, 12, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 36, 0, 13, 0, + 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 14, 0, 0, 0, 0, 19, 0, 0, 0, 0, 24, + 11, 0, 33, 0, 18, 0, 0, 0, 12, 0, 0, 0, 0, 0, + 0, 0, 0, 27, 0, 0, 0, 0, 14, 0, 0, 0, 0, 27, + 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 14, 0, 28, 20, 0, 0, 0, 15, + 0, 14, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, + 0, 0, 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, + 72, 28, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 15, 0, + 0, 0, 0, 0, 28, 0, 0, 0, 19, 10, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 22, 0, 0, 0, 27, 0, 30, 0, 0, 0, 18, + 0, 0, 13, 0, 0, 0, 0, 15, 0, 21, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 16, 0, 0, 0, 0, 33, 26, 36, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 14, + 0, 0, 18, 16, 31, 0, 0, 0, 0, 0, 0, 29, 0, 43, + 0, 0, 0, 0, 29, 0, 0, 0, 12, 19, 14, 0, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 11, 0, 0, 29, 0, 0, 11, 0, 0, 0, 18, 0, 0, 0, + 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 18, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 28, 0, 0, 15, 0, 0, 0, 0, + 0, 0, 24, 0, 0, 36, 0, 0, 0, 29, 0, 0, 18, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 16, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 36, 6, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 25, 0, 0, 0, 0, 0, 27, 27, 19, + 0, 0, 0, 0, 0, 0, 0, 24, 26, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0, 15, 38, 0, 0, 0, 0, + 0, 0, 0, 29, 24, 0, 0, 0, 0, 0, 0, 9, 22, 0, + 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 9, + 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 25, 0, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 14, + 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 4, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 28, 9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 14, 19, 0, + 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 0, 0, 21, 0, 0, 3, 0, + 20, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 10, 23, 0, + 29, 0, 0, 0, 0, 0, 0, 0, 29, 0, 19, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 33, + 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 15, 0, 0, 19, 10, 0, 25, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 25, - 16, 29, 0, 7, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, - 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, - 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 27, - 6, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 2, 15, 0, 0, - 25, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, - 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, - 24, 0, 14, 0, 29, 11, 0, 0, 0, 14, 0, 0, 0, 0, - 0, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 11, 25, 0, 0, 0, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 24, 0, 0, 0, 0, 0, 14, 0, 0, 0, + 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, + 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, + 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 32, 0, + 20, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, + 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 31, 0, 0, 23, 0, 35, 0, 0, 0, 0, 0, 20, 0, + 11, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 16, 0, 0, 22, 0, 0, 16, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, + 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 27, + 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 15, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, + 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 16, 30, 0, + 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 10, 0, 0, 20, 0, 9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 14, 0, 27, + 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, + 0, 28, 0, 0, 0, 0, 15, 0, 0, 0, 63, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 0, 0, 0, + 28, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 30, 0, 16, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 29, 22, 0, 0, 0, 0, 0, 0, 4, 19, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, - 22, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, - 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 13, 0, 0, 0, 25, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 15, 0, 0, + 13, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 20, 0, + 0, 0, 0, 0, 25, 15, 13, 0, 0, 27, 27, 0, 0, 20, + 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 28, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 14, 16, 0, 0, 0, 0, 10, 14, 0, 0, 0, 0, 0, + 0, 18, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 34, + 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 16, 6, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 33, 0, 0, 0, 37, 25, 0, 0, 0, 0, 2, - 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 19, 0, 0, 0, 0, 22, 14, 0, 0, 0, 33, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, + 0, 0, 14, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 14, 30, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 13, 0, 27, 0, 0, 0, 33, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, - 0, 10, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 13, 0, - 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 33, 0, 63, 0, 37, 0, 0, 0, 11, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 9, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 22, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 28, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 28, 16, 0, - 0, 0, 0, 33, 29, 0, 0, 17, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 24, 0, 28, 0, 0, 0, 0, 0, 27, 25, 0, + 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 30, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 7, 16, 0, - 33, 0, 0, 0, 37, 0, 0, 0, 0, 22, 0, 2, 0, 0, + 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 13, 0, 0, 13, 17, 0, 0, 0, 0, 0, 0, 0, - 0, 10, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 29, 0, - 0, 0, 34, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 28, 0, 0, 19, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, - 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, - 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 14, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 16, 0, - 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 13, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 21, 0, 0, 0, 0, - 28, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 16, - 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 6, - 0, 0, 25, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 17, 33, 17, 0, 0, 37, 25, 0, 0, 22, 0, - 0, 0, 24, 17, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, - 0, 0, 18, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 28, 27, 28, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 11, + 0, 0, 0, 17, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, + 27, 0, 20, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 19, + 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, + 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 17, + 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 28, 0, 16, 12, 0, 0, 0, 0, 17, 0, + 0, 0, 0, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 22, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 11, + 0, 0, 0, 0, 13, 0, 17, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 33, 0, 0, 0, 37, 14, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, + 33, 0, 0, 0, 37, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 16, 0, - 0, 0, 0, 0, 0, 0, 25, 0, 0, 22, 22, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 7, 0, 17, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 17, 17, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 31, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 15, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 15, 0, 27, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 14, 14, - 16, 0, 0, 17, 0, 0, 13, 0, 0, 0, 0, 0, 0, 16, - 0, 0, 0, 17, 0, 7, 0, 0, 15, 0, 0, 0, 7, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 22, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, - 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, - 0, 0, 0, 19, 0, 17, 0, 0, 14, 0, 0, 0, 0, 17, - 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 29, 0, 0, 9, 0, 0, 24, 0, 0, 36, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 17, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, + 0, 0, 0, 19, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 35, 40, 0, 0, 0, 14, 0, 0, 0, 0, 0, - 0, 0, 6, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, - 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 24, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, + 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, + 8, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, + 0, 0, 0, 0, 0, 26, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 6, - 17, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, + 33, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 22, 15, 13, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 28, 0, 0, 13, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 14, 0, 28, 0, + 0, 0, 0, 0, 0, 16, 0, 0, 0, 17, 0, 22, 16, 0, + 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 20, 0, 7, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 37, + 0, 15, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, - 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 17, 0, 0, 0, 24, 0, 25, 0, 0, 0, 0, + 0, 24, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 25, 15, 0, 0, 15, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, + 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 26, 0, 0, + 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, - 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 0, 0, 25, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, + 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 37, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 22, 0, 0, 0, 0, 6, 0, 0, 16, 0, 21, 0, 0, - 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, - 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 15, 0, 0, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 17, - 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 17, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 25, + 22, 0, 0, 0, 0, 0, 0, 0, 0, 17, 16, 0, 0, 11, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, + 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 16, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 15, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, + 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, + 0, 2, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 7, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, + 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, + 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 25, 0, 0, 15, 0, 0, 6, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, + 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, + 0, 17, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, + 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, + 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, - 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, - 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 6, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 7, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 14, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 15, 7, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 17, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 29, 24, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, + 0, 0, 0, 9, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 32, 0, 0, 25, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 17, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, + 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 22, 0, 6, 0, 0, 17, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 9, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, + 0, 0, 0, 0, 6, 0, 0, 17, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, + 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, + 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 7, 17, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, + 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0, 31, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4, 0, 15, 0, 0, 0, 22, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 0, 24, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, + 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 0, 0, 0, 0, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 15, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1043,9 +1079,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 28, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1053,65 +1087,653 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 33, 0, 0, + 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, + 32, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 36, 0, 0, 33, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 36, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 15, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, + 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, - 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1125,7 +1747,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1140,49 +1761,37 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 15, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 17, 16, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, - 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 15, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1195,15 +1804,11 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1213,13 +1818,10 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1232,32 +1834,25 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1278,14 +1873,13 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, - 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1348,6 +1942,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1359,14 +1954,12 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1376,7 +1969,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1385,7 +1977,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1408,252 +1999,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1667,7 +2012,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1691,7 +2035,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1716,7 +2059,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1731,7 +2073,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1749,7 +2090,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1859,7 +2199,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1871,7 +2210,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2012,6 +2350,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2096,6 +2435,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2166,84 +2506,36 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31 + 0, 0, 0, 0, 27 }; static const struct grib_keys_hash wordlist[] = { {""}, -#line 1270 "../tests/keys" - {"n",1265}, -#line 1279 "../tests/keys" - {"nd",1274}, -#line 1283 "../tests/keys" - {"nnn",1278}, -#line 2069 "../tests/keys" - {"td",2064}, -#line 2059 "../tests/keys" - {"t",2054}, -#line 1297 "../tests/keys" - {"nt",1292}, +#line 1272 "../tests/keys" + {"n",1267}, +#line 1281 "../tests/keys" + {"nd",1276}, +#line 1285 "../tests/keys" + {"nnn",1280}, +#line 2072 "../tests/keys" + {"td",2067}, +#line 2062 "../tests/keys" + {"t",2057}, +#line 1299 "../tests/keys" + {"nt",1294}, #line 684 "../tests/keys" {"ed",679}, -#line 1273 "../tests/keys" - {"na",1268}, -#line 1152 "../tests/keys" - {"m",1147}, +#line 1275 "../tests/keys" + {"na",1270}, +#line 1153 "../tests/keys" + {"m",1148}, {""}, -#line 1234 "../tests/keys" - {"min",1229}, +#line 1235 "../tests/keys" + {"min",1230}, {""}, -#line 1857 "../tests/keys" - {"sd",1852}, +#line 1860 "../tests/keys" + {"sd",1855}, {""}, #line 591 "../tests/keys" {"data",586}, @@ -2253,13 +2545,13 @@ static const struct grib_keys_hash wordlist[] = #line 609 "../tests/keys" {"date",604}, {""}, -#line 1274 "../tests/keys" - {"name",1269}, +#line 1276 "../tests/keys" + {"name",1271}, {""}, -#line 1459 "../tests/keys" - {"one",1454}, -#line 2095 "../tests/keys" - {"time",2090}, +#line 1462 "../tests/keys" + {"one",1457}, +#line 2098 "../tests/keys" + {"time",2093}, {""}, {""}, #line 667 "../tests/keys" {"domain",662}, @@ -2268,159 +2560,161 @@ static const struct grib_keys_hash wordlist[] = {""}, #line 727 "../tests/keys" {"enorm",722}, -#line 1982 "../tests/keys" - {"sort",1977}, +#line 1985 "../tests/keys" + {"sort",1980}, #line 685 "../tests/keys" {"edition",680}, -#line 1230 "../tests/keys" - {"metadata",1225}, +#line 1231 "../tests/keys" + {"metadata",1226}, {""}, -#line 1155 "../tests/keys" - {"mars",1150}, +#line 1156 "../tests/keys" + {"mars",1151}, {""}, -#line 2032 "../tests/keys" - {"stream",2027}, +#line 2035 "../tests/keys" + {"stream",2030}, {""}, -#line 1278 "../tests/keys" - {"names",1273}, +#line 1280 "../tests/keys" + {"names",1275}, {""}, #line 985 "../tests/keys" {"iteration",980}, -#line 1567 "../tests/keys" - {"param",1562}, +#line 1570 "../tests/keys" + {"param",1565}, {""}, -#line 1471 "../tests/keys" - {"oper",1466}, +#line 1474 "../tests/keys" + {"oper",1469}, {""}, {""}, #line 650 "../tests/keys" {"dimension",645}, {""}, {""}, {""}, #line 732 "../tests/keys" {"eps",727}, -#line 1998 "../tests/keys" - {"spare",1993}, +#line 2001 "../tests/keys" + {"spare",1996}, {""}, -#line 2136 "../tests/keys" - {"two",2131}, -#line 1614 "../tests/keys" - {"present",1609}, +#line 2139 "../tests/keys" + {"two",2134}, +#line 1617 "../tests/keys" + {"present",1612}, {""}, #line 300 "../tests/keys" {"assertion",295}, -#line 1570 "../tests/keys" - {"parameter",1565}, +#line 1573 "../tests/keys" + {"parameter",1568}, {""}, -#line 1478 "../tests/keys" - {"opttime",1473}, +#line 1481 "../tests/keys" + {"opttime",1476}, #line 358 "../tests/keys" {"cat",353}, {""}, {""}, -#line 2022 "../tests/keys" - {"step",2017}, -#line 1604 "../tests/keys" - {"points",1599}, +#line 2025 "../tests/keys" + {"step",2020}, +#line 1607 "../tests/keys" + {"points",1602}, {""}, {""}, {""}, {""}, {""}, -#line 2310 "../tests/keys" - {"year",2305}, +#line 2313 "../tests/keys" + {"year",2308}, {""}, {""}, {""}, {""}, #line 376 "../tests/keys" {"centre",371}, #line 569 "../tests/keys" {"core",564}, -#line 2127 "../tests/keys" - {"true",2122}, -#line 1578 "../tests/keys" - {"parameters",1573}, -#line 1583 "../tests/keys" - {"partitions",1578}, +#line 2130 "../tests/keys" + {"true",2125}, +#line 1581 "../tests/keys" + {"parameters",1576}, +#line 1586 "../tests/keys" + {"partitions",1581}, #line 543 "../tests/keys" {"const",538}, -#line 2108 "../tests/keys" - {"timerepres",2103}, -#line 1858 "../tests/keys" - {"second",1853}, +#line 2111 "../tests/keys" + {"timerepres",2106}, +#line 1861 "../tests/keys" + {"second",1856}, {""}, -#line 1697 "../tests/keys" - {"rectime",1692}, -#line 1236 "../tests/keys" - {"minute",1231}, +#line 1700 "../tests/keys" + {"rectime",1695}, +#line 1237 "../tests/keys" + {"minute",1232}, #line 653 "../tests/keys" {"direction",648}, {""}, {""}, -#line 1880 "../tests/keys" - {"section",1875}, -#line 1235 "../tests/keys" - {"minimum",1230}, -#line 2138 "../tests/keys" - {"type",2133}, -#line 2187 "../tests/keys" - {"units",2182}, +#line 1883 "../tests/keys" + {"section",1878}, +#line 1236 "../tests/keys" + {"minimum",1231}, +#line 2141 "../tests/keys" + {"type",2136}, +#line 2190 "../tests/keys" + {"units",2185}, {""}, {""}, {""}, -#line 1672 "../tests/keys" - {"radius",1667}, -#line 2057 "../tests/keys" - {"system",2052}, +#line 1675 "../tests/keys" + {"radius",1670}, +#line 2060 "../tests/keys" + {"system",2055}, {""}, {""}, {""}, #line 943 "../tests/keys" {"instrument",938}, {""}, {""}, #line 869 "../tests/keys" {"grid",864}, -#line 2021 "../tests/keys" - {"status",2016}, +#line 2024 "../tests/keys" + {"status",2019}, {""}, {""}, #line 1046 "../tests/keys" {"leadtime",1041}, - {""}, {""}, +#line 2034 "../tests/keys" + {"stepZero",2029}, + {""}, #line 674 "../tests/keys" {"dy",669}, {""}, -#line 1671 "../tests/keys" - {"radials",1666}, -#line 1677 "../tests/keys" - {"range",1672}, +#line 1674 "../tests/keys" + {"radials",1669}, +#line 1680 "../tests/keys" + {"range",1675}, #line 620 "../tests/keys" {"day",615}, -#line 1610 "../tests/keys" - {"precision",1605}, +#line 1613 "../tests/keys" + {"precision",1608}, #line 606 "../tests/keys" {"dataTime",601}, #line 891 "../tests/keys" {"hdate",886}, #line 618 "../tests/keys" {"dateTime",613}, -#line 1483 "../tests/keys" - {"origin",1478}, -#line 2020 "../tests/keys" - {"statistics",2015}, -#line 2082 "../tests/keys" - {"three",2077}, -#line 2308 "../tests/keys" - {"yFirst",2303}, +#line 1486 "../tests/keys" + {"origin",1481}, +#line 2023 "../tests/keys" + {"statistics",2018}, +#line 2085 "../tests/keys" + {"three",2080}, +#line 2311 "../tests/keys" + {"yFirst",2306}, {""}, -#line 1231 "../tests/keys" - {"method",1226}, +#line 1232 "../tests/keys" + {"method",1227}, {""}, {""}, -#line 1644 "../tests/keys" - {"process",1639}, +#line 1647 "../tests/keys" + {"process",1642}, #line 583 "../tests/keys" {"count",578}, {""}, {""}, {""}, -#line 2179 "../tests/keys" - {"uco",2174}, +#line 2182 "../tests/keys" + {"uco",2177}, {""}, -#line 2180 "../tests/keys" - {"ucs",2175}, +#line 2183 "../tests/keys" + {"ucs",2178}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 574 "../tests/keys" {"correction",569}, {""}, -#line 1597 "../tests/keys" - {"phase",1592}, +#line 1600 "../tests/keys" + {"phase",1595}, {""}, {""}, {""}, {""}, {""}, -#line 1646 "../tests/keys" - {"product",1641}, +#line 1649 "../tests/keys" + {"product",1644}, {""}, {""}, #line 598 "../tests/keys" {"dataOrigin",593}, @@ -2433,22 +2727,22 @@ static const struct grib_keys_hash wordlist[] = #line 398 "../tests/keys" {"class",393}, {""}, {""}, -#line 2110 "../tests/keys" - {"total",2105}, -#line 1601 "../tests/keys" - {"pl",1596}, -#line 1252 "../tests/keys" - {"model",1247}, -#line 1286 "../tests/keys" - {"normal",1281}, +#line 2113 "../tests/keys" + {"total",2108}, +#line 1604 "../tests/keys" + {"pl",1599}, +#line 1253 "../tests/keys" + {"model",1248}, +#line 1288 "../tests/keys" + {"normal",1283}, #line 1004 "../tests/keys" {"landtype",999}, #line 910 "../tests/keys" {"hundred",905}, #line 35 "../tests/keys" {"Di",30}, -#line 1233 "../tests/keys" - {"million",1228}, +#line 1234 "../tests/keys" + {"million",1229}, {""}, #line 902 "../tests/keys" {"hour",897}, @@ -2473,65 +2767,63 @@ static const struct grib_keys_hash wordlist[] = {"g",842}, #line 43 "../tests/keys" {"Dstart",38}, -#line 2081 "../tests/keys" - {"thousand",2076}, +#line 2084 "../tests/keys" + {"thousand",2079}, {""}, #line 594 "../tests/keys" {"dataDate",589}, -#line 1965 "../tests/keys" - {"signature",1960}, +#line 1968 "../tests/keys" + {"signature",1963}, {""}, -#line 1183 "../tests/keys" - {"marsType",1178}, -#line 1159 "../tests/keys" - {"marsDir",1154}, +#line 1184 "../tests/keys" + {"marsType",1179}, +#line 1160 "../tests/keys" + {"marsDir",1155}, {""}, {""}, -#line 2231 "../tests/keys" - {"varno",2226}, +#line 2234 "../tests/keys" + {"varno",2229}, {""}, {""}, {""}, {""}, {""}, -#line 1188 "../tests/keys" - {"masterDir",1183}, +#line 1189 "../tests/keys" + {"masterDir",1184}, #line 359 "../tests/keys" {"categories",354}, -#line 1721 "../tests/keys" - {"reserved",1716}, -#line 2236 "../tests/keys" - {"version",2231}, +#line 1724 "../tests/keys" + {"reserved",1719}, +#line 2239 "../tests/keys" + {"version",2234}, #line 690 "../tests/keys" {"eight",685}, {""}, {""}, -#line 1160 "../tests/keys" - {"marsDomain",1155}, +#line 1161 "../tests/keys" + {"marsDomain",1156}, #line 604 "../tests/keys" {"dataStream",599}, -#line 2027 "../tests/keys" - {"stepType",2022}, +#line 2030 "../tests/keys" + {"stepType",2025}, {""}, -#line 1259 "../tests/keys" - {"month",1254}, +#line 1260 "../tests/keys" + {"month",1255}, {""}, -#line 2071 "../tests/keys" - {"temperature",2066}, -#line 1717 "../tests/keys" - {"reportType",1712}, - {""}, -#line 2031 "../tests/keys" - {"stepZero",2026}, -#line 1497 "../tests/keys" - {"padding",1492}, +#line 2074 "../tests/keys" + {"temperature",2069}, +#line 1720 "../tests/keys" + {"reportType",1715}, + {""}, {""}, +#line 1500 "../tests/keys" + {"padding",1495}, #line 971 "../tests/keys" {"isSens",966}, {""}, -#line 1180 "../tests/keys" - {"marsStream",1175}, +#line 1181 "../tests/keys" + {"marsStream",1176}, {""}, #line 691 "../tests/keys" {"elementsTable",686}, #line 672 "../tests/keys" {"dummyc",667}, {""}, {""}, -#line 1582 "../tests/keys" - {"partitionTable",1577}, +#line 1585 "../tests/keys" + {"partitionTable",1580}, {""}, {""}, {""}, {""}, #line 719 "../tests/keys" {"endStep",714}, @@ -2544,25 +2836,25 @@ static const struct grib_keys_hash wordlist[] = #line 523 "../tests/keys" {"codeType",518}, {""}, -#line 1472 "../tests/keys" - {"operStream",1467}, +#line 1475 "../tests/keys" + {"operStream",1470}, {""}, {""}, {""}, {""}, -#line 2280 "../tests/keys" - {"windSpeed",2275}, +#line 2283 "../tests/keys" + {"windSpeed",2278}, {""}, {""}, #line 221 "../tests/keys" {"TT",216}, -#line 1179 "../tests/keys" - {"marsStep",1174}, -#line 2014 "../tests/keys" - {"startStep",2009}, -#line 1296 "../tests/keys" - {"notDecoded",1291}, -#line 2193 "../tests/keys" - {"unitsFactor",2188}, +#line 1180 "../tests/keys" + {"marsStep",1175}, +#line 2017 "../tests/keys" + {"startStep",2012}, +#line 1298 "../tests/keys" + {"notDecoded",1293}, +#line 2196 "../tests/keys" + {"unitsFactor",2191}, {""}, {""}, {""}, {""}, -#line 1114 "../tests/keys" - {"longitude",1109}, +#line 1115 "../tests/keys" + {"longitude",1110}, {""}, {""}, #line 693 "../tests/keys" {"eleven",688}, @@ -2573,30 +2865,35 @@ static const struct grib_keys_hash wordlist[] = #line 878 "../tests/keys" {"gridType",873}, {""}, -#line 1143 "../tests/keys" - {"longitudes",1138}, - {""}, +#line 1144 "../tests/keys" + {"longitudes",1139}, +#line 1178 "../tests/keys" + {"marsRange",1173}, #line 692 "../tests/keys" {"elevation",687}, {""}, {""}, {""}, #line 859 "../tests/keys" {"gg",854}, -#line 1082 "../tests/keys" - {"local",1077}, +#line 1083 "../tests/keys" + {"local",1078}, #line 522 "../tests/keys" {"codeFigure",517}, {""}, {""}, {""}, {""}, {""}, -#line 1422 "../tests/keys" - {"oceanStream",1417}, - {""}, +#line 1425 "../tests/keys" + {"oceanStream",1420}, +#line 366 "../tests/keys" + {"ccsdsRsi",361}, #line 304 "../tests/keys" {"average",299}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 2028 "../tests/keys" + {"stepRange",2023}, + {""}, {""}, {""}, {""}, {""}, #line 968 "../tests/keys" {"isOctahedral",963}, {""}, {""}, -#line 2083 "../tests/keys" - {"threshold",2078}, +#line 2086 "../tests/keys" + {"threshold",2081}, #line 393 "../tests/keys" {"channel",388}, {""}, {""}, {""}, {""}, {""}, @@ -2617,144 +2914,137 @@ static const struct grib_keys_hash wordlist[] = #line 698 "../tests/keys" {"endDescriptors",693}, {""}, -#line 1477 "../tests/keys" - {"optionalData",1472}, +#line 1480 "../tests/keys" + {"optionalData",1475}, {""}, {""}, {""}, {""}, -#line 1703 "../tests/keys" - {"refdate",1698}, +#line 1706 "../tests/keys" + {"refdate",1701}, {""}, -#line 2219 "../tests/keys" - {"values",2214}, +#line 2222 "../tests/keys" + {"values",2217}, #line 312 "../tests/keys" {"band",307}, {""}, {""}, -#line 1066 "../tests/keys" - {"levtype",1061}, -#line 2007 "../tests/keys" - {"standardDeviation",2002}, +#line 1067 "../tests/keys" + {"levtype",1062}, +#line 2010 "../tests/keys" + {"standardDeviation",2005}, {""}, #line 922 "../tests/keys" {"identifier",917}, -#line 2269 "../tests/keys" - {"windDirection",2264}, +#line 2272 "../tests/keys" + {"windDirection",2267}, {""}, {""}, {""}, #line 931 "../tests/keys" {"indicatorOfParameter",926}, {""}, -#line 1064 "../tests/keys" - {"levelist",1059}, #line 1065 "../tests/keys" - {"levels",1060}, + {"levelist",1060}, +#line 1066 "../tests/keys" + {"levels",1061}, {""}, {""}, {""}, -#line 1698 "../tests/keys" - {"rectimeDay",1693}, +#line 1701 "../tests/keys" + {"rectimeDay",1696}, {""}, -#line 1195 "../tests/keys" - {"matchSort",1190}, +#line 1196 "../tests/keys" + {"matchSort",1191}, {""}, -#line 1683 "../tests/keys" - {"rdbtime",1678}, +#line 1686 "../tests/keys" + {"rdbtime",1681}, {""}, {""}, -#line 1657 "../tests/keys" - {"pv",1652}, +#line 1660 "../tests/keys" + {"pv",1655}, #line 308 "../tests/keys" {"avg",303}, #line 365 "../tests/keys" {"ccsdsFlags",360}, - {""}, {""}, {""}, + {""}, {""}, +#line 2208 "../tests/keys" + {"upperRange",2203}, #line 689 "../tests/keys" {"efiOrder",684}, {""}, {""}, {""}, {""}, #line 586 "../tests/keys" {"countTotal",581}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1470 "../tests/keys" - {"oneThousand",1465}, + {""}, {""}, {""}, +#line 1148 "../tests/keys" + {"lowerRange",1143}, + {""}, {""}, {""}, {""}, {""}, +#line 1473 "../tests/keys" + {"oneThousand",1468}, #line 282 "../tests/keys" {"aerosolType",277}, -#line 1090 "../tests/keys" - {"localDir",1085}, -#line 1920 "../tests/keys" - {"section8",1915}, - {""}, {""}, {""}, {""}, +#line 1091 "../tests/keys" + {"localDir",1086}, + {""}, {""}, {""}, {""}, {""}, #line 341 "../tests/keys" {"bitmap",336}, -#line 1144 "../tests/keys" - {"longitudesList",1139}, +#line 1145 "../tests/keys" + {"longitudesList",1140}, {""}, -#line 1704 "../tests/keys" - {"reference",1699}, +#line 1707 "../tests/keys" + {"reference",1702}, {""}, #line 812 "../tests/keys" {"file",807}, {""}, {""}, -#line 2259 "../tests/keys" - {"waveDomain",2254}, +#line 2262 "../tests/keys" + {"waveDomain",2257}, {""}, -#line 1061 "../tests/keys" - {"level",1056}, - {""}, {""}, -#line 185 "../tests/keys" - {"Nr",180}, +#line 1062 "../tests/keys" + {"level",1057}, + {""}, {""}, {""}, #line 603 "../tests/keys" {"dataSelection",598}, #line 809 "../tests/keys" {"fcperiod",804}, #line 805 "../tests/keys" {"false",800}, -#line 183 "../tests/keys" - {"Ni",178}, -#line 1298 "../tests/keys" - {"number",1293}, {""}, -#line 2175 "../tests/keys" - {"typicalTime",2170}, +#line 1300 "../tests/keys" + {"number",1295}, + {""}, +#line 2178 "../tests/keys" + {"typicalTime",2173}, {""}, {""}, {""}, {""}, -#line 1651 "../tests/keys" - {"productType",1646}, +#line 1654 "../tests/keys" + {"productType",1649}, {""}, {""}, {""}, -#line 1059 "../tests/keys" - {"lev",1054}, -#line 1282 "../tests/keys" - {"nlev",1277}, +#line 1060 "../tests/keys" + {"lev",1055}, +#line 1284 "../tests/keys" + {"nlev",1279}, {""}, -#line 1269 "../tests/keys" - {"mybits",1264}, +#line 1271 "../tests/keys" + {"mybits",1266}, {""}, {""}, {""}, -#line 2213 "../tests/keys" - {"userTimeStart",2208}, -#line 1726 "../tests/keys" - {"reservedOctet",1721}, -#line 2005 "../tests/keys" - {"spectralType",2000}, +#line 2216 "../tests/keys" + {"userTimeStart",2211}, +#line 1729 "../tests/keys" + {"reservedOctet",1724}, +#line 2008 "../tests/keys" + {"spectralType",2003}, {""}, {""}, -#line 1602 "../tests/keys" - {"platform",1597}, +#line 1605 "../tests/keys" + {"platform",1600}, {""}, -#line 1694 "../tests/keys" - {"recDateTime",1689}, +#line 1697 "../tests/keys" + {"recDateTime",1692}, {""}, {""}, #line 219 "../tests/keys" {"TS",214}, -#line 1177 "../tests/keys" - {"marsRange",1172}, - {""}, {""}, {""}, {""}, {""}, -#line 1796 "../tests/keys" - {"runwayState",1791}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1799 "../tests/keys" + {"runwayState",1794}, {""}, -#line 1420 "../tests/keys" - {"obstype",1415}, - {""}, {""}, {""}, {""}, {""}, -#line 366 "../tests/keys" - {"ccsdsRsi",361}, - {""}, {""}, +#line 1423 "../tests/keys" + {"obstype",1418}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 527 "../tests/keys" {"coefsFirst",522}, - {""}, -#line 2025 "../tests/keys" - {"stepRange",2020}, -#line 1491 "../tests/keys" - {"overlayTemplate",1486}, + {""}, {""}, +#line 1494 "../tests/keys" + {"overlayTemplate",1489}, {""}, {""}, #line 284 "../tests/keys" {"aerosolpacking",279}, @@ -2765,2995 +3055,3105 @@ static const struct grib_keys_hash wordlist[] = #line 377 "../tests/keys" {"centreDescription",372}, {""}, {""}, -#line 2016 "../tests/keys" - {"startTimeStep",2011}, +#line 2019 "../tests/keys" + {"startTimeStep",2014}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 360 "../tests/keys" {"categoryType",355}, {""}, {""}, {""}, -#line 2168 "../tests/keys" - {"typicalDate",2163}, -#line 1575 "../tests/keys" - {"parameterName",1570}, -#line 1084 "../tests/keys" - {"localDay",1079}, -#line 2170 "../tests/keys" - {"typicalDay",2165}, +#line 2171 "../tests/keys" + {"typicalDate",2166}, + {""}, +#line 1085 "../tests/keys" + {"localDay",1080}, +#line 2173 "../tests/keys" + {"typicalDay",2168}, #line 220 "../tests/keys" {"TScalc",215}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1063 "../tests/keys" - {"levelType",1058}, + {""}, {""}, {""}, +#line 2304 "../tests/keys" + {"xFirst",2299}, + {""}, {""}, {""}, {""}, {""}, +#line 1064 "../tests/keys" + {"levelType",1059}, #line 827 "../tests/keys" {"flags",822}, -#line 2209 "../tests/keys" - {"userDateStart",2204}, - {""}, -#line 2051 "../tests/keys" - {"suiteName",2046}, - {""}, +#line 2212 "../tests/keys" + {"userDateStart",2207}, + {""}, {""}, {""}, #line 811 "../tests/keys" {"fgTime",806}, -#line 1681 "../tests/keys" - {"rdbType",1676}, -#line 189 "../tests/keys" - {"Ny",184}, -#line 2018 "../tests/keys" - {"statisticalProcess",2013}, - {""}, {""}, {""}, {""}, -#line 1255 "../tests/keys" - {"modelName",1250}, +#line 1684 "../tests/keys" + {"rdbType",1679}, {""}, -#line 2184 "../tests/keys" - {"unitOfTime",2179}, - {""}, {""}, {""}, -#line 1092 "../tests/keys" - {"localFlag",1087}, - {""}, -#line 876 "../tests/keys" - {"gridName",871}, - {""}, {""}, {""}, -#line 2205 "../tests/keys" - {"upperRange",2200}, - {""}, {""}, {""}, {""}, -#line 2218 "../tests/keys" - {"validityTime",2213}, - {""}, {""}, -#line 180 "../tests/keys" - {"Nassigned",175}, -#line 2019 "../tests/keys" - {"statisticalProcessesList",2014}, -#line 1147 "../tests/keys" - {"lowerRange",1142}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1573 "../tests/keys" - {"parameterDiscipline",1568}, -#line 1962 "../tests/keys" - {"shortName",1957}, +#line 2021 "../tests/keys" + {"statisticalProcess",2016}, {""}, {""}, {""}, {""}, {""}, -#line 1690 "../tests/keys" - {"rdbtimeTime",1685}, -#line 1104 "../tests/keys" - {"localSecond",1099}, +#line 1201 "../tests/keys" + {"maximum",1196}, +#line 2187 "../tests/keys" + {"unitOfTime",2182}, + {""}, {""}, {""}, +#line 1093 "../tests/keys" + {"localFlag",1088}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 2221 "../tests/keys" + {"validityTime",2216}, + {""}, {""}, {""}, +#line 2022 "../tests/keys" + {"statisticalProcessesList",2017}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1576 "../tests/keys" + {"parameterDiscipline",1571}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1693 "../tests/keys" + {"rdbtimeTime",1688}, +#line 1105 "../tests/keys" + {"localSecond",1100}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1178 "../tests/keys" - {"marsStartStep",1173}, +#line 1179 "../tests/keys" + {"marsStartStep",1174}, {""}, {""}, {""}, {""}, -#line 177 "../tests/keys" - {"NT",172}, +#line 1197 "../tests/keys" + {"matchTimeRepres",1192}, {""}, {""}, {""}, #line 839 "../tests/keys" {"forecastperiod",834}, {""}, -#line 1801 "../tests/keys" - {"satelliteSeries",1796}, +#line 1804 "../tests/keys" + {"satelliteSeries",1799}, #line 822 "../tests/keys" {"flag",817}, {""}, #line 808 "../tests/keys" {"fcmonth",803}, {""}, {""}, -#line 1083 "../tests/keys" - {"localDateTime",1078}, - {""}, {""}, {""}, {""}, +#line 1084 "../tests/keys" + {"localDateTime",1079}, + {""}, {""}, +#line 1721 "../tests/keys" + {"representationMode",1716}, + {""}, #line 810 "../tests/keys" {"fgDate",805}, #line 842 "../tests/keys" {"freeFormData",837}, #line 568 "../tests/keys" {"coordinatesPresent",563}, - {""}, {""}, -#line 726 "../tests/keys" - {"energyNorm",721}, - {""}, -#line 2134 "../tests/keys" - {"tubeDomain",2129}, - {""}, {""}, {""}, -#line 1705 "../tests/keys" - {"referenceDate",1700}, - {""}, -#line 18 "../tests/keys" - {"Adelta",13}, + {""}, {""}, {""}, {""}, +#line 2137 "../tests/keys" + {"tubeDomain",2132}, {""}, {""}, {""}, +#line 1708 "../tests/keys" + {"referenceDate",1703}, + {""}, {""}, {""}, {""}, {""}, #line 288 "../tests/keys" {"angleDivisor",283}, - {""}, {""}, {""}, {""}, -#line 1593 "../tests/keys" - {"periodOfTime",1588}, -#line 686 "../tests/keys" - {"editionNumber",681}, -#line 956 "../tests/keys" - {"isAuto",951}, - {""}, {""}, {""}, {""}, + {""}, {""}, +#line 1177 "../tests/keys" + {"marsQuantile",1172}, + {""}, +#line 1596 "../tests/keys" + {"periodOfTime",1591}, +#line 718 "../tests/keys" + {"endOfRange",713}, + {""}, {""}, {""}, {""}, {""}, #line 838 "../tests/keys" {"forecastTime",833}, {""}, {""}, {""}, {""}, {""}, -#line 2217 "../tests/keys" - {"validityDate",2212}, -#line 1669 "../tests/keys" - {"quantile",1664}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1953 "../tests/keys" - {"sequences",1948}, - {""}, -#line 1684 "../tests/keys" - {"rdbtimeDate",1679}, +#line 2220 "../tests/keys" + {"validityDate",2215}, {""}, {""}, -#line 1685 "../tests/keys" - {"rdbtimeDay",1680}, -#line 2191 "../tests/keys" - {"unitsDecimalScaleFactor",2186}, +#line 759 "../tests/keys" + {"extraDim",754}, +#line 596 "../tests/keys" + {"dataKeys",591}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1687 "../tests/keys" + {"rdbtimeDate",1682}, + {""}, {""}, +#line 1688 "../tests/keys" + {"rdbtimeDay",1683}, +#line 2194 "../tests/keys" + {"unitsDecimalScaleFactor",2189}, {""}, {""}, #line 947 "../tests/keys" {"integerScaleFactor",942}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2301 "../tests/keys" - {"xFirst",2296}, - {""}, {""}, {""}, -#line 1424 "../tests/keys" - {"offset",1419}, - {""}, {""}, {""}, -#line 217 "../tests/keys" - {"TAFstr",212}, + {""}, +#line 757 "../tests/keys" + {"expver",752}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1427 "../tests/keys" + {"offset",1422}, + {""}, {""}, {""}, {""}, #line 295 "../tests/keys" {"anoffset",290}, -#line 596 "../tests/keys" - {"dataKeys",591}, - {""}, {""}, {""}, {""}, -#line 1662 "../tests/keys" - {"qnh",1657}, + {""}, {""}, {""}, {""}, {""}, {""}, #line 860 "../tests/keys" {"global",855}, - {""}, +#line 116 "../tests/keys" + {"Latin",111}, #line 628 "../tests/keys" {"decimalScaleFactor",623}, -#line 1929 "../tests/keys" - {"sectionNumber",1924}, - {""}, -#line 1200 "../tests/keys" - {"maximum",1195}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 216 "../tests/keys" - {"TAF",211}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1113 "../tests/keys" - {"logTransform",1108}, - {""}, {""}, {""}, {""}, {""}, {""}, +#line 928 "../tests/keys" + {"indexTemplate",923}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 1114 "../tests/keys" + {"logTransform",1109}, + {""}, {""}, {""}, {""}, +#line 303 "../tests/keys" + {"auxiliary",298}, + {""}, #line 623 "../tests/keys" {"dayOfForecast",618}, -#line 1039 "../tests/keys" - {"latitudeSexagesimal",1034}, +#line 111 "../tests/keys" + {"Lap",106}, {""}, -#line 1281 "../tests/keys" - {"newSubtype",1276}, +#line 1283 "../tests/keys" + {"newSubtype",1278}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 871 "../tests/keys" {"gridDefinition",866}, - {""}, {""}, -#line 589 "../tests/keys" - {"createNewData",584}, -#line 1679 "../tests/keys" - {"rdbDateTime",1674}, + {""}, +#line 2006 "../tests/keys" + {"spectralDataRepresentationType",2001}, + {""}, +#line 1682 "../tests/keys" + {"rdbDateTime",1677}, #line 837 "../tests/keys" {"forecastSteps",832}, {""}, {""}, {""}, {""}, -#line 2211 "../tests/keys" - {"userDateTimeStart",2206}, - {""}, {""}, {""}, +#line 2214 "../tests/keys" + {"userDateTimeStart",2209}, + {""}, +#line 590 "../tests/keys" + {"daLoop",585}, + {""}, #line 1016 "../tests/keys" {"latitudeOfCenterPoint",1011}, -#line 2250 "../tests/keys" - {"visibility",2245}, - {""}, {""}, {""}, {""}, -#line 1196 "../tests/keys" - {"matchTimeRepres",1191}, +#line 2253 "../tests/keys" + {"visibility",2248}, + {""}, {""}, {""}, +#line 2312 "../tests/keys" + {"yLast",2307}, + {""}, #line 856 "../tests/keys" {"generatingProcessTemplate",851}, {""}, #line 528 "../tests/keys" {"coefsSecond",523}, - {""}, {""}, {""}, {""}, {""}, +#line 290 "../tests/keys" + {"angleOfRotation",285}, + {""}, {""}, {""}, {""}, #line 287 "../tests/keys" {"analysisOffsets",282}, +#line 730 "../tests/keys" + {"ensembleSize",725}, {""}, -#line 592 "../tests/keys" - {"dataAccessors",587}, -#line 1712 "../tests/keys" - {"referenceStep",1707}, - {""}, {""}, {""}, {""}, -#line 1419 "../tests/keys" - {"observedData",1414}, +#line 1715 "../tests/keys" + {"referenceStep",1710}, + {""}, {""}, {""}, +#line 750 "../tests/keys" + {"expandedTypes",745}, +#line 1422 "../tests/keys" + {"observedData",1417}, {""}, #line 611 "../tests/keys" {"dateOfForecast",606}, -#line 1458 "../tests/keys" - {"oldSubtype",1453}, -#line 730 "../tests/keys" - {"ensembleSize",725}, +#line 1461 "../tests/keys" + {"oldSubtype",1456}, +#line 1039 "../tests/keys" + {"latitudeSexagesimal",1034}, {""}, {""}, -#line 2102 "../tests/keys" - {"timeOfForecast",2097}, +#line 2105 "../tests/keys" + {"timeOfForecast",2100}, {""}, -#line 1050 "../tests/keys" - {"lengthDescriptors",1045}, -#line 1239 "../tests/keys" - {"minuteOfForecast",1234}, +#line 1051 "../tests/keys" + {"lengthDescriptors",1046}, +#line 1240 "../tests/keys" + {"minuteOfForecast",1235}, {""}, -#line 1865 "../tests/keys" - {"secondOfForecast",1860}, +#line 1868 "../tests/keys" + {"secondOfForecast",1863}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 882 "../tests/keys" {"groupSplitting",877}, -#line 1085 "../tests/keys" - {"localDecimalScaleFactor",1080}, -#line 718 "../tests/keys" - {"endOfRange",713}, +#line 1086 "../tests/keys" + {"localDecimalScaleFactor",1081}, + {""}, #line 814 "../tests/keys" {"firstDimension",809}, - {""}, {""}, {""}, -#line 759 "../tests/keys" - {"extraDim",754}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 383 "../tests/keys" - {"cfName",378}, -#line 1701 "../tests/keys" - {"rectimeSecond",1696}, -#line 1659 "../tests/keys" - {"qfe",1654}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 2207 "../tests/keys" + {"upperLimit",2202}, {""}, {""}, -#line 515 "../tests/keys" - {"clusterNumber",510}, #line 534 "../tests/keys" {"computeStatistics",529}, - {""}, {""}, -#line 757 "../tests/keys" - {"expver",752}, - {""}, + {""}, {""}, {""}, {""}, #line 857 "../tests/keys" {"generatingProcessTemplateNumber",852}, - {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1147 "../tests/keys" + {"lowerLimit",1142}, + {""}, {""}, {""}, +#line 1001 "../tests/keys" + {"kurt",996}, #line 588 "../tests/keys" {"crcrlf",583}, - {""}, -#line 160 "../tests/keys" - {"N",155}, -#line 2314 "../tests/keys" - {"yearOfForecast",2309}, {""}, {""}, -#line 1956 "../tests/keys" - {"setDecimalPrecision",1951}, - {""}, {""}, {""}, {""}, {""}, +#line 2317 "../tests/keys" + {"yearOfForecast",2312}, + {""}, {""}, +#line 1959 "../tests/keys" + {"setDecimalPrecision",1954}, +#line 1982 "../tests/keys" + {"skew",1977}, + {""}, {""}, {""}, {""}, #line 348 "../tests/keys" {"boustrophedonic",343}, - {""}, -#line 394 "../tests/keys" - {"channelNumber",389}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1088 "../tests/keys" - {"localDefinition",1083}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1983 "../tests/keys" + {"skewness",1978}, +#line 1089 "../tests/keys" + {"localDefinition",1084}, {""}, #line 400 "../tests/keys" {"clearTables",395}, + {""}, {""}, {""}, {""}, {""}, +#line 1005 "../tests/keys" + {"laplacianOperator",1000}, + {""}, {""}, {""}, {""}, {""}, +#line 2199 "../tests/keys" + {"unknown",2194}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 928 "../tests/keys" - {"indexTemplate",923}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1251 "../tests/keys" - {"modeNumber",1246}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1146 "../tests/keys" + {"longitudinalDirectionGridLength",1141}, +#line 1002 "../tests/keys" + {"kurtosis",997}, {""}, -#line 303 "../tests/keys" - {"auxiliary",298}, -#line 1145 "../tests/keys" - {"longitudinalDirectionGridLength",1140}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1825 "../tests/keys" - {"scaledDirections",1820}, +#line 1672 "../tests/keys" + {"quantile",1667}, + {""}, {""}, +#line 1723 "../tests/keys" + {"representativeMember",1718}, {""}, {""}, {""}, {""}, -#line 2003 "../tests/keys" - {"spectralDataRepresentationType",1998}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1956 "../tests/keys" + {"sequences",1951}, + {""}, {""}, +#line 673 "../tests/keys" + {"dx",668}, + {""}, {""}, {""}, {""}, {""}, +#line 1828 "../tests/keys" + {"scaledDirections",1823}, + {""}, +#line 1200 "../tests/keys" + {"max",1195}, + {""}, +#line 1975 "../tests/keys" + {"siteId",1970}, + {""}, {""}, +#line 2133 "../tests/keys" + {"truncateLaplacian",2128}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1167 "../tests/keys" + {"marsIdent",1162}, + {""}, +#line 1571 "../tests/keys" + {"paramId",1566}, +#line 101 "../tests/keys" + {"KS",96}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1665 "../tests/keys" + {"qnh",1660}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1718 "../tests/keys" - {"representationMode",1713}, - {""}, {""}, {""}, {""}, -#line 290 "../tests/keys" - {"angleOfRotation",285}, +#line 1118 "../tests/keys" + {"longitudeOfCenterPoint",1113}, {""}, -#line 750 "../tests/keys" - {"expandedTypes",745}, - {""}, {""}, {""}, {""}, -#line 1344 "../tests/keys" - {"numberOfFloats",1339}, +#line 1347 "../tests/keys" + {"numberOfFloats",1342}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 905 "../tests/keys" {"hourOfForecast",900}, - {""}, -#line 1176 "../tests/keys" - {"marsQuantile",1171}, + {""}, {""}, #line 1017 "../tests/keys" {"latitudeOfCenterPointInDegrees",1012}, - {""}, {""}, {""}, -#line 2089 "../tests/keys" - {"tiggeSection",2084}, -#line 101 "../tests/keys" - {"KS",96}, -#line 1859 "../tests/keys" - {"secondDimension",1854}, -#line 2174 "../tests/keys" - {"typicalSecond",2169}, - {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, #line 920 "../tests/keys" {"identificationOfOriginatingGeneratingCentre",915}, +#line 1923 "../tests/keys" + {"section8",1918}, + {""}, {""}, {""}, +#line 915 "../tests/keys" + {"iIncrement",910}, + {""}, {""}, {""}, +#line 1415 "../tests/keys" + {"numberingOrderOfDiamonds",1410}, + {""}, {""}, {""}, {""}, +#line 1168 "../tests/keys" + {"marsKeywords",1163}, + {""}, +#line 927 "../tests/keys" + {"incrementOfLengths",922}, {""}, -#line 1105 "../tests/keys" - {"localSection",1100}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1412 "../tests/keys" - {"numberingOrderOfDiamonds",1407}, - {""}, {""}, -#line 1060 "../tests/keys" - {"levTypeName",1055}, - {""}, {""}, {""}, {""}, {""}, #line 296 "../tests/keys" {"anoffsetFirst",291}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 955 "../tests/keys" - {"isAccumulation",950}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 802 "../tests/keys" - {"faFieldName",797}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2114 "../tests/keys" - {"totalNumber",2109}, - {""}, {""}, -#line 1142 "../tests/keys" - {"longitudeSexagesimal",1137}, - {""}, -#line 1167 "../tests/keys" - {"marsKeywords",1162}, - {""}, {""}, -#line 632 "../tests/keys" - {"defaultName",627}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1005 "../tests/keys" - {"laplacianOperator",1000}, -#line 116 "../tests/keys" - {"Latin",111}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1049 "../tests/keys" - {"legNumber",1044}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1860 "../tests/keys" - {"secondDimensionCoordinateValueDefinition",1855}, - {""}, {""}, -#line 1680 "../tests/keys" - {"rdbSubtype",1675}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 175 "../tests/keys" - {"NR",170}, -#line 843 "../tests/keys" - {"frequency",838}, - {""}, -#line 111 "../tests/keys" - {"Lap",106}, {""}, {""}, {""}, {""}, -#line 182 "../tests/keys" - {"Nf",177}, +#line 110 "../tests/keys" + {"LaR",105}, + {""}, +#line 629 "../tests/keys" + {"defaultFaFieldName",624}, + {""}, {""}, {""}, +#line 1171 "../tests/keys" + {"marsLatitude",1166}, +#line 125 "../tests/keys" + {"LoR",120}, +#line 1976 "../tests/keys" + {"siteLatitude",1971}, + {""}, {""}, {""}, {""}, +#line 292 "../tests/keys" + {"angleOfRotationOfProjection",287}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 597 "../tests/keys" + {"dataLength",592}, + {""}, +#line 1458 "../tests/keys" + {"offsetSection9",1453}, +#line 997 "../tests/keys" + {"keyData",992}, + {""}, {""}, {""}, +#line 1176 "../tests/keys" + {"marsParam",1171}, + {""}, {""}, {""}, {""}, +#line 999 "../tests/keys" + {"keySat",994}, + {""}, {""}, {""}, +#line 108 "../tests/keys" + {"LaD",103}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 734 "../tests/keys" + {"epsPoint",729}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1683 "../tests/keys" + {"rdbSubtype",1678}, + {""}, {""}, {""}, +#line 1172 "../tests/keys" + {"marsLevel",1167}, + {""}, +#line 1242 "../tests/keys" + {"minuteOfReference",1237}, + {""}, {""}, +#line 1704 "../tests/keys" + {"rectimeSecond",1699}, +#line 1662 "../tests/keys" + {"qfe",1657}, {""}, {""}, {""}, {""}, {""}, +#line 2112 "../tests/keys" + {"topLevel",2107}, +#line 1143 "../tests/keys" + {"longitudeSexagesimal",1138}, + {""}, {""}, +#line 1006 "../tests/keys" + {"laplacianOperatorIsSet",1001}, + {""}, +#line 44 "../tests/keys" + {"Dx",39}, + {""}, {""}, +#line 2282 "../tests/keys" + {"windPresent",2277}, + {""}, +#line 1695 "../tests/keys" + {"realPart",1690}, + {""}, {""}, {""}, +#line 1447 "../tests/keys" + {"offsetSection0",1442}, #line 855 "../tests/keys" {"generatingProcessIdentifier",850}, {""}, #line 353 "../tests/keys" {"bufrTemplate",348}, -#line 590 "../tests/keys" - {"daLoop",585}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 2309 "../tests/keys" - {"yLast",2304}, + {""}, {""}, {""}, {""}, {""}, +#line 760 "../tests/keys" + {"extraDimensionPresent",755}, + {""}, {""}, #line 854 "../tests/keys" {"generatingProcessIdentificationNumber",849}, {""}, {""}, -#line 1848 "../tests/keys" - {"scalingFactorForFrequencies",1843}, -#line 1117 "../tests/keys" - {"longitudeOfCenterPoint",1112}, - {""}, -#line 1455 "../tests/keys" - {"offsetSection9",1450}, - {""}, {""}, {""}, {""}, {""}, -#line 2058 "../tests/keys" - {"systemNumber",2053}, - {""}, {""}, {""}, -#line 1689 "../tests/keys" - {"rdbtimeSecond",1684}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 181 "../tests/keys" - {"Nb",176}, - {""}, -#line 313 "../tests/keys" - {"baseAddress",308}, - {""}, {""}, -#line 1081 "../tests/keys" - {"listOfScaledFrequencies",1076}, - {""}, {""}, {""}, -#line 2265 "../tests/keys" - {"widthOfFirstOrderValues",2260}, -#line 163 "../tests/keys" - {"NAT",158}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1232 "../tests/keys" - {"methodNumber",1227}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1952 "../tests/keys" - {"sensitiveAreaDomain",1947}, - {""}, {""}, {""}, {""}, -#line 2204 "../tests/keys" - {"upperLimit",2199}, - {""}, {""}, {""}, {""}, {""}, -#line 2162 "../tests/keys" - {"typeOfStatisticalPostProcessingOfEnsembleMembers",2157}, -#line 629 "../tests/keys" - {"defaultFaFieldName",624}, - {""}, {""}, -#line 1146 "../tests/keys" - {"lowerLimit",1141}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 100 "../tests/keys" - {"K",95}, - {""}, {""}, {""}, {""}, -#line 1438 "../tests/keys" - {"offsetDescriptors",1433}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1175 "../tests/keys" - {"marsParam",1170}, - {""}, {""}, -#line 728 "../tests/keys" - {"ensembleForecastNumbers",723}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1670 "../tests/keys" - {"radialAngularSpacing",1665}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 734 "../tests/keys" - {"epsPoint",729}, - {""}, -#line 2033 "../tests/keys" - {"streamOfAnalysis",2028}, - {""}, -#line 1720 "../tests/keys" - {"representativeMember",1715}, - {""}, -#line 1334 "../tests/keys" - {"numberOfDirections",1329}, - {""}, -#line 673 "../tests/keys" - {"dx",668}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1241 "../tests/keys" - {"minuteOfReference",1236}, -#line 1199 "../tests/keys" - {"max",1194}, - {""}, -#line 745 "../tests/keys" - {"expandedNames",740}, -#line 1006 "../tests/keys" - {"laplacianOperatorIsSet",1001}, - {""}, {""}, -#line 1402 "../tests/keys" - {"numberOfTimeSteps",1397}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1370 "../tests/keys" - {"numberOfOperationalForecastTube",1365}, - {""}, -#line 1349 "../tests/keys" - {"numberOfForecastsInTube",1344}, - {""}, -#line 1647 "../tests/keys" - {"productDefinition",1642}, - {""}, -#line 2279 "../tests/keys" - {"windPresent",2274}, -#line 2130 "../tests/keys" - {"truncateLaplacian",2125}, -#line 1692 "../tests/keys" - {"realPart",1687}, - {""}, -#line 760 "../tests/keys" - {"extraDimensionPresent",755}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1475 "../tests/keys" - {"optimisationTime",1470}, - {""}, {""}, -#line 1237 "../tests/keys" - {"minuteOfAnalysis",1232}, - {""}, {""}, {""}, -#line 2163 "../tests/keys" - {"typeOfStatisticalProcessing",2158}, #line 615 "../tests/keys" {"dateOfReference",610}, {""}, {""}, {""}, {""}, -#line 2104 "../tests/keys" - {"timeOfReference",2099}, - {""}, {""}, -#line 2135 "../tests/keys" - {"tubeNumber",2130}, - {""}, {""}, {""}, {""}, -#line 1399 "../tests/keys" - {"numberOfSubsets",1394}, +#line 2107 "../tests/keys" + {"timeOfReference",2102}, + {""}, {""}, {""}, +#line 100 "../tests/keys" + {"K",95}, +#line 1583 "../tests/keys" + {"partitionItems",1578}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1809 "../tests/keys" - {"scaleFactorOfFirstSize",1804}, - {""}, {""}, -#line 297 "../tests/keys" - {"anoffsetFrequency",292}, - {""}, {""}, -#line 1333 "../tests/keys" - {"numberOfDiamonds",1328}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 644 "../tests/keys" - {"derivedForecast",639}, - {""}, {""}, -#line 756 "../tests/keys" - {"expoffset",751}, - {""}, -#line 2316 "../tests/keys" - {"yearOfReference",2311}, - {""}, {""}, -#line 1454 "../tests/keys" - {"offsetSection8",1449}, -#line 1170 "../tests/keys" - {"marsLatitude",1165}, - {""}, -#line 1973 "../tests/keys" - {"siteLatitude",1968}, -#line 349 "../tests/keys" - {"boustrophedonicOrdering",344}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 292 "../tests/keys" - {"angleOfRotationOfProjection",287}, -#line 547 "../tests/keys" - {"controlForecastCluster",542}, -#line 1648 "../tests/keys" - {"productDefinitionTemplateNumber",1643}, - {""}, -#line 597 "../tests/keys" - {"dataLength",592}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2062 "../tests/keys" - {"tableNumber",2057}, - {""}, -#line 1972 "../tests/keys" - {"siteId",1967}, - {""}, {""}, {""}, -#line 1395 "../tests/keys" - {"numberOfSection",1390}, - {""}, -#line 108 "../tests/keys" - {"LaD",103}, - {""}, {""}, {""}, -#line 1166 "../tests/keys" - {"marsIdent",1161}, -#line 1444 "../tests/keys" - {"offsetSection0",1439}, -#line 1568 "../tests/keys" - {"paramId",1563}, - {""}, -#line 1350 "../tests/keys" - {"numberOfFrequencies",1345}, -#line 929 "../tests/keys" - {"indexTemplateNumber",924}, - {""}, {""}, {""}, {""}, {""}, -#line 861 "../tests/keys" - {"globalDomain",856}, - {""}, {""}, {""}, -#line 621 "../tests/keys" - {"dayOfAnalysis",616}, - {""}, {""}, {""}, -#line 1171 "../tests/keys" - {"marsLevel",1166}, -#line 1228 "../tests/keys" - {"memberNumber",1223}, - {""}, -#line 44 "../tests/keys" - {"Dx",39}, - {""}, -#line 1930 "../tests/keys" - {"sectionPosition",1925}, - {""}, {""}, {""}, -#line 645 "../tests/keys" - {"dewPointTemperature",640}, - {""}, {""}, -#line 2109 "../tests/keys" - {"topLevel",2104}, -#line 1879 "../tests/keys" - {"secondsOfReference",1874}, - {""}, {""}, {""}, -#line 744 "../tests/keys" - {"expandedDescriptors",739}, - {""}, {""}, {""}, {""}, -#line 952 "../tests/keys" - {"internationalDataSubCategory",947}, - {""}, {""}, {""}, {""}, {""}, -#line 915 "../tests/keys" - {"iIncrement",910}, - {""}, -#line 1388 "../tests/keys" - {"numberOfRadials",1383}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1649 "../tests/keys" - {"productDefinitionTemplateNumberInternal",1644}, - {""}, {""}, {""}, -#line 1804 "../tests/keys" - {"scaleFactorOfDistanceFromEnsembleMean",1799}, - {""}, {""}, {""}, {""}, -#line 907 "../tests/keys" - {"hourOfReference",902}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1341 "../tests/keys" - {"numberOfDistinctSection9s",1336}, {""}, {""}, {""}, #line 1043 "../tests/keys" {"latitudesList",1038}, + {""}, {""}, +#line 1082 "../tests/keys" + {"listOfScaledFrequencies",1077}, +#line 1812 "../tests/keys" + {"scaleFactorOfFirstSize",1807}, + {""}, {""}, +#line 2268 "../tests/keys" + {"widthOfFirstOrderValues",2263}, + {""}, {""}, {""}, {""}, {""}, +#line 1637 "../tests/keys" + {"pressureLevel",1632}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1861 "../tests/keys" - {"secondDimensionPhysicalSignificance",1856}, - {""}, {""}, {""}, {""}, -#line 293 "../tests/keys" - {"angleSubdivisions",288}, - {""}, {""}, -#line 1481 "../tests/keys" - {"orientationOfTheGrid",1476}, - {""}, {""}, -#line 1634 "../tests/keys" - {"pressureLevel",1629}, - {""}, {""}, -#line 713 "../tests/keys" - {"endOfFileAddress",708}, - {""}, {""}, #line 919 "../tests/keys" {"identificationNumber",914}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2319 "../tests/keys" + {"yearOfReference",2314}, +#line 2305 "../tests/keys" + {"xLast",2300}, + {""}, {""}, +#line 2165 "../tests/keys" + {"typeOfStatisticalPostProcessingOfEnsembleMembers",2160}, +#line 644 "../tests/keys" + {"derivedForecast",639}, + {""}, +#line 349 "../tests/keys" + {"boustrophedonicOrdering",344}, +#line 756 "../tests/keys" + {"expoffset",751}, + {""}, {""}, {""}, {""}, +#line 661 "../tests/keys" + {"distinctLatitudes",656}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 2209 "../tests/keys" + {"upperThreshold",2204}, +#line 1441 "../tests/keys" + {"offsetDescriptors",1436}, + {""}, +#line 547 "../tests/keys" + {"controlForecastCluster",542}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1149 "../tests/keys" + {"lowerThreshold",1144}, + {""}, +#line 728 "../tests/keys" + {"ensembleForecastNumbers",723}, + {""}, {""}, {""}, +#line 1173 "../tests/keys" + {"marsLevelist",1168}, +#line 2092 "../tests/keys" + {"tiggeSection",2087}, + {""}, +#line 1862 "../tests/keys" + {"secondDimension",1857}, +#line 2177 "../tests/keys" + {"typicalSecond",2172}, + {""}, {""}, {""}, {""}, {""}, +#line 1106 "../tests/keys" + {"localSection",1101}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1337 "../tests/keys" + {"numberOfDirections",1332}, + {""}, {""}, {""}, {""}, {""}, +#line 1933 "../tests/keys" + {"sectionPosition",1928}, + {""}, {""}, {""}, +#line 645 "../tests/keys" + {"dewPointTemperature",640}, + {""}, {""}, {""}, {""}, {""}, +#line 1405 "../tests/keys" + {"numberOfTimeSteps",1400}, +#line 1499 "../tests/keys" + {"packingType",1494}, +#line 2210 "../tests/keys" + {"upperThresholdValue",2205}, + {""}, {""}, {""}, {""}, +#line 1373 "../tests/keys" + {"numberOfOperationalForecastTube",1368}, + {""}, +#line 1352 "../tests/keys" + {"numberOfForecastsInTube",1347}, + {""}, {""}, +#line 1150 "../tests/keys" + {"lowerThresholdValue",1145}, +#line 744 "../tests/keys" + {"expandedDescriptors",739}, +#line 883 "../tests/keys" + {"groupSplittingMethodUsed",878}, + {""}, +#line 1391 "../tests/keys" + {"numberOfRadials",1386}, + {""}, {""}, +#line 1495 "../tests/keys" + {"overlayTemplateNumber",1490}, +#line 362 "../tests/keys" + {"ccccIdentifiers",357}, + {""}, #line 608 "../tests/keys" {"dataValues",603}, {""}, {""}, {""}, {""}, {""}, -#line 381 "../tests/keys" - {"centuryOfReference",376}, -#line 2008 "../tests/keys" - {"standardParallel",2003}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 661 "../tests/keys" - {"distinctLatitudes",656}, +#line 1807 "../tests/keys" + {"scaleFactorOfDistanceFromEnsembleMean",1802}, + {""}, {""}, {""}, +#line 2166 "../tests/keys" + {"typeOfStatisticalProcessing",2161}, +#line 907 "../tests/keys" + {"hourOfReference",902}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1255 "../tests/keys" + {"modelIdentifier",1250}, + {""}, {""}, {""}, +#line 1865 "../tests/keys" + {"secondLatitude",1860}, +#line 280 "../tests/keys" + {"additionalFlagPresent",275}, +#line 1402 "../tests/keys" + {"numberOfSubsets",1397}, {""}, {""}, {""}, {""}, {""}, -#line 2237 "../tests/keys" - {"versionNumOfFilesFreeSpaceStorage",2232}, +#line 1863 "../tests/keys" + {"secondDimensionCoordinateValueDefinition",1858}, + {""}, {""}, +#line 1123 "../tests/keys" + {"longitudeOfFirstGridPoint",1118}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 297 "../tests/keys" + {"anoffsetFrequency",292}, + {""}, +#line 843 "../tests/keys" + {"frequency",838}, +#line 1336 "../tests/keys" + {"numberOfDiamonds",1331}, +#line 378 "../tests/keys" + {"centreForLocal",373}, + {""}, {""}, {""}, +#line 1802 "../tests/keys" + {"satelliteIdentifier",1797}, + {""}, +#line 1124 "../tests/keys" + {"longitudeOfFirstGridPointInDegrees",1119}, +#line 1711 "../tests/keys" + {"referenceOfLengths",1706}, + {""}, {""}, {""}, {""}, +#line 2037 "../tests/keys" + {"stretchingFactor",2032}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 2011 "../tests/keys" + {"standardParallel",2006}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 72 "../tests/keys" + {"FirstLatitude",67}, + {""}, {""}, {""}, {""}, {""}, +#line 1851 "../tests/keys" + {"scalingFactorForFrequencies",1846}, #line 924 "../tests/keys" {"ifsParam",919}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1264 "../tests/keys" - {"monthOfReference",1259}, {""}, -#line 1605 "../tests/keys" - {"postAuxiliary",1600}, - {""}, {""}, {""}, -#line 1172 "../tests/keys" - {"marsLevelist",1167}, - {""}, {""}, {""}, -#line 2126 "../tests/keys" - {"treatmentOfMissingData",2121}, - {""}, {""}, {""}, +#line 2032 "../tests/keys" + {"stepTypeInternal",2027}, + {""}, +#line 1063 "../tests/keys" + {"levelIndicator",1058}, + {""}, {""}, {""}, {""}, {""}, +#line 347 "../tests/keys" + {"bottomLevel",342}, + {""}, +#line 1692 "../tests/keys" + {"rdbtimeSecond",1687}, + {""}, {""}, +#line 1265 "../tests/keys" + {"monthOfReference",1260}, + {""}, {""}, {""}, {""}, +#line 1398 "../tests/keys" + {"numberOfSection",1393}, + {""}, {""}, +#line 1045 "../tests/keys" + {"lcwfvSuiteName",1040}, +#line 2129 "../tests/keys" + {"treatmentOfMissingData",2124}, + {""}, {""}, {""}, {""}, {""}, +#line 1353 "../tests/keys" + {"numberOfFrequencies",1348}, + {""}, {""}, {""}, {""}, {""}, +#line 1820 "../tests/keys" + {"scaleFactorOfRadiusOfSphericalEarth",1815}, + {""}, {""}, #line 795 "../tests/keys" {"extractedDateTimeNumberOfSubsets",790}, {""}, {""}, {""}, -#line 1486 "../tests/keys" - {"originalSubCentreIdentifier",1481}, - {""}, {""}, {""}, -#line 1414 "../tests/keys" - {"observablePropertyTemplate",1409}, - {""}, {""}, {""}, {""}, {""}, -#line 1580 "../tests/keys" - {"partitionItems",1575}, +#line 1489 "../tests/keys" + {"originalSubCentreIdentifier",1484}, #line 937 "../tests/keys" {"inputDelayedDescriptorReplicationFactor",932}, - {""}, {""}, -#line 1640 "../tests/keys" - {"probPoint",1635}, - {""}, {""}, {""}, {""}, {""}, -#line 1340 "../tests/keys" - {"numberOfDistinctSection8s",1335}, - {""}, {""}, -#line 2195 "../tests/keys" - {"unitsOfSecondFixedSurface",2190}, -#line 883 "../tests/keys" - {"groupSplittingMethodUsed",878}, - {""}, {""}, {""}, {""}, -#line 1492 "../tests/keys" - {"overlayTemplateNumber",1487}, {""}, -#line 790 "../tests/keys" - {"extractSubset",785}, -#line 1280 "../tests/keys" - {"neitherPresent",1275}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1826 "../tests/keys" - {"scaledFrequencies",1821}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 301 "../tests/keys" - {"atmosphericChemicalOrPhysicalConstituentType",296}, +#line 1643 "../tests/keys" + {"probPoint",1638}, {""}, {""}, {""}, {""}, {""}, -#line 11 "../tests/keys" - {"AA",6}, +#line 1174 "../tests/keys" + {"marsLongitude",1169}, + {""}, +#line 1977 "../tests/keys" + {"siteLongitude",1972}, + {""}, {""}, +#line 2038 "../tests/keys" + {"stretchingFactorScaled",2033}, +#line 1296 "../tests/keys" + {"northernLatitudeOfDomain",1291}, + {""}, {""}, {""}, {""}, {""}, +#line 1282 "../tests/keys" + {"neitherPresent",1277}, +#line 1344 "../tests/keys" + {"numberOfDistinctSection9s",1339}, {""}, -#line 1262 "../tests/keys" - {"monthOfForecast",1257}, - {""}, {""}, {""}, -#line 1305 "../tests/keys" - {"numberOfAnalysis",1300}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 378 "../tests/keys" - {"centreForLocal",373}, -#line 2009 "../tests/keys" - {"standardParallelInDegrees",2004}, -#line 986 "../tests/keys" - {"iterationNumber",981}, -#line 731 "../tests/keys" - {"ensembleStandardDeviation",726}, #line 396 "../tests/keys" {"charValues",391}, -#line 188 "../tests/keys" - {"Nx",183}, - {""}, {""}, -#line 651 "../tests/keys" - {"dimensionNumber",646}, - {""}, {""}, {""}, -#line 2302 "../tests/keys" - {"xLast",2297}, - {""}, {""}, {""}, {""}, -#line 1576 "../tests/keys" - {"parameterNumber",1571}, -#line 1581 "../tests/keys" - {"partitionNumber",1576}, - {""}, {""}, {""}, {""}, {""}, -#line 110 "../tests/keys" - {"LaR",105}, - {""}, {""}, {""}, -#line 1390 "../tests/keys" - {"numberOfRemaininChars",1385}, - {""}, {""}, -#line 125 "../tests/keys" - {"LoR",120}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 790 "../tests/keys" + {"extractSubset",785}, +#line 2155 "../tests/keys" + {"typeOfLevel",2150}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 944 "../tests/keys" + {"instrumentIdentifier",939}, #line 951 "../tests/keys" {"internalVersion",946}, + {""}, {""}, {""}, {""}, {""}, +#line 1263 "../tests/keys" + {"monthOfForecast",1258}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 210 "../tests/keys" + {"SecondLatitude",205}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 599 "../tests/keys" - {"dataRepresentation",594}, +#line 2012 "../tests/keys" + {"standardParallelInDegrees",2007}, + {""}, {""}, {""}, {""}, +#line 1882 "../tests/keys" + {"secondsOfReference",1877}, +#line 1995 "../tests/keys" + {"southernLatitudeOfDomain",1990}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 519 "../tests/keys" + {"clutterFilterIndicator",514}, +#line 255 "../tests/keys" + {"Xo",250}, + {""}, +#line 715 "../tests/keys" + {"endOfInterval",710}, +#line 1650 "../tests/keys" + {"productDefinition",1645}, + {""}, +#line 526 "../tests/keys" + {"codedValues",521}, + {""}, +#line 1096 "../tests/keys" + {"localLatitude",1091}, + {""}, +#line 647 "../tests/keys" + {"diagnosticNumber",642}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 256 "../tests/keys" + {"Xp",251}, + {""}, {""}, #line 209 "../tests/keys" {"SPD",204}, #line 936 "../tests/keys" {"inputDataPresentIndicator",931}, - {""}, {""}, {""}, -#line 347 "../tests/keys" - {"bottomLevel",342}, - {""}, -#line 1045 "../tests/keys" - {"lcwfvSuiteName",1040}, -#line 654 "../tests/keys" - {"directionNumber",649}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 362 "../tests/keys" - {"ccccIdentifiers",357}, - {""}, {""}, {""}, -#line 1819 "../tests/keys" - {"scaleFactorOfSecondSize",1814}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1817 "../tests/keys" - {"scaleFactorOfRadiusOfSphericalEarth",1812}, -#line 526 "../tests/keys" - {"codedValues",521}, - {""}, -#line 1392 "../tests/keys" - {"numberOfReservedBytes",1387}, -#line 1254 "../tests/keys" - {"modelIdentifier",1249}, {""}, {""}, {""}, {""}, -#line 280 "../tests/keys" - {"additionalFlagPresent",275}, - {""}, -#line 833 "../tests/keys" - {"forecastPeriod",828}, - {""}, {""}, {""}, {""}, -#line 2125 "../tests/keys" - {"totalNumberOfdimensions",2120}, -#line 1294 "../tests/keys" - {"northernLatitudeOfDomain",1289}, -#line 807 "../tests/keys" - {"falseNorthing",802}, -#line 1122 "../tests/keys" - {"longitudeOfFirstGridPoint",1117}, -#line 1808 "../tests/keys" - {"scaleFactorOfFirstFixedSurface",1803}, - {""}, {""}, -#line 633 "../tests/keys" - {"defaultParameter",628}, - {""}, {""}, -#line 1878 "../tests/keys" - {"secondsOfAnalysis",1873}, - {""}, {""}, -#line 625 "../tests/keys" - {"dayOfReference",620}, - {""}, -#line 1849 "../tests/keys" - {"scanPosition",1844}, - {""}, {""}, -#line 2152 "../tests/keys" - {"typeOfLevel",2147}, -#line 1799 "../tests/keys" - {"satelliteIdentifier",1794}, -#line 965 "../tests/keys" - {"isEps",960}, -#line 1123 "../tests/keys" - {"longitudeOfFirstGridPointInDegrees",1118}, - {""}, {""}, -#line 1818 "../tests/keys" - {"scaleFactorOfSecondFixedSurface",1813}, - {""}, {""}, -#line 2034 "../tests/keys" - {"stretchingFactor",2029}, -#line 2063 "../tests/keys" - {"tableReference",2058}, - {""}, {""}, -#line 1133 "../tests/keys" - {"longitudeOfStretchingPole",1128}, -#line 2183 "../tests/keys" - {"unitOfOffsetFromReferenceTime",2178}, - {""}, {""}, -#line 1482 "../tests/keys" - {"orientationOfTheGridInDegrees",1477}, -#line 1862 "../tests/keys" - {"secondLatitude",1857}, - {""}, {""}, {""}, -#line 299 "../tests/keys" - {"applicationIdentifier",294}, -#line 1664 "../tests/keys" - {"qnhPresent",1659}, - {""}, {""}, {""}, {""}, -#line 1134 "../tests/keys" - {"longitudeOfStretchingPoleInDegrees",1129}, +#line 1099 "../tests/keys" + {"localLongitude",1094}, {""}, {""}, {""}, {""}, {""}, -#line 2029 "../tests/keys" - {"stepTypeInternal",2024}, - {""}, -#line 1062 "../tests/keys" - {"levelIndicator",1057}, - {""}, -#line 1800 "../tests/keys" - {"satelliteNumber",1795}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1713 "../tests/keys" - {"referenceValue",1708}, -#line 518 "../tests/keys" - {"clusteringMethod",513}, -#line 1428 "../tests/keys" - {"offsetAfterLocalSection",1423}, -#line 1805 "../tests/keys" - {"scaleFactorOfDistributionFunctionParameter",1800}, - {""}, -#line 2047 "../tests/keys" - {"subSetK",2042}, - {""}, -#line 1992 "../tests/keys" - {"southernLatitudeOfDomain",1987}, - {""}, -#line 533 "../tests/keys" - {"computeLaplacianOperator",528}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 72 "../tests/keys" - {"FirstLatitude",67}, -#line 2124 "../tests/keys" - {"totalNumberOfTubes",2119}, - {""}, {""}, -#line 1295 "../tests/keys" - {"nosigPresent",1290}, -#line 602 "../tests/keys" - {"dataRepresentationType",597}, -#line 739 "../tests/keys" - {"expandedAbbreviations",734}, - {""}, {""}, {""}, -#line 380 "../tests/keys" - {"centuryOfAnalysis",375}, - {""}, {""}, -#line 1001 "../tests/keys" - {"kurt",996}, - {""}, {""}, {""}, {""}, -#line 307 "../tests/keys" - {"averagingPeriod",302}, - {""}, -#line 2035 "../tests/keys" - {"stretchingFactorScaled",2030}, -#line 1979 "../tests/keys" - {"skew",1974}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1968 "../tests/keys" - {"simpleThinningMissingRadius",1963}, - {""}, {""}, {""}, -#line 2066 "../tests/keys" - {"tablesVersion",2061}, - {""}, -#line 1980 "../tests/keys" - {"skewness",1975}, - {""}, {""}, -#line 600 "../tests/keys" - {"dataRepresentationTemplate",595}, - {""}, {""}, -#line 911 "../tests/keys" - {"iDirectionIncrement",906}, -#line 2036 "../tests/keys" - {"stringValues",2031}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2196 "../tests/keys" - {"unknown",2191}, -#line 1658 "../tests/keys" - {"pvlLocation",1653}, - {""}, -#line 828 "../tests/keys" - {"floatVal",823}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1173 "../tests/keys" - {"marsLongitude",1168}, - {""}, -#line 1974 "../tests/keys" - {"siteLongitude",1969}, -#line 1002 "../tests/keys" - {"kurtosis",997}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1189 "../tests/keys" - {"masterTableNumber",1184}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 635 "../tests/keys" - {"defaultShortName",630}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1711 "../tests/keys" - {"referenceSampleInterval",1706}, - {""}, {""}, {""}, -#line 736 "../tests/keys" - {"epsStatisticsPoint",731}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 298 "../tests/keys" - {"anoffsetLast",293}, -#line 519 "../tests/keys" - {"clutterFilterIndicator",514}, - {""}, {""}, -#line 715 "../tests/keys" - {"endOfInterval",710}, - {""}, -#line 944 "../tests/keys" - {"instrumentIdentifier",939}, - {""}, {""}, {""}, -#line 1086 "../tests/keys" - {"localDefNumberOne",1081}, -#line 2117 "../tests/keys" - {"totalNumberOfDirections",2112}, - {""}, -#line 255 "../tests/keys" - {"Xo",250}, -#line 1265 "../tests/keys" - {"monthlyVerificationDate",1260}, - {""}, {""}, -#line 1595 "../tests/keys" - {"perturbationNumber",1590}, -#line 634 "../tests/keys" - {"defaultSequence",629}, - {""}, -#line 210 "../tests/keys" - {"SecondLatitude",205}, - {""}, -#line 1161 "../tests/keys" - {"marsEndStep",1156}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 717 "../tests/keys" - {"endOfProduct",712}, - {""}, {""}, -#line 1089 "../tests/keys" - {"localDefinitionNumber",1084}, -#line 256 "../tests/keys" - {"Xp",251}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 647 "../tests/keys" - {"diagnosticNumber",642}, - {""}, {""}, -#line 1415 "../tests/keys" - {"observablePropertyTemplateNumber",1410}, #line 675 "../tests/keys" {"earthIsOblate",670}, {""}, {""}, {""}, -#line 392 "../tests/keys" - {"changingPrecision",387}, -#line 1095 "../tests/keys" - {"localLatitude",1090}, -#line 2232 "../tests/keys" - {"verificationDate",2227}, -#line 2212 "../tests/keys" - {"userTimeEnd",2207}, +#line 1822 "../tests/keys" + {"scaleFactorOfSecondSize",1817}, +#line 1134 "../tests/keys" + {"longitudeOfStretchingPole",1129}, {""}, -#line 927 "../tests/keys" - {"incrementOfLengths",922}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1821 "../tests/keys" - {"scaleFactorOfStandardDeviation",1816}, +#line 1484 "../tests/keys" + {"orientationOfTheGrid",1479}, {""}, {""}, -#line 536 "../tests/keys" - {"conceptsLocalDirAll",531}, +#line 652 "../tests/keys" + {"dimensionType",647}, + {""}, {""}, +#line 2202 "../tests/keys" + {"unpackedSubsetPrecision",2197}, + {""}, {""}, {""}, +#line 1417 "../tests/keys" + {"observablePropertyTemplate",1412}, + {""}, +#line 1395 "../tests/keys" + {"numberOfReservedBytes",1390}, +#line 1135 "../tests/keys" + {"longitudeOfStretchingPoleInDegrees",1130}, #line 37 "../tests/keys" {"DiInDegrees",32}, + {""}, {""}, {""}, +#line 1188 "../tests/keys" + {"mask",1183}, +#line 833 "../tests/keys" + {"forecastPeriod",828}, + {""}, {""}, {""}, {""}, {""}, +#line 381 "../tests/keys" + {"centuryOfReference",376}, + {""}, {""}, {""}, +#line 1811 "../tests/keys" + {"scaleFactorOfFirstFixedSurface",1806}, +#line 1716 "../tests/keys" + {"referenceValue",1711}, +#line 633 "../tests/keys" + {"defaultParameter",628}, {""}, {""}, {""}, {""}, -#line 1660 "../tests/keys" - {"qfePresent",1655}, -#line 573 "../tests/keys" - {"corr4Data",568}, +#line 1190 "../tests/keys" + {"masterTableNumber",1185}, + {""}, {""}, {""}, {""}, +#line 1714 "../tests/keys" + {"referenceSampleInterval",1709}, {""}, {""}, {""}, -#line 1822 "../tests/keys" - {"scaleFactorOfStandardDeviationInTheCluster",1817}, +#line 1651 "../tests/keys" + {"productDefinitionTemplateNumber",1646}, + {""}, +#line 599 "../tests/keys" + {"dataRepresentation",594}, + {""}, +#line 1821 "../tests/keys" + {"scaleFactorOfSecondFixedSurface",1816}, {""}, {""}, -#line 283 "../tests/keys" - {"aerosolbinnumber",278}, - {""}, {""}, {""}, -#line 1098 "../tests/keys" - {"localLongitude",1093}, - {""}, {""}, -#line 997 "../tests/keys" - {"keyData",992}, -#line 2099 "../tests/keys" - {"timeIncrement",2094}, - {""}, {""}, {""}, {""}, {""}, -#line 2143 "../tests/keys" - {"typeOfDistributionFunction",2138}, -#line 1802 "../tests/keys" - {"scaleFactorAtReferencePoint",1797}, -#line 999 "../tests/keys" - {"keySat",994}, - {""}, {""}, -#line 2119 "../tests/keys" - {"totalNumberOfFrequencies",2114}, - {""}, {""}, {""}, -#line 2122 "../tests/keys" - {"totalNumberOfRepetitions",2117}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, +#line 298 "../tests/keys" + {"anoffsetLast",293}, + {""}, {""}, {""}, {""}, +#line 291 "../tests/keys" + {"angleOfRotationInDegrees",286}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 48 "../tests/keys" {"DyInDegrees",43}, - {""}, {""}, {""}, {""}, -#line 2238 "../tests/keys" - {"versionNumOfRootGroupSymbolTableEntry",2233}, -#line 1925 "../tests/keys" - {"section9Pointer",1920}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 817 "../tests/keys" + {"firstLatitude",812}, {""}, -#line 1345 "../tests/keys" - {"numberOfForcasts",1340}, +#line 1496 "../tests/keys" + {"pack",1491}, + {""}, {""}, +#line 861 "../tests/keys" + {"globalDomain",856}, + {""}, {""}, +#line 630 "../tests/keys" + {"defaultFaLevelName",625}, + {""}, {""}, +#line 1268 "../tests/keys" + {"monthlyVerificationTime",1263}, + {""}, +#line 2069 "../tests/keys" + {"tablesVersion",2064}, + {""}, +#line 518 "../tests/keys" + {"clusteringMethod",513}, + {""}, {""}, +#line 1808 "../tests/keys" + {"scaleFactorOfDistributionFunctionParameter",1803}, {""}, {""}, {""}, -#line 2208 "../tests/keys" - {"userDateEnd",2203}, +#line 2039 "../tests/keys" + {"stringValues",2034}, + {""}, +#line 1090 "../tests/keys" + {"localDefinitionNumber",1085}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 893 "../tests/keys" + {"heightLevelName",888}, +#line 828 "../tests/keys" + {"floatVal",823}, + {""}, +#line 952 "../tests/keys" + {"internationalDataSubCategory",947}, + {""}, {""}, +#line 1960 "../tests/keys" + {"setLocalDefinition",1955}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 962 "../tests/keys" + {"isConstant",957}, +#line 536 "../tests/keys" + {"conceptsLocalDirAll",531}, + {""}, +#line 1824 "../tests/keys" + {"scaleFactorOfStandardDeviation",1819}, + {""}, +#line 1652 "../tests/keys" + {"productDefinitionTemplateNumberInternal",1647}, + {""}, {""}, {""}, +#line 1829 "../tests/keys" + {"scaledFrequencies",1824}, +#line 307 "../tests/keys" + {"averagingPeriod",302}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1825 "../tests/keys" + {"scaleFactorOfStandardDeviationInTheCluster",1820}, +#line 2200 "../tests/keys" + {"unpack",2195}, +#line 299 "../tests/keys" + {"applicationIdentifier",294}, + {""}, {""}, {""}, {""}, +#line 1805 "../tests/keys" + {"scaleFactorAtReferencePoint",1800}, + {""}, {""}, +#line 892 "../tests/keys" + {"headersOnly",887}, +#line 1463 "../tests/keys" + {"oneConstant",1458}, + {""}, {""}, +#line 2204 "../tests/keys" + {"unsignedIntegers",2199}, + {""}, {""}, +#line 1864 "../tests/keys" + {"secondDimensionPhysicalSignificance",1859}, + {""}, {""}, {""}, {""}, +#line 293 "../tests/keys" + {"angleSubdivisions",288}, +#line 185 "../tests/keys" + {"Nr",180}, + {""}, {""}, {""}, +#line 183 "../tests/keys" + {"Ni",178}, +#line 1266 "../tests/keys" + {"monthlyVerificationDate",1261}, + {""}, {""}, {""}, {""}, {""}, +#line 533 "../tests/keys" + {"computeLaplacianOperator",528}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1712 "../tests/keys" + {"referenceOfWidths",1707}, + {""}, +#line 2050 "../tests/keys" + {"subSetK",2045}, + {""}, +#line 1393 "../tests/keys" + {"numberOfRemaininChars",1388}, + {""}, {""}, +#line 1478 "../tests/keys" + {"optimisationTime",1473}, +#line 18 "../tests/keys" + {"Adelta",13}, +#line 602 "../tests/keys" + {"dataRepresentationType",597}, + {""}, {""}, {""}, {""}, +#line 736 "../tests/keys" + {"epsStatisticsPoint",731}, + {""}, +#line 1157 "../tests/keys" + {"marsClass",1152}, + {""}, {""}, +#line 956 "../tests/keys" + {"isAuto",951}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 253 "../tests/keys" + {"XR",248}, +#line 2186 "../tests/keys" + {"unitOfOffsetFromReferenceTime",2181}, +#line 2116 "../tests/keys" + {"totalLength",2111}, + {""}, {""}, {""}, {""}, +#line 1971 "../tests/keys" + {"simpleThinningMissingRadius",1966}, +#line 911 "../tests/keys" + {"iDirectionIncrement",906}, + {""}, +#line 600 "../tests/keys" + {"dataRepresentationTemplate",595}, + {""}, {""}, {""}, +#line 1575 "../tests/keys" + {"parameterCode",1570}, + {""}, {""}, {""}, +#line 1661 "../tests/keys" + {"pvlLocation",1656}, + {""}, {""}, +#line 717 "../tests/keys" + {"endOfProduct",712}, + {""}, {""}, {""}, {""}, {""}, +#line 1578 "../tests/keys" + {"parameterName",1573}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 217 "../tests/keys" + {"TAFstr",212}, + {""}, {""}, +#line 648 "../tests/keys" + {"diffInDays",643}, + {""}, {""}, {""}, {""}, +#line 392 "../tests/keys" + {"changingPrecision",387}, + {""}, +#line 2054 "../tests/keys" + {"suiteName",2049}, + {""}, {""}, +#line 2102 "../tests/keys" + {"timeIncrement",2097}, +#line 189 "../tests/keys" + {"Ny",184}, + {""}, +#line 625 "../tests/keys" + {"dayOfReference",620}, +#line 1852 "../tests/keys" + {"scanPosition",1847}, + {""}, {""}, +#line 1256 "../tests/keys" + {"modelName",1251}, + {""}, +#line 216 "../tests/keys" + {"TAF",211}, + {""}, {""}, {""}, {""}, {""}, +#line 876 "../tests/keys" + {"gridName",871}, + {""}, {""}, +#line 2066 "../tests/keys" + {"tableReference",2061}, {""}, #line 829 "../tests/keys" {"floatValues",824}, -#line 387 "../tests/keys" - {"changeDecimalPrecision",382}, -#line 1479 "../tests/keys" - {"orderOfSPD",1474}, + {""}, +#line 301 "../tests/keys" + {"atmosphericChemicalOrPhysicalConstituentType",296}, {""}, {""}, -#line 1971 "../tests/keys" - {"siteElevation",1966}, -#line 1374 "../tests/keys" - {"numberOfPartitions",1369}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1574 "../tests/keys" - {"parameterIndicator",1569}, - {""}, {""}, -#line 1067 "../tests/keys" - {"libraryVersion",1062}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1429 "../tests/keys" - {"offsetAfterPadding",1424}, - {""}, {""}, {""}, -#line 1258 "../tests/keys" - {"molarMass",1253}, -#line 291 "../tests/keys" - {"angleOfRotationInDegrees",286}, +#line 1485 "../tests/keys" + {"orientationOfTheGridInDegrees",1480}, + {""}, +#line 180 "../tests/keys" + {"Nassigned",175}, + {""}, +#line 28 "../tests/keys" + {"CDFstr",23}, +#line 1667 "../tests/keys" + {"qnhPresent",1662}, +#line 1343 "../tests/keys" + {"numberOfDistinctSection8s",1338}, {""}, {""}, {""}, {""}, {""}, -#line 817 "../tests/keys" - {"firstLatitude",812}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1227 "../tests/keys" - {"meaningOfVerticalCoordinate",1222}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 630 "../tests/keys" - {"defaultFaLevelName",625}, - {""}, {""}, {""}, {""}, -#line 382 "../tests/keys" - {"centuryOfReferenceTimeOfData",377}, -#line 385 "../tests/keys" - {"cfVarName",380}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2201 "../tests/keys" - {"unsignedIntegers",2196}, -#line 2185 "../tests/keys" - {"unitOfTimeIncrement",2180}, - {""}, {""}, {""}, -#line 1957 "../tests/keys" - {"setLocalDefinition",1952}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 570 "../tests/keys" - {"corr1Data",565}, -#line 1174 "../tests/keys" - {"marsModel",1169}, - {""}, {""}, {""}, {""}, -#line 2164 "../tests/keys" - {"typeOfTimeIncrement",2159}, -#line 803 "../tests/keys" - {"faLevelName",798}, -#line 342 "../tests/keys" - {"bitmapPresent",337}, +#line 1068 "../tests/keys" + {"libraryVersion",1063}, {""}, -#line 962 "../tests/keys" - {"isConstant",957}, - {""}, {""}, {""}, -#line 343 "../tests/keys" - {"bitmapSectionPresent",338}, - {""}, {""}, -#line 1922 "../tests/keys" - {"section8Pointer",1917}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 769 "../tests/keys" - {"extractAreaWestLongitude",764}, -#line 1285 "../tests/keys" - {"normAtInitialTime",1280}, - {""}, {""}, -#line 2206 "../tests/keys" - {"upperThreshold",2201}, - {""}, {""}, {""}, {""}, -#line 2267 "../tests/keys" - {"widthOfSPD",2262}, - {""}, -#line 1882 "../tests/keys" - {"section0Pointer",1877}, - {""}, -#line 1460 "../tests/keys" - {"oneConstant",1455}, -#line 1148 "../tests/keys" - {"lowerThreshold",1143}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1193 "../tests/keys" - {"matchAerosolPacking",1188}, - {""}, {""}, {""}, -#line 729 "../tests/keys" - {"ensembleForecastNumbersList",724}, - {""}, -#line 2076 "../tests/keys" - {"theMessage",2071}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1473 "../tests/keys" - {"operatingMode",1468}, - {""}, -#line 1484 "../tests/keys" - {"originalParameterNumber",1479}, - {""}, -#line 627 "../tests/keys" - {"decimalPrecision",622}, - {""}, -#line 1496 "../tests/keys" - {"packingType",1491}, -#line 546 "../tests/keys" - {"constituentType",541}, - {""}, -#line 830 "../tests/keys" - {"forecastLeadTime",825}, -#line 1342 "../tests/keys" - {"numberOfDistributionFunctionParameters",1337}, - {""}, {""}, {""}, {""}, -#line 1245 "../tests/keys" - {"missingValue",1240}, +#line 1965 "../tests/keys" + {"shortName",1960}, +#line 1246 "../tests/keys" + {"missingValue",1241}, {""}, #line 950 "../tests/keys" {"integerValues",945}, - {""}, -#line 648 "../tests/keys" - {"diffInDays",643}, -#line 1156 "../tests/keys" - {"marsClass",1151}, -#line 355 "../tests/keys" - {"calendarIdPresent",350}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 403 "../tests/keys" - {"climatologicalRegime",398}, - {""}, -#line 1413 "../tests/keys" - {"numericValues",1408}, -#line 1242 "../tests/keys" - {"minutesAfterDataCutoff",1237}, - {""}, {""}, -#line 97 "../tests/keys" - {"ITN",92}, -#line 953 "../tests/keys" - {"interpretationOfNumberOfPoints",948}, - {""}, {""}, {""}, {""}, {""}, -#line 763 "../tests/keys" - {"extraValues",758}, - {""}, -#line 850 "../tests/keys" - {"g2grid",845}, -#line 530 "../tests/keys" - {"complexPacking",525}, {""}, {""}, {""}, -#line 401 "../tests/keys" - {"climateDateFrom",396}, -#line 1572 "../tests/keys" - {"parameterCode",1567}, - {""}, {""}, {""}, {""}, {""}, -#line 1603 "../tests/keys" - {"plusOneinOrdersOfSPD",1598}, - {""}, -#line 601 "../tests/keys" - {"dataRepresentationTemplateNumber",596}, -#line 2210 "../tests/keys" - {"userDateTimeEnd",2205}, - {""}, {""}, {""}, {""}, -#line 1411 "../tests/keys" - {"numberOfVerticalPoints",1406}, -#line 193 "../tests/keys" - {"P",188}, - {""}, {""}, {""}, {""}, -#line 893 "../tests/keys" - {"heightLevelName",888}, +#line 2198 "../tests/keys" + {"unitsOfSecondFixedSurface",2193}, {""}, {""}, {""}, -#line 678 "../tests/keys" - {"earthMinorAxis",673}, -#line 2290 "../tests/keys" - {"windVariableDirection",2285}, - {""}, {""}, {""}, {""}, -#line 1708 "../tests/keys" - {"referenceOfLengths",1703}, - {""}, {""}, {""}, {""}, {""}, -#line 1106 "../tests/keys" - {"localSectionPresent",1101}, - {""}, {""}, {""}, {""}, -#line 571 "../tests/keys" - {"corr2Data",566}, - {""}, {""}, -#line 1358 "../tests/keys" - {"numberOfIterations",1353}, -#line 1741 "../tests/keys" - {"roundedMarsLatitude",1736}, - {""}, -#line 147 "../tests/keys" - {"MS",142}, - {""}, {""}, {""}, -#line 294 "../tests/keys" - {"angularPrecision",289}, -#line 2097 "../tests/keys" - {"timeDomainTemplate",2092}, -#line 2156 "../tests/keys" - {"typeOfPostProcessing",2151}, - {""}, -#line 1489 "../tests/keys" - {"originatorLocalTemplate",1484}, - {""}, {""}, -#line 1663 "../tests/keys" - {"qnhAPresent",1658}, -#line 2000 "../tests/keys" - {"spatialProcessing",1995}, - {""}, -#line 2088 "../tests/keys" - {"tiggeModel",2083}, -#line 28 "../tests/keys" - {"CDFstr",23}, -#line 2084 "../tests/keys" - {"thresholdIndicator",2079}, - {""}, {""}, {""}, -#line 1357 "../tests/keys" - {"numberOfInts",1352}, - {""}, {""}, {""}, {""}, -#line 2207 "../tests/keys" - {"upperThresholdValue",2202}, - {""}, -#line 1850 "../tests/keys" - {"scanningMode",1845}, - {""}, {""}, {""}, -#line 2004 "../tests/keys" - {"spectralMode",1999}, - {""}, -#line 1101 "../tests/keys" - {"localMinute",1096}, - {""}, -#line 1149 "../tests/keys" - {"lowerThresholdValue",1144}, - {""}, +#line 2146 "../tests/keys" + {"typeOfDistributionFunction",2141}, #line 27 "../tests/keys" {"CDF",22}, + {""}, {""}, {""}, +#line 1416 "../tests/keys" + {"numericValues",1411}, {""}, -#line 884 "../tests/keys" - {"groupWidth",879}, -#line 2080 "../tests/keys" - {"thisMarsType",2075}, +#line 311 "../tests/keys" + {"backgroundProcess",306}, +#line 1577 "../tests/keys" + {"parameterIndicator",1572}, +#line 177 "../tests/keys" + {"NT",172}, + {""}, {""}, +#line 731 "../tests/keys" + {"ensembleStandardDeviation",726}, + {""}, +#line 1361 "../tests/keys" + {"numberOfIterations",1356}, +#line 729 "../tests/keys" + {"ensembleForecastNumbersList",724}, +#line 763 "../tests/keys" + {"extraValues",758}, +#line 1228 "../tests/keys" + {"meaningOfVerticalCoordinate",1223}, + {""}, {""}, {""}, {""}, +#line 592 "../tests/keys" + {"dataAccessors",587}, + {""}, +#line 2097 "../tests/keys" + {"tileIndex",2092}, +#line 1457 "../tests/keys" + {"offsetSection8",1452}, + {""}, {""}, +#line 387 "../tests/keys" + {"changeDecimalPrecision",382}, +#line 1482 "../tests/keys" + {"orderOfSPD",1477}, +#line 1297 "../tests/keys" + {"nosigPresent",1292}, +#line 726 "../tests/keys" + {"energyNorm",721}, +#line 1348 "../tests/keys" + {"numberOfForcasts",1343}, +#line 1377 "../tests/keys" + {"numberOfPartitions",1372}, +#line 1487 "../tests/keys" + {"originalParameterNumber",1482}, + {""}, {""}, +#line 1360 "../tests/keys" + {"numberOfInts",1355}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 686 "../tests/keys" + {"editionNumber",681}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1990 "../tests/keys" - {"southPoleOnProjectionPlane",1985}, +#line 965 "../tests/keys" + {"isEps",960}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1574 "../tests/keys" + {"parameterCategory",1569}, + {""}, {""}, {""}, {""}, {""}, +#line 2088 "../tests/keys" + {"tiggeCentre",2083}, +#line 530 "../tests/keys" + {"complexPacking",525}, +#line 1606 "../tests/keys" + {"plusOneinOrdersOfSPD",1601}, + {""}, {""}, {""}, {""}, {""}, +#line 1599 "../tests/keys" + {"perturbedType",1594}, + {""}, +#line 193 "../tests/keys" + {"P",188}, + {""}, +#line 2320 "../tests/keys" + {"zero",2315}, +#line 881 "../tests/keys" + {"groupLengths",876}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1932 "../tests/keys" + {"sectionNumber",1927}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2131 "../tests/keys" + {"trueLengthOfLastGroup",2126}, + {""}, +#line 2071 "../tests/keys" + {"targetCompressionRatio",2066}, + {""}, {""}, {""}, {""}, {""}, +#line 343 "../tests/keys" + {"bitmapSectionPresent",338}, + {""}, {""}, {""}, +#line 45 "../tests/keys" + {"DxInDegrees",40}, + {""}, {""}, +#line 175 "../tests/keys" + {"NR",170}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 2270 "../tests/keys" + {"widthOfSPD",2265}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 634 "../tests/keys" + {"defaultSequence",629}, + {""}, +#line 589 "../tests/keys" + {"createNewData",584}, +#line 403 "../tests/keys" + {"climatologicalRegime",398}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2247 "../tests/keys" + {"verticalCoordinate",2242}, + {""}, +#line 1128 "../tests/keys" + {"longitudeOfNorthWestCornerOfArea",1123}, + {""}, {""}, +#line 816 "../tests/keys" + {"firstDimensionPhysicalSignificance",811}, + {""}, {""}, +#line 355 "../tests/keys" + {"calendarIdPresent",350}, + {""}, +#line 2188 "../tests/keys" + {"unitOfTimeIncrement",2183}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 2040 "../tests/keys" + {"subCentre",2035}, + {""}, +#line 637 "../tests/keys" + {"defaultTypeOfLevel",632}, +#line 2235 "../tests/keys" + {"verificationDate",2230}, + {""}, +#line 1414 "../tests/keys" + {"numberOfVerticalPoints",1409}, +#line 2167 "../tests/keys" + {"typeOfTimeIncrement",2162}, + {""}, {""}, {""}, {""}, {""}, +#line 1663 "../tests/keys" + {"qfePresent",1658}, +#line 2064 "../tests/keys" + {"tableCode",2059}, +#line 401 "../tests/keys" + {"climateDateFrom",396}, + {""}, +#line 2293 "../tests/keys" + {"windVariableDirection",2288}, + {""}, {""}, {""}, +#line 1345 "../tests/keys" + {"numberOfDistributionFunctionParameters",1340}, + {""}, {""}, +#line 1928 "../tests/keys" + {"section9Pointer",1923}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 514 "../tests/keys" - {"clusterMember9",509}, +#line 283 "../tests/keys" + {"aerosolbinnumber",278}, + {""}, {""}, +#line 953 "../tests/keys" + {"interpretationOfNumberOfPoints",948}, + {""}, {""}, {""}, {""}, +#line 383 "../tests/keys" + {"cfName",378}, +#line 2108 "../tests/keys" + {"timeRangeIndicator",2103}, + {""}, {""}, {""}, +#line 515 "../tests/keys" + {"clusterNumber",510}, + {""}, {""}, +#line 955 "../tests/keys" + {"isAccumulation",950}, + {""}, {""}, {""}, {""}, {""}, +#line 1362 "../tests/keys" + {"numberOfLocalDefinitions",1357}, {""}, -#line 1410 "../tests/keys" - {"numberOfVerticalGridDescriptors",1405}, -#line 794 "../tests/keys" - {"extractedAreaNumberOfSubsets",789}, +#line 1885 "../tests/keys" + {"section0Pointer",1880}, + {""}, {""}, {""}, +#line 1119 "../tests/keys" + {"longitudeOfCenterPointInDegrees",1114}, + {""}, +#line 1162 "../tests/keys" + {"marsEndStep",1157}, + {""}, {""}, {""}, {""}, +#line 1870 "../tests/keys" + {"secondOrderFlags",1865}, +#line 582 "../tests/keys" + {"correction4Part",577}, +#line 281 "../tests/keys" + {"addressOfFileFreeSpaceInfo",276}, + {""}, {""}, +#line 394 "../tests/keys" + {"channelNumber",389}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 2087 "../tests/keys" + {"thresholdIndicator",2082}, + {""}, {""}, {""}, +#line 830 "../tests/keys" + {"forecastLeadTime",825}, + {""}, +#line 1223 "../tests/keys" + {"meanSize",1218}, + {""}, {""}, {""}, +#line 2052 "../tests/keys" + {"subcentreOfAnalysis",2047}, + {""}, {""}, {""}, +#line 1252 "../tests/keys" + {"modeNumber",1247}, + {""}, +#line 2215 "../tests/keys" + {"userTimeEnd",2210}, + {""}, +#line 1245 "../tests/keys" + {"missingDataFlag",1240}, + {""}, {""}, +#line 1413 "../tests/keys" + {"numberOfVerticalGridDescriptors",1408}, + {""}, +#line 2159 "../tests/keys" + {"typeOfPostProcessing",2154}, + {""}, {""}, +#line 1202 "../tests/keys" + {"md5Data",1197}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1597 "../tests/keys" + {"periodOfTimeIntervals",1592}, + {""}, +#line 1125 "../tests/keys" + {"longitudeOfIcosahedronPole",1120}, + {""}, {""}, +#line 1374 "../tests/keys" + {"numberOfPackedValues",1369}, + {""}, {""}, +#line 2251 "../tests/keys" + {"verticalVisibility",2246}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1102 "../tests/keys" - {"localMonth",1097}, + {""}, {""}, {""}, {""}, +#line 382 "../tests/keys" + {"centuryOfReferenceTimeOfData",377}, #line 1022 "../tests/keys" {"latitudeOfLastGridPoint",1017}, {""}, {""}, {""}, {""}, -#line 2050 "../tests/keys" - {"subdivisionsOfBasicAngle",2045}, +#line 2249 "../tests/keys" + {"verticalDomainTemplate",2244}, {""}, -#line 402 "../tests/keys" - {"climateDateTo",397}, - {""}, -#line 2248 "../tests/keys" - {"verticalVisibility",2243}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2284 "../tests/keys" - {"windSpeedTrend4",2279}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 1571 "../tests/keys" - {"parameterCategory",1566}, - {""}, {""}, {""}, {""}, {""}, -#line 2085 "../tests/keys" - {"tiggeCentre",2080}, -#line 2203 "../tests/keys" - {"updateSequenceNumber",2198}, -#line 1359 "../tests/keys" - {"numberOfLocalDefinitions",1354}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 173 "../tests/keys" - {"NL",168}, - {""}, -#line 885 "../tests/keys" - {"groupWidths",880}, - {""}, {""}, -#line 1650 "../tests/keys" - {"productIdentifier",1645}, - {""}, {""}, {""}, {""}, {""}, -#line 1164 "../tests/keys" - {"marsForecastMonth",1159}, - {""}, {""}, -#line 1371 "../tests/keys" - {"numberOfPackedValues",1366}, - {""}, -#line 2079 "../tests/keys" - {"thisMarsStream",2074}, -#line 2105 "../tests/keys" - {"timeRangeIndicator",2100}, - {""}, {""}, {""}, {""}, {""}, -#line 1742 "../tests/keys" - {"roundedMarsLevelist",1737}, -#line 2169 "../tests/keys" - {"typicalDateTime",2164}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2068 "../tests/keys" - {"targetCompressionRatio",2063}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 289 "../tests/keys" - {"angleMultiplier",284}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 504 "../tests/keys" - {"clusterIdentifier",499}, -#line 2132 "../tests/keys" - {"tsectionNumber4",2127}, - {""}, -#line 983 "../tests/keys" - {"isectionNumber4",978}, - {""}, {""}, -#line 970 "../tests/keys" - {"isSatelliteType",965}, -#line 302 "../tests/keys" - {"attributeOfTile",297}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 2244 "../tests/keys" - {"verticalCoordinate",2239}, -#line 2118 "../tests/keys" - {"totalNumberOfForecastProbabilities",2113}, - {""}, {""}, -#line 1163 "../tests/keys" - {"marsExpver",1158}, - {""}, -#line 2199 "../tests/keys" - {"unpackedSubsetPrecision",2194}, - {""}, {""}, -#line 1375 "../tests/keys" - {"numberOfPoints",1370}, - {""}, {""}, {""}, -#line 1961 "../tests/keys" - {"shapeOfVerificationArea",1956}, - {""}, {""}, -#line 1103 "../tests/keys" - {"localNumberOfObservations",1098}, - {""}, {""}, {""}, -#line 253 "../tests/keys" - {"XR",248}, -#line 2037 "../tests/keys" - {"subCentre",2032}, - {""}, {""}, -#line 637 "../tests/keys" - {"defaultTypeOfLevel",632}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2061 "../tests/keys" - {"tableCode",2056}, - {""}, -#line 281 "../tests/keys" - {"addressOfFileFreeSpaceInfo",276}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 641 "../tests/keys" - {"deleteExtraLocalSection",636}, - {""}, {""}, {""}, {""}, -#line 1284 "../tests/keys" - {"normAtFinalTime",1279}, - {""}, {""}, {""}, {""}, -#line 45 "../tests/keys" - {"DxInDegrees",40}, -#line 844 "../tests/keys" - {"frequencyNumber",839}, - {""}, {""}, {""}, -#line 1637 "../tests/keys" - {"primaryMissingValue",1632}, - {""}, {""}, {""}, -#line 1257 "../tests/keys" - {"modelVersionTime",1252}, - {""}, {""}, {""}, -#line 513 "../tests/keys" - {"clusterMember8",508}, - {""}, {""}, {""}, {""}, {""}, -#line 668 "../tests/keys" - {"driverInformationBlockAddress",663}, - {""}, {""}, {""}, {""}, {""}, -#line 877 "../tests/keys" - {"gridPointPosition",872}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1369 "../tests/keys" - {"numberOfOctetsExtraDescriptors",1364}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 2094 "../tests/keys" - {"tileIndex",2089}, - {""}, {""}, {""}, {""}, -#line 2012 "../tests/keys" - {"startOfMessage",2007}, - {""}, {""}, {""}, -#line 2246 "../tests/keys" - {"verticalDomainTemplate",2241}, - {""}, {""}, {""}, {""}, -#line 1855 "../tests/keys" - {"scanningMode8",1850}, -#line 1833 "../tests/keys" - {"scaledValueOfFirstSize",1828}, - {""}, -#line 1330 "../tests/keys" - {"numberOfDataPoints",1325}, -#line 1426 "../tests/keys" - {"offsetAfterCentreLocalSection",1421}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 572 "../tests/keys" - {"corr3Data",567}, - {""}, -#line 1124 "../tests/keys" - {"longitudeOfIcosahedronPole",1119}, -#line 1811 "../tests/keys" - {"scaleFactorOfLengthOfSemiMajorAxis",1806}, -#line 1812 "../tests/keys" - {"scaleFactorOfLengthOfSemiMinorAxis",1807}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 612 "../tests/keys" - {"dateOfForecastRun",607}, - {""}, -#line 1700 "../tests/keys" - {"rectimeMinute",1695}, - {""}, -#line 1162 "../tests/keys" - {"marsExperimentOffset",1157}, -#line 963 "../tests/keys" - {"isCorrection",958}, - {""}, {""}, -#line 576 "../tests/keys" - {"correction1Part",571}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 664 "../tests/keys" - {"doExtractDateTime",659}, -#line 862 "../tests/keys" - {"grib1divider",857}, -#line 174 "../tests/keys" - {"NP",169}, - {""}, {""}, {""}, {""}, -#line 1118 "../tests/keys" - {"longitudeOfCenterPointInDegrees",1113}, - {""}, {""}, -#line 1057 "../tests/keys" - {"lengthOfProjectLocalTemplate",1052}, - {""}, {""}, -#line 2129 "../tests/keys" - {"truncateDegrees",2124}, - {""}, {""}, {""}, {""}, -#line 980 "../tests/keys" - {"is_uerra",975}, -#line 2245 "../tests/keys" - {"verticalCoordinateDefinition",2240}, -#line 995 "../tests/keys" - {"julianDay",990}, - {""}, {""}, -#line 2317 "../tests/keys" - {"zero",2312}, - {""}, -#line 1356 "../tests/keys" - {"numberOfIntegers",1351}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1408 "../tests/keys" - {"numberOfValues",1403}, - {""}, -#line 870 "../tests/keys" - {"gridCoordinate",865}, - {""}, {""}, {""}, {""}, -#line 932 "../tests/keys" - {"indicatorOfTypeOfLevel",927}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1372 "../tests/keys" - {"numberOfParallelsBetweenAPoleAndTheEquator",1367}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1594 "../tests/keys" - {"periodOfTimeIntervals",1589}, - {""}, -#line 987 "../tests/keys" - {"iteratorDisableUnrotate",982}, - {""}, -#line 793 "../tests/keys" - {"extractSubsetList",788}, -#line 2002 "../tests/keys" - {"spectralDataRepresentationMode",1997}, - {""}, {""}, {""}, -#line 1421 "../tests/keys" - {"oceanAtmosphereCoupling",1416}, - {""}, -#line 1964 "../tests/keys" - {"short_name",1959}, - {""}, {""}, -#line 846 "../tests/keys" - {"functionCode",841}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 836 "../tests/keys" - {"forecastProbabilityNumber",831}, -#line 1828 "../tests/keys" - {"scaledValueOfDistanceFromEnsembleMean",1823}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 271 "../tests/keys" - {"_T",266}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1256 "../tests/keys" - {"modelVersionDate",1251}, - {""}, {""}, -#line 2128 "../tests/keys" - {"trueLengthOfLastGroup",2123}, -#line 873 "../tests/keys" - {"gridDefinitionSection",868}, - {""}, -#line 2142 "../tests/keys" - {"typeOfCompressionUsed",2137}, - {""}, {""}, {""}, {""}, -#line 2098 "../tests/keys" - {"timeDomainTemplateNumber",2093}, -#line 1461 "../tests/keys" - {"oneMillionConstant",1456}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1967 "../tests/keys" - {"significanceOfReferenceTime",1962}, - {""}, -#line 1655 "../tests/keys" - {"projectionCenterFlag",1650}, -#line 2172 "../tests/keys" - {"typicalMinute",2167}, - {""}, -#line 2140 "../tests/keys" - {"typeOfAuxiliaryInformation",2135}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 972 "../tests/keys" - {"is_aerosol",967}, - {""}, {""}, -#line 1011 "../tests/keys" - {"latLonValues",1006}, -#line 339 "../tests/keys" - {"binaryScaleFactor",334}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 2091 "../tests/keys" - {"tigge_name",2086}, -#line 979 "../tests/keys" - {"is_tigge",974}, -#line 311 "../tests/keys" - {"backgroundProcess",306}, -#line 1276 "../tests/keys" - {"nameOfFirstFixedSurface",1271}, - {""}, {""}, -#line 889 "../tests/keys" - {"gts_header",884}, -#line 521 "../tests/keys" - {"cnmc_isac",516}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1638 "../tests/keys" - {"primaryMissingValueSubstitute",1633}, - {""}, -#line 865 "../tests/keys" - {"grib2divider",860}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 542 "../tests/keys" - {"consensusCount",537}, - {""}, {""}, {""}, {""}, -#line 1710 "../tests/keys" - {"referenceReflectivityForEchoTop",1705}, - {""}, -#line 875 "../tests/keys" - {"gridDescriptionSectionPresent",870}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 2067 "../tests/keys" - {"tablesVersionLatest",2062}, - {""}, -#line 804 "../tests/keys" - {"faModelName",799}, - {""}, {""}, {""}, {""}, -#line 1966 "../tests/keys" - {"significanceOfReferenceDateAndTime",1961}, -#line 1222 "../tests/keys" - {"meanSize",1217}, - {""}, -#line 938 "../tests/keys" - {"inputExtendedDelayedDescriptorReplicationFactor",933}, - {""}, {""}, {""}, {""}, -#line 1054 "../tests/keys" - {"lengthOfIndexTemplate",1049}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2137 "../tests/keys" - {"twoOrdersOfSPD",2132}, -#line 1112 "../tests/keys" - {"local_use",1107}, - {""}, -#line 2146 "../tests/keys" - {"typeOfFirstFixedSurface",2141}, - {""}, {""}, -#line 1198 "../tests/keys" - {"matrixOfValues",1193}, -#line 1652 "../tests/keys" - {"productionStatusOfProcessedData",1647}, - {""}, -#line 1331 "../tests/keys" - {"numberOfDataValues",1326}, - {""}, {""}, {""}, {""}, -#line 2065 "../tests/keys" - {"tablesMasterDir",2060}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 520 "../tests/keys" - {"cnmc_cmcc",515}, - {""}, -#line 1969 "../tests/keys" - {"simpleThinningSkip",1964}, -#line 974 "../tests/keys" - {"is_chemical",969}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 733 "../tests/keys" - {"epsContinous",728}, -#line 1970 "../tests/keys" - {"simpleThinningStart",1965}, - {""}, {""}, {""}, #line 619 "../tests/keys" {"datumSize",614}, -#line 1687 "../tests/keys" - {"rdbtimeMinute",1682}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1939 "../tests/keys" - {"section_09",1934}, +#line 342 "../tests/keys" + {"bitmapPresent",337}, + {""}, {""}, {""}, {""}, {""}, +#line 2248 "../tests/keys" + {"verticalCoordinateDefinition",2243}, +#line 313 "../tests/keys" + {"baseAddress",308}, +#line 2211 "../tests/keys" + {"userDateEnd",2206}, + {""}, {""}, {""}, {""}, {""}, +#line 542 "../tests/keys" + {"consensusCount",537}, +#line 1974 "../tests/keys" + {"siteElevation",1969}, +#line 1372 "../tests/keys" + {"numberOfOctetsExtraDescriptors",1367}, + {""}, {""}, {""}, {""}, +#line 1216 "../tests/keys" + {"md5Section9",1211}, {""}, {""}, {""}, -#line 1030 "../tests/keys" - {"latitudeOfStretchingPole",1025}, - {""}, -#line 740 "../tests/keys" - {"expandedCodes",735}, -#line 2189 "../tests/keys" - {"unitsConversionOffset",2184}, -#line 631 "../tests/keys" - {"defaultFaModelName",626}, +#line 339 "../tests/keys" + {"binaryScaleFactor",334}, +#line 1653 "../tests/keys" + {"productIdentifier",1648}, {""}, {""}, -#line 1091 "../tests/keys" - {"localExtensionPadding",1086}, +#line 1061 "../tests/keys" + {"levTypeName",1056}, {""}, {""}, -#line 1709 "../tests/keys" - {"referenceOfWidths",1704}, +#line 1955 "../tests/keys" + {"sensitiveAreaDomain",1950}, + {""}, {""}, {""}, {""}, {""}, +#line 1836 "../tests/keys" + {"scaledValueOfFirstSize",1831}, {""}, -#line 976 "../tests/keys" - {"is_efas",971}, - {""}, {""}, -#line 1485 "../tests/keys" - {"originalParameterTableNumber",1480}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 179 "../tests/keys" - {"NV",174}, - {""}, -#line 1566 "../tests/keys" - {"paleontologicalOffset",1561}, +#line 1278 "../tests/keys" + {"nameOfFirstFixedSurface",1273}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 802 "../tests/keys" + {"faFieldName",797}, + {""}, {""}, +#line 570 "../tests/keys" + {"corr1Data",565}, + {""}, {""}, +#line 877 "../tests/keys" + {"gridPointPosition",872}, + {""}, +#line 2117 "../tests/keys" + {"totalNumber",2112}, +#line 793 "../tests/keys" + {"extractSubsetList",788}, +#line 846 "../tests/keys" + {"functionCode",841}, + {""}, +#line 1011 "../tests/keys" + {"latLonValues",1006}, + {""}, +#line 1359 "../tests/keys" + {"numberOfIntegers",1354}, + {""}, +#line 632 "../tests/keys" + {"defaultName",627}, + {""}, +#line 627 "../tests/keys" + {"decimalPrecision",622}, + {""}, {""}, {""}, {""}, {""}, +#line 1259 "../tests/keys" + {"molarMass",1254}, +#line 612 "../tests/keys" + {"dateOfForecastRun",607}, + {""}, {""}, {""}, {""}, +#line 573 "../tests/keys" + {"corr4Data",568}, +#line 1049 "../tests/keys" + {"legNumber",1044}, +#line 1673 "../tests/keys" + {"radialAngularSpacing",1668}, +#line 504 "../tests/keys" + {"clusterIdentifier",499}, + {""}, {""}, {""}, {""}, {""}, +#line 2145 "../tests/keys" + {"typeOfCompressionUsed",2140}, +#line 987 "../tests/keys" + {"iteratorDisableUnrotate",982}, +#line 2036 "../tests/keys" + {"streamOfAnalysis",2031}, +#line 733 "../tests/keys" + {"epsContinous",728}, + {""}, {""}, {""}, +#line 935 "../tests/keys" + {"indicatorOfUnitOfTimeRange",930}, + {""}, +#line 2192 "../tests/keys" + {"unitsConversionOffset",2187}, +#line 1055 "../tests/keys" + {"lengthOfIndexTemplate",1050}, + {""}, +#line 109 "../tests/keys" + {"LaDInDegrees",104}, + {""}, {""}, {""}, {""}, {""}, +#line 740 "../tests/keys" + {"expandedCodes",735}, + {""}, {""}, +#line 2149 "../tests/keys" + {"typeOfFirstFixedSurface",2144}, + {""}, {""}, +#line 182 "../tests/keys" + {"Nf",177}, + {""}, +#line 745 "../tests/keys" + {"expandedNames",740}, + {""}, {""}, {""}, {""}, +#line 1195 "../tests/keys" + {"matchLandType",1190}, + {""}, {""}, +#line 2070 "../tests/keys" + {"tablesVersionLatest",2065}, + {""}, {""}, +#line 1411 "../tests/keys" + {"numberOfValues",1406}, +#line 1175 "../tests/keys" + {"marsModel",1170}, + {""}, {""}, {""}, {""}, {""}, +#line 1497 "../tests/keys" + {"packedValues",1492}, + {""}, {""}, {""}, {""}, {""}, +#line 1238 "../tests/keys" + {"minuteOfAnalysis",1233}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2197 "../tests/keys" + {"unitsOfFirstFixedSurface",2192}, +#line 1107 "../tests/keys" + {"localSectionPresent",1102}, + {""}, +#line 2061 "../tests/keys" + {"systemNumber",2056}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1058 "../tests/keys" + {"lengthOfProjectLocalTemplate",1053}, + {""}, {""}, +#line 181 "../tests/keys" + {"Nb",176}, +#line 294 "../tests/keys" + {"angularPrecision",289}, + {""}, +#line 1831 "../tests/keys" + {"scaledValueOfDistanceFromEnsembleMean",1826}, +#line 1199 "../tests/keys" + {"matrixOfValues",1194}, + {""}, {""}, {""}, +#line 361 "../tests/keys" + {"cavokOrVisibility",356}, +#line 2003 "../tests/keys" + {"spatialProcessing",1998}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1814 "../tests/keys" + {"scaleFactorOfLengthOfSemiMajorAxis",1809}, +#line 1815 "../tests/keys" + {"scaleFactorOfLengthOfSemiMinorAxis",1810}, +#line 1233 "../tests/keys" + {"methodNumber",1228}, + {""}, {""}, {""}, {""}, +#line 2079 "../tests/keys" + {"theMessage",2074}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1476 "../tests/keys" + {"operatingMode",1471}, + {""}, {""}, +#line 963 "../tests/keys" + {"isCorrection",958}, +#line 2170 "../tests/keys" + {"typicalCentury",2165}, + {""}, {""}, {""}, {""}, {""}, +#line 516 "../tests/keys" + {"clusterSize",511}, +#line 2031 "../tests/keys" + {"stepTypeForConversion",2026}, +#line 1993 "../tests/keys" + {"southPoleOnProjectionPlane",1988}, + {""}, {""}, {""}, +#line 1021 "../tests/keys" + {"latitudeOfIcosahedronPole",1016}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2213 "../tests/keys" + {"userDateTimeEnd",2208}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1958 "../tests/keys" + {"setCalendarId",1953}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1608 "../tests/keys" + {"postAuxiliary",1603}, + {""}, +#line 2096 "../tests/keys" + {"tileClassification",2091}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 2203 "../tests/keys" + {"unpackedValues",2198}, +#line 870 "../tests/keys" + {"gridCoordinate",865}, + {""}, +#line 929 "../tests/keys" + {"indexTemplateNumber",924}, + {""}, +#line 621 "../tests/keys" + {"dayOfAnalysis",616}, +#line 1642 "../tests/keys" + {"probContinous",1637}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 2109 "../tests/keys" + {"timeRangeIndicatorFromStepRange",2104}, +#line 875 "../tests/keys" + {"gridDescriptionSectionPresent",870}, + {""}, +#line 1303 "../tests/keys" + {"numberInTheAuxiliaryArray",1298}, + {""}, {""}, +#line 514 "../tests/keys" + {"clusterMember9",509}, + {""}, {""}, {""}, +#line 1844 "../tests/keys" + {"scaledValueOfRadiusOfSphericalEarth",1839}, +#line 1925 "../tests/keys" + {"section8Pointer",1920}, + {""}, {""}, +#line 1717 "../tests/keys" + {"referenceValueError",1712}, + {""}, {""}, {""}, {""}, +#line 850 "../tests/keys" + {"g2grid",845}, + {""}, +#line 791 "../tests/keys" + {"extractSubsetIntervalEnd",786}, + {""}, +#line 1217 "../tests/keys" + {"md5Structure",1212}, +#line 1203 "../tests/keys" + {"md5DataSection",1198}, + {""}, {""}, +#line 1744 "../tests/keys" + {"roundedMarsLatitude",1739}, + {""}, +#line 147 "../tests/keys" + {"MS",142}, + {""}, +#line 898 "../tests/keys" + {"horizontalCoordinateSupplement",893}, +#line 792 "../tests/keys" + {"extractSubsetIntervalStart",787}, + {""}, {""}, +#line 2140 "../tests/keys" + {"twoOrdersOfSPD",2135}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1655 "../tests/keys" + {"productionStatusOfProcessedData",1650}, +#line 2091 "../tests/keys" + {"tiggeModel",2086}, + {""}, +#line 2138 "../tests/keys" + {"tubeNumber",2133}, + {""}, +#line 1164 "../tests/keys" + {"marsExpver",1159}, + {""}, {""}, {""}, {""}, +#line 762 "../tests/keys" + {"extraLocalSectionPresent",757}, + {""}, {""}, +#line 1334 "../tests/keys" + {"numberOfDataValues",1329}, +#line 1853 "../tests/keys" + {"scanningMode",1848}, + {""}, +#line 678 "../tests/keys" + {"earthMinorAxis",673}, + {""}, +#line 2007 "../tests/keys" + {"spectralMode",2002}, + {""}, +#line 1102 "../tests/keys" + {"localMinute",1097}, + {""}, {""}, {""}, +#line 571 "../tests/keys" + {"corr2Data",566}, + {""}, {""}, +#line 2083 "../tests/keys" + {"thisMarsType",2078}, + {""}, {""}, {""}, +#line 713 "../tests/keys" + {"endOfFileAddress",708}, +#line 2307 "../tests/keys" + {"yCoordinateOfSubSatellitePoint",2302}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1318 "../tests/keys" + {"numberOfChars",1313}, + {""}, {""}, {""}, +#line 2206 "../tests/keys" + {"updateSequenceNumber",2201}, + {""}, {""}, {""}, {""}, {""}, +#line 188 "../tests/keys" + {"Nx",183}, + {""}, {""}, {""}, +#line 1970 "../tests/keys" + {"significanceOfReferenceTime",1965}, +#line 641 "../tests/keys" + {"deleteExtraLocalSection",636}, +#line 1030 "../tests/keys" + {"latitudeOfStretchingPole",1025}, + {""}, {""}, {""}, +#line 1103 "../tests/keys" + {"localMonth",1098}, +#line 1378 "../tests/keys" + {"numberOfPoints",1373}, + {""}, {""}, {""}, +#line 2240 "../tests/keys" + {"versionNumOfFilesFreeSpaceStorage",2235}, + {""}, +#line 761 "../tests/keys" + {"extraLocalSectionNumber",756}, + {""}, {""}, {""}, {""}, {""}, +#line 1719 "../tests/keys" + {"remarkPresent",1714}, + {""}, +#line 1479 "../tests/keys" + {"optimizeScaleFactor",1474}, + {""}, {""}, {""}, +#line 2065 "../tests/keys" + {"tableNumber",2060}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 2132 "../tests/keys" + {"truncateDegrees",2127}, + {""}, {""}, {""}, {""}, {""}, +#line 93 "../tests/keys" + {"II",88}, +#line 995 "../tests/keys" + {"julianDay",990}, + {""}, {""}, {""}, {""}, +#line 1229 "../tests/keys" + {"memberNumber",1224}, +#line 1257 "../tests/keys" + {"modelVersionDate",1252}, + {""}, {""}, #line 276 "../tests/keys" {"accumulationInterval",271}, {""}, {""}, -#line 921 "../tests/keys" - {"identificationOfProject",916}, +#line 1846 "../tests/keys" + {"scaledValueOfSecondSize",1841}, {""}, +#line 196 "../tests/keys" + {"PLPresent",191}, +#line 1165 "../tests/keys" + {"marsForecastMonth",1160}, + {""}, {""}, {""}, {""}, +#line 2082 "../tests/keys" + {"thisMarsStream",2077}, +#line 2315 "../tests/keys" + {"yearOfCentury",2310}, + {""}, {""}, {""}, +#line 1215 "../tests/keys" + {"md5Section8",1210}, + {""}, +#line 1745 "../tests/keys" + {"roundedMarsLevelist",1740}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1969 "../tests/keys" + {"significanceOfReferenceDateAndTime",1964}, +#line 1640 "../tests/keys" + {"primaryMissingValue",1635}, + {""}, {""}, {""}, {""}, {""}, +#line 2306 "../tests/keys" + {"yCoordinateOfOriginOfSectorImage",2301}, + {""}, {""}, +#line 1835 "../tests/keys" + {"scaledValueOfFirstFixedSurface",1830}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1163 "../tests/keys" + {"marsExperimentOffset",1158}, + {""}, {""}, {""}, +#line 1307 "../tests/keys" + {"numberOfAnalysis",1302}, +#line 289 "../tests/keys" + {"angleMultiplier",284}, + {""}, {""}, {""}, {""}, {""}, +#line 1845 "../tests/keys" + {"scaledValueOfSecondFixedSurface",1840}, + {""}, {""}, +#line 664 "../tests/keys" + {"doExtractDateTime",659}, + {""}, +#line 1342 "../tests/keys" + {"numberOfDistinctSection7s",1337}, + {""}, {""}, {""}, +#line 1332 "../tests/keys" + {"numberOfDataPoints",1327}, + {""}, {""}, {""}, +#line 531 "../tests/keys" + {"componentIndex",526}, + {""}, +#line 897 "../tests/keys" + {"horizontalCoordinateDefinition",892}, +#line 1919 "../tests/keys" + {"section7",1914}, + {""}, {""}, {""}, {""}, +#line 1703 "../tests/keys" + {"rectimeMinute",1698}, + {""}, {""}, {""}, +#line 796 "../tests/keys" + {"extremeClockwiseWindDirection",791}, +#line 1131 "../tests/keys" + {"longitudeOfSouthEastCornerOfArea",1126}, + {""}, +#line 986 "../tests/keys" + {"iterationNumber",981}, + {""}, {""}, {""}, +#line 572 "../tests/keys" + {"corr3Data",567}, + {""}, +#line 651 "../tests/keys" + {"dimensionNumber",646}, +#line 1658 "../tests/keys" + {"projectionCenterFlag",1653}, + {""}, +#line 2115 "../tests/keys" + {"totalInitialConditions",2110}, + {""}, {""}, {""}, {""}, +#line 1832 "../tests/keys" + {"scaledValueOfDistributionFunctionParameter",1827}, +#line 1579 "../tests/keys" + {"parameterNumber",1574}, +#line 1584 "../tests/keys" + {"partitionNumber",1579}, +#line 1349 "../tests/keys" + {"numberOfForecastsInCluster",1344}, +#line 578 "../tests/keys" + {"correction2Part",573}, + {""}, {""}, +#line 1569 "../tests/keys" + {"paleontologicalOffset",1564}, + {""}, {""}, +#line 739 "../tests/keys" + {"expandedAbbreviations",734}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 914 "../tests/keys" + {"iDirectionIncrementInDegrees",909}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 636 "../tests/keys" + {"defaultStepUnits",631}, + {""}, {""}, +#line 1848 "../tests/keys" + {"scaledValueOfStandardDeviation",1843}, +#line 654 "../tests/keys" + {"directionNumber",649}, + {""}, {""}, {""}, {""}, +#line 564 "../tests/keys" + {"coordinate4OfLastGridPoint",559}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1669 "../tests/keys" + {"qualityControl",1664}, +#line 1849 "../tests/keys" + {"scaledValueOfStandardDeviationInTheCluster",1844}, + {""}, {""}, {""}, {""}, +#line 2005 "../tests/keys" + {"spectralDataRepresentationMode",2000}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 984 "../tests/keys" {"isotopeIdentificationNumber",979}, -#line 816 "../tests/keys" - {"firstDimensionPhysicalSignificance",811}, -#line 1949 "../tests/keys" - {"section_8",1944}, - {""}, {""}, {""}, -#line 656 "../tests/keys" - {"directionScalingFactor",651}, -#line 1115 "../tests/keys" - {"longitudeFirstInDegrees",1110}, - {""}, {""}, -#line 2106 "../tests/keys" - {"timeRangeIndicatorFromStepRange",2101}, - {""}, {""}, -#line 1138 "../tests/keys" - {"longitudeOfThePoleOfStretching",1133}, -#line 939 "../tests/keys" - {"inputOriginatingCentre",934}, {""}, -#line 1656 "../tests/keys" - {"projectionCentreFlag",1651}, - {""}, -#line 350 "../tests/keys" - {"bufrDataEncoded",345}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1367 "../tests/keys" - {"numberOfModels",1362}, - {""}, -#line 1153 "../tests/keys" - {"mAngleMultiplier",1148}, - {""}, {""}, {""}, -#line 1843 "../tests/keys" - {"scaledValueOfSecondSize",1838}, - {""}, {""}, {""}, {""}, {""}, -#line 1666 "../tests/keys" - {"qualityControl",1661}, +#line 126 "../tests/keys" + {"LoV",121}, + {""}, {""}, {""}, {""}, +#line 2128 "../tests/keys" + {"totalNumberOfdimensions",2123}, +#line 894 "../tests/keys" + {"heightOrPressureOfLevel",889}, {""}, {""}, -#line 1201 "../tests/keys" - {"md5Data",1196}, - {""}, {""}, -#line 1841 "../tests/keys" - {"scaledValueOfRadiusOfSphericalEarth",1836}, - {""}, {""}, {""}, {""}, {""}, -#line 663 "../tests/keys" - {"doExtractArea",658}, -#line 1316 "../tests/keys" - {"numberOfChars",1311}, -#line 1055 "../tests/keys" - {"lengthOfMessage",1050}, -#line 272 "../tests/keys" - {"_TS",267}, +#line 1287 "../tests/keys" + {"normAtInitialTime",1282}, {""}, -#line 2113 "../tests/keys" - {"totalLength",2108}, +#line 1028 "../tests/keys" + {"latitudeOfSouthernPole",1023}, + {""}, +#line 862 "../tests/keys" + {"grib1divider",857}, {""}, {""}, -#line 2167 "../tests/keys" - {"typicalCentury",2162}, - {""}, {""}, {""}, +#line 769 "../tests/keys" + {"extractAreaWestLongitude",764}, + {""}, {""}, +#line 1120 "../tests/keys" + {"longitudeOfCentralPointInClusterDomain",1115}, +#line 576 "../tests/keys" + {"correction1Part",571}, + {""}, {""}, +#line 1258 "../tests/keys" + {"modelVersionTime",1253}, +#line 2201 "../tests/keys" + {"unpackedError",2196}, +#line 1078 "../tests/keys" + {"listOfDistributionFunctionParameter",1073}, + {""}, +#line 2018 "../tests/keys" + {"startStepInHours",2013}, + {""}, #line 2015 "../tests/keys" - {"startStepInHours",2010}, -#line 1856 "../tests/keys" - {"scanningModeForOneDiamond",1851}, -#line 1832 "../tests/keys" - {"scaledValueOfFirstFixedSurface",1827}, + {"startOfMessage",2010}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 2016 "../tests/keys" + {"startOfRange",2011}, #line 749 "../tests/keys" {"expandedOriginalWidths",744}, {""}, #line 746 "../tests/keys" {"expandedOriginalCodes",741}, - {""}, -#line 109 "../tests/keys" - {"LaDInDegrees",104}, -#line 935 "../tests/keys" - {"indicatorOfUnitOfTimeRange",930}, -#line 1301 "../tests/keys" - {"numberInTheAuxiliaryArray",1296}, -#line 831 "../tests/keys" - {"forecastMonth",826}, - {""}, -#line 2013 "../tests/keys" - {"startOfRange",2008}, - {""}, {""}, -#line 1418 "../tests/keys" - {"observationType",1413}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1842 "../tests/keys" - {"scaledValueOfSecondFixedSurface",1837}, -#line 2145 "../tests/keys" - {"typeOfEnsembleMember",2140}, {""}, {""}, {""}, -#line 791 "../tests/keys" - {"extractSubsetIntervalEnd",786}, - {""}, -#line 1612 "../tests/keys" - {"predefined_grid",1607}, - {""}, {""}, {""}, {""}, {""}, -#line 2093 "../tests/keys" - {"tileClassification",2088}, -#line 789 "../tests/keys" - {"extractDateTimeYearStart",784}, - {""}, -#line 792 "../tests/keys" - {"extractSubsetIntervalStart",787}, +#line 1464 "../tests/keys" + {"oneMillionConstant",1459}, {""}, {""}, {""}, {""}, -#line 1343 "../tests/keys" - {"numberOfEffectiveValues",1338}, -#line 758 "../tests/keys" - {"extendedFlag",753}, - {""}, -#line 1336 "../tests/keys" - {"numberOfDistinctSection4s",1331}, - {""}, -#line 1639 "../tests/keys" - {"probContinous",1634}, - {""}, {""}, -#line 2247 "../tests/keys" - {"verticalDomainTemplateNumber",2242}, -#line 687 "../tests/keys" - {"efas_model",682}, - {""}, {""}, -#line 1730 "../tests/keys" - {"resolutionAndComponentFlags",1725}, - {""}, {""}, -#line 1487 "../tests/keys" - {"originatingCentre",1482}, - {""}, -#line 2023 "../tests/keys" - {"stepForClustering",2018}, - {""}, {""}, {""}, -#line 1829 "../tests/keys" - {"scaledValueOfDistributionFunctionParameter",1824}, - {""}, -#line 622 "../tests/keys" - {"dayOfEndOfOverallTimeInterval",617}, -#line 1490 "../tests/keys" - {"originatorLocalTemplateNumber",1485}, - {""}, {""}, {""}, {""}, {""}, -#line 1609 "../tests/keys" - {"preProcessingParameter",1604}, -#line 1674 "../tests/keys" - {"radiusOfCentralCluster",1669}, - {""}, {""}, -#line 748 "../tests/keys" - {"expandedOriginalScales",743}, - {""}, {""}, {""}, {""}, -#line 2233 "../tests/keys" - {"verificationMonth",2228}, -#line 1077 "../tests/keys" - {"listOfDistributionFunctionParameter",1072}, - {""}, {""}, {""}, {""}, -#line 1714 "../tests/keys" - {"referenceValueError",1709}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1007 "../tests/keys" - {"laplacianScalingFactor",1002}, -#line 1868 "../tests/keys" - {"secondOrderOfDifferentWidth",1863}, - {""}, -#line 1215 "../tests/keys" - {"md5Section9",1210}, -#line 1347 "../tests/keys" - {"numberOfForecastsInEnsemble",1342}, - {""}, -#line 1169 "../tests/keys" - {"marsLamModel",1164}, - {""}, {""}, {""}, {""}, -#line 1165 "../tests/keys" - {"marsGrid",1160}, - {""}, -#line 1938 "../tests/keys" - {"section_08",1933}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 964 "../tests/keys" - {"isEPS",959}, - {""}, -#line 516 "../tests/keys" - {"clusterSize",511}, -#line 2028 "../tests/keys" - {"stepTypeForConversion",2023}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 879 "../tests/keys" - {"groupInternalNodeK",874}, - {""}, -#line 866 "../tests/keys" - {"grib3divider",861}, - {""}, {""}, -#line 2141 "../tests/keys" - {"typeOfCalendar",2136}, - {""}, -#line 1028 "../tests/keys" - {"latitudeOfSouthernPole",1023}, -#line 1810 "../tests/keys" - {"scaleFactorOfFirstWavelength",1805}, - {""}, {""}, {""}, -#line 20 "../tests/keys" - {"Azi",15}, -#line 2304 "../tests/keys" - {"yCoordinateOfSubSatellitePoint",2299}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 531 "../tests/keys" - {"componentIndex",526}, - {""}, -#line 540 "../tests/keys" - {"conceptsMasterMarsDir",535}, - {""}, -#line 880 "../tests/keys" - {"groupLeafNodeK",875}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1346 "../tests/keys" - {"numberOfForecastsInCluster",1341}, - {""}, {""}, {""}, {""}, {""}, -#line 762 "../tests/keys" - {"extraLocalSectionPresent",757}, - {""}, {""}, {""}, -#line 657 "../tests/keys" - {"dirty_statistics",652}, - {""}, -#line 881 "../tests/keys" - {"groupLengths",876}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1190 "../tests/keys" - {"masterTablesVersionNumber",1185}, -#line 2157 "../tests/keys" - {"typeOfPreProcessing",2152}, - {""}, -#line 2274 "../tests/keys" - {"windGust",2269}, -#line 1955 "../tests/keys" - {"setCalendarId",1950}, -#line 2077 "../tests/keys" - {"thisExperimentVersionNumber",2072}, - {""}, {""}, -#line 1737 "../tests/keys" - {"resolutionAndComponentFlags8",1732}, -#line 1191 "../tests/keys" - {"masterTablesVersionNumberLatest",1186}, -#line 735 "../tests/keys" - {"epsStatisticsContinous",730}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 975 "../tests/keys" - {"is_chemical_distfn",970}, - {""}, {""}, -#line 1214 "../tests/keys" - {"md5Section8",1209}, -#line 898 "../tests/keys" - {"horizontalCoordinateSupplement",893}, -#line 273 "../tests/keys" - {"_anoffset",268}, - {""}, {""}, -#line 914 "../tests/keys" - {"iDirectionIncrementInDegrees",909}, - {""}, {""}, -#line 532 "../tests/keys" - {"compressedData",527}, - {""}, {""}, {""}, {""}, {""}, -#line 2026 "../tests/keys" - {"stepRangeInHours",2021}, - {""}, {""}, {""}, -#line 761 "../tests/keys" - {"extraLocalSectionNumber",756}, -#line 2312 "../tests/keys" - {"yearOfCentury",2307}, - {""}, -#line 2235 "../tests/keys" - {"verifyingMonth",2230}, -#line 894 "../tests/keys" - {"heightOrPressureOfLevel",889}, - {""}, {""}, -#line 196 "../tests/keys" - {"PLPresent",191}, - {""}, {""}, {""}, -#line 1151 "../tests/keys" - {"lsdate_bug",1146}, - {""}, {""}, -#line 874 "../tests/keys" - {"gridDefinitionTemplateNumber",869}, - {""}, -#line 2123 "../tests/keys" - {"totalNumberOfTileAttributePairs",2118}, - {""}, {""}, {""}, -#line 1845 "../tests/keys" - {"scaledValueOfStandardDeviation",1840}, - {""}, {""}, {""}, {""}, -#line 555 "../tests/keys" - {"coordinate1Start",550}, - {""}, {""}, {""}, {""}, {""}, -#line 2303 "../tests/keys" - {"yCoordinateOfOriginOfSectorImage",2298}, - {""}, {""}, -#line 1846 "../tests/keys" - {"scaledValueOfStandardDeviationInTheCluster",1841}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 849 "../tests/keys" - {"g1conceptsMasterDir",844}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1476 "../tests/keys" - {"optimizeScaleFactor",1471}, -#line 796 "../tests/keys" - {"extremeClockwiseWindDirection",791}, - {""}, {""}, -#line 636 "../tests/keys" - {"defaultStepUnits",631}, - {""}, {""}, -#line 1606 "../tests/keys" - {"postAuxiliaryArrayPresent",1601}, - {""}, -#line 2010 "../tests/keys" - {"standardParallelInMicrodegrees",2005}, - {""}, -#line 1314 "../tests/keys" - {"numberOfCategories",1309}, - {""}, {""}, {""}, -#line 1702 "../tests/keys" - {"reducedGrid",1697}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1216 "../tests/keys" - {"md5Structure",1211}, -#line 1202 "../tests/keys" - {"md5DataSection",1197}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1324 "../tests/keys" - {"numberOfComponents",1319}, - {""}, -#line 1885 "../tests/keys" - {"section10Pointer",1880}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 666 "../tests/keys" - {"doSimpleThinning",661}, - {""}, {""}, -#line 84 "../tests/keys" - {"GTSstr",79}, -#line 580 "../tests/keys" - {"correction3Part",575}, - {""}, {""}, -#line 1959 "../tests/keys" - {"sfc_levtype",1954}, - {""}, {""}, {""}, {""}, -#line 1348 "../tests/keys" - {"numberOfForecastsInTheCluster",1343}, - {""}, {""}, -#line 888 "../tests/keys" - {"gts_ddhh00",883}, - {""}, {""}, -#line 582 "../tests/keys" - {"correction4Part",577}, - {""}, -#line 747 "../tests/keys" - {"expandedOriginalReferences",742}, - {""}, {""}, {""}, {""}, {""}, -#line 1058 "../tests/keys" - {"lengthOfTimeRange",1053}, - {""}, {""}, {""}, -#line 38 "../tests/keys" - {"DiInMetres",33}, -#line 1673 "../tests/keys" - {"radiusInMetres",1668}, +#line 1218 "../tests/keys" + {"md5TimeDomainSection",1213}, {""}, {""}, #line 99 "../tests/keys" {"JS",94}, {""}, {""}, -#line 1127 "../tests/keys" - {"longitudeOfNorthWestCornerOfArea",1122}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 346 "../tests/keys" - {"boot_edition",341}, +#line 2175 "../tests/keys" + {"typicalMinute",2170}, + {""}, {""}, +#line 1498 "../tests/keys" + {"packingError",1493}, {""}, {""}, {""}, -#line 897 "../tests/keys" - {"horizontalCoordinateDefinition",892}, - {""}, {""}, {""}, {""}, {""}, -#line 1079 "../tests/keys" - {"listOfModelIdentifiers",1074}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1424 "../tests/keys" + {"oceanAtmosphereCoupling",1419}, +#line 1733 "../tests/keys" + {"resolutionAndComponentFlags",1728}, + {""}, {""}, {""}, {""}, +#line 2026 "../tests/keys" + {"stepForClustering",2021}, + {""}, {""}, {""}, +#line 1803 "../tests/keys" + {"satelliteNumber",1798}, +#line 1431 "../tests/keys" + {"offsetAfterLocalSection",1426}, +#line 1713 "../tests/keys" + {"referenceReflectivityForEchoTop",1708}, +#line 1121 "../tests/keys" + {"longitudeOfFirstDiamondCenterLine",1116}, +#line 1000 "../tests/keys" + {"kindOfProduct",995}, + {""}, {""}, +#line 758 "../tests/keys" + {"extendedFlag",753}, + {""}, {""}, +#line 1677 "../tests/keys" + {"radiusOfCentralCluster",1672}, {""}, -#line 1963 "../tests/keys" - {"shortNameECMF",1958}, +#line 1316 "../tests/keys" + {"numberOfCategories",1311}, +#line 1325 "../tests/keys" + {"numberOfColumns",1320}, +#line 1295 "../tests/keys" + {"northernLatitudeOfClusterDomain",1290}, + {""}, {""}, +#line 2029 "../tests/keys" + {"stepRangeInHours",2024}, +#line 1122 "../tests/keys" + {"longitudeOfFirstDiamondCenterLineInDegrees",1117}, + {""}, {""}, +#line 1490 "../tests/keys" + {"originatingCentre",1485}, +#line 2127 "../tests/keys" + {"totalNumberOfTubes",2122}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 938 "../tests/keys" + {"inputExtendedDelayedDescriptorReplicationFactor",933}, + {""}, {""}, {""}, {""}, +#line 748 "../tests/keys" + {"expandedOriginalScales",743}, + {""}, {""}, +#line 1477 "../tests/keys" + {"operationalForecastCluster",1472}, + {""}, {""}, {""}, {""}, +#line 2160 "../tests/keys" + {"typeOfPreProcessing",2155}, + {""}, +#line 921 "../tests/keys" + {"identificationOfProject",916}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1187 "../tests/keys" - {"mask",1182}, -#line 36 "../tests/keys" - {"DiGiven",31}, -#line 2133 "../tests/keys" - {"tsectionNumber5",2128}, -#line 1716 "../tests/keys" - {"remarkPresent",1711}, - {""}, {""}, {""}, {""}, -#line 49 "../tests/keys" - {"DyInMetres",44}, - {""}, {""}, {""}, {""}, -#line 973 "../tests/keys" - {"is_aerosol_optical",968}, +#line 656 "../tests/keys" + {"directionScalingFactor",651}, {""}, {""}, -#line 1867 "../tests/keys" - {"secondOrderFlags",1862}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1903 "../tests/keys" - {"section4",1898}, -#line 1323 "../tests/keys" - {"numberOfColumns",1318}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1824 "../tests/keys" - {"scaleValuesBy",1819}, +#line 2125 "../tests/keys" + {"totalNumberOfRepetitions",2120}, +#line 1641 "../tests/keys" + {"primaryMissingValueSubstitute",1636}, {""}, {""}, {""}, -#line 1494 "../tests/keys" - {"packedValues",1489}, - {""}, {""}, {""}, -#line 1244 "../tests/keys" - {"missingDataFlag",1239}, - {""}, {""}, {""}, {""}, {""}, -#line 1725 "../tests/keys" - {"reservedNeedNotBePresent",1720}, - {""}, {""}, {""}, {""}, -#line 1493 "../tests/keys" - {"pack",1488}, - {""}, {""}, {""}, -#line 1409 "../tests/keys" - {"numberOfVerticalCoordinateValues",1404}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 126 "../tests/keys" - {"LoV",121}, -#line 1119 "../tests/keys" - {"longitudeOfCentralPointInClusterDomain",1114}, +#line 2300 "../tests/keys" + {"xCoordinateOfSubSatellitePoint",2295}, {""}, -#line 198 "../tests/keys" - {"PVPresent",193}, -#line 344 "../tests/keys" - {"bitsPerValue",339}, - {""}, {""}, -#line 1139 "../tests/keys" - {"longitudeOfThePolePoint",1134}, - {""}, -#line 361 "../tests/keys" - {"cavokOrVisibility",356}, - {""}, {""}, {""}, {""}, -#line 1401 "../tests/keys" - {"numberOfTimeRange",1396}, -#line 1613 "../tests/keys" - {"predefined_grid_values",1608}, - {""}, -#line 83 "../tests/keys" - {"GTS",78}, +#line 1659 "../tests/keys" + {"projectionCentreFlag",1654}, #line 2148 "../tests/keys" - {"typeOfGrid",2143}, + {"typeOfEnsembleMember",2143}, {""}, -#line 823 "../tests/keys" - {"flagForAnyFurtherInformation",818}, - {""}, {""}, -#line 1304 "../tests/keys" - {"numberMissingFromAveragesOrAccumulations",1299}, -#line 1111 "../tests/keys" - {"local_padding",1106}, +#line 2144 "../tests/keys" + {"typeOfCalendar",2139}, + {""}, {""}, {""}, +#line 1351 "../tests/keys" + {"numberOfForecastsInTheCluster",1346}, {""}, {""}, {""}, {""}, {""}, +#line 2241 "../tests/keys" + {"versionNumOfRootGroupSymbolTableEntry",2236}, + {""}, +#line 1994 "../tests/keys" + {"southernLatitudeOfClusterDomain",1989}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 2287 "../tests/keys" + {"windSpeedTrend4",2282}, + {""}, +#line 546 "../tests/keys" + {"constituentType",541}, + {""}, {""}, {""}, {""}, +#line 1092 "../tests/keys" + {"localExtensionPadding",1087}, + {""}, +#line 1024 "../tests/keys" + {"latitudeOfNorthWestCornerOfArea",1019}, +#line 998 "../tests/keys" + {"keyMore",993}, + {""}, {""}, +#line 917 "../tests/keys" + {"iScansPositively",912}, + {""}, {""}, {""}, {""}, #line 835 "../tests/keys" {"forecastPeriodTo",830}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1329 "../tests/keys" - {"numberOfDataMatrices",1324}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2197 "../tests/keys" - {"unpack",2192}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 2198 "../tests/keys" - {"unpackedError",2193}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1248 "../tests/keys" - {"missingValuesPresent",1243}, - {""}, {""}, {""}, {""}, {""}, -#line 1391 "../tests/keys" - {"numberOfRepresentativeMember",1386}, + {""}, {""}, {""}, {""}, +#line 1722 "../tests/keys" + {"representationType",1717}, {""}, {""}, {""}, -#line 1229 "../tests/keys" - {"messageLength",1224}, +#line 1690 "../tests/keys" + {"rdbtimeMinute",1685}, +#line 631 "../tests/keys" + {"defaultFaModelName",626}, +#line 2120 "../tests/keys" + {"totalNumberOfDirections",2115}, + {""}, {""}, {""}, {""}, +#line 735 "../tests/keys" + {"epsStatisticsContinous",730}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1615 "../tests/keys" + {"predefined_grid",1610}, +#line 198 "../tests/keys" + {"PVPresent",193}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 173 "../tests/keys" + {"NL",168}, + {""}, {""}, {""}, +#line 344 "../tests/keys" + {"bitsPerValue",339}, {""}, +#line 1396 "../tests/keys" + {"numberOfRows",1391}, + {""}, {""}, {""}, +#line 1612 "../tests/keys" + {"preProcessingParameter",1607}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1170 "../tests/keys" + {"marsLamModel",1165}, + {""}, {""}, +#line 1881 "../tests/keys" + {"secondsOfAnalysis",1876}, + {""}, {""}, {""}, +#line 1206 "../tests/keys" + {"md5Product",1201}, +#line 2299 "../tests/keys" + {"xCoordinateOfOriginOfSectorImage",2294}, + {""}, {""}, {""}, {""}, +#line 803 "../tests/keys" + {"faLevelName",798}, + {""}, {""}, {""}, {""}, {""}, +#line 1023 "../tests/keys" + {"latitudeOfLastGridPointInDegrees",1018}, + {""}, {""}, {""}, +#line 2100 "../tests/keys" + {"timeDomainTemplate",2095}, + {""}, {""}, +#line 1492 "../tests/keys" + {"originatorLocalTemplate",1487}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 1007 "../tests/keys" + {"laplacianScalingFactor",1002}, + {""}, {""}, {""}, +#line 1249 "../tests/keys" + {"missingValuesPresent",1244}, + {""}, +#line 1279 "../tests/keys" + {"nameOfSecondFixedSurface",1274}, +#line 2122 "../tests/keys" + {"totalNumberOfFrequencies",2117}, + {""}, {""}, +#line 865 "../tests/keys" + {"grib2divider",860}, + {""}, {""}, {""}, {""}, +#line 1859 "../tests/keys" + {"scanningModeForOneDiamond",1854}, + {""}, {""}, +#line 884 "../tests/keys" + {"groupWidth",879}, +#line 1194 "../tests/keys" + {"matchAerosolPacking",1189}, + {""}, {""}, {""}, +#line 540 "../tests/keys" + {"conceptsMasterMarsDir",535}, + {""}, +#line 1412 "../tests/keys" + {"numberOfVerticalCoordinateValues",1407}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 2068 "../tests/keys" + {"tablesMasterDir",2063}, + {""}, +#line 1166 "../tests/keys" + {"marsGrid",1161}, + {""}, +#line 1979 "../tests/keys" + {"sizeOfOffsets",1974}, + {""}, {""}, {""}, +#line 385 "../tests/keys" + {"cfVarName",380}, + {""}, +#line 622 "../tests/keys" + {"dayOfEndOfOverallTimeInterval",617}, + {""}, {""}, {""}, {""}, +#line 380 "../tests/keys" + {"centuryOfAnalysis",375}, + {""}, {""}, #line 992 "../tests/keys" {"jIncrement",987}, {""}, {""}, {""}, {""}, -#line 2112 "../tests/keys" - {"totalInitialConditions",2107}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1495 "../tests/keys" - {"packingError",1490}, +#line 402 "../tests/keys" + {"climateDateTo",397}, + {""}, {""}, {""}, +#line 980 "../tests/keys" + {"is_uerra",975}, +#line 1317 "../tests/keys" + {"numberOfCharacters",1312}, + {""}, {""}, {""}, +#line 2080 "../tests/keys" + {"thisExperimentVersionNumber",2075}, +#line 1432 "../tests/keys" + {"offsetAfterPadding",1427}, + {""}, +#line 1326 "../tests/keys" + {"numberOfComponents",1321}, + {""}, +#line 934 "../tests/keys" + {"indicatorOfUnitForTimeRange",929}, + {""}, {""}, {""}, +#line 2163 "../tests/keys" + {"typeOfSecondFixedSurface",2158}, +#line 1243 "../tests/keys" + {"minutesAfterDataCutoff",1238}, {""}, {""}, {""}, {""}, -#line 2017 "../tests/keys" - {"startingAzimuth",2012}, - {""}, {""}, {""}, -#line 776 "../tests/keys" - {"extractDateTimeHourStart",771}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 2121 "../tests/keys" - {"totalNumberOfIterations",2116}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1820 "../tests/keys" - {"scaleFactorOfSecondWavelength",1815}, - {""}, {""}, -#line 1906 "../tests/keys" - {"section4Pointer",1901}, -#line 1293 "../tests/keys" - {"northernLatitudeOfClusterDomain",1288}, - {""}, -#line 1023 "../tests/keys" - {"latitudeOfLastGridPointInDegrees",1018}, - {""}, -#line 946 "../tests/keys" - {"integerPointValues",941}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 832 "../tests/keys" - {"forecastOrSingularVectorNumber",827}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 60 "../tests/keys" - {"Experiment_Identifier",55}, - {""}, {""}, {""}, -#line 1021 "../tests/keys" - {"latitudeOfIcosahedronPole",1016}, - {""}, {""}, {""}, -#line 575 "../tests/keys" - {"correction1",570}, -#line 538 "../tests/keys" - {"conceptsLocalMarsDirAll",533}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1217 "../tests/keys" - {"md5TimeDomainSection",1212}, - {""}, {""}, {""}, -#line 2297 "../tests/keys" - {"xCoordinateOfSubSatellitePoint",2292}, - {""}, {""}, {""}, {""}, {""}, -#line 998 "../tests/keys" - {"keyMore",993}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1993 "../tests/keys" - {"sp1",1988}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1335 "../tests/keys" - {"numberOfDistinctSection3s",1330}, -#line 1425 "../tests/keys" - {"offsetAfterBitmap",1420}, -#line 1991 "../tests/keys" - {"southernLatitudeOfClusterDomain",1986}, -#line 373 "../tests/keys" - {"centralLongitude",368}, - {""}, {""}, -#line 1950 "../tests/keys" - {"selectStepTemplateInstant",1945}, - {""}, -#line 1740 "../tests/keys" - {"rootTablesDir",1735}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 941 "../tests/keys" - {"inputProcessIdentifier",936}, -#line 305 "../tests/keys" - {"averaging1Flag",300}, - {""}, #line 643 "../tests/keys" {"deletePV",638}, +#line 939 "../tests/keys" + {"inputOriginatingCentre",934}, {""}, {""}, -#line 578 "../tests/keys" - {"correction2Part",573}, - {""}, +#line 967 "../tests/keys" + {"isHindcast",962}, + {""}, {""}, {""}, {""}, {""}, +#line 1942 "../tests/keys" + {"section_09",1937}, #line 948 "../tests/keys" {"integerScalingFactorAppliedToDirections",943}, #line 949 "../tests/keys" {"integerScalingFactorAppliedToFrequencies",944}, - {""}, {""}, -#line 1315 "../tests/keys" - {"numberOfCharacters",1310}, -#line 1120 "../tests/keys" - {"longitudeOfFirstDiamondCenterLine",1115}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1181 "../tests/keys" - {"marsStream1",1176}, - {""}, {""}, -#line 1121 "../tests/keys" - {"longitudeOfFirstDiamondCenterLineInDegrees",1116}, - {""}, {""}, -#line 2200 "../tests/keys" - {"unpackedValues",2195}, {""}, -#line 1883 "../tests/keys" - {"section1",1878}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 537 "../tests/keys" - {"conceptsLocalDirECMF",532}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1474 "../tests/keys" - {"operationalForecastCluster",1469}, +#line 350 "../tests/keys" + {"bufrDataEncoded",345}, +#line 964 "../tests/keys" + {"isEPS",959}, {""}, {""}, {""}, {""}, -#line 1891 "../tests/keys" - {"section1Pointer",1886}, +#line 885 "../tests/keys" + {"groupWidths",880}, {""}, -#line 683 "../tests/keys" - {"easternLongitudeOfDomain",678}, - {""}, -#line 2060 "../tests/keys" - {"table2Version",2055}, -#line 144 "../tests/keys" - {"M",139}, +#line 127 "../tests/keys" + {"LoVInDegrees",122}, {""}, {""}, {""}, -#line 1695 "../tests/keys" - {"recentWeather",1690}, - {""}, {""}, {""}, -#line 670 "../tests/keys" - {"dummy1",665}, - {""}, {""}, {""}, -#line 1266 "../tests/keys" - {"monthlyVerificationMonth",1261}, - {""}, {""}, -#line 2296 "../tests/keys" - {"xCoordinateOfOriginOfSectorImage",2291}, - {""}, {""}, -#line 1338 "../tests/keys" - {"numberOfDistinctSection6s",1333}, +#line 593 "../tests/keys" + {"dataCategory",588}, {""}, {""}, {""}, {""}, -#line 2264 "../tests/keys" - {"westernLongitudeOfDomain",2259}, - {""}, {""}, {""}, {""}, {""}, -#line 1186 "../tests/keys" - {"mars_labeling",1181}, - {""}, -#line 318 "../tests/keys" - {"basicAngleOfTheInitialProductionDomain",313}, -#line 1339 "../tests/keys" - {"numberOfDistinctSection7s",1334}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1976 "../tests/keys" - {"sizeOfOffsets",1971}, - {""}, {""}, -#line 266 "../tests/keys" - {"Yo",261}, - {""}, {""}, -#line 845 "../tests/keys" - {"frequencyScalingFactor",840}, -#line 1024 "../tests/keys" - {"latitudeOfNorthWestCornerOfArea",1019}, - {""}, {""}, -#line 2092 "../tests/keys" - {"tigge_short_name",2087}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 248 "../tests/keys" - {"WRAPstr",243}, -#line 2116 "../tests/keys" - {"totalNumberOfDataValuesMissingInStatisticalProcess",2111}, - {""}, -#line 942 "../tests/keys" - {"inputShortDelayedDescriptorReplicationFactor",937}, -#line 246 "../tests/keys" - {"WMO",241}, - {""}, -#line 267 "../tests/keys" - {"Yp",262}, -#line 1068 "../tests/keys" - {"listMembersMissing",1063}, - {""}, -#line 2266 "../tests/keys" - {"widthOfLengths",2261}, -#line 1184 "../tests/keys" - {"marsType1",1179}, - {""}, {""}, {""}, {""}, {""}, -#line 93 "../tests/keys" - {"II",88}, +#line 1418 "../tests/keys" + {"observablePropertyTemplateNumber",1413}, +#line 807 "../tests/keys" + {"falseNorthing",802}, +#line 1967 "../tests/keys" + {"short_name",1962}, + {""}, {""}, {""}, +#line 2277 "../tests/keys" + {"windGust",2272}, + {""}, {""}, {""}, +#line 1059 "../tests/keys" + {"lengthOfTimeRange",1054}, +#line 2172 "../tests/keys" + {"typicalDateTime",2167}, +#line 2158 "../tests/keys" + {"typeOfPacking",2153}, +#line 562 "../tests/keys" + {"coordinate4Flag",557}, +#line 747 "../tests/keys" + {"expandedOriginalReferences",742}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1361 "../tests/keys" - {"numberOfMembersInCluster",1356}, - {""}, {""}, {""}, -#line 1722 "../tests/keys" - {"reserved1",1717}, - {""}, {""}, -#line 665 "../tests/keys" - {"doExtractSubsets",660}, - {""}, {""}, {""}, {""}, -#line 887 "../tests/keys" - {"gts_TTAAii",882}, - {""}, {""}, -#line 306 "../tests/keys" - {"averaging2Flag",301}, -#line 517 "../tests/keys" - {"clusteringDomain",512}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1393 "../tests/keys" - {"numberOfRows",1388}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 374 "../tests/keys" - {"centralLongitudeInDegrees",369}, - {""}, {""}, {""}, {""}, -#line 1835 "../tests/keys" - {"scaledValueOfLengthOfSemiMajorAxis",1830}, -#line 1836 "../tests/keys" - {"scaledValueOfLengthOfSemiMinorAxis",1831}, -#line 2001 "../tests/keys" - {"spatialSmoothingOfProduct",1996}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1884 "../tests/keys" - {"section10Length",1879}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 2188 "../tests/keys" - {"unitsBias",2183}, +#line 271 "../tests/keys" + {"_T",266}, {""}, -#line 1894 "../tests/keys" - {"section2Pointer",1889}, -#line 662 "../tests/keys" - {"distinctLongitudes",657}, - {""}, {""}, -#line 694 "../tests/keys" - {"endDayTrend1",689}, -#line 1240 "../tests/keys" - {"minuteOfModelVersion",1235}, - {""}, -#line 1866 "../tests/keys" - {"secondOfModelVersion",1861}, - {""}, {""}, {""}, {""}, {""}, -#line 1951 "../tests/keys" - {"selectStepTemplateInterval",1946}, - {""}, {""}, {""}, {""}, {""}, -#line 2173 "../tests/keys" - {"typicalMonth",2168}, - {""}, {""}, {""}, -#line 655 "../tests/keys" - {"directionOfVariation",650}, - {""}, {""}, -#line 1653 "../tests/keys" - {"projectLocalTemplate",1648}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 46 "../tests/keys" - {"DxInMetres",41}, - {""}, -#line 2190 "../tests/keys" - {"unitsConversionScaleFactor",2185}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1271 "../tests/keys" - {"n2",1266}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1636 "../tests/keys" - {"primaryBitmap",1631}, - {""}, -#line 484 "../tests/keys" - {"cloudsTitle1",479}, -#line 2054 "../tests/keys" - {"swapScanningLon",2049}, -#line 1579 "../tests/keys" - {"parametersVersion",1574}, - {""}, -#line 1743 "../tests/keys" - {"roundedMarsLongitude",1738}, - {""}, -#line 1130 "../tests/keys" - {"longitudeOfSouthEastCornerOfArea",1125}, - {""}, {""}, -#line 1368 "../tests/keys" - {"numberOfOctectsForNumberOfPoints",1363}, - {""}, {""}, {""}, {""}, {""}, -#line 1319 "../tests/keys" - {"numberOfClusters",1314}, - {""}, -#line 988 "../tests/keys" - {"jDirectionIncrement",983}, -#line 1924 "../tests/keys" - {"section9Length",1919}, - {""}, -#line 777 "../tests/keys" - {"extractDateTimeMinuteEnd",772}, - {""}, {""}, {""}, -#line 1994 "../tests/keys" - {"sp2",1989}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 779 "../tests/keys" - {"extractDateTimeMinuteStart",774}, - {""}, -#line 215 "../tests/keys" - {"Sub-Experiment_Identifier",210}, - {""}, {""}, {""}, -#line 1999 "../tests/keys" - {"spare2",1994}, - {""}, {""}, -#line 1110 "../tests/keys" - {"localYear",1105}, - {""}, {""}, {""}, {""}, -#line 1205 "../tests/keys" - {"md5Product",1200}, - {""}, {""}, {""}, -#line 2295 "../tests/keys" - {"wrongPadding",2290}, - {""}, {""}, {""}, {""}, -#line 2155 "../tests/keys" - {"typeOfPacking",2150}, - {""}, {""}, {""}, -#line 780 "../tests/keys" - {"extractDateTimeMonthEnd",775}, -#line 1488 "../tests/keys" - {"originatingCentreOfAnalysis",1483}, - {""}, {""}, {""}, {""}, {""}, -#line 708 "../tests/keys" - {"endMinuteTrend4",703}, -#line 340 "../tests/keys" - {"bitMapIndicator",335}, - {""}, -#line 161 "../tests/keys" - {"N1",156}, -#line 782 "../tests/keys" - {"extractDateTimeMonthStart",777}, - {""}, {""}, {""}, {""}, {""}, -#line 1895 "../tests/keys" - {"section2Present",1890}, -#line 967 "../tests/keys" - {"isHindcast",962}, - {""}, {""}, {""}, {""}, -#line 1246 "../tests/keys" - {"missingValueManagement",1241}, - {""}, {""}, {""}, -#line 840 "../tests/keys" - {"formatVersionMajorNumber",835}, - {""}, {""}, {""}, -#line 2273 "../tests/keys" - {"windDirectionTrend4",2268}, -#line 1618 "../tests/keys" - {"presentTrend4",1613}, - {""}, {""}, +#line 38 "../tests/keys" + {"DiInMetres",33}, +#line 1676 "../tests/keys" + {"radiusInMetres",1671}, +#line 1370 "../tests/keys" + {"numberOfModels",1365}, #line 813 "../tests/keys" {"fileConsistencyFlags",808}, {""}, {""}, {""}, {""}, {""}, +#line 532 "../tests/keys" + {"compressedData",527}, + {""}, {""}, {""}, {""}, +#line 668 "../tests/keys" + {"driverInformationBlockAddress",663}, +#line 1888 "../tests/keys" + {"section10Pointer",1883}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1230 "../tests/keys" + {"messageLength",1225}, + {""}, {""}, {""}, {""}, {""}, +#line 1056 "../tests/keys" + {"lengthOfMessage",1051}, + {""}, {""}, #line 2176 "../tests/keys" - {"typicalYear",2171}, + {"typicalMonth",2171}, {""}, -#line 1000 "../tests/keys" - {"kindOfProduct",995}, -#line 1034 "../tests/keys" - {"latitudeOfTangencyPoint",1029}, -#line 1263 "../tests/keys" - {"monthOfModelVersion",1258}, -#line 1688 "../tests/keys" - {"rdbtimeMonth",1683}, -#line 786 "../tests/keys" - {"extractDateTimeStart",781}, -#line 127 "../tests/keys" - {"LoVInDegrees",122}, +#line 970 "../tests/keys" + {"isSatelliteType",965}, +#line 302 "../tests/keys" + {"attributeOfTile",297}, + {""}, {""}, {""}, {""}, {""}, +#line 972 "../tests/keys" + {"is_aerosol",967}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1346 "../tests/keys" + {"numberOfEffectiveValues",1341}, {""}, {""}, -#line 1871 "../tests/keys" - {"secondaryBitmap",1866}, -#line 1015 "../tests/keys" - {"latitudeLongitudeValues",1010}, - {""}, {""}, -#line 783 "../tests/keys" - {"extractDateTimeSecondEnd",778}, - {""}, {""}, -#line 211 "../tests/keys" - {"SecondOfModelVersion",206}, +#line 866 "../tests/keys" + {"grib3divider",861}, +#line 49 "../tests/keys" + {"DyInMetres",44}, +#line 1740 "../tests/keys" + {"resolutionAndComponentFlags8",1735}, + {""}, {""}, {""}, +#line 2094 "../tests/keys" + {"tigge_name",2089}, +#line 979 "../tests/keys" + {"is_tigge",974}, + {""}, {""}, {""}, {""}, +#line 889 "../tests/keys" + {"gts_header",884}, +#line 521 "../tests/keys" + {"cnmc_isac",516}, + {""}, {""}, {""}, {""}, +#line 1702 "../tests/keys" + {"rectimeHour",1697}, + {""}, {""}, {""}, +#line 1397 "../tests/keys" + {"numberOfSecondOrderPackedValues",1392}, {""}, -#line 671 "../tests/keys" - {"dummy2",666}, +#line 1746 "../tests/keys" + {"roundedMarsLongitude",1741}, + {""}, {""}, {""}, +#line 957 "../tests/keys" + {"isCavok",952}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 849 "../tests/keys" + {"g1conceptsMasterDir",844}, {""}, {""}, -#line 2221 "../tests/keys" - {"variationOfVisibilityDirection",2216}, - {""}, {""}, -#line 785 "../tests/keys" - {"extractDateTimeSecondStart",780}, +#line 558 "../tests/keys" + {"coordinate2Start",553}, {""}, +#line 932 "../tests/keys" + {"indicatorOfTypeOfLevel",927}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1705 "../tests/keys" + {"reducedGrid",1700}, +#line 1340 "../tests/keys" + {"numberOfDistinctSection5s",1335}, + {""}, +#line 1350 "../tests/keys" + {"numberOfForecastsInEnsemble",1345}, + {""}, +#line 2193 "../tests/keys" + {"unitsConversionScaleFactor",2188}, + {""}, +#line 513 "../tests/keys" + {"clusterMember8",508}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 160 "../tests/keys" + {"N",155}, +#line 1404 "../tests/keys" + {"numberOfTimeRange",1399}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 1921 "../tests/keys" - {"section8Length",1916}, + {"section7Pointer",1916}, +#line 1113 "../tests/keys" + {"local_use",1108}, {""}, {""}, -#line 1287 "../tests/keys" - {"northLatitudeOfCluster",1282}, +#line 1080 "../tests/keys" + {"listOfModelIdentifiers",1075}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 635 "../tests/keys" + {"defaultShortName",630}, + {""}, {""}, {""}, +#line 373 "../tests/keys" + {"centralLongitude",368}, + {""}, +#line 1095 "../tests/keys" + {"localHour",1090}, + {""}, {""}, {""}, {""}, +#line 1964 "../tests/keys" + {"shapeOfVerificationArea",1959}, +#line 520 "../tests/keys" + {"cnmc_cmcc",515}, +#line 84 "../tests/keys" + {"GTSstr",79}, + {""}, +#line 974 "../tests/keys" + {"is_chemical",969}, + {""}, {""}, +#line 1858 "../tests/keys" + {"scanningMode8",1853}, + {""}, {""}, {""}, +#line 946 "../tests/keys" + {"integerPointValues",941}, + {""}, {""}, {""}, {""}, +#line 555 "../tests/keys" + {"coordinate1Start",550}, + {""}, {""}, +#line 1087 "../tests/keys" + {"localDefNumberOne",1082}, +#line 2143 "../tests/keys" + {"typeOfAuxiliaryInformation",2138}, +#line 1018 "../tests/keys" + {"latitudeOfCentralPointInClusterDomain",1013}, + {""}, {""}, +#line 1691 "../tests/keys" + {"rdbtimeMonth",1686}, + {""}, {""}, {""}, {""}, +#line 2013 "../tests/keys" + {"standardParallelInMicrodegrees",2008}, +#line 1339 "../tests/keys" + {"numberOfDistinctSection4s",1334}, + {""}, {""}, +#line 60 "../tests/keys" + {"Experiment_Identifier",55}, +#line 545 "../tests/keys" + {"constantFieldHalfByte",540}, + {""}, +#line 941 "../tests/keys" + {"inputProcessIdentifier",936}, + {""}, {""}, {""}, +#line 976 "../tests/keys" + {"is_efas",971}, + {""}, {""}, {""}, +#line 601 "../tests/keys" + {"dataRepresentationTemplateNumber",596}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2174 "../tests/keys" + {"typicalHour",2169}, + {""}, {""}, {""}, {""}, +#line 1321 "../tests/keys" + {"numberOfClusters",1316}, + {""}, {""}, +#line 1116 "../tests/keys" + {"longitudeFirstInDegrees",1111}, + {""}, {""}, {""}, +#line 683 "../tests/keys" + {"easternLongitudeOfDomain",678}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 36 "../tests/keys" + {"DiGiven",31}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 1666 "../tests/keys" + {"qnhAPresent",1661}, + {""}, +#line 163 "../tests/keys" + {"NAT",158}, + {""}, {""}, {""}, {""}, +#line 2267 "../tests/keys" + {"westernLongitudeOfDomain",2262}, +#line 888 "../tests/keys" + {"gts_ddhh00",883}, + {""}, {""}, {""}, {""}, +#line 581 "../tests/keys" + {"correction4",576}, +#line 305 "../tests/keys" + {"averaging1Flag",300}, + {""}, {""}, +#line 1827 "../tests/keys" + {"scaleValuesBy",1822}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 272 "../tests/keys" + {"_TS",267}, +#line 1838 "../tests/keys" + {"scaledValueOfLengthOfSemiMajorAxis",1833}, +#line 1839 "../tests/keys" + {"scaledValueOfLengthOfSemiMinorAxis",1834}, + {""}, {""}, {""}, +#line 831 "../tests/keys" + {"forecastMonth",826}, + {""}, {""}, {""}, +#line 1616 "../tests/keys" + {"predefined_grid_values",1611}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1214 "../tests/keys" + {"md5Section7",1209}, +#line 2269 "../tests/keys" + {"widthOfLengths",2264}, + {""}, {""}, +#line 20 "../tests/keys" + {"Azi",15}, + {""}, {""}, {""}, {""}, +#line 2009 "../tests/keys" + {"sphericalHarmonics",2004}, + {""}, {""}, {""}, +#line 1261 "../tests/keys" + {"monthOfAnalysis",1256}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 83 "../tests/keys" + {"GTS",78}, +#line 2151 "../tests/keys" + {"typeOfGrid",2146}, + {""}, +#line 873 "../tests/keys" + {"gridDefinitionSection",868}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 687 "../tests/keys" + {"efas_model",682}, +#line 1429 "../tests/keys" + {"offsetAfterCentreLocalSection",1424}, + {""}, {""}, {""}, +#line 399 "../tests/keys" + {"classOfAnalysis",394}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1689 "../tests/keys" + {"rdbtimeHour",1684}, +#line 374 "../tests/keys" + {"centralLongitudeInDegrees",369}, +#line 2236 "../tests/keys" + {"verificationMonth",2231}, + {""}, +#line 666 "../tests/keys" + {"doSimpleThinning",661}, + {""}, +#line 2152 "../tests/keys" + {"typeOfHorizontalLine",2147}, + {""}, +#line 2121 "../tests/keys" + {"totalNumberOfForecastProbabilities",2116}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 174 "../tests/keys" + {"NP",169}, + {""}, {""}, {""}, +#line 1320 "../tests/keys" + {"numberOfClusterLowResolution",1315}, + {""}, +#line 1104 "../tests/keys" + {"localNumberOfObservations",1099}, + {""}, {""}, {""}, {""}, {""}, +#line 1456 "../tests/keys" + {"offsetSection7",1451}, +#line 538 "../tests/keys" + {"conceptsLocalMarsDirAll",533}, +#line 1329 "../tests/keys" + {"numberOfCoordinatesValues",1324}, + {""}, {""}, {""}, +#line 1132 "../tests/keys" + {"longitudeOfSouthernPole",1127}, + {""}, {""}, {""}, +#line 567 "../tests/keys" + {"coordinateIndexNumber",562}, + {""}, {""}, {""}, {""}, +#line 1031 "../tests/keys" + {"latitudeOfStretchingPoleInDegrees",1026}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1052 "../tests/keys" + {"lengthIncrementForTheGroupLengths",1047}, + {""}, +#line 610 "../tests/keys" + {"dateOfAnalysis",605}, +#line 1698 "../tests/keys" + {"recentWeather",1693}, +#line 1598 "../tests/keys" + {"perturbationNumber",1593}, + {""}, {""}, +#line 2104 "../tests/keys" + {"timeOfAnalysis",2099}, + {""}, {""}, +#line 580 "../tests/keys" + {"correction3Part",575}, + {""}, +#line 1289 "../tests/keys" + {"northLatitudeOfCluster",1284}, +#line 665 "../tests/keys" + {"doExtractSubsets",660}, + {""}, +#line 1375 "../tests/keys" + {"numberOfParallelsBetweenAPoleAndTheEquator",1370}, + {""}, {""}, {""}, #line 1032 "../tests/keys" {"latitudeOfSubSatellitePoint",1027}, -#line 2222 "../tests/keys" - {"variationOfVisibilityDirectionAngle",2217}, - {""}, {""}, -#line 1592 "../tests/keys" - {"percentileValue",1587}, - {""}, {""}, #line 680 "../tests/keys" {"eastLongitudeOfCluster",675}, + {""}, +#line 704 "../tests/keys" + {"endMark",699}, + {""}, {""}, {""}, +#line 1331 "../tests/keys" + {"numberOfDataMatrices",1326}, +#line 46 "../tests/keys" + {"DxInMetres",41}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1322 "../tests/keys" + {"numberOfCodedValues",1317}, +#line 1033 "../tests/keys" + {"latitudeOfSubSatellitePointInDegrees",1028}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2264 "../tests/keys" + {"westLongitudeOfCluster",2259}, + {""}, {""}, {""}, {""}, {""}, +#line 2252 "../tests/keys" + {"verticalVisibilityCoded",2247}, +#line 657 "../tests/keys" + {"dirty_statistics",652}, + {""}, {""}, +#line 2014 "../tests/keys" + {"startOfHeaders",2009}, +#line 2314 "../tests/keys" + {"yearOfAnalysis",2309}, + {""}, {""}, {""}, {""}, {""}, +#line 2053 "../tests/keys" + {"subdivisionsOfBasicAngle",2048}, + {""}, +#line 789 "../tests/keys" + {"extractDateTimeYearStart",784}, + {""}, {""}, +#line 537 "../tests/keys" + {"conceptsLocalDirECMF",532}, +#line 41 "../tests/keys" + {"DjInDegrees",36}, +#line 1081 "../tests/keys" + {"listOfParametersUsedForClustering",1076}, + {""}, {""}, {""}, {""}, +#line 2142 "../tests/keys" + {"typeOfAnalysis",2137}, + {""}, {""}, {""}, {""}, {""}, +#line 1991 "../tests/keys" + {"southLatitudeOfCluster",1986}, + {""}, {""}, +#line 975 "../tests/keys" + {"is_chemical_distfn",970}, + {""}, {""}, {""}, {""}, +#line 273 "../tests/keys" + {"_anoffset",268}, + {""}, +#line 1743 "../tests/keys" + {"rootTablesDir",1738}, + {""}, {""}, {""}, +#line 2238 "../tests/keys" + {"verifyingMonth",2233}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 2004 "../tests/keys" + {"spatialSmoothingOfProduct",1999}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1152 "../tests/keys" + {"lsdate_bug",1147}, + {""}, {""}, {""}, +#line 1871 "../tests/keys" + {"secondOrderOfDifferentWidth",1866}, + {""}, {""}, {""}, +#line 697 "../tests/keys" + {"endDayTrend4",692}, + {""}, {""}, +#line 306 "../tests/keys" + {"averaging2Flag",301}, + {""}, {""}, {""}, +#line 916 "../tests/keys" + {"iScansNegatively",911}, + {""}, {""}, +#line 1139 "../tests/keys" + {"longitudeOfThePoleOfStretching",1134}, +#line 1610 "../tests/keys" + {"powerOfTenUsedToScaleClimateWeight",1605}, + {""}, {""}, {""}, +#line 179 "../tests/keys" + {"NV",174}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 397 "../tests/keys" + {"checkInternalVersion",392}, + {""}, {""}, {""}, {""}, {""}, +#line 215 "../tests/keys" + {"Sub-Experiment_Identifier",210}, +#line 1763 "../tests/keys" + {"runwayDepthOfDepositState1",1758}, + {""}, +#line 767 "../tests/keys" + {"extractAreaNorthLatitude",762}, + {""}, {""}, +#line 1813 "../tests/keys" + {"scaleFactorOfFirstWavelength",1808}, + {""}, {""}, +#line 903 "../tests/keys" + {"hourOfAnalysis",898}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2136 "../tests/keys" + {"tsectionNumber5",2131}, + {""}, {""}, +#line 1364 "../tests/keys" + {"numberOfMembersInCluster",1359}, + {""}, +#line 499 "../tests/keys" + {"cloudsTitle4",494}, + {""}, {""}, {""}, +#line 1766 "../tests/keys" + {"runwayDepthOfDepositState4",1761}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 926 "../tests/keys" + {"implementationDateOfModelCycle",921}, + {""}, {""}, +#line 1267 "../tests/keys" + {"monthlyVerificationMonth",1262}, + {""}, {""}, {""}, {""}, +#line 836 "../tests/keys" + {"forecastProbabilityNumber",831}, +#line 662 "../tests/keys" + {"distinctLongitudes",657}, + {""}, +#line 1338 "../tests/keys" + {"numberOfDistinctSection3s",1333}, +#line 557 "../tests/keys" + {"coordinate2Flag",552}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 942 "../tests/keys" + {"inputShortDelayedDescriptorReplicationFactor",937}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 2063 "../tests/keys" + {"table2Version",2058}, +#line 1656 "../tests/keys" + {"projectLocalTemplate",1651}, +#line 1054 "../tests/keys" + {"lengthOfHeaders",1049}, + {""}, {""}, +#line 2316 "../tests/keys" + {"yearOfEndOfOverallTimeInterval",2311}, + {""}, {""}, +#line 1057 "../tests/keys" + {"lengthOfOriginatorLocalTemplate",1052}, + {""}, +#line 1927 "../tests/keys" + {"section9Length",1922}, + {""}, +#line 1962 "../tests/keys" + {"sfc_levtype",1957}, + {""}, {""}, {""}, {""}, {""}, +#line 1262 "../tests/keys" + {"monthOfEndOfOverallTimeInterval",1257}, + {""}, {""}, {""}, {""}, +#line 1887 "../tests/keys" + {"section10Length",1882}, + {""}, {""}, +#line 844 "../tests/keys" + {"frequencyNumber",839}, +#line 1488 "../tests/keys" + {"originalParameterTableNumber",1483}, +#line 765 "../tests/keys" + {"extractAreaLatitudeRank",760}, {""}, {""}, #line 279 "../tests/keys" {"addExtraLocalSection",274}, -#line 2086 "../tests/keys" - {"tiggeLAMName",2081}, -#line 41 "../tests/keys" - {"DjInDegrees",36}, - {""}, -#line 2268 "../tests/keys" - {"widthOfWidths",2263}, -#line 1881 "../tests/keys" - {"section0Length",1876}, -#line 699 "../tests/keys" - {"endGridDefinition",694}, -#line 1803 "../tests/keys" - {"scaleFactorOfCentralWaveNumber",1798}, -#line 1033 "../tests/keys" - {"latitudeOfSubSatellitePointInDegrees",1028}, - {""}, {""}, {""}, {""}, {""}, -#line 2220 "../tests/keys" - {"variationOfVisibility",2215}, -#line 1337 "../tests/keys" - {"numberOfDistinctSection5s",1332}, {""}, {""}, -#line 1362 "../tests/keys" - {"numberOfMembersInEnsemble",1357}, - {""}, {""}, {""}, {""}, -#line 2261 "../tests/keys" - {"westLongitudeOfCluster",2256}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1185 "../tests/keys" - {"marsType2",1180}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1699 "../tests/keys" - {"rectimeHour",1694}, - {""}, {""}, -#line 1863 "../tests/keys" - {"secondLatitudeInDegrees",1858}, -#line 1988 "../tests/keys" - {"southLatitudeOfCluster",1983}, - {""}, -#line 1723 "../tests/keys" - {"reserved2",1718}, - {""}, {""}, {""}, -#line 1056 "../tests/keys" - {"lengthOfOriginatorLocalTemplate",1051}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 2181 "../tests/keys" - {"unexpandedDescriptors",2176}, +#line 2057 "../tests/keys" + {"swapScanningLon",2052}, +#line 340 "../tests/keys" + {"bitMapIndicator",335}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1707 "../tests/keys" - {"referenceForGroupWidths",1702}, - {""}, -#line 1048 "../tests/keys" - {"legBaseTime",1043}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 2313 "../tests/keys" - {"yearOfEndOfOverallTimeInterval",2308}, - {""}, {""}, {""}, -#line 767 "../tests/keys" - {"extractAreaNorthLatitude",762}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1691 "../tests/keys" - {"rdbtimeYear",1686}, - {""}, -#line 1261 "../tests/keys" - {"monthOfEndOfOverallTimeInterval",1256}, - {""}, {""}, {""}, {""}, {""}, -#line 1018 "../tests/keys" - {"latitudeOfCentralPointInClusterDomain",1013}, - {""}, -#line 1327 "../tests/keys" - {"numberOfCoordinatesValues",1322}, -#line 1417 "../tests/keys" - {"observationGeneratingProcessIdentifier",1412}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1816 "../tests/keys" - {"scaleFactorOfPrimeMeridianOffset",1811}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1094 "../tests/keys" - {"localHour",1089}, -#line 1873 "../tests/keys" - {"secondaryBitmaps",1868}, - {""}, -#line 2115 "../tests/keys" - {"totalNumberOfClusters",2110}, - {""}, {""}, -#line 2182 "../tests/keys" - {"unexpandedDescriptorsEncoded",2177}, -#line 1888 "../tests/keys" - {"section1Flags",1883}, - {""}, {""}, {""}, -#line 1901 "../tests/keys" - {"section3Pointer",1896}, -#line 581 "../tests/keys" - {"correction4",576}, - {""}, -#line 934 "../tests/keys" - {"indicatorOfUnitForTimeRange",929}, - {""}, {""}, -#line 1080 "../tests/keys" - {"listOfParametersUsedForClustering",1075}, - {""}, {""}, -#line 1872 "../tests/keys" - {"secondaryBitmapPresent",1867}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1047 "../tests/keys" - {"legBaseDate",1042}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 545 "../tests/keys" - {"constantFieldHalfByte",540}, -#line 1320 "../tests/keys" - {"numberOfCodedValues",1315}, - {""}, {""}, {""}, -#line 1654 "../tests/keys" - {"projectLocalTemplateNumber",1649}, -#line 1360 "../tests/keys" - {"numberOfLogicals",1355}, -#line 356 "../tests/keys" - {"calendarIdentification",351}, - {""}, {""}, {""}, {""}, {""}, -#line 1706 "../tests/keys" - {"referenceForGroupLengths",1701}, - {""}, {""}, {""}, -#line 2249 "../tests/keys" - {"verticalVisibilityCoded",2244}, -#line 1874 "../tests/keys" - {"secondaryBitmapsCount",1869}, - {""}, -#line 2171 "../tests/keys" - {"typicalHour",2166}, - {""}, {""}, {""}, -#line 652 "../tests/keys" - {"dimensionType",647}, -#line 1318 "../tests/keys" - {"numberOfClusterLowResolution",1313}, - {""}, -#line 904 "../tests/keys" - {"hourOfEndOfOverallTimeInterval",899}, - {""}, -#line 2078 "../tests/keys" - {"thisMarsClass",2073}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 186 "../tests/keys" - {"NrInRadiusOfEarth",181}, -#line 1450 "../tests/keys" - {"offsetSection4",1445}, - {""}, -#line 561 "../tests/keys" - {"coordinate3OfLastGridPoint",556}, - {""}, {""}, {""}, {""}, {""}, -#line 558 "../tests/keys" - {"coordinate2Start",553}, - {""}, {""}, -#line 1031 "../tests/keys" - {"latitudeOfStretchingPoleInDegrees",1026}, - {""}, {""}, +#line 1884 "../tests/keys" + {"section0Length",1879}, +#line 2250 "../tests/keys" + {"verticalDomainTemplateNumber",2245}, #line 1394 "../tests/keys" - {"numberOfSecondOrderPackedValues",1389}, - {""}, -#line 564 "../tests/keys" - {"coordinate4OfLastGridPoint",559}, + {"numberOfRepresentativeMember",1389}, + {""}, {""}, {""}, {""}, {""}, +#line 988 "../tests/keys" + {"jDirectionIncrement",983}, {""}, {""}, {""}, {""}, -#line 2270 "../tests/keys" - {"windDirectionTrend1",2265}, -#line 1615 "../tests/keys" - {"presentTrend1",1610}, - {""}, {""}, {""}, {""}, -#line 1914 "../tests/keys" - {"section6Pointer",1909}, - {""}, -#line 2048 "../tests/keys" - {"subSetM",2043}, - {""}, {""}, {""}, -#line 890 "../tests/keys" - {"halfByte",885}, +#line 1972 "../tests/keys" + {"simpleThinningSkip",1967}, +#line 554 "../tests/keys" + {"coordinate1Flag",549}, +#line 933 "../tests/keys" + {"indicatorOfUnitForTimeIncrement",928}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1918 "../tests/keys" - {"section7Pointer",1913}, -#line 162 "../tests/keys" - {"N2",157}, +#line 872 "../tests/keys" + {"gridDefinitionDescription",867}, + {""}, {""}, +#line 1973 "../tests/keys" + {"simpleThinningStart",1968}, + {""}, {""}, +#line 895 "../tests/keys" + {"heightPressureEtcOfLevels",890}, +#line 1978 "../tests/keys" + {"sizeOfLength",1973}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1420 "../tests/keys" + {"observationGeneratingProcessIdentifier",1415}, + {""}, {""}, {""}, +#line 1029 "../tests/keys" + {"latitudeOfSouthernPoleInDegrees",1024}, +#line 1963 "../tests/keys" + {"shapeOfTheEarth",1958}, +#line 1069 "../tests/keys" + {"listMembersMissing",1064}, + {""}, {""}, {""}, {""}, {""}, +#line 973 "../tests/keys" + {"is_aerosol_optical",968}, {""}, #line 824 "../tests/keys" {"flagForIrregularGridCoordinateList",819}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1325 "../tests/keys" - {"numberOfContributingSpectralBands",1320}, +#line 1911 "../tests/keys" + {"section5",1906}, +#line 1247 "../tests/keys" + {"missingValueManagement",1242}, +#line 1759 "../tests/keys" + {"runwayDepthOfDepositCodeState1",1754}, + {""}, {""}, {""}, {""}, {""}, +#line 904 "../tests/keys" + {"hourOfEndOfOverallTimeInterval",899}, + {""}, {""}, +#line 2020 "../tests/keys" + {"startingAzimuth",2015}, + {""}, +#line 1913 "../tests/keys" + {"section5Pointer",1908}, + {""}, {""}, {""}, +#line 1363 "../tests/keys" + {"numberOfLogicals",1358}, +#line 1241 "../tests/keys" + {"minuteOfModelVersion",1236}, + {""}, +#line 1869 "../tests/keys" + {"secondOfModelVersion",1864}, + {""}, {""}, {""}, +#line 1952 "../tests/keys" + {"section_8",1947}, + {""}, +#line 2271 "../tests/keys" + {"widthOfWidths",2266}, + {""}, {""}, +#line 1762 "../tests/keys" + {"runwayDepthOfDepositCodeState4",1757}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1015 "../tests/keys" + {"latitudeLongitudeValues",1010}, + {""}, {""}, {""}, +#line 1996 "../tests/keys" + {"sp1",1991}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 488 "../tests/keys" - {"cloudsTitle1Trend4",483}, - {""}, {""}, -#line 262 "../tests/keys" - {"YR",257}, +#line 1251 "../tests/keys" + {"mixedCoordinateFieldFlag",1246}, + {""}, {""}, {""}, {""}, +#line 1306 "../tests/keys" + {"numberMissingFromAveragesOrAccumulations",1301}, {""}, -#line 2006 "../tests/keys" - {"sphericalHarmonics",2001}, +#line 1941 "../tests/keys" + {"section_08",1936}, + {""}, {""}, {""}, {""}, +#line 1894 "../tests/keys" + {"section1Pointer",1889}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1243 "../tests/keys" - {"minutesAfterReferenceTimeOfDataCutoff",1238}, - {""}, -#line 851 "../tests/keys" - {"gaussianGridName",846}, - {""}, -#line 676 "../tests/keys" - {"earthMajorAxis",671}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 925 "../tests/keys" - {"ijDirectionIncrementGiven",920}, - {""}, {""}, -#line 993 "../tests/keys" - {"jPointsAreConsecutive",988}, {""}, {""}, {""}, {""}, {""}, -#line 146 "../tests/keys" - {"METARstr",141}, - {""}, {""}, {""}, {""}, {""}, -#line 1834 "../tests/keys" - {"scaledValueOfFirstWavelength",1829}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1686 "../tests/keys" - {"rdbtimeHour",1681}, - {""}, {""}, -#line 165 "../tests/keys" - {"NC",160}, -#line 892 "../tests/keys" - {"headersOnly",887}, - {""}, -#line 787 "../tests/keys" - {"extractDateTimeYearEnd",782}, - {""}, {""}, {""}, -#line 1353 "../tests/keys" - {"numberOfGroups",1348}, - {""}, {""}, {""}, {""}, {""}, -#line 1072 "../tests/keys" - {"listMembersUsed",1067}, -#line 2149 "../tests/keys" - {"typeOfHorizontalLine",2144}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 357 "../tests/keys" - {"calendarIdentificationTemplateNumber",352}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1738 "../tests/keys" - {"rootGroupObjectHeaderAddress",1733}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 821 "../tests/keys" - {"firstOrderValues",816}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2254 "../tests/keys" - {"visibilityInKilometresTrend4",2249}, - {""}, {""}, {""}, -#line 25 "../tests/keys" - {"BufrTemplate",20}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1814 "../tests/keys" - {"scaleFactorOfMajorAxisOfOblateSpheroidEarth",1809}, - {""}, {""}, {""}, {""}, {""}, -#line 2285 "../tests/keys" - {"windUnits",2280}, -#line 841 "../tests/keys" - {"formatVersionMinorNumber",836}, - {""}, {""}, {""}, {""}, -#line 2030 "../tests/keys" - {"stepUnits",2025}, - {""}, {""}, {""}, -#line 738 "../tests/keys" - {"expandBy",733}, - {""}, {""}, {""}, {""}, -#line 697 "../tests/keys" - {"endDayTrend4",692}, - {""}, -#line 485 "../tests/keys" - {"cloudsTitle1Trend1",480}, - {""}, -#line 73 "../tests/keys" - {"GDSPresent",68}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 96 "../tests/keys" - {"ITERATOR",91}, -#line 524 "../tests/keys" - {"codedNumberOfFirstOrderPackedValues",519}, - {""}, {""}, {""}, -#line 2053 "../tests/keys" - {"swapScanningLat",2048}, -#line 1763 "../tests/keys" - {"runwayDepthOfDepositState4",1758}, - {""}, {""}, {""}, {""}, -#line 2011 "../tests/keys" - {"startOfHeaders",2006}, -#line 1607 "../tests/keys" - {"powerOfTenUsedToScaleClimateWeight",1602}, -#line 2064 "../tests/keys" - {"tablesLocalDir",2059}, - {""}, {""}, -#line 978 "../tests/keys" - {"is_s2s",973}, - {""}, {""}, {""}, {""}, -#line 39 "../tests/keys" - {"Dj",34}, - {""}, {""}, -#line 679 "../tests/keys" - {"earthMinorAxisInMetres",674}, - {""}, {""}, {""}, {""}, -#line 716 "../tests/keys" - {"endOfMessage",711}, #line 113 "../tests/keys" {"Lar1InDegrees",108}, - {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 845 "../tests/keys" + {"frequencyScalingFactor",840}, + {""}, {""}, {""}, #line 141 "../tests/keys" {"Lor1InDegrees",136}, {""}, {""}, {""}, {""}, -#line 499 "../tests/keys" - {"cloudsTitle4",494}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1168 "../tests/keys" - {"marsKeywords1",1163}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1445 "../tests/keys" - {"offsetSection1",1440}, +#line 1909 "../tests/keys" + {"section4Pointer",1904}, {""}, {""}, +#line 1816 "../tests/keys" + {"scaleFactorOfLowerLimit",1811}, +#line 1421 "../tests/keys" + {"observationType",1416}, +#line 1898 "../tests/keys" + {"section2Present",1893}, + {""}, +#line 880 "../tests/keys" + {"groupLeafNodeK",875}, +#line 266 "../tests/keys" + {"Yo",261}, +#line 834 "../tests/keys" + {"forecastPeriodFrom",829}, +#line 1886 "../tests/keys" + {"section1",1881}, +#line 1764 "../tests/keys" + {"runwayDepthOfDepositState2",1759}, +#line 1327 "../tests/keys" + {"numberOfContributingSpectralBands",1322}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 2184 "../tests/keys" + {"unexpandedDescriptors",2179}, +#line 823 "../tests/keys" + {"flagForAnyFurtherInformation",818}, + {""}, {""}, {""}, {""}, {""}, +#line 1710 "../tests/keys" + {"referenceForGroupWidths",1705}, + {""}, +#line 1483 "../tests/keys" + {"orderOfSpatialDifferencing",1478}, + {""}, +#line 267 "../tests/keys" + {"Yp",262}, + {""}, +#line 1732 "../tests/keys" + {"reservedSection4",1727}, +#line 1953 "../tests/keys" + {"selectStepTemplateInstant",1948}, + {""}, {""}, {""}, {""}, {""}, +#line 874 "../tests/keys" + {"gridDefinitionTemplateNumber",869}, +#line 1893 "../tests/keys" + {"section1Padding",1888}, +#line 1365 "../tests/keys" + {"numberOfMembersInEnsemble",1360}, + {""}, {""}, +#line 2298 "../tests/keys" + {"wrongPadding",2293}, + {""}, {""}, {""}, +#line 670 "../tests/keys" + {"dummy1",665}, + {""}, +#line 356 "../tests/keys" + {"calendarIdentification",351}, + {""}, +#line 106 "../tests/keys" + {"La1InDegrees",101}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 123 "../tests/keys" + {"Lo1InDegrees",118}, + {""}, +#line 1366 "../tests/keys" + {"numberOfMissing",1361}, +#line 2081 "../tests/keys" + {"thisMarsClass",2076}, + {""}, +#line 1906 "../tests/keys" + {"section4",1901}, +#line 2308 "../tests/keys" + {"yDirectionGridLength",2303}, + {""}, +#line 1908 "../tests/keys" + {"section4Padding",1903}, + {""}, {""}, +#line 517 "../tests/keys" + {"clusteringDomain",512}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1739 "../tests/keys" + {"resolutionAndComponentFlags7",1734}, + {""}, {""}, +#line 663 "../tests/keys" + {"doExtractArea",658}, +#line 2185 "../tests/keys" + {"unexpandedDescriptorsEncoded",2180}, + {""}, {""}, +#line 1264 "../tests/keys" + {"monthOfModelVersion",1259}, +#line 346 "../tests/keys" + {"boot_edition",341}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 575 "../tests/keys" + {"correction1",570}, + {""}, {""}, +#line 211 "../tests/keys" + {"SecondOfModelVersion",206}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1140 "../tests/keys" + {"longitudeOfThePolePoint",1135}, + {""}, +#line 2124 "../tests/keys" + {"totalNumberOfIterations",2119}, + {""}, +#line 945 "../tests/keys" + {"instrumentType",940}, + {""}, {""}, {""}, +#line 1185 "../tests/keys" + {"marsType1",1180}, + {""}, +#line 1323 "../tests/keys" + {"numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction",1318}, +#line 1324 "../tests/keys" + {"numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction",1319}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1709 "../tests/keys" + {"referenceForGroupLengths",1704}, + {""}, {""}, +#line 1725 "../tests/keys" + {"reserved1",1720}, + {""}, {""}, {""}, {""}, {""}, +#line 879 "../tests/keys" + {"groupInternalNodeK",874}, +#line 1319 "../tests/keys" + {"numberOfClusterHighResolution",1314}, + {""}, {""}, {""}, +#line 1819 "../tests/keys" + {"scaleFactorOfPrimeMeridianOffset",1814}, +#line 655 "../tests/keys" + {"directionOfVariation",650}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 2126 "../tests/keys" + {"totalNumberOfTileAttributePairs",2121}, + {""}, +#line 1657 "../tests/keys" + {"projectLocalTemplateNumber",1652}, + {""}, {""}, +#line 1866 "../tests/keys" + {"secondLatitudeInDegrees",1861}, +#line 1930 "../tests/keys" + {"sectionLengthLimitForEnsembles",1925}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1341 "../tests/keys" + {"numberOfDistinctSection6s",1336}, + {""}, {""}, {""}, {""}, +#line 1182 "../tests/keys" + {"marsStream1",1177}, + {""}, +#line 776 "../tests/keys" + {"extractDateTimeHourStart",771}, + {""}, +#line 2164 "../tests/keys" + {"typeOfSizeInterval",2159}, + {""}, {""}, {""}, +#line 1582 "../tests/keys" + {"parametersVersion",1577}, +#line 1304 "../tests/keys" + {"numberInTheGridCoordinateList",1299}, +#line 2027 "../tests/keys" + {"stepInHours",2022}, +#line 1126 "../tests/keys" + {"longitudeOfLastGridPoint",1121}, + {""}, +#line 1328 "../tests/keys" + {"numberOfControlForecastTube",1323}, +#line 351 "../tests/keys" + {"bufrHeaderCentre",346}, +#line 144 "../tests/keys" + {"M",139}, + {""}, +#line 1765 "../tests/keys" + {"runwayDepthOfDepositState3",1760}, + {""}, {""}, +#line 1760 "../tests/keys" + {"runwayDepthOfDepositCodeState2",1755}, + {""}, {""}, {""}, {""}, {""}, +#line 1685 "../tests/keys" + {"rdb_key",1680}, +#line 1603 "../tests/keys" + {"physicalMeaningOfVerticalCoordinate",1598}, + {""}, {""}, {""}, +#line 1191 "../tests/keys" + {"masterTablesVersionNumber",1186}, +#line 2191 "../tests/keys" + {"unitsBias",2186}, + {""}, +#line 2286 "../tests/keys" + {"windSpeedTrend3",2281}, + {""}, {""}, {""}, +#line 1112 "../tests/keys" + {"local_padding",1107}, + {""}, +#line 1192 "../tests/keys" + {"masterTablesVersionNumberLatest",1187}, + {""}, {""}, {""}, {""}, {""}, +#line 1111 "../tests/keys" + {"localYear",1106}, + {""}, +#line 1823 "../tests/keys" + {"scaleFactorOfSecondWavelength",1818}, + {""}, {""}, {""}, +#line 2067 "../tests/keys" + {"tablesLocalDir",2062}, + {""}, {""}, {""}, +#line 310 "../tests/keys" + {"backgroundGeneratingProcessIdentifier",305}, +#line 97 "../tests/keys" + {"ITN",92}, + {""}, {""}, {""}, +#line 357 "../tests/keys" + {"calendarIdentificationTemplateNumber",352}, + {""}, {""}, +#line 1924 "../tests/keys" + {"section8Length",1919}, +#line 318 "../tests/keys" + {"basicAngleOfTheInitialProductionDomain",313}, + {""}, {""}, {""}, +#line 561 "../tests/keys" + {"coordinate3OfLastGridPoint",556}, + {""}, {""}, +#line 1154 "../tests/keys" + {"mAngleMultiplier",1149}, +#line 1801 "../tests/keys" + {"satelliteID",1796}, +#line 2135 "../tests/keys" + {"tsectionNumber4",2130}, + {""}, +#line 983 "../tests/keys" + {"isectionNumber4",978}, + {""}, {""}, {""}, {""}, +#line 1897 "../tests/keys" + {"section2Pointer",1892}, + {""}, +#line 1073 "../tests/keys" + {"listMembersUsed",1068}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1639 "../tests/keys" + {"primaryBitmap",1634}, +#line 804 "../tests/keys" + {"faModelName",799}, + {""}, {""}, {""}, +#line 2056 "../tests/keys" + {"swapScanningLat",2051}, +#line 115 "../tests/keys" + {"Lar2InDegrees",110}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 143 "../tests/keys" + {"Lor2InDegrees",138}, + {""}, +#line 2179 "../tests/keys" + {"typicalYear",2174}, +#line 1954 "../tests/keys" + {"selectStepTemplateInterval",1949}, +#line 262 "../tests/keys" + {"YR",257}, + {""}, +#line 1741 "../tests/keys" + {"rootGroupObjectHeaderAddress",1736}, + {""}, {""}, {""}, {""}, {""}, +#line 925 "../tests/keys" + {"ijDirectionIncrementGiven",920}, +#line 1356 "../tests/keys" + {"numberOfGroups",1351}, + {""}, +#line 2076 "../tests/keys" + {"templatesLocalDir",2071}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 577 "../tests/keys" + {"correction2",572}, + {""}, +#line 2224 "../tests/keys" + {"variationOfVisibilityDirection",2219}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2225 "../tests/keys" + {"variationOfVisibilityDirectionAngle",2220}, +#line 1270 "../tests/keys" + {"multiplicationFactorForLatLong",1265}, + {""}, +#line 1595 "../tests/keys" + {"percentileValue",1590}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1896 "../tests/keys" + {"section2Padding",1891}, + {""}, {""}, +#line 1044 "../tests/keys" + {"latitudinalDirectionGridLength",1039}, + {""}, +#line 2093 "../tests/keys" + {"tiggeSuiteID",2088}, + {""}, {""}, {""}, {""}, {""}, +#line 699 "../tests/keys" + {"endGridDefinition",694}, +#line 2223 "../tests/keys" + {"variationOfVisibility",2218}, + {""}, {""}, {""}, +#line 1891 "../tests/keys" + {"section1Flags",1886}, + {""}, {""}, +#line 1286 "../tests/keys" + {"normAtFinalTime",1281}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 73 "../tests/keys" + {"GDSPresent",68}, + {""}, {""}, {""}, {""}, +#line 1013 "../tests/keys" + {"latitudeFirstInDegrees",1008}, + {""}, {""}, {""}, {""}, {""}, +#line 1761 "../tests/keys" + {"runwayDepthOfDepositCodeState3",1756}, +#line 2284 "../tests/keys" + {"windSpeedTrend1",2279}, + {""}, +#line 694 "../tests/keys" + {"endDayTrend1",689}, +#line 1874 "../tests/keys" + {"secondaryBitmap",1869}, +#line 1183 "../tests/keys" + {"marsStream2",1178}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1694 "../tests/keys" + {"rdbtimeYear",1689}, +#line 768 "../tests/keys" + {"extractAreaSouthLatitude",763}, + {""}, {""}, {""}, #line 316 "../tests/keys" {"baseTimeEPS",311}, +#line 484 "../tests/keys" + {"cloudsTitle1",479}, +#line 1133 "../tests/keys" + {"longitudeOfSouthernPoleInDegrees",1128}, + {""}, {""}, +#line 1904 "../tests/keys" + {"section3Pointer",1899}, {""}, +#line 832 "../tests/keys" + {"forecastOrSingularVectorNumber",827}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 2301 "../tests/keys" + {"xDirectionGridLength",2296}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 39 "../tests/keys" + {"Dj",34}, + {""}, +#line 777 "../tests/keys" + {"extractDateTimeMinuteEnd",772}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 779 "../tests/keys" + {"extractDateTimeMinuteStart",774}, + {""}, +#line 794 "../tests/keys" + {"extractedAreaNumberOfSubsets",789}, + {""}, {""}, {""}, +#line 766 "../tests/keys" + {"extractAreaLongitudeRank",761}, + {""}, {""}, {""}, {""}, +#line 605 "../tests/keys" + {"dataSubCategory",600}, + {""}, {""}, {""}, +#line 1273 "../tests/keys" + {"n2",1268}, + {""}, +#line 786 "../tests/keys" + {"extractDateTimeStart",781}, + {""}, {""}, +#line 1187 "../tests/keys" + {"mars_labeling",1182}, + {""}, {""}, +#line 1048 "../tests/keys" + {"legBaseTime",1043}, +#line 2075 "../tests/keys" + {"temperatureAndDewpointPresent",2070}, +#line 783 "../tests/keys" + {"extractDateTimeSecondEnd",778}, + {""}, +#line 780 "../tests/keys" + {"extractDateTimeMonthEnd",775}, + {""}, {""}, {""}, {""}, +#line 1903 "../tests/keys" + {"section3Padding",1898}, + {""}, {""}, {""}, +#line 785 "../tests/keys" + {"extractDateTimeSecondStart",780}, +#line 314 "../tests/keys" + {"baseDateEPS",309}, +#line 782 "../tests/keys" + {"extractDateTimeMonthStart",777}, +#line 1212 "../tests/keys" + {"md5Section5",1207}, + {""}, {""}, {""}, {""}, {""}, +#line 2095 "../tests/keys" + {"tigge_short_name",2090}, + {""}, {""}, +#line 1997 "../tests/keys" + {"sp2",1992}, + {""}, {""}, {""}, +#line 524 "../tests/keys" + {"codedNumberOfFirstOrderPackedValues",519}, + {""}, {""}, +#line 500 "../tests/keys" + {"cloudsTitle4Trend1",495}, + {""}, {""}, {""}, {""}, {""}, +#line 2002 "../tests/keys" + {"spare2",1997}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1876 "../tests/keys" + {"secondaryBitmaps",1871}, +#line 1931 "../tests/keys" + {"sectionLengthLimitForProbability",1926}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 503 "../tests/keys" + {"cloudsTitle4Trend4",498}, + {""}, {""}, {""}, +#line 254 "../tests/keys" + {"XRInMetres",249}, + {""}, {""}, {""}, +#line 1875 "../tests/keys" + {"secondaryBitmapPresent",1870}, + {""}, {""}, {""}, {""}, +#line 720 "../tests/keys" + {"endStepInHours",715}, + {""}, {""}, {""}, {""}, +#line 1047 "../tests/keys" + {"legBaseDate",1042}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 695 "../tests/keys" + {"endDayTrend2",690}, + {""}, {""}, {""}, {""}, {""}, {""}, #line 105 "../tests/keys" {"La1",100}, {""}, {""}, @@ -5762,3030 +6162,2857 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, #line 122 "../tests/keys" {"Lo1",117}, -#line 752 "../tests/keys" - {"experimentVersionNumber",747}, + {""}, #line 117 "../tests/keys" {"Latin1",112}, #line 140 "../tests/keys" {"Lor1",135}, -#line 1427 "../tests/keys" - {"offsetAfterData",1422}, +#line 1877 "../tests/keys" + {"secondaryBitmapsCount",1872}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1876 "../tests/keys" - {"secondaryMissingValue",1871}, -#line 1446 "../tests/keys" - {"offsetSection10",1441}, - {""}, -#line 106 "../tests/keys" - {"La1InDegrees",101}, -#line 660 "../tests/keys" - {"distanceFromTubeToEnsembleMean",655}, - {""}, -#line 826 "../tests/keys" - {"flagShowingPostAuxiliaryArrayInUse",821}, -#line 2251 "../tests/keys" - {"visibilityInKilometresTrend1",2246}, -#line 1272 "../tests/keys" - {"n3",1267}, - {""}, -#line 123 "../tests/keys" - {"Lo1InDegrees",118}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1044 "../tests/keys" - {"latitudinalDirectionGridLength",1039}, -#line 275 "../tests/keys" - {"_numberOfValues",270}, -#line 2090 "../tests/keys" - {"tiggeSuiteID",2085}, - {""}, {""}, {""}, {""}, {""}, -#line 1154 "../tests/keys" - {"mBasicAngle",1149}, +#line 1988 "../tests/keys" + {"southEastLatitudeOfVerficationArea",1983}, {""}, {""}, {""}, {""}, -#line 1029 "../tests/keys" - {"latitudeOfSouthernPoleInDegrees",1024}, +#line 671 "../tests/keys" + {"dummy2",666}, +#line 1443 "../tests/keys" + {"offsetFreeFormData",1438}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 676 "../tests/keys" + {"earthMajorAxis",671}, + {""}, {""}, +#line 1357 "../tests/keys" + {"numberOfGroupsOfDataValues",1352}, + {""}, {""}, +#line 489 "../tests/keys" + {"cloudsTitle2",484}, {""}, -#line 2271 "../tests/keys" - {"windDirectionTrend2",2266}, -#line 1616 "../tests/keys" - {"presentTrend2",1611}, - {""}, {""}, {""}, -#line 1995 "../tests/keys" - {"sp3",1990}, -#line 322 "../tests/keys" - {"beginDayTrend4",317}, - {""}, {""}, {""}, -#line 1682 "../tests/keys" - {"rdb_key",1677}, - {""}, {""}, {""}, -#line 1798 "../tests/keys" - {"satelliteID",1793}, +#line 2273 "../tests/keys" + {"windDirectionTrend1",2268}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 314 "../tests/keys" - {"baseDateEPS",309}, - {""}, {""}, {""}, -#line 1760 "../tests/keys" - {"runwayDepthOfDepositState1",1755}, - {""}, {""}, -#line 1376 "../tests/keys" - {"numberOfPointsAlongAMeridian",1371}, -#line 926 "../tests/keys" - {"implementationDateOfModelCycle",921}, -#line 486 "../tests/keys" - {"cloudsTitle1Trend2",481}, -#line 1734 "../tests/keys" - {"resolutionAndComponentFlags4",1729}, -#line 379 "../tests/keys" - {"centreForTable2",374}, -#line 1596 "../tests/keys" - {"perturbedType",1591}, -#line 1635 "../tests/keys" - {"pressureUnits",1630}, - {""}, {""}, -#line 1910 "../tests/keys" - {"section5Pointer",1905}, +#line 1403 "../tests/keys" + {"numberOfTensOfThousandsOfYearsOfOffset",1398}, {""}, -#line 1423 "../tests/keys" - {"octetAtWichPackedDataBegins",1418}, +#line 1371 "../tests/keys" + {"numberOfOctectsForNumberOfPoints",1366}, + {""}, {""}, {""}, +#line 2218 "../tests/keys" + {"uuidOfVGrid",2213}, +#line 890 "../tests/keys" + {"halfByte",885}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 1966 "../tests/keys" + {"shortNameECMF",1961}, + {""}, {""}, {""}, {""}, {""}, +#line 738 "../tests/keys" + {"expandBy",733}, + {""}, {""}, {""}, +#line 1186 "../tests/keys" + {"marsType2",1181}, + {""}, +#line 559 "../tests/keys" + {"coordinate3Flag",554}, + {""}, +#line 752 "../tests/keys" + {"experimentVersionNumber",747}, +#line 2254 "../tests/keys" + {"visibilityInKilometresTrend1",2249}, +#line 1367 "../tests/keys" + {"numberOfMissingInStatisticalProcess",1362}, + {""}, {""}, {""}, {""}, {""}, +#line 2276 "../tests/keys" + {"windDirectionTrend4",2271}, + {""}, {""}, {""}, {""}, +#line 1726 "../tests/keys" + {"reserved2",1721}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 145 "../tests/keys" - {"METAR",140}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1755 "../tests/keys" - {"runwayDepositState4",1750}, - {""}, {""}, -#line 1759 "../tests/keys" - {"runwayDepthOfDepositCodeState4",1754}, -#line 1053 "../tests/keys" - {"lengthOfHeaders",1048}, -#line 1897 "../tests/keys" - {"section3",1892}, - {""}, -#line 194 "../tests/keys" - {"P1",189}, - {""}, {""}, -#line 115 "../tests/keys" - {"Lar2InDegrees",110}, - {""}, -#line 834 "../tests/keys" - {"forecastPeriodFrom",829}, - {""}, {""}, {""}, {""}, -#line 143 "../tests/keys" - {"Lor2InDegrees",138}, - {""}, {""}, -#line 640 "../tests/keys" - {"deleteCalendarId",635}, - {""}, {""}, {""}, {""}, {""}, -#line 1898 "../tests/keys" - {"section3Flags",1893}, - {""}, {""}, -#line 1378 "../tests/keys" - {"numberOfPointsAlongFirstAxis",1373}, - {""}, -#line 1250 "../tests/keys" - {"mixedCoordinateFieldFlag",1245}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 821 "../tests/keys" + {"firstOrderValues",816}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2257 "../tests/keys" + {"visibilityInKilometresTrend4",2252}, +#line 864 "../tests/keys" + {"grib2LocalSectionPresent",859}, +#line 2118 "../tests/keys" + {"totalNumberOfClusters",2113}, {""}, {""}, {""}, #line 218 "../tests/keys" {"TIDE",213}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2101 "../tests/keys" + {"timeDomainTemplateNumber",2096}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 640 "../tests/keys" + {"deleteCalendarId",635}, {""}, {""}, -#line 1941 "../tests/keys" - {"section_10",1936}, +#line 1800 "../tests/keys" + {"sampleSizeOfModelClimate",1795}, +#line 716 "../tests/keys" + {"endOfMessage",711}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1306 "../tests/keys" - {"numberOfBits",1301}, -#line 1771 "../tests/keys" - {"runwayDesignatorState4",1766}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1321 "../tests/keys" - {"numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction",1316}, -#line 1322 "../tests/keys" - {"numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction",1317}, -#line 1363 "../tests/keys" - {"numberOfMissing",1358}, -#line 1140 "../tests/keys" - {"longitudeOfThePolePointInDegrees",1135}, - {""}, -#line 1107 "../tests/keys" - {"localTablesVersion",1102}, -#line 1384 "../tests/keys" - {"numberOfPointsInDomain",1379}, -#line 1354 "../tests/keys" - {"numberOfGroupsOfDataValues",1349}, - {""}, -#line 872 "../tests/keys" - {"gridDefinitionDescription",867}, -#line 2305 "../tests/keys" - {"yDirectionGridLength",2300}, - {""}, {""}, {""}, -#line 1996 "../tests/keys" - {"spaceUnitFlag",1991}, - {""}, {""}, {""}, -#line 1013 "../tests/keys" - {"latitudeFirstInDegrees",1008}, -#line 184 "../tests/keys" - {"Nj",179}, -#line 2252 "../tests/keys" - {"visibilityInKilometresTrend2",2247}, -#line 768 "../tests/keys" - {"extractAreaSouthLatitude",763}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1960 "../tests/keys" - {"shapeOfTheEarth",1955}, - {""}, {""}, -#line 1984 "../tests/keys" - {"southEastLatitudeOfLPOArea",1979}, - {""}, -#line 806 "../tests/keys" - {"falseEasting",801}, - {""}, -#line 168 "../tests/keys" - {"NEAREST",163}, - {""}, {""}, {""}, -#line 525 "../tests/keys" - {"codedNumberOfGroups",520}, - {""}, {""}, {""}, {""}, {""}, -#line 1326 "../tests/keys" - {"numberOfControlForecastTube",1321}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1927 "../tests/keys" - {"sectionLengthLimitForEnsembles",1922}, - {""}, {""}, -#line 1731 "../tests/keys" - {"resolutionAndComponentFlags1",1726}, - {""}, -#line 1377 "../tests/keys" - {"numberOfPointsAlongAParallel",1372}, - {""}, {""}, {""}, {""}, {""}, -#line 1433 "../tests/keys" - {"offsetBSection9",1428}, - {""}, {""}, {""}, -#line 1724 "../tests/keys" - {"reserved3",1719}, +#line 165 "../tests/keys" + {"NC",160}, + {""}, {""}, {""}, {""}, +#line 1734 "../tests/keys" + {"resolutionAndComponentFlags1",1729}, #line 912 "../tests/keys" {"iDirectionIncrementGiven",907}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1761 "../tests/keys" - {"runwayDepthOfDepositState2",1756}, -#line 1600 "../tests/keys" - {"physicalMeaningOfVerticalCoordinate",1595}, - {""}, {""}, -#line 1905 "../tests/keys" - {"section4Padding",1900}, - {""}, {""}, {""}, -#line 1729 "../tests/keys" - {"reservedSection4",1724}, - {""}, {""}, {""}, -#line 1051 "../tests/keys" - {"lengthIncrementForTheGroupLengths",1046}, - {""}, -#line 930 "../tests/keys" - {"indexedStorageInternalNodeK",925}, - {""}, {""}, -#line 1756 "../tests/keys" - {"runwayDepthOfDepositCodeState1",1751}, - {""}, {""}, {""}, {""}, -#line 1303 "../tests/keys" - {"numberIncludedInAverage",1298}, +#line 1305 "../tests/keys" + {"numberIncludedInAverage",1300}, +#line 863 "../tests/keys" + {"grib2LocalSectionNumber",858}, {""}, {""}, {""}, {""}, {""}, -#line 2215 "../tests/keys" - {"uuidOfVGrid",2210}, +#line 649 "../tests/keys" + {"diffInHours",644}, +#line 11 "../tests/keys" + {"AA",6}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1737 "../tests/keys" + {"resolutionAndComponentFlags4",1732}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2051 "../tests/keys" + {"subSetM",2046}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1901 "../tests/keys" + {"section3Flags",1896}, +#line 1454 "../tests/keys" + {"offsetSection5",1449}, +#line 1879 "../tests/keys" + {"secondaryMissingValue",1874}, {""}, +#line 25 "../tests/keys" + {"BufrTemplate",20}, + {""}, +#line 1138 "../tests/keys" + {"longitudeOfTangencyPoint",1133}, +#line 501 "../tests/keys" + {"cloudsTitle4Trend2",496}, +#line 246 "../tests/keys" + {"WMO",241}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1917 "../tests/keys" + {"section6Pointer",1912}, + {""}, {""}, +#line 2169 "../tests/keys" + {"typeOfWavelengthInterval",2164}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 1837 "../tests/keys" + {"scaledValueOfFirstWavelength",1832}, + {""}, {""}, +#line 991 "../tests/keys" + {"jDirectionIncrementInDegrees",986}, + {""}, +#line 708 "../tests/keys" + {"endMinuteTrend4",703}, +#line 1274 "../tests/keys" + {"n3",1269}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 682 "../tests/keys" + {"easternLongitudeOfClusterDomain",677}, + {""}, +#line 1169 "../tests/keys" + {"marsKeywords1",1164}, + {""}, {""}, {""}, {""}, +#line 194 "../tests/keys" + {"P1",189}, + {""}, +#line 98 "../tests/keys" + {"J",93}, +#line 1618 "../tests/keys" + {"presentTrend1",1613}, + {""}, +#line 2147 "../tests/keys" + {"typeOfEnsembleForecast",2142}, + {""}, +#line 1645 "../tests/keys" + {"probabilityType",1640}, + {""}, +#line 2041 "../tests/keys" + {"subDefinitions1",2036}, +#line 1998 "../tests/keys" + {"sp3",1993}, + {""}, {""}, {""}, +#line 2288 "../tests/keys" + {"windUnits",2283}, + {""}, {""}, {""}, {""}, +#line 2266 "../tests/keys" + {"westernLongitudeOfClusterDomain",2261}, +#line 2033 "../tests/keys" + {"stepUnits",2028}, + {""}, {""}, {""}, +#line 2161 "../tests/keys" + {"typeOfProcessedData",2156}, + {""}, +#line 1036 "../tests/keys" + {"latitudeOfThePolePoint",1031}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1448 "../tests/keys" + {"offsetSection1",1443}, + {""}, +#line 96 "../tests/keys" + {"ITERATOR",91}, + {""}, {""}, {""}, {""}, +#line 1491 "../tests/keys" + {"originatingCentreOfAnalysis",1486}, + {""}, {""}, {""}, {""}, +#line 1730 "../tests/keys" + {"reservedSection2",1725}, + {""}, {""}, {""}, +#line 275 "../tests/keys" + {"_numberOfValues",270}, +#line 1648 "../tests/keys" + {"produceLargeConstantFields",1643}, + {""}, +#line 642 "../tests/keys" + {"deleteLocalDefinition",637}, + {""}, +#line 1621 "../tests/keys" + {"presentTrend4",1616}, + {""}, +#line 1034 "../tests/keys" + {"latitudeOfTangencyPoint",1029}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1900 "../tests/keys" + {"section3",1895}, + {""}, {""}, {""}, {""}, +#line 565 "../tests/keys" + {"coordinateFlag1",560}, + {""}, {""}, {""}, {""}, {""}, +#line 1333 "../tests/keys" + {"numberOfDataPointsExpected",1328}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 1453 "../tests/keys" + {"offsetSection4",1448}, + {""}, {""}, {""}, {""}, +#line 1038 "../tests/keys" + {"latitudeOfTheSouthernPoleOfProjection",1033}, +#line 815 "../tests/keys" + {"firstDimensionCoordinateValueDefinition",810}, +#line 1449 "../tests/keys" + {"offsetSection10",1444}, + {""}, +#line 2255 "../tests/keys" + {"visibilityInKilometresTrend2",2250}, + {""}, {""}, +#line 1806 "../tests/keys" + {"scaleFactorOfCentralWaveNumber",1801}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1632 "../tests/keys" + {"presentWeather3Present",1627}, + {""}, +#line 1205 "../tests/keys" + {"md5Headers",1200}, + {""}, {""}, {""}, {""}, +#line 1213 "../tests/keys" + {"md5Section6",1208}, + {""}, {""}, +#line 502 "../tests/keys" + {"cloudsTitle4Trend3",497}, +#line 1141 "../tests/keys" + {"longitudeOfThePolePointInDegrees",1136}, + {""}, +#line 103 "../tests/keys" + {"LLCOSP",98}, + {""}, {""}, {""}, {""}, +#line 512 "../tests/keys" + {"clusterMember7",507}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 186 "../tests/keys" + {"NrInRadiusOfEarth",181}, + {""}, +#line 1108 "../tests/keys" + {"localTablesVersion",1103}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1117 "../tests/keys" + {"longitudeLastInDegrees",1112}, + {""}, {""}, {""}, {""}, {""}, +#line 556 "../tests/keys" + {"coordinate2End",551}, + {""}, {""}, {""}, +#line 1679 "../tests/keys" + {"radiusOfTheEarth",1674}, + {""}, {""}, {""}, +#line 1014 "../tests/keys" + {"latitudeLastInDegrees",1009}, +#line 1735 "../tests/keys" + {"resolutionAndComponentFlags2",1730}, + {""}, {""}, {""}, {""}, +#line 1857 "../tests/keys" + {"scanningMode7",1852}, + {""}, {""}, {""}, +#line 660 "../tests/keys" + {"distanceFromTubeToEnsembleMean",655}, + {""}, {""}, {""}, +#line 755 "../tests/keys" + {"experimentVersionNumberOfAnalysis",750}, + {""}, +#line 1990 "../tests/keys" + {"southEastLongitudeOfVerficationArea",1985}, +#line 1727 "../tests/keys" + {"reserved3",1722}, +#line 479 "../tests/keys" + {"cloudsCode4",474}, + {""}, {""}, +#line 529 "../tests/keys" + {"commonBlock",524}, + {""}, {""}, +#line 1493 "../tests/keys" + {"originatorLocalTemplateNumber",1488}, + {""}, {""}, {""}, {""}, +#line 1638 "../tests/keys" + {"pressureUnits",1633}, + {""}, {""}, +#line 994 "../tests/keys" + {"jScansPositively",989}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2157 "../tests/keys" + {"typeOfOriginalFieldValues",2152}, +#line 1308 "../tests/keys" + {"numberOfBits",1303}, +#line 1382 "../tests/keys" + {"numberOfPointsAlongSecondAxis",1377}, + {""}, +#line 788 "../tests/keys" + {"extractDateTimeYearRank",783}, + {""}, {""}, {""}, {""}, +#line 1050 "../tests/keys" + {"legacyGaussSubarea",1045}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1920 "../tests/keys" + {"section7Length",1915}, + {""}, {""}, {""}, {""}, {""}, #line 868 "../tests/keys" {"gribTablesVersionNo",863}, -#line 579 "../tests/keys" - {"correction3",574}, {""}, {""}, -#line 2049 "../tests/keys" - {"subcentreOfAnalysis",2044}, +#line 1840 "../tests/keys" + {"scaledValueOfLowerLimit",1835}, +#line 553 "../tests/keys" + {"coordinate1End",548}, {""}, -#line 386 "../tests/keys" - {"cfVarNameECMF",381}, +#line 1890 "../tests/keys" + {"section11Pointer",1885}, + {""}, +#line 1436 "../tests/keys" + {"offsetBSection9",1431}, {""}, {""}, -#line 2234 "../tests/keys" - {"verificationYear",2229}, - {""}, -#line 247 "../tests/keys" - {"WRAP",242}, - {""}, -#line 2282 "../tests/keys" - {"windSpeedTrend2",2277}, -#line 577 "../tests/keys" - {"correction2",572}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 895 "../tests/keys" - {"heightPressureEtcOfLevels",890}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1844 "../tests/keys" - {"scaledValueOfSecondWavelength",1839}, - {""}, -#line 554 "../tests/keys" - {"coordinate1Flag",549}, - {""}, -#line 1768 "../tests/keys" - {"runwayDesignatorState1",1763}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1912 "../tests/keys" - {"section6",1907}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1317 "../tests/keys" - {"numberOfClusterHighResolution",1312}, -#line 1448 "../tests/keys" - {"offsetSection2",1443}, -#line 1052 "../tests/keys" - {"lengthOf4DvarWindow",1047}, - {""}, -#line 2120 "../tests/keys" - {"totalNumberOfGridPoints",2115}, - {""}, +#line 1944 "../tests/keys" + {"section_10",1939}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2119 "../tests/keys" + {"totalNumberOfDataValuesMissingInStatisticalProcess",2114}, + {""}, {""}, {""}, {""}, +#line 2090 "../tests/keys" + {"tiggeLocalVersion",2085}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 1609 "../tests/keys" + {"postAuxiliaryArrayPresent",1604}, +#line 309 "../tests/keys" + {"azimuthalWidth",304}, + {""}, {""}, {""}, {""}, +#line 2256 "../tests/keys" + {"visibilityInKilometresTrend3",2251}, + {""}, {""}, {""}, {""}, {""}, #line 107 "../tests/keys" {"La2",102}, - {""}, {""}, +#line 490 "../tests/keys" + {"cloudsTitle2Trend1",485}, + {""}, #line 114 "../tests/keys" {"Lar2",109}, -#line 1985 "../tests/keys" - {"southEastLatitudeOfVerficationArea",1980}, {""}, {""}, +#line 1755 "../tests/keys" + {"runwayDepositState1",1750}, #line 124 "../tests/keys" {"Lo2",119}, - {""}, +#line 86 "../tests/keys" + {"HDF5str",81}, #line 119 "../tests/keys" {"Latin2",114}, #line 142 "../tests/keys" {"Lor2",137}, -#line 1480 "../tests/keys" - {"orderOfSpatialDifferencing",1475}, {""}, {""}, {""}, -#line 1916 "../tests/keys" - {"section7",1911}, - {""}, {""}, {""}, -#line 1379 "../tests/keys" - {"numberOfPointsAlongSecondAxis",1374}, +#line 1999 "../tests/keys" + {"spaceUnitFlag",1994}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1428 "../tests/keys" + {"offsetAfterBitmap",1423}, + {""}, +#line 493 "../tests/keys" + {"cloudsTitle2Trend4",488}, + {""}, {""}, {""}, {""}, +#line 806 "../tests/keys" + {"falseEasting",801}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 372 "../tests/keys" + {"centralClusterDefinition",367}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2274 "../tests/keys" + {"windDirectionTrend2",2269}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1758 "../tests/keys" + {"runwayDepositState4",1753}, + {""}, {""}, {""}, {""}, +#line 1736 "../tests/keys" + {"resolutionAndComponentFlags3",1731}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1699 "../tests/keys" + {"recentWeatherTry",1694}, +#line 1127 "../tests/keys" + {"longitudeOfLastGridPointInDegrees",1122}, +#line 1880 "../tests/keys" + {"secondaryMissingValueSubstitute",1875}, + {""}, {""}, +#line 485 "../tests/keys" + {"cloudsTitle1Trend1",480}, + {""}, {""}, {""}, +#line 1040 "../tests/keys" + {"latitudeWhereDxAndDyAreSpecified",1035}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1843 "../tests/keys" + {"scaledValueOfPrimeMeridianOffset",1838}, + {""}, +#line 1771 "../tests/keys" + {"runwayDesignatorState1",1766}, + {""}, {""}, {""}, {""}, {""}, +#line 787 "../tests/keys" + {"extractDateTimeYearEnd",782}, +#line 1041 "../tests/keys" + {"latitudeWhereDxAndDyAreSpecifiedInDegrees",1036}, + {""}, {""}, +#line 488 "../tests/keys" + {"cloudsTitle1Trend4",483}, + {""}, {""}, {""}, +#line 1718 "../tests/keys" + {"reflectivityCalibrationConstant",1713}, + {""}, {""}, {""}, {""}, +#line 1219 "../tests/keys" + {"meanRVR1",1214}, +#line 853 "../tests/keys" + {"generalExtended2ordr",848}, + {""}, {""}, {""}, +#line 2078 "../tests/keys" + {"theHindcastMarsStream",2073}, +#line 616 "../tests/keys" + {"dateOfSSTFieldUsed",611}, + {""}, +#line 1774 "../tests/keys" + {"runwayDesignatorState4",1769}, + {""}, {""}, {""}, {""}, +#line 1244 "../tests/keys" + {"minutesAfterReferenceTimeOfDataCutoff",1239}, + {""}, +#line 1646 "../tests/keys" + {"probabilityTypeName",1641}, + {""}, {""}, {""}, {""}, {""}, +#line 1019 "../tests/keys" + {"latitudeOfFirstGridPoint",1014}, + {""}, +#line 978 "../tests/keys" + {"is_s2s",973}, + {""}, {""}, +#line 993 "../tests/keys" + {"jPointsAreConsecutive",988}, +#line 679 "../tests/keys" + {"earthMinorAxisInMetres",674}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 840 "../tests/keys" + {"formatVersionMajorNumber",835}, + {""}, {""}, +#line 1302 "../tests/keys" + {"numberInMixedCoordinateDefinition",1297}, + {""}, +#line 42 "../tests/keys" + {"DjInMetres",37}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1204 "../tests/keys" + {"md5GridSection",1199}, + {""}, +#line 1611 "../tests/keys" + {"preBitmapValues",1606}, + {""}, {""}, +#line 1222 "../tests/keys" + {"meanRVR4",1217}, + {""}, {""}, +#line 1847 "../tests/keys" + {"scaledValueOfSecondWavelength",1842}, +#line 741 "../tests/keys" + {"expandedCrex_scales",736}, + {""}, {""}, {""}, {""}, +#line 1387 "../tests/keys" + {"numberOfPointsInDomain",1382}, + {""}, {""}, +#line 249 "../tests/keys" + {"X1",244}, + {""}, {""}, {""}, {""}, {""}, +#line 1100 "../tests/keys" + {"localLongitude1",1095}, + {""}, {""}, +#line 742 "../tests/keys" + {"expandedCrex_units",737}, +#line 2237 "../tests/keys" + {"verificationYear",2232}, + {""}, {""}, +#line 2162 "../tests/keys" + {"typeOfSSTFieldUsed",2157}, +#line 743 "../tests/keys" + {"expandedCrex_widths",738}, +#line 248 "../tests/keys" + {"WRAPstr",243}, + {""}, {""}, +#line 379 "../tests/keys" + {"centreForTable2",374}, + {""}, {""}, {""}, {""}, +#line 1097 "../tests/keys" + {"localLatitude1",1092}, +#line 1330 "../tests/keys" + {"numberOfDataBinsAlongRadials",1325}, + {""}, {""}, {""}, +#line 317 "../tests/keys" + {"baseTimeOfThisLeg",312}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 579 "../tests/keys" + {"correction3",574}, +#line 626 "../tests/keys" + {"dayOfTheYearDate",621}, + {""}, +#line 1292 "../tests/keys" + {"northWestLatitudeOfVerficationArea",1287}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 639 "../tests/keys" + {"definitionFilesVersion",634}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 751 "../tests/keys" + {"expandedUnits",746}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 195 "../tests/keys" + {"P2",190}, + {""}, {""}, +#line 1619 "../tests/keys" + {"presentTrend2",1614}, +#line 491 "../tests/keys" + {"cloudsTitle2Trend2",486}, + {""}, {""}, {""}, {""}, +#line 315 "../tests/keys" + {"baseDateOfThisLeg",310}, + {""}, {""}, {""}, +#line 2189 "../tests/keys" + {"unitOfTimeRange",2184}, + {""}, +#line 1211 "../tests/keys" + {"md5Section4",1206}, + {""}, +#line 375 "../tests/keys" + {"centralLongitudeInMicrodegrees",370}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1987 "../tests/keys" + {"southEastLatitudeOfLPOArea",1982}, + {""}, {""}, {""}, {""}, +#line 2099 "../tests/keys" + {"timeCoordinateDefinition",2094}, + {""}, {""}, {""}, {""}, {""}, +#line 1451 "../tests/keys" + {"offsetSection2",1446}, + {""}, +#line 1269 "../tests/keys" + {"monthlyVerificationYear",1264}, + {""}, {""}, +#line 2049 "../tests/keys" + {"subSetJ",2044}, + {""}, {""}, {""}, {""}, +#line 818 "../tests/keys" + {"firstLatitudeInDegrees",813}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, #line 319 "../tests/keys" {"beginDayTrend1",314}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 1136 "../tests/keys" + {"longitudeOfSubSatellitePoint",1131}, + {""}, {""}, +#line 1817 "../tests/keys" + {"scaleFactorOfMajorAxisOfOblateSpheroidEarth",1812}, {""}, {""}, {""}, {""}, -#line 765 "../tests/keys" - {"extractAreaLatitudeRank",760}, - {""}, {""}, -#line 864 "../tests/keys" - {"grib2LocalSectionPresent",859}, - {""}, {""}, -#line 1815 "../tests/keys" - {"scaleFactorOfMinorAxisOfOblateSpheroidEarth",1810}, - {""}, -#line 1887 "../tests/keys" - {"section11Pointer",1882}, - {""}, -#line 1182 "../tests/keys" - {"marsStream2",1177}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2161 "../tests/keys" - {"typeOfSizeInterval",2156}, -#line 755 "../tests/keys" - {"experimentVersionNumberOfAnalysis",750}, +#line 486 "../tests/keys" + {"cloudsTitle1Trend2",481}, + {""}, {""}, {""}, {""}, +#line 1670 "../tests/keys" + {"qualityControlIndicator",1665}, + {""}, {""}, {""}, {""}, +#line 1137 "../tests/keys" + {"longitudeOfSubSatellitePointInDegrees",1132}, {""}, {""}, {""}, -#line 858 "../tests/keys" - {"getNumberOfValues",853}, - {""}, {""}, {""}, -#line 548 "../tests/keys" - {"coordAveraging0",543}, +#line 826 "../tests/keys" + {"flagShowingPostAuxiliaryArrayInUse",821}, {""}, {""}, -#line 981 "../tests/keys" - {"isectionNumber2",976}, - {""}, -#line 1289 "../tests/keys" - {"northWestLatitudeOfLPOArea",1284}, - {""}, -#line 2111 "../tests/keys" - {"totalAerosolBinsNumbers",2106}, -#line 1890 "../tests/keys" - {"section1Padding",1885}, - {""}, -#line 1732 "../tests/keys" - {"resolutionAndComponentFlags2",1727}, +#line 1772 "../tests/keys" + {"runwayDesignatorState2",1767}, {""}, {""}, {""}, -#line 605 "../tests/keys" - {"dataSubCategory",600}, -#line 2260 "../tests/keys" - {"weightAppliedToClimateMonth1",2255}, +#line 40 "../tests/keys" + {"DjGiven",35}, + {""}, +#line 1035 "../tests/keys" + {"latitudeOfThePoleOfStretching",1030}, + {""}, {""}, {""}, {""}, +#line 2134 "../tests/keys" + {"tsectionNumber3",2129}, + {""}, +#line 982 "../tests/keys" + {"isectionNumber3",977}, {""}, {""}, -#line 1752 "../tests/keys" - {"runwayDepositState1",1747}, -#line 774 "../tests/keys" - {"extractDateTimeHourEnd",769}, +#line 322 "../tests/keys" + {"beginDayTrend4",317}, {""}, {""}, {""}, -#line 642 "../tests/keys" - {"deleteLocalDefinition",637}, - {""}, -#line 1131 "../tests/keys" - {"longitudeOfSouthernPole",1126}, +#line 617 "../tests/keys" + {"dateSSTFieldUsed",612}, {""}, {""}, -#line 178 "../tests/keys" - {"NUT",173}, +#line 2285 "../tests/keys" + {"windSpeedTrend2",2280}, + {""}, +#line 1277 "../tests/keys" + {"nameECMF",1272}, {""}, {""}, {""}, -#line 863 "../tests/keys" - {"grib2LocalSectionNumber",858}, +#line 2275 "../tests/keys" + {"windDirectionTrend3",2270}, + {""}, {""}, {""}, {""}, +#line 161 "../tests/keys" + {"N1",156}, +#line 1644 "../tests/keys" + {"probProductDefinition",1639}, + {""}, {""}, {""}, +#line 2153 "../tests/keys" + {"typeOfIntervalForFirstAndSecondSize",2148}, + {""}, +#line 539 "../tests/keys" + {"conceptsMasterDir",534}, +#line 1681 "../tests/keys" + {"rangeBinSpacing",1676}, + {""}, +#line 1129 "../tests/keys" + {"longitudeOfReferencePoint",1124}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1439 "../tests/keys" - {"offsetEndSection4",1434}, -#line 1757 "../tests/keys" - {"runwayDepthOfDepositCodeState2",1752}, +#line 1130 "../tests/keys" + {"longitudeOfReferencePointInDegrees",1125}, + {""}, {""}, {""}, +#line 1094 "../tests/keys" + {"localFlagLatestVersion",1089}, + {""}, {""}, {""}, {""}, +#line 1158 "../tests/keys" + {"marsClass1",1153}, +#line 1738 "../tests/keys" + {"resolutionAndComponentFlags6",1733}, +#line 1622 "../tests/keys" + {"presentWeather1Present",1617}, + {""}, {""}, {""}, +#line 1426 "../tests/keys" + {"octetAtWichPackedDataBegins",1421}, + {""}, {""}, {""}, {""}, {""}, +#line 492 "../tests/keys" + {"cloudsTitle2Trend3",487}, + {""}, {""}, {""}, {""}, {""}, +#line 775 "../tests/keys" + {"extractDateTimeHourRank",770}, +#line 913 "../tests/keys" + {"iDirectionIncrementGridLength",908}, +#line 2195 "../tests/keys" + {"unitsECMF",2190}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2077 "../tests/keys" + {"templatesMasterDir",2072}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 977 "../tests/keys" + {"is_rotated_grid",972}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1668 "../tests/keys" + {"qnhUnits",1663}, + {""}, +#line 1951 "../tests/keys" + {"section_7",1946}, + {""}, {""}, {""}, {""}, +#line 696 "../tests/keys" + {"endDayTrend3",691}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 2154 "../tests/keys" + {"typeOfIntervalForFirstAndSecondWavelength",2149}, +#line 1399 "../tests/keys" + {"numberOfSingularVectorsComputed",1394}, +#line 1580 "../tests/keys" + {"parameterUnits",1575}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 552 "../tests/keys" + {"coordAveragingTims",547}, + {""}, {""}, {""}, {""}, {""}, +#line 1940 "../tests/keys" + {"section_07",1935}, + {""}, {""}, {""}, +#line 1430 "../tests/keys" + {"offsetAfterData",1425}, {""}, #line 487 "../tests/keys" {"cloudsTitle1Trend3",482}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1665 "../tests/keys" - {"qnhUnits",1660}, {""}, {""}, -#line 1328 "../tests/keys" - {"numberOfDataBinsAlongRadials",1323}, - {""}, -#line 616 "../tests/keys" - {"dateOfSSTFieldUsed",611}, - {""}, -#line 1877 "../tests/keys" - {"secondaryMissingValueSubstitute",1872}, - {""}, {""}, {""}, -#line 2158 "../tests/keys" - {"typeOfProcessedData",2153}, -#line 195 "../tests/keys" - {"P2",190}, - {""}, {""}, -#line 1125 "../tests/keys" - {"longitudeOfLastGridPoint",1120}, - {""}, {""}, {""}, -#line 397 "../tests/keys" - {"checkInternalVersion",392}, - {""}, {""}, {""}, -#line 1577 "../tests/keys" - {"parameterUnits",1572}, - {""}, {""}, -#line 2186 "../tests/keys" - {"unitOfTimeRange",2181}, - {""}, -#line 552 "../tests/keys" - {"coordAveragingTims",547}, - {""}, {""}, {""}, {""}, {""}, -#line 1769 "../tests/keys" - {"runwayDesignatorState2",1764}, - {""}, {""}, {""}, {""}, {""}, -#line 2281 "../tests/keys" - {"windSpeedTrend1",2276}, - {""}, {""}, {""}, {""}, {""}, -#line 1135 "../tests/keys" - {"longitudeOfSubSatellitePoint",1130}, - {""}, {""}, {""}, {""}, {""}, -#line 309 "../tests/keys" - {"azimuthalWidth",304}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 351 "../tests/keys" - {"bufrHeaderCentre",346}, - {""}, {""}, {""}, -#line 176 "../tests/keys" - {"NRj",171}, -#line 1136 "../tests/keys" - {"longitudeOfSubSatellitePointInDegrees",1131}, -#line 2194 "../tests/keys" - {"unitsOfFirstFixedSurface",2189}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1290 "../tests/keys" - {"northWestLatitudeOfVerficationArea",1285}, -#line 2159 "../tests/keys" - {"typeOfSSTFieldUsed",2154}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 498 "../tests/keys" - {"cloudsTitle3Trend4",493}, +#line 1915 "../tests/keys" + {"section6",1910}, {""}, {""}, {""}, {""}, -#line 1137 "../tests/keys" - {"longitudeOfTangencyPoint",1132}, - {""}, {""}, {""}, {""}, -#line 2166 "../tests/keys" - {"typeOfWavelengthInterval",2161}, -#line 2253 "../tests/keys" - {"visibilityInKilometresTrend3",2248}, - {""}, {""}, -#line 503 "../tests/keys" - {"cloudsTitle4Trend4",498}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 696 "../tests/keys" - {"endDayTrend3",691}, -#line 1893 "../tests/keys" - {"section2Padding",1888}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1302 "../tests/keys" - {"numberInTheGridCoordinateList",1297}, - {""}, {""}, {""}, -#line 695 "../tests/keys" - {"endDayTrend2",690}, - {""}, {""}, -#line 617 "../tests/keys" - {"dateSSTFieldUsed",612}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 815 "../tests/keys" - {"firstDimensionCoordinateValueDefinition",810}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1762 "../tests/keys" - {"runwayDepthOfDepositState3",1757}, - {""}, {""}, {""}, {""}, {""}, -#line 751 "../tests/keys" - {"expandedUnits",746}, +#line 1773 "../tests/keys" + {"runwayDesignatorState3",1768}, {""}, -#line 1128 "../tests/keys" - {"longitudeOfReferencePoint",1123}, -#line 1260 "../tests/keys" - {"monthOfAnalysis",1255}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1928 "../tests/keys" - {"sectionLengthLimitForProbability",1923}, - {""}, {""}, #line 494 "../tests/keys" {"cloudsTitle3",489}, - {""}, -#line 977 "../tests/keys" - {"is_rotated_grid",972}, - {""}, -#line 1129 "../tests/keys" - {"longitudeOfReferencePointInDegrees",1124}, - {""}, {""}, -#line 1036 "../tests/keys" - {"latitudeOfThePolePoint",1031}, -#line 1221 "../tests/keys" - {"meanRVR4",1216}, -#line 2087 "../tests/keys" - {"tiggeLocalVersion",2082}, - {""}, {""}, {""}, -#line 489 "../tests/keys" - {"cloudsTitle2",484}, -#line 1608 "../tests/keys" - {"preBitmapValues",1603}, {""}, {""}, {""}, {""}, {""}, -#line 1987 "../tests/keys" - {"southEastLongitudeOfVerficationArea",1982}, -#line 399 "../tests/keys" - {"classOfAnalysis",394}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 2283 "../tests/keys" - {"windSpeedTrend3",2278}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2144 "../tests/keys" - {"typeOfEnsembleForecast",2139}, - {""}, {""}, -#line 1661 "../tests/keys" - {"qfeUnits",1656}, - {""}, {""}, {""}, -#line 1108 "../tests/keys" - {"localTablesVersionNumber",1103}, - {""}, {""}, {""}, -#line 933 "../tests/keys" - {"indicatorOfUnitForTimeIncrement",928}, - {""}, -#line 916 "../tests/keys" - {"iScansNegatively",911}, - {""}, -#line 495 "../tests/keys" - {"cloudsTitle3Trend1",490}, - {""}, {""}, -#line 704 "../tests/keys" - {"endMark",699}, - {""}, {""}, -#line 1038 "../tests/keys" - {"latitudeOfTheSouthernPoleOfProjection",1033}, - {""}, {""}, {""}, {""}, -#line 320 "../tests/keys" - {"beginDayTrend2",315}, - {""}, {""}, -#line 500 "../tests/keys" - {"cloudsTitle4Trend1",495}, -#line 1667 "../tests/keys" - {"qualityControlIndicator",1662}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 610 "../tests/keys" - {"dateOfAnalysis",605}, - {""}, {""}, -#line 626 "../tests/keys" - {"dayOfTheYearDate",621}, - {""}, -#line 2101 "../tests/keys" - {"timeOfAnalysis",2096}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 2298 "../tests/keys" - {"xDirectionGridLength",2293}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1753 "../tests/keys" - {"runwayDepositState2",1748}, - {""}, {""}, {""}, {""}, -#line 254 "../tests/keys" - {"XRInMetres",249}, -#line 1733 "../tests/keys" - {"resolutionAndComponentFlags3",1728}, - {""}, {""}, {""}, {""}, -#line 2131 "../tests/keys" - {"tsectionNumber3",2126}, - {""}, -#line 982 "../tests/keys" - {"isectionNumber3",977}, -#line 2272 "../tests/keys" - {"windDirectionTrend3",2267}, -#line 1617 "../tests/keys" - {"presentTrend3",1612}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 2311 "../tests/keys" - {"yearOfAnalysis",2306}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1758 "../tests/keys" - {"runwayDepthOfDepositCodeState3",1753}, - {""}, -#line 2139 "../tests/keys" - {"typeOfAnalysis",2134}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 991 "../tests/keys" - {"jDirectionIncrementInDegrees",986}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2039 "../tests/keys" - {"subDefinitions2",2034}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1194 "../tests/keys" - {"matchLandType",1189}, - {""}, {""}, {""}, {""}, {""}, -#line 1150 "../tests/keys" - {"ls_labeling",1145}, - {""}, -#line 1797 "../tests/keys" - {"sampleSizeOfModelClimate",1792}, - {""}, {""}, {""}, {""}, {""}, -#line 741 "../tests/keys" - {"expandedCrex_scales",736}, - {""}, {""}, -#line 1292 "../tests/keys" - {"northWestLongitudeOfVerficationArea",1287}, - {""}, {""}, -#line 1770 "../tests/keys" - {"runwayDesignatorState3",1765}, - {""}, {""}, {""}, -#line 2074 "../tests/keys" - {"templatesMasterDir",2069}, - {""}, -#line 1827 "../tests/keys" - {"scaledValueOfCentralWaveNumber",1822}, - {""}, {""}, {""}, {""}, -#line 742 "../tests/keys" - {"expandedCrex_units",737}, - {""}, {""}, {""}, {""}, -#line 743 "../tests/keys" - {"expandedCrex_widths",738}, -#line 496 "../tests/keys" - {"cloudsTitle3Trend2",491}, -#line 1735 "../tests/keys" - {"resolutionAndComponentFlags6",1730}, - {""}, {""}, #line 1791 "../tests/keys" - {"runwayFrictionCoefficientState4",1786}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 501 "../tests/keys" - {"cloudsTitle4Trend2",496}, -#line 1736 "../tests/keys" - {"resolutionAndComponentFlags7",1731}, + {"runwayFrictionCoefficientState1",1786}, + {""}, {""}, {""}, {""}, +#line 1756 "../tests/keys" + {"runwayDepositState2",1751}, + {""}, +#line 1912 "../tests/keys" + {"section5Length",1907}, + {""}, {""}, {""}, {""}, #line 1787 "../tests/keys" - {"runwayFrictionCoefficientCodeState4",1782}, - {""}, {""}, {""}, {""}, {""}, -#line 1986 "../tests/keys" - {"southEastLongitudeOfLPOArea",1981}, + {"runwayFrictionCoefficientCodeState1",1782}, {""}, {""}, {""}, -#line 903 "../tests/keys" - {"hourOfAnalysis",898}, -#line 1267 "../tests/keys" - {"monthlyVerificationYear",1262}, - {""}, -#line 1213 "../tests/keys" - {"md5Section7",1208}, -#line 249 "../tests/keys" - {"X1",244}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 2150 "../tests/keys" - {"typeOfIntervalForFirstAndSecondSize",2145}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 493 "../tests/keys" - {"cloudsTitle2Trend4",488}, - {""}, {""}, -#line 156 "../tests/keys" - {"Model_Additional_Information",151}, - {""}, {""}, {""}, -#line 1728 "../tests/keys" - {"reservedSection3",1723}, -#line 1212 "../tests/keys" - {"md5Section6",1207}, -#line 1141 "../tests/keys" - {"longitudeOfTheSouthernPoleOfProjection",1136}, -#line 1641 "../tests/keys" - {"probProductDefinition",1636}, -#line 544 "../tests/keys" - {"constantAntennaElevationAngle",539}, - {""}, {""}, {""}, {""}, {""}, -#line 1900 "../tests/keys" - {"section3Padding",1895}, - {""}, {""}, -#line 1727 "../tests/keys" - {"reservedSection2",1722}, - {""}, -#line 1218 "../tests/keys" - {"meanRVR1",1213}, - {""}, -#line 1268 "../tests/keys" - {"multiplicationFactorForLatLong",1263}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1813 "../tests/keys" - {"scaleFactorOfLowerLimit",1808}, - {""}, {""}, {""}, {""}, {""}, -#line 1096 "../tests/keys" - {"localLatitude1",1091}, - {""}, -#line 2024 "../tests/keys" - {"stepInHours",2019}, -#line 2073 "../tests/keys" - {"templatesLocalDir",2068}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1886 "../tests/keys" - {"section11Length",1881}, - {""}, {""}, {""}, {""}, {""}, -#line 1840 "../tests/keys" - {"scaledValueOfPrimeMeridianOffset",1835}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 509 "../tests/keys" - {"clusterMember4",504}, - {""}, {""}, {""}, {""}, {""}, -#line 42 "../tests/keys" - {"DjInMetres",37}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2294 "../tests/keys" - {"windVariableDirectionTrend4",2289}, -#line 197 "../tests/keys" - {"PUnset",192}, - {""}, -#line 2072 "../tests/keys" - {"temperatureAndDewpointPresent",2067}, - {""}, {""}, -#line 419 "../tests/keys" - {"cloudsAbbreviation4",414}, - {""}, -#line 1192 "../tests/keys" - {"matchAerosolBinNumber",1187}, - {""}, {""}, -#line 2151 "../tests/keys" - {"typeOfIntervalForFirstAndSecondWavelength",2146}, - {""}, {""}, {""}, -#line 2038 "../tests/keys" - {"subDefinitions1",2033}, -#line 1788 "../tests/keys" - {"runwayFrictionCoefficientState1",1783}, - {""}, {""}, {""}, {""}, -#line 375 "../tests/keys" - {"centralLongitudeInMicrodegrees",370}, - {""}, -#line 391 "../tests/keys" - {"changeIndicatorTrend4",386}, - {""}, {""}, {""}, {""}, -#line 1784 "../tests/keys" - {"runwayFrictionCoefficientCodeState1",1779}, - {""}, {""}, {""}, -#line 1851 "../tests/keys" - {"scanningMode4",1846}, - {""}, -#line 40 "../tests/keys" - {"DjGiven",35}, -#line 1277 "../tests/keys" - {"nameOfSecondFixedSurface",1272}, - {""}, {""}, {""}, {""}, -#line 639 "../tests/keys" - {"definitionFilesVersion",634}, - {""}, {""}, {""}, -#line 957 "../tests/keys" - {"isCavok",952}, -#line 1449 "../tests/keys" - {"offsetSection3",1444}, -#line 1904 "../tests/keys" - {"section4Length",1899}, - {""}, {""}, -#line 1275 "../tests/keys" - {"nameECMF",1270}, - {""}, {""}, -#line 688 "../tests/keys" - {"efas_post_proc",683}, - {""}, {""}, -#line 2154 "../tests/keys" - {"typeOfOriginalFieldValues",2149}, - {""}, {""}, {""}, {""}, -#line 490 "../tests/keys" - {"cloudsTitle2Trend1",485}, - {""}, {""}, -#line 1908 "../tests/keys" - {"section5",1903}, - {""}, {""}, -#line 867 "../tests/keys" - {"gribMasterTablesVersionNumber",862}, - {""}, {""}, -#line 367 "../tests/keys" - {"ceilingAndVisibilityOK",362}, - {""}, {""}, -#line 1806 "../tests/keys" - {"scaleFactorOfEarthMajorAxis",1801}, -#line 1807 "../tests/keys" - {"scaleFactorOfEarthMinorAxis",1802}, -#line 1291 "../tests/keys" - {"northWestLongitudeOfLPOArea",1286}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1087 "../tests/keys" - {"localDefNumberTwo",1082}, - {""}, {""}, {""}, -#line 1795 "../tests/keys" - {"runwaySideCodeState4",1790}, - {""}, {""}, {""}, -#line 199 "../tests/keys" - {"P_INST",194}, -#line 559 "../tests/keys" - {"coordinate3Flag",554}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1403 "../tests/keys" - {"numberOfUnexpandedDescriptors",1398}, - {""}, {""}, {""}, {""}, -#line 562 "../tests/keys" - {"coordinate4Flag",557}, - {""}, -#line 2160 "../tests/keys" - {"typeOfSecondFixedSurface",2155}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2192 "../tests/keys" - {"unitsECMF",2187}, - {""}, {""}, -#line 682 "../tests/keys" - {"easternLongitudeOfClusterDomain",677}, -#line 317 "../tests/keys" - {"baseTimeOfThisLeg",312}, - {""}, {""}, {""}, {""}, {""}, -#line 2243 "../tests/keys" - {"versionOfModelClimate",2238}, - {""}, {""}, {""}, -#line 1435 "../tests/keys" - {"offsetBeforeData",1430}, - {""}, {""}, -#line 274 "../tests/keys" - {"_leg_number",269}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 529 "../tests/keys" - {"commonBlock",524}, - {""}, {""}, {""}, -#line 2263 "../tests/keys" - {"westernLongitudeOfClusterDomain",2258}, - {""}, {""}, {""}, {""}, -#line 553 "../tests/keys" - {"coordinate1End",548}, -#line 1406 "../tests/keys" - {"numberOfUsedTileAttributes",1401}, -#line 1364 "../tests/keys" - {"numberOfMissingInStatisticalProcess",1359}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 388 "../tests/keys" - {"changeIndicatorTrend1",383}, - {""}, {""}, #line 464 "../tests/keys" {"cloudsCode1",459}, -#line 1588 "../tests/keys" - {"patch_precip_fp",1583}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1645 "../tests/keys" - {"produceLargeConstantFields",1640}, -#line 1789 "../tests/keys" - {"runwayFrictionCoefficientState2",1784}, -#line 310 "../tests/keys" - {"backgroundGeneratingProcessIdentifier",305}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1078 "../tests/keys" - {"listOfEnsembleForecastNumbers",1073}, -#line 1889 "../tests/keys" - {"section1Length",1884}, - {""}, -#line 1397 "../tests/keys" - {"numberOfSingularVectorsEvolved",1392}, -#line 1785 "../tests/keys" - {"runwayFrictionCoefficientCodeState2",1780}, - {""}, {""}, {""}, {""}, -#line 315 "../tests/keys" - {"baseDateOfThisLeg",310}, -#line 2226 "../tests/keys" - {"variationOfVisibilityDirectionTrend4",2221}, {""}, {""}, -#line 1116 "../tests/keys" - {"longitudeLastInDegrees",1111}, - {""}, {""}, {""}, {""}, {""}, -#line 1400 "../tests/keys" - {"numberOfTensOfThousandsOfYearsOfOffset",1395}, -#line 1157 "../tests/keys" - {"marsClass1",1152}, - {""}, {""}, -#line 497 "../tests/keys" - {"cloudsTitle3Trend3",492}, -#line 825 "../tests/keys" - {"flagForNormalOrStaggeredGrid",820}, +#line 1088 "../tests/keys" + {"localDefNumberTwo",1083}, {""}, {""}, {""}, -#line 148 "../tests/keys" - {"MinuteOfModelVersion",143}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 638 "../tests/keys" - {"default_step_units",633}, -#line 491 "../tests/keys" - {"cloudsTitle2Trend2",486}, -#line 502 "../tests/keys" - {"cloudsTitle4Trend3",497}, - {""}, -#line 251 "../tests/keys" - {"X2",246}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1452 "../tests/keys" - {"offsetSection6",1447}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1197 "../tests/keys" - {"matrixBitmapsPresent",1192}, -#line 1838 "../tests/keys" - {"scaledValueOfMajorAxisOfOblateSpheroidEarth",1833}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 1219 "../tests/keys" - {"meanRVR2",1214}, -#line 1453 "../tests/keys" - {"offsetSection7",1448}, -#line 505 "../tests/keys" - {"clusterMember1",500}, - {""}, -#line 1398 "../tests/keys" - {"numberOfStepsUsedForClustering",1393}, - {""}, -#line 1093 "../tests/keys" - {"localFlagLatestVersion",1088}, - {""}, -#line 1997 "../tests/keys" - {"spacingOfBinsAlongRadials",1992}, -#line 1405 "../tests/keys" - {"numberOfUsedSpatialTiles",1400}, -#line 2216 "../tests/keys" - {"uvRelativeToGrid",2211}, - {""}, {""}, -#line 1387 "../tests/keys" - {"numberOfRadarSitesUsed",1382}, - {""}, {""}, -#line 1097 "../tests/keys" - {"localLatitude2",1092}, - {""}, -#line 2291 "../tests/keys" - {"windVariableDirectionTrend1",2286}, - {""}, -#line 853 "../tests/keys" - {"generalExtended2ordr",848}, - {""}, {""}, {""}, -#line 404 "../tests/keys" - {"cloudsAbbreviation1",399}, -#line 1035 "../tests/keys" - {"latitudeOfThePoleOfStretching",1030}, - {""}, {""}, -#line 2147 "../tests/keys" - {"typeOfGeneratingProcess",2142}, - {""}, -#line 506 "../tests/keys" - {"clusterMember10",501}, - {""}, {""}, {""}, {""}, {""}, -#line 1975 "../tests/keys" - {"sizeOfLength",1970}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 566 "../tests/keys" - {"coordinateFlag2",561}, #line 764 "../tests/keys" {"extractAreaEastLongitude",759}, - {""}, {""}, {""}, -#line 2070 "../tests/keys" - {"tempPressureUnits",2065}, - {""}, {""}, {""}, {""}, -#line 917 "../tests/keys" - {"iScansPositively",912}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 389 "../tests/keys" - {"changeIndicatorTrend2",384}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 848 "../tests/keys" - {"g1conceptsLocalDirAll",843}, - {""}, {""}, -#line 2223 "../tests/keys" - {"variationOfVisibilityDirectionTrend1",2218}, - {""}, {""}, {""}, -#line 1300 "../tests/keys" - {"numberInMixedCoordinateDefinition",1295}, - {""}, {""}, {""}, -#line 2100 "../tests/keys" - {"timeIncrementBetweenSuccessiveFields",2095}, - {""}, {""}, {""}, -#line 1892 "../tests/keys" - {"section2Length",1887}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1313 "../tests/keys" - {"numberOfBytesPerInteger",1308}, -#line 1792 "../tests/keys" - {"runwaySideCodeState1",1787}, {""}, -#line 159 "../tests/keys" - {"MonthOfModelVersion",154}, #line 613 "../tests/keys" {"dateOfIceFieldUsed",608}, - {""}, {""}, -#line 1396 "../tests/keys" - {"numberOfSingularVectorsComputed",1391}, {""}, -#line 1870 "../tests/keys" - {"secondaryBitMap",1865}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1440 "../tests/keys" - {"offsetFreeFormData",1435}, - {""}, {""}, -#line 1211 "../tests/keys" - {"md5Section5",1206}, - {""}, {""}, {""}, -#line 1945 "../tests/keys" - {"section_4",1940}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 321 "../tests/keys" - {"beginDayTrend3",316}, +#line 1794 "../tests/keys" + {"runwayFrictionCoefficientState4",1789}, +#line 146 "../tests/keys" + {"METARstr",141}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1590 "../tests/keys" - {"pentagonalResolutionParameterK",1585}, - {""}, {""}, -#line 712 "../tests/keys" - {"endMonthTrend4",707}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 557 "../tests/keys" - {"coordinate2Flag",552}, - {""}, -#line 1442 "../tests/keys" - {"offsetFromReferenceOfFirstTime",1437}, - {""}, {""}, -#line 1754 "../tests/keys" - {"runwayDepositState3",1749}, - {""}, {""}, -#line 98 "../tests/keys" - {"J",93}, - {""}, {""}, {""}, -#line 913 "../tests/keys" - {"iDirectionIncrementGridLength",908}, - {""}, {""}, {""}, {""}, -#line 1382 "../tests/keys" - {"numberOfPointsAlongXAxis",1377}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 166 "../tests/keys" - {"NC1",161}, - {""}, -#line 720 "../tests/keys" - {"endStepInHours",715}, - {""}, {""}, -#line 772 "../tests/keys" - {"extractDateTimeDayStart",767}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 565 "../tests/keys" - {"coordinateFlag1",560}, -#line 2224 "../tests/keys" - {"variationOfVisibilityDirectionTrend2",2219}, - {""}, {""}, {""}, -#line 2040 "../tests/keys" - {"subLocalDefinition1",2035}, - {""}, {""}, {""}, {""}, {""}, -#line 56 "../tests/keys" - {"Ensemble_Identifier",51}, - {""}, {""}, {""}, {""}, {""}, {""}, +#line 1889 "../tests/keys" + {"section11Length",1884}, #line 1790 "../tests/keys" - {"runwayFrictionCoefficientState3",1785}, - {""}, {""}, {""}, {""}, {""}, -#line 1751 "../tests/keys" - {"runwayDepositCodeState4",1746}, - {""}, {""}, {""}, {""}, {""}, -#line 1786 "../tests/keys" - {"runwayFrictionCoefficientCodeState3",1781}, + {"runwayFrictionCoefficientCodeState4",1785}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 996 "../tests/keys" + {"julianForecastDay",991}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1158 "../tests/keys" - {"marsClass2",1153}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 649 "../tests/keys" - {"diffInHours",644}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1892 "../tests/keys" + {"section1Length",1887}, +#line 1442 "../tests/keys" + {"offsetEndSection4",1437}, + {""}, {""}, {""}, {""}, {""}, +#line 197 "../tests/keys" + {"PUnset",192}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1934 "../tests/keys" - {"section_04",1929}, - {""}, -#line 492 "../tests/keys" - {"cloudsTitle2Trend3",487}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 330 "../tests/keys" - {"beginMinuteTrend4",325}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 945 "../tests/keys" - {"instrumentType",940}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 614 "../tests/keys" - {"dateOfModelVersion",609}, +#line 774 "../tests/keys" + {"extractDateTimeHourEnd",769}, +#line 1620 "../tests/keys" + {"presentTrend3",1615}, {""}, {""}, {""}, {""}, -#line 2103 "../tests/keys" - {"timeOfModelVersion",2098}, -#line 507 "../tests/keys" - {"clusterMember2",502}, +#line 2150 "../tests/keys" + {"typeOfGeneratingProcess",2145}, + {""}, {""}, {""}, {""}, +#line 1907 "../tests/keys" + {"section4Length",1902}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1719 "../tests/keys" - {"representationType",1714}, - {""}, -#line 1983 "../tests/keys" - {"sourceOfGridDefinition",1978}, - {""}, {""}, {""}, -#line 2292 "../tests/keys" - {"windVariableDirectionTrend2",2287}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1198 "../tests/keys" + {"matrixBitmapsPresent",1193}, {""}, {""}, {""}, {""}, {""}, -#line 409 "../tests/keys" - {"cloudsAbbreviation2",404}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1203 "../tests/keys" - {"md5GridSection",1198}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2255 "../tests/keys" - {"visibilityTrend1",2250}, +#line 1294 "../tests/keys" + {"northWestLongitudeOfVerficationArea",1289}, +#line 1452 "../tests/keys" + {"offsetSection3",1447}, + {""}, +#line 1419 "../tests/keys" + {"observationDiagnostic",1414}, + {""}, +#line 1151 "../tests/keys" + {"ls_labeling",1146}, + {""}, +#line 1220 "../tests/keys" + {"meanRVR2",1215}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 2315 "../tests/keys" - {"yearOfModelVersion",2310}, - {""}, {""}, {""}, {""}, -#line 1678 "../tests/keys" - {"rangeBinSpacing",1673}, -#line 1457 "../tests/keys" - {"offsetValuesBy",1452}, - {""}, {""}, {""}, -#line 1977 "../tests/keys" - {"sizeOfPostAuxiliaryArray",1972}, - {""}, -#line 2165 "../tests/keys" - {"typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing",2160}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 390 "../tests/keys" - {"changeIndicatorTrend3",385}, - {""}, {""}, {""}, {""}, -#line 1668 "../tests/keys" - {"qualityValueAssociatedWithParameter",1663}, - {""}, -#line 1940 "../tests/keys" - {"section_1",1935}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1899 "../tests/keys" - {"section3Length",1894}, - {""}, {""}, {""}, -#line 1793 "../tests/keys" - {"runwaySideCodeState2",1788}, - {""}, -#line 157 "../tests/keys" - {"Model_Identifier",152}, +#line 1438 "../tests/keys" + {"offsetBeforeData",1433}, {""}, {""}, {""}, {""}, -#line 1598 "../tests/keys" - {"physicalFlag1",1593}, - {""}, -#line 539 "../tests/keys" - {"conceptsMasterDir",534}, +#line 851 "../tests/keys" + {"gaussianGridName",846}, {""}, {""}, -#line 624 "../tests/keys" - {"dayOfModelVersion",619}, - {""}, {""}, {""}, {""}, -#line 1839 "../tests/keys" - {"scaledValueOfMinorAxisOfOblateSpheroidEarth",1834}, -#line 1249 "../tests/keys" - {"mixedCoordinateDefinition",1244}, - {""}, -#line 327 "../tests/keys" - {"beginMinuteTrend1",322}, -#line 709 "../tests/keys" - {"endMonthTrend1",704}, -#line 1624 "../tests/keys" - {"presentWeather2Present",1619}, - {""}, {""}, {""}, {""}, -#line 1389 "../tests/keys" - {"numberOfReforecastYearsInModelClimate",1384}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1629 "../tests/keys" - {"presentWeather3Present",1624}, - {""}, {""}, {""}, {""}, -#line 338 "../tests/keys" - {"beginYearTrend4",333}, -#line 277 "../tests/keys" - {"accuracyMultipliedByFactor",272}, +#line 1664 "../tests/keys" + {"qfeUnits",1659}, {""}, {""}, {""}, -#line 1132 "../tests/keys" - {"longitudeOfSouthernPoleInDegrees",1127}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 906 "../tests/keys" - {"hourOfModelVersion",901}, -#line 1416 "../tests/keys" - {"observationDiagnostic",1411}, - {""}, -#line 1100 "../tests/keys" - {"localLongitude2",1095}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 658 "../tests/keys" - {"disableGrib1LocalSection",653}, -#line 29 "../tests/keys" - {"CLNOMA",24}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 940 "../tests/keys" - {"inputOverriddenReferenceValues",935}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 479 "../tests/keys" - {"cloudsCode4",474}, - {""}, {""}, -#line 1693 "../tests/keys" - {"realPartOf00",1688}, - {""}, {""}, -#line 1913 "../tests/keys" - {"section6Length",1908}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 818 "../tests/keys" - {"firstLatitudeInDegrees",813}, - {""}, -#line 1917 "../tests/keys" - {"section7Length",1912}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1748 "../tests/keys" - {"runwayDepositCodeState1",1743}, - {""}, -#line 167 "../tests/keys" - {"NC2",162}, +#line 145 "../tests/keys" + {"METAR",140}, + {""}, {""}, {""}, {""}, #line 1385 "../tests/keys" - {"numberOfPointsUsed",1380}, - {""}, {""}, -#line 384 "../tests/keys" - {"cfNameECMF",379}, - {""}, {""}, -#line 103 "../tests/keys" - {"LLCOSP",98}, - {""}, {""}, -#line 1823 "../tests/keys" - {"scaleFactorOfUpperLimit",1818}, + {"numberOfPointsAlongXAxis",1380}, {""}, #line 900 "../tests/keys" {"horizontalDomainTemplate",895}, - {""}, -#line 766 "../tests/keys" - {"extractAreaLongitudeRank",761}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 2041 "../tests/keys" - {"subLocalDefinition2",2036}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2225 "../tests/keys" - {"variationOfVisibilityDirectionTrend3",2220}, - {""}, -#line 593 "../tests/keys" - {"dataCategory",588}, -#line 1931 "../tests/keys" - {"section_01",1926}, - {""}, {""}, {""}, -#line 1869 "../tests/keys" - {"secondOrderValuesDifferentWidths",1864}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 34 "../tests/keys" - {"DayOfModelVersion",29}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 328 "../tests/keys" - {"beginMinuteTrend2",323}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1311 "../tests/keys" - {"numberOfBytesInLocalDefinition",1306}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 169 "../tests/keys" - {"NG",164}, - {""}, {""}, -#line 1099 "../tests/keys" - {"localLongitude1",1094}, - {""}, {""}, -#line 1451 "../tests/keys" - {"offsetSection5",1446}, -#line 1220 "../tests/keys" - {"meanRVR3",1215}, - {""}, -#line 1126 "../tests/keys" - {"longitudeOfLastGridPointInDegrees",1121}, - {""}, -#line 788 "../tests/keys" - {"extractDateTimeYearRank",783}, -#line 1206 "../tests/keys" - {"md5Section1",1201}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1675 "../tests/keys" - {"radiusOfClusterDomain",1670}, - {""}, {""}, -#line 326 "../tests/keys" - {"beginHourTrend4",321}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1783 "../tests/keys" - {"runwayFrictionCodeValueState4",1778}, -#line 2044 "../tests/keys" - {"subLocalDefinitionNumber1",2039}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2075 "../tests/keys" - {"theHindcastMarsStream",2070}, - {""}, {""}, {""}, -#line 118 "../tests/keys" - {"Latin1InDegrees",113}, - {""}, {""}, {""}, {""}, {""}, -#line 1943 "../tests/keys" - {"section_2",1938}, +#line 1250 "../tests/keys" + {"mixedCoordinateDefinition",1245}, {""}, -#line 2289 "../tests/keys" - {"windUnitsTrend4",2284}, - {""}, {""}, {""}, {""}, -#line 372 "../tests/keys" - {"centralClusterDefinition",367}, -#line 1019 "../tests/keys" - {"latitudeOfFirstGridPoint",1014}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2306 "../tests/keys" - {"yDirectionGridLengthInMetres",2301}, -#line 1599 "../tests/keys" - {"physicalFlag2",1594}, - {""}, {""}, {""}, -#line 706 "../tests/keys" - {"endMinuteTrend2",701}, +#line 525 "../tests/keys" + {"codedNumberOfGroups",520}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 251 "../tests/keys" + {"X2",246}, + {""}, {""}, +#line 2246 "../tests/keys" + {"versionOfModelClimate",2241}, + {""}, {""}, +#line 1239 "../tests/keys" + {"minuteOfEndOfOverallTimeInterval",1234}, + {""}, +#line 1867 "../tests/keys" + {"secondOfEndOfOverallTimeInterval",1862}, + {""}, {""}, {""}, +#line 1678 "../tests/keys" + {"radiusOfClusterDomain",1673}, #line 714 "../tests/keys" {"endOfHeadersMarker",709}, {""}, -#line 710 "../tests/keys" - {"endMonthTrend2",705}, - {""}, {""}, -#line 2096 "../tests/keys" - {"timeCoordinateDefinition",2091}, - {""}, {""}, -#line 2046 "../tests/keys" - {"subSetJ",2041}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2043 "../tests/keys" + {"subLocalDefinition1",2038}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1351 "../tests/keys" - {"numberOfGridInReference",1346}, - {""}, {""}, {""}, {""}, -#line 1619 "../tests/keys" - {"presentWeather1Present",1614}, +#line 1098 "../tests/keys" + {"localLatitude2",1093}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1109 "../tests/keys" - {"localUsePresent",1104}, +#line 118 "../tests/keys" + {"Latin1InDegrees",113}, + {""}, +#line 1254 "../tests/keys" + {"modelErrorType",1249}, +#line 1392 "../tests/keys" + {"numberOfReforecastYearsInModelClimate",1387}, +#line 184 "../tests/keys" + {"Nj",179}, {""}, {""}, -#line 2055 "../tests/keys" - {"swapScanningX",2050}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2307 "../tests/keys" - {"yDirectionGridLengthInMillimetres",2302}, - {""}, {""}, {""}, {""}, {""}, -#line 1504 "../tests/keys" - {"padding_grid90_1",1499}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1014 "../tests/keys" - {"latitudeLastInDegrees",1009}, - {""}, {""}, {""}, -#line 1780 "../tests/keys" - {"runwayFrictionCodeValueState1",1775}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1749 "../tests/keys" - {"runwayDepositCodeState2",1744}, - {""}, {""}, {""}, {""}, -#line 230 "../tests/keys" - {"Threshold_Or_Distribution_0_no_1_yes",225}, -#line 1909 "../tests/keys" - {"section5Length",1904}, - {""}, {""}, {""}, {""}, -#line 1926 "../tests/keys" - {"section9UniqueIdentifier",1921}, - {""}, {""}, {""}, -#line 1896 "../tests/keys" - {"section2Used",1891}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 120 "../tests/keys" - {"Latin2InDegrees",115}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 996 "../tests/keys" - {"julianForecastDay",991}, - {""}, {""}, {""}, {""}, -#line 1932 "../tests/keys" - {"section_02",1927}, - {""}, {""}, -#line 1767 "../tests/keys" - {"runwayDesignatorRVR4",1762}, -#line 567 "../tests/keys" - {"coordinateIndexNumber",562}, - {""}, {""}, {""}, {""}, {""}, -#line 1441 "../tests/keys" - {"offsetFromOriginToInnerBound",1436}, - {""}, {""}, {""}, {""}, {""}, -#line 1025 "../tests/keys" - {"latitudeOfReferencePoint",1020}, - {""}, -#line 677 "../tests/keys" - {"earthMajorAxisInMetres",672}, - {""}, -#line 773 "../tests/keys" - {"extractDateTimeEnd",768}, - {""}, {""}, -#line 1204 "../tests/keys" - {"md5Headers",1199}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1037 "../tests/keys" - {"latitudeOfThePolePointInDegrees",1032}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 329 "../tests/keys" - {"beginMinuteTrend3",324}, - {""}, {""}, {""}, -#line 705 "../tests/keys" - {"endMinuteTrend1",700}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 901 "../tests/keys" - {"horizontalDomainTemplateNumber",896}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 556 "../tests/keys" - {"coordinate2End",551}, - {""}, -#line 2258 "../tests/keys" - {"visibilityTrend4",2253}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1923 "../tests/keys" - {"section8UniqueIdentifier",1918}, - {""}, {""}, {""}, {""}, -#line 1837 "../tests/keys" - {"scaledValueOfLowerLimit",1832}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1875 "../tests/keys" - {"secondaryBitmapsSize",1870}, - {""}, -#line 371 "../tests/keys" - {"ceilingAndVisibilityOKTrend4",366}, - {""}, {""}, {""}, {""}, -#line 508 "../tests/keys" - {"clusterMember3",503}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1781 "../tests/keys" - {"runwayFrictionCodeValueState2",1776}, - {""}, {""}, {""}, -#line 2293 "../tests/keys" - {"windVariableDirectionTrend3",2288}, - {""}, {""}, {""}, {""}, {""}, -#line 414 "../tests/keys" - {"cloudsAbbreviation3",409}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 2045 "../tests/keys" - {"subLocalDefinitionNumber2",2040}, - {""}, {""}, {""}, -#line 2107 "../tests/keys" - {"timeUnitFlag",2102}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1642 "../tests/keys" - {"probabilityType",1637}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 909 "../tests/keys" - {"hoursAfterReferenceTimeOfDataCutoff",904}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 86 "../tests/keys" - {"HDF5str",81}, - {""}, -#line 1794 "../tests/keys" - {"runwaySideCodeState3",1789}, - {""}, {""}, {""}, {""}, {""}, -#line 1830 "../tests/keys" - {"scaledValueOfEarthMajorAxis",1825}, -#line 1831 "../tests/keys" - {"scaledValueOfEarthMinorAxis",1826}, - {""}, {""}, {""}, -#line 707 "../tests/keys" - {"endMinuteTrend3",702}, - {""}, -#line 2052 "../tests/keys" - {"superblockExtensionAddress",2047}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 368 "../tests/keys" - {"ceilingAndVisibilityOKTrend1",363}, - {""}, -#line 474 "../tests/keys" - {"cloudsCode3",469}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, #line 469 "../tests/keys" {"cloudsCode2",464}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 278 "../tests/keys" - {"addEmptySection2",273}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 1238 "../tests/keys" - {"minuteOfEndOfOverallTimeInterval",1233}, - {""}, -#line 1864 "../tests/keys" - {"secondOfEndOfOverallTimeInterval",1859}, - {""}, {""}, {""}, {""}, -#line 1764 "../tests/keys" - {"runwayDesignatorRVR1",1759}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 511 "../tests/keys" - {"clusterMember6",506}, {""}, {""}, -#line 989 "../tests/keys" - {"jDirectionIncrementGiven",984}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1676 "../tests/keys" - {"radiusOfTheEarth",1671}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 512 "../tests/keys" - {"clusterMember7",507}, -#line 1071 "../tests/keys" - {"listMembersMissing4",1066}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 2240 "../tests/keys" - {"versionNumberOfExperimentalSuite",2235}, - {""}, {""}, -#line 775 "../tests/keys" - {"extractDateTimeHourRank",770}, - {""}, {""}, {""}, {""}, -#line 1853 "../tests/keys" - {"scanningMode6",1848}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 585 "../tests/keys" - {"countOfICEFieldsUsed",580}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1854 "../tests/keys" - {"scanningMode7",1849}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 2299 "../tests/keys" - {"xDirectionGridLengthInMetres",2294}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1210 "../tests/keys" - {"md5Section4",1205}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 369 "../tests/keys" - {"ceilingAndVisibilityOKTrend2",364}, - {""}, {""}, -#line 285 "../tests/keys" - {"alternativeRowScanning",280}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 2042 "../tests/keys" - {"subLocalDefinitionLength1",2037}, - {""}, {""}, {""}, {""}, {""}, -#line 2278 "../tests/keys" - {"windGustTrend4",2273}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2294 "../tests/keys" + {"windVariableDirectionTrend1",2289}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 94 "../tests/keys" - {"INBITS",89}, - {""}, {""}, -#line 1207 "../tests/keys" - {"md5Section10",1202}, - {""}, -#line 1782 "../tests/keys" - {"runwayFrictionCodeValueState3",1777}, - {""}, {""}, -#line 2300 "../tests/keys" - {"xDirectionGridLengthInMillimetres",2295}, - {""}, {""}, {""}, {""}, {""}, -#line 2239 "../tests/keys" - {"versionNumOfSharedHeaderMessageFormat",2234}, - {""}, -#line 1380 "../tests/keys" - {"numberOfPointsAlongTheXAxis",1375}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1432 "../tests/keys" - {"offsetBSection6",1427}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 1366 "../tests/keys" - {"numberOfModeOfDistribution",1361}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1944 "../tests/keys" - {"section_3",1939}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1040 "../tests/keys" - {"latitudeWhereDxAndDyAreSpecified",1035}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 263 "../tests/keys" - {"YRInMetres",258}, - {""}, {""}, {""}, {""}, -#line 1386 "../tests/keys" - {"numberOfPressureLevelsUsedForClustering",1381}, -#line 1041 "../tests/keys" - {"latitudeWhereDxAndDyAreSpecifiedInDegrees",1036}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2178 "../tests/keys" - {"typicalYearOfCentury",2173}, - {""}, -#line 711 "../tests/keys" - {"endMonthTrend3",706}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1591 "../tests/keys" - {"pentagonalResolutionParameterM",1586}, - {""}, -#line 899 "../tests/keys" - {"horizontalDimensionProcessed",894}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 8 "../tests/keys" - {"************_PRODUCT_***************",3}, - {""}, {""}, {""}, {""}, -#line 1373 "../tests/keys" - {"numberOfParametersUsedForClustering",1368}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 423 "../tests/keys" - {"cloudsAbbreviation4Trend4",418}, - {""}, {""}, {""}, -#line 1978 "../tests/keys" - {"sizeOfPostAuxiliaryArrayPlusOne",1973}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 584 "../tests/keys" - {"countOfGroupLengths",579}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1765 "../tests/keys" - {"runwayDesignatorRVR2",1760}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1447 "../tests/keys" - {"offsetSection11",1442}, #line 778 "../tests/keys" {"extractDateTimeMinuteRank",773}, +#line 386 "../tests/keys" + {"cfVarNameECMF",381}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1750 "../tests/keys" - {"runwayDepositCodeState3",1745}, -#line 1308 "../tests/keys" - {"numberOfBitsForScaledGroupLengths",1303}, + {""}, {""}, {""}, {""}, {""}, +#line 563 "../tests/keys" + {"coordinate4OfFirstGridPoint",558}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 55 "../tests/keys" - {"Ensemble_Combination_Number",50}, - {""}, -#line 258 "../tests/keys" - {"Y1",253}, + {""}, {""}, {""}, +#line 1728 "../tests/keys" + {"reservedNeedNotBePresent",1723}, {""}, {""}, {""}, {""}, {""}, #line 781 "../tests/keys" {"extractDateTimeMonthRank",776}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 2230 "../tests/keys" - {"variationOfVisibilityTrend4",2225}, - {""}, -#line 1933 "../tests/keys" - {"section_03",1928}, - {""}, -#line 560 "../tests/keys" - {"coordinate3OfFirstGridPoint",555}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 563 "../tests/keys" - {"coordinate4OfFirstGridPoint",558}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1947 "../tests/keys" - {"section_6",1942}, - {""}, -#line 2257 "../tests/keys" - {"visibilityTrend3",2252}, - {""}, {""}, -#line 2275 "../tests/keys" - {"windGustTrend1",2270}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2256 "../tests/keys" - {"visibilityTrend2",2251}, - {""}, {""}, {""}, {""}, {""}, #line 784 "../tests/keys" {"extractDateTimeSecondRank",779}, - {""}, -#line 50 "../tests/keys" - {"ECMWF",45}, {""}, {""}, {""}, {""}, -#line 1948 "../tests/keys" - {"section_7",1943}, +#line 2058 "../tests/keys" + {"swapScanningX",2053}, {""}, -#line 408 "../tests/keys" - {"cloudsAbbreviation1Trend4",403}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 370 "../tests/keys" - {"ceilingAndVisibilityOKTrend3",365}, - {""}, -#line 2043 "../tests/keys" - {"subLocalDefinitionLength2",2038}, - {""}, {""}, -#line 770 "../tests/keys" - {"extractDateTimeDayEnd",765}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 22 "../tests/keys" - {"BOX",17}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 424 "../tests/keys" - {"cloudsBase1",419}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1731 "../tests/keys" + {"reservedSection3",1726}, {""}, {""}, {""}, -#line 448 "../tests/keys" - {"cloudsBaseCoded1Trend4",443}, -#line 1008 "../tests/keys" - {"laplacianScalingFactorUnset",1003}, +#line 2297 "../tests/keys" + {"windVariableDirectionTrend4",2292}, +#line 585 "../tests/keys" + {"countOfICEFieldsUsed",580}, +#line 1354 "../tests/keys" + {"numberOfGridInReference",1349}, + {""}, +#line 1792 "../tests/keys" + {"runwayFrictionCoefficientState2",1787}, + {""}, +#line 841 "../tests/keys" + {"formatVersionMinorNumber",836}, + {""}, {""}, +#line 2123 "../tests/keys" + {"totalNumberOfGridPoints",2118}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 550 "../tests/keys" - {"coordAveraging2",545}, +#line 1788 "../tests/keys" + {"runwayFrictionCoefficientCodeState2",1783}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 148 "../tests/keys" + {"MinuteOfModelVersion",143}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 468 "../tests/keys" - {"cloudsCode1Trend4",463}, + {""}, {""}, +#line 1037 "../tests/keys" + {"latitudeOfThePolePointInDegrees",1032}, {""}, {""}, {""}, {""}, -#line 2214 "../tests/keys" - {"uuidOfHGrid",2209}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1431 "../tests/keys" - {"offsetBSection5",1426}, - {""}, {""}, -#line 1643 "../tests/keys" - {"probabilityTypeName",1638}, -#line 1936 "../tests/keys" - {"section_06",1931}, - {""}, -#line 420 "../tests/keys" - {"cloudsAbbreviation4Trend1",415}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1560 "../tests/keys" - {"padding_sec1_loc",1555}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 413 "../tests/keys" - {"cloudsAbbreviation2Trend4",408}, - {""}, {""}, {""}, {""}, -#line 1937 "../tests/keys" - {"section_07",1932}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1288 "../tests/keys" - {"northLatitudeOfDomainOfTubing",1283}, +#line 2103 "../tests/keys" + {"timeIncrementBetweenSuccessiveFields",2098}, {""}, {""}, {""}, {""}, {""}, -#line 354 "../tests/keys" - {"bufrdcExpandedDescriptors",349}, -#line 444 "../tests/keys" - {"cloudsBaseCoded1",439}, -#line 681 "../tests/keys" - {"eastLongitudeOfDomainOfTubing",676}, +#line 1155 "../tests/keys" + {"mBasicAngle",1150}, +#line 1379 "../tests/keys" + {"numberOfPointsAlongAMeridian",1374}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 495 "../tests/keys" + {"cloudsTitle3Trend1",490}, + {""}, {""}, {""}, {""}, +#line 2042 "../tests/keys" + {"subDefinitions2",2037}, +#line 320 "../tests/keys" + {"beginDayTrend2",315}, +#line 1895 "../tests/keys" + {"section2Length",1890}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1390 "../tests/keys" + {"numberOfRadarSitesUsed",1385}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1830 "../tests/keys" + {"scaledValueOfCentralWaveNumber",1825}, + {""}, {""}, {""}, {""}, +#line 498 "../tests/keys" + {"cloudsTitle3Trend4",493}, + {""}, {""}, +#line 1757 "../tests/keys" + {"runwayDepositState3",1752}, {""}, -#line 33 "../tests/keys" - {"Date_E4",28}, +#line 176 "../tests/keys" + {"NRj",171}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 445 "../tests/keys" - {"cloudsBaseCoded1Trend1",440}, +#line 1315 "../tests/keys" + {"numberOfBytesPerInteger",1310}, + {""}, +#line 2309 "../tests/keys" + {"yDirectionGridLengthInMetres",2304}, {""}, {""}, {""}, -#line 1069 "../tests/keys" - {"listMembersMissing2",1064}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1409 "../tests/keys" + {"numberOfUsedTileAttributes",1404}, +#line 1406 "../tests/keys" + {"numberOfUnexpandedDescriptors",1401}, {""}, {""}, -#line 2262 "../tests/keys" - {"westLongitudeOfDomainOfTubing",2257}, -#line 1076 "../tests/keys" - {"listOfContributingSpectralBands",1071}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1847 "../tests/keys" - {"scaledValueOfUpperLimit",1842}, - {""}, {""}, -#line 2227 "../tests/keys" - {"variationOfVisibilityTrend1",2222}, -#line 30 "../tests/keys" - {"DELETE",25}, +#line 2073 "../tests/keys" + {"tempPressureUnits",2068}, + {""}, {""}, {""}, +#line 1381 "../tests/keys" + {"numberOfPointsAlongFirstAxis",1376}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 465 "../tests/keys" - {"cloudsCode1Trend1",460}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1989 "../tests/keys" - {"southLatitudeOfDomainOfTubing",1984}, +#line 1986 "../tests/keys" + {"sourceOfGridDefinition",1981}, + {""}, {""}, {""}, {""}, +#line 566 "../tests/keys" + {"coordinateFlag2",561}, + {""}, {""}, {""}, {""}, {""}, +#line 1207 "../tests/keys" + {"md5Section1",1202}, +#line 1980 "../tests/keys" + {"sizeOfPostAuxiliaryArray",1975}, {""}, {""}, {""}, -#line 260 "../tests/keys" - {"Y2",255}, -#line 549 "../tests/keys" - {"coordAveraging1",544}, - {""}, {""}, -#line 2242 "../tests/keys" - {"versionNumberOfSuperblock",2237}, -#line 1443 "../tests/keys" - {"offsetICEFieldsUsed",1438}, +#line 162 "../tests/keys" + {"N2",157}, + {""}, {""}, {""}, {""}, {""}, +#line 707 "../tests/keys" + {"endMinuteTrend3",702}, + {""}, +#line 1400 "../tests/keys" + {"numberOfSingularVectorsEvolved",1395}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1159 "../tests/keys" + {"marsClass2",1154}, +#line 2310 "../tests/keys" + {"yDirectionGridLengthInMillimetres",2305}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 159 "../tests/keys" + {"MonthOfModelVersion",154}, + {""}, +#line 1793 "../tests/keys" + {"runwayFrictionCoefficientState3",1788}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1221 "../tests/keys" + {"meanRVR3",1216}, +#line 1789 "../tests/keys" + {"runwayFrictionCoefficientCodeState3",1784}, +#line 1380 "../tests/keys" + {"numberOfPointsAlongAParallel",1375}, +#line 1593 "../tests/keys" + {"pentagonalResolutionParameterK",1588}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 548 "../tests/keys" + {"coordAveraging0",543}, + {""}, {""}, {""}, {""}, {""}, +#line 1818 "../tests/keys" + {"scaleFactorOfMinorAxisOfOblateSpheroidEarth",1813}, +#line 326 "../tests/keys" + {"beginHourTrend4",321}, + {""}, {""}, {""}, +#line 1751 "../tests/keys" + {"runwayDepositCodeState1",1746}, + {""}, +#line 120 "../tests/keys" + {"Latin2InDegrees",115}, + {""}, {""}, {""}, {""}, +#line 1401 "../tests/keys" + {"numberOfStepsUsedForClustering",1396}, + {""}, {""}, {""}, +#line 2055 "../tests/keys" + {"superblockExtensionAddress",2050}, +#line 1408 "../tests/keys" + {"numberOfUsedSpatialTiles",1403}, + {""}, {""}, {""}, +#line 1291 "../tests/keys" + {"northWestLatitudeOfLPOArea",1286}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1902 "../tests/keys" + {"section3Length",1897}, + {""}, {""}, +#line 388 "../tests/keys" + {"changeIndicatorTrend1",383}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 510 "../tests/keys" {"clusterMember5",505}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 405 "../tests/keys" - {"cloudsAbbreviation1Trend1",400}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1209 "../tests/keys" - {"md5Section3",1204}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1958 "../tests/keys" - {"setToMissingIfOutOfRange",1953}, - {""}, -#line 2276 "../tests/keys" - {"windGustTrend2",2271}, - {""}, -#line 192 "../tests/keys" - {"Original_Parameter_Identifier",187}, -#line 1208 "../tests/keys" - {"md5Section2",1203}, - {""}, {""}, {""}, -#line 1253 "../tests/keys" - {"modelErrorType",1248}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1852 "../tests/keys" - {"scanningMode5",1847}, - {""}, {""}, {""}, -#line 725 "../tests/keys" - {"endYearTrend4",720}, - {""}, {""}, {""}, {""}, {""}, -#line 1559 "../tests/keys" - {"padding_local_7_1",1554}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 446 "../tests/keys" - {"cloudsBaseCoded1Trend2",441}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 2241 "../tests/keys" - {"versionNumberOfGribLocalTables",2236}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 771 "../tests/keys" - {"extractDateTimeDayRank",766}, - {""}, {""}, -#line 466 "../tests/keys" - {"cloudsCode1Trend2",461}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 202 "../tests/keys" - {"Product_Identifier",197}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 551 "../tests/keys" - {"coordAveraging3",546}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 961 "../tests/keys" - {"isCavokTrend4",956}, - {""}, {""}, {""}, -#line 410 "../tests/keys" - {"cloudsAbbreviation2Trend1",405}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 421 "../tests/keys" - {"cloudsAbbreviation4Trend2",416}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 331 "../tests/keys" - {"beginMonthTrend1",326}, -#line 203 "../tests/keys" - {"RENAME",198}, - {""}, {""}, {""}, -#line 1383 "../tests/keys" - {"numberOfPointsAlongYAxis",1378}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1779 "../tests/keys" - {"runwayExtentOfContaminationState4",1774}, - {""}, {""}, {""}, -#line 1775 "../tests/keys" - {"runwayExtentOfContaminationCodeState4",1770}, -#line 418 "../tests/keys" - {"cloudsAbbreviation3Trend4",413}, - {""}, {""}, {""}, {""}, -#line 164 "../tests/keys" - {"NB",159}, - {""}, -#line 1436 "../tests/keys" - {"offsetBeforePL",1431}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 703 "../tests/keys" - {"endHourTrend4",698}, - {""}, -#line 2228 "../tests/keys" - {"variationOfVisibilityTrend2",2223}, - {""}, {""}, {""}, -#line 1020 "../tests/keys" - {"latitudeOfFirstGridPointInDegrees",1015}, -#line 1766 "../tests/keys" - {"runwayDesignatorRVR3",1761}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 1628 "../tests/keys" - {"presentWeather2PresentTrend4",1623}, - {""}, {""}, {""}, {""}, {""}, -#line 1942 "../tests/keys" - {"section_11",1937}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1633 "../tests/keys" - {"presentWeather3PresentTrend4",1628}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 994 "../tests/keys" - {"jScansPositively",989}, - {""}, -#line 722 "../tests/keys" - {"endYearTrend1",717}, - {""}, {""}, {""}, {""}, -#line 406 "../tests/keys" - {"cloudsAbbreviation1Trend2",401}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 208 "../tests/keys" {"SOH",203}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 1776 "../tests/keys" - {"runwayExtentOfContaminationState1",1771}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1053 "../tests/keys" + {"lengthOf4DvarWindow",1048}, + {""}, {""}, +#line 1754 "../tests/keys" + {"runwayDepositCodeState4",1749}, +#line 391 "../tests/keys" + {"changeIndicatorTrend4",386}, {""}, -#line 286 "../tests/keys" - {"altitudeOfTheCameraFromTheEarthSCenterMeasuredInUnitsOfTheEarth",281}, - {""}, -#line 1772 "../tests/keys" - {"runwayExtentOfContaminationCodeState1",1767}, +#line 2226 "../tests/keys" + {"variationOfVisibilityDirectionTrend1",2221}, {""}, {""}, {""}, -#line 439 "../tests/keys" - {"cloudsBase4",434}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 240 "../tests/keys" - {"Total_Number_Members_Used",235}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1569 "../tests/keys" - {"paramIdECMF",1564}, - {""}, {""}, {""}, {""}, {""}, -#line 1946 "../tests/keys" - {"section_5",1941}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 819 "../tests/keys" - {"firstMonthUsedToBuildClimateMonth1",814}, - {""}, {""}, -#line 447 "../tests/keys" - {"cloudsBaseCoded1Trend3",442}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1027 "../tests/keys" - {"latitudeOfSouthEastCornerOfArea",1022}, -#line 1625 "../tests/keys" - {"presentWeather2PresentTrend1",1620}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 958 "../tests/keys" - {"isCavokTrend1",953}, - {""}, {""}, -#line 1630 "../tests/keys" - {"presentWeather3PresentTrend1",1625}, #line 1696 "../tests/keys" - {"recentWeatherTry",1691}, - {""}, {""}, {""}, {""}, -#line 1026 "../tests/keys" - {"latitudeOfReferencePointInDegrees",1021}, -#line 990 "../tests/keys" - {"jDirectionIncrementGridLength",985}, - {""}, {""}, -#line 467 "../tests/keys" - {"cloudsCode1Trend3",462}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 753 "../tests/keys" - {"experimentVersionNumber1",748}, + {"realPartOf00",1691}, {""}, -#line 238 "../tests/keys" - {"Total_Number_Members_Missing",233}, - {""}, {""}, {""}, {""}, {""}, +#line 247 "../tests/keys" + {"WRAP",242}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1826 "../tests/keys" + {"scaleFactorOfUpperLimit",1821}, + {""}, {""}, {""}, +#line 2229 "../tests/keys" + {"variationOfVisibilityDirectionTrend4",2224}, + {""}, +#line 1855 "../tests/keys" + {"scanningMode5",1850}, + {""}, {""}, +#line 705 "../tests/keys" + {"endMinuteTrend1",700}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1460 "../tests/keys" + {"offsetValuesBy",1455}, + {""}, {""}, {""}, {""}, +#line 56 "../tests/keys" + {"Ensemble_Identifier",51}, + {""}, {""}, {""}, {""}, +#line 658 "../tests/keys" + {"disableGrib1LocalSection",653}, +#line 1209 "../tests/keys" + {"md5Section2",1204}, + {""}, +#line 1020 "../tests/keys" + {"latitudeOfFirstGridPointInDegrees",1015}, + {""}, +#line 496 "../tests/keys" + {"cloudsTitle3Trend2",491}, + {""}, {""}, {""}, +#line 2089 "../tests/keys" + {"tiggeLAMName",2084}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 364 "../tests/keys" {"ccsdsCompressionOptionsMask",359}, -#line 411 "../tests/keys" - {"cloudsAbbreviation2Trend2",406}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 415 "../tests/keys" - {"cloudsAbbreviation3Trend1",410}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 458 "../tests/keys" - {"cloudsBaseCoded3Trend4",453}, - {""}, -#line 31 "../tests/keys" - {"Date_E2",26}, -#line 459 "../tests/keys" - {"cloudsBaseCoded4",454}, - {""}, -#line 1777 "../tests/keys" - {"runwayExtentOfContaminationState2",1772}, - {""}, {""}, {""}, -#line 1773 "../tests/keys" - {"runwayExtentOfContaminationCodeState2",1768}, +#line 505 "../tests/keys" + {"clusterMember1",500}, {""}, {""}, {""}, {""}, -#line 463 "../tests/keys" - {"cloudsBaseCoded4Trend4",458}, - {""}, -#line 170 "../tests/keys" - {"NH",165}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1430 "../tests/keys" - {"offsetBBitmap",1425}, +#line 1989 "../tests/keys" + {"southEastLongitudeOfLPOArea",1984}, {""}, {""}, -#line 700 "../tests/keys" - {"endHourTrend1",695}, -#line 478 "../tests/keys" - {"cloudsCode3Trend4",473}, +#line 930 "../tests/keys" + {"indexedStorageInternalNodeK",925}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1935 "../tests/keys" - {"section_05",1930}, +#line 1313 "../tests/keys" + {"numberOfBytesInLocalDefinition",1308}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 483 "../tests/keys" - {"cloudsCode4Trend4",478}, - {""}, {""}, {""}, {""}, {""}, -#line 1312 "../tests/keys" - {"numberOfBytesOfFreeFormatData",1307}, - {""}, {""}, {""}, -#line 820 "../tests/keys" - {"firstMonthUsedToBuildClimateMonth2",815}, - {""}, {""}, {""}, {""}, -#line 1907 "../tests/keys" - {"section4UniqueIdentifier",1902}, +#line 2114 "../tests/keys" + {"totalAerosolBinsNumbers",2109}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1626 "../tests/keys" - {"presentWeather2PresentTrend2",1621}, +#line 1445 "../tests/keys" + {"offsetFromReferenceOfFirstTime",1440}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 509 "../tests/keys" + {"clusterMember4",504}, + {""}, +#line 899 "../tests/keys" + {"horizontalDimensionProcessed",894}, +#line 1878 "../tests/keys" + {"secondaryBitmapsSize",1873}, + {""}, {""}, {""}, +#line 506 "../tests/keys" + {"clusterMember10",501}, + {""}, +#line 321 "../tests/keys" + {"beginDayTrend3",316}, +#line 10 "../tests/keys" + {"7777",5}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 1335 "../tests/keys" + {"numberOfDaysInClimateSamplingWindow",1330}, + {""}, {""}, {""}, +#line 2219 "../tests/keys" + {"uvRelativeToGrid",2214}, +#line 858 "../tests/keys" + {"getNumberOfValues",853}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1854 "../tests/keys" + {"scanningMode4",1849}, + {""}, +#line 2168 "../tests/keys" + {"typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing",2163}, +#line 2263 "../tests/keys" + {"weightAppliedToClimateMonth1",2258}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 773 "../tests/keys" + {"extractDateTimeEnd",768}, + {""}, {""}, {""}, +#line 1873 "../tests/keys" + {"secondaryBitMap",1868}, + {""}, {""}, {""}, {""}, {""}, +#line 2302 "../tests/keys" + {"xDirectionGridLengthInMetres",2297}, + {""}, {""}, {""}, +#line 2044 "../tests/keys" + {"subLocalDefinition2",2039}, +#line 887 "../tests/keys" + {"gts_TTAAii",882}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 1627 "../tests/keys" + {"presentWeather2Present",1622}, + {""}, {""}, {""}, +#line 2295 "../tests/keys" + {"windVariableDirectionTrend2",2290}, + {""}, +#line 940 "../tests/keys" + {"inputOverriddenReferenceValues",935}, + {""}, {""}, {""}, +#line 497 "../tests/keys" + {"cloudsTitle3Trend3",492}, {""}, {""}, -#line 1070 "../tests/keys" - {"listMembersMissing3",1065}, +#line 1601 "../tests/keys" + {"physicalFlag1",1596}, + {""}, {""}, {""}, {""}, +#line 1101 "../tests/keys" + {"localLongitude2",1096}, + {""}, +#line 389 "../tests/keys" + {"changeIndicatorTrend2",384}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 157 "../tests/keys" + {"Model_Identifier",152}, + {""}, {""}, {""}, {""}, +#line 2303 "../tests/keys" + {"xDirectionGridLengthInMillimetres",2298}, +#line 1369 "../tests/keys" + {"numberOfModeOfDistribution",1364}, +#line 2227 "../tests/keys" + {"variationOfVisibilityDirectionTrend2",2222}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 688 "../tests/keys" + {"efas_post_proc",683}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1631 "../tests/keys" - {"presentWeather3PresentTrend2",1626}, +#line 614 "../tests/keys" + {"dateOfModelVersion",609}, + {""}, +#line 1455 "../tests/keys" + {"offsetSection6",1450}, + {""}, {""}, +#line 2106 "../tests/keys" + {"timeOfModelVersion",2101}, +#line 278 "../tests/keys" + {"addEmptySection2",273}, +#line 1027 "../tests/keys" + {"latitudeOfSouthEastCornerOfArea",1022}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1079 "../tests/keys" + {"listOfEnsembleForecastNumbers",1074}, + {""}, +#line 1841 "../tests/keys" + {"scaledValueOfMajorAxisOfOblateSpheroidEarth",1836}, + {""}, {""}, {""}, {""}, +#line 1783 "../tests/keys" + {"runwayFrictionCodeValueState1",1778}, + {""}, {""}, {""}, +#line 1208 "../tests/keys" + {"md5Section10",1203}, +#line 1446 "../tests/keys" + {"offsetICEFieldsUsed",1441}, +#line 1916 "../tests/keys" + {"section6Length",1911}, + {""}, {""}, {""}, {""}, +#line 178 "../tests/keys" + {"NUT",173}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 2217 "../tests/keys" + {"uuidOfHGrid",2212}, + {""}, {""}, +#line 1786 "../tests/keys" + {"runwayFrictionCodeValueState4",1781}, + {""}, {""}, +#line 274 "../tests/keys" + {"_leg_number",269}, + {""}, {""}, {""}, +#line 2318 "../tests/keys" + {"yearOfModelVersion",2313}, + {""}, {""}, {""}, {""}, {""}, +#line 1193 "../tests/keys" + {"matchAerosolBinNumber",1188}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 772 "../tests/keys" + {"extractDateTimeDayStart",767}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 1591 "../tests/keys" + {"patch_precip_fp",1586}, +#line 1388 "../tests/keys" + {"numberOfPointsUsed",1383}, + {""}, {""}, {""}, {""}, +#line 2045 "../tests/keys" + {"subLocalDefinitionLength1",2040}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 390 "../tests/keys" + {"changeIndicatorTrend3",385}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 624 "../tests/keys" + {"dayOfModelVersion",619}, + {""}, +#line 1444 "../tests/keys" + {"offsetFromOriginToInnerBound",1439}, + {""}, {""}, +#line 1110 "../tests/keys" + {"localUsePresent",1105}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1109 "../tests/keys" + {"localTablesVersionNumber",1104}, + {""}, {""}, +#line 2228 "../tests/keys" + {"variationOfVisibilityDirectionTrend3",2223}, + {""}, {""}, {""}, +#line 544 "../tests/keys" + {"constantAntennaElevationAngle",539}, + {""}, {""}, +#line 638 "../tests/keys" + {"default_step_units",633}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 906 "../tests/keys" + {"hourOfModelVersion",901}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 2261 "../tests/keys" + {"visibilityTrend4",2256}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1752 "../tests/keys" + {"runwayDepositCodeState2",1747}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 8 "../tests/keys" + {"************_PRODUCT_***************",3}, +#line 199 "../tests/keys" + {"P_INST",194}, + {""}, +#line 825 "../tests/keys" + {"flagForNormalOrStaggeredGrid",820}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 1450 "../tests/keys" + {"offsetSection11",1445}, +#line 2245 "../tests/keys" + {"versionNumberOfSuperblock",2240}, + {""}, {""}, {""}, {""}, {""}, +#line 1809 "../tests/keys" + {"scaleFactorOfEarthMajorAxis",1804}, +#line 1810 "../tests/keys" + {"scaleFactorOfEarthMinorAxis",1805}, +#line 584 "../tests/keys" + {"countOfGroupLengths",579}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1358 "../tests/keys" + {"numberOfHorizontalPoints",1353}, +#line 277 "../tests/keys" + {"accuracyMultipliedByFactor",272}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 2296 "../tests/keys" + {"windVariableDirectionTrend3",2291}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 34 "../tests/keys" + {"DayOfModelVersion",29}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 981 "../tests/keys" + {"isectionNumber2",976}, +#line 1142 "../tests/keys" + {"longitudeOfTheSouthernPoleOfProjection",1137}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1784 "../tests/keys" + {"runwayFrictionCodeValueState2",1779}, +#line 989 "../tests/keys" + {"jDirectionIncrementGiven",984}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1949 "../tests/keys" + {"section_5",1944}, +#line 367 "../tests/keys" + {"ceilingAndVisibilityOK",362}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 507 "../tests/keys" + {"clusterMember2",502}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1623 "../tests/keys" - {"presentWeather1PresentTrend4",1618}, - {""}, {""}, {""}, -#line 723 "../tests/keys" - {"endYearTrend2",718}, +#line 1938 "../tests/keys" + {"section_05",1933}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 22 "../tests/keys" + {"BOX",17}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 455 "../tests/keys" - {"cloudsBaseCoded3Trend1",450}, +#line 1025 "../tests/keys" + {"latitudeOfReferencePoint",1020}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 1795 "../tests/keys" + {"runwaySideCodeState1",1790}, + {""}, +#line 1943 "../tests/keys" + {"section_1",1938}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 474 "../tests/keys" + {"cloudsCode3",469}, + {""}, {""}, {""}, {""}, +#line 354 "../tests/keys" + {"bufrdcExpandedDescriptors",349}, + {""}, +#line 1434 "../tests/keys" + {"offsetBSection5",1429}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 1633 "../tests/keys" + {"presentWeather3PresentTrend1",1628}, + {""}, +#line 709 "../tests/keys" + {"endMonthTrend1",704}, + {""}, {""}, {""}, {""}, {""}, +#line 1934 "../tests/keys" + {"section_01",1929}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 85 "../tests/keys" + {"HDF5",80}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1798 "../tests/keys" + {"runwaySideCodeState4",1793}, +#line 1636 "../tests/keys" + {"presentWeather3PresentTrend4",1631}, +#line 1948 "../tests/keys" + {"section_4",1943}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 1785 "../tests/keys" + {"runwayFrictionCodeValueState3",1780}, + {""}, +#line 1602 "../tests/keys" + {"physicalFlag2",1597}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1981 "../tests/keys" + {"sizeOfPostAuxiliaryArrayPlusOne",1976}, + {""}, +#line 712 "../tests/keys" + {"endMonthTrend4",707}, +#line 404 "../tests/keys" + {"cloudsAbbreviation1",399}, + {""}, {""}, {""}, {""}, +#line 1937 "../tests/keys" + {"section_04",1932}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 338 "../tests/keys" + {"beginYearTrend4",333}, + {""}, {""}, +#line 848 "../tests/keys" + {"g1conceptsLocalDirAll",843}, + {""}, {""}, +#line 166 "../tests/keys" + {"NC1",161}, + {""}, +#line 2181 "../tests/keys" + {"typicalYearOfCentury",2176}, + {""}, {""}, {""}, {""}, +#line 1293 "../tests/keys" + {"northWestLongitudeOfLPOArea",1288}, + {""}, {""}, {""}, {""}, {""}, +#line 263 "../tests/keys" + {"YRInMetres",258}, +#line 1753 "../tests/keys" + {"runwayDepositCodeState3",1748}, + {""}, +#line 1290 "../tests/keys" + {"northLatitudeOfDomainOfTubing",1285}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 681 "../tests/keys" + {"eastLongitudeOfDomainOfTubing",676}, + {""}, +#line 419 "../tests/keys" + {"cloudsAbbreviation4",414}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 2265 "../tests/keys" + {"westLongitudeOfDomainOfTubing",2260}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1310 "../tests/keys" + {"numberOfBitsForScaledGroupLengths",1305}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1984 "../tests/keys" + {"skipExtraKeyAttributes",1979}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2110 "../tests/keys" + {"timeUnitFlag",2105}, + {""}, {""}, {""}, +#line 1992 "../tests/keys" + {"southLatitudeOfDomainOfTubing",1987}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1572 "../tests/keys" + {"paramIdECMF",1567}, +#line 2046 "../tests/keys" + {"subLocalDefinitionLength2",2041}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 156 "../tests/keys" + {"Model_Additional_Information",151}, + {""}, {""}, {""}, +#line 1929 "../tests/keys" + {"section9UniqueIdentifier",1924}, + {""}, {""}, {""}, {""}, {""}, +#line 508 "../tests/keys" + {"clusterMember3",503}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1590 "../tests/keys" + {"pastTendencyRVR4",1585}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 2000 "../tests/keys" + {"spacingOfBinsAlongRadials",1995}, + {""}, {""}, {""}, {""}, +#line 1842 "../tests/keys" + {"scaledValueOfMinorAxisOfOblateSpheroidEarth",1837}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1634 "../tests/keys" + {"presentWeather3PresentTrend2",1629}, + {""}, {""}, {""}, {""}, {""}, +#line 958 "../tests/keys" + {"isCavokTrend1",953}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 168 "../tests/keys" + {"NEAREST",163}, +#line 2243 "../tests/keys" + {"versionNumberOfExperimentalSuite",2238}, + {""}, +#line 1767 "../tests/keys" + {"runwayDesignatorRVR1",1762}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1899 "../tests/keys" + {"section2Used",1894}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 230 "../tests/keys" + {"Threshold_Or_Distribution_0_no_1_yes",225}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 771 "../tests/keys" + {"extractDateTimeDayRank",766}, +#line 961 "../tests/keys" + {"isCavokTrend4",956}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 1077 "../tests/keys" + {"listOfContributingSpectralBands",1072}, + {""}, {""}, +#line 1850 "../tests/keys" + {"scaledValueOfUpperLimit",1845}, + {""}, +#line 1376 "../tests/keys" + {"numberOfParametersUsedForClustering",1371}, + {""}, {""}, {""}, {""}, {""}, +#line 1770 "../tests/keys" + {"runwayDesignatorRVR4",1765}, + {""}, +#line 1210 "../tests/keys" + {"md5Section3",1205}, + {""}, {""}, {""}, {""}, {""}, +#line 1872 "../tests/keys" + {"secondOrderValuesDifferentWidths",1867}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 327 "../tests/keys" + {"beginMinuteTrend1",322}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1507 "../tests/keys" + {"padding_grid90_1",1502}, + {""}, {""}, +#line 677 "../tests/keys" + {"earthMajorAxisInMetres",672}, + {""}, {""}, +#line 2258 "../tests/keys" + {"visibilityTrend1",2253}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 330 "../tests/keys" + {"beginMinuteTrend4",325}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1961 "../tests/keys" + {"setToMissingIfOutOfRange",1956}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 706 "../tests/keys" + {"endMinuteTrend2",701}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 560 "../tests/keys" + {"coordinate3OfFirstGridPoint",555}, + {""}, {""}, {""}, {""}, {""}, +#line 1635 "../tests/keys" + {"presentWeather3PresentTrend3",1630}, + {""}, {""}, {""}, {""}, +#line 325 "../tests/keys" + {"beginHourTrend3",320}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1389 "../tests/keys" + {"numberOfPressureLevelsUsedForClustering",1384}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1439 "../tests/keys" + {"offsetBeforePL",1434}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1076 "../tests/keys" + {"listMembersUsed4",1071}, +#line 901 "../tests/keys" + {"horizontalDomainTemplateNumber",896}, + {""}, {""}, +#line 2292 "../tests/keys" + {"windUnitsTrend4",2287}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 384 "../tests/keys" + {"cfNameECMF",379}, + {""}, {""}, +#line 1796 "../tests/keys" + {"runwaySideCodeState2",1791}, + {""}, +#line 1946 "../tests/keys" + {"section_2",1941}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 2242 "../tests/keys" + {"versionNumOfSharedHeaderMessageFormat",2237}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 439 "../tests/keys" + {"cloudsBase4",434}, + {""}, +#line 710 "../tests/keys" + {"endMonthTrend2",705}, + {""}, +#line 55 "../tests/keys" + {"Ensemble_Combination_Number",50}, + {""}, {""}, {""}, +#line 1935 "../tests/keys" + {"section_02",1930}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 2047 "../tests/keys" + {"subLocalDefinitionNumber1",2042}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 2259 "../tests/keys" + {"visibilityTrend2",2254}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 409 "../tests/keys" + {"cloudsAbbreviation2",404}, + {""}, {""}, {""}, {""}, +#line 1623 "../tests/keys" + {"presentWeather1PresentTrend1",1618}, + {""}, {""}, {""}, {""}, +#line 323 "../tests/keys" + {"beginHourTrend1",318}, + {""}, {""}, {""}, +#line 286 "../tests/keys" + {"altitudeOfTheCameraFromTheEarthSCenterMeasuredInUnitsOfTheEarth",281}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 170 "../tests/keys" + {"NH",165}, +#line 167 "../tests/keys" + {"NC2",162}, + {""}, {""}, {""}, +#line 1626 "../tests/keys" + {"presentWeather1PresentTrend4",1621}, + {""}, +#line 1926 "../tests/keys" + {"section8UniqueIdentifier",1921}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 819 "../tests/keys" + {"firstMonthUsedToBuildClimateMonth1",814}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 328 "../tests/keys" + {"beginMinuteTrend2",323}, + {""}, +#line 169 "../tests/keys" + {"NG",164}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 460 "../tests/keys" {"cloudsBaseCoded4Trend1",455}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1589 "../tests/keys" - {"pentagonalResolutionParameterJ",1584}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 475 "../tests/keys" - {"cloudsCode3Trend1",470}, - {""}, -#line 2277 "../tests/keys" - {"windGustTrend3",2272}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 480 "../tests/keys" - {"cloudsCode4Trend1",475}, - {""}, {""}, {""}, -#line 1518 "../tests/keys" - {"padding_loc190_1",1513}, - {""}, {""}, {""}, -#line 1555 "../tests/keys" - {"padding_local1_1",1550}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 239 "../tests/keys" - {"Total_Number_Members_Possible",234}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1247 "../tests/keys" - {"missingValueManagementUsed",1242}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1437 "../tests/keys" - {"offsetBeforePV",1432}, +#line 1594 "../tests/keys" + {"pentagonalResolutionParameterM",1589}, + {""}, +#line 459 "../tests/keys" + {"cloudsBaseCoded4",454}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 990 "../tests/keys" + {"jDirectionIncrementGridLength",985}, +#line 463 "../tests/keys" + {"cloudsBaseCoded4Trend4",458}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 26 "../tests/keys" + {"CCCC",21}, +#line 1072 "../tests/keys" + {"listMembersMissing4",1067}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 480 "../tests/keys" + {"cloudsCode4Trend1",475}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 483 "../tests/keys" + {"cloudsCode4Trend4",478}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1671 "../tests/keys" + {"qualityValueAssociatedWithParameter",1666}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 352 "../tests/keys" + {"bufrHeaderSubCentre",347}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1008 "../tests/keys" + {"laplacianScalingFactorUnset",1003}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 867 "../tests/keys" + {"gribMasterTablesVersionNumber",862}, + {""}, {""}, {""}, {""}, +#line 551 "../tests/keys" + {"coordAveraging3",546}, {""}, {""}, #line 959 "../tests/keys" {"isCavokTrend2",954}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1352 "../tests/keys" - {"numberOfGridUsed",1347}, -#line 1365 "../tests/keys" - {"numberOfMissingValues",1360}, - {""}, {""}, {""}, {""}, -#line 1620 "../tests/keys" - {"presentWeather1PresentTrend1",1615}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1075 "../tests/keys" - {"listMembersUsed4",1070}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 754 "../tests/keys" - {"experimentVersionNumber2",749}, - {""}, {""}, {""}, {""}, {""}, -#line 334 "../tests/keys" - {"beginMonthTrend4",329}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 456 "../tests/keys" - {"cloudsBaseCoded3Trend2",451}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 270 "../tests/keys" - {"ZLMULT",265}, - {""}, {""}, -#line 416 "../tests/keys" - {"cloudsAbbreviation3Trend2",411}, {""}, {""}, {""}, +#line 329 "../tests/keys" + {"beginMinuteTrend3",324}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 94 "../tests/keys" + {"INBITS",89}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 258 "../tests/keys" + {"Y1",253}, + {""}, {""}, +#line 1768 "../tests/keys" + {"runwayDesignatorRVR2",1763}, + {""}, {""}, {""}, {""}, {""}, +#line 1742 "../tests/keys" + {"rootGroupSymbolTableEntry",1737}, +#line 1435 "../tests/keys" + {"offsetBSection6",1430}, +#line 700 "../tests/keys" + {"endHourTrend1",695}, + {""}, {""}, +#line 1833 "../tests/keys" + {"scaledValueOfEarthMajorAxis",1828}, +#line 1834 "../tests/keys" + {"scaledValueOfEarthMinorAxis",1829}, + {""}, {""}, +#line 1797 "../tests/keys" + {"runwaySideCodeState3",1792}, + {""}, +#line 1947 "../tests/keys" + {"section_3",1942}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 1624 "../tests/keys" + {"presentWeather1PresentTrend2",1619}, + {""}, {""}, +#line 1301 "../tests/keys" + {"numberInHorizontalCoordinates",1296}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 711 "../tests/keys" + {"endMonthTrend3",706}, +#line 1587 "../tests/keys" + {"pastTendencyRVR1",1582}, + {""}, {""}, {""}, {""}, +#line 1936 "../tests/keys" + {"section_03",1931}, +#line 2278 "../tests/keys" + {"windGustTrend1",2273}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 202 "../tests/keys" + {"Product_Identifier",197}, + {""}, {""}, +#line 703 "../tests/keys" + {"endHourTrend4",698}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 820 "../tests/keys" + {"firstMonthUsedToBuildClimateMonth2",815}, + {""}, {""}, {""}, {""}, {""}, +#line 1383 "../tests/keys" + {"numberOfPointsAlongTheXAxis",1378}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 414 "../tests/keys" + {"cloudsAbbreviation3",409}, + {""}, {""}, {""}, {""}, #line 461 "../tests/keys" {"cloudsBaseCoded4Trend2",456}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2281 "../tests/keys" + {"windGustTrend4",2276}, {""}, {""}, {""}, -#line 954 "../tests/keys" - {"intervalBetweenTimes",949}, +#line 1026 "../tests/keys" + {"latitudeOfReferencePointInDegrees",1021}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 476 "../tests/keys" - {"cloudsCode3Trend2",471}, -#line 1778 "../tests/keys" - {"runwayExtentOfContaminationState3",1773}, -#line 1557 "../tests/keys" - {"padding_local40_1",1552}, - {""}, {""}, -#line 1774 "../tests/keys" - {"runwayExtentOfContaminationCodeState3",1769}, -#line 422 "../tests/keys" - {"cloudsAbbreviation4Trend3",417}, - {""}, {""}, -#line 453 "../tests/keys" - {"cloudsBaseCoded2Trend4",448}, - {""}, {""}, {""}, -#line 1355 "../tests/keys" - {"numberOfHorizontalPoints",1350}, + {""}, {""}, {""}, {""}, +#line 1368 "../tests/keys" + {"numberOfMissingValues",1363}, + {""}, {""}, {""}, {""}, {""}, +#line 511 "../tests/keys" + {"clusterMember6",506}, + {""}, {""}, {""}, {""}, +#line 549 "../tests/keys" + {"coordAveraging1",544}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, #line 481 "../tests/keys" {"cloudsCode4Trend2",476}, - {""}, {""}, {""}, {""}, {""}, -#line 701 "../tests/keys" - {"endHourTrend2",696}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 908 "../tests/keys" - {"hoursAfterDataCutoff",903}, - {""}, {""}, {""}, -#line 241 "../tests/keys" - {"UseEcmfConventions",236}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 473 "../tests/keys" - {"cloudsCode2Trend4",468}, +#line 363 "../tests/keys" + {"ccsdsBlockSize",358}, +#line 1592 "../tests/keys" + {"pentagonalResolutionParameterJ",1587}, + {""}, +#line 1856 "../tests/keys" + {"scanningMode6",1851}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1627 "../tests/keys" - {"presentWeather2PresentTrend3",1622}, +#line 1625 "../tests/keys" + {"presentWeather1PresentTrend3",1620}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 30 "../tests/keys" + {"DELETE",25}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 192 "../tests/keys" + {"Original_Parameter_Identifier",187}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1588 "../tests/keys" + {"pastTendencyRVR2",1583}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1621 "../tests/keys" - {"presentWeather1PresentTrend2",1616}, -#line 1632 "../tests/keys" - {"presentWeather3PresentTrend3",1627}, -#line 2229 "../tests/keys" - {"variationOfVisibilityTrend3",2224}, -#line 1611 "../tests/keys" - {"precisionOfTheUnpackedSubset",1606}, +#line 1314 "../tests/keys" + {"numberOfBytesOfFreeFormatData",1309}, + {""}, {""}, +#line 2244 "../tests/keys" + {"versionNumberOfGribLocalTables",2239}, + {""}, {""}, +#line 50 "../tests/keys" + {"ECMWF",45}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 2048 "../tests/keys" + {"subLocalDefinitionNumber2",2043}, + {""}, +#line 462 "../tests/keys" + {"cloudsBaseCoded4Trend3",457}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 2230 "../tests/keys" + {"variationOfVisibilityTrend1",2225}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 434 "../tests/keys" - {"cloudsBase3",429}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 407 "../tests/keys" - {"cloudsAbbreviation1Trend3",402}, +#line 482 "../tests/keys" + {"cloudsCode4Trend3",477}, +#line 960 "../tests/keys" + {"isCavokTrend3",955}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 429 "../tests/keys" - {"cloudsBase2",424}, +#line 1440 "../tests/keys" + {"offsetBeforePV",1435}, + {""}, {""}, {""}, +#line 2233 "../tests/keys" + {"variationOfVisibilityTrend4",2228}, + {""}, +#line 1769 "../tests/keys" + {"runwayDesignatorRVR3",1764}, + {""}, {""}, {""}, {""}, +#line 424 "../tests/keys" + {"cloudsBase1",419}, + {""}, {""}, {""}, {""}, {""}, +#line 1070 "../tests/keys" + {"listMembersMissing2",1065}, + {""}, {""}, {""}, +#line 770 "../tests/keys" + {"extractDateTimeDayEnd",765}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 285 "../tests/keys" + {"alternativeRowScanning",280}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, #line 450 "../tests/keys" {"cloudsBaseCoded2Trend1",445}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2177 "../tests/keys" - {"typicalYear2",2172}, - {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 453 "../tests/keys" + {"cloudsBaseCoded2Trend4",448}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 909 "../tests/keys" + {"hoursAfterReferenceTimeOfDataCutoff",904}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 337 "../tests/keys" + {"beginYearTrend3",332}, + {""}, {""}, #line 470 "../tests/keys" {"cloudsCode2Trend1",465}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 269 "../tests/keys" - {"ZLBASE",264}, +#line 1074 "../tests/keys" + {"listMembersUsed2",1069}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 368 "../tests/keys" + {"ceilingAndVisibilityOKTrend1",363}, + {""}, +#line 444 "../tests/keys" + {"cloudsBaseCoded1",439}, +#line 2180 "../tests/keys" + {"typicalYear2",2175}, + {""}, {""}, {""}, {""}, +#line 473 "../tests/keys" + {"cloudsCode2Trend4",468}, + {""}, {""}, {""}, {""}, +#line 445 "../tests/keys" + {"cloudsBaseCoded1Trend1",440}, +#line 270 "../tests/keys" + {"ZLMULT",265}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1386 "../tests/keys" + {"numberOfPointsAlongYAxis",1381}, + {""}, {""}, +#line 371 "../tests/keys" + {"ceilingAndVisibilityOKTrend4",366}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1954 "../tests/keys" - {"setBitsPerValue",1949}, +#line 448 "../tests/keys" + {"cloudsBaseCoded1Trend4",443}, + {""}, {""}, {""}, {""}, +#line 260 "../tests/keys" + {"Y2",255}, + {""}, {""}, {""}, {""}, {""}, +#line 429 "../tests/keys" + {"cloudsBase2",424}, + {""}, {""}, {""}, {""}, +#line 701 "../tests/keys" + {"endHourTrend2",696}, + {""}, +#line 465 "../tests/keys" + {"cloudsCode1Trend1",460}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 468 "../tests/keys" + {"cloudsCode1Trend4",463}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1779 "../tests/keys" + {"runwayExtentOfContaminationState1",1774}, + {""}, {""}, {""}, +#line 1775 "../tests/keys" + {"runwayExtentOfContaminationCodeState1",1770}, +#line 2279 "../tests/keys" + {"windGustTrend2",2274}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1922 "../tests/keys" + {"section7UniqueIdentifier",1917}, + {""}, {""}, +#line 1782 "../tests/keys" + {"runwayExtentOfContaminationState4",1777}, + {""}, {""}, {""}, +#line 1778 "../tests/keys" + {"runwayExtentOfContaminationCodeState4",1773}, + {""}, +#line 1628 "../tests/keys" + {"presentWeather2PresentTrend1",1623}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 335 "../tests/keys" + {"beginYearTrend1",330}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 1631 "../tests/keys" + {"presentWeather2PresentTrend4",1626}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 753 "../tests/keys" + {"experimentVersionNumber1",748}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 449 "../tests/keys" + {"cloudsBaseCoded2",444}, + {""}, {""}, {""}, {""}, +#line 1071 "../tests/keys" + {"listMembersMissing3",1066}, + {""}, {""}, {""}, {""}, {""}, +#line 451 "../tests/keys" + {"cloudsBaseCoded2Trend2",446}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 852 "../tests/keys" + {"genVertHeightCoords",847}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 336 "../tests/keys" - {"beginYearTrend2",331}, +#line 471 "../tests/keys" + {"cloudsCode2Trend2",466}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1950 "../tests/keys" + {"section_6",1945}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 92 "../tests/keys" + {"ICPLSIZE",87}, + {""}, {""}, +#line 369 "../tests/keys" + {"ceilingAndVisibilityOKTrend2",364}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 2260 "../tests/keys" + {"visibilityTrend3",2255}, +#line 446 "../tests/keys" + {"cloudsBaseCoded1Trend2",441}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1939 "../tests/keys" + {"section_06",1934}, + {""}, {""}, {""}, {""}, {""}, +#line 1248 "../tests/keys" + {"missingValueManagementUsed",1243}, + {""}, {""}, +#line 334 "../tests/keys" + {"beginMonthTrend4",329}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 241 "../tests/keys" + {"UseEcmfConventions",236}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 466 "../tests/keys" + {"cloudsCode1Trend2",461}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2231 "../tests/keys" + {"variationOfVisibilityTrend2",2226}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1780 "../tests/keys" + {"runwayExtentOfContaminationState2",1775}, + {""}, {""}, {""}, +#line 1776 "../tests/keys" + {"runwayExtentOfContaminationCodeState2",1771}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 452 "../tests/keys" + {"cloudsBaseCoded2Trend3",447}, +#line 2291 "../tests/keys" + {"windUnitsTrend3",2286}, +#line 722 "../tests/keys" + {"endYearTrend1",717}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 1629 "../tests/keys" + {"presentWeather2PresentTrend2",1624}, + {""}, {""}, +#line 702 "../tests/keys" + {"endHourTrend3",697}, + {""}, +#line 324 "../tests/keys" + {"beginHourTrend2",319}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 472 "../tests/keys" + {"cloudsCode2Trend3",467}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 725 "../tests/keys" + {"endYearTrend4",720}, + {""}, {""}, {""}, {""}, {""}, +#line 2280 "../tests/keys" + {"windGustTrend3",2275}, + {""}, +#line 370 "../tests/keys" + {"ceilingAndVisibilityOKTrend3",365}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1563 "../tests/keys" + {"padding_sec1_loc",1558}, + {""}, {""}, {""}, +#line 1562 "../tests/keys" + {"padding_local_7_1",1557}, + {""}, +#line 447 "../tests/keys" + {"cloudsBaseCoded1Trend3",442}, +#line 1355 "../tests/keys" + {"numberOfGridUsed",1350}, + {""}, {""}, {""}, {""}, +#line 234 "../tests/keys" + {"Time_Range_One_E4",229}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1433 "../tests/keys" + {"offsetBBitmap",1428}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 467 "../tests/keys" + {"cloudsCode1Trend3",462}, + {""}, {""}, {""}, {""}, +#line 954 "../tests/keys" + {"intervalBetweenTimes",949}, + {""}, +#line 33 "../tests/keys" + {"Date_E4",28}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 1945 "../tests/keys" + {"section_11",1940}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1781 "../tests/keys" + {"runwayExtentOfContaminationState3",1776}, + {""}, {""}, {""}, +#line 1777 "../tests/keys" + {"runwayExtentOfContaminationCodeState3",1772}, + {""}, +#line 2289 "../tests/keys" + {"windUnitsTrend1",2284}, + {""}, {""}, +#line 1614 "../tests/keys" + {"precisionOfTheUnpackedSubset",1609}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 257 "../tests/keys" + {"XpInGridLengths",252}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 1630 "../tests/keys" + {"presentWeather2PresentTrend3",1625}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 62 "../tests/keys" + {"ExtremeValuesInMaximumRVR1",57}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 65 "../tests/keys" + {"ExtremeValuesInMaximumRVR4",60}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 798 "../tests/keys" + {"extremeValuesRVR1",793}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 74 "../tests/keys" + {"GG",69}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 801 "../tests/keys" + {"extremeValuesRVR4",796}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2232 "../tests/keys" + {"variationOfVisibilityTrend3",2227}, + {""}, {""}, {""}, {""}, {""}, +#line 405 "../tests/keys" + {"cloudsAbbreviation1Trend1",400}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 232 "../tests/keys" + {"Time_Range_One_E2",227}, + {""}, {""}, {""}, +#line 754 "../tests/keys" + {"experimentVersionNumber2",749}, + {""}, +#line 420 "../tests/keys" + {"cloudsAbbreviation4Trend1",415}, + {""}, {""}, {""}, {""}, {""}, +#line 1914 "../tests/keys" + {"section5UniqueIdentifier",1909}, + {""}, {""}, +#line 29 "../tests/keys" + {"CLNOMA",24}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 408 "../tests/keys" + {"cloudsAbbreviation1Trend4",403}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 423 "../tests/keys" + {"cloudsAbbreviation4Trend4",418}, +#line 1957 "../tests/keys" + {"setBitsPerValue",1952}, + {""}, {""}, +#line 550 "../tests/keys" + {"coordAveraging2",545}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1589 "../tests/keys" + {"pastTendencyRVR3",1584}, + {""}, #line 24 "../tests/keys" {"BUFR",19}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 1910 "../tests/keys" + {"section4UniqueIdentifier",1905}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 455 "../tests/keys" + {"cloudsBaseCoded3Trend1",450}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 458 "../tests/keys" + {"cloudsBaseCoded3Trend4",453}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 475 "../tests/keys" + {"cloudsCode3Trend1",470}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 797 "../tests/keys" + {"extremeCounterClockwiseWindDirection",792}, +#line 63 "../tests/keys" + {"ExtremeValuesInMaximumRVR2",58}, + {""}, {""}, {""}, {""}, {""}, +#line 478 "../tests/keys" + {"cloudsCode3Trend4",473}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 233 "../tests/keys" + {"Time_Range_One_E3",228}, + {""}, +#line 1505 "../tests/keys" + {"padding_grid50_1",1500}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 799 "../tests/keys" + {"extremeValuesRVR2",794}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 723 "../tests/keys" + {"endYearTrend2",718}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 331 "../tests/keys" + {"beginMonthTrend1",326}, + {""}, {""}, +#line 410 "../tests/keys" + {"cloudsAbbreviation2Trend1",405}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 91 "../tests/keys" + {"ICEFieldsUsed",86}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 31 "../tests/keys" + {"Date_E2",26}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 413 "../tests/keys" + {"cloudsAbbreviation2Trend4",408}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1075 "../tests/keys" + {"listMembersUsed3",1070}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 1309 "../tests/keys" + {"numberOfBitsContainingEachPackedValue",1304}, + {""}, {""}, {""}, +#line 64 "../tests/keys" + {"ExtremeValuesInMaximumRVR3",59}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 456 "../tests/keys" + {"cloudsBaseCoded3Trend2",451}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 800 "../tests/keys" + {"extremeValuesRVR3",795}, +#line 1521 "../tests/keys" + {"padding_loc190_1",1516}, + {""}, {""}, +#line 434 "../tests/keys" + {"cloudsBase3",429}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1558 "../tests/keys" + {"padding_local1_1",1553}, + {""}, {""}, {""}, +#line 908 "../tests/keys" + {"hoursAfterDataCutoff",903}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 476 "../tests/keys" + {"cloudsCode3Trend2",471}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 415 "../tests/keys" + {"cloudsAbbreviation3Trend1",410}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 332 "../tests/keys" + {"beginMonthTrend2",327}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 418 "../tests/keys" + {"cloudsAbbreviation3Trend4",413}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 87 "../tests/keys" + {"HourOfModelVersion",82}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1905 "../tests/keys" + {"section3UniqueIdentifier",1900}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 406 "../tests/keys" + {"cloudsAbbreviation1Trend2",401}, + {""}, {""}, {""}, #line 454 "../tests/keys" {"cloudsBaseCoded3",449}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 457 "../tests/keys" {"cloudsBaseCoded3Trend3",452}, - {""}, -#line 449 "../tests/keys" - {"cloudsBaseCoded2",444}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 412 "../tests/keys" - {"cloudsAbbreviation2Trend3",407}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 451 "../tests/keys" - {"cloudsBaseCoded2Trend2",446}, -#line 462 "../tests/keys" - {"cloudsBaseCoded4Trend3",457}, +#line 421 "../tests/keys" + {"cloudsAbbreviation4Trend2",416}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 724 "../tests/keys" + {"endYearTrend3",719}, + {""}, +#line 336 "../tests/keys" + {"beginYearTrend2",331}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 477 "../tests/keys" + {"cloudsCode3Trend3",472}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1557 "../tests/keys" + {"padding_local11_1",1552}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 32 "../tests/keys" + {"Date_E3",27}, + {""}, {""}, {""}, +#line 164 "../tests/keys" + {"NB",159}, +#line 1437 "../tests/keys" + {"offsetBeforeBitmap",1432}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1560 "../tests/keys" + {"padding_local40_1",1555}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 1410 "../tests/keys" + {"numberOfVGridUsed",1405}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 32 "../tests/keys" - {"Date_E3",27}, - {""}, -#line 477 "../tests/keys" - {"cloudsCode3Trend3",472}, +#line 227 "../tests/keys" + {"TYPE_OF",222}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 225 "../tests/keys" + {"TYPE_FF",220}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 411 "../tests/keys" + {"cloudsAbbreviation2Trend2",406}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 407 "../tests/keys" + {"cloudsAbbreviation1Trend3",402}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1918 "../tests/keys" + {"section6UniqueIdentifier",1913}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 422 "../tests/keys" + {"cloudsAbbreviation4Trend3",417}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 9 "../tests/keys" + {"*********_EXTRA_DATA_***************",4}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 471 "../tests/keys" - {"cloudsCode2Trend2",466}, -#line 482 "../tests/keys" - {"cloudsCode4Trend3",477}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1902 "../tests/keys" - {"section3UniqueIdentifier",1897}, - {""}, {""}, {""}, -#line 1715 "../tests/keys" - {"reflectivityCalibrationConstant",1710}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 228 "../tests/keys" + {"TYPE_OR",223}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 416 "../tests/keys" + {"cloudsAbbreviation3Trend2",411}, {""}, {""}, -#line 1622 "../tests/keys" - {"presentWeather1PresentTrend3",1617}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 335 "../tests/keys" - {"beginYearTrend1",330}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 136 "../tests/keys" - {"Local_Number_Members_Used",131}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1915 "../tests/keys" - {"section6UniqueIdentifier",1910}, +#line 2290 "../tests/keys" + {"windUnitsTrend2",2285}, {""}, {""}, -#line 724 "../tests/keys" - {"endYearTrend3",719}, +#line 269 "../tests/keys" + {"ZLBASE",264}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1919 "../tests/keys" - {"section7UniqueIdentifier",1914}, - {""}, {""}, {""}, -#line 324 "../tests/keys" - {"beginHourTrend2",319}, +#line 2205 "../tests/keys" + {"unusedBitsInBitmap",2200}, + {""}, {""}, {""}, {""}, +#line 204 "../tests/keys" + {"RVR1_1",199}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1561 "../tests/keys" + {"padding_local_35",1556}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 207 "../tests/keys" + {"RVR4_1",202}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 190 "../tests/keys" + {"Original_CodeTable_2_Version_Number",185}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 345 "../tests/keys" + {"bitsPerValueAndRepack",340}, + {""}, {""}, {""}, {""}, +#line 200 "../tests/keys" + {"P_TACC",195}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 440 "../tests/keys" + {"cloudsBase4Trend1",435}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 412 "../tests/keys" + {"cloudsAbbreviation2Trend3",407}, + {""}, {""}, {""}, +#line 443 "../tests/keys" + {"cloudsBase4Trend4",438}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1312 "../tests/keys" + {"numberOfBitsUsedForTheScaledGroupLengths",1307}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2287 "../tests/keys" - {"windUnitsTrend2",2282}, - {""}, -#line 1381 "../tests/keys" - {"numberOfPointsAlongTheYAxis",1376}, +#line 1559 "../tests/keys" + {"padding_local1_31",1554}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 74 "../tests/keys" - {"GG",69}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 1555 "../tests/keys" + {"padding_loc9_1",1550}, +#line 1553 "../tests/keys" + {"padding_loc6_1",1548}, +#line 1554 "../tests/keys" + {"padding_loc7_1",1549}, +#line 2156 "../tests/keys" + {"typeOfLevelECMF",2151}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 205 "../tests/keys" + {"RVR2_1",200}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 417 "../tests/keys" + {"cloudsAbbreviation3Trend3",412}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 240 "../tests/keys" + {"Total_Number_Members_Used",235}, + {""}, {""}, {""}, +#line 61 "../tests/keys" + {"Extra_Data_FreeFormat_0_none",56}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1384 "../tests/keys" + {"numberOfPointsAlongTheYAxis",1379}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 265 "../tests/keys" + {"YearOfModelVersion",260}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 441 "../tests/keys" + {"cloudsBase4Trend2",436}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 238 "../tests/keys" + {"Total_Number_Members_Missing",233}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 206 "../tests/keys" + {"RVR3_1",201}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1465 "../tests/keys" + {"oneMinuteMeanMaximumRVR1",1460}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 333 "../tests/keys" + {"beginMonthTrend3",328}, + {""}, {""}, +#line 1407 "../tests/keys" + {"numberOfUnusedBitsAtEndOfSection3",1402}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1468 "../tests/keys" + {"oneMinuteMeanMaximumRVR4",1463}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 6 "../tests/keys" + {"************_ENSEMBLE_**************",1}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 442 "../tests/keys" + {"cloudsBase4Trend3",437}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 1551 "../tests/keys" + {"padding_loc50_1",1546}, +#line 229 "../tests/keys" + {"TYPE_PF",224}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 1552 "../tests/keys" + {"padding_loc5_1",1547}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 886 "../tests/keys" + {"gts_CCCC",881}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 66 "../tests/keys" + {"ExtremeValuesRVR1",61}, + {""}, {""}, +#line 203 "../tests/keys" + {"RENAME",198}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 239 "../tests/keys" + {"Total_Number_Members_Possible",234}, +#line 1459 "../tests/keys" + {"offsetToEndOf4DvarWindow",1454}, + {""}, {""}, {""}, {""}, {""}, +#line 69 "../tests/keys" + {"ExtremeValuesRVR4",64}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 250 "../tests/keys" + {"X1InGridLengths",245}, + {""}, {""}, {""}, +#line 151 "../tests/keys" + {"Minute_E4",146}, + {""}, {""}, +#line 430 "../tests/keys" + {"cloudsBase2Trend1",425}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 433 "../tests/keys" + {"cloudsBase2Trend4",428}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 1556 "../tests/keys" + {"padding_loc9_2",1551}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 425 "../tests/keys" + {"cloudsBase1Trend1",420}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 7 "../tests/keys" + {"************_EXPERIMENT_************",2}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 428 "../tests/keys" + {"cloudsBase1Trend4",423}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 2059 "../tests/keys" + {"swapScanningY",2054}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 51 "../tests/keys" + {"ECMWF_s",46}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 67 "../tests/keys" + {"ExtremeValuesRVR2",62}, +#line 136 "../tests/keys" + {"Local_Number_Members_Used",131}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 252 "../tests/keys" + {"X2InGridLengths",247}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 431 "../tests/keys" + {"cloudsBase2Trend2",426}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1466 "../tests/keys" + {"oneMinuteMeanMaximumRVR2",1461}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 128 "../tests/keys" {"Local_Number_Members_Missing",123}, - {""}, {""}, {""}, {""}, {""}, -#line 1074 "../tests/keys" - {"listMembersUsed3",1069}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1073 "../tests/keys" - {"listMembersUsed2",1068}, - {""}, {""}, -#line 1552 "../tests/keys" - {"padding_loc9_1",1547}, -#line 1551 "../tests/keys" - {"padding_loc7_1",1546}, -#line 333 "../tests/keys" - {"beginMonthTrend3",328}, - {""}, {""}, -#line 801 "../tests/keys" - {"extremeValuesRVR4",796}, - {""}, {""}, -#line 960 "../tests/keys" - {"isCavokTrend3",955}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 332 "../tests/keys" - {"beginMonthTrend2",327}, - {""}, {""}, {""}, -#line 1556 "../tests/keys" - {"padding_local1_31",1551}, - {""}, -#line 227 "../tests/keys" - {"TYPE_OF",222}, - {""}, {""}, -#line 337 "../tests/keys" - {"beginYearTrend3",332}, - {""}, {""}, {""}, -#line 225 "../tests/keys" - {"TYPE_FF",220}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1550 "../tests/keys" - {"padding_loc6_1",1545}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 417 "../tests/keys" - {"cloudsAbbreviation3Trend3",412}, - {""}, {""}, -#line 452 "../tests/keys" - {"cloudsBaseCoded2Trend3",447}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1404 "../tests/keys" - {"numberOfUnusedBitsAtEndOfSection3",1399}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 323 "../tests/keys" - {"beginHourTrend1",318}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 472 "../tests/keys" - {"cloudsCode2Trend3",467}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 702 "../tests/keys" - {"endHourTrend3",697}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2286 "../tests/keys" - {"windUnitsTrend1",2281}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 428 "../tests/keys" - {"cloudsBase1Trend4",423}, - {""}, {""}, {""}, -#line 352 "../tests/keys" - {"bufrHeaderSubCentre",347}, - {""}, -#line 798 "../tests/keys" - {"extremeValuesRVR1",793}, - {""}, {""}, -#line 1549 "../tests/keys" - {"padding_loc5_1",1544}, - {""}, {""}, {""}, {""}, -#line 234 "../tests/keys" - {"Time_Range_One_E4",229}, - {""}, -#line 1434 "../tests/keys" - {"offsetBeforeBitmap",1429}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1502 "../tests/keys" - {"padding_grid50_1",1497}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 132 "../tests/keys" - {"Local_Number_Members_Possible",127}, +#line 59 "../tests/keys" + {"Ensemble_Identifier_E4",54}, + {""}, +#line 70 "../tests/keys" + {"FMULTE",65}, {""}, {""}, -#line 151 "../tests/keys" - {"Minute_E4",146}, - {""}, {""}, -#line 1911 "../tests/keys" - {"section5UniqueIdentifier",1906}, - {""}, {""}, -#line 9 "../tests/keys" - {"*********_EXTRA_DATA_***************",4}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 325 "../tests/keys" - {"beginHourTrend3",320}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 425 "../tests/keys" - {"cloudsBase1Trend1",420}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2288 "../tests/keys" - {"windUnitsTrend3",2283}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 799 "../tests/keys" - {"extremeValuesRVR2",794}, - {""}, {""}, {""}, -#line 190 "../tests/keys" - {"Original_CodeTable_2_Version_Number",185}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1553 "../tests/keys" - {"padding_loc9_2",1548}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1465 "../tests/keys" - {"oneMinuteMeanMaximumRVR4",1460}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1307 "../tests/keys" - {"numberOfBitsContainingEachPackedValue",1302}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 426 "../tests/keys" {"cloudsBase1Trend2",421}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 232 "../tests/keys" - {"Time_Range_One_E2",227}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1332 "../tests/keys" - {"numberOfDaysInClimateSamplingWindow",1327}, -#line 1310 "../tests/keys" - {"numberOfBitsUsedForTheScaledGroupLengths",1305}, - {""}, {""}, {""}, -#line 363 "../tests/keys" - {"ccsdsBlockSize",358}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 207 "../tests/keys" - {"RVR4_1",202}, - {""}, {""}, {""}, {""}, -#line 85 "../tests/keys" - {"HDF5",80}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 228 "../tests/keys" - {"TYPE_OR",223}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1407 "../tests/keys" - {"numberOfVGridUsed",1402}, - {""}, {""}, {""}, {""}, -#line 91 "../tests/keys" - {"ICEFieldsUsed",86}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 2202 "../tests/keys" - {"unusedBitsInBitmap",2197}, - {""}, {""}, {""}, {""}, {""}, -#line 204 "../tests/keys" - {"RVR1_1",199}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1462 "../tests/keys" - {"oneMinuteMeanMaximumRVR1",1457}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 800 "../tests/keys" - {"extremeValuesRVR3",795}, - {""}, {""}, {""}, {""}, {""}, -#line 1554 "../tests/keys" - {"padding_local11_1",1549}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 797 "../tests/keys" - {"extremeCounterClockwiseWindDirection",792}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 265 "../tests/keys" - {"YearOfModelVersion",260}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1739 "../tests/keys" - {"rootGroupSymbolTableEntry",1734}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 51 "../tests/keys" - {"ECMWF_s",46}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 257 "../tests/keys" - {"XpInGridLengths",252}, - {""}, {""}, -#line 205 "../tests/keys" - {"RVR2_1",200}, -#line 427 "../tests/keys" - {"cloudsBase1Trend3",422}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1981 "../tests/keys" - {"skipExtraKeyAttributes",1976}, - {""}, {""}, {""}, {""}, {""}, -#line 233 "../tests/keys" - {"Time_Range_One_E3",228}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 1469 "../tests/keys" - {"oneMinuteMeanMinimumRVR4",1464}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"oneMinuteMeanMinimumRVR1",1464}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 149 "../tests/keys" - {"Minute_E2",144}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 438 "../tests/keys" - {"cloudsBase3Trend4",433}, - {""}, {""}, {""}, -#line 26 "../tests/keys" - {"CCCC",21}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 443 "../tests/keys" - {"cloudsBase4Trend4",438}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 7 "../tests/keys" - {"************_EXPERIMENT_************",2}, - {""}, {""}, -#line 1519 "../tests/keys" - {"padding_loc191_1",1514}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 68 "../tests/keys" + {"ExtremeValuesRVR3",63}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 87 "../tests/keys" - {"HourOfModelVersion",82}, - {""}, {""}, {""}, -#line 1463 "../tests/keys" - {"oneMinuteMeanMaximumRVR2",1458}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 65 "../tests/keys" - {"ExtremeValuesInMaximumRVR4",60}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 92 "../tests/keys" - {"ICPLSIZE",87}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 435 "../tests/keys" - {"cloudsBase3Trend1",430}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 440 "../tests/keys" - {"cloudsBase4Trend1",435}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 59 "../tests/keys" - {"Ensemble_Identifier_E4",54}, - {""}, {""}, {""}, {""}, -#line 200 "../tests/keys" - {"P_TACC",195}, - {""}, {""}, -#line 1522 "../tests/keys" - {"padding_loc192_1",1517}, - {""}, -#line 345 "../tests/keys" - {"bitsPerValueAndRepack",340}, - {""}, {""}, {""}, {""}, {""}, -#line 229 "../tests/keys" - {"TYPE_PF",224}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1466 "../tests/keys" - {"oneMinuteMeanMinimumRVR1",1461}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 62 "../tests/keys" - {"ExtremeValuesInMaximumRVR1",57}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 206 "../tests/keys" - {"RVR3_1",201}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 436 "../tests/keys" - {"cloudsBase3Trend2",431}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 441 "../tests/keys" - {"cloudsBase4Trend2",436}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 222 "../tests/keys" - {"TYPE_AN",217}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 1009 "../tests/keys" {"lastMonthUsedToBuildClimateMonth1",1004}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 433 "../tests/keys" - {"cloudsBase2Trend4",428}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1747 "../tests/keys" - {"runwayBrakingActionState4",1742}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1299 "../tests/keys" - {"numberInHorizontalCoordinates",1294}, - {""}, -#line 1548 "../tests/keys" - {"padding_loc50_1",1543}, - {""}, {""}, -#line 63 "../tests/keys" - {"ExtremeValuesInMaximumRVR2",58}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 6 "../tests/keys" - {"************_ENSEMBLE_**************",1}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 2056 "../tests/keys" - {"swapScanningY",2051}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 61 "../tests/keys" - {"Extra_Data_FreeFormat_0_none",56}, + {""}, {""}, {""}, {""}, +#line 1472 "../tests/keys" + {"oneMinuteMeanMinimumRVR4",1467}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 57 "../tests/keys" - {"Ensemble_Identifier_E2",52}, {""}, {""}, {""}, {""}, {""}, -#line 430 "../tests/keys" - {"cloudsBase2Trend1",425}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1010 "../tests/keys" - {"lastMonthUsedToBuildClimateMonth2",1005}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1467 "../tests/keys" - {"oneMinuteMeanMinimumRVR2",1462}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 187 "../tests/keys" - {"Number_Combination_Ensembles_1_none",182}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 70 "../tests/keys" - {"FMULTE",65}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1456 "../tests/keys" - {"offsetToEndOf4DvarWindow",1451}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 150 "../tests/keys" - {"Minute_E3",145}, - {""}, {""}, {""}, {""}, -#line 437 "../tests/keys" - {"cloudsBase3Trend3",432}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1744 "../tests/keys" - {"runwayBrakingActionState1",1739}, - {""}, {""}, {""}, -#line 431 "../tests/keys" - {"cloudsBase2Trend2",426}, -#line 442 "../tests/keys" - {"cloudsBase4Trend3",437}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 131 "../tests/keys" - {"Local_Number_Members_Missing_E4",126}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 69 "../tests/keys" - {"ExtremeValuesRVR4",64}, -#line 64 "../tests/keys" - {"ExtremeValuesInMaximumRVR3",59}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1464 "../tests/keys" - {"oneMinuteMeanMaximumRVR3",1459}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1584 "../tests/keys" - {"pastTendencyRVR1",1579}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 58 "../tests/keys" - {"Ensemble_Identifier_E3",53}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 432 "../tests/keys" + {"cloudsBase2Trend3",427}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 237 "../tests/keys" {"Time_Range_Two_E4",232}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 66 "../tests/keys" - {"ExtremeValuesRVR1",61}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 231 "../tests/keys" - {"Threshold_Or_Distribution_Units",226}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1558 "../tests/keys" - {"padding_local_35",1553}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 129 "../tests/keys" - {"Local_Number_Members_Missing_E2",124}, - {""}, {""}, {""}, {""}, -#line 1745 "../tests/keys" - {"runwayBrakingActionState2",1740}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 432 "../tests/keys" - {"cloudsBase2Trend3",427}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 135 "../tests/keys" - {"Local_Number_Members_Possible_E4",130}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 67 "../tests/keys" - {"ExtremeValuesRVR2",62}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 71 "../tests/keys" - {"FMULTM",66}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 149 "../tests/keys" + {"Minute_E2",144}, {""}, {""}, {""}, #line 223 "../tests/keys" {"TYPE_CF",218}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 235 "../tests/keys" - {"Time_Range_Two_E2",230}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 852 "../tests/keys" - {"genVertHeightCoords",847}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1468 "../tests/keys" - {"oneMinuteMeanMinimumRVR3",1463}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 264 "../tests/keys" - {"YY",259}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1521 "../tests/keys" - {"padding_loc191_3",1516}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1520 "../tests/keys" - {"padding_loc191_2",1515}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1509 "../tests/keys" - {"padding_loc13_4",1504}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 130 "../tests/keys" - {"Local_Number_Members_Missing_E3",125}, - {""}, -#line 133 "../tests/keys" - {"Local_Number_Members_Possible_E2",128}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1522 "../tests/keys" + {"padding_loc191_1",1517}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1003 "../tests/keys" - {"lBB",998}, - {""}, {""}, {""}, {""}, #line 104 "../tests/keys" {"LSTCUM",99}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 68 "../tests/keys" - {"ExtremeValuesRVR3",63}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1587 "../tests/keys" - {"pastTendencyRVR4",1582}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 90 "../tests/keys" - {"Hour_E4",85}, +#line 427 "../tests/keys" + {"cloudsBase1Trend3",422}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1564 "../tests/keys" - {"padding_sec3_1",1559}, +#line 132 "../tests/keys" + {"Local_Number_Members_Possible",127}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1565 "../tests/keys" - {"padding_sec4_1",1560}, - {""}, {""}, {""}, {""}, -#line 201 "../tests/keys" - {"P_TAVG",196}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 236 "../tests/keys" - {"Time_Range_Two_E3",231}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1546 "../tests/keys" - {"padding_loc3_1",1541}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1499 "../tests/keys" - {"padding_grid1_2",1494}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1523 "../tests/keys" - {"padding_loc19_2",1518}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1501 "../tests/keys" - {"padding_grid4_1",1496}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, + {""}, {""}, {""}, {""}, {""}, {""}, #line 79 "../tests/keys" {"GRIBEditionNumber",74}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 134 "../tests/keys" - {"Local_Number_Members_Possible_E3",129}, - {""}, {""}, -#line 1746 "../tests/keys" - {"runwayBrakingActionState3",1741}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 250 "../tests/keys" - {"X1InGridLengths",245}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1517 "../tests/keys" - {"padding_loc18_2",1512}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1498 "../tests/keys" - {"padding_grid1_1",1493}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 1561 "../tests/keys" - {"padding_sec2_1",1556}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 57 "../tests/keys" + {"Ensemble_Identifier_E2",52}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 268 "../tests/keys" {"YpInGridLengths",263}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 252 "../tests/keys" - {"X2InGridLengths",247}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1547 "../tests/keys" - {"padding_loc4_2",1542}, + {""}, {""}, +#line 1467 "../tests/keys" + {"oneMinuteMeanMaximumRVR3",1462}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1010 "../tests/keys" + {"lastMonthUsedToBuildClimateMonth2",1005}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1539 "../tests/keys" - {"padding_loc2_1",1534}, +#line 1568 "../tests/keys" + {"padding_sec4_1",1563}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 1523 "../tests/keys" + {"padding_loc191_2",1518}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1516 "../tests/keys" - {"padding_loc18_1",1511}, +#line 235 "../tests/keys" + {"Time_Range_Two_E2",230}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1747 "../tests/keys" + {"runwayBrakingActionState1",1742}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1505 "../tests/keys" - {"padding_loc10_1",1500}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 58 "../tests/keys" + {"Ensemble_Identifier_E3",53}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 1525 "../tests/keys" + {"padding_loc192_1",1520}, + {""}, {""}, {""}, +#line 1750 "../tests/keys" + {"runwayBrakingActionState4",1745}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 150 "../tests/keys" + {"Minute_E3",145}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 435 "../tests/keys" + {"cloudsBase3Trend1",430}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 90 "../tests/keys" + {"Hour_E4",85}, +#line 236 "../tests/keys" + {"Time_Range_Two_E3",231}, + {""}, {""}, +#line 438 "../tests/keys" + {"cloudsBase3Trend4",433}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 71 "../tests/keys" + {"FMULTM",66}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1470 "../tests/keys" + {"oneMinuteMeanMinimumRVR2",1465}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 264 "../tests/keys" + {"YY",259}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8798,150 +9025,191 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 436 "../tests/keys" + {"cloudsBase3Trend2",431}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 231 "../tests/keys" + {"Threshold_Or_Distribution_Units",226}, + {""}, +#line 1541 "../tests/keys" + {"padding_loc29_3",1536}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1506 "../tests/keys" + {"padding_grid5_1",1501}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 75 "../tests/keys" + {"GRIB",70}, + {""}, +#line 1501 "../tests/keys" + {"padding_grid1_1",1496}, + {""}, {""}, {""}, +#line 102 "../tests/keys" + {"LBC_Initial_Conditions",97}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 1504 "../tests/keys" + {"padding_grid4_1",1499}, + {""}, +#line 1471 "../tests/keys" + {"oneMinuteMeanMinimumRVR3",1466}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1748 "../tests/keys" + {"runwayBrakingActionState2",1743}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1564 "../tests/keys" + {"padding_sec2_1",1559}, + {""}, {""}, {""}, {""}, +#line 1550 "../tests/keys" + {"padding_loc4_2",1545}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 1539 "../tests/keys" + {"padding_loc29_1",1534}, + {""}, {""}, +#line 437 "../tests/keys" + {"cloudsBase3Trend3",432}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1527 "../tests/keys" + {"padding_loc20_1",1522}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1003 "../tests/keys" + {"lBB",998}, + {""}, {""}, {""}, {""}, +#line 1542 "../tests/keys" + {"padding_loc2_1",1537}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 88 "../tests/keys" {"Hour_E2",83}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1586 "../tests/keys" - {"pastTendencyRVR3",1581}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1585 "../tests/keys" - {"pastTendencyRVR2",1580}, - {""}, {""}, {""}, {""}, -#line 10 "../tests/keys" - {"7777",5}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 214 "../tests/keys" - {"Show_Combination_Ensem_E4_0_no_1_yes",209}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 75 "../tests/keys" - {"GRIB",70}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1562 "../tests/keys" - {"padding_sec2_2",1557}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1540 "../tests/keys" - {"padding_loc2_2",1535}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1500 "../tests/keys" - {"padding_grid3_1",1495}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 139 "../tests/keys" - {"Local_Number_Members_Used_E4",134}, - {""}, {""}, -#line 121 "../tests/keys" - {"Less_Than_Or_To_Overall_Distribution",116}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1510 "../tests/keys" - {"padding_loc13_5",1505}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2153 "../tests/keys" - {"typeOfLevelECMF",2148}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 212 "../tests/keys" - {"Show_Combination_Ensem_E2_0_no_1_yes",207}, - {""}, {""}, -#line 1309 "../tests/keys" - {"numberOfBitsUsedForTheGroupWidths",1304}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 1542 "../tests/keys" - {"padding_loc30_2",1537}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 137 "../tests/keys" - {"Local_Number_Members_Used_E2",132}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1527 "../tests/keys" - {"padding_loc244_1",1522}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1545 "../tests/keys" - {"padding_loc38_1",1540}, - {""}, {""}, -#line 886 "../tests/keys" - {"gts_CCCC",881}, +#line 187 "../tests/keys" + {"Number_Combination_Ensembles_1_none",182}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1541 "../tests/keys" - {"padding_loc30_1",1536}, +#line 1508 "../tests/keys" + {"padding_loc10_1",1503}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1537 "../tests/keys" - {"padding_loc29_2",1532}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 89 "../tests/keys" - {"Hour_E3",84}, - {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1749 "../tests/keys" + {"runwayBrakingActionState3",1744}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 1503 "../tests/keys" - {"padding_grid5_1",1498}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, + {"padding_grid3_1",1498}, + {""}, {""}, {""}, #line 226 "../tests/keys" {"TYPE_FX",221}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 201 "../tests/keys" + {"P_TAVG",196}, + {""}, {""}, +#line 1538 "../tests/keys" + {"padding_loc28_1",1533}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 89 "../tests/keys" + {"Hour_E3",84}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 1524 "../tests/keys" + {"padding_loc191_3",1519}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1519 "../tests/keys" + {"padding_loc18_1",1514}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 213 "../tests/keys" - {"Show_Combination_Ensem_E3_0_no_1_yes",208}, +#line 1513 "../tests/keys" + {"padding_loc13_5",1508}, + {""}, {""}, {""}, {""}, {""}, +#line 1565 "../tests/keys" + {"padding_sec2_2",1560}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 1543 "../tests/keys" + {"padding_loc2_2",1538}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 224 "../tests/keys" + {"TYPE_FC",219}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8949,8 +9217,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1563 "../tests/keys" - {"padding_sec2_3",1558}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8958,8 +9224,370 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 131 "../tests/keys" + {"Local_Number_Members_Missing_E4",126}, + {""}, {""}, +#line 1311 "../tests/keys" + {"numberOfBitsUsedForTheGroupWidths",1306}, + {""}, {""}, {""}, {""}, +#line 1567 "../tests/keys" + {"padding_sec3_1",1562}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1566 "../tests/keys" + {"padding_sec2_3",1561}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1544 "../tests/keys" + {"padding_loc30_1",1539}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1549 "../tests/keys" + {"padding_loc3_1",1544}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 1533 "../tests/keys" + {"padding_loc245_1",1528}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1512 "../tests/keys" + {"padding_loc13_4",1507}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 1502 "../tests/keys" + {"padding_grid1_2",1497}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1530 "../tests/keys" + {"padding_loc244_1",1525}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 129 "../tests/keys" + {"Local_Number_Members_Missing_E2",124}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1540 "../tests/keys" + {"padding_loc29_2",1535}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 259 "../tests/keys" + {"Y1InGridLengths",254}, + {""}, {""}, +#line 135 "../tests/keys" + {"Local_Number_Members_Possible_E4",130}, + {""}, {""}, +#line 214 "../tests/keys" + {"Show_Combination_Ensem_E4_0_no_1_yes",209}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1534 "../tests/keys" + {"padding_loc245_2",1529}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 1526 "../tests/keys" + {"padding_loc19_2",1521}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, #line 1536 "../tests/keys" - {"padding_loc29_1",1531}, + {"padding_loc27_1",1531}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 130 "../tests/keys" + {"Local_Number_Members_Missing_E3",125}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1531 "../tests/keys" + {"padding_loc244_2",1526}, + {""}, {""}, {""}, {""}, {""}, +#line 1548 "../tests/keys" + {"padding_loc38_1",1543}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 133 "../tests/keys" + {"Local_Number_Members_Possible_E2",128}, + {""}, {""}, +#line 212 "../tests/keys" + {"Show_Combination_Ensem_E2_0_no_1_yes",207}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 121 "../tests/keys" + {"Less_Than_Or_To_Overall_Distribution",116}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 261 "../tests/keys" + {"Y2InGridLengths",256}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 76 "../tests/keys" + {"GRIBEXSection1Problem",71}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 134 "../tests/keys" + {"Local_Number_Members_Possible_E3",129}, + {""}, {""}, +#line 213 "../tests/keys" + {"Show_Combination_Ensem_E3_0_no_1_yes",208}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1520 "../tests/keys" + {"padding_loc18_2",1515}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1224 "../tests/keys" + {"meanValueRVR1",1219}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1227 "../tests/keys" + {"meanValueRVR4",1222}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 1528 "../tests/keys" + {"padding_loc21_1",1523}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1516 "../tests/keys" + {"padding_loc15_1",1511}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 1514 "../tests/keys" + {"padding_loc14_1",1509}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1545 "../tests/keys" + {"padding_loc30_2",1540}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 1546 "../tests/keys" + {"padding_loc37_1",1541}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1225 "../tests/keys" + {"meanValueRVR2",1220}, + {""}, {""}, {""}, {""}, {""}, +#line 1511 "../tests/keys" + {"padding_loc13_3",1506}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 1532 "../tests/keys" + {"padding_loc244_3",1527}, + {""}, {""}, {""}, {""}, {""}, +#line 222 "../tests/keys" + {"TYPE_AN",217}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 1529 "../tests/keys" + {"padding_loc23_1",1524}, +#line 95 "../tests/keys" + {"INGRIB",90}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 1537 "../tests/keys" + {"padding_loc27_2",1532}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1509 "../tests/keys" + {"padding_loc13_1",1504}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 1518 "../tests/keys" + {"padding_loc17_2",1513}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 152 "../tests/keys" + {"Missing_Model_LBC",147}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 191 "../tests/keys" + {"Original_Parameter_Iden_CodeTable2",186}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 139 "../tests/keys" + {"Local_Number_Members_Used_E4",134}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 1226 "../tests/keys" + {"meanValueRVR3",1221}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 1535 "../tests/keys" + {"padding_loc26_1",1530}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 23 "../tests/keys" + {"BUDG",18}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 1517 "../tests/keys" + {"padding_loc16_1",1512}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 137 "../tests/keys" + {"Local_Number_Members_Used_E2",132}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8974,160 +9602,19 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1535 "../tests/keys" - {"padding_loc28_1",1530}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1524 "../tests/keys" - {"padding_loc20_1",1519}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 102 "../tests/keys" - {"LBC_Initial_Conditions",97}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1538 "../tests/keys" - {"padding_loc29_3",1533}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 224 "../tests/keys" - {"TYPE_FC",219}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1226 "../tests/keys" - {"meanValueRVR4",1221}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1512 "../tests/keys" - {"padding_loc14_2",1507}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1511 "../tests/keys" - {"padding_loc14_1",1506}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1223 "../tests/keys" - {"meanValueRVR1",1218}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 259 "../tests/keys" - {"Y1InGridLengths",254}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1530 "../tests/keys" - {"padding_loc245_1",1525}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 261 "../tests/keys" - {"Y2InGridLengths",256}, - {""}, {""}, {""}, {""}, -#line 1224 "../tests/keys" - {"meanValueRVR2",1219}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 95 "../tests/keys" - {"INGRIB",90}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 152 "../tests/keys" - {"Missing_Model_LBC",147}, -#line 1529 "../tests/keys" - {"padding_loc244_3",1524}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1507 "../tests/keys" - {"padding_loc13_2",1502}, - {""}, {""}, {""}, {""}, -#line 1528 "../tests/keys" - {"padding_loc244_2",1523}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, #line 1515 "../tests/keys" - {"padding_loc17_2",1510}, + {"padding_loc14_2",1510}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9136,13 +9623,159 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1506 "../tests/keys" - {"padding_loc13_1",1501}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1547 "../tests/keys" + {"padding_loc37_2",1542}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 78 "../tests/keys" + {"GRIBEX_boustrophedonic",73}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1510 "../tests/keys" + {"padding_loc13_2",1505}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 172 "../tests/keys" + {"NINT_RITZ_EXP",167}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 158 "../tests/keys" + {"Model_LBC_Member_Identifier",153}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 21 "../tests/keys" + {"BBB",16}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, #line 54 "../tests/keys" {"Ensemble_Combinat_Number_0_none_E4",49}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9152,24 +9785,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1514 "../tests/keys" - {"padding_loc16_1",1509}, - {""}, {""}, -#line 76 "../tests/keys" - {"GRIBEXSection1Problem",71}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 191 "../tests/keys" - {"Original_Parameter_Iden_CodeTable2",186}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 1508 "../tests/keys" - {"padding_loc13_3",1503}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9189,13 +9804,11 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 52 "../tests/keys" {"Ensemble_Combinat_Number_0_none_E2",47}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 23 "../tests/keys" - {"BUDG",18}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9203,19 +9816,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1225 "../tests/keys" - {"meanValueRVR3",1220}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 1513 "../tests/keys" - {"padding_loc15_1",1508}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9227,21 +9827,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1525 "../tests/keys" - {"padding_loc21_1",1520}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1544 "../tests/keys" - {"padding_loc37_2",1539}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, #line 53 "../tests/keys" {"Ensemble_Combinat_Number_0_none_E3",48}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9263,18 +9849,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1543 "../tests/keys" - {"padding_loc37_1",1538}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1531 "../tests/keys" - {"padding_loc245_2",1526}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9285,253 +9859,8 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 21 "../tests/keys" - {"BBB",16}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1534 "../tests/keys" - {"padding_loc27_2",1529}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 172 "../tests/keys" - {"NINT_RITZ_EXP",167}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1526 "../tests/keys" - {"padding_loc23_1",1521}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1532 "../tests/keys" - {"padding_loc26_1",1527}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1533 "../tests/keys" - {"padding_loc27_1",1528}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 19 "../tests/keys" - {"At_least__Or_Distribut_Proportion_Of",14}, - {""}, {""}, {""}, {""}, {""}, -#line 158 "../tests/keys" - {"Model_LBC_Member_Identifier",153}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 78 "../tests/keys" - {"GRIBEX_boustrophedonic",73}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 155 "../tests/keys" - {"Missing_Model_LBC_E4",150}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 171 "../tests/keys" - {"NINT_LOG10_RITZ",166}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 242 "../tests/keys" {"Used_Model_LBC",237}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9573,9 +9902,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 153 "../tests/keys" - {"Missing_Model_LBC_E2",148}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9610,89 +9936,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 154 "../tests/keys" - {"Missing_Model_LBC_E3",149}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, + {""}, {""}, #line 77 "../tests/keys" {"GRIBEXShBugPresent",72}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9742,9 +9986,62 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 19 "../tests/keys" + {"At_least__Or_Distribut_Proportion_Of",14}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 171 "../tests/keys" + {"NINT_LOG10_RITZ",166}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 17 "../tests/keys" - {"AEC_RESTRICTED_OPTION_MASK",12}, +#line 155 "../tests/keys" + {"Missing_Model_LBC_E4",150}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9800,6 +10097,9 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 153 "../tests/keys" + {"Missing_Model_LBC_E2",148}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9839,6 +10139,9 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 154 "../tests/keys" + {"Missing_Model_LBC_E3",149}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9857,6 +10160,9 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 80 "../tests/keys" + {"GRIB_DEPTH",75}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9949,6 +10255,16 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 245 "../tests/keys" {"Used_Model_LBC_E4",240}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9965,15 +10281,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 12 "../tests/keys" - {"AEC_DATA_3BYTE_OPTION_MASK",7}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9986,7 +10293,10 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 17 "../tests/keys" + {"AEC_RESTRICTED_OPTION_MASK",12}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 243 "../tests/keys" {"Used_Model_LBC_E2",238}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -10008,25 +10318,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, #line 244 "../tests/keys" {"Used_Model_LBC_E3",239}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -10068,9 +10360,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 80 "../tests/keys" - {"GRIB_DEPTH",75}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -10093,7 +10382,49 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, #line 81 "../tests/keys" {"GRIB_LATITUDE",76}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -10123,7 +10454,170 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 16 "../tests/keys" {"AEC_PAD_RSI_OPTION_MASK",11}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -10234,69 +10728,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, #line 82 "../tests/keys" {"GRIB_LONGITUDE",77}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -10318,6 +10750,625 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 12 "../tests/keys" + {"AEC_DATA_3BYTE_OPTION_MASK",7}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, #line 13 "../tests/keys" {"AEC_DATA_MSB_OPTION_MASK",8}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -10451,414 +11502,121 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 15 "../tests/keys" - {"AEC_DATA_SIGNED_OPTION_MASK",10}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 14 "../tests/keys" - {"AEC_DATA_PREPROCESS_OPTION_MASK",9} + {"AEC_DATA_PREPROCESS_OPTION_MASK",9}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 15 "../tests/keys" + {"AEC_DATA_SIGNED_OPTION_MASK",10} }; const struct grib_keys_hash * diff --git a/tests/keys b/tests/keys index 2f51b7676..b37f99685 100644 --- a/tests/keys +++ b/tests/keys @@ -1047,1271 +1047,1274 @@ leadtime,1041 legBaseDate,1042 legBaseTime,1043 legNumber,1044 -lengthDescriptors,1045 -lengthIncrementForTheGroupLengths,1046 -lengthOf4DvarWindow,1047 -lengthOfHeaders,1048 -lengthOfIndexTemplate,1049 -lengthOfMessage,1050 -lengthOfOriginatorLocalTemplate,1051 -lengthOfProjectLocalTemplate,1052 -lengthOfTimeRange,1053 -lev,1054 -levTypeName,1055 -level,1056 -levelIndicator,1057 -levelType,1058 -levelist,1059 -levels,1060 -levtype,1061 -libraryVersion,1062 -listMembersMissing,1063 -listMembersMissing2,1064 -listMembersMissing3,1065 -listMembersMissing4,1066 -listMembersUsed,1067 -listMembersUsed2,1068 -listMembersUsed3,1069 -listMembersUsed4,1070 -listOfContributingSpectralBands,1071 -listOfDistributionFunctionParameter,1072 -listOfEnsembleForecastNumbers,1073 -listOfModelIdentifiers,1074 -listOfParametersUsedForClustering,1075 -listOfScaledFrequencies,1076 -local,1077 -localDateTime,1078 -localDay,1079 -localDecimalScaleFactor,1080 -localDefNumberOne,1081 -localDefNumberTwo,1082 -localDefinition,1083 -localDefinitionNumber,1084 -localDir,1085 -localExtensionPadding,1086 -localFlag,1087 -localFlagLatestVersion,1088 -localHour,1089 -localLatitude,1090 -localLatitude1,1091 -localLatitude2,1092 -localLongitude,1093 -localLongitude1,1094 -localLongitude2,1095 -localMinute,1096 -localMonth,1097 -localNumberOfObservations,1098 -localSecond,1099 -localSection,1100 -localSectionPresent,1101 -localTablesVersion,1102 -localTablesVersionNumber,1103 -localUsePresent,1104 -localYear,1105 -local_padding,1106 -local_use,1107 -logTransform,1108 -longitude,1109 -longitudeFirstInDegrees,1110 -longitudeLastInDegrees,1111 -longitudeOfCenterPoint,1112 -longitudeOfCenterPointInDegrees,1113 -longitudeOfCentralPointInClusterDomain,1114 -longitudeOfFirstDiamondCenterLine,1115 -longitudeOfFirstDiamondCenterLineInDegrees,1116 -longitudeOfFirstGridPoint,1117 -longitudeOfFirstGridPointInDegrees,1118 -longitudeOfIcosahedronPole,1119 -longitudeOfLastGridPoint,1120 -longitudeOfLastGridPointInDegrees,1121 -longitudeOfNorthWestCornerOfArea,1122 -longitudeOfReferencePoint,1123 -longitudeOfReferencePointInDegrees,1124 -longitudeOfSouthEastCornerOfArea,1125 -longitudeOfSouthernPole,1126 -longitudeOfSouthernPoleInDegrees,1127 -longitudeOfStretchingPole,1128 -longitudeOfStretchingPoleInDegrees,1129 -longitudeOfSubSatellitePoint,1130 -longitudeOfSubSatellitePointInDegrees,1131 -longitudeOfTangencyPoint,1132 -longitudeOfThePoleOfStretching,1133 -longitudeOfThePolePoint,1134 -longitudeOfThePolePointInDegrees,1135 -longitudeOfTheSouthernPoleOfProjection,1136 -longitudeSexagesimal,1137 -longitudes,1138 -longitudesList,1139 -longitudinalDirectionGridLength,1140 -lowerLimit,1141 -lowerRange,1142 -lowerThreshold,1143 -lowerThresholdValue,1144 -ls_labeling,1145 -lsdate_bug,1146 -m,1147 -mAngleMultiplier,1148 -mBasicAngle,1149 -mars,1150 -marsClass,1151 -marsClass1,1152 -marsClass2,1153 -marsDir,1154 -marsDomain,1155 -marsEndStep,1156 -marsExperimentOffset,1157 -marsExpver,1158 -marsForecastMonth,1159 -marsGrid,1160 -marsIdent,1161 -marsKeywords,1162 -marsKeywords1,1163 -marsLamModel,1164 -marsLatitude,1165 -marsLevel,1166 -marsLevelist,1167 -marsLongitude,1168 -marsModel,1169 -marsParam,1170 -marsQuantile,1171 -marsRange,1172 -marsStartStep,1173 -marsStep,1174 -marsStream,1175 -marsStream1,1176 -marsStream2,1177 -marsType,1178 -marsType1,1179 -marsType2,1180 -mars_labeling,1181 -mask,1182 -masterDir,1183 -masterTableNumber,1184 -masterTablesVersionNumber,1185 -masterTablesVersionNumberLatest,1186 -matchAerosolBinNumber,1187 -matchAerosolPacking,1188 -matchLandType,1189 -matchSort,1190 -matchTimeRepres,1191 -matrixBitmapsPresent,1192 -matrixOfValues,1193 -max,1194 -maximum,1195 -md5Data,1196 -md5DataSection,1197 -md5GridSection,1198 -md5Headers,1199 -md5Product,1200 -md5Section1,1201 -md5Section10,1202 -md5Section2,1203 -md5Section3,1204 -md5Section4,1205 -md5Section5,1206 -md5Section6,1207 -md5Section7,1208 -md5Section8,1209 -md5Section9,1210 -md5Structure,1211 -md5TimeDomainSection,1212 -meanRVR1,1213 -meanRVR2,1214 -meanRVR3,1215 -meanRVR4,1216 -meanSize,1217 -meanValueRVR1,1218 -meanValueRVR2,1219 -meanValueRVR3,1220 -meanValueRVR4,1221 -meaningOfVerticalCoordinate,1222 -memberNumber,1223 -messageLength,1224 -metadata,1225 -method,1226 -methodNumber,1227 -million,1228 -min,1229 -minimum,1230 -minute,1231 -minuteOfAnalysis,1232 -minuteOfEndOfOverallTimeInterval,1233 -minuteOfForecast,1234 -minuteOfModelVersion,1235 -minuteOfReference,1236 -minutesAfterDataCutoff,1237 -minutesAfterReferenceTimeOfDataCutoff,1238 -missingDataFlag,1239 -missingValue,1240 -missingValueManagement,1241 -missingValueManagementUsed,1242 -missingValuesPresent,1243 -mixedCoordinateDefinition,1244 -mixedCoordinateFieldFlag,1245 -modeNumber,1246 -model,1247 -modelErrorType,1248 -modelIdentifier,1249 -modelName,1250 -modelVersionDate,1251 -modelVersionTime,1252 -molarMass,1253 -month,1254 -monthOfAnalysis,1255 -monthOfEndOfOverallTimeInterval,1256 -monthOfForecast,1257 -monthOfModelVersion,1258 -monthOfReference,1259 -monthlyVerificationDate,1260 -monthlyVerificationMonth,1261 -monthlyVerificationYear,1262 -multiplicationFactorForLatLong,1263 -mybits,1264 -n,1265 -n2,1266 -n3,1267 -na,1268 -name,1269 -nameECMF,1270 -nameOfFirstFixedSurface,1271 -nameOfSecondFixedSurface,1272 -names,1273 -nd,1274 -neitherPresent,1275 -newSubtype,1276 -nlev,1277 -nnn,1278 -normAtFinalTime,1279 -normAtInitialTime,1280 -normal,1281 -northLatitudeOfCluster,1282 -northLatitudeOfDomainOfTubing,1283 -northWestLatitudeOfLPOArea,1284 -northWestLatitudeOfVerficationArea,1285 -northWestLongitudeOfLPOArea,1286 -northWestLongitudeOfVerficationArea,1287 -northernLatitudeOfClusterDomain,1288 -northernLatitudeOfDomain,1289 -nosigPresent,1290 -notDecoded,1291 -nt,1292 -number,1293 -numberInHorizontalCoordinates,1294 -numberInMixedCoordinateDefinition,1295 -numberInTheAuxiliaryArray,1296 -numberInTheGridCoordinateList,1297 -numberIncludedInAverage,1298 -numberMissingFromAveragesOrAccumulations,1299 -numberOfAnalysis,1300 -numberOfBits,1301 -numberOfBitsContainingEachPackedValue,1302 -numberOfBitsForScaledGroupLengths,1303 -numberOfBitsUsedForTheGroupWidths,1304 -numberOfBitsUsedForTheScaledGroupLengths,1305 -numberOfBytesInLocalDefinition,1306 -numberOfBytesOfFreeFormatData,1307 -numberOfBytesPerInteger,1308 -numberOfCategories,1309 -numberOfCharacters,1310 -numberOfChars,1311 -numberOfClusterHighResolution,1312 -numberOfClusterLowResolution,1313 -numberOfClusters,1314 -numberOfCodedValues,1315 -numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction,1316 -numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction,1317 -numberOfColumns,1318 -numberOfComponents,1319 -numberOfContributingSpectralBands,1320 -numberOfControlForecastTube,1321 -numberOfCoordinatesValues,1322 -numberOfDataBinsAlongRadials,1323 -numberOfDataMatrices,1324 -numberOfDataPoints,1325 -numberOfDataValues,1326 -numberOfDaysInClimateSamplingWindow,1327 -numberOfDiamonds,1328 -numberOfDirections,1329 -numberOfDistinctSection3s,1330 -numberOfDistinctSection4s,1331 -numberOfDistinctSection5s,1332 -numberOfDistinctSection6s,1333 -numberOfDistinctSection7s,1334 -numberOfDistinctSection8s,1335 -numberOfDistinctSection9s,1336 -numberOfDistributionFunctionParameters,1337 -numberOfEffectiveValues,1338 -numberOfFloats,1339 -numberOfForcasts,1340 -numberOfForecastsInCluster,1341 -numberOfForecastsInEnsemble,1342 -numberOfForecastsInTheCluster,1343 -numberOfForecastsInTube,1344 -numberOfFrequencies,1345 -numberOfGridInReference,1346 -numberOfGridUsed,1347 -numberOfGroups,1348 -numberOfGroupsOfDataValues,1349 -numberOfHorizontalPoints,1350 -numberOfIntegers,1351 -numberOfInts,1352 -numberOfIterations,1353 -numberOfLocalDefinitions,1354 -numberOfLogicals,1355 -numberOfMembersInCluster,1356 -numberOfMembersInEnsemble,1357 -numberOfMissing,1358 -numberOfMissingInStatisticalProcess,1359 -numberOfMissingValues,1360 -numberOfModeOfDistribution,1361 -numberOfModels,1362 -numberOfOctectsForNumberOfPoints,1363 -numberOfOctetsExtraDescriptors,1364 -numberOfOperationalForecastTube,1365 -numberOfPackedValues,1366 -numberOfParallelsBetweenAPoleAndTheEquator,1367 -numberOfParametersUsedForClustering,1368 -numberOfPartitions,1369 -numberOfPoints,1370 -numberOfPointsAlongAMeridian,1371 -numberOfPointsAlongAParallel,1372 -numberOfPointsAlongFirstAxis,1373 -numberOfPointsAlongSecondAxis,1374 -numberOfPointsAlongTheXAxis,1375 -numberOfPointsAlongTheYAxis,1376 -numberOfPointsAlongXAxis,1377 -numberOfPointsAlongYAxis,1378 -numberOfPointsInDomain,1379 -numberOfPointsUsed,1380 -numberOfPressureLevelsUsedForClustering,1381 -numberOfRadarSitesUsed,1382 -numberOfRadials,1383 -numberOfReforecastYearsInModelClimate,1384 -numberOfRemaininChars,1385 -numberOfRepresentativeMember,1386 -numberOfReservedBytes,1387 -numberOfRows,1388 -numberOfSecondOrderPackedValues,1389 -numberOfSection,1390 -numberOfSingularVectorsComputed,1391 -numberOfSingularVectorsEvolved,1392 -numberOfStepsUsedForClustering,1393 -numberOfSubsets,1394 -numberOfTensOfThousandsOfYearsOfOffset,1395 -numberOfTimeRange,1396 -numberOfTimeSteps,1397 -numberOfUnexpandedDescriptors,1398 -numberOfUnusedBitsAtEndOfSection3,1399 -numberOfUsedSpatialTiles,1400 -numberOfUsedTileAttributes,1401 -numberOfVGridUsed,1402 -numberOfValues,1403 -numberOfVerticalCoordinateValues,1404 -numberOfVerticalGridDescriptors,1405 -numberOfVerticalPoints,1406 -numberingOrderOfDiamonds,1407 -numericValues,1408 -observablePropertyTemplate,1409 -observablePropertyTemplateNumber,1410 -observationDiagnostic,1411 -observationGeneratingProcessIdentifier,1412 -observationType,1413 -observedData,1414 -obstype,1415 -oceanAtmosphereCoupling,1416 -oceanStream,1417 -octetAtWichPackedDataBegins,1418 -offset,1419 -offsetAfterBitmap,1420 -offsetAfterCentreLocalSection,1421 -offsetAfterData,1422 -offsetAfterLocalSection,1423 -offsetAfterPadding,1424 -offsetBBitmap,1425 -offsetBSection5,1426 -offsetBSection6,1427 -offsetBSection9,1428 -offsetBeforeBitmap,1429 -offsetBeforeData,1430 -offsetBeforePL,1431 -offsetBeforePV,1432 -offsetDescriptors,1433 -offsetEndSection4,1434 -offsetFreeFormData,1435 -offsetFromOriginToInnerBound,1436 -offsetFromReferenceOfFirstTime,1437 -offsetICEFieldsUsed,1438 -offsetSection0,1439 -offsetSection1,1440 -offsetSection10,1441 -offsetSection11,1442 -offsetSection2,1443 -offsetSection3,1444 -offsetSection4,1445 -offsetSection5,1446 -offsetSection6,1447 -offsetSection7,1448 -offsetSection8,1449 -offsetSection9,1450 -offsetToEndOf4DvarWindow,1451 -offsetValuesBy,1452 -oldSubtype,1453 -one,1454 -oneConstant,1455 -oneMillionConstant,1456 -oneMinuteMeanMaximumRVR1,1457 -oneMinuteMeanMaximumRVR2,1458 -oneMinuteMeanMaximumRVR3,1459 -oneMinuteMeanMaximumRVR4,1460 -oneMinuteMeanMinimumRVR1,1461 -oneMinuteMeanMinimumRVR2,1462 -oneMinuteMeanMinimumRVR3,1463 -oneMinuteMeanMinimumRVR4,1464 -oneThousand,1465 -oper,1466 -operStream,1467 -operatingMode,1468 -operationalForecastCluster,1469 -optimisationTime,1470 -optimizeScaleFactor,1471 -optionalData,1472 -opttime,1473 -orderOfSPD,1474 -orderOfSpatialDifferencing,1475 -orientationOfTheGrid,1476 -orientationOfTheGridInDegrees,1477 -origin,1478 -originalParameterNumber,1479 -originalParameterTableNumber,1480 -originalSubCentreIdentifier,1481 -originatingCentre,1482 -originatingCentreOfAnalysis,1483 -originatorLocalTemplate,1484 -originatorLocalTemplateNumber,1485 -overlayTemplate,1486 -overlayTemplateNumber,1487 -pack,1488 -packedValues,1489 -packingError,1490 -packingType,1491 -padding,1492 -padding_grid1_1,1493 -padding_grid1_2,1494 -padding_grid3_1,1495 -padding_grid4_1,1496 -padding_grid50_1,1497 -padding_grid5_1,1498 -padding_grid90_1,1499 -padding_loc10_1,1500 -padding_loc13_1,1501 -padding_loc13_2,1502 -padding_loc13_3,1503 -padding_loc13_4,1504 -padding_loc13_5,1505 -padding_loc14_1,1506 -padding_loc14_2,1507 -padding_loc15_1,1508 -padding_loc16_1,1509 -padding_loc17_2,1510 -padding_loc18_1,1511 -padding_loc18_2,1512 -padding_loc190_1,1513 -padding_loc191_1,1514 -padding_loc191_2,1515 -padding_loc191_3,1516 -padding_loc192_1,1517 -padding_loc19_2,1518 -padding_loc20_1,1519 -padding_loc21_1,1520 -padding_loc23_1,1521 -padding_loc244_1,1522 -padding_loc244_2,1523 -padding_loc244_3,1524 -padding_loc245_1,1525 -padding_loc245_2,1526 -padding_loc26_1,1527 -padding_loc27_1,1528 -padding_loc27_2,1529 -padding_loc28_1,1530 -padding_loc29_1,1531 -padding_loc29_2,1532 -padding_loc29_3,1533 -padding_loc2_1,1534 -padding_loc2_2,1535 -padding_loc30_1,1536 -padding_loc30_2,1537 -padding_loc37_1,1538 -padding_loc37_2,1539 -padding_loc38_1,1540 -padding_loc3_1,1541 -padding_loc4_2,1542 -padding_loc50_1,1543 -padding_loc5_1,1544 -padding_loc6_1,1545 -padding_loc7_1,1546 -padding_loc9_1,1547 -padding_loc9_2,1548 -padding_local11_1,1549 -padding_local1_1,1550 -padding_local1_31,1551 -padding_local40_1,1552 -padding_local_35,1553 -padding_local_7_1,1554 -padding_sec1_loc,1555 -padding_sec2_1,1556 -padding_sec2_2,1557 -padding_sec2_3,1558 -padding_sec3_1,1559 -padding_sec4_1,1560 -paleontologicalOffset,1561 -param,1562 -paramId,1563 -paramIdECMF,1564 -parameter,1565 -parameterCategory,1566 -parameterCode,1567 -parameterDiscipline,1568 -parameterIndicator,1569 -parameterName,1570 -parameterNumber,1571 -parameterUnits,1572 -parameters,1573 -parametersVersion,1574 -partitionItems,1575 -partitionNumber,1576 -partitionTable,1577 -partitions,1578 -pastTendencyRVR1,1579 -pastTendencyRVR2,1580 -pastTendencyRVR3,1581 -pastTendencyRVR4,1582 -patch_precip_fp,1583 -pentagonalResolutionParameterJ,1584 -pentagonalResolutionParameterK,1585 -pentagonalResolutionParameterM,1586 -percentileValue,1587 -periodOfTime,1588 -periodOfTimeIntervals,1589 -perturbationNumber,1590 -perturbedType,1591 -phase,1592 -physicalFlag1,1593 -physicalFlag2,1594 -physicalMeaningOfVerticalCoordinate,1595 -pl,1596 -platform,1597 -plusOneinOrdersOfSPD,1598 -points,1599 -postAuxiliary,1600 -postAuxiliaryArrayPresent,1601 -powerOfTenUsedToScaleClimateWeight,1602 -preBitmapValues,1603 -preProcessingParameter,1604 -precision,1605 -precisionOfTheUnpackedSubset,1606 -predefined_grid,1607 -predefined_grid_values,1608 -present,1609 -presentTrend1,1610 -presentTrend2,1611 -presentTrend3,1612 -presentTrend4,1613 -presentWeather1Present,1614 -presentWeather1PresentTrend1,1615 -presentWeather1PresentTrend2,1616 -presentWeather1PresentTrend3,1617 -presentWeather1PresentTrend4,1618 -presentWeather2Present,1619 -presentWeather2PresentTrend1,1620 -presentWeather2PresentTrend2,1621 -presentWeather2PresentTrend3,1622 -presentWeather2PresentTrend4,1623 -presentWeather3Present,1624 -presentWeather3PresentTrend1,1625 -presentWeather3PresentTrend2,1626 -presentWeather3PresentTrend3,1627 -presentWeather3PresentTrend4,1628 -pressureLevel,1629 -pressureUnits,1630 -primaryBitmap,1631 -primaryMissingValue,1632 -primaryMissingValueSubstitute,1633 -probContinous,1634 -probPoint,1635 -probProductDefinition,1636 -probabilityType,1637 -probabilityTypeName,1638 -process,1639 -produceLargeConstantFields,1640 -product,1641 -productDefinition,1642 -productDefinitionTemplateNumber,1643 -productDefinitionTemplateNumberInternal,1644 -productIdentifier,1645 -productType,1646 -productionStatusOfProcessedData,1647 -projectLocalTemplate,1648 -projectLocalTemplateNumber,1649 -projectionCenterFlag,1650 -projectionCentreFlag,1651 -pv,1652 -pvlLocation,1653 -qfe,1654 -qfePresent,1655 -qfeUnits,1656 -qnh,1657 -qnhAPresent,1658 -qnhPresent,1659 -qnhUnits,1660 -qualityControl,1661 -qualityControlIndicator,1662 -qualityValueAssociatedWithParameter,1663 -quantile,1664 -radialAngularSpacing,1665 -radials,1666 -radius,1667 -radiusInMetres,1668 -radiusOfCentralCluster,1669 -radiusOfClusterDomain,1670 -radiusOfTheEarth,1671 -range,1672 -rangeBinSpacing,1673 -rdbDateTime,1674 -rdbSubtype,1675 -rdbType,1676 -rdb_key,1677 -rdbtime,1678 -rdbtimeDate,1679 -rdbtimeDay,1680 -rdbtimeHour,1681 -rdbtimeMinute,1682 -rdbtimeMonth,1683 -rdbtimeSecond,1684 -rdbtimeTime,1685 -rdbtimeYear,1686 -realPart,1687 -realPartOf00,1688 -recDateTime,1689 -recentWeather,1690 -recentWeatherTry,1691 -rectime,1692 -rectimeDay,1693 -rectimeHour,1694 -rectimeMinute,1695 -rectimeSecond,1696 -reducedGrid,1697 -refdate,1698 -reference,1699 -referenceDate,1700 -referenceForGroupLengths,1701 -referenceForGroupWidths,1702 -referenceOfLengths,1703 -referenceOfWidths,1704 -referenceReflectivityForEchoTop,1705 -referenceSampleInterval,1706 -referenceStep,1707 -referenceValue,1708 -referenceValueError,1709 -reflectivityCalibrationConstant,1710 -remarkPresent,1711 -reportType,1712 -representationMode,1713 -representationType,1714 -representativeMember,1715 -reserved,1716 -reserved1,1717 -reserved2,1718 -reserved3,1719 -reservedNeedNotBePresent,1720 -reservedOctet,1721 -reservedSection2,1722 -reservedSection3,1723 -reservedSection4,1724 -resolutionAndComponentFlags,1725 -resolutionAndComponentFlags1,1726 -resolutionAndComponentFlags2,1727 -resolutionAndComponentFlags3,1728 -resolutionAndComponentFlags4,1729 -resolutionAndComponentFlags6,1730 -resolutionAndComponentFlags7,1731 -resolutionAndComponentFlags8,1732 -rootGroupObjectHeaderAddress,1733 -rootGroupSymbolTableEntry,1734 -rootTablesDir,1735 -roundedMarsLatitude,1736 -roundedMarsLevelist,1737 -roundedMarsLongitude,1738 -runwayBrakingActionState1,1739 -runwayBrakingActionState2,1740 -runwayBrakingActionState3,1741 -runwayBrakingActionState4,1742 -runwayDepositCodeState1,1743 -runwayDepositCodeState2,1744 -runwayDepositCodeState3,1745 -runwayDepositCodeState4,1746 -runwayDepositState1,1747 -runwayDepositState2,1748 -runwayDepositState3,1749 -runwayDepositState4,1750 -runwayDepthOfDepositCodeState1,1751 -runwayDepthOfDepositCodeState2,1752 -runwayDepthOfDepositCodeState3,1753 -runwayDepthOfDepositCodeState4,1754 -runwayDepthOfDepositState1,1755 -runwayDepthOfDepositState2,1756 -runwayDepthOfDepositState3,1757 -runwayDepthOfDepositState4,1758 -runwayDesignatorRVR1,1759 -runwayDesignatorRVR2,1760 -runwayDesignatorRVR3,1761 -runwayDesignatorRVR4,1762 -runwayDesignatorState1,1763 -runwayDesignatorState2,1764 -runwayDesignatorState3,1765 -runwayDesignatorState4,1766 -runwayExtentOfContaminationCodeState1,1767 -runwayExtentOfContaminationCodeState2,1768 -runwayExtentOfContaminationCodeState3,1769 -runwayExtentOfContaminationCodeState4,1770 -runwayExtentOfContaminationState1,1771 -runwayExtentOfContaminationState2,1772 -runwayExtentOfContaminationState3,1773 -runwayExtentOfContaminationState4,1774 -runwayFrictionCodeValueState1,1775 -runwayFrictionCodeValueState2,1776 -runwayFrictionCodeValueState3,1777 -runwayFrictionCodeValueState4,1778 -runwayFrictionCoefficientCodeState1,1779 -runwayFrictionCoefficientCodeState2,1780 -runwayFrictionCoefficientCodeState3,1781 -runwayFrictionCoefficientCodeState4,1782 -runwayFrictionCoefficientState1,1783 -runwayFrictionCoefficientState2,1784 -runwayFrictionCoefficientState3,1785 -runwayFrictionCoefficientState4,1786 -runwaySideCodeState1,1787 -runwaySideCodeState2,1788 -runwaySideCodeState3,1789 -runwaySideCodeState4,1790 -runwayState,1791 -sampleSizeOfModelClimate,1792 -satelliteID,1793 -satelliteIdentifier,1794 -satelliteNumber,1795 -satelliteSeries,1796 -scaleFactorAtReferencePoint,1797 -scaleFactorOfCentralWaveNumber,1798 -scaleFactorOfDistanceFromEnsembleMean,1799 -scaleFactorOfDistributionFunctionParameter,1800 -scaleFactorOfEarthMajorAxis,1801 -scaleFactorOfEarthMinorAxis,1802 -scaleFactorOfFirstFixedSurface,1803 -scaleFactorOfFirstSize,1804 -scaleFactorOfFirstWavelength,1805 -scaleFactorOfLengthOfSemiMajorAxis,1806 -scaleFactorOfLengthOfSemiMinorAxis,1807 -scaleFactorOfLowerLimit,1808 -scaleFactorOfMajorAxisOfOblateSpheroidEarth,1809 -scaleFactorOfMinorAxisOfOblateSpheroidEarth,1810 -scaleFactorOfPrimeMeridianOffset,1811 -scaleFactorOfRadiusOfSphericalEarth,1812 -scaleFactorOfSecondFixedSurface,1813 -scaleFactorOfSecondSize,1814 -scaleFactorOfSecondWavelength,1815 -scaleFactorOfStandardDeviation,1816 -scaleFactorOfStandardDeviationInTheCluster,1817 -scaleFactorOfUpperLimit,1818 -scaleValuesBy,1819 -scaledDirections,1820 -scaledFrequencies,1821 -scaledValueOfCentralWaveNumber,1822 -scaledValueOfDistanceFromEnsembleMean,1823 -scaledValueOfDistributionFunctionParameter,1824 -scaledValueOfEarthMajorAxis,1825 -scaledValueOfEarthMinorAxis,1826 -scaledValueOfFirstFixedSurface,1827 -scaledValueOfFirstSize,1828 -scaledValueOfFirstWavelength,1829 -scaledValueOfLengthOfSemiMajorAxis,1830 -scaledValueOfLengthOfSemiMinorAxis,1831 -scaledValueOfLowerLimit,1832 -scaledValueOfMajorAxisOfOblateSpheroidEarth,1833 -scaledValueOfMinorAxisOfOblateSpheroidEarth,1834 -scaledValueOfPrimeMeridianOffset,1835 -scaledValueOfRadiusOfSphericalEarth,1836 -scaledValueOfSecondFixedSurface,1837 -scaledValueOfSecondSize,1838 -scaledValueOfSecondWavelength,1839 -scaledValueOfStandardDeviation,1840 -scaledValueOfStandardDeviationInTheCluster,1841 -scaledValueOfUpperLimit,1842 -scalingFactorForFrequencies,1843 -scanPosition,1844 -scanningMode,1845 -scanningMode4,1846 -scanningMode5,1847 -scanningMode6,1848 -scanningMode7,1849 -scanningMode8,1850 -scanningModeForOneDiamond,1851 -sd,1852 -second,1853 -secondDimension,1854 -secondDimensionCoordinateValueDefinition,1855 -secondDimensionPhysicalSignificance,1856 -secondLatitude,1857 -secondLatitudeInDegrees,1858 -secondOfEndOfOverallTimeInterval,1859 -secondOfForecast,1860 -secondOfModelVersion,1861 -secondOrderFlags,1862 -secondOrderOfDifferentWidth,1863 -secondOrderValuesDifferentWidths,1864 -secondaryBitMap,1865 -secondaryBitmap,1866 -secondaryBitmapPresent,1867 -secondaryBitmaps,1868 -secondaryBitmapsCount,1869 -secondaryBitmapsSize,1870 -secondaryMissingValue,1871 -secondaryMissingValueSubstitute,1872 -secondsOfAnalysis,1873 -secondsOfReference,1874 -section,1875 -section0Length,1876 -section0Pointer,1877 -section1,1878 -section10Length,1879 -section10Pointer,1880 -section11Length,1881 -section11Pointer,1882 -section1Flags,1883 -section1Length,1884 -section1Padding,1885 -section1Pointer,1886 -section2Length,1887 -section2Padding,1888 -section2Pointer,1889 -section2Present,1890 -section2Used,1891 -section3,1892 -section3Flags,1893 -section3Length,1894 -section3Padding,1895 -section3Pointer,1896 -section3UniqueIdentifier,1897 -section4,1898 -section4Length,1899 -section4Padding,1900 -section4Pointer,1901 -section4UniqueIdentifier,1902 -section5,1903 -section5Length,1904 -section5Pointer,1905 -section5UniqueIdentifier,1906 -section6,1907 -section6Length,1908 -section6Pointer,1909 -section6UniqueIdentifier,1910 -section7,1911 -section7Length,1912 -section7Pointer,1913 -section7UniqueIdentifier,1914 -section8,1915 -section8Length,1916 -section8Pointer,1917 -section8UniqueIdentifier,1918 -section9Length,1919 -section9Pointer,1920 -section9UniqueIdentifier,1921 -sectionLengthLimitForEnsembles,1922 -sectionLengthLimitForProbability,1923 -sectionNumber,1924 -sectionPosition,1925 -section_01,1926 -section_02,1927 -section_03,1928 -section_04,1929 -section_05,1930 -section_06,1931 -section_07,1932 -section_08,1933 -section_09,1934 -section_1,1935 -section_10,1936 -section_11,1937 -section_2,1938 -section_3,1939 -section_4,1940 -section_5,1941 -section_6,1942 -section_7,1943 -section_8,1944 -selectStepTemplateInstant,1945 -selectStepTemplateInterval,1946 -sensitiveAreaDomain,1947 -sequences,1948 -setBitsPerValue,1949 -setCalendarId,1950 -setDecimalPrecision,1951 -setLocalDefinition,1952 -setToMissingIfOutOfRange,1953 -sfc_levtype,1954 -shapeOfTheEarth,1955 -shapeOfVerificationArea,1956 -shortName,1957 -shortNameECMF,1958 -short_name,1959 -signature,1960 -significanceOfReferenceDateAndTime,1961 -significanceOfReferenceTime,1962 -simpleThinningMissingRadius,1963 -simpleThinningSkip,1964 -simpleThinningStart,1965 -siteElevation,1966 -siteId,1967 -siteLatitude,1968 -siteLongitude,1969 -sizeOfLength,1970 -sizeOfOffsets,1971 -sizeOfPostAuxiliaryArray,1972 -sizeOfPostAuxiliaryArrayPlusOne,1973 -skew,1974 -skewness,1975 -skipExtraKeyAttributes,1976 -sort,1977 -sourceOfGridDefinition,1978 -southEastLatitudeOfLPOArea,1979 -southEastLatitudeOfVerficationArea,1980 -southEastLongitudeOfLPOArea,1981 -southEastLongitudeOfVerficationArea,1982 -southLatitudeOfCluster,1983 -southLatitudeOfDomainOfTubing,1984 -southPoleOnProjectionPlane,1985 -southernLatitudeOfClusterDomain,1986 -southernLatitudeOfDomain,1987 -sp1,1988 -sp2,1989 -sp3,1990 -spaceUnitFlag,1991 -spacingOfBinsAlongRadials,1992 -spare,1993 -spare2,1994 -spatialProcessing,1995 -spatialSmoothingOfProduct,1996 -spectralDataRepresentationMode,1997 -spectralDataRepresentationType,1998 -spectralMode,1999 -spectralType,2000 -sphericalHarmonics,2001 -standardDeviation,2002 -standardParallel,2003 -standardParallelInDegrees,2004 -standardParallelInMicrodegrees,2005 -startOfHeaders,2006 -startOfMessage,2007 -startOfRange,2008 -startStep,2009 -startStepInHours,2010 -startTimeStep,2011 -startingAzimuth,2012 -statisticalProcess,2013 -statisticalProcessesList,2014 -statistics,2015 -status,2016 -step,2017 -stepForClustering,2018 -stepInHours,2019 -stepRange,2020 -stepRangeInHours,2021 -stepType,2022 -stepTypeForConversion,2023 -stepTypeInternal,2024 -stepUnits,2025 -stepZero,2026 -stream,2027 -streamOfAnalysis,2028 -stretchingFactor,2029 -stretchingFactorScaled,2030 -stringValues,2031 -subCentre,2032 -subDefinitions1,2033 -subDefinitions2,2034 -subLocalDefinition1,2035 -subLocalDefinition2,2036 -subLocalDefinitionLength1,2037 -subLocalDefinitionLength2,2038 -subLocalDefinitionNumber1,2039 -subLocalDefinitionNumber2,2040 -subSetJ,2041 -subSetK,2042 -subSetM,2043 -subcentreOfAnalysis,2044 -subdivisionsOfBasicAngle,2045 -suiteName,2046 -superblockExtensionAddress,2047 -swapScanningLat,2048 -swapScanningLon,2049 -swapScanningX,2050 -swapScanningY,2051 -system,2052 -systemNumber,2053 -t,2054 -table2Version,2055 -tableCode,2056 -tableNumber,2057 -tableReference,2058 -tablesLocalDir,2059 -tablesMasterDir,2060 -tablesVersion,2061 -tablesVersionLatest,2062 -targetCompressionRatio,2063 -td,2064 -tempPressureUnits,2065 -temperature,2066 -temperatureAndDewpointPresent,2067 -templatesLocalDir,2068 -templatesMasterDir,2069 -theHindcastMarsStream,2070 -theMessage,2071 -thisExperimentVersionNumber,2072 -thisMarsClass,2073 -thisMarsStream,2074 -thisMarsType,2075 -thousand,2076 -three,2077 -threshold,2078 -thresholdIndicator,2079 -tiggeCentre,2080 -tiggeLAMName,2081 -tiggeLocalVersion,2082 -tiggeModel,2083 -tiggeSection,2084 -tiggeSuiteID,2085 -tigge_name,2086 -tigge_short_name,2087 -tileClassification,2088 -tileIndex,2089 -time,2090 -timeCoordinateDefinition,2091 -timeDomainTemplate,2092 -timeDomainTemplateNumber,2093 -timeIncrement,2094 -timeIncrementBetweenSuccessiveFields,2095 -timeOfAnalysis,2096 -timeOfForecast,2097 -timeOfModelVersion,2098 -timeOfReference,2099 -timeRangeIndicator,2100 -timeRangeIndicatorFromStepRange,2101 -timeUnitFlag,2102 -timerepres,2103 -topLevel,2104 -total,2105 -totalAerosolBinsNumbers,2106 -totalInitialConditions,2107 -totalLength,2108 -totalNumber,2109 -totalNumberOfClusters,2110 -totalNumberOfDataValuesMissingInStatisticalProcess,2111 -totalNumberOfDirections,2112 -totalNumberOfForecastProbabilities,2113 -totalNumberOfFrequencies,2114 -totalNumberOfGridPoints,2115 -totalNumberOfIterations,2116 -totalNumberOfRepetitions,2117 -totalNumberOfTileAttributePairs,2118 -totalNumberOfTubes,2119 -totalNumberOfdimensions,2120 -treatmentOfMissingData,2121 -true,2122 -trueLengthOfLastGroup,2123 -truncateDegrees,2124 -truncateLaplacian,2125 -tsectionNumber3,2126 -tsectionNumber4,2127 -tsectionNumber5,2128 -tubeDomain,2129 -tubeNumber,2130 -two,2131 -twoOrdersOfSPD,2132 -type,2133 -typeOfAnalysis,2134 -typeOfAuxiliaryInformation,2135 -typeOfCalendar,2136 -typeOfCompressionUsed,2137 -typeOfDistributionFunction,2138 -typeOfEnsembleForecast,2139 -typeOfEnsembleMember,2140 -typeOfFirstFixedSurface,2141 -typeOfGeneratingProcess,2142 -typeOfGrid,2143 -typeOfHorizontalLine,2144 -typeOfIntervalForFirstAndSecondSize,2145 -typeOfIntervalForFirstAndSecondWavelength,2146 -typeOfLevel,2147 -typeOfLevelECMF,2148 -typeOfOriginalFieldValues,2149 -typeOfPacking,2150 -typeOfPostProcessing,2151 -typeOfPreProcessing,2152 -typeOfProcessedData,2153 -typeOfSSTFieldUsed,2154 -typeOfSecondFixedSurface,2155 -typeOfSizeInterval,2156 -typeOfStatisticalPostProcessingOfEnsembleMembers,2157 -typeOfStatisticalProcessing,2158 -typeOfTimeIncrement,2159 -typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing,2160 -typeOfWavelengthInterval,2161 -typicalCentury,2162 -typicalDate,2163 -typicalDateTime,2164 -typicalDay,2165 -typicalHour,2166 -typicalMinute,2167 -typicalMonth,2168 -typicalSecond,2169 -typicalTime,2170 -typicalYear,2171 -typicalYear2,2172 -typicalYearOfCentury,2173 -uco,2174 -ucs,2175 -unexpandedDescriptors,2176 -unexpandedDescriptorsEncoded,2177 -unitOfOffsetFromReferenceTime,2178 -unitOfTime,2179 -unitOfTimeIncrement,2180 -unitOfTimeRange,2181 -units,2182 -unitsBias,2183 -unitsConversionOffset,2184 -unitsConversionScaleFactor,2185 -unitsDecimalScaleFactor,2186 -unitsECMF,2187 -unitsFactor,2188 -unitsOfFirstFixedSurface,2189 -unitsOfSecondFixedSurface,2190 -unknown,2191 -unpack,2192 -unpackedError,2193 -unpackedSubsetPrecision,2194 -unpackedValues,2195 -unsignedIntegers,2196 -unusedBitsInBitmap,2197 -updateSequenceNumber,2198 -upperLimit,2199 -upperRange,2200 -upperThreshold,2201 -upperThresholdValue,2202 -userDateEnd,2203 -userDateStart,2204 -userDateTimeEnd,2205 -userDateTimeStart,2206 -userTimeEnd,2207 -userTimeStart,2208 -uuidOfHGrid,2209 -uuidOfVGrid,2210 -uvRelativeToGrid,2211 -validityDate,2212 -validityTime,2213 -values,2214 -variationOfVisibility,2215 -variationOfVisibilityDirection,2216 -variationOfVisibilityDirectionAngle,2217 -variationOfVisibilityDirectionTrend1,2218 -variationOfVisibilityDirectionTrend2,2219 -variationOfVisibilityDirectionTrend3,2220 -variationOfVisibilityDirectionTrend4,2221 -variationOfVisibilityTrend1,2222 -variationOfVisibilityTrend2,2223 -variationOfVisibilityTrend3,2224 -variationOfVisibilityTrend4,2225 -varno,2226 -verificationDate,2227 -verificationMonth,2228 -verificationYear,2229 -verifyingMonth,2230 -version,2231 -versionNumOfFilesFreeSpaceStorage,2232 -versionNumOfRootGroupSymbolTableEntry,2233 -versionNumOfSharedHeaderMessageFormat,2234 -versionNumberOfExperimentalSuite,2235 -versionNumberOfGribLocalTables,2236 -versionNumberOfSuperblock,2237 -versionOfModelClimate,2238 -verticalCoordinate,2239 -verticalCoordinateDefinition,2240 -verticalDomainTemplate,2241 -verticalDomainTemplateNumber,2242 -verticalVisibility,2243 -verticalVisibilityCoded,2244 -visibility,2245 -visibilityInKilometresTrend1,2246 -visibilityInKilometresTrend2,2247 -visibilityInKilometresTrend3,2248 -visibilityInKilometresTrend4,2249 -visibilityTrend1,2250 -visibilityTrend2,2251 -visibilityTrend3,2252 -visibilityTrend4,2253 -waveDomain,2254 -weightAppliedToClimateMonth1,2255 -westLongitudeOfCluster,2256 -westLongitudeOfDomainOfTubing,2257 -westernLongitudeOfClusterDomain,2258 -westernLongitudeOfDomain,2259 -widthOfFirstOrderValues,2260 -widthOfLengths,2261 -widthOfSPD,2262 -widthOfWidths,2263 -windDirection,2264 -windDirectionTrend1,2265 -windDirectionTrend2,2266 -windDirectionTrend3,2267 -windDirectionTrend4,2268 -windGust,2269 -windGustTrend1,2270 -windGustTrend2,2271 -windGustTrend3,2272 -windGustTrend4,2273 -windPresent,2274 -windSpeed,2275 -windSpeedTrend1,2276 -windSpeedTrend2,2277 -windSpeedTrend3,2278 -windSpeedTrend4,2279 -windUnits,2280 -windUnitsTrend1,2281 -windUnitsTrend2,2282 -windUnitsTrend3,2283 -windUnitsTrend4,2284 -windVariableDirection,2285 -windVariableDirectionTrend1,2286 -windVariableDirectionTrend2,2287 -windVariableDirectionTrend3,2288 -windVariableDirectionTrend4,2289 -wrongPadding,2290 -xCoordinateOfOriginOfSectorImage,2291 -xCoordinateOfSubSatellitePoint,2292 -xDirectionGridLength,2293 -xDirectionGridLengthInMetres,2294 -xDirectionGridLengthInMillimetres,2295 -xFirst,2296 -xLast,2297 -yCoordinateOfOriginOfSectorImage,2298 -yCoordinateOfSubSatellitePoint,2299 -yDirectionGridLength,2300 -yDirectionGridLengthInMetres,2301 -yDirectionGridLengthInMillimetres,2302 -yFirst,2303 -yLast,2304 -year,2305 -yearOfAnalysis,2306 -yearOfCentury,2307 -yearOfEndOfOverallTimeInterval,2308 -yearOfForecast,2309 -yearOfModelVersion,2310 -yearOfReference,2311 -zero,2312 +legacyGaussSubarea,1045 +lengthDescriptors,1046 +lengthIncrementForTheGroupLengths,1047 +lengthOf4DvarWindow,1048 +lengthOfHeaders,1049 +lengthOfIndexTemplate,1050 +lengthOfMessage,1051 +lengthOfOriginatorLocalTemplate,1052 +lengthOfProjectLocalTemplate,1053 +lengthOfTimeRange,1054 +lev,1055 +levTypeName,1056 +level,1057 +levelIndicator,1058 +levelType,1059 +levelist,1060 +levels,1061 +levtype,1062 +libraryVersion,1063 +listMembersMissing,1064 +listMembersMissing2,1065 +listMembersMissing3,1066 +listMembersMissing4,1067 +listMembersUsed,1068 +listMembersUsed2,1069 +listMembersUsed3,1070 +listMembersUsed4,1071 +listOfContributingSpectralBands,1072 +listOfDistributionFunctionParameter,1073 +listOfEnsembleForecastNumbers,1074 +listOfModelIdentifiers,1075 +listOfParametersUsedForClustering,1076 +listOfScaledFrequencies,1077 +local,1078 +localDateTime,1079 +localDay,1080 +localDecimalScaleFactor,1081 +localDefNumberOne,1082 +localDefNumberTwo,1083 +localDefinition,1084 +localDefinitionNumber,1085 +localDir,1086 +localExtensionPadding,1087 +localFlag,1088 +localFlagLatestVersion,1089 +localHour,1090 +localLatitude,1091 +localLatitude1,1092 +localLatitude2,1093 +localLongitude,1094 +localLongitude1,1095 +localLongitude2,1096 +localMinute,1097 +localMonth,1098 +localNumberOfObservations,1099 +localSecond,1100 +localSection,1101 +localSectionPresent,1102 +localTablesVersion,1103 +localTablesVersionNumber,1104 +localUsePresent,1105 +localYear,1106 +local_padding,1107 +local_use,1108 +logTransform,1109 +longitude,1110 +longitudeFirstInDegrees,1111 +longitudeLastInDegrees,1112 +longitudeOfCenterPoint,1113 +longitudeOfCenterPointInDegrees,1114 +longitudeOfCentralPointInClusterDomain,1115 +longitudeOfFirstDiamondCenterLine,1116 +longitudeOfFirstDiamondCenterLineInDegrees,1117 +longitudeOfFirstGridPoint,1118 +longitudeOfFirstGridPointInDegrees,1119 +longitudeOfIcosahedronPole,1120 +longitudeOfLastGridPoint,1121 +longitudeOfLastGridPointInDegrees,1122 +longitudeOfNorthWestCornerOfArea,1123 +longitudeOfReferencePoint,1124 +longitudeOfReferencePointInDegrees,1125 +longitudeOfSouthEastCornerOfArea,1126 +longitudeOfSouthernPole,1127 +longitudeOfSouthernPoleInDegrees,1128 +longitudeOfStretchingPole,1129 +longitudeOfStretchingPoleInDegrees,1130 +longitudeOfSubSatellitePoint,1131 +longitudeOfSubSatellitePointInDegrees,1132 +longitudeOfTangencyPoint,1133 +longitudeOfThePoleOfStretching,1134 +longitudeOfThePolePoint,1135 +longitudeOfThePolePointInDegrees,1136 +longitudeOfTheSouthernPoleOfProjection,1137 +longitudeSexagesimal,1138 +longitudes,1139 +longitudesList,1140 +longitudinalDirectionGridLength,1141 +lowerLimit,1142 +lowerRange,1143 +lowerThreshold,1144 +lowerThresholdValue,1145 +ls_labeling,1146 +lsdate_bug,1147 +m,1148 +mAngleMultiplier,1149 +mBasicAngle,1150 +mars,1151 +marsClass,1152 +marsClass1,1153 +marsClass2,1154 +marsDir,1155 +marsDomain,1156 +marsEndStep,1157 +marsExperimentOffset,1158 +marsExpver,1159 +marsForecastMonth,1160 +marsGrid,1161 +marsIdent,1162 +marsKeywords,1163 +marsKeywords1,1164 +marsLamModel,1165 +marsLatitude,1166 +marsLevel,1167 +marsLevelist,1168 +marsLongitude,1169 +marsModel,1170 +marsParam,1171 +marsQuantile,1172 +marsRange,1173 +marsStartStep,1174 +marsStep,1175 +marsStream,1176 +marsStream1,1177 +marsStream2,1178 +marsType,1179 +marsType1,1180 +marsType2,1181 +mars_labeling,1182 +mask,1183 +masterDir,1184 +masterTableNumber,1185 +masterTablesVersionNumber,1186 +masterTablesVersionNumberLatest,1187 +matchAerosolBinNumber,1188 +matchAerosolPacking,1189 +matchLandType,1190 +matchSort,1191 +matchTimeRepres,1192 +matrixBitmapsPresent,1193 +matrixOfValues,1194 +max,1195 +maximum,1196 +md5Data,1197 +md5DataSection,1198 +md5GridSection,1199 +md5Headers,1200 +md5Product,1201 +md5Section1,1202 +md5Section10,1203 +md5Section2,1204 +md5Section3,1205 +md5Section4,1206 +md5Section5,1207 +md5Section6,1208 +md5Section7,1209 +md5Section8,1210 +md5Section9,1211 +md5Structure,1212 +md5TimeDomainSection,1213 +meanRVR1,1214 +meanRVR2,1215 +meanRVR3,1216 +meanRVR4,1217 +meanSize,1218 +meanValueRVR1,1219 +meanValueRVR2,1220 +meanValueRVR3,1221 +meanValueRVR4,1222 +meaningOfVerticalCoordinate,1223 +memberNumber,1224 +messageLength,1225 +metadata,1226 +method,1227 +methodNumber,1228 +million,1229 +min,1230 +minimum,1231 +minute,1232 +minuteOfAnalysis,1233 +minuteOfEndOfOverallTimeInterval,1234 +minuteOfForecast,1235 +minuteOfModelVersion,1236 +minuteOfReference,1237 +minutesAfterDataCutoff,1238 +minutesAfterReferenceTimeOfDataCutoff,1239 +missingDataFlag,1240 +missingValue,1241 +missingValueManagement,1242 +missingValueManagementUsed,1243 +missingValuesPresent,1244 +mixedCoordinateDefinition,1245 +mixedCoordinateFieldFlag,1246 +modeNumber,1247 +model,1248 +modelErrorType,1249 +modelIdentifier,1250 +modelName,1251 +modelVersionDate,1252 +modelVersionTime,1253 +molarMass,1254 +month,1255 +monthOfAnalysis,1256 +monthOfEndOfOverallTimeInterval,1257 +monthOfForecast,1258 +monthOfModelVersion,1259 +monthOfReference,1260 +monthlyVerificationDate,1261 +monthlyVerificationMonth,1262 +monthlyVerificationTime,1263 +monthlyVerificationYear,1264 +multiplicationFactorForLatLong,1265 +mybits,1266 +n,1267 +n2,1268 +n3,1269 +na,1270 +name,1271 +nameECMF,1272 +nameOfFirstFixedSurface,1273 +nameOfSecondFixedSurface,1274 +names,1275 +nd,1276 +neitherPresent,1277 +newSubtype,1278 +nlev,1279 +nnn,1280 +normAtFinalTime,1281 +normAtInitialTime,1282 +normal,1283 +northLatitudeOfCluster,1284 +northLatitudeOfDomainOfTubing,1285 +northWestLatitudeOfLPOArea,1286 +northWestLatitudeOfVerficationArea,1287 +northWestLongitudeOfLPOArea,1288 +northWestLongitudeOfVerficationArea,1289 +northernLatitudeOfClusterDomain,1290 +northernLatitudeOfDomain,1291 +nosigPresent,1292 +notDecoded,1293 +nt,1294 +number,1295 +numberInHorizontalCoordinates,1296 +numberInMixedCoordinateDefinition,1297 +numberInTheAuxiliaryArray,1298 +numberInTheGridCoordinateList,1299 +numberIncludedInAverage,1300 +numberMissingFromAveragesOrAccumulations,1301 +numberOfAnalysis,1302 +numberOfBits,1303 +numberOfBitsContainingEachPackedValue,1304 +numberOfBitsForScaledGroupLengths,1305 +numberOfBitsUsedForTheGroupWidths,1306 +numberOfBitsUsedForTheScaledGroupLengths,1307 +numberOfBytesInLocalDefinition,1308 +numberOfBytesOfFreeFormatData,1309 +numberOfBytesPerInteger,1310 +numberOfCategories,1311 +numberOfCharacters,1312 +numberOfChars,1313 +numberOfClusterHighResolution,1314 +numberOfClusterLowResolution,1315 +numberOfClusters,1316 +numberOfCodedValues,1317 +numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction,1318 +numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction,1319 +numberOfColumns,1320 +numberOfComponents,1321 +numberOfContributingSpectralBands,1322 +numberOfControlForecastTube,1323 +numberOfCoordinatesValues,1324 +numberOfDataBinsAlongRadials,1325 +numberOfDataMatrices,1326 +numberOfDataPoints,1327 +numberOfDataPointsExpected,1328 +numberOfDataValues,1329 +numberOfDaysInClimateSamplingWindow,1330 +numberOfDiamonds,1331 +numberOfDirections,1332 +numberOfDistinctSection3s,1333 +numberOfDistinctSection4s,1334 +numberOfDistinctSection5s,1335 +numberOfDistinctSection6s,1336 +numberOfDistinctSection7s,1337 +numberOfDistinctSection8s,1338 +numberOfDistinctSection9s,1339 +numberOfDistributionFunctionParameters,1340 +numberOfEffectiveValues,1341 +numberOfFloats,1342 +numberOfForcasts,1343 +numberOfForecastsInCluster,1344 +numberOfForecastsInEnsemble,1345 +numberOfForecastsInTheCluster,1346 +numberOfForecastsInTube,1347 +numberOfFrequencies,1348 +numberOfGridInReference,1349 +numberOfGridUsed,1350 +numberOfGroups,1351 +numberOfGroupsOfDataValues,1352 +numberOfHorizontalPoints,1353 +numberOfIntegers,1354 +numberOfInts,1355 +numberOfIterations,1356 +numberOfLocalDefinitions,1357 +numberOfLogicals,1358 +numberOfMembersInCluster,1359 +numberOfMembersInEnsemble,1360 +numberOfMissing,1361 +numberOfMissingInStatisticalProcess,1362 +numberOfMissingValues,1363 +numberOfModeOfDistribution,1364 +numberOfModels,1365 +numberOfOctectsForNumberOfPoints,1366 +numberOfOctetsExtraDescriptors,1367 +numberOfOperationalForecastTube,1368 +numberOfPackedValues,1369 +numberOfParallelsBetweenAPoleAndTheEquator,1370 +numberOfParametersUsedForClustering,1371 +numberOfPartitions,1372 +numberOfPoints,1373 +numberOfPointsAlongAMeridian,1374 +numberOfPointsAlongAParallel,1375 +numberOfPointsAlongFirstAxis,1376 +numberOfPointsAlongSecondAxis,1377 +numberOfPointsAlongTheXAxis,1378 +numberOfPointsAlongTheYAxis,1379 +numberOfPointsAlongXAxis,1380 +numberOfPointsAlongYAxis,1381 +numberOfPointsInDomain,1382 +numberOfPointsUsed,1383 +numberOfPressureLevelsUsedForClustering,1384 +numberOfRadarSitesUsed,1385 +numberOfRadials,1386 +numberOfReforecastYearsInModelClimate,1387 +numberOfRemaininChars,1388 +numberOfRepresentativeMember,1389 +numberOfReservedBytes,1390 +numberOfRows,1391 +numberOfSecondOrderPackedValues,1392 +numberOfSection,1393 +numberOfSingularVectorsComputed,1394 +numberOfSingularVectorsEvolved,1395 +numberOfStepsUsedForClustering,1396 +numberOfSubsets,1397 +numberOfTensOfThousandsOfYearsOfOffset,1398 +numberOfTimeRange,1399 +numberOfTimeSteps,1400 +numberOfUnexpandedDescriptors,1401 +numberOfUnusedBitsAtEndOfSection3,1402 +numberOfUsedSpatialTiles,1403 +numberOfUsedTileAttributes,1404 +numberOfVGridUsed,1405 +numberOfValues,1406 +numberOfVerticalCoordinateValues,1407 +numberOfVerticalGridDescriptors,1408 +numberOfVerticalPoints,1409 +numberingOrderOfDiamonds,1410 +numericValues,1411 +observablePropertyTemplate,1412 +observablePropertyTemplateNumber,1413 +observationDiagnostic,1414 +observationGeneratingProcessIdentifier,1415 +observationType,1416 +observedData,1417 +obstype,1418 +oceanAtmosphereCoupling,1419 +oceanStream,1420 +octetAtWichPackedDataBegins,1421 +offset,1422 +offsetAfterBitmap,1423 +offsetAfterCentreLocalSection,1424 +offsetAfterData,1425 +offsetAfterLocalSection,1426 +offsetAfterPadding,1427 +offsetBBitmap,1428 +offsetBSection5,1429 +offsetBSection6,1430 +offsetBSection9,1431 +offsetBeforeBitmap,1432 +offsetBeforeData,1433 +offsetBeforePL,1434 +offsetBeforePV,1435 +offsetDescriptors,1436 +offsetEndSection4,1437 +offsetFreeFormData,1438 +offsetFromOriginToInnerBound,1439 +offsetFromReferenceOfFirstTime,1440 +offsetICEFieldsUsed,1441 +offsetSection0,1442 +offsetSection1,1443 +offsetSection10,1444 +offsetSection11,1445 +offsetSection2,1446 +offsetSection3,1447 +offsetSection4,1448 +offsetSection5,1449 +offsetSection6,1450 +offsetSection7,1451 +offsetSection8,1452 +offsetSection9,1453 +offsetToEndOf4DvarWindow,1454 +offsetValuesBy,1455 +oldSubtype,1456 +one,1457 +oneConstant,1458 +oneMillionConstant,1459 +oneMinuteMeanMaximumRVR1,1460 +oneMinuteMeanMaximumRVR2,1461 +oneMinuteMeanMaximumRVR3,1462 +oneMinuteMeanMaximumRVR4,1463 +oneMinuteMeanMinimumRVR1,1464 +oneMinuteMeanMinimumRVR2,1465 +oneMinuteMeanMinimumRVR3,1466 +oneMinuteMeanMinimumRVR4,1467 +oneThousand,1468 +oper,1469 +operStream,1470 +operatingMode,1471 +operationalForecastCluster,1472 +optimisationTime,1473 +optimizeScaleFactor,1474 +optionalData,1475 +opttime,1476 +orderOfSPD,1477 +orderOfSpatialDifferencing,1478 +orientationOfTheGrid,1479 +orientationOfTheGridInDegrees,1480 +origin,1481 +originalParameterNumber,1482 +originalParameterTableNumber,1483 +originalSubCentreIdentifier,1484 +originatingCentre,1485 +originatingCentreOfAnalysis,1486 +originatorLocalTemplate,1487 +originatorLocalTemplateNumber,1488 +overlayTemplate,1489 +overlayTemplateNumber,1490 +pack,1491 +packedValues,1492 +packingError,1493 +packingType,1494 +padding,1495 +padding_grid1_1,1496 +padding_grid1_2,1497 +padding_grid3_1,1498 +padding_grid4_1,1499 +padding_grid50_1,1500 +padding_grid5_1,1501 +padding_grid90_1,1502 +padding_loc10_1,1503 +padding_loc13_1,1504 +padding_loc13_2,1505 +padding_loc13_3,1506 +padding_loc13_4,1507 +padding_loc13_5,1508 +padding_loc14_1,1509 +padding_loc14_2,1510 +padding_loc15_1,1511 +padding_loc16_1,1512 +padding_loc17_2,1513 +padding_loc18_1,1514 +padding_loc18_2,1515 +padding_loc190_1,1516 +padding_loc191_1,1517 +padding_loc191_2,1518 +padding_loc191_3,1519 +padding_loc192_1,1520 +padding_loc19_2,1521 +padding_loc20_1,1522 +padding_loc21_1,1523 +padding_loc23_1,1524 +padding_loc244_1,1525 +padding_loc244_2,1526 +padding_loc244_3,1527 +padding_loc245_1,1528 +padding_loc245_2,1529 +padding_loc26_1,1530 +padding_loc27_1,1531 +padding_loc27_2,1532 +padding_loc28_1,1533 +padding_loc29_1,1534 +padding_loc29_2,1535 +padding_loc29_3,1536 +padding_loc2_1,1537 +padding_loc2_2,1538 +padding_loc30_1,1539 +padding_loc30_2,1540 +padding_loc37_1,1541 +padding_loc37_2,1542 +padding_loc38_1,1543 +padding_loc3_1,1544 +padding_loc4_2,1545 +padding_loc50_1,1546 +padding_loc5_1,1547 +padding_loc6_1,1548 +padding_loc7_1,1549 +padding_loc9_1,1550 +padding_loc9_2,1551 +padding_local11_1,1552 +padding_local1_1,1553 +padding_local1_31,1554 +padding_local40_1,1555 +padding_local_35,1556 +padding_local_7_1,1557 +padding_sec1_loc,1558 +padding_sec2_1,1559 +padding_sec2_2,1560 +padding_sec2_3,1561 +padding_sec3_1,1562 +padding_sec4_1,1563 +paleontologicalOffset,1564 +param,1565 +paramId,1566 +paramIdECMF,1567 +parameter,1568 +parameterCategory,1569 +parameterCode,1570 +parameterDiscipline,1571 +parameterIndicator,1572 +parameterName,1573 +parameterNumber,1574 +parameterUnits,1575 +parameters,1576 +parametersVersion,1577 +partitionItems,1578 +partitionNumber,1579 +partitionTable,1580 +partitions,1581 +pastTendencyRVR1,1582 +pastTendencyRVR2,1583 +pastTendencyRVR3,1584 +pastTendencyRVR4,1585 +patch_precip_fp,1586 +pentagonalResolutionParameterJ,1587 +pentagonalResolutionParameterK,1588 +pentagonalResolutionParameterM,1589 +percentileValue,1590 +periodOfTime,1591 +periodOfTimeIntervals,1592 +perturbationNumber,1593 +perturbedType,1594 +phase,1595 +physicalFlag1,1596 +physicalFlag2,1597 +physicalMeaningOfVerticalCoordinate,1598 +pl,1599 +platform,1600 +plusOneinOrdersOfSPD,1601 +points,1602 +postAuxiliary,1603 +postAuxiliaryArrayPresent,1604 +powerOfTenUsedToScaleClimateWeight,1605 +preBitmapValues,1606 +preProcessingParameter,1607 +precision,1608 +precisionOfTheUnpackedSubset,1609 +predefined_grid,1610 +predefined_grid_values,1611 +present,1612 +presentTrend1,1613 +presentTrend2,1614 +presentTrend3,1615 +presentTrend4,1616 +presentWeather1Present,1617 +presentWeather1PresentTrend1,1618 +presentWeather1PresentTrend2,1619 +presentWeather1PresentTrend3,1620 +presentWeather1PresentTrend4,1621 +presentWeather2Present,1622 +presentWeather2PresentTrend1,1623 +presentWeather2PresentTrend2,1624 +presentWeather2PresentTrend3,1625 +presentWeather2PresentTrend4,1626 +presentWeather3Present,1627 +presentWeather3PresentTrend1,1628 +presentWeather3PresentTrend2,1629 +presentWeather3PresentTrend3,1630 +presentWeather3PresentTrend4,1631 +pressureLevel,1632 +pressureUnits,1633 +primaryBitmap,1634 +primaryMissingValue,1635 +primaryMissingValueSubstitute,1636 +probContinous,1637 +probPoint,1638 +probProductDefinition,1639 +probabilityType,1640 +probabilityTypeName,1641 +process,1642 +produceLargeConstantFields,1643 +product,1644 +productDefinition,1645 +productDefinitionTemplateNumber,1646 +productDefinitionTemplateNumberInternal,1647 +productIdentifier,1648 +productType,1649 +productionStatusOfProcessedData,1650 +projectLocalTemplate,1651 +projectLocalTemplateNumber,1652 +projectionCenterFlag,1653 +projectionCentreFlag,1654 +pv,1655 +pvlLocation,1656 +qfe,1657 +qfePresent,1658 +qfeUnits,1659 +qnh,1660 +qnhAPresent,1661 +qnhPresent,1662 +qnhUnits,1663 +qualityControl,1664 +qualityControlIndicator,1665 +qualityValueAssociatedWithParameter,1666 +quantile,1667 +radialAngularSpacing,1668 +radials,1669 +radius,1670 +radiusInMetres,1671 +radiusOfCentralCluster,1672 +radiusOfClusterDomain,1673 +radiusOfTheEarth,1674 +range,1675 +rangeBinSpacing,1676 +rdbDateTime,1677 +rdbSubtype,1678 +rdbType,1679 +rdb_key,1680 +rdbtime,1681 +rdbtimeDate,1682 +rdbtimeDay,1683 +rdbtimeHour,1684 +rdbtimeMinute,1685 +rdbtimeMonth,1686 +rdbtimeSecond,1687 +rdbtimeTime,1688 +rdbtimeYear,1689 +realPart,1690 +realPartOf00,1691 +recDateTime,1692 +recentWeather,1693 +recentWeatherTry,1694 +rectime,1695 +rectimeDay,1696 +rectimeHour,1697 +rectimeMinute,1698 +rectimeSecond,1699 +reducedGrid,1700 +refdate,1701 +reference,1702 +referenceDate,1703 +referenceForGroupLengths,1704 +referenceForGroupWidths,1705 +referenceOfLengths,1706 +referenceOfWidths,1707 +referenceReflectivityForEchoTop,1708 +referenceSampleInterval,1709 +referenceStep,1710 +referenceValue,1711 +referenceValueError,1712 +reflectivityCalibrationConstant,1713 +remarkPresent,1714 +reportType,1715 +representationMode,1716 +representationType,1717 +representativeMember,1718 +reserved,1719 +reserved1,1720 +reserved2,1721 +reserved3,1722 +reservedNeedNotBePresent,1723 +reservedOctet,1724 +reservedSection2,1725 +reservedSection3,1726 +reservedSection4,1727 +resolutionAndComponentFlags,1728 +resolutionAndComponentFlags1,1729 +resolutionAndComponentFlags2,1730 +resolutionAndComponentFlags3,1731 +resolutionAndComponentFlags4,1732 +resolutionAndComponentFlags6,1733 +resolutionAndComponentFlags7,1734 +resolutionAndComponentFlags8,1735 +rootGroupObjectHeaderAddress,1736 +rootGroupSymbolTableEntry,1737 +rootTablesDir,1738 +roundedMarsLatitude,1739 +roundedMarsLevelist,1740 +roundedMarsLongitude,1741 +runwayBrakingActionState1,1742 +runwayBrakingActionState2,1743 +runwayBrakingActionState3,1744 +runwayBrakingActionState4,1745 +runwayDepositCodeState1,1746 +runwayDepositCodeState2,1747 +runwayDepositCodeState3,1748 +runwayDepositCodeState4,1749 +runwayDepositState1,1750 +runwayDepositState2,1751 +runwayDepositState3,1752 +runwayDepositState4,1753 +runwayDepthOfDepositCodeState1,1754 +runwayDepthOfDepositCodeState2,1755 +runwayDepthOfDepositCodeState3,1756 +runwayDepthOfDepositCodeState4,1757 +runwayDepthOfDepositState1,1758 +runwayDepthOfDepositState2,1759 +runwayDepthOfDepositState3,1760 +runwayDepthOfDepositState4,1761 +runwayDesignatorRVR1,1762 +runwayDesignatorRVR2,1763 +runwayDesignatorRVR3,1764 +runwayDesignatorRVR4,1765 +runwayDesignatorState1,1766 +runwayDesignatorState2,1767 +runwayDesignatorState3,1768 +runwayDesignatorState4,1769 +runwayExtentOfContaminationCodeState1,1770 +runwayExtentOfContaminationCodeState2,1771 +runwayExtentOfContaminationCodeState3,1772 +runwayExtentOfContaminationCodeState4,1773 +runwayExtentOfContaminationState1,1774 +runwayExtentOfContaminationState2,1775 +runwayExtentOfContaminationState3,1776 +runwayExtentOfContaminationState4,1777 +runwayFrictionCodeValueState1,1778 +runwayFrictionCodeValueState2,1779 +runwayFrictionCodeValueState3,1780 +runwayFrictionCodeValueState4,1781 +runwayFrictionCoefficientCodeState1,1782 +runwayFrictionCoefficientCodeState2,1783 +runwayFrictionCoefficientCodeState3,1784 +runwayFrictionCoefficientCodeState4,1785 +runwayFrictionCoefficientState1,1786 +runwayFrictionCoefficientState2,1787 +runwayFrictionCoefficientState3,1788 +runwayFrictionCoefficientState4,1789 +runwaySideCodeState1,1790 +runwaySideCodeState2,1791 +runwaySideCodeState3,1792 +runwaySideCodeState4,1793 +runwayState,1794 +sampleSizeOfModelClimate,1795 +satelliteID,1796 +satelliteIdentifier,1797 +satelliteNumber,1798 +satelliteSeries,1799 +scaleFactorAtReferencePoint,1800 +scaleFactorOfCentralWaveNumber,1801 +scaleFactorOfDistanceFromEnsembleMean,1802 +scaleFactorOfDistributionFunctionParameter,1803 +scaleFactorOfEarthMajorAxis,1804 +scaleFactorOfEarthMinorAxis,1805 +scaleFactorOfFirstFixedSurface,1806 +scaleFactorOfFirstSize,1807 +scaleFactorOfFirstWavelength,1808 +scaleFactorOfLengthOfSemiMajorAxis,1809 +scaleFactorOfLengthOfSemiMinorAxis,1810 +scaleFactorOfLowerLimit,1811 +scaleFactorOfMajorAxisOfOblateSpheroidEarth,1812 +scaleFactorOfMinorAxisOfOblateSpheroidEarth,1813 +scaleFactorOfPrimeMeridianOffset,1814 +scaleFactorOfRadiusOfSphericalEarth,1815 +scaleFactorOfSecondFixedSurface,1816 +scaleFactorOfSecondSize,1817 +scaleFactorOfSecondWavelength,1818 +scaleFactorOfStandardDeviation,1819 +scaleFactorOfStandardDeviationInTheCluster,1820 +scaleFactorOfUpperLimit,1821 +scaleValuesBy,1822 +scaledDirections,1823 +scaledFrequencies,1824 +scaledValueOfCentralWaveNumber,1825 +scaledValueOfDistanceFromEnsembleMean,1826 +scaledValueOfDistributionFunctionParameter,1827 +scaledValueOfEarthMajorAxis,1828 +scaledValueOfEarthMinorAxis,1829 +scaledValueOfFirstFixedSurface,1830 +scaledValueOfFirstSize,1831 +scaledValueOfFirstWavelength,1832 +scaledValueOfLengthOfSemiMajorAxis,1833 +scaledValueOfLengthOfSemiMinorAxis,1834 +scaledValueOfLowerLimit,1835 +scaledValueOfMajorAxisOfOblateSpheroidEarth,1836 +scaledValueOfMinorAxisOfOblateSpheroidEarth,1837 +scaledValueOfPrimeMeridianOffset,1838 +scaledValueOfRadiusOfSphericalEarth,1839 +scaledValueOfSecondFixedSurface,1840 +scaledValueOfSecondSize,1841 +scaledValueOfSecondWavelength,1842 +scaledValueOfStandardDeviation,1843 +scaledValueOfStandardDeviationInTheCluster,1844 +scaledValueOfUpperLimit,1845 +scalingFactorForFrequencies,1846 +scanPosition,1847 +scanningMode,1848 +scanningMode4,1849 +scanningMode5,1850 +scanningMode6,1851 +scanningMode7,1852 +scanningMode8,1853 +scanningModeForOneDiamond,1854 +sd,1855 +second,1856 +secondDimension,1857 +secondDimensionCoordinateValueDefinition,1858 +secondDimensionPhysicalSignificance,1859 +secondLatitude,1860 +secondLatitudeInDegrees,1861 +secondOfEndOfOverallTimeInterval,1862 +secondOfForecast,1863 +secondOfModelVersion,1864 +secondOrderFlags,1865 +secondOrderOfDifferentWidth,1866 +secondOrderValuesDifferentWidths,1867 +secondaryBitMap,1868 +secondaryBitmap,1869 +secondaryBitmapPresent,1870 +secondaryBitmaps,1871 +secondaryBitmapsCount,1872 +secondaryBitmapsSize,1873 +secondaryMissingValue,1874 +secondaryMissingValueSubstitute,1875 +secondsOfAnalysis,1876 +secondsOfReference,1877 +section,1878 +section0Length,1879 +section0Pointer,1880 +section1,1881 +section10Length,1882 +section10Pointer,1883 +section11Length,1884 +section11Pointer,1885 +section1Flags,1886 +section1Length,1887 +section1Padding,1888 +section1Pointer,1889 +section2Length,1890 +section2Padding,1891 +section2Pointer,1892 +section2Present,1893 +section2Used,1894 +section3,1895 +section3Flags,1896 +section3Length,1897 +section3Padding,1898 +section3Pointer,1899 +section3UniqueIdentifier,1900 +section4,1901 +section4Length,1902 +section4Padding,1903 +section4Pointer,1904 +section4UniqueIdentifier,1905 +section5,1906 +section5Length,1907 +section5Pointer,1908 +section5UniqueIdentifier,1909 +section6,1910 +section6Length,1911 +section6Pointer,1912 +section6UniqueIdentifier,1913 +section7,1914 +section7Length,1915 +section7Pointer,1916 +section7UniqueIdentifier,1917 +section8,1918 +section8Length,1919 +section8Pointer,1920 +section8UniqueIdentifier,1921 +section9Length,1922 +section9Pointer,1923 +section9UniqueIdentifier,1924 +sectionLengthLimitForEnsembles,1925 +sectionLengthLimitForProbability,1926 +sectionNumber,1927 +sectionPosition,1928 +section_01,1929 +section_02,1930 +section_03,1931 +section_04,1932 +section_05,1933 +section_06,1934 +section_07,1935 +section_08,1936 +section_09,1937 +section_1,1938 +section_10,1939 +section_11,1940 +section_2,1941 +section_3,1942 +section_4,1943 +section_5,1944 +section_6,1945 +section_7,1946 +section_8,1947 +selectStepTemplateInstant,1948 +selectStepTemplateInterval,1949 +sensitiveAreaDomain,1950 +sequences,1951 +setBitsPerValue,1952 +setCalendarId,1953 +setDecimalPrecision,1954 +setLocalDefinition,1955 +setToMissingIfOutOfRange,1956 +sfc_levtype,1957 +shapeOfTheEarth,1958 +shapeOfVerificationArea,1959 +shortName,1960 +shortNameECMF,1961 +short_name,1962 +signature,1963 +significanceOfReferenceDateAndTime,1964 +significanceOfReferenceTime,1965 +simpleThinningMissingRadius,1966 +simpleThinningSkip,1967 +simpleThinningStart,1968 +siteElevation,1969 +siteId,1970 +siteLatitude,1971 +siteLongitude,1972 +sizeOfLength,1973 +sizeOfOffsets,1974 +sizeOfPostAuxiliaryArray,1975 +sizeOfPostAuxiliaryArrayPlusOne,1976 +skew,1977 +skewness,1978 +skipExtraKeyAttributes,1979 +sort,1980 +sourceOfGridDefinition,1981 +southEastLatitudeOfLPOArea,1982 +southEastLatitudeOfVerficationArea,1983 +southEastLongitudeOfLPOArea,1984 +southEastLongitudeOfVerficationArea,1985 +southLatitudeOfCluster,1986 +southLatitudeOfDomainOfTubing,1987 +southPoleOnProjectionPlane,1988 +southernLatitudeOfClusterDomain,1989 +southernLatitudeOfDomain,1990 +sp1,1991 +sp2,1992 +sp3,1993 +spaceUnitFlag,1994 +spacingOfBinsAlongRadials,1995 +spare,1996 +spare2,1997 +spatialProcessing,1998 +spatialSmoothingOfProduct,1999 +spectralDataRepresentationMode,2000 +spectralDataRepresentationType,2001 +spectralMode,2002 +spectralType,2003 +sphericalHarmonics,2004 +standardDeviation,2005 +standardParallel,2006 +standardParallelInDegrees,2007 +standardParallelInMicrodegrees,2008 +startOfHeaders,2009 +startOfMessage,2010 +startOfRange,2011 +startStep,2012 +startStepInHours,2013 +startTimeStep,2014 +startingAzimuth,2015 +statisticalProcess,2016 +statisticalProcessesList,2017 +statistics,2018 +status,2019 +step,2020 +stepForClustering,2021 +stepInHours,2022 +stepRange,2023 +stepRangeInHours,2024 +stepType,2025 +stepTypeForConversion,2026 +stepTypeInternal,2027 +stepUnits,2028 +stepZero,2029 +stream,2030 +streamOfAnalysis,2031 +stretchingFactor,2032 +stretchingFactorScaled,2033 +stringValues,2034 +subCentre,2035 +subDefinitions1,2036 +subDefinitions2,2037 +subLocalDefinition1,2038 +subLocalDefinition2,2039 +subLocalDefinitionLength1,2040 +subLocalDefinitionLength2,2041 +subLocalDefinitionNumber1,2042 +subLocalDefinitionNumber2,2043 +subSetJ,2044 +subSetK,2045 +subSetM,2046 +subcentreOfAnalysis,2047 +subdivisionsOfBasicAngle,2048 +suiteName,2049 +superblockExtensionAddress,2050 +swapScanningLat,2051 +swapScanningLon,2052 +swapScanningX,2053 +swapScanningY,2054 +system,2055 +systemNumber,2056 +t,2057 +table2Version,2058 +tableCode,2059 +tableNumber,2060 +tableReference,2061 +tablesLocalDir,2062 +tablesMasterDir,2063 +tablesVersion,2064 +tablesVersionLatest,2065 +targetCompressionRatio,2066 +td,2067 +tempPressureUnits,2068 +temperature,2069 +temperatureAndDewpointPresent,2070 +templatesLocalDir,2071 +templatesMasterDir,2072 +theHindcastMarsStream,2073 +theMessage,2074 +thisExperimentVersionNumber,2075 +thisMarsClass,2076 +thisMarsStream,2077 +thisMarsType,2078 +thousand,2079 +three,2080 +threshold,2081 +thresholdIndicator,2082 +tiggeCentre,2083 +tiggeLAMName,2084 +tiggeLocalVersion,2085 +tiggeModel,2086 +tiggeSection,2087 +tiggeSuiteID,2088 +tigge_name,2089 +tigge_short_name,2090 +tileClassification,2091 +tileIndex,2092 +time,2093 +timeCoordinateDefinition,2094 +timeDomainTemplate,2095 +timeDomainTemplateNumber,2096 +timeIncrement,2097 +timeIncrementBetweenSuccessiveFields,2098 +timeOfAnalysis,2099 +timeOfForecast,2100 +timeOfModelVersion,2101 +timeOfReference,2102 +timeRangeIndicator,2103 +timeRangeIndicatorFromStepRange,2104 +timeUnitFlag,2105 +timerepres,2106 +topLevel,2107 +total,2108 +totalAerosolBinsNumbers,2109 +totalInitialConditions,2110 +totalLength,2111 +totalNumber,2112 +totalNumberOfClusters,2113 +totalNumberOfDataValuesMissingInStatisticalProcess,2114 +totalNumberOfDirections,2115 +totalNumberOfForecastProbabilities,2116 +totalNumberOfFrequencies,2117 +totalNumberOfGridPoints,2118 +totalNumberOfIterations,2119 +totalNumberOfRepetitions,2120 +totalNumberOfTileAttributePairs,2121 +totalNumberOfTubes,2122 +totalNumberOfdimensions,2123 +treatmentOfMissingData,2124 +true,2125 +trueLengthOfLastGroup,2126 +truncateDegrees,2127 +truncateLaplacian,2128 +tsectionNumber3,2129 +tsectionNumber4,2130 +tsectionNumber5,2131 +tubeDomain,2132 +tubeNumber,2133 +two,2134 +twoOrdersOfSPD,2135 +type,2136 +typeOfAnalysis,2137 +typeOfAuxiliaryInformation,2138 +typeOfCalendar,2139 +typeOfCompressionUsed,2140 +typeOfDistributionFunction,2141 +typeOfEnsembleForecast,2142 +typeOfEnsembleMember,2143 +typeOfFirstFixedSurface,2144 +typeOfGeneratingProcess,2145 +typeOfGrid,2146 +typeOfHorizontalLine,2147 +typeOfIntervalForFirstAndSecondSize,2148 +typeOfIntervalForFirstAndSecondWavelength,2149 +typeOfLevel,2150 +typeOfLevelECMF,2151 +typeOfOriginalFieldValues,2152 +typeOfPacking,2153 +typeOfPostProcessing,2154 +typeOfPreProcessing,2155 +typeOfProcessedData,2156 +typeOfSSTFieldUsed,2157 +typeOfSecondFixedSurface,2158 +typeOfSizeInterval,2159 +typeOfStatisticalPostProcessingOfEnsembleMembers,2160 +typeOfStatisticalProcessing,2161 +typeOfTimeIncrement,2162 +typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing,2163 +typeOfWavelengthInterval,2164 +typicalCentury,2165 +typicalDate,2166 +typicalDateTime,2167 +typicalDay,2168 +typicalHour,2169 +typicalMinute,2170 +typicalMonth,2171 +typicalSecond,2172 +typicalTime,2173 +typicalYear,2174 +typicalYear2,2175 +typicalYearOfCentury,2176 +uco,2177 +ucs,2178 +unexpandedDescriptors,2179 +unexpandedDescriptorsEncoded,2180 +unitOfOffsetFromReferenceTime,2181 +unitOfTime,2182 +unitOfTimeIncrement,2183 +unitOfTimeRange,2184 +units,2185 +unitsBias,2186 +unitsConversionOffset,2187 +unitsConversionScaleFactor,2188 +unitsDecimalScaleFactor,2189 +unitsECMF,2190 +unitsFactor,2191 +unitsOfFirstFixedSurface,2192 +unitsOfSecondFixedSurface,2193 +unknown,2194 +unpack,2195 +unpackedError,2196 +unpackedSubsetPrecision,2197 +unpackedValues,2198 +unsignedIntegers,2199 +unusedBitsInBitmap,2200 +updateSequenceNumber,2201 +upperLimit,2202 +upperRange,2203 +upperThreshold,2204 +upperThresholdValue,2205 +userDateEnd,2206 +userDateStart,2207 +userDateTimeEnd,2208 +userDateTimeStart,2209 +userTimeEnd,2210 +userTimeStart,2211 +uuidOfHGrid,2212 +uuidOfVGrid,2213 +uvRelativeToGrid,2214 +validityDate,2215 +validityTime,2216 +values,2217 +variationOfVisibility,2218 +variationOfVisibilityDirection,2219 +variationOfVisibilityDirectionAngle,2220 +variationOfVisibilityDirectionTrend1,2221 +variationOfVisibilityDirectionTrend2,2222 +variationOfVisibilityDirectionTrend3,2223 +variationOfVisibilityDirectionTrend4,2224 +variationOfVisibilityTrend1,2225 +variationOfVisibilityTrend2,2226 +variationOfVisibilityTrend3,2227 +variationOfVisibilityTrend4,2228 +varno,2229 +verificationDate,2230 +verificationMonth,2231 +verificationYear,2232 +verifyingMonth,2233 +version,2234 +versionNumOfFilesFreeSpaceStorage,2235 +versionNumOfRootGroupSymbolTableEntry,2236 +versionNumOfSharedHeaderMessageFormat,2237 +versionNumberOfExperimentalSuite,2238 +versionNumberOfGribLocalTables,2239 +versionNumberOfSuperblock,2240 +versionOfModelClimate,2241 +verticalCoordinate,2242 +verticalCoordinateDefinition,2243 +verticalDomainTemplate,2244 +verticalDomainTemplateNumber,2245 +verticalVisibility,2246 +verticalVisibilityCoded,2247 +visibility,2248 +visibilityInKilometresTrend1,2249 +visibilityInKilometresTrend2,2250 +visibilityInKilometresTrend3,2251 +visibilityInKilometresTrend4,2252 +visibilityTrend1,2253 +visibilityTrend2,2254 +visibilityTrend3,2255 +visibilityTrend4,2256 +waveDomain,2257 +weightAppliedToClimateMonth1,2258 +westLongitudeOfCluster,2259 +westLongitudeOfDomainOfTubing,2260 +westernLongitudeOfClusterDomain,2261 +westernLongitudeOfDomain,2262 +widthOfFirstOrderValues,2263 +widthOfLengths,2264 +widthOfSPD,2265 +widthOfWidths,2266 +windDirection,2267 +windDirectionTrend1,2268 +windDirectionTrend2,2269 +windDirectionTrend3,2270 +windDirectionTrend4,2271 +windGust,2272 +windGustTrend1,2273 +windGustTrend2,2274 +windGustTrend3,2275 +windGustTrend4,2276 +windPresent,2277 +windSpeed,2278 +windSpeedTrend1,2279 +windSpeedTrend2,2280 +windSpeedTrend3,2281 +windSpeedTrend4,2282 +windUnits,2283 +windUnitsTrend1,2284 +windUnitsTrend2,2285 +windUnitsTrend3,2286 +windUnitsTrend4,2287 +windVariableDirection,2288 +windVariableDirectionTrend1,2289 +windVariableDirectionTrend2,2290 +windVariableDirectionTrend3,2291 +windVariableDirectionTrend4,2292 +wrongPadding,2293 +xCoordinateOfOriginOfSectorImage,2294 +xCoordinateOfSubSatellitePoint,2295 +xDirectionGridLength,2296 +xDirectionGridLengthInMetres,2297 +xDirectionGridLengthInMillimetres,2298 +xFirst,2299 +xLast,2300 +yCoordinateOfOriginOfSectorImage,2301 +yCoordinateOfSubSatellitePoint,2302 +yDirectionGridLength,2303 +yDirectionGridLengthInMetres,2304 +yDirectionGridLengthInMillimetres,2305 +yFirst,2306 +yLast,2307 +year,2308 +yearOfAnalysis,2309 +yearOfCentury,2310 +yearOfEndOfOverallTimeInterval,2311 +yearOfForecast,2312 +yearOfModelVersion,2313 +yearOfReference,2314 +zero,2315 From a1e725be9ab318764bf235925abf085cdcc5706e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 17 Apr 2019 12:54:16 +0100 Subject: [PATCH 190/414] Example: codes_grib_nearest_find_multiple --- examples/C/CMakeLists.txt | 1 + examples/C/points.c | 20 ++++++++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/examples/C/CMakeLists.txt b/examples/C/CMakeLists.txt index b2d664071..517739128 100644 --- a/examples/C/CMakeLists.txt +++ b/examples/C/CMakeLists.txt @@ -21,6 +21,7 @@ list( APPEND test_bins mars_param values_check box + points grib_multi multi2 grib_multi_write diff --git a/examples/C/points.c b/examples/C/points.c index 070f991c4..e53a6c2ad 100644 --- a/examples/C/points.c +++ b/examples/C/points.c @@ -9,18 +9,17 @@ */ /* - * C Implementation: points + * Description: Nearest neighbour functionality using multiple input points * */ -#include -#include -#include - #include "eccodes.h" -void usage(const char* prog) { - printf("Usage: %s latlon_file grib_orography grib_file grib_file ...\n",prog); +static void usage(const char* prog) { + fprintf(stderr, "Usage: %s latlon_file grib_orography grib_file grib_file ...\n",prog); + fprintf(stderr, " The latlon_file should have 3 columns: num lat lon\n"); + fprintf(stderr, " The grib_orography file is treated as the land-sea mask\n"); + fprintf(stderr, "\n"); exit(1); } @@ -42,9 +41,13 @@ int main(int argc, char** argv) size_t len=0; long iid=0; long *id=NULL; + const int is_lsm = 1; if (argc < 2) usage(argv[0]); + /* Input lat/lon file should have 3 columns: + * number latitude longitude + */ fname=argv[1]; fin=fopen(fname,"r"); if(!fin) { perror(fname); exit(1); } @@ -83,13 +86,14 @@ int main(int argc, char** argv) } fclose(fin); + /* The first GRIB file on the arguments is treated as the land-sea mask file */ fname=argv[2]; fin=fopen(fname,"rb"); if(!fin) { perror(fname); exit(1); } h=codes_handle_new_from_file(0,fin,PRODUCT_GRIB, &ret); if (!h || ret!=CODES_SUCCESS) {printf(" unable to create handle\n");exit(1);} - codes_grib_nearest_find_multiple(h,1,vlat,vlon,npoints, + codes_grib_nearest_find_multiple(h,is_lsm,vlat,vlon,npoints, outlats,outlons,lsm_values,distances,indexes); codes_handle_delete(h); From 4346efcf94b06118a43529c4ab329acd8725431d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 17 Apr 2019 15:58:24 +0100 Subject: [PATCH 191/414] Tests: Add grib nearest multiple test --- examples/C/CMakeLists.txt | 1 + examples/C/grib_points.sh | 37 +++++++++++++++++++++++++++++++++++++ examples/C/points.c | 11 ++++++----- 3 files changed, 44 insertions(+), 5 deletions(-) create mode 100755 examples/C/grib_points.sh diff --git a/examples/C/CMakeLists.txt b/examples/C/CMakeLists.txt index 517739128..bdff4a31d 100644 --- a/examples/C/CMakeLists.txt +++ b/examples/C/CMakeLists.txt @@ -83,6 +83,7 @@ list( APPEND tests_extra grib_set_bitmap grib_list grib_get_data + grib_points set_missing bufr_attributes bufr_copy_data diff --git a/examples/C/grib_points.sh b/examples/C/grib_points.sh new file mode 100755 index 000000000..56b9227a6 --- /dev/null +++ b/examples/C/grib_points.sh @@ -0,0 +1,37 @@ +#!/bin/sh +# Copyright 2005-2019 ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.sh + +label="grib_nearest_multiple" +temp1=$label.temp1.$$ +temp2=$label.temp2.$$ +tempRef=$label.ref.$$ + +cat > $temp1 < $temp2 + +cat > $tempRef < Date: Wed, 17 Apr 2019 17:22:14 +0100 Subject: [PATCH 192/414] Tests: Rename --- examples/C/CMakeLists.txt | 4 ++-- examples/C/Makefile.am | 6 +++--- examples/C/{points.c => grib_nearest_multiple.c} | 0 examples/C/{grib_points.sh => grib_nearest_multiple.sh} | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) rename examples/C/{points.c => grib_nearest_multiple.c} (100%) rename examples/C/{grib_points.sh => grib_nearest_multiple.sh} (90%) diff --git a/examples/C/CMakeLists.txt b/examples/C/CMakeLists.txt index bdff4a31d..711c16f5c 100644 --- a/examples/C/CMakeLists.txt +++ b/examples/C/CMakeLists.txt @@ -21,7 +21,7 @@ list( APPEND test_bins mars_param values_check box - points + grib_nearest_multiple grib_multi multi2 grib_multi_write @@ -83,7 +83,7 @@ list( APPEND tests_extra grib_set_bitmap grib_list grib_get_data - grib_points + grib_nearest_multiple set_missing bufr_attributes bufr_copy_data diff --git a/examples/C/Makefile.am b/examples/C/Makefile.am index 791875a48..64f411630 100644 --- a/examples/C/Makefile.am +++ b/examples/C/Makefile.am @@ -57,7 +57,7 @@ noinst_PROGRAMS = c_grib_nearest \ c_grib_clone \ c_new_sample \ c_grib_ensemble_index \ - c_points \ + c_grib_nearest_multiple \ c_bufr_attributes \ c_bufr_clone \ c_bufr_expanded \ @@ -73,7 +73,7 @@ noinst_PROGRAMS = c_grib_nearest \ c_bufr_read_temp \ c_get_product_kind -#bin_PROGRAMS = points +#bin_PROGRAMS = grib_nearest_multiple c_box_SOURCES = box.c c_grib_set_data_SOURCES = grib_set_data.c @@ -93,7 +93,7 @@ c_grib_keys_iterator_SOURCES = grib_keys_iterator.c c_grib_iterator_SOURCES = grib_iterator.c c_grib_iterator_bitmap_SOURCES = grib_iterator_bitmap.c c_grib_set_pv_SOURCES = grib_set_pv.c -c_points_SOURCES = points.c +c_grib_nearest_multiple_SOURCES = grib_nearest_multiple.c c_grib_list_SOURCES = grib_list.c c_sections_copy_SOURCES = sections_copy.c c_large_grib1_SOURCES = large_grib1.c diff --git a/examples/C/points.c b/examples/C/grib_nearest_multiple.c similarity index 100% rename from examples/C/points.c rename to examples/C/grib_nearest_multiple.c diff --git a/examples/C/grib_points.sh b/examples/C/grib_nearest_multiple.sh similarity index 90% rename from examples/C/grib_points.sh rename to examples/C/grib_nearest_multiple.sh index 56b9227a6..98ea429fc 100755 --- a/examples/C/grib_points.sh +++ b/examples/C/grib_nearest_multiple.sh @@ -24,7 +24,7 @@ input_pts=$temp1 input_lsm=${data_dir}/reduced_gaussian_lsm.grib1 input_grb=${data_dir}/reduced_gaussian_pressure_level.grib1 -${examples_dir}/c_points $input_pts $input_lsm $input_grb > $temp2 +${examples_dir}/c_grib_nearest_multiple $input_pts $input_lsm $input_grb > $temp2 cat > $tempRef < Date: Wed, 17 Apr 2019 19:09:19 +0100 Subject: [PATCH 193/414] Debugging: print BUFR double value for encoding --- src/grib_accessor_class_bufr_data_array.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/grib_accessor_class_bufr_data_array.c b/src/grib_accessor_class_bufr_data_array.c index 048f03aea..7d476fd32 100644 --- a/src/grib_accessor_class_bufr_data_array.c +++ b/src/grib_accessor_class_bufr_data_array.c @@ -943,6 +943,7 @@ static int encode_double_value(grib_context* c,grib_buffer* buff,long* pos,bufr_ } else { lval=round(value/modifiedFactor)-modifiedReference; + if (c->debug) grib_context_log(c, GRIB_LOG_DEBUG, "encode_double_value %s: value=%.15f lval=%lu\n", bd->shortName,value,lval); grib_encode_unsigned_longb(buff->data,lval,pos,modifiedWidth); } From 5dc50cadd825a985aad8ffa25832c8b681ac0641 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 24 Apr 2019 13:28:53 +0100 Subject: [PATCH 194/414] ECC-920: Add WMO GRIB2 to the existing tpg parameters (Part 1) --- definitions/grib2/cfVarName.def | 96 +++++++++++++++++++ .../grib2/localConcepts/ecmf/cfVarName.def | 48 ---------- definitions/grib2/localConcepts/ecmf/name.def | 48 ---------- .../grib2/localConcepts/ecmf/paramId.def | 48 ---------- .../grib2/localConcepts/ecmf/shortName.def | 48 ---------- .../grib2/localConcepts/ecmf/units.def | 48 ---------- definitions/grib2/name.def | 96 +++++++++++++++++++ definitions/grib2/paramId.def | 96 +++++++++++++++++++ definitions/grib2/shortName.def | 96 +++++++++++++++++++ definitions/grib2/units.def | 96 +++++++++++++++++++ 10 files changed, 480 insertions(+), 240 deletions(-) diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index 470be6fab..a288d9508 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -1,4 +1,64 @@ # Automatically generated by ./create_def.pl, do not edit +#Total precipitation of at least 1 mm +'tpg1' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + productDefinitionTemplateNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + scaledValueOfLowerLimit = 1 ; + probabilityType = 3 ; + scaleFactorOfLowerLimit = 0 ; + } +#Total precipitation of at least 5 mm +'tpg5' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + productDefinitionTemplateNumber = 9 ; + typeOfStatisticalProcessing = 1 ; + scaledValueOfLowerLimit = 5 ; + probabilityType = 3 ; + typeOfFirstFixedSurface = 1 ; + scaleFactorOfLowerLimit = 0 ; + } +#Total precipitation of at least 40 mm +'tpg40' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + productDefinitionTemplateNumber = 9 ; + typeOfStatisticalProcessing = 1 ; + typeOfFirstFixedSurface = 1 ; + scaledValueOfLowerLimit = 40 ; + probabilityType = 3 ; + scaleFactorOfLowerLimit = 0 ; + } +#Total precipitation of at least 60 mm +'tpg60' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfStatisticalProcessing = 1 ; + scaledValueOfLowerLimit = 60 ; + probabilityType = 3 ; + scaleFactorOfLowerLimit = 0 ; + typeOfFirstFixedSurface = 1 ; + productDefinitionTemplateNumber = 9 ; + } +#Total precipitation of at least 80 mm +'tpg80' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfStatisticalProcessing = 1 ; + scaledValueOfLowerLimit = 80 ; + typeOfFirstFixedSurface = 1 ; + probabilityType = 3 ; + scaleFactorOfLowerLimit = 0 ; + productDefinitionTemplateNumber = 9 ; + } #Total precipitation of at least 100 mm 'tpg100' = { discipline = 0 ; @@ -11,6 +71,42 @@ typeOfFirstFixedSurface = 1 ; productDefinitionTemplateNumber = 9 ; } +#Total precipitation of at least 150 mm +'tpg150' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + scaledValueOfLowerLimit = 150 ; + typeOfFirstFixedSurface = 1 ; + probabilityType = 3 ; + scaleFactorOfLowerLimit = 0 ; + productDefinitionTemplateNumber = 9 ; + typeOfStatisticalProcessing = 1 ; + } +#Total precipitation of at least 200 mm +'tpg200' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + scaledValueOfLowerLimit = 200 ; + probabilityType = 3 ; + scaleFactorOfLowerLimit = 0 ; + typeOfFirstFixedSurface = 1 ; + productDefinitionTemplateNumber = 9 ; + typeOfStatisticalProcessing = 1 ; + } +#Total precipitation of at least 300 mm +'tpg300' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; + scaledValueOfLowerLimit = 3 ; + scaleFactorOfLowerLimit = -2 ; + probabilityType = 3 ; + typeOfStatisticalProcessing = 1 ; + productDefinitionTemplateNumber = 9 ; + } #Wind speed 'ws' = { discipline = 0 ; diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index 8da2c9b0d..7a74878f0 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -1,34 +1,4 @@ # Automatically generated by ./create_def.pl, do not edit -#Total precipitation of at least 1 mm -'tpg1' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 60 ; - } -#Total precipitation of at least 5 mm -'tpg5' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 61 ; - } -#Total precipitation of at least 40 mm -'tpg40' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 82 ; - } -#Total precipitation of at least 60 mm -'tpg60' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 83 ; - } -#Total precipitation of at least 80 mm -'tpg80' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 84 ; - } #Total precipitation of at least 100 mm 'tpg100' = { discipline = 0 ; @@ -47,24 +17,6 @@ parameterCategory = 131 ; parameterNumber = 85 ; } -#Total precipitation of at least 150 mm -'tpg150' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 86 ; - } -#Total precipitation of at least 200 mm -'tpg200' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 87 ; - } -#Total precipitation of at least 300 mm -'tpg300' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 88 ; - } #Equivalent potential temperature 'eqpt' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index dd4218777..c73b5b2c5 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -1,34 +1,4 @@ # Automatically generated by ./create_def.pl, do not edit -#Total precipitation of at least 1 mm -'Total precipitation of at least 1 mm' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 60 ; - } -#Total precipitation of at least 5 mm -'Total precipitation of at least 5 mm' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 61 ; - } -#Total precipitation of at least 40 mm -'Total precipitation of at least 40 mm' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 82 ; - } -#Total precipitation of at least 60 mm -'Total precipitation of at least 60 mm' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 83 ; - } -#Total precipitation of at least 80 mm -'Total precipitation of at least 80 mm' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 84 ; - } #Total precipitation of at least 100 mm 'Total precipitation of at least 100 mm' = { discipline = 0 ; @@ -47,24 +17,6 @@ parameterCategory = 131 ; parameterNumber = 85 ; } -#Total precipitation of at least 150 mm -'Total precipitation of at least 150 mm' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 86 ; - } -#Total precipitation of at least 200 mm -'Total precipitation of at least 200 mm' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 87 ; - } -#Total precipitation of at least 300 mm -'Total precipitation of at least 300 mm' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 88 ; - } #Equivalent potential temperature 'Equivalent potential temperature' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index 80eca0d7a..03468235e 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -1,34 +1,4 @@ # Automatically generated by ./create_def.pl, do not edit -#Total precipitation of at least 1 mm -'131060' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 60 ; - } -#Total precipitation of at least 5 mm -'131061' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 61 ; - } -#Total precipitation of at least 40 mm -'131082' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 82 ; - } -#Total precipitation of at least 60 mm -'131083' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 83 ; - } -#Total precipitation of at least 80 mm -'131084' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 84 ; - } #Total precipitation of at least 100 mm '131085' = { discipline = 0 ; @@ -47,24 +17,6 @@ parameterCategory = 131 ; parameterNumber = 85 ; } -#Total precipitation of at least 150 mm -'131086' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 86 ; - } -#Total precipitation of at least 200 mm -'131087' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 87 ; - } -#Total precipitation of at least 300 mm -'131088' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 88 ; - } #Equivalent potential temperature '4' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index 5e5826475..6200e67a6 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -1,34 +1,4 @@ # Automatically generated by ./create_def.pl, do not edit -#Total precipitation of at least 1 mm -'tpg1' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 60 ; - } -#Total precipitation of at least 5 mm -'tpg5' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 61 ; - } -#Total precipitation of at least 40 mm -'tpg40' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 82 ; - } -#Total precipitation of at least 60 mm -'tpg60' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 83 ; - } -#Total precipitation of at least 80 mm -'tpg80' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 84 ; - } #Total precipitation of at least 100 mm 'tpg100' = { discipline = 0 ; @@ -47,24 +17,6 @@ parameterCategory = 131 ; parameterNumber = 85 ; } -#Total precipitation of at least 150 mm -'tpg150' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 86 ; - } -#Total precipitation of at least 200 mm -'tpg200' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 87 ; - } -#Total precipitation of at least 300 mm -'tpg300' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 88 ; - } #Equivalent potential temperature 'eqpt' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index f4181205b..280a252d4 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -1,34 +1,4 @@ # Automatically generated by ./create_def.pl, do not edit -#Total precipitation of at least 1 mm -'%' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 60 ; - } -#Total precipitation of at least 5 mm -'%' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 61 ; - } -#Total precipitation of at least 40 mm -'%' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 82 ; - } -#Total precipitation of at least 60 mm -'%' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 83 ; - } -#Total precipitation of at least 80 mm -'%' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 84 ; - } #Total precipitation of at least 100 mm '%' = { discipline = 0 ; @@ -47,24 +17,6 @@ parameterCategory = 131 ; parameterNumber = 85 ; } -#Total precipitation of at least 150 mm -'%' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 86 ; - } -#Total precipitation of at least 200 mm -'%' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 87 ; - } -#Total precipitation of at least 300 mm -'%' = { - discipline = 192 ; - parameterCategory = 131 ; - parameterNumber = 88 ; - } #Equivalent potential temperature 'K' = { discipline = 192 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index fdae428a9..ff8c5fe87 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -1,4 +1,64 @@ # Automatically generated by ./create_def.pl, do not edit +#Total precipitation of at least 1 mm +'Total precipitation of at least 1 mm' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + productDefinitionTemplateNumber = 9 ; + probabilityType = 3 ; + typeOfStatisticalProcessing = 1 ; + typeOfFirstFixedSurface = 1 ; + scaleFactorOfLowerLimit = 0 ; + scaledValueOfLowerLimit = 1 ; + } +#Total precipitation of at least 5 mm +'Total precipitation of at least 5 mm' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; + probabilityType = 3 ; + typeOfStatisticalProcessing = 1 ; + scaleFactorOfLowerLimit = 0 ; + scaledValueOfLowerLimit = 5 ; + productDefinitionTemplateNumber = 9 ; + } +#Total precipitation of at least 40 mm +'Total precipitation of at least 40 mm' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + probabilityType = 3 ; + typeOfStatisticalProcessing = 1 ; + scaleFactorOfLowerLimit = 0 ; + scaledValueOfLowerLimit = 40 ; + productDefinitionTemplateNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + } +#Total precipitation of at least 60 mm +'Total precipitation of at least 60 mm' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + scaleFactorOfLowerLimit = 0 ; + typeOfFirstFixedSurface = 1 ; + scaledValueOfLowerLimit = 60 ; + productDefinitionTemplateNumber = 9 ; + probabilityType = 3 ; + typeOfStatisticalProcessing = 1 ; + } +#Total precipitation of at least 80 mm +'Total precipitation of at least 80 mm' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + scaleFactorOfLowerLimit = 0 ; + scaledValueOfLowerLimit = 80 ; + productDefinitionTemplateNumber = 9 ; + probabilityType = 3 ; + typeOfStatisticalProcessing = 1 ; + typeOfFirstFixedSurface = 1 ; + } #Total precipitation of at least 100 mm 'Total precipitation of at least 100 mm' = { discipline = 0 ; @@ -11,6 +71,42 @@ probabilityType = 3 ; typeOfStatisticalProcessing = 1 ; } +#Total precipitation of at least 150 mm +'Total precipitation of at least 150 mm' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + scaledValueOfLowerLimit = 150 ; + productDefinitionTemplateNumber = 9 ; + probabilityType = 3 ; + typeOfStatisticalProcessing = 1 ; + typeOfFirstFixedSurface = 1 ; + scaleFactorOfLowerLimit = 0 ; + } +#Total precipitation of at least 200 mm +'Total precipitation of at least 200 mm' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + probabilityType = 3 ; + typeOfStatisticalProcessing = 1 ; + scaleFactorOfLowerLimit = 0 ; + scaledValueOfLowerLimit = 200 ; + productDefinitionTemplateNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + } +#Total precipitation of at least 300 mm +'Total precipitation of at least 300 mm' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfStatisticalProcessing = 1 ; + probabilityType = 3 ; + scaledValueOfLowerLimit = 3 ; + typeOfFirstFixedSurface = 1 ; + productDefinitionTemplateNumber = 9 ; + scaleFactorOfLowerLimit = -2 ; + } #Wind speed 'Wind speed' = { discipline = 0 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 30e686c74..d0a0c31a2 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -1,4 +1,64 @@ # Automatically generated by ./create_def.pl, do not edit +#Total precipitation of at least 1 mm +'131060' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + scaledValueOfLowerLimit = 1 ; + probabilityType = 3 ; + scaleFactorOfLowerLimit = 0 ; + productDefinitionTemplateNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Total precipitation of at least 5 mm +'131061' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; + productDefinitionTemplateNumber = 9 ; + typeOfStatisticalProcessing = 1 ; + scaledValueOfLowerLimit = 5 ; + probabilityType = 3 ; + scaleFactorOfLowerLimit = 0 ; + } +#Total precipitation of at least 40 mm +'131082' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfStatisticalProcessing = 1 ; + scaledValueOfLowerLimit = 40 ; + probabilityType = 3 ; + scaleFactorOfLowerLimit = 0 ; + typeOfFirstFixedSurface = 1 ; + productDefinitionTemplateNumber = 9 ; + } +#Total precipitation of at least 60 mm +'131083' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + productDefinitionTemplateNumber = 9 ; + typeOfStatisticalProcessing = 1 ; + scaledValueOfLowerLimit = 60 ; + probabilityType = 3 ; + typeOfFirstFixedSurface = 1 ; + scaleFactorOfLowerLimit = 0 ; + } +#Total precipitation of at least 80 mm +'131084' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + productDefinitionTemplateNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + scaledValueOfLowerLimit = 80 ; + probabilityType = 3 ; + scaleFactorOfLowerLimit = 0 ; + } #Total precipitation of at least 100 mm '131085' = { discipline = 0 ; @@ -11,6 +71,42 @@ scaleFactorOfLowerLimit = 0 ; typeOfFirstFixedSurface = 1 ; } +#Total precipitation of at least 150 mm +'131086' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + scaleFactorOfLowerLimit = 0 ; + productDefinitionTemplateNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + scaledValueOfLowerLimit = 150 ; + probabilityType = 3 ; + } +#Total precipitation of at least 200 mm +'131087' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; + productDefinitionTemplateNumber = 9 ; + typeOfStatisticalProcessing = 1 ; + scaledValueOfLowerLimit = 200 ; + probabilityType = 3 ; + scaleFactorOfLowerLimit = 0 ; + } +#Total precipitation of at least 300 mm +'131088' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + scaledValueOfLowerLimit = 3 ; + scaleFactorOfLowerLimit = -2 ; + probabilityType = 3 ; + typeOfStatisticalProcessing = 1 ; + productDefinitionTemplateNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + } #Wind speed '10' = { discipline = 0 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 567bcfd3f..799f066af 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -1,4 +1,64 @@ # Automatically generated by ./create_def.pl, do not edit +#Total precipitation of at least 1 mm +'tpg1' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + productDefinitionTemplateNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + scaledValueOfLowerLimit = 1 ; + probabilityType = 3 ; + scaleFactorOfLowerLimit = 0 ; + } +#Total precipitation of at least 5 mm +'tpg5' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + productDefinitionTemplateNumber = 9 ; + typeOfStatisticalProcessing = 1 ; + scaledValueOfLowerLimit = 5 ; + probabilityType = 3 ; + typeOfFirstFixedSurface = 1 ; + scaleFactorOfLowerLimit = 0 ; + } +#Total precipitation of at least 40 mm +'tpg40' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + productDefinitionTemplateNumber = 9 ; + typeOfStatisticalProcessing = 1 ; + typeOfFirstFixedSurface = 1 ; + scaledValueOfLowerLimit = 40 ; + probabilityType = 3 ; + scaleFactorOfLowerLimit = 0 ; + } +#Total precipitation of at least 60 mm +'tpg60' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfStatisticalProcessing = 1 ; + scaledValueOfLowerLimit = 60 ; + probabilityType = 3 ; + scaleFactorOfLowerLimit = 0 ; + typeOfFirstFixedSurface = 1 ; + productDefinitionTemplateNumber = 9 ; + } +#Total precipitation of at least 80 mm +'tpg80' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfStatisticalProcessing = 1 ; + scaledValueOfLowerLimit = 80 ; + typeOfFirstFixedSurface = 1 ; + probabilityType = 3 ; + scaleFactorOfLowerLimit = 0 ; + productDefinitionTemplateNumber = 9 ; + } #Total precipitation of at least 100 mm 'tpg100' = { discipline = 0 ; @@ -11,6 +71,42 @@ typeOfFirstFixedSurface = 1 ; productDefinitionTemplateNumber = 9 ; } +#Total precipitation of at least 150 mm +'tpg150' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + scaledValueOfLowerLimit = 150 ; + typeOfFirstFixedSurface = 1 ; + probabilityType = 3 ; + scaleFactorOfLowerLimit = 0 ; + productDefinitionTemplateNumber = 9 ; + typeOfStatisticalProcessing = 1 ; + } +#Total precipitation of at least 200 mm +'tpg200' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + scaledValueOfLowerLimit = 200 ; + probabilityType = 3 ; + scaleFactorOfLowerLimit = 0 ; + typeOfFirstFixedSurface = 1 ; + productDefinitionTemplateNumber = 9 ; + typeOfStatisticalProcessing = 1 ; + } +#Total precipitation of at least 300 mm +'tpg300' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; + scaledValueOfLowerLimit = 3 ; + scaleFactorOfLowerLimit = -2 ; + probabilityType = 3 ; + typeOfStatisticalProcessing = 1 ; + productDefinitionTemplateNumber = 9 ; + } #Wind speed 'ws' = { discipline = 0 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 53015d70e..1c0ad2d0c 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -1,4 +1,64 @@ # Automatically generated by ./create_def.pl, do not edit +#Total precipitation of at least 1 mm +'%' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + productDefinitionTemplateNumber = 9 ; + probabilityType = 3 ; + typeOfStatisticalProcessing = 1 ; + typeOfFirstFixedSurface = 1 ; + scaleFactorOfLowerLimit = 0 ; + scaledValueOfLowerLimit = 1 ; + } +#Total precipitation of at least 5 mm +'%' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; + probabilityType = 3 ; + typeOfStatisticalProcessing = 1 ; + scaleFactorOfLowerLimit = 0 ; + scaledValueOfLowerLimit = 5 ; + productDefinitionTemplateNumber = 9 ; + } +#Total precipitation of at least 40 mm +'%' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + probabilityType = 3 ; + typeOfStatisticalProcessing = 1 ; + scaleFactorOfLowerLimit = 0 ; + scaledValueOfLowerLimit = 40 ; + productDefinitionTemplateNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + } +#Total precipitation of at least 60 mm +'%' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + scaleFactorOfLowerLimit = 0 ; + typeOfFirstFixedSurface = 1 ; + scaledValueOfLowerLimit = 60 ; + productDefinitionTemplateNumber = 9 ; + probabilityType = 3 ; + typeOfStatisticalProcessing = 1 ; + } +#Total precipitation of at least 80 mm +'%' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + scaleFactorOfLowerLimit = 0 ; + scaledValueOfLowerLimit = 80 ; + productDefinitionTemplateNumber = 9 ; + probabilityType = 3 ; + typeOfStatisticalProcessing = 1 ; + typeOfFirstFixedSurface = 1 ; + } #Total precipitation of at least 100 mm '%' = { discipline = 0 ; @@ -11,6 +71,42 @@ probabilityType = 3 ; typeOfStatisticalProcessing = 1 ; } +#Total precipitation of at least 150 mm +'%' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + scaledValueOfLowerLimit = 150 ; + productDefinitionTemplateNumber = 9 ; + probabilityType = 3 ; + typeOfStatisticalProcessing = 1 ; + typeOfFirstFixedSurface = 1 ; + scaleFactorOfLowerLimit = 0 ; + } +#Total precipitation of at least 200 mm +'%' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + probabilityType = 3 ; + typeOfStatisticalProcessing = 1 ; + scaleFactorOfLowerLimit = 0 ; + scaledValueOfLowerLimit = 200 ; + productDefinitionTemplateNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + } +#Total precipitation of at least 300 mm +'%' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfStatisticalProcessing = 1 ; + probabilityType = 3 ; + scaledValueOfLowerLimit = 3 ; + typeOfFirstFixedSurface = 1 ; + productDefinitionTemplateNumber = 9 ; + scaleFactorOfLowerLimit = -2 ; + } #Wind speed 'm s**-1' = { discipline = 0 ; From 818521af944e4b7847cd3cd4e6da1ec0997021f0 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 24 Apr 2019 13:48:46 +0100 Subject: [PATCH 195/414] ECC-920: Add WMO GRIB2 to the existing tpg parameters (Part 2) --- definitions/grib1/2.98.131.table | 2 ++ definitions/grib1/localConcepts/ecmf/cfVarName.def | 10 ++++++++++ definitions/grib1/localConcepts/ecmf/name.def | 10 ++++++++++ definitions/grib1/localConcepts/ecmf/paramId.def | 10 ++++++++++ definitions/grib1/localConcepts/ecmf/shortName.def | 10 ++++++++++ definitions/grib1/localConcepts/ecmf/units.def | 10 ++++++++++ 6 files changed, 52 insertions(+) diff --git a/definitions/grib1/2.98.131.table b/definitions/grib1/2.98.131.table index 79597aa36..4ba1a302e 100644 --- a/definitions/grib1/2.98.131.table +++ b/definitions/grib1/2.98.131.table @@ -58,6 +58,8 @@ 95 pats Probability anomaly of a tropical storm % 96 pah Probability anomaly of a hurricane % 97 patd Probability anomaly of a tropical depression % +98 tpg25 Total precipitation of at least 25 mm % +99 tpg50 Total precipitation of at least 50 mm % 129 zp Geopotential probability zp % 130 tap Temperature anomaly probability percentage 139 2tp 2 metre temperature probability % diff --git a/definitions/grib1/localConcepts/ecmf/cfVarName.def b/definitions/grib1/localConcepts/ecmf/cfVarName.def index 45c63f5e9..f198eef29 100644 --- a/definitions/grib1/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib1/localConcepts/ecmf/cfVarName.def @@ -3314,6 +3314,16 @@ table2Version = 131 ; indicatorOfParameter = 97 ; } +#Total precipitation of at least 25 mm +'tpg25' = { + table2Version = 131 ; + indicatorOfParameter = 98 ; + } +#Total precipitation of at least 50 mm +'tpg50' = { + table2Version = 131 ; + indicatorOfParameter = 99 ; + } #Convective available potential energy shear index 'capesi' = { table2Version = 132 ; diff --git a/definitions/grib1/localConcepts/ecmf/name.def b/definitions/grib1/localConcepts/ecmf/name.def index 1ecbe273e..1ae2b0cb1 100644 --- a/definitions/grib1/localConcepts/ecmf/name.def +++ b/definitions/grib1/localConcepts/ecmf/name.def @@ -3314,6 +3314,16 @@ table2Version = 131 ; indicatorOfParameter = 97 ; } +#Total precipitation of at least 25 mm +'Total precipitation of at least 25 mm' = { + table2Version = 131 ; + indicatorOfParameter = 98 ; + } +#Total precipitation of at least 50 mm +'Total precipitation of at least 50 mm' = { + table2Version = 131 ; + indicatorOfParameter = 99 ; + } #Convective available potential energy shear index 'Convective available potential energy shear index' = { table2Version = 132 ; diff --git a/definitions/grib1/localConcepts/ecmf/paramId.def b/definitions/grib1/localConcepts/ecmf/paramId.def index 6eb71a2bc..611198ebf 100644 --- a/definitions/grib1/localConcepts/ecmf/paramId.def +++ b/definitions/grib1/localConcepts/ecmf/paramId.def @@ -3314,6 +3314,16 @@ table2Version = 131 ; indicatorOfParameter = 97 ; } +#Total precipitation of at least 25 mm +'131098' = { + table2Version = 131 ; + indicatorOfParameter = 98 ; + } +#Total precipitation of at least 50 mm +'131099' = { + table2Version = 131 ; + indicatorOfParameter = 99 ; + } #Convective available potential energy shear index '132044' = { table2Version = 132 ; diff --git a/definitions/grib1/localConcepts/ecmf/shortName.def b/definitions/grib1/localConcepts/ecmf/shortName.def index 9871d5d43..eb36d8326 100644 --- a/definitions/grib1/localConcepts/ecmf/shortName.def +++ b/definitions/grib1/localConcepts/ecmf/shortName.def @@ -3314,6 +3314,16 @@ table2Version = 131 ; indicatorOfParameter = 97 ; } +#Total precipitation of at least 25 mm +'tpg25' = { + table2Version = 131 ; + indicatorOfParameter = 98 ; + } +#Total precipitation of at least 50 mm +'tpg50' = { + table2Version = 131 ; + indicatorOfParameter = 99 ; + } #Convective available potential energy shear index 'capesi' = { table2Version = 132 ; diff --git a/definitions/grib1/localConcepts/ecmf/units.def b/definitions/grib1/localConcepts/ecmf/units.def index a1bfae7de..695e5d509 100644 --- a/definitions/grib1/localConcepts/ecmf/units.def +++ b/definitions/grib1/localConcepts/ecmf/units.def @@ -3314,6 +3314,16 @@ table2Version = 131 ; indicatorOfParameter = 97 ; } +#Total precipitation of at least 25 mm +'%' = { + table2Version = 131 ; + indicatorOfParameter = 98 ; + } +#Total precipitation of at least 50 mm +'%' = { + table2Version = 131 ; + indicatorOfParameter = 99 ; + } #Convective available potential energy shear index '(-1 to 1)' = { table2Version = 132 ; From 7d814830fc806e80048165bc5db373208eb66ef4 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 24 Apr 2019 13:58:50 +0100 Subject: [PATCH 196/414] Update version --- VERSION.cmake | 2 +- version.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/VERSION.cmake b/VERSION.cmake index 5c1467e91..feb8caa63 100644 --- a/VERSION.cmake +++ b/VERSION.cmake @@ -1 +1 @@ -set( ${PROJECT_NAME}_VERSION_STR "2.12.3" ) +set( ${PROJECT_NAME}_VERSION_STR "2.12.4" ) diff --git a/version.sh b/version.sh index f0f6a8040..cbf1c08aa 100644 --- a/version.sh +++ b/version.sh @@ -15,7 +15,7 @@ PACKAGE_NAME='eccodes' # Package version ECCODES_MAJOR_VERSION=2 ECCODES_MINOR_VERSION=12 -ECCODES_REVISION_VERSION=3 +ECCODES_REVISION_VERSION=4 ECCODES_CURRENT=1 ECCODES_REVISION=0 From f581075292461f09575b4d36c932835f7c168f0a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 24 Apr 2019 16:22:55 +0100 Subject: [PATCH 197/414] ECC-921: Add backward compatibility GRIB1 to 10fgg10 --- definitions/grib1/2.98.131.table | 1 + definitions/grib1/localConcepts/ecmf/cfVarName.def | 5 +++++ definitions/grib1/localConcepts/ecmf/name.def | 5 +++++ definitions/grib1/localConcepts/ecmf/paramId.def | 5 +++++ definitions/grib1/localConcepts/ecmf/shortName.def | 5 +++++ definitions/grib1/localConcepts/ecmf/units.def | 5 +++++ 6 files changed, 26 insertions(+) diff --git a/definitions/grib1/2.98.131.table b/definitions/grib1/2.98.131.table index 4ba1a302e..ac2e14f4b 100644 --- a/definitions/grib1/2.98.131.table +++ b/definitions/grib1/2.98.131.table @@ -60,6 +60,7 @@ 97 patd Probability anomaly of a tropical depression % 98 tpg25 Total precipitation of at least 25 mm % 99 tpg50 Total precipitation of at least 50 mm % +100 10fgg10 10 metre wind gust of at least 10 m/s % 129 zp Geopotential probability zp % 130 tap Temperature anomaly probability percentage 139 2tp 2 metre temperature probability % diff --git a/definitions/grib1/localConcepts/ecmf/cfVarName.def b/definitions/grib1/localConcepts/ecmf/cfVarName.def index f198eef29..fb9b6598c 100644 --- a/definitions/grib1/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib1/localConcepts/ecmf/cfVarName.def @@ -3324,6 +3324,11 @@ table2Version = 131 ; indicatorOfParameter = 99 ; } +#10 metre wind gust of at least 10 m/s +'fgg1010' = { + table2Version = 131 ; + indicatorOfParameter = 100 ; + } #Convective available potential energy shear index 'capesi' = { table2Version = 132 ; diff --git a/definitions/grib1/localConcepts/ecmf/name.def b/definitions/grib1/localConcepts/ecmf/name.def index 1ae2b0cb1..e9758d19d 100644 --- a/definitions/grib1/localConcepts/ecmf/name.def +++ b/definitions/grib1/localConcepts/ecmf/name.def @@ -3324,6 +3324,11 @@ table2Version = 131 ; indicatorOfParameter = 99 ; } +#10 metre wind gust of at least 10 m/s +'10 metre wind gust of at least 10 m/s' = { + table2Version = 131 ; + indicatorOfParameter = 100 ; + } #Convective available potential energy shear index 'Convective available potential energy shear index' = { table2Version = 132 ; diff --git a/definitions/grib1/localConcepts/ecmf/paramId.def b/definitions/grib1/localConcepts/ecmf/paramId.def index 611198ebf..302108103 100644 --- a/definitions/grib1/localConcepts/ecmf/paramId.def +++ b/definitions/grib1/localConcepts/ecmf/paramId.def @@ -3324,6 +3324,11 @@ table2Version = 131 ; indicatorOfParameter = 99 ; } +#10 metre wind gust of at least 10 m/s +'131100' = { + table2Version = 131 ; + indicatorOfParameter = 100 ; + } #Convective available potential energy shear index '132044' = { table2Version = 132 ; diff --git a/definitions/grib1/localConcepts/ecmf/shortName.def b/definitions/grib1/localConcepts/ecmf/shortName.def index eb36d8326..bb90896c8 100644 --- a/definitions/grib1/localConcepts/ecmf/shortName.def +++ b/definitions/grib1/localConcepts/ecmf/shortName.def @@ -3324,6 +3324,11 @@ table2Version = 131 ; indicatorOfParameter = 99 ; } +#10 metre wind gust of at least 10 m/s +'10fgg10' = { + table2Version = 131 ; + indicatorOfParameter = 100 ; + } #Convective available potential energy shear index 'capesi' = { table2Version = 132 ; diff --git a/definitions/grib1/localConcepts/ecmf/units.def b/definitions/grib1/localConcepts/ecmf/units.def index 695e5d509..c80282764 100644 --- a/definitions/grib1/localConcepts/ecmf/units.def +++ b/definitions/grib1/localConcepts/ecmf/units.def @@ -3324,6 +3324,11 @@ table2Version = 131 ; indicatorOfParameter = 99 ; } +#10 metre wind gust of at least 10 m/s +'%' = { + table2Version = 131 ; + indicatorOfParameter = 100 ; + } #Convective available potential energy shear index '(-1 to 1)' = { table2Version = 132 ; From 536df91da0eeca3530a101b5c916140bb5f62356 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 25 Apr 2019 11:28:36 +0100 Subject: [PATCH 198/414] Tools: update man page --- tools/grib_to_netcdf.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/grib_to_netcdf.c b/tools/grib_to_netcdf.c index 0a650c242..fd6b53804 100644 --- a/tools/grib_to_netcdf.c +++ b/tools/grib_to_netcdf.c @@ -29,7 +29,9 @@ #include #endif -const char* grib_tool_description = "Convert a GRIB file to netCDF format."; +const char* grib_tool_description = "Convert a GRIB file to netCDF format." + "\n\tNote: The GRIB geometry should be a regular lat/lon grid or a regular Gaussian grid" + "\n\t(the key \"typeOfGrid\" should be \"regular_ll\" or \"regular_gg\")"; const char* grib_tool_name = "grib_to_netcdf"; const char* grib_tool_usage = "[options] grib_file grib_file ... "; static char argvString[2048] = {0,}; From 2525e220019322b7a3fc637988fb323c6589f582 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 25 Apr 2019 13:26:15 +0100 Subject: [PATCH 199/414] Definitions clean up --- definitions/grib1/data.grid_ieee.def | 7 - definitions/grib1/data.grid_second_order.def | 7 - .../data.grid_second_order_constant_width.def | 7 - .../data.grid_second_order_general_grib1.def | 7 - .../data.grid_second_order_row_by_row.def | 7 - definitions/grib1/data.grid_simple.def | 8 - definitions/grib1/data.grid_simple_matrix.def | 7 - definitions/grib1/data.spectral_complex.def | 7 - definitions/grib1/data.spectral_ieee.def | 7 - definitions/grib1/data.spectral_simple.def | 7 - definitions/grib1/gds_not_present_bitmap.def | 7 - definitions/grib1/grid_21.def | 7 - definitions/grib1/grid_22.def | 7 - definitions/grib1/grid_23.def | 7 - definitions/grib1/grid_24.def | 7 - definitions/grib1/grid_25.def | 7 - definitions/grib1/grid_26.def | 7 - definitions/grib1/grid_61.def | 7 - definitions/grib1/grid_62.def | 8 - definitions/grib1/grid_63.def | 7 - definitions/grib1/grid_64.def | 8 - definitions/grib1/grid_definition_1.def | 8 - definitions/grib1/grid_definition_192.78.def | 8 - definitions/grib1/grid_definition_192.98.def | 8 - definitions/grib1/grid_definition_193.98.def | 7 - definitions/grib1/grid_definition_5.def | 9 - definitions/grib1/grid_definition_90.def | 10 - .../grib1/grid_definition_gaussian.def | 10 - definitions/grib1/grid_definition_lambert.def | 12 - definitions/grib1/grid_definition_latlon.def | 11 - .../grid_definition_spherical_harmonics.def | 9 - .../grib1/grid_first_last_resandcomp.def | 7 - definitions/grib1/grid_rotation.def | 7 - definitions/grib1/grid_stretching.def | 7 - definitions/grib1/local.214.1.def | 7 - definitions/grib1/local.214.244.def | 7 - definitions/grib1/local.214.245.def | 7 - definitions/grib1/local.54.def | 7 - definitions/grib1/local.7.1.def | 12 - definitions/grib1/local.98.1.def | 7 - definitions/grib1/local.98.10.def | 8 - definitions/grib1/local.98.11.def | 7 - definitions/grib1/local.98.13.def | 7 - definitions/grib1/local.98.14.def | 7 - definitions/grib1/local.98.15.def | 8 - definitions/grib1/local.98.16.def | 8 - definitions/grib1/local.98.17.def | 7 - definitions/grib1/local.98.18.def | 7 - definitions/grib1/local.98.19.def | 7 - definitions/grib1/local.98.190.def | 7 - definitions/grib1/local.98.191.def | 7 - definitions/grib1/local.98.192.def | 7 - definitions/grib1/local.98.2.def | 7 - definitions/grib1/local.98.20.def | 7 - definitions/grib1/local.98.21.def | 7 - definitions/grib1/local.98.218.def | 7 - definitions/grib1/local.98.23.def | 7 - definitions/grib1/local.98.24.def | 7 - definitions/grib1/local.98.25.def | 7 - definitions/grib1/local.98.26.def | 7 - definitions/grib1/local.98.27.def | 7 - definitions/grib1/local.98.28.def | 7 - definitions/grib1/local.98.29.def | 7 - definitions/grib1/local.98.3.def | 7 - definitions/grib1/local.98.30.def | 10 - definitions/grib1/local.98.31.def | 7 - definitions/grib1/local.98.32.def | 7 - definitions/grib1/local.98.33.def | 7 - definitions/grib1/local.98.35.def | 7 - definitions/grib1/local.98.36.def | 7 - definitions/grib1/local.98.37.def | 7 - definitions/grib1/local.98.38.def | 7 - definitions/grib1/local.98.39.def | 7 - definitions/grib1/local.98.4.def | 8 - definitions/grib1/local.98.40.def | 7 - definitions/grib1/local.98.5.def | 7 - definitions/grib1/local.98.50.def | 7 - definitions/grib1/local.98.6.def | 7 - definitions/grib1/local.98.7.def | 7 - definitions/grib1/local.98.8.def | 7 - definitions/grib1/local.98.9.def | 7 - definitions/grib1/local_no_mars.98.1.def | 12 - definitions/grib1/local_no_mars.98.24.def | 18 - definitions/grib1/mars_labeling.4.def | 18 +- definitions/grib1/mars_labeling.def | 10 - definitions/grib1/predefined_grid.def | 10 - definitions/grib1/resolution_flags.def | 9 - definitions/grib1/scanning_mode.def | 9 - definitions/grib1/section.1.def | 9 - definitions/grib1/section.2.def | 10 - definitions/grib1/section.3.def | 9 - definitions/grib1/section.4.def | 13 +- definitions/grib2/section.0.def | 8 - definitions/grib2/section.1.def | 7 - definitions/grib2/section.2.def | 7 - definitions/grib2/section.3.def | 7 - definitions/grib2/section.4.def | 8 +- definitions/grib2/section.5.def | 7 - definitions/grib2/section.6.def | 8 - definitions/grib2/section.7.def | 8 - definitions/grib2/section.8.def | 8 - definitions/grib2/sections.def | 7 - definitions/grib2/tables/10/4.230.table | 414 +--------------- definitions/grib2/tables/10/4.233.table | 414 +--------------- definitions/grib2/tables/11/4.230.table | 414 +--------------- definitions/grib2/tables/11/4.233.table | 414 +--------------- definitions/grib2/tables/12/4.230.table | 420 +--------------- definitions/grib2/tables/12/4.233.table | 420 +--------------- definitions/grib2/tables/13/4.230.table | 420 +--------------- definitions/grib2/tables/13/4.233.table | 420 +--------------- definitions/grib2/tables/14/4.230.table | 420 +--------------- definitions/grib2/tables/14/4.233.table | 420 +--------------- definitions/grib2/tables/15/4.230.table | 422 +---------------- definitions/grib2/tables/15/4.233.table | 422 +---------------- definitions/grib2/tables/16/4.230.table | 422 +---------------- definitions/grib2/tables/16/4.233.table | 422 +---------------- definitions/grib2/tables/17/4.230.table | 422 +---------------- definitions/grib2/tables/17/4.233.table | 422 +---------------- definitions/grib2/tables/18/4.230.table | 448 +----------------- definitions/grib2/tables/18/4.233.table | 448 +----------------- definitions/grib2/tables/19/4.230.table | 448 +----------------- definitions/grib2/tables/19/4.233.table | 448 +----------------- definitions/grib2/tables/6/4.230.table | 116 +---- definitions/grib2/tables/7/4.230.table | 116 +---- definitions/grib2/tables/8/4.230.table | 414 +--------------- definitions/grib2/tables/8/4.233.table | 414 +--------------- definitions/grib2/tables/9/4.230.table | 414 +--------------- definitions/grib2/tables/9/4.233.table | 414 +--------------- 128 files changed, 29 insertions(+), 11165 deletions(-) diff --git a/definitions/grib1/data.grid_ieee.def b/definitions/grib1/data.grid_ieee.def index 020ebe88d..4c176144a 100644 --- a/definitions/grib1/data.grid_ieee.def +++ b/definitions/grib1/data.grid_ieee.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # moved here to allow different bitsPerValue in second order packing unsigned[1] bitsPerValue : dump ; diff --git a/definitions/grib1/data.grid_second_order.def b/definitions/grib1/data.grid_second_order.def index 6a34c32b0..ca879e20a 100644 --- a/definitions/grib1/data.grid_second_order.def +++ b/definitions/grib1/data.grid_second_order.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# unsigned [2] N2 : dump; unsigned [2] codedNumberOfGroups : no_copy ; diff --git a/definitions/grib1/data.grid_second_order_constant_width.def b/definitions/grib1/data.grid_second_order_constant_width.def index c9bc34c77..bfe2e1771 100644 --- a/definitions/grib1/data.grid_second_order_constant_width.def +++ b/definitions/grib1/data.grid_second_order_constant_width.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# unsigned [2] N2 : dump; unsigned [2] codedNumberOfFirstOrderPackedValues : no_copy ; diff --git a/definitions/grib1/data.grid_second_order_general_grib1.def b/definitions/grib1/data.grid_second_order_general_grib1.def index 641dee6df..65c88d9f1 100644 --- a/definitions/grib1/data.grid_second_order_general_grib1.def +++ b/definitions/grib1/data.grid_second_order_general_grib1.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# unsigned [2] N2 : dump; unsigned [2] codedNumberOfFirstOrderPackedValues : no_copy ; diff --git a/definitions/grib1/data.grid_second_order_row_by_row.def b/definitions/grib1/data.grid_second_order_row_by_row.def index e9b2e5d78..44f13a990 100644 --- a/definitions/grib1/data.grid_second_order_row_by_row.def +++ b/definitions/grib1/data.grid_second_order_row_by_row.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# unsigned [2] N2 : dump; unsigned [2] codedNumberOfFirstOrderPackedValues : no_copy ; diff --git a/definitions/grib1/data.grid_simple.def b/definitions/grib1/data.grid_simple.def index 86ec3be62..e85aac147 100644 --- a/definitions/grib1/data.grid_simple.def +++ b/definitions/grib1/data.grid_simple.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # moved here to allow different bitsPerValue in second order packing unsigned[1] bitsPerValue : dump ; @@ -74,4 +67,3 @@ meta numberOfCodedValues number_of_coded_values(bitsPerValue,offsetBeforeData,of meta packingError simple_packing_error(bitsPerValue,binaryScaleFactor,decimalScaleFactor,referenceValue,ibm) : no_copy; meta unpackedError simple_packing_error(zero,binaryScaleFactor,decimalScaleFactor,referenceValue,ieee) : no_copy; template statistics "common/statistics_grid.def"; - diff --git a/definitions/grib1/data.grid_simple_matrix.def b/definitions/grib1/data.grid_simple_matrix.def index 76876c01c..e8d1def10 100644 --- a/definitions/grib1/data.grid_simple_matrix.def +++ b/definitions/grib1/data.grid_simple_matrix.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# #used in packing constant constantFieldHalfByte=0; diff --git a/definitions/grib1/data.spectral_complex.def b/definitions/grib1/data.spectral_complex.def index eb1e1c9f6..f3897fc6e 100644 --- a/definitions/grib1/data.spectral_complex.def +++ b/definitions/grib1/data.spectral_complex.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # moved here to allow different bitsPerValue in second order packing unsigned[1] bitsPerValue : dump ; diff --git a/definitions/grib1/data.spectral_ieee.def b/definitions/grib1/data.spectral_ieee.def index 88b237ef0..e95a3e85d 100644 --- a/definitions/grib1/data.spectral_ieee.def +++ b/definitions/grib1/data.spectral_ieee.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # moved here to allow different bitsPerValue in second order packing unsigned[1] bitsPerValue : dump ; diff --git a/definitions/grib1/data.spectral_simple.def b/definitions/grib1/data.spectral_simple.def index bfb9eefa0..47d59d8c1 100644 --- a/definitions/grib1/data.spectral_simple.def +++ b/definitions/grib1/data.spectral_simple.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # moved here to allow different bitsPerValue in second order packing unsigned[1] bitsPerValue : dump ; diff --git a/definitions/grib1/gds_not_present_bitmap.def b/definitions/grib1/gds_not_present_bitmap.def index 5d1d3adc0..785fb9c25 100644 --- a/definitions/grib1/gds_not_present_bitmap.def +++ b/definitions/grib1/gds_not_present_bitmap.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # SECTION 3, Bit-map section position offsetSection3; diff --git a/definitions/grib1/grid_21.def b/definitions/grib1/grid_21.def index 655607bf4..72b6d4d69 100644 --- a/definitions/grib1/grid_21.def +++ b/definitions/grib1/grid_21.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Predefined grid 21 diff --git a/definitions/grib1/grid_22.def b/definitions/grib1/grid_22.def index e343b3c6d..da413efae 100644 --- a/definitions/grib1/grid_22.def +++ b/definitions/grib1/grid_22.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Predefined grid 22 diff --git a/definitions/grib1/grid_23.def b/definitions/grib1/grid_23.def index 52a31f0c1..54c7863fc 100644 --- a/definitions/grib1/grid_23.def +++ b/definitions/grib1/grid_23.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Predefined grid 23 diff --git a/definitions/grib1/grid_24.def b/definitions/grib1/grid_24.def index a5f1935dd..8514c553f 100644 --- a/definitions/grib1/grid_24.def +++ b/definitions/grib1/grid_24.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Predefined grid 24 diff --git a/definitions/grib1/grid_25.def b/definitions/grib1/grid_25.def index 99783c4e1..5638329d0 100644 --- a/definitions/grib1/grid_25.def +++ b/definitions/grib1/grid_25.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Predefined grid 25 diff --git a/definitions/grib1/grid_26.def b/definitions/grib1/grid_26.def index 3b33451e0..87dc3d8b9 100644 --- a/definitions/grib1/grid_26.def +++ b/definitions/grib1/grid_26.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Predefined grid 26 diff --git a/definitions/grib1/grid_61.def b/definitions/grib1/grid_61.def index 10b4d9d2e..593bf64e9 100644 --- a/definitions/grib1/grid_61.def +++ b/definitions/grib1/grid_61.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Predefined grid 61 diff --git a/definitions/grib1/grid_62.def b/definitions/grib1/grid_62.def index 76cdae613..b7ff7ec41 100644 --- a/definitions/grib1/grid_62.def +++ b/definitions/grib1/grid_62.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Predefined grid 62 @@ -23,4 +16,3 @@ constant jDirectionIncrement = 2000; constant numberOfDataPoints=4186; constant numberOfValues=4096 ; - diff --git a/definitions/grib1/grid_63.def b/definitions/grib1/grid_63.def index a288c63bd..f3e6d3529 100644 --- a/definitions/grib1/grid_63.def +++ b/definitions/grib1/grid_63.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Predefined grid 63 diff --git a/definitions/grib1/grid_64.def b/definitions/grib1/grid_64.def index 8e8ac4b2b..e0b29e6ef 100644 --- a/definitions/grib1/grid_64.def +++ b/definitions/grib1/grid_64.def @@ -1,12 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - # Predefined grid 21 constant Ni = 91; diff --git a/definitions/grib1/grid_definition_1.def b/definitions/grib1/grid_definition_1.def index 2b3508886..a17f95d0c 100644 --- a/definitions/grib1/grid_definition_1.def +++ b/definitions/grib1/grid_definition_1.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # GRID DEFINITION Mercator projection # grib 1 -> 2 @@ -54,4 +47,3 @@ meta numberOfDataPoints number_of_points(Ni,Nj) : dump; alias numberOfPoints=numberOfDataPoints; meta numberOfValues number_of_values(values,bitsPerValue,numberOfDataPoints,bitmapPresent,bitmap,numberOfCodedValues) : dump; #alias ls.valuesCount=numberOfValues; - diff --git a/definitions/grib1/grid_definition_192.78.def b/definitions/grib1/grid_definition_192.78.def index 6f7e5bfd0..5ad78b027 100755 --- a/definitions/grib1/grid_definition_192.78.def +++ b/definitions/grib1/grid_definition_192.78.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # DWD local grid definition 192 - triangular grid base on icosahedron subdivision @@ -48,4 +41,3 @@ meta numberOfValues number_of_values(values,bitsPerValue,numberOfDataPoints, bitmapPresent,bitmap,numberOfCodedValues) : dump; - diff --git a/definitions/grib1/grid_definition_192.98.def b/definitions/grib1/grid_definition_192.98.def index 52d25ca6e..9cc9af7c8 100644 --- a/definitions/grib1/grid_definition_192.98.def +++ b/definitions/grib1/grid_definition_192.98.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # GRID DEFINITION ocean ECMWF convention @@ -28,4 +21,3 @@ meta numberOfDataPoints number_of_points(Ni,Nj,PLPresent,pl) : dump; alias numberOfPoints=numberOfDataPoints; meta numberOfValues number_of_values(values,bitsPerValue,numberOfDataPoints,bitmapPresent,bitmap,numberOfCodedValues) : dump; #alias ls.valuesCount=numberOfValues; - diff --git a/definitions/grib1/grid_definition_193.98.def b/definitions/grib1/grid_definition_193.98.def index d277a7b87..1f4bcac03 100644 --- a/definitions/grib1/grid_definition_193.98.def +++ b/definitions/grib1/grid_definition_193.98.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # GRID DEFINITION quasi-regular latitude/longitude grid # grib 1 -> 2 diff --git a/definitions/grib1/grid_definition_5.def b/definitions/grib1/grid_definition_5.def index 791d5950e..341da6b18 100644 --- a/definitions/grib1/grid_definition_5.def +++ b/definitions/grib1/grid_definition_5.def @@ -1,12 +1,3 @@ -# Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - # GRID DEFINITION Polar stereographic # grib 1 -> 2 constant gridDefinitionTemplateNumber = 20; diff --git a/definitions/grib1/grid_definition_90.def b/definitions/grib1/grid_definition_90.def index f666cbb9e..8d338c535 100644 --- a/definitions/grib1/grid_definition_90.def +++ b/definitions/grib1/grid_definition_90.def @@ -1,12 +1,3 @@ -# Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - # GRID DEFINITION Space view, perspective or orthographic # grib 1 -> 2 constant gridDefinitionTemplateNumber = 90; @@ -73,4 +64,3 @@ meta numberOfDataPoints number_of_points(Ni,Nj,PLPresent,pl) : dump; alias numberOfPoints=numberOfDataPoints; meta numberOfValues number_of_values(values,bitsPerValue,numberOfDataPoints,bitmapPresent,bitmap,numberOfCodedValues) : dump; #alias ls.valuesCount=numberOfValues; - diff --git a/definitions/grib1/grid_definition_gaussian.def b/definitions/grib1/grid_definition_gaussian.def index ca313cd99..f58fc9bfb 100644 --- a/definitions/grib1/grid_definition_gaussian.def +++ b/definitions/grib1/grid_definition_gaussian.def @@ -1,12 +1,3 @@ -# Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - unsigned[2] Ni : can_be_missing,dump; alias numberOfPointsAlongAParallel= Ni ; alias Nx =Ni; @@ -103,4 +94,3 @@ meta isOctahedral octahedral_gaussian(N, Ni, PLPresent, pl) = 0 : no_copy,dump; meta gaussianGridName gaussian_grid_name(N, Ni, isOctahedral); alias gridName=gaussianGridName; - diff --git a/definitions/grib1/grid_definition_lambert.def b/definitions/grib1/grid_definition_lambert.def index 61a46e7d7..779fab5d1 100644 --- a/definitions/grib1/grid_definition_lambert.def +++ b/definitions/grib1/grid_definition_lambert.def @@ -1,12 +1,3 @@ -# Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - unsigned[2] Nx : dump; alias Ni = Nx; alias numberOfPointsAlongXAxis = Nx; @@ -122,6 +113,3 @@ meta distinctLongitudes longitudes(values,1); nearest lambert_conformal(values,radius,Nx,Ny); pad padding_grid3_1(2); - -# END 1/grid_definition.lambert_conformal ---------------------------------------------------------------------- - diff --git a/definitions/grib1/grid_definition_latlon.def b/definitions/grib1/grid_definition_latlon.def index e1d03d0e0..e8fe6159c 100644 --- a/definitions/grib1/grid_definition_latlon.def +++ b/definitions/grib1/grid_definition_latlon.def @@ -1,13 +1,3 @@ -# Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - - unsigned[2] Ni : can_be_missing,dump; alias numberOfPointsAlongAParallel=Ni; alias Nx = Ni; @@ -71,4 +61,3 @@ meta latitudes latitudes(values,0); meta longitudes longitudes(values,0); meta distinctLatitudes latitudes(values,1); meta distinctLongitudes longitudes(values,1); - diff --git a/definitions/grib1/grid_definition_spherical_harmonics.def b/definitions/grib1/grid_definition_spherical_harmonics.def index f9ad288f2..5041d374d 100644 --- a/definitions/grib1/grid_definition_spherical_harmonics.def +++ b/definitions/grib1/grid_definition_spherical_harmonics.def @@ -1,12 +1,3 @@ -# Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - # GRID DEFINITION spherical harmonic coefficients (including rotated, stretched, or stretched and rotated) # J - pentagonal resolution parameter diff --git a/definitions/grib1/grid_first_last_resandcomp.def b/definitions/grib1/grid_first_last_resandcomp.def index 1ac7a4233..01bea9897 100644 --- a/definitions/grib1/grid_first_last_resandcomp.def +++ b/definitions/grib1/grid_first_last_resandcomp.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # La1 - latitude of first grid point signed[3] latitudeOfFirstGridPoint : edition_specific; diff --git a/definitions/grib1/grid_rotation.def b/definitions/grib1/grid_rotation.def index d65e58e14..7834804f4 100644 --- a/definitions/grib1/grid_rotation.def +++ b/definitions/grib1/grid_rotation.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# signed[3] latitudeOfSouthernPole : edition_specific; meta geography.latitudeOfSouthernPoleInDegrees scale(latitudeOfSouthernPole ,oneConstant,grib1divider,truncateDegrees) : dump; diff --git a/definitions/grib1/grid_stretching.def b/definitions/grib1/grid_stretching.def index 2e52cf0b6..bbb51501d 100644 --- a/definitions/grib1/grid_stretching.def +++ b/definitions/grib1/grid_stretching.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# signed[3] latitudeOfStretchingPole : edition_specific,no_copy; signed[3] longitudeOfStretchingPole : edition_specific,no_copy; diff --git a/definitions/grib1/local.214.1.def b/definitions/grib1/local.214.1.def index 9ec0998e2..e46bf903b 100644 --- a/definitions/grib1/local.214.1.def +++ b/definitions/grib1/local.214.1.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # START 1/local.98.1 ---------------------------------------------------------------------- # LOCAL 98 1 diff --git a/definitions/grib1/local.214.244.def b/definitions/grib1/local.214.244.def index c43428f89..6c5181aa6 100644 --- a/definitions/grib1/local.214.244.def +++ b/definitions/grib1/local.214.244.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # START 1/local.98.244 ---------------------------------------------------------------------- # LOCAL 214 98 244 diff --git a/definitions/grib1/local.214.245.def b/definitions/grib1/local.214.245.def index 0fa443265..a856e52f8 100644 --- a/definitions/grib1/local.214.245.def +++ b/definitions/grib1/local.214.245.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # START 1/local.98.245 ---------------------------------------------------------------------- # LOCAL 214 98 245 diff --git a/definitions/grib1/local.54.def b/definitions/grib1/local.54.def index aa3e30873..9df64f198 100644 --- a/definitions/grib1/local.54.def +++ b/definitions/grib1/local.54.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# label "CMC local definition (Canada)"; # START 1/local.54 -------------------------------------------------------------------- diff --git a/definitions/grib1/local.7.1.def b/definitions/grib1/local.7.1.def index f7d484818..dac8b6a13 100644 --- a/definitions/grib1/local.7.1.def +++ b/definitions/grib1/local.7.1.def @@ -1,15 +1,5 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# -# START 1/local.7.1 ---------------------------------------------------------------------- -# LOCAL 7 1 -# # KWBC localDefinitionTemplate_001 # -------------------------------- # @@ -96,5 +86,3 @@ if(section1Length > sectionLengthLimitForEnsembles) unsigned[1] clusterMember9 : dump ; unsigned[1] clusterMember10 : dump ; } - -# END 1/local.7.1 ---------------------------------------------------------------------- diff --git a/definitions/grib1/local.98.1.def b/definitions/grib1/local.98.1.def index 363979b55..3bdaa03bc 100644 --- a/definitions/grib1/local.98.1.def +++ b/definitions/grib1/local.98.1.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# constant GRIBEXSection1Problem = 52 - section1Length ; diff --git a/definitions/grib1/local.98.10.def b/definitions/grib1/local.98.10.def index b606c38a9..28a3d6d54 100644 --- a/definitions/grib1/local.98.10.def +++ b/definitions/grib1/local.98.10.def @@ -1,12 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - constant GRIBEXSection1Problem = 334 - section1Length ; template mars_labeling "grib1/mars_labeling.def"; diff --git a/definitions/grib1/local.98.11.def b/definitions/grib1/local.98.11.def index 8d66795f7..a7a8895c3 100644 --- a/definitions/grib1/local.98.11.def +++ b/definitions/grib1/local.98.11.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# constant GRIBEXSection1Problem = 72 - section1Length ; diff --git a/definitions/grib1/local.98.13.def b/definitions/grib1/local.98.13.def index 91a57817b..356141066 100644 --- a/definitions/grib1/local.98.13.def +++ b/definitions/grib1/local.98.13.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# template mars_labeling "grib1/mars_labeling.def"; diff --git a/definitions/grib1/local.98.14.def b/definitions/grib1/local.98.14.def index c85e0a865..63d8fdf5d 100644 --- a/definitions/grib1/local.98.14.def +++ b/definitions/grib1/local.98.14.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# constant GRIBEXSection1Problem = 1080 - section1Length ; diff --git a/definitions/grib1/local.98.15.def b/definitions/grib1/local.98.15.def index bd0b8e7dd..a9fc4ec4a 100644 --- a/definitions/grib1/local.98.15.def +++ b/definitions/grib1/local.98.15.def @@ -1,14 +1,6 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # used in local definition 13 - constant GRIBEXSection1Problem = 60 - section1Length ; transient localFlag=1 : hidden ; diff --git a/definitions/grib1/local.98.16.def b/definitions/grib1/local.98.16.def index cf4d0b43b..6fe55525c 100644 --- a/definitions/grib1/local.98.16.def +++ b/definitions/grib1/local.98.16.def @@ -1,13 +1,5 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# -# LOCAL 98 16 # Seasonal forecast monthly mean data constant GRIBEXSection1Problem = 80 - section1Length ; diff --git a/definitions/grib1/local.98.17.def b/definitions/grib1/local.98.17.def index 7bd1848d7..60af7f190 100644 --- a/definitions/grib1/local.98.17.def +++ b/definitions/grib1/local.98.17.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# template mars_labeling "grib1/mars_labeling.def"; diff --git a/definitions/grib1/local.98.18.def b/definitions/grib1/local.98.18.def index bf710a2b4..c9f8a6107 100644 --- a/definitions/grib1/local.98.18.def +++ b/definitions/grib1/local.98.18.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# constant GRIBEXSection1Problem = 120 - section1Length ; diff --git a/definitions/grib1/local.98.19.def b/definitions/grib1/local.98.19.def index 3eeb4eaab..8a6a97d55 100644 --- a/definitions/grib1/local.98.19.def +++ b/definitions/grib1/local.98.19.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# template mars_labeling "grib1/mars_labeling.def"; diff --git a/definitions/grib1/local.98.190.def b/definitions/grib1/local.98.190.def index ec934dd9b..1eafb51a7 100644 --- a/definitions/grib1/local.98.190.def +++ b/definitions/grib1/local.98.190.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# constant GRIBEXSection1Problem = 0 ; diff --git a/definitions/grib1/local.98.191.def b/definitions/grib1/local.98.191.def index af0db62f5..f32cdd5a1 100644 --- a/definitions/grib1/local.98.191.def +++ b/definitions/grib1/local.98.191.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# template mars_labeling "grib1/mars_labeling.def"; diff --git a/definitions/grib1/local.98.192.def b/definitions/grib1/local.98.192.def index 96421c382..e65fe5cb1 100644 --- a/definitions/grib1/local.98.192.def +++ b/definitions/grib1/local.98.192.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # The mars labeling must be inline # template mars_labeling "grib1/mars_labeling.def"; diff --git a/definitions/grib1/local.98.2.def b/definitions/grib1/local.98.2.def index 11c51c8e3..d14fa6906 100644 --- a/definitions/grib1/local.98.2.def +++ b/definitions/grib1/local.98.2.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# constant GRIBEXSection1Problem = 328 - section1Length ; diff --git a/definitions/grib1/local.98.20.def b/definitions/grib1/local.98.20.def index 1d5c5c60e..f5014a5c5 100644 --- a/definitions/grib1/local.98.20.def +++ b/definitions/grib1/local.98.20.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# constant GRIBEXSection1Problem = 52 - section1Length ; diff --git a/definitions/grib1/local.98.21.def b/definitions/grib1/local.98.21.def index 3ef3b9506..3d2192684 100644 --- a/definitions/grib1/local.98.21.def +++ b/definitions/grib1/local.98.21.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# constant GRIBEXSection1Problem = 100 - section1Length ; diff --git a/definitions/grib1/local.98.218.def b/definitions/grib1/local.98.218.def index 300d1910a..4c7893c71 100644 --- a/definitions/grib1/local.98.218.def +++ b/definitions/grib1/local.98.218.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# constant GRIBEXSection1Problem = 120 - section1Length ; diff --git a/definitions/grib1/local.98.23.def b/definitions/grib1/local.98.23.def index 038c9528c..ce8761fd8 100644 --- a/definitions/grib1/local.98.23.def +++ b/definitions/grib1/local.98.23.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# constant GRIBEXSection1Problem = 84 - section1Length ; diff --git a/definitions/grib1/local.98.24.def b/definitions/grib1/local.98.24.def index f0cd3967d..e2fc29be8 100644 --- a/definitions/grib1/local.98.24.def +++ b/definitions/grib1/local.98.24.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# constant GRIBEXSection1Problem = 56 - section1Length ; diff --git a/definitions/grib1/local.98.25.def b/definitions/grib1/local.98.25.def index c0de12fe1..64d636017 100644 --- a/definitions/grib1/local.98.25.def +++ b/definitions/grib1/local.98.25.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# template mars_labeling "grib1/mars_labeling.def"; diff --git a/definitions/grib1/local.98.26.def b/definitions/grib1/local.98.26.def index 64719d82f..fa17db14a 100644 --- a/definitions/grib1/local.98.26.def +++ b/definitions/grib1/local.98.26.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# constant GRIBEXSection1Problem = 69 - section1Length ; diff --git a/definitions/grib1/local.98.27.def b/definitions/grib1/local.98.27.def index f7027dc40..07b5adc55 100644 --- a/definitions/grib1/local.98.27.def +++ b/definitions/grib1/local.98.27.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# constant GRIBEXSection1Problem = 107 - section1Length ; diff --git a/definitions/grib1/local.98.28.def b/definitions/grib1/local.98.28.def index 4ff717ce8..d27a850a8 100644 --- a/definitions/grib1/local.98.28.def +++ b/definitions/grib1/local.98.28.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # information about probabilities (they have already probabilities) # information about clustering (they save it as ASCII, at the moment...) diff --git a/definitions/grib1/local.98.29.def b/definitions/grib1/local.98.29.def index 3ce908c40..63f404e1d 100644 --- a/definitions/grib1/local.98.29.def +++ b/definitions/grib1/local.98.29.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# constant GRIBEXSection1Problem = 960 - section1Length ; diff --git a/definitions/grib1/local.98.3.def b/definitions/grib1/local.98.3.def index e419adb47..b87a3b311 100644 --- a/definitions/grib1/local.98.3.def +++ b/definitions/grib1/local.98.3.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# constant GRIBEXSection1Problem = 52 - section1Length ; diff --git a/definitions/grib1/local.98.30.def b/definitions/grib1/local.98.30.def index 41b4db4b3..b03e248c3 100644 --- a/definitions/grib1/local.98.30.def +++ b/definitions/grib1/local.98.30.def @@ -1,14 +1,6 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Forecasting Systems with Variable Resolution - constant GRIBEXSection1Problem = 106 - section1Length ; # used in local definition 13 @@ -41,7 +33,6 @@ alias number=perturbationNumber; unsigned[1] numberOfForecastsInEnsemble : dump; alias totalNumber=numberOfForecastsInEnsemble; - unsigned[1] oceanAtmosphereCoupling : dump; pad padding_loc30_1(3); @@ -53,7 +44,6 @@ unsigned[4] referenceDate : dump ; unsigned[4] climateDateFrom : dump ; unsigned[4] climateDateTo : dump; - alias local.oceanAtmosphereCoupling=oceanAtmosphereCoupling; alias local.legBaseDate=legBaseDate ; alias local.legBaseTime=legBaseTime ; diff --git a/definitions/grib1/local.98.31.def b/definitions/grib1/local.98.31.def index 355281cdc..87a889761 100644 --- a/definitions/grib1/local.98.31.def +++ b/definitions/grib1/local.98.31.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# constant GRIBEXSection1Problem = 240 - section1Length ; diff --git a/definitions/grib1/local.98.32.def b/definitions/grib1/local.98.32.def index 891f36ace..9827de382 100644 --- a/definitions/grib1/local.98.32.def +++ b/definitions/grib1/local.98.32.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# constant GRIBEXSection1Problem = 328 - section1Length ; diff --git a/definitions/grib1/local.98.33.def b/definitions/grib1/local.98.33.def index e8f662ccd..558d8f3a8 100644 --- a/definitions/grib1/local.98.33.def +++ b/definitions/grib1/local.98.33.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# template mars_labeling "grib1/mars_labeling.def"; diff --git a/definitions/grib1/local.98.35.def b/definitions/grib1/local.98.35.def index 7d6f32f15..415f3a889 100644 --- a/definitions/grib1/local.98.35.def +++ b/definitions/grib1/local.98.35.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# constant GRIBEXSection1Problem = 120 - section1Length ; diff --git a/definitions/grib1/local.98.36.def b/definitions/grib1/local.98.36.def index 310987eaf..7967e8430 100644 --- a/definitions/grib1/local.98.36.def +++ b/definitions/grib1/local.98.36.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# constant GRIBEXSection1Problem = 56 - section1Length ; diff --git a/definitions/grib1/local.98.37.def b/definitions/grib1/local.98.37.def index 7015246a8..099196e9a 100644 --- a/definitions/grib1/local.98.37.def +++ b/definitions/grib1/local.98.37.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# constant GRIBEXSection1Problem = 1080 - section1Length ; diff --git a/definitions/grib1/local.98.38.def b/definitions/grib1/local.98.38.def index 0514d6515..aafcff7d3 100644 --- a/definitions/grib1/local.98.38.def +++ b/definitions/grib1/local.98.38.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# constant GRIBEXSection1Problem = 56 - section1Length ; diff --git a/definitions/grib1/local.98.39.def b/definitions/grib1/local.98.39.def index 40be3eb70..6898b11f2 100644 --- a/definitions/grib1/local.98.39.def +++ b/definitions/grib1/local.98.39.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# template mars_labeling "grib1/mars_labeling.def"; diff --git a/definitions/grib1/local.98.4.def b/definitions/grib1/local.98.4.def index 367b02806..102d533c7 100644 --- a/definitions/grib1/local.98.4.def +++ b/definitions/grib1/local.98.4.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# constant GRIBEXSection1Problem = 0 ; @@ -33,7 +26,6 @@ alias system=systemNumber; unsigned[1] methodNumber : dump ; - # # Coordinate structure definition # diff --git a/definitions/grib1/local.98.40.def b/definitions/grib1/local.98.40.def index 06ddba6c8..79290e447 100644 --- a/definitions/grib1/local.98.40.def +++ b/definitions/grib1/local.98.40.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# constant GRIBEXSection1Problem = 56 - section1Length ; diff --git a/definitions/grib1/local.98.5.def b/definitions/grib1/local.98.5.def index f1da72350..c3139e8ef 100644 --- a/definitions/grib1/local.98.5.def +++ b/definitions/grib1/local.98.5.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# constant GRIBEXSection1Problem = 58 - section1Length ; diff --git a/definitions/grib1/local.98.50.def b/definitions/grib1/local.98.50.def index 90e774c0f..3b3ca6947 100644 --- a/definitions/grib1/local.98.50.def +++ b/definitions/grib1/local.98.50.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# constant GRIBEXSection1Problem = 300 - section1Length ; diff --git a/definitions/grib1/local.98.6.def b/definitions/grib1/local.98.6.def index 54c92008b..4944d6478 100644 --- a/definitions/grib1/local.98.6.def +++ b/definitions/grib1/local.98.6.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# template mars_labeling "grib1/mars_labeling.def"; diff --git a/definitions/grib1/local.98.7.def b/definitions/grib1/local.98.7.def index 1a8b34722..61928b900 100644 --- a/definitions/grib1/local.98.7.def +++ b/definitions/grib1/local.98.7.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # 1-> 2 alias grib2LocalSectionPresent=present; diff --git a/definitions/grib1/local.98.8.def b/definitions/grib1/local.98.8.def index 530246c67..d67be8e7e 100644 --- a/definitions/grib1/local.98.8.def +++ b/definitions/grib1/local.98.8.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# constant GRIBEXSection1Problem = 62 - section1Length ; diff --git a/definitions/grib1/local.98.9.def b/definitions/grib1/local.98.9.def index 9af69d3e3..e61e60e5c 100644 --- a/definitions/grib1/local.98.9.def +++ b/definitions/grib1/local.98.9.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # 1-> 2 alias grib2LocalSectionPresent=present; diff --git a/definitions/grib1/local_no_mars.98.1.def b/definitions/grib1/local_no_mars.98.1.def index 5bdd5a604..ed418cee0 100644 --- a/definitions/grib1/local_no_mars.98.1.def +++ b/definitions/grib1/local_no_mars.98.1.def @@ -1,12 +1,3 @@ -# Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - # START 1/local.98.1 ---------------------------------------------------------------------- # LOCAL 98 1 # @@ -73,6 +64,3 @@ if (stepType is "instant" ) { # monthly mean #if (timeRangeIndicator==113) { #} - - -# END 1/local.98.1 ---------------------------------------------------------------------- diff --git a/definitions/grib1/local_no_mars.98.24.def b/definitions/grib1/local_no_mars.98.24.def index 73f58c3ee..efdd3d8a6 100644 --- a/definitions/grib1/local_no_mars.98.24.def +++ b/definitions/grib1/local_no_mars.98.24.def @@ -1,18 +1,3 @@ -# Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - -# START 1/local.98.24 ---------------------------------------------------------------------- -# LOCAL 98 24 -# -# localDefinitionTemplate_024 -# --------------------------- -# # Description Octet Code Ksec1 Count # ----------- ----- ---- ----- ----- #localDefinitionNumber 41 I1 37 - @@ -38,6 +23,3 @@ unsigned[2] channelNumber : dump ; alias mars.channel = channelNumber; unsigned[1] functionCode : dump ; - - -# END 1/local.98.24 ---------------------------------------------------------------------- diff --git a/definitions/grib1/mars_labeling.4.def b/definitions/grib1/mars_labeling.4.def index 4dc25ddd0..279943ae6 100644 --- a/definitions/grib1/mars_labeling.4.def +++ b/definitions/grib1/mars_labeling.4.def @@ -1,13 +1,3 @@ -# Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - - constant P_INST = 0; constant P_TAVG = 1; constant P_TACC = 3; @@ -44,7 +34,7 @@ meta verificationDate g1verificationdate(dataDate, dataTime, endStep) : read_o if(horizontalCoordinateDefinition == 0) - { +{ if(coordinate1Flag == 1 ) { @@ -191,7 +181,6 @@ if(horizontalCoordinateDefinition == 0) alias mars.product = coordAveragingTims; # date - if(marsType == TYPE_OR && averaging1Flag == P_INST){ #remove mars.date; @@ -199,11 +188,6 @@ if(horizontalCoordinateDefinition == 0) #remove mars.step; constant stepZero = 0; alias mars.step =stepZero; - } - - } - - } diff --git a/definitions/grib1/mars_labeling.def b/definitions/grib1/mars_labeling.def index c387ef5e0..51eae2bdf 100644 --- a/definitions/grib1/mars_labeling.def +++ b/definitions/grib1/mars_labeling.def @@ -1,12 +1,3 @@ -# Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - codetable[1] marsClass "mars/class.table" = "od" : dump, string_type, lowercase; codetable[1] marsType "mars/type.table" = "an" : dump, string_type, lowercase; codetable[2] marsStream "mars/stream.table" = "oper" : dump, string_type, lowercase ; @@ -21,4 +12,3 @@ alias mars.stream = marsStream; alias mars.expver = experimentVersionNumber; alias mars.domain = globalDomain; # For now... - diff --git a/definitions/grib1/predefined_grid.def b/definitions/grib1/predefined_grid.def index 4f5db1dd5..52298f859 100644 --- a/definitions/grib1/predefined_grid.def +++ b/definitions/grib1/predefined_grid.def @@ -1,12 +1,3 @@ -# Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - # Predefined grid 21 #position offsetSection2; @@ -136,4 +127,3 @@ meta bitmap gds_not_present_bitmap( missingValue,numberOfValues, latitudeOfFirstGridPoint, Ni,numberOfUnusedBitsAtEndOfSection3) : read_only; - diff --git a/definitions/grib1/resolution_flags.def b/definitions/grib1/resolution_flags.def index 3e18ba934..6c56f24b9 100644 --- a/definitions/grib1/resolution_flags.def +++ b/definitions/grib1/resolution_flags.def @@ -1,12 +1,3 @@ -# Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - # Resolution and component flags flags[1] resolutionAndComponentFlags 'grib1/7.table' : edition_specific,no_copy ; diff --git a/definitions/grib1/scanning_mode.def b/definitions/grib1/scanning_mode.def index ec0610d1b..27ad7fd3c 100644 --- a/definitions/grib1/scanning_mode.def +++ b/definitions/grib1/scanning_mode.def @@ -1,12 +1,3 @@ -# Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - # Scanning mode flags[1] scanningMode 'grib1/8.table' : edition_specific,no_copy; diff --git a/definitions/grib1/section.1.def b/definitions/grib1/section.1.def index 7a05c1d4b..55bbc4109 100644 --- a/definitions/grib1/section.1.def +++ b/definitions/grib1/section.1.def @@ -1,12 +1,3 @@ -# Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - constant ECMWF = 98 : hidden; constant ECMWF_s = "ecmf" : hidden; constant WMO= 0; diff --git a/definitions/grib1/section.2.def b/definitions/grib1/section.2.def index 6d435dd01..40c4a9337 100644 --- a/definitions/grib1/section.2.def +++ b/definitions/grib1/section.2.def @@ -1,16 +1,6 @@ -# Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - # START grib1::section # SECTION 2, Grid description section # Length of section -# (octets) position offsetSection2; section_length[3] section2Length ; diff --git a/definitions/grib1/section.3.def b/definitions/grib1/section.3.def index 43255d432..152c9dcbd 100644 --- a/definitions/grib1/section.3.def +++ b/definitions/grib1/section.3.def @@ -1,12 +1,3 @@ -# Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - # SECTION 3, Bit-map section position offsetSection3; section_length[3] section3Length ; diff --git a/definitions/grib1/section.4.def b/definitions/grib1/section.4.def index 00966af9a..8c8d54fa6 100644 --- a/definitions/grib1/section.4.def +++ b/definitions/grib1/section.4.def @@ -1,21 +1,11 @@ -# Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - # START grib1::section # SECTION 4, Binary data section # Length of section -# (octets) position offsetSection4; # Due to a trick done by GRIBEX to support large GRIBs, we need a special treatment # of the message length and of the section4 lenth, so instead of -# section_length[3] section4Length ; +# section_length[3] section4Length; # we get: g1_section4_length[3] section4Length(totalLength); @@ -252,4 +242,3 @@ if (complexPacking==0 || sphericalHarmonics==1) { meta md5Section4 md5(offsetSection4,section4Length); alias md5DataSection = md5Section4; - diff --git a/definitions/grib2/section.0.def b/definitions/grib2/section.0.def index 4065c9ada..37ccf3612 100644 --- a/definitions/grib2/section.0.def +++ b/definitions/grib2/section.0.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# position offsetSection0; constant section0Length=16; @@ -18,5 +11,4 @@ alias ls.edition = editionNumber; section_length[8] totalLength; position startOfHeaders; - meta section0Pointer section_pointer(offsetSection0,section0Length,0); diff --git a/definitions/grib2/section.1.def b/definitions/grib2/section.1.def index 557fbb8cb..7f9e54c4a 100644 --- a/definitions/grib2/section.1.def +++ b/definitions/grib2/section.1.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# position offsetSection1; section_length[4] section1Length ; diff --git a/definitions/grib2/section.2.def b/definitions/grib2/section.2.def index fe788c798..8817c0a96 100644 --- a/definitions/grib2/section.2.def +++ b/definitions/grib2/section.2.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# position offsetSection2; section_length[4] section2Length ; diff --git a/definitions/grib2/section.3.def b/definitions/grib2/section.3.def index 43a53331e..1f804e19c 100644 --- a/definitions/grib2/section.3.def +++ b/definitions/grib2/section.3.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # START grib2::section # SECTION 3, GRID DEFINITION SECTION diff --git a/definitions/grib2/section.4.def b/definitions/grib2/section.4.def index 2a249de11..5225157e8 100644 --- a/definitions/grib2/section.4.def +++ b/definitions/grib2/section.4.def @@ -1,11 +1,5 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# + transient timeRangeIndicator=0 : no_copy,hidden; position offsetSection4; diff --git a/definitions/grib2/section.5.def b/definitions/grib2/section.5.def index 1faa6f621..7a9204589 100644 --- a/definitions/grib2/section.5.def +++ b/definitions/grib2/section.5.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# position offsetBSection5; diff --git a/definitions/grib2/section.6.def b/definitions/grib2/section.6.def index c81c273fb..fcb562c15 100644 --- a/definitions/grib2/section.6.def +++ b/definitions/grib2/section.6.def @@ -1,12 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - # START grib2::section # SECTION 6, BIT-MAP SECTION diff --git a/definitions/grib2/section.7.def b/definitions/grib2/section.7.def index 95ddc41f6..6513c97cb 100644 --- a/definitions/grib2/section.7.def +++ b/definitions/grib2/section.7.def @@ -1,12 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - # START grib2::section # SECTION 7, DATA SECTION diff --git a/definitions/grib2/section.8.def b/definitions/grib2/section.8.def index 5ba5062ba..b65b6c11b 100644 --- a/definitions/grib2/section.8.def +++ b/definitions/grib2/section.8.def @@ -1,12 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - constant section8Length=4; position offsetSection8; diff --git a/definitions/grib2/sections.def b/definitions/grib2/sections.def index cadd03b67..118597d8f 100644 --- a/definitions/grib2/sections.def +++ b/definitions/grib2/sections.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# lookup[1] sectionNumber(4) ; diff --git a/definitions/grib2/tables/10/4.230.table b/definitions/grib2/tables/10/4.230.table index 5fe00dc73..5c39a79b9 100644 --- a/definitions/grib2/tables/10/4.230.table +++ b/definitions/grib2/tables/10/4.230.table @@ -1,415 +1,3 @@ # Code table 4.230 - Atmospheric chemical constituent type -0 0 Ozone -1 1 Water vapour -2 2 Methane -3 3 Carbon dioxide -4 4 Carbon monoxide -5 5 Nitrogen dioxide -6 6 Nitrous oxide -7 7 Formaldehyde -8 8 Sulphur dioxide -9 9 Ammonia -10 10 Ammonium -11 11 Nitrogen monoxide -12 12 Atomic oxygen -13 13 Nitrate radical -14 14 Hydroperoxyl radical -15 15 Dinitrogen pentoxide -16 16 Nitrous acid -17 17 Nitric acid -18 18 Peroxynitric acid -19 19 Hydrogen peroxide -20 20 Molecular hydrogen -21 21 Atomic nitrogen -22 22 Sulphate -23 23 Radon -24 24 Elemental mercury -25 25 Divalent mercury -26 26 Atomic chlorine -27 27 Chlorine monoxide -28 28 Dichlorine peroxide -29 29 Hypochlorous acid -30 30 Chlorine nitrate -31 31 Chlorine dioxide -32 32 Atomic bromine -33 33 Bromine monoxide -34 34 Bromine chloride -35 35 Hydrogen bromide -36 36 Hypobromous acid -37 37 Bromine nitrate -#38-9999 Reserved -10000 10000 Hydroxyl radical -10001 10001 Methyl peroxy radical -10002 10002 Methyl hydroperoxide -10004 10004 Methanol -10005 10005 Formic acid -10006 10006 Hydrogen cyanide -10007 10007 Aceto nitrile -10008 10008 Ethane -10009 10009 Ethene (= Ethylene) -10010 10010 Ethyne (= Acetylene) -10011 10011 Ethanol -10012 10012 Acetic acid -10013 10013 Peroxyacetyl nitrate -10014 10014 Propane -10015 10015 Propene -10016 10016 Butanes -10017 10017 Isoprene -10018 10018 Alpha pinene -10019 10019 Beta pinene -10020 10020 Limonene -10021 10021 Benzene -10022 10022 Toluene -10023 10023 Xylene -#10024-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides...) -10500 10500 Dimethyl sulphide -#10501-20000 Reserved -20001 20001 Hydrogen chloride -20002 20002 CFC-11 -20003 20003 CFC-12 -20004 20004 CFC-113 -20005 20005 CFC-113a -20006 20006 CFC-114 -20007 20007 CFC-115 -20008 20008 HCFC-22 -20009 20009 HCFC-141b -20010 20010 HCFC-142b -20011 20011 Halon-1202 -20012 20012 Halon-1211 -20013 20013 Halon-1301 -20014 20014 Halon-2402 -20015 20015 Methyl chloride (HCC-40) -20016 20016 Carbon tetrachloride (HCC-10) -20017 20017 HCC-140a -20018 20018 Methyl bromide (HBC-40B1) -20019 20019 Hexachlorocyclohexane (HCH) -20020 20020 Alpha hexachlorocyclohexane -20021 20021 Hexachlorobiphenyl (PCB-153) -#20022-29999 Reserved -30000 30000 Radioactive pollutant (tracer, defined by originating centre) -#30001-30009 Reserved -30010 30010 Hydrogen H-3 -30011 30011 Hydrogen organic bounded H-3o -30012 30012 Hydrogen inorganic H-3a -30013 30013 Beryllium 7 Be-7 -30014 30014 Beryllium 10 Be-10 -30015 30015 Carbon 14 C-14 -30016 30016 Carbon 14 CO2 C-14CO2 -30017 30017 Carbon 14 other gases C-14og -30018 30018 Nitrogen 13 N-13 -30019 30019 Nitrogen 16 N-16 -30020 30020 Fluorine 18 F-18 -30021 30021 Sodium 22 Na-22 -30022 30022 Phosphate 32 P-32 -30023 30023 Phosphate 33 P-33 -30024 30024 Sulfur 35 S-35 -30025 30025 Chlorine 36 Cl-36 -30026 30026 Potassium 40 K-40 -30027 30027 Argon 41 Ar-41 -30028 30028 Calcium 41 Ca-41 -30029 30029 Calcium 45 Ca-45 -30030 30030 Titanium 44 -30031 30031 Scandium 46 Sc-46 -30032 30032 Vanadium 48 V-48 -30033 30033 Vanadium 49 V-49 -30034 30034 Chrome 51 Cr-51 -30035 30035 Manganese 52 Mn-52 -30036 30036 Manganese 54 Mn-54 -30037 30037 Iron 55 Fe-55 -30038 30038 Iron 59 Fe-59 -30039 30039 Cobalt 56 Co-56 -30040 30040 Cobalt 57 Co-57 -30041 30041 Cobalt 58 Co-58 -30042 30042 Cobalt 60 Co-60 -30043 30043 Nickel 59 Ni-59 -30044 30044 Nickel 63 Ni-63 -30045 30045 Zinc 65 Zn-65 -30046 30046 Gallium 67 Ga-67 -30047 30047 Gallium 68 Ga-68 -30048 30048 Germanium 68 Ge-68 -30049 30049 Germanium 69 Ge-69 -30050 30050 Arsenic 73 As-73 -30051 30051 Selenium 75 Se-75 -30052 30052 Selenium 79 Se-79 -30053 30053 Rubidium 81 Rb-81 -30054 30054 Rubidium 83 Rb-83 -30055 30055 Rubidium 84 Rb-84 -30056 30056 Rubidium 86 Rb-86 -30057 30057 Rubidium 87 Rb-87 -30058 30058 Rubidium 88 Rb-88 -30059 30059 Krypton 85 Kr-85 -30060 30060 Krypton 85 metastable Kr-85m -30061 30061 Krypton 87 Kr-87 -30062 30062 Krypton 88 Kr-88 -30063 30063 Krypton 89 Kr-89 -30064 30064 Strontium 85 Sr-85 -30065 30065 Strontium 89 Sr-89 -30066 30066 Strontium 89/90 Sr-8990 -30067 30067 Strontium 90 Sr-90 -30068 30068 Strontium 91 Sr-91 -30069 30069 Strontium 92 Sr-92 -30070 30070 Yttrium 87 Y-87 -30071 30071 Yttrium 88 Y-88 -30072 30072 Yttrium 90 Y-90 -30073 30073 Yttrium 91 Y-91 -30074 30074 Yttrium 91 metastable Y-91m -30075 30075 Yttrium 92 Y-92 -30076 30076 Yttrium 93 Y-93 -30077 30077 Zirconium 89 Zr-89 -30078 30078 Zirconium 93 Zr-93 -30079 30079 Zirconium 95 Zr-95 -30080 30080 Zirconium 97 Zr-97 -30081 30081 Niobium 93 metastable Nb-93m -30082 30082 Niobium 94 Nb-94 -30083 30083 Niobium 95 Nb-95 -30084 30084 Niobium 95 metastable Nb-95m -30085 30085 Niobium 97 Nb-97 -30086 30086 Niobium 97 metastable Nb-97m -30087 30087 Molybdenum 93 Mo-93 -30088 30088 Molybdenum 99 Mo-99 -30089 30089 Technetium 95 metastable Tc-95m -30090 30090 Technetium 96 Tc-96 -30091 30091 Technetium 99 Tc-99 -30092 30092 Technetium 99 metastable Tc-99m -30093 30093 Rhodium 99 Rh-99 -30094 30094 Rhodium 101 Rh-101 -30095 30095 Rhodium 102 metastable Rh-102m -30096 30096 Rhodium 103 metastable Rh-103m -30097 30097 Rhodium 105 Rh-105 -30098 30098 Rhodium 106 Rh-106 -30099 30099 Palladium 100 Pd-100 -30100 30100 Palladium 103 Pd-103 -30101 30101 Palladium 107 Pd-107 -30102 30102 Ruthenium 103 Ru-103 -30103 30103 Ruthenium 105 Ru-105 -30104 30104 Ruthenium 106 Ru-106 -30105 30105 Silver 108 metastable Ag-108m -30106 30106 Silver 110 metastable Ag-110m -30107 30107 Cadmium 109 Cd-109 -30108 30108 Cadmium 113 metastable Cd-113m -30109 30109 Cadmium 115 metastable Cd-115m -30110 30110 Indium 114 metastable In-114m -30111 30111 Tin 113 Sn-113 -30112 30112 Tin 119 metastable Sn-119m -30113 30113 Tin 121 metastable Sn-121m -30114 30114 Tin 122 Sn-122 -30115 30115 Tin 123 Sn-123 -30116 30116 Tin 126 Sn-126 -30117 30117 Antimony 124 Sb-124 -30118 30118 Antimony 125 Sb-125 -30119 30119 Antimony 126 Sb-126 -30120 30120 Antimony 127 Sb-127 -30121 30121 Antimony 129 Sb-129 -30122 30122 Tellurium 123 metastable Te-123m -30123 30123 Tellurium 125 metastable Te-125m -30124 30124 Tellurium 127 Te-127 -30125 30125 Tellurium 127 metastable Te-127m -30126 30126 Tellurium 129 Te-129 -30127 30127 Tellurium 129 metastable Te-129m -30128 30128 Tellurium 131 metastable Te-131m -30129 30129 Tellurium 132 Te-132 -30130 30130 Iodine 123 I-123 -30131 30131 Iodine 124 I-124 -30132 30132 Iodine 125 I-125 -30133 30133 Iodine 126 I-126 -30134 30134 Iodine 129 I-129 -30135 30135 Iodine 129 elementary gaseous I-129g -30136 30136 Iodine 129 organic bounded I-129o -30137 30137 Iodine 131 I-131 -30138 30138 Iodine 131 elementary gaseous I-131g -30139 30139 Iodine 131 organic bounded I-131o -30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go -30141 30141 Iodine 131 aerosol I-131a -30142 30142 Iodine 132 I-132 -30143 30143 Iodine 132 elementary gaseous I-132g -30144 30144 Iodine 132 organic bounded I-132o -30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go -30146 30146 Iodine 132 aerosol I-132a -30147 30147 Iodine 133 I-133 -30148 30148 Iodine 133 elementary gaseous I-133g -30149 30149 Iodine 133 organic bounded I-133o -30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go -30151 30151 Iodine 133 aerosol I-133a -30152 30152 Iodine 134 I-134 -30153 30153 Iodine 134 elementary gaseous I-134g -30154 30154 Iodine 134 organic bounded I-134o -30155 30155 Iodine 135 I-135 -30156 30156 Iodine 135 elementary gaseous I-135g -30157 30157 Iodine 135 organic bounded I-135o -30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go -30159 30159 Iodine 135 aerosol I-135a -30160 30160 Xenon 131 metastable Xe-131m -30161 30161 Xenon 133 Xe-133 -30162 30162 Xenon 133 metastable Xe-133m -30163 30163 Xenon 135 Xe-135 -30164 30164 Xenon 135 metastable Xe-135m -30165 30165 Xenon 137 Xe-137 -30166 30166 Xenon 138 Xe-138 -30167 30167 Xenon sum of all Xenon isotopes Xe-sum -30168 30168 Caesium 131 Cs-131 -30169 30169 Caesium 134 Cs-134 -30170 30170 Caesium 135 Cs-135 -30171 30171 Caesium 136 Cs-136 -30172 30172 Caesium 137 Cs-137 -30173 30173 Barium 133 Ba-133 -30174 30174 Barium 137 metastable Ba-137m -30175 30175 Barium 140 Ba-140 -30176 30176 Cerium 139 Ce-139 -30177 30177 Cerium 141 Ce-141 -30178 30178 Cerium 143 Ce-143 -30179 30179 Cerium 144 Ce-144 -30180 30180 Lanthanum 140 La-140 -30181 30181 Lanthanum 141 La-141 -30182 30182 Praseodymium 143 Pr-143 -30183 30183 Praseodymium 144 Pr-144 -30184 30184 Praseodymium 144 metastable Pr-144m -30185 30185 Samarium 145 Sm-145 -30186 30186 Samarium 147 Sm-147 -30187 30187 Samarium 151 Sm-151 -30188 30188 Neodymium 147 Nd-147 -30189 30189 Promethium 146 Pm-146 -30190 30190 Promethium 147 Pm-147 -30191 30191 Promethium 151 Pm-151 -30192 30192 Europium 152 Eu-152 -30193 30193 Europium 154 Eu-154 -30194 30194 Europium 155 Eu-155 -30195 30195 Gadolinium 153 Gd-153 -30196 30196 Terbium 160 Tb-160 -30197 30197 Holmium 166 metastable Ho-166m -30198 30198 Thulium 170 Tm-170 -30199 30199 Ytterbium 169 Yb-169 -30200 30200 Hafnium 175 Hf-175 -30201 30201 Hafnium 181 Hf-181 -30202 30202 Tantalum 179 Ta-179 -30203 30203 Tantalum 182 Ta-182 -30204 30204 Rhenium 184 Re-184 -30205 30205 Iridium 192 Ir-192 -30206 30206 Mercury 203 Hg-203 -30207 30207 Thallium 204 Tl-204 -30208 30208 Thallium 207 Tl-207 -30209 30209 Thallium 208 Tl-208 -30210 30210 Thallium 209 Tl-209 -30211 30211 Bismuth 205 Bi-205 -30212 30212 Bismuth 207 Bi-207 -30213 30213 Bismuth 210 Bi-210 -30214 30214 Bismuth 211 Bi-211 -30215 30215 Bismuth 212 Bi-212 -30216 30216 Bismuth 213 Bi-213 -30217 30217 Bismuth 214 Bi-214 -30218 30218 Polonium 208 Po-208 -30219 30219 Polonium 210 Po-210 -30220 30220 Polonium 212 Po-212 -30221 30221 Polonium 213 Po-213 -30222 30222 Polonium 214 Po-214 -30223 30223 Polonium 215 Po-215 -30224 30224 Polonium 216 Po-216 -30225 30225 Polonium 218 Po-218 -30226 30226 Lead 209 Pb-209 -30227 30227 Lead 210 Pb-210 -30228 30228 Lead 211 Pb-211 -30229 30229 Lead 212 Pb-212 -30230 30230 Lead 214 Pb-214 -30231 30231 Astatine 217 At-217 -30232 30232 Radon 219 Rn-219 -30233 30233 Radon 220 Rn-220 -30234 30234 Radon 222 Rn-222 -30235 30235 Francium 221 Fr-221 -30236 30236 Francium 223 Fr-223 -30237 30237 Radium 223 Ra-223 -30238 30238 Radium 224 Ra-224 -30239 30239 Radium 225 Ra-225 -30240 30240 Radium 226 Ra-226 -30241 30241 Radium 228 Ra-228 -30242 30242 Actinium 225 Ac-225 -30243 30243 Actinium 227 Ac-227 -30244 30244 Actinium 228 Ac-228 -30245 30245 Thorium 227 Th-227 -30246 30246 Thorium 228 Th-228 -30247 30247 Thorium 229 Th-229 -30248 30248 Thorium 230 Th-230 -30249 30249 Thorium 231 Th-231 -30250 30250 Thorium 232 Th-232 -30251 30251 Thorium 234 Th-234 -30252 30252 Protactinium 231 Pa-231 -30253 30253 Protactinium 233 Pa-233 -30254 30254 Protactinium 234 metastable Pa-234m -30255 30255 Uranium 232 U-232 -30256 30256 Uranium 233 U-233 -30257 30257 Uranium 234 U-234 -30258 30258 Uranium 235 U-235 -30259 30259 Uranium 236 U-236 -30260 30260 Uranium 237 U-237 -30261 30261 Uranium 238 U-238 -30262 30262 Plutonium 236 Pu-236 -30263 30263 Plutonium 238 Pu-238 -30264 30264 Plutonium 239 Pu-239 -30265 30265 Plutonium 240 Pu-240 -30266 30266 Plutonium 241 Pu-241 -30267 30267 Plutonium 242 Pu-242 -30268 30268 Plutonium 244 Pu-244 -30269 30269 Neptunium 237 Np-237 -30270 30270 Neptunium 238 Np-238 -30271 30271 Neptunium 239 Np-239 -30272 30272 Americium 241 Am-241 -30273 30273 Americium 242 Am-242 -30274 30274 Americium 242 metastable Am-242m -30275 30275 Americium 243 Am-243 -30276 30276 Curium 242 Cm-242 -30277 30277 Curium 243 Cm-243 -30278 30278 Curium 244 Cm-244 -30279 30279 Curium 245 Cm-245 -30280 30280 Curium 246 Cm-246 -30281 30281 Curium 247 Cm-247 -30282 30282 Curium 248 Cm-248 -30283 30283 Curium 243/244 Cm-243244 -30284 30284 Plutonium 238/Americium 241 Pu-238Am-241 -30285 30285 Plutonium 239/240 Pu-239240 -30286 30286 Berkelium 249 Bk-249 -30287 30287 Californium 249 Cf-249 -30288 30288 Californium 250 Cf-250 -30289 30289 Californium 252 Cf-252 -30290 30290 Sum aerosol particulates SumAer -30291 30291 Sum Iodine SumIod -30292 30292 Sum noble gas SumNG -30293 30293 Activation gas ActGas -30294 30294 Cs-137 Equivalent EquCs137 -#30295-59999 Reserved -60000 60000 HOx radical (OH+HO2) -60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2) -60002 60002 Passive Ozone -60003 60003 NOx expressed as nitrogen NOx -60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy -60005 60005 Total inorganic chlorine Clx -60006 60006 Total inorganic bromine Brx -60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx -60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx -60009 60009 Lumped alkanes -60010 60010 Lumped alkenes -60011 60011 Lumped aromatic compounds -60012 60012 Lumped terpenes -60013 60013 Non-methane volatile organic compounds expressed as carbon -60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon -60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon -60016 60016 Lumped oxygenated hydrocarbons -#60017-61999 Reserved -62000 62000 Total aerosol -62001 62001 Dust dry -62002 62002 Water in ambient -62003 62003 Ammonium dry -62004 62004 Nitrate dry -62005 62005 Nitric acid trihydrate -62006 62006 Sulphate dry -62007 62007 Mercury dry -62008 62008 Sea salt dry -62009 62009 Black carbon dry -62010 62010 Particulate organic matter dry -62011 62011 Primary particulate organic matter dry -62012 62012 Secondary particulate organic matter dry -62013 62013 Black carbon hydrophilic dry -62014 62014 Black carbon hydrophobic dry -62015 62015 Particulate organic matter hydrophilic dry -62016 62016 Particulate organic matter hydrophobic dry -62017 62017 Nitrate hydrophilic dry -62018 62018 Nitrate hydrophobic dry -#62019-65534 Reserved +# (See Common Code table C-14) 65535 65535 Missing diff --git a/definitions/grib2/tables/10/4.233.table b/definitions/grib2/tables/10/4.233.table index 761a8d1e5..d63f673bb 100644 --- a/definitions/grib2/tables/10/4.233.table +++ b/definitions/grib2/tables/10/4.233.table @@ -1,415 +1,3 @@ # Code table 4.233 - Aerosol type -0 0 Ozone -1 1 Water vapour -2 2 Methane -3 3 Carbon dioxide -4 4 Carbon monoxide -5 5 Nitrogen dioxide -6 6 Nitrous oxide -7 7 Formaldehyde -8 8 Sulphur dioxide -9 9 Ammonia -10 10 Ammonium -11 11 Nitrogen monoxide -12 12 Atomic oxygen -13 13 Nitrate radical -14 14 Hydroperoxyl radical -15 15 Dinitrogen pentoxide -16 16 Nitrous acid -17 17 Nitric acid -18 18 Peroxynitric acid -19 19 Hydrogen peroxide -20 20 Molecular hydrogen -21 21 Atomic nitrogen -22 22 Sulphate -23 23 Radon -24 24 Elemental mercury -25 25 Divalent mercury -26 26 Atomic chlorine -27 27 Chlorine monoxide -28 28 Dichlorine peroxide -29 29 Hypochlorous acid -30 30 Chlorine nitrate -31 31 Chlorine dioxide -32 32 Atomic bromine -33 33 Bromine monoxide -34 34 Bromine chloride -35 35 Hydrogen bromide -36 36 Hypobromous acid -37 37 Bromine nitrate -#38-9999 Reserved -10000 10000 Hydroxyl radical -10001 10001 Methyl peroxy radical -10002 10002 Methyl hydroperoxide -10004 10004 Methanol -10005 10005 Formic acid -10006 10006 Hydrogen cyanide -10007 10007 Aceto nitrile -10008 10008 Ethane -10009 10009 Ethene (= Ethylene) -10010 10010 Ethyne (= Acetylene) -10011 10011 Ethanol -10012 10012 Acetic acid -10013 10013 Peroxyacetyl nitrate -10014 10014 Propane -10015 10015 Propene -10016 10016 Butanes -10017 10017 Isoprene -10018 10018 Alpha pinene -10019 10019 Beta pinene -10020 10020 Limonene -10021 10021 Benzene -10022 10022 Toluene -10023 10023 Xylene -#10024-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides...) -10500 10500 Dimethyl sulphide -#10501-20000 Reserved -20001 20001 Hydrogen chloride -20002 20002 CFC-11 -20003 20003 CFC-12 -20004 20004 CFC-113 -20005 20005 CFC-113a -20006 20006 CFC-114 -20007 20007 CFC-115 -20008 20008 HCFC-22 -20009 20009 HCFC-141b -20010 20010 HCFC-142b -20011 20011 Halon-1202 -20012 20012 Halon-1211 -20013 20013 Halon-1301 -20014 20014 Halon-2402 -20015 20015 Methyl chloride (HCC-40) -20016 20016 Carbon tetrachloride (HCC-10) -20017 20017 HCC-140a -20018 20018 Methyl bromide (HBC-40B1) -20019 20019 Hexachlorocyclohexane (HCH) -20020 20020 Alpha hexachlorocyclohexane -20021 20021 Hexachlorobiphenyl (PCB-153) -#20022-29999 Reserved -30000 30000 Radioactive pollutant (tracer, defined by originating centre) -#30001-30009 Reserved -30010 30010 Hydrogen H-3 -30011 30011 Hydrogen organic bounded H-3o -30012 30012 Hydrogen inorganic H-3a -30013 30013 Beryllium 7 Be-7 -30014 30014 Beryllium 10 Be-10 -30015 30015 Carbon 14 C-14 -30016 30016 Carbon 14 CO2 C-14CO2 -30017 30017 Carbon 14 other gases C-14og -30018 30018 Nitrogen 13 N-13 -30019 30019 Nitrogen 16 N-16 -30020 30020 Fluorine 18 F-18 -30021 30021 Sodium 22 Na-22 -30022 30022 Phosphate 32 P-32 -30023 30023 Phosphate 33 P-33 -30024 30024 Sulfur 35 S-35 -30025 30025 Chlorine 36 Cl-36 -30026 30026 Potassium 40 K-40 -30027 30027 Argon 41 Ar-41 -30028 30028 Calcium 41 Ca-41 -30029 30029 Calcium 45 Ca-45 -30030 30030 Titanium 44 -30031 30031 Scandium 46 Sc-46 -30032 30032 Vanadium 48 V-48 -30033 30033 Vanadium 49 V-49 -30034 30034 Chrome 51 Cr-51 -30035 30035 Manganese 52 Mn-52 -30036 30036 Manganese 54 Mn-54 -30037 30037 Iron 55 Fe-55 -30038 30038 Iron 59 Fe-59 -30039 30039 Cobalt 56 Co-56 -30040 30040 Cobalt 57 Co-57 -30041 30041 Cobalt 58 Co-58 -30042 30042 Cobalt 60 Co-60 -30043 30043 Nickel 59 Ni-59 -30044 30044 Nickel 63 Ni-63 -30045 30045 Zinc 65 Zn-65 -30046 30046 Gallium 67 Ga-67 -30047 30047 Gallium 68 Ga-68 -30048 30048 Germanium 68 Ge-68 -30049 30049 Germanium 69 Ge-69 -30050 30050 Arsenic 73 As-73 -30051 30051 Selenium 75 Se-75 -30052 30052 Selenium 79 Se-79 -30053 30053 Rubidium 81 Rb-81 -30054 30054 Rubidium 83 Rb-83 -30055 30055 Rubidium 84 Rb-84 -30056 30056 Rubidium 86 Rb-86 -30057 30057 Rubidium 87 Rb-87 -30058 30058 Rubidium 88 Rb-88 -30059 30059 Krypton 85 Kr-85 -30060 30060 Krypton 85 metastable Kr-85m -30061 30061 Krypton 87 Kr-87 -30062 30062 Krypton 88 Kr-88 -30063 30063 Krypton 89 Kr-89 -30064 30064 Strontium 85 Sr-85 -30065 30065 Strontium 89 Sr-89 -30066 30066 Strontium 89/90 Sr-8990 -30067 30067 Strontium 90 Sr-90 -30068 30068 Strontium 91 Sr-91 -30069 30069 Strontium 92 Sr-92 -30070 30070 Yttrium 87 Y-87 -30071 30071 Yttrium 88 Y-88 -30072 30072 Yttrium 90 Y-90 -30073 30073 Yttrium 91 Y-91 -30074 30074 Yttrium 91 metastable Y-91m -30075 30075 Yttrium 92 Y-92 -30076 30076 Yttrium 93 Y-93 -30077 30077 Zirconium 89 Zr-89 -30078 30078 Zirconium 93 Zr-93 -30079 30079 Zirconium 95 Zr-95 -30080 30080 Zirconium 97 Zr-97 -30081 30081 Niobium 93 metastable Nb-93m -30082 30082 Niobium 94 Nb-94 -30083 30083 Niobium 95 Nb-95 -30084 30084 Niobium 95 metastable Nb-95m -30085 30085 Niobium 97 Nb-97 -30086 30086 Niobium 97 metastable Nb-97m -30087 30087 Molybdenum 93 Mo-93 -30088 30088 Molybdenum 99 Mo-99 -30089 30089 Technetium 95 metastable Tc-95m -30090 30090 Technetium 96 Tc-96 -30091 30091 Technetium 99 Tc-99 -30092 30092 Technetium 99 metastable Tc-99m -30093 30093 Rhodium 99 Rh-99 -30094 30094 Rhodium 101 Rh-101 -30095 30095 Rhodium 102 metastable Rh-102m -30096 30096 Rhodium 103 metastable Rh-103m -30097 30097 Rhodium 105 Rh-105 -30098 30098 Rhodium 106 Rh-106 -30099 30099 Palladium 100 Pd-100 -30100 30100 Palladium 103 Pd-103 -30101 30101 Palladium 107 Pd-107 -30102 30102 Ruthenium 103 Ru-103 -30103 30103 Ruthenium 105 Ru-105 -30104 30104 Ruthenium 106 Ru-106 -30105 30105 Silver 108 metastable Ag-108m -30106 30106 Silver 110 metastable Ag-110m -30107 30107 Cadmium 109 Cd-109 -30108 30108 Cadmium 113 metastable Cd-113m -30109 30109 Cadmium 115 metastable Cd-115m -30110 30110 Indium 114 metastable In-114m -30111 30111 Tin 113 Sn-113 -30112 30112 Tin 119 metastable Sn-119m -30113 30113 Tin 121 metastable Sn-121m -30114 30114 Tin 122 Sn-122 -30115 30115 Tin 123 Sn-123 -30116 30116 Tin 126 Sn-126 -30117 30117 Antimony 124 Sb-124 -30118 30118 Antimony 125 Sb-125 -30119 30119 Antimony 126 Sb-126 -30120 30120 Antimony 127 Sb-127 -30121 30121 Antimony 129 Sb-129 -30122 30122 Tellurium 123 metastable Te-123m -30123 30123 Tellurium 125 metastable Te-125m -30124 30124 Tellurium 127 Te-127 -30125 30125 Tellurium 127 metastable Te-127m -30126 30126 Tellurium 129 Te-129 -30127 30127 Tellurium 129 metastable Te-129m -30128 30128 Tellurium 131 metastable Te-131m -30129 30129 Tellurium 132 Te-132 -30130 30130 Iodine 123 I-123 -30131 30131 Iodine 124 I-124 -30132 30132 Iodine 125 I-125 -30133 30133 Iodine 126 I-126 -30134 30134 Iodine 129 I-129 -30135 30135 Iodine 129 elementary gaseous I-129g -30136 30136 Iodine 129 organic bounded I-129o -30137 30137 Iodine 131 I-131 -30138 30138 Iodine 131 elementary gaseous I-131g -30139 30139 Iodine 131 organic bounded I-131o -30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go -30141 30141 Iodine 131 aerosol I-131a -30142 30142 Iodine 132 I-132 -30143 30143 Iodine 132 elementary gaseous I-132g -30144 30144 Iodine 132 organic bounded I-132o -30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go -30146 30146 Iodine 132 aerosol I-132a -30147 30147 Iodine 133 I-133 -30148 30148 Iodine 133 elementary gaseous I-133g -30149 30149 Iodine 133 organic bounded I-133o -30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go -30151 30151 Iodine 133 aerosol I-133a -30152 30152 Iodine 134 I-134 -30153 30153 Iodine 134 elementary gaseous I-134g -30154 30154 Iodine 134 organic bounded I-134o -30155 30155 Iodine 135 I-135 -30156 30156 Iodine 135 elementary gaseous I-135g -30157 30157 Iodine 135 organic bounded I-135o -30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go -30159 30159 Iodine 135 aerosol I-135a -30160 30160 Xenon 131 metastable Xe-131m -30161 30161 Xenon 133 Xe-133 -30162 30162 Xenon 133 metastable Xe-133m -30163 30163 Xenon 135 Xe-135 -30164 30164 Xenon 135 metastable Xe-135m -30165 30165 Xenon 137 Xe-137 -30166 30166 Xenon 138 Xe-138 -30167 30167 Xenon sum of all Xenon isotopes Xe-sum -30168 30168 Caesium 131 Cs-131 -30169 30169 Caesium 134 Cs-134 -30170 30170 Caesium 135 Cs-135 -30171 30171 Caesium 136 Cs-136 -30172 30172 Caesium 137 Cs-137 -30173 30173 Barium 133 Ba-133 -30174 30174 Barium 137 metastable Ba-137m -30175 30175 Barium 140 Ba-140 -30176 30176 Cerium 139 Ce-139 -30177 30177 Cerium 141 Ce-141 -30178 30178 Cerium 143 Ce-143 -30179 30179 Cerium 144 Ce-144 -30180 30180 Lanthanum 140 La-140 -30181 30181 Lanthanum 141 La-141 -30182 30182 Praseodymium 143 Pr-143 -30183 30183 Praseodymium 144 Pr-144 -30184 30184 Praseodymium 144 metastable Pr-144m -30185 30185 Samarium 145 Sm-145 -30186 30186 Samarium 147 Sm-147 -30187 30187 Samarium 151 Sm-151 -30188 30188 Neodymium 147 Nd-147 -30189 30189 Promethium 146 Pm-146 -30190 30190 Promethium 147 Pm-147 -30191 30191 Promethium 151 Pm-151 -30192 30192 Europium 152 Eu-152 -30193 30193 Europium 154 Eu-154 -30194 30194 Europium 155 Eu-155 -30195 30195 Gadolinium 153 Gd-153 -30196 30196 Terbium 160 Tb-160 -30197 30197 Holmium 166 metastable Ho-166m -30198 30198 Thulium 170 Tm-170 -30199 30199 Ytterbium 169 Yb-169 -30200 30200 Hafnium 175 Hf-175 -30201 30201 Hafnium 181 Hf-181 -30202 30202 Tantalum 179 Ta-179 -30203 30203 Tantalum 182 Ta-182 -30204 30204 Rhenium 184 Re-184 -30205 30205 Iridium 192 Ir-192 -30206 30206 Mercury 203 Hg-203 -30207 30207 Thallium 204 Tl-204 -30208 30208 Thallium 207 Tl-207 -30209 30209 Thallium 208 Tl-208 -30210 30210 Thallium 209 Tl-209 -30211 30211 Bismuth 205 Bi-205 -30212 30212 Bismuth 207 Bi-207 -30213 30213 Bismuth 210 Bi-210 -30214 30214 Bismuth 211 Bi-211 -30215 30215 Bismuth 212 Bi-212 -30216 30216 Bismuth 213 Bi-213 -30217 30217 Bismuth 214 Bi-214 -30218 30218 Polonium 208 Po-208 -30219 30219 Polonium 210 Po-210 -30220 30220 Polonium 212 Po-212 -30221 30221 Polonium 213 Po-213 -30222 30222 Polonium 214 Po-214 -30223 30223 Polonium 215 Po-215 -30224 30224 Polonium 216 Po-216 -30225 30225 Polonium 218 Po-218 -30226 30226 Lead 209 Pb-209 -30227 30227 Lead 210 Pb-210 -30228 30228 Lead 211 Pb-211 -30229 30229 Lead 212 Pb-212 -30230 30230 Lead 214 Pb-214 -30231 30231 Astatine 217 At-217 -30232 30232 Radon 219 Rn-219 -30233 30233 Radon 220 Rn-220 -30234 30234 Radon 222 Rn-222 -30235 30235 Francium 221 Fr-221 -30236 30236 Francium 223 Fr-223 -30237 30237 Radium 223 Ra-223 -30238 30238 Radium 224 Ra-224 -30239 30239 Radium 225 Ra-225 -30240 30240 Radium 226 Ra-226 -30241 30241 Radium 228 Ra-228 -30242 30242 Actinium 225 Ac-225 -30243 30243 Actinium 227 Ac-227 -30244 30244 Actinium 228 Ac-228 -30245 30245 Thorium 227 Th-227 -30246 30246 Thorium 228 Th-228 -30247 30247 Thorium 229 Th-229 -30248 30248 Thorium 230 Th-230 -30249 30249 Thorium 231 Th-231 -30250 30250 Thorium 232 Th-232 -30251 30251 Thorium 234 Th-234 -30252 30252 Protactinium 231 Pa-231 -30253 30253 Protactinium 233 Pa-233 -30254 30254 Protactinium 234 metastable Pa-234m -30255 30255 Uranium 232 U-232 -30256 30256 Uranium 233 U-233 -30257 30257 Uranium 234 U-234 -30258 30258 Uranium 235 U-235 -30259 30259 Uranium 236 U-236 -30260 30260 Uranium 237 U-237 -30261 30261 Uranium 238 U-238 -30262 30262 Plutonium 236 Pu-236 -30263 30263 Plutonium 238 Pu-238 -30264 30264 Plutonium 239 Pu-239 -30265 30265 Plutonium 240 Pu-240 -30266 30266 Plutonium 241 Pu-241 -30267 30267 Plutonium 242 Pu-242 -30268 30268 Plutonium 244 Pu-244 -30269 30269 Neptunium 237 Np-237 -30270 30270 Neptunium 238 Np-238 -30271 30271 Neptunium 239 Np-239 -30272 30272 Americium 241 Am-241 -30273 30273 Americium 242 Am-242 -30274 30274 Americium 242 metastable Am-242m -30275 30275 Americium 243 Am-243 -30276 30276 Curium 242 Cm-242 -30277 30277 Curium 243 Cm-243 -30278 30278 Curium 244 Cm-244 -30279 30279 Curium 245 Cm-245 -30280 30280 Curium 246 Cm-246 -30281 30281 Curium 247 Cm-247 -30282 30282 Curium 248 Cm-248 -30283 30283 Curium 243/244 Cm-243244 -30284 30284 Plutonium 238/Americium 241 Pu-238Am-241 -30285 30285 Plutonium 239/240 Pu-239240 -30286 30286 Berkelium 249 Bk-249 -30287 30287 Californium 249 Cf-249 -30288 30288 Californium 250 Cf-250 -30289 30289 Californium 252 Cf-252 -30290 30290 Sum aerosol particulates SumAer -30291 30291 Sum Iodine SumIod -30292 30292 Sum noble gas SumNG -30293 30293 Activation gas ActGas -30294 30294 Cs-137 Equivalent EquCs137 -#30295-59999 Reserved -60000 60000 HOx radical (OH+HO2) -60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2) -60002 60002 Passive Ozone -60003 60003 NOx expressed as nitrogen NOx -60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy -60005 60005 Total inorganic chlorine Clx -60006 60006 Total inorganic bromine Brx -60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx -60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx -60009 60009 Lumped alkanes -60010 60010 Lumped alkenes -60011 60011 Lumped aromatic compounds -60012 60012 Lumped terpenes -60013 60013 Non-methane volatile organic compounds expressed as carbon -60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon -60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon -60016 60016 Lumped oxygenated hydrocarbons -#60017-61999 Reserved -62000 62000 Total aerosol -62001 62001 Dust dry -62002 62002 Water in ambient -62003 62003 Ammonium dry -62004 62004 Nitrate dry -62005 62005 Nitric acid trihydrate -62006 62006 Sulphate dry -62007 62007 Mercury dry -62008 62008 Sea salt dry -62009 62009 Black carbon dry -62010 62010 Particulate organic matter dry -62011 62011 Primary particulate organic matter dry -62012 62012 Secondary particulate organic matter dry -62013 62013 Black carbon hydrophilic dry -62014 62014 Black carbon hydrophobic dry -62015 62015 Particulate organic matter hydrophilic dry -62016 62016 Particulate organic matter hydrophobic dry -62017 62017 Nitrate hydrophilic dry -62018 62018 Nitrate hydrophobic dry -#62019-65534 Reserved +# (See Common Code table C-14) 65535 65535 Missing diff --git a/definitions/grib2/tables/11/4.230.table b/definitions/grib2/tables/11/4.230.table index 5fe00dc73..5c39a79b9 100644 --- a/definitions/grib2/tables/11/4.230.table +++ b/definitions/grib2/tables/11/4.230.table @@ -1,415 +1,3 @@ # Code table 4.230 - Atmospheric chemical constituent type -0 0 Ozone -1 1 Water vapour -2 2 Methane -3 3 Carbon dioxide -4 4 Carbon monoxide -5 5 Nitrogen dioxide -6 6 Nitrous oxide -7 7 Formaldehyde -8 8 Sulphur dioxide -9 9 Ammonia -10 10 Ammonium -11 11 Nitrogen monoxide -12 12 Atomic oxygen -13 13 Nitrate radical -14 14 Hydroperoxyl radical -15 15 Dinitrogen pentoxide -16 16 Nitrous acid -17 17 Nitric acid -18 18 Peroxynitric acid -19 19 Hydrogen peroxide -20 20 Molecular hydrogen -21 21 Atomic nitrogen -22 22 Sulphate -23 23 Radon -24 24 Elemental mercury -25 25 Divalent mercury -26 26 Atomic chlorine -27 27 Chlorine monoxide -28 28 Dichlorine peroxide -29 29 Hypochlorous acid -30 30 Chlorine nitrate -31 31 Chlorine dioxide -32 32 Atomic bromine -33 33 Bromine monoxide -34 34 Bromine chloride -35 35 Hydrogen bromide -36 36 Hypobromous acid -37 37 Bromine nitrate -#38-9999 Reserved -10000 10000 Hydroxyl radical -10001 10001 Methyl peroxy radical -10002 10002 Methyl hydroperoxide -10004 10004 Methanol -10005 10005 Formic acid -10006 10006 Hydrogen cyanide -10007 10007 Aceto nitrile -10008 10008 Ethane -10009 10009 Ethene (= Ethylene) -10010 10010 Ethyne (= Acetylene) -10011 10011 Ethanol -10012 10012 Acetic acid -10013 10013 Peroxyacetyl nitrate -10014 10014 Propane -10015 10015 Propene -10016 10016 Butanes -10017 10017 Isoprene -10018 10018 Alpha pinene -10019 10019 Beta pinene -10020 10020 Limonene -10021 10021 Benzene -10022 10022 Toluene -10023 10023 Xylene -#10024-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides...) -10500 10500 Dimethyl sulphide -#10501-20000 Reserved -20001 20001 Hydrogen chloride -20002 20002 CFC-11 -20003 20003 CFC-12 -20004 20004 CFC-113 -20005 20005 CFC-113a -20006 20006 CFC-114 -20007 20007 CFC-115 -20008 20008 HCFC-22 -20009 20009 HCFC-141b -20010 20010 HCFC-142b -20011 20011 Halon-1202 -20012 20012 Halon-1211 -20013 20013 Halon-1301 -20014 20014 Halon-2402 -20015 20015 Methyl chloride (HCC-40) -20016 20016 Carbon tetrachloride (HCC-10) -20017 20017 HCC-140a -20018 20018 Methyl bromide (HBC-40B1) -20019 20019 Hexachlorocyclohexane (HCH) -20020 20020 Alpha hexachlorocyclohexane -20021 20021 Hexachlorobiphenyl (PCB-153) -#20022-29999 Reserved -30000 30000 Radioactive pollutant (tracer, defined by originating centre) -#30001-30009 Reserved -30010 30010 Hydrogen H-3 -30011 30011 Hydrogen organic bounded H-3o -30012 30012 Hydrogen inorganic H-3a -30013 30013 Beryllium 7 Be-7 -30014 30014 Beryllium 10 Be-10 -30015 30015 Carbon 14 C-14 -30016 30016 Carbon 14 CO2 C-14CO2 -30017 30017 Carbon 14 other gases C-14og -30018 30018 Nitrogen 13 N-13 -30019 30019 Nitrogen 16 N-16 -30020 30020 Fluorine 18 F-18 -30021 30021 Sodium 22 Na-22 -30022 30022 Phosphate 32 P-32 -30023 30023 Phosphate 33 P-33 -30024 30024 Sulfur 35 S-35 -30025 30025 Chlorine 36 Cl-36 -30026 30026 Potassium 40 K-40 -30027 30027 Argon 41 Ar-41 -30028 30028 Calcium 41 Ca-41 -30029 30029 Calcium 45 Ca-45 -30030 30030 Titanium 44 -30031 30031 Scandium 46 Sc-46 -30032 30032 Vanadium 48 V-48 -30033 30033 Vanadium 49 V-49 -30034 30034 Chrome 51 Cr-51 -30035 30035 Manganese 52 Mn-52 -30036 30036 Manganese 54 Mn-54 -30037 30037 Iron 55 Fe-55 -30038 30038 Iron 59 Fe-59 -30039 30039 Cobalt 56 Co-56 -30040 30040 Cobalt 57 Co-57 -30041 30041 Cobalt 58 Co-58 -30042 30042 Cobalt 60 Co-60 -30043 30043 Nickel 59 Ni-59 -30044 30044 Nickel 63 Ni-63 -30045 30045 Zinc 65 Zn-65 -30046 30046 Gallium 67 Ga-67 -30047 30047 Gallium 68 Ga-68 -30048 30048 Germanium 68 Ge-68 -30049 30049 Germanium 69 Ge-69 -30050 30050 Arsenic 73 As-73 -30051 30051 Selenium 75 Se-75 -30052 30052 Selenium 79 Se-79 -30053 30053 Rubidium 81 Rb-81 -30054 30054 Rubidium 83 Rb-83 -30055 30055 Rubidium 84 Rb-84 -30056 30056 Rubidium 86 Rb-86 -30057 30057 Rubidium 87 Rb-87 -30058 30058 Rubidium 88 Rb-88 -30059 30059 Krypton 85 Kr-85 -30060 30060 Krypton 85 metastable Kr-85m -30061 30061 Krypton 87 Kr-87 -30062 30062 Krypton 88 Kr-88 -30063 30063 Krypton 89 Kr-89 -30064 30064 Strontium 85 Sr-85 -30065 30065 Strontium 89 Sr-89 -30066 30066 Strontium 89/90 Sr-8990 -30067 30067 Strontium 90 Sr-90 -30068 30068 Strontium 91 Sr-91 -30069 30069 Strontium 92 Sr-92 -30070 30070 Yttrium 87 Y-87 -30071 30071 Yttrium 88 Y-88 -30072 30072 Yttrium 90 Y-90 -30073 30073 Yttrium 91 Y-91 -30074 30074 Yttrium 91 metastable Y-91m -30075 30075 Yttrium 92 Y-92 -30076 30076 Yttrium 93 Y-93 -30077 30077 Zirconium 89 Zr-89 -30078 30078 Zirconium 93 Zr-93 -30079 30079 Zirconium 95 Zr-95 -30080 30080 Zirconium 97 Zr-97 -30081 30081 Niobium 93 metastable Nb-93m -30082 30082 Niobium 94 Nb-94 -30083 30083 Niobium 95 Nb-95 -30084 30084 Niobium 95 metastable Nb-95m -30085 30085 Niobium 97 Nb-97 -30086 30086 Niobium 97 metastable Nb-97m -30087 30087 Molybdenum 93 Mo-93 -30088 30088 Molybdenum 99 Mo-99 -30089 30089 Technetium 95 metastable Tc-95m -30090 30090 Technetium 96 Tc-96 -30091 30091 Technetium 99 Tc-99 -30092 30092 Technetium 99 metastable Tc-99m -30093 30093 Rhodium 99 Rh-99 -30094 30094 Rhodium 101 Rh-101 -30095 30095 Rhodium 102 metastable Rh-102m -30096 30096 Rhodium 103 metastable Rh-103m -30097 30097 Rhodium 105 Rh-105 -30098 30098 Rhodium 106 Rh-106 -30099 30099 Palladium 100 Pd-100 -30100 30100 Palladium 103 Pd-103 -30101 30101 Palladium 107 Pd-107 -30102 30102 Ruthenium 103 Ru-103 -30103 30103 Ruthenium 105 Ru-105 -30104 30104 Ruthenium 106 Ru-106 -30105 30105 Silver 108 metastable Ag-108m -30106 30106 Silver 110 metastable Ag-110m -30107 30107 Cadmium 109 Cd-109 -30108 30108 Cadmium 113 metastable Cd-113m -30109 30109 Cadmium 115 metastable Cd-115m -30110 30110 Indium 114 metastable In-114m -30111 30111 Tin 113 Sn-113 -30112 30112 Tin 119 metastable Sn-119m -30113 30113 Tin 121 metastable Sn-121m -30114 30114 Tin 122 Sn-122 -30115 30115 Tin 123 Sn-123 -30116 30116 Tin 126 Sn-126 -30117 30117 Antimony 124 Sb-124 -30118 30118 Antimony 125 Sb-125 -30119 30119 Antimony 126 Sb-126 -30120 30120 Antimony 127 Sb-127 -30121 30121 Antimony 129 Sb-129 -30122 30122 Tellurium 123 metastable Te-123m -30123 30123 Tellurium 125 metastable Te-125m -30124 30124 Tellurium 127 Te-127 -30125 30125 Tellurium 127 metastable Te-127m -30126 30126 Tellurium 129 Te-129 -30127 30127 Tellurium 129 metastable Te-129m -30128 30128 Tellurium 131 metastable Te-131m -30129 30129 Tellurium 132 Te-132 -30130 30130 Iodine 123 I-123 -30131 30131 Iodine 124 I-124 -30132 30132 Iodine 125 I-125 -30133 30133 Iodine 126 I-126 -30134 30134 Iodine 129 I-129 -30135 30135 Iodine 129 elementary gaseous I-129g -30136 30136 Iodine 129 organic bounded I-129o -30137 30137 Iodine 131 I-131 -30138 30138 Iodine 131 elementary gaseous I-131g -30139 30139 Iodine 131 organic bounded I-131o -30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go -30141 30141 Iodine 131 aerosol I-131a -30142 30142 Iodine 132 I-132 -30143 30143 Iodine 132 elementary gaseous I-132g -30144 30144 Iodine 132 organic bounded I-132o -30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go -30146 30146 Iodine 132 aerosol I-132a -30147 30147 Iodine 133 I-133 -30148 30148 Iodine 133 elementary gaseous I-133g -30149 30149 Iodine 133 organic bounded I-133o -30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go -30151 30151 Iodine 133 aerosol I-133a -30152 30152 Iodine 134 I-134 -30153 30153 Iodine 134 elementary gaseous I-134g -30154 30154 Iodine 134 organic bounded I-134o -30155 30155 Iodine 135 I-135 -30156 30156 Iodine 135 elementary gaseous I-135g -30157 30157 Iodine 135 organic bounded I-135o -30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go -30159 30159 Iodine 135 aerosol I-135a -30160 30160 Xenon 131 metastable Xe-131m -30161 30161 Xenon 133 Xe-133 -30162 30162 Xenon 133 metastable Xe-133m -30163 30163 Xenon 135 Xe-135 -30164 30164 Xenon 135 metastable Xe-135m -30165 30165 Xenon 137 Xe-137 -30166 30166 Xenon 138 Xe-138 -30167 30167 Xenon sum of all Xenon isotopes Xe-sum -30168 30168 Caesium 131 Cs-131 -30169 30169 Caesium 134 Cs-134 -30170 30170 Caesium 135 Cs-135 -30171 30171 Caesium 136 Cs-136 -30172 30172 Caesium 137 Cs-137 -30173 30173 Barium 133 Ba-133 -30174 30174 Barium 137 metastable Ba-137m -30175 30175 Barium 140 Ba-140 -30176 30176 Cerium 139 Ce-139 -30177 30177 Cerium 141 Ce-141 -30178 30178 Cerium 143 Ce-143 -30179 30179 Cerium 144 Ce-144 -30180 30180 Lanthanum 140 La-140 -30181 30181 Lanthanum 141 La-141 -30182 30182 Praseodymium 143 Pr-143 -30183 30183 Praseodymium 144 Pr-144 -30184 30184 Praseodymium 144 metastable Pr-144m -30185 30185 Samarium 145 Sm-145 -30186 30186 Samarium 147 Sm-147 -30187 30187 Samarium 151 Sm-151 -30188 30188 Neodymium 147 Nd-147 -30189 30189 Promethium 146 Pm-146 -30190 30190 Promethium 147 Pm-147 -30191 30191 Promethium 151 Pm-151 -30192 30192 Europium 152 Eu-152 -30193 30193 Europium 154 Eu-154 -30194 30194 Europium 155 Eu-155 -30195 30195 Gadolinium 153 Gd-153 -30196 30196 Terbium 160 Tb-160 -30197 30197 Holmium 166 metastable Ho-166m -30198 30198 Thulium 170 Tm-170 -30199 30199 Ytterbium 169 Yb-169 -30200 30200 Hafnium 175 Hf-175 -30201 30201 Hafnium 181 Hf-181 -30202 30202 Tantalum 179 Ta-179 -30203 30203 Tantalum 182 Ta-182 -30204 30204 Rhenium 184 Re-184 -30205 30205 Iridium 192 Ir-192 -30206 30206 Mercury 203 Hg-203 -30207 30207 Thallium 204 Tl-204 -30208 30208 Thallium 207 Tl-207 -30209 30209 Thallium 208 Tl-208 -30210 30210 Thallium 209 Tl-209 -30211 30211 Bismuth 205 Bi-205 -30212 30212 Bismuth 207 Bi-207 -30213 30213 Bismuth 210 Bi-210 -30214 30214 Bismuth 211 Bi-211 -30215 30215 Bismuth 212 Bi-212 -30216 30216 Bismuth 213 Bi-213 -30217 30217 Bismuth 214 Bi-214 -30218 30218 Polonium 208 Po-208 -30219 30219 Polonium 210 Po-210 -30220 30220 Polonium 212 Po-212 -30221 30221 Polonium 213 Po-213 -30222 30222 Polonium 214 Po-214 -30223 30223 Polonium 215 Po-215 -30224 30224 Polonium 216 Po-216 -30225 30225 Polonium 218 Po-218 -30226 30226 Lead 209 Pb-209 -30227 30227 Lead 210 Pb-210 -30228 30228 Lead 211 Pb-211 -30229 30229 Lead 212 Pb-212 -30230 30230 Lead 214 Pb-214 -30231 30231 Astatine 217 At-217 -30232 30232 Radon 219 Rn-219 -30233 30233 Radon 220 Rn-220 -30234 30234 Radon 222 Rn-222 -30235 30235 Francium 221 Fr-221 -30236 30236 Francium 223 Fr-223 -30237 30237 Radium 223 Ra-223 -30238 30238 Radium 224 Ra-224 -30239 30239 Radium 225 Ra-225 -30240 30240 Radium 226 Ra-226 -30241 30241 Radium 228 Ra-228 -30242 30242 Actinium 225 Ac-225 -30243 30243 Actinium 227 Ac-227 -30244 30244 Actinium 228 Ac-228 -30245 30245 Thorium 227 Th-227 -30246 30246 Thorium 228 Th-228 -30247 30247 Thorium 229 Th-229 -30248 30248 Thorium 230 Th-230 -30249 30249 Thorium 231 Th-231 -30250 30250 Thorium 232 Th-232 -30251 30251 Thorium 234 Th-234 -30252 30252 Protactinium 231 Pa-231 -30253 30253 Protactinium 233 Pa-233 -30254 30254 Protactinium 234 metastable Pa-234m -30255 30255 Uranium 232 U-232 -30256 30256 Uranium 233 U-233 -30257 30257 Uranium 234 U-234 -30258 30258 Uranium 235 U-235 -30259 30259 Uranium 236 U-236 -30260 30260 Uranium 237 U-237 -30261 30261 Uranium 238 U-238 -30262 30262 Plutonium 236 Pu-236 -30263 30263 Plutonium 238 Pu-238 -30264 30264 Plutonium 239 Pu-239 -30265 30265 Plutonium 240 Pu-240 -30266 30266 Plutonium 241 Pu-241 -30267 30267 Plutonium 242 Pu-242 -30268 30268 Plutonium 244 Pu-244 -30269 30269 Neptunium 237 Np-237 -30270 30270 Neptunium 238 Np-238 -30271 30271 Neptunium 239 Np-239 -30272 30272 Americium 241 Am-241 -30273 30273 Americium 242 Am-242 -30274 30274 Americium 242 metastable Am-242m -30275 30275 Americium 243 Am-243 -30276 30276 Curium 242 Cm-242 -30277 30277 Curium 243 Cm-243 -30278 30278 Curium 244 Cm-244 -30279 30279 Curium 245 Cm-245 -30280 30280 Curium 246 Cm-246 -30281 30281 Curium 247 Cm-247 -30282 30282 Curium 248 Cm-248 -30283 30283 Curium 243/244 Cm-243244 -30284 30284 Plutonium 238/Americium 241 Pu-238Am-241 -30285 30285 Plutonium 239/240 Pu-239240 -30286 30286 Berkelium 249 Bk-249 -30287 30287 Californium 249 Cf-249 -30288 30288 Californium 250 Cf-250 -30289 30289 Californium 252 Cf-252 -30290 30290 Sum aerosol particulates SumAer -30291 30291 Sum Iodine SumIod -30292 30292 Sum noble gas SumNG -30293 30293 Activation gas ActGas -30294 30294 Cs-137 Equivalent EquCs137 -#30295-59999 Reserved -60000 60000 HOx radical (OH+HO2) -60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2) -60002 60002 Passive Ozone -60003 60003 NOx expressed as nitrogen NOx -60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy -60005 60005 Total inorganic chlorine Clx -60006 60006 Total inorganic bromine Brx -60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx -60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx -60009 60009 Lumped alkanes -60010 60010 Lumped alkenes -60011 60011 Lumped aromatic compounds -60012 60012 Lumped terpenes -60013 60013 Non-methane volatile organic compounds expressed as carbon -60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon -60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon -60016 60016 Lumped oxygenated hydrocarbons -#60017-61999 Reserved -62000 62000 Total aerosol -62001 62001 Dust dry -62002 62002 Water in ambient -62003 62003 Ammonium dry -62004 62004 Nitrate dry -62005 62005 Nitric acid trihydrate -62006 62006 Sulphate dry -62007 62007 Mercury dry -62008 62008 Sea salt dry -62009 62009 Black carbon dry -62010 62010 Particulate organic matter dry -62011 62011 Primary particulate organic matter dry -62012 62012 Secondary particulate organic matter dry -62013 62013 Black carbon hydrophilic dry -62014 62014 Black carbon hydrophobic dry -62015 62015 Particulate organic matter hydrophilic dry -62016 62016 Particulate organic matter hydrophobic dry -62017 62017 Nitrate hydrophilic dry -62018 62018 Nitrate hydrophobic dry -#62019-65534 Reserved +# (See Common Code table C-14) 65535 65535 Missing diff --git a/definitions/grib2/tables/11/4.233.table b/definitions/grib2/tables/11/4.233.table index 761a8d1e5..d63f673bb 100644 --- a/definitions/grib2/tables/11/4.233.table +++ b/definitions/grib2/tables/11/4.233.table @@ -1,415 +1,3 @@ # Code table 4.233 - Aerosol type -0 0 Ozone -1 1 Water vapour -2 2 Methane -3 3 Carbon dioxide -4 4 Carbon monoxide -5 5 Nitrogen dioxide -6 6 Nitrous oxide -7 7 Formaldehyde -8 8 Sulphur dioxide -9 9 Ammonia -10 10 Ammonium -11 11 Nitrogen monoxide -12 12 Atomic oxygen -13 13 Nitrate radical -14 14 Hydroperoxyl radical -15 15 Dinitrogen pentoxide -16 16 Nitrous acid -17 17 Nitric acid -18 18 Peroxynitric acid -19 19 Hydrogen peroxide -20 20 Molecular hydrogen -21 21 Atomic nitrogen -22 22 Sulphate -23 23 Radon -24 24 Elemental mercury -25 25 Divalent mercury -26 26 Atomic chlorine -27 27 Chlorine monoxide -28 28 Dichlorine peroxide -29 29 Hypochlorous acid -30 30 Chlorine nitrate -31 31 Chlorine dioxide -32 32 Atomic bromine -33 33 Bromine monoxide -34 34 Bromine chloride -35 35 Hydrogen bromide -36 36 Hypobromous acid -37 37 Bromine nitrate -#38-9999 Reserved -10000 10000 Hydroxyl radical -10001 10001 Methyl peroxy radical -10002 10002 Methyl hydroperoxide -10004 10004 Methanol -10005 10005 Formic acid -10006 10006 Hydrogen cyanide -10007 10007 Aceto nitrile -10008 10008 Ethane -10009 10009 Ethene (= Ethylene) -10010 10010 Ethyne (= Acetylene) -10011 10011 Ethanol -10012 10012 Acetic acid -10013 10013 Peroxyacetyl nitrate -10014 10014 Propane -10015 10015 Propene -10016 10016 Butanes -10017 10017 Isoprene -10018 10018 Alpha pinene -10019 10019 Beta pinene -10020 10020 Limonene -10021 10021 Benzene -10022 10022 Toluene -10023 10023 Xylene -#10024-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides...) -10500 10500 Dimethyl sulphide -#10501-20000 Reserved -20001 20001 Hydrogen chloride -20002 20002 CFC-11 -20003 20003 CFC-12 -20004 20004 CFC-113 -20005 20005 CFC-113a -20006 20006 CFC-114 -20007 20007 CFC-115 -20008 20008 HCFC-22 -20009 20009 HCFC-141b -20010 20010 HCFC-142b -20011 20011 Halon-1202 -20012 20012 Halon-1211 -20013 20013 Halon-1301 -20014 20014 Halon-2402 -20015 20015 Methyl chloride (HCC-40) -20016 20016 Carbon tetrachloride (HCC-10) -20017 20017 HCC-140a -20018 20018 Methyl bromide (HBC-40B1) -20019 20019 Hexachlorocyclohexane (HCH) -20020 20020 Alpha hexachlorocyclohexane -20021 20021 Hexachlorobiphenyl (PCB-153) -#20022-29999 Reserved -30000 30000 Radioactive pollutant (tracer, defined by originating centre) -#30001-30009 Reserved -30010 30010 Hydrogen H-3 -30011 30011 Hydrogen organic bounded H-3o -30012 30012 Hydrogen inorganic H-3a -30013 30013 Beryllium 7 Be-7 -30014 30014 Beryllium 10 Be-10 -30015 30015 Carbon 14 C-14 -30016 30016 Carbon 14 CO2 C-14CO2 -30017 30017 Carbon 14 other gases C-14og -30018 30018 Nitrogen 13 N-13 -30019 30019 Nitrogen 16 N-16 -30020 30020 Fluorine 18 F-18 -30021 30021 Sodium 22 Na-22 -30022 30022 Phosphate 32 P-32 -30023 30023 Phosphate 33 P-33 -30024 30024 Sulfur 35 S-35 -30025 30025 Chlorine 36 Cl-36 -30026 30026 Potassium 40 K-40 -30027 30027 Argon 41 Ar-41 -30028 30028 Calcium 41 Ca-41 -30029 30029 Calcium 45 Ca-45 -30030 30030 Titanium 44 -30031 30031 Scandium 46 Sc-46 -30032 30032 Vanadium 48 V-48 -30033 30033 Vanadium 49 V-49 -30034 30034 Chrome 51 Cr-51 -30035 30035 Manganese 52 Mn-52 -30036 30036 Manganese 54 Mn-54 -30037 30037 Iron 55 Fe-55 -30038 30038 Iron 59 Fe-59 -30039 30039 Cobalt 56 Co-56 -30040 30040 Cobalt 57 Co-57 -30041 30041 Cobalt 58 Co-58 -30042 30042 Cobalt 60 Co-60 -30043 30043 Nickel 59 Ni-59 -30044 30044 Nickel 63 Ni-63 -30045 30045 Zinc 65 Zn-65 -30046 30046 Gallium 67 Ga-67 -30047 30047 Gallium 68 Ga-68 -30048 30048 Germanium 68 Ge-68 -30049 30049 Germanium 69 Ge-69 -30050 30050 Arsenic 73 As-73 -30051 30051 Selenium 75 Se-75 -30052 30052 Selenium 79 Se-79 -30053 30053 Rubidium 81 Rb-81 -30054 30054 Rubidium 83 Rb-83 -30055 30055 Rubidium 84 Rb-84 -30056 30056 Rubidium 86 Rb-86 -30057 30057 Rubidium 87 Rb-87 -30058 30058 Rubidium 88 Rb-88 -30059 30059 Krypton 85 Kr-85 -30060 30060 Krypton 85 metastable Kr-85m -30061 30061 Krypton 87 Kr-87 -30062 30062 Krypton 88 Kr-88 -30063 30063 Krypton 89 Kr-89 -30064 30064 Strontium 85 Sr-85 -30065 30065 Strontium 89 Sr-89 -30066 30066 Strontium 89/90 Sr-8990 -30067 30067 Strontium 90 Sr-90 -30068 30068 Strontium 91 Sr-91 -30069 30069 Strontium 92 Sr-92 -30070 30070 Yttrium 87 Y-87 -30071 30071 Yttrium 88 Y-88 -30072 30072 Yttrium 90 Y-90 -30073 30073 Yttrium 91 Y-91 -30074 30074 Yttrium 91 metastable Y-91m -30075 30075 Yttrium 92 Y-92 -30076 30076 Yttrium 93 Y-93 -30077 30077 Zirconium 89 Zr-89 -30078 30078 Zirconium 93 Zr-93 -30079 30079 Zirconium 95 Zr-95 -30080 30080 Zirconium 97 Zr-97 -30081 30081 Niobium 93 metastable Nb-93m -30082 30082 Niobium 94 Nb-94 -30083 30083 Niobium 95 Nb-95 -30084 30084 Niobium 95 metastable Nb-95m -30085 30085 Niobium 97 Nb-97 -30086 30086 Niobium 97 metastable Nb-97m -30087 30087 Molybdenum 93 Mo-93 -30088 30088 Molybdenum 99 Mo-99 -30089 30089 Technetium 95 metastable Tc-95m -30090 30090 Technetium 96 Tc-96 -30091 30091 Technetium 99 Tc-99 -30092 30092 Technetium 99 metastable Tc-99m -30093 30093 Rhodium 99 Rh-99 -30094 30094 Rhodium 101 Rh-101 -30095 30095 Rhodium 102 metastable Rh-102m -30096 30096 Rhodium 103 metastable Rh-103m -30097 30097 Rhodium 105 Rh-105 -30098 30098 Rhodium 106 Rh-106 -30099 30099 Palladium 100 Pd-100 -30100 30100 Palladium 103 Pd-103 -30101 30101 Palladium 107 Pd-107 -30102 30102 Ruthenium 103 Ru-103 -30103 30103 Ruthenium 105 Ru-105 -30104 30104 Ruthenium 106 Ru-106 -30105 30105 Silver 108 metastable Ag-108m -30106 30106 Silver 110 metastable Ag-110m -30107 30107 Cadmium 109 Cd-109 -30108 30108 Cadmium 113 metastable Cd-113m -30109 30109 Cadmium 115 metastable Cd-115m -30110 30110 Indium 114 metastable In-114m -30111 30111 Tin 113 Sn-113 -30112 30112 Tin 119 metastable Sn-119m -30113 30113 Tin 121 metastable Sn-121m -30114 30114 Tin 122 Sn-122 -30115 30115 Tin 123 Sn-123 -30116 30116 Tin 126 Sn-126 -30117 30117 Antimony 124 Sb-124 -30118 30118 Antimony 125 Sb-125 -30119 30119 Antimony 126 Sb-126 -30120 30120 Antimony 127 Sb-127 -30121 30121 Antimony 129 Sb-129 -30122 30122 Tellurium 123 metastable Te-123m -30123 30123 Tellurium 125 metastable Te-125m -30124 30124 Tellurium 127 Te-127 -30125 30125 Tellurium 127 metastable Te-127m -30126 30126 Tellurium 129 Te-129 -30127 30127 Tellurium 129 metastable Te-129m -30128 30128 Tellurium 131 metastable Te-131m -30129 30129 Tellurium 132 Te-132 -30130 30130 Iodine 123 I-123 -30131 30131 Iodine 124 I-124 -30132 30132 Iodine 125 I-125 -30133 30133 Iodine 126 I-126 -30134 30134 Iodine 129 I-129 -30135 30135 Iodine 129 elementary gaseous I-129g -30136 30136 Iodine 129 organic bounded I-129o -30137 30137 Iodine 131 I-131 -30138 30138 Iodine 131 elementary gaseous I-131g -30139 30139 Iodine 131 organic bounded I-131o -30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go -30141 30141 Iodine 131 aerosol I-131a -30142 30142 Iodine 132 I-132 -30143 30143 Iodine 132 elementary gaseous I-132g -30144 30144 Iodine 132 organic bounded I-132o -30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go -30146 30146 Iodine 132 aerosol I-132a -30147 30147 Iodine 133 I-133 -30148 30148 Iodine 133 elementary gaseous I-133g -30149 30149 Iodine 133 organic bounded I-133o -30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go -30151 30151 Iodine 133 aerosol I-133a -30152 30152 Iodine 134 I-134 -30153 30153 Iodine 134 elementary gaseous I-134g -30154 30154 Iodine 134 organic bounded I-134o -30155 30155 Iodine 135 I-135 -30156 30156 Iodine 135 elementary gaseous I-135g -30157 30157 Iodine 135 organic bounded I-135o -30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go -30159 30159 Iodine 135 aerosol I-135a -30160 30160 Xenon 131 metastable Xe-131m -30161 30161 Xenon 133 Xe-133 -30162 30162 Xenon 133 metastable Xe-133m -30163 30163 Xenon 135 Xe-135 -30164 30164 Xenon 135 metastable Xe-135m -30165 30165 Xenon 137 Xe-137 -30166 30166 Xenon 138 Xe-138 -30167 30167 Xenon sum of all Xenon isotopes Xe-sum -30168 30168 Caesium 131 Cs-131 -30169 30169 Caesium 134 Cs-134 -30170 30170 Caesium 135 Cs-135 -30171 30171 Caesium 136 Cs-136 -30172 30172 Caesium 137 Cs-137 -30173 30173 Barium 133 Ba-133 -30174 30174 Barium 137 metastable Ba-137m -30175 30175 Barium 140 Ba-140 -30176 30176 Cerium 139 Ce-139 -30177 30177 Cerium 141 Ce-141 -30178 30178 Cerium 143 Ce-143 -30179 30179 Cerium 144 Ce-144 -30180 30180 Lanthanum 140 La-140 -30181 30181 Lanthanum 141 La-141 -30182 30182 Praseodymium 143 Pr-143 -30183 30183 Praseodymium 144 Pr-144 -30184 30184 Praseodymium 144 metastable Pr-144m -30185 30185 Samarium 145 Sm-145 -30186 30186 Samarium 147 Sm-147 -30187 30187 Samarium 151 Sm-151 -30188 30188 Neodymium 147 Nd-147 -30189 30189 Promethium 146 Pm-146 -30190 30190 Promethium 147 Pm-147 -30191 30191 Promethium 151 Pm-151 -30192 30192 Europium 152 Eu-152 -30193 30193 Europium 154 Eu-154 -30194 30194 Europium 155 Eu-155 -30195 30195 Gadolinium 153 Gd-153 -30196 30196 Terbium 160 Tb-160 -30197 30197 Holmium 166 metastable Ho-166m -30198 30198 Thulium 170 Tm-170 -30199 30199 Ytterbium 169 Yb-169 -30200 30200 Hafnium 175 Hf-175 -30201 30201 Hafnium 181 Hf-181 -30202 30202 Tantalum 179 Ta-179 -30203 30203 Tantalum 182 Ta-182 -30204 30204 Rhenium 184 Re-184 -30205 30205 Iridium 192 Ir-192 -30206 30206 Mercury 203 Hg-203 -30207 30207 Thallium 204 Tl-204 -30208 30208 Thallium 207 Tl-207 -30209 30209 Thallium 208 Tl-208 -30210 30210 Thallium 209 Tl-209 -30211 30211 Bismuth 205 Bi-205 -30212 30212 Bismuth 207 Bi-207 -30213 30213 Bismuth 210 Bi-210 -30214 30214 Bismuth 211 Bi-211 -30215 30215 Bismuth 212 Bi-212 -30216 30216 Bismuth 213 Bi-213 -30217 30217 Bismuth 214 Bi-214 -30218 30218 Polonium 208 Po-208 -30219 30219 Polonium 210 Po-210 -30220 30220 Polonium 212 Po-212 -30221 30221 Polonium 213 Po-213 -30222 30222 Polonium 214 Po-214 -30223 30223 Polonium 215 Po-215 -30224 30224 Polonium 216 Po-216 -30225 30225 Polonium 218 Po-218 -30226 30226 Lead 209 Pb-209 -30227 30227 Lead 210 Pb-210 -30228 30228 Lead 211 Pb-211 -30229 30229 Lead 212 Pb-212 -30230 30230 Lead 214 Pb-214 -30231 30231 Astatine 217 At-217 -30232 30232 Radon 219 Rn-219 -30233 30233 Radon 220 Rn-220 -30234 30234 Radon 222 Rn-222 -30235 30235 Francium 221 Fr-221 -30236 30236 Francium 223 Fr-223 -30237 30237 Radium 223 Ra-223 -30238 30238 Radium 224 Ra-224 -30239 30239 Radium 225 Ra-225 -30240 30240 Radium 226 Ra-226 -30241 30241 Radium 228 Ra-228 -30242 30242 Actinium 225 Ac-225 -30243 30243 Actinium 227 Ac-227 -30244 30244 Actinium 228 Ac-228 -30245 30245 Thorium 227 Th-227 -30246 30246 Thorium 228 Th-228 -30247 30247 Thorium 229 Th-229 -30248 30248 Thorium 230 Th-230 -30249 30249 Thorium 231 Th-231 -30250 30250 Thorium 232 Th-232 -30251 30251 Thorium 234 Th-234 -30252 30252 Protactinium 231 Pa-231 -30253 30253 Protactinium 233 Pa-233 -30254 30254 Protactinium 234 metastable Pa-234m -30255 30255 Uranium 232 U-232 -30256 30256 Uranium 233 U-233 -30257 30257 Uranium 234 U-234 -30258 30258 Uranium 235 U-235 -30259 30259 Uranium 236 U-236 -30260 30260 Uranium 237 U-237 -30261 30261 Uranium 238 U-238 -30262 30262 Plutonium 236 Pu-236 -30263 30263 Plutonium 238 Pu-238 -30264 30264 Plutonium 239 Pu-239 -30265 30265 Plutonium 240 Pu-240 -30266 30266 Plutonium 241 Pu-241 -30267 30267 Plutonium 242 Pu-242 -30268 30268 Plutonium 244 Pu-244 -30269 30269 Neptunium 237 Np-237 -30270 30270 Neptunium 238 Np-238 -30271 30271 Neptunium 239 Np-239 -30272 30272 Americium 241 Am-241 -30273 30273 Americium 242 Am-242 -30274 30274 Americium 242 metastable Am-242m -30275 30275 Americium 243 Am-243 -30276 30276 Curium 242 Cm-242 -30277 30277 Curium 243 Cm-243 -30278 30278 Curium 244 Cm-244 -30279 30279 Curium 245 Cm-245 -30280 30280 Curium 246 Cm-246 -30281 30281 Curium 247 Cm-247 -30282 30282 Curium 248 Cm-248 -30283 30283 Curium 243/244 Cm-243244 -30284 30284 Plutonium 238/Americium 241 Pu-238Am-241 -30285 30285 Plutonium 239/240 Pu-239240 -30286 30286 Berkelium 249 Bk-249 -30287 30287 Californium 249 Cf-249 -30288 30288 Californium 250 Cf-250 -30289 30289 Californium 252 Cf-252 -30290 30290 Sum aerosol particulates SumAer -30291 30291 Sum Iodine SumIod -30292 30292 Sum noble gas SumNG -30293 30293 Activation gas ActGas -30294 30294 Cs-137 Equivalent EquCs137 -#30295-59999 Reserved -60000 60000 HOx radical (OH+HO2) -60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2) -60002 60002 Passive Ozone -60003 60003 NOx expressed as nitrogen NOx -60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy -60005 60005 Total inorganic chlorine Clx -60006 60006 Total inorganic bromine Brx -60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx -60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx -60009 60009 Lumped alkanes -60010 60010 Lumped alkenes -60011 60011 Lumped aromatic compounds -60012 60012 Lumped terpenes -60013 60013 Non-methane volatile organic compounds expressed as carbon -60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon -60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon -60016 60016 Lumped oxygenated hydrocarbons -#60017-61999 Reserved -62000 62000 Total aerosol -62001 62001 Dust dry -62002 62002 Water in ambient -62003 62003 Ammonium dry -62004 62004 Nitrate dry -62005 62005 Nitric acid trihydrate -62006 62006 Sulphate dry -62007 62007 Mercury dry -62008 62008 Sea salt dry -62009 62009 Black carbon dry -62010 62010 Particulate organic matter dry -62011 62011 Primary particulate organic matter dry -62012 62012 Secondary particulate organic matter dry -62013 62013 Black carbon hydrophilic dry -62014 62014 Black carbon hydrophobic dry -62015 62015 Particulate organic matter hydrophilic dry -62016 62016 Particulate organic matter hydrophobic dry -62017 62017 Nitrate hydrophilic dry -62018 62018 Nitrate hydrophobic dry -#62019-65534 Reserved +# (See Common Code table C-14) 65535 65535 Missing diff --git a/definitions/grib2/tables/12/4.230.table b/definitions/grib2/tables/12/4.230.table index 454536e12..5c39a79b9 100644 --- a/definitions/grib2/tables/12/4.230.table +++ b/definitions/grib2/tables/12/4.230.table @@ -1,421 +1,3 @@ # Code table 4.230 - Atmospheric chemical constituent type -0 0 Ozone -1 1 Water vapour -2 2 Methane -3 3 Carbon dioxide -4 4 Carbon monoxide -5 5 Nitrogen dioxide -6 6 Nitrous oxide -7 7 Formaldehyde -8 8 Sulphur dioxide -9 9 Ammonia -10 10 Ammonium -11 11 Nitrogen monoxide -12 12 Atomic oxygen -13 13 Nitrate radical -14 14 Hydroperoxyl radical -15 15 Dinitrogen pentoxide -16 16 Nitrous acid -17 17 Nitric acid -18 18 Peroxynitric acid -19 19 Hydrogen peroxide -20 20 Molecular hydrogen -21 21 Atomic nitrogen -22 22 Sulphate -23 23 Radon -24 24 Elemental mercury -25 25 Divalent mercury -26 26 Atomic chlorine -27 27 Chlorine monoxide -28 28 Dichlorine peroxide -29 29 Hypochlorous acid -30 30 Chlorine nitrate -31 31 Chlorine dioxide -32 32 Atomic bromine -33 33 Bromine monoxide -34 34 Bromine chloride -35 35 Hydrogen bromide -36 36 Hypobromous acid -37 37 Bromine nitrate -#38-9999 Reserved -10000 10000 Hydroxyl radical -10001 10001 Methyl peroxy radical -10002 10002 Methyl hydroperoxide -10004 10004 Methanol -10005 10005 Formic acid -10006 10006 Hydrogen cyanide -10007 10007 Aceto nitrile -10008 10008 Ethane -10009 10009 Ethene (= Ethylene) -10010 10010 Ethyne (= Acetylene) -10011 10011 Ethanol -10012 10012 Acetic acid -10013 10013 Peroxyacetyl nitrate -10014 10014 Propane -10015 10015 Propene -10016 10016 Butanes -10017 10017 Isoprene -10018 10018 Alpha pinene -10019 10019 Beta pinene -10020 10020 Limonene -10021 10021 Benzene -10022 10022 Toluene -10023 10023 Xylene -#10024-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides...) -10500 10500 Dimethyl sulphide -#10501-20000 Reserved -20001 20001 Hydrogen chloride -20002 20002 CFC-11 -20003 20003 CFC-12 -20004 20004 CFC-113 -20005 20005 CFC-113a -20006 20006 CFC-114 -20007 20007 CFC-115 -20008 20008 HCFC-22 -20009 20009 HCFC-141b -20010 20010 HCFC-142b -20011 20011 Halon-1202 -20012 20012 Halon-1211 -20013 20013 Halon-1301 -20014 20014 Halon-2402 -20015 20015 Methyl chloride (HCC-40) -20016 20016 Carbon tetrachloride (HCC-10) -20017 20017 HCC-140a -20018 20018 Methyl bromide (HBC-40B1) -20019 20019 Hexachlorocyclohexane (HCH) -20020 20020 Alpha hexachlorocyclohexane -20021 20021 Hexachlorobiphenyl (PCB-153) -#20022-29999 Reserved -30000 30000 Radioactive pollutant (tracer, defined by originating centre) -#30001-30009 Reserved -30010 30010 Hydrogen H-3 -30011 30011 Hydrogen organic bounded H-3o -30012 30012 Hydrogen inorganic H-3a -30013 30013 Beryllium 7 Be-7 -30014 30014 Beryllium 10 Be-10 -30015 30015 Carbon 14 C-14 -30016 30016 Carbon 14 CO2 C-14CO2 -30017 30017 Carbon 14 other gases C-14og -30018 30018 Nitrogen 13 N-13 -30019 30019 Nitrogen 16 N-16 -30020 30020 Fluorine 18 F-18 -30021 30021 Sodium 22 Na-22 -30022 30022 Phosphate 32 P-32 -30023 30023 Phosphate 33 P-33 -30024 30024 Sulfur 35 S-35 -30025 30025 Chlorine 36 Cl-36 -30026 30026 Potassium 40 K-40 -30027 30027 Argon 41 Ar-41 -30028 30028 Calcium 41 Ca-41 -30029 30029 Calcium 45 Ca-45 -30030 30030 Titanium 44 -30031 30031 Scandium 46 Sc-46 -30032 30032 Vanadium 48 V-48 -30033 30033 Vanadium 49 V-49 -30034 30034 Chrome 51 Cr-51 -30035 30035 Manganese 52 Mn-52 -30036 30036 Manganese 54 Mn-54 -30037 30037 Iron 55 Fe-55 -30038 30038 Iron 59 Fe-59 -30039 30039 Cobalt 56 Co-56 -30040 30040 Cobalt 57 Co-57 -30041 30041 Cobalt 58 Co-58 -30042 30042 Cobalt 60 Co-60 -30043 30043 Nickel 59 Ni-59 -30044 30044 Nickel 63 Ni-63 -30045 30045 Zinc 65 Zn-65 -30046 30046 Gallium 67 Ga-67 -30047 30047 Gallium 68 Ga-68 -30048 30048 Germanium 68 Ge-68 -30049 30049 Germanium 69 Ge-69 -30050 30050 Arsenic 73 As-73 -30051 30051 Selenium 75 Se-75 -30052 30052 Selenium 79 Se-79 -30053 30053 Rubidium 81 Rb-81 -30054 30054 Rubidium 83 Rb-83 -30055 30055 Rubidium 84 Rb-84 -30056 30056 Rubidium 86 Rb-86 -30057 30057 Rubidium 87 Rb-87 -30058 30058 Rubidium 88 Rb-88 -30059 30059 Krypton 85 Kr-85 -30060 30060 Krypton 85 metastable Kr-85m -30061 30061 Krypton 87 Kr-87 -30062 30062 Krypton 88 Kr-88 -30063 30063 Krypton 89 Kr-89 -30064 30064 Strontium 85 Sr-85 -30065 30065 Strontium 89 Sr-89 -30066 30066 Strontium 89/90 Sr-8990 -30067 30067 Strontium 90 Sr-90 -30068 30068 Strontium 91 Sr-91 -30069 30069 Strontium 92 Sr-92 -30070 30070 Yttrium 87 Y-87 -30071 30071 Yttrium 88 Y-88 -30072 30072 Yttrium 90 Y-90 -30073 30073 Yttrium 91 Y-91 -30074 30074 Yttrium 91 metastable Y-91m -30075 30075 Yttrium 92 Y-92 -30076 30076 Yttrium 93 Y-93 -30077 30077 Zirconium 89 Zr-89 -30078 30078 Zirconium 93 Zr-93 -30079 30079 Zirconium 95 Zr-95 -30080 30080 Zirconium 97 Zr-97 -30081 30081 Niobium 93 metastable Nb-93m -30082 30082 Niobium 94 Nb-94 -30083 30083 Niobium 95 Nb-95 -30084 30084 Niobium 95 metastable Nb-95m -30085 30085 Niobium 97 Nb-97 -30086 30086 Niobium 97 metastable Nb-97m -30087 30087 Molybdenum 93 Mo-93 -30088 30088 Molybdenum 99 Mo-99 -30089 30089 Technetium 95 metastable Tc-95m -30090 30090 Technetium 96 Tc-96 -30091 30091 Technetium 99 Tc-99 -30092 30092 Technetium 99 metastable Tc-99m -30093 30093 Rhodium 99 Rh-99 -30094 30094 Rhodium 101 Rh-101 -30095 30095 Rhodium 102 metastable Rh-102m -30096 30096 Rhodium 103 metastable Rh-103m -30097 30097 Rhodium 105 Rh-105 -30098 30098 Rhodium 106 Rh-106 -30099 30099 Palladium 100 Pd-100 -30100 30100 Palladium 103 Pd-103 -30101 30101 Palladium 107 Pd-107 -30102 30102 Ruthenium 103 Ru-103 -30103 30103 Ruthenium 105 Ru-105 -30104 30104 Ruthenium 106 Ru-106 -30105 30105 Silver 108 metastable Ag-108m -30106 30106 Silver 110 metastable Ag-110m -30107 30107 Cadmium 109 Cd-109 -30108 30108 Cadmium 113 metastable Cd-113m -30109 30109 Cadmium 115 metastable Cd-115m -30110 30110 Indium 114 metastable In-114m -30111 30111 Tin 113 Sn-113 -30112 30112 Tin 119 metastable Sn-119m -30113 30113 Tin 121 metastable Sn-121m -30114 30114 Tin 122 Sn-122 -30115 30115 Tin 123 Sn-123 -30116 30116 Tin 126 Sn-126 -30117 30117 Antimony 124 Sb-124 -30118 30118 Antimony 125 Sb-125 -30119 30119 Antimony 126 Sb-126 -30120 30120 Antimony 127 Sb-127 -30121 30121 Antimony 129 Sb-129 -30122 30122 Tellurium 123 metastable Te-123m -30123 30123 Tellurium 125 metastable Te-125m -30124 30124 Tellurium 127 Te-127 -30125 30125 Tellurium 127 metastable Te-127m -30126 30126 Tellurium 129 Te-129 -30127 30127 Tellurium 129 metastable Te-129m -30128 30128 Tellurium 131 metastable Te-131m -30129 30129 Tellurium 132 Te-132 -30130 30130 Iodine 123 I-123 -30131 30131 Iodine 124 I-124 -30132 30132 Iodine 125 I-125 -30133 30133 Iodine 126 I-126 -30134 30134 Iodine 129 I-129 -30135 30135 Iodine 129 elementary gaseous I-129g -30136 30136 Iodine 129 organic bounded I-129o -30137 30137 Iodine 131 I-131 -30138 30138 Iodine 131 elementary gaseous I-131g -30139 30139 Iodine 131 organic bounded I-131o -30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go -30141 30141 Iodine 131 aerosol I-131a -30142 30142 Iodine 132 I-132 -30143 30143 Iodine 132 elementary gaseous I-132g -30144 30144 Iodine 132 organic bounded I-132o -30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go -30146 30146 Iodine 132 aerosol I-132a -30147 30147 Iodine 133 I-133 -30148 30148 Iodine 133 elementary gaseous I-133g -30149 30149 Iodine 133 organic bounded I-133o -30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go -30151 30151 Iodine 133 aerosol I-133a -30152 30152 Iodine 134 I-134 -30153 30153 Iodine 134 elementary gaseous I-134g -30154 30154 Iodine 134 organic bounded I-134o -30155 30155 Iodine 135 I-135 -30156 30156 Iodine 135 elementary gaseous I-135g -30157 30157 Iodine 135 organic bounded I-135o -30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go -30159 30159 Iodine 135 aerosol I-135a -30160 30160 Xenon 131 metastable Xe-131m -30161 30161 Xenon 133 Xe-133 -30162 30162 Xenon 133 metastable Xe-133m -30163 30163 Xenon 135 Xe-135 -30164 30164 Xenon 135 metastable Xe-135m -30165 30165 Xenon 137 Xe-137 -30166 30166 Xenon 138 Xe-138 -30167 30167 Xenon sum of all Xenon isotopes Xe-sum -30168 30168 Caesium 131 Cs-131 -30169 30169 Caesium 134 Cs-134 -30170 30170 Caesium 135 Cs-135 -30171 30171 Caesium 136 Cs-136 -30172 30172 Caesium 137 Cs-137 -30173 30173 Barium 133 Ba-133 -30174 30174 Barium 137 metastable Ba-137m -30175 30175 Barium 140 Ba-140 -30176 30176 Cerium 139 Ce-139 -30177 30177 Cerium 141 Ce-141 -30178 30178 Cerium 143 Ce-143 -30179 30179 Cerium 144 Ce-144 -30180 30180 Lanthanum 140 La-140 -30181 30181 Lanthanum 141 La-141 -30182 30182 Praseodymium 143 Pr-143 -30183 30183 Praseodymium 144 Pr-144 -30184 30184 Praseodymium 144 metastable Pr-144m -30185 30185 Samarium 145 Sm-145 -30186 30186 Samarium 147 Sm-147 -30187 30187 Samarium 151 Sm-151 -30188 30188 Neodymium 147 Nd-147 -30189 30189 Promethium 146 Pm-146 -30190 30190 Promethium 147 Pm-147 -30191 30191 Promethium 151 Pm-151 -30192 30192 Europium 152 Eu-152 -30193 30193 Europium 154 Eu-154 -30194 30194 Europium 155 Eu-155 -30195 30195 Gadolinium 153 Gd-153 -30196 30196 Terbium 160 Tb-160 -30197 30197 Holmium 166 metastable Ho-166m -30198 30198 Thulium 170 Tm-170 -30199 30199 Ytterbium 169 Yb-169 -30200 30200 Hafnium 175 Hf-175 -30201 30201 Hafnium 181 Hf-181 -30202 30202 Tantalum 179 Ta-179 -30203 30203 Tantalum 182 Ta-182 -30204 30204 Rhenium 184 Re-184 -30205 30205 Iridium 192 Ir-192 -30206 30206 Mercury 203 Hg-203 -30207 30207 Thallium 204 Tl-204 -30208 30208 Thallium 207 Tl-207 -30209 30209 Thallium 208 Tl-208 -30210 30210 Thallium 209 Tl-209 -30211 30211 Bismuth 205 Bi-205 -30212 30212 Bismuth 207 Bi-207 -30213 30213 Bismuth 210 Bi-210 -30214 30214 Bismuth 211 Bi-211 -30215 30215 Bismuth 212 Bi-212 -30216 30216 Bismuth 213 Bi-213 -30217 30217 Bismuth 214 Bi-214 -30218 30218 Polonium 208 Po-208 -30219 30219 Polonium 210 Po-210 -30220 30220 Polonium 212 Po-212 -30221 30221 Polonium 213 Po-213 -30222 30222 Polonium 214 Po-214 -30223 30223 Polonium 215 Po-215 -30224 30224 Polonium 216 Po-216 -30225 30225 Polonium 218 Po-218 -30226 30226 Lead 209 Pb-209 -30227 30227 Lead 210 Pb-210 -30228 30228 Lead 211 Pb-211 -30229 30229 Lead 212 Pb-212 -30230 30230 Lead 214 Pb-214 -30231 30231 Astatine 217 At-217 -30232 30232 Radon 219 Rn-219 -30233 30233 Radon 220 Rn-220 -30234 30234 Radon 222 Rn-222 -30235 30235 Francium 221 Fr-221 -30236 30236 Francium 223 Fr-223 -30237 30237 Radium 223 Ra-223 -30238 30238 Radium 224 Ra-224 -30239 30239 Radium 225 Ra-225 -30240 30240 Radium 226 Ra-226 -30241 30241 Radium 228 Ra-228 -30242 30242 Actinium 225 Ac-225 -30243 30243 Actinium 227 Ac-227 -30244 30244 Actinium 228 Ac-228 -30245 30245 Thorium 227 Th-227 -30246 30246 Thorium 228 Th-228 -30247 30247 Thorium 229 Th-229 -30248 30248 Thorium 230 Th-230 -30249 30249 Thorium 231 Th-231 -30250 30250 Thorium 232 Th-232 -30251 30251 Thorium 234 Th-234 -30252 30252 Protactinium 231 Pa-231 -30253 30253 Protactinium 233 Pa-233 -30254 30254 Protactinium 234 metastable Pa-234m -30255 30255 Uranium 232 U-232 -30256 30256 Uranium 233 U-233 -30257 30257 Uranium 234 U-234 -30258 30258 Uranium 235 U-235 -30259 30259 Uranium 236 U-236 -30260 30260 Uranium 237 U-237 -30261 30261 Uranium 238 U-238 -30262 30262 Plutonium 236 Pu-236 -30263 30263 Plutonium 238 Pu-238 -30264 30264 Plutonium 239 Pu-239 -30265 30265 Plutonium 240 Pu-240 -30266 30266 Plutonium 241 Pu-241 -30267 30267 Plutonium 242 Pu-242 -30268 30268 Plutonium 244 Pu-244 -30269 30269 Neptunium 237 Np-237 -30270 30270 Neptunium 238 Np-238 -30271 30271 Neptunium 239 Np-239 -30272 30272 Americium 241 Am-241 -30273 30273 Americium 242 Am-242 -30274 30274 Americium 242 metastable Am-242m -30275 30275 Americium 243 Am-243 -30276 30276 Curium 242 Cm-242 -30277 30277 Curium 243 Cm-243 -30278 30278 Curium 244 Cm-244 -30279 30279 Curium 245 Cm-245 -30280 30280 Curium 246 Cm-246 -30281 30281 Curium 247 Cm-247 -30282 30282 Curium 248 Cm-248 -30283 30283 Curium 243/244 Cm-243244 -30284 30284 Plutonium 238/Americium 241 Pu-238Am-241 -30285 30285 Plutonium 239/240 Pu-239240 -30286 30286 Berkelium 249 Bk-249 -30287 30287 Californium 249 Cf-249 -30288 30288 Californium 250 Cf-250 -30289 30289 Californium 252 Cf-252 -30290 30290 Sum aerosol particulates SumAer -30291 30291 Sum Iodine SumIod -30292 30292 Sum noble gas SumNG -30293 30293 Activation gas ActGas -30294 30294 Cs-137 Equivalent EquCs137 -#30295-59999 Reserved -60000 60000 HOx radical (OH+HO2) -60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2) -60002 60002 Passive Ozone -60003 60003 NOx expressed as nitrogen NOx -60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy -60005 60005 Total inorganic chlorine Clx -60006 60006 Total inorganic bromine Brx -60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx -60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx -60009 60009 Lumped alkanes -60010 60010 Lumped alkenes -60011 60011 Lumped aromatic compounds -60012 60012 Lumped terpenes -60013 60013 Non-methane volatile organic compounds expressed as carbon -60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon -60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon -60016 60016 Lumped oxygenated hydrocarbons -60017 60017 NOx expressed as nitrogen dioxide (NO2) -#60018-61999 Reserved -62000 62000 Total aerosol -62001 62001 Dust dry -62002 62002 Water in ambient -62003 62003 Ammonium dry -62004 62004 Nitrate dry -62005 62005 Nitric acid trihydrate -62006 62006 Sulphate dry -62007 62007 Mercury dry -62008 62008 Sea salt dry -62009 62009 Black carbon dry -62010 62010 Particulate organic matter dry -62011 62011 Primary particulate organic matter dry -62012 62012 Secondary particulate organic matter dry -62013 62013 Black carbon hydrophilic dry -62014 62014 Black carbon hydrophobic dry -62015 62015 Particulate organic matter hydrophilic dry -62016 62016 Particulate organic matter hydrophobic dry -62017 62017 Nitrate hydrophilic dry -62018 62018 Nitrate hydrophobic dry -62019 62019 Reserved -62020 62020 Smoke - high absorption -62021 62021 Smoke - low absorption -62022 62022 Aerosol - high absorption -62023 62023 Aerosol - low absorption -# 62024-65534 Reserved +# (See Common Code table C-14) 65535 65535 Missing diff --git a/definitions/grib2/tables/12/4.233.table b/definitions/grib2/tables/12/4.233.table index b86d59076..d63f673bb 100644 --- a/definitions/grib2/tables/12/4.233.table +++ b/definitions/grib2/tables/12/4.233.table @@ -1,421 +1,3 @@ # Code table 4.233 - Aerosol type -0 0 Ozone -1 1 Water vapour -2 2 Methane -3 3 Carbon dioxide -4 4 Carbon monoxide -5 5 Nitrogen dioxide -6 6 Nitrous oxide -7 7 Formaldehyde -8 8 Sulphur dioxide -9 9 Ammonia -10 10 Ammonium -11 11 Nitrogen monoxide -12 12 Atomic oxygen -13 13 Nitrate radical -14 14 Hydroperoxyl radical -15 15 Dinitrogen pentoxide -16 16 Nitrous acid -17 17 Nitric acid -18 18 Peroxynitric acid -19 19 Hydrogen peroxide -20 20 Molecular hydrogen -21 21 Atomic nitrogen -22 22 Sulphate -23 23 Radon -24 24 Elemental mercury -25 25 Divalent mercury -26 26 Atomic chlorine -27 27 Chlorine monoxide -28 28 Dichlorine peroxide -29 29 Hypochlorous acid -30 30 Chlorine nitrate -31 31 Chlorine dioxide -32 32 Atomic bromine -33 33 Bromine monoxide -34 34 Bromine chloride -35 35 Hydrogen bromide -36 36 Hypobromous acid -37 37 Bromine nitrate -#38-9999 Reserved -10000 10000 Hydroxyl radical -10001 10001 Methyl peroxy radical -10002 10002 Methyl hydroperoxide -10004 10004 Methanol -10005 10005 Formic acid -10006 10006 Hydrogen cyanide -10007 10007 Aceto nitrile -10008 10008 Ethane -10009 10009 Ethene (= Ethylene) -10010 10010 Ethyne (= Acetylene) -10011 10011 Ethanol -10012 10012 Acetic acid -10013 10013 Peroxyacetyl nitrate -10014 10014 Propane -10015 10015 Propene -10016 10016 Butanes -10017 10017 Isoprene -10018 10018 Alpha pinene -10019 10019 Beta pinene -10020 10020 Limonene -10021 10021 Benzene -10022 10022 Toluene -10023 10023 Xylene -#10024-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides...) -10500 10500 Dimethyl sulphide -#10501-20000 Reserved -20001 20001 Hydrogen chloride -20002 20002 CFC-11 -20003 20003 CFC-12 -20004 20004 CFC-113 -20005 20005 CFC-113a -20006 20006 CFC-114 -20007 20007 CFC-115 -20008 20008 HCFC-22 -20009 20009 HCFC-141b -20010 20010 HCFC-142b -20011 20011 Halon-1202 -20012 20012 Halon-1211 -20013 20013 Halon-1301 -20014 20014 Halon-2402 -20015 20015 Methyl chloride (HCC-40) -20016 20016 Carbon tetrachloride (HCC-10) -20017 20017 HCC-140a -20018 20018 Methyl bromide (HBC-40B1) -20019 20019 Hexachlorocyclohexane (HCH) -20020 20020 Alpha hexachlorocyclohexane -20021 20021 Hexachlorobiphenyl (PCB-153) -#20022-29999 Reserved -30000 30000 Radioactive pollutant (tracer, defined by originating centre) -#30001-30009 Reserved -30010 30010 Hydrogen H-3 -30011 30011 Hydrogen organic bounded H-3o -30012 30012 Hydrogen inorganic H-3a -30013 30013 Beryllium 7 Be-7 -30014 30014 Beryllium 10 Be-10 -30015 30015 Carbon 14 C-14 -30016 30016 Carbon 14 CO2 C-14CO2 -30017 30017 Carbon 14 other gases C-14og -30018 30018 Nitrogen 13 N-13 -30019 30019 Nitrogen 16 N-16 -30020 30020 Fluorine 18 F-18 -30021 30021 Sodium 22 Na-22 -30022 30022 Phosphate 32 P-32 -30023 30023 Phosphate 33 P-33 -30024 30024 Sulfur 35 S-35 -30025 30025 Chlorine 36 Cl-36 -30026 30026 Potassium 40 K-40 -30027 30027 Argon 41 Ar-41 -30028 30028 Calcium 41 Ca-41 -30029 30029 Calcium 45 Ca-45 -30030 30030 Titanium 44 -30031 30031 Scandium 46 Sc-46 -30032 30032 Vanadium 48 V-48 -30033 30033 Vanadium 49 V-49 -30034 30034 Chrome 51 Cr-51 -30035 30035 Manganese 52 Mn-52 -30036 30036 Manganese 54 Mn-54 -30037 30037 Iron 55 Fe-55 -30038 30038 Iron 59 Fe-59 -30039 30039 Cobalt 56 Co-56 -30040 30040 Cobalt 57 Co-57 -30041 30041 Cobalt 58 Co-58 -30042 30042 Cobalt 60 Co-60 -30043 30043 Nickel 59 Ni-59 -30044 30044 Nickel 63 Ni-63 -30045 30045 Zinc 65 Zn-65 -30046 30046 Gallium 67 Ga-67 -30047 30047 Gallium 68 Ga-68 -30048 30048 Germanium 68 Ge-68 -30049 30049 Germanium 69 Ge-69 -30050 30050 Arsenic 73 As-73 -30051 30051 Selenium 75 Se-75 -30052 30052 Selenium 79 Se-79 -30053 30053 Rubidium 81 Rb-81 -30054 30054 Rubidium 83 Rb-83 -30055 30055 Rubidium 84 Rb-84 -30056 30056 Rubidium 86 Rb-86 -30057 30057 Rubidium 87 Rb-87 -30058 30058 Rubidium 88 Rb-88 -30059 30059 Krypton 85 Kr-85 -30060 30060 Krypton 85 metastable Kr-85m -30061 30061 Krypton 87 Kr-87 -30062 30062 Krypton 88 Kr-88 -30063 30063 Krypton 89 Kr-89 -30064 30064 Strontium 85 Sr-85 -30065 30065 Strontium 89 Sr-89 -30066 30066 Strontium 89/90 Sr-8990 -30067 30067 Strontium 90 Sr-90 -30068 30068 Strontium 91 Sr-91 -30069 30069 Strontium 92 Sr-92 -30070 30070 Yttrium 87 Y-87 -30071 30071 Yttrium 88 Y-88 -30072 30072 Yttrium 90 Y-90 -30073 30073 Yttrium 91 Y-91 -30074 30074 Yttrium 91 metastable Y-91m -30075 30075 Yttrium 92 Y-92 -30076 30076 Yttrium 93 Y-93 -30077 30077 Zirconium 89 Zr-89 -30078 30078 Zirconium 93 Zr-93 -30079 30079 Zirconium 95 Zr-95 -30080 30080 Zirconium 97 Zr-97 -30081 30081 Niobium 93 metastable Nb-93m -30082 30082 Niobium 94 Nb-94 -30083 30083 Niobium 95 Nb-95 -30084 30084 Niobium 95 metastable Nb-95m -30085 30085 Niobium 97 Nb-97 -30086 30086 Niobium 97 metastable Nb-97m -30087 30087 Molybdenum 93 Mo-93 -30088 30088 Molybdenum 99 Mo-99 -30089 30089 Technetium 95 metastable Tc-95m -30090 30090 Technetium 96 Tc-96 -30091 30091 Technetium 99 Tc-99 -30092 30092 Technetium 99 metastable Tc-99m -30093 30093 Rhodium 99 Rh-99 -30094 30094 Rhodium 101 Rh-101 -30095 30095 Rhodium 102 metastable Rh-102m -30096 30096 Rhodium 103 metastable Rh-103m -30097 30097 Rhodium 105 Rh-105 -30098 30098 Rhodium 106 Rh-106 -30099 30099 Palladium 100 Pd-100 -30100 30100 Palladium 103 Pd-103 -30101 30101 Palladium 107 Pd-107 -30102 30102 Ruthenium 103 Ru-103 -30103 30103 Ruthenium 105 Ru-105 -30104 30104 Ruthenium 106 Ru-106 -30105 30105 Silver 108 metastable Ag-108m -30106 30106 Silver 110 metastable Ag-110m -30107 30107 Cadmium 109 Cd-109 -30108 30108 Cadmium 113 metastable Cd-113m -30109 30109 Cadmium 115 metastable Cd-115m -30110 30110 Indium 114 metastable In-114m -30111 30111 Tin 113 Sn-113 -30112 30112 Tin 119 metastable Sn-119m -30113 30113 Tin 121 metastable Sn-121m -30114 30114 Tin 122 Sn-122 -30115 30115 Tin 123 Sn-123 -30116 30116 Tin 126 Sn-126 -30117 30117 Antimony 124 Sb-124 -30118 30118 Antimony 125 Sb-125 -30119 30119 Antimony 126 Sb-126 -30120 30120 Antimony 127 Sb-127 -30121 30121 Antimony 129 Sb-129 -30122 30122 Tellurium 123 metastable Te-123m -30123 30123 Tellurium 125 metastable Te-125m -30124 30124 Tellurium 127 Te-127 -30125 30125 Tellurium 127 metastable Te-127m -30126 30126 Tellurium 129 Te-129 -30127 30127 Tellurium 129 metastable Te-129m -30128 30128 Tellurium 131 metastable Te-131m -30129 30129 Tellurium 132 Te-132 -30130 30130 Iodine 123 I-123 -30131 30131 Iodine 124 I-124 -30132 30132 Iodine 125 I-125 -30133 30133 Iodine 126 I-126 -30134 30134 Iodine 129 I-129 -30135 30135 Iodine 129 elementary gaseous I-129g -30136 30136 Iodine 129 organic bounded I-129o -30137 30137 Iodine 131 I-131 -30138 30138 Iodine 131 elementary gaseous I-131g -30139 30139 Iodine 131 organic bounded I-131o -30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go -30141 30141 Iodine 131 aerosol I-131a -30142 30142 Iodine 132 I-132 -30143 30143 Iodine 132 elementary gaseous I-132g -30144 30144 Iodine 132 organic bounded I-132o -30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go -30146 30146 Iodine 132 aerosol I-132a -30147 30147 Iodine 133 I-133 -30148 30148 Iodine 133 elementary gaseous I-133g -30149 30149 Iodine 133 organic bounded I-133o -30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go -30151 30151 Iodine 133 aerosol I-133a -30152 30152 Iodine 134 I-134 -30153 30153 Iodine 134 elementary gaseous I-134g -30154 30154 Iodine 134 organic bounded I-134o -30155 30155 Iodine 135 I-135 -30156 30156 Iodine 135 elementary gaseous I-135g -30157 30157 Iodine 135 organic bounded I-135o -30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go -30159 30159 Iodine 135 aerosol I-135a -30160 30160 Xenon 131 metastable Xe-131m -30161 30161 Xenon 133 Xe-133 -30162 30162 Xenon 133 metastable Xe-133m -30163 30163 Xenon 135 Xe-135 -30164 30164 Xenon 135 metastable Xe-135m -30165 30165 Xenon 137 Xe-137 -30166 30166 Xenon 138 Xe-138 -30167 30167 Xenon sum of all Xenon isotopes Xe-sum -30168 30168 Caesium 131 Cs-131 -30169 30169 Caesium 134 Cs-134 -30170 30170 Caesium 135 Cs-135 -30171 30171 Caesium 136 Cs-136 -30172 30172 Caesium 137 Cs-137 -30173 30173 Barium 133 Ba-133 -30174 30174 Barium 137 metastable Ba-137m -30175 30175 Barium 140 Ba-140 -30176 30176 Cerium 139 Ce-139 -30177 30177 Cerium 141 Ce-141 -30178 30178 Cerium 143 Ce-143 -30179 30179 Cerium 144 Ce-144 -30180 30180 Lanthanum 140 La-140 -30181 30181 Lanthanum 141 La-141 -30182 30182 Praseodymium 143 Pr-143 -30183 30183 Praseodymium 144 Pr-144 -30184 30184 Praseodymium 144 metastable Pr-144m -30185 30185 Samarium 145 Sm-145 -30186 30186 Samarium 147 Sm-147 -30187 30187 Samarium 151 Sm-151 -30188 30188 Neodymium 147 Nd-147 -30189 30189 Promethium 146 Pm-146 -30190 30190 Promethium 147 Pm-147 -30191 30191 Promethium 151 Pm-151 -30192 30192 Europium 152 Eu-152 -30193 30193 Europium 154 Eu-154 -30194 30194 Europium 155 Eu-155 -30195 30195 Gadolinium 153 Gd-153 -30196 30196 Terbium 160 Tb-160 -30197 30197 Holmium 166 metastable Ho-166m -30198 30198 Thulium 170 Tm-170 -30199 30199 Ytterbium 169 Yb-169 -30200 30200 Hafnium 175 Hf-175 -30201 30201 Hafnium 181 Hf-181 -30202 30202 Tantalum 179 Ta-179 -30203 30203 Tantalum 182 Ta-182 -30204 30204 Rhenium 184 Re-184 -30205 30205 Iridium 192 Ir-192 -30206 30206 Mercury 203 Hg-203 -30207 30207 Thallium 204 Tl-204 -30208 30208 Thallium 207 Tl-207 -30209 30209 Thallium 208 Tl-208 -30210 30210 Thallium 209 Tl-209 -30211 30211 Bismuth 205 Bi-205 -30212 30212 Bismuth 207 Bi-207 -30213 30213 Bismuth 210 Bi-210 -30214 30214 Bismuth 211 Bi-211 -30215 30215 Bismuth 212 Bi-212 -30216 30216 Bismuth 213 Bi-213 -30217 30217 Bismuth 214 Bi-214 -30218 30218 Polonium 208 Po-208 -30219 30219 Polonium 210 Po-210 -30220 30220 Polonium 212 Po-212 -30221 30221 Polonium 213 Po-213 -30222 30222 Polonium 214 Po-214 -30223 30223 Polonium 215 Po-215 -30224 30224 Polonium 216 Po-216 -30225 30225 Polonium 218 Po-218 -30226 30226 Lead 209 Pb-209 -30227 30227 Lead 210 Pb-210 -30228 30228 Lead 211 Pb-211 -30229 30229 Lead 212 Pb-212 -30230 30230 Lead 214 Pb-214 -30231 30231 Astatine 217 At-217 -30232 30232 Radon 219 Rn-219 -30233 30233 Radon 220 Rn-220 -30234 30234 Radon 222 Rn-222 -30235 30235 Francium 221 Fr-221 -30236 30236 Francium 223 Fr-223 -30237 30237 Radium 223 Ra-223 -30238 30238 Radium 224 Ra-224 -30239 30239 Radium 225 Ra-225 -30240 30240 Radium 226 Ra-226 -30241 30241 Radium 228 Ra-228 -30242 30242 Actinium 225 Ac-225 -30243 30243 Actinium 227 Ac-227 -30244 30244 Actinium 228 Ac-228 -30245 30245 Thorium 227 Th-227 -30246 30246 Thorium 228 Th-228 -30247 30247 Thorium 229 Th-229 -30248 30248 Thorium 230 Th-230 -30249 30249 Thorium 231 Th-231 -30250 30250 Thorium 232 Th-232 -30251 30251 Thorium 234 Th-234 -30252 30252 Protactinium 231 Pa-231 -30253 30253 Protactinium 233 Pa-233 -30254 30254 Protactinium 234 metastable Pa-234m -30255 30255 Uranium 232 U-232 -30256 30256 Uranium 233 U-233 -30257 30257 Uranium 234 U-234 -30258 30258 Uranium 235 U-235 -30259 30259 Uranium 236 U-236 -30260 30260 Uranium 237 U-237 -30261 30261 Uranium 238 U-238 -30262 30262 Plutonium 236 Pu-236 -30263 30263 Plutonium 238 Pu-238 -30264 30264 Plutonium 239 Pu-239 -30265 30265 Plutonium 240 Pu-240 -30266 30266 Plutonium 241 Pu-241 -30267 30267 Plutonium 242 Pu-242 -30268 30268 Plutonium 244 Pu-244 -30269 30269 Neptunium 237 Np-237 -30270 30270 Neptunium 238 Np-238 -30271 30271 Neptunium 239 Np-239 -30272 30272 Americium 241 Am-241 -30273 30273 Americium 242 Am-242 -30274 30274 Americium 242 metastable Am-242m -30275 30275 Americium 243 Am-243 -30276 30276 Curium 242 Cm-242 -30277 30277 Curium 243 Cm-243 -30278 30278 Curium 244 Cm-244 -30279 30279 Curium 245 Cm-245 -30280 30280 Curium 246 Cm-246 -30281 30281 Curium 247 Cm-247 -30282 30282 Curium 248 Cm-248 -30283 30283 Curium 243/244 Cm-243244 -30284 30284 Plutonium 238/Americium 241 Pu-238Am-241 -30285 30285 Plutonium 239/240 Pu-239240 -30286 30286 Berkelium 249 Bk-249 -30287 30287 Californium 249 Cf-249 -30288 30288 Californium 250 Cf-250 -30289 30289 Californium 252 Cf-252 -30290 30290 Sum aerosol particulates SumAer -30291 30291 Sum Iodine SumIod -30292 30292 Sum noble gas SumNG -30293 30293 Activation gas ActGas -30294 30294 Cs-137 Equivalent EquCs137 -#30295-59999 Reserved -60000 60000 HOx radical (OH+HO2) -60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2) -60002 60002 Passive Ozone -60003 60003 NOx expressed as nitrogen NOx -60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy -60005 60005 Total inorganic chlorine Clx -60006 60006 Total inorganic bromine Brx -60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx -60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx -60009 60009 Lumped alkanes -60010 60010 Lumped alkenes -60011 60011 Lumped aromatic compounds -60012 60012 Lumped terpenes -60013 60013 Non-methane volatile organic compounds expressed as carbon -60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon -60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon -60016 60016 Lumped oxygenated hydrocarbons -60017 60017 NOx expressed as nitrogen dioxide (NO2) -#60018-61999 Reserved -62000 62000 Total aerosol -62001 62001 Dust dry -62002 62002 Water in ambient -62003 62003 Ammonium dry -62004 62004 Nitrate dry -62005 62005 Nitric acid trihydrate -62006 62006 Sulphate dry -62007 62007 Mercury dry -62008 62008 Sea salt dry -62009 62009 Black carbon dry -62010 62010 Particulate organic matter dry -62011 62011 Primary particulate organic matter dry -62012 62012 Secondary particulate organic matter dry -62013 62013 Black carbon hydrophilic dry -62014 62014 Black carbon hydrophobic dry -62015 62015 Particulate organic matter hydrophilic dry -62016 62016 Particulate organic matter hydrophobic dry -62017 62017 Nitrate hydrophilic dry -62018 62018 Nitrate hydrophobic dry -62019 62019 Reserved -62020 62020 Smoke - high absorption -62021 62021 Smoke - low absorption -62022 62022 Aerosol - high absorption -62023 62023 Aerosol - low absorption -# 62024-65534 Reserved +# (See Common Code table C-14) 65535 65535 Missing diff --git a/definitions/grib2/tables/13/4.230.table b/definitions/grib2/tables/13/4.230.table index 454536e12..5c39a79b9 100644 --- a/definitions/grib2/tables/13/4.230.table +++ b/definitions/grib2/tables/13/4.230.table @@ -1,421 +1,3 @@ # Code table 4.230 - Atmospheric chemical constituent type -0 0 Ozone -1 1 Water vapour -2 2 Methane -3 3 Carbon dioxide -4 4 Carbon monoxide -5 5 Nitrogen dioxide -6 6 Nitrous oxide -7 7 Formaldehyde -8 8 Sulphur dioxide -9 9 Ammonia -10 10 Ammonium -11 11 Nitrogen monoxide -12 12 Atomic oxygen -13 13 Nitrate radical -14 14 Hydroperoxyl radical -15 15 Dinitrogen pentoxide -16 16 Nitrous acid -17 17 Nitric acid -18 18 Peroxynitric acid -19 19 Hydrogen peroxide -20 20 Molecular hydrogen -21 21 Atomic nitrogen -22 22 Sulphate -23 23 Radon -24 24 Elemental mercury -25 25 Divalent mercury -26 26 Atomic chlorine -27 27 Chlorine monoxide -28 28 Dichlorine peroxide -29 29 Hypochlorous acid -30 30 Chlorine nitrate -31 31 Chlorine dioxide -32 32 Atomic bromine -33 33 Bromine monoxide -34 34 Bromine chloride -35 35 Hydrogen bromide -36 36 Hypobromous acid -37 37 Bromine nitrate -#38-9999 Reserved -10000 10000 Hydroxyl radical -10001 10001 Methyl peroxy radical -10002 10002 Methyl hydroperoxide -10004 10004 Methanol -10005 10005 Formic acid -10006 10006 Hydrogen cyanide -10007 10007 Aceto nitrile -10008 10008 Ethane -10009 10009 Ethene (= Ethylene) -10010 10010 Ethyne (= Acetylene) -10011 10011 Ethanol -10012 10012 Acetic acid -10013 10013 Peroxyacetyl nitrate -10014 10014 Propane -10015 10015 Propene -10016 10016 Butanes -10017 10017 Isoprene -10018 10018 Alpha pinene -10019 10019 Beta pinene -10020 10020 Limonene -10021 10021 Benzene -10022 10022 Toluene -10023 10023 Xylene -#10024-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides...) -10500 10500 Dimethyl sulphide -#10501-20000 Reserved -20001 20001 Hydrogen chloride -20002 20002 CFC-11 -20003 20003 CFC-12 -20004 20004 CFC-113 -20005 20005 CFC-113a -20006 20006 CFC-114 -20007 20007 CFC-115 -20008 20008 HCFC-22 -20009 20009 HCFC-141b -20010 20010 HCFC-142b -20011 20011 Halon-1202 -20012 20012 Halon-1211 -20013 20013 Halon-1301 -20014 20014 Halon-2402 -20015 20015 Methyl chloride (HCC-40) -20016 20016 Carbon tetrachloride (HCC-10) -20017 20017 HCC-140a -20018 20018 Methyl bromide (HBC-40B1) -20019 20019 Hexachlorocyclohexane (HCH) -20020 20020 Alpha hexachlorocyclohexane -20021 20021 Hexachlorobiphenyl (PCB-153) -#20022-29999 Reserved -30000 30000 Radioactive pollutant (tracer, defined by originating centre) -#30001-30009 Reserved -30010 30010 Hydrogen H-3 -30011 30011 Hydrogen organic bounded H-3o -30012 30012 Hydrogen inorganic H-3a -30013 30013 Beryllium 7 Be-7 -30014 30014 Beryllium 10 Be-10 -30015 30015 Carbon 14 C-14 -30016 30016 Carbon 14 CO2 C-14CO2 -30017 30017 Carbon 14 other gases C-14og -30018 30018 Nitrogen 13 N-13 -30019 30019 Nitrogen 16 N-16 -30020 30020 Fluorine 18 F-18 -30021 30021 Sodium 22 Na-22 -30022 30022 Phosphate 32 P-32 -30023 30023 Phosphate 33 P-33 -30024 30024 Sulfur 35 S-35 -30025 30025 Chlorine 36 Cl-36 -30026 30026 Potassium 40 K-40 -30027 30027 Argon 41 Ar-41 -30028 30028 Calcium 41 Ca-41 -30029 30029 Calcium 45 Ca-45 -30030 30030 Titanium 44 -30031 30031 Scandium 46 Sc-46 -30032 30032 Vanadium 48 V-48 -30033 30033 Vanadium 49 V-49 -30034 30034 Chrome 51 Cr-51 -30035 30035 Manganese 52 Mn-52 -30036 30036 Manganese 54 Mn-54 -30037 30037 Iron 55 Fe-55 -30038 30038 Iron 59 Fe-59 -30039 30039 Cobalt 56 Co-56 -30040 30040 Cobalt 57 Co-57 -30041 30041 Cobalt 58 Co-58 -30042 30042 Cobalt 60 Co-60 -30043 30043 Nickel 59 Ni-59 -30044 30044 Nickel 63 Ni-63 -30045 30045 Zinc 65 Zn-65 -30046 30046 Gallium 67 Ga-67 -30047 30047 Gallium 68 Ga-68 -30048 30048 Germanium 68 Ge-68 -30049 30049 Germanium 69 Ge-69 -30050 30050 Arsenic 73 As-73 -30051 30051 Selenium 75 Se-75 -30052 30052 Selenium 79 Se-79 -30053 30053 Rubidium 81 Rb-81 -30054 30054 Rubidium 83 Rb-83 -30055 30055 Rubidium 84 Rb-84 -30056 30056 Rubidium 86 Rb-86 -30057 30057 Rubidium 87 Rb-87 -30058 30058 Rubidium 88 Rb-88 -30059 30059 Krypton 85 Kr-85 -30060 30060 Krypton 85 metastable Kr-85m -30061 30061 Krypton 87 Kr-87 -30062 30062 Krypton 88 Kr-88 -30063 30063 Krypton 89 Kr-89 -30064 30064 Strontium 85 Sr-85 -30065 30065 Strontium 89 Sr-89 -30066 30066 Strontium 89/90 Sr-8990 -30067 30067 Strontium 90 Sr-90 -30068 30068 Strontium 91 Sr-91 -30069 30069 Strontium 92 Sr-92 -30070 30070 Yttrium 87 Y-87 -30071 30071 Yttrium 88 Y-88 -30072 30072 Yttrium 90 Y-90 -30073 30073 Yttrium 91 Y-91 -30074 30074 Yttrium 91 metastable Y-91m -30075 30075 Yttrium 92 Y-92 -30076 30076 Yttrium 93 Y-93 -30077 30077 Zirconium 89 Zr-89 -30078 30078 Zirconium 93 Zr-93 -30079 30079 Zirconium 95 Zr-95 -30080 30080 Zirconium 97 Zr-97 -30081 30081 Niobium 93 metastable Nb-93m -30082 30082 Niobium 94 Nb-94 -30083 30083 Niobium 95 Nb-95 -30084 30084 Niobium 95 metastable Nb-95m -30085 30085 Niobium 97 Nb-97 -30086 30086 Niobium 97 metastable Nb-97m -30087 30087 Molybdenum 93 Mo-93 -30088 30088 Molybdenum 99 Mo-99 -30089 30089 Technetium 95 metastable Tc-95m -30090 30090 Technetium 96 Tc-96 -30091 30091 Technetium 99 Tc-99 -30092 30092 Technetium 99 metastable Tc-99m -30093 30093 Rhodium 99 Rh-99 -30094 30094 Rhodium 101 Rh-101 -30095 30095 Rhodium 102 metastable Rh-102m -30096 30096 Rhodium 103 metastable Rh-103m -30097 30097 Rhodium 105 Rh-105 -30098 30098 Rhodium 106 Rh-106 -30099 30099 Palladium 100 Pd-100 -30100 30100 Palladium 103 Pd-103 -30101 30101 Palladium 107 Pd-107 -30102 30102 Ruthenium 103 Ru-103 -30103 30103 Ruthenium 105 Ru-105 -30104 30104 Ruthenium 106 Ru-106 -30105 30105 Silver 108 metastable Ag-108m -30106 30106 Silver 110 metastable Ag-110m -30107 30107 Cadmium 109 Cd-109 -30108 30108 Cadmium 113 metastable Cd-113m -30109 30109 Cadmium 115 metastable Cd-115m -30110 30110 Indium 114 metastable In-114m -30111 30111 Tin 113 Sn-113 -30112 30112 Tin 119 metastable Sn-119m -30113 30113 Tin 121 metastable Sn-121m -30114 30114 Tin 122 Sn-122 -30115 30115 Tin 123 Sn-123 -30116 30116 Tin 126 Sn-126 -30117 30117 Antimony 124 Sb-124 -30118 30118 Antimony 125 Sb-125 -30119 30119 Antimony 126 Sb-126 -30120 30120 Antimony 127 Sb-127 -30121 30121 Antimony 129 Sb-129 -30122 30122 Tellurium 123 metastable Te-123m -30123 30123 Tellurium 125 metastable Te-125m -30124 30124 Tellurium 127 Te-127 -30125 30125 Tellurium 127 metastable Te-127m -30126 30126 Tellurium 129 Te-129 -30127 30127 Tellurium 129 metastable Te-129m -30128 30128 Tellurium 131 metastable Te-131m -30129 30129 Tellurium 132 Te-132 -30130 30130 Iodine 123 I-123 -30131 30131 Iodine 124 I-124 -30132 30132 Iodine 125 I-125 -30133 30133 Iodine 126 I-126 -30134 30134 Iodine 129 I-129 -30135 30135 Iodine 129 elementary gaseous I-129g -30136 30136 Iodine 129 organic bounded I-129o -30137 30137 Iodine 131 I-131 -30138 30138 Iodine 131 elementary gaseous I-131g -30139 30139 Iodine 131 organic bounded I-131o -30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go -30141 30141 Iodine 131 aerosol I-131a -30142 30142 Iodine 132 I-132 -30143 30143 Iodine 132 elementary gaseous I-132g -30144 30144 Iodine 132 organic bounded I-132o -30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go -30146 30146 Iodine 132 aerosol I-132a -30147 30147 Iodine 133 I-133 -30148 30148 Iodine 133 elementary gaseous I-133g -30149 30149 Iodine 133 organic bounded I-133o -30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go -30151 30151 Iodine 133 aerosol I-133a -30152 30152 Iodine 134 I-134 -30153 30153 Iodine 134 elementary gaseous I-134g -30154 30154 Iodine 134 organic bounded I-134o -30155 30155 Iodine 135 I-135 -30156 30156 Iodine 135 elementary gaseous I-135g -30157 30157 Iodine 135 organic bounded I-135o -30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go -30159 30159 Iodine 135 aerosol I-135a -30160 30160 Xenon 131 metastable Xe-131m -30161 30161 Xenon 133 Xe-133 -30162 30162 Xenon 133 metastable Xe-133m -30163 30163 Xenon 135 Xe-135 -30164 30164 Xenon 135 metastable Xe-135m -30165 30165 Xenon 137 Xe-137 -30166 30166 Xenon 138 Xe-138 -30167 30167 Xenon sum of all Xenon isotopes Xe-sum -30168 30168 Caesium 131 Cs-131 -30169 30169 Caesium 134 Cs-134 -30170 30170 Caesium 135 Cs-135 -30171 30171 Caesium 136 Cs-136 -30172 30172 Caesium 137 Cs-137 -30173 30173 Barium 133 Ba-133 -30174 30174 Barium 137 metastable Ba-137m -30175 30175 Barium 140 Ba-140 -30176 30176 Cerium 139 Ce-139 -30177 30177 Cerium 141 Ce-141 -30178 30178 Cerium 143 Ce-143 -30179 30179 Cerium 144 Ce-144 -30180 30180 Lanthanum 140 La-140 -30181 30181 Lanthanum 141 La-141 -30182 30182 Praseodymium 143 Pr-143 -30183 30183 Praseodymium 144 Pr-144 -30184 30184 Praseodymium 144 metastable Pr-144m -30185 30185 Samarium 145 Sm-145 -30186 30186 Samarium 147 Sm-147 -30187 30187 Samarium 151 Sm-151 -30188 30188 Neodymium 147 Nd-147 -30189 30189 Promethium 146 Pm-146 -30190 30190 Promethium 147 Pm-147 -30191 30191 Promethium 151 Pm-151 -30192 30192 Europium 152 Eu-152 -30193 30193 Europium 154 Eu-154 -30194 30194 Europium 155 Eu-155 -30195 30195 Gadolinium 153 Gd-153 -30196 30196 Terbium 160 Tb-160 -30197 30197 Holmium 166 metastable Ho-166m -30198 30198 Thulium 170 Tm-170 -30199 30199 Ytterbium 169 Yb-169 -30200 30200 Hafnium 175 Hf-175 -30201 30201 Hafnium 181 Hf-181 -30202 30202 Tantalum 179 Ta-179 -30203 30203 Tantalum 182 Ta-182 -30204 30204 Rhenium 184 Re-184 -30205 30205 Iridium 192 Ir-192 -30206 30206 Mercury 203 Hg-203 -30207 30207 Thallium 204 Tl-204 -30208 30208 Thallium 207 Tl-207 -30209 30209 Thallium 208 Tl-208 -30210 30210 Thallium 209 Tl-209 -30211 30211 Bismuth 205 Bi-205 -30212 30212 Bismuth 207 Bi-207 -30213 30213 Bismuth 210 Bi-210 -30214 30214 Bismuth 211 Bi-211 -30215 30215 Bismuth 212 Bi-212 -30216 30216 Bismuth 213 Bi-213 -30217 30217 Bismuth 214 Bi-214 -30218 30218 Polonium 208 Po-208 -30219 30219 Polonium 210 Po-210 -30220 30220 Polonium 212 Po-212 -30221 30221 Polonium 213 Po-213 -30222 30222 Polonium 214 Po-214 -30223 30223 Polonium 215 Po-215 -30224 30224 Polonium 216 Po-216 -30225 30225 Polonium 218 Po-218 -30226 30226 Lead 209 Pb-209 -30227 30227 Lead 210 Pb-210 -30228 30228 Lead 211 Pb-211 -30229 30229 Lead 212 Pb-212 -30230 30230 Lead 214 Pb-214 -30231 30231 Astatine 217 At-217 -30232 30232 Radon 219 Rn-219 -30233 30233 Radon 220 Rn-220 -30234 30234 Radon 222 Rn-222 -30235 30235 Francium 221 Fr-221 -30236 30236 Francium 223 Fr-223 -30237 30237 Radium 223 Ra-223 -30238 30238 Radium 224 Ra-224 -30239 30239 Radium 225 Ra-225 -30240 30240 Radium 226 Ra-226 -30241 30241 Radium 228 Ra-228 -30242 30242 Actinium 225 Ac-225 -30243 30243 Actinium 227 Ac-227 -30244 30244 Actinium 228 Ac-228 -30245 30245 Thorium 227 Th-227 -30246 30246 Thorium 228 Th-228 -30247 30247 Thorium 229 Th-229 -30248 30248 Thorium 230 Th-230 -30249 30249 Thorium 231 Th-231 -30250 30250 Thorium 232 Th-232 -30251 30251 Thorium 234 Th-234 -30252 30252 Protactinium 231 Pa-231 -30253 30253 Protactinium 233 Pa-233 -30254 30254 Protactinium 234 metastable Pa-234m -30255 30255 Uranium 232 U-232 -30256 30256 Uranium 233 U-233 -30257 30257 Uranium 234 U-234 -30258 30258 Uranium 235 U-235 -30259 30259 Uranium 236 U-236 -30260 30260 Uranium 237 U-237 -30261 30261 Uranium 238 U-238 -30262 30262 Plutonium 236 Pu-236 -30263 30263 Plutonium 238 Pu-238 -30264 30264 Plutonium 239 Pu-239 -30265 30265 Plutonium 240 Pu-240 -30266 30266 Plutonium 241 Pu-241 -30267 30267 Plutonium 242 Pu-242 -30268 30268 Plutonium 244 Pu-244 -30269 30269 Neptunium 237 Np-237 -30270 30270 Neptunium 238 Np-238 -30271 30271 Neptunium 239 Np-239 -30272 30272 Americium 241 Am-241 -30273 30273 Americium 242 Am-242 -30274 30274 Americium 242 metastable Am-242m -30275 30275 Americium 243 Am-243 -30276 30276 Curium 242 Cm-242 -30277 30277 Curium 243 Cm-243 -30278 30278 Curium 244 Cm-244 -30279 30279 Curium 245 Cm-245 -30280 30280 Curium 246 Cm-246 -30281 30281 Curium 247 Cm-247 -30282 30282 Curium 248 Cm-248 -30283 30283 Curium 243/244 Cm-243244 -30284 30284 Plutonium 238/Americium 241 Pu-238Am-241 -30285 30285 Plutonium 239/240 Pu-239240 -30286 30286 Berkelium 249 Bk-249 -30287 30287 Californium 249 Cf-249 -30288 30288 Californium 250 Cf-250 -30289 30289 Californium 252 Cf-252 -30290 30290 Sum aerosol particulates SumAer -30291 30291 Sum Iodine SumIod -30292 30292 Sum noble gas SumNG -30293 30293 Activation gas ActGas -30294 30294 Cs-137 Equivalent EquCs137 -#30295-59999 Reserved -60000 60000 HOx radical (OH+HO2) -60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2) -60002 60002 Passive Ozone -60003 60003 NOx expressed as nitrogen NOx -60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy -60005 60005 Total inorganic chlorine Clx -60006 60006 Total inorganic bromine Brx -60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx -60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx -60009 60009 Lumped alkanes -60010 60010 Lumped alkenes -60011 60011 Lumped aromatic compounds -60012 60012 Lumped terpenes -60013 60013 Non-methane volatile organic compounds expressed as carbon -60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon -60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon -60016 60016 Lumped oxygenated hydrocarbons -60017 60017 NOx expressed as nitrogen dioxide (NO2) -#60018-61999 Reserved -62000 62000 Total aerosol -62001 62001 Dust dry -62002 62002 Water in ambient -62003 62003 Ammonium dry -62004 62004 Nitrate dry -62005 62005 Nitric acid trihydrate -62006 62006 Sulphate dry -62007 62007 Mercury dry -62008 62008 Sea salt dry -62009 62009 Black carbon dry -62010 62010 Particulate organic matter dry -62011 62011 Primary particulate organic matter dry -62012 62012 Secondary particulate organic matter dry -62013 62013 Black carbon hydrophilic dry -62014 62014 Black carbon hydrophobic dry -62015 62015 Particulate organic matter hydrophilic dry -62016 62016 Particulate organic matter hydrophobic dry -62017 62017 Nitrate hydrophilic dry -62018 62018 Nitrate hydrophobic dry -62019 62019 Reserved -62020 62020 Smoke - high absorption -62021 62021 Smoke - low absorption -62022 62022 Aerosol - high absorption -62023 62023 Aerosol - low absorption -# 62024-65534 Reserved +# (See Common Code table C-14) 65535 65535 Missing diff --git a/definitions/grib2/tables/13/4.233.table b/definitions/grib2/tables/13/4.233.table index b86d59076..d63f673bb 100644 --- a/definitions/grib2/tables/13/4.233.table +++ b/definitions/grib2/tables/13/4.233.table @@ -1,421 +1,3 @@ # Code table 4.233 - Aerosol type -0 0 Ozone -1 1 Water vapour -2 2 Methane -3 3 Carbon dioxide -4 4 Carbon monoxide -5 5 Nitrogen dioxide -6 6 Nitrous oxide -7 7 Formaldehyde -8 8 Sulphur dioxide -9 9 Ammonia -10 10 Ammonium -11 11 Nitrogen monoxide -12 12 Atomic oxygen -13 13 Nitrate radical -14 14 Hydroperoxyl radical -15 15 Dinitrogen pentoxide -16 16 Nitrous acid -17 17 Nitric acid -18 18 Peroxynitric acid -19 19 Hydrogen peroxide -20 20 Molecular hydrogen -21 21 Atomic nitrogen -22 22 Sulphate -23 23 Radon -24 24 Elemental mercury -25 25 Divalent mercury -26 26 Atomic chlorine -27 27 Chlorine monoxide -28 28 Dichlorine peroxide -29 29 Hypochlorous acid -30 30 Chlorine nitrate -31 31 Chlorine dioxide -32 32 Atomic bromine -33 33 Bromine monoxide -34 34 Bromine chloride -35 35 Hydrogen bromide -36 36 Hypobromous acid -37 37 Bromine nitrate -#38-9999 Reserved -10000 10000 Hydroxyl radical -10001 10001 Methyl peroxy radical -10002 10002 Methyl hydroperoxide -10004 10004 Methanol -10005 10005 Formic acid -10006 10006 Hydrogen cyanide -10007 10007 Aceto nitrile -10008 10008 Ethane -10009 10009 Ethene (= Ethylene) -10010 10010 Ethyne (= Acetylene) -10011 10011 Ethanol -10012 10012 Acetic acid -10013 10013 Peroxyacetyl nitrate -10014 10014 Propane -10015 10015 Propene -10016 10016 Butanes -10017 10017 Isoprene -10018 10018 Alpha pinene -10019 10019 Beta pinene -10020 10020 Limonene -10021 10021 Benzene -10022 10022 Toluene -10023 10023 Xylene -#10024-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides...) -10500 10500 Dimethyl sulphide -#10501-20000 Reserved -20001 20001 Hydrogen chloride -20002 20002 CFC-11 -20003 20003 CFC-12 -20004 20004 CFC-113 -20005 20005 CFC-113a -20006 20006 CFC-114 -20007 20007 CFC-115 -20008 20008 HCFC-22 -20009 20009 HCFC-141b -20010 20010 HCFC-142b -20011 20011 Halon-1202 -20012 20012 Halon-1211 -20013 20013 Halon-1301 -20014 20014 Halon-2402 -20015 20015 Methyl chloride (HCC-40) -20016 20016 Carbon tetrachloride (HCC-10) -20017 20017 HCC-140a -20018 20018 Methyl bromide (HBC-40B1) -20019 20019 Hexachlorocyclohexane (HCH) -20020 20020 Alpha hexachlorocyclohexane -20021 20021 Hexachlorobiphenyl (PCB-153) -#20022-29999 Reserved -30000 30000 Radioactive pollutant (tracer, defined by originating centre) -#30001-30009 Reserved -30010 30010 Hydrogen H-3 -30011 30011 Hydrogen organic bounded H-3o -30012 30012 Hydrogen inorganic H-3a -30013 30013 Beryllium 7 Be-7 -30014 30014 Beryllium 10 Be-10 -30015 30015 Carbon 14 C-14 -30016 30016 Carbon 14 CO2 C-14CO2 -30017 30017 Carbon 14 other gases C-14og -30018 30018 Nitrogen 13 N-13 -30019 30019 Nitrogen 16 N-16 -30020 30020 Fluorine 18 F-18 -30021 30021 Sodium 22 Na-22 -30022 30022 Phosphate 32 P-32 -30023 30023 Phosphate 33 P-33 -30024 30024 Sulfur 35 S-35 -30025 30025 Chlorine 36 Cl-36 -30026 30026 Potassium 40 K-40 -30027 30027 Argon 41 Ar-41 -30028 30028 Calcium 41 Ca-41 -30029 30029 Calcium 45 Ca-45 -30030 30030 Titanium 44 -30031 30031 Scandium 46 Sc-46 -30032 30032 Vanadium 48 V-48 -30033 30033 Vanadium 49 V-49 -30034 30034 Chrome 51 Cr-51 -30035 30035 Manganese 52 Mn-52 -30036 30036 Manganese 54 Mn-54 -30037 30037 Iron 55 Fe-55 -30038 30038 Iron 59 Fe-59 -30039 30039 Cobalt 56 Co-56 -30040 30040 Cobalt 57 Co-57 -30041 30041 Cobalt 58 Co-58 -30042 30042 Cobalt 60 Co-60 -30043 30043 Nickel 59 Ni-59 -30044 30044 Nickel 63 Ni-63 -30045 30045 Zinc 65 Zn-65 -30046 30046 Gallium 67 Ga-67 -30047 30047 Gallium 68 Ga-68 -30048 30048 Germanium 68 Ge-68 -30049 30049 Germanium 69 Ge-69 -30050 30050 Arsenic 73 As-73 -30051 30051 Selenium 75 Se-75 -30052 30052 Selenium 79 Se-79 -30053 30053 Rubidium 81 Rb-81 -30054 30054 Rubidium 83 Rb-83 -30055 30055 Rubidium 84 Rb-84 -30056 30056 Rubidium 86 Rb-86 -30057 30057 Rubidium 87 Rb-87 -30058 30058 Rubidium 88 Rb-88 -30059 30059 Krypton 85 Kr-85 -30060 30060 Krypton 85 metastable Kr-85m -30061 30061 Krypton 87 Kr-87 -30062 30062 Krypton 88 Kr-88 -30063 30063 Krypton 89 Kr-89 -30064 30064 Strontium 85 Sr-85 -30065 30065 Strontium 89 Sr-89 -30066 30066 Strontium 89/90 Sr-8990 -30067 30067 Strontium 90 Sr-90 -30068 30068 Strontium 91 Sr-91 -30069 30069 Strontium 92 Sr-92 -30070 30070 Yttrium 87 Y-87 -30071 30071 Yttrium 88 Y-88 -30072 30072 Yttrium 90 Y-90 -30073 30073 Yttrium 91 Y-91 -30074 30074 Yttrium 91 metastable Y-91m -30075 30075 Yttrium 92 Y-92 -30076 30076 Yttrium 93 Y-93 -30077 30077 Zirconium 89 Zr-89 -30078 30078 Zirconium 93 Zr-93 -30079 30079 Zirconium 95 Zr-95 -30080 30080 Zirconium 97 Zr-97 -30081 30081 Niobium 93 metastable Nb-93m -30082 30082 Niobium 94 Nb-94 -30083 30083 Niobium 95 Nb-95 -30084 30084 Niobium 95 metastable Nb-95m -30085 30085 Niobium 97 Nb-97 -30086 30086 Niobium 97 metastable Nb-97m -30087 30087 Molybdenum 93 Mo-93 -30088 30088 Molybdenum 99 Mo-99 -30089 30089 Technetium 95 metastable Tc-95m -30090 30090 Technetium 96 Tc-96 -30091 30091 Technetium 99 Tc-99 -30092 30092 Technetium 99 metastable Tc-99m -30093 30093 Rhodium 99 Rh-99 -30094 30094 Rhodium 101 Rh-101 -30095 30095 Rhodium 102 metastable Rh-102m -30096 30096 Rhodium 103 metastable Rh-103m -30097 30097 Rhodium 105 Rh-105 -30098 30098 Rhodium 106 Rh-106 -30099 30099 Palladium 100 Pd-100 -30100 30100 Palladium 103 Pd-103 -30101 30101 Palladium 107 Pd-107 -30102 30102 Ruthenium 103 Ru-103 -30103 30103 Ruthenium 105 Ru-105 -30104 30104 Ruthenium 106 Ru-106 -30105 30105 Silver 108 metastable Ag-108m -30106 30106 Silver 110 metastable Ag-110m -30107 30107 Cadmium 109 Cd-109 -30108 30108 Cadmium 113 metastable Cd-113m -30109 30109 Cadmium 115 metastable Cd-115m -30110 30110 Indium 114 metastable In-114m -30111 30111 Tin 113 Sn-113 -30112 30112 Tin 119 metastable Sn-119m -30113 30113 Tin 121 metastable Sn-121m -30114 30114 Tin 122 Sn-122 -30115 30115 Tin 123 Sn-123 -30116 30116 Tin 126 Sn-126 -30117 30117 Antimony 124 Sb-124 -30118 30118 Antimony 125 Sb-125 -30119 30119 Antimony 126 Sb-126 -30120 30120 Antimony 127 Sb-127 -30121 30121 Antimony 129 Sb-129 -30122 30122 Tellurium 123 metastable Te-123m -30123 30123 Tellurium 125 metastable Te-125m -30124 30124 Tellurium 127 Te-127 -30125 30125 Tellurium 127 metastable Te-127m -30126 30126 Tellurium 129 Te-129 -30127 30127 Tellurium 129 metastable Te-129m -30128 30128 Tellurium 131 metastable Te-131m -30129 30129 Tellurium 132 Te-132 -30130 30130 Iodine 123 I-123 -30131 30131 Iodine 124 I-124 -30132 30132 Iodine 125 I-125 -30133 30133 Iodine 126 I-126 -30134 30134 Iodine 129 I-129 -30135 30135 Iodine 129 elementary gaseous I-129g -30136 30136 Iodine 129 organic bounded I-129o -30137 30137 Iodine 131 I-131 -30138 30138 Iodine 131 elementary gaseous I-131g -30139 30139 Iodine 131 organic bounded I-131o -30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go -30141 30141 Iodine 131 aerosol I-131a -30142 30142 Iodine 132 I-132 -30143 30143 Iodine 132 elementary gaseous I-132g -30144 30144 Iodine 132 organic bounded I-132o -30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go -30146 30146 Iodine 132 aerosol I-132a -30147 30147 Iodine 133 I-133 -30148 30148 Iodine 133 elementary gaseous I-133g -30149 30149 Iodine 133 organic bounded I-133o -30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go -30151 30151 Iodine 133 aerosol I-133a -30152 30152 Iodine 134 I-134 -30153 30153 Iodine 134 elementary gaseous I-134g -30154 30154 Iodine 134 organic bounded I-134o -30155 30155 Iodine 135 I-135 -30156 30156 Iodine 135 elementary gaseous I-135g -30157 30157 Iodine 135 organic bounded I-135o -30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go -30159 30159 Iodine 135 aerosol I-135a -30160 30160 Xenon 131 metastable Xe-131m -30161 30161 Xenon 133 Xe-133 -30162 30162 Xenon 133 metastable Xe-133m -30163 30163 Xenon 135 Xe-135 -30164 30164 Xenon 135 metastable Xe-135m -30165 30165 Xenon 137 Xe-137 -30166 30166 Xenon 138 Xe-138 -30167 30167 Xenon sum of all Xenon isotopes Xe-sum -30168 30168 Caesium 131 Cs-131 -30169 30169 Caesium 134 Cs-134 -30170 30170 Caesium 135 Cs-135 -30171 30171 Caesium 136 Cs-136 -30172 30172 Caesium 137 Cs-137 -30173 30173 Barium 133 Ba-133 -30174 30174 Barium 137 metastable Ba-137m -30175 30175 Barium 140 Ba-140 -30176 30176 Cerium 139 Ce-139 -30177 30177 Cerium 141 Ce-141 -30178 30178 Cerium 143 Ce-143 -30179 30179 Cerium 144 Ce-144 -30180 30180 Lanthanum 140 La-140 -30181 30181 Lanthanum 141 La-141 -30182 30182 Praseodymium 143 Pr-143 -30183 30183 Praseodymium 144 Pr-144 -30184 30184 Praseodymium 144 metastable Pr-144m -30185 30185 Samarium 145 Sm-145 -30186 30186 Samarium 147 Sm-147 -30187 30187 Samarium 151 Sm-151 -30188 30188 Neodymium 147 Nd-147 -30189 30189 Promethium 146 Pm-146 -30190 30190 Promethium 147 Pm-147 -30191 30191 Promethium 151 Pm-151 -30192 30192 Europium 152 Eu-152 -30193 30193 Europium 154 Eu-154 -30194 30194 Europium 155 Eu-155 -30195 30195 Gadolinium 153 Gd-153 -30196 30196 Terbium 160 Tb-160 -30197 30197 Holmium 166 metastable Ho-166m -30198 30198 Thulium 170 Tm-170 -30199 30199 Ytterbium 169 Yb-169 -30200 30200 Hafnium 175 Hf-175 -30201 30201 Hafnium 181 Hf-181 -30202 30202 Tantalum 179 Ta-179 -30203 30203 Tantalum 182 Ta-182 -30204 30204 Rhenium 184 Re-184 -30205 30205 Iridium 192 Ir-192 -30206 30206 Mercury 203 Hg-203 -30207 30207 Thallium 204 Tl-204 -30208 30208 Thallium 207 Tl-207 -30209 30209 Thallium 208 Tl-208 -30210 30210 Thallium 209 Tl-209 -30211 30211 Bismuth 205 Bi-205 -30212 30212 Bismuth 207 Bi-207 -30213 30213 Bismuth 210 Bi-210 -30214 30214 Bismuth 211 Bi-211 -30215 30215 Bismuth 212 Bi-212 -30216 30216 Bismuth 213 Bi-213 -30217 30217 Bismuth 214 Bi-214 -30218 30218 Polonium 208 Po-208 -30219 30219 Polonium 210 Po-210 -30220 30220 Polonium 212 Po-212 -30221 30221 Polonium 213 Po-213 -30222 30222 Polonium 214 Po-214 -30223 30223 Polonium 215 Po-215 -30224 30224 Polonium 216 Po-216 -30225 30225 Polonium 218 Po-218 -30226 30226 Lead 209 Pb-209 -30227 30227 Lead 210 Pb-210 -30228 30228 Lead 211 Pb-211 -30229 30229 Lead 212 Pb-212 -30230 30230 Lead 214 Pb-214 -30231 30231 Astatine 217 At-217 -30232 30232 Radon 219 Rn-219 -30233 30233 Radon 220 Rn-220 -30234 30234 Radon 222 Rn-222 -30235 30235 Francium 221 Fr-221 -30236 30236 Francium 223 Fr-223 -30237 30237 Radium 223 Ra-223 -30238 30238 Radium 224 Ra-224 -30239 30239 Radium 225 Ra-225 -30240 30240 Radium 226 Ra-226 -30241 30241 Radium 228 Ra-228 -30242 30242 Actinium 225 Ac-225 -30243 30243 Actinium 227 Ac-227 -30244 30244 Actinium 228 Ac-228 -30245 30245 Thorium 227 Th-227 -30246 30246 Thorium 228 Th-228 -30247 30247 Thorium 229 Th-229 -30248 30248 Thorium 230 Th-230 -30249 30249 Thorium 231 Th-231 -30250 30250 Thorium 232 Th-232 -30251 30251 Thorium 234 Th-234 -30252 30252 Protactinium 231 Pa-231 -30253 30253 Protactinium 233 Pa-233 -30254 30254 Protactinium 234 metastable Pa-234m -30255 30255 Uranium 232 U-232 -30256 30256 Uranium 233 U-233 -30257 30257 Uranium 234 U-234 -30258 30258 Uranium 235 U-235 -30259 30259 Uranium 236 U-236 -30260 30260 Uranium 237 U-237 -30261 30261 Uranium 238 U-238 -30262 30262 Plutonium 236 Pu-236 -30263 30263 Plutonium 238 Pu-238 -30264 30264 Plutonium 239 Pu-239 -30265 30265 Plutonium 240 Pu-240 -30266 30266 Plutonium 241 Pu-241 -30267 30267 Plutonium 242 Pu-242 -30268 30268 Plutonium 244 Pu-244 -30269 30269 Neptunium 237 Np-237 -30270 30270 Neptunium 238 Np-238 -30271 30271 Neptunium 239 Np-239 -30272 30272 Americium 241 Am-241 -30273 30273 Americium 242 Am-242 -30274 30274 Americium 242 metastable Am-242m -30275 30275 Americium 243 Am-243 -30276 30276 Curium 242 Cm-242 -30277 30277 Curium 243 Cm-243 -30278 30278 Curium 244 Cm-244 -30279 30279 Curium 245 Cm-245 -30280 30280 Curium 246 Cm-246 -30281 30281 Curium 247 Cm-247 -30282 30282 Curium 248 Cm-248 -30283 30283 Curium 243/244 Cm-243244 -30284 30284 Plutonium 238/Americium 241 Pu-238Am-241 -30285 30285 Plutonium 239/240 Pu-239240 -30286 30286 Berkelium 249 Bk-249 -30287 30287 Californium 249 Cf-249 -30288 30288 Californium 250 Cf-250 -30289 30289 Californium 252 Cf-252 -30290 30290 Sum aerosol particulates SumAer -30291 30291 Sum Iodine SumIod -30292 30292 Sum noble gas SumNG -30293 30293 Activation gas ActGas -30294 30294 Cs-137 Equivalent EquCs137 -#30295-59999 Reserved -60000 60000 HOx radical (OH+HO2) -60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2) -60002 60002 Passive Ozone -60003 60003 NOx expressed as nitrogen NOx -60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy -60005 60005 Total inorganic chlorine Clx -60006 60006 Total inorganic bromine Brx -60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx -60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx -60009 60009 Lumped alkanes -60010 60010 Lumped alkenes -60011 60011 Lumped aromatic compounds -60012 60012 Lumped terpenes -60013 60013 Non-methane volatile organic compounds expressed as carbon -60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon -60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon -60016 60016 Lumped oxygenated hydrocarbons -60017 60017 NOx expressed as nitrogen dioxide (NO2) -#60018-61999 Reserved -62000 62000 Total aerosol -62001 62001 Dust dry -62002 62002 Water in ambient -62003 62003 Ammonium dry -62004 62004 Nitrate dry -62005 62005 Nitric acid trihydrate -62006 62006 Sulphate dry -62007 62007 Mercury dry -62008 62008 Sea salt dry -62009 62009 Black carbon dry -62010 62010 Particulate organic matter dry -62011 62011 Primary particulate organic matter dry -62012 62012 Secondary particulate organic matter dry -62013 62013 Black carbon hydrophilic dry -62014 62014 Black carbon hydrophobic dry -62015 62015 Particulate organic matter hydrophilic dry -62016 62016 Particulate organic matter hydrophobic dry -62017 62017 Nitrate hydrophilic dry -62018 62018 Nitrate hydrophobic dry -62019 62019 Reserved -62020 62020 Smoke - high absorption -62021 62021 Smoke - low absorption -62022 62022 Aerosol - high absorption -62023 62023 Aerosol - low absorption -# 62024-65534 Reserved +# (See Common Code table C-14) 65535 65535 Missing diff --git a/definitions/grib2/tables/14/4.230.table b/definitions/grib2/tables/14/4.230.table index 323a3a3bd..5c39a79b9 100644 --- a/definitions/grib2/tables/14/4.230.table +++ b/definitions/grib2/tables/14/4.230.table @@ -1,421 +1,3 @@ # Code table 4.230 - Atmospheric chemical constituent type -0 0 Ozone -1 1 Water vapour -2 2 Methane -3 3 Carbon dioxide -4 4 Carbon monoxide -5 5 Nitrogen dioxide -6 6 Nitrous oxide -7 7 Formaldehyde -8 8 Sulphur dioxide -9 9 Ammonia -10 10 Ammonium -11 11 Nitrogen monoxide -12 12 Atomic oxygen -13 13 Nitrate radical -14 14 Hydroperoxyl radical -15 15 Dinitrogen pentoxide -16 16 Nitrous acid -17 17 Nitric acid -18 18 Peroxynitric acid -19 19 Hydrogen peroxide -20 20 Molecular hydrogen -21 21 Atomic nitrogen -22 22 Sulphate -23 23 Radon -24 24 Elemental mercury -25 25 Divalent mercury -26 26 Atomic chlorine -27 27 Chlorine monoxide -28 28 Dichlorine peroxide -29 29 Hypochlorous acid -30 30 Chlorine nitrate -31 31 Chlorine dioxide -32 32 Atomic bromine -33 33 Bromine monoxide -34 34 Bromine chloride -35 35 Hydrogen bromide -36 36 Hypobromous acid -37 37 Bromine nitrate -#38-9999 Reserved -10000 10000 Hydroxyl radical -10001 10001 Methyl peroxy radical -10002 10002 Methyl hydroperoxide -10004 10004 Methanol -10005 10005 Formic acid -10006 10006 Hydrogen cyanide -10007 10007 Aceto nitrile -10008 10008 Ethane -10009 10009 Ethene (= Ethylene) -10010 10010 Ethyne (= Acetylene) -10011 10011 Ethanol -10012 10012 Acetic acid -10013 10013 Peroxyacetyl nitrate -10014 10014 Propane -10015 10015 Propene -10016 10016 Butanes -10017 10017 Isoprene -10018 10018 Alpha pinene -10019 10019 Beta pinene -10020 10020 Limonene -10021 10021 Benzene -10022 10022 Toluene -10023 10023 Xylene -#10024-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides...) -10500 10500 Dimethyl sulphide -#10501-20000 Reserved -20001 20001 Hydrogen chloride -20002 20002 CFC-11 -20003 20003 CFC-12 -20004 20004 CFC-113 -20005 20005 CFC-113a -20006 20006 CFC-114 -20007 20007 CFC-115 -20008 20008 HCFC-22 -20009 20009 HCFC-141b -20010 20010 HCFC-142b -20011 20011 Halon-1202 -20012 20012 Halon-1211 -20013 20013 Halon-1301 -20014 20014 Halon-2402 -20015 20015 Methyl chloride (HCC-40) -20016 20016 Carbon tetrachloride (HCC-10) -20017 20017 HCC-140a -20018 20018 Methyl bromide (HBC-40B1) -20019 20019 Hexachlorocyclohexane (HCH) -20020 20020 Alpha hexachlorocyclohexane -20021 20021 Hexachlorobiphenyl (PCB-153) -#20022-29999 Reserved -30000 30000 Radioactive pollutant (tracer, defined by originating centre) -#30001-30009 Reserved -30010 30010 Hydrogen H-3 -30011 30011 Hydrogen organic bounded H-3o -30012 30012 Hydrogen inorganic H-3a -30013 30013 Beryllium 7 Be-7 -30014 30014 Beryllium 10 Be-10 -30015 30015 Carbon 14 C-14 -30016 30016 Carbon 14 CO2 C-14CO2 -30017 30017 Carbon 14 other gases C-14og -30018 30018 Nitrogen 13 N-13 -30019 30019 Nitrogen 16 N-16 -30020 30020 Fluorine 18 F-18 -30021 30021 Sodium 22 Na-22 -30022 30022 Phosphate 32 P-32 -30023 30023 Phosphate 33 P-33 -30024 30024 Sulfur 35 S-35 -30025 30025 Chlorine 36 Cl-36 -30026 30026 Potassium 40 K-40 -30027 30027 Argon 41 Ar-41 -30028 30028 Calcium 41 Ca-41 -30029 30029 Calcium 45 Ca-45 -30030 30030 Titanium 44 -30031 30031 Scandium 46 Sc-46 -30032 30032 Vanadium 48 V-48 -30033 30033 Vanadium 49 V-49 -30034 30034 Chrome 51 Cr-51 -30035 30035 Manganese 52 Mn-52 -30036 30036 Manganese 54 Mn-54 -30037 30037 Iron 55 Fe-55 -30038 30038 Iron 59 Fe-59 -30039 30039 Cobalt 56 Co-56 -30040 30040 Cobalt 57 Co-57 -30041 30041 Cobalt 58 Co-58 -30042 30042 Cobalt 60 Co-60 -30043 30043 Nickel 59 Ni-59 -30044 30044 Nickel 63 Ni-63 -30045 30045 Zinc 65 Zn-65 -30046 30046 Gallium 67 Ga-67 -30047 30047 Gallium 68 Ga-68 -30048 30048 Germanium 68 Ge-68 -30049 30049 Germanium 69 Ge-69 -30050 30050 Arsenic 73 As-73 -30051 30051 Selenium 75 Se-75 -30052 30052 Selenium 79 Se-79 -30053 30053 Rubidium 81 Rb-81 -30054 30054 Rubidium 83 Rb-83 -30055 30055 Rubidium 84 Rb-84 -30056 30056 Rubidium 86 Rb-86 -30057 30057 Rubidium 87 Rb-87 -30058 30058 Rubidium 88 Rb-88 -30059 30059 Krypton 85 Kr-85 -30060 30060 Krypton 85 metastable Kr-85m -30061 30061 Krypton 87 Kr-87 -30062 30062 Krypton 88 Kr-88 -30063 30063 Krypton 89 Kr-89 -30064 30064 Strontium 85 Sr-85 -30065 30065 Strontium 89 Sr-89 -30066 30066 Strontium 89/90 Sr-8990 -30067 30067 Strontium 90 Sr-90 -30068 30068 Strontium 91 Sr-91 -30069 30069 Strontium 92 Sr-92 -30070 30070 Yttrium 87 Y-87 -30071 30071 Yttrium 88 Y-88 -30072 30072 Yttrium 90 Y-90 -30073 30073 Yttrium 91 Y-91 -30074 30074 Yttrium 91 metastable Y-91m -30075 30075 Yttrium 92 Y-92 -30076 30076 Yttrium 93 Y-93 -30077 30077 Zirconium 89 Zr-89 -30078 30078 Zirconium 93 Zr-93 -30079 30079 Zirconium 95 Zr-95 -30080 30080 Zirconium 97 Zr-97 -30081 30081 Niobium 93 metastable Nb-93m -30082 30082 Niobium 94 Nb-94 -30083 30083 Niobium 95 Nb-95 -30084 30084 Niobium 95 metastable Nb-95m -30085 30085 Niobium 97 Nb-97 -30086 30086 Niobium 97 metastable Nb-97m -30087 30087 Molybdenum 93 Mo-93 -30088 30088 Molybdenum 99 Mo-99 -30089 30089 Technetium 95 metastable Tc-95m -30090 30090 Technetium 96 Tc-96 -30091 30091 Technetium 99 Tc-99 -30092 30092 Technetium 99 metastable Tc-99m -30093 30093 Rhodium 99 Rh-99 -30094 30094 Rhodium 101 Rh-101 -30095 30095 Rhodium 102 metastable Rh-102m -30096 30096 Rhodium 103 metastable Rh-103m -30097 30097 Rhodium 105 Rh-105 -30098 30098 Rhodium 106 Rh-106 -30099 30099 Palladium 100 Pd-100 -30100 30100 Palladium 103 Pd-103 -30101 30101 Palladium 107 Pd-107 -30102 30102 Ruthenium 103 Ru-103 -30103 30103 Ruthenium 105 Ru-105 -30104 30104 Ruthenium 106 Ru-106 -30105 30105 Silver 108 metastable Ag-108m -30106 30106 Silver 110 metastable Ag-110m -30107 30107 Cadmium 109 Cd-109 -30108 30108 Cadmium 113 metastable Cd-113m -30109 30109 Cadmium 115 metastable Cd-115m -30110 30110 Indium 114 metastable In-114m -30111 30111 Tin 113 Sn-113 -30112 30112 Tin 119 metastable Sn-119m -30113 30113 Tin 121 metastable Sn-121m -30114 30114 Tin 122 Sn-122 -30115 30115 Tin 123 Sn-123 -30116 30116 Tin 126 Sn-126 -30117 30117 Antimony 124 Sb-124 -30118 30118 Antimony 125 Sb-125 -30119 30119 Antimony 126 Sb-126 -30120 30120 Antimony 127 Sb-127 -30121 30121 Antimony 129 Sb-129 -30122 30122 Tellurium 123 metastable Te-123m -30123 30123 Tellurium 125 metastable Te-125m -30124 30124 Tellurium 127 Te-127 -30125 30125 Tellurium 127 metastable Te-127m -30126 30126 Tellurium 129 Te-129 -30127 30127 Tellurium 129 metastable Te-129m -30128 30128 Tellurium 131 metastable Te-131m -30129 30129 Tellurium 132 Te-132 -30130 30130 Iodine 123 I-123 -30131 30131 Iodine 124 I-124 -30132 30132 Iodine 125 I-125 -30133 30133 Iodine 126 I-126 -30134 30134 Iodine 129 I-129 -30135 30135 Iodine 129 elementary gaseous I-129g -30136 30136 Iodine 129 organic bounded I-129o -30137 30137 Iodine 131 I-131 -30138 30138 Iodine 131 elementary gaseous I-131g -30139 30139 Iodine 131 organic bounded I-131o -30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go -30141 30141 Iodine 131 aerosol I-131a -30142 30142 Iodine 132 I-132 -30143 30143 Iodine 132 elementary gaseous I-132g -30144 30144 Iodine 132 organic bounded I-132o -30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go -30146 30146 Iodine 132 aerosol I-132a -30147 30147 Iodine 133 I-133 -30148 30148 Iodine 133 elementary gaseous I-133g -30149 30149 Iodine 133 organic bounded I-133o -30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go -30151 30151 Iodine 133 aerosol I-133a -30152 30152 Iodine 134 I-134 -30153 30153 Iodine 134 elementary gaseous I-134g -30154 30154 Iodine 134 organic bounded I-134o -30155 30155 Iodine 135 I-135 -30156 30156 Iodine 135 elementary gaseous I-135g -30157 30157 Iodine 135 organic bounded I-135o -30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go -30159 30159 Iodine 135 aerosol I-135a -30160 30160 Xenon 131 metastable Xe-131m -30161 30161 Xenon 133 Xe-133 -30162 30162 Xenon 133 metastable Xe-133m -30163 30163 Xenon 135 Xe-135 -30164 30164 Xenon 135 metastable Xe-135m -30165 30165 Xenon 137 Xe-137 -30166 30166 Xenon 138 Xe-138 -30167 30167 Xenon sum of all Xenon isotopes Xe-sum -30168 30168 Caesium 131 Cs-131 -30169 30169 Caesium 134 Cs-134 -30170 30170 Caesium 135 Cs-135 -30171 30171 Caesium 136 Cs-136 -30172 30172 Caesium 137 Cs-137 -30173 30173 Barium 133 Ba-133 -30174 30174 Barium 137 metastable Ba-137m -30175 30175 Barium 140 Ba-140 -30176 30176 Cerium 139 Ce-139 -30177 30177 Cerium 141 Ce-141 -30178 30178 Cerium 143 Ce-143 -30179 30179 Cerium 144 Ce-144 -30180 30180 Lanthanum 140 La-140 -30181 30181 Lanthanum 141 La-141 -30182 30182 Praseodymium 143 Pr-143 -30183 30183 Praseodymium 144 Pr-144 -30184 30184 Praseodymium 144 metastable Pr-144m -30185 30185 Samarium 145 Sm-145 -30186 30186 Samarium 147 Sm-147 -30187 30187 Samarium 151 Sm-151 -30188 30188 Neodymium 147 Nd-147 -30189 30189 Promethium 146 Pm-146 -30190 30190 Promethium 147 Pm-147 -30191 30191 Promethium 151 Pm-151 -30192 30192 Europium 152 Eu-152 -30193 30193 Europium 154 Eu-154 -30194 30194 Europium 155 Eu-155 -30195 30195 Gadolinium 153 Gd-153 -30196 30196 Terbium 160 Tb-160 -30197 30197 Holmium 166 metastable Ho-166m -30198 30198 Thulium 170 Tm-170 -30199 30199 Ytterbium 169 Yb-169 -30200 30200 Hafnium 175 Hf-175 -30201 30201 Hafnium 181 Hf-181 -30202 30202 Tantalum 179 Ta-179 -30203 30203 Tantalum 182 Ta-182 -30204 30204 Rhenium 184 Re-184 -30205 30205 Iridium 192 Ir-192 -30206 30206 Mercury 203 Hg-203 -30207 30207 Thallium 204 Tl-204 -30208 30208 Thallium 207 Tl-207 -30209 30209 Thallium 208 Tl-208 -30210 30210 Thallium 209 Tl-209 -30211 30211 Bismuth 205 Bi-205 -30212 30212 Bismuth 207 Bi-207 -30213 30213 Bismuth 210 Bi-210 -30214 30214 Bismuth 211 Bi-211 -30215 30215 Bismuth 212 Bi-212 -30216 30216 Bismuth 213 Bi-213 -30217 30217 Bismuth 214 Bi-214 -30218 30218 Polonium 208 Po-208 -30219 30219 Polonium 210 Po-210 -30220 30220 Polonium 212 Po-212 -30221 30221 Polonium 213 Po-213 -30222 30222 Polonium 214 Po-214 -30223 30223 Polonium 215 Po-215 -30224 30224 Polonium 216 Po-216 -30225 30225 Polonium 218 Po-218 -30226 30226 Lead 209 Pb-209 -30227 30227 Lead 210 Pb-210 -30228 30228 Lead 211 Pb-211 -30229 30229 Lead 212 Pb-212 -30230 30230 Lead 214 Pb-214 -30231 30231 Astatine 217 At-217 -30232 30232 Radon 219 Rn-219 -30233 30233 Radon 220 Rn-220 -30234 30234 Radon 222 Rn-222 -30235 30235 Francium 221 Fr-221 -30236 30236 Francium 223 Fr-223 -30237 30237 Radium 223 Ra-223 -30238 30238 Radium 224 Ra-224 -30239 30239 Radium 225 Ra-225 -30240 30240 Radium 226 Ra-226 -30241 30241 Radium 228 Ra-228 -30242 30242 Actinium 225 Ac-225 -30243 30243 Actinium 227 Ac-227 -30244 30244 Actinium 228 Ac-228 -30245 30245 Thorium 227 Th-227 -30246 30246 Thorium 228 Th-228 -30247 30247 Thorium 229 Th-229 -30248 30248 Thorium 230 Th-230 -30249 30249 Thorium 231 Th-231 -30250 30250 Thorium 232 Th-232 -30251 30251 Thorium 234 Th-234 -30252 30252 Protactinium 231 Pa-231 -30253 30253 Protactinium 233 Pa-233 -30254 30254 Protactinium 234 metastable Pa-234m -30255 30255 Uranium 232 U-232 -30256 30256 Uranium 233 U-233 -30257 30257 Uranium 234 U-234 -30258 30258 Uranium 235 U-235 -30259 30259 Uranium 236 U-236 -30260 30260 Uranium 237 U-237 -30261 30261 Uranium 238 U-238 -30262 30262 Plutonium 236 Pu-236 -30263 30263 Plutonium 238 Pu-238 -30264 30264 Plutonium 239 Pu-239 -30265 30265 Plutonium 240 Pu-240 -30266 30266 Plutonium 241 Pu-241 -30267 30267 Plutonium 242 Pu-242 -30268 30268 Plutonium 244 Pu-244 -30269 30269 Neptunium 237 Np-237 -30270 30270 Neptunium 238 Np-238 -30271 30271 Neptunium 239 Np-239 -30272 30272 Americium 241 Am-241 -30273 30273 Americium 242 Am-242 -30274 30274 Americium 242 metastable Am-242m -30275 30275 Americium 243 Am-243 -30276 30276 Curium 242 Cm-242 -30277 30277 Curium 243 Cm-243 -30278 30278 Curium 244 Cm-244 -30279 30279 Curium 245 Cm-245 -30280 30280 Curium 246 Cm-246 -30281 30281 Curium 247 Cm-247 -30282 30282 Curium 248 Cm-248 -30283 30283 Curium 243/244 Cm-243244 -30284 30284 Plutonium 238/Americium 241 Pu-238Am-241 -30285 30285 Plutonium 239/240 Pu-239240 -30286 30286 Berkelium 249 Bk-249 -30287 30287 Californium 249 Cf-249 -30288 30288 Californium 250 Cf-250 -30289 30289 Californium 252 Cf-252 -30290 30290 Sum aerosol particulates SumAer -30291 30291 Sum Iodine SumIod -30292 30292 Sum noble gas SumNG -30293 30293 Activation gas ActGas -30294 30294 Cs-137 Equivalent EquCs137 -#30295-59999 Reserved -60000 60000 HOx radical (OH+HO2) -60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2) -60002 60002 Passive Ozone -60003 60003 NOx expressed as nitrogen NOx -60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy -60005 60005 Total inorganic chlorine Clx -60006 60006 Total inorganic bromine Brx -60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx -60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx -60009 60009 Lumped alkanes -60010 60010 Lumped alkenes -60011 60011 Lumped aromatic compounds -60012 60012 Lumped terpenes -60013 60013 Non-methane volatile organic compounds expressed as carbon -60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon -60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon -60016 60016 Lumped oxygenated hydrocarbons -60017 60017 NOx expressed as nitrogen dioxide (NO2) -#60018-61999 Reserved -62000 62000 Total aerosol -62001 62001 Dust dry -62002 62002 Water in ambient -62003 62003 Ammonium dry -62004 62004 Nitrate dry -62005 62005 Nitric acid trihydrate -62006 62006 Sulphate dry -62007 62007 Mercury dry -62008 62008 Sea salt dry -62009 62009 Black carbon dry -62010 62010 Particulate organic matter dry -62011 62011 Primary particulate organic matter dry -62012 62012 Secondary particulate organic matter dry -62013 62013 Black carbon hydrophilic dry -62014 62014 Black carbon hydrophobic dry -62015 62015 Particulate organic matter hydrophilic dry -62016 62016 Particulate organic matter hydrophobic dry -62017 62017 Nitrate hydrophilic dry -62018 62018 Nitrate hydrophobic dry -#62019 Reserved -62020 62020 Smoke - high absorption -62021 62021 Smoke - low absorption -62022 62022 Aerosol - high absorption -62023 62023 Aerosol - low absorption -# 62024-65534 Reserved +# (See Common Code table C-14) 65535 65535 Missing diff --git a/definitions/grib2/tables/14/4.233.table b/definitions/grib2/tables/14/4.233.table index b0fb5e976..d63f673bb 100644 --- a/definitions/grib2/tables/14/4.233.table +++ b/definitions/grib2/tables/14/4.233.table @@ -1,421 +1,3 @@ # Code table 4.233 - Aerosol type -0 0 Ozone -1 1 Water vapour -2 2 Methane -3 3 Carbon dioxide -4 4 Carbon monoxide -5 5 Nitrogen dioxide -6 6 Nitrous oxide -7 7 Formaldehyde -8 8 Sulphur dioxide -9 9 Ammonia -10 10 Ammonium -11 11 Nitrogen monoxide -12 12 Atomic oxygen -13 13 Nitrate radical -14 14 Hydroperoxyl radical -15 15 Dinitrogen pentoxide -16 16 Nitrous acid -17 17 Nitric acid -18 18 Peroxynitric acid -19 19 Hydrogen peroxide -20 20 Molecular hydrogen -21 21 Atomic nitrogen -22 22 Sulphate -23 23 Radon -24 24 Elemental mercury -25 25 Divalent mercury -26 26 Atomic chlorine -27 27 Chlorine monoxide -28 28 Dichlorine peroxide -29 29 Hypochlorous acid -30 30 Chlorine nitrate -31 31 Chlorine dioxide -32 32 Atomic bromine -33 33 Bromine monoxide -34 34 Bromine chloride -35 35 Hydrogen bromide -36 36 Hypobromous acid -37 37 Bromine nitrate -#38-9999 Reserved -10000 10000 Hydroxyl radical -10001 10001 Methyl peroxy radical -10002 10002 Methyl hydroperoxide -10004 10004 Methanol -10005 10005 Formic acid -10006 10006 Hydrogen cyanide -10007 10007 Aceto nitrile -10008 10008 Ethane -10009 10009 Ethene (= Ethylene) -10010 10010 Ethyne (= Acetylene) -10011 10011 Ethanol -10012 10012 Acetic acid -10013 10013 Peroxyacetyl nitrate -10014 10014 Propane -10015 10015 Propene -10016 10016 Butanes -10017 10017 Isoprene -10018 10018 Alpha pinene -10019 10019 Beta pinene -10020 10020 Limonene -10021 10021 Benzene -10022 10022 Toluene -10023 10023 Xylene -#10024-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides...) -10500 10500 Dimethyl sulphide -#10501-20000 Reserved -20001 20001 Hydrogen chloride -20002 20002 CFC-11 -20003 20003 CFC-12 -20004 20004 CFC-113 -20005 20005 CFC-113a -20006 20006 CFC-114 -20007 20007 CFC-115 -20008 20008 HCFC-22 -20009 20009 HCFC-141b -20010 20010 HCFC-142b -20011 20011 Halon-1202 -20012 20012 Halon-1211 -20013 20013 Halon-1301 -20014 20014 Halon-2402 -20015 20015 Methyl chloride (HCC-40) -20016 20016 Carbon tetrachloride (HCC-10) -20017 20017 HCC-140a -20018 20018 Methyl bromide (HBC-40B1) -20019 20019 Hexachlorocyclohexane (HCH) -20020 20020 Alpha hexachlorocyclohexane -20021 20021 Hexachlorobiphenyl (PCB-153) -#20022-29999 Reserved -30000 30000 Radioactive pollutant (tracer, defined by originating centre) -#30001-30009 Reserved -30010 30010 Hydrogen H-3 -30011 30011 Hydrogen organic bounded H-3o -30012 30012 Hydrogen inorganic H-3a -30013 30013 Beryllium 7 Be-7 -30014 30014 Beryllium 10 Be-10 -30015 30015 Carbon 14 C-14 -30016 30016 Carbon 14 CO2 C-14CO2 -30017 30017 Carbon 14 other gases C-14og -30018 30018 Nitrogen 13 N-13 -30019 30019 Nitrogen 16 N-16 -30020 30020 Fluorine 18 F-18 -30021 30021 Sodium 22 Na-22 -30022 30022 Phosphate 32 P-32 -30023 30023 Phosphate 33 P-33 -30024 30024 Sulfur 35 S-35 -30025 30025 Chlorine 36 Cl-36 -30026 30026 Potassium 40 K-40 -30027 30027 Argon 41 Ar-41 -30028 30028 Calcium 41 Ca-41 -30029 30029 Calcium 45 Ca-45 -30030 30030 Titanium 44 -30031 30031 Scandium 46 Sc-46 -30032 30032 Vanadium 48 V-48 -30033 30033 Vanadium 49 V-49 -30034 30034 Chrome 51 Cr-51 -30035 30035 Manganese 52 Mn-52 -30036 30036 Manganese 54 Mn-54 -30037 30037 Iron 55 Fe-55 -30038 30038 Iron 59 Fe-59 -30039 30039 Cobalt 56 Co-56 -30040 30040 Cobalt 57 Co-57 -30041 30041 Cobalt 58 Co-58 -30042 30042 Cobalt 60 Co-60 -30043 30043 Nickel 59 Ni-59 -30044 30044 Nickel 63 Ni-63 -30045 30045 Zinc 65 Zn-65 -30046 30046 Gallium 67 Ga-67 -30047 30047 Gallium 68 Ga-68 -30048 30048 Germanium 68 Ge-68 -30049 30049 Germanium 69 Ge-69 -30050 30050 Arsenic 73 As-73 -30051 30051 Selenium 75 Se-75 -30052 30052 Selenium 79 Se-79 -30053 30053 Rubidium 81 Rb-81 -30054 30054 Rubidium 83 Rb-83 -30055 30055 Rubidium 84 Rb-84 -30056 30056 Rubidium 86 Rb-86 -30057 30057 Rubidium 87 Rb-87 -30058 30058 Rubidium 88 Rb-88 -30059 30059 Krypton 85 Kr-85 -30060 30060 Krypton 85 metastable Kr-85m -30061 30061 Krypton 87 Kr-87 -30062 30062 Krypton 88 Kr-88 -30063 30063 Krypton 89 Kr-89 -30064 30064 Strontium 85 Sr-85 -30065 30065 Strontium 89 Sr-89 -30066 30066 Strontium 89/90 Sr-8990 -30067 30067 Strontium 90 Sr-90 -30068 30068 Strontium 91 Sr-91 -30069 30069 Strontium 92 Sr-92 -30070 30070 Yttrium 87 Y-87 -30071 30071 Yttrium 88 Y-88 -30072 30072 Yttrium 90 Y-90 -30073 30073 Yttrium 91 Y-91 -30074 30074 Yttrium 91 metastable Y-91m -30075 30075 Yttrium 92 Y-92 -30076 30076 Yttrium 93 Y-93 -30077 30077 Zirconium 89 Zr-89 -30078 30078 Zirconium 93 Zr-93 -30079 30079 Zirconium 95 Zr-95 -30080 30080 Zirconium 97 Zr-97 -30081 30081 Niobium 93 metastable Nb-93m -30082 30082 Niobium 94 Nb-94 -30083 30083 Niobium 95 Nb-95 -30084 30084 Niobium 95 metastable Nb-95m -30085 30085 Niobium 97 Nb-97 -30086 30086 Niobium 97 metastable Nb-97m -30087 30087 Molybdenum 93 Mo-93 -30088 30088 Molybdenum 99 Mo-99 -30089 30089 Technetium 95 metastable Tc-95m -30090 30090 Technetium 96 Tc-96 -30091 30091 Technetium 99 Tc-99 -30092 30092 Technetium 99 metastable Tc-99m -30093 30093 Rhodium 99 Rh-99 -30094 30094 Rhodium 101 Rh-101 -30095 30095 Rhodium 102 metastable Rh-102m -30096 30096 Rhodium 103 metastable Rh-103m -30097 30097 Rhodium 105 Rh-105 -30098 30098 Rhodium 106 Rh-106 -30099 30099 Palladium 100 Pd-100 -30100 30100 Palladium 103 Pd-103 -30101 30101 Palladium 107 Pd-107 -30102 30102 Ruthenium 103 Ru-103 -30103 30103 Ruthenium 105 Ru-105 -30104 30104 Ruthenium 106 Ru-106 -30105 30105 Silver 108 metastable Ag-108m -30106 30106 Silver 110 metastable Ag-110m -30107 30107 Cadmium 109 Cd-109 -30108 30108 Cadmium 113 metastable Cd-113m -30109 30109 Cadmium 115 metastable Cd-115m -30110 30110 Indium 114 metastable In-114m -30111 30111 Tin 113 Sn-113 -30112 30112 Tin 119 metastable Sn-119m -30113 30113 Tin 121 metastable Sn-121m -30114 30114 Tin 122 Sn-122 -30115 30115 Tin 123 Sn-123 -30116 30116 Tin 126 Sn-126 -30117 30117 Antimony 124 Sb-124 -30118 30118 Antimony 125 Sb-125 -30119 30119 Antimony 126 Sb-126 -30120 30120 Antimony 127 Sb-127 -30121 30121 Antimony 129 Sb-129 -30122 30122 Tellurium 123 metastable Te-123m -30123 30123 Tellurium 125 metastable Te-125m -30124 30124 Tellurium 127 Te-127 -30125 30125 Tellurium 127 metastable Te-127m -30126 30126 Tellurium 129 Te-129 -30127 30127 Tellurium 129 metastable Te-129m -30128 30128 Tellurium 131 metastable Te-131m -30129 30129 Tellurium 132 Te-132 -30130 30130 Iodine 123 I-123 -30131 30131 Iodine 124 I-124 -30132 30132 Iodine 125 I-125 -30133 30133 Iodine 126 I-126 -30134 30134 Iodine 129 I-129 -30135 30135 Iodine 129 elementary gaseous I-129g -30136 30136 Iodine 129 organic bounded I-129o -30137 30137 Iodine 131 I-131 -30138 30138 Iodine 131 elementary gaseous I-131g -30139 30139 Iodine 131 organic bounded I-131o -30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go -30141 30141 Iodine 131 aerosol I-131a -30142 30142 Iodine 132 I-132 -30143 30143 Iodine 132 elementary gaseous I-132g -30144 30144 Iodine 132 organic bounded I-132o -30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go -30146 30146 Iodine 132 aerosol I-132a -30147 30147 Iodine 133 I-133 -30148 30148 Iodine 133 elementary gaseous I-133g -30149 30149 Iodine 133 organic bounded I-133o -30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go -30151 30151 Iodine 133 aerosol I-133a -30152 30152 Iodine 134 I-134 -30153 30153 Iodine 134 elementary gaseous I-134g -30154 30154 Iodine 134 organic bounded I-134o -30155 30155 Iodine 135 I-135 -30156 30156 Iodine 135 elementary gaseous I-135g -30157 30157 Iodine 135 organic bounded I-135o -30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go -30159 30159 Iodine 135 aerosol I-135a -30160 30160 Xenon 131 metastable Xe-131m -30161 30161 Xenon 133 Xe-133 -30162 30162 Xenon 133 metastable Xe-133m -30163 30163 Xenon 135 Xe-135 -30164 30164 Xenon 135 metastable Xe-135m -30165 30165 Xenon 137 Xe-137 -30166 30166 Xenon 138 Xe-138 -30167 30167 Xenon sum of all Xenon isotopes Xe-sum -30168 30168 Caesium 131 Cs-131 -30169 30169 Caesium 134 Cs-134 -30170 30170 Caesium 135 Cs-135 -30171 30171 Caesium 136 Cs-136 -30172 30172 Caesium 137 Cs-137 -30173 30173 Barium 133 Ba-133 -30174 30174 Barium 137 metastable Ba-137m -30175 30175 Barium 140 Ba-140 -30176 30176 Cerium 139 Ce-139 -30177 30177 Cerium 141 Ce-141 -30178 30178 Cerium 143 Ce-143 -30179 30179 Cerium 144 Ce-144 -30180 30180 Lanthanum 140 La-140 -30181 30181 Lanthanum 141 La-141 -30182 30182 Praseodymium 143 Pr-143 -30183 30183 Praseodymium 144 Pr-144 -30184 30184 Praseodymium 144 metastable Pr-144m -30185 30185 Samarium 145 Sm-145 -30186 30186 Samarium 147 Sm-147 -30187 30187 Samarium 151 Sm-151 -30188 30188 Neodymium 147 Nd-147 -30189 30189 Promethium 146 Pm-146 -30190 30190 Promethium 147 Pm-147 -30191 30191 Promethium 151 Pm-151 -30192 30192 Europium 152 Eu-152 -30193 30193 Europium 154 Eu-154 -30194 30194 Europium 155 Eu-155 -30195 30195 Gadolinium 153 Gd-153 -30196 30196 Terbium 160 Tb-160 -30197 30197 Holmium 166 metastable Ho-166m -30198 30198 Thulium 170 Tm-170 -30199 30199 Ytterbium 169 Yb-169 -30200 30200 Hafnium 175 Hf-175 -30201 30201 Hafnium 181 Hf-181 -30202 30202 Tantalum 179 Ta-179 -30203 30203 Tantalum 182 Ta-182 -30204 30204 Rhenium 184 Re-184 -30205 30205 Iridium 192 Ir-192 -30206 30206 Mercury 203 Hg-203 -30207 30207 Thallium 204 Tl-204 -30208 30208 Thallium 207 Tl-207 -30209 30209 Thallium 208 Tl-208 -30210 30210 Thallium 209 Tl-209 -30211 30211 Bismuth 205 Bi-205 -30212 30212 Bismuth 207 Bi-207 -30213 30213 Bismuth 210 Bi-210 -30214 30214 Bismuth 211 Bi-211 -30215 30215 Bismuth 212 Bi-212 -30216 30216 Bismuth 213 Bi-213 -30217 30217 Bismuth 214 Bi-214 -30218 30218 Polonium 208 Po-208 -30219 30219 Polonium 210 Po-210 -30220 30220 Polonium 212 Po-212 -30221 30221 Polonium 213 Po-213 -30222 30222 Polonium 214 Po-214 -30223 30223 Polonium 215 Po-215 -30224 30224 Polonium 216 Po-216 -30225 30225 Polonium 218 Po-218 -30226 30226 Lead 209 Pb-209 -30227 30227 Lead 210 Pb-210 -30228 30228 Lead 211 Pb-211 -30229 30229 Lead 212 Pb-212 -30230 30230 Lead 214 Pb-214 -30231 30231 Astatine 217 At-217 -30232 30232 Radon 219 Rn-219 -30233 30233 Radon 220 Rn-220 -30234 30234 Radon 222 Rn-222 -30235 30235 Francium 221 Fr-221 -30236 30236 Francium 223 Fr-223 -30237 30237 Radium 223 Ra-223 -30238 30238 Radium 224 Ra-224 -30239 30239 Radium 225 Ra-225 -30240 30240 Radium 226 Ra-226 -30241 30241 Radium 228 Ra-228 -30242 30242 Actinium 225 Ac-225 -30243 30243 Actinium 227 Ac-227 -30244 30244 Actinium 228 Ac-228 -30245 30245 Thorium 227 Th-227 -30246 30246 Thorium 228 Th-228 -30247 30247 Thorium 229 Th-229 -30248 30248 Thorium 230 Th-230 -30249 30249 Thorium 231 Th-231 -30250 30250 Thorium 232 Th-232 -30251 30251 Thorium 234 Th-234 -30252 30252 Protactinium 231 Pa-231 -30253 30253 Protactinium 233 Pa-233 -30254 30254 Protactinium 234 metastable Pa-234m -30255 30255 Uranium 232 U-232 -30256 30256 Uranium 233 U-233 -30257 30257 Uranium 234 U-234 -30258 30258 Uranium 235 U-235 -30259 30259 Uranium 236 U-236 -30260 30260 Uranium 237 U-237 -30261 30261 Uranium 238 U-238 -30262 30262 Plutonium 236 Pu-236 -30263 30263 Plutonium 238 Pu-238 -30264 30264 Plutonium 239 Pu-239 -30265 30265 Plutonium 240 Pu-240 -30266 30266 Plutonium 241 Pu-241 -30267 30267 Plutonium 242 Pu-242 -30268 30268 Plutonium 244 Pu-244 -30269 30269 Neptunium 237 Np-237 -30270 30270 Neptunium 238 Np-238 -30271 30271 Neptunium 239 Np-239 -30272 30272 Americium 241 Am-241 -30273 30273 Americium 242 Am-242 -30274 30274 Americium 242 metastable Am-242m -30275 30275 Americium 243 Am-243 -30276 30276 Curium 242 Cm-242 -30277 30277 Curium 243 Cm-243 -30278 30278 Curium 244 Cm-244 -30279 30279 Curium 245 Cm-245 -30280 30280 Curium 246 Cm-246 -30281 30281 Curium 247 Cm-247 -30282 30282 Curium 248 Cm-248 -30283 30283 Curium 243/244 Cm-243244 -30284 30284 Plutonium 238/Americium 241 Pu-238Am-241 -30285 30285 Plutonium 239/240 Pu-239240 -30286 30286 Berkelium 249 Bk-249 -30287 30287 Californium 249 Cf-249 -30288 30288 Californium 250 Cf-250 -30289 30289 Californium 252 Cf-252 -30290 30290 Sum aerosol particulates SumAer -30291 30291 Sum Iodine SumIod -30292 30292 Sum noble gas SumNG -30293 30293 Activation gas ActGas -30294 30294 Cs-137 Equivalent EquCs137 -#30295-59999 Reserved -60000 60000 HOx radical (OH+HO2) -60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2) -60002 60002 Passive Ozone -60003 60003 NOx expressed as nitrogen NOx -60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy -60005 60005 Total inorganic chlorine Clx -60006 60006 Total inorganic bromine Brx -60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx -60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx -60009 60009 Lumped alkanes -60010 60010 Lumped alkenes -60011 60011 Lumped aromatic compounds -60012 60012 Lumped terpenes -60013 60013 Non-methane volatile organic compounds expressed as carbon -60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon -60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon -60016 60016 Lumped oxygenated hydrocarbons -60017 60017 NOx expressed as nitrogen dioxide (NO2) -#60018-61999 Reserved -62000 62000 Total aerosol -62001 62001 Dust dry -62002 62002 Water in ambient -62003 62003 Ammonium dry -62004 62004 Nitrate dry -62005 62005 Nitric acid trihydrate -62006 62006 Sulphate dry -62007 62007 Mercury dry -62008 62008 Sea salt dry -62009 62009 Black carbon dry -62010 62010 Particulate organic matter dry -62011 62011 Primary particulate organic matter dry -62012 62012 Secondary particulate organic matter dry -62013 62013 Black carbon hydrophilic dry -62014 62014 Black carbon hydrophobic dry -62015 62015 Particulate organic matter hydrophilic dry -62016 62016 Particulate organic matter hydrophobic dry -62017 62017 Nitrate hydrophilic dry -62018 62018 Nitrate hydrophobic dry -#62019 Reserved -62020 62020 Smoke - high absorption -62021 62021 Smoke - low absorption -62022 62022 Aerosol - high absorption -62023 62023 Aerosol - low absorption -# 62024-65534 Reserved +# (See Common Code table C-14) 65535 65535 Missing diff --git a/definitions/grib2/tables/15/4.230.table b/definitions/grib2/tables/15/4.230.table index ab995d1cb..5c39a79b9 100644 --- a/definitions/grib2/tables/15/4.230.table +++ b/definitions/grib2/tables/15/4.230.table @@ -1,423 +1,3 @@ # Code table 4.230 - Atmospheric chemical constituent type -0 0 Ozone O3 -1 1 Water vapour H2O -2 2 Methane CH4 -3 3 Carbon dioxide CO2 -4 4 Carbon monoxide CO -5 5 Nitrogen dioxide NO2 -6 6 Nitrous oxide N2O -7 7 Formaldehyde HCHO -8 8 Sulphur dioxide SO2 -9 9 Ammonia NH3 -10 10 Ammonium NH4+ -11 11 Nitrogen monoxide NO -12 12 Atomic oxygen O -13 13 Nitrate radical NO3 -14 14 Hydroperoxyl radical HO2 -15 15 Dinitrogen pentoxide N2O5 -16 16 Nitrous acid HONO -17 17 Nitric acid HNO3 -18 18 Peroxynitric acid HO2NO2 -19 19 Hydrogen peroxide H2O2 -20 20 Molecular hydrogen H -21 21 Atomic nitrogen N -22 22 Sulphate SO42- -23 23 Radon Rn -24 24 Elemental mercury Hg(0) -25 25 Divalent mercury Hg2+ -26 26 Atomic chlorine Cl -27 27 Chlorine monoxide ClO -28 28 Dichlorine peroxide Cl2O2 -29 29 Hypochlorous acid HClO -30 30 Chlorine nitrate ClONO2 -31 31 Chlorine dioxide ClO2 -32 32 Atomic bromine Br -33 33 Bromine monoxide BrO -34 34 Bromine chloride BrCl -35 35 Hydrogen bromide HBr -36 36 Hypobromous acid HBrO -37 37 Bromine nitrate BrONO2 -38 38 Oxygen O2 -#39-9999 Reserved -10000 10000 Hydroxyl radical OH -10001 10001 Methyl peroxy radical CH3O2 -10002 10002 Methyl hydroperoxide CH3O2H -10004 10004 Methanol CH3OH -10005 10005 Formic acid CH3OOH -10006 10006 Hydrogen cyanide HCN -10007 10007 Aceto nitrile CH3CN -10008 10008 Ethane C2H6 -10009 10009 Ethene (= Ethylene) C2H4 -10010 10010 Ethyne (= Acetylene) C2H2 -10011 10011 Ethanol C2H5OH -10012 10012 Acetic acid C2H5OOH -10013 10013 Peroxyacetyl nitrate CH3C(O)OONO2 -10014 10014 Propane C3H8 -10015 10015 Propene C3H6 -10016 10016 Butanes C4H10 -10017 10017 Isoprene C5H10 -10018 10018 Alpha pinene C10H16 -10019 10019 Beta pinene C10H16 -10020 10020 Limonene C10H16 -10021 10021 Benzene C6H6 -10022 10022 Toluene C7H8 -10023 10023 Xylene C8H10 -#10024-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides...) -10500 10500 Dimethyl sulphide CH3SCH3 (DMS) -#10501-20000 Reserved -20001 20001 Hydrogen chloride -20002 20002 CFC-11 -20003 20003 CFC-12 -20004 20004 CFC-113 -20005 20005 CFC-113a -20006 20006 CFC-114 -20007 20007 CFC-115 -20008 20008 HCFC-22 -20009 20009 HCFC-141b -20010 20010 HCFC-142b -20011 20011 Halon-1202 -20012 20012 Halon-1211 -20013 20013 Halon-1301 -20014 20014 Halon-2402 -20015 20015 Methyl chloride (HCC-40) -20016 20016 Carbon tetrachloride (HCC-10) -20017 20017 HCC-140a CH3CCl3 -20018 20018 Methyl bromide (HBC-40B1) -20019 20019 Hexachlorocyclohexane (HCH) -20020 20020 Alpha hexachlorocyclohexane -20021 20021 Hexachlorobiphenyl (PCB-153) -#20022-29999 Reserved -30000 30000 Radioactive pollutant (tracer, defined by originating centre) -#30001-30009 Reserved -30010 30010 Hydrogen H-3 -30011 30011 Hydrogen organic bounded H-3o -30012 30012 Hydrogen inorganic H-3a -30013 30013 Beryllium 7 Be-7 -30014 30014 Beryllium 10 Be-10 -30015 30015 Carbon 14 C-14 -30016 30016 Carbon 14 CO2 C-14CO2 -30017 30017 Carbon 14 other gases C-14og -30018 30018 Nitrogen 13 N-13 -30019 30019 Nitrogen 16 N-16 -30020 30020 Fluorine 18 F-18 -30021 30021 Sodium 22 Na-22 -30022 30022 Phosphate 32 P-32 -30023 30023 Phosphate 33 P-33 -30024 30024 Sulphur 35 S-35 -30025 30025 Chlorine 36 Cl-36 -30026 30026 Potassium 40 K-40 -30027 30027 Argon 41 Ar-41 -30028 30028 Calcium 41 Ca-41 -30029 30029 Calcium 45 Ca-45 -30030 30030 Titanium 44 Ti-44 -30031 30031 Scandium 46 Sc-46 -30032 30032 Vanadium 48 V-48 -30033 30033 Vanadium 49 V-49 -30034 30034 Chrome 51 Cr-51 -30035 30035 Manganese 52 Mn-52 -30036 30036 Manganese 54 Mn-54 -30037 30037 Iron 55 Fe-55 -30038 30038 Iron 59 Fe-59 -30039 30039 Cobalt 56 Co-56 -30040 30040 Cobalt 57 Co-57 -30041 30041 Cobalt 58 Co-58 -30042 30042 Cobalt 60 Co-60 -30043 30043 Nickel 59 Ni-59 -30044 30044 Nickel 63 Ni-63 -30045 30045 Zinc 65 Zn-65 -30046 30046 Gallium 67 Ga-67 -30047 30047 Gallium 68 Ga-68 -30048 30048 Germanium 68 Ge-68 -30049 30049 Germanium 69 Ge-69 -30050 30050 Arsenic 73 As-73 -30051 30051 Selenium 75 Se-75 -30052 30052 Selenium 79 Se-79 -30053 30053 Rubidium 81 Rb-81 -30054 30054 Rubidium 83 Rb-83 -30055 30055 Rubidium 84 Rb-84 -30056 30056 Rubidium 86 Rb-86 -30057 30057 Rubidium 87 Rb-87 -30058 30058 Rubidium 88 Rb-88 -30059 30059 Krypton 85 Kr-85 -30060 30060 Krypton 85 metastable Kr-85m -30061 30061 Krypton 87 Kr-87 -30062 30062 Krypton 88 Kr-88 -30063 30063 Krypton 89 Kr-89 -30064 30064 Strontium 85 Sr-85 -30065 30065 Strontium 89 Sr-89 -30066 30066 Strontium 89/90 Sr-8990 -30067 30067 Strontium 90 Sr-90 -30068 30068 Strontium 91 Sr-91 -30069 30069 Strontium 92 Sr-92 -30070 30070 Yttrium 87 Y-87 -30071 30071 Yttrium 88 Y-88 -30072 30072 Yttrium 90 Y-90 -30073 30073 Yttrium 91 Y-91 -30074 30074 Yttrium 91 metastable Y-91m -30075 30075 Yttrium 92 Y-92 -30076 30076 Yttrium 93 Y-93 -30077 30077 Zirconium 89 Zr-89 -30078 30078 Zirconium 93 Zr-93 -30079 30079 Zirconium 95 Zr-95 -30080 30080 Zirconium 97 Zr-97 -30081 30081 Niobium 93 metastable Nb-93m -30082 30082 Niobium 94 Nb-94 -30083 30083 Niobium 95 Nb-95 -30084 30084 Niobium 95 metastable Nb-95m -30085 30085 Niobium 97 Nb-97 -30086 30086 Niobium 97 metastable Nb-97m -30087 30087 Molybdenum 93 Mo-93 -30088 30088 Molybdenum 99 Mo-99 -30089 30089 Technetium 95 metastable Tc-95m -30090 30090 Technetium 96 Tc-96 -30091 30091 Technetium 99 Tc-99 -30092 30092 Technetium 99 metastable Tc-99m -30093 30093 Rhodium 99 Rh-99 -30094 30094 Rhodium 101 Rh-101 -30095 30095 Rhodium 102 metastable Rh-102m -30096 30096 Rhodium 103 metastable Rh-103m -30097 30097 Rhodium 105 Rh-105 -30098 30098 Rhodium 106 Rh-106 -30099 30099 Palladium 100 Pd-100 -30100 30100 Palladium 103 Pd-103 -30101 30101 Palladium 107 Pd-107 -30102 30102 Ruthenium 103 Ru-103 -30103 30103 Ruthenium 105 Ru-105 -30104 30104 Ruthenium 106 Ru-106 -30105 30105 Silver 108 metastable Ag-108m -30106 30106 Silver 110 metastable Ag-110m -30107 30107 Cadmium 109 Cd-109 -30108 30108 Cadmium 113 metastable Cd-113m -30109 30109 Cadmium 115 metastable Cd-115m -30110 30110 Indium 114 metastable In-114m -30111 30111 Tin 113 Sn-113 -30112 30112 Tin 119 metastable Sn-119m -30113 30113 Tin 121 metastable Sn-121m -30114 30114 Tin 122 Sn-122 -30115 30115 Tin 123 Sn-123 -30116 30116 Tin 126 Sn-126 -30117 30117 Antimony 124 Sb-124 -30118 30118 Antimony 125 Sb-125 -30119 30119 Antimony 126 Sb-126 -30120 30120 Antimony 127 Sb-127 -30121 30121 Antimony 129 Sb-129 -30122 30122 Tellurium 123 metastable Te-123m -30123 30123 Tellurium 125 metastable Te-125m -30124 30124 Tellurium 127 Te-127 -30125 30125 Tellurium 127 metastable Te-127m -30126 30126 Tellurium 129 Te-129 -30127 30127 Tellurium 129 metastable Te-129m -30128 30128 Tellurium 131 metastable Te-131m -30129 30129 Tellurium 132 Te-132 -30130 30130 Iodine 123 I-123 -30131 30131 Iodine 124 I-124 -30132 30132 Iodine 125 I-125 -30133 30133 Iodine 126 I-126 -30134 30134 Iodine 129 I-129 -30135 30135 Iodine 129 elementary gaseous I-129g -30136 30136 Iodine 129 organic bounded I-129o -30137 30137 Iodine 131 I-131 -30138 30138 Iodine 131 elementary gaseous I-131g -30139 30139 Iodine 131 organic bounded I-131o -30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go -30141 30141 Iodine 131 aerosol I-131a -30142 30142 Iodine 132 I-132 -30143 30143 Iodine 132 elementary gaseous I-132g -30144 30144 Iodine 132 organic bounded I-132o -30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go -30146 30146 Iodine 132 aerosol I-132a -30147 30147 Iodine 133 I-133 -30148 30148 Iodine 133 elementary gaseous I-133g -30149 30149 Iodine 133 organic bounded I-133o -30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go -30151 30151 Iodine 133 aerosol I-133a -30152 30152 Iodine 134 I-134 -30153 30153 Iodine 134 elementary gaseous I-134g -30154 30154 Iodine 134 organic bounded I-134o -30155 30155 Iodine 135 I-135 -30156 30156 Iodine 135 elementary gaseous I-135g -30157 30157 Iodine 135 organic bounded I-135o -30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go -30159 30159 Iodine 135 aerosol I-135a -30160 30160 Xenon 131 metastable Xe-131m -30161 30161 Xenon 133 Xe-133 -30162 30162 Xenon 133 metastable Xe-133m -30163 30163 Xenon 135 Xe-135 -30164 30164 Xenon 135 metastable Xe-135m -30165 30165 Xenon 137 Xe-137 -30166 30166 Xenon 138 Xe-138 -30167 30167 Xenon sum of all Xenon isotopes Xe-sum -30168 30168 Caesium 131 Cs-131 -30169 30169 Caesium 134 Cs-134 -30170 30170 Caesium 135 Cs-135 -30171 30171 Caesium 136 Cs-136 -30172 30172 Caesium 137 Cs-137 -30173 30173 Barium 133 Ba-133 -30174 30174 Barium 137 metastable Ba-137m -30175 30175 Barium 140 Ba-140 -30176 30176 Cerium 139 Ce-139 -30177 30177 Cerium 141 Ce-141 -30178 30178 Cerium 143 Ce-143 -30179 30179 Cerium 144 Ce-144 -30180 30180 Lanthanum 140 La-140 -30181 30181 Lanthanum 141 La-141 -30182 30182 Praseodymium 143 Pr-143 -30183 30183 Praseodymium 144 Pr-144 -30184 30184 Praseodymium 144 metastable Pr-144m -30185 30185 Samarium 145 Sm-145 -30186 30186 Samarium 147 Sm-147 -30187 30187 Samarium 151 Sm-151 -30188 30188 Neodymium 147 Nd-147 -30189 30189 Promethium 146 Pm-146 -30190 30190 Promethium 147 Pm-147 -30191 30191 Promethium 151 Pm-151 -30192 30192 Europium 152 Eu-152 -30193 30193 Europium 154 Eu-154 -30194 30194 Europium 155 Eu-155 -30195 30195 Gadolinium 153 Gd-153 -30196 30196 Terbium 160 Tb-160 -30197 30197 Holmium 166 metastable Ho-166m -30198 30198 Thulium 170 Tm-170 -30199 30199 Ytterbium 169 Yb-169 -30200 30200 Hafnium 175 Hf-175 -30201 30201 Hafnium 181 Hf-181 -30202 30202 Tantalum 179 Ta-179 -30203 30203 Tantalum 182 Ta-182 -30204 30204 Rhenium 184 Re-184 -30205 30205 Iridium 192 Ir-192 -30206 30206 Mercury 203 Hg-203 -30207 30207 Thallium 204 Tl-204 -30208 30208 Thallium 207 Tl-207 -30209 30209 Thallium 208 Tl-208 -30210 30210 Thallium 209 Tl-209 -30211 30211 Bismuth 205 Bi-205 -30212 30212 Bismuth 207 Bi-207 -30213 30213 Bismuth 210 Bi-210 -30214 30214 Bismuth 211 Bi-211 -30215 30215 Bismuth 212 Bi-212 -30216 30216 Bismuth 213 Bi-213 -30217 30217 Bismuth 214 Bi-214 -30218 30218 Polonium 208 Po-208 -30219 30219 Polonium 210 Po-210 -30220 30220 Polonium 212 Po-212 -30221 30221 Polonium 213 Po-213 -30222 30222 Polonium 214 Po-214 -30223 30223 Polonium 215 Po-215 -30224 30224 Polonium 216 Po-216 -30225 30225 Polonium 218 Po-218 -30226 30226 Lead 209 Pb-209 -30227 30227 Lead 210 Pb-210 -30228 30228 Lead 211 Pb-211 -30229 30229 Lead 212 Pb-212 -30230 30230 Lead 214 Pb-214 -30231 30231 Astatine 217 At-217 -30232 30232 Radon 219 Rn-219 -30233 30233 Radon 220 Rn-220 -30234 30234 Radon 222 Rn-222 -30235 30235 Francium 221 Fr-221 -30236 30236 Francium 223 Fr-223 -30237 30237 Radium 223 Ra-223 -30238 30238 Radium 224 Ra-224 -30239 30239 Radium 225 Ra-225 -30240 30240 Radium 226 Ra-226 -30241 30241 Radium 228 Ra-228 -30242 30242 Actinium 225 Ac-225 -30243 30243 Actinium 227 Ac-227 -30244 30244 Actinium 228 Ac-228 -30245 30245 Thorium 227 Th-227 -30246 30246 Thorium 228 Th-228 -30247 30247 Thorium 229 Th-229 -30248 30248 Thorium 230 Th-230 -30249 30249 Thorium 231 Th-231 -30250 30250 Thorium 232 Th-232 -30251 30251 Thorium 234 Th-234 -30252 30252 Protactinium 231 Pa-231 -30253 30253 Protactinium 233 Pa-233 -30254 30254 Protactinium 234 metastable Pa-234m -30255 30255 Uranium 232 U-232 -30256 30256 Uranium 233 U-233 -30257 30257 Uranium 234 U-234 -30258 30258 Uranium 235 U-235 -30259 30259 Uranium 236 U-236 -30260 30260 Uranium 237 U-237 -30261 30261 Uranium 238 U-238 -30262 30262 Plutonium 236 Pu-236 -30263 30263 Plutonium 238 Pu-238 -30264 30264 Plutonium 239 Pu-239 -30265 30265 Plutonium 240 Pu-240 -30266 30266 Plutonium 241 Pu-241 -30267 30267 Plutonium 242 Pu-242 -30268 30268 Plutonium 244 Pu-244 -30269 30269 Neptunium 237 Np-237 -30270 30270 Neptunium 238 Np-238 -30271 30271 Neptunium 239 Np-239 -30272 30272 Americium 241 Am-241 -30273 30273 Americium 242 Am-242 -30274 30274 Americium 242 metastable Am-242m -30275 30275 Americium 243 Am-243 -30276 30276 Curium 242 Cm-242 -30277 30277 Curium 243 Cm-243 -30278 30278 Curium 244 Cm-244 -30279 30279 Curium 245 Cm-245 -30280 30280 Curium 246 Cm-246 -30281 30281 Curium 247 Cm-247 -30282 30282 Curium 248 Cm-248 -30283 30283 Curium 243/244 Cm-243244 -30284 30284 Plutonium 238/Americium 241 Pu-238Am-241 -30285 30285 Plutonium 239/240 Pu-239240 -30286 30286 Berkelium 249 Bk-249 -30287 30287 Californium 249 Cf-249 -30288 30288 Californium 250 Cf-250 -30289 30289 Californium 252 Cf-252 -30290 30290 Sum aerosol particulates SumAer -30291 30291 Sum Iodine SumIod -30292 30292 Sum noble gas SumNG -30293 30293 Activation gas ActGas -30294 30294 Cs-137 Equivalent EquCs137 -#30295-59999 Reserved -60000 60000 HOx radical (OH+HO2) -60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2) -60002 60002 Passive Ozone -60003 60003 NOx expressed as nitrogen NOx -60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy -60005 60005 Total inorganic chlorine Clx -60006 60006 Total inorganic bromine Brx -60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx -60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx -60009 60009 Lumped alkanes -60010 60010 Lumped alkenes -60011 60011 Lumped aromatic compounds -60012 60012 Lumped terpenes -60013 60013 Non-methane volatile organic compounds expressed as carbon -60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon -60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon -60016 60016 Lumped oxygenated hydrocarbons -60017 60017 NOx expressed as nitrogen dioxide (NO2) -#60018-61999 Reserved -62000 62000 Total aerosol -62001 62001 Dust dry -62002 62002 Water in ambient -62003 62003 Ammonium dry -62004 62004 Nitrate dry -62005 62005 Nitric acid trihydrate -62006 62006 Sulphate dry -62007 62007 Mercury dry -62008 62008 Sea salt dry -62009 62009 Black carbon dry -62010 62010 Particulate organic matter dry -62011 62011 Primary particulate organic matter dry -62012 62012 Secondary particulate organic matter dry -62013 62013 Black carbon hydrophilic dry -62014 62014 Black carbon hydrophobic dry -62015 62015 Particulate organic matter hydrophilic dry -62016 62016 Particulate organic matter hydrophobic dry -62017 62017 Nitrate hydrophilic dry -62018 62018 Nitrate hydrophobic dry -#62019 Reserved -62020 62020 Smoke - high absorption -62021 62021 Smoke - low absorption -62022 62022 Aerosol - high absorption -62023 62023 Aerosol - low absorption -62025 62025 Volcanic ash -#62024-65534 Reserved +# (See Common Code table C-14) 65535 65535 Missing diff --git a/definitions/grib2/tables/15/4.233.table b/definitions/grib2/tables/15/4.233.table index 4feba8c63..d63f673bb 100644 --- a/definitions/grib2/tables/15/4.233.table +++ b/definitions/grib2/tables/15/4.233.table @@ -1,423 +1,3 @@ # Code table 4.233 - Aerosol type -0 0 Ozone O3 -1 1 Water vapour H2O -2 2 Methane CH4 -3 3 Carbon dioxide CO2 -4 4 Carbon monoxide CO -5 5 Nitrogen dioxide NO2 -6 6 Nitrous oxide N2O -7 7 Formaldehyde HCHO -8 8 Sulphur dioxide SO2 -9 9 Ammonia NH3 -10 10 Ammonium NH4+ -11 11 Nitrogen monoxide NO -12 12 Atomic oxygen O -13 13 Nitrate radical NO3 -14 14 Hydroperoxyl radical HO2 -15 15 Dinitrogen pentoxide N2O5 -16 16 Nitrous acid HONO -17 17 Nitric acid HNO3 -18 18 Peroxynitric acid HO2NO2 -19 19 Hydrogen peroxide H2O2 -20 20 Molecular hydrogen H -21 21 Atomic nitrogen N -22 22 Sulphate SO42- -23 23 Radon Rn -24 24 Elemental mercury Hg(0) -25 25 Divalent mercury Hg2+ -26 26 Atomic chlorine Cl -27 27 Chlorine monoxide ClO -28 28 Dichlorine peroxide Cl2O2 -29 29 Hypochlorous acid HClO -30 30 Chlorine nitrate ClONO2 -31 31 Chlorine dioxide ClO2 -32 32 Atomic bromine Br -33 33 Bromine monoxide BrO -34 34 Bromine chloride BrCl -35 35 Hydrogen bromide HBr -36 36 Hypobromous acid HBrO -37 37 Bromine nitrate BrONO2 -38 38 Oxygen O2 -#39-9999 Reserved -10000 10000 Hydroxyl radical OH -10001 10001 Methyl peroxy radical CH3O2 -10002 10002 Methyl hydroperoxide CH3O2H -10004 10004 Methanol CH3OH -10005 10005 Formic acid CH3OOH -10006 10006 Hydrogen cyanide HCN -10007 10007 Aceto nitrile CH3CN -10008 10008 Ethane C2H6 -10009 10009 Ethene (= Ethylene) C2H4 -10010 10010 Ethyne (= Acetylene) C2H2 -10011 10011 Ethanol C2H5OH -10012 10012 Acetic acid C2H5OOH -10013 10013 Peroxyacetyl nitrate CH3C(O)OONO2 -10014 10014 Propane C3H8 -10015 10015 Propene C3H6 -10016 10016 Butanes C4H10 -10017 10017 Isoprene C5H10 -10018 10018 Alpha pinene C10H16 -10019 10019 Beta pinene C10H16 -10020 10020 Limonene C10H16 -10021 10021 Benzene C6H6 -10022 10022 Toluene C7H8 -10023 10023 Xylene C8H10 -#10024-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides...) -10500 10500 Dimethyl sulphide CH3SCH3 (DMS) -#10501-20000 Reserved -20001 20001 Hydrogen chloride -20002 20002 CFC-11 -20003 20003 CFC-12 -20004 20004 CFC-113 -20005 20005 CFC-113a -20006 20006 CFC-114 -20007 20007 CFC-115 -20008 20008 HCFC-22 -20009 20009 HCFC-141b -20010 20010 HCFC-142b -20011 20011 Halon-1202 -20012 20012 Halon-1211 -20013 20013 Halon-1301 -20014 20014 Halon-2402 -20015 20015 Methyl chloride (HCC-40) -20016 20016 Carbon tetrachloride (HCC-10) -20017 20017 HCC-140a CH3CCl3 -20018 20018 Methyl bromide (HBC-40B1) -20019 20019 Hexachlorocyclohexane (HCH) -20020 20020 Alpha hexachlorocyclohexane -20021 20021 Hexachlorobiphenyl (PCB-153) -#20022-29999 Reserved -30000 30000 Radioactive pollutant (tracer, defined by originating centre) -#30001-30009 Reserved -30010 30010 Hydrogen H-3 -30011 30011 Hydrogen organic bounded H-3o -30012 30012 Hydrogen inorganic H-3a -30013 30013 Beryllium 7 Be-7 -30014 30014 Beryllium 10 Be-10 -30015 30015 Carbon 14 C-14 -30016 30016 Carbon 14 CO2 C-14CO2 -30017 30017 Carbon 14 other gases C-14og -30018 30018 Nitrogen 13 N-13 -30019 30019 Nitrogen 16 N-16 -30020 30020 Fluorine 18 F-18 -30021 30021 Sodium 22 Na-22 -30022 30022 Phosphate 32 P-32 -30023 30023 Phosphate 33 P-33 -30024 30024 Sulphur 35 S-35 -30025 30025 Chlorine 36 Cl-36 -30026 30026 Potassium 40 K-40 -30027 30027 Argon 41 Ar-41 -30028 30028 Calcium 41 Ca-41 -30029 30029 Calcium 45 Ca-45 -30030 30030 Titanium 44 Ti-44 -30031 30031 Scandium 46 Sc-46 -30032 30032 Vanadium 48 V-48 -30033 30033 Vanadium 49 V-49 -30034 30034 Chrome 51 Cr-51 -30035 30035 Manganese 52 Mn-52 -30036 30036 Manganese 54 Mn-54 -30037 30037 Iron 55 Fe-55 -30038 30038 Iron 59 Fe-59 -30039 30039 Cobalt 56 Co-56 -30040 30040 Cobalt 57 Co-57 -30041 30041 Cobalt 58 Co-58 -30042 30042 Cobalt 60 Co-60 -30043 30043 Nickel 59 Ni-59 -30044 30044 Nickel 63 Ni-63 -30045 30045 Zinc 65 Zn-65 -30046 30046 Gallium 67 Ga-67 -30047 30047 Gallium 68 Ga-68 -30048 30048 Germanium 68 Ge-68 -30049 30049 Germanium 69 Ge-69 -30050 30050 Arsenic 73 As-73 -30051 30051 Selenium 75 Se-75 -30052 30052 Selenium 79 Se-79 -30053 30053 Rubidium 81 Rb-81 -30054 30054 Rubidium 83 Rb-83 -30055 30055 Rubidium 84 Rb-84 -30056 30056 Rubidium 86 Rb-86 -30057 30057 Rubidium 87 Rb-87 -30058 30058 Rubidium 88 Rb-88 -30059 30059 Krypton 85 Kr-85 -30060 30060 Krypton 85 metastable Kr-85m -30061 30061 Krypton 87 Kr-87 -30062 30062 Krypton 88 Kr-88 -30063 30063 Krypton 89 Kr-89 -30064 30064 Strontium 85 Sr-85 -30065 30065 Strontium 89 Sr-89 -30066 30066 Strontium 89/90 Sr-8990 -30067 30067 Strontium 90 Sr-90 -30068 30068 Strontium 91 Sr-91 -30069 30069 Strontium 92 Sr-92 -30070 30070 Yttrium 87 Y-87 -30071 30071 Yttrium 88 Y-88 -30072 30072 Yttrium 90 Y-90 -30073 30073 Yttrium 91 Y-91 -30074 30074 Yttrium 91 metastable Y-91m -30075 30075 Yttrium 92 Y-92 -30076 30076 Yttrium 93 Y-93 -30077 30077 Zirconium 89 Zr-89 -30078 30078 Zirconium 93 Zr-93 -30079 30079 Zirconium 95 Zr-95 -30080 30080 Zirconium 97 Zr-97 -30081 30081 Niobium 93 metastable Nb-93m -30082 30082 Niobium 94 Nb-94 -30083 30083 Niobium 95 Nb-95 -30084 30084 Niobium 95 metastable Nb-95m -30085 30085 Niobium 97 Nb-97 -30086 30086 Niobium 97 metastable Nb-97m -30087 30087 Molybdenum 93 Mo-93 -30088 30088 Molybdenum 99 Mo-99 -30089 30089 Technetium 95 metastable Tc-95m -30090 30090 Technetium 96 Tc-96 -30091 30091 Technetium 99 Tc-99 -30092 30092 Technetium 99 metastable Tc-99m -30093 30093 Rhodium 99 Rh-99 -30094 30094 Rhodium 101 Rh-101 -30095 30095 Rhodium 102 metastable Rh-102m -30096 30096 Rhodium 103 metastable Rh-103m -30097 30097 Rhodium 105 Rh-105 -30098 30098 Rhodium 106 Rh-106 -30099 30099 Palladium 100 Pd-100 -30100 30100 Palladium 103 Pd-103 -30101 30101 Palladium 107 Pd-107 -30102 30102 Ruthenium 103 Ru-103 -30103 30103 Ruthenium 105 Ru-105 -30104 30104 Ruthenium 106 Ru-106 -30105 30105 Silver 108 metastable Ag-108m -30106 30106 Silver 110 metastable Ag-110m -30107 30107 Cadmium 109 Cd-109 -30108 30108 Cadmium 113 metastable Cd-113m -30109 30109 Cadmium 115 metastable Cd-115m -30110 30110 Indium 114 metastable In-114m -30111 30111 Tin 113 Sn-113 -30112 30112 Tin 119 metastable Sn-119m -30113 30113 Tin 121 metastable Sn-121m -30114 30114 Tin 122 Sn-122 -30115 30115 Tin 123 Sn-123 -30116 30116 Tin 126 Sn-126 -30117 30117 Antimony 124 Sb-124 -30118 30118 Antimony 125 Sb-125 -30119 30119 Antimony 126 Sb-126 -30120 30120 Antimony 127 Sb-127 -30121 30121 Antimony 129 Sb-129 -30122 30122 Tellurium 123 metastable Te-123m -30123 30123 Tellurium 125 metastable Te-125m -30124 30124 Tellurium 127 Te-127 -30125 30125 Tellurium 127 metastable Te-127m -30126 30126 Tellurium 129 Te-129 -30127 30127 Tellurium 129 metastable Te-129m -30128 30128 Tellurium 131 metastable Te-131m -30129 30129 Tellurium 132 Te-132 -30130 30130 Iodine 123 I-123 -30131 30131 Iodine 124 I-124 -30132 30132 Iodine 125 I-125 -30133 30133 Iodine 126 I-126 -30134 30134 Iodine 129 I-129 -30135 30135 Iodine 129 elementary gaseous I-129g -30136 30136 Iodine 129 organic bounded I-129o -30137 30137 Iodine 131 I-131 -30138 30138 Iodine 131 elementary gaseous I-131g -30139 30139 Iodine 131 organic bounded I-131o -30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go -30141 30141 Iodine 131 aerosol I-131a -30142 30142 Iodine 132 I-132 -30143 30143 Iodine 132 elementary gaseous I-132g -30144 30144 Iodine 132 organic bounded I-132o -30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go -30146 30146 Iodine 132 aerosol I-132a -30147 30147 Iodine 133 I-133 -30148 30148 Iodine 133 elementary gaseous I-133g -30149 30149 Iodine 133 organic bounded I-133o -30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go -30151 30151 Iodine 133 aerosol I-133a -30152 30152 Iodine 134 I-134 -30153 30153 Iodine 134 elementary gaseous I-134g -30154 30154 Iodine 134 organic bounded I-134o -30155 30155 Iodine 135 I-135 -30156 30156 Iodine 135 elementary gaseous I-135g -30157 30157 Iodine 135 organic bounded I-135o -30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go -30159 30159 Iodine 135 aerosol I-135a -30160 30160 Xenon 131 metastable Xe-131m -30161 30161 Xenon 133 Xe-133 -30162 30162 Xenon 133 metastable Xe-133m -30163 30163 Xenon 135 Xe-135 -30164 30164 Xenon 135 metastable Xe-135m -30165 30165 Xenon 137 Xe-137 -30166 30166 Xenon 138 Xe-138 -30167 30167 Xenon sum of all Xenon isotopes Xe-sum -30168 30168 Caesium 131 Cs-131 -30169 30169 Caesium 134 Cs-134 -30170 30170 Caesium 135 Cs-135 -30171 30171 Caesium 136 Cs-136 -30172 30172 Caesium 137 Cs-137 -30173 30173 Barium 133 Ba-133 -30174 30174 Barium 137 metastable Ba-137m -30175 30175 Barium 140 Ba-140 -30176 30176 Cerium 139 Ce-139 -30177 30177 Cerium 141 Ce-141 -30178 30178 Cerium 143 Ce-143 -30179 30179 Cerium 144 Ce-144 -30180 30180 Lanthanum 140 La-140 -30181 30181 Lanthanum 141 La-141 -30182 30182 Praseodymium 143 Pr-143 -30183 30183 Praseodymium 144 Pr-144 -30184 30184 Praseodymium 144 metastable Pr-144m -30185 30185 Samarium 145 Sm-145 -30186 30186 Samarium 147 Sm-147 -30187 30187 Samarium 151 Sm-151 -30188 30188 Neodymium 147 Nd-147 -30189 30189 Promethium 146 Pm-146 -30190 30190 Promethium 147 Pm-147 -30191 30191 Promethium 151 Pm-151 -30192 30192 Europium 152 Eu-152 -30193 30193 Europium 154 Eu-154 -30194 30194 Europium 155 Eu-155 -30195 30195 Gadolinium 153 Gd-153 -30196 30196 Terbium 160 Tb-160 -30197 30197 Holmium 166 metastable Ho-166m -30198 30198 Thulium 170 Tm-170 -30199 30199 Ytterbium 169 Yb-169 -30200 30200 Hafnium 175 Hf-175 -30201 30201 Hafnium 181 Hf-181 -30202 30202 Tantalum 179 Ta-179 -30203 30203 Tantalum 182 Ta-182 -30204 30204 Rhenium 184 Re-184 -30205 30205 Iridium 192 Ir-192 -30206 30206 Mercury 203 Hg-203 -30207 30207 Thallium 204 Tl-204 -30208 30208 Thallium 207 Tl-207 -30209 30209 Thallium 208 Tl-208 -30210 30210 Thallium 209 Tl-209 -30211 30211 Bismuth 205 Bi-205 -30212 30212 Bismuth 207 Bi-207 -30213 30213 Bismuth 210 Bi-210 -30214 30214 Bismuth 211 Bi-211 -30215 30215 Bismuth 212 Bi-212 -30216 30216 Bismuth 213 Bi-213 -30217 30217 Bismuth 214 Bi-214 -30218 30218 Polonium 208 Po-208 -30219 30219 Polonium 210 Po-210 -30220 30220 Polonium 212 Po-212 -30221 30221 Polonium 213 Po-213 -30222 30222 Polonium 214 Po-214 -30223 30223 Polonium 215 Po-215 -30224 30224 Polonium 216 Po-216 -30225 30225 Polonium 218 Po-218 -30226 30226 Lead 209 Pb-209 -30227 30227 Lead 210 Pb-210 -30228 30228 Lead 211 Pb-211 -30229 30229 Lead 212 Pb-212 -30230 30230 Lead 214 Pb-214 -30231 30231 Astatine 217 At-217 -30232 30232 Radon 219 Rn-219 -30233 30233 Radon 220 Rn-220 -30234 30234 Radon 222 Rn-222 -30235 30235 Francium 221 Fr-221 -30236 30236 Francium 223 Fr-223 -30237 30237 Radium 223 Ra-223 -30238 30238 Radium 224 Ra-224 -30239 30239 Radium 225 Ra-225 -30240 30240 Radium 226 Ra-226 -30241 30241 Radium 228 Ra-228 -30242 30242 Actinium 225 Ac-225 -30243 30243 Actinium 227 Ac-227 -30244 30244 Actinium 228 Ac-228 -30245 30245 Thorium 227 Th-227 -30246 30246 Thorium 228 Th-228 -30247 30247 Thorium 229 Th-229 -30248 30248 Thorium 230 Th-230 -30249 30249 Thorium 231 Th-231 -30250 30250 Thorium 232 Th-232 -30251 30251 Thorium 234 Th-234 -30252 30252 Protactinium 231 Pa-231 -30253 30253 Protactinium 233 Pa-233 -30254 30254 Protactinium 234 metastable Pa-234m -30255 30255 Uranium 232 U-232 -30256 30256 Uranium 233 U-233 -30257 30257 Uranium 234 U-234 -30258 30258 Uranium 235 U-235 -30259 30259 Uranium 236 U-236 -30260 30260 Uranium 237 U-237 -30261 30261 Uranium 238 U-238 -30262 30262 Plutonium 236 Pu-236 -30263 30263 Plutonium 238 Pu-238 -30264 30264 Plutonium 239 Pu-239 -30265 30265 Plutonium 240 Pu-240 -30266 30266 Plutonium 241 Pu-241 -30267 30267 Plutonium 242 Pu-242 -30268 30268 Plutonium 244 Pu-244 -30269 30269 Neptunium 237 Np-237 -30270 30270 Neptunium 238 Np-238 -30271 30271 Neptunium 239 Np-239 -30272 30272 Americium 241 Am-241 -30273 30273 Americium 242 Am-242 -30274 30274 Americium 242 metastable Am-242m -30275 30275 Americium 243 Am-243 -30276 30276 Curium 242 Cm-242 -30277 30277 Curium 243 Cm-243 -30278 30278 Curium 244 Cm-244 -30279 30279 Curium 245 Cm-245 -30280 30280 Curium 246 Cm-246 -30281 30281 Curium 247 Cm-247 -30282 30282 Curium 248 Cm-248 -30283 30283 Curium 243/244 Cm-243244 -30284 30284 Plutonium 238/Americium 241 Pu-238Am-241 -30285 30285 Plutonium 239/240 Pu-239240 -30286 30286 Berkelium 249 Bk-249 -30287 30287 Californium 249 Cf-249 -30288 30288 Californium 250 Cf-250 -30289 30289 Californium 252 Cf-252 -30290 30290 Sum aerosol particulates SumAer -30291 30291 Sum Iodine SumIod -30292 30292 Sum noble gas SumNG -30293 30293 Activation gas ActGas -30294 30294 Cs-137 Equivalent EquCs137 -#30295-59999 Reserved -60000 60000 HOx radical (OH+HO2) -60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2) -60002 60002 Passive Ozone -60003 60003 NOx expressed as nitrogen NOx -60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy -60005 60005 Total inorganic chlorine Clx -60006 60006 Total inorganic bromine Brx -60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx -60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx -60009 60009 Lumped alkanes -60010 60010 Lumped alkenes -60011 60011 Lumped aromatic compounds -60012 60012 Lumped terpenes -60013 60013 Non-methane volatile organic compounds expressed as carbon -60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon -60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon -60016 60016 Lumped oxygenated hydrocarbons -60017 60017 NOx expressed as nitrogen dioxide (NO2) -#60018-61999 Reserved -62000 62000 Total aerosol -62001 62001 Dust dry -62002 62002 Water in ambient -62003 62003 Ammonium dry -62004 62004 Nitrate dry -62005 62005 Nitric acid trihydrate -62006 62006 Sulphate dry -62007 62007 Mercury dry -62008 62008 Sea salt dry -62009 62009 Black carbon dry -62010 62010 Particulate organic matter dry -62011 62011 Primary particulate organic matter dry -62012 62012 Secondary particulate organic matter dry -62013 62013 Black carbon hydrophilic dry -62014 62014 Black carbon hydrophobic dry -62015 62015 Particulate organic matter hydrophilic dry -62016 62016 Particulate organic matter hydrophobic dry -62017 62017 Nitrate hydrophilic dry -62018 62018 Nitrate hydrophobic dry -#62019 Reserved -62020 62020 Smoke - high absorption -62021 62021 Smoke - low absorption -62022 62022 Aerosol - high absorption -62023 62023 Aerosol - low absorption -62025 62025 Volcanic ash -#62024-65534 Reserved +# (See Common Code table C-14) 65535 65535 Missing diff --git a/definitions/grib2/tables/16/4.230.table b/definitions/grib2/tables/16/4.230.table index ab995d1cb..5c39a79b9 100644 --- a/definitions/grib2/tables/16/4.230.table +++ b/definitions/grib2/tables/16/4.230.table @@ -1,423 +1,3 @@ # Code table 4.230 - Atmospheric chemical constituent type -0 0 Ozone O3 -1 1 Water vapour H2O -2 2 Methane CH4 -3 3 Carbon dioxide CO2 -4 4 Carbon monoxide CO -5 5 Nitrogen dioxide NO2 -6 6 Nitrous oxide N2O -7 7 Formaldehyde HCHO -8 8 Sulphur dioxide SO2 -9 9 Ammonia NH3 -10 10 Ammonium NH4+ -11 11 Nitrogen monoxide NO -12 12 Atomic oxygen O -13 13 Nitrate radical NO3 -14 14 Hydroperoxyl radical HO2 -15 15 Dinitrogen pentoxide N2O5 -16 16 Nitrous acid HONO -17 17 Nitric acid HNO3 -18 18 Peroxynitric acid HO2NO2 -19 19 Hydrogen peroxide H2O2 -20 20 Molecular hydrogen H -21 21 Atomic nitrogen N -22 22 Sulphate SO42- -23 23 Radon Rn -24 24 Elemental mercury Hg(0) -25 25 Divalent mercury Hg2+ -26 26 Atomic chlorine Cl -27 27 Chlorine monoxide ClO -28 28 Dichlorine peroxide Cl2O2 -29 29 Hypochlorous acid HClO -30 30 Chlorine nitrate ClONO2 -31 31 Chlorine dioxide ClO2 -32 32 Atomic bromine Br -33 33 Bromine monoxide BrO -34 34 Bromine chloride BrCl -35 35 Hydrogen bromide HBr -36 36 Hypobromous acid HBrO -37 37 Bromine nitrate BrONO2 -38 38 Oxygen O2 -#39-9999 Reserved -10000 10000 Hydroxyl radical OH -10001 10001 Methyl peroxy radical CH3O2 -10002 10002 Methyl hydroperoxide CH3O2H -10004 10004 Methanol CH3OH -10005 10005 Formic acid CH3OOH -10006 10006 Hydrogen cyanide HCN -10007 10007 Aceto nitrile CH3CN -10008 10008 Ethane C2H6 -10009 10009 Ethene (= Ethylene) C2H4 -10010 10010 Ethyne (= Acetylene) C2H2 -10011 10011 Ethanol C2H5OH -10012 10012 Acetic acid C2H5OOH -10013 10013 Peroxyacetyl nitrate CH3C(O)OONO2 -10014 10014 Propane C3H8 -10015 10015 Propene C3H6 -10016 10016 Butanes C4H10 -10017 10017 Isoprene C5H10 -10018 10018 Alpha pinene C10H16 -10019 10019 Beta pinene C10H16 -10020 10020 Limonene C10H16 -10021 10021 Benzene C6H6 -10022 10022 Toluene C7H8 -10023 10023 Xylene C8H10 -#10024-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides...) -10500 10500 Dimethyl sulphide CH3SCH3 (DMS) -#10501-20000 Reserved -20001 20001 Hydrogen chloride -20002 20002 CFC-11 -20003 20003 CFC-12 -20004 20004 CFC-113 -20005 20005 CFC-113a -20006 20006 CFC-114 -20007 20007 CFC-115 -20008 20008 HCFC-22 -20009 20009 HCFC-141b -20010 20010 HCFC-142b -20011 20011 Halon-1202 -20012 20012 Halon-1211 -20013 20013 Halon-1301 -20014 20014 Halon-2402 -20015 20015 Methyl chloride (HCC-40) -20016 20016 Carbon tetrachloride (HCC-10) -20017 20017 HCC-140a CH3CCl3 -20018 20018 Methyl bromide (HBC-40B1) -20019 20019 Hexachlorocyclohexane (HCH) -20020 20020 Alpha hexachlorocyclohexane -20021 20021 Hexachlorobiphenyl (PCB-153) -#20022-29999 Reserved -30000 30000 Radioactive pollutant (tracer, defined by originating centre) -#30001-30009 Reserved -30010 30010 Hydrogen H-3 -30011 30011 Hydrogen organic bounded H-3o -30012 30012 Hydrogen inorganic H-3a -30013 30013 Beryllium 7 Be-7 -30014 30014 Beryllium 10 Be-10 -30015 30015 Carbon 14 C-14 -30016 30016 Carbon 14 CO2 C-14CO2 -30017 30017 Carbon 14 other gases C-14og -30018 30018 Nitrogen 13 N-13 -30019 30019 Nitrogen 16 N-16 -30020 30020 Fluorine 18 F-18 -30021 30021 Sodium 22 Na-22 -30022 30022 Phosphate 32 P-32 -30023 30023 Phosphate 33 P-33 -30024 30024 Sulphur 35 S-35 -30025 30025 Chlorine 36 Cl-36 -30026 30026 Potassium 40 K-40 -30027 30027 Argon 41 Ar-41 -30028 30028 Calcium 41 Ca-41 -30029 30029 Calcium 45 Ca-45 -30030 30030 Titanium 44 Ti-44 -30031 30031 Scandium 46 Sc-46 -30032 30032 Vanadium 48 V-48 -30033 30033 Vanadium 49 V-49 -30034 30034 Chrome 51 Cr-51 -30035 30035 Manganese 52 Mn-52 -30036 30036 Manganese 54 Mn-54 -30037 30037 Iron 55 Fe-55 -30038 30038 Iron 59 Fe-59 -30039 30039 Cobalt 56 Co-56 -30040 30040 Cobalt 57 Co-57 -30041 30041 Cobalt 58 Co-58 -30042 30042 Cobalt 60 Co-60 -30043 30043 Nickel 59 Ni-59 -30044 30044 Nickel 63 Ni-63 -30045 30045 Zinc 65 Zn-65 -30046 30046 Gallium 67 Ga-67 -30047 30047 Gallium 68 Ga-68 -30048 30048 Germanium 68 Ge-68 -30049 30049 Germanium 69 Ge-69 -30050 30050 Arsenic 73 As-73 -30051 30051 Selenium 75 Se-75 -30052 30052 Selenium 79 Se-79 -30053 30053 Rubidium 81 Rb-81 -30054 30054 Rubidium 83 Rb-83 -30055 30055 Rubidium 84 Rb-84 -30056 30056 Rubidium 86 Rb-86 -30057 30057 Rubidium 87 Rb-87 -30058 30058 Rubidium 88 Rb-88 -30059 30059 Krypton 85 Kr-85 -30060 30060 Krypton 85 metastable Kr-85m -30061 30061 Krypton 87 Kr-87 -30062 30062 Krypton 88 Kr-88 -30063 30063 Krypton 89 Kr-89 -30064 30064 Strontium 85 Sr-85 -30065 30065 Strontium 89 Sr-89 -30066 30066 Strontium 89/90 Sr-8990 -30067 30067 Strontium 90 Sr-90 -30068 30068 Strontium 91 Sr-91 -30069 30069 Strontium 92 Sr-92 -30070 30070 Yttrium 87 Y-87 -30071 30071 Yttrium 88 Y-88 -30072 30072 Yttrium 90 Y-90 -30073 30073 Yttrium 91 Y-91 -30074 30074 Yttrium 91 metastable Y-91m -30075 30075 Yttrium 92 Y-92 -30076 30076 Yttrium 93 Y-93 -30077 30077 Zirconium 89 Zr-89 -30078 30078 Zirconium 93 Zr-93 -30079 30079 Zirconium 95 Zr-95 -30080 30080 Zirconium 97 Zr-97 -30081 30081 Niobium 93 metastable Nb-93m -30082 30082 Niobium 94 Nb-94 -30083 30083 Niobium 95 Nb-95 -30084 30084 Niobium 95 metastable Nb-95m -30085 30085 Niobium 97 Nb-97 -30086 30086 Niobium 97 metastable Nb-97m -30087 30087 Molybdenum 93 Mo-93 -30088 30088 Molybdenum 99 Mo-99 -30089 30089 Technetium 95 metastable Tc-95m -30090 30090 Technetium 96 Tc-96 -30091 30091 Technetium 99 Tc-99 -30092 30092 Technetium 99 metastable Tc-99m -30093 30093 Rhodium 99 Rh-99 -30094 30094 Rhodium 101 Rh-101 -30095 30095 Rhodium 102 metastable Rh-102m -30096 30096 Rhodium 103 metastable Rh-103m -30097 30097 Rhodium 105 Rh-105 -30098 30098 Rhodium 106 Rh-106 -30099 30099 Palladium 100 Pd-100 -30100 30100 Palladium 103 Pd-103 -30101 30101 Palladium 107 Pd-107 -30102 30102 Ruthenium 103 Ru-103 -30103 30103 Ruthenium 105 Ru-105 -30104 30104 Ruthenium 106 Ru-106 -30105 30105 Silver 108 metastable Ag-108m -30106 30106 Silver 110 metastable Ag-110m -30107 30107 Cadmium 109 Cd-109 -30108 30108 Cadmium 113 metastable Cd-113m -30109 30109 Cadmium 115 metastable Cd-115m -30110 30110 Indium 114 metastable In-114m -30111 30111 Tin 113 Sn-113 -30112 30112 Tin 119 metastable Sn-119m -30113 30113 Tin 121 metastable Sn-121m -30114 30114 Tin 122 Sn-122 -30115 30115 Tin 123 Sn-123 -30116 30116 Tin 126 Sn-126 -30117 30117 Antimony 124 Sb-124 -30118 30118 Antimony 125 Sb-125 -30119 30119 Antimony 126 Sb-126 -30120 30120 Antimony 127 Sb-127 -30121 30121 Antimony 129 Sb-129 -30122 30122 Tellurium 123 metastable Te-123m -30123 30123 Tellurium 125 metastable Te-125m -30124 30124 Tellurium 127 Te-127 -30125 30125 Tellurium 127 metastable Te-127m -30126 30126 Tellurium 129 Te-129 -30127 30127 Tellurium 129 metastable Te-129m -30128 30128 Tellurium 131 metastable Te-131m -30129 30129 Tellurium 132 Te-132 -30130 30130 Iodine 123 I-123 -30131 30131 Iodine 124 I-124 -30132 30132 Iodine 125 I-125 -30133 30133 Iodine 126 I-126 -30134 30134 Iodine 129 I-129 -30135 30135 Iodine 129 elementary gaseous I-129g -30136 30136 Iodine 129 organic bounded I-129o -30137 30137 Iodine 131 I-131 -30138 30138 Iodine 131 elementary gaseous I-131g -30139 30139 Iodine 131 organic bounded I-131o -30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go -30141 30141 Iodine 131 aerosol I-131a -30142 30142 Iodine 132 I-132 -30143 30143 Iodine 132 elementary gaseous I-132g -30144 30144 Iodine 132 organic bounded I-132o -30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go -30146 30146 Iodine 132 aerosol I-132a -30147 30147 Iodine 133 I-133 -30148 30148 Iodine 133 elementary gaseous I-133g -30149 30149 Iodine 133 organic bounded I-133o -30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go -30151 30151 Iodine 133 aerosol I-133a -30152 30152 Iodine 134 I-134 -30153 30153 Iodine 134 elementary gaseous I-134g -30154 30154 Iodine 134 organic bounded I-134o -30155 30155 Iodine 135 I-135 -30156 30156 Iodine 135 elementary gaseous I-135g -30157 30157 Iodine 135 organic bounded I-135o -30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go -30159 30159 Iodine 135 aerosol I-135a -30160 30160 Xenon 131 metastable Xe-131m -30161 30161 Xenon 133 Xe-133 -30162 30162 Xenon 133 metastable Xe-133m -30163 30163 Xenon 135 Xe-135 -30164 30164 Xenon 135 metastable Xe-135m -30165 30165 Xenon 137 Xe-137 -30166 30166 Xenon 138 Xe-138 -30167 30167 Xenon sum of all Xenon isotopes Xe-sum -30168 30168 Caesium 131 Cs-131 -30169 30169 Caesium 134 Cs-134 -30170 30170 Caesium 135 Cs-135 -30171 30171 Caesium 136 Cs-136 -30172 30172 Caesium 137 Cs-137 -30173 30173 Barium 133 Ba-133 -30174 30174 Barium 137 metastable Ba-137m -30175 30175 Barium 140 Ba-140 -30176 30176 Cerium 139 Ce-139 -30177 30177 Cerium 141 Ce-141 -30178 30178 Cerium 143 Ce-143 -30179 30179 Cerium 144 Ce-144 -30180 30180 Lanthanum 140 La-140 -30181 30181 Lanthanum 141 La-141 -30182 30182 Praseodymium 143 Pr-143 -30183 30183 Praseodymium 144 Pr-144 -30184 30184 Praseodymium 144 metastable Pr-144m -30185 30185 Samarium 145 Sm-145 -30186 30186 Samarium 147 Sm-147 -30187 30187 Samarium 151 Sm-151 -30188 30188 Neodymium 147 Nd-147 -30189 30189 Promethium 146 Pm-146 -30190 30190 Promethium 147 Pm-147 -30191 30191 Promethium 151 Pm-151 -30192 30192 Europium 152 Eu-152 -30193 30193 Europium 154 Eu-154 -30194 30194 Europium 155 Eu-155 -30195 30195 Gadolinium 153 Gd-153 -30196 30196 Terbium 160 Tb-160 -30197 30197 Holmium 166 metastable Ho-166m -30198 30198 Thulium 170 Tm-170 -30199 30199 Ytterbium 169 Yb-169 -30200 30200 Hafnium 175 Hf-175 -30201 30201 Hafnium 181 Hf-181 -30202 30202 Tantalum 179 Ta-179 -30203 30203 Tantalum 182 Ta-182 -30204 30204 Rhenium 184 Re-184 -30205 30205 Iridium 192 Ir-192 -30206 30206 Mercury 203 Hg-203 -30207 30207 Thallium 204 Tl-204 -30208 30208 Thallium 207 Tl-207 -30209 30209 Thallium 208 Tl-208 -30210 30210 Thallium 209 Tl-209 -30211 30211 Bismuth 205 Bi-205 -30212 30212 Bismuth 207 Bi-207 -30213 30213 Bismuth 210 Bi-210 -30214 30214 Bismuth 211 Bi-211 -30215 30215 Bismuth 212 Bi-212 -30216 30216 Bismuth 213 Bi-213 -30217 30217 Bismuth 214 Bi-214 -30218 30218 Polonium 208 Po-208 -30219 30219 Polonium 210 Po-210 -30220 30220 Polonium 212 Po-212 -30221 30221 Polonium 213 Po-213 -30222 30222 Polonium 214 Po-214 -30223 30223 Polonium 215 Po-215 -30224 30224 Polonium 216 Po-216 -30225 30225 Polonium 218 Po-218 -30226 30226 Lead 209 Pb-209 -30227 30227 Lead 210 Pb-210 -30228 30228 Lead 211 Pb-211 -30229 30229 Lead 212 Pb-212 -30230 30230 Lead 214 Pb-214 -30231 30231 Astatine 217 At-217 -30232 30232 Radon 219 Rn-219 -30233 30233 Radon 220 Rn-220 -30234 30234 Radon 222 Rn-222 -30235 30235 Francium 221 Fr-221 -30236 30236 Francium 223 Fr-223 -30237 30237 Radium 223 Ra-223 -30238 30238 Radium 224 Ra-224 -30239 30239 Radium 225 Ra-225 -30240 30240 Radium 226 Ra-226 -30241 30241 Radium 228 Ra-228 -30242 30242 Actinium 225 Ac-225 -30243 30243 Actinium 227 Ac-227 -30244 30244 Actinium 228 Ac-228 -30245 30245 Thorium 227 Th-227 -30246 30246 Thorium 228 Th-228 -30247 30247 Thorium 229 Th-229 -30248 30248 Thorium 230 Th-230 -30249 30249 Thorium 231 Th-231 -30250 30250 Thorium 232 Th-232 -30251 30251 Thorium 234 Th-234 -30252 30252 Protactinium 231 Pa-231 -30253 30253 Protactinium 233 Pa-233 -30254 30254 Protactinium 234 metastable Pa-234m -30255 30255 Uranium 232 U-232 -30256 30256 Uranium 233 U-233 -30257 30257 Uranium 234 U-234 -30258 30258 Uranium 235 U-235 -30259 30259 Uranium 236 U-236 -30260 30260 Uranium 237 U-237 -30261 30261 Uranium 238 U-238 -30262 30262 Plutonium 236 Pu-236 -30263 30263 Plutonium 238 Pu-238 -30264 30264 Plutonium 239 Pu-239 -30265 30265 Plutonium 240 Pu-240 -30266 30266 Plutonium 241 Pu-241 -30267 30267 Plutonium 242 Pu-242 -30268 30268 Plutonium 244 Pu-244 -30269 30269 Neptunium 237 Np-237 -30270 30270 Neptunium 238 Np-238 -30271 30271 Neptunium 239 Np-239 -30272 30272 Americium 241 Am-241 -30273 30273 Americium 242 Am-242 -30274 30274 Americium 242 metastable Am-242m -30275 30275 Americium 243 Am-243 -30276 30276 Curium 242 Cm-242 -30277 30277 Curium 243 Cm-243 -30278 30278 Curium 244 Cm-244 -30279 30279 Curium 245 Cm-245 -30280 30280 Curium 246 Cm-246 -30281 30281 Curium 247 Cm-247 -30282 30282 Curium 248 Cm-248 -30283 30283 Curium 243/244 Cm-243244 -30284 30284 Plutonium 238/Americium 241 Pu-238Am-241 -30285 30285 Plutonium 239/240 Pu-239240 -30286 30286 Berkelium 249 Bk-249 -30287 30287 Californium 249 Cf-249 -30288 30288 Californium 250 Cf-250 -30289 30289 Californium 252 Cf-252 -30290 30290 Sum aerosol particulates SumAer -30291 30291 Sum Iodine SumIod -30292 30292 Sum noble gas SumNG -30293 30293 Activation gas ActGas -30294 30294 Cs-137 Equivalent EquCs137 -#30295-59999 Reserved -60000 60000 HOx radical (OH+HO2) -60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2) -60002 60002 Passive Ozone -60003 60003 NOx expressed as nitrogen NOx -60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy -60005 60005 Total inorganic chlorine Clx -60006 60006 Total inorganic bromine Brx -60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx -60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx -60009 60009 Lumped alkanes -60010 60010 Lumped alkenes -60011 60011 Lumped aromatic compounds -60012 60012 Lumped terpenes -60013 60013 Non-methane volatile organic compounds expressed as carbon -60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon -60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon -60016 60016 Lumped oxygenated hydrocarbons -60017 60017 NOx expressed as nitrogen dioxide (NO2) -#60018-61999 Reserved -62000 62000 Total aerosol -62001 62001 Dust dry -62002 62002 Water in ambient -62003 62003 Ammonium dry -62004 62004 Nitrate dry -62005 62005 Nitric acid trihydrate -62006 62006 Sulphate dry -62007 62007 Mercury dry -62008 62008 Sea salt dry -62009 62009 Black carbon dry -62010 62010 Particulate organic matter dry -62011 62011 Primary particulate organic matter dry -62012 62012 Secondary particulate organic matter dry -62013 62013 Black carbon hydrophilic dry -62014 62014 Black carbon hydrophobic dry -62015 62015 Particulate organic matter hydrophilic dry -62016 62016 Particulate organic matter hydrophobic dry -62017 62017 Nitrate hydrophilic dry -62018 62018 Nitrate hydrophobic dry -#62019 Reserved -62020 62020 Smoke - high absorption -62021 62021 Smoke - low absorption -62022 62022 Aerosol - high absorption -62023 62023 Aerosol - low absorption -62025 62025 Volcanic ash -#62024-65534 Reserved +# (See Common Code table C-14) 65535 65535 Missing diff --git a/definitions/grib2/tables/16/4.233.table b/definitions/grib2/tables/16/4.233.table index 4feba8c63..d63f673bb 100644 --- a/definitions/grib2/tables/16/4.233.table +++ b/definitions/grib2/tables/16/4.233.table @@ -1,423 +1,3 @@ # Code table 4.233 - Aerosol type -0 0 Ozone O3 -1 1 Water vapour H2O -2 2 Methane CH4 -3 3 Carbon dioxide CO2 -4 4 Carbon monoxide CO -5 5 Nitrogen dioxide NO2 -6 6 Nitrous oxide N2O -7 7 Formaldehyde HCHO -8 8 Sulphur dioxide SO2 -9 9 Ammonia NH3 -10 10 Ammonium NH4+ -11 11 Nitrogen monoxide NO -12 12 Atomic oxygen O -13 13 Nitrate radical NO3 -14 14 Hydroperoxyl radical HO2 -15 15 Dinitrogen pentoxide N2O5 -16 16 Nitrous acid HONO -17 17 Nitric acid HNO3 -18 18 Peroxynitric acid HO2NO2 -19 19 Hydrogen peroxide H2O2 -20 20 Molecular hydrogen H -21 21 Atomic nitrogen N -22 22 Sulphate SO42- -23 23 Radon Rn -24 24 Elemental mercury Hg(0) -25 25 Divalent mercury Hg2+ -26 26 Atomic chlorine Cl -27 27 Chlorine monoxide ClO -28 28 Dichlorine peroxide Cl2O2 -29 29 Hypochlorous acid HClO -30 30 Chlorine nitrate ClONO2 -31 31 Chlorine dioxide ClO2 -32 32 Atomic bromine Br -33 33 Bromine monoxide BrO -34 34 Bromine chloride BrCl -35 35 Hydrogen bromide HBr -36 36 Hypobromous acid HBrO -37 37 Bromine nitrate BrONO2 -38 38 Oxygen O2 -#39-9999 Reserved -10000 10000 Hydroxyl radical OH -10001 10001 Methyl peroxy radical CH3O2 -10002 10002 Methyl hydroperoxide CH3O2H -10004 10004 Methanol CH3OH -10005 10005 Formic acid CH3OOH -10006 10006 Hydrogen cyanide HCN -10007 10007 Aceto nitrile CH3CN -10008 10008 Ethane C2H6 -10009 10009 Ethene (= Ethylene) C2H4 -10010 10010 Ethyne (= Acetylene) C2H2 -10011 10011 Ethanol C2H5OH -10012 10012 Acetic acid C2H5OOH -10013 10013 Peroxyacetyl nitrate CH3C(O)OONO2 -10014 10014 Propane C3H8 -10015 10015 Propene C3H6 -10016 10016 Butanes C4H10 -10017 10017 Isoprene C5H10 -10018 10018 Alpha pinene C10H16 -10019 10019 Beta pinene C10H16 -10020 10020 Limonene C10H16 -10021 10021 Benzene C6H6 -10022 10022 Toluene C7H8 -10023 10023 Xylene C8H10 -#10024-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides...) -10500 10500 Dimethyl sulphide CH3SCH3 (DMS) -#10501-20000 Reserved -20001 20001 Hydrogen chloride -20002 20002 CFC-11 -20003 20003 CFC-12 -20004 20004 CFC-113 -20005 20005 CFC-113a -20006 20006 CFC-114 -20007 20007 CFC-115 -20008 20008 HCFC-22 -20009 20009 HCFC-141b -20010 20010 HCFC-142b -20011 20011 Halon-1202 -20012 20012 Halon-1211 -20013 20013 Halon-1301 -20014 20014 Halon-2402 -20015 20015 Methyl chloride (HCC-40) -20016 20016 Carbon tetrachloride (HCC-10) -20017 20017 HCC-140a CH3CCl3 -20018 20018 Methyl bromide (HBC-40B1) -20019 20019 Hexachlorocyclohexane (HCH) -20020 20020 Alpha hexachlorocyclohexane -20021 20021 Hexachlorobiphenyl (PCB-153) -#20022-29999 Reserved -30000 30000 Radioactive pollutant (tracer, defined by originating centre) -#30001-30009 Reserved -30010 30010 Hydrogen H-3 -30011 30011 Hydrogen organic bounded H-3o -30012 30012 Hydrogen inorganic H-3a -30013 30013 Beryllium 7 Be-7 -30014 30014 Beryllium 10 Be-10 -30015 30015 Carbon 14 C-14 -30016 30016 Carbon 14 CO2 C-14CO2 -30017 30017 Carbon 14 other gases C-14og -30018 30018 Nitrogen 13 N-13 -30019 30019 Nitrogen 16 N-16 -30020 30020 Fluorine 18 F-18 -30021 30021 Sodium 22 Na-22 -30022 30022 Phosphate 32 P-32 -30023 30023 Phosphate 33 P-33 -30024 30024 Sulphur 35 S-35 -30025 30025 Chlorine 36 Cl-36 -30026 30026 Potassium 40 K-40 -30027 30027 Argon 41 Ar-41 -30028 30028 Calcium 41 Ca-41 -30029 30029 Calcium 45 Ca-45 -30030 30030 Titanium 44 Ti-44 -30031 30031 Scandium 46 Sc-46 -30032 30032 Vanadium 48 V-48 -30033 30033 Vanadium 49 V-49 -30034 30034 Chrome 51 Cr-51 -30035 30035 Manganese 52 Mn-52 -30036 30036 Manganese 54 Mn-54 -30037 30037 Iron 55 Fe-55 -30038 30038 Iron 59 Fe-59 -30039 30039 Cobalt 56 Co-56 -30040 30040 Cobalt 57 Co-57 -30041 30041 Cobalt 58 Co-58 -30042 30042 Cobalt 60 Co-60 -30043 30043 Nickel 59 Ni-59 -30044 30044 Nickel 63 Ni-63 -30045 30045 Zinc 65 Zn-65 -30046 30046 Gallium 67 Ga-67 -30047 30047 Gallium 68 Ga-68 -30048 30048 Germanium 68 Ge-68 -30049 30049 Germanium 69 Ge-69 -30050 30050 Arsenic 73 As-73 -30051 30051 Selenium 75 Se-75 -30052 30052 Selenium 79 Se-79 -30053 30053 Rubidium 81 Rb-81 -30054 30054 Rubidium 83 Rb-83 -30055 30055 Rubidium 84 Rb-84 -30056 30056 Rubidium 86 Rb-86 -30057 30057 Rubidium 87 Rb-87 -30058 30058 Rubidium 88 Rb-88 -30059 30059 Krypton 85 Kr-85 -30060 30060 Krypton 85 metastable Kr-85m -30061 30061 Krypton 87 Kr-87 -30062 30062 Krypton 88 Kr-88 -30063 30063 Krypton 89 Kr-89 -30064 30064 Strontium 85 Sr-85 -30065 30065 Strontium 89 Sr-89 -30066 30066 Strontium 89/90 Sr-8990 -30067 30067 Strontium 90 Sr-90 -30068 30068 Strontium 91 Sr-91 -30069 30069 Strontium 92 Sr-92 -30070 30070 Yttrium 87 Y-87 -30071 30071 Yttrium 88 Y-88 -30072 30072 Yttrium 90 Y-90 -30073 30073 Yttrium 91 Y-91 -30074 30074 Yttrium 91 metastable Y-91m -30075 30075 Yttrium 92 Y-92 -30076 30076 Yttrium 93 Y-93 -30077 30077 Zirconium 89 Zr-89 -30078 30078 Zirconium 93 Zr-93 -30079 30079 Zirconium 95 Zr-95 -30080 30080 Zirconium 97 Zr-97 -30081 30081 Niobium 93 metastable Nb-93m -30082 30082 Niobium 94 Nb-94 -30083 30083 Niobium 95 Nb-95 -30084 30084 Niobium 95 metastable Nb-95m -30085 30085 Niobium 97 Nb-97 -30086 30086 Niobium 97 metastable Nb-97m -30087 30087 Molybdenum 93 Mo-93 -30088 30088 Molybdenum 99 Mo-99 -30089 30089 Technetium 95 metastable Tc-95m -30090 30090 Technetium 96 Tc-96 -30091 30091 Technetium 99 Tc-99 -30092 30092 Technetium 99 metastable Tc-99m -30093 30093 Rhodium 99 Rh-99 -30094 30094 Rhodium 101 Rh-101 -30095 30095 Rhodium 102 metastable Rh-102m -30096 30096 Rhodium 103 metastable Rh-103m -30097 30097 Rhodium 105 Rh-105 -30098 30098 Rhodium 106 Rh-106 -30099 30099 Palladium 100 Pd-100 -30100 30100 Palladium 103 Pd-103 -30101 30101 Palladium 107 Pd-107 -30102 30102 Ruthenium 103 Ru-103 -30103 30103 Ruthenium 105 Ru-105 -30104 30104 Ruthenium 106 Ru-106 -30105 30105 Silver 108 metastable Ag-108m -30106 30106 Silver 110 metastable Ag-110m -30107 30107 Cadmium 109 Cd-109 -30108 30108 Cadmium 113 metastable Cd-113m -30109 30109 Cadmium 115 metastable Cd-115m -30110 30110 Indium 114 metastable In-114m -30111 30111 Tin 113 Sn-113 -30112 30112 Tin 119 metastable Sn-119m -30113 30113 Tin 121 metastable Sn-121m -30114 30114 Tin 122 Sn-122 -30115 30115 Tin 123 Sn-123 -30116 30116 Tin 126 Sn-126 -30117 30117 Antimony 124 Sb-124 -30118 30118 Antimony 125 Sb-125 -30119 30119 Antimony 126 Sb-126 -30120 30120 Antimony 127 Sb-127 -30121 30121 Antimony 129 Sb-129 -30122 30122 Tellurium 123 metastable Te-123m -30123 30123 Tellurium 125 metastable Te-125m -30124 30124 Tellurium 127 Te-127 -30125 30125 Tellurium 127 metastable Te-127m -30126 30126 Tellurium 129 Te-129 -30127 30127 Tellurium 129 metastable Te-129m -30128 30128 Tellurium 131 metastable Te-131m -30129 30129 Tellurium 132 Te-132 -30130 30130 Iodine 123 I-123 -30131 30131 Iodine 124 I-124 -30132 30132 Iodine 125 I-125 -30133 30133 Iodine 126 I-126 -30134 30134 Iodine 129 I-129 -30135 30135 Iodine 129 elementary gaseous I-129g -30136 30136 Iodine 129 organic bounded I-129o -30137 30137 Iodine 131 I-131 -30138 30138 Iodine 131 elementary gaseous I-131g -30139 30139 Iodine 131 organic bounded I-131o -30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go -30141 30141 Iodine 131 aerosol I-131a -30142 30142 Iodine 132 I-132 -30143 30143 Iodine 132 elementary gaseous I-132g -30144 30144 Iodine 132 organic bounded I-132o -30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go -30146 30146 Iodine 132 aerosol I-132a -30147 30147 Iodine 133 I-133 -30148 30148 Iodine 133 elementary gaseous I-133g -30149 30149 Iodine 133 organic bounded I-133o -30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go -30151 30151 Iodine 133 aerosol I-133a -30152 30152 Iodine 134 I-134 -30153 30153 Iodine 134 elementary gaseous I-134g -30154 30154 Iodine 134 organic bounded I-134o -30155 30155 Iodine 135 I-135 -30156 30156 Iodine 135 elementary gaseous I-135g -30157 30157 Iodine 135 organic bounded I-135o -30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go -30159 30159 Iodine 135 aerosol I-135a -30160 30160 Xenon 131 metastable Xe-131m -30161 30161 Xenon 133 Xe-133 -30162 30162 Xenon 133 metastable Xe-133m -30163 30163 Xenon 135 Xe-135 -30164 30164 Xenon 135 metastable Xe-135m -30165 30165 Xenon 137 Xe-137 -30166 30166 Xenon 138 Xe-138 -30167 30167 Xenon sum of all Xenon isotopes Xe-sum -30168 30168 Caesium 131 Cs-131 -30169 30169 Caesium 134 Cs-134 -30170 30170 Caesium 135 Cs-135 -30171 30171 Caesium 136 Cs-136 -30172 30172 Caesium 137 Cs-137 -30173 30173 Barium 133 Ba-133 -30174 30174 Barium 137 metastable Ba-137m -30175 30175 Barium 140 Ba-140 -30176 30176 Cerium 139 Ce-139 -30177 30177 Cerium 141 Ce-141 -30178 30178 Cerium 143 Ce-143 -30179 30179 Cerium 144 Ce-144 -30180 30180 Lanthanum 140 La-140 -30181 30181 Lanthanum 141 La-141 -30182 30182 Praseodymium 143 Pr-143 -30183 30183 Praseodymium 144 Pr-144 -30184 30184 Praseodymium 144 metastable Pr-144m -30185 30185 Samarium 145 Sm-145 -30186 30186 Samarium 147 Sm-147 -30187 30187 Samarium 151 Sm-151 -30188 30188 Neodymium 147 Nd-147 -30189 30189 Promethium 146 Pm-146 -30190 30190 Promethium 147 Pm-147 -30191 30191 Promethium 151 Pm-151 -30192 30192 Europium 152 Eu-152 -30193 30193 Europium 154 Eu-154 -30194 30194 Europium 155 Eu-155 -30195 30195 Gadolinium 153 Gd-153 -30196 30196 Terbium 160 Tb-160 -30197 30197 Holmium 166 metastable Ho-166m -30198 30198 Thulium 170 Tm-170 -30199 30199 Ytterbium 169 Yb-169 -30200 30200 Hafnium 175 Hf-175 -30201 30201 Hafnium 181 Hf-181 -30202 30202 Tantalum 179 Ta-179 -30203 30203 Tantalum 182 Ta-182 -30204 30204 Rhenium 184 Re-184 -30205 30205 Iridium 192 Ir-192 -30206 30206 Mercury 203 Hg-203 -30207 30207 Thallium 204 Tl-204 -30208 30208 Thallium 207 Tl-207 -30209 30209 Thallium 208 Tl-208 -30210 30210 Thallium 209 Tl-209 -30211 30211 Bismuth 205 Bi-205 -30212 30212 Bismuth 207 Bi-207 -30213 30213 Bismuth 210 Bi-210 -30214 30214 Bismuth 211 Bi-211 -30215 30215 Bismuth 212 Bi-212 -30216 30216 Bismuth 213 Bi-213 -30217 30217 Bismuth 214 Bi-214 -30218 30218 Polonium 208 Po-208 -30219 30219 Polonium 210 Po-210 -30220 30220 Polonium 212 Po-212 -30221 30221 Polonium 213 Po-213 -30222 30222 Polonium 214 Po-214 -30223 30223 Polonium 215 Po-215 -30224 30224 Polonium 216 Po-216 -30225 30225 Polonium 218 Po-218 -30226 30226 Lead 209 Pb-209 -30227 30227 Lead 210 Pb-210 -30228 30228 Lead 211 Pb-211 -30229 30229 Lead 212 Pb-212 -30230 30230 Lead 214 Pb-214 -30231 30231 Astatine 217 At-217 -30232 30232 Radon 219 Rn-219 -30233 30233 Radon 220 Rn-220 -30234 30234 Radon 222 Rn-222 -30235 30235 Francium 221 Fr-221 -30236 30236 Francium 223 Fr-223 -30237 30237 Radium 223 Ra-223 -30238 30238 Radium 224 Ra-224 -30239 30239 Radium 225 Ra-225 -30240 30240 Radium 226 Ra-226 -30241 30241 Radium 228 Ra-228 -30242 30242 Actinium 225 Ac-225 -30243 30243 Actinium 227 Ac-227 -30244 30244 Actinium 228 Ac-228 -30245 30245 Thorium 227 Th-227 -30246 30246 Thorium 228 Th-228 -30247 30247 Thorium 229 Th-229 -30248 30248 Thorium 230 Th-230 -30249 30249 Thorium 231 Th-231 -30250 30250 Thorium 232 Th-232 -30251 30251 Thorium 234 Th-234 -30252 30252 Protactinium 231 Pa-231 -30253 30253 Protactinium 233 Pa-233 -30254 30254 Protactinium 234 metastable Pa-234m -30255 30255 Uranium 232 U-232 -30256 30256 Uranium 233 U-233 -30257 30257 Uranium 234 U-234 -30258 30258 Uranium 235 U-235 -30259 30259 Uranium 236 U-236 -30260 30260 Uranium 237 U-237 -30261 30261 Uranium 238 U-238 -30262 30262 Plutonium 236 Pu-236 -30263 30263 Plutonium 238 Pu-238 -30264 30264 Plutonium 239 Pu-239 -30265 30265 Plutonium 240 Pu-240 -30266 30266 Plutonium 241 Pu-241 -30267 30267 Plutonium 242 Pu-242 -30268 30268 Plutonium 244 Pu-244 -30269 30269 Neptunium 237 Np-237 -30270 30270 Neptunium 238 Np-238 -30271 30271 Neptunium 239 Np-239 -30272 30272 Americium 241 Am-241 -30273 30273 Americium 242 Am-242 -30274 30274 Americium 242 metastable Am-242m -30275 30275 Americium 243 Am-243 -30276 30276 Curium 242 Cm-242 -30277 30277 Curium 243 Cm-243 -30278 30278 Curium 244 Cm-244 -30279 30279 Curium 245 Cm-245 -30280 30280 Curium 246 Cm-246 -30281 30281 Curium 247 Cm-247 -30282 30282 Curium 248 Cm-248 -30283 30283 Curium 243/244 Cm-243244 -30284 30284 Plutonium 238/Americium 241 Pu-238Am-241 -30285 30285 Plutonium 239/240 Pu-239240 -30286 30286 Berkelium 249 Bk-249 -30287 30287 Californium 249 Cf-249 -30288 30288 Californium 250 Cf-250 -30289 30289 Californium 252 Cf-252 -30290 30290 Sum aerosol particulates SumAer -30291 30291 Sum Iodine SumIod -30292 30292 Sum noble gas SumNG -30293 30293 Activation gas ActGas -30294 30294 Cs-137 Equivalent EquCs137 -#30295-59999 Reserved -60000 60000 HOx radical (OH+HO2) -60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2) -60002 60002 Passive Ozone -60003 60003 NOx expressed as nitrogen NOx -60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy -60005 60005 Total inorganic chlorine Clx -60006 60006 Total inorganic bromine Brx -60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx -60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx -60009 60009 Lumped alkanes -60010 60010 Lumped alkenes -60011 60011 Lumped aromatic compounds -60012 60012 Lumped terpenes -60013 60013 Non-methane volatile organic compounds expressed as carbon -60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon -60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon -60016 60016 Lumped oxygenated hydrocarbons -60017 60017 NOx expressed as nitrogen dioxide (NO2) -#60018-61999 Reserved -62000 62000 Total aerosol -62001 62001 Dust dry -62002 62002 Water in ambient -62003 62003 Ammonium dry -62004 62004 Nitrate dry -62005 62005 Nitric acid trihydrate -62006 62006 Sulphate dry -62007 62007 Mercury dry -62008 62008 Sea salt dry -62009 62009 Black carbon dry -62010 62010 Particulate organic matter dry -62011 62011 Primary particulate organic matter dry -62012 62012 Secondary particulate organic matter dry -62013 62013 Black carbon hydrophilic dry -62014 62014 Black carbon hydrophobic dry -62015 62015 Particulate organic matter hydrophilic dry -62016 62016 Particulate organic matter hydrophobic dry -62017 62017 Nitrate hydrophilic dry -62018 62018 Nitrate hydrophobic dry -#62019 Reserved -62020 62020 Smoke - high absorption -62021 62021 Smoke - low absorption -62022 62022 Aerosol - high absorption -62023 62023 Aerosol - low absorption -62025 62025 Volcanic ash -#62024-65534 Reserved +# (See Common Code table C-14) 65535 65535 Missing diff --git a/definitions/grib2/tables/17/4.230.table b/definitions/grib2/tables/17/4.230.table index ab995d1cb..5c39a79b9 100644 --- a/definitions/grib2/tables/17/4.230.table +++ b/definitions/grib2/tables/17/4.230.table @@ -1,423 +1,3 @@ # Code table 4.230 - Atmospheric chemical constituent type -0 0 Ozone O3 -1 1 Water vapour H2O -2 2 Methane CH4 -3 3 Carbon dioxide CO2 -4 4 Carbon monoxide CO -5 5 Nitrogen dioxide NO2 -6 6 Nitrous oxide N2O -7 7 Formaldehyde HCHO -8 8 Sulphur dioxide SO2 -9 9 Ammonia NH3 -10 10 Ammonium NH4+ -11 11 Nitrogen monoxide NO -12 12 Atomic oxygen O -13 13 Nitrate radical NO3 -14 14 Hydroperoxyl radical HO2 -15 15 Dinitrogen pentoxide N2O5 -16 16 Nitrous acid HONO -17 17 Nitric acid HNO3 -18 18 Peroxynitric acid HO2NO2 -19 19 Hydrogen peroxide H2O2 -20 20 Molecular hydrogen H -21 21 Atomic nitrogen N -22 22 Sulphate SO42- -23 23 Radon Rn -24 24 Elemental mercury Hg(0) -25 25 Divalent mercury Hg2+ -26 26 Atomic chlorine Cl -27 27 Chlorine monoxide ClO -28 28 Dichlorine peroxide Cl2O2 -29 29 Hypochlorous acid HClO -30 30 Chlorine nitrate ClONO2 -31 31 Chlorine dioxide ClO2 -32 32 Atomic bromine Br -33 33 Bromine monoxide BrO -34 34 Bromine chloride BrCl -35 35 Hydrogen bromide HBr -36 36 Hypobromous acid HBrO -37 37 Bromine nitrate BrONO2 -38 38 Oxygen O2 -#39-9999 Reserved -10000 10000 Hydroxyl radical OH -10001 10001 Methyl peroxy radical CH3O2 -10002 10002 Methyl hydroperoxide CH3O2H -10004 10004 Methanol CH3OH -10005 10005 Formic acid CH3OOH -10006 10006 Hydrogen cyanide HCN -10007 10007 Aceto nitrile CH3CN -10008 10008 Ethane C2H6 -10009 10009 Ethene (= Ethylene) C2H4 -10010 10010 Ethyne (= Acetylene) C2H2 -10011 10011 Ethanol C2H5OH -10012 10012 Acetic acid C2H5OOH -10013 10013 Peroxyacetyl nitrate CH3C(O)OONO2 -10014 10014 Propane C3H8 -10015 10015 Propene C3H6 -10016 10016 Butanes C4H10 -10017 10017 Isoprene C5H10 -10018 10018 Alpha pinene C10H16 -10019 10019 Beta pinene C10H16 -10020 10020 Limonene C10H16 -10021 10021 Benzene C6H6 -10022 10022 Toluene C7H8 -10023 10023 Xylene C8H10 -#10024-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides...) -10500 10500 Dimethyl sulphide CH3SCH3 (DMS) -#10501-20000 Reserved -20001 20001 Hydrogen chloride -20002 20002 CFC-11 -20003 20003 CFC-12 -20004 20004 CFC-113 -20005 20005 CFC-113a -20006 20006 CFC-114 -20007 20007 CFC-115 -20008 20008 HCFC-22 -20009 20009 HCFC-141b -20010 20010 HCFC-142b -20011 20011 Halon-1202 -20012 20012 Halon-1211 -20013 20013 Halon-1301 -20014 20014 Halon-2402 -20015 20015 Methyl chloride (HCC-40) -20016 20016 Carbon tetrachloride (HCC-10) -20017 20017 HCC-140a CH3CCl3 -20018 20018 Methyl bromide (HBC-40B1) -20019 20019 Hexachlorocyclohexane (HCH) -20020 20020 Alpha hexachlorocyclohexane -20021 20021 Hexachlorobiphenyl (PCB-153) -#20022-29999 Reserved -30000 30000 Radioactive pollutant (tracer, defined by originating centre) -#30001-30009 Reserved -30010 30010 Hydrogen H-3 -30011 30011 Hydrogen organic bounded H-3o -30012 30012 Hydrogen inorganic H-3a -30013 30013 Beryllium 7 Be-7 -30014 30014 Beryllium 10 Be-10 -30015 30015 Carbon 14 C-14 -30016 30016 Carbon 14 CO2 C-14CO2 -30017 30017 Carbon 14 other gases C-14og -30018 30018 Nitrogen 13 N-13 -30019 30019 Nitrogen 16 N-16 -30020 30020 Fluorine 18 F-18 -30021 30021 Sodium 22 Na-22 -30022 30022 Phosphate 32 P-32 -30023 30023 Phosphate 33 P-33 -30024 30024 Sulphur 35 S-35 -30025 30025 Chlorine 36 Cl-36 -30026 30026 Potassium 40 K-40 -30027 30027 Argon 41 Ar-41 -30028 30028 Calcium 41 Ca-41 -30029 30029 Calcium 45 Ca-45 -30030 30030 Titanium 44 Ti-44 -30031 30031 Scandium 46 Sc-46 -30032 30032 Vanadium 48 V-48 -30033 30033 Vanadium 49 V-49 -30034 30034 Chrome 51 Cr-51 -30035 30035 Manganese 52 Mn-52 -30036 30036 Manganese 54 Mn-54 -30037 30037 Iron 55 Fe-55 -30038 30038 Iron 59 Fe-59 -30039 30039 Cobalt 56 Co-56 -30040 30040 Cobalt 57 Co-57 -30041 30041 Cobalt 58 Co-58 -30042 30042 Cobalt 60 Co-60 -30043 30043 Nickel 59 Ni-59 -30044 30044 Nickel 63 Ni-63 -30045 30045 Zinc 65 Zn-65 -30046 30046 Gallium 67 Ga-67 -30047 30047 Gallium 68 Ga-68 -30048 30048 Germanium 68 Ge-68 -30049 30049 Germanium 69 Ge-69 -30050 30050 Arsenic 73 As-73 -30051 30051 Selenium 75 Se-75 -30052 30052 Selenium 79 Se-79 -30053 30053 Rubidium 81 Rb-81 -30054 30054 Rubidium 83 Rb-83 -30055 30055 Rubidium 84 Rb-84 -30056 30056 Rubidium 86 Rb-86 -30057 30057 Rubidium 87 Rb-87 -30058 30058 Rubidium 88 Rb-88 -30059 30059 Krypton 85 Kr-85 -30060 30060 Krypton 85 metastable Kr-85m -30061 30061 Krypton 87 Kr-87 -30062 30062 Krypton 88 Kr-88 -30063 30063 Krypton 89 Kr-89 -30064 30064 Strontium 85 Sr-85 -30065 30065 Strontium 89 Sr-89 -30066 30066 Strontium 89/90 Sr-8990 -30067 30067 Strontium 90 Sr-90 -30068 30068 Strontium 91 Sr-91 -30069 30069 Strontium 92 Sr-92 -30070 30070 Yttrium 87 Y-87 -30071 30071 Yttrium 88 Y-88 -30072 30072 Yttrium 90 Y-90 -30073 30073 Yttrium 91 Y-91 -30074 30074 Yttrium 91 metastable Y-91m -30075 30075 Yttrium 92 Y-92 -30076 30076 Yttrium 93 Y-93 -30077 30077 Zirconium 89 Zr-89 -30078 30078 Zirconium 93 Zr-93 -30079 30079 Zirconium 95 Zr-95 -30080 30080 Zirconium 97 Zr-97 -30081 30081 Niobium 93 metastable Nb-93m -30082 30082 Niobium 94 Nb-94 -30083 30083 Niobium 95 Nb-95 -30084 30084 Niobium 95 metastable Nb-95m -30085 30085 Niobium 97 Nb-97 -30086 30086 Niobium 97 metastable Nb-97m -30087 30087 Molybdenum 93 Mo-93 -30088 30088 Molybdenum 99 Mo-99 -30089 30089 Technetium 95 metastable Tc-95m -30090 30090 Technetium 96 Tc-96 -30091 30091 Technetium 99 Tc-99 -30092 30092 Technetium 99 metastable Tc-99m -30093 30093 Rhodium 99 Rh-99 -30094 30094 Rhodium 101 Rh-101 -30095 30095 Rhodium 102 metastable Rh-102m -30096 30096 Rhodium 103 metastable Rh-103m -30097 30097 Rhodium 105 Rh-105 -30098 30098 Rhodium 106 Rh-106 -30099 30099 Palladium 100 Pd-100 -30100 30100 Palladium 103 Pd-103 -30101 30101 Palladium 107 Pd-107 -30102 30102 Ruthenium 103 Ru-103 -30103 30103 Ruthenium 105 Ru-105 -30104 30104 Ruthenium 106 Ru-106 -30105 30105 Silver 108 metastable Ag-108m -30106 30106 Silver 110 metastable Ag-110m -30107 30107 Cadmium 109 Cd-109 -30108 30108 Cadmium 113 metastable Cd-113m -30109 30109 Cadmium 115 metastable Cd-115m -30110 30110 Indium 114 metastable In-114m -30111 30111 Tin 113 Sn-113 -30112 30112 Tin 119 metastable Sn-119m -30113 30113 Tin 121 metastable Sn-121m -30114 30114 Tin 122 Sn-122 -30115 30115 Tin 123 Sn-123 -30116 30116 Tin 126 Sn-126 -30117 30117 Antimony 124 Sb-124 -30118 30118 Antimony 125 Sb-125 -30119 30119 Antimony 126 Sb-126 -30120 30120 Antimony 127 Sb-127 -30121 30121 Antimony 129 Sb-129 -30122 30122 Tellurium 123 metastable Te-123m -30123 30123 Tellurium 125 metastable Te-125m -30124 30124 Tellurium 127 Te-127 -30125 30125 Tellurium 127 metastable Te-127m -30126 30126 Tellurium 129 Te-129 -30127 30127 Tellurium 129 metastable Te-129m -30128 30128 Tellurium 131 metastable Te-131m -30129 30129 Tellurium 132 Te-132 -30130 30130 Iodine 123 I-123 -30131 30131 Iodine 124 I-124 -30132 30132 Iodine 125 I-125 -30133 30133 Iodine 126 I-126 -30134 30134 Iodine 129 I-129 -30135 30135 Iodine 129 elementary gaseous I-129g -30136 30136 Iodine 129 organic bounded I-129o -30137 30137 Iodine 131 I-131 -30138 30138 Iodine 131 elementary gaseous I-131g -30139 30139 Iodine 131 organic bounded I-131o -30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go -30141 30141 Iodine 131 aerosol I-131a -30142 30142 Iodine 132 I-132 -30143 30143 Iodine 132 elementary gaseous I-132g -30144 30144 Iodine 132 organic bounded I-132o -30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go -30146 30146 Iodine 132 aerosol I-132a -30147 30147 Iodine 133 I-133 -30148 30148 Iodine 133 elementary gaseous I-133g -30149 30149 Iodine 133 organic bounded I-133o -30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go -30151 30151 Iodine 133 aerosol I-133a -30152 30152 Iodine 134 I-134 -30153 30153 Iodine 134 elementary gaseous I-134g -30154 30154 Iodine 134 organic bounded I-134o -30155 30155 Iodine 135 I-135 -30156 30156 Iodine 135 elementary gaseous I-135g -30157 30157 Iodine 135 organic bounded I-135o -30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go -30159 30159 Iodine 135 aerosol I-135a -30160 30160 Xenon 131 metastable Xe-131m -30161 30161 Xenon 133 Xe-133 -30162 30162 Xenon 133 metastable Xe-133m -30163 30163 Xenon 135 Xe-135 -30164 30164 Xenon 135 metastable Xe-135m -30165 30165 Xenon 137 Xe-137 -30166 30166 Xenon 138 Xe-138 -30167 30167 Xenon sum of all Xenon isotopes Xe-sum -30168 30168 Caesium 131 Cs-131 -30169 30169 Caesium 134 Cs-134 -30170 30170 Caesium 135 Cs-135 -30171 30171 Caesium 136 Cs-136 -30172 30172 Caesium 137 Cs-137 -30173 30173 Barium 133 Ba-133 -30174 30174 Barium 137 metastable Ba-137m -30175 30175 Barium 140 Ba-140 -30176 30176 Cerium 139 Ce-139 -30177 30177 Cerium 141 Ce-141 -30178 30178 Cerium 143 Ce-143 -30179 30179 Cerium 144 Ce-144 -30180 30180 Lanthanum 140 La-140 -30181 30181 Lanthanum 141 La-141 -30182 30182 Praseodymium 143 Pr-143 -30183 30183 Praseodymium 144 Pr-144 -30184 30184 Praseodymium 144 metastable Pr-144m -30185 30185 Samarium 145 Sm-145 -30186 30186 Samarium 147 Sm-147 -30187 30187 Samarium 151 Sm-151 -30188 30188 Neodymium 147 Nd-147 -30189 30189 Promethium 146 Pm-146 -30190 30190 Promethium 147 Pm-147 -30191 30191 Promethium 151 Pm-151 -30192 30192 Europium 152 Eu-152 -30193 30193 Europium 154 Eu-154 -30194 30194 Europium 155 Eu-155 -30195 30195 Gadolinium 153 Gd-153 -30196 30196 Terbium 160 Tb-160 -30197 30197 Holmium 166 metastable Ho-166m -30198 30198 Thulium 170 Tm-170 -30199 30199 Ytterbium 169 Yb-169 -30200 30200 Hafnium 175 Hf-175 -30201 30201 Hafnium 181 Hf-181 -30202 30202 Tantalum 179 Ta-179 -30203 30203 Tantalum 182 Ta-182 -30204 30204 Rhenium 184 Re-184 -30205 30205 Iridium 192 Ir-192 -30206 30206 Mercury 203 Hg-203 -30207 30207 Thallium 204 Tl-204 -30208 30208 Thallium 207 Tl-207 -30209 30209 Thallium 208 Tl-208 -30210 30210 Thallium 209 Tl-209 -30211 30211 Bismuth 205 Bi-205 -30212 30212 Bismuth 207 Bi-207 -30213 30213 Bismuth 210 Bi-210 -30214 30214 Bismuth 211 Bi-211 -30215 30215 Bismuth 212 Bi-212 -30216 30216 Bismuth 213 Bi-213 -30217 30217 Bismuth 214 Bi-214 -30218 30218 Polonium 208 Po-208 -30219 30219 Polonium 210 Po-210 -30220 30220 Polonium 212 Po-212 -30221 30221 Polonium 213 Po-213 -30222 30222 Polonium 214 Po-214 -30223 30223 Polonium 215 Po-215 -30224 30224 Polonium 216 Po-216 -30225 30225 Polonium 218 Po-218 -30226 30226 Lead 209 Pb-209 -30227 30227 Lead 210 Pb-210 -30228 30228 Lead 211 Pb-211 -30229 30229 Lead 212 Pb-212 -30230 30230 Lead 214 Pb-214 -30231 30231 Astatine 217 At-217 -30232 30232 Radon 219 Rn-219 -30233 30233 Radon 220 Rn-220 -30234 30234 Radon 222 Rn-222 -30235 30235 Francium 221 Fr-221 -30236 30236 Francium 223 Fr-223 -30237 30237 Radium 223 Ra-223 -30238 30238 Radium 224 Ra-224 -30239 30239 Radium 225 Ra-225 -30240 30240 Radium 226 Ra-226 -30241 30241 Radium 228 Ra-228 -30242 30242 Actinium 225 Ac-225 -30243 30243 Actinium 227 Ac-227 -30244 30244 Actinium 228 Ac-228 -30245 30245 Thorium 227 Th-227 -30246 30246 Thorium 228 Th-228 -30247 30247 Thorium 229 Th-229 -30248 30248 Thorium 230 Th-230 -30249 30249 Thorium 231 Th-231 -30250 30250 Thorium 232 Th-232 -30251 30251 Thorium 234 Th-234 -30252 30252 Protactinium 231 Pa-231 -30253 30253 Protactinium 233 Pa-233 -30254 30254 Protactinium 234 metastable Pa-234m -30255 30255 Uranium 232 U-232 -30256 30256 Uranium 233 U-233 -30257 30257 Uranium 234 U-234 -30258 30258 Uranium 235 U-235 -30259 30259 Uranium 236 U-236 -30260 30260 Uranium 237 U-237 -30261 30261 Uranium 238 U-238 -30262 30262 Plutonium 236 Pu-236 -30263 30263 Plutonium 238 Pu-238 -30264 30264 Plutonium 239 Pu-239 -30265 30265 Plutonium 240 Pu-240 -30266 30266 Plutonium 241 Pu-241 -30267 30267 Plutonium 242 Pu-242 -30268 30268 Plutonium 244 Pu-244 -30269 30269 Neptunium 237 Np-237 -30270 30270 Neptunium 238 Np-238 -30271 30271 Neptunium 239 Np-239 -30272 30272 Americium 241 Am-241 -30273 30273 Americium 242 Am-242 -30274 30274 Americium 242 metastable Am-242m -30275 30275 Americium 243 Am-243 -30276 30276 Curium 242 Cm-242 -30277 30277 Curium 243 Cm-243 -30278 30278 Curium 244 Cm-244 -30279 30279 Curium 245 Cm-245 -30280 30280 Curium 246 Cm-246 -30281 30281 Curium 247 Cm-247 -30282 30282 Curium 248 Cm-248 -30283 30283 Curium 243/244 Cm-243244 -30284 30284 Plutonium 238/Americium 241 Pu-238Am-241 -30285 30285 Plutonium 239/240 Pu-239240 -30286 30286 Berkelium 249 Bk-249 -30287 30287 Californium 249 Cf-249 -30288 30288 Californium 250 Cf-250 -30289 30289 Californium 252 Cf-252 -30290 30290 Sum aerosol particulates SumAer -30291 30291 Sum Iodine SumIod -30292 30292 Sum noble gas SumNG -30293 30293 Activation gas ActGas -30294 30294 Cs-137 Equivalent EquCs137 -#30295-59999 Reserved -60000 60000 HOx radical (OH+HO2) -60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2) -60002 60002 Passive Ozone -60003 60003 NOx expressed as nitrogen NOx -60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy -60005 60005 Total inorganic chlorine Clx -60006 60006 Total inorganic bromine Brx -60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx -60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx -60009 60009 Lumped alkanes -60010 60010 Lumped alkenes -60011 60011 Lumped aromatic compounds -60012 60012 Lumped terpenes -60013 60013 Non-methane volatile organic compounds expressed as carbon -60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon -60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon -60016 60016 Lumped oxygenated hydrocarbons -60017 60017 NOx expressed as nitrogen dioxide (NO2) -#60018-61999 Reserved -62000 62000 Total aerosol -62001 62001 Dust dry -62002 62002 Water in ambient -62003 62003 Ammonium dry -62004 62004 Nitrate dry -62005 62005 Nitric acid trihydrate -62006 62006 Sulphate dry -62007 62007 Mercury dry -62008 62008 Sea salt dry -62009 62009 Black carbon dry -62010 62010 Particulate organic matter dry -62011 62011 Primary particulate organic matter dry -62012 62012 Secondary particulate organic matter dry -62013 62013 Black carbon hydrophilic dry -62014 62014 Black carbon hydrophobic dry -62015 62015 Particulate organic matter hydrophilic dry -62016 62016 Particulate organic matter hydrophobic dry -62017 62017 Nitrate hydrophilic dry -62018 62018 Nitrate hydrophobic dry -#62019 Reserved -62020 62020 Smoke - high absorption -62021 62021 Smoke - low absorption -62022 62022 Aerosol - high absorption -62023 62023 Aerosol - low absorption -62025 62025 Volcanic ash -#62024-65534 Reserved +# (See Common Code table C-14) 65535 65535 Missing diff --git a/definitions/grib2/tables/17/4.233.table b/definitions/grib2/tables/17/4.233.table index 4feba8c63..d63f673bb 100644 --- a/definitions/grib2/tables/17/4.233.table +++ b/definitions/grib2/tables/17/4.233.table @@ -1,423 +1,3 @@ # Code table 4.233 - Aerosol type -0 0 Ozone O3 -1 1 Water vapour H2O -2 2 Methane CH4 -3 3 Carbon dioxide CO2 -4 4 Carbon monoxide CO -5 5 Nitrogen dioxide NO2 -6 6 Nitrous oxide N2O -7 7 Formaldehyde HCHO -8 8 Sulphur dioxide SO2 -9 9 Ammonia NH3 -10 10 Ammonium NH4+ -11 11 Nitrogen monoxide NO -12 12 Atomic oxygen O -13 13 Nitrate radical NO3 -14 14 Hydroperoxyl radical HO2 -15 15 Dinitrogen pentoxide N2O5 -16 16 Nitrous acid HONO -17 17 Nitric acid HNO3 -18 18 Peroxynitric acid HO2NO2 -19 19 Hydrogen peroxide H2O2 -20 20 Molecular hydrogen H -21 21 Atomic nitrogen N -22 22 Sulphate SO42- -23 23 Radon Rn -24 24 Elemental mercury Hg(0) -25 25 Divalent mercury Hg2+ -26 26 Atomic chlorine Cl -27 27 Chlorine monoxide ClO -28 28 Dichlorine peroxide Cl2O2 -29 29 Hypochlorous acid HClO -30 30 Chlorine nitrate ClONO2 -31 31 Chlorine dioxide ClO2 -32 32 Atomic bromine Br -33 33 Bromine monoxide BrO -34 34 Bromine chloride BrCl -35 35 Hydrogen bromide HBr -36 36 Hypobromous acid HBrO -37 37 Bromine nitrate BrONO2 -38 38 Oxygen O2 -#39-9999 Reserved -10000 10000 Hydroxyl radical OH -10001 10001 Methyl peroxy radical CH3O2 -10002 10002 Methyl hydroperoxide CH3O2H -10004 10004 Methanol CH3OH -10005 10005 Formic acid CH3OOH -10006 10006 Hydrogen cyanide HCN -10007 10007 Aceto nitrile CH3CN -10008 10008 Ethane C2H6 -10009 10009 Ethene (= Ethylene) C2H4 -10010 10010 Ethyne (= Acetylene) C2H2 -10011 10011 Ethanol C2H5OH -10012 10012 Acetic acid C2H5OOH -10013 10013 Peroxyacetyl nitrate CH3C(O)OONO2 -10014 10014 Propane C3H8 -10015 10015 Propene C3H6 -10016 10016 Butanes C4H10 -10017 10017 Isoprene C5H10 -10018 10018 Alpha pinene C10H16 -10019 10019 Beta pinene C10H16 -10020 10020 Limonene C10H16 -10021 10021 Benzene C6H6 -10022 10022 Toluene C7H8 -10023 10023 Xylene C8H10 -#10024-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides...) -10500 10500 Dimethyl sulphide CH3SCH3 (DMS) -#10501-20000 Reserved -20001 20001 Hydrogen chloride -20002 20002 CFC-11 -20003 20003 CFC-12 -20004 20004 CFC-113 -20005 20005 CFC-113a -20006 20006 CFC-114 -20007 20007 CFC-115 -20008 20008 HCFC-22 -20009 20009 HCFC-141b -20010 20010 HCFC-142b -20011 20011 Halon-1202 -20012 20012 Halon-1211 -20013 20013 Halon-1301 -20014 20014 Halon-2402 -20015 20015 Methyl chloride (HCC-40) -20016 20016 Carbon tetrachloride (HCC-10) -20017 20017 HCC-140a CH3CCl3 -20018 20018 Methyl bromide (HBC-40B1) -20019 20019 Hexachlorocyclohexane (HCH) -20020 20020 Alpha hexachlorocyclohexane -20021 20021 Hexachlorobiphenyl (PCB-153) -#20022-29999 Reserved -30000 30000 Radioactive pollutant (tracer, defined by originating centre) -#30001-30009 Reserved -30010 30010 Hydrogen H-3 -30011 30011 Hydrogen organic bounded H-3o -30012 30012 Hydrogen inorganic H-3a -30013 30013 Beryllium 7 Be-7 -30014 30014 Beryllium 10 Be-10 -30015 30015 Carbon 14 C-14 -30016 30016 Carbon 14 CO2 C-14CO2 -30017 30017 Carbon 14 other gases C-14og -30018 30018 Nitrogen 13 N-13 -30019 30019 Nitrogen 16 N-16 -30020 30020 Fluorine 18 F-18 -30021 30021 Sodium 22 Na-22 -30022 30022 Phosphate 32 P-32 -30023 30023 Phosphate 33 P-33 -30024 30024 Sulphur 35 S-35 -30025 30025 Chlorine 36 Cl-36 -30026 30026 Potassium 40 K-40 -30027 30027 Argon 41 Ar-41 -30028 30028 Calcium 41 Ca-41 -30029 30029 Calcium 45 Ca-45 -30030 30030 Titanium 44 Ti-44 -30031 30031 Scandium 46 Sc-46 -30032 30032 Vanadium 48 V-48 -30033 30033 Vanadium 49 V-49 -30034 30034 Chrome 51 Cr-51 -30035 30035 Manganese 52 Mn-52 -30036 30036 Manganese 54 Mn-54 -30037 30037 Iron 55 Fe-55 -30038 30038 Iron 59 Fe-59 -30039 30039 Cobalt 56 Co-56 -30040 30040 Cobalt 57 Co-57 -30041 30041 Cobalt 58 Co-58 -30042 30042 Cobalt 60 Co-60 -30043 30043 Nickel 59 Ni-59 -30044 30044 Nickel 63 Ni-63 -30045 30045 Zinc 65 Zn-65 -30046 30046 Gallium 67 Ga-67 -30047 30047 Gallium 68 Ga-68 -30048 30048 Germanium 68 Ge-68 -30049 30049 Germanium 69 Ge-69 -30050 30050 Arsenic 73 As-73 -30051 30051 Selenium 75 Se-75 -30052 30052 Selenium 79 Se-79 -30053 30053 Rubidium 81 Rb-81 -30054 30054 Rubidium 83 Rb-83 -30055 30055 Rubidium 84 Rb-84 -30056 30056 Rubidium 86 Rb-86 -30057 30057 Rubidium 87 Rb-87 -30058 30058 Rubidium 88 Rb-88 -30059 30059 Krypton 85 Kr-85 -30060 30060 Krypton 85 metastable Kr-85m -30061 30061 Krypton 87 Kr-87 -30062 30062 Krypton 88 Kr-88 -30063 30063 Krypton 89 Kr-89 -30064 30064 Strontium 85 Sr-85 -30065 30065 Strontium 89 Sr-89 -30066 30066 Strontium 89/90 Sr-8990 -30067 30067 Strontium 90 Sr-90 -30068 30068 Strontium 91 Sr-91 -30069 30069 Strontium 92 Sr-92 -30070 30070 Yttrium 87 Y-87 -30071 30071 Yttrium 88 Y-88 -30072 30072 Yttrium 90 Y-90 -30073 30073 Yttrium 91 Y-91 -30074 30074 Yttrium 91 metastable Y-91m -30075 30075 Yttrium 92 Y-92 -30076 30076 Yttrium 93 Y-93 -30077 30077 Zirconium 89 Zr-89 -30078 30078 Zirconium 93 Zr-93 -30079 30079 Zirconium 95 Zr-95 -30080 30080 Zirconium 97 Zr-97 -30081 30081 Niobium 93 metastable Nb-93m -30082 30082 Niobium 94 Nb-94 -30083 30083 Niobium 95 Nb-95 -30084 30084 Niobium 95 metastable Nb-95m -30085 30085 Niobium 97 Nb-97 -30086 30086 Niobium 97 metastable Nb-97m -30087 30087 Molybdenum 93 Mo-93 -30088 30088 Molybdenum 99 Mo-99 -30089 30089 Technetium 95 metastable Tc-95m -30090 30090 Technetium 96 Tc-96 -30091 30091 Technetium 99 Tc-99 -30092 30092 Technetium 99 metastable Tc-99m -30093 30093 Rhodium 99 Rh-99 -30094 30094 Rhodium 101 Rh-101 -30095 30095 Rhodium 102 metastable Rh-102m -30096 30096 Rhodium 103 metastable Rh-103m -30097 30097 Rhodium 105 Rh-105 -30098 30098 Rhodium 106 Rh-106 -30099 30099 Palladium 100 Pd-100 -30100 30100 Palladium 103 Pd-103 -30101 30101 Palladium 107 Pd-107 -30102 30102 Ruthenium 103 Ru-103 -30103 30103 Ruthenium 105 Ru-105 -30104 30104 Ruthenium 106 Ru-106 -30105 30105 Silver 108 metastable Ag-108m -30106 30106 Silver 110 metastable Ag-110m -30107 30107 Cadmium 109 Cd-109 -30108 30108 Cadmium 113 metastable Cd-113m -30109 30109 Cadmium 115 metastable Cd-115m -30110 30110 Indium 114 metastable In-114m -30111 30111 Tin 113 Sn-113 -30112 30112 Tin 119 metastable Sn-119m -30113 30113 Tin 121 metastable Sn-121m -30114 30114 Tin 122 Sn-122 -30115 30115 Tin 123 Sn-123 -30116 30116 Tin 126 Sn-126 -30117 30117 Antimony 124 Sb-124 -30118 30118 Antimony 125 Sb-125 -30119 30119 Antimony 126 Sb-126 -30120 30120 Antimony 127 Sb-127 -30121 30121 Antimony 129 Sb-129 -30122 30122 Tellurium 123 metastable Te-123m -30123 30123 Tellurium 125 metastable Te-125m -30124 30124 Tellurium 127 Te-127 -30125 30125 Tellurium 127 metastable Te-127m -30126 30126 Tellurium 129 Te-129 -30127 30127 Tellurium 129 metastable Te-129m -30128 30128 Tellurium 131 metastable Te-131m -30129 30129 Tellurium 132 Te-132 -30130 30130 Iodine 123 I-123 -30131 30131 Iodine 124 I-124 -30132 30132 Iodine 125 I-125 -30133 30133 Iodine 126 I-126 -30134 30134 Iodine 129 I-129 -30135 30135 Iodine 129 elementary gaseous I-129g -30136 30136 Iodine 129 organic bounded I-129o -30137 30137 Iodine 131 I-131 -30138 30138 Iodine 131 elementary gaseous I-131g -30139 30139 Iodine 131 organic bounded I-131o -30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go -30141 30141 Iodine 131 aerosol I-131a -30142 30142 Iodine 132 I-132 -30143 30143 Iodine 132 elementary gaseous I-132g -30144 30144 Iodine 132 organic bounded I-132o -30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go -30146 30146 Iodine 132 aerosol I-132a -30147 30147 Iodine 133 I-133 -30148 30148 Iodine 133 elementary gaseous I-133g -30149 30149 Iodine 133 organic bounded I-133o -30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go -30151 30151 Iodine 133 aerosol I-133a -30152 30152 Iodine 134 I-134 -30153 30153 Iodine 134 elementary gaseous I-134g -30154 30154 Iodine 134 organic bounded I-134o -30155 30155 Iodine 135 I-135 -30156 30156 Iodine 135 elementary gaseous I-135g -30157 30157 Iodine 135 organic bounded I-135o -30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go -30159 30159 Iodine 135 aerosol I-135a -30160 30160 Xenon 131 metastable Xe-131m -30161 30161 Xenon 133 Xe-133 -30162 30162 Xenon 133 metastable Xe-133m -30163 30163 Xenon 135 Xe-135 -30164 30164 Xenon 135 metastable Xe-135m -30165 30165 Xenon 137 Xe-137 -30166 30166 Xenon 138 Xe-138 -30167 30167 Xenon sum of all Xenon isotopes Xe-sum -30168 30168 Caesium 131 Cs-131 -30169 30169 Caesium 134 Cs-134 -30170 30170 Caesium 135 Cs-135 -30171 30171 Caesium 136 Cs-136 -30172 30172 Caesium 137 Cs-137 -30173 30173 Barium 133 Ba-133 -30174 30174 Barium 137 metastable Ba-137m -30175 30175 Barium 140 Ba-140 -30176 30176 Cerium 139 Ce-139 -30177 30177 Cerium 141 Ce-141 -30178 30178 Cerium 143 Ce-143 -30179 30179 Cerium 144 Ce-144 -30180 30180 Lanthanum 140 La-140 -30181 30181 Lanthanum 141 La-141 -30182 30182 Praseodymium 143 Pr-143 -30183 30183 Praseodymium 144 Pr-144 -30184 30184 Praseodymium 144 metastable Pr-144m -30185 30185 Samarium 145 Sm-145 -30186 30186 Samarium 147 Sm-147 -30187 30187 Samarium 151 Sm-151 -30188 30188 Neodymium 147 Nd-147 -30189 30189 Promethium 146 Pm-146 -30190 30190 Promethium 147 Pm-147 -30191 30191 Promethium 151 Pm-151 -30192 30192 Europium 152 Eu-152 -30193 30193 Europium 154 Eu-154 -30194 30194 Europium 155 Eu-155 -30195 30195 Gadolinium 153 Gd-153 -30196 30196 Terbium 160 Tb-160 -30197 30197 Holmium 166 metastable Ho-166m -30198 30198 Thulium 170 Tm-170 -30199 30199 Ytterbium 169 Yb-169 -30200 30200 Hafnium 175 Hf-175 -30201 30201 Hafnium 181 Hf-181 -30202 30202 Tantalum 179 Ta-179 -30203 30203 Tantalum 182 Ta-182 -30204 30204 Rhenium 184 Re-184 -30205 30205 Iridium 192 Ir-192 -30206 30206 Mercury 203 Hg-203 -30207 30207 Thallium 204 Tl-204 -30208 30208 Thallium 207 Tl-207 -30209 30209 Thallium 208 Tl-208 -30210 30210 Thallium 209 Tl-209 -30211 30211 Bismuth 205 Bi-205 -30212 30212 Bismuth 207 Bi-207 -30213 30213 Bismuth 210 Bi-210 -30214 30214 Bismuth 211 Bi-211 -30215 30215 Bismuth 212 Bi-212 -30216 30216 Bismuth 213 Bi-213 -30217 30217 Bismuth 214 Bi-214 -30218 30218 Polonium 208 Po-208 -30219 30219 Polonium 210 Po-210 -30220 30220 Polonium 212 Po-212 -30221 30221 Polonium 213 Po-213 -30222 30222 Polonium 214 Po-214 -30223 30223 Polonium 215 Po-215 -30224 30224 Polonium 216 Po-216 -30225 30225 Polonium 218 Po-218 -30226 30226 Lead 209 Pb-209 -30227 30227 Lead 210 Pb-210 -30228 30228 Lead 211 Pb-211 -30229 30229 Lead 212 Pb-212 -30230 30230 Lead 214 Pb-214 -30231 30231 Astatine 217 At-217 -30232 30232 Radon 219 Rn-219 -30233 30233 Radon 220 Rn-220 -30234 30234 Radon 222 Rn-222 -30235 30235 Francium 221 Fr-221 -30236 30236 Francium 223 Fr-223 -30237 30237 Radium 223 Ra-223 -30238 30238 Radium 224 Ra-224 -30239 30239 Radium 225 Ra-225 -30240 30240 Radium 226 Ra-226 -30241 30241 Radium 228 Ra-228 -30242 30242 Actinium 225 Ac-225 -30243 30243 Actinium 227 Ac-227 -30244 30244 Actinium 228 Ac-228 -30245 30245 Thorium 227 Th-227 -30246 30246 Thorium 228 Th-228 -30247 30247 Thorium 229 Th-229 -30248 30248 Thorium 230 Th-230 -30249 30249 Thorium 231 Th-231 -30250 30250 Thorium 232 Th-232 -30251 30251 Thorium 234 Th-234 -30252 30252 Protactinium 231 Pa-231 -30253 30253 Protactinium 233 Pa-233 -30254 30254 Protactinium 234 metastable Pa-234m -30255 30255 Uranium 232 U-232 -30256 30256 Uranium 233 U-233 -30257 30257 Uranium 234 U-234 -30258 30258 Uranium 235 U-235 -30259 30259 Uranium 236 U-236 -30260 30260 Uranium 237 U-237 -30261 30261 Uranium 238 U-238 -30262 30262 Plutonium 236 Pu-236 -30263 30263 Plutonium 238 Pu-238 -30264 30264 Plutonium 239 Pu-239 -30265 30265 Plutonium 240 Pu-240 -30266 30266 Plutonium 241 Pu-241 -30267 30267 Plutonium 242 Pu-242 -30268 30268 Plutonium 244 Pu-244 -30269 30269 Neptunium 237 Np-237 -30270 30270 Neptunium 238 Np-238 -30271 30271 Neptunium 239 Np-239 -30272 30272 Americium 241 Am-241 -30273 30273 Americium 242 Am-242 -30274 30274 Americium 242 metastable Am-242m -30275 30275 Americium 243 Am-243 -30276 30276 Curium 242 Cm-242 -30277 30277 Curium 243 Cm-243 -30278 30278 Curium 244 Cm-244 -30279 30279 Curium 245 Cm-245 -30280 30280 Curium 246 Cm-246 -30281 30281 Curium 247 Cm-247 -30282 30282 Curium 248 Cm-248 -30283 30283 Curium 243/244 Cm-243244 -30284 30284 Plutonium 238/Americium 241 Pu-238Am-241 -30285 30285 Plutonium 239/240 Pu-239240 -30286 30286 Berkelium 249 Bk-249 -30287 30287 Californium 249 Cf-249 -30288 30288 Californium 250 Cf-250 -30289 30289 Californium 252 Cf-252 -30290 30290 Sum aerosol particulates SumAer -30291 30291 Sum Iodine SumIod -30292 30292 Sum noble gas SumNG -30293 30293 Activation gas ActGas -30294 30294 Cs-137 Equivalent EquCs137 -#30295-59999 Reserved -60000 60000 HOx radical (OH+HO2) -60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2) -60002 60002 Passive Ozone -60003 60003 NOx expressed as nitrogen NOx -60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy -60005 60005 Total inorganic chlorine Clx -60006 60006 Total inorganic bromine Brx -60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx -60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx -60009 60009 Lumped alkanes -60010 60010 Lumped alkenes -60011 60011 Lumped aromatic compounds -60012 60012 Lumped terpenes -60013 60013 Non-methane volatile organic compounds expressed as carbon -60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon -60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon -60016 60016 Lumped oxygenated hydrocarbons -60017 60017 NOx expressed as nitrogen dioxide (NO2) -#60018-61999 Reserved -62000 62000 Total aerosol -62001 62001 Dust dry -62002 62002 Water in ambient -62003 62003 Ammonium dry -62004 62004 Nitrate dry -62005 62005 Nitric acid trihydrate -62006 62006 Sulphate dry -62007 62007 Mercury dry -62008 62008 Sea salt dry -62009 62009 Black carbon dry -62010 62010 Particulate organic matter dry -62011 62011 Primary particulate organic matter dry -62012 62012 Secondary particulate organic matter dry -62013 62013 Black carbon hydrophilic dry -62014 62014 Black carbon hydrophobic dry -62015 62015 Particulate organic matter hydrophilic dry -62016 62016 Particulate organic matter hydrophobic dry -62017 62017 Nitrate hydrophilic dry -62018 62018 Nitrate hydrophobic dry -#62019 Reserved -62020 62020 Smoke - high absorption -62021 62021 Smoke - low absorption -62022 62022 Aerosol - high absorption -62023 62023 Aerosol - low absorption -62025 62025 Volcanic ash -#62024-65534 Reserved +# (See Common Code table C-14) 65535 65535 Missing diff --git a/definitions/grib2/tables/18/4.230.table b/definitions/grib2/tables/18/4.230.table index 272731d76..5c39a79b9 100644 --- a/definitions/grib2/tables/18/4.230.table +++ b/definitions/grib2/tables/18/4.230.table @@ -1,449 +1,3 @@ # Code table 4.230 - Atmospheric chemical constituent type -0 0 Ozone O3 -1 1 Water vapour H2O -2 2 Methane CH4 -3 3 Carbon dioxide CO2 -4 4 Carbon monoxide CO -5 5 Nitrogen dioxide NO2 -6 6 Nitrous oxide N2O -7 7 Formaldehyde HCHO -8 8 Sulphur dioxide SO2 -9 9 Ammonia NH3 -10 10 Ammonium NH4+ -11 11 Nitrogen monoxide NO -12 12 Atomic oxygen O -13 13 Nitrate radical NO3 -14 14 Hydroperoxyl radical HO2 -15 15 Dinitrogen pentoxide N2O5 -16 16 Nitrous acid HONO -17 17 Nitric acid HNO3 -18 18 Peroxynitric acid HO2NO2 -19 19 Hydrogen peroxide H2O2 -20 20 Molecular hydrogen H -21 21 Atomic nitrogen N -22 22 Sulphate SO42- -23 23 Radon Rn -24 24 Elemental mercury Hg(0) -25 25 Divalent mercury Hg2+ -26 26 Atomic chlorine Cl -27 27 Chlorine monoxide ClO -28 28 Dichlorine peroxide Cl2O2 -29 29 Hypochlorous acid HClO -30 30 Chlorine nitrate ClONO2 -31 31 Chlorine dioxide ClO2 -32 32 Atomic bromine Br -33 33 Bromine monoxide BrO -34 34 Bromine chloride BrCl -35 35 Hydrogen bromide HBr -36 36 Hypobromous acid HBrO -37 37 Bromine nitrate BrONO2 -38 38 Oxygen O2 -#39-9999 Reserved -10000 10000 Hydroxyl radical OH -10001 10001 Methyl peroxy radical CH3O2 -10002 10002 Methyl hydroperoxide CH3O2H -10004 10004 Methanol CH3OH -10005 10005 Formic acid CH3OOH -10006 10006 Hydrogen cyanide HCN -10007 10007 Aceto nitrile CH3CN -10008 10008 Ethane C2H6 -10009 10009 Ethene (= Ethylene) C2H4 -10010 10010 Ethyne (= Acetylene) C2H2 -10011 10011 Ethanol C2H5OH -10012 10012 Acetic acid C2H5OOH -10013 10013 Peroxyacetyl nitrate CH3C(O)OONO2 -10014 10014 Propane C3H8 -10015 10015 Propene C3H6 -10016 10016 Butanes C4H10 -10017 10017 Isoprene C5H10 -10018 10018 Alpha pinene C10H16 -10019 10019 Beta pinene C10H16 -10020 10020 Limonene C10H16 -10021 10021 Benzene C6H6 -10022 10022 Toluene C7H8 -10023 10023 Xylene C8H10 -#10024-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides...) -10500 10500 Dimethyl sulphide CH3SCH3 (DMS) -#10501-20000 Reserved -20001 20001 Hydrogen chloride -20002 20002 CFC-11 -20003 20003 CFC-12 -20004 20004 CFC-113 -20005 20005 CFC-113a -20006 20006 CFC-114 -20007 20007 CFC-115 -20008 20008 HCFC-22 -20009 20009 HCFC-141b -20010 20010 HCFC-142b -20011 20011 Halon-1202 -20012 20012 Halon-1211 -20013 20013 Halon-1301 -20014 20014 Halon-2402 -20015 20015 Methyl chloride (HCC-40) -20016 20016 Carbon tetrachloride (HCC-10) -20017 20017 HCC-140a CH3CCl3 -20018 20018 Methyl bromide (HBC-40B1) -20019 20019 Hexachlorocyclohexane (HCH) -20020 20020 Alpha hexachlorocyclohexane -20021 20021 Hexachlorobiphenyl (PCB-153) -#20022-29999 Reserved -30000 30000 Radioactive pollutant (tracer, defined by originating centre) -#30001-30009 Reserved -30010 30010 Hydrogen H-3 -30011 30011 Hydrogen organic bounded H-3o -30012 30012 Hydrogen inorganic H-3a -30013 30013 Beryllium 7 Be-7 -30014 30014 Beryllium 10 Be-10 -30015 30015 Carbon 14 C-14 -30016 30016 Carbon 14 CO2 C-14CO2 -30017 30017 Carbon 14 other gases C-14og -30018 30018 Nitrogen 13 N-13 -30019 30019 Nitrogen 16 N-16 -30020 30020 Fluorine 18 F-18 -30021 30021 Sodium 22 Na-22 -30022 30022 Phosphate 32 P-32 -30023 30023 Phosphate 33 P-33 -30024 30024 Sulphur 35 S-35 -30025 30025 Chlorine 36 Cl-36 -30026 30026 Potassium 40 K-40 -30027 30027 Argon 41 Ar-41 -30028 30028 Calcium 41 Ca-41 -30029 30029 Calcium 45 Ca-45 -30030 30030 Titanium 44 Ti-44 -30031 30031 Scandium 46 Sc-46 -30032 30032 Vanadium 48 V-48 -30033 30033 Vanadium 49 V-49 -30034 30034 Chrome 51 Cr-51 -30035 30035 Manganese 52 Mn-52 -30036 30036 Manganese 54 Mn-54 -30037 30037 Iron 55 Fe-55 -30038 30038 Iron 59 Fe-59 -30039 30039 Cobalt 56 Co-56 -30040 30040 Cobalt 57 Co-57 -30041 30041 Cobalt 58 Co-58 -30042 30042 Cobalt 60 Co-60 -30043 30043 Nickel 59 Ni-59 -30044 30044 Nickel 63 Ni-63 -30045 30045 Zinc 65 Zn-65 -30046 30046 Gallium 67 Ga-67 -30047 30047 Gallium 68 Ga-68 -30048 30048 Germanium 68 Ge-68 -30049 30049 Germanium 69 Ge-69 -30050 30050 Arsenic 73 As-73 -30051 30051 Selenium 75 Se-75 -30052 30052 Selenium 79 Se-79 -30053 30053 Rubidium 81 Rb-81 -30054 30054 Rubidium 83 Rb-83 -30055 30055 Rubidium 84 Rb-84 -30056 30056 Rubidium 86 Rb-86 -30057 30057 Rubidium 87 Rb-87 -30058 30058 Rubidium 88 Rb-88 -30059 30059 Krypton 85 Kr-85 -30060 30060 Krypton 85 metastable Kr-85m -30061 30061 Krypton 87 Kr-87 -30062 30062 Krypton 88 Kr-88 -30063 30063 Krypton 89 Kr-89 -30064 30064 Strontium 85 Sr-85 -30065 30065 Strontium 89 Sr-89 -30066 30066 Strontium 89/90 Sr-8990 -30067 30067 Strontium 90 Sr-90 -30068 30068 Strontium 91 Sr-91 -30069 30069 Strontium 92 Sr-92 -30070 30070 Yttrium 87 Y-87 -30071 30071 Yttrium 88 Y-88 -30072 30072 Yttrium 90 Y-90 -30073 30073 Yttrium 91 Y-91 -30074 30074 Yttrium 91 metastable Y-91m -30075 30075 Yttrium 92 Y-92 -30076 30076 Yttrium 93 Y-93 -30077 30077 Zirconium 89 Zr-89 -30078 30078 Zirconium 93 Zr-93 -30079 30079 Zirconium 95 Zr-95 -30080 30080 Zirconium 97 Zr-97 -30081 30081 Niobium 93 metastable Nb-93m -30082 30082 Niobium 94 Nb-94 -30083 30083 Niobium 95 Nb-95 -30084 30084 Niobium 95 metastable Nb-95m -30085 30085 Niobium 97 Nb-97 -30086 30086 Niobium 97 metastable Nb-97m -30087 30087 Molybdenum 93 Mo-93 -30088 30088 Molybdenum 99 Mo-99 -30089 30089 Technetium 95 metastable Tc-95m -30090 30090 Technetium 96 Tc-96 -30091 30091 Technetium 99 Tc-99 -30092 30092 Technetium 99 metastable Tc-99m -30093 30093 Rhodium 99 Rh-99 -30094 30094 Rhodium 101 Rh-101 -30095 30095 Rhodium 102 metastable Rh-102m -30096 30096 Rhodium 103 metastable Rh-103m -30097 30097 Rhodium 105 Rh-105 -30098 30098 Rhodium 106 Rh-106 -30099 30099 Palladium 100 Pd-100 -30100 30100 Palladium 103 Pd-103 -30101 30101 Palladium 107 Pd-107 -30102 30102 Ruthenium 103 Ru-103 -30103 30103 Ruthenium 105 Ru-105 -30104 30104 Ruthenium 106 Ru-106 -30105 30105 Silver 108 metastable Ag-108m -30106 30106 Silver 110 metastable Ag-110m -30107 30107 Cadmium 109 Cd-109 -30108 30108 Cadmium 113 metastable Cd-113m -30109 30109 Cadmium 115 metastable Cd-115m -30110 30110 Indium 114 metastable In-114m -30111 30111 Tin 113 Sn-113 -30112 30112 Tin 119 metastable Sn-119m -30113 30113 Tin 121 metastable Sn-121m -30114 30114 Tin 122 Sn-122 -30115 30115 Tin 123 Sn-123 -30116 30116 Tin 126 Sn-126 -30117 30117 Antimony 124 Sb-124 -30118 30118 Antimony 125 Sb-125 -30119 30119 Antimony 126 Sb-126 -30120 30120 Antimony 127 Sb-127 -30121 30121 Antimony 129 Sb-129 -30122 30122 Tellurium 123 metastable Te-123m -30123 30123 Tellurium 125 metastable Te-125m -30124 30124 Tellurium 127 Te-127 -30125 30125 Tellurium 127 metastable Te-127m -30126 30126 Tellurium 129 Te-129 -30127 30127 Tellurium 129 metastable Te-129m -30128 30128 Tellurium 131 metastable Te-131m -30129 30129 Tellurium 132 Te-132 -30130 30130 Iodine 123 I-123 -30131 30131 Iodine 124 I-124 -30132 30132 Iodine 125 I-125 -30133 30133 Iodine 126 I-126 -30134 30134 Iodine 129 I-129 -30135 30135 Iodine 129 elementary gaseous I-129g -30136 30136 Iodine 129 organic bounded I-129o -30137 30137 Iodine 131 I-131 -30138 30138 Iodine 131 elementary gaseous I-131g -30139 30139 Iodine 131 organic bounded I-131o -30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go -30141 30141 Iodine 131 aerosol I-131a -30142 30142 Iodine 132 I-132 -30143 30143 Iodine 132 elementary gaseous I-132g -30144 30144 Iodine 132 organic bounded I-132o -30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go -30146 30146 Iodine 132 aerosol I-132a -30147 30147 Iodine 133 I-133 -30148 30148 Iodine 133 elementary gaseous I-133g -30149 30149 Iodine 133 organic bounded I-133o -30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go -30151 30151 Iodine 133 aerosol I-133a -30152 30152 Iodine 134 I-134 -30153 30153 Iodine 134 elementary gaseous I-134g -30154 30154 Iodine 134 organic bounded I-134o -30155 30155 Iodine 135 I-135 -30156 30156 Iodine 135 elementary gaseous I-135g -30157 30157 Iodine 135 organic bounded I-135o -30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go -30159 30159 Iodine 135 aerosol I-135a -30160 30160 Xenon 131 metastable Xe-131m -30161 30161 Xenon 133 Xe-133 -30162 30162 Xenon 133 metastable Xe-133m -30163 30163 Xenon 135 Xe-135 -30164 30164 Xenon 135 metastable Xe-135m -30165 30165 Xenon 137 Xe-137 -30166 30166 Xenon 138 Xe-138 -30167 30167 Xenon sum of all Xenon isotopes Xe-sum -30168 30168 Caesium 131 Cs-131 -30169 30169 Caesium 134 Cs-134 -30170 30170 Caesium 135 Cs-135 -30171 30171 Caesium 136 Cs-136 -30172 30172 Caesium 137 Cs-137 -30173 30173 Barium 133 Ba-133 -30174 30174 Barium 137 metastable Ba-137m -30175 30175 Barium 140 Ba-140 -30176 30176 Cerium 139 Ce-139 -30177 30177 Cerium 141 Ce-141 -30178 30178 Cerium 143 Ce-143 -30179 30179 Cerium 144 Ce-144 -30180 30180 Lanthanum 140 La-140 -30181 30181 Lanthanum 141 La-141 -30182 30182 Praseodymium 143 Pr-143 -30183 30183 Praseodymium 144 Pr-144 -30184 30184 Praseodymium 144 metastable Pr-144m -30185 30185 Samarium 145 Sm-145 -30186 30186 Samarium 147 Sm-147 -30187 30187 Samarium 151 Sm-151 -30188 30188 Neodymium 147 Nd-147 -30189 30189 Promethium 146 Pm-146 -30190 30190 Promethium 147 Pm-147 -30191 30191 Promethium 151 Pm-151 -30192 30192 Europium 152 Eu-152 -30193 30193 Europium 154 Eu-154 -30194 30194 Europium 155 Eu-155 -30195 30195 Gadolinium 153 Gd-153 -30196 30196 Terbium 160 Tb-160 -30197 30197 Holmium 166 metastable Ho-166m -30198 30198 Thulium 170 Tm-170 -30199 30199 Ytterbium 169 Yb-169 -30200 30200 Hafnium 175 Hf-175 -30201 30201 Hafnium 181 Hf-181 -30202 30202 Tantalum 179 Ta-179 -30203 30203 Tantalum 182 Ta-182 -30204 30204 Rhenium 184 Re-184 -30205 30205 Iridium 192 Ir-192 -30206 30206 Mercury 203 Hg-203 -30207 30207 Thallium 204 Tl-204 -30208 30208 Thallium 207 Tl-207 -30209 30209 Thallium 208 Tl-208 -30210 30210 Thallium 209 Tl-209 -30211 30211 Bismuth 205 Bi-205 -30212 30212 Bismuth 207 Bi-207 -30213 30213 Bismuth 210 Bi-210 -30214 30214 Bismuth 211 Bi-211 -30215 30215 Bismuth 212 Bi-212 -30216 30216 Bismuth 213 Bi-213 -30217 30217 Bismuth 214 Bi-214 -30218 30218 Polonium 208 Po-208 -30219 30219 Polonium 210 Po-210 -30220 30220 Polonium 212 Po-212 -30221 30221 Polonium 213 Po-213 -30222 30222 Polonium 214 Po-214 -30223 30223 Polonium 215 Po-215 -30224 30224 Polonium 216 Po-216 -30225 30225 Polonium 218 Po-218 -30226 30226 Lead 209 Pb-209 -30227 30227 Lead 210 Pb-210 -30228 30228 Lead 211 Pb-211 -30229 30229 Lead 212 Pb-212 -30230 30230 Lead 214 Pb-214 -30231 30231 Astatine 217 At-217 -30232 30232 Radon 219 Rn-219 -30233 30233 Radon 220 Rn-220 -30234 30234 Radon 222 Rn-222 -30235 30235 Francium 221 Fr-221 -30236 30236 Francium 223 Fr-223 -30237 30237 Radium 223 Ra-223 -30238 30238 Radium 224 Ra-224 -30239 30239 Radium 225 Ra-225 -30240 30240 Radium 226 Ra-226 -30241 30241 Radium 228 Ra-228 -30242 30242 Actinium 225 Ac-225 -30243 30243 Actinium 227 Ac-227 -30244 30244 Actinium 228 Ac-228 -30245 30245 Thorium 227 Th-227 -30246 30246 Thorium 228 Th-228 -30247 30247 Thorium 229 Th-229 -30248 30248 Thorium 230 Th-230 -30249 30249 Thorium 231 Th-231 -30250 30250 Thorium 232 Th-232 -30251 30251 Thorium 234 Th-234 -30252 30252 Protactinium 231 Pa-231 -30253 30253 Protactinium 233 Pa-233 -30254 30254 Protactinium 234 metastable Pa-234m -30255 30255 Uranium 232 U-232 -30256 30256 Uranium 233 U-233 -30257 30257 Uranium 234 U-234 -30258 30258 Uranium 235 U-235 -30259 30259 Uranium 236 U-236 -30260 30260 Uranium 237 U-237 -30261 30261 Uranium 238 U-238 -30262 30262 Plutonium 236 Pu-236 -30263 30263 Plutonium 238 Pu-238 -30264 30264 Plutonium 239 Pu-239 -30265 30265 Plutonium 240 Pu-240 -30266 30266 Plutonium 241 Pu-241 -30267 30267 Plutonium 242 Pu-242 -30268 30268 Plutonium 244 Pu-244 -30269 30269 Neptunium 237 Np-237 -30270 30270 Neptunium 238 Np-238 -30271 30271 Neptunium 239 Np-239 -30272 30272 Americium 241 Am-241 -30273 30273 Americium 242 Am-242 -30274 30274 Americium 242 metastable Am-242m -30275 30275 Americium 243 Am-243 -30276 30276 Curium 242 Cm-242 -30277 30277 Curium 243 Cm-243 -30278 30278 Curium 244 Cm-244 -30279 30279 Curium 245 Cm-245 -30280 30280 Curium 246 Cm-246 -30281 30281 Curium 247 Cm-247 -30282 30282 Curium 248 Cm-248 -30283 30283 Curium 243/244 Cm-243244 -30284 30284 Plutonium 238/Americium 241 Pu-238Am-241 -30285 30285 Plutonium 239/240 Pu-239240 -30286 30286 Berkelium 249 Bk-249 -30287 30287 Californium 249 Cf-249 -30288 30288 Californium 250 Cf-250 -30289 30289 Californium 252 Cf-252 -30290 30290 Sum aerosol particulates SumAer -30291 30291 Sum Iodine SumIod -30292 30292 Sum noble gas SumNG -30293 30293 Activation gas ActGas -30294 30294 Cs-137 Equivalent EquCs137 -#30295-59999 Reserved -60000 60000 HOx radical (OH+HO2) -60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2) -60002 60002 Passive Ozone -60003 60003 NOx expressed as nitrogen NOx -60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy -60005 60005 Total inorganic chlorine Clx -60006 60006 Total inorganic bromine Brx -60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx -60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx -60009 60009 Lumped alkanes -60010 60010 Lumped alkenes -60011 60011 Lumped aromatic compounds -60012 60012 Lumped terpenes -60013 60013 Non-methane volatile organic compounds expressed as carbon -60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon -60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon -60016 60016 Lumped oxygenated hydrocarbons -60017 60017 NOx expressed as nitrogen dioxide (NO2) -#60018-61999 Reserved -62000 62000 Total aerosol -62001 62001 Dust dry -62002 62002 Water in ambient -62003 62003 Ammonium dry -62004 62004 Nitrate dry -62005 62005 Nitric acid trihydrate -62006 62006 Sulphate dry -62007 62007 Mercury dry -62008 62008 Sea salt dry -62009 62009 Black carbon dry -62010 62010 Particulate organic matter dry -62011 62011 Primary particulate organic matter dry -62012 62012 Secondary particulate organic matter dry -62013 62013 Black carbon hydrophilic dry -62014 62014 Black carbon hydrophobic dry -62015 62015 Particulate organic matter hydrophilic dry -62016 62016 Particulate organic matter hydrophobic dry -62017 62017 Nitrate hydrophilic dry -62018 62018 Nitrate hydrophobic dry -#62019 Reserved -62020 62020 Smoke - high absorption -62021 62021 Smoke - low absorption -62022 62022 Aerosol - high absorption -62023 62023 Aerosol - low absorption -62025 62025 Volcanic ash -62026 62026 Particulate matter (PM) -# 62027-62099 Reserved -62100 62100 Alnus (Alder) pollen -62101 62101 Betula (Birch) pollen -62102 62102 Castanea (Chestnut) pollen -62103 62103 Carpinus (Hornbeam) pollen -62104 62104 Corylus (Hazel) pollen -62105 62105 Fagus (Beech) pollen -62106 62106 Fraxinus (Ash) pollen -62107 62107 Pinus (Pine) pollen -62108 62108 Platanus (Plane) pollen -62109 62109 Populus (Cottonwood, Poplar) pollen -62110 62110 Quercus (Oak) pollen -62111 62111 Salix (Willow) pollen -62112 62112 Taxus (Yew) pollen -62113 62113 Tilia (Lime, Linden) pollen -62114 62114 Ulmus (Elm) pollen -# 62115-62199 Reserved -62200 62200 Ambrosia (Ragweed, Burr-ragweed ) pollen -62201 62201 Artemisia (Sagebrush, Wormwood, Mugwort) pollen -62202 62202 Brassica (Rape, Broccoli, Brussels Sprouts, Cabbage, Cauliflower, Collards, Kale, Kohlrabi, Mustard, Rutabaga) pollen -62203 62203 Plantago (Plantain) pollen -62204 62204 Rumex (Dock, Sorrel) pollen -62205 62205 Urtica (Nettle) pollen -# 62206-62299 Reserved -62300 62300 Poaceae (Grass family) pollen -# 62301-65534 Reserved +# (See Common Code table C-14) 65535 65535 Missing diff --git a/definitions/grib2/tables/18/4.233.table b/definitions/grib2/tables/18/4.233.table index 1d3021ef7..d63f673bb 100644 --- a/definitions/grib2/tables/18/4.233.table +++ b/definitions/grib2/tables/18/4.233.table @@ -1,449 +1,3 @@ # Code table 4.233 - Aerosol type -0 0 Ozone O3 -1 1 Water vapour H2O -2 2 Methane CH4 -3 3 Carbon dioxide CO2 -4 4 Carbon monoxide CO -5 5 Nitrogen dioxide NO2 -6 6 Nitrous oxide N2O -7 7 Formaldehyde HCHO -8 8 Sulphur dioxide SO2 -9 9 Ammonia NH3 -10 10 Ammonium NH4+ -11 11 Nitrogen monoxide NO -12 12 Atomic oxygen O -13 13 Nitrate radical NO3 -14 14 Hydroperoxyl radical HO2 -15 15 Dinitrogen pentoxide N2O5 -16 16 Nitrous acid HONO -17 17 Nitric acid HNO3 -18 18 Peroxynitric acid HO2NO2 -19 19 Hydrogen peroxide H2O2 -20 20 Molecular hydrogen H -21 21 Atomic nitrogen N -22 22 Sulphate SO42- -23 23 Radon Rn -24 24 Elemental mercury Hg(0) -25 25 Divalent mercury Hg2+ -26 26 Atomic chlorine Cl -27 27 Chlorine monoxide ClO -28 28 Dichlorine peroxide Cl2O2 -29 29 Hypochlorous acid HClO -30 30 Chlorine nitrate ClONO2 -31 31 Chlorine dioxide ClO2 -32 32 Atomic bromine Br -33 33 Bromine monoxide BrO -34 34 Bromine chloride BrCl -35 35 Hydrogen bromide HBr -36 36 Hypobromous acid HBrO -37 37 Bromine nitrate BrONO2 -38 38 Oxygen O2 -#39-9999 Reserved -10000 10000 Hydroxyl radical OH -10001 10001 Methyl peroxy radical CH3O2 -10002 10002 Methyl hydroperoxide CH3O2H -10004 10004 Methanol CH3OH -10005 10005 Formic acid CH3OOH -10006 10006 Hydrogen cyanide HCN -10007 10007 Aceto nitrile CH3CN -10008 10008 Ethane C2H6 -10009 10009 Ethene (= Ethylene) C2H4 -10010 10010 Ethyne (= Acetylene) C2H2 -10011 10011 Ethanol C2H5OH -10012 10012 Acetic acid C2H5OOH -10013 10013 Peroxyacetyl nitrate CH3C(O)OONO2 -10014 10014 Propane C3H8 -10015 10015 Propene C3H6 -10016 10016 Butanes C4H10 -10017 10017 Isoprene C5H10 -10018 10018 Alpha pinene C10H16 -10019 10019 Beta pinene C10H16 -10020 10020 Limonene C10H16 -10021 10021 Benzene C6H6 -10022 10022 Toluene C7H8 -10023 10023 Xylene C8H10 -#10024-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides...) -10500 10500 Dimethyl sulphide CH3SCH3 (DMS) -#10501-20000 Reserved -20001 20001 Hydrogen chloride -20002 20002 CFC-11 -20003 20003 CFC-12 -20004 20004 CFC-113 -20005 20005 CFC-113a -20006 20006 CFC-114 -20007 20007 CFC-115 -20008 20008 HCFC-22 -20009 20009 HCFC-141b -20010 20010 HCFC-142b -20011 20011 Halon-1202 -20012 20012 Halon-1211 -20013 20013 Halon-1301 -20014 20014 Halon-2402 -20015 20015 Methyl chloride (HCC-40) -20016 20016 Carbon tetrachloride (HCC-10) -20017 20017 HCC-140a CH3CCl3 -20018 20018 Methyl bromide (HBC-40B1) -20019 20019 Hexachlorocyclohexane (HCH) -20020 20020 Alpha hexachlorocyclohexane -20021 20021 Hexachlorobiphenyl (PCB-153) -#20022-29999 Reserved -30000 30000 Radioactive pollutant (tracer, defined by originating centre) -#30001-30009 Reserved -30010 30010 Hydrogen H-3 -30011 30011 Hydrogen organic bounded H-3o -30012 30012 Hydrogen inorganic H-3a -30013 30013 Beryllium 7 Be-7 -30014 30014 Beryllium 10 Be-10 -30015 30015 Carbon 14 C-14 -30016 30016 Carbon 14 CO2 C-14CO2 -30017 30017 Carbon 14 other gases C-14og -30018 30018 Nitrogen 13 N-13 -30019 30019 Nitrogen 16 N-16 -30020 30020 Fluorine 18 F-18 -30021 30021 Sodium 22 Na-22 -30022 30022 Phosphate 32 P-32 -30023 30023 Phosphate 33 P-33 -30024 30024 Sulphur 35 S-35 -30025 30025 Chlorine 36 Cl-36 -30026 30026 Potassium 40 K-40 -30027 30027 Argon 41 Ar-41 -30028 30028 Calcium 41 Ca-41 -30029 30029 Calcium 45 Ca-45 -30030 30030 Titanium 44 Ti-44 -30031 30031 Scandium 46 Sc-46 -30032 30032 Vanadium 48 V-48 -30033 30033 Vanadium 49 V-49 -30034 30034 Chrome 51 Cr-51 -30035 30035 Manganese 52 Mn-52 -30036 30036 Manganese 54 Mn-54 -30037 30037 Iron 55 Fe-55 -30038 30038 Iron 59 Fe-59 -30039 30039 Cobalt 56 Co-56 -30040 30040 Cobalt 57 Co-57 -30041 30041 Cobalt 58 Co-58 -30042 30042 Cobalt 60 Co-60 -30043 30043 Nickel 59 Ni-59 -30044 30044 Nickel 63 Ni-63 -30045 30045 Zinc 65 Zn-65 -30046 30046 Gallium 67 Ga-67 -30047 30047 Gallium 68 Ga-68 -30048 30048 Germanium 68 Ge-68 -30049 30049 Germanium 69 Ge-69 -30050 30050 Arsenic 73 As-73 -30051 30051 Selenium 75 Se-75 -30052 30052 Selenium 79 Se-79 -30053 30053 Rubidium 81 Rb-81 -30054 30054 Rubidium 83 Rb-83 -30055 30055 Rubidium 84 Rb-84 -30056 30056 Rubidium 86 Rb-86 -30057 30057 Rubidium 87 Rb-87 -30058 30058 Rubidium 88 Rb-88 -30059 30059 Krypton 85 Kr-85 -30060 30060 Krypton 85 metastable Kr-85m -30061 30061 Krypton 87 Kr-87 -30062 30062 Krypton 88 Kr-88 -30063 30063 Krypton 89 Kr-89 -30064 30064 Strontium 85 Sr-85 -30065 30065 Strontium 89 Sr-89 -30066 30066 Strontium 89/90 Sr-8990 -30067 30067 Strontium 90 Sr-90 -30068 30068 Strontium 91 Sr-91 -30069 30069 Strontium 92 Sr-92 -30070 30070 Yttrium 87 Y-87 -30071 30071 Yttrium 88 Y-88 -30072 30072 Yttrium 90 Y-90 -30073 30073 Yttrium 91 Y-91 -30074 30074 Yttrium 91 metastable Y-91m -30075 30075 Yttrium 92 Y-92 -30076 30076 Yttrium 93 Y-93 -30077 30077 Zirconium 89 Zr-89 -30078 30078 Zirconium 93 Zr-93 -30079 30079 Zirconium 95 Zr-95 -30080 30080 Zirconium 97 Zr-97 -30081 30081 Niobium 93 metastable Nb-93m -30082 30082 Niobium 94 Nb-94 -30083 30083 Niobium 95 Nb-95 -30084 30084 Niobium 95 metastable Nb-95m -30085 30085 Niobium 97 Nb-97 -30086 30086 Niobium 97 metastable Nb-97m -30087 30087 Molybdenum 93 Mo-93 -30088 30088 Molybdenum 99 Mo-99 -30089 30089 Technetium 95 metastable Tc-95m -30090 30090 Technetium 96 Tc-96 -30091 30091 Technetium 99 Tc-99 -30092 30092 Technetium 99 metastable Tc-99m -30093 30093 Rhodium 99 Rh-99 -30094 30094 Rhodium 101 Rh-101 -30095 30095 Rhodium 102 metastable Rh-102m -30096 30096 Rhodium 103 metastable Rh-103m -30097 30097 Rhodium 105 Rh-105 -30098 30098 Rhodium 106 Rh-106 -30099 30099 Palladium 100 Pd-100 -30100 30100 Palladium 103 Pd-103 -30101 30101 Palladium 107 Pd-107 -30102 30102 Ruthenium 103 Ru-103 -30103 30103 Ruthenium 105 Ru-105 -30104 30104 Ruthenium 106 Ru-106 -30105 30105 Silver 108 metastable Ag-108m -30106 30106 Silver 110 metastable Ag-110m -30107 30107 Cadmium 109 Cd-109 -30108 30108 Cadmium 113 metastable Cd-113m -30109 30109 Cadmium 115 metastable Cd-115m -30110 30110 Indium 114 metastable In-114m -30111 30111 Tin 113 Sn-113 -30112 30112 Tin 119 metastable Sn-119m -30113 30113 Tin 121 metastable Sn-121m -30114 30114 Tin 122 Sn-122 -30115 30115 Tin 123 Sn-123 -30116 30116 Tin 126 Sn-126 -30117 30117 Antimony 124 Sb-124 -30118 30118 Antimony 125 Sb-125 -30119 30119 Antimony 126 Sb-126 -30120 30120 Antimony 127 Sb-127 -30121 30121 Antimony 129 Sb-129 -30122 30122 Tellurium 123 metastable Te-123m -30123 30123 Tellurium 125 metastable Te-125m -30124 30124 Tellurium 127 Te-127 -30125 30125 Tellurium 127 metastable Te-127m -30126 30126 Tellurium 129 Te-129 -30127 30127 Tellurium 129 metastable Te-129m -30128 30128 Tellurium 131 metastable Te-131m -30129 30129 Tellurium 132 Te-132 -30130 30130 Iodine 123 I-123 -30131 30131 Iodine 124 I-124 -30132 30132 Iodine 125 I-125 -30133 30133 Iodine 126 I-126 -30134 30134 Iodine 129 I-129 -30135 30135 Iodine 129 elementary gaseous I-129g -30136 30136 Iodine 129 organic bounded I-129o -30137 30137 Iodine 131 I-131 -30138 30138 Iodine 131 elementary gaseous I-131g -30139 30139 Iodine 131 organic bounded I-131o -30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go -30141 30141 Iodine 131 aerosol I-131a -30142 30142 Iodine 132 I-132 -30143 30143 Iodine 132 elementary gaseous I-132g -30144 30144 Iodine 132 organic bounded I-132o -30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go -30146 30146 Iodine 132 aerosol I-132a -30147 30147 Iodine 133 I-133 -30148 30148 Iodine 133 elementary gaseous I-133g -30149 30149 Iodine 133 organic bounded I-133o -30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go -30151 30151 Iodine 133 aerosol I-133a -30152 30152 Iodine 134 I-134 -30153 30153 Iodine 134 elementary gaseous I-134g -30154 30154 Iodine 134 organic bounded I-134o -30155 30155 Iodine 135 I-135 -30156 30156 Iodine 135 elementary gaseous I-135g -30157 30157 Iodine 135 organic bounded I-135o -30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go -30159 30159 Iodine 135 aerosol I-135a -30160 30160 Xenon 131 metastable Xe-131m -30161 30161 Xenon 133 Xe-133 -30162 30162 Xenon 133 metastable Xe-133m -30163 30163 Xenon 135 Xe-135 -30164 30164 Xenon 135 metastable Xe-135m -30165 30165 Xenon 137 Xe-137 -30166 30166 Xenon 138 Xe-138 -30167 30167 Xenon sum of all Xenon isotopes Xe-sum -30168 30168 Caesium 131 Cs-131 -30169 30169 Caesium 134 Cs-134 -30170 30170 Caesium 135 Cs-135 -30171 30171 Caesium 136 Cs-136 -30172 30172 Caesium 137 Cs-137 -30173 30173 Barium 133 Ba-133 -30174 30174 Barium 137 metastable Ba-137m -30175 30175 Barium 140 Ba-140 -30176 30176 Cerium 139 Ce-139 -30177 30177 Cerium 141 Ce-141 -30178 30178 Cerium 143 Ce-143 -30179 30179 Cerium 144 Ce-144 -30180 30180 Lanthanum 140 La-140 -30181 30181 Lanthanum 141 La-141 -30182 30182 Praseodymium 143 Pr-143 -30183 30183 Praseodymium 144 Pr-144 -30184 30184 Praseodymium 144 metastable Pr-144m -30185 30185 Samarium 145 Sm-145 -30186 30186 Samarium 147 Sm-147 -30187 30187 Samarium 151 Sm-151 -30188 30188 Neodymium 147 Nd-147 -30189 30189 Promethium 146 Pm-146 -30190 30190 Promethium 147 Pm-147 -30191 30191 Promethium 151 Pm-151 -30192 30192 Europium 152 Eu-152 -30193 30193 Europium 154 Eu-154 -30194 30194 Europium 155 Eu-155 -30195 30195 Gadolinium 153 Gd-153 -30196 30196 Terbium 160 Tb-160 -30197 30197 Holmium 166 metastable Ho-166m -30198 30198 Thulium 170 Tm-170 -30199 30199 Ytterbium 169 Yb-169 -30200 30200 Hafnium 175 Hf-175 -30201 30201 Hafnium 181 Hf-181 -30202 30202 Tantalum 179 Ta-179 -30203 30203 Tantalum 182 Ta-182 -30204 30204 Rhenium 184 Re-184 -30205 30205 Iridium 192 Ir-192 -30206 30206 Mercury 203 Hg-203 -30207 30207 Thallium 204 Tl-204 -30208 30208 Thallium 207 Tl-207 -30209 30209 Thallium 208 Tl-208 -30210 30210 Thallium 209 Tl-209 -30211 30211 Bismuth 205 Bi-205 -30212 30212 Bismuth 207 Bi-207 -30213 30213 Bismuth 210 Bi-210 -30214 30214 Bismuth 211 Bi-211 -30215 30215 Bismuth 212 Bi-212 -30216 30216 Bismuth 213 Bi-213 -30217 30217 Bismuth 214 Bi-214 -30218 30218 Polonium 208 Po-208 -30219 30219 Polonium 210 Po-210 -30220 30220 Polonium 212 Po-212 -30221 30221 Polonium 213 Po-213 -30222 30222 Polonium 214 Po-214 -30223 30223 Polonium 215 Po-215 -30224 30224 Polonium 216 Po-216 -30225 30225 Polonium 218 Po-218 -30226 30226 Lead 209 Pb-209 -30227 30227 Lead 210 Pb-210 -30228 30228 Lead 211 Pb-211 -30229 30229 Lead 212 Pb-212 -30230 30230 Lead 214 Pb-214 -30231 30231 Astatine 217 At-217 -30232 30232 Radon 219 Rn-219 -30233 30233 Radon 220 Rn-220 -30234 30234 Radon 222 Rn-222 -30235 30235 Francium 221 Fr-221 -30236 30236 Francium 223 Fr-223 -30237 30237 Radium 223 Ra-223 -30238 30238 Radium 224 Ra-224 -30239 30239 Radium 225 Ra-225 -30240 30240 Radium 226 Ra-226 -30241 30241 Radium 228 Ra-228 -30242 30242 Actinium 225 Ac-225 -30243 30243 Actinium 227 Ac-227 -30244 30244 Actinium 228 Ac-228 -30245 30245 Thorium 227 Th-227 -30246 30246 Thorium 228 Th-228 -30247 30247 Thorium 229 Th-229 -30248 30248 Thorium 230 Th-230 -30249 30249 Thorium 231 Th-231 -30250 30250 Thorium 232 Th-232 -30251 30251 Thorium 234 Th-234 -30252 30252 Protactinium 231 Pa-231 -30253 30253 Protactinium 233 Pa-233 -30254 30254 Protactinium 234 metastable Pa-234m -30255 30255 Uranium 232 U-232 -30256 30256 Uranium 233 U-233 -30257 30257 Uranium 234 U-234 -30258 30258 Uranium 235 U-235 -30259 30259 Uranium 236 U-236 -30260 30260 Uranium 237 U-237 -30261 30261 Uranium 238 U-238 -30262 30262 Plutonium 236 Pu-236 -30263 30263 Plutonium 238 Pu-238 -30264 30264 Plutonium 239 Pu-239 -30265 30265 Plutonium 240 Pu-240 -30266 30266 Plutonium 241 Pu-241 -30267 30267 Plutonium 242 Pu-242 -30268 30268 Plutonium 244 Pu-244 -30269 30269 Neptunium 237 Np-237 -30270 30270 Neptunium 238 Np-238 -30271 30271 Neptunium 239 Np-239 -30272 30272 Americium 241 Am-241 -30273 30273 Americium 242 Am-242 -30274 30274 Americium 242 metastable Am-242m -30275 30275 Americium 243 Am-243 -30276 30276 Curium 242 Cm-242 -30277 30277 Curium 243 Cm-243 -30278 30278 Curium 244 Cm-244 -30279 30279 Curium 245 Cm-245 -30280 30280 Curium 246 Cm-246 -30281 30281 Curium 247 Cm-247 -30282 30282 Curium 248 Cm-248 -30283 30283 Curium 243/244 Cm-243244 -30284 30284 Plutonium 238/Americium 241 Pu-238Am-241 -30285 30285 Plutonium 239/240 Pu-239240 -30286 30286 Berkelium 249 Bk-249 -30287 30287 Californium 249 Cf-249 -30288 30288 Californium 250 Cf-250 -30289 30289 Californium 252 Cf-252 -30290 30290 Sum aerosol particulates SumAer -30291 30291 Sum Iodine SumIod -30292 30292 Sum noble gas SumNG -30293 30293 Activation gas ActGas -30294 30294 Cs-137 Equivalent EquCs137 -#30295-59999 Reserved -60000 60000 HOx radical (OH+HO2) -60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2) -60002 60002 Passive Ozone -60003 60003 NOx expressed as nitrogen NOx -60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy -60005 60005 Total inorganic chlorine Clx -60006 60006 Total inorganic bromine Brx -60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx -60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx -60009 60009 Lumped alkanes -60010 60010 Lumped alkenes -60011 60011 Lumped aromatic compounds -60012 60012 Lumped terpenes -60013 60013 Non-methane volatile organic compounds expressed as carbon -60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon -60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon -60016 60016 Lumped oxygenated hydrocarbons -60017 60017 NOx expressed as nitrogen dioxide (NO2) -#60018-61999 Reserved -62000 62000 Total aerosol -62001 62001 Dust dry -62002 62002 Water in ambient -62003 62003 Ammonium dry -62004 62004 Nitrate dry -62005 62005 Nitric acid trihydrate -62006 62006 Sulphate dry -62007 62007 Mercury dry -62008 62008 Sea salt dry -62009 62009 Black carbon dry -62010 62010 Particulate organic matter dry -62011 62011 Primary particulate organic matter dry -62012 62012 Secondary particulate organic matter dry -62013 62013 Black carbon hydrophilic dry -62014 62014 Black carbon hydrophobic dry -62015 62015 Particulate organic matter hydrophilic dry -62016 62016 Particulate organic matter hydrophobic dry -62017 62017 Nitrate hydrophilic dry -62018 62018 Nitrate hydrophobic dry -#62019 Reserved -62020 62020 Smoke - high absorption -62021 62021 Smoke - low absorption -62022 62022 Aerosol - high absorption -62023 62023 Aerosol - low absorption -62025 62025 Volcanic ash -62026 62026 Particulate matter (PM) -# 62027-62099 Reserved -62100 62100 Alnus (Alder) pollen -62101 62101 Betula (Birch) pollen -62102 62102 Castanea (Chestnut) pollen -62103 62103 Carpinus (Hornbeam) pollen -62104 62104 Corylus (Hazel) pollen -62105 62105 Fagus (Beech) pollen -62106 62106 Fraxinus (Ash) pollen -62107 62107 Pinus (Pine) pollen -62108 62108 Platanus (Plane) pollen -62109 62109 Populus (Cottonwood, Poplar) pollen -62110 62110 Quercus (Oak) pollen -62111 62111 Salix (Willow) pollen -62112 62112 Taxus (Yew) pollen -62113 62113 Tilia (Lime, Linden) pollen -62114 62114 Ulmus (Elm) pollen -# 62115-62199 Reserved -62200 62200 Ambrosia (Ragweed, Burr-ragweed ) pollen -62201 62201 Artemisia (Sagebrush, Wormwood, Mugwort) pollen -62202 62202 Brassica (Rape, Broccoli, Brussels Sprouts, Cabbage, Cauliflower, Collards, Kale, Kohlrabi, Mustard, Rutabaga) pollen -62203 62203 Plantago (Plantain) pollen -62204 62204 Rumex (Dock, Sorrel) pollen -62205 62205 Urtica (Nettle) pollen -# 62206-62299 Reserved -62300 62300 Poaceae (Grass family) pollen -# 62301-65534 Reserved +# (See Common Code table C-14) 65535 65535 Missing diff --git a/definitions/grib2/tables/19/4.230.table b/definitions/grib2/tables/19/4.230.table index 272731d76..5c39a79b9 100644 --- a/definitions/grib2/tables/19/4.230.table +++ b/definitions/grib2/tables/19/4.230.table @@ -1,449 +1,3 @@ # Code table 4.230 - Atmospheric chemical constituent type -0 0 Ozone O3 -1 1 Water vapour H2O -2 2 Methane CH4 -3 3 Carbon dioxide CO2 -4 4 Carbon monoxide CO -5 5 Nitrogen dioxide NO2 -6 6 Nitrous oxide N2O -7 7 Formaldehyde HCHO -8 8 Sulphur dioxide SO2 -9 9 Ammonia NH3 -10 10 Ammonium NH4+ -11 11 Nitrogen monoxide NO -12 12 Atomic oxygen O -13 13 Nitrate radical NO3 -14 14 Hydroperoxyl radical HO2 -15 15 Dinitrogen pentoxide N2O5 -16 16 Nitrous acid HONO -17 17 Nitric acid HNO3 -18 18 Peroxynitric acid HO2NO2 -19 19 Hydrogen peroxide H2O2 -20 20 Molecular hydrogen H -21 21 Atomic nitrogen N -22 22 Sulphate SO42- -23 23 Radon Rn -24 24 Elemental mercury Hg(0) -25 25 Divalent mercury Hg2+ -26 26 Atomic chlorine Cl -27 27 Chlorine monoxide ClO -28 28 Dichlorine peroxide Cl2O2 -29 29 Hypochlorous acid HClO -30 30 Chlorine nitrate ClONO2 -31 31 Chlorine dioxide ClO2 -32 32 Atomic bromine Br -33 33 Bromine monoxide BrO -34 34 Bromine chloride BrCl -35 35 Hydrogen bromide HBr -36 36 Hypobromous acid HBrO -37 37 Bromine nitrate BrONO2 -38 38 Oxygen O2 -#39-9999 Reserved -10000 10000 Hydroxyl radical OH -10001 10001 Methyl peroxy radical CH3O2 -10002 10002 Methyl hydroperoxide CH3O2H -10004 10004 Methanol CH3OH -10005 10005 Formic acid CH3OOH -10006 10006 Hydrogen cyanide HCN -10007 10007 Aceto nitrile CH3CN -10008 10008 Ethane C2H6 -10009 10009 Ethene (= Ethylene) C2H4 -10010 10010 Ethyne (= Acetylene) C2H2 -10011 10011 Ethanol C2H5OH -10012 10012 Acetic acid C2H5OOH -10013 10013 Peroxyacetyl nitrate CH3C(O)OONO2 -10014 10014 Propane C3H8 -10015 10015 Propene C3H6 -10016 10016 Butanes C4H10 -10017 10017 Isoprene C5H10 -10018 10018 Alpha pinene C10H16 -10019 10019 Beta pinene C10H16 -10020 10020 Limonene C10H16 -10021 10021 Benzene C6H6 -10022 10022 Toluene C7H8 -10023 10023 Xylene C8H10 -#10024-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides...) -10500 10500 Dimethyl sulphide CH3SCH3 (DMS) -#10501-20000 Reserved -20001 20001 Hydrogen chloride -20002 20002 CFC-11 -20003 20003 CFC-12 -20004 20004 CFC-113 -20005 20005 CFC-113a -20006 20006 CFC-114 -20007 20007 CFC-115 -20008 20008 HCFC-22 -20009 20009 HCFC-141b -20010 20010 HCFC-142b -20011 20011 Halon-1202 -20012 20012 Halon-1211 -20013 20013 Halon-1301 -20014 20014 Halon-2402 -20015 20015 Methyl chloride (HCC-40) -20016 20016 Carbon tetrachloride (HCC-10) -20017 20017 HCC-140a CH3CCl3 -20018 20018 Methyl bromide (HBC-40B1) -20019 20019 Hexachlorocyclohexane (HCH) -20020 20020 Alpha hexachlorocyclohexane -20021 20021 Hexachlorobiphenyl (PCB-153) -#20022-29999 Reserved -30000 30000 Radioactive pollutant (tracer, defined by originating centre) -#30001-30009 Reserved -30010 30010 Hydrogen H-3 -30011 30011 Hydrogen organic bounded H-3o -30012 30012 Hydrogen inorganic H-3a -30013 30013 Beryllium 7 Be-7 -30014 30014 Beryllium 10 Be-10 -30015 30015 Carbon 14 C-14 -30016 30016 Carbon 14 CO2 C-14CO2 -30017 30017 Carbon 14 other gases C-14og -30018 30018 Nitrogen 13 N-13 -30019 30019 Nitrogen 16 N-16 -30020 30020 Fluorine 18 F-18 -30021 30021 Sodium 22 Na-22 -30022 30022 Phosphate 32 P-32 -30023 30023 Phosphate 33 P-33 -30024 30024 Sulphur 35 S-35 -30025 30025 Chlorine 36 Cl-36 -30026 30026 Potassium 40 K-40 -30027 30027 Argon 41 Ar-41 -30028 30028 Calcium 41 Ca-41 -30029 30029 Calcium 45 Ca-45 -30030 30030 Titanium 44 Ti-44 -30031 30031 Scandium 46 Sc-46 -30032 30032 Vanadium 48 V-48 -30033 30033 Vanadium 49 V-49 -30034 30034 Chrome 51 Cr-51 -30035 30035 Manganese 52 Mn-52 -30036 30036 Manganese 54 Mn-54 -30037 30037 Iron 55 Fe-55 -30038 30038 Iron 59 Fe-59 -30039 30039 Cobalt 56 Co-56 -30040 30040 Cobalt 57 Co-57 -30041 30041 Cobalt 58 Co-58 -30042 30042 Cobalt 60 Co-60 -30043 30043 Nickel 59 Ni-59 -30044 30044 Nickel 63 Ni-63 -30045 30045 Zinc 65 Zn-65 -30046 30046 Gallium 67 Ga-67 -30047 30047 Gallium 68 Ga-68 -30048 30048 Germanium 68 Ge-68 -30049 30049 Germanium 69 Ge-69 -30050 30050 Arsenic 73 As-73 -30051 30051 Selenium 75 Se-75 -30052 30052 Selenium 79 Se-79 -30053 30053 Rubidium 81 Rb-81 -30054 30054 Rubidium 83 Rb-83 -30055 30055 Rubidium 84 Rb-84 -30056 30056 Rubidium 86 Rb-86 -30057 30057 Rubidium 87 Rb-87 -30058 30058 Rubidium 88 Rb-88 -30059 30059 Krypton 85 Kr-85 -30060 30060 Krypton 85 metastable Kr-85m -30061 30061 Krypton 87 Kr-87 -30062 30062 Krypton 88 Kr-88 -30063 30063 Krypton 89 Kr-89 -30064 30064 Strontium 85 Sr-85 -30065 30065 Strontium 89 Sr-89 -30066 30066 Strontium 89/90 Sr-8990 -30067 30067 Strontium 90 Sr-90 -30068 30068 Strontium 91 Sr-91 -30069 30069 Strontium 92 Sr-92 -30070 30070 Yttrium 87 Y-87 -30071 30071 Yttrium 88 Y-88 -30072 30072 Yttrium 90 Y-90 -30073 30073 Yttrium 91 Y-91 -30074 30074 Yttrium 91 metastable Y-91m -30075 30075 Yttrium 92 Y-92 -30076 30076 Yttrium 93 Y-93 -30077 30077 Zirconium 89 Zr-89 -30078 30078 Zirconium 93 Zr-93 -30079 30079 Zirconium 95 Zr-95 -30080 30080 Zirconium 97 Zr-97 -30081 30081 Niobium 93 metastable Nb-93m -30082 30082 Niobium 94 Nb-94 -30083 30083 Niobium 95 Nb-95 -30084 30084 Niobium 95 metastable Nb-95m -30085 30085 Niobium 97 Nb-97 -30086 30086 Niobium 97 metastable Nb-97m -30087 30087 Molybdenum 93 Mo-93 -30088 30088 Molybdenum 99 Mo-99 -30089 30089 Technetium 95 metastable Tc-95m -30090 30090 Technetium 96 Tc-96 -30091 30091 Technetium 99 Tc-99 -30092 30092 Technetium 99 metastable Tc-99m -30093 30093 Rhodium 99 Rh-99 -30094 30094 Rhodium 101 Rh-101 -30095 30095 Rhodium 102 metastable Rh-102m -30096 30096 Rhodium 103 metastable Rh-103m -30097 30097 Rhodium 105 Rh-105 -30098 30098 Rhodium 106 Rh-106 -30099 30099 Palladium 100 Pd-100 -30100 30100 Palladium 103 Pd-103 -30101 30101 Palladium 107 Pd-107 -30102 30102 Ruthenium 103 Ru-103 -30103 30103 Ruthenium 105 Ru-105 -30104 30104 Ruthenium 106 Ru-106 -30105 30105 Silver 108 metastable Ag-108m -30106 30106 Silver 110 metastable Ag-110m -30107 30107 Cadmium 109 Cd-109 -30108 30108 Cadmium 113 metastable Cd-113m -30109 30109 Cadmium 115 metastable Cd-115m -30110 30110 Indium 114 metastable In-114m -30111 30111 Tin 113 Sn-113 -30112 30112 Tin 119 metastable Sn-119m -30113 30113 Tin 121 metastable Sn-121m -30114 30114 Tin 122 Sn-122 -30115 30115 Tin 123 Sn-123 -30116 30116 Tin 126 Sn-126 -30117 30117 Antimony 124 Sb-124 -30118 30118 Antimony 125 Sb-125 -30119 30119 Antimony 126 Sb-126 -30120 30120 Antimony 127 Sb-127 -30121 30121 Antimony 129 Sb-129 -30122 30122 Tellurium 123 metastable Te-123m -30123 30123 Tellurium 125 metastable Te-125m -30124 30124 Tellurium 127 Te-127 -30125 30125 Tellurium 127 metastable Te-127m -30126 30126 Tellurium 129 Te-129 -30127 30127 Tellurium 129 metastable Te-129m -30128 30128 Tellurium 131 metastable Te-131m -30129 30129 Tellurium 132 Te-132 -30130 30130 Iodine 123 I-123 -30131 30131 Iodine 124 I-124 -30132 30132 Iodine 125 I-125 -30133 30133 Iodine 126 I-126 -30134 30134 Iodine 129 I-129 -30135 30135 Iodine 129 elementary gaseous I-129g -30136 30136 Iodine 129 organic bounded I-129o -30137 30137 Iodine 131 I-131 -30138 30138 Iodine 131 elementary gaseous I-131g -30139 30139 Iodine 131 organic bounded I-131o -30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go -30141 30141 Iodine 131 aerosol I-131a -30142 30142 Iodine 132 I-132 -30143 30143 Iodine 132 elementary gaseous I-132g -30144 30144 Iodine 132 organic bounded I-132o -30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go -30146 30146 Iodine 132 aerosol I-132a -30147 30147 Iodine 133 I-133 -30148 30148 Iodine 133 elementary gaseous I-133g -30149 30149 Iodine 133 organic bounded I-133o -30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go -30151 30151 Iodine 133 aerosol I-133a -30152 30152 Iodine 134 I-134 -30153 30153 Iodine 134 elementary gaseous I-134g -30154 30154 Iodine 134 organic bounded I-134o -30155 30155 Iodine 135 I-135 -30156 30156 Iodine 135 elementary gaseous I-135g -30157 30157 Iodine 135 organic bounded I-135o -30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go -30159 30159 Iodine 135 aerosol I-135a -30160 30160 Xenon 131 metastable Xe-131m -30161 30161 Xenon 133 Xe-133 -30162 30162 Xenon 133 metastable Xe-133m -30163 30163 Xenon 135 Xe-135 -30164 30164 Xenon 135 metastable Xe-135m -30165 30165 Xenon 137 Xe-137 -30166 30166 Xenon 138 Xe-138 -30167 30167 Xenon sum of all Xenon isotopes Xe-sum -30168 30168 Caesium 131 Cs-131 -30169 30169 Caesium 134 Cs-134 -30170 30170 Caesium 135 Cs-135 -30171 30171 Caesium 136 Cs-136 -30172 30172 Caesium 137 Cs-137 -30173 30173 Barium 133 Ba-133 -30174 30174 Barium 137 metastable Ba-137m -30175 30175 Barium 140 Ba-140 -30176 30176 Cerium 139 Ce-139 -30177 30177 Cerium 141 Ce-141 -30178 30178 Cerium 143 Ce-143 -30179 30179 Cerium 144 Ce-144 -30180 30180 Lanthanum 140 La-140 -30181 30181 Lanthanum 141 La-141 -30182 30182 Praseodymium 143 Pr-143 -30183 30183 Praseodymium 144 Pr-144 -30184 30184 Praseodymium 144 metastable Pr-144m -30185 30185 Samarium 145 Sm-145 -30186 30186 Samarium 147 Sm-147 -30187 30187 Samarium 151 Sm-151 -30188 30188 Neodymium 147 Nd-147 -30189 30189 Promethium 146 Pm-146 -30190 30190 Promethium 147 Pm-147 -30191 30191 Promethium 151 Pm-151 -30192 30192 Europium 152 Eu-152 -30193 30193 Europium 154 Eu-154 -30194 30194 Europium 155 Eu-155 -30195 30195 Gadolinium 153 Gd-153 -30196 30196 Terbium 160 Tb-160 -30197 30197 Holmium 166 metastable Ho-166m -30198 30198 Thulium 170 Tm-170 -30199 30199 Ytterbium 169 Yb-169 -30200 30200 Hafnium 175 Hf-175 -30201 30201 Hafnium 181 Hf-181 -30202 30202 Tantalum 179 Ta-179 -30203 30203 Tantalum 182 Ta-182 -30204 30204 Rhenium 184 Re-184 -30205 30205 Iridium 192 Ir-192 -30206 30206 Mercury 203 Hg-203 -30207 30207 Thallium 204 Tl-204 -30208 30208 Thallium 207 Tl-207 -30209 30209 Thallium 208 Tl-208 -30210 30210 Thallium 209 Tl-209 -30211 30211 Bismuth 205 Bi-205 -30212 30212 Bismuth 207 Bi-207 -30213 30213 Bismuth 210 Bi-210 -30214 30214 Bismuth 211 Bi-211 -30215 30215 Bismuth 212 Bi-212 -30216 30216 Bismuth 213 Bi-213 -30217 30217 Bismuth 214 Bi-214 -30218 30218 Polonium 208 Po-208 -30219 30219 Polonium 210 Po-210 -30220 30220 Polonium 212 Po-212 -30221 30221 Polonium 213 Po-213 -30222 30222 Polonium 214 Po-214 -30223 30223 Polonium 215 Po-215 -30224 30224 Polonium 216 Po-216 -30225 30225 Polonium 218 Po-218 -30226 30226 Lead 209 Pb-209 -30227 30227 Lead 210 Pb-210 -30228 30228 Lead 211 Pb-211 -30229 30229 Lead 212 Pb-212 -30230 30230 Lead 214 Pb-214 -30231 30231 Astatine 217 At-217 -30232 30232 Radon 219 Rn-219 -30233 30233 Radon 220 Rn-220 -30234 30234 Radon 222 Rn-222 -30235 30235 Francium 221 Fr-221 -30236 30236 Francium 223 Fr-223 -30237 30237 Radium 223 Ra-223 -30238 30238 Radium 224 Ra-224 -30239 30239 Radium 225 Ra-225 -30240 30240 Radium 226 Ra-226 -30241 30241 Radium 228 Ra-228 -30242 30242 Actinium 225 Ac-225 -30243 30243 Actinium 227 Ac-227 -30244 30244 Actinium 228 Ac-228 -30245 30245 Thorium 227 Th-227 -30246 30246 Thorium 228 Th-228 -30247 30247 Thorium 229 Th-229 -30248 30248 Thorium 230 Th-230 -30249 30249 Thorium 231 Th-231 -30250 30250 Thorium 232 Th-232 -30251 30251 Thorium 234 Th-234 -30252 30252 Protactinium 231 Pa-231 -30253 30253 Protactinium 233 Pa-233 -30254 30254 Protactinium 234 metastable Pa-234m -30255 30255 Uranium 232 U-232 -30256 30256 Uranium 233 U-233 -30257 30257 Uranium 234 U-234 -30258 30258 Uranium 235 U-235 -30259 30259 Uranium 236 U-236 -30260 30260 Uranium 237 U-237 -30261 30261 Uranium 238 U-238 -30262 30262 Plutonium 236 Pu-236 -30263 30263 Plutonium 238 Pu-238 -30264 30264 Plutonium 239 Pu-239 -30265 30265 Plutonium 240 Pu-240 -30266 30266 Plutonium 241 Pu-241 -30267 30267 Plutonium 242 Pu-242 -30268 30268 Plutonium 244 Pu-244 -30269 30269 Neptunium 237 Np-237 -30270 30270 Neptunium 238 Np-238 -30271 30271 Neptunium 239 Np-239 -30272 30272 Americium 241 Am-241 -30273 30273 Americium 242 Am-242 -30274 30274 Americium 242 metastable Am-242m -30275 30275 Americium 243 Am-243 -30276 30276 Curium 242 Cm-242 -30277 30277 Curium 243 Cm-243 -30278 30278 Curium 244 Cm-244 -30279 30279 Curium 245 Cm-245 -30280 30280 Curium 246 Cm-246 -30281 30281 Curium 247 Cm-247 -30282 30282 Curium 248 Cm-248 -30283 30283 Curium 243/244 Cm-243244 -30284 30284 Plutonium 238/Americium 241 Pu-238Am-241 -30285 30285 Plutonium 239/240 Pu-239240 -30286 30286 Berkelium 249 Bk-249 -30287 30287 Californium 249 Cf-249 -30288 30288 Californium 250 Cf-250 -30289 30289 Californium 252 Cf-252 -30290 30290 Sum aerosol particulates SumAer -30291 30291 Sum Iodine SumIod -30292 30292 Sum noble gas SumNG -30293 30293 Activation gas ActGas -30294 30294 Cs-137 Equivalent EquCs137 -#30295-59999 Reserved -60000 60000 HOx radical (OH+HO2) -60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2) -60002 60002 Passive Ozone -60003 60003 NOx expressed as nitrogen NOx -60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy -60005 60005 Total inorganic chlorine Clx -60006 60006 Total inorganic bromine Brx -60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx -60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx -60009 60009 Lumped alkanes -60010 60010 Lumped alkenes -60011 60011 Lumped aromatic compounds -60012 60012 Lumped terpenes -60013 60013 Non-methane volatile organic compounds expressed as carbon -60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon -60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon -60016 60016 Lumped oxygenated hydrocarbons -60017 60017 NOx expressed as nitrogen dioxide (NO2) -#60018-61999 Reserved -62000 62000 Total aerosol -62001 62001 Dust dry -62002 62002 Water in ambient -62003 62003 Ammonium dry -62004 62004 Nitrate dry -62005 62005 Nitric acid trihydrate -62006 62006 Sulphate dry -62007 62007 Mercury dry -62008 62008 Sea salt dry -62009 62009 Black carbon dry -62010 62010 Particulate organic matter dry -62011 62011 Primary particulate organic matter dry -62012 62012 Secondary particulate organic matter dry -62013 62013 Black carbon hydrophilic dry -62014 62014 Black carbon hydrophobic dry -62015 62015 Particulate organic matter hydrophilic dry -62016 62016 Particulate organic matter hydrophobic dry -62017 62017 Nitrate hydrophilic dry -62018 62018 Nitrate hydrophobic dry -#62019 Reserved -62020 62020 Smoke - high absorption -62021 62021 Smoke - low absorption -62022 62022 Aerosol - high absorption -62023 62023 Aerosol - low absorption -62025 62025 Volcanic ash -62026 62026 Particulate matter (PM) -# 62027-62099 Reserved -62100 62100 Alnus (Alder) pollen -62101 62101 Betula (Birch) pollen -62102 62102 Castanea (Chestnut) pollen -62103 62103 Carpinus (Hornbeam) pollen -62104 62104 Corylus (Hazel) pollen -62105 62105 Fagus (Beech) pollen -62106 62106 Fraxinus (Ash) pollen -62107 62107 Pinus (Pine) pollen -62108 62108 Platanus (Plane) pollen -62109 62109 Populus (Cottonwood, Poplar) pollen -62110 62110 Quercus (Oak) pollen -62111 62111 Salix (Willow) pollen -62112 62112 Taxus (Yew) pollen -62113 62113 Tilia (Lime, Linden) pollen -62114 62114 Ulmus (Elm) pollen -# 62115-62199 Reserved -62200 62200 Ambrosia (Ragweed, Burr-ragweed ) pollen -62201 62201 Artemisia (Sagebrush, Wormwood, Mugwort) pollen -62202 62202 Brassica (Rape, Broccoli, Brussels Sprouts, Cabbage, Cauliflower, Collards, Kale, Kohlrabi, Mustard, Rutabaga) pollen -62203 62203 Plantago (Plantain) pollen -62204 62204 Rumex (Dock, Sorrel) pollen -62205 62205 Urtica (Nettle) pollen -# 62206-62299 Reserved -62300 62300 Poaceae (Grass family) pollen -# 62301-65534 Reserved +# (See Common Code table C-14) 65535 65535 Missing diff --git a/definitions/grib2/tables/19/4.233.table b/definitions/grib2/tables/19/4.233.table index 1d3021ef7..d63f673bb 100644 --- a/definitions/grib2/tables/19/4.233.table +++ b/definitions/grib2/tables/19/4.233.table @@ -1,449 +1,3 @@ # Code table 4.233 - Aerosol type -0 0 Ozone O3 -1 1 Water vapour H2O -2 2 Methane CH4 -3 3 Carbon dioxide CO2 -4 4 Carbon monoxide CO -5 5 Nitrogen dioxide NO2 -6 6 Nitrous oxide N2O -7 7 Formaldehyde HCHO -8 8 Sulphur dioxide SO2 -9 9 Ammonia NH3 -10 10 Ammonium NH4+ -11 11 Nitrogen monoxide NO -12 12 Atomic oxygen O -13 13 Nitrate radical NO3 -14 14 Hydroperoxyl radical HO2 -15 15 Dinitrogen pentoxide N2O5 -16 16 Nitrous acid HONO -17 17 Nitric acid HNO3 -18 18 Peroxynitric acid HO2NO2 -19 19 Hydrogen peroxide H2O2 -20 20 Molecular hydrogen H -21 21 Atomic nitrogen N -22 22 Sulphate SO42- -23 23 Radon Rn -24 24 Elemental mercury Hg(0) -25 25 Divalent mercury Hg2+ -26 26 Atomic chlorine Cl -27 27 Chlorine monoxide ClO -28 28 Dichlorine peroxide Cl2O2 -29 29 Hypochlorous acid HClO -30 30 Chlorine nitrate ClONO2 -31 31 Chlorine dioxide ClO2 -32 32 Atomic bromine Br -33 33 Bromine monoxide BrO -34 34 Bromine chloride BrCl -35 35 Hydrogen bromide HBr -36 36 Hypobromous acid HBrO -37 37 Bromine nitrate BrONO2 -38 38 Oxygen O2 -#39-9999 Reserved -10000 10000 Hydroxyl radical OH -10001 10001 Methyl peroxy radical CH3O2 -10002 10002 Methyl hydroperoxide CH3O2H -10004 10004 Methanol CH3OH -10005 10005 Formic acid CH3OOH -10006 10006 Hydrogen cyanide HCN -10007 10007 Aceto nitrile CH3CN -10008 10008 Ethane C2H6 -10009 10009 Ethene (= Ethylene) C2H4 -10010 10010 Ethyne (= Acetylene) C2H2 -10011 10011 Ethanol C2H5OH -10012 10012 Acetic acid C2H5OOH -10013 10013 Peroxyacetyl nitrate CH3C(O)OONO2 -10014 10014 Propane C3H8 -10015 10015 Propene C3H6 -10016 10016 Butanes C4H10 -10017 10017 Isoprene C5H10 -10018 10018 Alpha pinene C10H16 -10019 10019 Beta pinene C10H16 -10020 10020 Limonene C10H16 -10021 10021 Benzene C6H6 -10022 10022 Toluene C7H8 -10023 10023 Xylene C8H10 -#10024-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides...) -10500 10500 Dimethyl sulphide CH3SCH3 (DMS) -#10501-20000 Reserved -20001 20001 Hydrogen chloride -20002 20002 CFC-11 -20003 20003 CFC-12 -20004 20004 CFC-113 -20005 20005 CFC-113a -20006 20006 CFC-114 -20007 20007 CFC-115 -20008 20008 HCFC-22 -20009 20009 HCFC-141b -20010 20010 HCFC-142b -20011 20011 Halon-1202 -20012 20012 Halon-1211 -20013 20013 Halon-1301 -20014 20014 Halon-2402 -20015 20015 Methyl chloride (HCC-40) -20016 20016 Carbon tetrachloride (HCC-10) -20017 20017 HCC-140a CH3CCl3 -20018 20018 Methyl bromide (HBC-40B1) -20019 20019 Hexachlorocyclohexane (HCH) -20020 20020 Alpha hexachlorocyclohexane -20021 20021 Hexachlorobiphenyl (PCB-153) -#20022-29999 Reserved -30000 30000 Radioactive pollutant (tracer, defined by originating centre) -#30001-30009 Reserved -30010 30010 Hydrogen H-3 -30011 30011 Hydrogen organic bounded H-3o -30012 30012 Hydrogen inorganic H-3a -30013 30013 Beryllium 7 Be-7 -30014 30014 Beryllium 10 Be-10 -30015 30015 Carbon 14 C-14 -30016 30016 Carbon 14 CO2 C-14CO2 -30017 30017 Carbon 14 other gases C-14og -30018 30018 Nitrogen 13 N-13 -30019 30019 Nitrogen 16 N-16 -30020 30020 Fluorine 18 F-18 -30021 30021 Sodium 22 Na-22 -30022 30022 Phosphate 32 P-32 -30023 30023 Phosphate 33 P-33 -30024 30024 Sulphur 35 S-35 -30025 30025 Chlorine 36 Cl-36 -30026 30026 Potassium 40 K-40 -30027 30027 Argon 41 Ar-41 -30028 30028 Calcium 41 Ca-41 -30029 30029 Calcium 45 Ca-45 -30030 30030 Titanium 44 Ti-44 -30031 30031 Scandium 46 Sc-46 -30032 30032 Vanadium 48 V-48 -30033 30033 Vanadium 49 V-49 -30034 30034 Chrome 51 Cr-51 -30035 30035 Manganese 52 Mn-52 -30036 30036 Manganese 54 Mn-54 -30037 30037 Iron 55 Fe-55 -30038 30038 Iron 59 Fe-59 -30039 30039 Cobalt 56 Co-56 -30040 30040 Cobalt 57 Co-57 -30041 30041 Cobalt 58 Co-58 -30042 30042 Cobalt 60 Co-60 -30043 30043 Nickel 59 Ni-59 -30044 30044 Nickel 63 Ni-63 -30045 30045 Zinc 65 Zn-65 -30046 30046 Gallium 67 Ga-67 -30047 30047 Gallium 68 Ga-68 -30048 30048 Germanium 68 Ge-68 -30049 30049 Germanium 69 Ge-69 -30050 30050 Arsenic 73 As-73 -30051 30051 Selenium 75 Se-75 -30052 30052 Selenium 79 Se-79 -30053 30053 Rubidium 81 Rb-81 -30054 30054 Rubidium 83 Rb-83 -30055 30055 Rubidium 84 Rb-84 -30056 30056 Rubidium 86 Rb-86 -30057 30057 Rubidium 87 Rb-87 -30058 30058 Rubidium 88 Rb-88 -30059 30059 Krypton 85 Kr-85 -30060 30060 Krypton 85 metastable Kr-85m -30061 30061 Krypton 87 Kr-87 -30062 30062 Krypton 88 Kr-88 -30063 30063 Krypton 89 Kr-89 -30064 30064 Strontium 85 Sr-85 -30065 30065 Strontium 89 Sr-89 -30066 30066 Strontium 89/90 Sr-8990 -30067 30067 Strontium 90 Sr-90 -30068 30068 Strontium 91 Sr-91 -30069 30069 Strontium 92 Sr-92 -30070 30070 Yttrium 87 Y-87 -30071 30071 Yttrium 88 Y-88 -30072 30072 Yttrium 90 Y-90 -30073 30073 Yttrium 91 Y-91 -30074 30074 Yttrium 91 metastable Y-91m -30075 30075 Yttrium 92 Y-92 -30076 30076 Yttrium 93 Y-93 -30077 30077 Zirconium 89 Zr-89 -30078 30078 Zirconium 93 Zr-93 -30079 30079 Zirconium 95 Zr-95 -30080 30080 Zirconium 97 Zr-97 -30081 30081 Niobium 93 metastable Nb-93m -30082 30082 Niobium 94 Nb-94 -30083 30083 Niobium 95 Nb-95 -30084 30084 Niobium 95 metastable Nb-95m -30085 30085 Niobium 97 Nb-97 -30086 30086 Niobium 97 metastable Nb-97m -30087 30087 Molybdenum 93 Mo-93 -30088 30088 Molybdenum 99 Mo-99 -30089 30089 Technetium 95 metastable Tc-95m -30090 30090 Technetium 96 Tc-96 -30091 30091 Technetium 99 Tc-99 -30092 30092 Technetium 99 metastable Tc-99m -30093 30093 Rhodium 99 Rh-99 -30094 30094 Rhodium 101 Rh-101 -30095 30095 Rhodium 102 metastable Rh-102m -30096 30096 Rhodium 103 metastable Rh-103m -30097 30097 Rhodium 105 Rh-105 -30098 30098 Rhodium 106 Rh-106 -30099 30099 Palladium 100 Pd-100 -30100 30100 Palladium 103 Pd-103 -30101 30101 Palladium 107 Pd-107 -30102 30102 Ruthenium 103 Ru-103 -30103 30103 Ruthenium 105 Ru-105 -30104 30104 Ruthenium 106 Ru-106 -30105 30105 Silver 108 metastable Ag-108m -30106 30106 Silver 110 metastable Ag-110m -30107 30107 Cadmium 109 Cd-109 -30108 30108 Cadmium 113 metastable Cd-113m -30109 30109 Cadmium 115 metastable Cd-115m -30110 30110 Indium 114 metastable In-114m -30111 30111 Tin 113 Sn-113 -30112 30112 Tin 119 metastable Sn-119m -30113 30113 Tin 121 metastable Sn-121m -30114 30114 Tin 122 Sn-122 -30115 30115 Tin 123 Sn-123 -30116 30116 Tin 126 Sn-126 -30117 30117 Antimony 124 Sb-124 -30118 30118 Antimony 125 Sb-125 -30119 30119 Antimony 126 Sb-126 -30120 30120 Antimony 127 Sb-127 -30121 30121 Antimony 129 Sb-129 -30122 30122 Tellurium 123 metastable Te-123m -30123 30123 Tellurium 125 metastable Te-125m -30124 30124 Tellurium 127 Te-127 -30125 30125 Tellurium 127 metastable Te-127m -30126 30126 Tellurium 129 Te-129 -30127 30127 Tellurium 129 metastable Te-129m -30128 30128 Tellurium 131 metastable Te-131m -30129 30129 Tellurium 132 Te-132 -30130 30130 Iodine 123 I-123 -30131 30131 Iodine 124 I-124 -30132 30132 Iodine 125 I-125 -30133 30133 Iodine 126 I-126 -30134 30134 Iodine 129 I-129 -30135 30135 Iodine 129 elementary gaseous I-129g -30136 30136 Iodine 129 organic bounded I-129o -30137 30137 Iodine 131 I-131 -30138 30138 Iodine 131 elementary gaseous I-131g -30139 30139 Iodine 131 organic bounded I-131o -30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go -30141 30141 Iodine 131 aerosol I-131a -30142 30142 Iodine 132 I-132 -30143 30143 Iodine 132 elementary gaseous I-132g -30144 30144 Iodine 132 organic bounded I-132o -30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go -30146 30146 Iodine 132 aerosol I-132a -30147 30147 Iodine 133 I-133 -30148 30148 Iodine 133 elementary gaseous I-133g -30149 30149 Iodine 133 organic bounded I-133o -30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go -30151 30151 Iodine 133 aerosol I-133a -30152 30152 Iodine 134 I-134 -30153 30153 Iodine 134 elementary gaseous I-134g -30154 30154 Iodine 134 organic bounded I-134o -30155 30155 Iodine 135 I-135 -30156 30156 Iodine 135 elementary gaseous I-135g -30157 30157 Iodine 135 organic bounded I-135o -30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go -30159 30159 Iodine 135 aerosol I-135a -30160 30160 Xenon 131 metastable Xe-131m -30161 30161 Xenon 133 Xe-133 -30162 30162 Xenon 133 metastable Xe-133m -30163 30163 Xenon 135 Xe-135 -30164 30164 Xenon 135 metastable Xe-135m -30165 30165 Xenon 137 Xe-137 -30166 30166 Xenon 138 Xe-138 -30167 30167 Xenon sum of all Xenon isotopes Xe-sum -30168 30168 Caesium 131 Cs-131 -30169 30169 Caesium 134 Cs-134 -30170 30170 Caesium 135 Cs-135 -30171 30171 Caesium 136 Cs-136 -30172 30172 Caesium 137 Cs-137 -30173 30173 Barium 133 Ba-133 -30174 30174 Barium 137 metastable Ba-137m -30175 30175 Barium 140 Ba-140 -30176 30176 Cerium 139 Ce-139 -30177 30177 Cerium 141 Ce-141 -30178 30178 Cerium 143 Ce-143 -30179 30179 Cerium 144 Ce-144 -30180 30180 Lanthanum 140 La-140 -30181 30181 Lanthanum 141 La-141 -30182 30182 Praseodymium 143 Pr-143 -30183 30183 Praseodymium 144 Pr-144 -30184 30184 Praseodymium 144 metastable Pr-144m -30185 30185 Samarium 145 Sm-145 -30186 30186 Samarium 147 Sm-147 -30187 30187 Samarium 151 Sm-151 -30188 30188 Neodymium 147 Nd-147 -30189 30189 Promethium 146 Pm-146 -30190 30190 Promethium 147 Pm-147 -30191 30191 Promethium 151 Pm-151 -30192 30192 Europium 152 Eu-152 -30193 30193 Europium 154 Eu-154 -30194 30194 Europium 155 Eu-155 -30195 30195 Gadolinium 153 Gd-153 -30196 30196 Terbium 160 Tb-160 -30197 30197 Holmium 166 metastable Ho-166m -30198 30198 Thulium 170 Tm-170 -30199 30199 Ytterbium 169 Yb-169 -30200 30200 Hafnium 175 Hf-175 -30201 30201 Hafnium 181 Hf-181 -30202 30202 Tantalum 179 Ta-179 -30203 30203 Tantalum 182 Ta-182 -30204 30204 Rhenium 184 Re-184 -30205 30205 Iridium 192 Ir-192 -30206 30206 Mercury 203 Hg-203 -30207 30207 Thallium 204 Tl-204 -30208 30208 Thallium 207 Tl-207 -30209 30209 Thallium 208 Tl-208 -30210 30210 Thallium 209 Tl-209 -30211 30211 Bismuth 205 Bi-205 -30212 30212 Bismuth 207 Bi-207 -30213 30213 Bismuth 210 Bi-210 -30214 30214 Bismuth 211 Bi-211 -30215 30215 Bismuth 212 Bi-212 -30216 30216 Bismuth 213 Bi-213 -30217 30217 Bismuth 214 Bi-214 -30218 30218 Polonium 208 Po-208 -30219 30219 Polonium 210 Po-210 -30220 30220 Polonium 212 Po-212 -30221 30221 Polonium 213 Po-213 -30222 30222 Polonium 214 Po-214 -30223 30223 Polonium 215 Po-215 -30224 30224 Polonium 216 Po-216 -30225 30225 Polonium 218 Po-218 -30226 30226 Lead 209 Pb-209 -30227 30227 Lead 210 Pb-210 -30228 30228 Lead 211 Pb-211 -30229 30229 Lead 212 Pb-212 -30230 30230 Lead 214 Pb-214 -30231 30231 Astatine 217 At-217 -30232 30232 Radon 219 Rn-219 -30233 30233 Radon 220 Rn-220 -30234 30234 Radon 222 Rn-222 -30235 30235 Francium 221 Fr-221 -30236 30236 Francium 223 Fr-223 -30237 30237 Radium 223 Ra-223 -30238 30238 Radium 224 Ra-224 -30239 30239 Radium 225 Ra-225 -30240 30240 Radium 226 Ra-226 -30241 30241 Radium 228 Ra-228 -30242 30242 Actinium 225 Ac-225 -30243 30243 Actinium 227 Ac-227 -30244 30244 Actinium 228 Ac-228 -30245 30245 Thorium 227 Th-227 -30246 30246 Thorium 228 Th-228 -30247 30247 Thorium 229 Th-229 -30248 30248 Thorium 230 Th-230 -30249 30249 Thorium 231 Th-231 -30250 30250 Thorium 232 Th-232 -30251 30251 Thorium 234 Th-234 -30252 30252 Protactinium 231 Pa-231 -30253 30253 Protactinium 233 Pa-233 -30254 30254 Protactinium 234 metastable Pa-234m -30255 30255 Uranium 232 U-232 -30256 30256 Uranium 233 U-233 -30257 30257 Uranium 234 U-234 -30258 30258 Uranium 235 U-235 -30259 30259 Uranium 236 U-236 -30260 30260 Uranium 237 U-237 -30261 30261 Uranium 238 U-238 -30262 30262 Plutonium 236 Pu-236 -30263 30263 Plutonium 238 Pu-238 -30264 30264 Plutonium 239 Pu-239 -30265 30265 Plutonium 240 Pu-240 -30266 30266 Plutonium 241 Pu-241 -30267 30267 Plutonium 242 Pu-242 -30268 30268 Plutonium 244 Pu-244 -30269 30269 Neptunium 237 Np-237 -30270 30270 Neptunium 238 Np-238 -30271 30271 Neptunium 239 Np-239 -30272 30272 Americium 241 Am-241 -30273 30273 Americium 242 Am-242 -30274 30274 Americium 242 metastable Am-242m -30275 30275 Americium 243 Am-243 -30276 30276 Curium 242 Cm-242 -30277 30277 Curium 243 Cm-243 -30278 30278 Curium 244 Cm-244 -30279 30279 Curium 245 Cm-245 -30280 30280 Curium 246 Cm-246 -30281 30281 Curium 247 Cm-247 -30282 30282 Curium 248 Cm-248 -30283 30283 Curium 243/244 Cm-243244 -30284 30284 Plutonium 238/Americium 241 Pu-238Am-241 -30285 30285 Plutonium 239/240 Pu-239240 -30286 30286 Berkelium 249 Bk-249 -30287 30287 Californium 249 Cf-249 -30288 30288 Californium 250 Cf-250 -30289 30289 Californium 252 Cf-252 -30290 30290 Sum aerosol particulates SumAer -30291 30291 Sum Iodine SumIod -30292 30292 Sum noble gas SumNG -30293 30293 Activation gas ActGas -30294 30294 Cs-137 Equivalent EquCs137 -#30295-59999 Reserved -60000 60000 HOx radical (OH+HO2) -60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2) -60002 60002 Passive Ozone -60003 60003 NOx expressed as nitrogen NOx -60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy -60005 60005 Total inorganic chlorine Clx -60006 60006 Total inorganic bromine Brx -60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx -60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx -60009 60009 Lumped alkanes -60010 60010 Lumped alkenes -60011 60011 Lumped aromatic compounds -60012 60012 Lumped terpenes -60013 60013 Non-methane volatile organic compounds expressed as carbon -60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon -60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon -60016 60016 Lumped oxygenated hydrocarbons -60017 60017 NOx expressed as nitrogen dioxide (NO2) -#60018-61999 Reserved -62000 62000 Total aerosol -62001 62001 Dust dry -62002 62002 Water in ambient -62003 62003 Ammonium dry -62004 62004 Nitrate dry -62005 62005 Nitric acid trihydrate -62006 62006 Sulphate dry -62007 62007 Mercury dry -62008 62008 Sea salt dry -62009 62009 Black carbon dry -62010 62010 Particulate organic matter dry -62011 62011 Primary particulate organic matter dry -62012 62012 Secondary particulate organic matter dry -62013 62013 Black carbon hydrophilic dry -62014 62014 Black carbon hydrophobic dry -62015 62015 Particulate organic matter hydrophilic dry -62016 62016 Particulate organic matter hydrophobic dry -62017 62017 Nitrate hydrophilic dry -62018 62018 Nitrate hydrophobic dry -#62019 Reserved -62020 62020 Smoke - high absorption -62021 62021 Smoke - low absorption -62022 62022 Aerosol - high absorption -62023 62023 Aerosol - low absorption -62025 62025 Volcanic ash -62026 62026 Particulate matter (PM) -# 62027-62099 Reserved -62100 62100 Alnus (Alder) pollen -62101 62101 Betula (Birch) pollen -62102 62102 Castanea (Chestnut) pollen -62103 62103 Carpinus (Hornbeam) pollen -62104 62104 Corylus (Hazel) pollen -62105 62105 Fagus (Beech) pollen -62106 62106 Fraxinus (Ash) pollen -62107 62107 Pinus (Pine) pollen -62108 62108 Platanus (Plane) pollen -62109 62109 Populus (Cottonwood, Poplar) pollen -62110 62110 Quercus (Oak) pollen -62111 62111 Salix (Willow) pollen -62112 62112 Taxus (Yew) pollen -62113 62113 Tilia (Lime, Linden) pollen -62114 62114 Ulmus (Elm) pollen -# 62115-62199 Reserved -62200 62200 Ambrosia (Ragweed, Burr-ragweed ) pollen -62201 62201 Artemisia (Sagebrush, Wormwood, Mugwort) pollen -62202 62202 Brassica (Rape, Broccoli, Brussels Sprouts, Cabbage, Cauliflower, Collards, Kale, Kohlrabi, Mustard, Rutabaga) pollen -62203 62203 Plantago (Plantain) pollen -62204 62204 Rumex (Dock, Sorrel) pollen -62205 62205 Urtica (Nettle) pollen -# 62206-62299 Reserved -62300 62300 Poaceae (Grass family) pollen -# 62301-65534 Reserved +# (See Common Code table C-14) 65535 65535 Missing diff --git a/definitions/grib2/tables/6/4.230.table b/definitions/grib2/tables/6/4.230.table index 7bcbe3043..0a81b2eb7 100644 --- a/definitions/grib2/tables/6/4.230.table +++ b/definitions/grib2/tables/6/4.230.table @@ -1,117 +1,3 @@ #Code figure Code figure Meaning -0 0 Ozone -1 1 Water vapour -2 2 Methane -3 3 Carbon dioxide -4 4 Carbon monoxide -5 5 Nitrogen dioxide -6 6 Nitrous oxide -7 7 Formaldehyde -8 8 Sulphur dioxide -9 9 Ammonia -10 10 Ammonium -11 11 Nitrogen monoxide -12 12 Atomic oxygen -13 13 Nitrate radical -14 14 Hydroperoxyl radical -15 15 Dinitrogen pentoxide -16 16 Nitrous acid -17 17 Nitric acid -18 18 Peroxynitric acid -19 19 Hydrogen peroxide -20 20 Molecular hydrogen -21 21 Atomic nitrogen -22 22 Sulphate -23 23 Radon -24 24 Elemental mercury -25 25 Divalent mercury -26 26 Atomic chlorine -27 27 Chlorine monoxide -28 28 Dichlorine peroxide -29 29 Hypochlorous acid -30 30 Chlorine nitrate -31 31 Chlorine dioxide -32 32 Atomic bromine -33 33 Bromine monoxide -34 34 Bromine chloride -35 35 Hydrogen bromide -36 36 Hypobromous acid -37 37 Bromine nitrate -10000 10000 Hydroxyl radical -10001 10001 Methyl peroxy radical -10002 10002 Methyl hydroperoxide -10004 10004 Methanol -10005 10005 Formic acid -10006 10006 Hydrogen Cyanide -10007 10007 Aceto nitrile -10008 10008 Ethane -10009 10009 Ethene (= Ethylene) -10010 10010 Ethyne (= Acetylene) -10011 10011 Ethanol -10012 10012 Acetic acid -10013 10013 Peroxyacetyl nitrate -10014 10014 Propane -10015 10015 Propene -10016 10016 Butanes -10017 10017 Isoprene -10018 10018 Alpha pinene -10019 10019 Beta pinene -10020 10020 Limonene -10021 10021 Benzene -10022 10022 Toluene -10023 10023 Xylene -#10024-10499 10024-10499 reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides,...) -10500 10500 Dimethyl sulphide -#10501-20000 10501-20000 Reserved -20001 20001 Hydrogen chloride -20002 20002 CFC-11 -20003 20003 CFC-12 -20004 20004 CFC-113 -20005 20005 CFC-113a -20006 20006 CFC-114 -20007 20007 CFC-115 -20008 20008 HCFC-22 -20009 20009 HCFC-141b -20010 20010 HCFC-142b -20011 20011 Halon-1202 -20012 20012 Halon-1211 -20013 20013 Halon-1301 -20014 20014 Halon-2402 -20015 20015 Methyl chloride (HCC-40) -20016 20016 Carbon tetrachloride (HCC-10) -20017 20017 HCC-140a -20018 20018 Methyl bromide (HBC-40B1) -20019 20019 Hexachlorocyclohexane (HCH) -20020 20020 Alpha hexachlorocyclohexane -20021 20021 Hexachlorobiphenyl (PCB-153) -60000 60000 HOx radical (OH+HO2) -60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2) -60002 60002 Passive Ozone -60003 60003 NOx expressed as nitrogen -60004 60004 All nitrogen oxides (NOy) expressed as nitrogen -60005 60005 Total inorganic chlorine -60006 60006 Total inorganic bromine -60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx -60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx -60009 60009 Lumped Alkanes -60010 60010 Lumped Alkenes -60011 60011 Lumped Aromatic Compounds -60012 60012 Lumped Terpenes -60013 60013 Non-methane volatile organic compounds expressed as carbon -60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon -60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon -60016 60016 Lumped oxygenated hydrocarbons -62000 62000 Total aerosol -62001 62001 Dust dry -62002 62002 Water in ambient -62003 62003 Ammonium dry -62004 62004 Nitrate dry -62005 62005 Nitric acid trihydrate -62006 62006 Sulphate dry -62007 62007 Mercury dry -62008 62008 Sea salt dry -62009 62009 Black carbon dry -62010 62010 Particulate organic matter dry -62011 62011 Primary particulate organic matter dry -62012 62012 Secondary particulate organic matter dry +# (See Common Code table C-14) 65535 65535 Missing diff --git a/definitions/grib2/tables/7/4.230.table b/definitions/grib2/tables/7/4.230.table index 7bcbe3043..0a81b2eb7 100644 --- a/definitions/grib2/tables/7/4.230.table +++ b/definitions/grib2/tables/7/4.230.table @@ -1,117 +1,3 @@ #Code figure Code figure Meaning -0 0 Ozone -1 1 Water vapour -2 2 Methane -3 3 Carbon dioxide -4 4 Carbon monoxide -5 5 Nitrogen dioxide -6 6 Nitrous oxide -7 7 Formaldehyde -8 8 Sulphur dioxide -9 9 Ammonia -10 10 Ammonium -11 11 Nitrogen monoxide -12 12 Atomic oxygen -13 13 Nitrate radical -14 14 Hydroperoxyl radical -15 15 Dinitrogen pentoxide -16 16 Nitrous acid -17 17 Nitric acid -18 18 Peroxynitric acid -19 19 Hydrogen peroxide -20 20 Molecular hydrogen -21 21 Atomic nitrogen -22 22 Sulphate -23 23 Radon -24 24 Elemental mercury -25 25 Divalent mercury -26 26 Atomic chlorine -27 27 Chlorine monoxide -28 28 Dichlorine peroxide -29 29 Hypochlorous acid -30 30 Chlorine nitrate -31 31 Chlorine dioxide -32 32 Atomic bromine -33 33 Bromine monoxide -34 34 Bromine chloride -35 35 Hydrogen bromide -36 36 Hypobromous acid -37 37 Bromine nitrate -10000 10000 Hydroxyl radical -10001 10001 Methyl peroxy radical -10002 10002 Methyl hydroperoxide -10004 10004 Methanol -10005 10005 Formic acid -10006 10006 Hydrogen Cyanide -10007 10007 Aceto nitrile -10008 10008 Ethane -10009 10009 Ethene (= Ethylene) -10010 10010 Ethyne (= Acetylene) -10011 10011 Ethanol -10012 10012 Acetic acid -10013 10013 Peroxyacetyl nitrate -10014 10014 Propane -10015 10015 Propene -10016 10016 Butanes -10017 10017 Isoprene -10018 10018 Alpha pinene -10019 10019 Beta pinene -10020 10020 Limonene -10021 10021 Benzene -10022 10022 Toluene -10023 10023 Xylene -#10024-10499 10024-10499 reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides,...) -10500 10500 Dimethyl sulphide -#10501-20000 10501-20000 Reserved -20001 20001 Hydrogen chloride -20002 20002 CFC-11 -20003 20003 CFC-12 -20004 20004 CFC-113 -20005 20005 CFC-113a -20006 20006 CFC-114 -20007 20007 CFC-115 -20008 20008 HCFC-22 -20009 20009 HCFC-141b -20010 20010 HCFC-142b -20011 20011 Halon-1202 -20012 20012 Halon-1211 -20013 20013 Halon-1301 -20014 20014 Halon-2402 -20015 20015 Methyl chloride (HCC-40) -20016 20016 Carbon tetrachloride (HCC-10) -20017 20017 HCC-140a -20018 20018 Methyl bromide (HBC-40B1) -20019 20019 Hexachlorocyclohexane (HCH) -20020 20020 Alpha hexachlorocyclohexane -20021 20021 Hexachlorobiphenyl (PCB-153) -60000 60000 HOx radical (OH+HO2) -60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2) -60002 60002 Passive Ozone -60003 60003 NOx expressed as nitrogen -60004 60004 All nitrogen oxides (NOy) expressed as nitrogen -60005 60005 Total inorganic chlorine -60006 60006 Total inorganic bromine -60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx -60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx -60009 60009 Lumped Alkanes -60010 60010 Lumped Alkenes -60011 60011 Lumped Aromatic Compounds -60012 60012 Lumped Terpenes -60013 60013 Non-methane volatile organic compounds expressed as carbon -60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon -60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon -60016 60016 Lumped oxygenated hydrocarbons -62000 62000 Total aerosol -62001 62001 Dust dry -62002 62002 Water in ambient -62003 62003 Ammonium dry -62004 62004 Nitrate dry -62005 62005 Nitric acid trihydrate -62006 62006 Sulphate dry -62007 62007 Mercury dry -62008 62008 Sea salt dry -62009 62009 Black carbon dry -62010 62010 Particulate organic matter dry -62011 62011 Primary particulate organic matter dry -62012 62012 Secondary particulate organic matter dry +# (See Common Code table C-14) 65535 65535 Missing diff --git a/definitions/grib2/tables/8/4.230.table b/definitions/grib2/tables/8/4.230.table index afd1ab8db..c5e8f2b40 100644 --- a/definitions/grib2/tables/8/4.230.table +++ b/definitions/grib2/tables/8/4.230.table @@ -1,415 +1,3 @@ # Automatically generated by ./create_tables.pl from database fm92_grib2@grib-param-db-prod.ecmwf.int, do not edit -0 0 Ozone -1 1 Water vapour -2 2 Methane -3 3 Carbon dioxide -4 4 Carbon monoxide -5 5 Nitrogen dioxide -6 6 Nitrous oxide -7 7 Formaldehyde -8 8 Sulphur dioxide -9 9 Ammonia -10 10 Ammonium -11 11 Nitrogen monoxide -12 12 Atomic oxygen -13 13 Nitrate radical -14 14 Hydroperoxyl radical -15 15 Dinitrogen pentoxide -16 16 Nitrous acid -17 17 Nitric acid -18 18 Peroxynitric acid -19 19 Hydrogen peroxide -20 20 Molecular hydrogen -21 21 Atomic nitrogen -22 22 Sulphate -23 23 Radon -24 24 Elemental mercury -25 25 Divalent mercury -26 26 Atomic chlorine -27 27 Chlorine monoxide -28 28 Dichlorine peroxide -29 29 Hypochlorous acid -30 30 Chlorine nitrate -31 31 Chlorine dioxide -32 32 Atomic bromine -33 33 Bromine monoxide -34 34 Bromine chloride -35 35 Hydrogen bromide -36 36 Hypobromous acid -37 37 Bromine nitrate -#38-9999 Reserved -10000 10000 Hydroxyl radical -10001 10001 Methyl peroxy radical -10002 10002 Methyl hydroperoxide -10004 10004 Methanol -10005 10005 Formic acid -10006 10006 Hydrogen Cyanide -10007 10007 Aceto nitrile -10008 10008 Ethane -10009 10009 Ethene (= Ethylene) -10010 10010 Ethyne (= Acetylene) -10011 10011 Ethanol -10012 10012 Acetic acid -10013 10013 Peroxyacetyl nitrate -10014 10014 Propane -10015 10015 Propene -10016 10016 Butanes -10017 10017 Isoprene -10018 10018 Alpha pinene -10019 10019 Beta pinene -10020 10020 Limonene -10021 10021 Benzene -10022 10022 Toluene -10023 10023 Xylene -#10024-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides...) -10500 10500 Dimethyl sulphide -#10501-20000 Reserved -20001 20001 Hydrogen chloride -20002 20002 CFC-11 -20003 20003 CFC-12 -20004 20004 CFC-113 -20005 20005 CFC-113a -20006 20006 CFC-114 -20007 20007 CFC-115 -20008 20008 HCFC-22 -20009 20009 HCFC-141b -20010 20010 HCFC-142b -20011 20011 Halon-1202 -20012 20012 Halon-1211 -20013 20013 Halon-1301 -20014 20014 Halon-2402 -20015 20015 Methyl chloride (HCC-40) -20016 20016 Carbon tetrachloride (HCC-10) -20017 20017 HCC-140a -20018 20018 Methyl bromide (HBC-40B1) -20019 20019 Hexachlorocyclohexane (HCH) -20020 20020 Alpha hexachlorocyclohexane -20021 20021 Hexachlorobiphenyl (PCB-153) -#20022-29999 Reserved -30000 30000 Radioactive pollutant (tracer, defined by originating centre) -#30001-30009 Reserved -30010 30010 Hydrogen H-3 -30011 30011 Hydrogen organic bounded H-3o -30012 30012 Hydrogen inorganic H-3a -30013 30013 Beryllium 7 Be-7 -30014 30014 Beryllium 10 Be-10 -30015 30015 Carbon 14 C-14 -30016 30016 Carbon 14 CO2 C-14CO2 -30017 30017 Carbon 14 other gases C-14og -30018 30018 Nitrogen 13 N-13 -30019 30019 Nitrogen 16 N-16 -30020 30020 Fluorine 18 F-18 -30021 30021 Sodium 22 Na-22 -30022 30022 Phosphate 32 P-32 -30023 30023 Phosphate 33 P-33 -30024 30024 Sulfur 35 S-35 -30025 30025 Chlorine 36 Cl-36 -30026 30026 Potassium 40 K-40 -30027 30027 Argon 41 Ar-41 -30028 30028 Calcium 41 Ca-41 -30029 30029 Calcium 45 Ca-45 -30030 30030 Titanium 44 -30031 30031 Scandium 46 Sc-46 -30032 30032 Vanadium 48 V-48 -30033 30033 Vanadium 49 V-49 -30034 30034 Chrome 51 Cr-51 -30035 30035 Manganese 52 Mn-52 -30036 30036 Manganese 54 Mn-54 -30037 30037 Iron 55 Fe-55 -30038 30038 Iron 59 Fe-59 -30039 30039 Cobalt 56 Co-56 -30040 30040 Cobalt 57 Co-57 -30041 30041 Cobalt 58 Co-58 -30042 30042 Cobalt 60 Co-60 -30043 30043 Nickel 59 Ni-59 -30044 30044 Nickel 63 Ni-63 -30045 30045 Zinc 65 Zn-65 -30046 30046 Gallium 67 Ga-67 -30047 30047 Gallium 68 Ga-68 -30048 30048 Germanium 68 Ge-68 -30049 30049 Germanium 69 Ge-69 -30050 30050 Arsenic 73 As-73 -30051 30051 Selenium 75 Se-75 -30052 30052 Selenium 79 Se-79 -30053 30053 Rubidium 81 Rb-81 -30054 30054 Rubidium 83 Rb-83 -30055 30055 Rubidium 84 Rb-84 -30056 30056 Rubidium 86 Rb-86 -30057 30057 Rubidium 87 Rb-87 -30058 30058 Rubidium 88 Rb-88 -30059 30059 Krypton 85 Kr-85 -30060 30060 Krypton 85 metastable Kr-85m -30061 30061 Krypton 87 Kr-87 -30062 30062 Krypton 88 Kr-88 -30063 30063 Krypton 89 Kr-89 -30064 30064 Strontium 85 Sr-85 -30065 30065 Strontium 89 Sr-89 -30066 30066 Strontium 89/90 Sr-8990 -30067 30067 Strontium 90 Sr-90 -30068 30068 Strontium 91 Sr-91 -30069 30069 Strontium 92 Sr-92 -30070 30070 Yttrium 87 Y-87 -30071 30071 Yttrium 88 Y-88 -30072 30072 Yttrium 90 Y-90 -30073 30073 Yttrium 91 Y-91 -30074 30074 Yttrium 91 metastable Y-91m -30075 30075 Yttrium 92 Y-92 -30076 30076 Yttrium 93 Y-93 -30077 30077 Zirconium 89 Zr-89 -30078 30078 Zirconium 93 Zr-93 -30079 30079 Zirconium 95 Zr-95 -30080 30080 Zirconium 97 Zr-97 -30081 30081 Niobium 93 metastable Nb-93m -30082 30082 Niobium 94 Nb-94 -30083 30083 Niobium 95 Nb-95 -30084 30084 Niobium 95 metastable Nb-95m -30085 30085 Niobium 97 Nb-97 -30086 30086 Niobium 97 metastable Nb-97m -30087 30087 Molybdenum 93 Mo-93 -30088 30088 Molybdenum 99 Mo-99 -30089 30089 Technetium 95 metastable Tc-95m -30090 30090 Technetium 96 Tc-96 -30091 30091 Technetium 99 Tc-99 -30092 30092 Technetium 99 metastable Tc-99m -30093 30093 Rhodium 99 Rh-99 -30094 30094 Rhodium 101 Rh-101 -30095 30095 Rhodium 102 metastable Rh-102m -30096 30096 Rhodium 103 metastable Rh-103m -30097 30097 Rhodium 105 Rh-105 -30098 30098 Rhodium 106 Rh-106 -30099 30099 Palladium 100 Pd-100 -30100 30100 Palladium 103 Pd-103 -30101 30101 Palladium 107 Pd-107 -30102 30102 Ruthenium 103 Ru-103 -30103 30103 Ruthenium 105 Ru-105 -30104 30104 Ruthenium 106 Ru-106 -30105 30105 Silver 108 metastable Ag-108m -30106 30106 Silver 110 metastable Ag-110m -30107 30107 Cadmium 109 Cd-109 -30108 30108 Cadmium 113 metastable Cd-113m -30109 30109 Cadmium 115 metastable Cd-115m -30110 30110 Indium 114 metastable In-114m -30111 30111 Tin 113 Sn-113 -30112 30112 Tin 119 metastable Sn-119m -30113 30113 Tin 121 metastable Sn-121m -30114 30114 Tin 122 Sn-122 -30115 30115 Tin 123 Sn-123 -30116 30116 Tin 126 Sn-126 -30117 30117 Antimony 124 Sb-124 -30118 30118 Antimony 125 Sb-125 -30119 30119 Antimony 126 Sb-126 -30120 30120 Antimony 127 Sb-127 -30121 30121 Antimony 129 Sb-129 -30122 30122 Tellurium 123 metastable Te-123m -30123 30123 Tellurium 125 metastable Te-125m -30124 30124 Tellurium 127 Te-127 -30125 30125 Tellurium 127 metastable Te-127m -30126 30126 Tellurium 129 Te-129 -30127 30127 Tellurium 129 metastable Te-129m -30128 30128 Tellurium 131 metastable Te-131m -30129 30129 Tellurium 132 Te-132 -30130 30130 Iodine 123 I-123 -30131 30131 Iodine 124 I-124 -30132 30132 Iodine 125 I-125 -30133 30133 Iodine 126 I-126 -30134 30134 Iodine 129 I-129 -30135 30135 Iodine 129 elementary gaseous I-129g -30136 30136 Iodine 129 organic bounded I-129o -30137 30137 Iodine 131 I-131 -30138 30138 Iodine 131 elementary gaseous I-131g -30139 30139 Iodine 131 organic bounded I-131o -30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go -30141 30141 Iodine 131 aerosol I-131a -30142 30142 Iodine 132 I-132 -30143 30143 Iodine 132 elementary gaseous I-132g -30144 30144 Iodine 132 organic bounded I-132o -30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go -30146 30146 Iodine 132 aerosol I-132a -30147 30147 Iodine 133 I-133 -30148 30148 Iodine 133 elementary gaseous I-133g -30149 30149 Iodine 133 organic bounded I-133o -30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go -30151 30151 Iodine 133 aerosol I-133a -30152 30152 Iodine 134 I-134 -30153 30153 Iodine 134 elementary gaseous I-134g -30154 30154 Iodine 134 organic bounded I-134o -30155 30155 Iodine 135 I-135 -30156 30156 Iodine 135 elementary gaseous I-135g -30157 30157 Iodine 135 organic bounded I-135o -30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go -30159 30159 Iodine 135 aerosol I-135a -30160 30160 Xenon 131 metastable Xe-131m -30161 30161 Xenon 133 Xe-133 -30162 30162 Xenon 133 metastable Xe-133m -30163 30163 Xenon 135 Xe-135 -30164 30164 Xenon 135 metastable Xe-135m -30165 30165 Xenon 137 Xe-137 -30166 30166 Xenon 138 Xe-138 -30167 30167 Xenon sum of all Xenon isotopes Xe-sum -30168 30168 Caesium 131 Cs-131 -30169 30169 Caesium 134 Cs-134 -30170 30170 Caesium 135 Cs-135 -30171 30171 Caesium 136 Cs-136 -30172 30172 Caesium 137 Cs-137 -30173 30173 Barium 133 Ba-133 -30174 30174 Barium 137 metastable Ba-137m -30175 30175 Barium 140 Ba-140 -30176 30176 Cerium 139 Ce-139 -30177 30177 Cerium 141 Ce-141 -30178 30178 Cerium 143 Ce-143 -30179 30179 Cerium 144 Ce-144 -30180 30180 Lanthanum 140 La-140 -30181 30181 Lanthanum 141 La-141 -30182 30182 Praseodymium 143 Pr-143 -30183 30183 Praseodymium 144 Pr-144 -30184 30184 Praseodymium 144 metastable Pr-144m -30185 30185 Samarium 145 Sm-145 -30186 30186 Samarium 147 Sm-147 -30187 30187 Samarium 151 Sm-151 -30188 30188 Neodymium 147 Nd-147 -30189 30189 Promethium 146 Pm-146 -30190 30190 Promethium 147 Pm-147 -30191 30191 Promethium 151 Pm-151 -30192 30192 Europium 152 Eu-152 -30193 30193 Europium 154 Eu-154 -30194 30194 Europium 155 Eu-155 -30195 30195 Gadolinium 153 Gd-153 -30196 30196 Terbium 160 Tb-160 -30197 30197 Holmium 166 metastable Ho-166m -30198 30198 Thulium 170 Tm-170 -30199 30199 Ytterbium 169 Yb-169 -30200 30200 Hafnium 175 Hf-175 -30201 30201 Hafnium 181 Hf-181 -30202 30202 Tantalum 179 Ta-179 -30203 30203 Tantalum 182 Ta-182 -30204 30204 Rhenium 184 Re-184 -30205 30205 Iridium 192 Ir-192 -30206 30206 Mercury 203 Hg-203 -30207 30207 Thallium 204 Tl-204 -30208 30208 Thallium 207 Tl-207 -30209 30209 Thallium 208 Tl-208 -30210 30210 Thallium 209 Tl-209 -30211 30211 Bismuth 205 Bi-205 -30212 30212 Bismuth 207 Bi-207 -30213 30213 Bismuth 210 Bi-210 -30214 30214 Bismuth 211 Bi-211 -30215 30215 Bismuth 212 Bi-212 -30216 30216 Bismuth 213 Bi-213 -30217 30217 Bismuth 214 Bi-214 -30218 30218 Polonium 208 Po-208 -30219 30219 Polonium 210 Po-210 -30220 30220 Polonium 212 Po-212 -30221 30221 Polonium 213 Po-213 -30222 30222 Polonium 214 Po-214 -30223 30223 Polonium 215 Po-215 -30224 30224 Polonium 216 Po-216 -30225 30225 Polonium 218 Po-218 -30226 30226 Lead 209 Pb-209 -30227 30227 Lead 210 Pb-210 -30228 30228 Lead 211 Pb-211 -30229 30229 Lead 212 Pb-212 -30230 30230 Lead 214 Pb-214 -30231 30231 Astatine 217 At-217 -30232 30232 Radon 219 Rn-219 -30233 30233 Radon 220 Rn-220 -30234 30234 Radon 222 Rn-222 -30235 30235 Francium 221 Fr-221 -30236 30236 Francium 223 Fr-223 -30237 30237 Radium 223 Ra-223 -30238 30238 Radium 224 Ra-224 -30239 30239 Radium 225 Ra-225 -30240 30240 Radium 226 Ra-226 -30241 30241 Radium 228 Ra-228 -30242 30242 Actinium 225 Ac-225 -30243 30243 Actinium 227 Ac-227 -30244 30244 Actinium 228 Ac-228 -30245 30245 Thorium 227 Th-227 -30246 30246 Thorium 228 Th-228 -30247 30247 Thorium 229 Th-229 -30248 30248 Thorium 230 Th-230 -30249 30249 Thorium 231 Th-231 -30250 30250 Thorium 232 Th-232 -30251 30251 Thorium 234 Th-234 -30252 30252 Protactinium 231 Pa-231 -30253 30253 Protactinium 233 Pa-233 -30254 30254 Protactinium 234 metastable Pa-234m -30255 30255 Uranium 232 U-232 -30256 30256 Uranium 233 U-233 -30257 30257 Uranium 234 U-234 -30258 30258 Uranium 235 U-235 -30259 30259 Uranium 236 U-236 -30260 30260 Uranium 237 U-237 -30261 30261 Uranium 238 U-238 -30262 30262 Plutonium 236 Pu-236 -30263 30263 Plutonium 238 Pu-238 -30264 30264 Plutonium 239 Pu-239 -30265 30265 Plutonium 240 Pu-240 -30266 30266 Plutonium 241 Pu-241 -30267 30267 Plutonium 242 Pu-242 -30268 30268 Plutonium 244 Pu-244 -30269 30269 Neptunium 237 Np-237 -30270 30270 Neptunium 238 Np-238 -30271 30271 Neptunium 239 Np-239 -30272 30272 Americium 241 Am-241 -30273 30273 Americium 242 Am-242 -30274 30274 Americium 242 metastable Am-242m -30275 30275 Americium 243 Am-243 -30276 30276 Curium 242 Cm-242 -30277 30277 Curium 243 Cm-243 -30278 30278 Curium 244 Cm-244 -30279 30279 Curium 245 Cm-245 -30280 30280 Curium 246 Cm-246 -30281 30281 Curium 247 Cm-247 -30282 30282 Curium 248 Cm-248 -30283 30283 Curium 243/244 Cm-243244 -30284 30284 Plutonium 238/Americium 241 Pu-238Am-241 -30285 30285 Plutonium 239/240 Pu-239240 -30286 30286 Berkelium 249 Bk-249 -30287 30287 Californium 249 Cf-249 -30288 30288 Californium 250 Cf-250 -30289 30289 Californium 252 Cf-252 -30290 30290 Sum aerosol particulates SumAer -30291 30291 Sum Iodine SumIod -30292 30292 Sum noble gas SumNG -30293 30293 Activation gas ActGas -30294 30294 Cs-137 Equivalent EquCs137 -#30295-59999 Reserved -60000 60000 HOx radical (OH+HO2) -60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2) -60002 60002 Passive Ozone -60003 60003 NOx expressed as nitrogen NOx -60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy -60005 60005 Total inorganic chlorine Clx -60006 60006 Total inorganic bromine Brx -60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx -60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx -60009 60009 Lumped alkanes -60010 60010 Lumped alkenes -60011 60011 Lumped aromatic compounds -60012 60012 Lumped terpenes -60013 60013 Non-methane volatile organic compounds expressed as carbon -60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon -60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon -60016 60016 Lumped oxygenated hydrocarbons -#60017-61999 Reserved -62000 62000 Total aerosol -62001 62001 Dust dry -62002 62002 Water in ambient -62003 62003 Ammonium dry -62004 62004 Nitrate dry -62005 62005 Nitric acid trihydrate -62006 62006 Sulphate dry -62007 62007 Mercury dry -62008 62008 Sea salt dry -62009 62009 Black carbon dry -62010 62010 Particulate organic matter dry -62011 62011 Primary particulate organic matter dry -62012 62012 Secondary particulate organic matter dry -62013 62013 Black carbon hydrophilic dry -62014 62014 Black carbon hydrophobic dry -62015 62015 Particulate organic matter hydrophilic dry -62016 62016 Particulate organic matter hydrophobic dry -62017 62017 Nitrate hydrophilic dry -62018 62018 Nitrate hydrophobic dry -#62019-65534 Reserved +# (See Common Code table C-14) 65535 65535 Missing diff --git a/definitions/grib2/tables/8/4.233.table b/definitions/grib2/tables/8/4.233.table index 22f68d96b..c5e8f2b40 100644 --- a/definitions/grib2/tables/8/4.233.table +++ b/definitions/grib2/tables/8/4.233.table @@ -1,415 +1,3 @@ # Automatically generated by ./create_tables.pl from database fm92_grib2@grib-param-db-prod.ecmwf.int, do not edit -0 0 Ozone -1 1 Water vapour -2 2 Methane -3 3 Carbon dioxide -4 4 Carbon monoxide -5 5 Nitrogen dioxide -6 6 Nitrous oxide -7 7 Formaldehyde -8 8 Sulphur dioxide -9 9 Ammonia -10 10 Ammonium -11 11 Nitrogen monoxide -12 12 Atomic oxygen -13 13 Nitrate radical -14 14 Hydroperoxyl radical -15 15 Dinitrogen pentoxide -16 16 Nitrous acid -17 17 Nitric acid -18 18 Peroxynitric acid -19 19 Hydrogen peroxide -20 20 Molecular hydrogen -21 21 Atomic nitrogen -22 22 Sulphate -23 23 Radon -24 24 Elemental mercury -25 25 Divalent mercury -26 26 Atomic chlorine -27 27 Chlorine monoxide -28 28 Dichlorine peroxide -29 29 Hypochlorous acid -30 30 Chlorine nitrate -31 31 Chlorine dioxide -32 32 Atomic bromine -33 33 Bromine monoxide -34 34 Bromine chloride -35 35 Hydrogen bromide -36 36 Hypobromous acid -37 37 Bromine nitrate -#38-9999 Reserved -10000 10000 Hydroxyl radical -10001 10001 Methyl peroxy radical -10002 10002 Methyl hydroperoxide -10004 10004 Methanol -10005 10005 Formic acid -10006 10006 Hydrogen Cyanide -10007 10007 Aceto nitrile -10008 10008 Ethane -10009 10009 Ethene (= Ethylene) -10010 10010 Ethyne (= Acetylene) -10011 10011 Ethanol -10012 10012 Acetic acid -10013 10013 Peroxyacetyl nitrate -10014 10014 Propane -10015 10015 Propene -10016 10016 Butanes -10017 10017 Isoprene -10018 10018 Alpha pinene -10019 10019 Beta pinene -10020 10020 Limonene -10021 10021 Benzene -10022 10022 Toluene -10023 10023 Xylene -#10024-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides...) -10500 10500 Dimethyl sulphide -#10501-20000 Reserved -20001 20001 Hydrogen chloride -20002 20002 CFC-11 -20003 20003 CFC-12 -20004 20004 CFC-113 -20005 20005 CFC-113a -20006 20006 CFC-114 -20007 20007 CFC-115 -20008 20008 HCFC-22 -20009 20009 HCFC-141b -20010 20010 HCFC-142b -20011 20011 Halon-1202 -20012 20012 Halon-1211 -20013 20013 Halon-1301 -20014 20014 Halon-2402 -20015 20015 Methyl chloride (HCC-40) -20016 20016 Carbon tetrachloride (HCC-10) -20017 20017 HCC-140a -20018 20018 Methyl bromide (HBC-40B1) -20019 20019 Hexachlorocyclohexane (HCH) -20020 20020 Alpha hexachlorocyclohexane -20021 20021 Hexachlorobiphenyl (PCB-153) -#20022-29999 Reserved -30000 30000 Radioactive pollutant (tracer, defined by originating centre) -#30001-30009 Reserved -30010 30010 Hydrogen H-3 -30011 30011 Hydrogen organic bounded H-3o -30012 30012 Hydrogen inorganic H-3a -30013 30013 Beryllium 7 Be-7 -30014 30014 Beryllium 10 Be-10 -30015 30015 Carbon 14 C-14 -30016 30016 Carbon 14 CO2 C-14CO2 -30017 30017 Carbon 14 other gases C-14og -30018 30018 Nitrogen 13 N-13 -30019 30019 Nitrogen 16 N-16 -30020 30020 Fluorine 18 F-18 -30021 30021 Sodium 22 Na-22 -30022 30022 Phosphate 32 P-32 -30023 30023 Phosphate 33 P-33 -30024 30024 Sulfur 35 S-35 -30025 30025 Chlorine 36 Cl-36 -30026 30026 Potassium 40 K-40 -30027 30027 Argon 41 Ar-41 -30028 30028 Calcium 41 Ca-41 -30029 30029 Calcium 45 Ca-45 -30030 30030 Titanium 44 -30031 30031 Scandium 46 Sc-46 -30032 30032 Vanadium 48 V-48 -30033 30033 Vanadium 49 V-49 -30034 30034 Chrome 51 Cr-51 -30035 30035 Manganese 52 Mn-52 -30036 30036 Manganese 54 Mn-54 -30037 30037 Iron 55 Fe-55 -30038 30038 Iron 59 Fe-59 -30039 30039 Cobalt 56 Co-56 -30040 30040 Cobalt 57 Co-57 -30041 30041 Cobalt 58 Co-58 -30042 30042 Cobalt 60 Co-60 -30043 30043 Nickel 59 Ni-59 -30044 30044 Nickel 63 Ni-63 -30045 30045 Zinc 65 Zn-65 -30046 30046 Gallium 67 Ga-67 -30047 30047 Gallium 68 Ga-68 -30048 30048 Germanium 68 Ge-68 -30049 30049 Germanium 69 Ge-69 -30050 30050 Arsenic 73 As-73 -30051 30051 Selenium 75 Se-75 -30052 30052 Selenium 79 Se-79 -30053 30053 Rubidium 81 Rb-81 -30054 30054 Rubidium 83 Rb-83 -30055 30055 Rubidium 84 Rb-84 -30056 30056 Rubidium 86 Rb-86 -30057 30057 Rubidium 87 Rb-87 -30058 30058 Rubidium 88 Rb-88 -30059 30059 Krypton 85 Kr-85 -30060 30060 Krypton 85 metastable Kr-85m -30061 30061 Krypton 87 Kr-87 -30062 30062 Krypton 88 Kr-88 -30063 30063 Krypton 89 Kr-89 -30064 30064 Strontium 85 Sr-85 -30065 30065 Strontium 89 Sr-89 -30066 30066 Strontium 89/90 Sr-8990 -30067 30067 Strontium 90 Sr-90 -30068 30068 Strontium 91 Sr-91 -30069 30069 Strontium 92 Sr-92 -30070 30070 Yttrium 87 Y-87 -30071 30071 Yttrium 88 Y-88 -30072 30072 Yttrium 90 Y-90 -30073 30073 Yttrium 91 Y-91 -30074 30074 Yttrium 91 metastable Y-91m -30075 30075 Yttrium 92 Y-92 -30076 30076 Yttrium 93 Y-93 -30077 30077 Zirconium 89 Zr-89 -30078 30078 Zirconium 93 Zr-93 -30079 30079 Zirconium 95 Zr-95 -30080 30080 Zirconium 97 Zr-97 -30081 30081 Niobium 93 metastable Nb-93m -30082 30082 Niobium 94 Nb-94 -30083 30083 Niobium 95 Nb-95 -30084 30084 Niobium 95 metastable Nb-95m -30085 30085 Niobium 97 Nb-97 -30086 30086 Niobium 97 metastable Nb-97m -30087 30087 Molybdenum 93 Mo-93 -30088 30088 Molybdenum 99 Mo-99 -30089 30089 Technetium 95 metastable Tc-95m -30090 30090 Technetium 96 Tc-96 -30091 30091 Technetium 99 Tc-99 -30092 30092 Technetium 99 metastable Tc-99m -30093 30093 Rhodium 99 Rh-99 -30094 30094 Rhodium 101 Rh-101 -30095 30095 Rhodium 102 metastable Rh-102m -30096 30096 Rhodium 103 metastable Rh-103m -30097 30097 Rhodium 105 Rh-105 -30098 30098 Rhodium 106 Rh-106 -30099 30099 Palladium 100 Pd-100 -30100 30100 Palladium 103 Pd-103 -30101 30101 Palladium 107 Pd-107 -30102 30102 Ruthenium 103 Ru-103 -30103 30103 Ruthenium 105 Ru-105 -30104 30104 Ruthenium 106 Ru-106 -30105 30105 Silver 108 metastable Ag-108m -30106 30106 Silver 110 metastable Ag-110m -30107 30107 Cadmium 109 Cd-109 -30108 30108 Cadmium 113 metastable Cd-113m -30109 30109 Cadmium 115 metastable Cd-115m -30110 30110 Indium 114 metastable In-114m -30111 30111 Tin 113 Sn-113 -30112 30112 Tin 119 metastable Sn-119m -30113 30113 Tin 121 metastable Sn-121m -30114 30114 Tin 122 Sn-122 -30115 30115 Tin 123 Sn-123 -30116 30116 Tin 126 Sn-126 -30117 30117 Antimony 124 Sb-124 -30118 30118 Antimony 125 Sb-125 -30119 30119 Antimony 126 Sb-126 -30120 30120 Antimony 127 Sb-127 -30121 30121 Antimony 129 Sb-129 -30122 30122 Tellurium 123 metastable Te-123m -30123 30123 Tellurium 125 metastable Te-125m -30124 30124 Tellurium 127 Te-127 -30125 30125 Tellurium 127 metastable Te-127m -30126 30126 Tellurium 129 Te-129 -30127 30127 Tellurium 129 metastable Te-129m -30128 30128 Tellurium 131 metastable Te-131m -30129 30129 Tellurium 132 Te-132 -30130 30130 Iodine 123 I-123 -30131 30131 Iodine 124 I-124 -30132 30132 Iodine 125 I-125 -30133 30133 Iodine 126 I-126 -30134 30134 Iodine 129 I-129 -30135 30135 Iodine 129 elementary gaseous I-129g -30136 30136 Iodine 129 organic bounded I-129o -30137 30137 Iodine 131 I-131 -30138 30138 Iodine 131 elementary gaseous I-131g -30139 30139 Iodine 131 organic bounded I-131o -30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go -30141 30141 Iodine 131 aerosol I-131a -30142 30142 Iodine 132 I-132 -30143 30143 Iodine 132 elementary gaseous I-132g -30144 30144 Iodine 132 organic bounded I-132o -30145 30145 Iodine 32 gaseous elementary and organic bounded I-132go -30146 30146 Iodine 132 aerosol I-132a -30147 30147 Iodine 133 I-133 -30148 30148 Iodine 133 elementary gaseous I-133g -30149 30149 Iodine 133 organic bounded I-133o -30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go -30151 30151 Iodine 133 aerosol I-133a -30152 30152 Iodine 134 I-134 -30153 30153 Iodine 134 elementary gaseous I-134g -30154 30154 Iodine 134 organic bounded I-134o -30155 30155 Iodine 135 I-135 -30156 30156 Iodine 135 elementary gaseous I-135g -30157 30157 Iodine 135 organic bounded I-135o -30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go -30159 30159 Iodine 135 aerosol I-135a -30160 30160 Xenon 131 metastable Xe-131m -30161 30161 Xenon 133 Xe-133 -30162 30162 Xenon 133 metastable Xe-133m -30163 30163 Xenon 135 Xe-135 -30164 30164 Xenon 135 metastable Xe-135m -30165 30165 Xenon 137 Xe-137 -30166 30166 Xenon 138 Xe-138 -30167 30167 Xenon sum of all Xenon isotopes Xe-sum -30168 30168 Caesium 131 Cs-131 -30169 30169 Caesium 134 Cs-134 -30170 30170 Caesium 135 Cs-135 -30171 30171 Caesium 136 Cs-136 -30172 30172 Caesium 137 Cs-137 -30173 30173 Barium 133 Ba-133 -30174 30174 Barium 137 metastable Ba-137m -30175 30175 Barium 140 Ba-140 -30176 30176 Cerium 139 Ce-139 -30177 30177 Cerium 141 Ce-141 -30178 30178 Cerium 143 Ce-143 -30179 30179 Cerium 144 Ce-144 -30180 30180 Lanthanum 140 La-140 -30181 30181 Lanthanum 141 La-141 -30182 30182 Praseodymium 143 Pr-143 -30183 30183 Praseodymium 144 Pr-144 -30184 30184 Praseodymium 144 metastable Pr-144m -30185 30185 Samarium 145 Sm-145 -30186 30186 Samarium 147 Sm-147 -30187 30187 Samarium 151 Sm-151 -30188 30188 Neodymium 147 Nd-147 -30189 30189 Promethium 146 Pm-146 -30190 30190 Promethium 147 Pm-147 -30191 30191 Promethium 151 Pm-151 -30192 30192 Europium 152 Eu-152 -30193 30193 Europium 154 Eu-154 -30194 30194 Europium 155 Eu-155 -30195 30195 Gadolinium 153 Gd-153 -30196 30196 Terbium 160 Tb-160 -30197 30197 Holmium 166 metastable Ho-166m -30198 30198 Thulium 170 Tm-170 -30199 30199 Ytterbium 169 Yb-169 -30200 30200 Hafnium 175 Hf-175 -30201 30201 Hafnium 181 Hf-181 -30202 30202 Tantalum 179 Ta-179 -30203 30203 Tantalum 182 Ta-182 -30204 30204 Rhenium 184 Re-184 -30205 30205 Iridium 192 Ir-192 -30206 30206 Mercury 203 Hg-203 -30207 30207 Thallium 204 Tl-204 -30208 30208 Thallium 207 Tl-207 -30209 30209 Thallium 208 Tl-208 -30210 30210 Thallium 209 Tl-209 -30211 30211 Bismuth 205 Bi-205 -30212 30212 Bismuth 207 Bi-207 -30213 30213 Bismuth 210 Bi-210 -30214 30214 Bismuth 211 Bi-211 -30215 30215 Bismuth 212 Bi-212 -30216 30216 Bismuth 213 Bi-213 -30217 30217 Bismuth 214 Bi-214 -30218 30218 Polonium 208 Po-208 -30219 30219 Polonium 210 Po-210 -30220 30220 Polonium 212 Po-212 -30221 30221 Polonium 213 Po-213 -30222 30222 Polonium 214 Po-214 -30223 30223 Polonium 215 Po-215 -30224 30224 Polonium 216 Po-216 -30225 30225 Polonium 218 Po-218 -30226 30226 Lead 209 Pb-209 -30227 30227 Lead 210 Pb-210 -30228 30228 Lead 211 Pb-211 -30229 30229 Lead 212 Pb-212 -30230 30230 Lead 214 Pb-214 -30231 30231 Astatine 217 At-217 -30232 30232 Radon 219 Rn-219 -30233 30233 Radon 220 Rn-220 -30234 30234 Radon 222 Rn-222 -30235 30235 Francium 221 Fr-221 -30236 30236 Francium 223 Fr-223 -30237 30237 Radium 223 Ra-223 -30238 30238 Radium 224 Ra-224 -30239 30239 Radium 225 Ra-225 -30240 30240 Radium 226 Ra-226 -30241 30241 Radium 228 Ra-228 -30242 30242 Actinium 225 Ac-225 -30243 30243 Actinium 227 Ac-227 -30244 30244 Actinium 228 Ac-228 -30245 30245 Thorium 227 Th-227 -30246 30246 Thorium 228 Th-228 -30247 30247 Thorium 229 Th-229 -30248 30248 Thorium 230 Th-230 -30249 30249 Thorium 231 Th-231 -30250 30250 Thorium 232 Th-232 -30251 30251 Thorium 234 Th-234 -30252 30252 Protactinium 231 Pa-231 -30253 30253 Protactinium 233 Pa-233 -30254 30254 Protactinium 234 metastable Pa-234m -30255 30255 Uranium 232 U-232 -30256 30256 Uranium 233 U-233 -30257 30257 Uranium 234 U-234 -30258 30258 Uranium 235 U-235 -30259 30259 Uranium 236 U-236 -30260 30260 Uranium 237 U-237 -30261 30261 Uranium 238 U-238 -30262 30262 Plutonium 236 Pu-236 -30263 30263 Plutonium 238 Pu-238 -30264 30264 Plutonium 239 Pu-239 -30265 30265 Plutonium 240 Pu-240 -30266 30266 Plutonium 241 Pu-241 -30267 30267 Plutonium 242 Pu-242 -30268 30268 Plutonium 244 Pu-244 -30269 30269 Neptunium 237 Np-237 -30270 30270 Neptunium 238 Np-238 -30271 30271 Neptunium 239 Np-239 -30272 30272 Americium 241 Am-241 -30273 30273 Americium 242 Am-242 -30274 30274 Americium 242 metastable Am-242m -30275 30275 Americium 243 Am-243 -30276 30276 Curium 242 Cm-242 -30277 30277 Curium 243 Cm-243 -30278 30278 Curium 244 Cm-244 -30279 30279 Curium 245 Cm-245 -30280 30280 Curium 246 Cm-246 -30281 30281 Curium 247 Cm-247 -30282 30282 Curium 248 Cm-248 -30283 30283 Curium 243/244 Cm-243244 -30284 30284 Plutonium 238/Americium 241 Pu-238Am-241 -30285 30285 Plutonium 239/240 Pu-239240 -30286 30286 Berkelium 249 Bk-249 -30287 30287 Californium 249 Cf-249 -30288 30288 Californium 250 Cf-250 -30289 30289 Californium 252 Cf-252 -30290 30290 Sum aerosol particulates SumAer -30291 30291 Sum Iodine SumIod -30292 30292 Sum noble gas SumNG -30293 30293 Activation gas ActGas -30294 30294 Cs-137 Equivalent EquCs137 -#30295-59999 Reserved -60000 60000 HOx radical (OH+HO2) -60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2) -60002 60002 Passive Ozone -60003 60003 NOx expressed as nitrogen NOx -60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy -60005 60005 Total inorganic chlorine Clx -60006 60006 Total inorganic bromine Brx -60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx -60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx -60009 60009 Lumped alkanes -60010 60010 Lumped alkenes -60011 60011 Lumped aromatic compounds -60012 60012 Lumped terpenes -60013 60013 Non-methane volatile organic compounds expressed as carbon -60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon -60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon -60016 60016 Lumped oxygenated hydrocarbons -#60017-61999 Reserved -62000 62000 Total aerosol -62001 62001 Dust dry -62002 62002 Water in ambient -62003 62003 Ammonium dry -62004 62004 Nitrate dry -62005 62005 Nitric acid trihydrate -62006 62006 Sulphate dry -62007 62007 Mercury dry -62008 62008 Sea salt dry -62009 62009 Black carbon dry -62010 62010 Particulate organic matter dry -62011 62011 Primary particulate organic matter dry -62012 62012 Secondary particulate organic matter dry -62013 62013 Black carbon hydrophilic dry -62014 62014 Black carbon hydrophobic dry -62015 62015 Particulate organic matter hydrophilic dry -62016 62016 Particulate organic matter hydrophobic dry -62017 62017 Nitrate hydrophilic dry -62018 62018 Nitrate hydrophobic dry -#62019-65534 Reserved +# (See Common Code table C-14) 65535 65535 Missing diff --git a/definitions/grib2/tables/9/4.230.table b/definitions/grib2/tables/9/4.230.table index afd1ab8db..c5e8f2b40 100644 --- a/definitions/grib2/tables/9/4.230.table +++ b/definitions/grib2/tables/9/4.230.table @@ -1,415 +1,3 @@ # Automatically generated by ./create_tables.pl from database fm92_grib2@grib-param-db-prod.ecmwf.int, do not edit -0 0 Ozone -1 1 Water vapour -2 2 Methane -3 3 Carbon dioxide -4 4 Carbon monoxide -5 5 Nitrogen dioxide -6 6 Nitrous oxide -7 7 Formaldehyde -8 8 Sulphur dioxide -9 9 Ammonia -10 10 Ammonium -11 11 Nitrogen monoxide -12 12 Atomic oxygen -13 13 Nitrate radical -14 14 Hydroperoxyl radical -15 15 Dinitrogen pentoxide -16 16 Nitrous acid -17 17 Nitric acid -18 18 Peroxynitric acid -19 19 Hydrogen peroxide -20 20 Molecular hydrogen -21 21 Atomic nitrogen -22 22 Sulphate -23 23 Radon -24 24 Elemental mercury -25 25 Divalent mercury -26 26 Atomic chlorine -27 27 Chlorine monoxide -28 28 Dichlorine peroxide -29 29 Hypochlorous acid -30 30 Chlorine nitrate -31 31 Chlorine dioxide -32 32 Atomic bromine -33 33 Bromine monoxide -34 34 Bromine chloride -35 35 Hydrogen bromide -36 36 Hypobromous acid -37 37 Bromine nitrate -#38-9999 Reserved -10000 10000 Hydroxyl radical -10001 10001 Methyl peroxy radical -10002 10002 Methyl hydroperoxide -10004 10004 Methanol -10005 10005 Formic acid -10006 10006 Hydrogen Cyanide -10007 10007 Aceto nitrile -10008 10008 Ethane -10009 10009 Ethene (= Ethylene) -10010 10010 Ethyne (= Acetylene) -10011 10011 Ethanol -10012 10012 Acetic acid -10013 10013 Peroxyacetyl nitrate -10014 10014 Propane -10015 10015 Propene -10016 10016 Butanes -10017 10017 Isoprene -10018 10018 Alpha pinene -10019 10019 Beta pinene -10020 10020 Limonene -10021 10021 Benzene -10022 10022 Toluene -10023 10023 Xylene -#10024-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides...) -10500 10500 Dimethyl sulphide -#10501-20000 Reserved -20001 20001 Hydrogen chloride -20002 20002 CFC-11 -20003 20003 CFC-12 -20004 20004 CFC-113 -20005 20005 CFC-113a -20006 20006 CFC-114 -20007 20007 CFC-115 -20008 20008 HCFC-22 -20009 20009 HCFC-141b -20010 20010 HCFC-142b -20011 20011 Halon-1202 -20012 20012 Halon-1211 -20013 20013 Halon-1301 -20014 20014 Halon-2402 -20015 20015 Methyl chloride (HCC-40) -20016 20016 Carbon tetrachloride (HCC-10) -20017 20017 HCC-140a -20018 20018 Methyl bromide (HBC-40B1) -20019 20019 Hexachlorocyclohexane (HCH) -20020 20020 Alpha hexachlorocyclohexane -20021 20021 Hexachlorobiphenyl (PCB-153) -#20022-29999 Reserved -30000 30000 Radioactive pollutant (tracer, defined by originating centre) -#30001-30009 Reserved -30010 30010 Hydrogen H-3 -30011 30011 Hydrogen organic bounded H-3o -30012 30012 Hydrogen inorganic H-3a -30013 30013 Beryllium 7 Be-7 -30014 30014 Beryllium 10 Be-10 -30015 30015 Carbon 14 C-14 -30016 30016 Carbon 14 CO2 C-14CO2 -30017 30017 Carbon 14 other gases C-14og -30018 30018 Nitrogen 13 N-13 -30019 30019 Nitrogen 16 N-16 -30020 30020 Fluorine 18 F-18 -30021 30021 Sodium 22 Na-22 -30022 30022 Phosphate 32 P-32 -30023 30023 Phosphate 33 P-33 -30024 30024 Sulfur 35 S-35 -30025 30025 Chlorine 36 Cl-36 -30026 30026 Potassium 40 K-40 -30027 30027 Argon 41 Ar-41 -30028 30028 Calcium 41 Ca-41 -30029 30029 Calcium 45 Ca-45 -30030 30030 Titanium 44 -30031 30031 Scandium 46 Sc-46 -30032 30032 Vanadium 48 V-48 -30033 30033 Vanadium 49 V-49 -30034 30034 Chrome 51 Cr-51 -30035 30035 Manganese 52 Mn-52 -30036 30036 Manganese 54 Mn-54 -30037 30037 Iron 55 Fe-55 -30038 30038 Iron 59 Fe-59 -30039 30039 Cobalt 56 Co-56 -30040 30040 Cobalt 57 Co-57 -30041 30041 Cobalt 58 Co-58 -30042 30042 Cobalt 60 Co-60 -30043 30043 Nickel 59 Ni-59 -30044 30044 Nickel 63 Ni-63 -30045 30045 Zinc 65 Zn-65 -30046 30046 Gallium 67 Ga-67 -30047 30047 Gallium 68 Ga-68 -30048 30048 Germanium 68 Ge-68 -30049 30049 Germanium 69 Ge-69 -30050 30050 Arsenic 73 As-73 -30051 30051 Selenium 75 Se-75 -30052 30052 Selenium 79 Se-79 -30053 30053 Rubidium 81 Rb-81 -30054 30054 Rubidium 83 Rb-83 -30055 30055 Rubidium 84 Rb-84 -30056 30056 Rubidium 86 Rb-86 -30057 30057 Rubidium 87 Rb-87 -30058 30058 Rubidium 88 Rb-88 -30059 30059 Krypton 85 Kr-85 -30060 30060 Krypton 85 metastable Kr-85m -30061 30061 Krypton 87 Kr-87 -30062 30062 Krypton 88 Kr-88 -30063 30063 Krypton 89 Kr-89 -30064 30064 Strontium 85 Sr-85 -30065 30065 Strontium 89 Sr-89 -30066 30066 Strontium 89/90 Sr-8990 -30067 30067 Strontium 90 Sr-90 -30068 30068 Strontium 91 Sr-91 -30069 30069 Strontium 92 Sr-92 -30070 30070 Yttrium 87 Y-87 -30071 30071 Yttrium 88 Y-88 -30072 30072 Yttrium 90 Y-90 -30073 30073 Yttrium 91 Y-91 -30074 30074 Yttrium 91 metastable Y-91m -30075 30075 Yttrium 92 Y-92 -30076 30076 Yttrium 93 Y-93 -30077 30077 Zirconium 89 Zr-89 -30078 30078 Zirconium 93 Zr-93 -30079 30079 Zirconium 95 Zr-95 -30080 30080 Zirconium 97 Zr-97 -30081 30081 Niobium 93 metastable Nb-93m -30082 30082 Niobium 94 Nb-94 -30083 30083 Niobium 95 Nb-95 -30084 30084 Niobium 95 metastable Nb-95m -30085 30085 Niobium 97 Nb-97 -30086 30086 Niobium 97 metastable Nb-97m -30087 30087 Molybdenum 93 Mo-93 -30088 30088 Molybdenum 99 Mo-99 -30089 30089 Technetium 95 metastable Tc-95m -30090 30090 Technetium 96 Tc-96 -30091 30091 Technetium 99 Tc-99 -30092 30092 Technetium 99 metastable Tc-99m -30093 30093 Rhodium 99 Rh-99 -30094 30094 Rhodium 101 Rh-101 -30095 30095 Rhodium 102 metastable Rh-102m -30096 30096 Rhodium 103 metastable Rh-103m -30097 30097 Rhodium 105 Rh-105 -30098 30098 Rhodium 106 Rh-106 -30099 30099 Palladium 100 Pd-100 -30100 30100 Palladium 103 Pd-103 -30101 30101 Palladium 107 Pd-107 -30102 30102 Ruthenium 103 Ru-103 -30103 30103 Ruthenium 105 Ru-105 -30104 30104 Ruthenium 106 Ru-106 -30105 30105 Silver 108 metastable Ag-108m -30106 30106 Silver 110 metastable Ag-110m -30107 30107 Cadmium 109 Cd-109 -30108 30108 Cadmium 113 metastable Cd-113m -30109 30109 Cadmium 115 metastable Cd-115m -30110 30110 Indium 114 metastable In-114m -30111 30111 Tin 113 Sn-113 -30112 30112 Tin 119 metastable Sn-119m -30113 30113 Tin 121 metastable Sn-121m -30114 30114 Tin 122 Sn-122 -30115 30115 Tin 123 Sn-123 -30116 30116 Tin 126 Sn-126 -30117 30117 Antimony 124 Sb-124 -30118 30118 Antimony 125 Sb-125 -30119 30119 Antimony 126 Sb-126 -30120 30120 Antimony 127 Sb-127 -30121 30121 Antimony 129 Sb-129 -30122 30122 Tellurium 123 metastable Te-123m -30123 30123 Tellurium 125 metastable Te-125m -30124 30124 Tellurium 127 Te-127 -30125 30125 Tellurium 127 metastable Te-127m -30126 30126 Tellurium 129 Te-129 -30127 30127 Tellurium 129 metastable Te-129m -30128 30128 Tellurium 131 metastable Te-131m -30129 30129 Tellurium 132 Te-132 -30130 30130 Iodine 123 I-123 -30131 30131 Iodine 124 I-124 -30132 30132 Iodine 125 I-125 -30133 30133 Iodine 126 I-126 -30134 30134 Iodine 129 I-129 -30135 30135 Iodine 129 elementary gaseous I-129g -30136 30136 Iodine 129 organic bounded I-129o -30137 30137 Iodine 131 I-131 -30138 30138 Iodine 131 elementary gaseous I-131g -30139 30139 Iodine 131 organic bounded I-131o -30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go -30141 30141 Iodine 131 aerosol I-131a -30142 30142 Iodine 132 I-132 -30143 30143 Iodine 132 elementary gaseous I-132g -30144 30144 Iodine 132 organic bounded I-132o -30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go -30146 30146 Iodine 132 aerosol I-132a -30147 30147 Iodine 133 I-133 -30148 30148 Iodine 133 elementary gaseous I-133g -30149 30149 Iodine 133 organic bounded I-133o -30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go -30151 30151 Iodine 133 aerosol I-133a -30152 30152 Iodine 134 I-134 -30153 30153 Iodine 134 elementary gaseous I-134g -30154 30154 Iodine 134 organic bounded I-134o -30155 30155 Iodine 135 I-135 -30156 30156 Iodine 135 elementary gaseous I-135g -30157 30157 Iodine 135 organic bounded I-135o -30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go -30159 30159 Iodine 135 aerosol I-135a -30160 30160 Xenon 131 metastable Xe-131m -30161 30161 Xenon 133 Xe-133 -30162 30162 Xenon 133 metastable Xe-133m -30163 30163 Xenon 135 Xe-135 -30164 30164 Xenon 135 metastable Xe-135m -30165 30165 Xenon 137 Xe-137 -30166 30166 Xenon 138 Xe-138 -30167 30167 Xenon sum of all Xenon isotopes Xe-sum -30168 30168 Caesium 131 Cs-131 -30169 30169 Caesium 134 Cs-134 -30170 30170 Caesium 135 Cs-135 -30171 30171 Caesium 136 Cs-136 -30172 30172 Caesium 137 Cs-137 -30173 30173 Barium 133 Ba-133 -30174 30174 Barium 137 metastable Ba-137m -30175 30175 Barium 140 Ba-140 -30176 30176 Cerium 139 Ce-139 -30177 30177 Cerium 141 Ce-141 -30178 30178 Cerium 143 Ce-143 -30179 30179 Cerium 144 Ce-144 -30180 30180 Lanthanum 140 La-140 -30181 30181 Lanthanum 141 La-141 -30182 30182 Praseodymium 143 Pr-143 -30183 30183 Praseodymium 144 Pr-144 -30184 30184 Praseodymium 144 metastable Pr-144m -30185 30185 Samarium 145 Sm-145 -30186 30186 Samarium 147 Sm-147 -30187 30187 Samarium 151 Sm-151 -30188 30188 Neodymium 147 Nd-147 -30189 30189 Promethium 146 Pm-146 -30190 30190 Promethium 147 Pm-147 -30191 30191 Promethium 151 Pm-151 -30192 30192 Europium 152 Eu-152 -30193 30193 Europium 154 Eu-154 -30194 30194 Europium 155 Eu-155 -30195 30195 Gadolinium 153 Gd-153 -30196 30196 Terbium 160 Tb-160 -30197 30197 Holmium 166 metastable Ho-166m -30198 30198 Thulium 170 Tm-170 -30199 30199 Ytterbium 169 Yb-169 -30200 30200 Hafnium 175 Hf-175 -30201 30201 Hafnium 181 Hf-181 -30202 30202 Tantalum 179 Ta-179 -30203 30203 Tantalum 182 Ta-182 -30204 30204 Rhenium 184 Re-184 -30205 30205 Iridium 192 Ir-192 -30206 30206 Mercury 203 Hg-203 -30207 30207 Thallium 204 Tl-204 -30208 30208 Thallium 207 Tl-207 -30209 30209 Thallium 208 Tl-208 -30210 30210 Thallium 209 Tl-209 -30211 30211 Bismuth 205 Bi-205 -30212 30212 Bismuth 207 Bi-207 -30213 30213 Bismuth 210 Bi-210 -30214 30214 Bismuth 211 Bi-211 -30215 30215 Bismuth 212 Bi-212 -30216 30216 Bismuth 213 Bi-213 -30217 30217 Bismuth 214 Bi-214 -30218 30218 Polonium 208 Po-208 -30219 30219 Polonium 210 Po-210 -30220 30220 Polonium 212 Po-212 -30221 30221 Polonium 213 Po-213 -30222 30222 Polonium 214 Po-214 -30223 30223 Polonium 215 Po-215 -30224 30224 Polonium 216 Po-216 -30225 30225 Polonium 218 Po-218 -30226 30226 Lead 209 Pb-209 -30227 30227 Lead 210 Pb-210 -30228 30228 Lead 211 Pb-211 -30229 30229 Lead 212 Pb-212 -30230 30230 Lead 214 Pb-214 -30231 30231 Astatine 217 At-217 -30232 30232 Radon 219 Rn-219 -30233 30233 Radon 220 Rn-220 -30234 30234 Radon 222 Rn-222 -30235 30235 Francium 221 Fr-221 -30236 30236 Francium 223 Fr-223 -30237 30237 Radium 223 Ra-223 -30238 30238 Radium 224 Ra-224 -30239 30239 Radium 225 Ra-225 -30240 30240 Radium 226 Ra-226 -30241 30241 Radium 228 Ra-228 -30242 30242 Actinium 225 Ac-225 -30243 30243 Actinium 227 Ac-227 -30244 30244 Actinium 228 Ac-228 -30245 30245 Thorium 227 Th-227 -30246 30246 Thorium 228 Th-228 -30247 30247 Thorium 229 Th-229 -30248 30248 Thorium 230 Th-230 -30249 30249 Thorium 231 Th-231 -30250 30250 Thorium 232 Th-232 -30251 30251 Thorium 234 Th-234 -30252 30252 Protactinium 231 Pa-231 -30253 30253 Protactinium 233 Pa-233 -30254 30254 Protactinium 234 metastable Pa-234m -30255 30255 Uranium 232 U-232 -30256 30256 Uranium 233 U-233 -30257 30257 Uranium 234 U-234 -30258 30258 Uranium 235 U-235 -30259 30259 Uranium 236 U-236 -30260 30260 Uranium 237 U-237 -30261 30261 Uranium 238 U-238 -30262 30262 Plutonium 236 Pu-236 -30263 30263 Plutonium 238 Pu-238 -30264 30264 Plutonium 239 Pu-239 -30265 30265 Plutonium 240 Pu-240 -30266 30266 Plutonium 241 Pu-241 -30267 30267 Plutonium 242 Pu-242 -30268 30268 Plutonium 244 Pu-244 -30269 30269 Neptunium 237 Np-237 -30270 30270 Neptunium 238 Np-238 -30271 30271 Neptunium 239 Np-239 -30272 30272 Americium 241 Am-241 -30273 30273 Americium 242 Am-242 -30274 30274 Americium 242 metastable Am-242m -30275 30275 Americium 243 Am-243 -30276 30276 Curium 242 Cm-242 -30277 30277 Curium 243 Cm-243 -30278 30278 Curium 244 Cm-244 -30279 30279 Curium 245 Cm-245 -30280 30280 Curium 246 Cm-246 -30281 30281 Curium 247 Cm-247 -30282 30282 Curium 248 Cm-248 -30283 30283 Curium 243/244 Cm-243244 -30284 30284 Plutonium 238/Americium 241 Pu-238Am-241 -30285 30285 Plutonium 239/240 Pu-239240 -30286 30286 Berkelium 249 Bk-249 -30287 30287 Californium 249 Cf-249 -30288 30288 Californium 250 Cf-250 -30289 30289 Californium 252 Cf-252 -30290 30290 Sum aerosol particulates SumAer -30291 30291 Sum Iodine SumIod -30292 30292 Sum noble gas SumNG -30293 30293 Activation gas ActGas -30294 30294 Cs-137 Equivalent EquCs137 -#30295-59999 Reserved -60000 60000 HOx radical (OH+HO2) -60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2) -60002 60002 Passive Ozone -60003 60003 NOx expressed as nitrogen NOx -60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy -60005 60005 Total inorganic chlorine Clx -60006 60006 Total inorganic bromine Brx -60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx -60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx -60009 60009 Lumped alkanes -60010 60010 Lumped alkenes -60011 60011 Lumped aromatic compounds -60012 60012 Lumped terpenes -60013 60013 Non-methane volatile organic compounds expressed as carbon -60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon -60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon -60016 60016 Lumped oxygenated hydrocarbons -#60017-61999 Reserved -62000 62000 Total aerosol -62001 62001 Dust dry -62002 62002 Water in ambient -62003 62003 Ammonium dry -62004 62004 Nitrate dry -62005 62005 Nitric acid trihydrate -62006 62006 Sulphate dry -62007 62007 Mercury dry -62008 62008 Sea salt dry -62009 62009 Black carbon dry -62010 62010 Particulate organic matter dry -62011 62011 Primary particulate organic matter dry -62012 62012 Secondary particulate organic matter dry -62013 62013 Black carbon hydrophilic dry -62014 62014 Black carbon hydrophobic dry -62015 62015 Particulate organic matter hydrophilic dry -62016 62016 Particulate organic matter hydrophobic dry -62017 62017 Nitrate hydrophilic dry -62018 62018 Nitrate hydrophobic dry -#62019-65534 Reserved +# (See Common Code table C-14) 65535 65535 Missing diff --git a/definitions/grib2/tables/9/4.233.table b/definitions/grib2/tables/9/4.233.table index afd1ab8db..c5e8f2b40 100644 --- a/definitions/grib2/tables/9/4.233.table +++ b/definitions/grib2/tables/9/4.233.table @@ -1,415 +1,3 @@ # Automatically generated by ./create_tables.pl from database fm92_grib2@grib-param-db-prod.ecmwf.int, do not edit -0 0 Ozone -1 1 Water vapour -2 2 Methane -3 3 Carbon dioxide -4 4 Carbon monoxide -5 5 Nitrogen dioxide -6 6 Nitrous oxide -7 7 Formaldehyde -8 8 Sulphur dioxide -9 9 Ammonia -10 10 Ammonium -11 11 Nitrogen monoxide -12 12 Atomic oxygen -13 13 Nitrate radical -14 14 Hydroperoxyl radical -15 15 Dinitrogen pentoxide -16 16 Nitrous acid -17 17 Nitric acid -18 18 Peroxynitric acid -19 19 Hydrogen peroxide -20 20 Molecular hydrogen -21 21 Atomic nitrogen -22 22 Sulphate -23 23 Radon -24 24 Elemental mercury -25 25 Divalent mercury -26 26 Atomic chlorine -27 27 Chlorine monoxide -28 28 Dichlorine peroxide -29 29 Hypochlorous acid -30 30 Chlorine nitrate -31 31 Chlorine dioxide -32 32 Atomic bromine -33 33 Bromine monoxide -34 34 Bromine chloride -35 35 Hydrogen bromide -36 36 Hypobromous acid -37 37 Bromine nitrate -#38-9999 Reserved -10000 10000 Hydroxyl radical -10001 10001 Methyl peroxy radical -10002 10002 Methyl hydroperoxide -10004 10004 Methanol -10005 10005 Formic acid -10006 10006 Hydrogen Cyanide -10007 10007 Aceto nitrile -10008 10008 Ethane -10009 10009 Ethene (= Ethylene) -10010 10010 Ethyne (= Acetylene) -10011 10011 Ethanol -10012 10012 Acetic acid -10013 10013 Peroxyacetyl nitrate -10014 10014 Propane -10015 10015 Propene -10016 10016 Butanes -10017 10017 Isoprene -10018 10018 Alpha pinene -10019 10019 Beta pinene -10020 10020 Limonene -10021 10021 Benzene -10022 10022 Toluene -10023 10023 Xylene -#10024-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides...) -10500 10500 Dimethyl sulphide -#10501-20000 Reserved -20001 20001 Hydrogen chloride -20002 20002 CFC-11 -20003 20003 CFC-12 -20004 20004 CFC-113 -20005 20005 CFC-113a -20006 20006 CFC-114 -20007 20007 CFC-115 -20008 20008 HCFC-22 -20009 20009 HCFC-141b -20010 20010 HCFC-142b -20011 20011 Halon-1202 -20012 20012 Halon-1211 -20013 20013 Halon-1301 -20014 20014 Halon-2402 -20015 20015 Methyl chloride (HCC-40) -20016 20016 Carbon tetrachloride (HCC-10) -20017 20017 HCC-140a -20018 20018 Methyl bromide (HBC-40B1) -20019 20019 Hexachlorocyclohexane (HCH) -20020 20020 Alpha hexachlorocyclohexane -20021 20021 Hexachlorobiphenyl (PCB-153) -#20022-29999 Reserved -30000 30000 Radioactive pollutant (tracer, defined by originating centre) -#30001-30009 Reserved -30010 30010 Hydrogen H-3 -30011 30011 Hydrogen organic bounded H-3o -30012 30012 Hydrogen inorganic H-3a -30013 30013 Beryllium 7 Be-7 -30014 30014 Beryllium 10 Be-10 -30015 30015 Carbon 14 C-14 -30016 30016 Carbon 14 CO2 C-14CO2 -30017 30017 Carbon 14 other gases C-14og -30018 30018 Nitrogen 13 N-13 -30019 30019 Nitrogen 16 N-16 -30020 30020 Fluorine 18 F-18 -30021 30021 Sodium 22 Na-22 -30022 30022 Phosphate 32 P-32 -30023 30023 Phosphate 33 P-33 -30024 30024 Sulfur 35 S-35 -30025 30025 Chlorine 36 Cl-36 -30026 30026 Potassium 40 K-40 -30027 30027 Argon 41 Ar-41 -30028 30028 Calcium 41 Ca-41 -30029 30029 Calcium 45 Ca-45 -30030 30030 Titanium 44 -30031 30031 Scandium 46 Sc-46 -30032 30032 Vanadium 48 V-48 -30033 30033 Vanadium 49 V-49 -30034 30034 Chrome 51 Cr-51 -30035 30035 Manganese 52 Mn-52 -30036 30036 Manganese 54 Mn-54 -30037 30037 Iron 55 Fe-55 -30038 30038 Iron 59 Fe-59 -30039 30039 Cobalt 56 Co-56 -30040 30040 Cobalt 57 Co-57 -30041 30041 Cobalt 58 Co-58 -30042 30042 Cobalt 60 Co-60 -30043 30043 Nickel 59 Ni-59 -30044 30044 Nickel 63 Ni-63 -30045 30045 Zinc 65 Zn-65 -30046 30046 Gallium 67 Ga-67 -30047 30047 Gallium 68 Ga-68 -30048 30048 Germanium 68 Ge-68 -30049 30049 Germanium 69 Ge-69 -30050 30050 Arsenic 73 As-73 -30051 30051 Selenium 75 Se-75 -30052 30052 Selenium 79 Se-79 -30053 30053 Rubidium 81 Rb-81 -30054 30054 Rubidium 83 Rb-83 -30055 30055 Rubidium 84 Rb-84 -30056 30056 Rubidium 86 Rb-86 -30057 30057 Rubidium 87 Rb-87 -30058 30058 Rubidium 88 Rb-88 -30059 30059 Krypton 85 Kr-85 -30060 30060 Krypton 85 metastable Kr-85m -30061 30061 Krypton 87 Kr-87 -30062 30062 Krypton 88 Kr-88 -30063 30063 Krypton 89 Kr-89 -30064 30064 Strontium 85 Sr-85 -30065 30065 Strontium 89 Sr-89 -30066 30066 Strontium 89/90 Sr-8990 -30067 30067 Strontium 90 Sr-90 -30068 30068 Strontium 91 Sr-91 -30069 30069 Strontium 92 Sr-92 -30070 30070 Yttrium 87 Y-87 -30071 30071 Yttrium 88 Y-88 -30072 30072 Yttrium 90 Y-90 -30073 30073 Yttrium 91 Y-91 -30074 30074 Yttrium 91 metastable Y-91m -30075 30075 Yttrium 92 Y-92 -30076 30076 Yttrium 93 Y-93 -30077 30077 Zirconium 89 Zr-89 -30078 30078 Zirconium 93 Zr-93 -30079 30079 Zirconium 95 Zr-95 -30080 30080 Zirconium 97 Zr-97 -30081 30081 Niobium 93 metastable Nb-93m -30082 30082 Niobium 94 Nb-94 -30083 30083 Niobium 95 Nb-95 -30084 30084 Niobium 95 metastable Nb-95m -30085 30085 Niobium 97 Nb-97 -30086 30086 Niobium 97 metastable Nb-97m -30087 30087 Molybdenum 93 Mo-93 -30088 30088 Molybdenum 99 Mo-99 -30089 30089 Technetium 95 metastable Tc-95m -30090 30090 Technetium 96 Tc-96 -30091 30091 Technetium 99 Tc-99 -30092 30092 Technetium 99 metastable Tc-99m -30093 30093 Rhodium 99 Rh-99 -30094 30094 Rhodium 101 Rh-101 -30095 30095 Rhodium 102 metastable Rh-102m -30096 30096 Rhodium 103 metastable Rh-103m -30097 30097 Rhodium 105 Rh-105 -30098 30098 Rhodium 106 Rh-106 -30099 30099 Palladium 100 Pd-100 -30100 30100 Palladium 103 Pd-103 -30101 30101 Palladium 107 Pd-107 -30102 30102 Ruthenium 103 Ru-103 -30103 30103 Ruthenium 105 Ru-105 -30104 30104 Ruthenium 106 Ru-106 -30105 30105 Silver 108 metastable Ag-108m -30106 30106 Silver 110 metastable Ag-110m -30107 30107 Cadmium 109 Cd-109 -30108 30108 Cadmium 113 metastable Cd-113m -30109 30109 Cadmium 115 metastable Cd-115m -30110 30110 Indium 114 metastable In-114m -30111 30111 Tin 113 Sn-113 -30112 30112 Tin 119 metastable Sn-119m -30113 30113 Tin 121 metastable Sn-121m -30114 30114 Tin 122 Sn-122 -30115 30115 Tin 123 Sn-123 -30116 30116 Tin 126 Sn-126 -30117 30117 Antimony 124 Sb-124 -30118 30118 Antimony 125 Sb-125 -30119 30119 Antimony 126 Sb-126 -30120 30120 Antimony 127 Sb-127 -30121 30121 Antimony 129 Sb-129 -30122 30122 Tellurium 123 metastable Te-123m -30123 30123 Tellurium 125 metastable Te-125m -30124 30124 Tellurium 127 Te-127 -30125 30125 Tellurium 127 metastable Te-127m -30126 30126 Tellurium 129 Te-129 -30127 30127 Tellurium 129 metastable Te-129m -30128 30128 Tellurium 131 metastable Te-131m -30129 30129 Tellurium 132 Te-132 -30130 30130 Iodine 123 I-123 -30131 30131 Iodine 124 I-124 -30132 30132 Iodine 125 I-125 -30133 30133 Iodine 126 I-126 -30134 30134 Iodine 129 I-129 -30135 30135 Iodine 129 elementary gaseous I-129g -30136 30136 Iodine 129 organic bounded I-129o -30137 30137 Iodine 131 I-131 -30138 30138 Iodine 131 elementary gaseous I-131g -30139 30139 Iodine 131 organic bounded I-131o -30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go -30141 30141 Iodine 131 aerosol I-131a -30142 30142 Iodine 132 I-132 -30143 30143 Iodine 132 elementary gaseous I-132g -30144 30144 Iodine 132 organic bounded I-132o -30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go -30146 30146 Iodine 132 aerosol I-132a -30147 30147 Iodine 133 I-133 -30148 30148 Iodine 133 elementary gaseous I-133g -30149 30149 Iodine 133 organic bounded I-133o -30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go -30151 30151 Iodine 133 aerosol I-133a -30152 30152 Iodine 134 I-134 -30153 30153 Iodine 134 elementary gaseous I-134g -30154 30154 Iodine 134 organic bounded I-134o -30155 30155 Iodine 135 I-135 -30156 30156 Iodine 135 elementary gaseous I-135g -30157 30157 Iodine 135 organic bounded I-135o -30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go -30159 30159 Iodine 135 aerosol I-135a -30160 30160 Xenon 131 metastable Xe-131m -30161 30161 Xenon 133 Xe-133 -30162 30162 Xenon 133 metastable Xe-133m -30163 30163 Xenon 135 Xe-135 -30164 30164 Xenon 135 metastable Xe-135m -30165 30165 Xenon 137 Xe-137 -30166 30166 Xenon 138 Xe-138 -30167 30167 Xenon sum of all Xenon isotopes Xe-sum -30168 30168 Caesium 131 Cs-131 -30169 30169 Caesium 134 Cs-134 -30170 30170 Caesium 135 Cs-135 -30171 30171 Caesium 136 Cs-136 -30172 30172 Caesium 137 Cs-137 -30173 30173 Barium 133 Ba-133 -30174 30174 Barium 137 metastable Ba-137m -30175 30175 Barium 140 Ba-140 -30176 30176 Cerium 139 Ce-139 -30177 30177 Cerium 141 Ce-141 -30178 30178 Cerium 143 Ce-143 -30179 30179 Cerium 144 Ce-144 -30180 30180 Lanthanum 140 La-140 -30181 30181 Lanthanum 141 La-141 -30182 30182 Praseodymium 143 Pr-143 -30183 30183 Praseodymium 144 Pr-144 -30184 30184 Praseodymium 144 metastable Pr-144m -30185 30185 Samarium 145 Sm-145 -30186 30186 Samarium 147 Sm-147 -30187 30187 Samarium 151 Sm-151 -30188 30188 Neodymium 147 Nd-147 -30189 30189 Promethium 146 Pm-146 -30190 30190 Promethium 147 Pm-147 -30191 30191 Promethium 151 Pm-151 -30192 30192 Europium 152 Eu-152 -30193 30193 Europium 154 Eu-154 -30194 30194 Europium 155 Eu-155 -30195 30195 Gadolinium 153 Gd-153 -30196 30196 Terbium 160 Tb-160 -30197 30197 Holmium 166 metastable Ho-166m -30198 30198 Thulium 170 Tm-170 -30199 30199 Ytterbium 169 Yb-169 -30200 30200 Hafnium 175 Hf-175 -30201 30201 Hafnium 181 Hf-181 -30202 30202 Tantalum 179 Ta-179 -30203 30203 Tantalum 182 Ta-182 -30204 30204 Rhenium 184 Re-184 -30205 30205 Iridium 192 Ir-192 -30206 30206 Mercury 203 Hg-203 -30207 30207 Thallium 204 Tl-204 -30208 30208 Thallium 207 Tl-207 -30209 30209 Thallium 208 Tl-208 -30210 30210 Thallium 209 Tl-209 -30211 30211 Bismuth 205 Bi-205 -30212 30212 Bismuth 207 Bi-207 -30213 30213 Bismuth 210 Bi-210 -30214 30214 Bismuth 211 Bi-211 -30215 30215 Bismuth 212 Bi-212 -30216 30216 Bismuth 213 Bi-213 -30217 30217 Bismuth 214 Bi-214 -30218 30218 Polonium 208 Po-208 -30219 30219 Polonium 210 Po-210 -30220 30220 Polonium 212 Po-212 -30221 30221 Polonium 213 Po-213 -30222 30222 Polonium 214 Po-214 -30223 30223 Polonium 215 Po-215 -30224 30224 Polonium 216 Po-216 -30225 30225 Polonium 218 Po-218 -30226 30226 Lead 209 Pb-209 -30227 30227 Lead 210 Pb-210 -30228 30228 Lead 211 Pb-211 -30229 30229 Lead 212 Pb-212 -30230 30230 Lead 214 Pb-214 -30231 30231 Astatine 217 At-217 -30232 30232 Radon 219 Rn-219 -30233 30233 Radon 220 Rn-220 -30234 30234 Radon 222 Rn-222 -30235 30235 Francium 221 Fr-221 -30236 30236 Francium 223 Fr-223 -30237 30237 Radium 223 Ra-223 -30238 30238 Radium 224 Ra-224 -30239 30239 Radium 225 Ra-225 -30240 30240 Radium 226 Ra-226 -30241 30241 Radium 228 Ra-228 -30242 30242 Actinium 225 Ac-225 -30243 30243 Actinium 227 Ac-227 -30244 30244 Actinium 228 Ac-228 -30245 30245 Thorium 227 Th-227 -30246 30246 Thorium 228 Th-228 -30247 30247 Thorium 229 Th-229 -30248 30248 Thorium 230 Th-230 -30249 30249 Thorium 231 Th-231 -30250 30250 Thorium 232 Th-232 -30251 30251 Thorium 234 Th-234 -30252 30252 Protactinium 231 Pa-231 -30253 30253 Protactinium 233 Pa-233 -30254 30254 Protactinium 234 metastable Pa-234m -30255 30255 Uranium 232 U-232 -30256 30256 Uranium 233 U-233 -30257 30257 Uranium 234 U-234 -30258 30258 Uranium 235 U-235 -30259 30259 Uranium 236 U-236 -30260 30260 Uranium 237 U-237 -30261 30261 Uranium 238 U-238 -30262 30262 Plutonium 236 Pu-236 -30263 30263 Plutonium 238 Pu-238 -30264 30264 Plutonium 239 Pu-239 -30265 30265 Plutonium 240 Pu-240 -30266 30266 Plutonium 241 Pu-241 -30267 30267 Plutonium 242 Pu-242 -30268 30268 Plutonium 244 Pu-244 -30269 30269 Neptunium 237 Np-237 -30270 30270 Neptunium 238 Np-238 -30271 30271 Neptunium 239 Np-239 -30272 30272 Americium 241 Am-241 -30273 30273 Americium 242 Am-242 -30274 30274 Americium 242 metastable Am-242m -30275 30275 Americium 243 Am-243 -30276 30276 Curium 242 Cm-242 -30277 30277 Curium 243 Cm-243 -30278 30278 Curium 244 Cm-244 -30279 30279 Curium 245 Cm-245 -30280 30280 Curium 246 Cm-246 -30281 30281 Curium 247 Cm-247 -30282 30282 Curium 248 Cm-248 -30283 30283 Curium 243/244 Cm-243244 -30284 30284 Plutonium 238/Americium 241 Pu-238Am-241 -30285 30285 Plutonium 239/240 Pu-239240 -30286 30286 Berkelium 249 Bk-249 -30287 30287 Californium 249 Cf-249 -30288 30288 Californium 250 Cf-250 -30289 30289 Californium 252 Cf-252 -30290 30290 Sum aerosol particulates SumAer -30291 30291 Sum Iodine SumIod -30292 30292 Sum noble gas SumNG -30293 30293 Activation gas ActGas -30294 30294 Cs-137 Equivalent EquCs137 -#30295-59999 Reserved -60000 60000 HOx radical (OH+HO2) -60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2) -60002 60002 Passive Ozone -60003 60003 NOx expressed as nitrogen NOx -60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy -60005 60005 Total inorganic chlorine Clx -60006 60006 Total inorganic bromine Brx -60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx -60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx -60009 60009 Lumped alkanes -60010 60010 Lumped alkenes -60011 60011 Lumped aromatic compounds -60012 60012 Lumped terpenes -60013 60013 Non-methane volatile organic compounds expressed as carbon -60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon -60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon -60016 60016 Lumped oxygenated hydrocarbons -#60017-61999 Reserved -62000 62000 Total aerosol -62001 62001 Dust dry -62002 62002 Water in ambient -62003 62003 Ammonium dry -62004 62004 Nitrate dry -62005 62005 Nitric acid trihydrate -62006 62006 Sulphate dry -62007 62007 Mercury dry -62008 62008 Sea salt dry -62009 62009 Black carbon dry -62010 62010 Particulate organic matter dry -62011 62011 Primary particulate organic matter dry -62012 62012 Secondary particulate organic matter dry -62013 62013 Black carbon hydrophilic dry -62014 62014 Black carbon hydrophobic dry -62015 62015 Particulate organic matter hydrophilic dry -62016 62016 Particulate organic matter hydrophobic dry -62017 62017 Nitrate hydrophilic dry -62018 62018 Nitrate hydrophobic dry -#62019-65534 Reserved +# (See Common Code table C-14) 65535 65535 Missing From 856a9d75a6918b6ab949702ea1f69a4c3afec5e8 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 25 Apr 2019 16:51:02 +0100 Subject: [PATCH 200/414] Definitions clean up --- definitions/bufr/boot_edition_0.def | 19 +++++-------------- definitions/bufr/boot_edition_1.def | 18 +++++------------- definitions/bufr/boot_edition_2.def | 21 ++++++--------------- definitions/bufr/boot_edition_3.def | 19 +++++-------------- definitions/bufr/boot_edition_4.def | 18 +++++------------- definitions/bufr/old_section.1.def | 10 +--------- definitions/bufr/section.0.def | 7 ------- definitions/bufr/section.1.1.def | 9 --------- definitions/bufr/section.1.2.def | 11 ----------- definitions/bufr/section.1.3.def | 13 +------------ definitions/bufr/section.1.4.def | 11 +---------- definitions/bufr/section.2.def | 7 ------- definitions/bufr/section.3.def | 7 ------- definitions/bufr/section.4.def | 7 ------- definitions/bufr/section.5.def | 7 ------- 15 files changed, 29 insertions(+), 155 deletions(-) diff --git a/definitions/bufr/boot_edition_0.def b/definitions/bufr/boot_edition_0.def index c6e327579..086b379a5 100644 --- a/definitions/bufr/boot_edition_0.def +++ b/definitions/bufr/boot_edition_0.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# ascii[4] identifier = "BUFR" : read_only,hidden; alias identifier=identifier; @@ -15,22 +8,20 @@ unsigned[3] section1Length; unsigned[1] edition = 0 : dump; alias editionNumber=edition; -template section_1 "bufr/section.1.1.def" ; +template section_1 "bufr/section.1.1.def"; flagbit localSectionPresent(section1Flags,7) = 1; alias section2Present=localSectionPresent; - if(localSectionPresent){ - template section_2 "bufr/section.2.def" ; + template section_2 "bufr/section.2.def"; } else { transient section2Length = 0; } -template section_3 "bufr/section.3.def" ; -template section_4 "bufr/section.4.def" ; -template section_5 "bufr/section.5.def" ; +template section_3 "bufr/section.3.def"; +template section_4 "bufr/section.4.def"; +template section_5 "bufr/section.5.def"; transient totalLength = section1Length + section2Length + section3Length + section4Length + 8; - diff --git a/definitions/bufr/boot_edition_1.def b/definitions/bufr/boot_edition_1.def index a9d68ab1a..26d2af230 100644 --- a/definitions/bufr/boot_edition_1.def +++ b/definitions/bufr/boot_edition_1.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# ascii[4] identifier = "BUFR" : read_only,hidden; alias identifier=identifier; @@ -15,22 +8,21 @@ unsigned[3] section1Length; unsigned[1] edition = 1 : dump; alias editionNumber=edition; -template section_1 "bufr/section.1.1.def" ; +template section_1 "bufr/section.1.1.def"; flagbit localSectionPresent(section1Flags,7) = 1; alias section2Present=localSectionPresent; if(localSectionPresent){ - template section_2 "bufr/section.2.def" ; + template section_2 "bufr/section.2.def"; } else { transient section2Length = 0; } -template section_3 "bufr/section.3.def" ; -template section_4 "bufr/section.4.def" ; -template section_5 "bufr/section.5.def" ; +template section_3 "bufr/section.3.def"; +template section_4 "bufr/section.4.def"; +template section_5 "bufr/section.5.def"; transient totalLength = section1Length + section2Length + section3Length + section4Length + 8; - diff --git a/definitions/bufr/boot_edition_2.def b/definitions/bufr/boot_edition_2.def index 95c831838..580532c17 100644 --- a/definitions/bufr/boot_edition_2.def +++ b/definitions/bufr/boot_edition_2.def @@ -1,34 +1,25 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - ascii[4] identifier = "BUFR" : read_only,hidden; alias identifier=identifier; -unsigned[3] totalLength ; +unsigned[3] totalLength; unsigned[1] edition = 2 : dump; alias editionNumber=edition; -template section_1 "bufr/section.1.2.def" ; +template section_1 "bufr/section.1.2.def"; flagbit localSectionPresent(section1Flags,7) = 1; alias section2Present=localSectionPresent; if(localSectionPresent){ - template section_2 "bufr/section.2.def" ; + template section_2 "bufr/section.2.def"; } else { transient section2Length = 0; } -template section_3 "bufr/section.3.def" ; -template section_4 "bufr/section.4.def" ; -template section_5 "bufr/section.5.def" ; - +template section_3 "bufr/section.3.def"; +template section_4 "bufr/section.4.def"; +template section_5 "bufr/section.5.def"; diff --git a/definitions/bufr/boot_edition_3.def b/definitions/bufr/boot_edition_3.def index e6ad7a21e..4bb740592 100644 --- a/definitions/bufr/boot_edition_3.def +++ b/definitions/bufr/boot_edition_3.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# ascii[4] identifier = "BUFR" : read_only,hidden; alias identifier=identifier; @@ -15,20 +8,18 @@ section_length[3] totalLength ; unsigned[1] edition = 3 : dump; alias editionNumber=edition; -template section_1 "bufr/section.1.3.def" ; +template section_1 "bufr/section.1.3.def"; flagbit localSectionPresent(section1Flags,7) = 1; alias section2Present=localSectionPresent; - if(localSectionPresent){ - template section_2 "bufr/section.2.def" ; + template section_2 "bufr/section.2.def"; } else { transient section2Length = 0; } -template section_3 "bufr/section.3.def" ; -template section_4 "bufr/section.4.def" ; -template section_5 "bufr/section.5.def" ; - +template section_3 "bufr/section.3.def"; +template section_4 "bufr/section.4.def"; +template section_5 "bufr/section.5.def"; diff --git a/definitions/bufr/boot_edition_4.def b/definitions/bufr/boot_edition_4.def index 466aa07b2..f25469381 100644 --- a/definitions/bufr/boot_edition_4.def +++ b/definitions/bufr/boot_edition_4.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# ascii[4] identifier = "BUFR" : read_only,hidden; alias identifier=identifier; @@ -15,19 +8,18 @@ section_length[3] totalLength ; unsigned[1] edition = 4 : dump; alias editionNumber=edition; -template section_1 "bufr/section.1.4.def" ; +template section_1 "bufr/section.1.4.def"; flagbit localSectionPresent(section1Flags,7) = 1; alias section2Present=localSectionPresent; if(localSectionPresent){ - template section_2 "bufr/section.2.def" ; + template section_2 "bufr/section.2.def"; } else { transient section2Length = 0; } -template section_3 "bufr/section.3.def" ; -template section_4 "bufr/section.4.def" ; -template section_5 "bufr/section.5.def" ; - +template section_3 "bufr/section.3.def"; +template section_4 "bufr/section.4.def"; +template section_5 "bufr/section.5.def"; diff --git a/definitions/bufr/old_section.1.def b/definitions/bufr/old_section.1.def index 976607bfa..d638808e5 100644 --- a/definitions/bufr/old_section.1.def +++ b/definitions/bufr/old_section.1.def @@ -1,17 +1,9 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# codetable[2] originatingCentre 'common/c-1.table' : dump; unsigned[1] updateSequenceNumber; -flags[1] section1Flags 'bufr/section1_flags.table' = 128 : hidden ; # = section 2 present - +flags[1] section1Flags 'bufr/section1_flags.table' = 128 : hidden; # = section 2 present unsigned[1] dataCategory; unsigned[1] dataSubCategory; diff --git a/definitions/bufr/section.0.def b/definitions/bufr/section.0.def index 7fd9d6bd7..625d8e596 100644 --- a/definitions/bufr/section.0.def +++ b/definitions/bufr/section.0.def @@ -1,10 +1,3 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# label empty; diff --git a/definitions/bufr/section.1.1.def b/definitions/bufr/section.1.1.def index 91c3db205..5aade0f44 100644 --- a/definitions/bufr/section.1.1.def +++ b/definitions/bufr/section.1.1.def @@ -1,18 +1,10 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# codetable[2] bufrHeaderCentre 'common/c-1.table' : dump; unsigned[1] updateSequenceNumber; flags[1] section1Flags 'bufr/section1_flags.table' = 128 : hidden ; # = section 2 present - unsigned[1] dataCategory : dump; unsigned[1] dataSubCategory : dump; unsigned[2] localTablesVersionNumber : dump; @@ -28,4 +20,3 @@ alias masterTableNumber = editionNumber; # ? alias ls.masterTablesVersionNumber=masterTablesVersionNumber; alias ls.localTablesVersionNumber=localTablesVersionNumber; - diff --git a/definitions/bufr/section.1.2.def b/definitions/bufr/section.1.2.def index 18c860c6e..44b978305 100644 --- a/definitions/bufr/section.1.2.def +++ b/definitions/bufr/section.1.2.def @@ -1,13 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - - position offsetSection1; section_length[3] section1Length ; @@ -36,6 +27,4 @@ alias ls.centre=bufrHeaderCentre; alias ls.masterTablesVersionNumber=masterTablesVersionNumber; alias ls.localTablesVersionNumber=localTablesVersionNumber; - section_padding section1Padding; - diff --git a/definitions/bufr/section.1.3.def b/definitions/bufr/section.1.3.def index ca174510a..fae33dfc9 100644 --- a/definitions/bufr/section.1.3.def +++ b/definitions/bufr/section.1.3.def @@ -1,12 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - position offsetSection1; section_length[3] section1Length ; @@ -18,7 +10,7 @@ codetable[1] bufrHeaderCentre 'common/c-1.table' : dump; unsigned[1] updateSequenceNumber :dump; -flags[1] section1Flags 'bufr/section1_flags.table' = 128 : hidden ; # = section 2 present +flags[1] section1Flags 'bufr/section1_flags.table' = 128 : hidden ; # = section 2 present unsigned[1] dataCategory : dump; unsigned[1] dataSubCategory : dump; @@ -42,11 +34,8 @@ meta ls.typicalTime sprintf("%.2d%.2d%.2d",typicalHour,typicalMinute,typicalSeco meta typicalDateTime julian_date(typicalYear,typicalMonth,typicalDay,typicalHour,typicalMinute,typicalSecond) ; - alias ls.centre=bufrHeaderCentre; alias ls.masterTablesVersionNumber=masterTablesVersionNumber; alias ls.localTablesVersionNumber=localTablesVersionNumber; - section_padding section1Padding; - diff --git a/definitions/bufr/section.1.4.def b/definitions/bufr/section.1.4.def index 18fb8c174..8287a5082 100644 --- a/definitions/bufr/section.1.4.def +++ b/definitions/bufr/section.1.4.def @@ -1,12 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - position offsetSection1; section_length[3] section1Length ; @@ -19,7 +11,7 @@ alias ls.centre=bufrHeaderCentre; unsigned[1] updateSequenceNumber : dump; -flags[1] section1Flags 'bufr/section1_flags.table' = 128 : hidden ; # = section 2 present +flags[1] section1Flags 'bufr/section1_flags.table' = 128 : hidden ; # = section 2 present unsigned[1] dataCategory : dump; unsigned[1] internationalDataSubCategory = 255 : dump; @@ -52,4 +44,3 @@ alias ls.masterTablesVersionNumber=masterTablesVersionNumber; alias ls.localTablesVersionNumber=localTablesVersionNumber; section_padding section1Padding; - diff --git a/definitions/bufr/section.2.def b/definitions/bufr/section.2.def index da3fd9fb0..4fb165c5d 100644 --- a/definitions/bufr/section.2.def +++ b/definitions/bufr/section.2.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# section_length[3] section2Length ; unsigned[1] reservedSection2 = 0; diff --git a/definitions/bufr/section.3.def b/definitions/bufr/section.3.def index f7ede0427..cbff5edf2 100644 --- a/definitions/bufr/section.3.def +++ b/definitions/bufr/section.3.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# constant defaultSequence=0; constant tablesMasterDir="bufr/tables/[masterTableNumber]/wmo/[masterTablesVersionNumber]" : hidden; diff --git a/definitions/bufr/section.4.def b/definitions/bufr/section.4.def index 65cc3e5e7..8fe6aed57 100644 --- a/definitions/bufr/section.4.def +++ b/definitions/bufr/section.4.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# position offsetSection4; section_length[3] section4Length ; diff --git a/definitions/bufr/section.5.def b/definitions/bufr/section.5.def index df7e6bda8..11d7381f6 100644 --- a/definitions/bufr/section.5.def +++ b/definitions/bufr/section.5.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# constant section5Length=4; ascii[4] '7777' = "7777" : read_only; From 042d934c3677507a1f8416e20348e86d10f195d9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 29 Apr 2019 16:09:10 +0100 Subject: [PATCH 201/414] ECC-342: Implement extraction of a time interval for uncompressed data --- ...ssor_class_bufr_extract_datetime_subsets.c | 386 ++++++++++-------- 1 file changed, 207 insertions(+), 179 deletions(-) diff --git a/src/grib_accessor_class_bufr_extract_datetime_subsets.c b/src/grib_accessor_class_bufr_extract_datetime_subsets.c index 3753b9ccd..cc7da5bd3 100644 --- a/src/grib_accessor_class_bufr_extract_datetime_subsets.c +++ b/src/grib_accessor_class_bufr_extract_datetime_subsets.c @@ -43,9 +43,9 @@ typedef struct grib_accessor_bufr_extract_datetime_subsets { grib_accessor att; /* Members defined in gen */ /* Members defined in bufr_extract_datetime_subsets */ - const char* doExtractSubsets; - const char* numberOfSubsets; - const char* extractSubsetList; + const char* doExtractSubsets; + const char* numberOfSubsets; + const char* extractSubsetList; } grib_accessor_bufr_extract_datetime_subsets; extern grib_accessor_class* grib_accessor_class_gen; @@ -89,8 +89,8 @@ static grib_accessor_class _grib_accessor_class_bufr_extract_datetime_subsets = 0, /* compare vs. another accessor */ 0, /* unpack only ith value */ 0, /* unpack a subarray */ - 0, /* clear */ - 0, /* clone accessor */ + 0, /* clear */ + 0, /* clone accessor */ }; @@ -99,36 +99,36 @@ grib_accessor_class* grib_accessor_class_bufr_extract_datetime_subsets = &_grib_ static void init_class(grib_accessor_class* c) { - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->unpack_double = (*(c->super))->unpack_double; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; + c->dump = (*(c->super))->dump; + c->next_offset = (*(c->super))->next_offset; + c->string_length = (*(c->super))->string_length; + c->value_count = (*(c->super))->value_count; + c->byte_count = (*(c->super))->byte_count; + c->byte_offset = (*(c->super))->byte_offset; + c->sub_section = (*(c->super))->sub_section; + c->pack_missing = (*(c->super))->pack_missing; + c->is_missing = (*(c->super))->is_missing; + c->unpack_long = (*(c->super))->unpack_long; + c->pack_double = (*(c->super))->pack_double; + c->unpack_double = (*(c->super))->unpack_double; + c->pack_string = (*(c->super))->pack_string; + c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; + c->pack_bytes = (*(c->super))->pack_bytes; + c->unpack_bytes = (*(c->super))->unpack_bytes; + c->pack_expression = (*(c->super))->pack_expression; + c->notify_change = (*(c->super))->notify_change; + c->update_size = (*(c->super))->update_size; + c->preferred_size = (*(c->super))->preferred_size; + c->resize = (*(c->super))->resize; + c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; + c->next = (*(c->super))->next; + c->compare = (*(c->super))->compare; + c->unpack_double_element = (*(c->super))->unpack_double_element; + c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; + c->clear = (*(c->super))->clear; + c->make_clone = (*(c->super))->make_clone; } /* END_CLASS_IMP */ @@ -183,23 +183,39 @@ static int build_long_array(grib_context* c, grib_handle* h, int compressed, long** array, const char* key, long numberOfSubsets, int zero_on_error) { int err = 0; + size_t i; size_t n=numberOfSubsets; *array=(long*)grib_context_malloc_clear(c, sizeof(long)*numberOfSubsets); - err = grib_get_long_array(h, key, *array, &n); - if (zero_on_error) { - if (err) { - err = 0; - (*array)[0] = 0; - n = 1; + if(compressed) { + err = grib_get_long_array(h, key, *array, &n); + if (zero_on_error) { + if (err) { + err = 0; + (*array)[0] = 0; + n = 1; + } } - } - if (err) return err; - if (n!=numberOfSubsets) { - if (n==1) { - long i; - for (i=1;i1) + return GRIB_NOT_IMPLEMENTED; + err=grib_get_long(h,keystr, &lVal ); + if (err) return err; + (*array)[i]=lVal; } } return err; @@ -212,38 +228,37 @@ static int select_datetime(grib_accessor* a) grib_accessor_bufr_extract_datetime_subsets *self =(grib_accessor_bufr_extract_datetime_subsets*)a; grib_handle* h=grib_handle_of_accessor(a); grib_context* c=h->context; + size_t n; + double julianStart=0, julianEnd=0, julianDT=0; + char start_str[80]={0,},end_str[80]={0,},datetime_str[80]={0,}; + long yearRank,monthRank,dayRank,hourRank,minuteRank,secondRank; + long yearStart,monthStart,dayStart,hourStart,minuteStart,secondStart; + long yearEnd,monthEnd,dayEnd,hourEnd,minuteEnd,secondEnd; + long *year,*month,*day,*hour,*minute; + double *second; + long numberOfSubsets,i; + grib_iarray* subsets; + long *subsets_ar=0; + size_t nsubsets=0; + char yearstr[20]="year"; + char monthstr[20]="month"; + char daystr[20]="day"; + char hourstr[20]="hour"; + char minutestr[20]="minute"; + char secondstr[20]="second"; ret=grib_get_long(h,"compressedData",&compressed); if (ret) return ret; + ret=grib_get_long(h,self->numberOfSubsets,&numberOfSubsets); + if (ret) return ret; + + subsets=grib_iarray_new(c,numberOfSubsets,10); + + ret=grib_set_long(h,"unpack",1); + if (ret) return ret; + if (compressed) { - size_t n; - double julianStart=0, julianEnd=0, julianDT=0; - char start_str[80]={0,},end_str[80]={0,},datetime_str[80]={0,}; - long yearRank,monthRank,dayRank,hourRank,minuteRank,secondRank; - long yearStart,monthStart,dayStart,hourStart,minuteStart,secondStart; - long yearEnd,monthEnd,dayEnd,hourEnd,minuteEnd,secondEnd; - long *year,*month,*day,*hour,*minute; - double *second; - long numberOfSubsets,i; - grib_iarray* subsets; - long *subsets_ar=0; - size_t nsubsets=0; - char yearstr[20]={0,}; - char monthstr[20]={0,}; - char daystr[20]={0,}; - char hourstr[20]={0,}; - char minutestr[20]={0,}; - char secondstr[20]={0,}; - - ret=grib_get_long(h,self->numberOfSubsets,&numberOfSubsets); - if (ret) return ret; - - subsets=grib_iarray_new(c,numberOfSubsets,10); - - ret=grib_set_long(h,"unpack",1); - if (ret) return ret; - ret=grib_get_long(h,"extractDateTimeYearRank",&yearRank); if (ret) return ret; sprintf(yearstr,"#%ld#year",yearRank); @@ -267,30 +282,32 @@ static int select_datetime(grib_accessor* a) ret=grib_get_long(h,"extractDateTimeSecondRank",&secondRank); if (ret) return ret; sprintf(secondstr,"#%ld#second",secondRank); + } - /* YEAR */ - ret = build_long_array(c, h, compressed, &year, yearstr, numberOfSubsets, 0); - if (ret) return ret; + /* YEAR */ + ret = build_long_array(c, h, compressed, &year, yearstr, numberOfSubsets, 0); + if (ret) return ret; - /* MONTH */ - ret = build_long_array(c, h, compressed, &month, monthstr, numberOfSubsets, 0); - if (ret) return ret; + /* MONTH */ + ret = build_long_array(c, h, compressed, &month, monthstr, numberOfSubsets, 0); + if (ret) return ret; - /* DAY */ - ret = build_long_array(c, h, compressed, &day, daystr, numberOfSubsets, 0); - if (ret) return ret; + /* DAY */ + ret = build_long_array(c, h, compressed, &day, daystr, numberOfSubsets, 0); + if (ret) return ret; - /* HOUR */ - ret = build_long_array(c, h, compressed, &hour, hourstr, numberOfSubsets, 0); - if (ret) return ret; + /* HOUR */ + ret = build_long_array(c, h, compressed, &hour, hourstr, numberOfSubsets, 0); + if (ret) return ret; - /* MINUTE: Special treatment if error => set all entries to zero */ - ret = build_long_array(c, h, compressed, &minute, minutestr, numberOfSubsets, 1); - if (ret) return ret; + /* MINUTE: Special treatment if error => set all entries to zero */ + ret = build_long_array(c, h, compressed, &minute, minutestr, numberOfSubsets, 1); + if (ret) return ret; - /* SECOND: Double array */ - n=numberOfSubsets; - second=(double*)grib_context_malloc_clear(c,sizeof(double)*numberOfSubsets); + /* SECOND: Double array */ + n=numberOfSubsets; + second=(double*)grib_context_malloc_clear(c,sizeof(double)*numberOfSubsets); + if(compressed) { ret=grib_get_double_array(h,secondstr,second,&n); if (ret) { ret=0; @@ -302,94 +319,105 @@ static int select_datetime(grib_accessor* a) for (i=1;i=julianStart && julianEnd>=julianDT) { - /*printf(" ....ADDING subset %ld\n",i);*/ - grib_iarray_push(subsets,i+1); - } else { - /*printf(" ....Exclude subset %ld\n",i);*/ - } - } - - nsubsets=grib_iarray_used_size(subsets); - ret=grib_set_long(h,"extractedDateTimeNumberOfSubsets",nsubsets); - if (ret) return ret; - - if (nsubsets!=0) { - subsets_ar=grib_iarray_get_array(subsets); - ret=grib_set_long_array(h,self->extractSubsetList,subsets_ar,nsubsets); - if (ret) return ret; - - ret=grib_set_long(h,self->doExtractSubsets,1); - if (ret) return ret; - } - - grib_context_free(c,year); - grib_context_free(c,month); - grib_context_free(c,day); - grib_context_free(c,hour); - grib_context_free(c,minute); - grib_context_free(c,second); - grib_iarray_delete(subsets); - subsets=0; - } else { - grib_context_log(c, GRIB_LOG_ERROR, "Time interval extraction not implemented for uncompressed BUFR messages"); - return GRIB_NOT_IMPLEMENTED; + /* uncompressed */ + size_t values_len=0; + for(i=0; i1) return GRIB_NOT_IMPLEMENTED; + ret=grib_get_double(h,secondstr,&(second[i])); + if (ret) return ret; + } + } } + ret=grib_get_long(h,"extractDateTimeYearStart",&yearStart); + if (ret) return ret; + ret=grib_get_long(h,"extractDateTimeMonthStart",&monthStart); + if (ret) return ret; + ret=grib_get_long(h,"extractDateTimeDayStart",&dayStart); + if (ret) return ret; + ret=grib_get_long(h,"extractDateTimeHourStart",&hourStart); + if (ret) return ret; + ret=grib_get_long(h,"extractDateTimeMinuteStart",&minuteStart); + if (ret) minuteStart=0; + ret=grib_get_long(h,"extractDateTimeSecondStart",&secondStart); + if (ret) secondStart=0; + sprintf(start_str,"%04ld/%02ld/%02ld %02ld:%02ld:%02ld",yearStart,monthStart,dayStart,hourStart,minuteStart,secondStart); + julianStart = date_to_julian(yearStart,monthStart,dayStart,hourStart,minuteStart,secondStart); + if (julianStart == -1) { + grib_context_log(c,GRIB_LOG_ERROR,"Invalid start date/time: %s", start_str); + return GRIB_INTERNAL_ERROR; + } + + ret=grib_get_long(h,"extractDateTimeYearEnd",&yearEnd); + if (ret) return ret; + ret=grib_get_long(h,"extractDateTimeMonthEnd",&monthEnd); + if (ret) return ret; + ret=grib_get_long(h,"extractDateTimeDayEnd",&dayEnd); + if (ret) return ret; + ret=grib_get_long(h,"extractDateTimeHourEnd",&hourEnd); + if (ret) return ret; + ret=grib_get_long(h,"extractDateTimeMinuteEnd",&minuteEnd); + if (ret) minuteEnd=0; + ret=grib_get_long(h,"extractDateTimeSecondEnd",&secondEnd); + if (ret) secondEnd=0; + sprintf(end_str,"%04ld/%02ld/%02ld %02ld:%02ld:%02ld",yearEnd,monthEnd,dayEnd,hourEnd,minuteEnd,secondEnd); + julianEnd = date_to_julian(yearEnd,monthEnd,dayEnd,hourEnd,minuteEnd,secondEnd); + if (julianEnd == -1) { + grib_context_log(c,GRIB_LOG_ERROR,"Invalid end date/time: %s", end_str); + return GRIB_INTERNAL_ERROR; + } + + if (julianEnd <= julianStart) { + grib_context_log(c,GRIB_LOG_ERROR,"Wrong definition of time interval: end (%s) is not after start (%s)",end_str,start_str); + return GRIB_INTERNAL_ERROR; + } + + for (i=0;i=julianStart && julianEnd>=julianDT) { + /*printf(" ....ADDING subset %ld\n",i);*/ + grib_iarray_push(subsets,i+1); + } else { + /*printf(" ....Exclude subset %ld\n",i);*/ + } + } + + nsubsets=grib_iarray_used_size(subsets); + ret=grib_set_long(h,"extractedDateTimeNumberOfSubsets",nsubsets); + if (ret) return ret; + + if (nsubsets!=0) { + subsets_ar=grib_iarray_get_array(subsets); + ret=grib_set_long_array(h,self->extractSubsetList,subsets_ar,nsubsets); + if (ret) return ret; + + ret=grib_set_long(h,self->doExtractSubsets,1); + if (ret) return ret; + } + + grib_context_free(c,year); + grib_context_free(c,month); + grib_context_free(c,day); + grib_context_free(c,hour); + grib_context_free(c,minute); + grib_context_free(c,second); + grib_iarray_delete(subsets); + subsets=0; + return ret; } From f2b13f0edb8882ca59de8878128fcddba5174710 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 29 Apr 2019 17:06:14 +0100 Subject: [PATCH 202/414] ECC-342: test case --- tests/bufr_filter_extract_datetime.sh | 66 +++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/tests/bufr_filter_extract_datetime.sh b/tests/bufr_filter_extract_datetime.sh index c07ef5e31..c214e5d0e 100755 --- a/tests/bufr_filter_extract_datetime.sh +++ b/tests/bufr_filter_extract_datetime.sh @@ -27,6 +27,52 @@ fBufrTmp=${label}".bufr.tmp" #Define filter rules file fRules=${label}.filter +generate_filter() +{ + start_date=$1 + end_date=$2 + num_subsets_expected=$3 + + year1=`echo $start_date | cut -c 1-4` + year2=`echo $end_date | cut -c 1-4` + month1=`echo $start_date | cut -c 5-6` + month2=`echo $end_date | cut -c 5-6` + day1=`echo $start_date | cut -c 7-8` + day2=`echo $end_date | cut -c 7-8` + hour1=`echo $start_date | cut -c 9-10` + hour2=`echo $end_date | cut -c 9-10` + minute1=`echo $start_date | cut -c 11-12` + minute2=`echo $end_date | cut -c 11-12` + second1=`echo $start_date | cut -c 13-14` + second2=`echo $end_date | cut -c 13-14` + + cat > $fRules < Date: Tue, 30 Apr 2019 13:51:00 +0100 Subject: [PATCH 203/414] Make the definitions and samples paths relocatable --- eccodes-import.cmake.in | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/eccodes-import.cmake.in b/eccodes-import.cmake.in index 9a6f7833e..62c20ffb6 100644 --- a/eccodes-import.cmake.in +++ b/eccodes-import.cmake.in @@ -3,7 +3,10 @@ if( @PNAME@_IS_BUILD_DIR_EXPORT ) set( ECCODES_SAMPLES_PATH @CMAKE_BINARY_DIR@/@ECCODES_SAMPLES_SUFF@ ) set( ECCODES_IFS_SAMPLES_PATH @CMAKE_BINARY_DIR@/@ECCODES_IFS_SAMPLES_SUFF@ ) else() - set( ECCODES_DEFINITION_PATH @CMAKE_INSTALL_PREFIX@/@ECCODES_DEFINITION_SUFF@ ) - set( ECCODES_SAMPLES_PATH @CMAKE_INSTALL_PREFIX@/@ECCODES_SAMPLES_SUFF@ ) - set( ECCODES_IFS_SAMPLES_PATH @CMAKE_INSTALL_PREFIX@/@ECCODES_IFS_SAMPLES_SUFF@ ) + if( NOT DEFINED eccodes_BASE_DIR ) # ecbuild 2.x + get_filename_component( eccodes_BASE_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE ) + endif() + set( ECCODES_DEFINITION_PATH ${eccodes_BASE_DIR}/@ECCODES_DEFINITION_SUFF@ ) + set( ECCODES_SAMPLES_PATH ${eccodes_BASE_DIR}/@ECCODES_SAMPLES_SUFF@ ) + set( ECCODES_IFS_SAMPLES_PATH ${eccodes_BASE_DIR}/@ECCODES_IFS_SAMPLES_SUFF@ ) endif() From 4f69672b8722eac567f10202c76d0a86d04aaad8 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 30 Apr 2019 14:29:03 +0100 Subject: [PATCH 204/414] Bamboo: Fix GCC build --- bamboo/JOB1-env.sh | 1 + 1 file changed, 1 insertion(+) create mode 120000 bamboo/JOB1-env.sh diff --git a/bamboo/JOB1-env.sh b/bamboo/JOB1-env.sh new file mode 120000 index 000000000..033cf012d --- /dev/null +++ b/bamboo/JOB1-env.sh @@ -0,0 +1 @@ +GCC-env.sh \ No newline at end of file From 0e67d66921e2af1cdb32ccd5ec337305614bc77c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 30 Apr 2019 17:54:35 +0100 Subject: [PATCH 205/414] ECC-904, ECC-905 and ECC-906 --- .../grib1/grid_definition_gaussian.def | 14 +- definitions/grib2/template.3.gaussian.def | 11 +- ...accessor_class_number_of_points_gaussian.c | 131 +++++++++++++- src/grib_api_prototypes.h | 1 + src/grib_gaussian_reduced.c | 8 +- src/grib_iterator_class_gaussian_reduced.c | 167 +++++++++++------- src/grib_nearest_class_reduced.c | 32 +++- 7 files changed, 278 insertions(+), 86 deletions(-) diff --git a/definitions/grib1/grid_definition_gaussian.def b/definitions/grib1/grid_definition_gaussian.def index 1addb30af..a33b834dc 100644 --- a/definitions/grib1/grid_definition_gaussian.def +++ b/definitions/grib1/grid_definition_gaussian.def @@ -52,10 +52,17 @@ meta global global_gaussian(N,Ni,iDirectionIncrement, longitudeOfLastGridPoint, PLPresent,pl) = 0 : dump; -meta numberOfDataPoints number_of_points_gaussian(Ni,Nj,PLPresent,pl, - N, +# With legacy mode support +meta numberOfDataPoints number_of_points_gaussian(Ni,Nj,PLPresent,pl,N, latitudeOfFirstGridPointInDegrees,longitudeOfFirstGridPointInDegrees, - latitudeOfLastGridPointInDegrees,longitudeOfLastGridPointInDegrees) : dump; + latitudeOfLastGridPointInDegrees,longitudeOfLastGridPointInDegrees,one) : dump; + +# Use the new algorithm for counting. No support for legacy mode +meta numberOfDataPointsExpected number_of_points_gaussian(Ni,Nj,PLPresent,pl,N, + latitudeOfFirstGridPointInDegrees,longitudeOfFirstGridPointInDegrees, + latitudeOfLastGridPointInDegrees,longitudeOfLastGridPointInDegrees,zero) : dump; + +meta legacyGaussSubarea evaluate(numberOfDataPoints != numberOfDataPointsExpected); alias numberOfPoints=numberOfDataPoints; # alias numberOfExpectedPoints=numberOfDataPoints; @@ -96,4 +103,3 @@ meta isOctahedral octahedral_gaussian(N, Ni, PLPresent, pl) = 0 : no_copy,dump; meta gaussianGridName gaussian_grid_name(N, Ni, isOctahedral); alias gridName=gaussianGridName; - diff --git a/definitions/grib2/template.3.gaussian.def b/definitions/grib2/template.3.gaussian.def index 352b406cb..1db8ba404 100755 --- a/definitions/grib2/template.3.gaussian.def +++ b/definitions/grib2/template.3.gaussian.def @@ -89,9 +89,10 @@ meta gaussianGridName gaussian_grid_name(N, Ni, isOctahedral); alias gridName=gaussianGridName; -# Useful for sub-areas -# meta numberOfExpectedPoints number_of_points_gaussian(Ni,Nj,PLPresent,pl, -# N, -# latitudeOfFirstGridPointInDegrees,longitudeOfFirstGridPointInDegrees, -# latitudeOfLastGridPointInDegrees,longitudeOfLastGridPointInDegrees) : dump; +# For sub-areas +# Uses new algorithm for counting. No support for legacy mode +meta numberOfDataPointsExpected number_of_points_gaussian(Ni,Nj,PLPresent,pl,N, + latitudeOfFirstGridPointInDegrees,longitudeOfFirstGridPointInDegrees, + latitudeOfLastGridPointInDegrees,longitudeOfLastGridPointInDegrees,zero) : dump; +meta legacyGaussSubarea evaluate(numberOfDataPoints != numberOfDataPointsExpected); diff --git a/src/grib_accessor_class_number_of_points_gaussian.c b/src/grib_accessor_class_number_of_points_gaussian.c index ae4b0e619..c09b47141 100644 --- a/src/grib_accessor_class_number_of_points_gaussian.c +++ b/src/grib_accessor_class_number_of_points_gaussian.c @@ -32,6 +32,7 @@ MEMBERS = const char* lon_first MEMBERS = const char* lat_last MEMBERS = const char* lon_last + MEMBERS = const char* support_legacy END_CLASS_DEF */ @@ -63,6 +64,7 @@ typedef struct grib_accessor_number_of_points_gaussian { const char* lon_first; const char* lat_last; const char* lon_last; + const char* support_legacy; } grib_accessor_number_of_points_gaussian; extern grib_accessor_class* grib_accessor_class_long; @@ -167,6 +169,7 @@ static void init(grib_accessor* a,const long l, grib_arguments* c) self->lon_first = grib_arguments_get_name(h,c,n++); self->lat_last = grib_arguments_get_name(h,c,n++); self->lon_last = grib_arguments_get_name(h,c,n++); + self->support_legacy = grib_arguments_get_name(h,c,n++); a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION; a->length=0; @@ -303,7 +306,132 @@ static int get_number_of_data_values(grib_handle* h, size_t* numDataValues) return err; } +static int unpack_long_with_legacy_support(grib_accessor* a, long* val, size_t *len); +static int unpack_long_new(grib_accessor* a, long* val, size_t *len); + static int unpack_long(grib_accessor* a, long* val, size_t *len) +{ + int ret=GRIB_SUCCESS; + long support_legacy=1; + grib_accessor_number_of_points_gaussian* self = (grib_accessor_number_of_points_gaussian*)a; + grib_handle* h = grib_handle_of_accessor(a); + + if((ret = grib_get_long_internal(h, self->support_legacy,&support_legacy)) != GRIB_SUCCESS) + return ret; + if (support_legacy==1) return unpack_long_with_legacy_support(a, val, len); + else return unpack_long_new(a, val, len); +} + +/* New algorithm */ +static int unpack_long_new(grib_accessor* a, long* val, size_t *len) +{ + int ret=GRIB_SUCCESS; + int is_global = 0; + long ni=0,nj=0,plpresent=0,order=0; + size_t plsize=0; + double* lats={0,}; + double lat_first,lat_last,lon_first,lon_last; + long* pl=NULL; + long* plsave=NULL; + long row_count; + long ilon_first=0,ilon_last=0; + double angular_precision = 1.0/1000000.0; + long editionNumber = 0; + grib_handle* h = grib_handle_of_accessor(a); + + grib_accessor_number_of_points_gaussian* self = (grib_accessor_number_of_points_gaussian*)a; + grib_context* c=a->context; + + if((ret = grib_get_long_internal(h, self->ni,&ni)) != GRIB_SUCCESS) + return ret; + + if((ret = grib_get_long_internal(h, self->nj,&nj)) != GRIB_SUCCESS) + return ret; + + if((ret = grib_get_long_internal(h, self->plpresent,&plpresent)) != GRIB_SUCCESS) + return ret; + + if (nj == 0) return GRIB_GEOCALCULUS_PROBLEM; + + if (grib_get_long(h, "editionNumber", &editionNumber)==GRIB_SUCCESS) { + if (editionNumber == 1) angular_precision = 1.0/1000; + } + + if (plpresent) { + long max_pl=0; + float d = 0; + int j=0; + double lon_first_row=0,lon_last_row=0; + + /*reduced*/ + if((ret = grib_get_long_internal(h, self->order,&order)) != GRIB_SUCCESS) + return ret; + if((ret = grib_get_double_internal(h, self->lat_first,&lat_first)) != GRIB_SUCCESS) + return ret; + if((ret = grib_get_double_internal(h, self->lon_first,&lon_first)) != GRIB_SUCCESS) + return ret; + if((ret = grib_get_double_internal(h, self->lat_last,&lat_last)) != GRIB_SUCCESS) + return ret; + if((ret = grib_get_double_internal(h, self->lon_last,&lon_last)) != GRIB_SUCCESS) + return ret; + + lats=(double*)grib_context_malloc(a->context,sizeof(double)*order*2); + if((ret = grib_get_gaussian_latitudes(order, lats)) != GRIB_SUCCESS) + return ret; + + if((ret = grib_get_size(h,self->pl,&plsize)) != GRIB_SUCCESS) + return ret; + + pl=(long*)grib_context_malloc_clear(c,sizeof(long)*plsize); + plsave=pl; + grib_get_long_array_internal(h,self->pl,pl, &plsize); + + if (lon_last<0) lon_last+=360; + if (lon_first<0) lon_first+=360; + + /* Find the maximum element of "pl" array, do not assume it's 4*N! */ + /* This could be an Octahedral Gaussian Grid */ + max_pl = pl[0]; + for (j=1; j max_pl) max_pl = pl[j]; + } + + d=fabs(lats[0]-lats[1]); + is_global = 0; /* ECC-445 */ + + correctWestEast(max_pl, angular_precision, &lon_first, &lon_last); + + if ( !is_global ) { + /*sub area*/ + (void)d; + *val=0; + for (j=0;jcontext->debug) - printf("ECCODES DEBUG number_of_points_gaussian: LEGACY MODE activated. Count(=%ld) changed to size(values)\n",*val); + printf("ECCODES DEBUG number_of_points_gaussian: LEGACY MODE activated. " + "Count(=%ld) changed to num values(=%ld)\n",*val,(long)numDataValues); *val = numDataValues; } } diff --git a/src/grib_api_prototypes.h b/src/grib_api_prototypes.h index 9617606f2..1b14adce0 100644 --- a/src/grib_api_prototypes.h +++ b/src/grib_api_prototypes.h @@ -809,6 +809,7 @@ long accessor_raw_get_offset(grib_accessor *a); /* grib_gaussian_reduced.c */ void grib_get_reduced_row_wrapper(grib_handle *h, long pl, double lon_first, double lon_last, long *npoints, long *ilon_first, long *ilon_last); void grib_get_reduced_row(long pl, double lon_first, double lon_last, long *npoints, long *ilon_first, long *ilon_last); +void grib_get_reduced_row_legacy(long pl, double lon_first, double lon_last, long *npoints, long *ilon_first, long *ilon_last); void grib_get_reduced_row_p(long pl, double lon_first, double lon_last, long *npoints, double *olon_first, double *olon_last); /* grib_accessor_class_abstract_vector.c */ diff --git a/src/grib_gaussian_reduced.c b/src/grib_gaussian_reduced.c index 1647bda2b..8f1d056af 100644 --- a/src/grib_gaussian_reduced.c +++ b/src/grib_gaussian_reduced.c @@ -310,9 +310,9 @@ void grib_get_reduced_row_wrapper(grib_handle* h, long pl, double lon_first, dou */ } -#if 0 -/* This was the legacy way of counting the points. Now deprecated */ -static void grib_get_reduced_row1(long pl, double lon_first, double lon_last, long* npoints, long* ilon_first, long* ilon_last ) +/* This was the legacy way of counting the points within a subarea of a Gaussian grid. + In the days of Prodgen/libemos */ +void grib_get_reduced_row_legacy(long pl, double lon_first, double lon_last, long* npoints, long* ilon_first, long* ilon_last) { double range=0,dlon_first=0,dlon_last=0; long irange; @@ -393,14 +393,12 @@ static void grib_get_reduced_row1(long pl, double lon_first, double lon_last, lo pl,*npoints,range,*ilon_first,*ilon_last,irange); #endif } - } if (*ilon_first<0) *ilon_first+=pl; return; } -#endif /* New method based on eckit Fractions and matching MIR count */ void grib_get_reduced_row(long pl, double lon_first, double lon_last, long* npoints, long* ilon_first, long* ilon_last ) diff --git a/src/grib_iterator_class_gaussian_reduced.c b/src/grib_iterator_class_gaussian_reduced.c index 505f2f3c0..f8c383e54 100644 --- a/src/grib_iterator_class_gaussian_reduced.c +++ b/src/grib_iterator_class_gaussian_reduced.c @@ -14,6 +14,7 @@ #include "grib_api_internal.h" +#include #include /* @@ -126,58 +127,33 @@ static size_t count_subarea_points(grib_handle* h, get_reduced_row_proc get_redu return result; } -/* ECC-747 */ -static int iterate_reduced_gaussian_subarea_algorithm2(grib_iterator* iter, grib_handle* h, +/* Search for 'x' in the array 'xx' (the index of last element being 'n') and return index in 'j' */ +static void binary_search(double xx[], const unsigned long n, double x, long *j) +{ + /*This routine works only on descending ordered arrays*/ +#define EPSILON 1e-3 + + unsigned long ju,jm,jl; + jl=0; + ju=n; + while (ju-jl > 1) { + jm=(ju+jl) >> 1; + if (fabs(x-xx[jm]) < EPSILON) { + /* found something close enough. We're done */ + *j=jm; + return; + } + if (x < xx[jm]) jl=jm; + else ju=jm; + } + *j=jl; +} + +/* Use legacy way to compute the iterator latitude/longitude values */ +static int iterate_reduced_gaussian_subarea_legacy(grib_iterator* iter, grib_handle* h, double lat_first, double lon_first, double lat_last, double lon_last, double* lats, long* pl, size_t plsize) -{ - int err = 0; - int l = 0; - size_t j = 0; - long row_count=0, i=0; - double d=0; - double olon_first, olon_last; - grib_iterator_gaussian_reduced* self = (grib_iterator_gaussian_reduced*)iter; - get_reduced_row_proc get_reduced_row = &grib_get_reduced_row; - - if (h->context->debug) { - const size_t np = count_subarea_points(h, get_reduced_row, pl, plsize, lon_first, lon_last); - printf("ECCODES DEBUG grib_iterator_class_gaussian_reduced: sub-area num points=%ld\n", (long)np); - } - - /*find starting latitude */ - d = fabs(lats[0] - lats[1]); - while (fabs(lat_first-lats[l]) > d ) {l++;} - - iter->e=0; - for (j=0;je >= iter->nv){ - /* Only print error message on the second pass */ - size_t np = count_subarea_points(h, get_reduced_row, pl, plsize, lon_first, lon_last); - grib_context_log(h->context,GRIB_LOG_ERROR, - "Reduced Gaussian iterator (sub-area). Num points=%ld, size(values)=%ld", np, iter->nv); - return GRIB_WRONG_GRID; - } - self->los[iter->e]=lon2; - self->las[iter->e]=lats[j+l]; - iter->e++; - } - } - return err; -} - -#if 0 -/* ECC-445: Try to compute the iterator latitude/longitude values. If algorithm2 is set, try a different point count */ -static int iterate_reduced_gaussian_subarea(grib_iterator* iter, grib_handle* h, - double lat_first, double lon_first, - double lat_last, double lon_last, - double* lats, long* pl, size_t plsize, int algorithm2) { int err = 0; int l = 0; @@ -187,13 +163,11 @@ static int iterate_reduced_gaussian_subarea(grib_iterator* iter, grib_handle* h, long ilon_first, ilon_last, i; grib_iterator_gaussian_reduced* self = (grib_iterator_gaussian_reduced*)iter; get_reduced_row_proc get_reduced_row = &grib_get_reduced_row; - if (algorithm2) { - get_reduced_row = &grib_get_reduced_row2; /* switch to 2nd algorithm */ - } + get_reduced_row = &grib_get_reduced_row_legacy; /* legacy algorithm */ if (h->context->debug) { const size_t np = count_subarea_points(h, get_reduced_row, pl, plsize, lon_first, lon_last); - printf("ECCODES DEBUG grib_iterator_class_gaussian_reduced: sub-area num points=%ld\n", (long)np); + printf("ECCODES DEBUG grib_iterator_class_gaussian_reduced: Legacy sub-area num points=%ld\n", (long)np); } /*find starting latitude */ @@ -210,12 +184,9 @@ static int iterate_reduced_gaussian_subarea(grib_iterator* iter, grib_handle* h, for (i=ilon_first;i<=ilon_last;i++) { if(iter->e >= iter->nv){ - if (algorithm2) { - /* Only print error message on the second pass */ - size_t np = count_subarea_points(h, get_reduced_row, pl, plsize, lon_first, lon_last); - grib_context_log(h->context,GRIB_LOG_ERROR, - "Reduced Gaussian iterator (sub-area). Num points=%ld, size(values)=%ld", np, iter->nv); - } + size_t np = count_subarea_points(h, get_reduced_row, pl, plsize, lon_first, lon_last); + grib_context_log(h->context,GRIB_LOG_ERROR, + "Reduced Gaussian iterator (sub-area legacy). Num points=%ld, size(values)=%ld", np, iter->nv); return GRIB_WRONG_GRID; } @@ -231,14 +202,80 @@ static int iterate_reduced_gaussian_subarea(grib_iterator* iter, grib_handle* h, } return err; } + +/* ECC-747 */ +static int iterate_reduced_gaussian_subarea_algorithm2(grib_iterator* iter, grib_handle* h, + double lat_first, double lon_first, + double lat_last, double lon_last, + double* lats, long* pl, size_t plsize, size_t numlats) +{ + int err = 0; + long l = 0; + size_t j = 0; + long row_count=0, i=0; + double olon_first, olon_last; + grib_iterator_gaussian_reduced* self = (grib_iterator_gaussian_reduced*)iter; + get_reduced_row_proc get_reduced_row = &grib_get_reduced_row; + + if (h->context->debug) { + const size_t np = count_subarea_points(h, get_reduced_row, pl, plsize, lon_first, lon_last); + printf("ECCODES DEBUG grib_iterator_class_gaussian_reduced: sub-area num points=%ld\n", (long)np); + } + + /* Find starting latitude */ + binary_search(lats, numlats-1, lat_first, &l); + Assert(l < numlats); + +#if 0 + for(il=0; ile=0; + for (j=0;je >= iter->nv){ + /* Only print error message on the second pass */ + size_t np = count_subarea_points(h, get_reduced_row, pl, plsize, lon_first, lon_last); + grib_context_log(h->context,GRIB_LOG_ERROR, + "Reduced Gaussian iterator (sub-area). Num points=%ld, size(values)=%ld", np, iter->nv); + return GRIB_WRONG_GRID; + } + self->los[iter->e]=lon2; + DebugAssert(j+l < numlats); + self->las[iter->e]=lats[j+l]; + iter->e++; + } + } + + if (iter->e != iter->nv) { + /* Fewer counted points in the sub-area than the number of data values */ + const size_t legacy_count = count_subarea_points(h, grib_get_reduced_row_legacy, pl, plsize, lon_first, lon_last); + if (iter->nv == legacy_count) { + /* Legacy (produced by PRODGEN/LIBEMOS) */ + return iterate_reduced_gaussian_subarea_legacy(iter, h, lat_first, lon_first, lat_last, lon_last, lats, pl, plsize); + } else { + /* TODO: A gap exists! Not all values can be mapped. Inconsistent grid or error in calculating num. points! */ + } + } + return err; +} + static int iterate_reduced_gaussian_subarea_wrapper(grib_iterator* iter, grib_handle* h, double lat_first, double lon_first, double lat_last, double lon_last, - double* lats, long* pl, size_t plsize) + double* lats, long* pl, size_t plsize, size_t numlats) { - return iterate_reduced_gaussian_subarea_algorithm2(iter, h, lat_first, lon_first, lat_last, lon_last, lats, pl, plsize); + return iterate_reduced_gaussian_subarea_algorithm2(iter, h, lat_first, lon_first, lat_last, lon_last, lats, pl, plsize, numlats); #if 0 /* Try legacy approach, if that fails try the next algorithm */ @@ -258,6 +295,7 @@ static int init(grib_iterator* iter, grib_handle* h, grib_arguments* args) double angular_precision = 1.0/1000000.0; double* lats; size_t plsize=0; + size_t numlats=0; long* pl; long max_pl=0; long nj=0,order=0,i; @@ -291,7 +329,8 @@ static int init(grib_iterator* iter, grib_handle* h, grib_arguments* args) if (editionNumber == 1) angular_precision = 1.0/1000; } - lats=(double*)grib_context_malloc(h->context,sizeof(double)*order*2); + numlats = order*2; + lats=(double*)grib_context_malloc(h->context,sizeof(double)*numlats); if (!lats) return GRIB_OUT_OF_MEMORY; if((ret = grib_get_gaussian_latitudes(order, lats)) != GRIB_SUCCESS) return ret; @@ -323,7 +362,7 @@ static int init(grib_iterator* iter, grib_handle* h, grib_arguments* args) is_global = is_gaussian_global(lat_first, lat_last, lon_first, lon_last, max_pl, lats, angular_precision); if ( !is_global ) { /*sub area*/ - ret = iterate_reduced_gaussian_subarea_wrapper(iter, h, lat_first, lon_first, lat_last, lon_last, lats, pl, plsize); + ret = iterate_reduced_gaussian_subarea_wrapper(iter, h, lat_first, lon_first, lat_last, lon_last, lats, pl, plsize, numlats); } else { /*global*/ iter->e=0; @@ -340,7 +379,7 @@ static int init(grib_iterator* iter, grib_handle* h, grib_arguments* args) /*grib_context_log(h->context,GRIB_LOG_ERROR, "Failed to initialise reduced Gaussian iterator (global)");*/ /*return GRIB_WRONG_GRID;*/ /*Try now as NON-global*/ - ret = iterate_reduced_gaussian_subarea_wrapper(iter, h, lat_first, lon_first, lat_last, lon_last, lats, pl, plsize); + ret = iterate_reduced_gaussian_subarea_wrapper(iter, h, lat_first, lon_first, lat_last, lon_last, lats, pl, plsize, numlats); if (ret !=GRIB_SUCCESS) grib_context_log(h->context,GRIB_LOG_ERROR, "Failed to initialise reduced Gaussian iterator (global)"); goto finalise; } diff --git a/src/grib_nearest_class_reduced.c b/src/grib_nearest_class_reduced.c index e30086cc2..64b1971bd 100644 --- a/src/grib_nearest_class_reduced.c +++ b/src/grib_nearest_class_reduced.c @@ -122,6 +122,14 @@ static int init(grib_nearest* nearest,grib_handle* h,grib_arguments* args) return 0; } +typedef void (*get_reduced_row_proc)(long pl, double lon_first, double lon_last, long* npoints, long* ilon_first, long* ilon_last); + +static int is_legacy(grib_handle* h) +{ + long is_legacy = 0; + return (grib_get_long(h, "legacyGaussSubarea", &is_legacy)==GRIB_SUCCESS && is_legacy==1); +} + #if 1 static int find(grib_nearest* nearest, grib_handle* h, double inlat, double inlon,unsigned long flags, @@ -137,6 +145,11 @@ static int find(grib_nearest* nearest, grib_handle* h, long iradius; double radius; int ilat=0,ilon=0; + const int is_legacy_grib = is_legacy(h); + get_reduced_row_proc get_reduced_row_func = &grib_get_reduced_row; + if (is_legacy_grib) { + get_reduced_row_func = &grib_get_reduced_row_legacy; + } if( (ret = grib_get_size(h,self->values_key,&nvalues))!= GRIB_SUCCESS) return ret; @@ -188,7 +201,8 @@ static int find(grib_nearest* nearest, grib_handle* h, } while(lon>360) lon-=360; if(!self->global) { /* ECC-756 */ - if (lon>180 && lon<360) lon-=360; + if (!is_legacy_grib) /*TODO*/ + if (lon>180 && lon<360) lon-=360; } self->lons[ilon++]=lon; } @@ -210,6 +224,10 @@ static int find(grib_nearest* nearest, grib_handle* h, if (self->global) { while (inlon<0) inlon+=360; while (inlon>360) inlon-=360; + } else { + /* TODO: Experimental */ + if (!is_legacy_grib) + if (inlon>180 && inlon<360) inlon-=360; } ilat=self->lats_count; @@ -247,11 +265,11 @@ static int find(grib_nearest* nearest, grib_handle* h, nlon=0; for (jj=0;jjj[0];jj++) { row_count=0;ilon_first=0;ilon_last=0; - grib_get_reduced_row_wrapper(h, pl[jj],self->lon_first,self->lon_last,&row_count,&ilon_first,&ilon_last); + get_reduced_row_func(pl[jj],self->lon_first,self->lon_last,&row_count,&ilon_first,&ilon_last); nlon+=row_count; } row_count=0;ilon_first=0;ilon_last=0; - grib_get_reduced_row_wrapper(h, pl[self->j[0]],self->lon_first,self->lon_last,&row_count,&ilon_first,&ilon_last); + get_reduced_row_func(pl[self->j[0]],self->lon_first,self->lon_last,&row_count,&ilon_first,&ilon_last); nplm1=row_count-1; } lons=self->lons+nlon; @@ -283,7 +301,7 @@ static int find(grib_nearest* nearest, grib_handle* h, if (!nearest_lons_found) { if (!self->global) { row_count=0;ilon_first=0;ilon_last=0; - grib_get_reduced_row_wrapper(h, pl[self->j[0]],self->lon_first,self->lon_last,&row_count,&ilon_first,&ilon_last); + get_reduced_row_func(pl[self->j[0]],self->lon_first,self->lon_last,&row_count,&ilon_first,&ilon_last); } else { row_count=pl[self->j[0]]; } @@ -301,11 +319,11 @@ static int find(grib_nearest* nearest, grib_handle* h, } else { for (jj=0;jjj[1];jj++) { row_count=0;ilon_first=0;ilon_last=0; - grib_get_reduced_row_wrapper(h, pl[jj],self->lon_first,self->lon_last,&row_count,&ilon_first,&ilon_last); + get_reduced_row_func(pl[jj],self->lon_first,self->lon_last,&row_count,&ilon_first,&ilon_last); nlon+=row_count; } row_count=0;ilon_first=0;ilon_last=0; - grib_get_reduced_row_wrapper(h, pl[self->j[1]],self->lon_first,self->lon_last,&nplm1,&ilon_first,&ilon_last); + get_reduced_row_func(pl[self->j[1]],self->lon_first,self->lon_last,&nplm1,&ilon_first,&ilon_last); nplm1--; } lons=self->lons+nlon; @@ -334,7 +352,7 @@ static int find(grib_nearest* nearest, grib_handle* h, if (!nearest_lons_found) { if (!self->global) { row_count=0;ilon_first=0;ilon_last=0; - grib_get_reduced_row_wrapper(h, pl[self->j[1]],self->lon_first,self->lon_last,&row_count,&ilon_first,&ilon_last); + get_reduced_row_func(pl[self->j[1]],self->lon_first,self->lon_last,&row_count,&ilon_first,&ilon_last); } else { row_count=pl[self->j[1]]; } From 9398861456a3daf6d23c67e6e02cb227fc97ff5f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 30 Apr 2019 17:55:21 +0100 Subject: [PATCH 206/414] Update version --- .appveyor.yml | 2 +- VERSION.cmake | 2 +- version.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index 87aa5765e..5a6c12a4e 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -2,7 +2,7 @@ # general configuration # #---------------------------------# -version: 2.12.4-{build}-{branch} +version: 2.12.5-{build}-{branch} branches: only: diff --git a/VERSION.cmake b/VERSION.cmake index feb8caa63..70738fade 100644 --- a/VERSION.cmake +++ b/VERSION.cmake @@ -1 +1 @@ -set( ${PROJECT_NAME}_VERSION_STR "2.12.4" ) +set( ${PROJECT_NAME}_VERSION_STR "2.12.5" ) diff --git a/version.sh b/version.sh index cbf1c08aa..8aad5b2fe 100644 --- a/version.sh +++ b/version.sh @@ -15,7 +15,7 @@ PACKAGE_NAME='eccodes' # Package version ECCODES_MAJOR_VERSION=2 ECCODES_MINOR_VERSION=12 -ECCODES_REVISION_VERSION=4 +ECCODES_REVISION_VERSION=5 ECCODES_CURRENT=1 ECCODES_REVISION=0 From d536148a641612adf62d8e15067d93d06ef59ad8 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 1 May 2019 17:22:22 +0100 Subject: [PATCH 207/414] Definitions clean up --- definitions/grib2/local.98.41.def | 7 --- definitions/grib2/local.98.42.def | 7 --- definitions/grib2/local.98.7.def | 8 --- definitions/grib2/local.98.9.def | 9 --- definitions/grib2/mars_labeling.def | 7 --- definitions/grib2/meta.def | 9 +-- definitions/grib2/parameters.def | 7 --- definitions/grib2/products_s2s.def | 7 --- definitions/grib2/products_tigge.def | 7 --- definitions/grib2/products_uerra.def | 7 --- definitions/grib2/rules.def | 7 --- definitions/grib2/template.1.offset.def | 7 --- definitions/grib2/template.3.10.def | 8 --- definitions/grib2/template.3.100.def | 7 --- definitions/grib2/template.3.1000.def | 8 --- definitions/grib2/template.3.101.def | 7 --- definitions/grib2/template.3.110.def | 8 --- definitions/grib2/template.3.1100.def | 8 --- definitions/grib2/template.3.12.def | 8 --- definitions/grib2/template.3.120.def | 7 --- definitions/grib2/template.3.1200.def | 8 --- definitions/grib2/template.3.130.def | 7 --- definitions/grib2/template.3.140.def | 7 --- definitions/grib2/template.3.20.def | 7 --- definitions/grib2/template.3.30.def | 8 --- definitions/grib2/template.3.31.def | 8 --- definitions/grib2/template.3.90.def | 7 --- definitions/grib2/template.3.gaussian.def | 7 --- definitions/grib2/template.3.grid.def | 8 --- definitions/grib2/template.3.latlon.def | 8 --- definitions/grib2/template.3.latlon_vares.def | 8 --- .../grib2/template.3.resolution_flags.def | 8 --- definitions/grib2/template.3.rotation.def | 7 --- .../grib2/template.3.scanning_mode.def | 7 --- .../grib2/template.3.shape_of_the_earth.def | 8 --- .../grib2/template.3.spherical_harmonics.def | 8 --- definitions/grib2/template.3.stretching.def | 7 --- definitions/grib2/template.4.0.def | 8 --- definitions/grib2/template.4.1.def | 7 --- definitions/grib2/template.4.10.def | 7 --- definitions/grib2/template.4.1000.def | 7 --- definitions/grib2/template.4.1001.def | 7 --- definitions/grib2/template.4.1002.def | 11 +--- definitions/grib2/template.4.11.def | 7 --- definitions/grib2/template.4.1100.def | 7 --- definitions/grib2/template.4.1101.def | 7 --- definitions/grib2/template.4.12.def | 7 --- definitions/grib2/template.4.13.def | 8 --- definitions/grib2/template.4.14.def | 7 --- definitions/grib2/template.4.15.def | 7 --- definitions/grib2/template.4.2.def | 7 --- definitions/grib2/template.4.20.def | 40 ++++--------- definitions/grib2/template.4.254.def | 7 --- definitions/grib2/template.4.3.def | 7 --- definitions/grib2/template.4.30.def | 7 --- definitions/grib2/template.4.31.def | 7 --- definitions/grib2/template.4.311.def | 8 --- definitions/grib2/template.4.32.def | 7 --- definitions/grib2/template.4.33.def | 7 --- definitions/grib2/template.4.34.def | 7 --- definitions/grib2/template.4.35.def | 7 --- definitions/grib2/template.4.4.def | 7 --- definitions/grib2/template.4.40.def | 7 --- definitions/grib2/template.4.41.def | 7 --- definitions/grib2/template.4.42.def | 7 --- definitions/grib2/template.4.43.def | 7 --- definitions/grib2/template.4.44.def | 7 --- definitions/grib2/template.4.45.def | 7 --- definitions/grib2/template.4.46.def | 7 --- definitions/grib2/template.4.47.def | 7 --- definitions/grib2/template.4.48.def | 7 --- definitions/grib2/template.4.49.def | 7 --- definitions/grib2/template.4.5.def | 7 --- definitions/grib2/template.4.51.def | 7 --- definitions/grib2/template.4.53.def | 8 +-- definitions/grib2/template.4.54.def | 8 +-- definitions/grib2/template.4.55.def | 8 +-- definitions/grib2/template.4.57.def | 8 +-- definitions/grib2/template.4.58.def | 8 +-- definitions/grib2/template.4.59.def | 8 +-- definitions/grib2/template.4.6.def | 7 --- definitions/grib2/template.4.60.def | 7 --- definitions/grib2/template.4.61.def | 7 --- definitions/grib2/template.4.67.def | 8 +-- definitions/grib2/template.4.68.def | 8 +-- definitions/grib2/template.4.70.def | 7 --- definitions/grib2/template.4.71.def | 7 --- definitions/grib2/template.4.72.def | 7 --- definitions/grib2/template.4.73.def | 7 --- definitions/grib2/template.4.8.def | 7 --- definitions/grib2/template.4.9.def | 7 --- definitions/grib2/template.4.91.def | 7 --- definitions/grib2/template.4.categorical.def | 7 --- .../grib2/template.4.circular_cluster.def | 7 --- definitions/grib2/template.4.derived.def | 7 --- definitions/grib2/template.4.eps.def | 7 --- definitions/grib2/template.4.horizontal.def | 7 --- definitions/grib2/template.4.parameter.def | 7 --- .../grib2/template.4.parameter_aerosol.def | 8 --- .../grib2/template.4.parameter_aerosol_44.def | 7 --- .../template.4.parameter_aerosol_optical.def | 7 --- .../grib2/template.4.parameter_chemical.def | 7 --- ...late.4.parameter_chemical_distribution.def | 7 --- .../grib2/template.4.parameter_partition.def | 7 --- .../grib2/template.4.parameter_postproc.def | 7 --- .../grib2/template.4.parameter_tile.def | 8 --- .../grib2/template.4.point_in_time.def | 7 --- definitions/grib2/template.4.probability.def | 7 --- .../grib2/template.4.rectangular_cluster.def | 7 --- definitions/grib2/template.4.statistical.def | 8 --- definitions/grib2/template.5.0.def | 7 --- definitions/grib2/template.5.1.def | 7 --- definitions/grib2/template.5.2.def | 7 --- definitions/grib2/template.5.3.def | 7 --- definitions/grib2/template.5.4.def | 7 --- definitions/grib2/template.5.40.def | 10 +--- definitions/grib2/template.5.41.def | 8 --- definitions/grib2/template.5.42.def | 7 --- definitions/grib2/template.5.50.def | 8 --- definitions/grib2/template.5.50000.def | 11 +--- definitions/grib2/template.5.50001.def | 11 +--- definitions/grib2/template.5.50002.def | 7 --- definitions/grib2/template.5.51.def | 7 --- definitions/grib2/template.5.6.def | 7 --- definitions/grib2/template.5.61.def | 7 --- definitions/grib2/template.5.packing.def | 7 --- definitions/grib2/template.5.second_order.def | 7 --- definitions/grib2/template.7.0.def | 17 ++---- definitions/grib2/template.7.1.def | 17 ++---- definitions/grib2/template.7.2.def | 24 +++----- definitions/grib2/template.7.3.def | 24 +++----- definitions/grib2/template.7.4.def | 7 --- definitions/grib2/template.7.40.def | 7 --- definitions/grib2/template.7.41.def | 7 --- definitions/grib2/template.7.42.def | 7 --- definitions/grib2/template.7.50.def | 9 --- definitions/grib2/template.7.50000.def | 7 --- definitions/grib2/template.7.50001.def | 15 ++--- definitions/grib2/template.7.50002.def | 7 --- definitions/grib2/template.7.51.def | 7 --- definitions/grib2/template.7.6.def | 20 ++----- definitions/grib2/template.7.61.def | 20 ++----- definitions/grib2/template.7.second_order.def | 59 ++++++++----------- 143 files changed, 94 insertions(+), 1132 deletions(-) diff --git a/definitions/grib2/local.98.41.def b/definitions/grib2/local.98.41.def index 576b4690b..c3f123f18 100644 --- a/definitions/grib2/local.98.41.def +++ b/definitions/grib2/local.98.41.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Local definition 41 - The European Flood Awareness System diff --git a/definitions/grib2/local.98.42.def b/definitions/grib2/local.98.42.def index 39ce7960d..5983a8c20 100644 --- a/definitions/grib2/local.98.42.def +++ b/definitions/grib2/local.98.42.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Definition 42 - WMO Lead Centre for Wave Forecast Verification (LC-WFV) diff --git a/definitions/grib2/local.98.7.def b/definitions/grib2/local.98.7.def index 42de2e798..cd165cc2f 100644 --- a/definitions/grib2/local.98.7.def +++ b/definitions/grib2/local.98.7.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# unsigned[1] iterationNumber : dump; alias number=iterationNumber; @@ -21,4 +14,3 @@ alias local.diagnosticNumber=diagnosticNumber; alias iteration = iterationNumber; alias diagnostic = diagnosticNumber; - diff --git a/definitions/grib2/local.98.9.def b/definitions/grib2/local.98.9.def index 60da0fd00..ea683989a 100644 --- a/definitions/grib2/local.98.9.def +++ b/definitions/grib2/local.98.9.def @@ -1,12 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - unsigned[2] forecastOrSingularVectorNumber : dump; @@ -44,4 +36,3 @@ if(type != perturbedType) alias local.NINT_LOG10_RITZ= NINT_LOG10_RITZ ; alias local.NINT_RITZ_EXP= NINT_RITZ_EXP ; } - diff --git a/definitions/grib2/mars_labeling.def b/definitions/grib2/mars_labeling.def index 189e0259b..fdf0415df 100644 --- a/definitions/grib2/mars_labeling.def +++ b/definitions/grib2/mars_labeling.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# codetable[2] marsClass "mars/class.table" = "od" : dump,string_type,lowercase; codetable[2] marsType "mars/type.table" = "an" : dump,string_type,no_fail,lowercase; diff --git a/definitions/grib2/meta.def b/definitions/grib2/meta.def index 2f4ef7ba2..e7f5a2945 100644 --- a/definitions/grib2/meta.def +++ b/definitions/grib2/meta.def @@ -1,12 +1,5 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# label "_Empty file"; -#meta area g1area(latitudeOfFirstGridPoint,longitudeOfFirstGridPoint,latitudeOfLastGridPoint,longitudeOfLastGridPoint,angleMultiplier,angleDivisor); +#meta area g1area(latitudeOfFirstGridPoint,longitudeOfFirstGridPoint,latitudeOfLastGridPoint,longitudeOfLastGridPoint,angleMultiplier,angleDivisor); diff --git a/definitions/grib2/parameters.def b/definitions/grib2/parameters.def index 6104d79e5..fc3083ffb 100644 --- a/definitions/grib2/parameters.def +++ b/definitions/grib2/parameters.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# transient dummyc=0: hidden; constant conceptsMasterDir="grib2" : hidden; diff --git a/definitions/grib2/products_s2s.def b/definitions/grib2/products_s2s.def index ce034e8ec..e909fe3cc 100644 --- a/definitions/grib2/products_s2s.def +++ b/definitions/grib2/products_s2s.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # S2S constant marsClass = 's2'; diff --git a/definitions/grib2/products_tigge.def b/definitions/grib2/products_tigge.def index 00597a1e9..a79391da4 100644 --- a/definitions/grib2/products_tigge.def +++ b/definitions/grib2/products_tigge.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Tigge constant marsClass = 'ti'; diff --git a/definitions/grib2/products_uerra.def b/definitions/grib2/products_uerra.def index c60223f3f..5d70c23d9 100644 --- a/definitions/grib2/products_uerra.def +++ b/definitions/grib2/products_uerra.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Uncertainties in ensembles of regional re-analysis project (UERRA) constant marsClass = 'ur'; diff --git a/definitions/grib2/rules.def b/definitions/grib2/rules.def index e369e9dd3..ba817f0af 100644 --- a/definitions/grib2/rules.def +++ b/definitions/grib2/rules.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Experimental stuff diff --git a/definitions/grib2/template.1.offset.def b/definitions/grib2/template.1.offset.def index 3905acfe2..b3c667a97 100644 --- a/definitions/grib2/template.1.offset.def +++ b/definitions/grib2/template.1.offset.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Number of tens of thousands of years of offset signed[2] numberOfTensOfThousandsOfYearsOfOffset = missing() : can_be_missing,dump,no_copy,edition_specific; diff --git a/definitions/grib2/template.3.10.def b/definitions/grib2/template.3.10.def index 6570a5062..cc225138a 100644 --- a/definitions/grib2/template.3.10.def +++ b/definitions/grib2/template.3.10.def @@ -1,14 +1,6 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 3.10, Mercator - include "grib2/template.3.shape_of_the_earth.def"; unsigned[4] Ni : dump; diff --git a/definitions/grib2/template.3.100.def b/definitions/grib2/template.3.100.def index 02fc39d6b..34d8b0685 100644 --- a/definitions/grib2/template.3.100.def +++ b/definitions/grib2/template.3.100.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 3.100, Triangular grid based on an icosahedron (see Attachment I.2-GRIB-Att.) diff --git a/definitions/grib2/template.3.1000.def b/definitions/grib2/template.3.1000.def index 9cae69bea..b353003ef 100644 --- a/definitions/grib2/template.3.1000.def +++ b/definitions/grib2/template.3.1000.def @@ -1,12 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - # TEMPLATE 3.1000, Cross-section grid, with points equally spaced on the horizontal diff --git a/definitions/grib2/template.3.101.def b/definitions/grib2/template.3.101.def index 4168145fe..dd6d12bb9 100644 --- a/definitions/grib2/template.3.101.def +++ b/definitions/grib2/template.3.101.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 3.101, General Unstructured Grid diff --git a/definitions/grib2/template.3.110.def b/definitions/grib2/template.3.110.def index 408ac64ed..5c8488dc8 100644 --- a/definitions/grib2/template.3.110.def +++ b/definitions/grib2/template.3.110.def @@ -1,12 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - # TEMPLATE 3.110, Equatorial azimuthal equidistant projection include "grib2/template.3.shape_of_the_earth.def"; diff --git a/definitions/grib2/template.3.1100.def b/definitions/grib2/template.3.1100.def index 6dd25c28e..29459a843 100644 --- a/definitions/grib2/template.3.1100.def +++ b/definitions/grib2/template.3.1100.def @@ -1,12 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - # TEMPLATE 3.1100, Hovmoller diagram grid with points equally spaced on the horizontal include "grib2/template.3.shape_of_the_earth.def"; diff --git a/definitions/grib2/template.3.12.def b/definitions/grib2/template.3.12.def index f3772224e..df93f9fdc 100644 --- a/definitions/grib2/template.3.12.def +++ b/definitions/grib2/template.3.12.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 3.12, Transverse Mercator @@ -76,4 +69,3 @@ meta geography.X2InGridLengths scale(X2,one,hundred) : dump; # y2 - j-direction coordinate of the last grid point in units of 10-2 m signed[4] Y2 : no_copy; meta geography.Y2InGridLengths scale(Y2,one,hundred) : dump; - diff --git a/definitions/grib2/template.3.120.def b/definitions/grib2/template.3.120.def index e44c49e95..8d18d5a4a 100644 --- a/definitions/grib2/template.3.120.def +++ b/definitions/grib2/template.3.120.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 3.120, Azimuth-range projection # Nb - number of data bins along radials (A data bin is a data point representing the volume centred on it) diff --git a/definitions/grib2/template.3.1200.def b/definitions/grib2/template.3.1200.def index 975d8f2de..53b2778f9 100644 --- a/definitions/grib2/template.3.1200.def +++ b/definitions/grib2/template.3.1200.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 3.1200, Time section grid # NT - Number of time steps @@ -62,4 +55,3 @@ unsigned[2] NC : dump; # Octets 43-(42+NC*4) : Coefficients to define vertical dimension coordinate values in functional form, or the explicit coordinate values # (IEEE 32-bit floating-point values) # ???? coefficients_to_define_vertical_dimension; - diff --git a/definitions/grib2/template.3.130.def b/definitions/grib2/template.3.130.def index 2184800a5..187c78538 100644 --- a/definitions/grib2/template.3.130.def +++ b/definitions/grib2/template.3.130.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 3.130, Irregular Latitude/longitude grid diff --git a/definitions/grib2/template.3.140.def b/definitions/grib2/template.3.140.def index 8d86b6dca..d47ccba0b 100644 --- a/definitions/grib2/template.3.140.def +++ b/definitions/grib2/template.3.140.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 3.140, Lambert azimuthal equal area projection include "grib2/template.3.shape_of_the_earth.def"; diff --git a/definitions/grib2/template.3.20.def b/definitions/grib2/template.3.20.def index 51d23df20..2c90c58cc 100644 --- a/definitions/grib2/template.3.20.def +++ b/definitions/grib2/template.3.20.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 3.20, Polar stereographic projection include "grib2/template.3.shape_of_the_earth.def"; diff --git a/definitions/grib2/template.3.30.def b/definitions/grib2/template.3.30.def index fb556b48c..f9033b1f9 100644 --- a/definitions/grib2/template.3.30.def +++ b/definitions/grib2/template.3.30.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 3.30, Lambert conformal include "grib2/template.3.shape_of_the_earth.def"; @@ -101,4 +94,3 @@ meta latLonValues latlonvalues(values); alias latitudeLongitudeValues=latLonValues; meta latitudes latitudes(values,0); meta longitudes longitudes(values,0); - diff --git a/definitions/grib2/template.3.31.def b/definitions/grib2/template.3.31.def index 6d494abde..2f6306328 100644 --- a/definitions/grib2/template.3.31.def +++ b/definitions/grib2/template.3.31.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 3.31, Albers equal area include "grib2/template.3.shape_of_the_earth.def"; @@ -67,4 +60,3 @@ meta geography.latitudeOfSouthernPoleInDegrees scale(latitudeOfTheSouthernPol unsigned[4] longitudeOfTheSouthernPoleOfProjection :edition_specific; alias longitudeOfSouthernPole=longitudeOfTheSouthernPoleOfProjection; meta geography.longitudeOfSouthernPoleInDegrees scale(longitudeOfTheSouthernPoleOfProjection,oneConstant,grib2divider,truncateDegrees) : dump; - diff --git a/definitions/grib2/template.3.90.def b/definitions/grib2/template.3.90.def index 24a70c527..7ef517c63 100644 --- a/definitions/grib2/template.3.90.def +++ b/definitions/grib2/template.3.90.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 3.90, Space view perspective or orthographic include "grib2/template.3.shape_of_the_earth.def"; diff --git a/definitions/grib2/template.3.gaussian.def b/definitions/grib2/template.3.gaussian.def index 33d3de861..28470aebc 100755 --- a/definitions/grib2/template.3.gaussian.def +++ b/definitions/grib2/template.3.gaussian.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# include "grib2/template.3.grid.def"; diff --git a/definitions/grib2/template.3.grid.def b/definitions/grib2/template.3.grid.def index 78c19e93b..e36bb50f6 100644 --- a/definitions/grib2/template.3.grid.def +++ b/definitions/grib2/template.3.grid.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# unsigned[4] Ni : can_be_missing,dump; alias numberOfPointsAlongAParallel=Ni; @@ -65,4 +58,3 @@ alias La2 = latitudeOfLastGridPoint; signed[4] longitudeOfLastGridPoint : edition_specific ; alias Lo2 = longitudeOfLastGridPoint; #meta longitudeOfLastGridPointInMicrodegrees times(longitudeOfLastGridPoint,mAngleMultiplier,angleDivisor) : no_copy; - diff --git a/definitions/grib2/template.3.latlon.def b/definitions/grib2/template.3.latlon.def index bc1bee458..12436c727 100755 --- a/definitions/grib2/template.3.latlon.def +++ b/definitions/grib2/template.3.latlon.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# include "grib2/template.3.grid.def"; @@ -79,4 +72,3 @@ meta latitudes latitudes(values,0); meta longitudes longitudes(values,0); meta distinctLatitudes latitudes(values,1); meta distinctLongitudes longitudes(values,1); - diff --git a/definitions/grib2/template.3.latlon_vares.def b/definitions/grib2/template.3.latlon_vares.def index cd87379b0..ce3f16648 100755 --- a/definitions/grib2/template.3.latlon_vares.def +++ b/definitions/grib2/template.3.latlon_vares.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# unsigned[4] Ni : can_be_missing,dump; alias numberOfPointsAlongAParallel=Ni; @@ -52,4 +45,3 @@ longitudesList list(Ni) { latitudesList list(Nj) { signed[4] latitudes; } - diff --git a/definitions/grib2/template.3.resolution_flags.def b/definitions/grib2/template.3.resolution_flags.def index ed229ac44..048896a5a 100644 --- a/definitions/grib2/template.3.resolution_flags.def +++ b/definitions/grib2/template.3.resolution_flags.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Resolution and component flags flags[1] resolutionAndComponentFlags 'grib2/tables/[tablesVersion]/3.3.table' : edition_specific,no_copy; @@ -43,4 +36,3 @@ concept ijDirectionIncrementGiven { alias DiGiven=iDirectionIncrementGiven; alias DjGiven=jDirectionIncrementGiven; - diff --git a/definitions/grib2/template.3.rotation.def b/definitions/grib2/template.3.rotation.def index 6718d4365..1cfc32345 100755 --- a/definitions/grib2/template.3.rotation.def +++ b/definitions/grib2/template.3.rotation.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Latitude of the southern pole of projection signed[4] latitudeOfSouthernPole : no_copy; diff --git a/definitions/grib2/template.3.scanning_mode.def b/definitions/grib2/template.3.scanning_mode.def index 32a3a402f..a6c6dae7a 100644 --- a/definitions/grib2/template.3.scanning_mode.def +++ b/definitions/grib2/template.3.scanning_mode.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# flags[1] scanningMode 'grib2/tables/[tablesVersion]/3.4.table' : edition_specific,no_copy ; diff --git a/definitions/grib2/template.3.shape_of_the_earth.def b/definitions/grib2/template.3.shape_of_the_earth.def index c8d7dc72b..56c664440 100755 --- a/definitions/grib2/template.3.shape_of_the_earth.def +++ b/definitions/grib2/template.3.shape_of_the_earth.def @@ -1,12 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - codetable[1] shapeOfTheEarth ('3.2.table',masterDir,localDir) : dump; diff --git a/definitions/grib2/template.3.spherical_harmonics.def b/definitions/grib2/template.3.spherical_harmonics.def index cdeb9df23..ec366a69a 100755 --- a/definitions/grib2/template.3.spherical_harmonics.def +++ b/definitions/grib2/template.3.spherical_harmonics.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# constant sphericalHarmonics=1; @@ -33,4 +26,3 @@ alias spectralDataRepresentationType=spectralType; # Representation mode indicating the order of the coefficients codetable[1] spectralMode ('3.7.table',masterDir,localDir) = 1 : no_copy; alias spectralDataRepresentationMode=spectralMode; - diff --git a/definitions/grib2/template.3.stretching.def b/definitions/grib2/template.3.stretching.def index 1f0b9f1f5..1fad9093d 100755 --- a/definitions/grib2/template.3.stretching.def +++ b/definitions/grib2/template.3.stretching.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Latitude of the pole of stretching signed[4] latitudeOfThePoleOfStretching : edition_specific,no_copy; diff --git a/definitions/grib2/template.4.0.def b/definitions/grib2/template.4.0.def index 5f7fe6463..06db2a737 100644 --- a/definitions/grib2/template.4.0.def +++ b/definitions/grib2/template.4.0.def @@ -1,15 +1,7 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.0, Analysis or forecast at a horizontal level or in a horizontal layer at a point in time include "grib2/template.4.parameter.def"; include "grib2/template.4.point_in_time.def"; include "grib2/template.4.horizontal.def"; - diff --git a/definitions/grib2/template.4.1.def b/definitions/grib2/template.4.1.def index f816242e6..24f3d377d 100644 --- a/definitions/grib2/template.4.1.def +++ b/definitions/grib2/template.4.1.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.1, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time diff --git a/definitions/grib2/template.4.10.def b/definitions/grib2/template.4.10.def index adcdbed66..05530c586 100644 --- a/definitions/grib2/template.4.10.def +++ b/definitions/grib2/template.4.10.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.10, Percentile forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval diff --git a/definitions/grib2/template.4.1000.def b/definitions/grib2/template.4.1000.def index 1872ccfdd..5ffca8b00 100644 --- a/definitions/grib2/template.4.1000.def +++ b/definitions/grib2/template.4.1000.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.1000, Cross section of analysis and forecast at a point in time diff --git a/definitions/grib2/template.4.1001.def b/definitions/grib2/template.4.1001.def index 34f5974ef..4f8b433a9 100644 --- a/definitions/grib2/template.4.1001.def +++ b/definitions/grib2/template.4.1001.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.1001, Cross section of averaged or otherwise statistically processed analysis or forecast over a range of time diff --git a/definitions/grib2/template.4.1002.def b/definitions/grib2/template.4.1002.def index 4518b7b6d..d15c1f19f 100644 --- a/definitions/grib2/template.4.1002.def +++ b/definitions/grib2/template.4.1002.def @@ -1,22 +1,13 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.1002, Cross-section of analysis and forecast, averaged or otherwise statistically processed over latitude or longitude include "grib2/template.4.parameter.def" - # Horizontal dimension processed codetable[1] horizontalDimensionProcessed ('4.220.table',masterDir,localDir) : dump; -# Treatment of missing data -# (e.g. below ground) +# Treatment of missing data (e.g. below ground) codetable[1] treatmentOfMissingData ('4.221.table',masterDir,localDir) : dump; # Type of statistical processing diff --git a/definitions/grib2/template.4.11.def b/definitions/grib2/template.4.11.def index 770616c7d..70fd1fd40 100644 --- a/definitions/grib2/template.4.11.def +++ b/definitions/grib2/template.4.11.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.11, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval diff --git a/definitions/grib2/template.4.1100.def b/definitions/grib2/template.4.1100.def index e6e7b786d..86235fafb 100644 --- a/definitions/grib2/template.4.1100.def +++ b/definitions/grib2/template.4.1100.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.1100, Hovmöller-type grid with no averaging or other statistical processing diff --git a/definitions/grib2/template.4.1101.def b/definitions/grib2/template.4.1101.def index 6bc3db399..fb5e0ea08 100644 --- a/definitions/grib2/template.4.1101.def +++ b/definitions/grib2/template.4.1101.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.1101, Hovmöller-type grid with averaging or other statistical processing diff --git a/definitions/grib2/template.4.12.def b/definitions/grib2/template.4.12.def index 9ee23d286..e05ab076c 100644 --- a/definitions/grib2/template.4.12.def +++ b/definitions/grib2/template.4.12.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.12, Derived forecasts based on all ensemble members at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval diff --git a/definitions/grib2/template.4.13.def b/definitions/grib2/template.4.13.def index 0d012de0c..aed90b726 100644 --- a/definitions/grib2/template.4.13.def +++ b/definitions/grib2/template.4.13.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.13, Derived forecasts based on a cluster of ensemble members over a rectangular area at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval @@ -19,4 +12,3 @@ ensembleForecastNumbersList list(numberOfForecastsInTheCluster) { unsigned[1] ensembleForecastNumbers : dump; } - diff --git a/definitions/grib2/template.4.14.def b/definitions/grib2/template.4.14.def index fd03e1c22..236bd57a6 100644 --- a/definitions/grib2/template.4.14.def +++ b/definitions/grib2/template.4.14.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.14, Derived forecasts based on a cluster of ensemble members over a circular area at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval diff --git a/definitions/grib2/template.4.15.def b/definitions/grib2/template.4.15.def index 6e2572b97..a3be7f9c5 100644 --- a/definitions/grib2/template.4.15.def +++ b/definitions/grib2/template.4.15.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.15, Average, accumulation, extreme values, or other statistically-processed values over a spatial area at a horizontal level or in a horizontal layer at a point in time diff --git a/definitions/grib2/template.4.2.def b/definitions/grib2/template.4.2.def index da90b8d20..378644657 100644 --- a/definitions/grib2/template.4.2.def +++ b/definitions/grib2/template.4.2.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.2, Derived forecast based on all ensemble members at a horizontal level or in a horizontal layer at a point in time diff --git a/definitions/grib2/template.4.20.def b/definitions/grib2/template.4.20.def index 1df5c1a7c..fcf38ab42 100644 --- a/definitions/grib2/template.4.20.def +++ b/definitions/grib2/template.4.20.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.20, Radar product # Parameter category @@ -28,31 +21,25 @@ alias defaultStepUnits = one; # 1 means Hour. See code table 4.4 template_nofail default_step_units "grib2/localConcepts/[centre:s]/default_step_units.def"; codetable[1] stepUnits 'stepUnits.table' = defaultStepUnits : transient,dump,no_copy; -# Site latitude -# (in 10-6 degree) +# Site latitude (in 10-6 degree) unsigned[4] siteLatitude : dump; -# Site longitude -# (in 10-6 degree) +# Site longitude (in 10-6 degree) unsigned[4] siteLongitude : dump; -# Site elevation -# (meters) +# Site elevation (meters) unsigned[2] siteElevation : dump; -# Site ID -# (alphanumeric) +# Site ID (alphanumeric) unsigned[4] siteId : dump; -# Site ID -# (numeric) +# Site ID (numeric) unsigned[2] siteId : dump; # Operating mode codetable[1] operatingMode ('4.12.table',masterDir,localDir) : dump; -# Reflectivity calibration constant -# (tenths of dB) +# Reflectivity calibration constant (tenths of dB) unsigned[1] reflectivityCalibrationConstant : dump; # Quality control indicator @@ -61,22 +48,17 @@ codetable[1] qualityControlIndicator ('4.13.table',masterDir,localDir) : dump; # Clutter filter indicator codetable[1] clutterFilterIndicator ('4.14.table',masterDir,localDir) : dump; -# Constant antenna elevation angle -# (tenths of degree true) +# Constant antenna elevation angle (tenths of degree true) unsigned[1] constantAntennaElevationAngle : dump; -# Accumulation interval -# (minutes) +# Accumulation interval (minutes) unsigned[2] accumulationInterval : dump; -# Reference reflectivity for echo top -# (dB) +# Reference reflectivity for echo top (dB) unsigned[1] referenceReflectivityForEchoTop : dump; -# Range bin spacing -# (meters) +# Range bin spacing (meters) unsigned[3] rangeBinSpacing : dump; -# Radial angular spacing -# (tenths of degree true) +# Radial angular spacing (tenths of degree true) unsigned[2] radialAngularSpacing : dump; diff --git a/definitions/grib2/template.4.254.def b/definitions/grib2/template.4.254.def index 60f98e102..557de2d3a 100644 --- a/definitions/grib2/template.4.254.def +++ b/definitions/grib2/template.4.254.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.254, CCITT IA5 character string diff --git a/definitions/grib2/template.4.3.def b/definitions/grib2/template.4.3.def index 287598de8..e2fe19fae 100644 --- a/definitions/grib2/template.4.3.def +++ b/definitions/grib2/template.4.3.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.3, Derived forecasts based on a cluster of ensemble members over a rectangular area at a horizontal level or in a horizontal layer at a point in time diff --git a/definitions/grib2/template.4.30.def b/definitions/grib2/template.4.30.def index 21240d0d9..a8b50b976 100644 --- a/definitions/grib2/template.4.30.def +++ b/definitions/grib2/template.4.30.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # For grib2 to grib1 convertion constant dataRepresentationType = 90; diff --git a/definitions/grib2/template.4.31.def b/definitions/grib2/template.4.31.def index 06d5a3ae5..c846d7236 100644 --- a/definitions/grib2/template.4.31.def +++ b/definitions/grib2/template.4.31.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # For grib2 to grib1 convertion constant dataRepresentationType = 90; diff --git a/definitions/grib2/template.4.311.def b/definitions/grib2/template.4.311.def index aa18ea470..03066cdc1 100644 --- a/definitions/grib2/template.4.311.def +++ b/definitions/grib2/template.4.311.def @@ -1,16 +1,8 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # For grib2 to grib1 convertion constant dataRepresentationType = 90; - # TEMPLATE 4.311, Satellite Product Auxiliary Information codetable[1] parameterCategory ('4.1.[discipline:l].table',masterDir,localDir) : dump; codetable[1] parameterNumber ('4.2.[discipline:l].[parameterCategory:l].table',masterDir,localDir) : dump; diff --git a/definitions/grib2/template.4.32.def b/definitions/grib2/template.4.32.def index 5445e2897..04e901256 100644 --- a/definitions/grib2/template.4.32.def +++ b/definitions/grib2/template.4.32.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # For grib2 to grib1 convertion constant dataRepresentationType = 90; diff --git a/definitions/grib2/template.4.33.def b/definitions/grib2/template.4.33.def index cb582d3ee..495c0d6fc 100644 --- a/definitions/grib2/template.4.33.def +++ b/definitions/grib2/template.4.33.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.33, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for simulated (synthetic) satellite data diff --git a/definitions/grib2/template.4.34.def b/definitions/grib2/template.4.34.def index 8cbb1d435..c6128e521 100644 --- a/definitions/grib2/template.4.34.def +++ b/definitions/grib2/template.4.34.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.34, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval for simulated (synthetic) satellite data diff --git a/definitions/grib2/template.4.35.def b/definitions/grib2/template.4.35.def index 570551b6e..b77f5f6ea 100644 --- a/definitions/grib2/template.4.35.def +++ b/definitions/grib2/template.4.35.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # For grib2 to grib1 convertion constant dataRepresentationType = 90; diff --git a/definitions/grib2/template.4.4.def b/definitions/grib2/template.4.4.def index 37ae90c59..18b8e4a9e 100644 --- a/definitions/grib2/template.4.4.def +++ b/definitions/grib2/template.4.4.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.4, Derived forecasts based on a cluster of ensemble members over a circular area at a horizontal level or in a horizontal layer at a point in time diff --git a/definitions/grib2/template.4.40.def b/definitions/grib2/template.4.40.def index 78cb3d79a..d146da828 100644 --- a/definitions/grib2/template.4.40.def +++ b/definitions/grib2/template.4.40.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.40, Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents diff --git a/definitions/grib2/template.4.41.def b/definitions/grib2/template.4.41.def index 6a17780d1..d35f5fd34 100644 --- a/definitions/grib2/template.4.41.def +++ b/definitions/grib2/template.4.41.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.41, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents diff --git a/definitions/grib2/template.4.42.def b/definitions/grib2/template.4.42.def index 2e8340d8d..f22132a05 100644 --- a/definitions/grib2/template.4.42.def +++ b/definitions/grib2/template.4.42.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.42, Average, accumulation and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents diff --git a/definitions/grib2/template.4.43.def b/definitions/grib2/template.4.43.def index c55dd4fc0..eb5b3baa3 100644 --- a/definitions/grib2/template.4.43.def +++ b/definitions/grib2/template.4.43.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.43, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents diff --git a/definitions/grib2/template.4.44.def b/definitions/grib2/template.4.44.def index c1ff5673a..706d1a137 100644 --- a/definitions/grib2/template.4.44.def +++ b/definitions/grib2/template.4.44.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.44, Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for aerosol # It is recommended not to use this template. PDT 4.48 should be used instead with optical wave length range set to missing diff --git a/definitions/grib2/template.4.45.def b/definitions/grib2/template.4.45.def index 6aee2bedc..3a287c571 100644 --- a/definitions/grib2/template.4.45.def +++ b/definitions/grib2/template.4.45.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.45, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for aerosol diff --git a/definitions/grib2/template.4.46.def b/definitions/grib2/template.4.46.def index 77c314d72..9dc494a8d 100644 --- a/definitions/grib2/template.4.46.def +++ b/definitions/grib2/template.4.46.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.46, Average, accumulation, and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol diff --git a/definitions/grib2/template.4.47.def b/definitions/grib2/template.4.47.def index b8709f4a2..d161e276a 100644 --- a/definitions/grib2/template.4.47.def +++ b/definitions/grib2/template.4.47.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.47, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval diff --git a/definitions/grib2/template.4.48.def b/definitions/grib2/template.4.48.def index 2e4e92698..2169ada7e 100644 --- a/definitions/grib2/template.4.48.def +++ b/definitions/grib2/template.4.48.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.48, Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for optical properties of aerosol diff --git a/definitions/grib2/template.4.49.def b/definitions/grib2/template.4.49.def index cfa265e65..b711aafdd 100644 --- a/definitions/grib2/template.4.49.def +++ b/definitions/grib2/template.4.49.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.49, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for optical properties of aerosol diff --git a/definitions/grib2/template.4.5.def b/definitions/grib2/template.4.5.def index d2f1b4d9d..59d11f8a5 100644 --- a/definitions/grib2/template.4.5.def +++ b/definitions/grib2/template.4.5.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.5, Probability forecasts at a horizontal level or in a horizontal layer at a point in time diff --git a/definitions/grib2/template.4.51.def b/definitions/grib2/template.4.51.def index 413fbd96d..4d87becbb 100644 --- a/definitions/grib2/template.4.51.def +++ b/definitions/grib2/template.4.51.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.51, Categorical forecasts at a horizontal level or in a horizontal layer at a point in time diff --git a/definitions/grib2/template.4.53.def b/definitions/grib2/template.4.53.def index def629956..7c11f3119 100644 --- a/definitions/grib2/template.4.53.def +++ b/definitions/grib2/template.4.53.def @@ -1,11 +1,5 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# + # TEMPLATE 4.53, Partitioned parameters at a horizontal level or in a horizontal layer at a point in time include "grib2/template.4.parameter_partition.def" diff --git a/definitions/grib2/template.4.54.def b/definitions/grib2/template.4.54.def index 9902f45a2..6a3c8f2b1 100644 --- a/definitions/grib2/template.4.54.def +++ b/definitions/grib2/template.4.54.def @@ -1,11 +1,5 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# + # TEMPLATE 4.54, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for partitioned parameters include "grib2/template.4.53.def" diff --git a/definitions/grib2/template.4.55.def b/definitions/grib2/template.4.55.def index ca297d60e..7bdce12df 100644 --- a/definitions/grib2/template.4.55.def +++ b/definitions/grib2/template.4.55.def @@ -1,11 +1,5 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# + # TEMPLATE 4.55, Spatio-temporal changing tiles at a horizontal level or horizontal layer at a point in time include "grib2/template.4.parameter_tile.def" diff --git a/definitions/grib2/template.4.57.def b/definitions/grib2/template.4.57.def index 3ec979206..921ec7f9a 100644 --- a/definitions/grib2/template.4.57.def +++ b/definitions/grib2/template.4.57.def @@ -1,11 +1,5 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# + # TEMPLATE 4.57, Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents based on a distribution function include "grib2/template.4.parameter_chemical_distribution.def"; diff --git a/definitions/grib2/template.4.58.def b/definitions/grib2/template.4.58.def index 8b4f2cc36..fbef62abc 100644 --- a/definitions/grib2/template.4.58.def +++ b/definitions/grib2/template.4.58.def @@ -1,11 +1,5 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# + # TEMPLATE 4.58, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents based on a distribution function include "grib2/template.4.parameter_chemical_distribution.def" diff --git a/definitions/grib2/template.4.59.def b/definitions/grib2/template.4.59.def index 0e73b7317..747e94a57 100644 --- a/definitions/grib2/template.4.59.def +++ b/definitions/grib2/template.4.59.def @@ -1,11 +1,5 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# + # TEMPLATE 4.59, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for spatio-temporal changing tile parameters # Use this instead of template 4.56 diff --git a/definitions/grib2/template.4.6.def b/definitions/grib2/template.4.6.def index f7e800090..187c42285 100644 --- a/definitions/grib2/template.4.6.def +++ b/definitions/grib2/template.4.6.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.6, Percentile forecasts at a horizontal level or in a horizontal layer at a point in time diff --git a/definitions/grib2/template.4.60.def b/definitions/grib2/template.4.60.def index 2458a7c5e..cd8633078 100644 --- a/definitions/grib2/template.4.60.def +++ b/definitions/grib2/template.4.60.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.60, Individual ensemble re-forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time diff --git a/definitions/grib2/template.4.61.def b/definitions/grib2/template.4.61.def index 3a8094201..7a1d08546 100644 --- a/definitions/grib2/template.4.61.def +++ b/definitions/grib2/template.4.61.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.61, Individual ensemble re-forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval diff --git a/definitions/grib2/template.4.67.def b/definitions/grib2/template.4.67.def index 561815e33..b343233ab 100644 --- a/definitions/grib2/template.4.67.def +++ b/definitions/grib2/template.4.67.def @@ -1,11 +1,5 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# + # TEMPLATE 4.67, Average, accumulation and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents based on a distribution function include "grib2/template.4.parameter_chemical_distribution.def" diff --git a/definitions/grib2/template.4.68.def b/definitions/grib2/template.4.68.def index b584d9d16..f1924d8fe 100644 --- a/definitions/grib2/template.4.68.def +++ b/definitions/grib2/template.4.68.def @@ -1,11 +1,5 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# + # TEMPLATE 4.68, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents based on a distribution function include "grib2/template.4.parameter_chemical_distribution.def" diff --git a/definitions/grib2/template.4.70.def b/definitions/grib2/template.4.70.def index e1248b5a8..4f8ff7a64 100644 --- a/definitions/grib2/template.4.70.def +++ b/definitions/grib2/template.4.70.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # EFAS: Analysis or forecast at a horizontal level or in a horizontal layer at a point in time diff --git a/definitions/grib2/template.4.71.def b/definitions/grib2/template.4.71.def index d6128fdeb..5991cd94a 100644 --- a/definitions/grib2/template.4.71.def +++ b/definitions/grib2/template.4.71.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # EFAS: Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time diff --git a/definitions/grib2/template.4.72.def b/definitions/grib2/template.4.72.def index de07dfc21..0cf86650b 100644 --- a/definitions/grib2/template.4.72.def +++ b/definitions/grib2/template.4.72.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # EFAS: Average, accumulation, and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval diff --git a/definitions/grib2/template.4.73.def b/definitions/grib2/template.4.73.def index 232c63b87..28a5dab65 100644 --- a/definitions/grib2/template.4.73.def +++ b/definitions/grib2/template.4.73.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # EFAS: Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval diff --git a/definitions/grib2/template.4.8.def b/definitions/grib2/template.4.8.def index 3bdd98cd5..ab0bb7a8a 100644 --- a/definitions/grib2/template.4.8.def +++ b/definitions/grib2/template.4.8.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.8, Average, accumulation, and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval diff --git a/definitions/grib2/template.4.9.def b/definitions/grib2/template.4.9.def index 531a5bde0..1a5994926 100644 --- a/definitions/grib2/template.4.9.def +++ b/definitions/grib2/template.4.9.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.9, Probability forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval diff --git a/definitions/grib2/template.4.91.def b/definitions/grib2/template.4.91.def index 8ab2ab831..b213df3a5 100644 --- a/definitions/grib2/template.4.91.def +++ b/definitions/grib2/template.4.91.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 4.91, Categorical forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval diff --git a/definitions/grib2/template.4.categorical.def b/definitions/grib2/template.4.categorical.def index f59bd67b7..2b841474b 100755 --- a/definitions/grib2/template.4.categorical.def +++ b/definitions/grib2/template.4.categorical.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Total number of forecast probabilities unsigned[1] numberOfCategories : dump; diff --git a/definitions/grib2/template.4.circular_cluster.def b/definitions/grib2/template.4.circular_cluster.def index c6c5c4dc1..b8fc8c961 100755 --- a/definitions/grib2/template.4.circular_cluster.def +++ b/definitions/grib2/template.4.circular_cluster.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Cluster identifier unsigned[1] clusterIdentifier : dump; diff --git a/definitions/grib2/template.4.derived.def b/definitions/grib2/template.4.derived.def index 2a0dd2612..e92f92d9b 100755 --- a/definitions/grib2/template.4.derived.def +++ b/definitions/grib2/template.4.derived.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Derived forecast codetable[1] derivedForecast ('4.7.table',masterDir,localDir) : dump; diff --git a/definitions/grib2/template.4.eps.def b/definitions/grib2/template.4.eps.def index c9678f553..a5ccc0a15 100644 --- a/definitions/grib2/template.4.eps.def +++ b/definitions/grib2/template.4.eps.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Type of ensemble forecast codetable[1] typeOfEnsembleForecast ('4.6.table',masterDir,localDir) = 255 : dump; diff --git a/definitions/grib2/template.4.horizontal.def b/definitions/grib2/template.4.horizontal.def index 2cb59656f..51ebbcb80 100755 --- a/definitions/grib2/template.4.horizontal.def +++ b/definitions/grib2/template.4.horizontal.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Type of first fixed surface codetable[1] typeOfFirstFixedSurface ('4.5.table',masterDir,localDir) : dump,no_copy,edition_specific,string_type; diff --git a/definitions/grib2/template.4.parameter.def b/definitions/grib2/template.4.parameter.def index 72085b37c..5712662ff 100644 --- a/definitions/grib2/template.4.parameter.def +++ b/definitions/grib2/template.4.parameter.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Parameter category codetable[1] parameterCategory ('4.1.[discipline:l].table',masterDir,localDir) : dump; diff --git a/definitions/grib2/template.4.parameter_aerosol.def b/definitions/grib2/template.4.parameter_aerosol.def index 0a8e361d0..9ead99e8a 100644 --- a/definitions/grib2/template.4.parameter_aerosol.def +++ b/definitions/grib2/template.4.parameter_aerosol.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Parameter category codetable[1] parameterCategory ('4.1.[discipline:l].table',masterDir,localDir) : dump; @@ -54,4 +47,3 @@ codetable[1] stepUnits 'stepUnits.table' = defaultStepUnits : transient,dump,no_ # Forecast time in units defined by octet 18 (GRIB-29: supports negative forecast time) signed[4] forecastTime : dump; - diff --git a/definitions/grib2/template.4.parameter_aerosol_44.def b/definitions/grib2/template.4.parameter_aerosol_44.def index 16a52530a..c1150cedf 100644 --- a/definitions/grib2/template.4.parameter_aerosol_44.def +++ b/definitions/grib2/template.4.parameter_aerosol_44.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # GRIB-530: This template is to be used by template.4.44.def ONLY diff --git a/definitions/grib2/template.4.parameter_aerosol_optical.def b/definitions/grib2/template.4.parameter_aerosol_optical.def index a4f377d5d..5c48806d4 100644 --- a/definitions/grib2/template.4.parameter_aerosol_optical.def +++ b/definitions/grib2/template.4.parameter_aerosol_optical.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Parameter category codetable[1] parameterCategory ('4.1.[discipline:l].table',masterDir,localDir) : dump; diff --git a/definitions/grib2/template.4.parameter_chemical.def b/definitions/grib2/template.4.parameter_chemical.def index 7a424058c..106921b4f 100644 --- a/definitions/grib2/template.4.parameter_chemical.def +++ b/definitions/grib2/template.4.parameter_chemical.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Parameter category codetable[1] parameterCategory ('4.1.[discipline:l].table',masterDir,localDir): dump; diff --git a/definitions/grib2/template.4.parameter_chemical_distribution.def b/definitions/grib2/template.4.parameter_chemical_distribution.def index dfcecba31..b46877245 100644 --- a/definitions/grib2/template.4.parameter_chemical_distribution.def +++ b/definitions/grib2/template.4.parameter_chemical_distribution.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Parameter category codetable[1] parameterCategory ('4.1.[discipline:l].table',masterDir,localDir): dump; diff --git a/definitions/grib2/template.4.parameter_partition.def b/definitions/grib2/template.4.parameter_partition.def index d1d351950..b157f1d46 100644 --- a/definitions/grib2/template.4.parameter_partition.def +++ b/definitions/grib2/template.4.parameter_partition.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Parameter category codetable[1] parameterCategory ('4.1.[discipline:l].table',masterDir,localDir) : dump; diff --git a/definitions/grib2/template.4.parameter_postproc.def b/definitions/grib2/template.4.parameter_postproc.def index 54cd4cbda..4b093d8f7 100644 --- a/definitions/grib2/template.4.parameter_postproc.def +++ b/definitions/grib2/template.4.parameter_postproc.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Parameter category codetable[1] parameterCategory ('4.1.[discipline:l].table',masterDir,localDir): dump; diff --git a/definitions/grib2/template.4.parameter_tile.def b/definitions/grib2/template.4.parameter_tile.def index 2ea4b7c65..072d9e1e7 100644 --- a/definitions/grib2/template.4.parameter_tile.def +++ b/definitions/grib2/template.4.parameter_tile.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Parameter category codetable[1] parameterCategory ('4.1.[discipline:l].table',masterDir,localDir) : dump; @@ -56,4 +49,3 @@ codetable[1] stepUnits 'stepUnits.table' = defaultStepUnits : transient,dump,no_ # Forecast time in units defined by octet 24 signed[4] forecastTime : dump; - diff --git a/definitions/grib2/template.4.point_in_time.def b/definitions/grib2/template.4.point_in_time.def index d32c6f77b..b863192b6 100644 --- a/definitions/grib2/template.4.point_in_time.def +++ b/definitions/grib2/template.4.point_in_time.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# meta startStep step_in_units(forecastTime,indicatorOfUnitOfTimeRange,stepUnits): no_copy; meta endStep g2end_step(startStep,stepUnits) : no_copy; diff --git a/definitions/grib2/template.4.probability.def b/definitions/grib2/template.4.probability.def index 24e0ed7a6..1e86aa66f 100755 --- a/definitions/grib2/template.4.probability.def +++ b/definitions/grib2/template.4.probability.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Forecast probability number unsigned[1] forecastProbabilityNumber : dump; diff --git a/definitions/grib2/template.4.rectangular_cluster.def b/definitions/grib2/template.4.rectangular_cluster.def index 91579e03a..b0ce850d0 100755 --- a/definitions/grib2/template.4.rectangular_cluster.def +++ b/definitions/grib2/template.4.rectangular_cluster.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Cluster identifier unsigned[1] clusterIdentifier : dump ; diff --git a/definitions/grib2/template.4.statistical.def b/definitions/grib2/template.4.statistical.def index 60af6fe77..315f84397 100644 --- a/definitions/grib2/template.4.statistical.def +++ b/definitions/grib2/template.4.statistical.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Year of end of overall time interval unsigned[2] yearOfEndOfOverallTimeInterval =0 : edition_specific; @@ -128,4 +121,3 @@ meta time.validityDate validity_date(date,dataTime,step,stepUnits,yearOfEndOfOve monthOfEndOfOverallTimeInterval,dayOfEndOfOverallTimeInterval) : no_copy; meta time.validityTime validity_time(date,dataTime,step,stepUnits,hourOfEndOfOverallTimeInterval, minuteOfEndOfOverallTimeInterval) : no_copy; - diff --git a/definitions/grib2/template.5.0.def b/definitions/grib2/template.5.0.def index 95feda945..5125629bf 100644 --- a/definitions/grib2/template.5.0.def +++ b/definitions/grib2/template.5.0.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 5.0, Grid point data - simple packing diff --git a/definitions/grib2/template.5.1.def b/definitions/grib2/template.5.1.def index 1c51f03d9..e3188aa48 100644 --- a/definitions/grib2/template.5.1.def +++ b/definitions/grib2/template.5.1.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 5.1, Matrix values at grid point -simple packing diff --git a/definitions/grib2/template.5.2.def b/definitions/grib2/template.5.2.def index 614dd8ab9..a2b8e9920 100644 --- a/definitions/grib2/template.5.2.def +++ b/definitions/grib2/template.5.2.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 5.2, Grid point data - complex packing diff --git a/definitions/grib2/template.5.3.def b/definitions/grib2/template.5.3.def index ce89f221c..3d2e1ff9e 100644 --- a/definitions/grib2/template.5.3.def +++ b/definitions/grib2/template.5.3.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 5.3, Grid point data - complex packing and spatial differencing diff --git a/definitions/grib2/template.5.4.def b/definitions/grib2/template.5.4.def index 954a07ce9..96a1e781f 100644 --- a/definitions/grib2/template.5.4.def +++ b/definitions/grib2/template.5.4.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 5.4, Grid point data - IEEE packing # added for conversion from other packing diff --git a/definitions/grib2/template.5.40.def b/definitions/grib2/template.5.40.def index f391d0d1e..adde22a04 100644 --- a/definitions/grib2/template.5.40.def +++ b/definitions/grib2/template.5.40.def @@ -1,14 +1,6 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# -#Data Representation Template 5.40: -#Grid point data - JPEG 2000 Code Stream Format +#Data Representation Template 5.40: Grid point data - JPEG 2000 Code Stream Format include "grib2/template.5.packing.def"; include "grib2/template.5.original_values.def"; diff --git a/definitions/grib2/template.5.41.def b/definitions/grib2/template.5.41.def index 6505fde81..cb214b25d 100644 --- a/definitions/grib2/template.5.41.def +++ b/definitions/grib2/template.5.41.def @@ -1,14 +1,6 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Grid point data - PNG Code Stream Format SAME AS 5.40010 !!!!!! include "grib2/template.5.packing.def"; include "grib2/template.5.original_values.def"; - diff --git a/definitions/grib2/template.5.42.def b/definitions/grib2/template.5.42.def index 00098759c..f304bafcf 100644 --- a/definitions/grib2/template.5.42.def +++ b/definitions/grib2/template.5.42.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 5.42, Grid point and spectral data - CCSDS recommended lossless compression diff --git a/definitions/grib2/template.5.50.def b/definitions/grib2/template.5.50.def index 7c00fa040..72dde4aa4 100644 --- a/definitions/grib2/template.5.50.def +++ b/definitions/grib2/template.5.50.def @@ -1,15 +1,7 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 5.50, Spectral data - simple packing include "grib2/template.5.packing.def"; # Real part of (0,0) ieeefloat realPartOf00 ; - diff --git a/definitions/grib2/template.5.50000.def b/definitions/grib2/template.5.50000.def index d3cc902f8..06340fe3d 100644 --- a/definitions/grib2/template.5.50000.def +++ b/definitions/grib2/template.5.50000.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 5.51, Spherical harmonics data - complex packing @@ -22,8 +15,8 @@ meta _numberOfValues spectral_truncation(J,K,M,numberOfValues): read_only; constant laplacianScalingFactorUnset = -2147483647; signed[4] laplacianScalingFactor : edition_specific ; -meta data.laplacianOperator scale(laplacianScalingFactor,one,million,truncateLaplacian) ; -meta laplacianOperatorIsSet evaluate(laplacianScalingFactor != laplacianScalingFactorUnset && !computeLaplacianOperator); +meta data.laplacianOperator scale(laplacianScalingFactor,one,million,truncateLaplacian) ; +meta laplacianOperatorIsSet evaluate(laplacianScalingFactor != laplacianScalingFactorUnset && !computeLaplacianOperator); transient JS= 20 ; transient KS=20 ; diff --git a/definitions/grib2/template.5.50001.def b/definitions/grib2/template.5.50001.def index 0ec257dc1..93416da62 100755 --- a/definitions/grib2/template.5.50001.def +++ b/definitions/grib2/template.5.50001.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# ieeefloat referenceValue : no_copy; meta referenceValueError reference_value_error(referenceValue,ieee); @@ -28,7 +21,7 @@ if (bitsPerValue) { unsigned [1] orderOfSPD = 2 : no_copy ; if (orderOfSPD) { - unsigned[1] widthOfSPD ; - meta SPD spd(widthOfSPD,orderOfSPD) : read_only; + unsigned[1] widthOfSPD ; + meta SPD spd(widthOfSPD,orderOfSPD) : read_only; } } diff --git a/definitions/grib2/template.5.50002.def b/definitions/grib2/template.5.50002.def index 08ddf3d4b..9cb6555bd 100755 --- a/definitions/grib2/template.5.50002.def +++ b/definitions/grib2/template.5.50002.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# ieeefloat referenceValue : no_copy; meta referenceValueError reference_value_error(referenceValue,ieee); diff --git a/definitions/grib2/template.5.51.def b/definitions/grib2/template.5.51.def index f57ee1e67..aa91633df 100644 --- a/definitions/grib2/template.5.51.def +++ b/definitions/grib2/template.5.51.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 5.51, Spherical harmonics data - complex packing diff --git a/definitions/grib2/template.5.6.def b/definitions/grib2/template.5.6.def index 50ab17827..cf437ef06 100644 --- a/definitions/grib2/template.5.6.def +++ b/definitions/grib2/template.5.6.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Grid point data - Simple packing with preprocessing diff --git a/definitions/grib2/template.5.61.def b/definitions/grib2/template.5.61.def index 738c9aca3..dc3a1e6f6 100644 --- a/definitions/grib2/template.5.61.def +++ b/definitions/grib2/template.5.61.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Grid point data - Simple packing with logarithmic preprocessing constant typeOfPreProcessing=1; diff --git a/definitions/grib2/template.5.packing.def b/definitions/grib2/template.5.packing.def index f7d9003cf..58f3d1838 100755 --- a/definitions/grib2/template.5.packing.def +++ b/definitions/grib2/template.5.packing.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # Reference value (R) # The copy_ok means that the value is copied when changing the representation diff --git a/definitions/grib2/template.5.second_order.def b/definitions/grib2/template.5.second_order.def index 93b36858a..3ac977bbf 100644 --- a/definitions/grib2/template.5.second_order.def +++ b/definitions/grib2/template.5.second_order.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# codetable[1] groupSplitting ('5.4.table',masterDir,localDir) = 1 ; #default general diff --git a/definitions/grib2/template.7.0.def b/definitions/grib2/template.7.0.def index 01e13a393..8a9cff878 100644 --- a/definitions/grib2/template.7.0.def +++ b/definitions/grib2/template.7.0.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 7.0, Grid point data - simple packing # Octets 6-nn : Binary data values - binary string, with each @@ -27,11 +20,11 @@ meta codedValues data_g2simple_packing( ): read_only; meta values data_apply_bitmap(codedValues, - bitmap, - missingValue, - binaryScaleFactor, - numberOfDataPoints, - numberOfValues) : dump; + bitmap, + missingValue, + binaryScaleFactor, + numberOfDataPoints, + numberOfValues) : dump; meta packingError simple_packing_error(bitsPerValue,binaryScaleFactor,decimalScaleFactor,referenceValue,ieee) : no_copy; meta unpackedError simple_packing_error(zero,binaryScaleFactor,decimalScaleFactor,referenceValue,ieee) : no_copy; diff --git a/definitions/grib2/template.7.1.def b/definitions/grib2/template.7.1.def index 098c422a2..7585875d6 100644 --- a/definitions/grib2/template.7.1.def +++ b/definitions/grib2/template.7.1.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 7.1, Matrix values at grid point -simple packing # Octets 6-nn : Binary data values - binary string, with each @@ -28,11 +21,11 @@ meta codedValues data_g2simple_packing( ): read_only; meta values data_apply_bitmap(codedValues, - bitmap, - missingValue, - binaryScaleFactor, - numberOfDataPoints, - numberOfValues) : dump; + bitmap, + missingValue, + binaryScaleFactor, + numberOfDataPoints, + numberOfValues) : dump; meta packingError simple_packing_error(bitsPerValue,binaryScaleFactor,decimalScaleFactor,referenceValue,ieee) : no_copy; meta unpackedError simple_packing_error(zero,binaryScaleFactor,decimalScaleFactor,referenceValue,ieee) : no_copy; diff --git a/definitions/grib2/template.7.2.def b/definitions/grib2/template.7.2.def index da03ab814..a3b8b1485 100644 --- a/definitions/grib2/template.7.2.def +++ b/definitions/grib2/template.7.2.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 7.2, Grid point data - complex packing # Octets 6-xx : NG group reference values @@ -17,10 +10,9 @@ constant orderOfSpatialDifferencing = 0; constant numberOfOctetsExtraDescriptors = 0; meta codedValues data_g22order_packing( - section7Length, - offsetBeforeData, - offsetSection7, - + section7Length, + offsetBeforeData, + offsetSection7, numberOfValues, bitsPerValue, @@ -46,11 +38,11 @@ meta codedValues data_g22order_packing( ): read_only; meta values data_apply_bitmap(codedValues, - bitmap, - missingValue, - binaryScaleFactor, - numberOfDataPoints, - numberOfValues) : dump; + bitmap, + missingValue, + binaryScaleFactor, + numberOfDataPoints, + numberOfValues) : dump; alias data.packedValues = codedValues; diff --git a/definitions/grib2/template.7.3.def b/definitions/grib2/template.7.3.def index d42a8914e..f7345f9c7 100644 --- a/definitions/grib2/template.7.3.def +++ b/definitions/grib2/template.7.3.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 7.3, Grid point data - complex packing and spatial differencing # Octets 6-ww : First value(s) of original @@ -15,10 +8,9 @@ position offsetBeforeData; meta codedValues data_g22order_packing( - section7Length, - offsetBeforeData, - offsetSection7, - + section7Length, + offsetBeforeData, + offsetSection7, numberOfValues, bitsPerValue, @@ -44,11 +36,11 @@ meta codedValues data_g22order_packing( ): read_only; meta values data_apply_bitmap(codedValues, - bitmap, - missingValue, - binaryScaleFactor, - numberOfDataPoints, - numberOfValues) : dump; + bitmap, + missingValue, + binaryScaleFactor, + numberOfDataPoints, + numberOfValues) : dump; alias data.packedValues=codedValues; diff --git a/definitions/grib2/template.7.4.def b/definitions/grib2/template.7.4.def index 1412cdd60..3642bae94 100644 --- a/definitions/grib2/template.7.4.def +++ b/definitions/grib2/template.7.4.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 7.4, Grid point data - simple packing # Octets 6-nn : Binary data values - binary string, with each diff --git a/definitions/grib2/template.7.40.def b/definitions/grib2/template.7.40.def index 960e4d31f..5de695762 100644 --- a/definitions/grib2/template.7.40.def +++ b/definitions/grib2/template.7.40.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 7.40, Grid point data - jpeg2000 # Octets 6-xx : NG group reference values diff --git a/definitions/grib2/template.7.41.def b/definitions/grib2/template.7.41.def index c4eb3dd85..0bce3cd6d 100644 --- a/definitions/grib2/template.7.41.def +++ b/definitions/grib2/template.7.41.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 7.41, Grid point data - png meta codedValues data_png_packing( diff --git a/definitions/grib2/template.7.42.def b/definitions/grib2/template.7.42.def index f47ca3689..e106c9b09 100644 --- a/definitions/grib2/template.7.42.def +++ b/definitions/grib2/template.7.42.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 7.42, Grid point data - CCSDS meta codedValues data_ccsds_packing( diff --git a/definitions/grib2/template.7.50.def b/definitions/grib2/template.7.50.def index 27a16feca..3397f1997 100644 --- a/definitions/grib2/template.7.50.def +++ b/definitions/grib2/template.7.50.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 7.50, Spectral data - simple packing # Octets 6-nn : Binary data values - binary string, with each @@ -32,8 +25,6 @@ transient numberOfPackedValues = numberOfValues - 1 : no_copy; optimizeScaleFactor ) : read_only; - - meta values data_g2shsimple_packing( codedValues, realPartOf00, diff --git a/definitions/grib2/template.7.50000.def b/definitions/grib2/template.7.50000.def index 5592eb045..1d6b9ff34 100644 --- a/definitions/grib2/template.7.50000.def +++ b/definitions/grib2/template.7.50000.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# constant GRIBEXShBugPresent = 0; constant sphericalHarmonics = 1; diff --git a/definitions/grib2/template.7.50001.def b/definitions/grib2/template.7.50001.def index 1c3e91643..9473eff41 100644 --- a/definitions/grib2/template.7.50001.def +++ b/definitions/grib2/template.7.50001.def @@ -1,17 +1,10 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# if (bitsPerValue) { -meta groupWidths unsigned_bits(widthOfWidths,numberOfGroups) : read_only; -meta groupLengths unsigned_bits(widthOfLengths,numberOfGroups) : read_only; -meta firstOrderValues unsigned_bits(widthOfFirstOrderValues,numberOfGroups) : read_only; -meta countOfGroupLengths sum(groupLengths); + meta groupWidths unsigned_bits(widthOfWidths,numberOfGroups) : read_only; + meta groupLengths unsigned_bits(widthOfLengths,numberOfGroups) : read_only; + meta firstOrderValues unsigned_bits(widthOfFirstOrderValues,numberOfGroups) : read_only; + meta countOfGroupLengths sum(groupLengths); } transient halfByte=0; diff --git a/definitions/grib2/template.7.50002.def b/definitions/grib2/template.7.50002.def index ba6f987cc..531ec6bc8 100644 --- a/definitions/grib2/template.7.50002.def +++ b/definitions/grib2/template.7.50002.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# meta groupWidths unsigned_bits(widthOfWidths,numberOfGroups) : read_only; meta groupLengths unsigned_bits(widthOfLengths,numberOfGroups) : read_only; diff --git a/definitions/grib2/template.7.51.def b/definitions/grib2/template.7.51.def index decfe0b63..2d6505b3a 100644 --- a/definitions/grib2/template.7.51.def +++ b/definitions/grib2/template.7.51.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 7.51, Spherical harmonics - complex packing # Octets 6-(5+I*TS) : Data values from the unpacked subset diff --git a/definitions/grib2/template.7.6.def b/definitions/grib2/template.7.6.def index 5726294f1..0d1389b66 100644 --- a/definitions/grib2/template.7.6.def +++ b/definitions/grib2/template.7.6.def @@ -1,15 +1,7 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 7.6, Grid point data - simple packing with preprocessing -# Octets 6-nn : Binary data values - binary string, with each -# (scaled) +# Octets 6-nn : Binary data values - binary string, with each (scaled) meta codedValues data_g2simple_packing_with_preprocessing( section7Length, @@ -29,11 +21,11 @@ meta codedValues data_g2simple_packing_with_preprocessing( ): read_only; meta values data_apply_bitmap(codedValues, - bitmap, - missingValue, - binaryScaleFactor, - numberOfDataPoints, - numberOfValues) : dump; + bitmap, + missingValue, + binaryScaleFactor, + numberOfDataPoints, + numberOfValues) : dump; alias data.packedValues = codedValues; diff --git a/definitions/grib2/template.7.61.def b/definitions/grib2/template.7.61.def index 5726294f1..0d1389b66 100644 --- a/definitions/grib2/template.7.61.def +++ b/definitions/grib2/template.7.61.def @@ -1,15 +1,7 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 7.6, Grid point data - simple packing with preprocessing -# Octets 6-nn : Binary data values - binary string, with each -# (scaled) +# Octets 6-nn : Binary data values - binary string, with each (scaled) meta codedValues data_g2simple_packing_with_preprocessing( section7Length, @@ -29,11 +21,11 @@ meta codedValues data_g2simple_packing_with_preprocessing( ): read_only; meta values data_apply_bitmap(codedValues, - bitmap, - missingValue, - binaryScaleFactor, - numberOfDataPoints, - numberOfValues) : dump; + bitmap, + missingValue, + binaryScaleFactor, + numberOfDataPoints, + numberOfValues) : dump; alias data.packedValues = codedValues; diff --git a/definitions/grib2/template.7.second_order.def b/definitions/grib2/template.7.second_order.def index 64ebcedca..1bfb0b0d4 100644 --- a/definitions/grib2/template.7.second_order.def +++ b/definitions/grib2/template.7.second_order.def @@ -1,11 +1,4 @@ # Copyright 2005-2019 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# # TEMPLATE 7.2, Grid point data - complex packing @@ -27,36 +20,36 @@ meta codedValues data_g2second_order_packing( binaryScaleFactor, decimalScaleFactor, #g2second_order_packing - halfByte, - packingType, - grid_ieee, - precision, - widthOfFirstOrderValues, - firstOrderValues, - N1, - N2, - numberOfGroups, - codedNumberOfGroups, - numberOfSecondOrderPackedValues, - extraValues, - groupWidths, - widthOfWidths, - groupLengths, - widthOfLengths, - NL, - SPD, - widthOfSPD, - orderOfSPD, - numberOfPoints + halfByte, + packingType, + grid_ieee, + precision, + widthOfFirstOrderValues, + firstOrderValues, + N1, + N2, + numberOfGroups, + codedNumberOfGroups, + numberOfSecondOrderPackedValues, + extraValues, + groupWidths, + widthOfWidths, + groupLengths, + widthOfLengths, + NL, + SPD, + widthOfSPD, + orderOfSPD, + numberOfPoints ): read_only; meta values data_apply_bitmap(codedValues, - bitmap, - missingValue, - binaryScaleFactor, - numberOfDataPoints, - numberOfValues) : dump; + bitmap, + missingValue, + binaryScaleFactor, + numberOfDataPoints, + numberOfValues) : dump; alias data.packedValues = codedValues; From 5f7b4022aec2fbe2a6c5e8967c72c6d9397f439d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 1 May 2019 17:51:57 +0100 Subject: [PATCH 208/414] Performance: remove unused definition files to reduce compile time for memfs.c --- memfs.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/memfs.py b/memfs.py index a1bd41b1b..4cc140304 100755 --- a/memfs.py +++ b/memfs.py @@ -8,7 +8,8 @@ import binascii assert len(sys.argv) > 2 # For now exclude GRIB3 as it is still experimental -EXCLUDED = ['grib3'] +# The BUFR codetables is not used in the engine +EXCLUDED = ['grib3', 'codetables'] dirs = [os.path.realpath(x) for x in sys.argv[1:-1]] print(dirs) From 1764a4645b7d612f1fcab02331f2c7e1e15d38fd Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 10 May 2019 09:39:06 +0100 Subject: [PATCH 209/414] ECC-770: Update GRIB2 definitions with the latest WMO V23.0.0 code tables/templates --- definitions/grib2/boot.def | 2 +- definitions/grib2/tables/1.0.table | 5 +- definitions/grib2/tables/20/4.230.table | 447 ---------------- definitions/grib2/tables/20/4.233.table | 447 ---------------- definitions/grib2/tables/21/4.230.table | 4 +- definitions/grib2/tables/21/4.240.table | 4 +- definitions/grib2/tables/23/0.0.table | 10 + definitions/grib2/tables/23/1.0.table | 27 + definitions/grib2/tables/23/1.1.table | 4 + definitions/grib2/tables/23/1.2.table | 8 + definitions/grib2/tables/23/1.3.table | 14 + definitions/grib2/tables/23/1.4.table | 13 + definitions/grib2/tables/23/1.5.table | 7 + definitions/grib2/tables/23/1.6.table | 8 + definitions/grib2/tables/23/3.0.table | 6 + definitions/grib2/tables/23/3.1.table | 54 ++ definitions/grib2/tables/23/3.10.table | 8 + definitions/grib2/tables/23/3.11.table | 7 + definitions/grib2/tables/23/3.15.table | 23 + definitions/grib2/tables/23/3.2.table | 14 + definitions/grib2/tables/23/3.20.table | 6 + definitions/grib2/tables/23/3.21.table | 8 + definitions/grib2/tables/23/3.25.table | 10 + definitions/grib2/tables/23/3.3.table | 9 + definitions/grib2/tables/23/3.4.table | 17 + definitions/grib2/tables/23/3.5.table | 5 + definitions/grib2/tables/23/3.6.table | 3 + definitions/grib2/tables/23/3.7.table | 5 + definitions/grib2/tables/23/3.8.table | 7 + definitions/grib2/tables/23/3.9.table | 4 + definitions/grib2/tables/23/4.0.table | 75 +++ definitions/grib2/tables/23/4.1.0.table | 27 + definitions/grib2/tables/23/4.1.1.table | 7 + definitions/grib2/tables/23/4.1.10.table | 10 + definitions/grib2/tables/23/4.1.192.table | 4 + definitions/grib2/tables/23/4.1.2.table | 9 + definitions/grib2/tables/23/4.1.3.table | 11 + definitions/grib2/tables/23/4.10.table | 16 + definitions/grib2/tables/23/4.11.table | 10 + definitions/grib2/tables/23/4.12.table | 7 + definitions/grib2/tables/23/4.13.table | 6 + definitions/grib2/tables/23/4.14.table | 6 + definitions/grib2/tables/23/4.15.table | 11 + definitions/grib2/tables/23/4.16.table | 9 + definitions/grib2/tables/23/4.192.table | 4 + definitions/grib2/tables/23/4.2.0.0.table | 34 ++ definitions/grib2/tables/23/4.2.0.1.table | 126 +++++ definitions/grib2/tables/23/4.2.0.13.table | 5 + definitions/grib2/tables/23/4.2.0.14.table | 7 + definitions/grib2/tables/23/4.2.0.15.table | 21 + definitions/grib2/tables/23/4.2.0.16.table | 10 + definitions/grib2/tables/23/4.2.0.17.table | 6 + definitions/grib2/tables/23/4.2.0.18.table | 23 + definitions/grib2/tables/23/4.2.0.19.table | 40 ++ definitions/grib2/tables/23/4.2.0.190.table | 5 + definitions/grib2/tables/23/4.2.0.191.table | 8 + definitions/grib2/tables/23/4.2.0.2.table | 51 ++ definitions/grib2/tables/23/4.2.0.20.table | 62 +++ definitions/grib2/tables/23/4.2.0.3.table | 36 ++ definitions/grib2/tables/23/4.2.0.4.table | 24 + definitions/grib2/tables/23/4.2.0.5.table | 13 + definitions/grib2/tables/23/4.2.0.6.table | 49 ++ definitions/grib2/tables/23/4.2.0.7.table | 24 + definitions/grib2/tables/23/4.2.1.0.table | 21 + definitions/grib2/tables/23/4.2.1.1.table | 7 + definitions/grib2/tables/23/4.2.1.2.table | 15 + definitions/grib2/tables/23/4.2.10.0.table | 70 +++ definitions/grib2/tables/23/4.2.10.1.table | 9 + definitions/grib2/tables/23/4.2.10.191.table | 8 + definitions/grib2/tables/23/4.2.10.2.table | 17 + definitions/grib2/tables/23/4.2.10.3.table | 7 + definitions/grib2/tables/23/4.2.10.4.table | 24 + definitions/grib2/tables/23/4.2.2.0.table | 43 ++ definitions/grib2/tables/23/4.2.2.3.table | 32 ++ definitions/grib2/tables/23/4.2.2.4.table | 16 + definitions/grib2/tables/23/4.2.2.5.table | 2 + definitions/grib2/tables/23/4.2.3.0.table | 14 + definitions/grib2/tables/23/4.2.3.1.table | 35 ++ definitions/grib2/tables/23/4.2.3.2.table | 24 + definitions/grib2/tables/23/4.2.3.3.table | 4 + definitions/grib2/tables/23/4.2.3.4.table | 10 + definitions/grib2/tables/23/4.2.3.5.table | 7 + definitions/grib2/tables/23/4.2.3.6.table | 7 + definitions/grib2/tables/23/4.201.table | 17 + definitions/grib2/tables/23/4.202.table | 4 + definitions/grib2/tables/23/4.203.table | 26 + definitions/grib2/tables/23/4.204.table | 9 + definitions/grib2/tables/23/4.205.table | 6 + definitions/grib2/tables/23/4.206.table | 6 + definitions/grib2/tables/23/4.207.table | 10 + definitions/grib2/tables/23/4.208.table | 9 + definitions/grib2/tables/23/4.209.table | 9 + definitions/grib2/tables/23/4.210.table | 6 + definitions/grib2/tables/23/4.211.table | 7 + definitions/grib2/tables/23/4.212.table | 18 + definitions/grib2/tables/23/4.213.table | 16 + definitions/grib2/tables/23/4.215.table | 9 + definitions/grib2/tables/23/4.216.table | 5 + definitions/grib2/tables/23/4.217.table | 8 + definitions/grib2/tables/23/4.218.table | 46 ++ definitions/grib2/tables/23/4.219.table | 8 + definitions/grib2/tables/23/4.220.table | 6 + definitions/grib2/tables/23/4.221.table | 6 + definitions/grib2/tables/23/4.222.table | 6 + definitions/grib2/tables/23/4.223.table | 5 + definitions/grib2/tables/23/4.224.table | 18 + definitions/grib2/tables/23/4.225.table | 2 + definitions/grib2/tables/23/4.227.table | 9 + definitions/grib2/tables/23/4.230.table | 511 +++++++++++++++++++ definitions/grib2/tables/23/4.233.table | 511 +++++++++++++++++++ definitions/grib2/tables/23/4.234.table | 21 + definitions/grib2/tables/23/4.236.table | 8 + definitions/grib2/tables/23/4.240.table | 13 + definitions/grib2/tables/23/4.241.table | 9 + definitions/grib2/tables/23/4.242.table | 7 + definitions/grib2/tables/23/4.243.table | 43 ++ definitions/grib2/tables/23/4.244.table | 7 + definitions/grib2/tables/23/4.3.table | 23 + definitions/grib2/tables/23/4.4.table | 17 + definitions/grib2/tables/23/4.5.table | 73 +++ definitions/grib2/tables/23/4.6.table | 9 + definitions/grib2/tables/23/4.7.table | 14 + definitions/grib2/tables/23/4.8.table | 6 + definitions/grib2/tables/23/4.9.table | 13 + definitions/grib2/tables/23/4.91.table | 16 + definitions/grib2/tables/23/5.0.table | 27 + definitions/grib2/tables/23/5.1.table | 6 + definitions/grib2/tables/23/5.2.table | 8 + definitions/grib2/tables/23/5.25.table | 9 + definitions/grib2/tables/23/5.26.table | 5 + definitions/grib2/tables/23/5.3.table | 7 + definitions/grib2/tables/23/5.4.table | 6 + definitions/grib2/tables/23/5.40.table | 5 + definitions/grib2/tables/23/5.40000.table | 5 + definitions/grib2/tables/23/5.5.table | 7 + definitions/grib2/tables/23/5.50002.table | 19 + definitions/grib2/tables/23/5.6.table | 7 + definitions/grib2/tables/23/5.7.table | 7 + definitions/grib2/tables/23/6.0.table | 6 + definitions/grib2/tables/23/stepType.table | 4 + 140 files changed, 3113 insertions(+), 901 deletions(-) create mode 100644 definitions/grib2/tables/23/0.0.table create mode 100644 definitions/grib2/tables/23/1.0.table create mode 100644 definitions/grib2/tables/23/1.1.table create mode 100644 definitions/grib2/tables/23/1.2.table create mode 100644 definitions/grib2/tables/23/1.3.table create mode 100644 definitions/grib2/tables/23/1.4.table create mode 100644 definitions/grib2/tables/23/1.5.table create mode 100644 definitions/grib2/tables/23/1.6.table create mode 100644 definitions/grib2/tables/23/3.0.table create mode 100644 definitions/grib2/tables/23/3.1.table create mode 100644 definitions/grib2/tables/23/3.10.table create mode 100644 definitions/grib2/tables/23/3.11.table create mode 100644 definitions/grib2/tables/23/3.15.table create mode 100644 definitions/grib2/tables/23/3.2.table create mode 100644 definitions/grib2/tables/23/3.20.table create mode 100644 definitions/grib2/tables/23/3.21.table create mode 100644 definitions/grib2/tables/23/3.25.table create mode 100644 definitions/grib2/tables/23/3.3.table create mode 100644 definitions/grib2/tables/23/3.4.table create mode 100644 definitions/grib2/tables/23/3.5.table create mode 100644 definitions/grib2/tables/23/3.6.table create mode 100644 definitions/grib2/tables/23/3.7.table create mode 100644 definitions/grib2/tables/23/3.8.table create mode 100644 definitions/grib2/tables/23/3.9.table create mode 100644 definitions/grib2/tables/23/4.0.table create mode 100644 definitions/grib2/tables/23/4.1.0.table create mode 100644 definitions/grib2/tables/23/4.1.1.table create mode 100644 definitions/grib2/tables/23/4.1.10.table create mode 100644 definitions/grib2/tables/23/4.1.192.table create mode 100644 definitions/grib2/tables/23/4.1.2.table create mode 100644 definitions/grib2/tables/23/4.1.3.table create mode 100644 definitions/grib2/tables/23/4.10.table create mode 100644 definitions/grib2/tables/23/4.11.table create mode 100644 definitions/grib2/tables/23/4.12.table create mode 100644 definitions/grib2/tables/23/4.13.table create mode 100644 definitions/grib2/tables/23/4.14.table create mode 100644 definitions/grib2/tables/23/4.15.table create mode 100644 definitions/grib2/tables/23/4.16.table create mode 100644 definitions/grib2/tables/23/4.192.table create mode 100644 definitions/grib2/tables/23/4.2.0.0.table create mode 100644 definitions/grib2/tables/23/4.2.0.1.table create mode 100644 definitions/grib2/tables/23/4.2.0.13.table create mode 100644 definitions/grib2/tables/23/4.2.0.14.table create mode 100644 definitions/grib2/tables/23/4.2.0.15.table create mode 100644 definitions/grib2/tables/23/4.2.0.16.table create mode 100644 definitions/grib2/tables/23/4.2.0.17.table create mode 100644 definitions/grib2/tables/23/4.2.0.18.table create mode 100644 definitions/grib2/tables/23/4.2.0.19.table create mode 100644 definitions/grib2/tables/23/4.2.0.190.table create mode 100644 definitions/grib2/tables/23/4.2.0.191.table create mode 100644 definitions/grib2/tables/23/4.2.0.2.table create mode 100644 definitions/grib2/tables/23/4.2.0.20.table create mode 100644 definitions/grib2/tables/23/4.2.0.3.table create mode 100644 definitions/grib2/tables/23/4.2.0.4.table create mode 100644 definitions/grib2/tables/23/4.2.0.5.table create mode 100644 definitions/grib2/tables/23/4.2.0.6.table create mode 100644 definitions/grib2/tables/23/4.2.0.7.table create mode 100644 definitions/grib2/tables/23/4.2.1.0.table create mode 100644 definitions/grib2/tables/23/4.2.1.1.table create mode 100644 definitions/grib2/tables/23/4.2.1.2.table create mode 100644 definitions/grib2/tables/23/4.2.10.0.table create mode 100644 definitions/grib2/tables/23/4.2.10.1.table create mode 100644 definitions/grib2/tables/23/4.2.10.191.table create mode 100644 definitions/grib2/tables/23/4.2.10.2.table create mode 100644 definitions/grib2/tables/23/4.2.10.3.table create mode 100644 definitions/grib2/tables/23/4.2.10.4.table create mode 100644 definitions/grib2/tables/23/4.2.2.0.table create mode 100644 definitions/grib2/tables/23/4.2.2.3.table create mode 100644 definitions/grib2/tables/23/4.2.2.4.table create mode 100644 definitions/grib2/tables/23/4.2.2.5.table create mode 100644 definitions/grib2/tables/23/4.2.3.0.table create mode 100644 definitions/grib2/tables/23/4.2.3.1.table create mode 100644 definitions/grib2/tables/23/4.2.3.2.table create mode 100644 definitions/grib2/tables/23/4.2.3.3.table create mode 100644 definitions/grib2/tables/23/4.2.3.4.table create mode 100644 definitions/grib2/tables/23/4.2.3.5.table create mode 100644 definitions/grib2/tables/23/4.2.3.6.table create mode 100644 definitions/grib2/tables/23/4.201.table create mode 100644 definitions/grib2/tables/23/4.202.table create mode 100644 definitions/grib2/tables/23/4.203.table create mode 100644 definitions/grib2/tables/23/4.204.table create mode 100644 definitions/grib2/tables/23/4.205.table create mode 100644 definitions/grib2/tables/23/4.206.table create mode 100644 definitions/grib2/tables/23/4.207.table create mode 100644 definitions/grib2/tables/23/4.208.table create mode 100644 definitions/grib2/tables/23/4.209.table create mode 100644 definitions/grib2/tables/23/4.210.table create mode 100644 definitions/grib2/tables/23/4.211.table create mode 100644 definitions/grib2/tables/23/4.212.table create mode 100644 definitions/grib2/tables/23/4.213.table create mode 100644 definitions/grib2/tables/23/4.215.table create mode 100644 definitions/grib2/tables/23/4.216.table create mode 100644 definitions/grib2/tables/23/4.217.table create mode 100644 definitions/grib2/tables/23/4.218.table create mode 100644 definitions/grib2/tables/23/4.219.table create mode 100644 definitions/grib2/tables/23/4.220.table create mode 100644 definitions/grib2/tables/23/4.221.table create mode 100644 definitions/grib2/tables/23/4.222.table create mode 100644 definitions/grib2/tables/23/4.223.table create mode 100644 definitions/grib2/tables/23/4.224.table create mode 100644 definitions/grib2/tables/23/4.225.table create mode 100644 definitions/grib2/tables/23/4.227.table create mode 100644 definitions/grib2/tables/23/4.230.table create mode 100644 definitions/grib2/tables/23/4.233.table create mode 100644 definitions/grib2/tables/23/4.234.table create mode 100644 definitions/grib2/tables/23/4.236.table create mode 100644 definitions/grib2/tables/23/4.240.table create mode 100644 definitions/grib2/tables/23/4.241.table create mode 100644 definitions/grib2/tables/23/4.242.table create mode 100644 definitions/grib2/tables/23/4.243.table create mode 100644 definitions/grib2/tables/23/4.244.table create mode 100644 definitions/grib2/tables/23/4.3.table create mode 100644 definitions/grib2/tables/23/4.4.table create mode 100644 definitions/grib2/tables/23/4.5.table create mode 100644 definitions/grib2/tables/23/4.6.table create mode 100644 definitions/grib2/tables/23/4.7.table create mode 100644 definitions/grib2/tables/23/4.8.table create mode 100644 definitions/grib2/tables/23/4.9.table create mode 100644 definitions/grib2/tables/23/4.91.table create mode 100644 definitions/grib2/tables/23/5.0.table create mode 100644 definitions/grib2/tables/23/5.1.table create mode 100644 definitions/grib2/tables/23/5.2.table create mode 100644 definitions/grib2/tables/23/5.25.table create mode 100644 definitions/grib2/tables/23/5.26.table create mode 100644 definitions/grib2/tables/23/5.3.table create mode 100644 definitions/grib2/tables/23/5.4.table create mode 100644 definitions/grib2/tables/23/5.40.table create mode 100644 definitions/grib2/tables/23/5.40000.table create mode 100644 definitions/grib2/tables/23/5.5.table create mode 100644 definitions/grib2/tables/23/5.50002.table create mode 100644 definitions/grib2/tables/23/5.6.table create mode 100644 definitions/grib2/tables/23/5.7.table create mode 100644 definitions/grib2/tables/23/6.0.table create mode 100644 definitions/grib2/tables/23/stepType.table diff --git a/definitions/grib2/boot.def b/definitions/grib2/boot.def index c8da2d42c..63057ba06 100644 --- a/definitions/grib2/boot.def +++ b/definitions/grib2/boot.def @@ -9,7 +9,7 @@ # This gets updated twice a year by WMO. # See http://www.wmo.int/pages/prog/www/WMOCodes/WMO306_vI2/LatestVERSION/LatestVERSION.html -constant tablesVersionLatest = 21 : edition_specific; +constant tablesVersionLatest = 23 : edition_specific; constant million = 1000000 : hidden; constant grib2divider = 1000000; diff --git a/definitions/grib2/tables/1.0.table b/definitions/grib2/tables/1.0.table index 7c1ff3aa3..4b6d11b1e 100644 --- a/definitions/grib2/tables/1.0.table +++ b/definitions/grib2/tables/1.0.table @@ -21,6 +21,7 @@ 19 19 Version implemented on 3 May 2017 20 20 Version implemented on 8 November 2017 21 21 Version implemented on 2 May 2018 -22 22 Pre-operational to be implemented by next amendment -# 23-254 Future versions +22 22 Version implemented on 7 November 2018 +23 23 Pre-operational to be implemented by next amendment +# 24-254 Future versions 255 255 Master tables not used. Local table entries and local templates may use the entire range of the table, not just those sections marked Reserved for local used. diff --git a/definitions/grib2/tables/20/4.230.table b/definitions/grib2/tables/20/4.230.table index 272731d76..16d22f7a8 100644 --- a/definitions/grib2/tables/20/4.230.table +++ b/definitions/grib2/tables/20/4.230.table @@ -1,449 +1,2 @@ # Code table 4.230 - Atmospheric chemical constituent type -0 0 Ozone O3 -1 1 Water vapour H2O -2 2 Methane CH4 -3 3 Carbon dioxide CO2 -4 4 Carbon monoxide CO -5 5 Nitrogen dioxide NO2 -6 6 Nitrous oxide N2O -7 7 Formaldehyde HCHO -8 8 Sulphur dioxide SO2 -9 9 Ammonia NH3 -10 10 Ammonium NH4+ -11 11 Nitrogen monoxide NO -12 12 Atomic oxygen O -13 13 Nitrate radical NO3 -14 14 Hydroperoxyl radical HO2 -15 15 Dinitrogen pentoxide N2O5 -16 16 Nitrous acid HONO -17 17 Nitric acid HNO3 -18 18 Peroxynitric acid HO2NO2 -19 19 Hydrogen peroxide H2O2 -20 20 Molecular hydrogen H -21 21 Atomic nitrogen N -22 22 Sulphate SO42- -23 23 Radon Rn -24 24 Elemental mercury Hg(0) -25 25 Divalent mercury Hg2+ -26 26 Atomic chlorine Cl -27 27 Chlorine monoxide ClO -28 28 Dichlorine peroxide Cl2O2 -29 29 Hypochlorous acid HClO -30 30 Chlorine nitrate ClONO2 -31 31 Chlorine dioxide ClO2 -32 32 Atomic bromine Br -33 33 Bromine monoxide BrO -34 34 Bromine chloride BrCl -35 35 Hydrogen bromide HBr -36 36 Hypobromous acid HBrO -37 37 Bromine nitrate BrONO2 -38 38 Oxygen O2 -#39-9999 Reserved -10000 10000 Hydroxyl radical OH -10001 10001 Methyl peroxy radical CH3O2 -10002 10002 Methyl hydroperoxide CH3O2H -10004 10004 Methanol CH3OH -10005 10005 Formic acid CH3OOH -10006 10006 Hydrogen cyanide HCN -10007 10007 Aceto nitrile CH3CN -10008 10008 Ethane C2H6 -10009 10009 Ethene (= Ethylene) C2H4 -10010 10010 Ethyne (= Acetylene) C2H2 -10011 10011 Ethanol C2H5OH -10012 10012 Acetic acid C2H5OOH -10013 10013 Peroxyacetyl nitrate CH3C(O)OONO2 -10014 10014 Propane C3H8 -10015 10015 Propene C3H6 -10016 10016 Butanes C4H10 -10017 10017 Isoprene C5H10 -10018 10018 Alpha pinene C10H16 -10019 10019 Beta pinene C10H16 -10020 10020 Limonene C10H16 -10021 10021 Benzene C6H6 -10022 10022 Toluene C7H8 -10023 10023 Xylene C8H10 -#10024-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides...) -10500 10500 Dimethyl sulphide CH3SCH3 (DMS) -#10501-20000 Reserved -20001 20001 Hydrogen chloride -20002 20002 CFC-11 -20003 20003 CFC-12 -20004 20004 CFC-113 -20005 20005 CFC-113a -20006 20006 CFC-114 -20007 20007 CFC-115 -20008 20008 HCFC-22 -20009 20009 HCFC-141b -20010 20010 HCFC-142b -20011 20011 Halon-1202 -20012 20012 Halon-1211 -20013 20013 Halon-1301 -20014 20014 Halon-2402 -20015 20015 Methyl chloride (HCC-40) -20016 20016 Carbon tetrachloride (HCC-10) -20017 20017 HCC-140a CH3CCl3 -20018 20018 Methyl bromide (HBC-40B1) -20019 20019 Hexachlorocyclohexane (HCH) -20020 20020 Alpha hexachlorocyclohexane -20021 20021 Hexachlorobiphenyl (PCB-153) -#20022-29999 Reserved -30000 30000 Radioactive pollutant (tracer, defined by originating centre) -#30001-30009 Reserved -30010 30010 Hydrogen H-3 -30011 30011 Hydrogen organic bounded H-3o -30012 30012 Hydrogen inorganic H-3a -30013 30013 Beryllium 7 Be-7 -30014 30014 Beryllium 10 Be-10 -30015 30015 Carbon 14 C-14 -30016 30016 Carbon 14 CO2 C-14CO2 -30017 30017 Carbon 14 other gases C-14og -30018 30018 Nitrogen 13 N-13 -30019 30019 Nitrogen 16 N-16 -30020 30020 Fluorine 18 F-18 -30021 30021 Sodium 22 Na-22 -30022 30022 Phosphate 32 P-32 -30023 30023 Phosphate 33 P-33 -30024 30024 Sulphur 35 S-35 -30025 30025 Chlorine 36 Cl-36 -30026 30026 Potassium 40 K-40 -30027 30027 Argon 41 Ar-41 -30028 30028 Calcium 41 Ca-41 -30029 30029 Calcium 45 Ca-45 -30030 30030 Titanium 44 Ti-44 -30031 30031 Scandium 46 Sc-46 -30032 30032 Vanadium 48 V-48 -30033 30033 Vanadium 49 V-49 -30034 30034 Chrome 51 Cr-51 -30035 30035 Manganese 52 Mn-52 -30036 30036 Manganese 54 Mn-54 -30037 30037 Iron 55 Fe-55 -30038 30038 Iron 59 Fe-59 -30039 30039 Cobalt 56 Co-56 -30040 30040 Cobalt 57 Co-57 -30041 30041 Cobalt 58 Co-58 -30042 30042 Cobalt 60 Co-60 -30043 30043 Nickel 59 Ni-59 -30044 30044 Nickel 63 Ni-63 -30045 30045 Zinc 65 Zn-65 -30046 30046 Gallium 67 Ga-67 -30047 30047 Gallium 68 Ga-68 -30048 30048 Germanium 68 Ge-68 -30049 30049 Germanium 69 Ge-69 -30050 30050 Arsenic 73 As-73 -30051 30051 Selenium 75 Se-75 -30052 30052 Selenium 79 Se-79 -30053 30053 Rubidium 81 Rb-81 -30054 30054 Rubidium 83 Rb-83 -30055 30055 Rubidium 84 Rb-84 -30056 30056 Rubidium 86 Rb-86 -30057 30057 Rubidium 87 Rb-87 -30058 30058 Rubidium 88 Rb-88 -30059 30059 Krypton 85 Kr-85 -30060 30060 Krypton 85 metastable Kr-85m -30061 30061 Krypton 87 Kr-87 -30062 30062 Krypton 88 Kr-88 -30063 30063 Krypton 89 Kr-89 -30064 30064 Strontium 85 Sr-85 -30065 30065 Strontium 89 Sr-89 -30066 30066 Strontium 89/90 Sr-8990 -30067 30067 Strontium 90 Sr-90 -30068 30068 Strontium 91 Sr-91 -30069 30069 Strontium 92 Sr-92 -30070 30070 Yttrium 87 Y-87 -30071 30071 Yttrium 88 Y-88 -30072 30072 Yttrium 90 Y-90 -30073 30073 Yttrium 91 Y-91 -30074 30074 Yttrium 91 metastable Y-91m -30075 30075 Yttrium 92 Y-92 -30076 30076 Yttrium 93 Y-93 -30077 30077 Zirconium 89 Zr-89 -30078 30078 Zirconium 93 Zr-93 -30079 30079 Zirconium 95 Zr-95 -30080 30080 Zirconium 97 Zr-97 -30081 30081 Niobium 93 metastable Nb-93m -30082 30082 Niobium 94 Nb-94 -30083 30083 Niobium 95 Nb-95 -30084 30084 Niobium 95 metastable Nb-95m -30085 30085 Niobium 97 Nb-97 -30086 30086 Niobium 97 metastable Nb-97m -30087 30087 Molybdenum 93 Mo-93 -30088 30088 Molybdenum 99 Mo-99 -30089 30089 Technetium 95 metastable Tc-95m -30090 30090 Technetium 96 Tc-96 -30091 30091 Technetium 99 Tc-99 -30092 30092 Technetium 99 metastable Tc-99m -30093 30093 Rhodium 99 Rh-99 -30094 30094 Rhodium 101 Rh-101 -30095 30095 Rhodium 102 metastable Rh-102m -30096 30096 Rhodium 103 metastable Rh-103m -30097 30097 Rhodium 105 Rh-105 -30098 30098 Rhodium 106 Rh-106 -30099 30099 Palladium 100 Pd-100 -30100 30100 Palladium 103 Pd-103 -30101 30101 Palladium 107 Pd-107 -30102 30102 Ruthenium 103 Ru-103 -30103 30103 Ruthenium 105 Ru-105 -30104 30104 Ruthenium 106 Ru-106 -30105 30105 Silver 108 metastable Ag-108m -30106 30106 Silver 110 metastable Ag-110m -30107 30107 Cadmium 109 Cd-109 -30108 30108 Cadmium 113 metastable Cd-113m -30109 30109 Cadmium 115 metastable Cd-115m -30110 30110 Indium 114 metastable In-114m -30111 30111 Tin 113 Sn-113 -30112 30112 Tin 119 metastable Sn-119m -30113 30113 Tin 121 metastable Sn-121m -30114 30114 Tin 122 Sn-122 -30115 30115 Tin 123 Sn-123 -30116 30116 Tin 126 Sn-126 -30117 30117 Antimony 124 Sb-124 -30118 30118 Antimony 125 Sb-125 -30119 30119 Antimony 126 Sb-126 -30120 30120 Antimony 127 Sb-127 -30121 30121 Antimony 129 Sb-129 -30122 30122 Tellurium 123 metastable Te-123m -30123 30123 Tellurium 125 metastable Te-125m -30124 30124 Tellurium 127 Te-127 -30125 30125 Tellurium 127 metastable Te-127m -30126 30126 Tellurium 129 Te-129 -30127 30127 Tellurium 129 metastable Te-129m -30128 30128 Tellurium 131 metastable Te-131m -30129 30129 Tellurium 132 Te-132 -30130 30130 Iodine 123 I-123 -30131 30131 Iodine 124 I-124 -30132 30132 Iodine 125 I-125 -30133 30133 Iodine 126 I-126 -30134 30134 Iodine 129 I-129 -30135 30135 Iodine 129 elementary gaseous I-129g -30136 30136 Iodine 129 organic bounded I-129o -30137 30137 Iodine 131 I-131 -30138 30138 Iodine 131 elementary gaseous I-131g -30139 30139 Iodine 131 organic bounded I-131o -30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go -30141 30141 Iodine 131 aerosol I-131a -30142 30142 Iodine 132 I-132 -30143 30143 Iodine 132 elementary gaseous I-132g -30144 30144 Iodine 132 organic bounded I-132o -30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go -30146 30146 Iodine 132 aerosol I-132a -30147 30147 Iodine 133 I-133 -30148 30148 Iodine 133 elementary gaseous I-133g -30149 30149 Iodine 133 organic bounded I-133o -30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go -30151 30151 Iodine 133 aerosol I-133a -30152 30152 Iodine 134 I-134 -30153 30153 Iodine 134 elementary gaseous I-134g -30154 30154 Iodine 134 organic bounded I-134o -30155 30155 Iodine 135 I-135 -30156 30156 Iodine 135 elementary gaseous I-135g -30157 30157 Iodine 135 organic bounded I-135o -30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go -30159 30159 Iodine 135 aerosol I-135a -30160 30160 Xenon 131 metastable Xe-131m -30161 30161 Xenon 133 Xe-133 -30162 30162 Xenon 133 metastable Xe-133m -30163 30163 Xenon 135 Xe-135 -30164 30164 Xenon 135 metastable Xe-135m -30165 30165 Xenon 137 Xe-137 -30166 30166 Xenon 138 Xe-138 -30167 30167 Xenon sum of all Xenon isotopes Xe-sum -30168 30168 Caesium 131 Cs-131 -30169 30169 Caesium 134 Cs-134 -30170 30170 Caesium 135 Cs-135 -30171 30171 Caesium 136 Cs-136 -30172 30172 Caesium 137 Cs-137 -30173 30173 Barium 133 Ba-133 -30174 30174 Barium 137 metastable Ba-137m -30175 30175 Barium 140 Ba-140 -30176 30176 Cerium 139 Ce-139 -30177 30177 Cerium 141 Ce-141 -30178 30178 Cerium 143 Ce-143 -30179 30179 Cerium 144 Ce-144 -30180 30180 Lanthanum 140 La-140 -30181 30181 Lanthanum 141 La-141 -30182 30182 Praseodymium 143 Pr-143 -30183 30183 Praseodymium 144 Pr-144 -30184 30184 Praseodymium 144 metastable Pr-144m -30185 30185 Samarium 145 Sm-145 -30186 30186 Samarium 147 Sm-147 -30187 30187 Samarium 151 Sm-151 -30188 30188 Neodymium 147 Nd-147 -30189 30189 Promethium 146 Pm-146 -30190 30190 Promethium 147 Pm-147 -30191 30191 Promethium 151 Pm-151 -30192 30192 Europium 152 Eu-152 -30193 30193 Europium 154 Eu-154 -30194 30194 Europium 155 Eu-155 -30195 30195 Gadolinium 153 Gd-153 -30196 30196 Terbium 160 Tb-160 -30197 30197 Holmium 166 metastable Ho-166m -30198 30198 Thulium 170 Tm-170 -30199 30199 Ytterbium 169 Yb-169 -30200 30200 Hafnium 175 Hf-175 -30201 30201 Hafnium 181 Hf-181 -30202 30202 Tantalum 179 Ta-179 -30203 30203 Tantalum 182 Ta-182 -30204 30204 Rhenium 184 Re-184 -30205 30205 Iridium 192 Ir-192 -30206 30206 Mercury 203 Hg-203 -30207 30207 Thallium 204 Tl-204 -30208 30208 Thallium 207 Tl-207 -30209 30209 Thallium 208 Tl-208 -30210 30210 Thallium 209 Tl-209 -30211 30211 Bismuth 205 Bi-205 -30212 30212 Bismuth 207 Bi-207 -30213 30213 Bismuth 210 Bi-210 -30214 30214 Bismuth 211 Bi-211 -30215 30215 Bismuth 212 Bi-212 -30216 30216 Bismuth 213 Bi-213 -30217 30217 Bismuth 214 Bi-214 -30218 30218 Polonium 208 Po-208 -30219 30219 Polonium 210 Po-210 -30220 30220 Polonium 212 Po-212 -30221 30221 Polonium 213 Po-213 -30222 30222 Polonium 214 Po-214 -30223 30223 Polonium 215 Po-215 -30224 30224 Polonium 216 Po-216 -30225 30225 Polonium 218 Po-218 -30226 30226 Lead 209 Pb-209 -30227 30227 Lead 210 Pb-210 -30228 30228 Lead 211 Pb-211 -30229 30229 Lead 212 Pb-212 -30230 30230 Lead 214 Pb-214 -30231 30231 Astatine 217 At-217 -30232 30232 Radon 219 Rn-219 -30233 30233 Radon 220 Rn-220 -30234 30234 Radon 222 Rn-222 -30235 30235 Francium 221 Fr-221 -30236 30236 Francium 223 Fr-223 -30237 30237 Radium 223 Ra-223 -30238 30238 Radium 224 Ra-224 -30239 30239 Radium 225 Ra-225 -30240 30240 Radium 226 Ra-226 -30241 30241 Radium 228 Ra-228 -30242 30242 Actinium 225 Ac-225 -30243 30243 Actinium 227 Ac-227 -30244 30244 Actinium 228 Ac-228 -30245 30245 Thorium 227 Th-227 -30246 30246 Thorium 228 Th-228 -30247 30247 Thorium 229 Th-229 -30248 30248 Thorium 230 Th-230 -30249 30249 Thorium 231 Th-231 -30250 30250 Thorium 232 Th-232 -30251 30251 Thorium 234 Th-234 -30252 30252 Protactinium 231 Pa-231 -30253 30253 Protactinium 233 Pa-233 -30254 30254 Protactinium 234 metastable Pa-234m -30255 30255 Uranium 232 U-232 -30256 30256 Uranium 233 U-233 -30257 30257 Uranium 234 U-234 -30258 30258 Uranium 235 U-235 -30259 30259 Uranium 236 U-236 -30260 30260 Uranium 237 U-237 -30261 30261 Uranium 238 U-238 -30262 30262 Plutonium 236 Pu-236 -30263 30263 Plutonium 238 Pu-238 -30264 30264 Plutonium 239 Pu-239 -30265 30265 Plutonium 240 Pu-240 -30266 30266 Plutonium 241 Pu-241 -30267 30267 Plutonium 242 Pu-242 -30268 30268 Plutonium 244 Pu-244 -30269 30269 Neptunium 237 Np-237 -30270 30270 Neptunium 238 Np-238 -30271 30271 Neptunium 239 Np-239 -30272 30272 Americium 241 Am-241 -30273 30273 Americium 242 Am-242 -30274 30274 Americium 242 metastable Am-242m -30275 30275 Americium 243 Am-243 -30276 30276 Curium 242 Cm-242 -30277 30277 Curium 243 Cm-243 -30278 30278 Curium 244 Cm-244 -30279 30279 Curium 245 Cm-245 -30280 30280 Curium 246 Cm-246 -30281 30281 Curium 247 Cm-247 -30282 30282 Curium 248 Cm-248 -30283 30283 Curium 243/244 Cm-243244 -30284 30284 Plutonium 238/Americium 241 Pu-238Am-241 -30285 30285 Plutonium 239/240 Pu-239240 -30286 30286 Berkelium 249 Bk-249 -30287 30287 Californium 249 Cf-249 -30288 30288 Californium 250 Cf-250 -30289 30289 Californium 252 Cf-252 -30290 30290 Sum aerosol particulates SumAer -30291 30291 Sum Iodine SumIod -30292 30292 Sum noble gas SumNG -30293 30293 Activation gas ActGas -30294 30294 Cs-137 Equivalent EquCs137 -#30295-59999 Reserved -60000 60000 HOx radical (OH+HO2) -60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2) -60002 60002 Passive Ozone -60003 60003 NOx expressed as nitrogen NOx -60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy -60005 60005 Total inorganic chlorine Clx -60006 60006 Total inorganic bromine Brx -60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx -60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx -60009 60009 Lumped alkanes -60010 60010 Lumped alkenes -60011 60011 Lumped aromatic compounds -60012 60012 Lumped terpenes -60013 60013 Non-methane volatile organic compounds expressed as carbon -60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon -60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon -60016 60016 Lumped oxygenated hydrocarbons -60017 60017 NOx expressed as nitrogen dioxide (NO2) -#60018-61999 Reserved -62000 62000 Total aerosol -62001 62001 Dust dry -62002 62002 Water in ambient -62003 62003 Ammonium dry -62004 62004 Nitrate dry -62005 62005 Nitric acid trihydrate -62006 62006 Sulphate dry -62007 62007 Mercury dry -62008 62008 Sea salt dry -62009 62009 Black carbon dry -62010 62010 Particulate organic matter dry -62011 62011 Primary particulate organic matter dry -62012 62012 Secondary particulate organic matter dry -62013 62013 Black carbon hydrophilic dry -62014 62014 Black carbon hydrophobic dry -62015 62015 Particulate organic matter hydrophilic dry -62016 62016 Particulate organic matter hydrophobic dry -62017 62017 Nitrate hydrophilic dry -62018 62018 Nitrate hydrophobic dry -#62019 Reserved -62020 62020 Smoke - high absorption -62021 62021 Smoke - low absorption -62022 62022 Aerosol - high absorption -62023 62023 Aerosol - low absorption -62025 62025 Volcanic ash -62026 62026 Particulate matter (PM) -# 62027-62099 Reserved -62100 62100 Alnus (Alder) pollen -62101 62101 Betula (Birch) pollen -62102 62102 Castanea (Chestnut) pollen -62103 62103 Carpinus (Hornbeam) pollen -62104 62104 Corylus (Hazel) pollen -62105 62105 Fagus (Beech) pollen -62106 62106 Fraxinus (Ash) pollen -62107 62107 Pinus (Pine) pollen -62108 62108 Platanus (Plane) pollen -62109 62109 Populus (Cottonwood, Poplar) pollen -62110 62110 Quercus (Oak) pollen -62111 62111 Salix (Willow) pollen -62112 62112 Taxus (Yew) pollen -62113 62113 Tilia (Lime, Linden) pollen -62114 62114 Ulmus (Elm) pollen -# 62115-62199 Reserved -62200 62200 Ambrosia (Ragweed, Burr-ragweed ) pollen -62201 62201 Artemisia (Sagebrush, Wormwood, Mugwort) pollen -62202 62202 Brassica (Rape, Broccoli, Brussels Sprouts, Cabbage, Cauliflower, Collards, Kale, Kohlrabi, Mustard, Rutabaga) pollen -62203 62203 Plantago (Plantain) pollen -62204 62204 Rumex (Dock, Sorrel) pollen -62205 62205 Urtica (Nettle) pollen -# 62206-62299 Reserved -62300 62300 Poaceae (Grass family) pollen -# 62301-65534 Reserved 65535 65535 Missing diff --git a/definitions/grib2/tables/20/4.233.table b/definitions/grib2/tables/20/4.233.table index 1d3021ef7..cbbf537be 100644 --- a/definitions/grib2/tables/20/4.233.table +++ b/definitions/grib2/tables/20/4.233.table @@ -1,449 +1,2 @@ # Code table 4.233 - Aerosol type -0 0 Ozone O3 -1 1 Water vapour H2O -2 2 Methane CH4 -3 3 Carbon dioxide CO2 -4 4 Carbon monoxide CO -5 5 Nitrogen dioxide NO2 -6 6 Nitrous oxide N2O -7 7 Formaldehyde HCHO -8 8 Sulphur dioxide SO2 -9 9 Ammonia NH3 -10 10 Ammonium NH4+ -11 11 Nitrogen monoxide NO -12 12 Atomic oxygen O -13 13 Nitrate radical NO3 -14 14 Hydroperoxyl radical HO2 -15 15 Dinitrogen pentoxide N2O5 -16 16 Nitrous acid HONO -17 17 Nitric acid HNO3 -18 18 Peroxynitric acid HO2NO2 -19 19 Hydrogen peroxide H2O2 -20 20 Molecular hydrogen H -21 21 Atomic nitrogen N -22 22 Sulphate SO42- -23 23 Radon Rn -24 24 Elemental mercury Hg(0) -25 25 Divalent mercury Hg2+ -26 26 Atomic chlorine Cl -27 27 Chlorine monoxide ClO -28 28 Dichlorine peroxide Cl2O2 -29 29 Hypochlorous acid HClO -30 30 Chlorine nitrate ClONO2 -31 31 Chlorine dioxide ClO2 -32 32 Atomic bromine Br -33 33 Bromine monoxide BrO -34 34 Bromine chloride BrCl -35 35 Hydrogen bromide HBr -36 36 Hypobromous acid HBrO -37 37 Bromine nitrate BrONO2 -38 38 Oxygen O2 -#39-9999 Reserved -10000 10000 Hydroxyl radical OH -10001 10001 Methyl peroxy radical CH3O2 -10002 10002 Methyl hydroperoxide CH3O2H -10004 10004 Methanol CH3OH -10005 10005 Formic acid CH3OOH -10006 10006 Hydrogen cyanide HCN -10007 10007 Aceto nitrile CH3CN -10008 10008 Ethane C2H6 -10009 10009 Ethene (= Ethylene) C2H4 -10010 10010 Ethyne (= Acetylene) C2H2 -10011 10011 Ethanol C2H5OH -10012 10012 Acetic acid C2H5OOH -10013 10013 Peroxyacetyl nitrate CH3C(O)OONO2 -10014 10014 Propane C3H8 -10015 10015 Propene C3H6 -10016 10016 Butanes C4H10 -10017 10017 Isoprene C5H10 -10018 10018 Alpha pinene C10H16 -10019 10019 Beta pinene C10H16 -10020 10020 Limonene C10H16 -10021 10021 Benzene C6H6 -10022 10022 Toluene C7H8 -10023 10023 Xylene C8H10 -#10024-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides...) -10500 10500 Dimethyl sulphide CH3SCH3 (DMS) -#10501-20000 Reserved -20001 20001 Hydrogen chloride -20002 20002 CFC-11 -20003 20003 CFC-12 -20004 20004 CFC-113 -20005 20005 CFC-113a -20006 20006 CFC-114 -20007 20007 CFC-115 -20008 20008 HCFC-22 -20009 20009 HCFC-141b -20010 20010 HCFC-142b -20011 20011 Halon-1202 -20012 20012 Halon-1211 -20013 20013 Halon-1301 -20014 20014 Halon-2402 -20015 20015 Methyl chloride (HCC-40) -20016 20016 Carbon tetrachloride (HCC-10) -20017 20017 HCC-140a CH3CCl3 -20018 20018 Methyl bromide (HBC-40B1) -20019 20019 Hexachlorocyclohexane (HCH) -20020 20020 Alpha hexachlorocyclohexane -20021 20021 Hexachlorobiphenyl (PCB-153) -#20022-29999 Reserved -30000 30000 Radioactive pollutant (tracer, defined by originating centre) -#30001-30009 Reserved -30010 30010 Hydrogen H-3 -30011 30011 Hydrogen organic bounded H-3o -30012 30012 Hydrogen inorganic H-3a -30013 30013 Beryllium 7 Be-7 -30014 30014 Beryllium 10 Be-10 -30015 30015 Carbon 14 C-14 -30016 30016 Carbon 14 CO2 C-14CO2 -30017 30017 Carbon 14 other gases C-14og -30018 30018 Nitrogen 13 N-13 -30019 30019 Nitrogen 16 N-16 -30020 30020 Fluorine 18 F-18 -30021 30021 Sodium 22 Na-22 -30022 30022 Phosphate 32 P-32 -30023 30023 Phosphate 33 P-33 -30024 30024 Sulphur 35 S-35 -30025 30025 Chlorine 36 Cl-36 -30026 30026 Potassium 40 K-40 -30027 30027 Argon 41 Ar-41 -30028 30028 Calcium 41 Ca-41 -30029 30029 Calcium 45 Ca-45 -30030 30030 Titanium 44 Ti-44 -30031 30031 Scandium 46 Sc-46 -30032 30032 Vanadium 48 V-48 -30033 30033 Vanadium 49 V-49 -30034 30034 Chrome 51 Cr-51 -30035 30035 Manganese 52 Mn-52 -30036 30036 Manganese 54 Mn-54 -30037 30037 Iron 55 Fe-55 -30038 30038 Iron 59 Fe-59 -30039 30039 Cobalt 56 Co-56 -30040 30040 Cobalt 57 Co-57 -30041 30041 Cobalt 58 Co-58 -30042 30042 Cobalt 60 Co-60 -30043 30043 Nickel 59 Ni-59 -30044 30044 Nickel 63 Ni-63 -30045 30045 Zinc 65 Zn-65 -30046 30046 Gallium 67 Ga-67 -30047 30047 Gallium 68 Ga-68 -30048 30048 Germanium 68 Ge-68 -30049 30049 Germanium 69 Ge-69 -30050 30050 Arsenic 73 As-73 -30051 30051 Selenium 75 Se-75 -30052 30052 Selenium 79 Se-79 -30053 30053 Rubidium 81 Rb-81 -30054 30054 Rubidium 83 Rb-83 -30055 30055 Rubidium 84 Rb-84 -30056 30056 Rubidium 86 Rb-86 -30057 30057 Rubidium 87 Rb-87 -30058 30058 Rubidium 88 Rb-88 -30059 30059 Krypton 85 Kr-85 -30060 30060 Krypton 85 metastable Kr-85m -30061 30061 Krypton 87 Kr-87 -30062 30062 Krypton 88 Kr-88 -30063 30063 Krypton 89 Kr-89 -30064 30064 Strontium 85 Sr-85 -30065 30065 Strontium 89 Sr-89 -30066 30066 Strontium 89/90 Sr-8990 -30067 30067 Strontium 90 Sr-90 -30068 30068 Strontium 91 Sr-91 -30069 30069 Strontium 92 Sr-92 -30070 30070 Yttrium 87 Y-87 -30071 30071 Yttrium 88 Y-88 -30072 30072 Yttrium 90 Y-90 -30073 30073 Yttrium 91 Y-91 -30074 30074 Yttrium 91 metastable Y-91m -30075 30075 Yttrium 92 Y-92 -30076 30076 Yttrium 93 Y-93 -30077 30077 Zirconium 89 Zr-89 -30078 30078 Zirconium 93 Zr-93 -30079 30079 Zirconium 95 Zr-95 -30080 30080 Zirconium 97 Zr-97 -30081 30081 Niobium 93 metastable Nb-93m -30082 30082 Niobium 94 Nb-94 -30083 30083 Niobium 95 Nb-95 -30084 30084 Niobium 95 metastable Nb-95m -30085 30085 Niobium 97 Nb-97 -30086 30086 Niobium 97 metastable Nb-97m -30087 30087 Molybdenum 93 Mo-93 -30088 30088 Molybdenum 99 Mo-99 -30089 30089 Technetium 95 metastable Tc-95m -30090 30090 Technetium 96 Tc-96 -30091 30091 Technetium 99 Tc-99 -30092 30092 Technetium 99 metastable Tc-99m -30093 30093 Rhodium 99 Rh-99 -30094 30094 Rhodium 101 Rh-101 -30095 30095 Rhodium 102 metastable Rh-102m -30096 30096 Rhodium 103 metastable Rh-103m -30097 30097 Rhodium 105 Rh-105 -30098 30098 Rhodium 106 Rh-106 -30099 30099 Palladium 100 Pd-100 -30100 30100 Palladium 103 Pd-103 -30101 30101 Palladium 107 Pd-107 -30102 30102 Ruthenium 103 Ru-103 -30103 30103 Ruthenium 105 Ru-105 -30104 30104 Ruthenium 106 Ru-106 -30105 30105 Silver 108 metastable Ag-108m -30106 30106 Silver 110 metastable Ag-110m -30107 30107 Cadmium 109 Cd-109 -30108 30108 Cadmium 113 metastable Cd-113m -30109 30109 Cadmium 115 metastable Cd-115m -30110 30110 Indium 114 metastable In-114m -30111 30111 Tin 113 Sn-113 -30112 30112 Tin 119 metastable Sn-119m -30113 30113 Tin 121 metastable Sn-121m -30114 30114 Tin 122 Sn-122 -30115 30115 Tin 123 Sn-123 -30116 30116 Tin 126 Sn-126 -30117 30117 Antimony 124 Sb-124 -30118 30118 Antimony 125 Sb-125 -30119 30119 Antimony 126 Sb-126 -30120 30120 Antimony 127 Sb-127 -30121 30121 Antimony 129 Sb-129 -30122 30122 Tellurium 123 metastable Te-123m -30123 30123 Tellurium 125 metastable Te-125m -30124 30124 Tellurium 127 Te-127 -30125 30125 Tellurium 127 metastable Te-127m -30126 30126 Tellurium 129 Te-129 -30127 30127 Tellurium 129 metastable Te-129m -30128 30128 Tellurium 131 metastable Te-131m -30129 30129 Tellurium 132 Te-132 -30130 30130 Iodine 123 I-123 -30131 30131 Iodine 124 I-124 -30132 30132 Iodine 125 I-125 -30133 30133 Iodine 126 I-126 -30134 30134 Iodine 129 I-129 -30135 30135 Iodine 129 elementary gaseous I-129g -30136 30136 Iodine 129 organic bounded I-129o -30137 30137 Iodine 131 I-131 -30138 30138 Iodine 131 elementary gaseous I-131g -30139 30139 Iodine 131 organic bounded I-131o -30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go -30141 30141 Iodine 131 aerosol I-131a -30142 30142 Iodine 132 I-132 -30143 30143 Iodine 132 elementary gaseous I-132g -30144 30144 Iodine 132 organic bounded I-132o -30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go -30146 30146 Iodine 132 aerosol I-132a -30147 30147 Iodine 133 I-133 -30148 30148 Iodine 133 elementary gaseous I-133g -30149 30149 Iodine 133 organic bounded I-133o -30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go -30151 30151 Iodine 133 aerosol I-133a -30152 30152 Iodine 134 I-134 -30153 30153 Iodine 134 elementary gaseous I-134g -30154 30154 Iodine 134 organic bounded I-134o -30155 30155 Iodine 135 I-135 -30156 30156 Iodine 135 elementary gaseous I-135g -30157 30157 Iodine 135 organic bounded I-135o -30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go -30159 30159 Iodine 135 aerosol I-135a -30160 30160 Xenon 131 metastable Xe-131m -30161 30161 Xenon 133 Xe-133 -30162 30162 Xenon 133 metastable Xe-133m -30163 30163 Xenon 135 Xe-135 -30164 30164 Xenon 135 metastable Xe-135m -30165 30165 Xenon 137 Xe-137 -30166 30166 Xenon 138 Xe-138 -30167 30167 Xenon sum of all Xenon isotopes Xe-sum -30168 30168 Caesium 131 Cs-131 -30169 30169 Caesium 134 Cs-134 -30170 30170 Caesium 135 Cs-135 -30171 30171 Caesium 136 Cs-136 -30172 30172 Caesium 137 Cs-137 -30173 30173 Barium 133 Ba-133 -30174 30174 Barium 137 metastable Ba-137m -30175 30175 Barium 140 Ba-140 -30176 30176 Cerium 139 Ce-139 -30177 30177 Cerium 141 Ce-141 -30178 30178 Cerium 143 Ce-143 -30179 30179 Cerium 144 Ce-144 -30180 30180 Lanthanum 140 La-140 -30181 30181 Lanthanum 141 La-141 -30182 30182 Praseodymium 143 Pr-143 -30183 30183 Praseodymium 144 Pr-144 -30184 30184 Praseodymium 144 metastable Pr-144m -30185 30185 Samarium 145 Sm-145 -30186 30186 Samarium 147 Sm-147 -30187 30187 Samarium 151 Sm-151 -30188 30188 Neodymium 147 Nd-147 -30189 30189 Promethium 146 Pm-146 -30190 30190 Promethium 147 Pm-147 -30191 30191 Promethium 151 Pm-151 -30192 30192 Europium 152 Eu-152 -30193 30193 Europium 154 Eu-154 -30194 30194 Europium 155 Eu-155 -30195 30195 Gadolinium 153 Gd-153 -30196 30196 Terbium 160 Tb-160 -30197 30197 Holmium 166 metastable Ho-166m -30198 30198 Thulium 170 Tm-170 -30199 30199 Ytterbium 169 Yb-169 -30200 30200 Hafnium 175 Hf-175 -30201 30201 Hafnium 181 Hf-181 -30202 30202 Tantalum 179 Ta-179 -30203 30203 Tantalum 182 Ta-182 -30204 30204 Rhenium 184 Re-184 -30205 30205 Iridium 192 Ir-192 -30206 30206 Mercury 203 Hg-203 -30207 30207 Thallium 204 Tl-204 -30208 30208 Thallium 207 Tl-207 -30209 30209 Thallium 208 Tl-208 -30210 30210 Thallium 209 Tl-209 -30211 30211 Bismuth 205 Bi-205 -30212 30212 Bismuth 207 Bi-207 -30213 30213 Bismuth 210 Bi-210 -30214 30214 Bismuth 211 Bi-211 -30215 30215 Bismuth 212 Bi-212 -30216 30216 Bismuth 213 Bi-213 -30217 30217 Bismuth 214 Bi-214 -30218 30218 Polonium 208 Po-208 -30219 30219 Polonium 210 Po-210 -30220 30220 Polonium 212 Po-212 -30221 30221 Polonium 213 Po-213 -30222 30222 Polonium 214 Po-214 -30223 30223 Polonium 215 Po-215 -30224 30224 Polonium 216 Po-216 -30225 30225 Polonium 218 Po-218 -30226 30226 Lead 209 Pb-209 -30227 30227 Lead 210 Pb-210 -30228 30228 Lead 211 Pb-211 -30229 30229 Lead 212 Pb-212 -30230 30230 Lead 214 Pb-214 -30231 30231 Astatine 217 At-217 -30232 30232 Radon 219 Rn-219 -30233 30233 Radon 220 Rn-220 -30234 30234 Radon 222 Rn-222 -30235 30235 Francium 221 Fr-221 -30236 30236 Francium 223 Fr-223 -30237 30237 Radium 223 Ra-223 -30238 30238 Radium 224 Ra-224 -30239 30239 Radium 225 Ra-225 -30240 30240 Radium 226 Ra-226 -30241 30241 Radium 228 Ra-228 -30242 30242 Actinium 225 Ac-225 -30243 30243 Actinium 227 Ac-227 -30244 30244 Actinium 228 Ac-228 -30245 30245 Thorium 227 Th-227 -30246 30246 Thorium 228 Th-228 -30247 30247 Thorium 229 Th-229 -30248 30248 Thorium 230 Th-230 -30249 30249 Thorium 231 Th-231 -30250 30250 Thorium 232 Th-232 -30251 30251 Thorium 234 Th-234 -30252 30252 Protactinium 231 Pa-231 -30253 30253 Protactinium 233 Pa-233 -30254 30254 Protactinium 234 metastable Pa-234m -30255 30255 Uranium 232 U-232 -30256 30256 Uranium 233 U-233 -30257 30257 Uranium 234 U-234 -30258 30258 Uranium 235 U-235 -30259 30259 Uranium 236 U-236 -30260 30260 Uranium 237 U-237 -30261 30261 Uranium 238 U-238 -30262 30262 Plutonium 236 Pu-236 -30263 30263 Plutonium 238 Pu-238 -30264 30264 Plutonium 239 Pu-239 -30265 30265 Plutonium 240 Pu-240 -30266 30266 Plutonium 241 Pu-241 -30267 30267 Plutonium 242 Pu-242 -30268 30268 Plutonium 244 Pu-244 -30269 30269 Neptunium 237 Np-237 -30270 30270 Neptunium 238 Np-238 -30271 30271 Neptunium 239 Np-239 -30272 30272 Americium 241 Am-241 -30273 30273 Americium 242 Am-242 -30274 30274 Americium 242 metastable Am-242m -30275 30275 Americium 243 Am-243 -30276 30276 Curium 242 Cm-242 -30277 30277 Curium 243 Cm-243 -30278 30278 Curium 244 Cm-244 -30279 30279 Curium 245 Cm-245 -30280 30280 Curium 246 Cm-246 -30281 30281 Curium 247 Cm-247 -30282 30282 Curium 248 Cm-248 -30283 30283 Curium 243/244 Cm-243244 -30284 30284 Plutonium 238/Americium 241 Pu-238Am-241 -30285 30285 Plutonium 239/240 Pu-239240 -30286 30286 Berkelium 249 Bk-249 -30287 30287 Californium 249 Cf-249 -30288 30288 Californium 250 Cf-250 -30289 30289 Californium 252 Cf-252 -30290 30290 Sum aerosol particulates SumAer -30291 30291 Sum Iodine SumIod -30292 30292 Sum noble gas SumNG -30293 30293 Activation gas ActGas -30294 30294 Cs-137 Equivalent EquCs137 -#30295-59999 Reserved -60000 60000 HOx radical (OH+HO2) -60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2) -60002 60002 Passive Ozone -60003 60003 NOx expressed as nitrogen NOx -60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy -60005 60005 Total inorganic chlorine Clx -60006 60006 Total inorganic bromine Brx -60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx -60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx -60009 60009 Lumped alkanes -60010 60010 Lumped alkenes -60011 60011 Lumped aromatic compounds -60012 60012 Lumped terpenes -60013 60013 Non-methane volatile organic compounds expressed as carbon -60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon -60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon -60016 60016 Lumped oxygenated hydrocarbons -60017 60017 NOx expressed as nitrogen dioxide (NO2) -#60018-61999 Reserved -62000 62000 Total aerosol -62001 62001 Dust dry -62002 62002 Water in ambient -62003 62003 Ammonium dry -62004 62004 Nitrate dry -62005 62005 Nitric acid trihydrate -62006 62006 Sulphate dry -62007 62007 Mercury dry -62008 62008 Sea salt dry -62009 62009 Black carbon dry -62010 62010 Particulate organic matter dry -62011 62011 Primary particulate organic matter dry -62012 62012 Secondary particulate organic matter dry -62013 62013 Black carbon hydrophilic dry -62014 62014 Black carbon hydrophobic dry -62015 62015 Particulate organic matter hydrophilic dry -62016 62016 Particulate organic matter hydrophobic dry -62017 62017 Nitrate hydrophilic dry -62018 62018 Nitrate hydrophobic dry -#62019 Reserved -62020 62020 Smoke - high absorption -62021 62021 Smoke - low absorption -62022 62022 Aerosol - high absorption -62023 62023 Aerosol - low absorption -62025 62025 Volcanic ash -62026 62026 Particulate matter (PM) -# 62027-62099 Reserved -62100 62100 Alnus (Alder) pollen -62101 62101 Betula (Birch) pollen -62102 62102 Castanea (Chestnut) pollen -62103 62103 Carpinus (Hornbeam) pollen -62104 62104 Corylus (Hazel) pollen -62105 62105 Fagus (Beech) pollen -62106 62106 Fraxinus (Ash) pollen -62107 62107 Pinus (Pine) pollen -62108 62108 Platanus (Plane) pollen -62109 62109 Populus (Cottonwood, Poplar) pollen -62110 62110 Quercus (Oak) pollen -62111 62111 Salix (Willow) pollen -62112 62112 Taxus (Yew) pollen -62113 62113 Tilia (Lime, Linden) pollen -62114 62114 Ulmus (Elm) pollen -# 62115-62199 Reserved -62200 62200 Ambrosia (Ragweed, Burr-ragweed ) pollen -62201 62201 Artemisia (Sagebrush, Wormwood, Mugwort) pollen -62202 62202 Brassica (Rape, Broccoli, Brussels Sprouts, Cabbage, Cauliflower, Collards, Kale, Kohlrabi, Mustard, Rutabaga) pollen -62203 62203 Plantago (Plantain) pollen -62204 62204 Rumex (Dock, Sorrel) pollen -62205 62205 Urtica (Nettle) pollen -# 62206-62299 Reserved -62300 62300 Poaceae (Grass family) pollen -# 62301-65534 Reserved 65535 65535 Missing diff --git a/definitions/grib2/tables/21/4.230.table b/definitions/grib2/tables/21/4.230.table index 272731d76..dfc1ffc31 100644 --- a/definitions/grib2/tables/21/4.230.table +++ b/definitions/grib2/tables/21/4.230.table @@ -9,7 +9,7 @@ 7 7 Formaldehyde HCHO 8 8 Sulphur dioxide SO2 9 9 Ammonia NH3 -10 10 Ammonium NH4+ +10 10 Ammonium NH4 11 11 Nitrogen monoxide NO 12 12 Atomic oxygen O 13 13 Nitrate radical NO3 @@ -19,7 +19,7 @@ 17 17 Nitric acid HNO3 18 18 Peroxynitric acid HO2NO2 19 19 Hydrogen peroxide H2O2 -20 20 Molecular hydrogen H +20 20 Molecular hydrogen H2 21 21 Atomic nitrogen N 22 22 Sulphate SO42- 23 23 Radon Rn diff --git a/definitions/grib2/tables/21/4.240.table b/definitions/grib2/tables/21/4.240.table index c8d138fb0..bf12cbf5b 100644 --- a/definitions/grib2/tables/21/4.240.table +++ b/definitions/grib2/tables/21/4.240.table @@ -2,10 +2,10 @@ 0 0 No specific distribution function given 1 1 Delta functions with spatially variable concentration and fixed diameters Dl (p1) in metre 2 2 Delta functions with spatially variable concentration and fixed masses Ml (p1) in kg -3 3 Gaussian (normal) distribution with spatially variable concentration and fixed mean diameter Dl(p1) and variance(p2) +3 3 Gaussian (normal) distribution with spatially variable concentration and fixed mean diameter Dl(p1) and variance(p2) 4 4 Gaussian (normal) distribution with spatially variable concentration, mean diameter and variance 5 5 Log-normal distribution with spatially variable number density, mean diameter and variance -6 6 Log-normal distribution with spatially variable number density, mean diameter and fixed variance(p1) +6 6 Log-normal distribution with spatially variable number density, mean diameter and fixed variance(p1) 7 7 Log-normal distribution with spatially variable number density and mass density and fixed variance(p1) and fixed particle density(p2) 8 8 No distribution function. The encoded variable is derived from variables characterized by type of distribution function of type No. 7 (see above) with fixed variance(p1) and fixed particle density(p2) # 9-49151 Reserved diff --git a/definitions/grib2/tables/23/0.0.table b/definitions/grib2/tables/23/0.0.table new file mode 100644 index 000000000..b24c50564 --- /dev/null +++ b/definitions/grib2/tables/23/0.0.table @@ -0,0 +1,10 @@ +# Code table 0.0 - Discipline of processed data in the GRIB message, number of GRIB Master table +0 0 Meteorological products +1 1 Hydrological products +2 2 Land surface products +3 3 Space products +# 4-9 Reserved +10 10 Oceanographic products +# 11-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/1.0.table b/definitions/grib2/tables/23/1.0.table new file mode 100644 index 000000000..c871ea8fe --- /dev/null +++ b/definitions/grib2/tables/23/1.0.table @@ -0,0 +1,27 @@ +# Code table 1.0 - GRIB master tables version number +0 0 Experimental +1 1 Version implemented on 7 November 2001 +2 2 Version implemented on 4 November 2003 +3 3 Version implemented on 2 November 2005 +4 4 Version implemented on 7 November 2007 +5 5 Version implemented on 4 November 2009 +6 6 Version implemented on 15 September 2010 +7 7 Version implemented on 4 May 2011 +8 8 Version implemented on 2 November 2011 +9 9 Version implemented on 2 May 2012 +10 10 Version implemented on 7 November 2012 +11 11 Version implemented on 8 May 2013 +12 12 Version implemented on 14 November 2013 +13 13 Version implemented on 7 May 2014 +14 14 Version implemented on 5 November 2014 +15 15 Version implemented on 6 May 2015 +16 16 Version implemented on 11 November 2015 +17 17 Version implemented on 4 May 2016 +18 18 Version implemented on 2 November 2016 +19 19 Version implemented on 3 May 2017 +20 20 Version implemented on 8 November 2017 +21 21 Version implemented on 2 May 2018 +22 22 Version implemented on 7 November 2018 +23 23 Version implemented on 15 May 2019 +# 24-254 Future versions +255 255 Master tables not used. Local table entries and local templates may use the entire range of the table, not just those sections marked Reserved for local used. diff --git a/definitions/grib2/tables/23/1.1.table b/definitions/grib2/tables/23/1.1.table new file mode 100644 index 000000000..d50f8fd72 --- /dev/null +++ b/definitions/grib2/tables/23/1.1.table @@ -0,0 +1,4 @@ +# Code table 1.1 - GRIB local tables version number +0 0 Local tables not used. Only table entries and templates from the current master table are valid +# 1-254 Number of local tables version used +255 255 Missing diff --git a/definitions/grib2/tables/23/1.2.table b/definitions/grib2/tables/23/1.2.table new file mode 100644 index 000000000..934b70455 --- /dev/null +++ b/definitions/grib2/tables/23/1.2.table @@ -0,0 +1,8 @@ +# Code table 1.2 - Significance of reference time +0 0 Analysis +1 1 Start of forecast +2 2 Verifying time of forecast +3 3 Observation time +# 4-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/1.3.table b/definitions/grib2/tables/23/1.3.table new file mode 100644 index 000000000..0c95269d5 --- /dev/null +++ b/definitions/grib2/tables/23/1.3.table @@ -0,0 +1,14 @@ +# Code table 1.3 - Production status of data +0 0 Operational products +1 1 Operational test products +2 2 Research products +3 3 Re-analysis products +4 4 THORPEX Interactive Grand Global Ensemble (TIGGE) +5 5 THORPEX Interactive Grand Global Ensemble test (TIGGE) +6 6 S2S operational products +7 7 S2S test products +8 8 Uncertainties in Ensembles of Regional ReAnalyses project (UERRA) +9 9 Uncertainties in Ensembles of Regional ReAnalyses project test (UERRA) +# 10-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/1.4.table b/definitions/grib2/tables/23/1.4.table new file mode 100644 index 000000000..03203d874 --- /dev/null +++ b/definitions/grib2/tables/23/1.4.table @@ -0,0 +1,13 @@ +# Code table 1.4 - Type of data +0 an Analysis products +1 fc Forecast products +2 af Analysis and forecast products +3 cf Control forecast products +4 pf Perturbed forecast products +5 cp Control and perturbed forecast products +6 sa Processed satellite observations +7 ra Processed radar observations +8 ep Event probability +# 9-191 Reserved +# 192-254 Reserved for local use +255 missing Missing diff --git a/definitions/grib2/tables/23/1.5.table b/definitions/grib2/tables/23/1.5.table new file mode 100644 index 000000000..b2cf9f087 --- /dev/null +++ b/definitions/grib2/tables/23/1.5.table @@ -0,0 +1,7 @@ +# Code table 1.5 - Identification template number +0 0 Calendar definition +1 1 Paleontological offset +2 2 Calendar definition and paleontological offset +# 3-32767 Reserved +# 32768-65534 Reserved for local use +65535 65535 Missing diff --git a/definitions/grib2/tables/23/1.6.table b/definitions/grib2/tables/23/1.6.table new file mode 100644 index 000000000..5db921990 --- /dev/null +++ b/definitions/grib2/tables/23/1.6.table @@ -0,0 +1,8 @@ +# Code table 1.6 - Type of calendar +0 0 Gregorian +1 1 360-day +2 2 365-day +3 3 Proleptic Gregorian +# 4-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/3.0.table b/definitions/grib2/tables/23/3.0.table new file mode 100644 index 000000000..45187b80d --- /dev/null +++ b/definitions/grib2/tables/23/3.0.table @@ -0,0 +1,6 @@ +# Code table 3.0 - Source of grid definition +0 0 Specified in Code table 3.1 +1 1 Predetermined grid definition (Defined by originating centre) +# 2-191 Reserved +# 192-254 Reserved for local use +255 255 A grid definition does not apply to this product diff --git a/definitions/grib2/tables/23/3.1.table b/definitions/grib2/tables/23/3.1.table new file mode 100644 index 000000000..ed68c5144 --- /dev/null +++ b/definitions/grib2/tables/23/3.1.table @@ -0,0 +1,54 @@ +# Code table 3.1 - Grid definition template number +0 0 Latitude/longitude (Also called equidistant cylindrical, or Plate Carree) +1 1 Rotated latitude/longitude +2 2 Stretched latitude/longitude +3 3 Stretched and rotated latitude/longitude +4 4 Variable resolution latitude/longitude +5 5 Variable resolution rotated latitude/longitude +# 6-9 Reserved +10 10 Mercator +# 11-12 Reserved +13 13 Mercator with modelling subdomains definition +# 14-19 Reserved +20 20 Polar stereographic projection (Can be south or north) +# 21-22 Reserved +23 23 Polar stereographic with modelling subdomains definition +# 24-29 Reserved +30 30 Lambert conformal (Can be secant or tangent, conical or bipolar) +31 31 Albers equal area +32 32 Reserved +33 33 Lambert conformal with modelling subdomains definition +# 34-39 Reserved +40 40 Gaussian latitude/longitude +41 41 Rotated Gaussian latitude/longitude +42 42 Stretched Gaussian latitude/longitude +43 43 Stretched and rotated Gaussian latitude/longitude +# 44-49 Reserved +50 50 Spherical harmonic coefficients +51 51 Rotated spherical harmonic coefficients +52 52 Stretched spherical harmonic coefficients +53 53 Stretched and rotated spherical harmonic coefficients +# 54-60 Reserved +61 61 Spectral Mercator with modelling subdomains definition +62 62 Spectral polar stereographic with modelling subdomains definition +63 63 Spectral Lambert conformal with modelling subdomains definition +# 64-89 Reserved +90 90 Space view perspective or orthographic +# 91-99 Reserved +100 100 Triangular grid based on an icosahedron +101 101 General unstructured grid +# 102-109 Reserved +110 110 Equatorial azimuthal equidistant projection +# 111-119 Reserved +120 120 Azimuth-range projection +# 121-139 Reserved +140 140 Lambert azimuthal equal area projection +# 141-999 Reserved +1000 1000 Cross-section grid with points equally spaced on the horizontal +# 1001-1099 Reserved +1100 1100 Hovmoller diagram grid with points equally spaced on the horizontal +# 1101-1199 Reserved +1200 1200 Time section grid +# 1201-32767 Reserved +# 32768-65534 Reserved for local use +65535 65535 Missing diff --git a/definitions/grib2/tables/23/3.10.table b/definitions/grib2/tables/23/3.10.table new file mode 100644 index 000000000..afa8843a7 --- /dev/null +++ b/definitions/grib2/tables/23/3.10.table @@ -0,0 +1,8 @@ +# Flag table 3.10 - Scanning mode for one diamond +1 0 Points scan in +i direction, i.e. from pole to Equator +1 1 Points scan in -i direction, i.e. from Equator to pole +2 0 Points scan in +j direction, i.e. from west to east +2 1 Points scan in -j direction, i.e. from east to west +3 0 Adjacent points in i direction are consecutive +3 1 Adjacent points in j direction are consecutive +# 4-8 Reserved diff --git a/definitions/grib2/tables/23/3.11.table b/definitions/grib2/tables/23/3.11.table new file mode 100644 index 000000000..e516a2ab9 --- /dev/null +++ b/definitions/grib2/tables/23/3.11.table @@ -0,0 +1,7 @@ +# Code table 3.11 - Interpretation of list of numbers at end of section 3 +0 0 There is no appended list +1 1 Numbers define number of points corresponding to full coordinate circles (i.e. parallels), coordinate values on each circle are multiple of the circle mesh, and extreme coordinate values given in grid definition (i.e. extreme longitudes) may not be reached in all rows +2 2 Numbers define number of points corresponding to coordinate lines delimited by extreme coordinate values given in grid definition (i.e. extreme longitudes) which are present in each row +3 3 Numbers define the actual latitudes for each row in the grid. The list of numbers are integer values of the valid latitudes in microdegrees (scaled by 10-6) or in unit equal to the ratio of the basic angle and the subdivisions number for each row, in the same order as specified in the scanning mode flag (bit no. 2) +# 4-254 Reserved +255 255 Missing diff --git a/definitions/grib2/tables/23/3.15.table b/definitions/grib2/tables/23/3.15.table new file mode 100644 index 000000000..331217ebe --- /dev/null +++ b/definitions/grib2/tables/23/3.15.table @@ -0,0 +1,23 @@ +# Code table 3.15 - Physical meaning of vertical coordinate +# 0-19 Reserved +20 20 Temperature (K) +# 21-99 Reserved +100 100 Pressure (Pa) +101 101 Pressure deviation from mean sea level (Pa) +102 102 Altitude above mean sea level (m) +103 103 Height above ground (m) +104 104 Sigma coordinate +105 105 Hybrid coordinate +106 106 Depth below land surface (m) +107 pt Potential temperature (theta) (K) +108 108 Pressure deviation from ground to level (Pa) +109 pv Potential vorticity (K m-2 kg-1 s-1) +110 110 Geometrical height (m) +111 111 Eta coordinate +112 112 Geopotential height (gpm) +113 113 Logarithmic hybrid coordinate +# 114-159 Reserved +160 160 Depth below sea level (m) +# 161-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/3.2.table b/definitions/grib2/tables/23/3.2.table new file mode 100644 index 000000000..1b5c8241d --- /dev/null +++ b/definitions/grib2/tables/23/3.2.table @@ -0,0 +1,14 @@ +# Code table 3.2 - Shape of the Earth +0 0 Earth assumed spherical with radius = 6 367 470.0 m +1 1 Earth assumed spherical with radius specified (in m) by data producer +2 2 Earth assumed oblate spheroid with size as determined by IAU in 1965 (major axis = 6 378 160.0 m, minor axis = 6 356 775.0 m, f = 1/297.0) +3 3 Earth assumed oblate spheroid with major and minor axes specified (in km) by data producer +4 4 Earth assumed oblate spheroid as defined in IAG-GRS80 model (major axis = 6 378 137.0 m, minor axis = 6 356 752.314 m, f = 1/298.257 222 101) +5 5 Earth assumed represented by WGS-84 (as used by ICAO since 1998) +6 6 Earth assumed spherical with radius of 6 371 229.0 m +7 7 Earth assumed oblate spheroid with major or minor axes specified (in m) by data producer +8 8 Earth model assumed spherical with radius of 6 371 200 m, but the horizontal datum of the resulting latitude/longitude field is the WGS-84 reference frame +9 9 Earth represented by the Ordnance Survey Great Britain 1936 Datum, using the Airy 1830 Spheroid, the Greenwich meridian as 0 longitude, and the Newlyn datum as mean sea level, 0 height +# 10-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/3.20.table b/definitions/grib2/tables/23/3.20.table new file mode 100644 index 000000000..efbf08d19 --- /dev/null +++ b/definitions/grib2/tables/23/3.20.table @@ -0,0 +1,6 @@ +# Code table 3.20 - Type of horizontal line +0 0 Rhumb +1 1 Great circle +# 2-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/3.21.table b/definitions/grib2/tables/23/3.21.table new file mode 100644 index 000000000..88dbb9019 --- /dev/null +++ b/definitions/grib2/tables/23/3.21.table @@ -0,0 +1,8 @@ +# Code table 3.21 - Vertical dimension coordinate values definition +0 0 Explicit coordinate values set +1 1 Linear coordinates f(1) = C1, f(n) = f(n-1) + C2 +# 2-10 Reserved +11 11 Geometric coordinates f(1) = C1, f(n) = C2 * f(n-1) +# 12-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/3.25.table b/definitions/grib2/tables/23/3.25.table new file mode 100644 index 000000000..de1bc74ed --- /dev/null +++ b/definitions/grib2/tables/23/3.25.table @@ -0,0 +1,10 @@ +# Code table 3.25 - Type of bi-Fourier truncation +# 0-76 Reserved +77 77 Rectangular +# 78-87 Reserved +88 88 Elliptic +# 89-98 Reserved +99 99 Diamond +# 100-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/3.3.table b/definitions/grib2/tables/23/3.3.table new file mode 100644 index 000000000..5dd7c7001 --- /dev/null +++ b/definitions/grib2/tables/23/3.3.table @@ -0,0 +1,9 @@ +# Flag table 3.3 - Resolution and component flags +# 1-2 Reserved +3 0 i direction increments not given +3 1 i direction increments given +4 0 j direction increments not given +4 1 j direction increments given +5 0 Resolved u- and v- components of vector quantities relative to easterly and northerly directions +5 1 Resolved u- and v- components of vector quantities relative to the defined grid in the direction of increasing x and y (or i and j) coordinates, respectively +# 6-8 Reserved - set to zero diff --git a/definitions/grib2/tables/23/3.4.table b/definitions/grib2/tables/23/3.4.table new file mode 100644 index 000000000..897b813d7 --- /dev/null +++ b/definitions/grib2/tables/23/3.4.table @@ -0,0 +1,17 @@ +# Flag table 3.4 - Scanning mode +1 0 Points of first row or column scan in the +i (+x) direction +1 1 Points of first row or column scan in the -i (-x) direction +2 0 Points of first row or column scan in the -j (-y) direction +2 1 Points of first row or column scan in the +j (+y) direction +3 0 Adjacent points in i (x) direction are consecutive +3 1 Adjacent points in j (y) direction is consecutive +4 0 All rows scan in the same direction +4 1 Adjacent rows scans in the opposite direction +5 0 Points within odd rows are not offset in i (x) direction +5 1 Points within odd rows are offset by Di/2 in i (x) direction +6 0 Points within even rows are not offset in i (x) direction +6 1 Points within even rows are offset by Di/2 in i (x) direction +7 0 Points are not offset in j (y) direction +7 1 Points are offset by Dj/2 in j (y) direction +8 0 Rows have Ni grid points and columns have Nj grid points +8 1 Rows have Ni grid points if points are not offset in i direction Rows have Ni-1 grid points if points are offset by Di/2 in i direction Columns have Nj grid points if points are not offset in j direction Columns have Nj-1 grid points if points are offset by Dj/2 in j direction diff --git a/definitions/grib2/tables/23/3.5.table b/definitions/grib2/tables/23/3.5.table new file mode 100644 index 000000000..eabdde896 --- /dev/null +++ b/definitions/grib2/tables/23/3.5.table @@ -0,0 +1,5 @@ +# Flag table 3.5 - Projection centre +1 0 North Pole is on the projection plane +1 1 South Pole is on the projection plane +2 0 Only one projection centre is used +2 1 Projection is bipolar and symmetric diff --git a/definitions/grib2/tables/23/3.6.table b/definitions/grib2/tables/23/3.6.table new file mode 100644 index 000000000..dc7d107aa --- /dev/null +++ b/definitions/grib2/tables/23/3.6.table @@ -0,0 +1,3 @@ +# Code table 3.6 - Spectral data representation type +1 1 see separate doc or pdf file +2 2 Bi-Fourier representation diff --git a/definitions/grib2/tables/23/3.7.table b/definitions/grib2/tables/23/3.7.table new file mode 100644 index 000000000..0a7d6efde --- /dev/null +++ b/definitions/grib2/tables/23/3.7.table @@ -0,0 +1,5 @@ +# Code table 3.7 - Spectral data representation mode +0 0 Reserved +1 1 see separate doc or pdf file +# 2-254 Reserved +255 255 Missing diff --git a/definitions/grib2/tables/23/3.8.table b/definitions/grib2/tables/23/3.8.table new file mode 100644 index 000000000..844e74235 --- /dev/null +++ b/definitions/grib2/tables/23/3.8.table @@ -0,0 +1,7 @@ +# Code table 3.8 - Grid point position +0 0 Grid points at triangle vertices +1 1 Grid points at centres of triangles +2 2 Grid points at midpoints of triangle sides +# 3-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/3.9.table b/definitions/grib2/tables/23/3.9.table new file mode 100644 index 000000000..fd730bc64 --- /dev/null +++ b/definitions/grib2/tables/23/3.9.table @@ -0,0 +1,4 @@ +# Flag table 3.9 - Numbering order of diamonds as seen from the corresponding pole +1 0 Clockwise orientation +1 1 Anti-clockwise (i.e. counter-clockwise) orientation +# 2-8 Reserved diff --git a/definitions/grib2/tables/23/4.0.table b/definitions/grib2/tables/23/4.0.table new file mode 100644 index 000000000..b5842f83e --- /dev/null +++ b/definitions/grib2/tables/23/4.0.table @@ -0,0 +1,75 @@ +# Code table 4.0 - Product definition template number +0 0 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time +1 1 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time +2 2 Derived forecasts based on all ensemble members at a horizontal level or in a horizontal layer at a point in time +3 3 Derived forecasts based on a cluster of ensemble members over a rectangular area at a horizontal level or in a horizontal layer at a point in time +4 4 Derived forecasts based on a cluster of ensemble members over a circular area at a horizontal level or in a horizontal layer at a point in time +5 5 Probability forecasts at a horizontal level or in a horizontal layer at a point in time +6 6 Percentile forecasts at a horizontal level or in a horizontal layer at a point in time +7 7 Analysis or forecast error at a horizontal level or in a horizontal layer at a point in time +8 8 Average, accumulation, extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval +9 9 Probability forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval +10 10 Percentile forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval +11 11 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval +12 12 Derived forecasts based on all ensemble members at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval +13 13 Derived forecasts based on a cluster of ensemble members over a rectangular area, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval +14 14 Derived forecasts based on a cluster of ensemble members over a circular area, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval +15 15 Average, accumulation, extreme values, or other statistically processed values over a spatial area at a horizontal level or in a horizontal layer at a point in time +# 16-19 Reserved +20 20 Radar product +# 21-29 Reserved +30 30 Satellite product (deprecated) +31 31 Satellite product +32 32 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for simulated (synthetic) satellite data +33 33 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for simulated (synthetic) satellite data +34 34 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval for simulated (synthetic) satellite data +35 35 Satellite product with or without associated quality values +# 36-39 Reserved +40 40 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents +41 41 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents +42 42 Average, accumulation and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents +43 43 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents +44 44 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for aerosol +45 45 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for aerosol +46 46 Average, accumulation, and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol +47 47 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol +48 48 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for optical properties of aerosol +49 49 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for optical properties of aerosol +# 50 Reserved +51 51 Categorical forecasts at a horizontal level or in a horizontal layer at a point in time +# 52 Reserved +53 53 Partitioned parameters at a horizontal level or in a horizontal layer at a point in time +54 54 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for partitioned parameters +55 55 Spatio-temporal changing tiles at a horizontal level or horizontal layer at a point in time +56 56 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for spatio-temporal changing tile parameters (deprecated) +57 57 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents based on a distribution function +58 58 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents based on a distribution function +59 59 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for spatio-temporal changing tile parameters (corrected version of template 4.56) +60 60 Individual ensemble reforecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time +61 61 Individual ensemble reforecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous time interval +# 62-66 Reserved +67 67 Average, accumulation and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents based on a distribution function +68 68 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents based on a distribution function +# 69 Reserved +70 70 Post-processing analysis or forecast at a horizontal level or in a horizontal layer at a point in time +71 71 Post-processing individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time +72 72 Post-processing average, accumulation, extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval +73 73 Post-processing individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous time interval +# 74-90 Reserved +91 91 Categorical forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval +# 92-253 Reserved +254 254 CCITT IA5 character string +# 255-999 Reserved +1000 1000 Cross-section of analysis and forecast at a point in time +1001 1001 Cross-section of averaged or otherwise statistically processed analysis or forecast over a range of time +1002 1002 Cross-section of analysis and forecast, averaged or otherwise statistically processed over latitude or longitude +# 1003-1099 Reserved +1100 1100 Hovmoller-type grid with no averaging or other statistical processing +1101 1101 Hovmoller-type grid with averaging or other statistical processing +50001 50001 Forecasting Systems with Variable Resolution in a point in time +50011 50011 Forecasting Systems with Variable Resolution in a continous or non countinous time interval +# 1102-32767 Reserved +# 32768-65534 Reserved for local use +40033 40033 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for simulated (synthetic) satellite data +40034 40034 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval for simulated (synthetic) satellite data +65535 65535 Missing diff --git a/definitions/grib2/tables/23/4.1.0.table b/definitions/grib2/tables/23/4.1.0.table new file mode 100644 index 000000000..04cfd7802 --- /dev/null +++ b/definitions/grib2/tables/23/4.1.0.table @@ -0,0 +1,27 @@ +# Code table 4.1 - Parameter category by product discipline +0 0 Temperature +1 1 Moisture +2 2 Momentum +3 3 Mass +4 4 Short-wave radiation +5 5 Long-wave radiation +6 6 Cloud +7 7 Thermodynamic stability indices +8 8 Kinematic stability indices +9 9 Temperature probabilities +10 10 Moisture probabilities +11 11 Momentum probabilities +12 12 Mass probabilities +13 13 Aerosols +14 14 Trace gases (e.g. ozone, CO2) +15 15 Radar +16 16 Forecast radar imagery +17 17 Electrodynamics +18 18 Nuclear/radiology +19 19 Physical atmospheric properties +20 20 Atmospheric chemical constituents +# 21-189 Reserved +190 190 CCITT IA5 string +191 191 Miscellaneous +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.1.1.table b/definitions/grib2/tables/23/4.1.1.table new file mode 100644 index 000000000..7b22b6fed --- /dev/null +++ b/definitions/grib2/tables/23/4.1.1.table @@ -0,0 +1,7 @@ +# Code table 4.1 - Parameter category by product discipline +0 0 Hydrology basic products +1 1 Hydrology probabilities +2 2 Inland water and sediment properties +# 3-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.1.10.table b/definitions/grib2/tables/23/4.1.10.table new file mode 100644 index 000000000..a9b20eb9c --- /dev/null +++ b/definitions/grib2/tables/23/4.1.10.table @@ -0,0 +1,10 @@ +# Code table 4.1 - Parameter category by product discipline +0 0 Waves +1 1 Currents +2 2 Ice +3 3 Surface properties +4 4 Subsurface properties +# 5-190 Reserved +191 191 Miscellaneous +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.1.192.table b/definitions/grib2/tables/23/4.1.192.table new file mode 100644 index 000000000..c428acab0 --- /dev/null +++ b/definitions/grib2/tables/23/4.1.192.table @@ -0,0 +1,4 @@ +#Discipline 192: ECMWF local parameters +255 255 Missing + + diff --git a/definitions/grib2/tables/23/4.1.2.table b/definitions/grib2/tables/23/4.1.2.table new file mode 100644 index 000000000..5b488fe9e --- /dev/null +++ b/definitions/grib2/tables/23/4.1.2.table @@ -0,0 +1,9 @@ +# Code table 4.1 - Parameter category by product discipline +0 0 Vegetation/biomass +1 1 Agri-/aquacultural special products +2 2 Transportation-related products +3 3 Soil products +4 4 Fire weather products +# 5-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.1.3.table b/definitions/grib2/tables/23/4.1.3.table new file mode 100644 index 000000000..7bf60d4a7 --- /dev/null +++ b/definitions/grib2/tables/23/4.1.3.table @@ -0,0 +1,11 @@ +# Code table 4.1 - Parameter category by product discipline +0 0 Image format products +1 1 Quantitative products +2 2 Cloud properties +3 3 Flight rule conditions +4 4 Volcanic ash +5 5 Sea-surface temperature +6 6 Solar radiation +# 7-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.10.table b/definitions/grib2/tables/23/4.10.table new file mode 100644 index 000000000..1a92baaf6 --- /dev/null +++ b/definitions/grib2/tables/23/4.10.table @@ -0,0 +1,16 @@ +# Code table 4.10 - Type of statistical processing +0 avg Average +1 accum Accumulation +2 max Maximum +3 min Minimum +4 diff Difference (value at the end of time range minus value at the beginning) +5 rms Root mean square +6 sd Standard deviation +7 cov Covariance (temporal variance) +8 8 Difference (value at the start of time range minus value at the end) +9 ratio Ratio +10 10 Standardized anomaly +11 11 Summation +# 12-191 Reserved +# 192-254 Reserved for local use +255 missing Missing diff --git a/definitions/grib2/tables/23/4.11.table b/definitions/grib2/tables/23/4.11.table new file mode 100644 index 000000000..7f404c849 --- /dev/null +++ b/definitions/grib2/tables/23/4.11.table @@ -0,0 +1,10 @@ +# Code table 4.11 - Type of time intervals +0 0 Reserved +1 1 Successive times processed have same forecast time, start time of forecast is incremented +2 2 Successive times processed have same start time of forecast, forecast time is incremented +3 3 Successive times processed have start time of forecast incremented and forecast time decremented so that valid time remains constant +4 4 Successive times processed have start time of forecast decremented and forecast time incremented so that valid time remains constant +5 5 Floating subinterval of time between forecast time and end of overall time interval +# 6-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.12.table b/definitions/grib2/tables/23/4.12.table new file mode 100644 index 000000000..03fd89b36 --- /dev/null +++ b/definitions/grib2/tables/23/4.12.table @@ -0,0 +1,7 @@ +# Code table 4.12 - Operating mode +0 0 Maintenance mode +1 1 Clear air +2 2 Precipitation +# 3-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.13.table b/definitions/grib2/tables/23/4.13.table new file mode 100644 index 000000000..c92854eec --- /dev/null +++ b/definitions/grib2/tables/23/4.13.table @@ -0,0 +1,6 @@ +# Code table 4.13 - Quality control indicator +0 0 No quality control applied +1 1 Quality control applied +# 2-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.14.table b/definitions/grib2/tables/23/4.14.table new file mode 100644 index 000000000..a88cb93fa --- /dev/null +++ b/definitions/grib2/tables/23/4.14.table @@ -0,0 +1,6 @@ +# Code table 4.14 - Clutter filter indicator +0 0 No clutter filter used +1 1 Clutter filter used +# 2-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.15.table b/definitions/grib2/tables/23/4.15.table new file mode 100644 index 000000000..2e5f3dea3 --- /dev/null +++ b/definitions/grib2/tables/23/4.15.table @@ -0,0 +1,11 @@ +# Code table 4.15 - Type of spatial processing used to arrive at given data value from the source data +0 0 Data is calculated directly from the source grid with no interpolation +1 1 Bilinear interpolation using the 4 source grid grid-point values surrounding the nominal grid-point +2 2 Bicubic interpolation using the 4 source grid grid-point values surrounding the nominal grid-point +3 3 Using the value from the source grid grid-point which is nearest to the nominal grid-point +4 4 Budget interpolation using the 4 source grid grid-point values surrounding the nominal grid-point +5 5 Spectral interpolation using the 4 source grid grid-point values surrounding the nominal grid-point +6 6 Neighbor-budget interpolation using the 4 source grid grid-point values surrounding the nominal grid-point +# 7-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.16.table b/definitions/grib2/tables/23/4.16.table new file mode 100644 index 000000000..de025080a --- /dev/null +++ b/definitions/grib2/tables/23/4.16.table @@ -0,0 +1,9 @@ +# Code table 4.16 - Quality value associated with parameter +0 0 Confidence index +1 1 Quality indicator +2 2 Correlation of product with used calibration product +3 3 Standard deviation +4 4 Random error +# 5-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.192.table b/definitions/grib2/tables/23/4.192.table new file mode 100644 index 000000000..e1fd91594 --- /dev/null +++ b/definitions/grib2/tables/23/4.192.table @@ -0,0 +1,4 @@ +1 1 first +2 2 second +3 3 third +4 4 fourth diff --git a/definitions/grib2/tables/23/4.2.0.0.table b/definitions/grib2/tables/23/4.2.0.0.table new file mode 100644 index 000000000..7201a8667 --- /dev/null +++ b/definitions/grib2/tables/23/4.2.0.0.table @@ -0,0 +1,34 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Temperature (K) +1 1 Virtual temperature (K) +2 2 Potential temperature (K) +3 3 Pseudo-adiabatic potential temperature or equivalent potential temperature (K) +4 4 Maximum temperature (K) +5 5 Minimum temperature (K) +6 6 Dewpoint temperature (K) +7 7 Dewpoint depression (or deficit) (K) +8 8 Lapse rate (K/m) +9 9 Temperature anomaly (K) +10 10 Latent heat net flux (W m-2) +11 11 Sensible heat net flux (W m-2) +12 12 Heat index (K) +13 13 Wind chill factor (K) +14 14 Minimum dewpoint depression (K) +15 15 Virtual potential temperature (K) +16 16 Snow phase change heat flux (W m-2) +17 17 Skin temperature (K) +18 18 Snow temperature (top of snow) (K) +19 19 Turbulent transfer coefficient for heat (Numeric) +20 20 Turbulent diffusion coefficient for heat (m2/s) +21 21 Apparent temperature (K) +22 22 Temperature tendency due to short-wave radiation (K s-1) +23 23 Temperature tendency due to long-wave radiation (K s-1) +24 24 Temperature tendency due to short-wave radiation, clear sky (K s-1) +25 25 Temperature tendency due to long-wave radiation, clear sky (K s-1) +26 26 Temperature tendency due to parameterization (K s-1) +27 27 Wet-bulb temperature (K) +28 28 Unbalanced component of temperature (K) +29 29 Temperature advection (K s-1) +# 30-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.2.0.1.table b/definitions/grib2/tables/23/4.2.0.1.table new file mode 100644 index 000000000..dee95505d --- /dev/null +++ b/definitions/grib2/tables/23/4.2.0.1.table @@ -0,0 +1,126 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Specific humidity (kg/kg) +1 1 Relative humidity (%) +2 2 Humidity mixing ratio (kg/kg) +3 3 Precipitable water (kg m-2) +4 4 Vapour pressure (Pa) +5 5 Saturation deficit (Pa) +6 6 Evaporation (kg m-2) +7 7 Precipitation rate (kg m-2 s-1) +8 8 Total precipitation (kg m-2) +9 9 Large-scale precipitation (non-convective) (kg m-2) +10 10 Convective precipitation (kg m-2) +11 11 Snow depth (m) +12 12 Snowfall rate water equivalent (kg m-2 s-1) +13 13 Water equivalent of accumulated snow depth (kg m-2) +14 14 Convective snow (kg m-2) +15 15 Large-scale snow (kg m-2) +16 16 Snow melt (kg m-2) +17 17 Snow age (d) +18 18 Absolute humidity (kg m-3) +19 19 Precipitation type ((Code table 4.201)) +20 20 Integrated liquid water (kg m-2) +21 21 Condensate (kg/kg) +22 22 Cloud mixing ratio (kg/kg) +23 23 Ice water mixing ratio (kg/kg) +24 24 Rain mixing ratio (kg/kg) +25 25 Snow mixing ratio (kg/kg) +26 26 Horizontal moisture convergence (kg kg-1 s-1) +27 27 Maximum relative humidity (%) +28 28 Maximum absolute humidity (kg m-3) +29 29 Total snowfall (m) +30 30 Precipitable water category ((Code table 4.202)) +31 31 Hail (m) +32 32 Graupel (snow pellets) (kg/kg) +33 33 Categorical rain ((Code table 4.222)) +34 34 Categorical freezing rain ((Code table 4.222)) +35 35 Categorical ice pellets ((Code table 4.222)) +36 36 Categorical snow ((Code table 4.222)) +37 37 Convective precipitation rate (kg m-2 s-1) +38 38 Horizontal moisture divergence (kg kg-1 s-1) +39 39 Per cent frozen precipitation (%) +40 40 Potential evaporation (kg m-2) +41 41 Potential evaporation rate (W m-2) +42 42 Snow cover (%) +43 43 Rain fraction of total cloud water (Proportion) +44 44 Rime factor (Numeric) +45 45 Total column integrated rain (kg m-2) +46 46 Total column integrated snow (kg m-2) +47 47 Large scale water precipitation (non-convective) (kg m-2) +48 48 Convective water precipitation (kg m-2) +49 49 Total water precipitation (kg m-2) +50 50 Total snow precipitation (kg m-2) +51 51 Total column water (Vertically integrated total water (vapour + cloud water/ice)) (kg m-2) +52 52 Total precipitation rate (kg m-2 s-1) +53 53 Total snowfall rate water equivalent (kg m-2 s-1) +54 54 Large scale precipitation rate (kg m-2 s-1) +55 55 Convective snowfall rate water equivalent (kg m-2 s-1) +56 56 Large scale snowfall rate water equivalent (kg m-2 s-1) +57 57 Total snowfall rate (m/s) +58 58 Convective snowfall rate (m/s) +59 59 Large scale snowfall rate (m/s) +60 60 Snow depth water equivalent (kg m-2) +61 61 Snow density (kg m-3) +62 62 Snow evaporation (kg m-2) +63 63 Reserved +64 64 Total column integrated water vapour (kg m-2) +65 65 Rain precipitation rate (kg m-2 s-1) +66 66 Snow precipitation rate (kg m-2 s-1) +67 67 Freezing rain precipitation rate (kg m-2 s-1) +68 68 Ice pellets precipitation rate (kg m-2 s-1) +69 69 Total column integrated cloud water (kg m-2) +70 70 Total column integrated cloud ice (kg m-2) +71 71 Hail mixing ratio (kg/kg) +72 72 Total column integrated hail (kg m-2) +73 73 Hail precipitation rate (kg m-2 s-1) +74 74 Total column integrated graupel (kg m-2) +75 75 Graupel (snow pellets) precipitation rate (kg m-2 s-1) +76 76 Convective rain rate (kg m-2 s-1) +77 77 Large scale rain rate (kg m-2 s-1) +78 78 Total column integrated water (all components including precipitation) (kg m-2) +79 79 Evaporation rate (kg m-2 s-1) +80 80 Total condensate (kg/kg) +81 81 Total column-integrated condensate (kg m-2) +82 82 Cloud ice mixing-ratio (kg/kg) +83 83 Specific cloud liquid water content (kg/kg) +84 84 Specific cloud ice water content (kg/kg) +85 85 Specific rainwater content (kg/kg) +86 86 Specific snow water content (kg/kg) +87 87 Stratiform precipitation rate (kg m-2 s-1) +88 88 Categorical convective precipitation (Code table 4.222) +# 89 Reserved +90 90 Total kinematic moisture flux (kg kg-1 m s-1) +91 91 u-component (zonal) kinematic moisture flux (kg kg-1 m s-1) +92 92 v-component (meridional) kinematic moisture flux (kg kg-1 m s-1) +93 93 Relative humidity with respect to water (%) +94 94 Relative humidity with respect to ice (%) +95 95 Freezing or frozen precipitation rate (kg m-2 s-1) +96 96 Mass density of rain (kg m-3) +97 97 Mass density of snow (kg m-3) +98 98 Mass density of graupel (kg m-3) +99 99 Mass density of hail (kg m-3) +100 100 Specific number concentration of rain (kg-1) +101 101 Specific number concentration of snow (kg-1) +102 102 Specific number concentration of graupel (kg-1) +103 103 Specific number concentration of hail (kg-1) +104 104 Number density of rain (m-3) +105 105 Number density of snow (m-3) +106 106 Number density of graupel (m-3) +107 107 Number density of hail (m-3) +108 108 Specific humidity tendency due to parameterization (kg kg-1 s-1) +109 109 Mass density of liquid water coating on hail expressed as mass of liquid water per unit volume of air (kg m-3) +110 110 Specific mass of liquid water coating on hail expressed as mass of liquid water per unit mass of moist air (kg kg-1) +111 111 Mass mixing ratio of liquid water coating on hail expressed as mass of liquid water per unit mass of dry air (kg kg-1) +112 112 Mass density of liquid water coating on graupel expressed as mass of liquid water per unit volume of air (kg m-3) +113 113 Specific mass of liquid water coating on graupel expressed as mass of liquid water per unit mass of moist air (kg kg-1) +114 114 Mass mixing ratio of liquid water coating on graupel expressed as mass of liquid water per unit mass of dry air (kg kg-1) +115 115 Mass density of liquid water coating on snow expressed as mass of liquid water per unit volume of air (kg m-3) +116 116 Specific mass of liquid water coating on snow expressed as mass of liquid water per unit mass of moist air (kg kg-1) +117 117 Mass mixing ratio of liquid water coating on snow expressed as mass of liquid water per unit mass of dry air (kg kg-1) +118 118 Unbalanced component of specific humidity (kg kg-1) +119 119 Unbalanced component of specific cloud liquid water content (kg kg-1) +120 120 Unbalanced component of specific cloud ice water content (kg kg-1) +121 121 Fraction of snow cover (Proportion) +# 122-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.2.0.13.table b/definitions/grib2/tables/23/4.2.0.13.table new file mode 100644 index 000000000..e9feb097f --- /dev/null +++ b/definitions/grib2/tables/23/4.2.0.13.table @@ -0,0 +1,5 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Aerosol type ((Code table 4.205)) +# 1-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.2.0.14.table b/definitions/grib2/tables/23/4.2.0.14.table new file mode 100644 index 000000000..215884737 --- /dev/null +++ b/definitions/grib2/tables/23/4.2.0.14.table @@ -0,0 +1,7 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Total ozone (DU) +1 1 Ozone mixing ratio (kg/kg) +2 2 Total column integrated ozone (DU) +# 3-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.2.0.15.table b/definitions/grib2/tables/23/4.2.0.15.table new file mode 100644 index 000000000..dfbc4d12f --- /dev/null +++ b/definitions/grib2/tables/23/4.2.0.15.table @@ -0,0 +1,21 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Base spectrum width (m/s) +1 1 Base reflectivity (dB) +2 2 Base radial velocity (m/s) +3 3 Vertically integrated liquid water (VIL) (kg m-2) +4 4 Layer-maximum base reflectivity (dB) +5 5 Precipitation (kg m-2) +6 6 Radar spectra (1) (-) +7 7 Radar spectra (2) (-) +8 8 Radar spectra (3) (-) +9 9 Reflectivity of cloud droplets (dB) +10 10 Reflectivity of cloud ice (dB) +11 11 Reflectivity of snow (dB) +12 12 Reflectivity of rain (dB) +13 13 Reflectivity of graupel (dB) +14 14 Reflectivity of hail (dB) +15 15 Hybrid scan reflectivity (dB) +16 16 Hybrid scan reflectivity height (m) +# 17-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.2.0.16.table b/definitions/grib2/tables/23/4.2.0.16.table new file mode 100644 index 000000000..0c240a853 --- /dev/null +++ b/definitions/grib2/tables/23/4.2.0.16.table @@ -0,0 +1,10 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Equivalent radar reflectivity factor for rain (mm6 m-3) +1 1 Equivalent radar reflectivity factor for snow (mm6 m-3) +2 2 Equivalent radar reflectivity factor for parameterized convection (mm6 m-3) +3 3 Echo top (m) +4 4 Reflectivity (dB) +5 5 Composite reflectivity (dB) +# 6-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.2.0.17.table b/definitions/grib2/tables/23/4.2.0.17.table new file mode 100644 index 000000000..ce1867aca --- /dev/null +++ b/definitions/grib2/tables/23/4.2.0.17.table @@ -0,0 +1,6 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Lightning strike density (m-2 s-1) +1 1 Lightning potential index (LPI) (J kg-1) +2 2 Cloud-to-ground Lightning flash density (km-2 day-1) +3 3 Cloud-to-cloud Lightning flash density (km-2 day-1) +4 4 Total Lightning flash density (km-2 day-1) diff --git a/definitions/grib2/tables/23/4.2.0.18.table b/definitions/grib2/tables/23/4.2.0.18.table new file mode 100644 index 000000000..9d106f419 --- /dev/null +++ b/definitions/grib2/tables/23/4.2.0.18.table @@ -0,0 +1,23 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Air concentration of caesium 137 (Bq m-3) +1 1 Air concentration of iodine 131 (Bq m-3) +2 2 Air concentration of radioactive pollutant (Bq m-3) +3 3 Ground deposition of caesium 137 (Bq m-2) +4 4 Ground deposition of iodine 131 (Bq m-2) +5 5 Ground deposition of radioactive pollutant (Bq m-2) +6 6 Time-integrated air concentration of caesium pollutant (Bq s m-3) +7 7 Time-integrated air concentration of iodine pollutant (Bq s m-3) +8 8 Time-integrated air concentration of radioactive pollutant (Bq s m-3) +9 9 Reserved +10 10 Air concentration (Bq m-3) +11 11 Wet deposition (Bq m-2) +12 12 Dry deposition (Bq m-2) +13 13 Total deposition (wet + dry) (Bq m-2) +14 14 Specific activity concentration (Bq kg-1) +15 15 Maximum of air concentration in layer (Bq m-3) +16 16 Height of maximum air concentration (m) +17 17 Column-integrated air concentration (Bq m-2) +18 18 Column-averaged air concentration in layer (Bq m-3) +# 19-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.2.0.19.table b/definitions/grib2/tables/23/4.2.0.19.table new file mode 100644 index 000000000..e4a4e2d04 --- /dev/null +++ b/definitions/grib2/tables/23/4.2.0.19.table @@ -0,0 +1,40 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Visibility (m) +1 1 Albedo (%) +2 2 Thunderstorm probability (%) +3 3 Mixed layer depth (m) +4 4 Volcanic ash ((Code table 4.206)) +5 5 Icing top (m) +6 6 Icing base (m) +7 7 Icing ((Code table 4.207)) +8 8 Turbulence top (m) +9 9 Turbulence base (m) +10 10 Turbulence ((Code table 4.208)) +11 11 Turbulent kinetic energy (J/kg) +12 12 Planetary boundary-layer regime ((Code table 4.209)) +13 13 Contrail intensity ((Code table 4.210)) +14 14 Contrail engine type ((Code table 4.211)) +15 15 Contrail top (m) +16 16 Contrail base (m) +17 17 Maximum snow albedo (%) +18 18 Snow free albedo (%) +19 19 Snow albedo (%) +20 20 Icing (%) +21 21 In-cloud turbulence (%) +22 22 Clear air turbulence (CAT) (%) +23 23 Supercooled large droplet probability (%) +24 24 Convective turbulent kinetic energy (J/kg) +25 25 Weather ((Code table 4.225)) +26 26 Convective outlook ((Code table 4.224)) +27 27 Icing scenario ((Code table 4.227)) +28 28 Mountain wave turbulence (eddy dissipation rate) (m2/3 s-1) +29 29 Clear air turbulence (CAT) (m2/3 s-1) +30 30 Eddy dissipation parameter (m2/3 s-1) +31 31 Maximum of eddy dissipation parameter in layer (m2/3 s-1) +32 32 Highest freezing level (m) +33 33 Visibility through liquid fog (m) +34 34 Visibility through ice fog (m) +35 35 Visibility through blowing snow (m) +# 36-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.2.0.190.table b/definitions/grib2/tables/23/4.2.0.190.table new file mode 100644 index 000000000..de621a924 --- /dev/null +++ b/definitions/grib2/tables/23/4.2.0.190.table @@ -0,0 +1,5 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Arbitrary text string (CCITT IA5) +# 1-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.2.0.191.table b/definitions/grib2/tables/23/4.2.0.191.table new file mode 100644 index 000000000..e3bba0ebe --- /dev/null +++ b/definitions/grib2/tables/23/4.2.0.191.table @@ -0,0 +1,8 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Seconds prior to initial reference time (defined in Section 1) (s) +1 1 Geographical latitude (deg N) +2 2 Geographical longitude (deg E) +3 3 Days since last observation (d) +# 4-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.2.0.2.table b/definitions/grib2/tables/23/4.2.0.2.table new file mode 100644 index 000000000..5446262e6 --- /dev/null +++ b/definitions/grib2/tables/23/4.2.0.2.table @@ -0,0 +1,51 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Wind direction (from which blowing) (degree true) +1 1 Wind speed (m/s) +2 2 u-component of wind (m/s) +3 3 v-component of wind (m/s) +4 4 Stream function (m2/s) +5 5 Velocity potential (m2/s) +6 6 Montgomery stream function (m2 s-2) +7 7 Sigma coordinate vertical velocity (/s) +8 8 Vertical velocity (pressure) (Pa/s) +9 9 Vertical velocity (geometric) (m/s) +10 10 Absolute vorticity (/s) +11 11 Absolute divergence (/s) +12 12 Relative vorticity (/s) +13 13 Relative divergence (/s) +14 14 Potential vorticity (K m2 kg-1 s-1) +15 15 Vertical u-component shear (/s) +16 16 Vertical v-component shear (/s) +17 17 Momentum flux, u-component (N m-2) +18 18 Momentum flux, v-component (N m-2) +19 19 Wind mixing energy (J) +20 20 Boundary layer dissipation (W m-2) +21 21 Maximum wind speed (m/s) +22 22 Wind speed (gust) (m/s) +23 23 u-component of wind (gust) (m/s) +24 24 v-component of wind (gust) (m/s) +25 25 Vertical speed shear (/s) +26 26 Horizontal momentum flux (N m-2) +27 27 u-component storm motion (m/s) +28 28 v-component storm motion (m/s) +29 29 Drag coefficient (Numeric) +30 30 Frictional velocity (m/s) +31 31 Turbulent diffusion coefficient for momentum (m2/s) +32 32 Eta coordinate vertical velocity (/s) +33 33 Wind fetch (m) +34 34 Normal wind component (m/s) +35 35 Tangential wind component (m/s) +36 36 Amplitude function for Rossby wave envelope for meridional wind (m/s) +37 37 Northward turbulent surface stress (N m-2 s) +38 38 Eastward turbulent surface stress (N m-2 s) +39 39 Eastward wind tendency due to parameterization (m s-2) +40 40 Northward wind tendency due to parameterization (m s-2) +41 41 u-component of geostrophic wind (m s-1) +42 42 v-component of geostrophic wind (m s-1) +43 43 Geostrophic wind direction (degree true) +44 44 Geostrophic wind speed (m s-1) +45 45 Unbalanced component of divergence (s-1) +46 46 Vorticity advection (s-2) +# 47-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.2.0.20.table b/definitions/grib2/tables/23/4.2.0.20.table new file mode 100644 index 000000000..9e6ac3c05 --- /dev/null +++ b/definitions/grib2/tables/23/4.2.0.20.table @@ -0,0 +1,62 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Mass density (concentration) (kg m-3) +1 1 Column-integrated mass density (kg m-2) +2 2 Mass mixing ratio (mass fraction in air) (kg/kg) +3 3 Atmosphere emission mass flux (kg m-2 s-1) +4 4 Atmosphere net production mass flux (kg m-2 s-1) +5 5 Atmosphere net production and emission mass flux (kg m-2 s-1) +6 6 Surface dry deposition mass flux (kg m-2 s-1) +7 7 Surface wet deposition mass flux (kg m-2 s-1) +8 8 Atmosphere re-emission mass flux (kg m-2 s-1) +9 9 Wet deposition by large-scale precipitation mass flux (kg m-2 s-1) +10 10 Wet deposition by convective precipitation mass flux (kg m-2 s-1) +11 11 Sedimentation mass flux (kg m-2 s-1) +12 12 Dry deposition mass flux (kg m-2 s-1) +13 13 Transfer from hydrophobic to hydrophilic (kg kg-1 s-1) +14 14 Transfer from SO2 (sulphur dioxide) to SO4 (sulphate) (kg kg-1 s-1) +15 15 Dry deposition velocity (m/s) +16 16 Mass mixing ratio with respect to dry air (kg/kg) +17 17 Mass mixing ratio with respect to wet air (kg/kg) +# 18-49 Reserved +50 50 Amount in atmosphere (mol) +51 51 Concentration in air (mol m-3) +52 52 Volume mixing ratio (fraction in air) (mol/mol) +53 53 Chemical gross production rate of concentration (mol m-3 s-1) +54 54 Chemical gross destruction rate of concentration (mol m-3 s-1) +55 55 Surface flux (mol m-2 s-1) +56 56 Changes of amount in atmosphere (mol/s) +57 57 Total yearly average burden of the atmosphere (mol) +58 58 Total yearly averaged atmospheric loss (mol/s) +59 59 Aerosol number concentration (m-3) +60 60 Aerosol specific number concentration (kg-1) +61 61 Maximum of mass density in layer (kg m-3) +62 62 Height of maximum mass density (m) +63 63 Column-averaged mass density in layer (kg m-3) +64 64 Mole fraction with respect to dry air (mol/mol) +65 65 Mole fraction with respect to wet air (mol/mol) +66 66 Column-integrated in-cloud scavenging rate by precipitation (kg m-2 s-1) +67 67 Column-integrated below-cloud scavenging rate by precipitation (kg m-2 s-1) +68 68 Column-integrated release rate from evaporating precipitation (kg m-2 s-1) +69 69 Column-integrated in-cloud scavenging rate by large-scale precipitation (kg m-2 s-1) +70 70 Column-integrated below-cloud scavenging rate by large-scale precipitation (kg m-2 s-1) +71 71 Column-integrated release rate from evaporating large-scale precipitation (kg m-2 s-1) +72 72 Column-integrated in-cloud scavenging rate by convective precipitation (kg m-2 s-1) +73 73 Column-integrated below-cloud scavenging rate by convective precipitation (kg m-2 s-1) +74 74 Column-integrated release rate from evaporating convective precipitation (kg m-2 s-1) +75 75 Wildfire flux (kg m-2 s-1) +# 76-99 Reserved +100 100 Surface area density (aerosol) (/m) +101 101 Vertical visual range (m) +102 102 Aerosol optical thickness (Numeric) +103 103 Single scattering albedo (Numeric) +104 104 Asymmetry factor (Numeric) +105 105 Aerosol extinction coefficient (/m) +106 106 Aerosol absorption coefficient (/m) +107 107 Aerosol lidar backscatter from satellite (m-1 sr-1) +108 108 Aerosol lidar backscatter from the ground (m-1 sr-1) +109 109 Aerosol lidar extinction from satellite (/m) +110 110 Aerosol lidar extinction from the ground (/m) +111 111 Angstrom exponent (Numeric) +# 112-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.2.0.3.table b/definitions/grib2/tables/23/4.2.0.3.table new file mode 100644 index 000000000..34941dcab --- /dev/null +++ b/definitions/grib2/tables/23/4.2.0.3.table @@ -0,0 +1,36 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Pressure (Pa) +1 1 Pressure reduced to MSL (Pa) +2 2 Pressure tendency (Pa/s) +3 3 ICAO Standard Atmosphere Reference Height (m) +4 4 Geopotential (m2 s-2) +5 5 Geopotential height (gpm) +6 6 Geometric height (m) +7 7 Standard deviation of height (m) +8 8 Pressure anomaly (Pa) +9 9 Geopotential height anomaly (gpm) +10 10 Density (kg m-3) +11 11 Altimeter setting (Pa) +12 12 Thickness (m) +13 13 Pressure altitude (m) +14 14 Density altitude (m) +15 15 5-wave geopotential height (gpm) +16 16 Zonal flux of gravity wave stress (N m-2) +17 17 Meridional flux of gravity wave stress (N m-2) +18 18 Planetary boundary layer height (m) +19 19 5-wave geopotential height anomaly (gpm) +20 20 Standard deviation of sub-grid scale orography (m) +21 21 Angle of sub-gridscale orography (rad) +22 22 Slope of sub-gridscale orography (Numeric) +23 23 Gravity wave dissipation (W m-2) +24 24 Anisotropy of sub-gridscale orography (Numeric) +25 25 Natural logarithm of pressure in Pa (Numeric) +26 26 Exner pressure (Numeric) +27 27 Updraught mass flux (kg m-2 s-1) +28 28 Downdraught mass flux (kg m-2 s-1) +29 29 Updraught detrainment rate (kg m-3 s-1) +30 30 Downdraught detrainment rate (kg m-3 s-1) +31 31 Unbalanced component of logarithm of surface pressure (-) +# 32-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.2.0.4.table b/definitions/grib2/tables/23/4.2.0.4.table new file mode 100644 index 000000000..0a5ded2b5 --- /dev/null +++ b/definitions/grib2/tables/23/4.2.0.4.table @@ -0,0 +1,24 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Net short-wave radiation flux (surface) (W m-2) +1 1 Net short-wave radiation flux (top of atmosphere) (W m-2) +2 2 Short-wave radiation flux (W m-2) +3 3 Global radiation flux (W m-2) +4 4 Brightness temperature (K) +5 5 Radiance (with respect to wave number) (W m-1 sr-1) +6 6 Radiance (with respect to wavelength) (W m-3 sr-1) +7 7 Downward short-wave radiation flux (W m-2) +8 8 Upward short-wave radiation flux (W m-2) +9 9 Net short wave radiation flux (W m-2) +10 10 Photosynthetically active radiation (W m-2) +11 11 Net short-wave radiation flux, clear sky (W m-2) +12 12 Downward UV radiation (W m-2) +13 13 Direct short-wave radiation flux (W m-2) +14 14 Diffuse short-wave radiation flux (W m-2) +# 15-49 Reserved +50 50 UV index (under clear sky) (Numeric) +51 51 UV index (Numeric) +52 52 Downward short-wave radiation flux, clear sky (W m-2) +53 53 Upward short-wave radiation flux, clear sky (W m-2) +# 54-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.2.0.5.table b/definitions/grib2/tables/23/4.2.0.5.table new file mode 100644 index 000000000..4550220b6 --- /dev/null +++ b/definitions/grib2/tables/23/4.2.0.5.table @@ -0,0 +1,13 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Net long-wave radiation flux (surface) (W m-2) +1 1 Net long-wave radiation flux (top of atmosphere) (W m-2) +2 2 Long-wave radiation flux (W m-2) +3 3 Downward long-wave radiation flux (W m-2) +4 4 Upward long-wave radiation flux (W m-2) +5 5 Net long-wave radiation flux (W m-2) +6 6 Net long-wave radiation flux, clear sky (W m-2) +7 7 Brightness temperature (K) +8 8 Downward long-wave radiation flux, clear sky (W m-2) +# 9-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.2.0.6.table b/definitions/grib2/tables/23/4.2.0.6.table new file mode 100644 index 000000000..1483d8cb3 --- /dev/null +++ b/definitions/grib2/tables/23/4.2.0.6.table @@ -0,0 +1,49 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Cloud ice (kg m-2) +1 1 Total cloud cover (%) +2 2 Convective cloud cover (%) +3 3 Low cloud cover (%) +4 4 Medium cloud cover (%) +5 5 High cloud cover (%) +6 6 Cloud water (kg m-2) +7 7 Cloud amount (%) +8 8 Cloud type ((Code table 4.203)) +9 9 Thunderstorm maximum tops (m) +10 10 Thunderstorm coverage ((Code table 4.204)) +11 11 Cloud base (m) +12 12 Cloud top (m) +13 13 Ceiling (m) +14 14 Non-convective cloud cover (%) +15 15 Cloud work function (J/kg) +16 16 Convective cloud efficiency (Proportion) +17 17 Total condensate (kg/kg) +18 18 Total column-integrated cloud water (kg m-2) +19 19 Total column-integrated cloud ice (kg m-2) +20 20 Total column-integrated condensate (kg m-2) +21 21 Ice fraction of total condensate (Proportion) +22 22 Cloud cover (%) +23 23 Cloud ice mixing ratio (kg/kg) +24 24 Sunshine (Numeric) +25 25 Horizontal extent of cumulonimbus (CB) (%) +26 26 Height of convective cloud base (m) +27 27 Height of convective cloud top (m) +28 28 Number of cloud droplets per unit mass of air (/kg) +29 29 Number of cloud ice particles per unit mass of air (/kg) +30 30 Number density of cloud droplets (m-3) +31 31 Number density of cloud ice particles (m-3) +32 32 Fraction of cloud cover (Numeric) +33 33 Sunshine duration (s) +34 34 Surface long-wave effective total cloudiness (Numeric) +35 35 Surface short-wave effective total cloudiness (Numeric) +36 36 Fraction of stratiform precipitation cover (Proportion) +37 37 Fraction of convective precipitation cover (Proportion) +38 38 Mass density of cloud droplets (kg m-3) +39 39 Mass density of cloud ice (kg m-3) +40 40 Mass density of convective cloud water droplets (kg m-3) +# 41-46 Reserved +47 47 Volume fraction of cloud water droplets (Numeric) +48 48 Volume fraction of cloud ice particles (Numeric) +49 49 Volume fraction of cloud (ice and/or water) (Numeric) +# 50-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.2.0.7.table b/definitions/grib2/tables/23/4.2.0.7.table new file mode 100644 index 000000000..aff6a6516 --- /dev/null +++ b/definitions/grib2/tables/23/4.2.0.7.table @@ -0,0 +1,24 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Parcel lifted index (to 500 hPa) (K) +1 1 Best lifted index (to 500 hPa) (K) +2 2 K index (K) +3 3 KO index (K) +4 4 Total totals index (K) +5 5 Sweat index (Numeric) +6 6 Convective available potential energy (J/kg) +7 7 Convective inhibition (J/kg) +8 8 Storm relative helicity (J/kg) +9 9 Energy helicity index (Numeric) +10 10 Surface lifted index (K) +11 11 Best (4-layer) lifted index (K) +12 12 Richardson number (Numeric) +13 13 Showalter index (K) +14 14 Reserved +15 15 Updraught helicity (m2 s-2) +16 16 Bulk Richardson number (Numeric) +17 17 Gradient Richardson number (Numeric) +18 18 Flux Richardson number (Numeric) +19 19 Convective available potential energy - shear (m2 s-2) +# 20-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.2.1.0.table b/definitions/grib2/tables/23/4.2.1.0.table new file mode 100644 index 000000000..e906af726 --- /dev/null +++ b/definitions/grib2/tables/23/4.2.1.0.table @@ -0,0 +1,21 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Flash flood guidance (Encoded as an accumulation over a floating subinterval of time between the reference time and valid time) (kg m-2) +1 1 Flash flood runoff (Encoded as an accumulation over a floating subinterval of time) (kg m-2) +2 2 Remotely-sensed snow cover ((Code table 4.215)) +3 3 Elevation of snow-covered terrain ((Code table 4.216)) +4 4 Snow water equivalent per cent of normal (%) +5 5 Baseflow-groundwater runoff (kg m-2) +6 6 Storm surface runoff (kg m-2) +7 7 Discharge from rivers or streams (m3/s) +8 8 Groundwater upper storage (kg m-2) +9 9 Groundwater lower storage (kg m-2) +10 10 Side flow into river channel (m3 s-1 m-1) +11 11 River storage of water (m3) +12 12 Floodplain storage of water (m3) +13 13 Depth of water on soil surface (kg m-2) +14 14 Upstream accumulated precipitation (kg m-2) +15 15 Upstream accumulated snow melt (kg m-2) +16 16 Percolation rate (kg m-2 s-1) +# 17-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.2.1.1.table b/definitions/grib2/tables/23/4.2.1.1.table new file mode 100644 index 000000000..b488eb0bd --- /dev/null +++ b/definitions/grib2/tables/23/4.2.1.1.table @@ -0,0 +1,7 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Conditional per cent precipitation amount fractile for an overall period (Encoded as an accumulation) (kg m-2) +1 1 Per cent precipitation in a sub-period of an overall period (Encoded as per cent accumulation over the sub-period) (%) +2 2 Probability of 0.01 inch of precipitation (POP) (%) +# 3-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.2.1.2.table b/definitions/grib2/tables/23/4.2.1.2.table new file mode 100644 index 000000000..ec9b11d41 --- /dev/null +++ b/definitions/grib2/tables/23/4.2.1.2.table @@ -0,0 +1,15 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Water depth (m) +1 1 Water temperature (K) +2 2 Water fraction (Proportion) +3 3 Sediment thickness (m) +4 4 Sediment temperature (K) +5 5 Ice thickness (m) +6 6 Ice temperature (K) +7 7 Ice cover (Proportion) +8 8 Land cover (0 = water, 1 = land) (Proportion) +9 9 Shape factor with respect to salinity profile (-) +10 10 Shape factor with respect to temperature profile in thermocline (-) +11 11 Attenuation coefficient of water with respect to solar radiation (/m) +12 12 Salinity (kg/kg) +13 13 Cross-sectional area of flow in channel (m2) diff --git a/definitions/grib2/tables/23/4.2.10.0.table b/definitions/grib2/tables/23/4.2.10.0.table new file mode 100644 index 000000000..6a60ba8aa --- /dev/null +++ b/definitions/grib2/tables/23/4.2.10.0.table @@ -0,0 +1,70 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Wave spectra (1) (-) +1 1 Wave spectra (2) (-) +2 2 Wave spectra (3) (-) +3 3 Significant height of combined wind waves and swell (m) +4 4 Direction of wind waves (degree true) +5 5 Significant height of wind waves (m) +6 6 Mean period of wind waves (s) +7 7 Direction of swell waves (degree true) +8 8 Significant height of swell waves (m) +9 9 Mean period of swell waves (s) +10 10 Primary wave direction (degree true) +11 11 Primary wave mean period (s) +12 12 Secondary wave direction (degree true) +13 13 Secondary wave mean period (s) +14 14 Direction of combined wind waves and swell (degree true) +15 15 Mean period of combined wind waves and swell (s) +16 16 Coefficient of drag with waves (-) +17 17 Friction velocity (m/s) +18 18 Wave stress (N m-2) +19 19 Normalized wave stress (-) +20 20 Mean square slope of waves (-) +21 21 u-component surface Stokes drift (m/s) +22 22 v-component surface Stokes drift (m/s) +23 23 Period of maximum individual wave height (s) +24 24 Maximum individual wave height (m) +25 25 Inverse mean wave frequency (s) +26 26 Inverse mean frequency of wind waves (s) +27 27 Inverse mean frequency of total swell (s) +28 28 Mean zero-crossing wave period (s) +29 29 Mean zero-crossing period of wind waves (s) +30 30 Mean zero-crossing period of total swell (s) +31 31 Wave directional width (-) +32 32 Directional width of wind waves (-) +33 33 Directional width of total swell (-) +34 34 Peak wave period (s) +35 35 Peak period of wind waves (s) +36 36 Peak period of total swell (s) +37 37 Altimeter wave height (m) +38 38 Altimeter corrected wave height (m) +39 39 Altimeter range relative correction (-) +40 40 10-metre neutral wind speed over waves (m/s) +41 41 10-metre wind direction over waves (deg) +42 42 Wave energy spectrum (m2 s rad-1) +43 43 Kurtosis of the sea-surface elevation due to waves (-) +44 44 Benjamin-Feir index (-) +45 45 Spectral peakedness factor (/s) +46 46 Peak wave direction (deg) +47 47 Significant wave height of first swell partition (m) +48 48 Significant wave height of second swell partition (m) +49 49 Significant wave height of third swell partition (m) +50 50 Mean wave period of first swell partition (s) +51 51 Mean wave period of second swell partition (s) +52 52 Mean wave period of third swell partition (s) +53 53 Mean wave direction of first swell partition (deg) +54 54 Mean wave direction of second swell partition (deg) +55 55 Mean wave direction of third swell partition (deg) +# 56-191 Reserved +56 56 Wave directional width of first swell partition (-) +57 57 Wave directional width of second swell partition (-) +58 58 Wave directional width of third swell partition (-) +59 59 Wave frequency width of first swell partition (-) +60 60 Wave frequency width of second swell partition (-) +61 61 Wave frequency width of third swell partition (-) +62 62 Wave frequency width (-) +63 63 Frequency width of wind waves (-) +64 64 Frequency width of total swell (-) +# 65-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.2.10.1.table b/definitions/grib2/tables/23/4.2.10.1.table new file mode 100644 index 000000000..00a084e34 --- /dev/null +++ b/definitions/grib2/tables/23/4.2.10.1.table @@ -0,0 +1,9 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Current direction (degree true) +1 1 Current speed (m/s) +2 2 u-component of current (m/s) +3 3 v-component of current (m/s) +4 4 Rip current occurrence probability (%) +# 5-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.2.10.191.table b/definitions/grib2/tables/23/4.2.10.191.table new file mode 100644 index 000000000..524929e78 --- /dev/null +++ b/definitions/grib2/tables/23/4.2.10.191.table @@ -0,0 +1,8 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Seconds prior to initial reference time (defined in Section 1) (s) +1 1 Meridional overturning stream function (m3/s) +2 2 Reserved +3 3 Days since last observation (d) +# 4-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.2.10.2.table b/definitions/grib2/tables/23/4.2.10.2.table new file mode 100644 index 000000000..6797062ac --- /dev/null +++ b/definitions/grib2/tables/23/4.2.10.2.table @@ -0,0 +1,17 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Ice cover (Proportion) +1 1 Ice thickness (m) +2 2 Direction of ice drift (degree true) +3 3 Speed of ice drift (m/s) +4 4 u-component of ice drift (m/s) +5 5 v-component of ice drift (m/s) +6 6 Ice growth rate (m/s) +7 7 Ice divergence (/s) +8 8 Ice temperature (K) +9 9 Module of ice internal pressure (Pa m) +10 10 Zonal vector component of vertically integrated ice internal pressure (Pa m) +11 11 Meridional vector component of vertically integrated ice internal pressure (Pa m) +12 12 Compressive ice strength (N/m) +# 13-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.2.10.3.table b/definitions/grib2/tables/23/4.2.10.3.table new file mode 100644 index 000000000..de7afd61c --- /dev/null +++ b/definitions/grib2/tables/23/4.2.10.3.table @@ -0,0 +1,7 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Water temperature (K) +1 1 Deviation of sea level from mean (m) +2 2 Heat exchange coefficient (-) +# 3-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.2.10.4.table b/definitions/grib2/tables/23/4.2.10.4.table new file mode 100644 index 000000000..bcf955ef5 --- /dev/null +++ b/definitions/grib2/tables/23/4.2.10.4.table @@ -0,0 +1,24 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Main thermocline depth (m) +1 1 Main thermocline anomaly (m) +2 2 Transient thermocline depth (m) +3 3 Salinity (kg/kg) +4 4 Ocean vertical heat diffusivity (m2/s) +5 5 Ocean vertical salt diffusivity (m2/s) +6 6 Ocean vertical momentum diffusivity (m2/s) +7 7 Bathymetry (m) +# 8-10 Reserved +11 11 Shape factor with respect to salinity profile (-) +12 12 Shape factor with respect to temperature profile in thermocline (-) +13 13 Attenuation coefficient of water with respect to solar radiation (/m) +14 14 Water depth (m) +15 15 Water temperature (K) +16 16 Water density (rho) (kg m-3) +17 17 Water density anomaly (sigma) (kg m-3) +18 18 Water potential temperature (theta) (K) +19 19 Water potential density (rho theta) (kg m-3) +20 20 Water potential density anomaly (sigma theta) (kg m-3) +21 21 Practical salinity (psu (numeric)) +# 22-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.2.2.0.table b/definitions/grib2/tables/23/4.2.2.0.table new file mode 100644 index 000000000..f11616d7c --- /dev/null +++ b/definitions/grib2/tables/23/4.2.2.0.table @@ -0,0 +1,43 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Land cover (0 = sea, 1 = land) (Proportion) +1 1 Surface roughness (m) +2 2 Soil temperature (K) +3 3 Soil moisture content (kg m-2) +4 4 Vegetation (%) +5 5 Water runoff (kg m-2) +6 6 Evapotranspiration (kg-2 s-1) +7 7 Model terrain height (m) +8 8 Land use ((Code table 4.212)) +9 9 Volumetric soil moisture content (Proportion) +10 10 Ground heat flux (W m-2) +11 11 Moisture availability (%) +12 12 Exchange coefficient (kg m-2 s-1) +13 13 Plant canopy surface water (kg m-2) +14 14 Blackadar's mixing length scale (m) +15 15 Canopy conductance (m/s) +16 16 Minimal stomatal resistance (s/m) +17 17 Wilting point (Proportion) +18 18 Solar parameter in canopy conductance (Proportion) +19 19 Temperature parameter in canopy (Proportion) +20 20 Humidity parameter in canopy conductance (Proportion) +21 21 Soil moisture parameter in canopy conductance (Proportion) +22 22 Soil moisture (kg m-3) +23 23 Column-integrated soil water (kg m-2) +24 24 Heat flux (W m-2) +25 25 Volumetric soil moisture (m3 m-3) +26 26 Wilting point (kg m-3) +27 27 Volumetric wilting point (m3 m-3) +28 28 Leaf area index (Numeric) +29 29 Evergreen forest cover (Proportion) +30 30 Deciduous forest cover (Proportion) +31 31 Normalized differential vegetation index (NDVI) (Numeric) +32 32 Root depth of vegetation (m) +33 33 Water runoff and drainage (kg m-2) +34 34 Surface water runoff (kg m-2) +35 35 Tile class (Code table 4.243) +36 36 Tile fraction (Proportion) +37 37 Tile percentage (%) +38 38 Soil volumetric ice content (water equivalent) (m3 m-3) +# 39-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.2.2.3.table b/definitions/grib2/tables/23/4.2.2.3.table new file mode 100644 index 000000000..447e4f9cb --- /dev/null +++ b/definitions/grib2/tables/23/4.2.2.3.table @@ -0,0 +1,32 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Soil type ((Code table 4.213)) +1 1 Upper layer soil temperature (K) +2 2 Upper layer soil moisture (kg m-3) +3 3 Lower layer soil moisture (kg m-3) +4 4 Bottom layer soil temperature (K) +5 5 Liquid volumetric soil moisture (non-frozen) (Proportion) +6 6 Number of soil layers in root zone (Numeric) +7 7 Transpiration stress-onset (soil moisture) (Proportion) +8 8 Direct evaporation cease (soil moisture) (Proportion) +9 9 Soil porosity (Proportion) +10 10 Liquid volumetric soil moisture (non-frozen) (m3 m-3) +11 11 Volumetric transpiration stress-onset (soil moisture) (m3 m-3) +12 12 Transpiration stress-onset (soil moisture) (kg m-3) +13 13 Volumetric direct evaporation cease (soil moisture) (m3 m-3) +14 14 Direct evaporation cease (soil moisture) (kg m-3) +15 15 Soil porosity (m3 m-3) +16 16 Volumetric saturation of soil moisture (m3 m-3) +17 17 Saturation of soil moisture (kg m-3) +18 18 Soil temperature (K) +19 19 Soil moisture (kg m-3) +20 20 Column-integrated soil moisture (kg m-2) +21 21 Soil ice (kg m-3) +22 22 Column-integrated soil ice (kg m-2) +23 23 Liquid water in snow pack (kg m-2) +24 24 Frost index (K day-1) +25 25 Snow depth at elevation bands (kg m-2) +26 26 Soil heat flux (W m-2) +27 27 Soil depth (m) +# 28-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.2.2.4.table b/definitions/grib2/tables/23/4.2.2.4.table new file mode 100644 index 000000000..bb54fac22 --- /dev/null +++ b/definitions/grib2/tables/23/4.2.2.4.table @@ -0,0 +1,16 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Fire outlook (Code table 4.224) +1 1 Fire outlook due to dry thunderstorm (Code table 4.224) +2 2 Haines index (Numeric) +3 3 Fire burned area (%) +4 4 Fosberg index (Numeric) +5 5 Forest Fire Weather Index (Canadian Forest Service) (Numeric) +6 6 Fine Fuel Moisture Code (Canadian Forest Service) (Numeric) +7 7 Duff Moisture Code (Canadian Forest Service) (Numeric) +8 8 Drought Code (Canadian Forest Service) (Numeric) +9 9 Initial Fire Spread Index (Canadian Forest Service) (Numeric) +10 10 Fire Buildup Index (Canadian Forest Service) (Numeric) +11 11 Fire Daily Severity Rating (Canadian Forest Service) (Numeric) +# 12-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.2.2.5.table b/definitions/grib2/tables/23/4.2.2.5.table new file mode 100644 index 000000000..10fb68956 --- /dev/null +++ b/definitions/grib2/tables/23/4.2.2.5.table @@ -0,0 +1,2 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +1 1 Glacier temperature (K) diff --git a/definitions/grib2/tables/23/4.2.3.0.table b/definitions/grib2/tables/23/4.2.3.0.table new file mode 100644 index 000000000..c0ffa29f5 --- /dev/null +++ b/definitions/grib2/tables/23/4.2.3.0.table @@ -0,0 +1,14 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Scaled radiance (Numeric) +1 1 Scaled albedo (Numeric) +2 2 Scaled brightness temperature (Numeric) +3 3 Scaled precipitable water (Numeric) +4 4 Scaled lifted index (Numeric) +5 5 Scaled cloud top pressure (Numeric) +6 6 Scaled skin temperature (Numeric) +7 7 Cloud mask (Code table 4.217) +8 8 Pixel scene type (Code table 4.218) +9 9 Fire detection indicator (Code table 4.223) +# 10-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.2.3.1.table b/definitions/grib2/tables/23/4.2.3.1.table new file mode 100644 index 000000000..7d4364f4d --- /dev/null +++ b/definitions/grib2/tables/23/4.2.3.1.table @@ -0,0 +1,35 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Estimated precipitation (kg m-2) +1 1 Instantaneous rain rate (kg m-2 s-1) +2 2 Cloud top height (m) +3 3 Cloud top height quality indicator (Code table 4.219) +4 4 Estimated u-component of wind (m/s) +5 5 Estimated v-component of wind (m/s) +6 6 Number of pixel used (Numeric) +7 7 Solar zenith angle (deg) +8 8 Relative azimuth angle (deg) +9 9 Reflectance in 0.6 micron channel (%) +10 10 Reflectance in 0.8 micron channel (%) +11 11 Reflectance in 1.6 micron channel (%) +12 12 Reflectance in 3.9 micron channel (%) +13 13 Atmospheric divergence (/s) +14 14 Cloudy brightness temperature (K) +15 15 Clear-sky brightness temperature (K) +16 16 Cloudy radiance (with respect to wave number) (W m-1 sr-1) +17 17 Clear-sky radiance (with respect to wave number) (W m-1 sr-1) +18 18 Reserved +19 19 Wind speed (m/s) +20 20 Aerosol optical thickness at 0.635 um +21 21 Aerosol optical thickness at 0.810 um +22 22 Aerosol optical thickness at 1.640 um +23 23 Angstrom coefficient +# 24-26 Reserved +27 27 Bidirectional reflectance factor (numeric) +28 28 Brightness temperature (K) +29 29 Scaled radiance (numeric) +# 30-97 Reserved +98 98 Correlation coefficient between MPE rain-rates for the co-located IR data and the microwave data rain-rates (Numeric) +99 99 Standard deviation between MPE rain-rates for the co-located IR data and the microwave data rain-rates (kg m-2 s-1) +# 100-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.2.3.2.table b/definitions/grib2/tables/23/4.2.3.2.table new file mode 100644 index 000000000..6316ab39c --- /dev/null +++ b/definitions/grib2/tables/23/4.2.3.2.table @@ -0,0 +1,24 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Clear sky probability (%) +1 1 Cloud top temperature (K) +2 2 Cloud top pressure (Pa) +3 3 Cloud type (Code table 4.218) +4 4 Cloud phase (Code table 4.218) +5 5 Cloud optical depth (Numeric) +6 6 Cloud particle effective radius (m) +7 7 Cloud liquid water path (kg m-2) +8 8 Cloud ice water path (kg m-2) +9 9 Cloud albedo (Numeric) +10 10 Cloud emissivity (Numeric) +11 11 Effective absorption optical depth ratio (Numeric) +30 30 Measurement cost (Numeric) +31 31 Upper layer cloud optical depth (Numeric) +32 32 Upper layer cloud top pressure (Pa) +33 33 Upper layer cloud effective radius (m) +34 34 Error in upper layer cloud optical depth (Numeric) +35 35 Error in upper layer cloud top pressure (Pa) +36 36 Error in upper layer cloud effective radius (m) +37 37 Lower layer cloud optical depth (Numeric) +38 38 Lower layer cloud top pressure (Pa) +39 39 Error in lower layer cloud optical depth (Numeric) +40 40 Error in lower layer cloud top pressure (Pa) diff --git a/definitions/grib2/tables/23/4.2.3.3.table b/definitions/grib2/tables/23/4.2.3.3.table new file mode 100644 index 000000000..cb5c4b6ed --- /dev/null +++ b/definitions/grib2/tables/23/4.2.3.3.table @@ -0,0 +1,4 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Probability of encountering marginal visual flight rule conditions (%) +1 1 Probability of encountering low instrument flight rule conditions (%) +2 2 Probability of encountering instrument flight rule conditions (%) diff --git a/definitions/grib2/tables/23/4.2.3.4.table b/definitions/grib2/tables/23/4.2.3.4.table new file mode 100644 index 000000000..f86d2d653 --- /dev/null +++ b/definitions/grib2/tables/23/4.2.3.4.table @@ -0,0 +1,10 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Volcanic ash probability (%) +1 1 Volcanic ash cloud top temperature (K) +2 2 Volcanic ash cloud top pressure (Pa) +3 3 Volcanic ash cloud top height (m) +4 4 Volcanic ash cloud emissivity (Numeric) +5 5 Volcanic ash effective absorption optical depth ratio (Numeric) +6 6 Volcanic ash cloud optical depth (Numeric) +7 7 Volcanic ash column density (kg m-2) +8 8 Volcanic ash particle effective radius (m) diff --git a/definitions/grib2/tables/23/4.2.3.5.table b/definitions/grib2/tables/23/4.2.3.5.table new file mode 100644 index 000000000..92a050db0 --- /dev/null +++ b/definitions/grib2/tables/23/4.2.3.5.table @@ -0,0 +1,7 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Interface sea-surface temperature (K) +1 1 Skin sea-surface temperature (K) +2 2 Sub-skin sea-surface temperature (K) +3 3 Foundation sea-surface temperature (K) +4 4 Estimated bias between sea-surface temperature and standard (K) +5 5 Estimated standard deviation between sea surface temperature and standard (K) diff --git a/definitions/grib2/tables/23/4.2.3.6.table b/definitions/grib2/tables/23/4.2.3.6.table new file mode 100644 index 000000000..471beed55 --- /dev/null +++ b/definitions/grib2/tables/23/4.2.3.6.table @@ -0,0 +1,7 @@ +# Code table 4.2 - Parameter number by product discipline and parameter category +0 0 Global solar irradiance (W m-2) +1 1 Global solar exposure (J m-2) +2 2 Direct solar irradiance (W m-2) +3 3 Direct solar exposure (J m-2) +4 4 Diffuse solar irradiance (W m-2) +5 5 Diffuse solar exposure (J m-2) diff --git a/definitions/grib2/tables/23/4.201.table b/definitions/grib2/tables/23/4.201.table new file mode 100644 index 000000000..44943d5e0 --- /dev/null +++ b/definitions/grib2/tables/23/4.201.table @@ -0,0 +1,17 @@ +# Code table 4.201 - Precipitation type +0 0 Reserved +1 1 Rain +2 2 Thunderstorm +3 3 Freezing rain +4 4 Mixed/ice +5 5 Snow +6 6 Wet snow +7 7 Mixture of rain and snow +8 8 Ice pellets +9 9 Graupel +10 10 Hail +11 11 Drizzle +12 12 Freezing drizzle +# 13-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.202.table b/definitions/grib2/tables/23/4.202.table new file mode 100644 index 000000000..438502ff9 --- /dev/null +++ b/definitions/grib2/tables/23/4.202.table @@ -0,0 +1,4 @@ +# Code table 4.202 - Precipitable water category +# 0-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.203.table b/definitions/grib2/tables/23/4.203.table new file mode 100644 index 000000000..8a9aedf7a --- /dev/null +++ b/definitions/grib2/tables/23/4.203.table @@ -0,0 +1,26 @@ +# Code table 4.203 - Cloud type +0 0 Clear +1 1 Cumulonimbus +2 2 Stratus +3 3 Stratocumulus +4 4 Cumulus +5 5 Altostratus +6 6 Nimbostratus +7 7 Altocumulus +8 8 Cirrostratus +9 9 Cirrocumulus +10 10 Cirrus +11 11 Cumulonimbus - ground-based fog beneath the lowest layer +12 12 Stratus - ground-based fog beneath the lowest layer +13 13 Stratocumulus - ground-based fog beneath the lowest layer +14 14 Cumulus - ground-based fog beneath the lowest layer +15 15 Altostratus - ground-based fog beneath the lowest layer +16 16 Nimbostratus - ground-based fog beneath the lowest layer +17 17 Altocumulus - ground-based fog beneath the lowest layer +18 18 Cirrostratus - ground-based fog beneath the lowest layer +19 19 Cirrocumulus - ground-based fog beneath the lowest layer +20 20 Cirrus - ground-based fog beneath the lowest layer +# 21-190 Reserved +191 191 Unknown +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.204.table b/definitions/grib2/tables/23/4.204.table new file mode 100644 index 000000000..481372936 --- /dev/null +++ b/definitions/grib2/tables/23/4.204.table @@ -0,0 +1,9 @@ +# Code table 4.204 - Thunderstorm coverage +0 0 None +1 1 Isolated (1-2%) +2 2 Few (3-5%) +3 3 Scattered (6-45%) +4 4 Numerous (> 45%) +# 5-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.205.table b/definitions/grib2/tables/23/4.205.table new file mode 100644 index 000000000..5b4484dfd --- /dev/null +++ b/definitions/grib2/tables/23/4.205.table @@ -0,0 +1,6 @@ +# Code table 4.205 - Presence of aerosol +0 0 Aerosol not present +1 1 Aerosol present +# 2-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.206.table b/definitions/grib2/tables/23/4.206.table new file mode 100644 index 000000000..02c3dfdf9 --- /dev/null +++ b/definitions/grib2/tables/23/4.206.table @@ -0,0 +1,6 @@ +# Code table 4.206 - Volcanic ash +0 0 Not present +1 1 Present +# 2-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.207.table b/definitions/grib2/tables/23/4.207.table new file mode 100644 index 000000000..8ddb2e048 --- /dev/null +++ b/definitions/grib2/tables/23/4.207.table @@ -0,0 +1,10 @@ +# Code table 4.207 - Icing +0 0 None +1 1 Light +2 2 Moderate +3 3 Severe +4 4 Trace +5 5 Heavy +# 6-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.208.table b/definitions/grib2/tables/23/4.208.table new file mode 100644 index 000000000..b83685a1a --- /dev/null +++ b/definitions/grib2/tables/23/4.208.table @@ -0,0 +1,9 @@ +# Code table 4.208 - Turbulence +0 0 None (smooth) +1 1 Light +2 2 Moderate +3 3 Severe +4 4 Extreme +# 5-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.209.table b/definitions/grib2/tables/23/4.209.table new file mode 100644 index 000000000..cb7617071 --- /dev/null +++ b/definitions/grib2/tables/23/4.209.table @@ -0,0 +1,9 @@ +# Code table 4.209 - Planetary boundary-layer regime +0 0 Reserved +1 1 Stable +2 2 Mechanically driven turbulence +3 3 Forced convection +4 4 Free convection +# 5-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.210.table b/definitions/grib2/tables/23/4.210.table new file mode 100644 index 000000000..524a6ca73 --- /dev/null +++ b/definitions/grib2/tables/23/4.210.table @@ -0,0 +1,6 @@ +# Code table 4.210 - Contrail intensity +0 0 Contrail not present +1 1 Contrail present +# 2-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.211.table b/definitions/grib2/tables/23/4.211.table new file mode 100644 index 000000000..098eb2d43 --- /dev/null +++ b/definitions/grib2/tables/23/4.211.table @@ -0,0 +1,7 @@ +# Code table 4.211 - Contrail engine type +0 0 Low bypass +1 1 High bypass +2 2 Non-bypass +# 3-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.212.table b/definitions/grib2/tables/23/4.212.table new file mode 100644 index 000000000..1a085b88d --- /dev/null +++ b/definitions/grib2/tables/23/4.212.table @@ -0,0 +1,18 @@ +# Code table 4.212 - Land use +0 0 Reserved +1 1 Urban land +2 2 Agriculture +3 3 Range land +4 4 Deciduous forest +5 5 Coniferous forest +6 6 Forest/wetland +7 7 Water +8 8 Wetlands +9 9 Desert +10 10 Tundra +11 11 Ice +12 12 Tropical forest +13 13 Savannah +# 14-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.213.table b/definitions/grib2/tables/23/4.213.table new file mode 100644 index 000000000..c65784a00 --- /dev/null +++ b/definitions/grib2/tables/23/4.213.table @@ -0,0 +1,16 @@ +# Code table 4.213 - Soil type +0 0 Reserved +1 1 Sand +2 2 Loamy sand +3 3 Sandy loam +4 4 Silt loam +5 5 Organic (redefined) +6 6 Sandy clay loam +7 7 Silt clay loam +8 8 Clay loam +9 9 Sandy clay +10 10 Silty clay +11 11 Clay +# 12-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.215.table b/definitions/grib2/tables/23/4.215.table new file mode 100644 index 000000000..034db72be --- /dev/null +++ b/definitions/grib2/tables/23/4.215.table @@ -0,0 +1,9 @@ +# Code table 4.215 - Remotely sensed snow coverage +# 0-49 Reserved +50 50 No-snow/no-cloud +# 51-99 Reserved +100 100 Clouds +# 101-249 Reserved +250 250 Snow +# 251-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.216.table b/definitions/grib2/tables/23/4.216.table new file mode 100644 index 000000000..5d1460cef --- /dev/null +++ b/definitions/grib2/tables/23/4.216.table @@ -0,0 +1,5 @@ +# Code table 4.216 - Elevation of snow-covered terrain +# 0-90 Elevation in increments of 100 m +# 91-253 Reserved +254 254 Clouds +255 255 Missing diff --git a/definitions/grib2/tables/23/4.217.table b/definitions/grib2/tables/23/4.217.table new file mode 100644 index 000000000..a4452182c --- /dev/null +++ b/definitions/grib2/tables/23/4.217.table @@ -0,0 +1,8 @@ +# Code table 4.217 - Cloud mask type +0 0 Clear over water +1 1 Clear over land +2 2 Cloud +3 3 No data +# 4-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.218.table b/definitions/grib2/tables/23/4.218.table new file mode 100644 index 000000000..fcd06c348 --- /dev/null +++ b/definitions/grib2/tables/23/4.218.table @@ -0,0 +1,46 @@ +# Code table 4.218 - Pixel scene type +0 0 No scene identified +1 1 Green needle-leafed forest +2 2 Green broad-leafed forest +3 3 Deciduous needle-leafed forest +4 4 Deciduous broad-leafed forest +5 5 Deciduous mixed forest +6 6 Closed shrub-land +7 7 Open shrub-land +8 8 Woody savannah +9 9 Savannah +10 10 Grassland +11 11 Permanent wetland +12 12 Cropland +13 13 Urban +14 14 Vegetation/crops +15 15 Permanent snow/ice +16 16 Barren desert +17 17 Water bodies +18 18 Tundra +19 19 Warm liquid water cloud +20 20 Supercooled liquid water cloud +21 21 Mixed-phase cloud +22 22 Optically thin ice cloud +23 23 Optically thick ice cloud +24 24 Multilayered cloud +# 25-96 Reserved +97 97 Snow/ice on land +98 98 Snow/ice on water +99 99 Sun-glint +100 100 General cloud +101 101 Low cloud/fog/stratus +102 102 Low cloud/stratocumulus +103 103 Low cloud/unknown type +104 104 Medium cloud/nimbostratus +105 105 Medium cloud/altostratus +106 106 Medium cloud/unknown type +107 107 High cloud/cumulus +108 108 High cloud/cirrus +109 109 High cloud/unknown +110 110 Unknown cloud type +111 111 Single layer water cloud +112 112 Single layer ice cloud +# 113-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.219.table b/definitions/grib2/tables/23/4.219.table new file mode 100644 index 000000000..86df0522e --- /dev/null +++ b/definitions/grib2/tables/23/4.219.table @@ -0,0 +1,8 @@ +# Code table 4.219 - Cloud top height quality indicator +0 0 Nominal cloud top height quality +1 1 Fog in segment +2 2 Poor quality height estimation +3 3 Fog in segment and poor quality height estimation +# 4-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.220.table b/definitions/grib2/tables/23/4.220.table new file mode 100644 index 000000000..93e841f8b --- /dev/null +++ b/definitions/grib2/tables/23/4.220.table @@ -0,0 +1,6 @@ +# Code table 4.220 - Horizontal dimension processed +0 0 Latitude +1 1 Longitude +# 2-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.221.table b/definitions/grib2/tables/23/4.221.table new file mode 100644 index 000000000..8448533d7 --- /dev/null +++ b/definitions/grib2/tables/23/4.221.table @@ -0,0 +1,6 @@ +# Code table 4.221 - Treatment of missing data +0 0 Not included +1 1 Extrapolated +# 2-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.222.table b/definitions/grib2/tables/23/4.222.table new file mode 100644 index 000000000..57f113014 --- /dev/null +++ b/definitions/grib2/tables/23/4.222.table @@ -0,0 +1,6 @@ +# Code table 4.222 - Categorical result +0 0 No +1 1 Yes +# 2-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.223.table b/definitions/grib2/tables/23/4.223.table new file mode 100644 index 000000000..f0deb076a --- /dev/null +++ b/definitions/grib2/tables/23/4.223.table @@ -0,0 +1,5 @@ +# Code table 4.223 - Fire detection indicator +0 0 No fire detected +1 1 Possible fire detected +2 2 Probable fire detected +3 3 Missing diff --git a/definitions/grib2/tables/23/4.224.table b/definitions/grib2/tables/23/4.224.table new file mode 100644 index 000000000..e87cde4bb --- /dev/null +++ b/definitions/grib2/tables/23/4.224.table @@ -0,0 +1,18 @@ +# Code table 4.224 - Categorical outlook +0 0 No risk area +1 1 Reserved +2 2 General thunderstorm risk area +3 3 Reserved +4 4 Slight risk area +5 5 Reserved +6 6 Moderate risk area +7 7 Reserved +8 8 High risk area +# 9-10 Reserved +11 11 Dry thunderstorm (dry lightning) risk area +# 12-13 Reserved +14 14 Critical risk area +# 15-17 Reserved +18 18 Extremely critical risk area +# 19-254 Reserved +255 255 Missing diff --git a/definitions/grib2/tables/23/4.225.table b/definitions/grib2/tables/23/4.225.table new file mode 100644 index 000000000..9dc374087 --- /dev/null +++ b/definitions/grib2/tables/23/4.225.table @@ -0,0 +1,2 @@ +# Code table 4.225 - Weather (see FM 94 BUFR/FM 95 CREX Code table 0 20 003 - Present weather) +511 511 Missing value diff --git a/definitions/grib2/tables/23/4.227.table b/definitions/grib2/tables/23/4.227.table new file mode 100644 index 000000000..27c76553d --- /dev/null +++ b/definitions/grib2/tables/23/4.227.table @@ -0,0 +1,9 @@ +# Code table 4.227 - Icing scenario (weather/cloud classification) +0 0 None +1 1 General +2 2 Convective +3 3 Stratiform +4 4 Freezing +# 5-191 Reserved +# 192-254 Reserved for local use +255 255 Missing value diff --git a/definitions/grib2/tables/23/4.230.table b/definitions/grib2/tables/23/4.230.table new file mode 100644 index 000000000..281ccd92c --- /dev/null +++ b/definitions/grib2/tables/23/4.230.table @@ -0,0 +1,511 @@ +# Code table 4.230 - Atmospheric chemical constituent type +0 0 Ozone O3 +1 1 Water vapour H2O +2 2 Methane CH4 +3 3 Carbon dioxide CO2 +4 4 Carbon monoxide CO +5 5 Nitrogen dioxide NO2 +6 6 Nitrous oxide N2O +7 7 Formaldehyde HCHO +8 8 Sulphur dioxide SO2 +9 9 Ammonia NH3 +10 10 Ammonium NH4 +11 11 Nitrogen monoxide NO +12 12 Atomic oxygen O +13 13 Nitrate radical NO3 +14 14 Hydroperoxyl radical HO2 +15 15 Dinitrogen pentoxide N2O5 +16 16 Nitrous acid HONO +17 17 Nitric acid HNO3 +18 18 Peroxynitric acid HO2NO2 +19 19 Hydrogen peroxide H2O2 +20 20 Molecular hydrogen H2 +21 21 Atomic nitrogen N +22 22 Sulphate SO42- +23 23 Radon Rn +24 24 Elemental mercury Hg(0) +25 25 Divalent mercury Hg2+ +26 26 Atomic chlorine Cl +27 27 Chlorine monoxide ClO +28 28 Dichlorine peroxide Cl2O2 +29 29 Hypochlorous acid HClO +30 30 Chlorine nitrate ClONO2 +31 31 Chlorine dioxide ClO2 +32 32 Atomic bromine Br +33 33 Bromine monoxide BrO +34 34 Bromine chloride BrCl +35 35 Hydrogen bromide HBr +36 36 Hypobromous acid HBrO +37 37 Bromine nitrate BrONO2 +38 38 Oxygen O2 +39 39 Nitryl chloride NO2Cl +40 40 Sulphuric acid H2SO4 +41 41 Hydrogen sulphide H2S +42 42 Sulphur trioxide SO3 +43 43 Bromine Br2 +44 44 Hydrofluoric acid HF +45 45 Sulphur hexafluoride SF6 +46 46 Chlorine Cl2 +# 47-9999 Reserved +10000 10000 Hydroxyl radical OH +10001 10001 Methyl peroxy radical CH3O2 +10002 10002 Methyl hydroperoxide CH3O2H +10004 10004 Methanol CH3OH +10005 10005 Formic acid CH3OOH +10006 10006 Hydrogen cyanide HCN +10007 10007 Aceto nitrile CH3CN +10008 10008 Ethane C2H6 +10009 10009 Ethene (= Ethylene) C2H4 +10010 10010 Ethyne (= Acetylene) C2H2 +10011 10011 Ethanol C2H5OH +10012 10012 Acetic acid C2H5OOH +10013 10013 Peroxyacetyl nitrate CH3C(O)OONO2 +10014 10014 Propane C3H8 +10015 10015 Propene C3H6 +10016 10016 Butanes C4H10 +10017 10017 Isoprene C5H10 +10018 10018 Alpha pinene C10H16 +10019 10019 Beta pinene C10H16 +10020 10020 Limonene C10H16 +10021 10021 Benzene C6H6 +10022 10022 Toluene C7H8 +10023 10023 XyleneC8H10 +10024 10024 Methanesulphonic acid CH3SO3H +10025 10025 Methylglyoxal (2-oxopropanal) CH3C(O)CHO +10026 10026 Peroxyacetyl radical CH3C(O)OO +10027 10027 Methacrylic acid (2-methylprop-2-enoic acid) CH2C(CH3)COOH +10028 10028 Methacrolein (2-methylprop-2-enal) CH2C(CH3)CHO +10029 10029 Acetone (propan-2-one) CH3C(O)CH3 +10030 10030 Ethyl dioxidanyl radical CH3CH2OO +10031 10031 Butadiene (buta-1,3-diene) (CH2CH)2 +10032 10032 Acetaldehyde (ethanal) CH3CHO +10033 10033 Glycolaldehyde (hydroxyethanal) HOCH2CHO +10034 10034 Cresol (methylphenol), all isomers CH3C6H4OH +10035 10035 Peracetic acid (ethaneperoxoic acid) CH3C(O)OOH +10036 10036 2-hydroxyethyl oxidanyl radical HOCH2CH2O +10037 10037 2-hydroxyethyl dioxidanyl radical HOCH2CH2OO +10038 10038 Glyoxal (oxaldehyde) OCHCHO +10039 10039 Isopropyl dioxidanyl radical (CH3)2CHOO +10040 10040 Isopropyl hydroperoxide (2-hydroperoxypropane) (CH3)2CHOOH +10041 10041 Hydroxyacetone (1-hydroxypropan-2-one) CH3C(O)CH2OH +10042 10042 Peroxyacetic acid (ethaneperoxoic acid) CH3C(O)OOH +10043 10043 Methyl vinyl ketone (but-3-en-2-one) CH3C(O)CHCH2 +10044 10044 Phenoxy radical C6H5O +10045 10045 Methyl radical CH3 +10046 10046 Carbonyl sulphide (carbon oxide sulphide) OCS +10047 10047 Dibromomethane CH2Br2 +10048 10048 Methoxy radical CH3O +10049 10049 Tribromomethane CHBr3 +10050 10050 Formyl radical (oxomethyl radical) HOC +10051 10051 Hydroxymethyl dioxidanyl radical HOCH2OO +10052 10052 Ethyl hydroperoxide CH3CH2OOH +10053 10053 3-hydroxypropyl dioxidanyl radical HOCH2CH2CH2OO +10054 10054 3-hydroxypropyl hydroperoxide HOCH2CH2CH2OOH +# 10055-10499 Reserved for other simple organic molecules(e.g. higher aldehydes, alcohols, peroxides, ...) +10500 10500 Dimethyl sulphide CH3SCH3 (DMS) +10501 10501 DMSO (dimethyl sulfoxide) (CH3)2SO +#10502-20000 Reserved +20001 20001 Hydrogen chloride +20002 20002 CFC-11 +20003 20003 CFC-12 +20004 20004 CFC-113 +20005 20005 CFC-113a +20006 20006 CFC-114 +20007 20007 CFC-115 +20008 20008 HCFC-22 +20009 20009 HCFC-141b +20010 20010 HCFC-142b +20011 20011 Halon-1202 +20012 20012 Halon-1211 +20013 20013 Halon-1301 +20014 20014 Halon-2402 +20015 20015 Methyl chloride (HCC-40) +20016 20016 Carbon tetrachloride (HCC-10) +20017 20017 HCC-140a CH3CCl3 +20018 20018 Methyl bromide (HBC-40B1) +20019 20019 Hexachlorocyclohexane (HCH) +20020 20020 Alpha hexachlorocyclohexane +20021 20021 Hexachlorobiphenyl (PCB-153) +20022 20022 HCFC 141a (1,1-dichloro-2-fluoro-ethane) CH3CClF2 +# 20023-29999 Reserved +30000 30000 Radioactive pollutant (tracer, defined by originating centre) +#3000-30009 Reserved +30010 30010 Hydrogen H-3 +30011 30011 Hydrogen organic bounded H-3o +30012 30012 Hydrogen inorganic H-3a +30013 30013 Beryllium 7 Be-7 +30014 30014 Beryllium 10 Be-10 +30015 30015 Carbon 14 C-14 +30016 30016 Carbon 14 CO2 C-14CO2 +30017 30017 Carbon 14 other gases C-14og +30018 30018 Nitrogen 13 N-13 +30019 30019 Nitrogen 16 N-16 +30020 30020 Fluorine 18 F-18 +30021 30021 Sodium 22 Na-22 +30022 30022 Phosphate 32 P-32 +30023 30023 Phosphate 33 P-33 +30024 30024 Sulphur 35 S-35 +30025 30025 Chlorine 36 Cl-36 +30026 30026 Potassium 40 K-40 +30027 30027 Argon 41 Ar-41 +30028 30028 Calcium 41 Ca-41 +30029 30029 Calcium 45 Ca-45 +30030 30030 Titanium 44 Ti-44 +30031 30031 Scandium 46 Sc-46 +30032 30032 Vanadium 48 V-48 +30033 30033 Vanadium 49 V-49 +30034 30034 Chrome 51 Cr-51 +30035 30035 Manganese 52 Mn-52 +30036 30036 Manganese 54 Mn-54 +30037 30037 Iron 55 Fe-55 +30038 30038 Iron 59 Fe-59 +30039 30039 Cobalt 56 Co-56 +30040 30040 Cobalt 57 Co-57 +30041 30041 Cobalt 58 Co-58 +30042 30042 Cobalt 60 Co-60 +30043 30043 Nickel 59 Ni-59 +30044 30044 Nickel 63 Ni-63 +30045 30045 Zinc 65 Zn-65 +30046 30046 Gallium 67 Ga-67 +30047 30047 Gallium 68 Ga-68 +30048 30048 Germanium 68 Ge-68 +30049 30049 Germanium 69 Ge-69 +30050 30050 Arsenic 73 As-73 +30051 30051 Selenium 75 Se-75 +30052 30052 Selenium 79 Se-79 +30053 30053 Rubidium 81 Rb-81 +30054 30054 Rubidium 83 Rb-83 +30055 30055 Rubidium 84 Rb-84 +30056 30056 Rubidium 86 Rb-86 +30057 30057 Rubidium 87 Rb-87 +30058 30058 Rubidium 88 Rb-88 +30059 30059 Krypton 85 Kr-85 +30060 30060 Krypton 85 metastable Kr-85m +30061 30061 Krypton 87 Kr-87 +30062 30062 Krypton 88 Kr-88 +30063 30063 Krypton 89 Kr-89 +30064 30064 Strontium 85 Sr-85 +30065 30065 Strontium 89 Sr-89 +30066 30066 Strontium 89/90 Sr-8990 +30067 30067 Strontium 90 Sr-90 +30068 30068 Strontium 91 Sr-91 +30069 30069 Strontium 92 Sr-92 +30070 30070 Yttrium 87 Y-87 +30071 30071 Yttrium 88 Y-88 +30072 30072 Yttrium 90 Y-90 +30073 30073 Yttrium 91 Y-91 +30074 30074 Yttrium 91 metastable Y-91m +30075 30075 Yttrium 92 Y-92 +30076 30076 Yttrium 93 Y-93 +30077 30077 Zirconium 89 Zr-89 +30078 30078 Zirconium 93 Zr-93 +30079 30079 Zirconium 95 Zr-95 +30080 30080 Zirconium 97 Zr-97 +30081 30081 Niobium 93 metastable Nb-93m +30082 30082 Niobium 94 Nb-94 +30083 30083 Niobium 95 Nb-95 +30084 30084 Niobium 95 metastable Nb-95m +30085 30085 Niobium 97 Nb-97 +30086 30086 Niobium 97 metastable Nb-97m +30087 30087 Molybdenum 93 Mo-93 +30088 30088 Molybdenum 99 Mo-99 +30089 30089 Technetium 95 metastable Tc-95m +30090 30090 Technetium 96 Tc-96 +30091 30091 Technetium 99 Tc-99 +30092 30092 Technetium 99 metastable Tc-99m +30093 30093 Rhodium 99 Rh-99 +30094 30094 Rhodium 101 Rh-101 +30095 30095 Rhodium 102 metastable Rh-102m +30096 30096 Rhodium 103 metastable Rh-103m +30097 30097 Rhodium 105 Rh-105 +30098 30098 Rhodium 106 Rh-106 +30099 30099 Palladium 100 Pd-100 +30100 30100 Palladium 103 Pd-103 +30101 30101 Palladium 107 Pd-107 +30102 30102 Ruthenium 103 Ru-103 +30103 30103 Ruthenium 105 Ru-105 +30104 30104 Ruthenium 106 Ru-106 +30105 30105 Silver 108 metastable Ag-108m +30106 30106 Silver 110 metastable Ag-110m +30107 30107 Cadmium 109 Cd-109 +30108 30108 Cadmium 113 metastable Cd-113m +30109 30109 Cadmium 115 metastable Cd-115m +30110 30110 Indium 114 metastable In-114m +30111 30111 Tin 113 Sn-113 +30112 30112 Tin 119 metastable Sn-119m +30113 30113 Tin 121 metastable Sn-121m +30114 30114 Tin 122 Sn-122 +30115 30115 Tin 123 Sn-123 +30116 30116 Tin 126 Sn-126 +30117 30117 Antimony 124 Sb-124 +30118 30118 Antimony 125 Sb-125 +30119 30119 Antimony 126 Sb-126 +30120 30120 Antimony 127 Sb-127 +30121 30121 Antimony 129 Sb-129 +30122 30122 Tellurium 123 metastable Te-123m +30123 30123 Tellurium 125 metastable Te-125m +30124 30124 Tellurium 127 Te-127 +30125 30125 Tellurium 127 metastable Te-127m +30126 30126 Tellurium 129 Te-129 +30127 30127 Tellurium 129 metastable Te-129m +30128 30128 Tellurium 131 metastable Te-131m +30129 30129 Tellurium 132 Te-132 +30130 30130 Iodine 123 I-123 +30131 30131 Iodine 124 I-124 +30132 30132 Iodine 125 I-125 +30133 30133 Iodine 126 I-126 +30134 30134 Iodine 129 I-129 +30135 30135 Iodine 129 elementary gaseous I-129g +30136 30136 Iodine 129 organic bounded I-129o +30137 30137 Iodine 131 I-131 +30138 30138 Iodine 131 elementary gaseous I-131g +30139 30139 Iodine 131 organic bounded I-131o +30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go +30141 30141 Iodine 131 aerosol I-131a +30142 30142 Iodine 132 I-132 +30143 30143 Iodine 132 elementary gaseous I-132g +30144 30144 Iodine 132 organic bounded I-132o +30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go +30146 30146 Iodine 132 aerosol I-132a +30147 30147 Iodine 133 I-133 +30148 30148 Iodine 133 elementary gaseous I-133g +30149 30149 Iodine 133 organic bounded I-133o +30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go +30151 30151 Iodine 133 aerosol I-133a +30152 30152 Iodine 134 I-134 +30153 30153 Iodine 134 elementary gaseous I-134g +30154 30154 Iodine 134 organic bounded I-134o +30155 30155 Iodine 135 I-135 +30156 30156 Iodine 135 elementary gaseous I-135g +30157 30157 Iodine 135 organic bounded I-135o +30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go +30159 30159 Iodine 135 aerosol I-135a +30160 30160 Xenon 131 metastable Xe-131m +30161 30161 Xenon 133 Xe-133 +30162 30162 Xenon 133 metastable Xe-133m +30163 30163 Xenon 135 Xe-135 +30164 30164 Xenon 135 metastable Xe-135m +30165 30165 Xenon 137 Xe-137 +30166 30166 Xenon 138 Xe-138 +30167 30167 Xenon sum of all Xenon isotopes Xe-sum +30168 30168 Caesium 131 Cs-131 +30169 30169 Caesium 134 Cs-134 +30170 30170 Caesium 135 Cs-135 +30171 30171 Caesium 136 Cs-136 +30172 30172 Caesium 137 Cs-137 +30173 30173 Barium 133 Ba-133 +30174 30174 Barium 137 metastable Ba-137m +30175 30175 Barium 140 Ba-140 +30176 30176 Cerium 139 Ce-139 +30177 30177 Cerium 141 Ce-141 +30178 30178 Cerium 143 Ce-143 +30179 30179 Cerium 144 Ce-144 +30180 30180 Lanthanum 140 La-140 +30181 30181 Lanthanum 141 La-141 +30182 30182 Praseodymium 143 Pr-143 +30183 30183 Praseodymium 144 Pr-144 +30184 30184 Praseodymium 144 metastable Pr-144m +30185 30185 Samarium 145 Sm-145 +30186 30186 Samarium 147 Sm-147 +30187 30187 Samarium 151 Sm-151 +30188 30188 Neodymium 147 Nd-147 +30189 30189 Promethium 146 Pm-146 +30190 30190 Promethium 147 Pm-147 +30191 30191 Promethium 151 Pm-151 +30192 30192 Europium 152 Eu-152 +30193 30193 Europium 154 Eu-154 +30194 30194 Europium 155 Eu-155 +30195 30195 Gadolinium 153 Gd-153 +30196 30196 Terbium 160 Tb-160 +30197 30197 Holmium 166 metastable Ho-166m +30198 30198 Thulium 170 Tm-170 +30199 30199 Ytterbium 169 Yb-169 +30200 30200 Hafnium 175 Hf-175 +30201 30201 Hafnium 181 Hf-181 +30202 30202 Tantalum 179 Ta-179 +30203 30203 Tantalum 182 Ta-182 +30204 30204 Rhenium 184 Re-184 +30205 30205 Iridium 192 Ir-192 +30206 30206 Mercury 203 Hg-203 +30207 30207 Thallium 204 Tl-204 +30208 30208 Thallium 207 Tl-207 +30209 30209 Thallium 208 Tl-208 +30210 30210 Thallium 209 Tl-209 +30211 30211 Bismuth 205 Bi-205 +30212 30212 Bismuth 207 Bi-207 +30213 30213 Bismuth 210 Bi-210 +30214 30214 Bismuth 211 Bi-211 +30215 30215 Bismuth 212 Bi-212 +30216 30216 Bismuth 213 Bi-213 +30217 30217 Bismuth 214 Bi-214 +30218 30218 Polonium 208 Po-208 +30219 30219 Polonium 210 Po-210 +30220 30220 Polonium 212 Po-212 +30221 30221 Polonium 213 Po-213 +30222 30222 Polonium 214 Po-214 +30223 30223 Polonium 215 Po-215 +30224 30224 Polonium 216 Po-216 +30225 30225 Polonium 218 Po-218 +30226 30226 Lead 209 Pb-209 +30227 30227 Lead 210 Pb-210 +30228 30228 Lead 211 Pb-211 +30229 30229 Lead 212 Pb-212 +30230 30230 Lead 214 Pb-214 +30231 30231 Astatine 217 At-217 +30232 30232 Radon 219 Rn-219 +30233 30233 Radon 220 Rn-220 +30234 30234 Radon 222 Rn-222 +30235 30235 Francium 221 Fr-221 +30236 30236 Francium 223 Fr-223 +30237 30237 Radium 223 Ra-223 +30238 30238 Radium 224 Ra-224 +30239 30239 Radium 225 Ra-225 +30240 30240 Radium 226 Ra-226 +30241 30241 Radium 228 Ra-228 +30242 30242 Actinium 225 Ac-225 +30243 30243 Actinium 227 Ac-227 +30244 30244 Actinium 228 Ac-228 +30245 30245 Thorium 227 Th-227 +30246 30246 Thorium 228 Th-228 +30247 30247 Thorium 229 Th-229 +30248 30248 Thorium 230 Th-230 +30249 30249 Thorium 231 Th-231 +30250 30250 Thorium 232 Th-232 +30251 30251 Thorium 234 Th-234 +30252 30252 Protactinium 231 Pa-231 +30253 30253 Protactinium 233 Pa-233 +30254 30254 Protactinium 234 metastable Pa-234m +30255 30255 Uranium 232 U-232 +30256 30256 Uranium 233 U-233 +30257 30257 Uranium 234 U-234 +30258 30258 Uranium 235 U-235 +30259 30259 Uranium 236 U-236 +30260 30260 Uranium 237 U-237 +30261 30261 Uranium 238 U-238 +30262 30262 Plutonium 236 Pu-236 +30263 30263 Plutonium 238 Pu-238 +30264 30264 Plutonium 239 Pu-239 +30265 30265 Plutonium 240 Pu-240 +30266 30266 Plutonium 241 Pu-241 +30267 30267 Plutonium 242 Pu-242 +30268 30268 Plutonium 244 Pu-244 +30269 30269 Neptunium 237 Np-237 +30270 30270 Neptunium 238 Np-238 +30271 30271 Neptunium 239 Np-239 +30272 30272 Americium 241 Am-241 +30273 30273 Americium 242 Am-242 +30274 30274 Americium 242 metastable Am-242m +30275 30275 Americium 243 Am-243 +30276 30276 Curium 242 Cm-242 +30277 30277 Curium 243 Cm-243 +30278 30278 Curium 244 Cm-244 +30279 30279 Curium 245 Cm-245 +30280 30280 Curium 246 Cm-246 +30281 30281 Curium 247 Cm-247 +30282 30282 Curium 248 Cm-248 +30283 30283 Curium 243/244 Cm-243244 +30284 30284 Plutonium 238/Americium 241 Pu-238Am-241 +30285 30285 Plutonium 239/240 Pu-239240 +30286 30286 Berkelium 249 Bk-249 +30287 30287 Californium 249 Cf-249 +30288 30288 Californium 250 Cf-250 +30289 30289 Californium 252 Cf-252 +30290 30290 Sum aerosol particulates SumAer +30291 30291 Sum Iodine SumIod +30292 30292 Sum noble gas SumNG +30293 30293 Activation gas ActGas +30294 30294 Cs-137 Equivalent EquCs137 +30295 30295 Carbon-13 C-13 +30296 30296 Lead Pb +#30297-39999 Reserved +40000 40000 Singlet sigma oxygen (dioxygen (sigma singlet)) O2 +40001 40001 Singlet delta oxygen (dioxygen (delta singlet)) O2 +40002 40002 Singlet excited oxygen atom O(D) +40003 40003 Triplet ground state oxygen atom O(P) +# 40004-59999 Reserved +60000 60000 HOx radical (OH+HO2) +60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2) RO2 +60002 60002 Passive Ozone +60003 60003 NOx expressed as nitrogen NOx +60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy +60005 60005 Total inorganic chlorine Clx +60006 60006 Total inorganic bromine Brx +60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx +60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx +60009 60009 Lumped alkanes +60010 60010 Lumped alkenes +60011 60011 Lumped aromatic compounds +60012 60012 Lumped terpenes +60013 60013 Non-methane volatile organic compounds expressed as carbon NMVOC +60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon aNMVOC +60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon bNMVOC +60016 60016 Lumped oxygenated hydrocarbons OVOC +60017 60017 NOx expressed as nitrogen dioxide (NO2) NOx +60018 60018 Organic aldehydes RCHO +60019 60019 Organic peroxides ROOH +60020 60020 Organic nitrates RNO3 +60021 60021 Ethers ROR +60022 60022 Amines NRRR +60023 60023 Ketones RC(O)R +60024 60024 Dicarbonyls unsaturated RC(O)CH2C(O)R +60025 60025 Hydroxy dicarbonyls unsaturated RC(O)CHOHC(O)R +60026 60026 Hydroxy ketones RC(OH)C(O)R +60027 60027 Oxides Ox +# 60028-61999 Reserved +62000 62000 Total aerosol +62001 62001 Dust dry +62002 62002 Water in ambient +62003 62003 Ammonium dry +62004 62004 Nitrate dry +62005 62005 Nitric acid trihydrate +62006 62006 Sulphate dry +62007 62007 Mercury dry +62008 62008 Sea salt dry +62009 62009 Black carbon dry +62010 62010 Particulate organic matter dry +62011 62011 Primary particulate organic matter dry +62012 62012 Secondary particulate organic matter dry +62013 62013 Black carbon hydrophilic dry +62014 62014 Black carbon hydrophobic dry +62015 62015 Particulate organic matter hydrophilic dry +62016 62016 Particulate organic matter hydrophobic dry +62017 62017 Nitrate hydrophilic dry +62018 62018 Nitrate hydrophobic dry +#62019 Reserved +62020 62020 Smoke - high absorption +62021 62021 Smoke - low absorption +62022 62022 Aerosol - high absorption +62023 62023 Aerosol - low absorption +#62024 Reserved +62025 62025 Volcanic ash +62026 62026 Particulate matter (PM) +#62027 Reserved +62028 62028 Total aerosol hydrophilic +62029 62029 Total aerosol hydrophobic +#62030-62099 Reserved +62100 62100 Alnus (alder) pollen +62101 62101 Betula (birch) pollen +62102 62102 Castanea (chestnut) pollen +62103 62103 Carpinus (hornbeam) pollen +62104 62104 Corylus (hazel) pollen +62105 62105 Fagus (beech) pollen +62106 62106 Fraxinus (ash) pollen +62107 62107 Pinus (pine) pollen +62108 62108 Platanus (plane) pollen +62109 62109 Populus (cottonwood, poplar) pollen +62110 62110 Quercus (oak) pollen +62111 62111 Salix (willow) pollen +62112 62112 Taxus (yew) pollen +62113 62113 Tilia (lime, linden) pollen +62114 62114 Ulmus (elm) pollen +# 62115-62199 Reserved +62200 62200 Ambrosia (ragweed, burr-ragweed) pollen +62201 62201 Artemisia (sagebrush, wormwood, mugwort) pollen +62202 62202 Brassica (rape, broccoli, Brussels sprouts, cabbage, cauliflower, collards, kale,kohlrabi, mustard, rutabaga) pollen +62203 62203 Plantago (plantain) pollen +62204 62204 Rumex (dock, sorrel) pollen +62205 62205 Urtica (nettle) pollen +#62206-62299 Reserved +62300 62300 Poaceae (grass family) pollen +#6230-65534 Reserved +65535 65535 Missing diff --git a/definitions/grib2/tables/23/4.233.table b/definitions/grib2/tables/23/4.233.table new file mode 100644 index 000000000..6c30833ac --- /dev/null +++ b/definitions/grib2/tables/23/4.233.table @@ -0,0 +1,511 @@ +# Code table 4.233 - Aerosol type +0 0 Ozone O3 +1 1 Water vapour H2O +2 2 Methane CH4 +3 3 Carbon dioxide CO2 +4 4 Carbon monoxide CO +5 5 Nitrogen dioxide NO2 +6 6 Nitrous oxide N2O +7 7 Formaldehyde HCHO +8 8 Sulphur dioxide SO2 +9 9 Ammonia NH3 +10 10 Ammonium NH4 +11 11 Nitrogen monoxide NO +12 12 Atomic oxygen O +13 13 Nitrate radical NO3 +14 14 Hydroperoxyl radical HO2 +15 15 Dinitrogen pentoxide N2O5 +16 16 Nitrous acid HONO +17 17 Nitric acid HNO3 +18 18 Peroxynitric acid HO2NO2 +19 19 Hydrogen peroxide H2O2 +20 20 Molecular hydrogen H2 +21 21 Atomic nitrogen N +22 22 Sulphate SO42- +23 23 Radon Rn +24 24 Elemental mercury Hg(0) +25 25 Divalent mercury Hg2+ +26 26 Atomic chlorine Cl +27 27 Chlorine monoxide ClO +28 28 Dichlorine peroxide Cl2O2 +29 29 Hypochlorous acid HClO +30 30 Chlorine nitrate ClONO2 +31 31 Chlorine dioxide ClO2 +32 32 Atomic bromine Br +33 33 Bromine monoxide BrO +34 34 Bromine chloride BrCl +35 35 Hydrogen bromide HBr +36 36 Hypobromous acid HBrO +37 37 Bromine nitrate BrONO2 +38 38 Oxygen O2 +39 39 Nitryl chloride NO2Cl +40 40 Sulphuric acid H2SO4 +41 41 Hydrogen sulphide H2S +42 42 Sulphur trioxide SO3 +43 43 Bromine Br2 +44 44 Hydrofluoric acid HF +45 45 Sulphur hexafluoride SF6 +46 46 Chlorine Cl2 +# 47-9999 Reserved +10000 10000 Hydroxyl radical OH +10001 10001 Methyl peroxy radical CH3O2 +10002 10002 Methyl hydroperoxide CH3O2H +10004 10004 Methanol CH3OH +10005 10005 Formic acid CH3OOH +10006 10006 Hydrogen cyanide HCN +10007 10007 Aceto nitrile CH3CN +10008 10008 Ethane C2H6 +10009 10009 Ethene (= Ethylene) C2H4 +10010 10010 Ethyne (= Acetylene) C2H2 +10011 10011 Ethanol C2H5OH +10012 10012 Acetic acid C2H5OOH +10013 10013 Peroxyacetyl nitrate CH3C(O)OONO2 +10014 10014 Propane C3H8 +10015 10015 Propene C3H6 +10016 10016 Butanes C4H10 +10017 10017 Isoprene C5H10 +10018 10018 Alpha pinene C10H16 +10019 10019 Beta pinene C10H16 +10020 10020 Limonene C10H16 +10021 10021 Benzene C6H6 +10022 10022 Toluene C7H8 +10023 10023 XyleneC8H10 +10024 10024 Methanesulphonic acid CH3SO3H +10025 10025 Methylglyoxal (2-oxopropanal) CH3C(O)CHO +10026 10026 Peroxyacetyl radical CH3C(O)OO +10027 10027 Methacrylic acid (2-methylprop-2-enoic acid) CH2C(CH3)COOH +10028 10028 Methacrolein (2-methylprop-2-enal) CH2C(CH3)CHO +10029 10029 Acetone (propan-2-one) CH3C(O)CH3 +10030 10030 Ethyl dioxidanyl radical CH3CH2OO +10031 10031 Butadiene (buta-1,3-diene) (CH2CH)2 +10032 10032 Acetaldehyde (ethanal) CH3CHO +10033 10033 Glycolaldehyde (hydroxyethanal) HOCH2CHO +10034 10034 Cresol (methylphenol), all isomers CH3C6H4OH +10035 10035 Peracetic acid (ethaneperoxoic acid) CH3C(O)OOH +10036 10036 2-hydroxyethyl oxidanyl radical HOCH2CH2O +10037 10037 2-hydroxyethyl dioxidanyl radical HOCH2CH2OO +10038 10038 Glyoxal (oxaldehyde) OCHCHO +10039 10039 Isopropyl dioxidanyl radical (CH3)2CHOO +10040 10040 Isopropyl hydroperoxide (2-hydroperoxypropane) (CH3)2CHOOH +10041 10041 Hydroxyacetone (1-hydroxypropan-2-one) CH3C(O)CH2OH +10042 10042 Peroxyacetic acid (ethaneperoxoic acid) CH3C(O)OOH +10043 10043 Methyl vinyl ketone (but-3-en-2-one) CH3C(O)CHCH2 +10044 10044 Phenoxy radical C6H5O +10045 10045 Methyl radical CH3 +10046 10046 Carbonyl sulphide (carbon oxide sulphide) OCS +10047 10047 Dibromomethane CH2Br2 +10048 10048 Methoxy radical CH3O +10049 10049 Tribromomethane CHBr3 +10050 10050 Formyl radical (oxomethyl radical) HOC +10051 10051 Hydroxymethyl dioxidanyl radical HOCH2OO +10052 10052 Ethyl hydroperoxide CH3CH2OOH +10053 10053 3-hydroxypropyl dioxidanyl radical HOCH2CH2CH2OO +10054 10054 3-hydroxypropyl hydroperoxide HOCH2CH2CH2OOH +# 10055-10499 Reserved for other simple organic molecules(e.g. higher aldehydes, alcohols, peroxides, ...) +10500 10500 Dimethyl sulphide CH3SCH3 (DMS) +10501 10501 DMSO (dimethyl sulfoxide) (CH3)2SO +#10502-20000 Reserved +20001 20001 Hydrogen chloride +20002 20002 CFC-11 +20003 20003 CFC-12 +20004 20004 CFC-113 +20005 20005 CFC-113a +20006 20006 CFC-114 +20007 20007 CFC-115 +20008 20008 HCFC-22 +20009 20009 HCFC-141b +20010 20010 HCFC-142b +20011 20011 Halon-1202 +20012 20012 Halon-1211 +20013 20013 Halon-1301 +20014 20014 Halon-2402 +20015 20015 Methyl chloride (HCC-40) +20016 20016 Carbon tetrachloride (HCC-10) +20017 20017 HCC-140a CH3CCl3 +20018 20018 Methyl bromide (HBC-40B1) +20019 20019 Hexachlorocyclohexane (HCH) +20020 20020 Alpha hexachlorocyclohexane +20021 20021 Hexachlorobiphenyl (PCB-153) +20022 20022 HCFC 141a (1,1-dichloro-2-fluoro-ethane) CH3CClF2 +# 20023-29999 Reserved +30000 30000 Radioactive pollutant (tracer, defined by originating centre) +#3000-30009 Reserved +30010 30010 Hydrogen H-3 +30011 30011 Hydrogen organic bounded H-3o +30012 30012 Hydrogen inorganic H-3a +30013 30013 Beryllium 7 Be-7 +30014 30014 Beryllium 10 Be-10 +30015 30015 Carbon 14 C-14 +30016 30016 Carbon 14 CO2 C-14CO2 +30017 30017 Carbon 14 other gases C-14og +30018 30018 Nitrogen 13 N-13 +30019 30019 Nitrogen 16 N-16 +30020 30020 Fluorine 18 F-18 +30021 30021 Sodium 22 Na-22 +30022 30022 Phosphate 32 P-32 +30023 30023 Phosphate 33 P-33 +30024 30024 Sulphur 35 S-35 +30025 30025 Chlorine 36 Cl-36 +30026 30026 Potassium 40 K-40 +30027 30027 Argon 41 Ar-41 +30028 30028 Calcium 41 Ca-41 +30029 30029 Calcium 45 Ca-45 +30030 30030 Titanium 44 Ti-44 +30031 30031 Scandium 46 Sc-46 +30032 30032 Vanadium 48 V-48 +30033 30033 Vanadium 49 V-49 +30034 30034 Chrome 51 Cr-51 +30035 30035 Manganese 52 Mn-52 +30036 30036 Manganese 54 Mn-54 +30037 30037 Iron 55 Fe-55 +30038 30038 Iron 59 Fe-59 +30039 30039 Cobalt 56 Co-56 +30040 30040 Cobalt 57 Co-57 +30041 30041 Cobalt 58 Co-58 +30042 30042 Cobalt 60 Co-60 +30043 30043 Nickel 59 Ni-59 +30044 30044 Nickel 63 Ni-63 +30045 30045 Zinc 65 Zn-65 +30046 30046 Gallium 67 Ga-67 +30047 30047 Gallium 68 Ga-68 +30048 30048 Germanium 68 Ge-68 +30049 30049 Germanium 69 Ge-69 +30050 30050 Arsenic 73 As-73 +30051 30051 Selenium 75 Se-75 +30052 30052 Selenium 79 Se-79 +30053 30053 Rubidium 81 Rb-81 +30054 30054 Rubidium 83 Rb-83 +30055 30055 Rubidium 84 Rb-84 +30056 30056 Rubidium 86 Rb-86 +30057 30057 Rubidium 87 Rb-87 +30058 30058 Rubidium 88 Rb-88 +30059 30059 Krypton 85 Kr-85 +30060 30060 Krypton 85 metastable Kr-85m +30061 30061 Krypton 87 Kr-87 +30062 30062 Krypton 88 Kr-88 +30063 30063 Krypton 89 Kr-89 +30064 30064 Strontium 85 Sr-85 +30065 30065 Strontium 89 Sr-89 +30066 30066 Strontium 89/90 Sr-8990 +30067 30067 Strontium 90 Sr-90 +30068 30068 Strontium 91 Sr-91 +30069 30069 Strontium 92 Sr-92 +30070 30070 Yttrium 87 Y-87 +30071 30071 Yttrium 88 Y-88 +30072 30072 Yttrium 90 Y-90 +30073 30073 Yttrium 91 Y-91 +30074 30074 Yttrium 91 metastable Y-91m +30075 30075 Yttrium 92 Y-92 +30076 30076 Yttrium 93 Y-93 +30077 30077 Zirconium 89 Zr-89 +30078 30078 Zirconium 93 Zr-93 +30079 30079 Zirconium 95 Zr-95 +30080 30080 Zirconium 97 Zr-97 +30081 30081 Niobium 93 metastable Nb-93m +30082 30082 Niobium 94 Nb-94 +30083 30083 Niobium 95 Nb-95 +30084 30084 Niobium 95 metastable Nb-95m +30085 30085 Niobium 97 Nb-97 +30086 30086 Niobium 97 metastable Nb-97m +30087 30087 Molybdenum 93 Mo-93 +30088 30088 Molybdenum 99 Mo-99 +30089 30089 Technetium 95 metastable Tc-95m +30090 30090 Technetium 96 Tc-96 +30091 30091 Technetium 99 Tc-99 +30092 30092 Technetium 99 metastable Tc-99m +30093 30093 Rhodium 99 Rh-99 +30094 30094 Rhodium 101 Rh-101 +30095 30095 Rhodium 102 metastable Rh-102m +30096 30096 Rhodium 103 metastable Rh-103m +30097 30097 Rhodium 105 Rh-105 +30098 30098 Rhodium 106 Rh-106 +30099 30099 Palladium 100 Pd-100 +30100 30100 Palladium 103 Pd-103 +30101 30101 Palladium 107 Pd-107 +30102 30102 Ruthenium 103 Ru-103 +30103 30103 Ruthenium 105 Ru-105 +30104 30104 Ruthenium 106 Ru-106 +30105 30105 Silver 108 metastable Ag-108m +30106 30106 Silver 110 metastable Ag-110m +30107 30107 Cadmium 109 Cd-109 +30108 30108 Cadmium 113 metastable Cd-113m +30109 30109 Cadmium 115 metastable Cd-115m +30110 30110 Indium 114 metastable In-114m +30111 30111 Tin 113 Sn-113 +30112 30112 Tin 119 metastable Sn-119m +30113 30113 Tin 121 metastable Sn-121m +30114 30114 Tin 122 Sn-122 +30115 30115 Tin 123 Sn-123 +30116 30116 Tin 126 Sn-126 +30117 30117 Antimony 124 Sb-124 +30118 30118 Antimony 125 Sb-125 +30119 30119 Antimony 126 Sb-126 +30120 30120 Antimony 127 Sb-127 +30121 30121 Antimony 129 Sb-129 +30122 30122 Tellurium 123 metastable Te-123m +30123 30123 Tellurium 125 metastable Te-125m +30124 30124 Tellurium 127 Te-127 +30125 30125 Tellurium 127 metastable Te-127m +30126 30126 Tellurium 129 Te-129 +30127 30127 Tellurium 129 metastable Te-129m +30128 30128 Tellurium 131 metastable Te-131m +30129 30129 Tellurium 132 Te-132 +30130 30130 Iodine 123 I-123 +30131 30131 Iodine 124 I-124 +30132 30132 Iodine 125 I-125 +30133 30133 Iodine 126 I-126 +30134 30134 Iodine 129 I-129 +30135 30135 Iodine 129 elementary gaseous I-129g +30136 30136 Iodine 129 organic bounded I-129o +30137 30137 Iodine 131 I-131 +30138 30138 Iodine 131 elementary gaseous I-131g +30139 30139 Iodine 131 organic bounded I-131o +30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go +30141 30141 Iodine 131 aerosol I-131a +30142 30142 Iodine 132 I-132 +30143 30143 Iodine 132 elementary gaseous I-132g +30144 30144 Iodine 132 organic bounded I-132o +30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go +30146 30146 Iodine 132 aerosol I-132a +30147 30147 Iodine 133 I-133 +30148 30148 Iodine 133 elementary gaseous I-133g +30149 30149 Iodine 133 organic bounded I-133o +30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go +30151 30151 Iodine 133 aerosol I-133a +30152 30152 Iodine 134 I-134 +30153 30153 Iodine 134 elementary gaseous I-134g +30154 30154 Iodine 134 organic bounded I-134o +30155 30155 Iodine 135 I-135 +30156 30156 Iodine 135 elementary gaseous I-135g +30157 30157 Iodine 135 organic bounded I-135o +30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go +30159 30159 Iodine 135 aerosol I-135a +30160 30160 Xenon 131 metastable Xe-131m +30161 30161 Xenon 133 Xe-133 +30162 30162 Xenon 133 metastable Xe-133m +30163 30163 Xenon 135 Xe-135 +30164 30164 Xenon 135 metastable Xe-135m +30165 30165 Xenon 137 Xe-137 +30166 30166 Xenon 138 Xe-138 +30167 30167 Xenon sum of all Xenon isotopes Xe-sum +30168 30168 Caesium 131 Cs-131 +30169 30169 Caesium 134 Cs-134 +30170 30170 Caesium 135 Cs-135 +30171 30171 Caesium 136 Cs-136 +30172 30172 Caesium 137 Cs-137 +30173 30173 Barium 133 Ba-133 +30174 30174 Barium 137 metastable Ba-137m +30175 30175 Barium 140 Ba-140 +30176 30176 Cerium 139 Ce-139 +30177 30177 Cerium 141 Ce-141 +30178 30178 Cerium 143 Ce-143 +30179 30179 Cerium 144 Ce-144 +30180 30180 Lanthanum 140 La-140 +30181 30181 Lanthanum 141 La-141 +30182 30182 Praseodymium 143 Pr-143 +30183 30183 Praseodymium 144 Pr-144 +30184 30184 Praseodymium 144 metastable Pr-144m +30185 30185 Samarium 145 Sm-145 +30186 30186 Samarium 147 Sm-147 +30187 30187 Samarium 151 Sm-151 +30188 30188 Neodymium 147 Nd-147 +30189 30189 Promethium 146 Pm-146 +30190 30190 Promethium 147 Pm-147 +30191 30191 Promethium 151 Pm-151 +30192 30192 Europium 152 Eu-152 +30193 30193 Europium 154 Eu-154 +30194 30194 Europium 155 Eu-155 +30195 30195 Gadolinium 153 Gd-153 +30196 30196 Terbium 160 Tb-160 +30197 30197 Holmium 166 metastable Ho-166m +30198 30198 Thulium 170 Tm-170 +30199 30199 Ytterbium 169 Yb-169 +30200 30200 Hafnium 175 Hf-175 +30201 30201 Hafnium 181 Hf-181 +30202 30202 Tantalum 179 Ta-179 +30203 30203 Tantalum 182 Ta-182 +30204 30204 Rhenium 184 Re-184 +30205 30205 Iridium 192 Ir-192 +30206 30206 Mercury 203 Hg-203 +30207 30207 Thallium 204 Tl-204 +30208 30208 Thallium 207 Tl-207 +30209 30209 Thallium 208 Tl-208 +30210 30210 Thallium 209 Tl-209 +30211 30211 Bismuth 205 Bi-205 +30212 30212 Bismuth 207 Bi-207 +30213 30213 Bismuth 210 Bi-210 +30214 30214 Bismuth 211 Bi-211 +30215 30215 Bismuth 212 Bi-212 +30216 30216 Bismuth 213 Bi-213 +30217 30217 Bismuth 214 Bi-214 +30218 30218 Polonium 208 Po-208 +30219 30219 Polonium 210 Po-210 +30220 30220 Polonium 212 Po-212 +30221 30221 Polonium 213 Po-213 +30222 30222 Polonium 214 Po-214 +30223 30223 Polonium 215 Po-215 +30224 30224 Polonium 216 Po-216 +30225 30225 Polonium 218 Po-218 +30226 30226 Lead 209 Pb-209 +30227 30227 Lead 210 Pb-210 +30228 30228 Lead 211 Pb-211 +30229 30229 Lead 212 Pb-212 +30230 30230 Lead 214 Pb-214 +30231 30231 Astatine 217 At-217 +30232 30232 Radon 219 Rn-219 +30233 30233 Radon 220 Rn-220 +30234 30234 Radon 222 Rn-222 +30235 30235 Francium 221 Fr-221 +30236 30236 Francium 223 Fr-223 +30237 30237 Radium 223 Ra-223 +30238 30238 Radium 224 Ra-224 +30239 30239 Radium 225 Ra-225 +30240 30240 Radium 226 Ra-226 +30241 30241 Radium 228 Ra-228 +30242 30242 Actinium 225 Ac-225 +30243 30243 Actinium 227 Ac-227 +30244 30244 Actinium 228 Ac-228 +30245 30245 Thorium 227 Th-227 +30246 30246 Thorium 228 Th-228 +30247 30247 Thorium 229 Th-229 +30248 30248 Thorium 230 Th-230 +30249 30249 Thorium 231 Th-231 +30250 30250 Thorium 232 Th-232 +30251 30251 Thorium 234 Th-234 +30252 30252 Protactinium 231 Pa-231 +30253 30253 Protactinium 233 Pa-233 +30254 30254 Protactinium 234 metastable Pa-234m +30255 30255 Uranium 232 U-232 +30256 30256 Uranium 233 U-233 +30257 30257 Uranium 234 U-234 +30258 30258 Uranium 235 U-235 +30259 30259 Uranium 236 U-236 +30260 30260 Uranium 237 U-237 +30261 30261 Uranium 238 U-238 +30262 30262 Plutonium 236 Pu-236 +30263 30263 Plutonium 238 Pu-238 +30264 30264 Plutonium 239 Pu-239 +30265 30265 Plutonium 240 Pu-240 +30266 30266 Plutonium 241 Pu-241 +30267 30267 Plutonium 242 Pu-242 +30268 30268 Plutonium 244 Pu-244 +30269 30269 Neptunium 237 Np-237 +30270 30270 Neptunium 238 Np-238 +30271 30271 Neptunium 239 Np-239 +30272 30272 Americium 241 Am-241 +30273 30273 Americium 242 Am-242 +30274 30274 Americium 242 metastable Am-242m +30275 30275 Americium 243 Am-243 +30276 30276 Curium 242 Cm-242 +30277 30277 Curium 243 Cm-243 +30278 30278 Curium 244 Cm-244 +30279 30279 Curium 245 Cm-245 +30280 30280 Curium 246 Cm-246 +30281 30281 Curium 247 Cm-247 +30282 30282 Curium 248 Cm-248 +30283 30283 Curium 243/244 Cm-243244 +30284 30284 Plutonium 238/Americium 241 Pu-238Am-241 +30285 30285 Plutonium 239/240 Pu-239240 +30286 30286 Berkelium 249 Bk-249 +30287 30287 Californium 249 Cf-249 +30288 30288 Californium 250 Cf-250 +30289 30289 Californium 252 Cf-252 +30290 30290 Sum aerosol particulates SumAer +30291 30291 Sum Iodine SumIod +30292 30292 Sum noble gas SumNG +30293 30293 Activation gas ActGas +30294 30294 Cs-137 Equivalent EquCs137 +30295 30295 Carbon-13 C-13 +30296 30296 Lead Pb +#30297-39999 Reserved +40000 40000 Singlet sigma oxygen (dioxygen (sigma singlet)) O2 +40001 40001 Singlet delta oxygen (dioxygen (delta singlet)) O2 +40002 40002 Singlet excited oxygen atom O(D) +40003 40003 Triplet ground state oxygen atom O(P) +# 40004-59999 Reserved +60000 60000 HOx radical (OH+HO2) +60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2) RO2 +60002 60002 Passive Ozone +60003 60003 NOx expressed as nitrogen NOx +60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy +60005 60005 Total inorganic chlorine Clx +60006 60006 Total inorganic bromine Brx +60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx +60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx +60009 60009 Lumped alkanes +60010 60010 Lumped alkenes +60011 60011 Lumped aromatic compounds +60012 60012 Lumped terpenes +60013 60013 Non-methane volatile organic compounds expressed as carbon NMVOC +60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon aNMVOC +60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon bNMVOC +60016 60016 Lumped oxygenated hydrocarbons OVOC +60017 60017 NOx expressed as nitrogen dioxide (NO2) NOx +60018 60018 Organic aldehydes RCHO +60019 60019 Organic peroxides ROOH +60020 60020 Organic nitrates RNO3 +60021 60021 Ethers ROR +60022 60022 Amines NRRR +60023 60023 Ketones RC(O)R +60024 60024 Dicarbonyls unsaturated RC(O)CH2C(O)R +60025 60025 Hydroxy dicarbonyls unsaturated RC(O)CHOHC(O)R +60026 60026 Hydroxy ketones RC(OH)C(O)R +60027 60027 Oxides Ox +# 60028-61999 Reserved +62000 62000 Total aerosol +62001 62001 Dust dry +62002 62002 Water in ambient +62003 62003 Ammonium dry +62004 62004 Nitrate dry +62005 62005 Nitric acid trihydrate +62006 62006 Sulphate dry +62007 62007 Mercury dry +62008 62008 Sea salt dry +62009 62009 Black carbon dry +62010 62010 Particulate organic matter dry +62011 62011 Primary particulate organic matter dry +62012 62012 Secondary particulate organic matter dry +62013 62013 Black carbon hydrophilic dry +62014 62014 Black carbon hydrophobic dry +62015 62015 Particulate organic matter hydrophilic dry +62016 62016 Particulate organic matter hydrophobic dry +62017 62017 Nitrate hydrophilic dry +62018 62018 Nitrate hydrophobic dry +#62019 Reserved +62020 62020 Smoke - high absorption +62021 62021 Smoke - low absorption +62022 62022 Aerosol - high absorption +62023 62023 Aerosol - low absorption +#62024 Reserved +62025 62025 Volcanic ash +62026 62026 Particulate matter (PM) +#62027 Reserved +62028 62028 Total aerosol hydrophilic +62029 62029 Total aerosol hydrophobic +#62030-62099 Reserved +62100 62100 Alnus (alder) pollen +62101 62101 Betula (birch) pollen +62102 62102 Castanea (chestnut) pollen +62103 62103 Carpinus (hornbeam) pollen +62104 62104 Corylus (hazel) pollen +62105 62105 Fagus (beech) pollen +62106 62106 Fraxinus (ash) pollen +62107 62107 Pinus (pine) pollen +62108 62108 Platanus (plane) pollen +62109 62109 Populus (cottonwood, poplar) pollen +62110 62110 Quercus (oak) pollen +62111 62111 Salix (willow) pollen +62112 62112 Taxus (yew) pollen +62113 62113 Tilia (lime, linden) pollen +62114 62114 Ulmus (elm) pollen +# 62115-62199 Reserved +62200 62200 Ambrosia (ragweed, burr-ragweed) pollen +62201 62201 Artemisia (sagebrush, wormwood, mugwort) pollen +62202 62202 Brassica (rape, broccoli, Brussels sprouts, cabbage, cauliflower, collards, kale,kohlrabi, mustard, rutabaga) pollen +62203 62203 Plantago (plantain) pollen +62204 62204 Rumex (dock, sorrel) pollen +62205 62205 Urtica (nettle) pollen +#62206-62299 Reserved +62300 62300 Poaceae (grass family) pollen +#6230-65534 Reserved +65535 65535 Missing diff --git a/definitions/grib2/tables/23/4.234.table b/definitions/grib2/tables/23/4.234.table new file mode 100644 index 000000000..816541ce9 --- /dev/null +++ b/definitions/grib2/tables/23/4.234.table @@ -0,0 +1,21 @@ +# Code table 4.234 - Canopy cover fraction (to be used as partitioned parameter in product definition template 4.53 or 4.54) +1 1 Crops, mixed farming +2 2 Short grass +3 3 Evergreen needleleaf trees +4 4 Deciduous needleleaf trees +5 5 Deciduous broadleaf trees +6 6 Evergreen broadleaf trees +7 7 Tall grass +8 8 Desert +9 9 Tundra +10 10 Irrigated crops +11 11 Semidesert +12 12 Ice caps and glaciers +13 13 Bogs and marshes +14 14 Inland water +15 15 Ocean +16 16 Evergreen shrubs +17 17 Deciduous shrubs +18 18 Mixed forest +19 19 Interrupted forest +20 20 Water and land mixtures diff --git a/definitions/grib2/tables/23/4.236.table b/definitions/grib2/tables/23/4.236.table new file mode 100644 index 000000000..fbe093ce9 --- /dev/null +++ b/definitions/grib2/tables/23/4.236.table @@ -0,0 +1,8 @@ +# Code table 4.236 - Soil texture fraction (to be used as partitioned parameter in product definition template 4.53 or 4.54) +1 1 Coarse +2 2 Medium +3 3 Medium-fine +4 4 Fine +5 5 Very-fine +6 6 Organic +7 7 Tropical-organic diff --git a/definitions/grib2/tables/23/4.240.table b/definitions/grib2/tables/23/4.240.table new file mode 100644 index 000000000..bf12cbf5b --- /dev/null +++ b/definitions/grib2/tables/23/4.240.table @@ -0,0 +1,13 @@ +# Code table 4.240 - Type of distribution function +0 0 No specific distribution function given +1 1 Delta functions with spatially variable concentration and fixed diameters Dl (p1) in metre +2 2 Delta functions with spatially variable concentration and fixed masses Ml (p1) in kg +3 3 Gaussian (normal) distribution with spatially variable concentration and fixed mean diameter Dl(p1) and variance(p2) +4 4 Gaussian (normal) distribution with spatially variable concentration, mean diameter and variance +5 5 Log-normal distribution with spatially variable number density, mean diameter and variance +6 6 Log-normal distribution with spatially variable number density, mean diameter and fixed variance(p1) +7 7 Log-normal distribution with spatially variable number density and mass density and fixed variance(p1) and fixed particle density(p2) +8 8 No distribution function. The encoded variable is derived from variables characterized by type of distribution function of type No. 7 (see above) with fixed variance(p1) and fixed particle density(p2) +# 9-49151 Reserved +# 49152-65534 Reserved for local use +65535 65535 Missing value diff --git a/definitions/grib2/tables/23/4.241.table b/definitions/grib2/tables/23/4.241.table new file mode 100644 index 000000000..a037b4ba5 --- /dev/null +++ b/definitions/grib2/tables/23/4.241.table @@ -0,0 +1,9 @@ +# Code table 4.241 - Coverage attributes +0 0 Undefined +1 1 Unmodified +2 2 Snow covered +3 3 Flooded +4 4 Ice covered +# 5-191 Reserved +# 192-254 Reserved for local use +255 255 Missing value diff --git a/definitions/grib2/tables/23/4.242.table b/definitions/grib2/tables/23/4.242.table new file mode 100644 index 000000000..083f88c29 --- /dev/null +++ b/definitions/grib2/tables/23/4.242.table @@ -0,0 +1,7 @@ +# Code table 4.242 - Tile classification +0 0 Reserved +1 1 Land use classes according to ESA-GlobCover GCV2009 +2 2 Land use classes according to European Commission-Global Land Cover Project GLC2000 +# 3-191 Reserved +# 192-254 Reserved for local use +255 255 Missing value diff --git a/definitions/grib2/tables/23/4.243.table b/definitions/grib2/tables/23/4.243.table new file mode 100644 index 000000000..b39053311 --- /dev/null +++ b/definitions/grib2/tables/23/4.243.table @@ -0,0 +1,43 @@ +# Code table 4.243 - Tile class +0 0 Reserved +1 1 Evergreen broadleaved forest +2 2 Deciduous broadleaved closed forest +3 3 Deciduous broadleaved open forest +4 4 Evergreen needle-leaf forest +5 5 Deciduous needle-leaf forest +6 6 Mixed leaf trees +7 7 Freshwater flooded trees +8 8 Saline water flooded trees +9 9 Mosaic tree/natural vegetation +10 10 Burnt tree cover +11 11 Evergreen shrubs closed-open +12 12 Deciduous shrubs closed-open +13 13 Herbaceous vegetation closed-open +14 14 Sparse herbaceous or grass +15 15 Flooded shrubs or herbaceous +16 16 Cultivated and managed areas +17 17 Mosaic crop/tree/natural vegetation +18 18 Mosaic crop/shrub/grass +19 19 Bare areas +20 20 Water +21 21 Snow and ice +22 22 Artificial surface +23 23 Ocean +24 24 Irrigated croplands +25 25 Rainfed croplands +26 26 Mosaic cropland (50-70%) - vegetation (20-50%) +27 27 Mosaic vegetation (50-70%) - cropland (20-50%) +28 28 Closed broadleaved evergreen forest +29 29 Closed needle-leaved evergreen forest +30 30 Open needle-leaved deciduous forest +31 31 Mixed broadleaved and needle-leaved forest +32 32 Mosaic shrubland (50-70%) - grassland (20-50%) +33 33 Mosaic grassland (50-70%) - shrubland (20-50%) +34 34 Closed to open shrubland +35 35 Sparse vegetation +36 36 Closed to open forest regularly flooded +37 37 Closed forest or shrubland permanently flooded +38 38 Closed to open grassland regularly flooded +39 39 Undefined +# 40-32767 Reserved +# 32768- Reserved for local use diff --git a/definitions/grib2/tables/23/4.244.table b/definitions/grib2/tables/23/4.244.table new file mode 100644 index 000000000..40534ee09 --- /dev/null +++ b/definitions/grib2/tables/23/4.244.table @@ -0,0 +1,7 @@ +# Code table 4.244 - Quality indicator +0 0 No quality information available +1 1 Failed +2 2 Passed +# 3-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.3.table b/definitions/grib2/tables/23/4.3.table new file mode 100644 index 000000000..8ba9e08ab --- /dev/null +++ b/definitions/grib2/tables/23/4.3.table @@ -0,0 +1,23 @@ +# Code table 4.3 - Type of generating process +0 0 Analysis +1 1 Initialization +2 2 Forecast +3 3 Bias corrected forecast +4 4 Ensemble forecast +5 5 Probability forecast +6 6 Forecast error +7 7 Analysis error +8 8 Observation +9 9 Climatological +10 10 Probability-weighted forecast +11 11 Bias-corrected ensemble forecast +12 12 Post-processed analysis +13 13 Post-processed forecast +14 14 Nowcast +15 15 Hindcast +16 16 Physical retrieval +17 17 Regression analysis +18 18 Difference between two forecasts +# 19-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.4.table b/definitions/grib2/tables/23/4.4.table new file mode 100644 index 000000000..7087ebddb --- /dev/null +++ b/definitions/grib2/tables/23/4.4.table @@ -0,0 +1,17 @@ +# Code table 4.4 - Indicator of unit of time range +0 m Minute +1 h Hour +2 D Day +3 M Month +4 Y Year +5 10Y Decade (10 years) +6 30Y Normal (30 years) +7 C Century (100 years) +# 8-9 Reserved +10 3h 3 hours +11 6h 6 hours +12 12h 12 hours +13 s Second +# 14-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.5.table b/definitions/grib2/tables/23/4.5.table new file mode 100644 index 000000000..9bd1b8993 --- /dev/null +++ b/definitions/grib2/tables/23/4.5.table @@ -0,0 +1,73 @@ +# Code table 4.5 - Fixed surface types and units +0 0 Reserved +1 sfc Ground or water surface (-) +2 2 Cloud base level (-) +3 3 Level of cloud tops (-) +4 4 Level of 0 degree C isotherm (-) +5 5 Level of adiabatic condensation lifted from the surface (-) +6 6 Maximum wind level (-) +7 7 Tropopause (-) +8 sfc Nominal top of the atmosphere (-) +9 9 Sea bottom (-) +10 10 Entire atmosphere (-) +11 11 Cumulonimbus (CB) base (m) +12 12 Cumulonimbus (CB) top (m) +13 13 Lowest level where vertically integrated cloud cover exceeds the specified percentage (cloud base for a given percentage cloud cover) (%) +14 14 Level of free convection (LFC) +15 15 Convective condensation level (CCL) +16 16 Level of neutral buoyancy or equilibrium level (LNB) +# 17-19 Reserved +20 20 Isothermal level (K) +21 21 Lowest level where mass density exceeds the specified value (base for a given threshold of mass density) (kg m-3) +22 22 Highest level where mass density exceeds the specified value (top for a given threshold of mass density) (kg m-3) +23 23 Lowest level where air concentration exceeds the specified value (base for a given threshold of air concentration) (Bq m-3) +24 24 Highest level where air concentration exceeds the specified value (top for a given threshold of air concentration) (Bq m-3) +25 25 Highest level where radar reflectivity exceeds the specified value (echo top for a given threshold of reflectivity) (dBZ) +# 26-99 Reserved +100 pl Isobaric surface (Pa) +101 sfc Mean sea level +102 102 Specific altitude above mean sea level (m) +103 sfc Specified height level above ground (m) +104 104 Sigma level (sigma value) +105 ml Hybrid level (-) +106 sfc Depth below land surface (m) +107 pt Isentropic (theta) level (K) +108 108 Level at specified pressure difference from ground to level (Pa) +109 pv Potential vorticity surface (K m2 kg-1 s-1) +110 110 Reserved +111 111 Eta level (-) +112 112 Reserved +113 113 Logarithmic hybrid level +114 114 Snow level (Numeric) +115 115 Sigma height level +# 116 Reserved +117 117 Mixed layer depth (m) +118 hhl Hybrid height level (-) +119 hpl Hybrid pressure level (-) +# 120-149 Reserved +150 150 Generalized vertical height coordinate +151 sol Soil level (Numeric) +# 152-159 Reserved +160 160 Depth below sea level (m) +161 161 Depth below water surface (m) +162 162 Lake or river bottom (-) +163 163 Bottom of sediment layer (-) +164 164 Bottom of thermally active sediment layer (-) +165 165 Bottom of sediment layer penetrated by thermal wave (-) +166 166 Mixing layer (-) +167 167 Bottom of root zone (-) +# 168-173 Reserved +174 174 Top surface of ice on sea, lake or river +175 175 Top surface of ice, under snow cover, on sea, lake or river +176 176 Bottom surface (underside) ice on sea, lake or river +177 sfc Deep soil (of indefinite depth) +# 178 Reserved +179 179 Top surface of glacier ice and inland ice +180 180 Deep inland or glacier ice (of indefinite depth) +181 181 Grid tile land fraction as a model surface +182 182 Grid tile water fraction as a model surface +183 183 Grid tile ice fraction on sea, lake or river as a model surface +184 184 Grid tile glacier ice and inland ice fraction as a model surface +# 185-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.6.table b/definitions/grib2/tables/23/4.6.table new file mode 100644 index 000000000..b2dfeb498 --- /dev/null +++ b/definitions/grib2/tables/23/4.6.table @@ -0,0 +1,9 @@ +# Code table 4.6 - Type of ensemble forecast +0 0 Unperturbed high-resolution control forecast +1 1 Unperturbed low-resolution control forecast +2 2 Negatively perturbed forecast +3 3 Positively perturbed forecast +4 4 Multi-model forecast +# 5-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.7.table b/definitions/grib2/tables/23/4.7.table new file mode 100644 index 000000000..e0de0e1b2 --- /dev/null +++ b/definitions/grib2/tables/23/4.7.table @@ -0,0 +1,14 @@ +# Code table 4.7 - Derived forecast +0 0 Unweighted mean of all members +1 1 Weighted mean of all members +2 2 Standard deviation with respect to cluster mean +3 3 Standard deviation with respect to cluster mean, normalized +4 4 Spread of all members +5 5 Large anomaly index of all members +6 6 Unweighted mean of the cluster members +7 7 Interquartile range (range between the 25th and 75th quantile) +8 8 Minimum of all ensemble members +9 9 Maximum of all ensemble members +# 10-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.8.table b/definitions/grib2/tables/23/4.8.table new file mode 100644 index 000000000..ad883039c --- /dev/null +++ b/definitions/grib2/tables/23/4.8.table @@ -0,0 +1,6 @@ +# Code table 4.8 - Clustering method +0 0 Anomaly correlation +1 1 Root mean square +# 2-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.9.table b/definitions/grib2/tables/23/4.9.table new file mode 100644 index 000000000..9f74599c3 --- /dev/null +++ b/definitions/grib2/tables/23/4.9.table @@ -0,0 +1,13 @@ +# Code table 4.9 - Probability type +0 0 Probability of event below lower limit +1 1 Probability of event above upper limit +2 2 Probability of event between lower and upper limits (the range includes the lower limit but not the upper limit) +3 3 Probability of event above lower limit +4 4 Probability of event below upper limit +5 5 Probability of event equal to lower limit +6 6 Probability of event in above normal category +7 7 Probability of event in near normal category +8 8 Probability of event in below normal category +# 9-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/4.91.table b/definitions/grib2/tables/23/4.91.table new file mode 100644 index 000000000..44cf25f44 --- /dev/null +++ b/definitions/grib2/tables/23/4.91.table @@ -0,0 +1,16 @@ +# Code table 4.91 - Type of Interval +0 0 Smaller than first limit +1 1 Greater than second limit +2 2 Between first and second limit. The range includes the first limit but not the second limit +3 3 Greater than first limit +4 4 Smaller than second limit +5 5 Smaller or equal first limit +6 6 Greater or equal second limit +7 7 Between first and second. The range includes the first limit and the second limit +8 8 Greater or equal first limit +9 9 Smaller or equal second limit +10 10 Between first and second limit. The range includes the second limit but not the first limit +11 11 Equal to first limit +# 12-191 Reserved +# 192-254 Reserved for local use +255 missing Missing diff --git a/definitions/grib2/tables/23/5.0.table b/definitions/grib2/tables/23/5.0.table new file mode 100644 index 000000000..27a9fbc97 --- /dev/null +++ b/definitions/grib2/tables/23/5.0.table @@ -0,0 +1,27 @@ +# Code table 5.0 - Data representation template number +0 0 Grid point data - simple packing +1 1 Matrix value at grid point - simple packing +2 2 Grid point data - complex packing +3 3 Grid point data - complex packing and spatial differencing +4 4 Grid point data - IEEE floating point data +# 5-39 Reserved +40 40 Grid point data - JPEG 2000 code stream format +41 41 Grid point data - Portable Network Graphics (PNG) +42 42 Grid point and spectral data - CCSDS recommended lossless compression +# 43-49 Reserved +50 50 Spectral data - simple packing +51 51 Spherical harmonics data - complex packing +# 52 Reserved +53 53 Spectral data for limited area models - complex packing +# 54-60 Reserved +61 61 Grid point data - simple packing with logarithm pre-processing +# 62-199 Reserved +200 200 Run length packing with level values +# 201-49151 Reserved +# 49152-65534 Reserved for local use +40000 40000 JPEG2000 Packing +40010 40010 PNG pacling +50000 50000 Sperical harmonics ieee packing +50001 50001 Second order packing +50002 50002 Second order packing +65535 65535 Missing diff --git a/definitions/grib2/tables/23/5.1.table b/definitions/grib2/tables/23/5.1.table new file mode 100644 index 000000000..854330c74 --- /dev/null +++ b/definitions/grib2/tables/23/5.1.table @@ -0,0 +1,6 @@ +# Code table 5.1 - Type of original field values +0 0 Floating point +1 1 Integer +# 2-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/5.2.table b/definitions/grib2/tables/23/5.2.table new file mode 100644 index 000000000..40586a131 --- /dev/null +++ b/definitions/grib2/tables/23/5.2.table @@ -0,0 +1,8 @@ +# Code table 5.2 - Matrix coordinate value function definition +0 0 Explicit coordinate values set +1 1 Linear coordinates f(1) = C1, f(n) = f(n-1) + C2 +# 2-10 Reserved +11 11 Geometric coordinates f(1)=C1, f(n)=C2*f(n-1) +# 12-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/5.25.table b/definitions/grib2/tables/23/5.25.table new file mode 100644 index 000000000..1b45f28a3 --- /dev/null +++ b/definitions/grib2/tables/23/5.25.table @@ -0,0 +1,9 @@ +# Code table 5.25 - type of bi-Fourier subtruncation +# 0-76 Reserved +77 77 Rectangular +# 78-87 Reserved +88 88 Elliptic +# 89-98 Reserved +99 99 Diamond +# 100-254 Reserved +255 255 Missing diff --git a/definitions/grib2/tables/23/5.26.table b/definitions/grib2/tables/23/5.26.table new file mode 100644 index 000000000..9e91ebf2e --- /dev/null +++ b/definitions/grib2/tables/23/5.26.table @@ -0,0 +1,5 @@ +# Code table 5.26 - packing mode for axes +0 0 Spectral coefficients for axes are packed +1 1 Spectral coefficients for axes included in the unpacked subset +# 2-254 Reserved +255 255 Missing diff --git a/definitions/grib2/tables/23/5.3.table b/definitions/grib2/tables/23/5.3.table new file mode 100644 index 000000000..c3b7b30fe --- /dev/null +++ b/definitions/grib2/tables/23/5.3.table @@ -0,0 +1,7 @@ +# Code table 5.3 - Matrix coordinate parameter +1 1 Direction degrees true +2 2 Frequency (s-1) +3 3 Radial number (2pi/lambda) (m-1) +# 4-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/5.4.table b/definitions/grib2/tables/23/5.4.table new file mode 100644 index 000000000..8121c1819 --- /dev/null +++ b/definitions/grib2/tables/23/5.4.table @@ -0,0 +1,6 @@ +# Code table 5.4 - Group splitting method +0 0 Row by row splitting +1 1 General group splitting +# 2-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/5.40.table b/definitions/grib2/tables/23/5.40.table new file mode 100644 index 000000000..b9bad2c39 --- /dev/null +++ b/definitions/grib2/tables/23/5.40.table @@ -0,0 +1,5 @@ +# Code table 5.40 - Type of compression +0 0 Lossless +1 1 Lossy +# 2-254 Reserved +255 255 Missing diff --git a/definitions/grib2/tables/23/5.40000.table b/definitions/grib2/tables/23/5.40000.table new file mode 100644 index 000000000..1eef7c763 --- /dev/null +++ b/definitions/grib2/tables/23/5.40000.table @@ -0,0 +1,5 @@ +# Code Table 5.40: Type of Compression +0 0 Lossless +1 1 Lossy +#2-254 Reserved +255 255 Missing diff --git a/definitions/grib2/tables/23/5.5.table b/definitions/grib2/tables/23/5.5.table new file mode 100644 index 000000000..3ef3eb070 --- /dev/null +++ b/definitions/grib2/tables/23/5.5.table @@ -0,0 +1,7 @@ +# Code table 5.5 - Missing value management for complex packing +0 0 No explicit missing values included within data values +1 1 Primary missing values included within data values +2 2 Primary and secondary missing values included within data values +# 3-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/5.50002.table b/definitions/grib2/tables/23/5.50002.table new file mode 100644 index 000000000..10c243cb0 --- /dev/null +++ b/definitions/grib2/tables/23/5.50002.table @@ -0,0 +1,19 @@ +# second order packing modes table + +1 0 no boustrophedonic +1 1 boustrophedonic +2 0 Reserved +2 1 Reserved +3 0 Reserved +3 1 Reserved +4 0 Reserved +4 1 Reserved +5 0 Reserved +5 1 Reserved +6 0 Reserved +6 1 Reserved +7 0 Reserved +7 1 Reserved +8 0 Reserved +8 1 Reserved + diff --git a/definitions/grib2/tables/23/5.6.table b/definitions/grib2/tables/23/5.6.table new file mode 100644 index 000000000..6d5177877 --- /dev/null +++ b/definitions/grib2/tables/23/5.6.table @@ -0,0 +1,7 @@ +# Code table 5.6 - Order of spatial differencing +0 0 Reserved +1 1 First-order spatial differencing +2 2 Second-order spatial differencing +# 3-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/23/5.7.table b/definitions/grib2/tables/23/5.7.table new file mode 100644 index 000000000..5ab780056 --- /dev/null +++ b/definitions/grib2/tables/23/5.7.table @@ -0,0 +1,7 @@ +# Code table 5.7 - Precision of floating-point numbers +0 0 Reserved +1 1 IEEE 32-bit (I=4 in section 7) +2 2 IEEE 64-bit (I=8 in section 7) +3 3 IEEE 128-bit (I=16 in section 7) +# 4-254 Reserved +255 255 Missing diff --git a/definitions/grib2/tables/23/6.0.table b/definitions/grib2/tables/23/6.0.table new file mode 100644 index 000000000..2a29aa285 --- /dev/null +++ b/definitions/grib2/tables/23/6.0.table @@ -0,0 +1,6 @@ +# Code table 6.0 - Bit map indicator +0 0 A bit map applies to this product and is specified in this Section +1 1 A bit map pre-determined by the originating/generating centre applies to this product and is not specified in this Section +# 1-253 A bit map predetermined by the originating/generating centre applies to this product and is not specified in this Section +254 254 A bit map defined previously in the same GRIB message applies to this product +255 255 A bit map does not apply to this product diff --git a/definitions/grib2/tables/23/stepType.table b/definitions/grib2/tables/23/stepType.table new file mode 100644 index 000000000..d88e44123 --- /dev/null +++ b/definitions/grib2/tables/23/stepType.table @@ -0,0 +1,4 @@ +# CODE TABLE Step Type + +0 instant Instant +1 interval Interval From 5e0f600e0b71547dc57870b6b674abad5a68b46d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 10 May 2019 13:05:35 +0100 Subject: [PATCH 210/414] ECC-923: Mismatched count not reported as difference by grib_compare --- tests/CMakeLists.txt | 1 + tests/grib_ecc-923.sh | 45 +++++++++++++++++++++++++++++++++++++++++++ tools/grib_compare.c | 11 ++++++----- 3 files changed, 52 insertions(+), 5 deletions(-) create mode 100755 tests/grib_ecc-923.sh diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 8cd554a75..af85631a6 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -99,6 +99,7 @@ list( APPEND tests_data_reqd grib_ecc-756 grib_ecc-873 grib_ecc-600 + grib_ecc-923 bufr_ecc-556 gts_get gts_ls diff --git a/tests/grib_ecc-923.sh b/tests/grib_ecc-923.sh new file mode 100755 index 000000000..036b2f636 --- /dev/null +++ b/tests/grib_ecc-923.sh @@ -0,0 +1,45 @@ +#!/bin/sh +# Copyright 2005-2019 ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.sh +set -u +# --------------------------------------------------------- +# This is the test for the JIRA issue ECC-923. +# Mismatched count not reported as difference by grib_compare +# --------------------------------------------------------- +label="grib_ecc-923-test" +tempOut=temp.${label}.out +tempGrib1=temp.1.${label}.grib +tempGrib2=temp.2.${label}.grib +tempGrib3=temp.3.${label}.grib + +input=${data_dir}/high_level_api.grib2 +${tools_dir}/grib_copy -w count=1 $input $tempGrib1 +${tools_dir}/grib_copy -w count=1/2 $input $tempGrib2 +${tools_dir}/grib_copy -w count=1/2/3 $input $tempGrib3 + +# 1st file has fewer messages than 2nd file +set +e +${tools_dir}/grib_compare $tempGrib1 $tempGrib2 +status=$? +set -e +[ $status -eq 1 ] + +# 2nd file has fewer messages than 1st file +set +e +${tools_dir}/grib_compare $tempGrib2 $tempGrib1 +status=$? +set -e +[ $status -eq 1 ] + + + +# Clean up +rm -f $tempGrib1 $tempGrib2 $tempGrib3 diff --git a/tools/grib_compare.c b/tools/grib_compare.c index 8833981db..20cbdac1f 100644 --- a/tools/grib_compare.c +++ b/tools/grib_compare.c @@ -496,17 +496,19 @@ int grib_tool_finalise_action(grib_runtime_options* options) grib_error* e=error_summary; int err=0; grib_context* c=grib_context_get_default(); - error+=morein1+morein2; /*if (grib_options_on("w:")) return 0;*/ - if (error) { - printf("\n## ERRORS SUMMARY #######\n"); - } while ((global_handle=grib_handle_new_from_file(c,options->infile_extra->file,&err))) { morein1++; if (global_handle) grib_handle_delete(global_handle); } + + error+=morein1+morein2; + if (error) { + printf("\n## ERRORS SUMMARY #######\n"); + } + if (morein1>0) { printf("##\n## Different number of messages \n"); printf("## %d more messages in %s than in %s\n",morein1, @@ -533,7 +535,6 @@ int grib_tool_finalise_action(grib_runtime_options* options) grib_index_delete(options->index2); } - if (error !=0) exit(1); return 0; } From 7ec61234554fc03a9b39d8d95b4fe192577e9b61 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 10 May 2019 14:11:01 +0100 Subject: [PATCH 211/414] ECC-923: Fix other tools too --- tools/bufr_compare.c | 18 ++++++++++-------- tools/gts_compare.c | 20 ++++++++++---------- tools/metar_compare.c | 20 ++++++++++---------- 3 files changed, 30 insertions(+), 28 deletions(-) diff --git a/tools/bufr_compare.c b/tools/bufr_compare.c index 5d5a8d331..1f177022c 100644 --- a/tools/bufr_compare.c +++ b/tools/bufr_compare.c @@ -422,7 +422,7 @@ static void print_index_key_values(grib_index* index,int icounter,const char* er printf("\n"); } -static grib_handle* grib_handle_new_from_file_x( +static grib_handle* bufr_handle_new_from_file_x( grib_context* c,FILE* f,int mode,int headers_only,int *err) { return codes_handle_new_from_file(c,f,PRODUCT_BUFR,err); @@ -478,7 +478,7 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) } else if (options->random) global_handle = grib_fieldset_next_handle(options->idx,&err); else - global_handle=grib_handle_new_from_file_x(h->context,options->infile_extra->file,options->mode,0,&err); + global_handle=bufr_handle_new_from_file_x(h->context,options->infile_extra->file,options->mode,0,&err); if (!global_handle || err!= GRIB_SUCCESS ) { morein2++; @@ -517,7 +517,7 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) { int err=0; if (!options->through_index && !options->random) { - global_handle=grib_handle_new_from_file(h->context,options->infile_extra->file,&err); + global_handle=codes_bufr_handle_new_from_file(h->context,options->infile_extra->file,&err); if (!global_handle || err!= GRIB_SUCCESS) morein2++; @@ -541,17 +541,19 @@ int grib_tool_finalise_action(grib_runtime_options* options) grib_error* e = error_summary; int err=0; grib_context* c=grib_context_get_default(); - error += morein1+morein2; /*if (grib_options_on("w:")) return 0;*/ - if (error) { - printf("\n## ERRORS SUMMARY #######\n"); - } - while ((global_handle=grib_handle_new_from_file(c,options->infile_extra->file,&err))) { + while ((global_handle=codes_bufr_handle_new_from_file(c,options->infile_extra->file,&err))) { morein1++; if (global_handle) grib_handle_delete(global_handle); } + + error += morein1+morein2; + if (error) { + printf("\n## ERRORS SUMMARY #######\n"); + } + if (morein1>0) { printf("##\n## Different number of messages \n"); printf("## %d more messages in %s than in %s\n",morein1, diff --git a/tools/gts_compare.c b/tools/gts_compare.c index b2c0314c9..aa8114edc 100644 --- a/tools/gts_compare.c +++ b/tools/gts_compare.c @@ -274,7 +274,7 @@ static void print_index_key_values(grib_index* index,int cnt,const char* error_m printf("\n"); } -static grib_handle* grib_handle_new_from_file_x( +static grib_handle* gts_handle_new_from_file_x( grib_context* c,FILE* f,int mode,int headers_only,int *err) { return codes_handle_new_from_file(c,f,PRODUCT_GTS,err); @@ -330,7 +330,7 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) } else if (options->random) global_handle = grib_fieldset_next_handle(options->idx,&err); else - global_handle=grib_handle_new_from_file_x(h->context,options->infile_extra->file,options->mode,0,&err); + global_handle=gts_handle_new_from_file_x(h->context,options->infile_extra->file,options->mode,0,&err); if (!global_handle || err!= GRIB_SUCCESS ) { morein2++; @@ -352,7 +352,7 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) { int err=0; if (!options->through_index && !options->random) { - global_handle=grib_handle_new_from_file(h->context,options->infile_extra->file,&err); + global_handle=gts_new_from_file(h->context,options->infile_extra->file,&err); if (!global_handle || err!= GRIB_SUCCESS) morein2++; @@ -376,17 +376,17 @@ int grib_tool_finalise_action(grib_runtime_options* options) grib_error* e=error_summary; int err=0; grib_context* c=grib_context_get_default(); - error+=morein1+morein2; - /*if (grib_options_on("w:")) return 0;*/ - - if (error) { - printf("\n## ERRORS SUMMARY #######\n"); - } - while ((global_handle=grib_handle_new_from_file(c,options->infile_extra->file,&err))) { + while ((global_handle=gts_new_from_file(c,options->infile_extra->file,&err))) { morein1++; if (global_handle) grib_handle_delete(global_handle); } + + error+=morein1+morein2; + if (error) { + printf("\n## ERRORS SUMMARY #######\n"); + } + if (morein1>0) { printf("##\n## Different number of messages \n"); printf("## %d more messages in %s than in %s\n",morein1, diff --git a/tools/metar_compare.c b/tools/metar_compare.c index 89f03e085..296d7e603 100644 --- a/tools/metar_compare.c +++ b/tools/metar_compare.c @@ -360,7 +360,7 @@ static void print_index_key_values(grib_index* index,int counter,const char* err printf("\n"); } -static grib_handle* grib_handle_new_from_file_x( +static grib_handle* metar_handle_new_from_file_x( grib_context* c,FILE* f,int mode,int headers_only,int *err) { return codes_handle_new_from_file(c,f,PRODUCT_METAR,err); @@ -416,7 +416,7 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) } else if (options->random) global_handle = grib_fieldset_next_handle(options->idx,&err); else - global_handle=grib_handle_new_from_file_x(h->context,options->infile_extra->file,options->mode,0,&err); + global_handle=metar_handle_new_from_file_x(h->context,options->infile_extra->file,options->mode,0,&err); if (!global_handle || err!= GRIB_SUCCESS ) { morein2++; @@ -438,7 +438,7 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) { int err=0; if (!options->through_index && !options->random) { - global_handle=grib_handle_new_from_file(h->context,options->infile_extra->file,&err); + global_handle=metar_new_from_file(h->context,options->infile_extra->file,&err); if (!global_handle || err!= GRIB_SUCCESS) morein2++; @@ -462,17 +462,17 @@ int grib_tool_finalise_action(grib_runtime_options* options) grib_error* e=error_summary; int err=0; grib_context* c=grib_context_get_default(); - error+=morein1+morein2; - /*if (grib_options_on("w:")) return 0;*/ - - if (error) { - printf("\n## ERRORS SUMMARY #######\n"); - } - while ((global_handle=grib_handle_new_from_file(c,options->infile_extra->file,&err))) { + while ((global_handle=metar_new_from_file(c,options->infile_extra->file,&err))) { morein1++; if (global_handle) grib_handle_delete(global_handle); } + + error+=morein1+morein2; + if (error) { + printf("\n## ERRORS SUMMARY #######\n"); + } + if (morein1>0) { printf("##\n## Different number of messages \n"); printf("## %d more messages in %s than in %s\n",morein1, From c5c98be4a8975acd3f2beac76d85c7e8cad3b50b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 10 May 2019 18:01:07 +0100 Subject: [PATCH 212/414] grib_iterator_delete should not crash if input is NULL --- src/grib_iterator.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/grib_iterator.c b/src/grib_iterator.c index cd90ad813..e76f3b946 100644 --- a/src/grib_iterator.c +++ b/src/grib_iterator.c @@ -114,17 +114,20 @@ int grib_iterator_init(grib_iterator* i, grib_handle *h, grib_arguments* args) } /* For this one, ALL destroy are called */ - int grib_iterator_delete(grib_iterator *i) { - grib_iterator_class *c = i->cclass; - while(c) - { - grib_iterator_class *s = c->super ? *(c->super) : NULL; - if(c->destroy) c->destroy(i); - c = s; + if (i) { + grib_iterator_class *c = i->cclass; + while(c) + { + grib_iterator_class *s = c->super ? *(c->super) : NULL; + if(c->destroy) c->destroy(i); + c = s; + } + /* This should go in a top class */ + grib_context_free(i->h->context,i); + } else { + return GRIB_INVALID_ARGUMENT; } - /* This should go in a top class */ - grib_context_free(i->h->context,i); return 0; } From 25a3fd6d794256896a34c73bed621f6bb3a3f12d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 13 May 2019 14:30:08 +0100 Subject: [PATCH 213/414] ECC-924: GRIB2: Add support for encoding AROME and ALADIN fields (Part 2) --- definitions/grib2/template.3.bf.def | 11 +++-------- definitions/grib2/template.5.53.def | 11 ++++++----- definitions/grib2/template.7.53.def | 2 +- tests/lam_bf.c | 20 ++++++++++---------- 4 files changed, 20 insertions(+), 24 deletions(-) diff --git a/definitions/grib2/template.3.bf.def b/definitions/grib2/template.3.bf.def index 804be828c..cee4f9802 100644 --- a/definitions/grib2/template.3.bf.def +++ b/definitions/grib2/template.3.bf.def @@ -4,18 +4,16 @@ constant biFourierCoefficients=1; codetable[1] spectralType ('3.6.table',masterDir,localDir) = 99 : no_copy; alias spectralDataRepresentationType=spectralType; - - unsigned[4] biFourierResolutionParameterN : dump; unsigned[4] biFourierResolutionParameterM : dump; -codetable[1] biFourierTruncationType ('3.99.table',masterDir,localDir) : dump; +codetable[1] biFourierTruncationType ('3.25.table',masterDir,localDir) : dump; -# Lx - Full domain length in X-direction +# Lx - Full domain length in X-direction. Size in metres of the domain along x-axis unsigned[8] Lx; meta geography.LxInMetres scale(Lx,one,thousand) : dump; -# Lux - Useful domain length in X-direction +# Lux - Useful domain length in X-direction. Size in metres of model forecast subdomain along x-axis unsigned[8] Lux; meta geography.LuxInMetres scale(Lux,one,thousand) : dump; # Lcx - Coupling domain width in X-direction @@ -31,6 +29,3 @@ meta geography.LuyInMetres scale(Luy,one,thousand) : dump; # Lcy - Coupling domain width in Y-direction unsigned[8] Lcy; meta geography.LcyInMetres scale(Lcy,one,thousand) : dump; - - - diff --git a/definitions/grib2/template.5.53.def b/definitions/grib2/template.5.53.def index 99179e65d..3f6827acd 100644 --- a/definitions/grib2/template.5.53.def +++ b/definitions/grib2/template.5.53.def @@ -7,16 +7,15 @@ # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. # - - # TEMPLATE 5.53, BiFourier coefficients data - complex packing include "grib2/template.5.packing.def"; transient computeLaplacianOperator=1 : hidden; -codetable[1] biFourierSubTruncationType ('3.99.table',masterDir,localDir) : dump; -unsigned[1] biFourierDoNotPackAxes = 0 : dump; +codetable[1] biFourierSubTruncationType ('5.25.table',masterDir,localDir) : dump; +codetable[1] biFourierPackingModeForAxes ('5.26.table',masterDir,localDir) = 0 : dump; +# biFourierDoNotPackAxes constant laplacianScalingFactorUnset = -2147483647; signed[4] laplacianScalingFactor : edition_specific ; @@ -27,8 +26,10 @@ meta laplacianOperatorIsSet evaluate(laplacianScalingFactor != laplacianScal unsigned[2] biFourierResolutionSubSetParameterN ; unsigned[2] biFourierResolutionSubSetParameterM ; +# TODO. Need to fix up the sample file samples/lambert_bf_grib2.tmpl +#unsigned[4] totalNumberOfValuesInUnpackedSubset = 0 : dump; + # This is read_only until we support other values codetable[1] unpackedSubsetPrecision ('5.7.table',masterDir,localDir) = 1 : dump; alias precisionOfTheUnpackedSubset=unpackedSubsetPrecision; - diff --git a/definitions/grib2/template.7.53.def b/definitions/grib2/template.7.53.def index e003aee9e..c5490c1f6 100644 --- a/definitions/grib2/template.7.53.def +++ b/definitions/grib2/template.7.53.def @@ -39,7 +39,7 @@ meta codedValues data_g2bifourier_packing( biFourierResolutionParameterN, biFourierResolutionParameterM, biFourierSubTruncationType, - biFourierDoNotPackAxes, + biFourierPackingModeForAxes, biFourierMakeTemplate, numberOfValues diff --git a/tests/lam_bf.c b/tests/lam_bf.c index 4b8579005..18195f7b3 100644 --- a/tests/lam_bf.c +++ b/tests/lam_bf.c @@ -652,21 +652,19 @@ static void rectfromellipse (double * vr, const double * ve, int nsmax, int nmsm { double xi = (double)i / (double)nsmax; double xj = (double)j / (double)nmsmax; - if (xi * xi + xj * xj < 1) - { + if (xi * xi + xj * xj < 1) { vr[kr+0] = ve[ke+0]; vr[kr+1] = ve[ke+1]; vr[kr+2] = ve[ke+2]; vr[kr+3] = ve[ke+3]; - ke += 4; - } - else - { + ke += 4; + } + else { vr[kr+0] = 0.; vr[kr+1] = 0.; vr[kr+2] = 0.; vr[kr+3] = 0.; - } + } kr += 4; } } @@ -708,7 +706,9 @@ int main (int argc, char * argv[]) for (igrid = 0; igrid < 3; igrid++) { GRIB_CHECK (((h = grib_handle_new_from_samples (NULL, "lambert_bf_grib2")) == NULL), 0); + //GRIB_CHECK (((h = grib_handle_new_from_samples (NULL, "sh_ml_grib2")) == NULL), 0); GRIB_CHECK (grib_set_long (h, "centre", 85), 0); + GRIB_CHECK (grib_set_long (h, "tablesVersion", 23), 0); len = strlen (grids[igrid]); GRIB_CHECK (grib_set_string (h, "gridType", grids[igrid], &len), 0); GRIB_CHECK (grib_set_long (h, "biFourierResolutionParameterN", NSMAX), 0); @@ -760,7 +760,7 @@ int main (int argc, char * argv[]) GRIB_CHECK (grib_set_long (h, "biFourierResolutionSubSetParameterN", NSTRON), 0); GRIB_CHECK (grib_set_long (h, "biFourierResolutionSubSetParameterM", NSTRON), 0); GRIB_CHECK (grib_set_long (h, "biFourierSubTruncationType", trunc[itrunc].subtrunc) , 0); - GRIB_CHECK (grib_set_long (h, "biFourierDoNotPackAxes", 1), 0); + GRIB_CHECK (grib_set_long (h, "biFourierPackingModeForAxes", 1), 0); GRIB_CHECK (grib_set_long (h, "unpackedSubsetPrecision", 2), 0); len = trunc[itrunc].len; @@ -793,7 +793,7 @@ int main (int argc, char * argv[]) int i, err; size_t values_len, geometry_len; long int LxInMetres, LyInMetres, LuxInMetres, LuyInMetres, LcxInMetres, LcyInMetres; - long int nsmax, nmsmax; + long int nsmax, nmsmax; char geometry[128]; @@ -829,7 +829,7 @@ int main (int argc, char * argv[]) if (LxInMetres != 2000 || LyInMetres != 2000 || LuxInMetres != 1800 || LuyInMetres != 1800 || LcxInMetres != 100 || LcyInMetres != 100 || - NSMAX != nsmax || NMSMAX != nmsmax) + NSMAX != nsmax || NMSMAX != nmsmax) { printf ("Geometry is incorrect\n"); abort (); From 214d12c55cc67fd99aaf83aea58b1790bb0fe25d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 13 May 2019 15:05:00 +0100 Subject: [PATCH 214/414] ECC-924: Add the extra 4 octets (key TS). This breaks the test eccodes_t_lam_bf --- definitions/grib2/template.5.53.def | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/definitions/grib2/template.5.53.def b/definitions/grib2/template.5.53.def index 3f6827acd..11aee60a9 100644 --- a/definitions/grib2/template.5.53.def +++ b/definitions/grib2/template.5.53.def @@ -27,7 +27,7 @@ unsigned[2] biFourierResolutionSubSetParameterN ; unsigned[2] biFourierResolutionSubSetParameterM ; # TODO. Need to fix up the sample file samples/lambert_bf_grib2.tmpl -#unsigned[4] totalNumberOfValuesInUnpackedSubset = 0 : dump; +unsigned[4] totalNumberOfValuesInUnpackedSubset = 0 : dump; # This is read_only until we support other values codetable[1] unpackedSubsetPrecision ('5.7.table',masterDir,localDir) = 1 : dump; From 4c7fedc1ce474d0c6907fd637df64d98ccb3c656 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 14 May 2019 11:17:42 +0100 Subject: [PATCH 215/414] ECC-924: Fix Windows solution file --- windows/msvc/grib_api_lib/grib_api_lib.vcproj | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/windows/msvc/grib_api_lib/grib_api_lib.vcproj b/windows/msvc/grib_api_lib/grib_api_lib.vcproj index 4c0d5c0ba..8ab6dc98f 100644 --- a/windows/msvc/grib_api_lib/grib_api_lib.vcproj +++ b/windows/msvc/grib_api_lib/grib_api_lib.vcproj @@ -680,6 +680,10 @@ RelativePath="..\..\..\src\grib_accessor_class_data_g22order_packing.c" > + + From b1eceb606d305379e9f275a7b9941f2caf46fbf6 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 14 May 2019 13:10:52 +0100 Subject: [PATCH 216/414] ECC-924: Fix Windows project --- windows/msvc/grib_api_lib/grib_api_lib.vcxproj | 1 + windows/msvc/grib_api_lib/grib_api_lib.vcxproj.filters | 3 +++ 2 files changed, 4 insertions(+) diff --git a/windows/msvc/grib_api_lib/grib_api_lib.vcxproj b/windows/msvc/grib_api_lib/grib_api_lib.vcxproj index a16b757b2..0c0d08513 100755 --- a/windows/msvc/grib_api_lib/grib_api_lib.vcxproj +++ b/windows/msvc/grib_api_lib/grib_api_lib.vcxproj @@ -256,6 +256,7 @@ + diff --git a/windows/msvc/grib_api_lib/grib_api_lib.vcxproj.filters b/windows/msvc/grib_api_lib/grib_api_lib.vcxproj.filters index 0b62b4ba5..c1414e201 100755 --- a/windows/msvc/grib_api_lib/grib_api_lib.vcxproj.filters +++ b/windows/msvc/grib_api_lib/grib_api_lib.vcxproj.filters @@ -1137,6 +1137,9 @@ Source Files + + Source Files + From 7bd147bfa6ed199515718e44e4c659cbd647082b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 14 May 2019 17:53:27 +0100 Subject: [PATCH 217/414] ECC-926: bufr_compare should fail if passed index files --- tools/grib_tools.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/grib_tools.c b/tools/grib_tools.c index 05c9cc3cc..e7d27746f 100644 --- a/tools/grib_tools.c +++ b/tools/grib_tools.c @@ -167,7 +167,9 @@ int grib_tool(int argc, char **argv) dump_file=stdout; } - if (is_index_file(global_options.infile->name) && + /* ECC-926: Currently only GRIB indexing works. Disable the through_index if BUFR, GTS etc */ + if (global_options.mode == MODE_GRIB && + is_index_file(global_options.infile->name) && ( global_options.infile_extra && is_index_file(global_options.infile_extra->name))) { global_options.through_index=1; return grib_tool_index(&global_options); From 80f615c6541982720efa8b255e46551aeb213553 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 14 May 2019 17:53:39 +0100 Subject: [PATCH 218/414] ECC-925: Remove the tool bufr_index_build --- tools/CMakeLists.txt | 2 +- tools/bufr_index_build.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index ce203a6a8..68a029ac1 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -33,7 +33,7 @@ list( APPEND grib_tools_bins grib2ppm grib_set grib_get grib_get_data grib_copy grib_compare codes_parser grib_index_build bufr_ls bufr_dump bufr_set bufr_get - bufr_copy bufr_compare bufr_index_build + bufr_copy bufr_compare gts_get gts_compare gts_copy gts_dump gts_filter gts_ls metar_dump metar_ls metar_compare metar_get metar_filter metar_copy ) diff --git a/tools/bufr_index_build.c b/tools/bufr_index_build.c index eb0638190..de73d474a 100644 --- a/tools/bufr_index_build.c +++ b/tools/bufr_index_build.c @@ -15,7 +15,8 @@ #include "grib_tools.h" -const char* grib_tool_description="Build an index file for a set of input BUFR files."; +const char* grib_tool_description="Build an index file for a set of input BUFR files.\n" + "\tWarning: THIS TOOL IS NOT YET IMPLEMENTED"; const char* grib_tool_name="bufr_index_build"; const char* grib_tool_usage="[options] file file ... "; grib_index* idx=NULL; From 4a8bd2acb65d947932952dd9c0039d6858fd8aba Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 15 May 2019 12:44:41 +0100 Subject: [PATCH 219/414] ECC-924: Fixes applied by Philipe Marguinaud (new sample) --- definitions/grib2/template.7.53.def | 1 + samples/lambert_bf_grib2.tmpl | Bin 1870 -> 1874 bytes ..._accessor_class_data_g2bifourier_packing.c | 6 ++++++ 3 files changed, 7 insertions(+) diff --git a/definitions/grib2/template.7.53.def b/definitions/grib2/template.7.53.def index c5490c1f6..14a55813e 100644 --- a/definitions/grib2/template.7.53.def +++ b/definitions/grib2/template.7.53.def @@ -41,6 +41,7 @@ meta codedValues data_g2bifourier_packing( biFourierSubTruncationType, biFourierPackingModeForAxes, biFourierMakeTemplate, + totalNumberOfValuesInUnpackedSubset, numberOfValues ): read_only; diff --git a/samples/lambert_bf_grib2.tmpl b/samples/lambert_bf_grib2.tmpl index ff911025bb2912fa29b12fa636bf122688396f86..bbf5f45a889f5de1d0785267f42046ed58381a2f 100644 GIT binary patch delta 62 zcmX@dcZpBHJ;>AP|9=K11~6a`+9)uYSzehH$SYtlg$Ob*2>3EKfY@9>2n3t=F;8Fy E0FUkph5!Hn delta 58 zcmcb_caBfMJ;>AP|9=K11~6dv+bA%ZSz4YI$SYtlg$Ob*2>3EKfY@9NT$>LuPhbWB DY;FpE diff --git a/src/grib_accessor_class_data_g2bifourier_packing.c b/src/grib_accessor_class_data_g2bifourier_packing.c index 88952f779..66a7209c7 100644 --- a/src/grib_accessor_class_data_g2bifourier_packing.c +++ b/src/grib_accessor_class_data_g2bifourier_packing.c @@ -41,6 +41,7 @@ MEMBERS= const char* biFourierSubTruncationType MEMBERS= const char* biFourierDoNotPackAxes MEMBERS= const char* biFourierMakeTemplate + MEMBERS= const char* totalNumberOfValuesInUnpackedSubset MEMBERS=const char* numberOfValues END_CLASS_DEF @@ -94,6 +95,7 @@ typedef struct grib_accessor_data_g2bifourier_packing { const char* biFourierSubTruncationType; const char* biFourierDoNotPackAxes; const char* biFourierMakeTemplate; + const char* totalNumberOfValuesInUnpackedSubset; const char* numberOfValues; } grib_accessor_data_g2bifourier_packing; @@ -191,6 +193,7 @@ static void init(grib_accessor* a,const long v, grib_arguments* args) self->biFourierSubTruncationType = grib_arguments_get_name(gh,args,self->carg++); self->biFourierDoNotPackAxes = grib_arguments_get_name(gh,args,self->carg++); self->biFourierMakeTemplate = grib_arguments_get_name(gh,args,self->carg++); + self->totalNumberOfValuesInUnpackedSubset = grib_arguments_get_name(gh,args,self->carg++); /*self->numberOfValues = grib_arguments_get_name(gh,args,self->carg++);*/ a->flags |= GRIB_ACCESSOR_FLAG_DATA; @@ -931,6 +934,9 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len) grib_buffer_replace (a, buf, buflen, 1, 1); + if ((ret = grib_set_long_internal (gh, self->totalNumberOfValuesInUnpackedSubset, bt->n_vals_sub)) != GRIB_SUCCESS) + goto cleanup; + if ((ret = grib_set_long_internal (gh, self->number_of_values, bt->n_vals_bif)) != GRIB_SUCCESS) goto cleanup; From d2d50cdf66f608feff5d822e79217d9451afeb19 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 15 May 2019 12:45:10 +0100 Subject: [PATCH 220/414] Table update for WMO version --- definitions/grib2/tables/1.0.table | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/definitions/grib2/tables/1.0.table b/definitions/grib2/tables/1.0.table index 4b6d11b1e..c871ea8fe 100644 --- a/definitions/grib2/tables/1.0.table +++ b/definitions/grib2/tables/1.0.table @@ -22,6 +22,6 @@ 20 20 Version implemented on 8 November 2017 21 21 Version implemented on 2 May 2018 22 22 Version implemented on 7 November 2018 -23 23 Pre-operational to be implemented by next amendment +23 23 Version implemented on 15 May 2019 # 24-254 Future versions 255 255 Master tables not used. Local table entries and local templates may use the entire range of the table, not just those sections marked Reserved for local used. From d444d1867848aa034f7001e07e5b701209fedcf3 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 15 May 2019 13:58:02 +0100 Subject: [PATCH 221/414] ECC-924: Test code clean up --- tests/lam_bf.c | 1622 ++++++++++++++++++++-------------------- tests/lam_gp.c | 1910 ++++++++++++++++++++++++------------------------ 2 files changed, 1757 insertions(+), 1775 deletions(-) diff --git a/tests/lam_bf.c b/tests/lam_bf.c index 18195f7b3..c14010f2c 100644 --- a/tests/lam_bf.c +++ b/tests/lam_bf.c @@ -11,844 +11,836 @@ */ static double values[] = { - 2.75181294152902012e+02, 0.00000000000000000e+00, 0.00000000000000000e+00, 0.00000000000000000e+00, -2.00031443764104797e-02, - 2.20986262423002011e-01, 0.00000000000000000e+00, 0.00000000000000000e+00, -6.50831583306859668e-02, 9.56915910153004201e-02, - 0.00000000000000000e+00, 0.00000000000000000e+00, -7.69949998097087390e-02, 2.15126568901680588e-02, 0.00000000000000000e+00, - 0.00000000000000000e+00, -2.15191777195716909e-02, -1.77751950764027111e-02, 0.00000000000000000e+00, 0.00000000000000000e+00, - -9.03325926869718264e-03, -6.45905357075528350e-03, 0.00000000000000000e+00, 0.00000000000000000e+00, 3.76554930890086407e-03, - 4.28150996355022243e-03, 0.00000000000000000e+00, 0.00000000000000000e+00, -4.48334654946085272e-03, -3.24945933688448613e-03, - 0.00000000000000000e+00, 0.00000000000000000e+00, -8.33958311735325322e-03, 2.67394757861415906e-03, 0.00000000000000000e+00, - 0.00000000000000000e+00, -2.88928782235351811e-03, 1.11276030204927202e-02, 0.00000000000000000e+00, 0.00000000000000000e+00, - -6.89744178202101980e-03, 1.68577225483147806e-03, 0.00000000000000000e+00, 0.00000000000000000e+00, -4.05911636160587782e-03, - -8.63040459605283984e-04, 0.00000000000000000e+00, 0.00000000000000000e+00, 1.77788775751947913e-03, 1.62646256200294588e-03, - 0.00000000000000000e+00, 0.00000000000000000e+00, -2.34489308196387896e-04, 6.26464829859012945e-03, 0.00000000000000000e+00, - 0.00000000000000000e+00, -1.52923310566158415e-03, 3.51952946092800104e-03, 0.00000000000000000e+00, 0.00000000000000000e+00, - -2.12456107651320296e-03, 7.80855898848169944e-04, 0.00000000000000000e+00, 0.00000000000000000e+00, -1.03218475301503098e-03, - -4.84939736793421616e-05, 0.00000000000000000e+00, 0.00000000000000000e+00, -1.27050726547289815e-03, 6.10515922008610795e-04, - 0.00000000000000000e+00, 0.00000000000000000e+00, -4.61636562893467212e-04, 3.78318476621734151e-04, 0.00000000000000000e+00, - 0.00000000000000000e+00, -1.90620242437837724e-04, 2.39481618132839210e-03, 0.00000000000000000e+00, 0.00000000000000000e+00, - -1.47687884032438608e-03, 2.42544367345591408e-03, 0.00000000000000000e+00, 0.00000000000000000e+00, -2.46192219258621788e-03, - 2.46579511004843988e-04, 0.00000000000000000e+00, 0.00000000000000000e+00, -1.50607540488831206e-03, -3.75857847911556075e-04, - 0.00000000000000000e+00, 0.00000000000000000e+00, -7.25805584180000754e-04, 9.78641239992627046e-05, 0.00000000000000000e+00, - 0.00000000000000000e+00, -7.80340606647248088e-04, 8.75931120319022039e-04, 0.00000000000000000e+00, 0.00000000000000000e+00, - -1.47851165924441194e-03, 1.17811049164095192e-03, 0.00000000000000000e+00, 0.00000000000000000e+00, -2.08460733839155700e-03, - 6.42619155220282463e-04, 0.00000000000000000e+00, 0.00000000000000000e+00, -1.86653178182583090e-03, -1.51572352026370312e-04, - 0.00000000000000000e+00, 0.00000000000000000e+00, -1.07549275530616001e-03, -4.44853427976503511e-04, 0.00000000000000000e+00, - 0.00000000000000000e+00, -6.33166214776187397e-04, 1.77518665839971507e-05, 0.00000000000000000e+00, 0.00000000000000000e+00, - -7.92028302924727146e-04, 4.38426731572627625e-04, 0.00000000000000000e+00, 0.00000000000000000e+00, -1.36111299097537602e-03, - 3.55302636498244784e-04, 0.00000000000000000e+00, 0.00000000000000000e+00, 4.31165906519952527e-02, 0.00000000000000000e+00, - 3.80339924146994024e-01, 0.00000000000000000e+00, -6.26107842259959399e-03, 1.64616708332782904e-03, 7.15529452992990245e-03, - -1.86210941905016296e-02, 5.36772367761992244e-03, -3.37215608643290496e-03, -6.27927374167897446e-03, 1.59410804744731308e-02, - -1.10370818380311399e-02, -6.84039900395983468e-04, -7.35117541436946381e-03, -4.87635242059330717e-03, -7.33706364752968569e-03, - 6.58538980656067294e-03, -6.56001297130070615e-03, 2.39042653237417005e-04, 4.18393771850396725e-04, -9.83382649555805503e-03, - -4.32676605363364018e-03, -1.10999673219588004e-02, -3.07797564052225605e-03, -2.83896250149829514e-03, 4.23882761382370337e-03, - -2.26439224781546308e-03, -2.32047257122214301e-03, -2.86523743964195400e-03, 1.16753700036647200e-03, -1.96688706621135590e-03, - -5.64532360297308362e-03, 3.86163113000431019e-03, -4.55210116404825178e-03, -2.31820675144046905e-03, -7.54930221713808131e-04, - 5.42645956136695879e-03, -1.37359456800822195e-04, -1.41701530146446709e-03, -7.24047803220819299e-04, 2.97282693804422219e-03, - -9.21178724545542739e-04, 2.17304781678062013e-03, 5.02933596226693130e-03, 4.19709065989953400e-04, -2.32808772095879088e-03, - -3.96816140679685759e-04, 1.66528807434054306e-03, -4.34672804984864508e-04, 6.71774253284030125e-04, -9.64395020788669558e-04, - 5.60151148527374262e-04, -2.54932855784003589e-03, 2.20163163376581403e-03, 9.04215953722457551e-04, 1.20823533199773401e-04, - -2.59868122477286410e-04, -1.65945495141917997e-04, 1.46538996917019689e-03, -1.68476757946802304e-03, 1.07540452680088500e-05, - 5.87513082394260696e-04, -1.24863532530485998e-03, -3.40155704130869251e-04, 5.06914392022354376e-04, 3.59174751231139280e-04, - -6.95434364128791230e-04, 5.31028293884702393e-04, -4.85338794987818855e-05, 9.80353244783757497e-04, -2.73784354447844888e-04, - 6.75383024029988280e-04, -5.75995357037249419e-04, 1.90931744053672494e-04, 4.24537699070617045e-04, -4.71947030265784521e-04, - -4.46465504992567892e-04, 3.33337956522936497e-04, -1.27617452248717108e-04, -8.67351806263058525e-05, 1.84741230040785993e-04, - 2.68168590454641613e-04, -1.31760079895587510e-05, -1.96141696634310206e-04, 3.15977777045840907e-05, 5.52964000678949098e-05, - -5.68648317683832915e-05, -1.24618526993470704e-04, -1.64319991484120808e-04, 9.90021761468646032e-05, -2.89641341863940680e-04, - 1.55648200162975805e-04, -1.61276662168002686e-04, 3.37883315497318677e-04, -3.00041726450727992e-04, 2.26196161548845496e-04, - 1.04382192438164800e-04, 4.50994722382257825e-04, -9.02537135361254129e-05, 5.64332474405111417e-05, 2.40936093599355207e-04, - 2.94628358869333785e-04, 9.40238863724802596e-05, -1.25490327018252206e-04, 1.13999493763013607e-04, 9.90868525905299344e-05, - 2.79939342717346504e-05, -1.21103070944854899e-04, -9.78183419047561525e-05, 7.97907489358191165e-05, -1.56274876625488320e-04, - 6.91110956986578159e-05, -1.78274579094107812e-04, 2.35172712320294510e-04, -1.86487667645096914e-04, 1.81359168243560220e-04, - -8.28267034951306894e-05, 3.64422258672049697e-04, -6.00161449209830129e-05, 1.53669854000615012e-04, 5.33940976909759048e-05, - 2.71098832854533114e-04, 1.16978179717633208e-04, -7.04014134697032723e-02, 0.00000000000000000e+00, 9.62756934345549015e-02, - 0.00000000000000000e+00, -5.01308988644840123e-02, 1.90874724562156602e-02, -2.80953874485262711e-02, 9.94764679201346272e-03, - -2.78516472981488912e-02, -3.06618517103302880e-02, 7.58078492851659708e-03, -4.18797526833174401e-03, -9.28131704978618285e-03, - -1.46423285050521004e-02, -1.12982430235375603e-02, -4.45163187034482329e-03, -8.86607378544559607e-04, -1.37678041188198305e-02, - -3.04744522425032726e-03, 1.40705206691586690e-02, 4.92736702444518219e-03, -5.90514134511184539e-03, -4.54964421596467609e-03, - -8.39159774589658125e-03, -4.46148003495234514e-03, -1.62058199127339503e-03, 5.61408022308887422e-03, 4.49055900394370114e-03, - -1.82071051913615303e-03, -4.09318011341107141e-03, -4.97865560096572360e-03, -3.90714411692000101e-03, -2.72428801010754702e-04, - 3.29022970106107040e-05, -3.71301533763268490e-03, 3.48487792329992983e-04, 1.15959669498262694e-03, 4.98979531764007374e-04, - 7.26403024471391199e-04, 1.64864318070091407e-03, 5.15149461852990758e-04, -1.86307159089303892e-03, 1.07464821641563204e-03, - 1.93916722418667302e-03, 1.78527114422754305e-03, -3.69908045453888525e-03, 1.35978350637315200e-03, 1.97378490377768823e-03, - -1.12077965666117305e-03, 1.89400552511022986e-03, 1.34901499797743002e-03, -7.17376936946564751e-04, 3.77336189237397162e-04, - -8.49455521901115469e-04, 1.76458772526797607e-03, -1.34910889239185107e-03, -8.88652895477685142e-04, -1.56500185302029806e-04, - -8.76093972833636445e-04, -2.00964500803350399e-03, 1.58208594440964988e-03, -4.99776272008587265e-04, 9.21092504090277532e-04, - -9.50973675462412054e-04, 9.34360703323434722e-04, 1.13569489093607798e-03, -2.35584557310445026e-04, -4.38069769484956937e-05, - 3.24577435798492555e-04, -1.25354645423132001e-03, 2.23682595620860417e-04, 3.66036513139383663e-04, 1.40216714894795505e-03, - 2.27750709584358922e-05, -1.93328972751045800e-04, 2.02025568799330516e-04, -2.74656452169796581e-04, -7.13136078966307191e-04, - -7.74076812485903487e-04, -1.02274882001159593e-03, 5.52829074765155888e-04, -3.68749942830809982e-04, 5.23471145957211991e-04, - -5.11988764810234896e-04, 6.02265891061533310e-04, -2.11327004479523907e-04, 6.41691954883075503e-04, -2.93053466696699415e-05, - 5.44704761041802841e-04, -5.66628145474610301e-05, 3.06917641025358854e-04, 2.85907713552362608e-04, 3.77388927634152475e-04, - -3.77819009899353793e-05, -7.23439228551873374e-05, 9.85771074035036001e-05, 3.21327432771281263e-04, -1.59908157634313996e-04, - -6.09095752283840726e-05, -2.76136058709174526e-04, 3.87616442158483353e-04, -2.26542483972600318e-04, 2.54495029230095593e-04, - -4.53136334566828323e-04, 4.85440002953321521e-04, -1.62296622208713188e-04, 5.57461157340177543e-04, -2.18109633528073014e-04, - 4.40938655580095133e-04, -2.50802656486350106e-05, 4.94156181908487774e-04, 1.46912930391045014e-04, 3.39995298139647573e-04, - 2.31575644258876931e-05, 1.27693888311369109e-04, 2.66757357090615819e-04, 2.81659456088537022e-04, -1.77008256058765415e-05, - -5.59528798333871517e-05, 8.03605031599087131e-05, 2.85552901830860538e-04, -4.53068755612621334e-05, 1.02695668114354909e-05, - -9.52364495838409209e-05, -5.81103624210425537e-02, 0.00000000000000000e+00, -6.11613220936809646e-03, 0.00000000000000000e+00, - 4.43140816018786771e-03, -2.60999931564933826e-03, -9.40668310127974576e-03, -1.48661226497603313e-02, -1.36502130860806405e-02, - -2.14796277886411605e-02, -4.29520125994365363e-03, -1.26923474000257205e-02, -7.86135852771467636e-03, 1.28725912652949892e-03, - -6.82233374677557874e-03, 4.39686715387468952e-03, 1.82006684281001488e-03, 1.49296576633828294e-03, -1.98801597839639611e-03, - 1.62071513114028917e-03, 5.34277138633573300e-03, 2.01625340607174391e-03, 4.65092297717760190e-03, -4.98019846270408330e-03, - -8.09160267604481370e-03, 3.44643931971669272e-04, -5.89232406165003143e-03, 2.42334465848842917e-03, -8.80352946027558960e-04, - 9.84336007576140171e-04, -7.45770687978821595e-03, 4.75822395048473845e-05, 1.47566490371992703e-04, 5.47124159393165554e-03, - 1.21021033478159695e-03, 9.69205973697771176e-04, 2.87549817812144098e-03, -3.61852844247361654e-04, 6.44364669700349130e-04, - 1.29877596456263100e-03, 9.38391522093622900e-04, -2.22314144452083603e-03, 3.10148815196359916e-03, 5.28716763746763570e-04, - 8.26155935032032562e-04, 1.57427796494904104e-03, -7.38296066748109475e-04, 1.14662499560429709e-03, -8.33016875095013713e-04, - -1.55185739616535206e-03, 2.04015157270918393e-03, -9.48182790145658426e-04, -8.81430768705695989e-04, -1.79127396420232423e-04, - -1.10273859532507507e-03, 6.53764928387371141e-04, -7.73895587008780373e-04, 2.68077770038103081e-04, 6.51103785496301673e-04, - -2.71669965700574879e-03, -3.88256693905312568e-04, 7.85903560292053544e-04, 1.18648988600738399e-03, 2.73534309775586828e-04, - -1.60929713471156209e-04, 1.29735976231497405e-03, 1.37988749081522505e-03, -1.59601915859147411e-04, 4.72539428788721608e-04, - -1.63508530969875198e-04, -8.04497515605788580e-04, -5.60952219538972049e-04, 9.62352783411973291e-04, -3.25986940863303451e-04, - -6.62865052534385266e-04, 1.83077290521144301e-04, -6.67815027189929333e-04, -8.20763509623387072e-04, 5.50944728278969943e-04, - -9.18368507559945896e-05, -4.97262747933818947e-05, 1.44527740863390717e-05, 6.02268801895407160e-04, -6.90060856109303935e-04, - -6.61151667662298806e-05, 5.24607915693856908e-05, 8.71389161220942712e-04, -5.22209563697972917e-05, -8.81069372491589524e-05, - 6.89674388639323560e-05, 4.89296492873659379e-04, 3.42949950767033190e-04, -1.04594279689411803e-04, 7.88048702858046301e-05, - -4.51080354005282619e-05, 1.92927499298747385e-04, -1.00799248168193510e-04, 8.42070445097134625e-05, -1.15456876718276306e-04, - -3.52801267299761995e-04, -1.17385826010707806e-04, 6.41826840143688848e-05, 3.00430937194893165e-04, -5.88191734441591263e-04, - -9.60097825665722621e-05, 3.24876263135078137e-05, 6.81936922695665707e-04, -2.77700061014415391e-04, -8.20877129250762892e-05, - 2.58047697700600437e-05, 6.00380468626232297e-04, 1.78126157739820522e-04, -8.91255866487739501e-05, 1.94618282851708810e-05, - 1.70413830952822023e-04, 3.43572086262713874e-04, -7.77228636917948808e-05, -3.36010502648343538e-05, -9.07658016101573108e-05, - 6.59277748270443569e-05, -3.98051260408716171e-05, -7.94909595164307867e-05, 7.05083701220457573e-06, -2.12150267214743503e-04, - -7.10752955220507326e-02, 0.00000000000000000e+00, -2.81525293764823895e-02, 0.00000000000000000e+00, -8.89502773245340675e-03, - 3.66324267155502007e-03, -1.50462462993148395e-02, -2.63916495927209518e-03, -6.79652165859046149e-03, -1.65529453407753518e-02, - -1.78928182217595808e-02, -3.14303722891423219e-03, -7.11006250769349781e-03, 5.34684474246508237e-03, -1.16327476368806200e-02, - -8.05468546023600102e-03, -1.64149955851847803e-03, -5.35863352681676449e-03, 3.15321608325506422e-03, 6.26277160082160155e-04, - -7.27484684891808748e-03, 2.70646376760276911e-05, 3.62617414329000813e-03, -3.65054682510651410e-03, -1.07696110037195595e-03, - 3.53182686525143003e-04, -3.38538738633310885e-03, -7.71206253588103529e-03, 2.05797839658368497e-03, -3.13248774975358191e-03, - -2.15184243056480489e-03, -3.10225639086903707e-03, -3.54796544314458281e-03, 5.24964106894207014e-03, -3.81132388565878430e-03, - 1.24107114742582204e-03, 2.71419662078310015e-03, -3.13258905575883794e-03, -9.86678579803712151e-04, 4.35158904158106617e-03, - 2.00811015548373484e-03, -2.44534593887737084e-04, 2.98862265427273909e-03, -2.36637278792602287e-03, 3.79010793951217370e-04, - -1.91817673989295003e-03, 2.40904857950564920e-03, -3.68671975810225518e-05, -7.50728259162286669e-04, -9.77411399558630834e-04, - 1.12160681390244201e-03, -9.57618916404621382e-04, -8.44772814505887035e-04, 1.60262870617885501e-04, -5.95028162206373166e-04, - -2.17343777372838720e-03, 3.90627040005680354e-04, -4.03549139392471315e-04, 3.97904392302268501e-04, -3.35021587533471910e-05, - 4.01596406318290207e-04, 6.19679429553130195e-04, -5.84235894305245641e-04, -6.29586561100089689e-04, 6.85720848834345492e-04, - -5.99546684685926617e-04, 6.48484311900055866e-04, 1.15749079052879009e-04, 5.89928032208336022e-04, 2.56662217500460083e-04, - 5.35723750474414269e-04, -3.87102961262356411e-05, 3.59715192754469484e-04, -9.00619185516589576e-04, -3.38206174007513985e-04, - -9.06717141110745728e-04, -1.06691607710405902e-05, -5.73066630815214089e-04, 5.82183667967025014e-04, -6.19647103989654315e-04, - 3.46608782632846157e-04, -3.19542958077236765e-04, 3.35326676850777677e-04, -1.19041590268576002e-04, 3.84807935714832959e-04, - -1.52580432572096801e-04, 2.88659162699535080e-04, -2.17457459774854719e-04, 3.15640030614073891e-04, -1.14589683204190809e-04, - 3.56359089290164666e-04, -2.36086433127905303e-04, 2.57962183435875032e-04, -1.32919881425900210e-04, 4.21275854832142444e-04, - -1.68637918303468496e-04, 2.60132103423249507e-04, -1.76518696101003004e-04, 3.98510318978629783e-04, -5.55874927229614931e-05, - 2.72262300197169426e-04, -1.54791064873725413e-04, 3.23912719054422868e-04, -3.97599407313694884e-05, 2.79412001537185026e-04, - -1.05419347221602004e-04, 2.74788768477940990e-04, -7.92444947406713388e-05, 2.69699801276835011e-04, -7.08821370313268408e-05, - 2.98757387283285329e-04, -1.28176226969026500e-04, 2.27528760050574108e-04, -3.45101835866923435e-05, 3.27201675215891879e-04, - -1.03881991208881104e-04, 2.10033165807443418e-04, -8.75501048007582717e-06, 3.14478195541950775e-04, -4.79621649743055035e-05, - 1.67328405215387999e-04, 5.84472169559277965e-05, 3.00859150369670600e-04, -4.13684186119337124e-05, -1.21379119254994196e-02, - 0.00000000000000000e+00, -3.44462771591686687e-02, 0.00000000000000000e+00, -2.10316876980239705e-03, -7.47964378791162073e-03, - 1.40631809424170899e-03, -4.56039796742323082e-03, -9.34831571155880781e-03, 2.15655290496510887e-03, -1.06117832938669408e-02, - -1.70679350958285111e-02, 3.45017088487963204e-03, 3.82119470199968102e-03, -1.04997387285308396e-02, 1.63770792198145408e-02, - -3.26765150921354405e-03, -3.41571868356958797e-03, 4.58286575207184597e-03, 7.06393644576057845e-03, 4.30168798968698536e-03, - 2.07824034827653725e-03, -5.00231032938888449e-03, 4.53087742807849192e-03, 2.91006074117702894e-03, -6.79674760908184714e-03, - -4.20731287313864249e-03, 5.57341847431139063e-03, 1.84243144490180903e-03, 1.09041767054943606e-03, 6.02340248129294817e-04, - 8.87323969884404020e-05, 4.08856464359921205e-04, -4.12118732042999428e-03, -2.92119223691378500e-03, 2.52960402262236098e-03, - -4.99253509354547322e-04, -2.00114581595349722e-03, 3.31933921536656500e-03, 7.87586653237865768e-04, -1.98777567108299191e-03, - -4.35319605759405999e-04, 1.21890703961077709e-03, -1.74310547912238505e-04, -1.83804873490097005e-03, -6.33286472639934075e-04, - -8.54973407243040696e-04, 8.38731087266057014e-04, 1.96859281933702002e-03, 6.71187690856791001e-04, -1.49680241656290503e-03, - -1.31746694774600721e-04, -5.85150551831325094e-05, -6.08777129793491617e-04, -1.55499350657023103e-03, 4.32423633493066899e-04, - -7.46011357659906449e-04, 5.16518970476651830e-04, 7.33542013514307950e-04, 3.00206273742392163e-04, -5.67707291610191050e-04, - -3.97317356634302660e-04, 2.64927626375300240e-04, 1.32652469615073400e-03, 9.03100594211069126e-04, 7.93215800430159003e-04, - 6.39870260721876012e-04, 7.82518537978101281e-05, 3.10263950097946896e-06, -1.26280600703676396e-03, 1.35625753882703392e-04, - 5.92621033709781484e-04, 2.51897673756406736e-04, 8.35622028888639260e-04, -6.93190155969104597e-05, -2.47307402787471232e-04, - 1.97347646277906523e-04, -1.34291266624796601e-03, 7.04966419754734131e-04, -7.06261498209776703e-05, -5.18409841922224825e-05, - 7.90341985335329185e-05, 1.80027806692415588e-04, -3.60528094008153680e-04, -7.56475687345502479e-05, -5.09855582516119030e-05, - 3.43362661185179466e-04, 1.61699210709818420e-05, 5.50871102682905156e-06, -1.02545159022227300e-04, 6.00035958822780515e-05, - 2.98136883703973015e-04, 1.16044262782009412e-04, -7.17220274644972855e-05, -2.43404673157207726e-04, 1.65311416998437696e-04, - 1.41142580311535314e-04, 4.05231207494100349e-05, -2.82502183903395997e-04, -1.58301868094413317e-04, 3.25713204301173530e-05, - 8.34399540573364004e-05, -1.26258103319842004e-05, -3.02338835543194398e-04, -3.51598517208215631e-05, 3.05105441207013402e-05, - 2.02208048958474806e-04, -1.11880851566251209e-04, -5.75222282747011801e-05, -7.53488797685568308e-05, 1.64740146653522901e-04, - 1.55665282582546916e-04, 2.78627075985471035e-05, -8.24982697512496936e-05, -7.68641253913072698e-05, 2.11795439387258810e-04, - 1.08497663196070504e-04, -1.30771986857948203e-05, -2.15508188823196713e-04, 5.93088828912528187e-05, 5.92245582038734042e-05, - 8.71924479130562830e-05, -1.39371452945136589e-04, -1.15412352616742702e-04, -1.55050056359223414e-02, 0.00000000000000000e+00, - 1.08882691507289995e-02, 0.00000000000000000e+00, -4.71011842162717600e-03, -5.87720496469847434e-03, 1.05047777608648796e-02, - 4.58059600186255811e-04, -2.00504402837270619e-03, -2.95424720587515992e-03, 4.87799357670548345e-03, 8.35135183044262257e-03, - 1.94658690699765899e-03, -2.51595561155665282e-03, -8.21127194754033354e-03, 3.70391436894767405e-03, 6.83120937695324247e-03, - -1.76002874535725103e-03, -8.63390502398148768e-03, -4.10387342301893592e-03, -2.35444581629096900e-03, -4.09310051133190012e-03, - 4.22858049368528928e-04, 3.15099824102575005e-03, -1.23657205447147900e-03, -8.10122047065819917e-04, -1.43423373808739592e-03, - 1.48713803506179206e-04, -5.85087310259259233e-04, -6.23235356221657727e-04, -1.06063231727299210e-03, 1.80378281336268697e-03, - -9.30282245216480525e-04, -3.76269823446016231e-03, 1.84105606293760693e-04, 3.37515462362718115e-03, -7.38805157796997296e-04, - -9.12877602010101418e-05, -1.02645186453899405e-03, 3.16915550462153802e-03, 8.21937753793873418e-05, 1.25314454345307408e-03, - -5.88422124427039972e-04, 4.22118976254676735e-04, 3.62450580886171467e-04, 4.90060323653639541e-04, -1.34998872593530199e-03, - -6.25809469695063941e-04, 1.07186821528799502e-03, 7.90345047493609437e-04, 2.06073300326440516e-03, 4.16554698971398525e-04, - 1.00476579342678512e-03, -5.22637914683046919e-04, -1.81017262357454885e-04, 6.19944137220488213e-04, 3.63742289398431666e-04, - -1.10527646027455098e-03, -1.42755618597237006e-03, -3.07067139655041281e-04, 5.03169289358491628e-04, -6.13386797343335724e-04, - -1.37656831881363109e-04, 1.21565460886625997e-03, 1.93210758951368198e-04, -7.27388822794831111e-04, -1.21911187459386103e-03, - 2.29157486346871021e-04, 6.67416548838800248e-05, 4.51521060719632748e-04, 4.64612988038229510e-04, 4.44675281930900941e-04, - -4.22961891024955822e-04, -2.87267784296158901e-04, 9.37302358619733185e-04, -2.37795974551285302e-04, -1.61418528524817423e-04, - 3.59975251107788624e-05, -1.57709648390207509e-04, 7.99467773702482827e-04, 4.21146651409620644e-04, -4.26833911251724520e-04, - -5.21716154653551769e-04, 4.97628543500075742e-04, 5.69987976708835435e-04, -1.00118566849244998e-04, -6.64319064977684495e-04, - 1.05701411709688202e-04, 3.40518869723608394e-04, 1.38903605427121693e-04, -3.87886151334127351e-04, -1.95775443050584909e-04, - 5.96229633518891928e-05, 7.96570701940503198e-05, -5.60593924645873246e-05, -1.03370927417524607e-04, 6.36583825020037681e-07, - -2.04477272097361299e-04, -3.83914221304656642e-06, 2.13649300126834708e-04, 2.31094008501680310e-04, -3.30860288794278951e-04, - -2.30463924421211216e-04, 3.94263693122693575e-04, 4.08880948289188305e-04, -1.53040820632931304e-04, -5.12662237394530674e-04, - 2.24113090569518506e-04, 3.65643596805839092e-04, 7.58146844467415010e-05, -4.58187196559824389e-04, -9.80416207378538508e-05, - 1.46100253250197316e-04, 1.33893857135371198e-04, -1.85809415470792585e-04, -2.14519862579163896e-04, 2.04062649947744427e-05, - 3.80782834009347831e-05, 6.10446036778424544e-06, -5.41890344947285041e-05, 7.34556813889813786e-05, -4.83384314725215133e-05, - -2.59332653570620112e-05, 9.78677118932030546e-05, 7.19857997319553727e-03, 0.00000000000000000e+00, 3.32311287830635389e-03, - 0.00000000000000000e+00, 1.29016889639107005e-03, 2.60642731444820416e-03, -5.79342819017824098e-04, 5.30553834626121441e-03, - -4.68788965044094827e-03, 2.08217120134517215e-03, 3.06452640436348598e-03, 5.58776901253584674e-03, -2.07323557931271898e-03, - -2.51258894621679899e-03, -3.85306585928035317e-03, 2.82848860506730321e-03, 1.90040888967029416e-03, -1.58852311515139590e-03, - -1.76310573539159793e-04, 5.21842268138928713e-04, 3.67316069752267500e-03, -6.98195275610524226e-03, 1.22648241960540911e-03, - -3.85429235509009193e-03, 1.91566146354165903e-04, -1.33552008300326001e-04, -2.39186538029803998e-03, 2.63157630488062991e-03, - 6.36877311590974615e-05, -3.36814172885773399e-03, -3.97233550032412720e-03, -1.23589782939034797e-03, -1.42523994062913190e-03, - 8.72837867417999738e-04, 3.32205772971433909e-03, 2.07205784967486126e-03, -1.63524299563669795e-03, -2.98899158700940103e-03, - -2.93061091875026396e-03, 2.44095189396288485e-03, -7.33561682360080094e-04, 2.19256835525849004e-04, -1.37923737441638804e-03, - 4.74155589490909838e-04, 5.50343470600480364e-04, 1.00710104262438410e-03, 7.63755994840873711e-04, 3.52120109902711968e-04, - -4.30626975626065701e-04, -1.05186955567569901e-03, 3.11980751557737598e-04, 6.58461838349606908e-04, 6.30925164678347626e-04, - 6.91309027775518218e-05, 1.47672053042282301e-03, 1.92736773096099717e-03, 3.53213480182088489e-04, 1.06216068629913702e-03, - 3.41679775713064481e-04, -6.50019951649382938e-04, -4.56695902171019223e-04, 3.93151598436330794e-05, 1.04036608397413606e-03, - -1.18660622982701093e-03, 1.15800807328811394e-03, -7.09182118909679562e-04, 1.90406623619408615e-04, -6.86534881354838433e-04, - 3.74063714066177986e-04, 2.87317791919599233e-05, -1.16732558544984798e-03, -1.10231759344286994e-03, -1.45057348478687506e-04, - -5.57631367297447612e-04, -1.26396191893281599e-03, 9.56518764874356837e-04, 2.31333566436199502e-04, 9.41915043002358412e-05, - -3.56903031585823878e-07, 1.70374203686440915e-04, 4.97443740660158911e-05, 5.02386869340809095e-05, -8.05492641090750411e-05, - 2.03150152926000996e-04, -2.65367060549427609e-05, -1.39929371447721412e-04, -1.81910288097425200e-04, 3.94364895467108318e-06, - 1.36003216887327697e-04, -2.46687639381463130e-04, -4.25147549979305140e-05, -8.12611885612382043e-05, 3.02172089350402477e-04, - -1.81936841170158323e-04, 3.92697525610298230e-05, -5.64000622052212617e-05, 2.99517040483845130e-04, 1.13720483995726007e-05, - 5.49904859412459219e-05, 3.88977423049413005e-05, 1.38947205623771099e-04, 1.02861024666216704e-04, -2.71713077848858631e-05, - 7.39149761082318377e-05, -2.13569983855703405e-06, 1.95773483474666312e-05, -8.34252306505384720e-05, 1.68968172956159728e-05, - 5.64292102822087512e-05, -1.35096864921712995e-04, -7.11597471040555693e-05, -2.52508230251673836e-05, 1.83000199944189002e-04, - -1.56863264288969296e-04, -2.39818567491244685e-06, -3.74840941875673682e-05, 2.52668447454548132e-04, -7.34450727330187984e-05, - 2.95967272053869410e-05, -5.33444905612428026e-06, 2.22014749180963908e-04, 2.93310494637914723e-05, 5.44126157522075029e-05, - 3.76250220322146280e-05, 2.78416115424583296e-03, 0.00000000000000000e+00, 1.26854722193290095e-02, 0.00000000000000000e+00, - -9.47804839873612852e-03, -4.45215591850271764e-03, -2.28388657889899401e-03, -3.32276281845919792e-03, 5.62482041639104599e-04, - -2.53847581390776594e-03, 1.34408286936057005e-04, -1.61357826059901704e-03, -2.84333470827229182e-03, -3.22367666765658104e-03, - -3.07078967414139861e-04, -1.05330262451769005e-03, 1.51227891659255200e-03, -2.70213282972538897e-03, 2.02388698147050521e-04, - 2.20186932966095301e-03, -3.46483641839626620e-03, 1.55788110436725713e-03, 1.30282918690895205e-04, 3.74261542464799681e-03, - -3.16046541370569589e-03, 1.31143131345886309e-03, -3.08399041187059568e-04, 5.99037253132680470e-04, 8.62250737785963677e-04, - -1.73930881785822793e-03, -5.02626684595700274e-04, -1.60752061144315206e-03, 7.20944097052917190e-04, 8.65412307424915685e-04, - -3.32776058197007101e-03, 2.18561816312586005e-04, -1.22068813598305397e-03, 8.37000871453652122e-05, 2.89630578538259539e-04, - 4.82163205454582029e-03, 1.58867890981335318e-03, -6.22401809893891717e-04, 1.73896479816057600e-03, -5.20439782855769287e-04, - 1.14168473800226804e-03, -7.20558866174143202e-04, 8.74793001198065205e-04, 1.64170074485570604e-03, -7.27026482331195574e-04, - 1.04357444655336007e-03, 4.59221225965631406e-04, 4.24503050387132737e-04, 8.77028221914163226e-04, -6.33662223335107683e-04, - 5.80098072084693720e-07, -1.94429183743168813e-03, -2.73977550274014515e-04, -1.22197633314669800e-03, -3.66274805050316758e-04, - -1.18302708414683407e-04, 4.83059391503256827e-04, -7.07985315638565041e-04, -7.25686338634964055e-04, 7.23020017804716305e-05, - -6.42241235767167500e-04, 9.07713195018969711e-04, -2.93369116036286404e-04, 1.04773232584438295e-03, -3.97340087708606071e-05, - -4.37058278643554128e-05, 8.83966961412785890e-04, 1.21999205784775700e-03, 8.94789314789739523e-04, -8.52167205194715740e-04, - 7.03592776492062985e-04, -1.02021757762579498e-03, 7.16083852460278780e-05, -2.48733302885627229e-04, -1.70335565690782711e-04, - -2.20660416975401708e-04, 1.87004473663415186e-04, -2.36331832688707318e-04, 1.15639534404308602e-04, -2.09475188880555710e-04, - 2.99683684796347039e-04, -1.29855910005338915e-04, 1.75091368398453285e-04, 3.55882792130287544e-05, 2.34718856730567211e-04, - 1.51728148824903899e-05, 2.54166504458850315e-05, 1.64049233181359300e-04, 9.01549142149536497e-05, -1.71648594910176101e-06, - -1.59944524407326617e-04, 1.19348548726544397e-04, 7.85268336308512794e-05, -1.03800844517790107e-04, -1.81405986799001117e-04, - -5.13845974642025707e-05, 1.63365999753164808e-04, -1.42106018914941090e-04, -1.00097984965546201e-05, -1.62863659689661610e-04, - 2.30666095969170819e-04, -8.81570200580615110e-05, 1.38332264647423106e-04, -7.84715508241847002e-05, 2.14089085919024407e-04, - -9.69562479731096954e-07, 1.16669648028640911e-04, 9.26066168070304737e-05, 1.42929551657034615e-04, 4.86176193502030807e-05, - -3.75360180136114031e-05, 1.36175658034411997e-04, 8.05716768732491124e-05, 1.91707714907214908e-05, -1.27718856709836399e-04, - 2.04269030182744926e-05, -1.03334865816164002e-02, 0.00000000000000000e+00, 2.69365088408525391e-03, 0.00000000000000000e+00, - -6.21250475397177519e-04, -1.35909955444097702e-04, -1.27945203373861101e-03, 1.90953207115528200e-03, -2.77850442376668429e-03, - 1.82862043928144194e-03, 2.66233674928770606e-03, -1.72532539859110087e-03, -1.01000873702640102e-03, 4.43243166778230311e-03, - 5.00370125591865882e-04, 6.35632869696106575e-03, -1.95259500854165317e-03, -1.87608290871500000e-03, 6.66882212379246231e-05, - 1.13997830429131398e-03, 2.26573181023742316e-03, 3.31913493881087112e-03, 7.10866341422408785e-05, 1.03399524854338207e-03, - -2.88342179376523534e-04, -7.57173461251488050e-04, 1.36785880414229898e-03, 1.77020330499936900e-03, -3.23746337552742285e-03, - -7.51329696680427665e-04, -3.11037507343977409e-03, 1.40367482810333389e-03, 2.03570909239716123e-03, 1.75365599912788613e-03, - -7.08325905403631834e-04, 1.68119206080417092e-03, 8.48077650551798824e-05, -2.99705652529596103e-04, 2.99009451038331677e-03, - 2.85542960442462627e-03, 1.23578474740311409e-04, -6.38235388827023439e-04, 1.51611990460678208e-03, 4.61776934587180546e-04, - -1.33829897826344001e-03, -3.75584022082175160e-04, 2.48101123647880809e-04, 3.85122657189657569e-04, 5.51670773382135333e-05, - -1.85882436015654090e-04, 4.87174768902445344e-04, -1.83533572841154896e-03, -1.27644194171767705e-03, 8.68015753068456745e-04, - -1.31905566544782702e-03, 7.65379040425717737e-04, -2.19797395477818716e-04, 3.88332435901323088e-04, 3.13034401313501485e-04, - -8.59762290013867548e-04, 1.13994740546106998e-03, 1.72994716473204605e-03, -1.89307846611188403e-04, 6.98495755050348890e-04, - 3.01973282939228989e-04, -7.74094999922277186e-05, 1.16378030420384910e-04, 1.29967573750049191e-04, -5.72500693830566416e-05, - -8.22972732968274339e-04, -3.12276374844850854e-04, -1.08545016715341010e-04, 4.78239995403885131e-05, -6.14717757473743454e-05, - -2.23684510111112999e-04, 6.04283674132463503e-05, 9.19527187931604801e-05, 2.31593535142378412e-05, -2.03967753321729318e-04, - -1.35370345643743119e-04, 1.14790539148631810e-05, -1.74220441476465203e-05, 1.82429012417977831e-05, -6.38348667371286822e-05, - -2.70462292805629515e-05, -6.86210087098047746e-05, 5.65492551243059147e-05, 8.81166356637452818e-05, 5.29353466250463340e-05, - -9.92223055798126811e-05, -8.05966223176598730e-05, 1.61920504601891299e-04, 8.00282427584589920e-05, -6.22535596383927311e-05, - -1.77477592715217017e-04, 1.06509181968351499e-04, 6.66734941894863201e-05, -1.20710760285688811e-05, -1.89746906538367400e-04, - -2.94151505612680823e-05, 4.31300335916989639e-05, 6.23352108610686946e-06, -6.80348953995890205e-05, -9.08766889893978445e-05, - -1.29721911177051616e-05, -1.67407832425932389e-05, 4.30275146318171822e-05, -2.82181843060568528e-05, -7.85956166541929683e-06, - -2.93591647656230893e-05, 4.59262032554511328e-05, 1.02171357029562308e-04, 3.63911400851528937e-05, -4.73433551198325242e-05, - -7.05174086134095903e-05, 1.12859884248809006e-04, 8.44054700606726937e-05, -1.95691919855953615e-05, -1.32409500860587216e-04, - 1.07325320429094103e-05, -3.85655230757970310e-03, 0.00000000000000000e+00, -5.39979047907412739e-03, 0.00000000000000000e+00, - 5.60193598745740377e-03, 1.34496931366289698e-03, 1.84053007999470698e-03, -3.07922098017868098e-03, 1.39726178798314999e-03, - 4.39676641449973649e-03, -1.68890814938530798e-03, 1.07275962852819507e-04, 9.37596905032942862e-04, 3.29160028373130104e-03, - -1.93176530108272017e-03, -3.82389751326079903e-03, 3.28111585382161977e-04, 1.35165071421654509e-03, -2.44934605063826206e-03, - -1.01374060585952093e-03, 1.90315179056236802e-03, -1.16243792021998994e-03, -2.23449354109382789e-03, -1.37390419356787702e-03, - 2.67043029813209421e-04, -2.46387317504163407e-04, 1.27404158449048992e-03, -3.11409821004060127e-03, 1.42054350882327412e-03, - 8.50945067451520584e-04, -2.18139096460945791e-03, 5.37585425556584451e-06, 7.70672126369275528e-04, 1.47205746609291919e-05, - -2.27122252035303826e-03, 2.73471086137731237e-04, -1.71770098939768396e-03, 1.79548953791325598e-03, 1.07201759382979695e-03, - 8.00872631239443744e-04, -6.93421194978720073e-04, -9.30281393379723794e-04, -6.30390648496625906e-05, -5.82231422949086564e-04, - -8.46299597976315013e-05, 9.00081479610586330e-04, 1.17059400966708599e-04, -1.17657919631858798e-03, 3.80463130954153492e-04, - 5.94799888416260611e-04, 1.37458545422499095e-03, -8.65911436633437981e-04, 4.03986631244411239e-04, -3.68569836363924258e-04, - -1.37212853610761101e-03, -3.54583726830509790e-04, 8.18394448681560531e-05, -6.41741245488995269e-05, -1.10730062409925695e-03, - -3.87839975193070567e-04, -1.49797684923353618e-03, 2.76129210001028514e-04, -2.21530592066440717e-04, 3.67206383764497469e-04, - -1.63449552926589903e-04, 1.33340756263806808e-04, 1.37461576726487196e-04, 9.37402543812214275e-04, 9.35976623153734815e-04, - 1.09446608551640808e-03, 6.60314338498173671e-04, 7.41023267300118505e-05, 1.96356821062653686e-05, 3.34462678969324925e-06, - 9.07111562029388140e-05, -8.59497626179119625e-05, -6.54182748356717204e-05, 3.18023886151265879e-04, 1.24059973148808592e-04, - 1.29131408350483987e-06, -2.85001271494982804e-04, 2.98328205348700711e-04, 7.22351177834776889e-05, 2.65141433646711721e-05, - -3.79703799498017980e-04, 1.00891724908919100e-04, -5.67380361354338442e-06, -1.33785413564818402e-05, -2.54723362593513693e-04, - -9.25645051781121415e-05, 2.47768104742008215e-05, -6.62764910229686775e-05, -5.69736192888645860e-05, -3.41068237011527789e-05, - 8.09156539163736121e-05, -5.62162696420001598e-05, -3.43941083506186279e-05, 1.33619279220014320e-04, 9.09933194450521986e-05, - 1.10025788491296402e-05, -1.41269448084213606e-04, 1.97425730308574887e-04, 4.13949297778524444e-05, 2.28029456020616418e-05, - -2.51957187227819538e-04, 1.07087421267623703e-04, 2.01951240903083911e-05, 2.16232156916533599e-06, -2.34732325786082114e-04, - -3.44848725799019331e-05, 1.02322264729879813e-05, -2.95808799705676908e-05, -1.27372633332256295e-04, -1.01181675232029001e-04, - 2.43965285934001316e-05, -1.56339350729979790e-05, -3.10666087069938407e-06, -6.48565764324702686e-05, 5.66240428071342533e-05, - -4.80947203208227109e-06, -3.27434987496428307e-03, 0.00000000000000000e+00, 1.94001371970481206e-04, 0.00000000000000000e+00, - -4.22146600015671676e-03, 1.85560412822053321e-04, 5.91960667993999233e-03, 3.46745751020892997e-03, -1.49624542277282911e-03, - -7.46997420480836351e-04, 2.71956837568511616e-03, -2.00362589759237692e-03, 2.84403667909016201e-03, 1.38522786944513302e-03, - -5.36253982302081788e-04, 8.98944385900057180e-04, 9.45948316279443557e-04, -1.10724429141635401e-03, 3.46491308247556264e-04, - 1.71076868721512518e-03, -2.83621464332214999e-03, -1.04214110182014098e-03, -3.29843443238391268e-04, 1.16249263818666692e-03, - -1.51263971259868598e-04, -5.12095086650722468e-04, -4.43868928176068683e-03, 1.09452571151002305e-03, -1.95905282494774008e-03, - -7.16502823696713313e-04, 1.80703181275910802e-03, 3.08021488597660107e-03, 7.63416447485232405e-05, -2.40820896115498200e-04, - -5.42123846874502098e-04, 2.79921673263123887e-03, 9.56711213597357204e-04, 9.12734617363823698e-04, 1.18329385902973100e-03, - 2.70548437862810518e-03, -7.56421605209681158e-04, -1.10451578857403000e-03, -4.68535394733205607e-04, 1.19301359831118807e-03, - 2.28790726615612307e-04, 1.01465655922533307e-04, 4.07810849728176426e-04, 2.37329397140924927e-05, 1.67118007317343706e-04, - -1.85034347043011804e-04, 2.39043782577092709e-04, 1.07377907210822799e-03, -5.05008157646158105e-04, -3.03557662440200656e-04, - -5.24421474456220906e-04, 7.10470807822329150e-04, -2.65441489219161812e-04, 1.86528767525131816e-04, 1.18768236344364813e-04, - 2.73773866769723212e-04, -1.37336329257661718e-04, 4.25102267178067332e-04, 3.61425250084589772e-04, 9.31561412223019954e-04, - 9.00923909497920207e-04, -6.91244956332927194e-05, 6.81184644780815534e-05, 4.94292460722651344e-04, 5.57832768280572605e-05, - -1.78247906031541014e-05, -5.39356541770310516e-05, 1.12847683543339510e-04, 6.97768161894662503e-05, -1.28801112173031391e-04, - -1.36258124552730511e-04, 7.52752984009248194e-05, 1.80478192845277815e-05, -1.41645378129016193e-04, -2.57661323644306191e-04, - 1.41172970367211290e-04, 1.68446669744071312e-04, -1.43510684701046498e-04, -2.49605693568589191e-04, 2.09270025912965222e-04, - 1.73380332203807320e-04, -4.31528168315061845e-05, -2.69385649188820129e-04, 1.44262017722768493e-04, 1.21410391924219496e-04, - -2.07613658141512274e-06, -2.75471606365465440e-04, 7.75847983715348654e-05, 6.67669015816173777e-05, -3.47205197316259882e-05, - -2.20564258990204199e-04, 6.79078647130726426e-05, 5.59892631528520842e-05, -7.15773427619622281e-05, -2.01846729733602123e-04, - 8.12540527443827596e-05, 8.67509042232947450e-05, -9.40223467407713106e-05, -2.10067860124576197e-04, 9.90070868211715723e-05, - 1.27019435552551516e-04, -5.23811311183937698e-05, -2.22191208252392599e-04, 8.42154234690965325e-05, 1.31078778198552006e-04, - 5.85256321380583660e-06, -2.20106146426574611e-04, 3.43903585322539085e-05, 8.17679926137757117e-05, 3.57696523905280228e-05, - -1.71306620715922918e-04, -1.69639454518841103e-05, 3.60183337728328407e-03, 0.00000000000000000e+00, 1.21002498222732104e-03, - 0.00000000000000000e+00, -5.31067389607137001e-04, -2.22812727852063006e-03, -8.94992413192695607e-04, 3.02492958377452523e-03, - 4.52889634571147846e-04, 7.04024195597577774e-04, -1.76994018522177218e-03, -2.78698760786973490e-03, 8.84419486352532524e-06, - -1.60114345443433800e-03, -1.79602328856612098e-03, 1.69645827046587699e-03, 1.22263306124923104e-03, -1.38672671784444796e-03, - -1.81715401816120699e-03, 1.12291672961585505e-04, -1.74014595698025396e-03, 3.00638238969133014e-03, 5.38769342023656716e-04, - 1.01168286456173001e-03, 1.25835738989465897e-03, -2.14855111778818704e-03, 1.94025636506503399e-03, 1.60138198682476798e-03, - 3.04996716051287957e-04, 1.51347934909390003e-04, 5.21670106763438379e-04, 1.75693890008179202e-04, -2.26149697116798717e-03, - -2.18303710192580295e-04, -1.51398914585641406e-03, -1.58816215964855886e-03, 1.55927169355978798e-04, -4.94225640241941215e-04, - 8.36202145908589763e-04, 4.73292588125403895e-04, 1.06473894198859907e-03, 2.09611117891008196e-03, 3.25952685546390664e-04, - -1.01655912251420307e-04, -5.18107271101577132e-04, -3.16226537170489612e-05, -6.51602000247405327e-04, -3.27558099950500984e-04, - 1.17758636912919704e-03, -2.12360966362415822e-04, -3.87091188014523164e-04, -9.60683801574256695e-05, -1.30698707823795617e-04, - -9.27708167827058093e-05, 4.67257929136822116e-04, 5.26735365201713777e-04, 8.67242094192128112e-05, -7.67583181024485969e-05, - 2.96172266445650628e-04, 1.17659790932125708e-04, 7.92032613046985052e-04, -4.73512687405615112e-04, -1.16486541346945304e-05, - -4.35223289100590137e-04, -4.07299279253803910e-04, 3.52623807285629663e-04, -5.29775841676903103e-04, -4.05973013715962621e-04, - 3.01167171669751194e-05, 4.49564889859656861e-05, 4.98072315856021145e-05, -4.68575668174601442e-05, -4.26129773365465023e-05, - 2.68927754707826733e-05, 4.85345234325915614e-05, 5.01423283319458619e-05, 3.74641852071465678e-05, -1.15116648622984601e-04, - -6.37275438469799910e-05, 4.80550144767946612e-05, 1.06992536936288300e-04, -1.04196940176600408e-04, -7.16075071301549481e-05, - 2.43099112315813413e-05, 1.17741921950054504e-04, -3.77547890067578420e-05, -9.10460029082267824e-05, -9.11504130315538267e-06, - 4.97971810224103162e-05, -1.58264998536182614e-05, -4.29621030846360960e-05, -1.14992848529921406e-05, 1.54112443854980599e-05, - 5.70264442689391733e-06, 1.07379249356645216e-05, -2.07929050873082623e-05, -5.79162054506014299e-07, -1.78040733197804610e-05, - 2.89084424773166903e-05, 2.71190365929275905e-05, 5.58295705560797958e-05, -6.04971618174102746e-05, -3.76119450581838938e-05, - 5.89902787458344548e-05, 9.92815613917080503e-05, -4.15442049260147703e-05, -9.02971715609474616e-05, 3.14235053266474025e-05, - 1.01079611905228811e-04, 4.68143507524649596e-06, -6.77319129898850883e-05, -1.82988584621209425e-05, 5.02189403381184127e-05, - 1.73189683402960021e-05, -4.66784771895106733e-05, -2.66409942440282929e-05, -1.34728524105830606e-03, 0.00000000000000000e+00, - 3.12714909306053895e-03, 0.00000000000000000e+00, 1.18306606932572895e-03, 6.05240992502963007e-04, 1.88764954821659086e-04, - 5.42596575385474313e-05, 2.38749601975439107e-03, 1.22954432709531194e-03, 1.48925894226772590e-03, -2.20463386750377596e-03, - -1.18702352618399401e-06, -1.90558390450811617e-03, 1.14020421473847301e-03, -2.28729301768068621e-04, -1.88094245511257613e-03, - -2.01084137143882813e-04, 1.32488933882795711e-03, 1.18616181726357499e-03, 1.29398001359800913e-03, -2.71207856984953012e-03, - 8.19803578829499032e-05, -6.65644985171580774e-04, 8.75321220674210219e-04, 1.84074218759263395e-03, 4.06738204865472806e-04, - 4.38901299441693939e-04, -2.67651935970348621e-03, 6.81954479043894637e-04, 6.68960422943894986e-05, -9.81998477803277181e-04, - 1.20805174682736713e-05, -2.81493824936257227e-04, 6.95809492034823291e-04, 4.19125664581867304e-04, 1.75523867792575210e-03, - 7.32292775253121737e-04, -2.82641400905200510e-04, -1.46138290430873900e-03, 5.75321504003394740e-04, 2.86865541338693028e-04, - 4.34876815609579008e-04, 7.83080633245084208e-04, 4.94068325342467878e-04, -8.49557197723212068e-04, -8.31842546134029881e-04, - 5.34145624564779644e-04, -6.14076102583219338e-04, -9.72964231627292640e-04, -1.43721827729833109e-04, 2.01814576789058711e-04, - 7.67106614249287539e-04, 7.90377521464399315e-04, 4.14567584917532341e-04, -1.99241162791407225e-05, -1.66330553501719002e-04, - -1.39824103009899810e-03, -4.42117898608442521e-05, 5.84579711485059780e-04, 5.75612275643427223e-04, 2.74664173075564607e-04, - 2.65715923566144636e-05, -4.21666909316897534e-05, -1.19734102816029612e-05, -1.94256110037154401e-04, 1.01515434301023007e-04, - 2.67927527956691980e-04, 1.21374022529998612e-04, -3.81182434679552928e-05, -3.99384457032958676e-05, 1.67162746294344109e-04, - 6.14866880150712615e-06, -3.85414892397567823e-05, -1.12966523933537806e-04, 6.34552866927493963e-05, 1.93741280076219993e-07, - 4.10563732161052979e-06, -1.26284088177673306e-04, -7.55315779155755080e-05, 1.92745758019108296e-05, -1.13406998393739012e-05, - 4.07566430480326360e-05, -4.48671856566166020e-05, 5.14430653688213020e-07, -4.07333593756617344e-05, 8.00104941396855918e-05, - 5.41507565868616441e-05, 3.98494652648809884e-05, -2.07914223765169624e-05, -1.25512252041928818e-05, 1.41940036871691613e-04, - 7.32425589110114811e-05, -2.51512828443974635e-05, -1.19512272253876809e-04, 9.67416793113340325e-05, 5.82166703146601216e-05, - -6.26370433431184249e-06, -1.09923499775177200e-04, -2.87744323783186204e-05, 2.54233406189743207e-05, -2.10691302726592179e-06, - -3.12188949662077221e-05, -5.86605172857020092e-05, 1.89560583816991700e-05, -1.04040428617575500e-05, 4.44595633021011336e-05, - -1.56251824021060200e-05, 3.41616520292055713e-05, -1.52515501601725206e-05, 2.31782612290289723e-05, 4.54765941433281945e-05, - 3.70353965639083326e-05, -2.48628648484161422e-05, -3.78366768210461839e-05, 6.18128780983269579e-05, 1.00801012570994608e-03, - 0.00000000000000000e+00, 3.47342291476345876e-04, 0.00000000000000000e+00, 7.91801506949049000e-04, 2.41648709536439622e-03, - 2.75878765148988314e-05, -1.42178280189469899e-03, 9.03240112720424823e-04, -1.56794445064509409e-03, 2.94565430782157717e-04, - 1.18232427518331494e-03, 2.50420503753315303e-03, 7.18942036700169896e-04, -5.36395691591266192e-04, -1.86258200998779509e-03, - 3.29548349853266565e-04, -5.13252882376217934e-05, -1.94254317541928687e-03, 2.18830456667285195e-04, -9.60854372387139272e-04, - -1.16624243286916505e-03, -7.85552741685865383e-05, -1.32933508428586297e-04, 3.09585668826129650e-04, -7.10966795883627824e-04, - -8.71756659030432663e-04, -2.27897207039004610e-04, 1.61772288010974315e-03, 7.16790313587811995e-04, -5.01650554121614123e-04, - 9.71216763704305639e-04, -1.22884709652954904e-03, -1.46349407630147108e-03, 3.77995433273275170e-04, 1.17850182886075107e-03, - -8.07524644944247099e-04, 5.47488208982875005e-04, -2.83179916648217922e-05, 3.22551697665504763e-04, -1.09287117692114400e-03, - -9.25209472688941724e-05, 1.55444562488144710e-05, -7.54245519189904352e-04, -1.14660162251744202e-03, 7.48883115386481937e-04, - 1.71732250142289308e-03, -1.47036164048469710e-05, 4.51407428437879436e-04, 1.18680813584906390e-03, -6.72638438381541063e-04, - -6.97316848749536490e-04, -3.08263583383085790e-04, 5.65595983350456626e-04, -5.59797981166573668e-04, -4.26396998746973431e-05, - 5.98503817888803680e-04, 1.13018384155006801e-03, 7.22319902981317995e-04, -4.73045270082827313e-04, -9.90990376668181587e-05, - 1.31642491991061888e-04, 1.56034616915051694e-04, -1.14773260272165305e-04, 2.03221727850923800e-07, -3.50912025092656228e-05, - 1.32230955962657016e-04, -1.98452567834938321e-05, 1.05361071131588310e-05, -3.98500767524021935e-06, 2.79257280511491612e-05, - -8.26066314796087718e-05, 3.94515619184286295e-06, 1.43449934940676807e-05, 7.28684565532049394e-06, -2.02274386187340809e-05, - -5.80238351293255621e-06, 6.41043912182615570e-05, 4.18971091022072242e-05, -1.17256699183353403e-04, -1.80114114610353696e-05, - 2.98002704400505139e-05, 6.00549650472916225e-05, -7.26624164000236908e-05, -5.08022754955713893e-05, 2.12961246777251218e-05, - 8.15905788537672430e-05, -5.24679151035354737e-05, -4.72793083387787640e-05, -1.00706341258723311e-05, 7.85407806503067980e-05, - -1.67426868521839296e-07, -1.53964885518920599e-05, -1.73452868932099002e-05, 5.41309373643272800e-06, -7.78796169440987244e-06, - 4.24209004120176683e-06, 1.31103899532218097e-06, 9.03134330516295739e-06, -5.47716075715314646e-05, -1.75259416817880711e-05, - 3.39369459010566274e-05, 4.45394216516285720e-05, -6.33645059964500198e-05, -4.53989029125374428e-05, 2.30499073301049214e-05, - 7.01930476332635278e-05, -3.70740476127565899e-05, -3.95730802289417580e-05, -1.28283101994449709e-05, 5.13649901186186223e-05, - 1.62222452549143097e-05, -3.95332838575619596e-03, 0.00000000000000000e+00, 9.73971711510582564e-04, 0.00000000000000000e+00, - -1.63334095657213601e-03, 2.47566297975661915e-03, -4.61067854034823989e-04, 1.00227945503756797e-03, -8.98849702359479129e-04, - -9.89062784124243724e-05, 4.16612817020121440e-04, 1.69845399686099387e-04, 1.40704833076194490e-03, 1.58608145473462586e-03, - -1.91534747392348593e-03, -1.50556041518790020e-04, -7.41177503466006714e-04, 1.80077341737210116e-03, 1.82148333058896402e-03, - -2.36480063043344104e-04, -6.69607791546209994e-04, 1.45142101651430299e-03, 1.73832130576143714e-04, 8.93804851118562668e-04, - 5.14804835010676596e-04, -8.60802883056195796e-04, -1.49094753190589895e-03, -5.49339444448599160e-04, -9.43782543463274435e-05, - 6.78581866352359793e-04, 2.40555226995407996e-03, 5.50420320933374310e-04, 1.06689345052416503e-03, 1.11546355912698204e-03, - -2.51654815915527226e-04, 1.05362642615015507e-04, 1.51342669550902598e-04, -1.18709605961395514e-05, -3.48687623727660372e-05, - 2.66172462883273715e-04, 1.22640520127150393e-04, -3.53049495511274401e-04, 2.10819480972762000e-04, -1.32719882022899207e-03, - -2.68288818956041589e-04, -2.09821739624757906e-04, 4.54672184206733891e-04, -1.85821605909427607e-04, -6.69258067322836808e-04, - 4.19466498351806936e-04, 5.98458432727136413e-04, 3.41464685789424362e-04, 3.08215819645630260e-04, -2.95548945659434843e-04, - -7.24507159240115662e-04, -1.69082755504923292e-03, -1.93520904983491714e-05, 1.35191372580951795e-04, -2.56397811086976233e-05, - 2.33630592103984520e-05, -3.87116937938718973e-05, 7.81921474464154553e-05, -6.33964727838977121e-05, -2.12567160577475314e-05, - -9.42215352607953948e-05, 5.33226219041193637e-05, -2.21376049296527211e-05, 6.92024697881541171e-05, -1.20697375237608106e-05, - -5.29224653986627494e-05, -5.69801791450185759e-06, -3.27120027041702426e-05, 2.85749659021073320e-05, -4.20546764722071632e-05, - 1.98781427031484195e-05, -5.38405801763815410e-06, -3.60922281559310912e-05, 2.75190032543574721e-05, -2.65219063811620724e-05, - 3.90728273668446096e-06, -4.56887670342133939e-05, 1.64537934490613995e-06, -4.85903112312865320e-05, 4.24402246231590422e-05, - -4.13561365234884525e-05, 8.75373073637312674e-06, -1.21030282885749017e-05, 6.58122011178998717e-07, -4.77810740958057329e-05, - 7.18444564697379224e-06, -1.26287955993816603e-05, -4.19957851422694573e-06, -3.40668636228985117e-05, -1.81427746122776006e-05, - -1.29807277238031617e-05, 1.52633508008959505e-05, -9.32846106770538938e-07, -8.25199093839484345e-06, -1.53075654575231387e-05, - 1.90849812166562513e-05, -1.94244976250517904e-05, 2.30351054519609033e-05, -8.12019352100231694e-06, 1.41254032313609714e-05, - -5.15379624616807793e-05, 2.10763449534356613e-05, -3.20853263814959310e-06, 8.77168653988632320e-06, -2.58071167847657522e-05, - -7.75701334972038760e-06, -9.93028892835044389e-06, 1.38436251757236696e-06, -5.72249229404819815e-03, 0.00000000000000000e+00, - -6.32581087658179333e-04, 0.00000000000000000e+00, 1.61767889408735797e-03, 2.19778973626455487e-03, 1.96918718115947095e-03, - -2.65739741538310219e-03, -4.02877235435324934e-04, 1.82841358339318606e-03, -1.98190948111654397e-04, 1.84031700925872818e-04, - 9.14586352256133118e-04, 3.19426607242560368e-04, -2.39250809083575884e-03, 5.81493000541998505e-04, 3.77857679493603688e-04, - -6.86936120110013377e-04, -2.82807248390244833e-04, -6.70701771087373505e-05, 1.05241439367069302e-04, 4.46545395702673144e-05, - 1.68820664009942988e-03, 1.18800350711883193e-03, -6.58313265148805686e-04, 1.17053380848879200e-04, -7.17271890677809485e-05, - 1.85577007448963415e-03, 6.56520849846081700e-04, 8.06017465774315294e-04, -1.93797726968085720e-04, -1.75313812654149300e-03, - 9.27674844695662668e-04, 1.17445496798684705e-03, 9.54690738368271698e-04, 6.09946281790876106e-04, -1.02725245012973807e-04, - -1.03470126681415200e-03, 2.71870677502123641e-04, 1.01664056791575709e-04, 1.40092211191593103e-04, -7.42827786391725441e-04, - 2.54015410108206197e-04, 4.62154858422488414e-04, 4.73601196282340514e-04, 8.36667553932069407e-04, -4.24839064668559993e-04, - -1.18580662211388403e-03, 5.53470270383688029e-06, -7.12069686521007972e-04, -3.12850226308962768e-04, -6.28311957809785690e-04, - -8.30599693854902740e-05, 1.55928940929191389e-04, -1.60018398001453190e-04, 1.85250076757384821e-04, -1.57732838480953709e-05, - 2.95813088176528736e-05, -2.23827148064990915e-04, 4.80249509368113500e-05, -5.82639775077897334e-05, 7.00915612005133102e-05, - -1.77709281195849987e-05, 9.54475479352618022e-05, -1.06501231685877503e-04, -2.52725768132289197e-06, -2.87163499743147541e-05, - 2.39634619540592104e-04, -7.01848644852101600e-05, -1.07730520602342608e-04, -9.15501307042449695e-05, 5.55930835071830897e-05, - 7.65236411313137280e-05, 3.78463407174196132e-05, -8.20428675414204951e-06, -5.70295554976857978e-06, 1.26162015242596914e-05, - 1.10521120895615412e-04, -6.19508662898057469e-05, 3.94284099299287429e-05, -1.06451388614695302e-04, 7.47878473709218306e-05, - -5.21118007184475231e-05, 5.90512347485764542e-05, -9.31374583187064725e-05, -1.76537540334046529e-05, -7.82954623428642381e-05, - 6.31966793043861619e-05, -3.36067601811582521e-05, -5.23997892308786733e-05, -6.79521363541582459e-05, 3.05704464569093182e-05, - 2.23407406348362189e-06, -1.17716210222080909e-05, -5.41817760084240387e-05, 2.65837093897156702e-05, 9.77892152361844917e-06, - 3.98189921094368982e-05, -4.68398123377187695e-05, 2.83937454235591119e-05, -2.31712065750914126e-05, 5.78505330157043243e-05, - -6.07388476988686199e-05, 2.80495746496069133e-05, -7.16977469524132671e-05, 3.06211359179215205e-05, -4.91673798626069715e-05, - 2.17809145436793205e-05, -1.20189266317283195e-03, 0.00000000000000000e+00, -1.24444005867499095e-03, 0.00000000000000000e+00, - 1.73864859937527096e-03, -2.10016679995760200e-03, 1.28097965557804499e-03, -9.37869122558217835e-04, 1.23244624215056511e-03, - 4.29296709581100113e-04, -1.39876407807240904e-03, -1.77139693497456300e-03, -1.75368292696427997e-03, -1.88220407037240512e-03, - -5.97882747390380697e-04, -3.20840209140584487e-04, 1.07829902637683606e-03, 3.48422576558867793e-04, -4.98399522356942812e-04, - 4.85015946638849439e-04, -7.40868022399493063e-04, 3.89788722352541486e-05, -1.50683679721151501e-03, -5.68710376996097691e-04, - -1.17794557282445807e-04, -6.69071298330275012e-04, -1.54243277037009394e-03, 3.93673397135044668e-04, 5.02542184595859242e-04, - -1.06141332845498607e-03, -4.68541722612586032e-04, 8.09111430645225208e-05, -5.50488474901892027e-04, -1.76232702790926301e-04, - 1.17927273469369909e-04, 8.80531874629222823e-04, -3.17470244298062771e-04, 4.64126640010351500e-04, -5.84186413684128505e-04, - -1.42019871106746317e-04, 1.14102906216628905e-03, -1.13422500815021313e-03, -4.40136070204560524e-04, 7.81230568059088971e-04, - -7.48231811144619272e-05, 2.70624883281615704e-06, 7.77629329803327529e-06, -4.64890263687434737e-05, 1.29456925148187810e-04, - -8.26415855695131331e-06, -1.35796182420071221e-04, -1.13417756509377808e-04, 4.71475937122163948e-05, -1.35640896999089205e-04, - -1.77588284877164021e-04, 4.44527488443097229e-05, 3.61597554605081118e-06, -8.57653366949178396e-05, -1.04773375499409501e-04, - 1.67387410624966980e-06, 3.27745304038831628e-05, -7.35752623470212766e-05, 9.67836329131315262e-06, 1.24611546920806011e-04, - -2.07100197446184124e-05, -4.74290184099852226e-05, -6.27778738001704550e-06, 1.14722525535037299e-04, 9.15928222588590575e-06, - -5.24769508651932535e-07, -2.64488074208383205e-05, 1.89369901667540120e-05, -9.02543609331752848e-06, 5.05981564857997049e-06, - 1.50033852168410511e-05, -3.22506474294869728e-05, 1.69892618976147802e-05, -1.22510414201922799e-05, -1.72479602440841401e-05, - -5.38753752232114648e-05, 3.82701797625889268e-05, -2.52126883145274404e-05, -2.72655360701411011e-06, 2.38136850519584826e-05, - 3.89460713712125724e-05, -1.44085864133448205e-05, -1.99183168836612192e-05, 1.40299281945465198e-05, 3.41954900402774203e-05, - -3.38967848729448998e-06, -3.34956295772950317e-05, -8.08169691723178865e-06, 1.75633301603197390e-05, 5.66459538142349871e-06, - -2.32417858834375024e-05, -2.61422397808690076e-06, 1.61959819366858825e-05, -1.41749825797410821e-05, -1.69536160529109602e-05, - -1.31441549108300885e-06, 1.56297638295987488e-05, -1.11585138806505809e-05, -1.65126158152218315e-05, 9.87884239323989340e-06, - 2.03783651816531221e-03, 0.00000000000000000e+00, 2.96441215597000821e-03, 0.00000000000000000e+00, -1.20692298413791507e-03, - -1.67976475604672201e-03, -5.55507989859292846e-04, 2.41084152649467202e-04, 1.56009441290519001e-03, 1.29451122431705899e-03, - -7.34843389900259429e-04, -1.14363222895938195e-03, -1.04558576783006095e-03, -1.36385048193016396e-03, -1.40388960701079294e-03, - 6.47371830280723940e-04, -7.50606293589330164e-04, -8.54271538689986695e-04, -4.38830402088630537e-04, 5.99525655311079764e-04, - -1.78097452143089407e-04, -2.74859279931684324e-05, 4.58302159015211809e-04, 6.96953952070895151e-04, -9.09138958706189721e-04, - 1.00859289053476311e-03, 1.03420094281303607e-03, 6.06923899074255464e-04, 1.89553126330842806e-04, 1.07961345910163406e-04, - 1.22474291555961902e-04, 8.97871951519685265e-04, -2.03363015143865218e-04, -2.90422734859094615e-04, -1.16390797079040211e-03, - -4.07437136982752909e-04, -3.33759313478539392e-05, -4.13217846735850717e-04, 6.11501445766974655e-05, 2.30660848037552498e-04, - -1.65860197748338308e-04, 7.32838125453208456e-05, 3.05772451206082208e-05, -5.86058550125370254e-06, -1.00712626716708905e-04, - -1.16636328519362104e-04, -4.39030870540731342e-05, 2.85746939544883230e-05, 1.21787965357839705e-04, 3.46888941913913528e-05, - 1.02679377633142107e-04, 4.05996014113190428e-05, 2.30543771929583613e-04, 5.14945396569508813e-06, -1.65368020862696715e-05, - 9.04748986364313894e-06, 2.93878012034917504e-05, -7.94825676720516274e-05, -3.80497824239483319e-05, 7.03625355594050394e-05, - 8.98471420453423214e-05, -2.80862342068120786e-04, -8.14566101491249101e-05, 3.25979861574083376e-05, 1.06156949242827603e-04, - -1.32132181275301412e-04, 1.27583620705697613e-05, -5.79628880366303540e-06, 2.43199623878137608e-05, -3.60126018132162520e-05, - 6.15951019505404804e-05, -3.99183515734159737e-06, -1.76186429787627617e-05, -4.49466237943879815e-06, -9.63231232761454656e-06, - 2.20206236945611825e-05, 4.64279356163652205e-05, -8.18007824948389131e-05, -1.75678833941443713e-05, 1.16166757075860911e-05, - 8.50503368640412397e-05, -5.73112362586235122e-05, -3.02595465759658291e-05, 2.43223590855599709e-05, 9.00167115746459403e-05, - -4.42196883338474652e-05, -4.77861166708995849e-05, 1.47871285798455200e-06, 6.46850476250585682e-05, -2.84469853186260997e-05, - -4.06690705935917952e-06, -1.52285477243602015e-05, 5.34350029362040406e-05, -2.36525750629738904e-05, 1.79723054916162533e-05, - -9.66549826127890040e-06, 5.63345183102968898e-05, -2.80051432389576894e-05, 3.21773388999549127e-06, 1.50608941802879105e-05, - 5.60896638506370299e-05, -2.17105368788846218e-05, -1.18764180976179311e-05, 7.83174918154457391e-06, -3.60332041478658661e-04, - 0.00000000000000000e+00, 3.49318793191280520e-03, 0.00000000000000000e+00, -4.69558634437114002e-05, 7.74460196242976196e-05, - -1.72713645917304507e-03, 9.25559109923871173e-04, 2.70769786797511226e-04, 1.31867157982758915e-03, 8.27630755758396825e-04, - -9.10032934212391328e-04, 1.05207266211394096e-03, -8.61162790483724626e-05, 5.89935325723504357e-04, 9.44401798870870619e-05, - -5.30424580391579309e-05, 6.46005187543645225e-05, -1.38406487947310611e-04, 7.71434788940860436e-04, 5.73812403577386287e-04, - 9.96893494257266189e-04, 1.03367888609143905e-03, -6.48856607584904002e-04, 1.75666860474048509e-04, 3.15758899087953469e-04, - 8.50083079068923893e-04, 3.13659018423505167e-04, 1.51559585553799191e-04, 1.51467162868235410e-04, -1.29431785041904613e-04, - -2.39797674845940504e-04, 2.33549706236320912e-04, -3.00841368338772394e-04, -7.95062782924988755e-05, -2.07935910158562009e-04, - -3.92408950341176794e-05, -3.35406314150178588e-04, -1.45057999540062810e-04, -1.56325561593936710e-04, -2.13483774208381123e-05, - 1.23660725477051607e-04, -4.52126231413514295e-06, 1.23543299691240512e-04, -2.02273348603037631e-05, -1.12762498094144112e-05, - 1.29264958426136413e-05, 1.42217450806022812e-04, 4.33277313716177756e-05, -8.88754036309822399e-05, -4.52579094020371517e-05, - 1.53952587710451221e-04, 1.49223702486409108e-04, 1.89769705761112033e-05, 8.79407357783015825e-05, -2.42581624364586902e-05, - -2.09538727115885126e-05, 3.19715400980995704e-06, 2.93210815056320497e-05, -9.82593484599446274e-06, 3.54911921458880570e-05, - -1.01403207835097905e-04, 4.75557097499886204e-05, -5.15654800601184123e-05, 2.56187188204641513e-05, -4.40789852288279039e-05, - 9.02715865368834106e-05, -6.39625122936784616e-06, 3.91163204254141270e-07, -1.43497473262268803e-05, 1.48738995955006900e-05, - 7.10059543838856299e-05, -1.44858422217440211e-05, -2.29202291658015780e-06, -4.74320720877375356e-05, 2.16688715314149923e-05, - 3.19024146278115502e-05, 6.65770850586241554e-06, -2.52674351434578406e-05, -5.95618473210036723e-05, 1.85160634771636908e-05, - -1.66385627558361417e-05, 3.01536532216370809e-05, -2.34318990675550609e-05, 1.99994047973059210e-05, 1.20799934486498588e-06, - 4.68905539792476611e-05, -4.05199614593984003e-07, 2.15121745493054430e-05, -9.06512486920190993e-06, 1.60091575368399188e-05, - 4.26017345086028326e-05, 2.60811047294765523e-05, -6.95236528206229650e-06, -1.14411704502663105e-05, 2.15010636838700904e-05, - 1.45470558851883310e-05, -6.07212258084767841e-06, -3.22028438478360636e-05, -3.17933241488657482e-07, -2.53151479665288202e-03, - 0.00000000000000000e+00, 1.12967622013809398e-03, 0.00000000000000000e+00, 5.16439235336714790e-04, 9.13502172529712803e-04, - -1.10885916513099808e-04, -5.87650332004382970e-04, -3.10824645598157688e-04, -2.04340181774912815e-04, 1.50058658499531005e-04, - -6.27762758616644544e-05, 6.34086998122845619e-04, 1.62611213591308410e-04, -2.58000457753021289e-04, -2.28405829315187425e-04, - -2.41752383261545410e-04, 3.87195735267530246e-04, 1.31350888922379520e-04, -1.29243632867355305e-04, -1.86027850373812504e-04, - 2.69006585922663719e-05, 5.31648558458435233e-05, -2.81913823664273785e-04, 6.12596182709963886e-05, -1.99722422596107518e-04, - 1.65292373762217508e-04, 1.93923419729845505e-04, 2.75862370177224576e-04, 2.77743170358154992e-04, -2.42249854023419709e-04, - -2.36920920177450216e-04, 1.24587860121446999e-04, 1.12559537025789104e-04, -8.91336246402938640e-05, -1.40571914192917500e-04, - 9.69331183964188236e-05, -1.44820965513538111e-04, -1.28839828734424514e-04, -5.82527231861141738e-05, 4.37826620002375143e-05, - -7.67180354379144502e-05, 5.74861437218499151e-06, 5.02678298138450438e-05, -5.91313323346461106e-05, -1.08838366163098205e-04, - 6.49284469111140313e-05, 1.76727711960057211e-04, -6.84530490306975691e-05, -1.42567887910064205e-04, -3.17538645802270311e-05, - 6.82633542136118585e-05, -2.69908329748347014e-05, 1.98739426028434396e-05, 7.54438074321606313e-05, -6.35141527967402148e-05, - 1.72478873877519024e-05, 6.65218946661316610e-05, 5.90351225582636660e-06, -5.29346479560344747e-05, -6.09586847041837740e-05, - 5.77794329008206426e-05, 5.15519395345650716e-05, -5.66799896792458604e-05, -7.73712507640684068e-05, -4.08972980683335022e-05, - 6.47698884178398945e-05, 2.56965476906213634e-05, -1.07169096508788499e-05, -3.11367084296445586e-05, 2.64692802759765304e-05, - 4.09729157302286519e-05, 3.11189278864267132e-05, -5.78741270881866221e-06, -1.16942216776686414e-05, -1.41167610522350718e-05, - 2.77421966670059834e-05, 3.43719238319505278e-05, -1.16804942644560203e-05, -6.12184985312735501e-05, -2.94284212452698707e-05, - 3.96388866360877800e-05, 3.78998547828979167e-05, -4.92209043992790452e-05, -5.40755588507646826e-05, 2.16255420278872399e-06, - 4.63317120113593031e-05, 6.94969244998754276e-07, -1.75200269820160494e-05, -3.06430625697614833e-05, 3.43536241910082486e-05, - 1.58233835524091911e-05, 1.81976913278585211e-05, -1.12638695311979910e-05, -1.18290933055904215e-05, 1.54065347512193402e-05, - -1.97457057792955592e-03, 0.00000000000000000e+00, -6.17903706175687285e-05, 0.00000000000000000e+00, 2.39974191600898101e-04, - 1.09676205964747407e-03, 2.66073294575686298e-04, 8.97726904827368986e-05, -4.21704772986081135e-04, -2.82186869262147694e-04, - -1.97386162412418906e-04, -4.55182257600979224e-04, 6.90018589665085673e-04, 4.30022425770627912e-04, -4.13602752490345210e-04, - 5.26412358602485543e-05, -2.99605019324083717e-04, 3.36147203973198865e-04, 5.35288011923700297e-05, 1.19957570327492498e-04, - -1.36669491045843299e-04, 1.94136007080692206e-04, 2.01776429817749806e-05, 4.22807143534335079e-06, -9.29802360975042527e-05, - -1.55693138695467696e-04, -2.64935701201438924e-04, 3.83809379110780418e-05, 3.68315910254809705e-04, 2.22675272309271816e-04, - -8.40837046939708617e-05, -1.26650144654841398e-04, 2.75725685385756389e-04, 2.08514653482221111e-04, -1.32192752900868492e-04, - 2.67546735251402909e-04, -1.46951286818532412e-05, -9.51276528158519121e-05, 1.12515159008266409e-05, 1.65126940488277810e-04, - -1.05096096778006392e-06, -1.48931894867637118e-04, 3.88335645430680542e-05, -6.79220808847396388e-05, -5.68333508117840373e-06, - -1.13497193495425101e-04, 4.40865395213776718e-05, 5.81689000146885115e-05, -1.07304496192630510e-04, -1.09553109663381809e-04, - -7.36678296651362596e-05, 3.05076035218356775e-07, -7.14562184723935252e-05, -2.17689602162982504e-05, -8.86635043731916103e-05, - 1.55830079922932419e-05, 8.53188645751188393e-06, 1.27616620265669114e-04, -3.07660183064505199e-06, 1.77693877526996815e-05, - -1.21881433351298308e-04, 9.70820239258155421e-05, -6.88477447173295197e-06, 8.35812145959487023e-05, -7.08861142732914167e-05, - -1.95410408058430200e-05, -2.99815675113649160e-06, 5.30146506678979022e-05, -1.17983237948369116e-05, -4.06521074556727538e-05, - -1.35928793450611709e-05, -2.69206670526964770e-06, 2.37405849777586631e-05, 1.41027369716773706e-05, 2.38608811716672410e-05, - -1.04093815988561802e-05, 2.94018573099677933e-05, 4.79097717318764199e-05, -3.04484990645996103e-05, -7.41822772705316389e-06, - -4.31780968615617526e-05, 6.00484819457901999e-05, -2.16148968238596922e-05, 2.63326485734068621e-05, -6.98149485535926799e-05, - 6.37673262907134300e-06, -1.49451539851202210e-05, 5.16763312907252601e-06, -3.01509621222700420e-05, -3.38437301504128696e-05, - -3.09602298739826106e-06, 1.17686850815125304e-05, -1.46172096654267804e-03, 0.00000000000000000e+00, -1.04257220251350712e-03, - 0.00000000000000000e+00, 3.37601615679230670e-04, 3.62179244244991653e-04, 4.66516969872935697e-04, 2.20896945250713200e-04, - -1.14856098350701606e-04, 3.71733378208419078e-04, -4.56528102625122800e-04, -5.00478119862720716e-04, 6.08268940632159427e-04, - -3.32928662560408225e-05, -5.59187320611888869e-04, 4.24940469217676927e-04, -1.54626662460820405e-04, 1.53803155025080491e-04, - 1.42877804893037906e-06, 6.98532531440891971e-05, -2.98746773248649629e-05, 1.35471141341737106e-04, 6.98092718847611736e-05, - 3.63862564501528970e-04, 1.77889982501028103e-04, -1.05830904220531507e-04, -5.61018978334430437e-04, -2.70461507638364820e-05, - 2.69731733460872600e-04, 6.85854381210795444e-05, 3.93859632863456042e-05, -3.31099850163778212e-05, 3.15642194180260993e-04, - -8.55565884347129894e-05, -8.81178757452353422e-06, 4.14099579966528220e-04, -1.18125841112851310e-04, -1.58864732692415517e-04, - 3.00173248333441702e-05, 2.77190872568433815e-04, -2.56765255788473531e-05, -1.57033171768035395e-04, -3.32959711484975829e-05, - -9.63927667599435235e-05, -2.54742433883303236e-05, -6.50765457697475766e-05, 5.04018352818951719e-05, -3.43950512225536629e-05, - -6.17363546212169873e-05, 5.10273923307524849e-06, -5.84607735450458815e-05, 1.64379737466675901e-05, 1.29734901817078911e-05, - -3.92696914882976447e-05, -1.64041530160981709e-04, 1.42915901318080097e-05, 4.48109662215338665e-05, 6.40760478636463835e-05, - -4.00827654443697601e-05, 5.23179794399272952e-05, -2.72653980923539735e-05, 4.13038148568586624e-06, -6.86097916757893300e-05, - 1.53031279669278410e-04, -3.76813873437484393e-05, -6.06148813378603305e-05, -6.39726082097255067e-05, 9.97952163664085433e-05, - -8.05566844538046094e-07, -1.79349356201000397e-05, -2.64035614102093801e-06, -2.27319992387671927e-05, 2.44803623725549528e-05, - -4.92446408524156795e-06, 1.69097417534366305e-05, -2.02331969300959902e-05, 2.23257754347340127e-05, 2.79953564079958715e-05, - -2.77971641526118441e-05, 5.31337018758826847e-05, -1.51685357707728206e-05, 1.21185601596955313e-05, -5.54255754132544848e-05, - 3.39800800142221935e-05, -1.37705220101120503e-05, 1.17026527332457494e-06, -4.84099736084911341e-05, 1.72580930219210916e-05, - -3.67873286266726476e-04, 0.00000000000000000e+00, -9.71856035308778688e-04, 0.00000000000000000e+00, 3.68001000603857041e-05, - -1.80366306297578393e-04, 5.95465838399280006e-04, -9.73074587525231199e-05, 4.33035509414850597e-04, 8.68813550017956382e-04, - -3.55604219599788853e-04, -2.09149810167836517e-04, 6.05497606635874435e-04, -4.44285688213212702e-04, -4.96326090016681234e-04, - 2.76200191743740885e-04, 1.05594362050475299e-04, -7.31746111760187581e-05, 5.25437405368234128e-05, -7.03636533238632066e-05, - -7.04810658251703114e-05, -2.21448446357462613e-04, 8.40919434072135200e-05, 3.61285642497185589e-04, 4.63859693039894900e-04, - 9.95447465281579533e-06, -3.90334836566050476e-04, -7.15137273935237281e-05, 1.58344253289186405e-04, -9.66561524647479064e-06, - -2.88464063028901239e-05, 3.20394934323419382e-05, 2.27870727298711814e-04, -3.85003894403811674e-04, 3.95453114218767795e-05, - 2.52344815518091095e-04, -1.28109809597042892e-04, -3.13591750088317250e-04, 4.95361157057811461e-05, 1.52566847685289017e-04, - -4.65342429065181135e-05, -4.37630316986734248e-05, -2.94250258841729114e-05, -2.88828323869860414e-05, 3.73909881626153694e-06, - 2.72162890905132315e-05, -2.00735783121399998e-06, -8.45647849999474224e-05, 1.21455512759758114e-05, -1.54519685732128702e-05, - -4.95728310623586458e-05, 4.23491907495121640e-05, 1.22893175677633306e-04, -2.68419786355757812e-05, -9.60596847652382831e-05, - 3.08820983081861631e-05, 5.83890486469687431e-05, -3.73708698488206477e-05, -5.19159241357444848e-05, 3.66386671593869911e-05, - 5.07658846861618521e-05, -1.07304750005830703e-04, -2.83663556542631599e-05, 9.28807206358021626e-05, 3.70104011521805719e-05, - -8.34551268891536098e-05, -3.14113155589142528e-05, 6.63182318337119205e-05, 1.60213917824094198e-05, -3.52794936491844085e-05, - -1.59225419093221418e-05, -8.34046194147479916e-07, -9.65280581409041511e-06, 5.07677914813006063e-06, 2.03902166810200127e-05, - -1.25974535618156500e-05, 3.67496199937445797e-05, -1.69153230944175091e-05, -3.29180959908194180e-05, 2.52964761838148521e-05, - 2.14550118421411021e-05, -2.55984106137294917e-05, -2.09892146802813526e-05, 1.45091691712559505e-05, 1.05889292279405406e-04, - 0.00000000000000000e+00, 6.96557645777117211e-04, 0.00000000000000000e+00, -3.20653240139645156e-04, -3.06664898492693173e-04, - -1.30135967286087193e-04, -3.43685687318228197e-04, 6.99243111115629935e-04, 1.00931484720404399e-03, 2.27872845646686414e-04, - 5.60556585522428805e-05, 5.06668770409637393e-04, -5.61098753829031857e-04, -1.77788812269638309e-04, -9.26838818560580326e-05, - 4.80704370686056920e-05, -3.94480920452870476e-05, 1.13743624415380402e-04, -1.95593364550650988e-04, -8.22385939115209569e-06, - -2.22550243804433797e-04, 3.83433777349945372e-05, -6.14113903833953543e-05, 5.65029175348560203e-04, 1.64254592755116099e-05, - 6.44997102970363238e-05, 6.58176612450044410e-05, 1.26948782028661410e-04, -6.85633288983039511e-05, -1.17595095165860504e-04, - -5.90185476888272837e-05, 1.31585913470637410e-04, -4.56978252250974911e-04, -1.00958846936701602e-04, -1.25259617920235096e-04, - -1.04798018922154108e-04, -2.72545293701832833e-04, 4.86208256378739653e-05, -4.49465427200034320e-05, -5.65278962179857657e-05, - 5.46913188228785663e-06, -7.25997168582917762e-05, 1.14384344901122901e-04, 1.12924097562157112e-05, 3.68523306125718506e-05, - -1.58208335465920613e-05, 1.20613043672090303e-05, 5.27346073833204513e-05, -3.86529074265486920e-05, 4.46597253672119545e-05, - 4.49755028762217115e-05, 1.30762541454545214e-04, -2.23656324639177317e-05, 3.19275114821177829e-05, 4.05961036565850809e-05, - 5.72814922207066132e-05, -6.32001323493957027e-05, -2.11556776338600419e-05, -5.16301940103973931e-05, 4.71248075383639623e-05, - -1.16687520784574999e-04, 3.37705783718914737e-05, -3.55213809620370029e-05, 2.36245507648186426e-05, -9.39852209287609514e-05, - 4.18229647627686027e-05, 2.05795533565095200e-05, 2.95759782556888409e-05, -1.11460217666459313e-05, 5.56781374858055805e-07, - 1.61083673677120723e-05, -8.87804840750498273e-06, 4.69737707507023012e-06, -1.46943693829812711e-05, 8.96017347561271887e-07, - 2.31898944912936817e-05, -5.75437116150547476e-06, -1.04050964809673511e-05, -2.31844808370536218e-05, -1.24228889211622706e-03, - 0.00000000000000000e+00, 1.91447976012779097e-03, 0.00000000000000000e+00, 1.86361784351676802e-04, 1.22099836958390012e-05, - -7.18563451828412871e-04, -5.44913205591266835e-04, 2.62429988030197430e-04, 7.46591568526208975e-04, 5.58329937558502609e-04, - 1.73536073229491603e-04, 3.28522185630468282e-04, -1.86008732903326717e-04, -5.28015697290392397e-05, -2.60360888337061416e-04, - 3.38623159395887096e-06, 3.98523056007639166e-05, 9.85712987849502202e-05, -1.84923290917329212e-04, -7.71217348849064299e-06, - -5.95492370208864554e-06, 9.80226288250609149e-05, -2.85565844690997426e-04, 2.03773487125666412e-04, -7.62700465832047414e-05, - 2.74605378426968504e-04, 1.01722822597336303e-04, 1.72888937367956423e-04, 6.14980529476756761e-05, -1.65564582674629617e-04, - -1.03937770636500405e-04, 1.79433136537534101e-04, -2.08448758771769422e-04, -1.89466752673463220e-04, -3.16495343152525463e-04, - -4.65119297713267725e-05, -1.06418923164135207e-04, 2.92133315556121309e-05, -6.26522370914165365e-05, -3.80204692959265470e-05, - -3.19351411420031736e-05, -2.69623453745025131e-05, 1.37371381422677307e-04, -2.75022603732538636e-05, -8.32319716531201625e-05, - -1.83373351979320508e-05, 5.83418131216442243e-05, 3.02271302751488504e-05, -4.98112931491525709e-05, 9.55320075053375307e-05, - 5.27885328323068648e-05, 1.74669745949123195e-05, 7.07665598251270749e-06, 7.65295271797020177e-05, -2.16827317655175404e-06, - 2.56158486391027717e-05, 3.90319152054964128e-06, 1.09187600520226411e-05, -7.09932774164822179e-05, -3.10808798303788108e-06, - -1.99276187654574111e-05, 6.66283232503938456e-05, -9.53193663619292649e-05, -1.38192357228852599e-05, -5.06310999643882654e-05, - 5.41699610443037853e-05, -3.01513898130062012e-05, 7.50384806164352122e-06, -2.46089181875213920e-05, 2.59233801595598333e-05, - 3.61281563025534099e-05, 1.03245043482577200e-05, 1.06651433549918202e-06, -2.36670929937189898e-05, 1.18133123540063415e-05, - -2.37752112057859405e-03, 0.00000000000000000e+00, 9.79902373011075313e-04, 0.00000000000000000e+00, 6.24243707435149868e-04, - 5.32552953373556688e-04, -3.43350821058730849e-04, -2.74480805820874235e-04, -2.27192880699002904e-04, 2.78499590851373610e-04, - 2.16286114391411107e-04, -1.60014133917291410e-05, 3.34567174557116290e-04, 1.63861606954495299e-04, -7.32105805604817811e-05, - -2.75173445122268732e-05, -1.63823844717904518e-04, 1.54240508845202994e-04, 2.27247826319914723e-05, -1.25891429989861308e-04, - -7.50300602967604688e-05, 2.19336099049784612e-04, 5.12062944564588537e-05, -1.20931381190694310e-04, -3.93305054302574525e-05, - -1.85764088661301817e-04, 1.26452686799904506e-04, 8.28267314219328091e-05, 1.70060420266698105e-04, 1.85986806711261124e-04, - -1.26597460571993109e-04, -6.99927087500373682e-05, 2.43504463420420004e-04, 8.90929191691563495e-05, -1.08361903761964912e-04, - -1.22129315467521012e-04, 3.69685678194193193e-06, -9.76853026011532927e-06, 2.31262017597801630e-05, 1.13627595483176917e-05, - -4.73528940188713203e-05, -6.48206454745550508e-05, -1.22100888451138691e-06, 7.56468638352087683e-05, -2.53416560145800336e-05, - -1.38940053681318499e-04, 7.20623765471817058e-06, 3.21809048129001281e-05, -2.21024328556184202e-05, -6.64125089630887160e-05, - 3.94708805911000318e-05, 9.71077583953939775e-06, -3.54527000430615696e-05, 3.69577787600789033e-05, 2.78095735286460204e-05, - -5.72103304090500763e-06, -2.29889369505701688e-07, 4.82107116030443131e-05, -2.41508628637585772e-06, -2.63405093477893100e-05, - -5.39352079240862240e-05, 5.49021393227147052e-05, 1.62938702966068904e-05, -3.35135604887079182e-05, -5.53241700444050103e-05, - -3.74072324766078626e-06, 4.09192387408724616e-05, -1.27958514490034509e-05, -1.86071122399451600e-03, 0.00000000000000000e+00, - -4.75292082404548451e-04, 0.00000000000000000e+00, 3.68780932191134698e-04, 5.54191148812023461e-04, 2.46565766805826323e-04, - 3.31614351952607561e-04, -1.71631555193545323e-04, 1.53116472177868300e-04, -3.93962061732021601e-04, -4.67407565386735021e-04, - 3.81580763254471577e-04, 2.04730687941415503e-04, -1.01606503900109209e-04, 2.85959959364757792e-04, -1.79032452140105822e-04, - 1.92416359225170601e-04, -7.84680634606176557e-05, 1.27965049428417914e-04, -8.79129716389746087e-05, 1.11181217880199307e-04, - 9.05309967637526850e-06, 1.00254047693470205e-04, 4.69931316356031836e-05, -1.26891478535794204e-04, -2.36948343468677716e-04, - -4.48140930566895122e-05, 1.56053941255461314e-04, 1.62691879050438606e-04, -3.04275795445205909e-05, 2.34900095260012922e-05, - 1.89834915726008312e-04, 4.41324083801779445e-05, -2.43723672445334893e-06, 2.63792044876342115e-04, 4.15153428121390933e-05, - -1.05194441751740605e-05, 3.07488334573277619e-05, 1.10224518899548499e-04, -4.91642006568435838e-05, -6.09507607897971724e-05, - 2.34553756526172398e-05, -5.48126075903642140e-05, -1.20368960697293707e-05, -1.24150118293778319e-04, -1.48408936527305184e-06, - -2.32711453314438716e-05, -2.44128815133471698e-05, -8.80086425816799928e-05, -6.20023416923870383e-05, 1.39888880163119112e-05, - -2.63313922516788706e-05, 2.90497335887282418e-05, -5.35969666694607321e-05, 7.45670074227807885e-06, 6.05689174479715297e-06, - 4.71747810724217328e-05, -7.45009495718939600e-06, 5.00189732462369597e-05, -4.37607562907335924e-05, 4.81409963763506648e-05, - -2.77590927613943195e-05, 4.52414041552540728e-05, -5.31259473640927006e-04, 0.00000000000000000e+00, -8.52598896055884966e-04, - 0.00000000000000000e+00, -1.34885197765120801e-04, 3.96653458139192421e-05, 3.79863748404974581e-04, 4.72379949916368639e-04, - 3.10022768658648959e-04, 5.69786980729471452e-04, -5.32004027356815690e-04, -5.51946785340620108e-04, 4.75232705602061337e-04, - -1.43688936593265289e-04, -1.34145640806652110e-04, 3.50186859951718285e-04, -9.73995300596363001e-05, 3.44420910592402329e-05, - -7.18080185080251102e-05, 1.60789183521345793e-04, -2.22624413329587016e-05, -1.28193723235865101e-04, -5.86367985071233234e-05, - 1.73808458946174806e-04, 3.30813591969955861e-04, -2.71856805616303913e-05, -3.78174032231158770e-04, -5.90252957383779106e-05, - 8.26749071828692322e-05, 4.95775684062529633e-05, 5.44580124316286832e-05, 4.66596997412812434e-05, 1.38805718688968211e-04, - -2.33571291413536304e-04, 1.03732179389248707e-05, 3.60726661880703256e-04, -1.47507354615690205e-05, -1.19512727220272909e-04, - 1.74914259207988697e-05, 1.47486413543964701e-04, -3.32823665073807436e-05, -1.22842848319823202e-05, 1.43169594952067807e-05, - -7.76973814947431698e-05, -3.88223282922580738e-06, -6.06833041894285847e-05, 1.69396426346393996e-05, -1.68622586139392799e-05, - 2.13089649442872411e-05, -4.32134801386761130e-05, -6.80517923313584582e-05, -7.35601065807071865e-06, 5.38945357647690934e-05, - -1.80635421990123584e-05, -7.24410824853465490e-05, -8.49791200553206016e-06, 2.38648729302909319e-04, 0.00000000000000000e+00, - -1.21834637822591509e-04, 0.00000000000000000e+00, -3.35292268503080285e-04, -2.25765584210752207e-04, 1.20333852013061409e-04, - 8.76160017921376148e-05, 5.77938304508217315e-04, 7.60972878504902238e-04, -1.82272425178899499e-04, -1.60779267929980014e-04, - 5.35448065399970162e-04, -3.79066952306616653e-04, -8.56199550095533123e-05, 6.92585641489698963e-05, -1.77063677568286815e-07, - -6.19787069144851961e-05, -4.12494051966487958e-06, 9.23467471398991294e-06, 2.20656813337354222e-05, -2.68841353591363623e-04, - -4.41569566824339039e-05, 9.39704392249946418e-05, 5.05686186431699705e-04, -1.34069787456886217e-05, -1.24401821560768692e-04, - -3.57022391309666403e-05, 3.18289650058353326e-05, -4.55877181661160831e-05, 1.88308936718896921e-05, 1.10332673498877904e-05, - 8.26712109978732347e-05, -3.60749199807011971e-04, 1.66345821208051797e-05, 1.38102500835173112e-04, -5.00940250071407793e-05, - -1.95402563658848610e-04, -3.17286321063148396e-05, 1.79777030274422993e-05, 7.63370547491521362e-06, -1.10396898961960510e-05, - 3.33369496271408800e-05, -3.04264250781569691e-05, -1.57216726797123306e-04, 0.00000000000000000e+00, 6.59370968572886660e-04, - 0.00000000000000000e+00, -1.58158308265806205e-04, -1.39270436780774621e-05, -1.30148387599806405e-04, -1.89881255738238400e-04, - 3.53165617144957002e-04, 5.52476715941731993e-04, 1.62507460835903910e-04, 1.96382682741124315e-04, 4.95030561024928590e-04, - -2.51538337834093535e-04, 1.01358288830775107e-04, -2.31117761155268212e-04, 1.61393344792953511e-05, 2.99917826599387518e-05, - 7.51186147023420687e-05, -9.84683991244665293e-05, -3.13331160710574486e-05, -1.62522943150101489e-04, -1.23500835514879590e-06, - -1.33566023652081705e-04, 3.97104494240615893e-04, 5.35531200087193626e-06, 2.03178932800896107e-04, 2.04733048314890730e-05, - 1.65109198739017411e-04, 3.56627616721475523e-05, 2.11796830261870299e-05, -2.55894236371568098e-05, -1.17754597691724491e-03, - 0.00000000000000000e+00, 8.07133621695610274e-04, 0.00000000000000000e+00 + 2.75181294152902012e+02, 0.00000000000000000e+00, 0.00000000000000000e+00, 0.00000000000000000e+00, -2.00031443764104797e-02, + 2.20986262423002011e-01, 0.00000000000000000e+00, 0.00000000000000000e+00, -6.50831583306859668e-02, 9.56915910153004201e-02, + 0.00000000000000000e+00, 0.00000000000000000e+00, -7.69949998097087390e-02, 2.15126568901680588e-02, 0.00000000000000000e+00, + 0.00000000000000000e+00, -2.15191777195716909e-02, -1.77751950764027111e-02, 0.00000000000000000e+00, 0.00000000000000000e+00, + -9.03325926869718264e-03, -6.45905357075528350e-03, 0.00000000000000000e+00, 0.00000000000000000e+00, 3.76554930890086407e-03, + 4.28150996355022243e-03, 0.00000000000000000e+00, 0.00000000000000000e+00, -4.48334654946085272e-03, -3.24945933688448613e-03, + 0.00000000000000000e+00, 0.00000000000000000e+00, -8.33958311735325322e-03, 2.67394757861415906e-03, 0.00000000000000000e+00, + 0.00000000000000000e+00, -2.88928782235351811e-03, 1.11276030204927202e-02, 0.00000000000000000e+00, 0.00000000000000000e+00, + -6.89744178202101980e-03, 1.68577225483147806e-03, 0.00000000000000000e+00, 0.00000000000000000e+00, -4.05911636160587782e-03, + -8.63040459605283984e-04, 0.00000000000000000e+00, 0.00000000000000000e+00, 1.77788775751947913e-03, 1.62646256200294588e-03, + 0.00000000000000000e+00, 0.00000000000000000e+00, -2.34489308196387896e-04, 6.26464829859012945e-03, 0.00000000000000000e+00, + 0.00000000000000000e+00, -1.52923310566158415e-03, 3.51952946092800104e-03, 0.00000000000000000e+00, 0.00000000000000000e+00, + -2.12456107651320296e-03, 7.80855898848169944e-04, 0.00000000000000000e+00, 0.00000000000000000e+00, -1.03218475301503098e-03, + -4.84939736793421616e-05, 0.00000000000000000e+00, 0.00000000000000000e+00, -1.27050726547289815e-03, 6.10515922008610795e-04, + 0.00000000000000000e+00, 0.00000000000000000e+00, -4.61636562893467212e-04, 3.78318476621734151e-04, 0.00000000000000000e+00, + 0.00000000000000000e+00, -1.90620242437837724e-04, 2.39481618132839210e-03, 0.00000000000000000e+00, 0.00000000000000000e+00, + -1.47687884032438608e-03, 2.42544367345591408e-03, 0.00000000000000000e+00, 0.00000000000000000e+00, -2.46192219258621788e-03, + 2.46579511004843988e-04, 0.00000000000000000e+00, 0.00000000000000000e+00, -1.50607540488831206e-03, -3.75857847911556075e-04, + 0.00000000000000000e+00, 0.00000000000000000e+00, -7.25805584180000754e-04, 9.78641239992627046e-05, 0.00000000000000000e+00, + 0.00000000000000000e+00, -7.80340606647248088e-04, 8.75931120319022039e-04, 0.00000000000000000e+00, 0.00000000000000000e+00, + -1.47851165924441194e-03, 1.17811049164095192e-03, 0.00000000000000000e+00, 0.00000000000000000e+00, -2.08460733839155700e-03, + 6.42619155220282463e-04, 0.00000000000000000e+00, 0.00000000000000000e+00, -1.86653178182583090e-03, -1.51572352026370312e-04, + 0.00000000000000000e+00, 0.00000000000000000e+00, -1.07549275530616001e-03, -4.44853427976503511e-04, 0.00000000000000000e+00, + 0.00000000000000000e+00, -6.33166214776187397e-04, 1.77518665839971507e-05, 0.00000000000000000e+00, 0.00000000000000000e+00, + -7.92028302924727146e-04, 4.38426731572627625e-04, 0.00000000000000000e+00, 0.00000000000000000e+00, -1.36111299097537602e-03, + 3.55302636498244784e-04, 0.00000000000000000e+00, 0.00000000000000000e+00, 4.31165906519952527e-02, 0.00000000000000000e+00, + 3.80339924146994024e-01, 0.00000000000000000e+00, -6.26107842259959399e-03, 1.64616708332782904e-03, 7.15529452992990245e-03, + -1.86210941905016296e-02, 5.36772367761992244e-03, -3.37215608643290496e-03, -6.27927374167897446e-03, 1.59410804744731308e-02, + -1.10370818380311399e-02, -6.84039900395983468e-04, -7.35117541436946381e-03, -4.87635242059330717e-03, -7.33706364752968569e-03, + 6.58538980656067294e-03, -6.56001297130070615e-03, 2.39042653237417005e-04, 4.18393771850396725e-04, -9.83382649555805503e-03, + -4.32676605363364018e-03, -1.10999673219588004e-02, -3.07797564052225605e-03, -2.83896250149829514e-03, 4.23882761382370337e-03, + -2.26439224781546308e-03, -2.32047257122214301e-03, -2.86523743964195400e-03, 1.16753700036647200e-03, -1.96688706621135590e-03, + -5.64532360297308362e-03, 3.86163113000431019e-03, -4.55210116404825178e-03, -2.31820675144046905e-03, -7.54930221713808131e-04, + 5.42645956136695879e-03, -1.37359456800822195e-04, -1.41701530146446709e-03, -7.24047803220819299e-04, 2.97282693804422219e-03, + -9.21178724545542739e-04, 2.17304781678062013e-03, 5.02933596226693130e-03, 4.19709065989953400e-04, -2.32808772095879088e-03, + -3.96816140679685759e-04, 1.66528807434054306e-03, -4.34672804984864508e-04, 6.71774253284030125e-04, -9.64395020788669558e-04, + 5.60151148527374262e-04, -2.54932855784003589e-03, 2.20163163376581403e-03, 9.04215953722457551e-04, 1.20823533199773401e-04, + -2.59868122477286410e-04, -1.65945495141917997e-04, 1.46538996917019689e-03, -1.68476757946802304e-03, 1.07540452680088500e-05, + 5.87513082394260696e-04, -1.24863532530485998e-03, -3.40155704130869251e-04, 5.06914392022354376e-04, 3.59174751231139280e-04, + -6.95434364128791230e-04, 5.31028293884702393e-04, -4.85338794987818855e-05, 9.80353244783757497e-04, -2.73784354447844888e-04, + 6.75383024029988280e-04, -5.75995357037249419e-04, 1.90931744053672494e-04, 4.24537699070617045e-04, -4.71947030265784521e-04, + -4.46465504992567892e-04, 3.33337956522936497e-04, -1.27617452248717108e-04, -8.67351806263058525e-05, 1.84741230040785993e-04, + 2.68168590454641613e-04, -1.31760079895587510e-05, -1.96141696634310206e-04, 3.15977777045840907e-05, 5.52964000678949098e-05, + -5.68648317683832915e-05, -1.24618526993470704e-04, -1.64319991484120808e-04, 9.90021761468646032e-05, -2.89641341863940680e-04, + 1.55648200162975805e-04, -1.61276662168002686e-04, 3.37883315497318677e-04, -3.00041726450727992e-04, 2.26196161548845496e-04, + 1.04382192438164800e-04, 4.50994722382257825e-04, -9.02537135361254129e-05, 5.64332474405111417e-05, 2.40936093599355207e-04, + 2.94628358869333785e-04, 9.40238863724802596e-05, -1.25490327018252206e-04, 1.13999493763013607e-04, 9.90868525905299344e-05, + 2.79939342717346504e-05, -1.21103070944854899e-04, -9.78183419047561525e-05, 7.97907489358191165e-05, -1.56274876625488320e-04, + 6.91110956986578159e-05, -1.78274579094107812e-04, 2.35172712320294510e-04, -1.86487667645096914e-04, 1.81359168243560220e-04, + -8.28267034951306894e-05, 3.64422258672049697e-04, -6.00161449209830129e-05, 1.53669854000615012e-04, 5.33940976909759048e-05, + 2.71098832854533114e-04, 1.16978179717633208e-04, -7.04014134697032723e-02, 0.00000000000000000e+00, 9.62756934345549015e-02, + 0.00000000000000000e+00, -5.01308988644840123e-02, 1.90874724562156602e-02, -2.80953874485262711e-02, 9.94764679201346272e-03, + -2.78516472981488912e-02, -3.06618517103302880e-02, 7.58078492851659708e-03, -4.18797526833174401e-03, -9.28131704978618285e-03, + -1.46423285050521004e-02, -1.12982430235375603e-02, -4.45163187034482329e-03, -8.86607378544559607e-04, -1.37678041188198305e-02, + -3.04744522425032726e-03, 1.40705206691586690e-02, 4.92736702444518219e-03, -5.90514134511184539e-03, -4.54964421596467609e-03, + -8.39159774589658125e-03, -4.46148003495234514e-03, -1.62058199127339503e-03, 5.61408022308887422e-03, 4.49055900394370114e-03, + -1.82071051913615303e-03, -4.09318011341107141e-03, -4.97865560096572360e-03, -3.90714411692000101e-03, -2.72428801010754702e-04, + 3.29022970106107040e-05, -3.71301533763268490e-03, 3.48487792329992983e-04, 1.15959669498262694e-03, 4.98979531764007374e-04, + 7.26403024471391199e-04, 1.64864318070091407e-03, 5.15149461852990758e-04, -1.86307159089303892e-03, 1.07464821641563204e-03, + 1.93916722418667302e-03, 1.78527114422754305e-03, -3.69908045453888525e-03, 1.35978350637315200e-03, 1.97378490377768823e-03, + -1.12077965666117305e-03, 1.89400552511022986e-03, 1.34901499797743002e-03, -7.17376936946564751e-04, 3.77336189237397162e-04, + -8.49455521901115469e-04, 1.76458772526797607e-03, -1.34910889239185107e-03, -8.88652895477685142e-04, -1.56500185302029806e-04, + -8.76093972833636445e-04, -2.00964500803350399e-03, 1.58208594440964988e-03, -4.99776272008587265e-04, 9.21092504090277532e-04, + -9.50973675462412054e-04, 9.34360703323434722e-04, 1.13569489093607798e-03, -2.35584557310445026e-04, -4.38069769484956937e-05, + 3.24577435798492555e-04, -1.25354645423132001e-03, 2.23682595620860417e-04, 3.66036513139383663e-04, 1.40216714894795505e-03, + 2.27750709584358922e-05, -1.93328972751045800e-04, 2.02025568799330516e-04, -2.74656452169796581e-04, -7.13136078966307191e-04, + -7.74076812485903487e-04, -1.02274882001159593e-03, 5.52829074765155888e-04, -3.68749942830809982e-04, 5.23471145957211991e-04, + -5.11988764810234896e-04, 6.02265891061533310e-04, -2.11327004479523907e-04, 6.41691954883075503e-04, -2.93053466696699415e-05, + 5.44704761041802841e-04, -5.66628145474610301e-05, 3.06917641025358854e-04, 2.85907713552362608e-04, 3.77388927634152475e-04, + -3.77819009899353793e-05, -7.23439228551873374e-05, 9.85771074035036001e-05, 3.21327432771281263e-04, -1.59908157634313996e-04, + -6.09095752283840726e-05, -2.76136058709174526e-04, 3.87616442158483353e-04, -2.26542483972600318e-04, 2.54495029230095593e-04, + -4.53136334566828323e-04, 4.85440002953321521e-04, -1.62296622208713188e-04, 5.57461157340177543e-04, -2.18109633528073014e-04, + 4.40938655580095133e-04, -2.50802656486350106e-05, 4.94156181908487774e-04, 1.46912930391045014e-04, 3.39995298139647573e-04, + 2.31575644258876931e-05, 1.27693888311369109e-04, 2.66757357090615819e-04, 2.81659456088537022e-04, -1.77008256058765415e-05, + -5.59528798333871517e-05, 8.03605031599087131e-05, 2.85552901830860538e-04, -4.53068755612621334e-05, 1.02695668114354909e-05, + -9.52364495838409209e-05, -5.81103624210425537e-02, 0.00000000000000000e+00, -6.11613220936809646e-03, 0.00000000000000000e+00, + 4.43140816018786771e-03, -2.60999931564933826e-03, -9.40668310127974576e-03, -1.48661226497603313e-02, -1.36502130860806405e-02, + -2.14796277886411605e-02, -4.29520125994365363e-03, -1.26923474000257205e-02, -7.86135852771467636e-03, 1.28725912652949892e-03, + -6.82233374677557874e-03, 4.39686715387468952e-03, 1.82006684281001488e-03, 1.49296576633828294e-03, -1.98801597839639611e-03, + 1.62071513114028917e-03, 5.34277138633573300e-03, 2.01625340607174391e-03, 4.65092297717760190e-03, -4.98019846270408330e-03, + -8.09160267604481370e-03, 3.44643931971669272e-04, -5.89232406165003143e-03, 2.42334465848842917e-03, -8.80352946027558960e-04, + 9.84336007576140171e-04, -7.45770687978821595e-03, 4.75822395048473845e-05, 1.47566490371992703e-04, 5.47124159393165554e-03, + 1.21021033478159695e-03, 9.69205973697771176e-04, 2.87549817812144098e-03, -3.61852844247361654e-04, 6.44364669700349130e-04, + 1.29877596456263100e-03, 9.38391522093622900e-04, -2.22314144452083603e-03, 3.10148815196359916e-03, 5.28716763746763570e-04, + 8.26155935032032562e-04, 1.57427796494904104e-03, -7.38296066748109475e-04, 1.14662499560429709e-03, -8.33016875095013713e-04, + -1.55185739616535206e-03, 2.04015157270918393e-03, -9.48182790145658426e-04, -8.81430768705695989e-04, -1.79127396420232423e-04, + -1.10273859532507507e-03, 6.53764928387371141e-04, -7.73895587008780373e-04, 2.68077770038103081e-04, 6.51103785496301673e-04, + -2.71669965700574879e-03, -3.88256693905312568e-04, 7.85903560292053544e-04, 1.18648988600738399e-03, 2.73534309775586828e-04, + -1.60929713471156209e-04, 1.29735976231497405e-03, 1.37988749081522505e-03, -1.59601915859147411e-04, 4.72539428788721608e-04, + -1.63508530969875198e-04, -8.04497515605788580e-04, -5.60952219538972049e-04, 9.62352783411973291e-04, -3.25986940863303451e-04, + -6.62865052534385266e-04, 1.83077290521144301e-04, -6.67815027189929333e-04, -8.20763509623387072e-04, 5.50944728278969943e-04, + -9.18368507559945896e-05, -4.97262747933818947e-05, 1.44527740863390717e-05, 6.02268801895407160e-04, -6.90060856109303935e-04, + -6.61151667662298806e-05, 5.24607915693856908e-05, 8.71389161220942712e-04, -5.22209563697972917e-05, -8.81069372491589524e-05, + 6.89674388639323560e-05, 4.89296492873659379e-04, 3.42949950767033190e-04, -1.04594279689411803e-04, 7.88048702858046301e-05, + -4.51080354005282619e-05, 1.92927499298747385e-04, -1.00799248168193510e-04, 8.42070445097134625e-05, -1.15456876718276306e-04, + -3.52801267299761995e-04, -1.17385826010707806e-04, 6.41826840143688848e-05, 3.00430937194893165e-04, -5.88191734441591263e-04, + -9.60097825665722621e-05, 3.24876263135078137e-05, 6.81936922695665707e-04, -2.77700061014415391e-04, -8.20877129250762892e-05, + 2.58047697700600437e-05, 6.00380468626232297e-04, 1.78126157739820522e-04, -8.91255866487739501e-05, 1.94618282851708810e-05, + 1.70413830952822023e-04, 3.43572086262713874e-04, -7.77228636917948808e-05, -3.36010502648343538e-05, -9.07658016101573108e-05, + 6.59277748270443569e-05, -3.98051260408716171e-05, -7.94909595164307867e-05, 7.05083701220457573e-06, -2.12150267214743503e-04, + -7.10752955220507326e-02, 0.00000000000000000e+00, -2.81525293764823895e-02, 0.00000000000000000e+00, -8.89502773245340675e-03, + 3.66324267155502007e-03, -1.50462462993148395e-02, -2.63916495927209518e-03, -6.79652165859046149e-03, -1.65529453407753518e-02, + -1.78928182217595808e-02, -3.14303722891423219e-03, -7.11006250769349781e-03, 5.34684474246508237e-03, -1.16327476368806200e-02, + -8.05468546023600102e-03, -1.64149955851847803e-03, -5.35863352681676449e-03, 3.15321608325506422e-03, 6.26277160082160155e-04, + -7.27484684891808748e-03, 2.70646376760276911e-05, 3.62617414329000813e-03, -3.65054682510651410e-03, -1.07696110037195595e-03, + 3.53182686525143003e-04, -3.38538738633310885e-03, -7.71206253588103529e-03, 2.05797839658368497e-03, -3.13248774975358191e-03, + -2.15184243056480489e-03, -3.10225639086903707e-03, -3.54796544314458281e-03, 5.24964106894207014e-03, -3.81132388565878430e-03, + 1.24107114742582204e-03, 2.71419662078310015e-03, -3.13258905575883794e-03, -9.86678579803712151e-04, 4.35158904158106617e-03, + 2.00811015548373484e-03, -2.44534593887737084e-04, 2.98862265427273909e-03, -2.36637278792602287e-03, 3.79010793951217370e-04, + -1.91817673989295003e-03, 2.40904857950564920e-03, -3.68671975810225518e-05, -7.50728259162286669e-04, -9.77411399558630834e-04, + 1.12160681390244201e-03, -9.57618916404621382e-04, -8.44772814505887035e-04, 1.60262870617885501e-04, -5.95028162206373166e-04, + -2.17343777372838720e-03, 3.90627040005680354e-04, -4.03549139392471315e-04, 3.97904392302268501e-04, -3.35021587533471910e-05, + 4.01596406318290207e-04, 6.19679429553130195e-04, -5.84235894305245641e-04, -6.29586561100089689e-04, 6.85720848834345492e-04, + -5.99546684685926617e-04, 6.48484311900055866e-04, 1.15749079052879009e-04, 5.89928032208336022e-04, 2.56662217500460083e-04, + 5.35723750474414269e-04, -3.87102961262356411e-05, 3.59715192754469484e-04, -9.00619185516589576e-04, -3.38206174007513985e-04, + -9.06717141110745728e-04, -1.06691607710405902e-05, -5.73066630815214089e-04, 5.82183667967025014e-04, -6.19647103989654315e-04, + 3.46608782632846157e-04, -3.19542958077236765e-04, 3.35326676850777677e-04, -1.19041590268576002e-04, 3.84807935714832959e-04, + -1.52580432572096801e-04, 2.88659162699535080e-04, -2.17457459774854719e-04, 3.15640030614073891e-04, -1.14589683204190809e-04, + 3.56359089290164666e-04, -2.36086433127905303e-04, 2.57962183435875032e-04, -1.32919881425900210e-04, 4.21275854832142444e-04, + -1.68637918303468496e-04, 2.60132103423249507e-04, -1.76518696101003004e-04, 3.98510318978629783e-04, -5.55874927229614931e-05, + 2.72262300197169426e-04, -1.54791064873725413e-04, 3.23912719054422868e-04, -3.97599407313694884e-05, 2.79412001537185026e-04, + -1.05419347221602004e-04, 2.74788768477940990e-04, -7.92444947406713388e-05, 2.69699801276835011e-04, -7.08821370313268408e-05, + 2.98757387283285329e-04, -1.28176226969026500e-04, 2.27528760050574108e-04, -3.45101835866923435e-05, 3.27201675215891879e-04, + -1.03881991208881104e-04, 2.10033165807443418e-04, -8.75501048007582717e-06, 3.14478195541950775e-04, -4.79621649743055035e-05, + 1.67328405215387999e-04, 5.84472169559277965e-05, 3.00859150369670600e-04, -4.13684186119337124e-05, -1.21379119254994196e-02, + 0.00000000000000000e+00, -3.44462771591686687e-02, 0.00000000000000000e+00, -2.10316876980239705e-03, -7.47964378791162073e-03, + 1.40631809424170899e-03, -4.56039796742323082e-03, -9.34831571155880781e-03, 2.15655290496510887e-03, -1.06117832938669408e-02, + -1.70679350958285111e-02, 3.45017088487963204e-03, 3.82119470199968102e-03, -1.04997387285308396e-02, 1.63770792198145408e-02, + -3.26765150921354405e-03, -3.41571868356958797e-03, 4.58286575207184597e-03, 7.06393644576057845e-03, 4.30168798968698536e-03, + 2.07824034827653725e-03, -5.00231032938888449e-03, 4.53087742807849192e-03, 2.91006074117702894e-03, -6.79674760908184714e-03, + -4.20731287313864249e-03, 5.57341847431139063e-03, 1.84243144490180903e-03, 1.09041767054943606e-03, 6.02340248129294817e-04, + 8.87323969884404020e-05, 4.08856464359921205e-04, -4.12118732042999428e-03, -2.92119223691378500e-03, 2.52960402262236098e-03, + -4.99253509354547322e-04, -2.00114581595349722e-03, 3.31933921536656500e-03, 7.87586653237865768e-04, -1.98777567108299191e-03, + -4.35319605759405999e-04, 1.21890703961077709e-03, -1.74310547912238505e-04, -1.83804873490097005e-03, -6.33286472639934075e-04, + -8.54973407243040696e-04, 8.38731087266057014e-04, 1.96859281933702002e-03, 6.71187690856791001e-04, -1.49680241656290503e-03, + -1.31746694774600721e-04, -5.85150551831325094e-05, -6.08777129793491617e-04, -1.55499350657023103e-03, 4.32423633493066899e-04, + -7.46011357659906449e-04, 5.16518970476651830e-04, 7.33542013514307950e-04, 3.00206273742392163e-04, -5.67707291610191050e-04, + -3.97317356634302660e-04, 2.64927626375300240e-04, 1.32652469615073400e-03, 9.03100594211069126e-04, 7.93215800430159003e-04, + 6.39870260721876012e-04, 7.82518537978101281e-05, 3.10263950097946896e-06, -1.26280600703676396e-03, 1.35625753882703392e-04, + 5.92621033709781484e-04, 2.51897673756406736e-04, 8.35622028888639260e-04, -6.93190155969104597e-05, -2.47307402787471232e-04, + 1.97347646277906523e-04, -1.34291266624796601e-03, 7.04966419754734131e-04, -7.06261498209776703e-05, -5.18409841922224825e-05, + 7.90341985335329185e-05, 1.80027806692415588e-04, -3.60528094008153680e-04, -7.56475687345502479e-05, -5.09855582516119030e-05, + 3.43362661185179466e-04, 1.61699210709818420e-05, 5.50871102682905156e-06, -1.02545159022227300e-04, 6.00035958822780515e-05, + 2.98136883703973015e-04, 1.16044262782009412e-04, -7.17220274644972855e-05, -2.43404673157207726e-04, 1.65311416998437696e-04, + 1.41142580311535314e-04, 4.05231207494100349e-05, -2.82502183903395997e-04, -1.58301868094413317e-04, 3.25713204301173530e-05, + 8.34399540573364004e-05, -1.26258103319842004e-05, -3.02338835543194398e-04, -3.51598517208215631e-05, 3.05105441207013402e-05, + 2.02208048958474806e-04, -1.11880851566251209e-04, -5.75222282747011801e-05, -7.53488797685568308e-05, 1.64740146653522901e-04, + 1.55665282582546916e-04, 2.78627075985471035e-05, -8.24982697512496936e-05, -7.68641253913072698e-05, 2.11795439387258810e-04, + 1.08497663196070504e-04, -1.30771986857948203e-05, -2.15508188823196713e-04, 5.93088828912528187e-05, 5.92245582038734042e-05, + 8.71924479130562830e-05, -1.39371452945136589e-04, -1.15412352616742702e-04, -1.55050056359223414e-02, 0.00000000000000000e+00, + 1.08882691507289995e-02, 0.00000000000000000e+00, -4.71011842162717600e-03, -5.87720496469847434e-03, 1.05047777608648796e-02, + 4.58059600186255811e-04, -2.00504402837270619e-03, -2.95424720587515992e-03, 4.87799357670548345e-03, 8.35135183044262257e-03, + 1.94658690699765899e-03, -2.51595561155665282e-03, -8.21127194754033354e-03, 3.70391436894767405e-03, 6.83120937695324247e-03, + -1.76002874535725103e-03, -8.63390502398148768e-03, -4.10387342301893592e-03, -2.35444581629096900e-03, -4.09310051133190012e-03, + 4.22858049368528928e-04, 3.15099824102575005e-03, -1.23657205447147900e-03, -8.10122047065819917e-04, -1.43423373808739592e-03, + 1.48713803506179206e-04, -5.85087310259259233e-04, -6.23235356221657727e-04, -1.06063231727299210e-03, 1.80378281336268697e-03, + -9.30282245216480525e-04, -3.76269823446016231e-03, 1.84105606293760693e-04, 3.37515462362718115e-03, -7.38805157796997296e-04, + -9.12877602010101418e-05, -1.02645186453899405e-03, 3.16915550462153802e-03, 8.21937753793873418e-05, 1.25314454345307408e-03, + -5.88422124427039972e-04, 4.22118976254676735e-04, 3.62450580886171467e-04, 4.90060323653639541e-04, -1.34998872593530199e-03, + -6.25809469695063941e-04, 1.07186821528799502e-03, 7.90345047493609437e-04, 2.06073300326440516e-03, 4.16554698971398525e-04, + 1.00476579342678512e-03, -5.22637914683046919e-04, -1.81017262357454885e-04, 6.19944137220488213e-04, 3.63742289398431666e-04, + -1.10527646027455098e-03, -1.42755618597237006e-03, -3.07067139655041281e-04, 5.03169289358491628e-04, -6.13386797343335724e-04, + -1.37656831881363109e-04, 1.21565460886625997e-03, 1.93210758951368198e-04, -7.27388822794831111e-04, -1.21911187459386103e-03, + 2.29157486346871021e-04, 6.67416548838800248e-05, 4.51521060719632748e-04, 4.64612988038229510e-04, 4.44675281930900941e-04, + -4.22961891024955822e-04, -2.87267784296158901e-04, 9.37302358619733185e-04, -2.37795974551285302e-04, -1.61418528524817423e-04, + 3.59975251107788624e-05, -1.57709648390207509e-04, 7.99467773702482827e-04, 4.21146651409620644e-04, -4.26833911251724520e-04, + -5.21716154653551769e-04, 4.97628543500075742e-04, 5.69987976708835435e-04, -1.00118566849244998e-04, -6.64319064977684495e-04, + 1.05701411709688202e-04, 3.40518869723608394e-04, 1.38903605427121693e-04, -3.87886151334127351e-04, -1.95775443050584909e-04, + 5.96229633518891928e-05, 7.96570701940503198e-05, -5.60593924645873246e-05, -1.03370927417524607e-04, 6.36583825020037681e-07, + -2.04477272097361299e-04, -3.83914221304656642e-06, 2.13649300126834708e-04, 2.31094008501680310e-04, -3.30860288794278951e-04, + -2.30463924421211216e-04, 3.94263693122693575e-04, 4.08880948289188305e-04, -1.53040820632931304e-04, -5.12662237394530674e-04, + 2.24113090569518506e-04, 3.65643596805839092e-04, 7.58146844467415010e-05, -4.58187196559824389e-04, -9.80416207378538508e-05, + 1.46100253250197316e-04, 1.33893857135371198e-04, -1.85809415470792585e-04, -2.14519862579163896e-04, 2.04062649947744427e-05, + 3.80782834009347831e-05, 6.10446036778424544e-06, -5.41890344947285041e-05, 7.34556813889813786e-05, -4.83384314725215133e-05, + -2.59332653570620112e-05, 9.78677118932030546e-05, 7.19857997319553727e-03, 0.00000000000000000e+00, 3.32311287830635389e-03, + 0.00000000000000000e+00, 1.29016889639107005e-03, 2.60642731444820416e-03, -5.79342819017824098e-04, 5.30553834626121441e-03, + -4.68788965044094827e-03, 2.08217120134517215e-03, 3.06452640436348598e-03, 5.58776901253584674e-03, -2.07323557931271898e-03, + -2.51258894621679899e-03, -3.85306585928035317e-03, 2.82848860506730321e-03, 1.90040888967029416e-03, -1.58852311515139590e-03, + -1.76310573539159793e-04, 5.21842268138928713e-04, 3.67316069752267500e-03, -6.98195275610524226e-03, 1.22648241960540911e-03, + -3.85429235509009193e-03, 1.91566146354165903e-04, -1.33552008300326001e-04, -2.39186538029803998e-03, 2.63157630488062991e-03, + 6.36877311590974615e-05, -3.36814172885773399e-03, -3.97233550032412720e-03, -1.23589782939034797e-03, -1.42523994062913190e-03, + 8.72837867417999738e-04, 3.32205772971433909e-03, 2.07205784967486126e-03, -1.63524299563669795e-03, -2.98899158700940103e-03, + -2.93061091875026396e-03, 2.44095189396288485e-03, -7.33561682360080094e-04, 2.19256835525849004e-04, -1.37923737441638804e-03, + 4.74155589490909838e-04, 5.50343470600480364e-04, 1.00710104262438410e-03, 7.63755994840873711e-04, 3.52120109902711968e-04, + -4.30626975626065701e-04, -1.05186955567569901e-03, 3.11980751557737598e-04, 6.58461838349606908e-04, 6.30925164678347626e-04, + 6.91309027775518218e-05, 1.47672053042282301e-03, 1.92736773096099717e-03, 3.53213480182088489e-04, 1.06216068629913702e-03, + 3.41679775713064481e-04, -6.50019951649382938e-04, -4.56695902171019223e-04, 3.93151598436330794e-05, 1.04036608397413606e-03, + -1.18660622982701093e-03, 1.15800807328811394e-03, -7.09182118909679562e-04, 1.90406623619408615e-04, -6.86534881354838433e-04, + 3.74063714066177986e-04, 2.87317791919599233e-05, -1.16732558544984798e-03, -1.10231759344286994e-03, -1.45057348478687506e-04, + -5.57631367297447612e-04, -1.26396191893281599e-03, 9.56518764874356837e-04, 2.31333566436199502e-04, 9.41915043002358412e-05, + -3.56903031585823878e-07, 1.70374203686440915e-04, 4.97443740660158911e-05, 5.02386869340809095e-05, -8.05492641090750411e-05, + 2.03150152926000996e-04, -2.65367060549427609e-05, -1.39929371447721412e-04, -1.81910288097425200e-04, 3.94364895467108318e-06, + 1.36003216887327697e-04, -2.46687639381463130e-04, -4.25147549979305140e-05, -8.12611885612382043e-05, 3.02172089350402477e-04, + -1.81936841170158323e-04, 3.92697525610298230e-05, -5.64000622052212617e-05, 2.99517040483845130e-04, 1.13720483995726007e-05, + 5.49904859412459219e-05, 3.88977423049413005e-05, 1.38947205623771099e-04, 1.02861024666216704e-04, -2.71713077848858631e-05, + 7.39149761082318377e-05, -2.13569983855703405e-06, 1.95773483474666312e-05, -8.34252306505384720e-05, 1.68968172956159728e-05, + 5.64292102822087512e-05, -1.35096864921712995e-04, -7.11597471040555693e-05, -2.52508230251673836e-05, 1.83000199944189002e-04, + -1.56863264288969296e-04, -2.39818567491244685e-06, -3.74840941875673682e-05, 2.52668447454548132e-04, -7.34450727330187984e-05, + 2.95967272053869410e-05, -5.33444905612428026e-06, 2.22014749180963908e-04, 2.93310494637914723e-05, 5.44126157522075029e-05, + 3.76250220322146280e-05, 2.78416115424583296e-03, 0.00000000000000000e+00, 1.26854722193290095e-02, 0.00000000000000000e+00, + -9.47804839873612852e-03, -4.45215591850271764e-03, -2.28388657889899401e-03, -3.32276281845919792e-03, 5.62482041639104599e-04, + -2.53847581390776594e-03, 1.34408286936057005e-04, -1.61357826059901704e-03, -2.84333470827229182e-03, -3.22367666765658104e-03, + -3.07078967414139861e-04, -1.05330262451769005e-03, 1.51227891659255200e-03, -2.70213282972538897e-03, 2.02388698147050521e-04, + 2.20186932966095301e-03, -3.46483641839626620e-03, 1.55788110436725713e-03, 1.30282918690895205e-04, 3.74261542464799681e-03, + -3.16046541370569589e-03, 1.31143131345886309e-03, -3.08399041187059568e-04, 5.99037253132680470e-04, 8.62250737785963677e-04, + -1.73930881785822793e-03, -5.02626684595700274e-04, -1.60752061144315206e-03, 7.20944097052917190e-04, 8.65412307424915685e-04, + -3.32776058197007101e-03, 2.18561816312586005e-04, -1.22068813598305397e-03, 8.37000871453652122e-05, 2.89630578538259539e-04, + 4.82163205454582029e-03, 1.58867890981335318e-03, -6.22401809893891717e-04, 1.73896479816057600e-03, -5.20439782855769287e-04, + 1.14168473800226804e-03, -7.20558866174143202e-04, 8.74793001198065205e-04, 1.64170074485570604e-03, -7.27026482331195574e-04, + 1.04357444655336007e-03, 4.59221225965631406e-04, 4.24503050387132737e-04, 8.77028221914163226e-04, -6.33662223335107683e-04, + 5.80098072084693720e-07, -1.94429183743168813e-03, -2.73977550274014515e-04, -1.22197633314669800e-03, -3.66274805050316758e-04, + -1.18302708414683407e-04, 4.83059391503256827e-04, -7.07985315638565041e-04, -7.25686338634964055e-04, 7.23020017804716305e-05, + -6.42241235767167500e-04, 9.07713195018969711e-04, -2.93369116036286404e-04, 1.04773232584438295e-03, -3.97340087708606071e-05, + -4.37058278643554128e-05, 8.83966961412785890e-04, 1.21999205784775700e-03, 8.94789314789739523e-04, -8.52167205194715740e-04, + 7.03592776492062985e-04, -1.02021757762579498e-03, 7.16083852460278780e-05, -2.48733302885627229e-04, -1.70335565690782711e-04, + -2.20660416975401708e-04, 1.87004473663415186e-04, -2.36331832688707318e-04, 1.15639534404308602e-04, -2.09475188880555710e-04, + 2.99683684796347039e-04, -1.29855910005338915e-04, 1.75091368398453285e-04, 3.55882792130287544e-05, 2.34718856730567211e-04, + 1.51728148824903899e-05, 2.54166504458850315e-05, 1.64049233181359300e-04, 9.01549142149536497e-05, -1.71648594910176101e-06, + -1.59944524407326617e-04, 1.19348548726544397e-04, 7.85268336308512794e-05, -1.03800844517790107e-04, -1.81405986799001117e-04, + -5.13845974642025707e-05, 1.63365999753164808e-04, -1.42106018914941090e-04, -1.00097984965546201e-05, -1.62863659689661610e-04, + 2.30666095969170819e-04, -8.81570200580615110e-05, 1.38332264647423106e-04, -7.84715508241847002e-05, 2.14089085919024407e-04, + -9.69562479731096954e-07, 1.16669648028640911e-04, 9.26066168070304737e-05, 1.42929551657034615e-04, 4.86176193502030807e-05, + -3.75360180136114031e-05, 1.36175658034411997e-04, 8.05716768732491124e-05, 1.91707714907214908e-05, -1.27718856709836399e-04, + 2.04269030182744926e-05, -1.03334865816164002e-02, 0.00000000000000000e+00, 2.69365088408525391e-03, 0.00000000000000000e+00, + -6.21250475397177519e-04, -1.35909955444097702e-04, -1.27945203373861101e-03, 1.90953207115528200e-03, -2.77850442376668429e-03, + 1.82862043928144194e-03, 2.66233674928770606e-03, -1.72532539859110087e-03, -1.01000873702640102e-03, 4.43243166778230311e-03, + 5.00370125591865882e-04, 6.35632869696106575e-03, -1.95259500854165317e-03, -1.87608290871500000e-03, 6.66882212379246231e-05, + 1.13997830429131398e-03, 2.26573181023742316e-03, 3.31913493881087112e-03, 7.10866341422408785e-05, 1.03399524854338207e-03, + -2.88342179376523534e-04, -7.57173461251488050e-04, 1.36785880414229898e-03, 1.77020330499936900e-03, -3.23746337552742285e-03, + -7.51329696680427665e-04, -3.11037507343977409e-03, 1.40367482810333389e-03, 2.03570909239716123e-03, 1.75365599912788613e-03, + -7.08325905403631834e-04, 1.68119206080417092e-03, 8.48077650551798824e-05, -2.99705652529596103e-04, 2.99009451038331677e-03, + 2.85542960442462627e-03, 1.23578474740311409e-04, -6.38235388827023439e-04, 1.51611990460678208e-03, 4.61776934587180546e-04, + -1.33829897826344001e-03, -3.75584022082175160e-04, 2.48101123647880809e-04, 3.85122657189657569e-04, 5.51670773382135333e-05, + -1.85882436015654090e-04, 4.87174768902445344e-04, -1.83533572841154896e-03, -1.27644194171767705e-03, 8.68015753068456745e-04, + -1.31905566544782702e-03, 7.65379040425717737e-04, -2.19797395477818716e-04, 3.88332435901323088e-04, 3.13034401313501485e-04, + -8.59762290013867548e-04, 1.13994740546106998e-03, 1.72994716473204605e-03, -1.89307846611188403e-04, 6.98495755050348890e-04, + 3.01973282939228989e-04, -7.74094999922277186e-05, 1.16378030420384910e-04, 1.29967573750049191e-04, -5.72500693830566416e-05, + -8.22972732968274339e-04, -3.12276374844850854e-04, -1.08545016715341010e-04, 4.78239995403885131e-05, -6.14717757473743454e-05, + -2.23684510111112999e-04, 6.04283674132463503e-05, 9.19527187931604801e-05, 2.31593535142378412e-05, -2.03967753321729318e-04, + -1.35370345643743119e-04, 1.14790539148631810e-05, -1.74220441476465203e-05, 1.82429012417977831e-05, -6.38348667371286822e-05, + -2.70462292805629515e-05, -6.86210087098047746e-05, 5.65492551243059147e-05, 8.81166356637452818e-05, 5.29353466250463340e-05, + -9.92223055798126811e-05, -8.05966223176598730e-05, 1.61920504601891299e-04, 8.00282427584589920e-05, -6.22535596383927311e-05, + -1.77477592715217017e-04, 1.06509181968351499e-04, 6.66734941894863201e-05, -1.20710760285688811e-05, -1.89746906538367400e-04, + -2.94151505612680823e-05, 4.31300335916989639e-05, 6.23352108610686946e-06, -6.80348953995890205e-05, -9.08766889893978445e-05, + -1.29721911177051616e-05, -1.67407832425932389e-05, 4.30275146318171822e-05, -2.82181843060568528e-05, -7.85956166541929683e-06, + -2.93591647656230893e-05, 4.59262032554511328e-05, 1.02171357029562308e-04, 3.63911400851528937e-05, -4.73433551198325242e-05, + -7.05174086134095903e-05, 1.12859884248809006e-04, 8.44054700606726937e-05, -1.95691919855953615e-05, -1.32409500860587216e-04, + 1.07325320429094103e-05, -3.85655230757970310e-03, 0.00000000000000000e+00, -5.39979047907412739e-03, 0.00000000000000000e+00, + 5.60193598745740377e-03, 1.34496931366289698e-03, 1.84053007999470698e-03, -3.07922098017868098e-03, 1.39726178798314999e-03, + 4.39676641449973649e-03, -1.68890814938530798e-03, 1.07275962852819507e-04, 9.37596905032942862e-04, 3.29160028373130104e-03, + -1.93176530108272017e-03, -3.82389751326079903e-03, 3.28111585382161977e-04, 1.35165071421654509e-03, -2.44934605063826206e-03, + -1.01374060585952093e-03, 1.90315179056236802e-03, -1.16243792021998994e-03, -2.23449354109382789e-03, -1.37390419356787702e-03, + 2.67043029813209421e-04, -2.46387317504163407e-04, 1.27404158449048992e-03, -3.11409821004060127e-03, 1.42054350882327412e-03, + 8.50945067451520584e-04, -2.18139096460945791e-03, 5.37585425556584451e-06, 7.70672126369275528e-04, 1.47205746609291919e-05, + -2.27122252035303826e-03, 2.73471086137731237e-04, -1.71770098939768396e-03, 1.79548953791325598e-03, 1.07201759382979695e-03, + 8.00872631239443744e-04, -6.93421194978720073e-04, -9.30281393379723794e-04, -6.30390648496625906e-05, -5.82231422949086564e-04, + -8.46299597976315013e-05, 9.00081479610586330e-04, 1.17059400966708599e-04, -1.17657919631858798e-03, 3.80463130954153492e-04, + 5.94799888416260611e-04, 1.37458545422499095e-03, -8.65911436633437981e-04, 4.03986631244411239e-04, -3.68569836363924258e-04, + -1.37212853610761101e-03, -3.54583726830509790e-04, 8.18394448681560531e-05, -6.41741245488995269e-05, -1.10730062409925695e-03, + -3.87839975193070567e-04, -1.49797684923353618e-03, 2.76129210001028514e-04, -2.21530592066440717e-04, 3.67206383764497469e-04, + -1.63449552926589903e-04, 1.33340756263806808e-04, 1.37461576726487196e-04, 9.37402543812214275e-04, 9.35976623153734815e-04, + 1.09446608551640808e-03, 6.60314338498173671e-04, 7.41023267300118505e-05, 1.96356821062653686e-05, 3.34462678969324925e-06, + 9.07111562029388140e-05, -8.59497626179119625e-05, -6.54182748356717204e-05, 3.18023886151265879e-04, 1.24059973148808592e-04, + 1.29131408350483987e-06, -2.85001271494982804e-04, 2.98328205348700711e-04, 7.22351177834776889e-05, 2.65141433646711721e-05, + -3.79703799498017980e-04, 1.00891724908919100e-04, -5.67380361354338442e-06, -1.33785413564818402e-05, -2.54723362593513693e-04, + -9.25645051781121415e-05, 2.47768104742008215e-05, -6.62764910229686775e-05, -5.69736192888645860e-05, -3.41068237011527789e-05, + 8.09156539163736121e-05, -5.62162696420001598e-05, -3.43941083506186279e-05, 1.33619279220014320e-04, 9.09933194450521986e-05, + 1.10025788491296402e-05, -1.41269448084213606e-04, 1.97425730308574887e-04, 4.13949297778524444e-05, 2.28029456020616418e-05, + -2.51957187227819538e-04, 1.07087421267623703e-04, 2.01951240903083911e-05, 2.16232156916533599e-06, -2.34732325786082114e-04, + -3.44848725799019331e-05, 1.02322264729879813e-05, -2.95808799705676908e-05, -1.27372633332256295e-04, -1.01181675232029001e-04, + 2.43965285934001316e-05, -1.56339350729979790e-05, -3.10666087069938407e-06, -6.48565764324702686e-05, 5.66240428071342533e-05, + -4.80947203208227109e-06, -3.27434987496428307e-03, 0.00000000000000000e+00, 1.94001371970481206e-04, 0.00000000000000000e+00, + -4.22146600015671676e-03, 1.85560412822053321e-04, 5.91960667993999233e-03, 3.46745751020892997e-03, -1.49624542277282911e-03, + -7.46997420480836351e-04, 2.71956837568511616e-03, -2.00362589759237692e-03, 2.84403667909016201e-03, 1.38522786944513302e-03, + -5.36253982302081788e-04, 8.98944385900057180e-04, 9.45948316279443557e-04, -1.10724429141635401e-03, 3.46491308247556264e-04, + 1.71076868721512518e-03, -2.83621464332214999e-03, -1.04214110182014098e-03, -3.29843443238391268e-04, 1.16249263818666692e-03, + -1.51263971259868598e-04, -5.12095086650722468e-04, -4.43868928176068683e-03, 1.09452571151002305e-03, -1.95905282494774008e-03, + -7.16502823696713313e-04, 1.80703181275910802e-03, 3.08021488597660107e-03, 7.63416447485232405e-05, -2.40820896115498200e-04, + -5.42123846874502098e-04, 2.79921673263123887e-03, 9.56711213597357204e-04, 9.12734617363823698e-04, 1.18329385902973100e-03, + 2.70548437862810518e-03, -7.56421605209681158e-04, -1.10451578857403000e-03, -4.68535394733205607e-04, 1.19301359831118807e-03, + 2.28790726615612307e-04, 1.01465655922533307e-04, 4.07810849728176426e-04, 2.37329397140924927e-05, 1.67118007317343706e-04, + -1.85034347043011804e-04, 2.39043782577092709e-04, 1.07377907210822799e-03, -5.05008157646158105e-04, -3.03557662440200656e-04, + -5.24421474456220906e-04, 7.10470807822329150e-04, -2.65441489219161812e-04, 1.86528767525131816e-04, 1.18768236344364813e-04, + 2.73773866769723212e-04, -1.37336329257661718e-04, 4.25102267178067332e-04, 3.61425250084589772e-04, 9.31561412223019954e-04, + 9.00923909497920207e-04, -6.91244956332927194e-05, 6.81184644780815534e-05, 4.94292460722651344e-04, 5.57832768280572605e-05, + -1.78247906031541014e-05, -5.39356541770310516e-05, 1.12847683543339510e-04, 6.97768161894662503e-05, -1.28801112173031391e-04, + -1.36258124552730511e-04, 7.52752984009248194e-05, 1.80478192845277815e-05, -1.41645378129016193e-04, -2.57661323644306191e-04, + 1.41172970367211290e-04, 1.68446669744071312e-04, -1.43510684701046498e-04, -2.49605693568589191e-04, 2.09270025912965222e-04, + 1.73380332203807320e-04, -4.31528168315061845e-05, -2.69385649188820129e-04, 1.44262017722768493e-04, 1.21410391924219496e-04, + -2.07613658141512274e-06, -2.75471606365465440e-04, 7.75847983715348654e-05, 6.67669015816173777e-05, -3.47205197316259882e-05, + -2.20564258990204199e-04, 6.79078647130726426e-05, 5.59892631528520842e-05, -7.15773427619622281e-05, -2.01846729733602123e-04, + 8.12540527443827596e-05, 8.67509042232947450e-05, -9.40223467407713106e-05, -2.10067860124576197e-04, 9.90070868211715723e-05, + 1.27019435552551516e-04, -5.23811311183937698e-05, -2.22191208252392599e-04, 8.42154234690965325e-05, 1.31078778198552006e-04, + 5.85256321380583660e-06, -2.20106146426574611e-04, 3.43903585322539085e-05, 8.17679926137757117e-05, 3.57696523905280228e-05, + -1.71306620715922918e-04, -1.69639454518841103e-05, 3.60183337728328407e-03, 0.00000000000000000e+00, 1.21002498222732104e-03, + 0.00000000000000000e+00, -5.31067389607137001e-04, -2.22812727852063006e-03, -8.94992413192695607e-04, 3.02492958377452523e-03, + 4.52889634571147846e-04, 7.04024195597577774e-04, -1.76994018522177218e-03, -2.78698760786973490e-03, 8.84419486352532524e-06, + -1.60114345443433800e-03, -1.79602328856612098e-03, 1.69645827046587699e-03, 1.22263306124923104e-03, -1.38672671784444796e-03, + -1.81715401816120699e-03, 1.12291672961585505e-04, -1.74014595698025396e-03, 3.00638238969133014e-03, 5.38769342023656716e-04, + 1.01168286456173001e-03, 1.25835738989465897e-03, -2.14855111778818704e-03, 1.94025636506503399e-03, 1.60138198682476798e-03, + 3.04996716051287957e-04, 1.51347934909390003e-04, 5.21670106763438379e-04, 1.75693890008179202e-04, -2.26149697116798717e-03, + -2.18303710192580295e-04, -1.51398914585641406e-03, -1.58816215964855886e-03, 1.55927169355978798e-04, -4.94225640241941215e-04, + 8.36202145908589763e-04, 4.73292588125403895e-04, 1.06473894198859907e-03, 2.09611117891008196e-03, 3.25952685546390664e-04, + -1.01655912251420307e-04, -5.18107271101577132e-04, -3.16226537170489612e-05, -6.51602000247405327e-04, -3.27558099950500984e-04, + 1.17758636912919704e-03, -2.12360966362415822e-04, -3.87091188014523164e-04, -9.60683801574256695e-05, -1.30698707823795617e-04, + -9.27708167827058093e-05, 4.67257929136822116e-04, 5.26735365201713777e-04, 8.67242094192128112e-05, -7.67583181024485969e-05, + 2.96172266445650628e-04, 1.17659790932125708e-04, 7.92032613046985052e-04, -4.73512687405615112e-04, -1.16486541346945304e-05, + -4.35223289100590137e-04, -4.07299279253803910e-04, 3.52623807285629663e-04, -5.29775841676903103e-04, -4.05973013715962621e-04, + 3.01167171669751194e-05, 4.49564889859656861e-05, 4.98072315856021145e-05, -4.68575668174601442e-05, -4.26129773365465023e-05, + 2.68927754707826733e-05, 4.85345234325915614e-05, 5.01423283319458619e-05, 3.74641852071465678e-05, -1.15116648622984601e-04, + -6.37275438469799910e-05, 4.80550144767946612e-05, 1.06992536936288300e-04, -1.04196940176600408e-04, -7.16075071301549481e-05, + 2.43099112315813413e-05, 1.17741921950054504e-04, -3.77547890067578420e-05, -9.10460029082267824e-05, -9.11504130315538267e-06, + 4.97971810224103162e-05, -1.58264998536182614e-05, -4.29621030846360960e-05, -1.14992848529921406e-05, 1.54112443854980599e-05, + 5.70264442689391733e-06, 1.07379249356645216e-05, -2.07929050873082623e-05, -5.79162054506014299e-07, -1.78040733197804610e-05, + 2.89084424773166903e-05, 2.71190365929275905e-05, 5.58295705560797958e-05, -6.04971618174102746e-05, -3.76119450581838938e-05, + 5.89902787458344548e-05, 9.92815613917080503e-05, -4.15442049260147703e-05, -9.02971715609474616e-05, 3.14235053266474025e-05, + 1.01079611905228811e-04, 4.68143507524649596e-06, -6.77319129898850883e-05, -1.82988584621209425e-05, 5.02189403381184127e-05, + 1.73189683402960021e-05, -4.66784771895106733e-05, -2.66409942440282929e-05, -1.34728524105830606e-03, 0.00000000000000000e+00, + 3.12714909306053895e-03, 0.00000000000000000e+00, 1.18306606932572895e-03, 6.05240992502963007e-04, 1.88764954821659086e-04, + 5.42596575385474313e-05, 2.38749601975439107e-03, 1.22954432709531194e-03, 1.48925894226772590e-03, -2.20463386750377596e-03, + -1.18702352618399401e-06, -1.90558390450811617e-03, 1.14020421473847301e-03, -2.28729301768068621e-04, -1.88094245511257613e-03, + -2.01084137143882813e-04, 1.32488933882795711e-03, 1.18616181726357499e-03, 1.29398001359800913e-03, -2.71207856984953012e-03, + 8.19803578829499032e-05, -6.65644985171580774e-04, 8.75321220674210219e-04, 1.84074218759263395e-03, 4.06738204865472806e-04, + 4.38901299441693939e-04, -2.67651935970348621e-03, 6.81954479043894637e-04, 6.68960422943894986e-05, -9.81998477803277181e-04, + 1.20805174682736713e-05, -2.81493824936257227e-04, 6.95809492034823291e-04, 4.19125664581867304e-04, 1.75523867792575210e-03, + 7.32292775253121737e-04, -2.82641400905200510e-04, -1.46138290430873900e-03, 5.75321504003394740e-04, 2.86865541338693028e-04, + 4.34876815609579008e-04, 7.83080633245084208e-04, 4.94068325342467878e-04, -8.49557197723212068e-04, -8.31842546134029881e-04, + 5.34145624564779644e-04, -6.14076102583219338e-04, -9.72964231627292640e-04, -1.43721827729833109e-04, 2.01814576789058711e-04, + 7.67106614249287539e-04, 7.90377521464399315e-04, 4.14567584917532341e-04, -1.99241162791407225e-05, -1.66330553501719002e-04, + -1.39824103009899810e-03, -4.42117898608442521e-05, 5.84579711485059780e-04, 5.75612275643427223e-04, 2.74664173075564607e-04, + 2.65715923566144636e-05, -4.21666909316897534e-05, -1.19734102816029612e-05, -1.94256110037154401e-04, 1.01515434301023007e-04, + 2.67927527956691980e-04, 1.21374022529998612e-04, -3.81182434679552928e-05, -3.99384457032958676e-05, 1.67162746294344109e-04, + 6.14866880150712615e-06, -3.85414892397567823e-05, -1.12966523933537806e-04, 6.34552866927493963e-05, 1.93741280076219993e-07, + 4.10563732161052979e-06, -1.26284088177673306e-04, -7.55315779155755080e-05, 1.92745758019108296e-05, -1.13406998393739012e-05, + 4.07566430480326360e-05, -4.48671856566166020e-05, 5.14430653688213020e-07, -4.07333593756617344e-05, 8.00104941396855918e-05, + 5.41507565868616441e-05, 3.98494652648809884e-05, -2.07914223765169624e-05, -1.25512252041928818e-05, 1.41940036871691613e-04, + 7.32425589110114811e-05, -2.51512828443974635e-05, -1.19512272253876809e-04, 9.67416793113340325e-05, 5.82166703146601216e-05, + -6.26370433431184249e-06, -1.09923499775177200e-04, -2.87744323783186204e-05, 2.54233406189743207e-05, -2.10691302726592179e-06, + -3.12188949662077221e-05, -5.86605172857020092e-05, 1.89560583816991700e-05, -1.04040428617575500e-05, 4.44595633021011336e-05, + -1.56251824021060200e-05, 3.41616520292055713e-05, -1.52515501601725206e-05, 2.31782612290289723e-05, 4.54765941433281945e-05, + 3.70353965639083326e-05, -2.48628648484161422e-05, -3.78366768210461839e-05, 6.18128780983269579e-05, 1.00801012570994608e-03, + 0.00000000000000000e+00, 3.47342291476345876e-04, 0.00000000000000000e+00, 7.91801506949049000e-04, 2.41648709536439622e-03, + 2.75878765148988314e-05, -1.42178280189469899e-03, 9.03240112720424823e-04, -1.56794445064509409e-03, 2.94565430782157717e-04, + 1.18232427518331494e-03, 2.50420503753315303e-03, 7.18942036700169896e-04, -5.36395691591266192e-04, -1.86258200998779509e-03, + 3.29548349853266565e-04, -5.13252882376217934e-05, -1.94254317541928687e-03, 2.18830456667285195e-04, -9.60854372387139272e-04, + -1.16624243286916505e-03, -7.85552741685865383e-05, -1.32933508428586297e-04, 3.09585668826129650e-04, -7.10966795883627824e-04, + -8.71756659030432663e-04, -2.27897207039004610e-04, 1.61772288010974315e-03, 7.16790313587811995e-04, -5.01650554121614123e-04, + 9.71216763704305639e-04, -1.22884709652954904e-03, -1.46349407630147108e-03, 3.77995433273275170e-04, 1.17850182886075107e-03, + -8.07524644944247099e-04, 5.47488208982875005e-04, -2.83179916648217922e-05, 3.22551697665504763e-04, -1.09287117692114400e-03, + -9.25209472688941724e-05, 1.55444562488144710e-05, -7.54245519189904352e-04, -1.14660162251744202e-03, 7.48883115386481937e-04, + 1.71732250142289308e-03, -1.47036164048469710e-05, 4.51407428437879436e-04, 1.18680813584906390e-03, -6.72638438381541063e-04, + -6.97316848749536490e-04, -3.08263583383085790e-04, 5.65595983350456626e-04, -5.59797981166573668e-04, -4.26396998746973431e-05, + 5.98503817888803680e-04, 1.13018384155006801e-03, 7.22319902981317995e-04, -4.73045270082827313e-04, -9.90990376668181587e-05, + 1.31642491991061888e-04, 1.56034616915051694e-04, -1.14773260272165305e-04, 2.03221727850923800e-07, -3.50912025092656228e-05, + 1.32230955962657016e-04, -1.98452567834938321e-05, 1.05361071131588310e-05, -3.98500767524021935e-06, 2.79257280511491612e-05, + -8.26066314796087718e-05, 3.94515619184286295e-06, 1.43449934940676807e-05, 7.28684565532049394e-06, -2.02274386187340809e-05, + -5.80238351293255621e-06, 6.41043912182615570e-05, 4.18971091022072242e-05, -1.17256699183353403e-04, -1.80114114610353696e-05, + 2.98002704400505139e-05, 6.00549650472916225e-05, -7.26624164000236908e-05, -5.08022754955713893e-05, 2.12961246777251218e-05, + 8.15905788537672430e-05, -5.24679151035354737e-05, -4.72793083387787640e-05, -1.00706341258723311e-05, 7.85407806503067980e-05, + -1.67426868521839296e-07, -1.53964885518920599e-05, -1.73452868932099002e-05, 5.41309373643272800e-06, -7.78796169440987244e-06, + 4.24209004120176683e-06, 1.31103899532218097e-06, 9.03134330516295739e-06, -5.47716075715314646e-05, -1.75259416817880711e-05, + 3.39369459010566274e-05, 4.45394216516285720e-05, -6.33645059964500198e-05, -4.53989029125374428e-05, 2.30499073301049214e-05, + 7.01930476332635278e-05, -3.70740476127565899e-05, -3.95730802289417580e-05, -1.28283101994449709e-05, 5.13649901186186223e-05, + 1.62222452549143097e-05, -3.95332838575619596e-03, 0.00000000000000000e+00, 9.73971711510582564e-04, 0.00000000000000000e+00, + -1.63334095657213601e-03, 2.47566297975661915e-03, -4.61067854034823989e-04, 1.00227945503756797e-03, -8.98849702359479129e-04, + -9.89062784124243724e-05, 4.16612817020121440e-04, 1.69845399686099387e-04, 1.40704833076194490e-03, 1.58608145473462586e-03, + -1.91534747392348593e-03, -1.50556041518790020e-04, -7.41177503466006714e-04, 1.80077341737210116e-03, 1.82148333058896402e-03, + -2.36480063043344104e-04, -6.69607791546209994e-04, 1.45142101651430299e-03, 1.73832130576143714e-04, 8.93804851118562668e-04, + 5.14804835010676596e-04, -8.60802883056195796e-04, -1.49094753190589895e-03, -5.49339444448599160e-04, -9.43782543463274435e-05, + 6.78581866352359793e-04, 2.40555226995407996e-03, 5.50420320933374310e-04, 1.06689345052416503e-03, 1.11546355912698204e-03, + -2.51654815915527226e-04, 1.05362642615015507e-04, 1.51342669550902598e-04, -1.18709605961395514e-05, -3.48687623727660372e-05, + 2.66172462883273715e-04, 1.22640520127150393e-04, -3.53049495511274401e-04, 2.10819480972762000e-04, -1.32719882022899207e-03, + -2.68288818956041589e-04, -2.09821739624757906e-04, 4.54672184206733891e-04, -1.85821605909427607e-04, -6.69258067322836808e-04, + 4.19466498351806936e-04, 5.98458432727136413e-04, 3.41464685789424362e-04, 3.08215819645630260e-04, -2.95548945659434843e-04, + -7.24507159240115662e-04, -1.69082755504923292e-03, -1.93520904983491714e-05, 1.35191372580951795e-04, -2.56397811086976233e-05, + 2.33630592103984520e-05, -3.87116937938718973e-05, 7.81921474464154553e-05, -6.33964727838977121e-05, -2.12567160577475314e-05, + -9.42215352607953948e-05, 5.33226219041193637e-05, -2.21376049296527211e-05, 6.92024697881541171e-05, -1.20697375237608106e-05, + -5.29224653986627494e-05, -5.69801791450185759e-06, -3.27120027041702426e-05, 2.85749659021073320e-05, -4.20546764722071632e-05, + 1.98781427031484195e-05, -5.38405801763815410e-06, -3.60922281559310912e-05, 2.75190032543574721e-05, -2.65219063811620724e-05, + 3.90728273668446096e-06, -4.56887670342133939e-05, 1.64537934490613995e-06, -4.85903112312865320e-05, 4.24402246231590422e-05, + -4.13561365234884525e-05, 8.75373073637312674e-06, -1.21030282885749017e-05, 6.58122011178998717e-07, -4.77810740958057329e-05, + 7.18444564697379224e-06, -1.26287955993816603e-05, -4.19957851422694573e-06, -3.40668636228985117e-05, -1.81427746122776006e-05, + -1.29807277238031617e-05, 1.52633508008959505e-05, -9.32846106770538938e-07, -8.25199093839484345e-06, -1.53075654575231387e-05, + 1.90849812166562513e-05, -1.94244976250517904e-05, 2.30351054519609033e-05, -8.12019352100231694e-06, 1.41254032313609714e-05, + -5.15379624616807793e-05, 2.10763449534356613e-05, -3.20853263814959310e-06, 8.77168653988632320e-06, -2.58071167847657522e-05, + -7.75701334972038760e-06, -9.93028892835044389e-06, 1.38436251757236696e-06, -5.72249229404819815e-03, 0.00000000000000000e+00, + -6.32581087658179333e-04, 0.00000000000000000e+00, 1.61767889408735797e-03, 2.19778973626455487e-03, 1.96918718115947095e-03, + -2.65739741538310219e-03, -4.02877235435324934e-04, 1.82841358339318606e-03, -1.98190948111654397e-04, 1.84031700925872818e-04, + 9.14586352256133118e-04, 3.19426607242560368e-04, -2.39250809083575884e-03, 5.81493000541998505e-04, 3.77857679493603688e-04, + -6.86936120110013377e-04, -2.82807248390244833e-04, -6.70701771087373505e-05, 1.05241439367069302e-04, 4.46545395702673144e-05, + 1.68820664009942988e-03, 1.18800350711883193e-03, -6.58313265148805686e-04, 1.17053380848879200e-04, -7.17271890677809485e-05, + 1.85577007448963415e-03, 6.56520849846081700e-04, 8.06017465774315294e-04, -1.93797726968085720e-04, -1.75313812654149300e-03, + 9.27674844695662668e-04, 1.17445496798684705e-03, 9.54690738368271698e-04, 6.09946281790876106e-04, -1.02725245012973807e-04, + -1.03470126681415200e-03, 2.71870677502123641e-04, 1.01664056791575709e-04, 1.40092211191593103e-04, -7.42827786391725441e-04, + 2.54015410108206197e-04, 4.62154858422488414e-04, 4.73601196282340514e-04, 8.36667553932069407e-04, -4.24839064668559993e-04, + -1.18580662211388403e-03, 5.53470270383688029e-06, -7.12069686521007972e-04, -3.12850226308962768e-04, -6.28311957809785690e-04, + -8.30599693854902740e-05, 1.55928940929191389e-04, -1.60018398001453190e-04, 1.85250076757384821e-04, -1.57732838480953709e-05, + 2.95813088176528736e-05, -2.23827148064990915e-04, 4.80249509368113500e-05, -5.82639775077897334e-05, 7.00915612005133102e-05, + -1.77709281195849987e-05, 9.54475479352618022e-05, -1.06501231685877503e-04, -2.52725768132289197e-06, -2.87163499743147541e-05, + 2.39634619540592104e-04, -7.01848644852101600e-05, -1.07730520602342608e-04, -9.15501307042449695e-05, 5.55930835071830897e-05, + 7.65236411313137280e-05, 3.78463407174196132e-05, -8.20428675414204951e-06, -5.70295554976857978e-06, 1.26162015242596914e-05, + 1.10521120895615412e-04, -6.19508662898057469e-05, 3.94284099299287429e-05, -1.06451388614695302e-04, 7.47878473709218306e-05, + -5.21118007184475231e-05, 5.90512347485764542e-05, -9.31374583187064725e-05, -1.76537540334046529e-05, -7.82954623428642381e-05, + 6.31966793043861619e-05, -3.36067601811582521e-05, -5.23997892308786733e-05, -6.79521363541582459e-05, 3.05704464569093182e-05, + 2.23407406348362189e-06, -1.17716210222080909e-05, -5.41817760084240387e-05, 2.65837093897156702e-05, 9.77892152361844917e-06, + 3.98189921094368982e-05, -4.68398123377187695e-05, 2.83937454235591119e-05, -2.31712065750914126e-05, 5.78505330157043243e-05, + -6.07388476988686199e-05, 2.80495746496069133e-05, -7.16977469524132671e-05, 3.06211359179215205e-05, -4.91673798626069715e-05, + 2.17809145436793205e-05, -1.20189266317283195e-03, 0.00000000000000000e+00, -1.24444005867499095e-03, 0.00000000000000000e+00, + 1.73864859937527096e-03, -2.10016679995760200e-03, 1.28097965557804499e-03, -9.37869122558217835e-04, 1.23244624215056511e-03, + 4.29296709581100113e-04, -1.39876407807240904e-03, -1.77139693497456300e-03, -1.75368292696427997e-03, -1.88220407037240512e-03, + -5.97882747390380697e-04, -3.20840209140584487e-04, 1.07829902637683606e-03, 3.48422576558867793e-04, -4.98399522356942812e-04, + 4.85015946638849439e-04, -7.40868022399493063e-04, 3.89788722352541486e-05, -1.50683679721151501e-03, -5.68710376996097691e-04, + -1.17794557282445807e-04, -6.69071298330275012e-04, -1.54243277037009394e-03, 3.93673397135044668e-04, 5.02542184595859242e-04, + -1.06141332845498607e-03, -4.68541722612586032e-04, 8.09111430645225208e-05, -5.50488474901892027e-04, -1.76232702790926301e-04, + 1.17927273469369909e-04, 8.80531874629222823e-04, -3.17470244298062771e-04, 4.64126640010351500e-04, -5.84186413684128505e-04, + -1.42019871106746317e-04, 1.14102906216628905e-03, -1.13422500815021313e-03, -4.40136070204560524e-04, 7.81230568059088971e-04, + -7.48231811144619272e-05, 2.70624883281615704e-06, 7.77629329803327529e-06, -4.64890263687434737e-05, 1.29456925148187810e-04, + -8.26415855695131331e-06, -1.35796182420071221e-04, -1.13417756509377808e-04, 4.71475937122163948e-05, -1.35640896999089205e-04, + -1.77588284877164021e-04, 4.44527488443097229e-05, 3.61597554605081118e-06, -8.57653366949178396e-05, -1.04773375499409501e-04, + 1.67387410624966980e-06, 3.27745304038831628e-05, -7.35752623470212766e-05, 9.67836329131315262e-06, 1.24611546920806011e-04, + -2.07100197446184124e-05, -4.74290184099852226e-05, -6.27778738001704550e-06, 1.14722525535037299e-04, 9.15928222588590575e-06, + -5.24769508651932535e-07, -2.64488074208383205e-05, 1.89369901667540120e-05, -9.02543609331752848e-06, 5.05981564857997049e-06, + 1.50033852168410511e-05, -3.22506474294869728e-05, 1.69892618976147802e-05, -1.22510414201922799e-05, -1.72479602440841401e-05, + -5.38753752232114648e-05, 3.82701797625889268e-05, -2.52126883145274404e-05, -2.72655360701411011e-06, 2.38136850519584826e-05, + 3.89460713712125724e-05, -1.44085864133448205e-05, -1.99183168836612192e-05, 1.40299281945465198e-05, 3.41954900402774203e-05, + -3.38967848729448998e-06, -3.34956295772950317e-05, -8.08169691723178865e-06, 1.75633301603197390e-05, 5.66459538142349871e-06, + -2.32417858834375024e-05, -2.61422397808690076e-06, 1.61959819366858825e-05, -1.41749825797410821e-05, -1.69536160529109602e-05, + -1.31441549108300885e-06, 1.56297638295987488e-05, -1.11585138806505809e-05, -1.65126158152218315e-05, 9.87884239323989340e-06, + 2.03783651816531221e-03, 0.00000000000000000e+00, 2.96441215597000821e-03, 0.00000000000000000e+00, -1.20692298413791507e-03, + -1.67976475604672201e-03, -5.55507989859292846e-04, 2.41084152649467202e-04, 1.56009441290519001e-03, 1.29451122431705899e-03, + -7.34843389900259429e-04, -1.14363222895938195e-03, -1.04558576783006095e-03, -1.36385048193016396e-03, -1.40388960701079294e-03, + 6.47371830280723940e-04, -7.50606293589330164e-04, -8.54271538689986695e-04, -4.38830402088630537e-04, 5.99525655311079764e-04, + -1.78097452143089407e-04, -2.74859279931684324e-05, 4.58302159015211809e-04, 6.96953952070895151e-04, -9.09138958706189721e-04, + 1.00859289053476311e-03, 1.03420094281303607e-03, 6.06923899074255464e-04, 1.89553126330842806e-04, 1.07961345910163406e-04, + 1.22474291555961902e-04, 8.97871951519685265e-04, -2.03363015143865218e-04, -2.90422734859094615e-04, -1.16390797079040211e-03, + -4.07437136982752909e-04, -3.33759313478539392e-05, -4.13217846735850717e-04, 6.11501445766974655e-05, 2.30660848037552498e-04, + -1.65860197748338308e-04, 7.32838125453208456e-05, 3.05772451206082208e-05, -5.86058550125370254e-06, -1.00712626716708905e-04, + -1.16636328519362104e-04, -4.39030870540731342e-05, 2.85746939544883230e-05, 1.21787965357839705e-04, 3.46888941913913528e-05, + 1.02679377633142107e-04, 4.05996014113190428e-05, 2.30543771929583613e-04, 5.14945396569508813e-06, -1.65368020862696715e-05, + 9.04748986364313894e-06, 2.93878012034917504e-05, -7.94825676720516274e-05, -3.80497824239483319e-05, 7.03625355594050394e-05, + 8.98471420453423214e-05, -2.80862342068120786e-04, -8.14566101491249101e-05, 3.25979861574083376e-05, 1.06156949242827603e-04, + -1.32132181275301412e-04, 1.27583620705697613e-05, -5.79628880366303540e-06, 2.43199623878137608e-05, -3.60126018132162520e-05, + 6.15951019505404804e-05, -3.99183515734159737e-06, -1.76186429787627617e-05, -4.49466237943879815e-06, -9.63231232761454656e-06, + 2.20206236945611825e-05, 4.64279356163652205e-05, -8.18007824948389131e-05, -1.75678833941443713e-05, 1.16166757075860911e-05, + 8.50503368640412397e-05, -5.73112362586235122e-05, -3.02595465759658291e-05, 2.43223590855599709e-05, 9.00167115746459403e-05, + -4.42196883338474652e-05, -4.77861166708995849e-05, 1.47871285798455200e-06, 6.46850476250585682e-05, -2.84469853186260997e-05, + -4.06690705935917952e-06, -1.52285477243602015e-05, 5.34350029362040406e-05, -2.36525750629738904e-05, 1.79723054916162533e-05, + -9.66549826127890040e-06, 5.63345183102968898e-05, -2.80051432389576894e-05, 3.21773388999549127e-06, 1.50608941802879105e-05, + 5.60896638506370299e-05, -2.17105368788846218e-05, -1.18764180976179311e-05, 7.83174918154457391e-06, -3.60332041478658661e-04, + 0.00000000000000000e+00, 3.49318793191280520e-03, 0.00000000000000000e+00, -4.69558634437114002e-05, 7.74460196242976196e-05, + -1.72713645917304507e-03, 9.25559109923871173e-04, 2.70769786797511226e-04, 1.31867157982758915e-03, 8.27630755758396825e-04, + -9.10032934212391328e-04, 1.05207266211394096e-03, -8.61162790483724626e-05, 5.89935325723504357e-04, 9.44401798870870619e-05, + -5.30424580391579309e-05, 6.46005187543645225e-05, -1.38406487947310611e-04, 7.71434788940860436e-04, 5.73812403577386287e-04, + 9.96893494257266189e-04, 1.03367888609143905e-03, -6.48856607584904002e-04, 1.75666860474048509e-04, 3.15758899087953469e-04, + 8.50083079068923893e-04, 3.13659018423505167e-04, 1.51559585553799191e-04, 1.51467162868235410e-04, -1.29431785041904613e-04, + -2.39797674845940504e-04, 2.33549706236320912e-04, -3.00841368338772394e-04, -7.95062782924988755e-05, -2.07935910158562009e-04, + -3.92408950341176794e-05, -3.35406314150178588e-04, -1.45057999540062810e-04, -1.56325561593936710e-04, -2.13483774208381123e-05, + 1.23660725477051607e-04, -4.52126231413514295e-06, 1.23543299691240512e-04, -2.02273348603037631e-05, -1.12762498094144112e-05, + 1.29264958426136413e-05, 1.42217450806022812e-04, 4.33277313716177756e-05, -8.88754036309822399e-05, -4.52579094020371517e-05, + 1.53952587710451221e-04, 1.49223702486409108e-04, 1.89769705761112033e-05, 8.79407357783015825e-05, -2.42581624364586902e-05, + -2.09538727115885126e-05, 3.19715400980995704e-06, 2.93210815056320497e-05, -9.82593484599446274e-06, 3.54911921458880570e-05, + -1.01403207835097905e-04, 4.75557097499886204e-05, -5.15654800601184123e-05, 2.56187188204641513e-05, -4.40789852288279039e-05, + 9.02715865368834106e-05, -6.39625122936784616e-06, 3.91163204254141270e-07, -1.43497473262268803e-05, 1.48738995955006900e-05, + 7.10059543838856299e-05, -1.44858422217440211e-05, -2.29202291658015780e-06, -4.74320720877375356e-05, 2.16688715314149923e-05, + 3.19024146278115502e-05, 6.65770850586241554e-06, -2.52674351434578406e-05, -5.95618473210036723e-05, 1.85160634771636908e-05, + -1.66385627558361417e-05, 3.01536532216370809e-05, -2.34318990675550609e-05, 1.99994047973059210e-05, 1.20799934486498588e-06, + 4.68905539792476611e-05, -4.05199614593984003e-07, 2.15121745493054430e-05, -9.06512486920190993e-06, 1.60091575368399188e-05, + 4.26017345086028326e-05, 2.60811047294765523e-05, -6.95236528206229650e-06, -1.14411704502663105e-05, 2.15010636838700904e-05, + 1.45470558851883310e-05, -6.07212258084767841e-06, -3.22028438478360636e-05, -3.17933241488657482e-07, -2.53151479665288202e-03, + 0.00000000000000000e+00, 1.12967622013809398e-03, 0.00000000000000000e+00, 5.16439235336714790e-04, 9.13502172529712803e-04, + -1.10885916513099808e-04, -5.87650332004382970e-04, -3.10824645598157688e-04, -2.04340181774912815e-04, 1.50058658499531005e-04, + -6.27762758616644544e-05, 6.34086998122845619e-04, 1.62611213591308410e-04, -2.58000457753021289e-04, -2.28405829315187425e-04, + -2.41752383261545410e-04, 3.87195735267530246e-04, 1.31350888922379520e-04, -1.29243632867355305e-04, -1.86027850373812504e-04, + 2.69006585922663719e-05, 5.31648558458435233e-05, -2.81913823664273785e-04, 6.12596182709963886e-05, -1.99722422596107518e-04, + 1.65292373762217508e-04, 1.93923419729845505e-04, 2.75862370177224576e-04, 2.77743170358154992e-04, -2.42249854023419709e-04, + -2.36920920177450216e-04, 1.24587860121446999e-04, 1.12559537025789104e-04, -8.91336246402938640e-05, -1.40571914192917500e-04, + 9.69331183964188236e-05, -1.44820965513538111e-04, -1.28839828734424514e-04, -5.82527231861141738e-05, 4.37826620002375143e-05, + -7.67180354379144502e-05, 5.74861437218499151e-06, 5.02678298138450438e-05, -5.91313323346461106e-05, -1.08838366163098205e-04, + 6.49284469111140313e-05, 1.76727711960057211e-04, -6.84530490306975691e-05, -1.42567887910064205e-04, -3.17538645802270311e-05, + 6.82633542136118585e-05, -2.69908329748347014e-05, 1.98739426028434396e-05, 7.54438074321606313e-05, -6.35141527967402148e-05, + 1.72478873877519024e-05, 6.65218946661316610e-05, 5.90351225582636660e-06, -5.29346479560344747e-05, -6.09586847041837740e-05, + 5.77794329008206426e-05, 5.15519395345650716e-05, -5.66799896792458604e-05, -7.73712507640684068e-05, -4.08972980683335022e-05, + 6.47698884178398945e-05, 2.56965476906213634e-05, -1.07169096508788499e-05, -3.11367084296445586e-05, 2.64692802759765304e-05, + 4.09729157302286519e-05, 3.11189278864267132e-05, -5.78741270881866221e-06, -1.16942216776686414e-05, -1.41167610522350718e-05, + 2.77421966670059834e-05, 3.43719238319505278e-05, -1.16804942644560203e-05, -6.12184985312735501e-05, -2.94284212452698707e-05, + 3.96388866360877800e-05, 3.78998547828979167e-05, -4.92209043992790452e-05, -5.40755588507646826e-05, 2.16255420278872399e-06, + 4.63317120113593031e-05, 6.94969244998754276e-07, -1.75200269820160494e-05, -3.06430625697614833e-05, 3.43536241910082486e-05, + 1.58233835524091911e-05, 1.81976913278585211e-05, -1.12638695311979910e-05, -1.18290933055904215e-05, 1.54065347512193402e-05, + -1.97457057792955592e-03, 0.00000000000000000e+00, -6.17903706175687285e-05, 0.00000000000000000e+00, 2.39974191600898101e-04, + 1.09676205964747407e-03, 2.66073294575686298e-04, 8.97726904827368986e-05, -4.21704772986081135e-04, -2.82186869262147694e-04, + -1.97386162412418906e-04, -4.55182257600979224e-04, 6.90018589665085673e-04, 4.30022425770627912e-04, -4.13602752490345210e-04, + 5.26412358602485543e-05, -2.99605019324083717e-04, 3.36147203973198865e-04, 5.35288011923700297e-05, 1.19957570327492498e-04, + -1.36669491045843299e-04, 1.94136007080692206e-04, 2.01776429817749806e-05, 4.22807143534335079e-06, -9.29802360975042527e-05, + -1.55693138695467696e-04, -2.64935701201438924e-04, 3.83809379110780418e-05, 3.68315910254809705e-04, 2.22675272309271816e-04, + -8.40837046939708617e-05, -1.26650144654841398e-04, 2.75725685385756389e-04, 2.08514653482221111e-04, -1.32192752900868492e-04, + 2.67546735251402909e-04, -1.46951286818532412e-05, -9.51276528158519121e-05, 1.12515159008266409e-05, 1.65126940488277810e-04, + -1.05096096778006392e-06, -1.48931894867637118e-04, 3.88335645430680542e-05, -6.79220808847396388e-05, -5.68333508117840373e-06, + -1.13497193495425101e-04, 4.40865395213776718e-05, 5.81689000146885115e-05, -1.07304496192630510e-04, -1.09553109663381809e-04, + -7.36678296651362596e-05, 3.05076035218356775e-07, -7.14562184723935252e-05, -2.17689602162982504e-05, -8.86635043731916103e-05, + 1.55830079922932419e-05, 8.53188645751188393e-06, 1.27616620265669114e-04, -3.07660183064505199e-06, 1.77693877526996815e-05, + -1.21881433351298308e-04, 9.70820239258155421e-05, -6.88477447173295197e-06, 8.35812145959487023e-05, -7.08861142732914167e-05, + -1.95410408058430200e-05, -2.99815675113649160e-06, 5.30146506678979022e-05, -1.17983237948369116e-05, -4.06521074556727538e-05, + -1.35928793450611709e-05, -2.69206670526964770e-06, 2.37405849777586631e-05, 1.41027369716773706e-05, 2.38608811716672410e-05, + -1.04093815988561802e-05, 2.94018573099677933e-05, 4.79097717318764199e-05, -3.04484990645996103e-05, -7.41822772705316389e-06, + -4.31780968615617526e-05, 6.00484819457901999e-05, -2.16148968238596922e-05, 2.63326485734068621e-05, -6.98149485535926799e-05, + 6.37673262907134300e-06, -1.49451539851202210e-05, 5.16763312907252601e-06, -3.01509621222700420e-05, -3.38437301504128696e-05, + -3.09602298739826106e-06, 1.17686850815125304e-05, -1.46172096654267804e-03, 0.00000000000000000e+00, -1.04257220251350712e-03, + 0.00000000000000000e+00, 3.37601615679230670e-04, 3.62179244244991653e-04, 4.66516969872935697e-04, 2.20896945250713200e-04, + -1.14856098350701606e-04, 3.71733378208419078e-04, -4.56528102625122800e-04, -5.00478119862720716e-04, 6.08268940632159427e-04, + -3.32928662560408225e-05, -5.59187320611888869e-04, 4.24940469217676927e-04, -1.54626662460820405e-04, 1.53803155025080491e-04, + 1.42877804893037906e-06, 6.98532531440891971e-05, -2.98746773248649629e-05, 1.35471141341737106e-04, 6.98092718847611736e-05, + 3.63862564501528970e-04, 1.77889982501028103e-04, -1.05830904220531507e-04, -5.61018978334430437e-04, -2.70461507638364820e-05, + 2.69731733460872600e-04, 6.85854381210795444e-05, 3.93859632863456042e-05, -3.31099850163778212e-05, 3.15642194180260993e-04, + -8.55565884347129894e-05, -8.81178757452353422e-06, 4.14099579966528220e-04, -1.18125841112851310e-04, -1.58864732692415517e-04, + 3.00173248333441702e-05, 2.77190872568433815e-04, -2.56765255788473531e-05, -1.57033171768035395e-04, -3.32959711484975829e-05, + -9.63927667599435235e-05, -2.54742433883303236e-05, -6.50765457697475766e-05, 5.04018352818951719e-05, -3.43950512225536629e-05, + -6.17363546212169873e-05, 5.10273923307524849e-06, -5.84607735450458815e-05, 1.64379737466675901e-05, 1.29734901817078911e-05, + -3.92696914882976447e-05, -1.64041530160981709e-04, 1.42915901318080097e-05, 4.48109662215338665e-05, 6.40760478636463835e-05, + -4.00827654443697601e-05, 5.23179794399272952e-05, -2.72653980923539735e-05, 4.13038148568586624e-06, -6.86097916757893300e-05, + 1.53031279669278410e-04, -3.76813873437484393e-05, -6.06148813378603305e-05, -6.39726082097255067e-05, 9.97952163664085433e-05, + -8.05566844538046094e-07, -1.79349356201000397e-05, -2.64035614102093801e-06, -2.27319992387671927e-05, 2.44803623725549528e-05, + -4.92446408524156795e-06, 1.69097417534366305e-05, -2.02331969300959902e-05, 2.23257754347340127e-05, 2.79953564079958715e-05, + -2.77971641526118441e-05, 5.31337018758826847e-05, -1.51685357707728206e-05, 1.21185601596955313e-05, -5.54255754132544848e-05, + 3.39800800142221935e-05, -1.37705220101120503e-05, 1.17026527332457494e-06, -4.84099736084911341e-05, 1.72580930219210916e-05, + -3.67873286266726476e-04, 0.00000000000000000e+00, -9.71856035308778688e-04, 0.00000000000000000e+00, 3.68001000603857041e-05, + -1.80366306297578393e-04, 5.95465838399280006e-04, -9.73074587525231199e-05, 4.33035509414850597e-04, 8.68813550017956382e-04, + -3.55604219599788853e-04, -2.09149810167836517e-04, 6.05497606635874435e-04, -4.44285688213212702e-04, -4.96326090016681234e-04, + 2.76200191743740885e-04, 1.05594362050475299e-04, -7.31746111760187581e-05, 5.25437405368234128e-05, -7.03636533238632066e-05, + -7.04810658251703114e-05, -2.21448446357462613e-04, 8.40919434072135200e-05, 3.61285642497185589e-04, 4.63859693039894900e-04, + 9.95447465281579533e-06, -3.90334836566050476e-04, -7.15137273935237281e-05, 1.58344253289186405e-04, -9.66561524647479064e-06, + -2.88464063028901239e-05, 3.20394934323419382e-05, 2.27870727298711814e-04, -3.85003894403811674e-04, 3.95453114218767795e-05, + 2.52344815518091095e-04, -1.28109809597042892e-04, -3.13591750088317250e-04, 4.95361157057811461e-05, 1.52566847685289017e-04, + -4.65342429065181135e-05, -4.37630316986734248e-05, -2.94250258841729114e-05, -2.88828323869860414e-05, 3.73909881626153694e-06, + 2.72162890905132315e-05, -2.00735783121399998e-06, -8.45647849999474224e-05, 1.21455512759758114e-05, -1.54519685732128702e-05, + -4.95728310623586458e-05, 4.23491907495121640e-05, 1.22893175677633306e-04, -2.68419786355757812e-05, -9.60596847652382831e-05, + 3.08820983081861631e-05, 5.83890486469687431e-05, -3.73708698488206477e-05, -5.19159241357444848e-05, 3.66386671593869911e-05, + 5.07658846861618521e-05, -1.07304750005830703e-04, -2.83663556542631599e-05, 9.28807206358021626e-05, 3.70104011521805719e-05, + -8.34551268891536098e-05, -3.14113155589142528e-05, 6.63182318337119205e-05, 1.60213917824094198e-05, -3.52794936491844085e-05, + -1.59225419093221418e-05, -8.34046194147479916e-07, -9.65280581409041511e-06, 5.07677914813006063e-06, 2.03902166810200127e-05, + -1.25974535618156500e-05, 3.67496199937445797e-05, -1.69153230944175091e-05, -3.29180959908194180e-05, 2.52964761838148521e-05, + 2.14550118421411021e-05, -2.55984106137294917e-05, -2.09892146802813526e-05, 1.45091691712559505e-05, 1.05889292279405406e-04, + 0.00000000000000000e+00, 6.96557645777117211e-04, 0.00000000000000000e+00, -3.20653240139645156e-04, -3.06664898492693173e-04, + -1.30135967286087193e-04, -3.43685687318228197e-04, 6.99243111115629935e-04, 1.00931484720404399e-03, 2.27872845646686414e-04, + 5.60556585522428805e-05, 5.06668770409637393e-04, -5.61098753829031857e-04, -1.77788812269638309e-04, -9.26838818560580326e-05, + 4.80704370686056920e-05, -3.94480920452870476e-05, 1.13743624415380402e-04, -1.95593364550650988e-04, -8.22385939115209569e-06, + -2.22550243804433797e-04, 3.83433777349945372e-05, -6.14113903833953543e-05, 5.65029175348560203e-04, 1.64254592755116099e-05, + 6.44997102970363238e-05, 6.58176612450044410e-05, 1.26948782028661410e-04, -6.85633288983039511e-05, -1.17595095165860504e-04, + -5.90185476888272837e-05, 1.31585913470637410e-04, -4.56978252250974911e-04, -1.00958846936701602e-04, -1.25259617920235096e-04, + -1.04798018922154108e-04, -2.72545293701832833e-04, 4.86208256378739653e-05, -4.49465427200034320e-05, -5.65278962179857657e-05, + 5.46913188228785663e-06, -7.25997168582917762e-05, 1.14384344901122901e-04, 1.12924097562157112e-05, 3.68523306125718506e-05, + -1.58208335465920613e-05, 1.20613043672090303e-05, 5.27346073833204513e-05, -3.86529074265486920e-05, 4.46597253672119545e-05, + 4.49755028762217115e-05, 1.30762541454545214e-04, -2.23656324639177317e-05, 3.19275114821177829e-05, 4.05961036565850809e-05, + 5.72814922207066132e-05, -6.32001323493957027e-05, -2.11556776338600419e-05, -5.16301940103973931e-05, 4.71248075383639623e-05, + -1.16687520784574999e-04, 3.37705783718914737e-05, -3.55213809620370029e-05, 2.36245507648186426e-05, -9.39852209287609514e-05, + 4.18229647627686027e-05, 2.05795533565095200e-05, 2.95759782556888409e-05, -1.11460217666459313e-05, 5.56781374858055805e-07, + 1.61083673677120723e-05, -8.87804840750498273e-06, 4.69737707507023012e-06, -1.46943693829812711e-05, 8.96017347561271887e-07, + 2.31898944912936817e-05, -5.75437116150547476e-06, -1.04050964809673511e-05, -2.31844808370536218e-05, -1.24228889211622706e-03, + 0.00000000000000000e+00, 1.91447976012779097e-03, 0.00000000000000000e+00, 1.86361784351676802e-04, 1.22099836958390012e-05, + -7.18563451828412871e-04, -5.44913205591266835e-04, 2.62429988030197430e-04, 7.46591568526208975e-04, 5.58329937558502609e-04, + 1.73536073229491603e-04, 3.28522185630468282e-04, -1.86008732903326717e-04, -5.28015697290392397e-05, -2.60360888337061416e-04, + 3.38623159395887096e-06, 3.98523056007639166e-05, 9.85712987849502202e-05, -1.84923290917329212e-04, -7.71217348849064299e-06, + -5.95492370208864554e-06, 9.80226288250609149e-05, -2.85565844690997426e-04, 2.03773487125666412e-04, -7.62700465832047414e-05, + 2.74605378426968504e-04, 1.01722822597336303e-04, 1.72888937367956423e-04, 6.14980529476756761e-05, -1.65564582674629617e-04, + -1.03937770636500405e-04, 1.79433136537534101e-04, -2.08448758771769422e-04, -1.89466752673463220e-04, -3.16495343152525463e-04, + -4.65119297713267725e-05, -1.06418923164135207e-04, 2.92133315556121309e-05, -6.26522370914165365e-05, -3.80204692959265470e-05, + -3.19351411420031736e-05, -2.69623453745025131e-05, 1.37371381422677307e-04, -2.75022603732538636e-05, -8.32319716531201625e-05, + -1.83373351979320508e-05, 5.83418131216442243e-05, 3.02271302751488504e-05, -4.98112931491525709e-05, 9.55320075053375307e-05, + 5.27885328323068648e-05, 1.74669745949123195e-05, 7.07665598251270749e-06, 7.65295271797020177e-05, -2.16827317655175404e-06, + 2.56158486391027717e-05, 3.90319152054964128e-06, 1.09187600520226411e-05, -7.09932774164822179e-05, -3.10808798303788108e-06, + -1.99276187654574111e-05, 6.66283232503938456e-05, -9.53193663619292649e-05, -1.38192357228852599e-05, -5.06310999643882654e-05, + 5.41699610443037853e-05, -3.01513898130062012e-05, 7.50384806164352122e-06, -2.46089181875213920e-05, 2.59233801595598333e-05, + 3.61281563025534099e-05, 1.03245043482577200e-05, 1.06651433549918202e-06, -2.36670929937189898e-05, 1.18133123540063415e-05, + -2.37752112057859405e-03, 0.00000000000000000e+00, 9.79902373011075313e-04, 0.00000000000000000e+00, 6.24243707435149868e-04, + 5.32552953373556688e-04, -3.43350821058730849e-04, -2.74480805820874235e-04, -2.27192880699002904e-04, 2.78499590851373610e-04, + 2.16286114391411107e-04, -1.60014133917291410e-05, 3.34567174557116290e-04, 1.63861606954495299e-04, -7.32105805604817811e-05, + -2.75173445122268732e-05, -1.63823844717904518e-04, 1.54240508845202994e-04, 2.27247826319914723e-05, -1.25891429989861308e-04, + -7.50300602967604688e-05, 2.19336099049784612e-04, 5.12062944564588537e-05, -1.20931381190694310e-04, -3.93305054302574525e-05, + -1.85764088661301817e-04, 1.26452686799904506e-04, 8.28267314219328091e-05, 1.70060420266698105e-04, 1.85986806711261124e-04, + -1.26597460571993109e-04, -6.99927087500373682e-05, 2.43504463420420004e-04, 8.90929191691563495e-05, -1.08361903761964912e-04, + -1.22129315467521012e-04, 3.69685678194193193e-06, -9.76853026011532927e-06, 2.31262017597801630e-05, 1.13627595483176917e-05, + -4.73528940188713203e-05, -6.48206454745550508e-05, -1.22100888451138691e-06, 7.56468638352087683e-05, -2.53416560145800336e-05, + -1.38940053681318499e-04, 7.20623765471817058e-06, 3.21809048129001281e-05, -2.21024328556184202e-05, -6.64125089630887160e-05, + 3.94708805911000318e-05, 9.71077583953939775e-06, -3.54527000430615696e-05, 3.69577787600789033e-05, 2.78095735286460204e-05, + -5.72103304090500763e-06, -2.29889369505701688e-07, 4.82107116030443131e-05, -2.41508628637585772e-06, -2.63405093477893100e-05, + -5.39352079240862240e-05, 5.49021393227147052e-05, 1.62938702966068904e-05, -3.35135604887079182e-05, -5.53241700444050103e-05, + -3.74072324766078626e-06, 4.09192387408724616e-05, -1.27958514490034509e-05, -1.86071122399451600e-03, 0.00000000000000000e+00, + -4.75292082404548451e-04, 0.00000000000000000e+00, 3.68780932191134698e-04, 5.54191148812023461e-04, 2.46565766805826323e-04, + 3.31614351952607561e-04, -1.71631555193545323e-04, 1.53116472177868300e-04, -3.93962061732021601e-04, -4.67407565386735021e-04, + 3.81580763254471577e-04, 2.04730687941415503e-04, -1.01606503900109209e-04, 2.85959959364757792e-04, -1.79032452140105822e-04, + 1.92416359225170601e-04, -7.84680634606176557e-05, 1.27965049428417914e-04, -8.79129716389746087e-05, 1.11181217880199307e-04, + 9.05309967637526850e-06, 1.00254047693470205e-04, 4.69931316356031836e-05, -1.26891478535794204e-04, -2.36948343468677716e-04, + -4.48140930566895122e-05, 1.56053941255461314e-04, 1.62691879050438606e-04, -3.04275795445205909e-05, 2.34900095260012922e-05, + 1.89834915726008312e-04, 4.41324083801779445e-05, -2.43723672445334893e-06, 2.63792044876342115e-04, 4.15153428121390933e-05, + -1.05194441751740605e-05, 3.07488334573277619e-05, 1.10224518899548499e-04, -4.91642006568435838e-05, -6.09507607897971724e-05, + 2.34553756526172398e-05, -5.48126075903642140e-05, -1.20368960697293707e-05, -1.24150118293778319e-04, -1.48408936527305184e-06, + -2.32711453314438716e-05, -2.44128815133471698e-05, -8.80086425816799928e-05, -6.20023416923870383e-05, 1.39888880163119112e-05, + -2.63313922516788706e-05, 2.90497335887282418e-05, -5.35969666694607321e-05, 7.45670074227807885e-06, 6.05689174479715297e-06, + 4.71747810724217328e-05, -7.45009495718939600e-06, 5.00189732462369597e-05, -4.37607562907335924e-05, 4.81409963763506648e-05, + -2.77590927613943195e-05, 4.52414041552540728e-05, -5.31259473640927006e-04, 0.00000000000000000e+00, -8.52598896055884966e-04, + 0.00000000000000000e+00, -1.34885197765120801e-04, 3.96653458139192421e-05, 3.79863748404974581e-04, 4.72379949916368639e-04, + 3.10022768658648959e-04, 5.69786980729471452e-04, -5.32004027356815690e-04, -5.51946785340620108e-04, 4.75232705602061337e-04, + -1.43688936593265289e-04, -1.34145640806652110e-04, 3.50186859951718285e-04, -9.73995300596363001e-05, 3.44420910592402329e-05, + -7.18080185080251102e-05, 1.60789183521345793e-04, -2.22624413329587016e-05, -1.28193723235865101e-04, -5.86367985071233234e-05, + 1.73808458946174806e-04, 3.30813591969955861e-04, -2.71856805616303913e-05, -3.78174032231158770e-04, -5.90252957383779106e-05, + 8.26749071828692322e-05, 4.95775684062529633e-05, 5.44580124316286832e-05, 4.66596997412812434e-05, 1.38805718688968211e-04, + -2.33571291413536304e-04, 1.03732179389248707e-05, 3.60726661880703256e-04, -1.47507354615690205e-05, -1.19512727220272909e-04, + 1.74914259207988697e-05, 1.47486413543964701e-04, -3.32823665073807436e-05, -1.22842848319823202e-05, 1.43169594952067807e-05, + -7.76973814947431698e-05, -3.88223282922580738e-06, -6.06833041894285847e-05, 1.69396426346393996e-05, -1.68622586139392799e-05, + 2.13089649442872411e-05, -4.32134801386761130e-05, -6.80517923313584582e-05, -7.35601065807071865e-06, 5.38945357647690934e-05, + -1.80635421990123584e-05, -7.24410824853465490e-05, -8.49791200553206016e-06, 2.38648729302909319e-04, 0.00000000000000000e+00, + -1.21834637822591509e-04, 0.00000000000000000e+00, -3.35292268503080285e-04, -2.25765584210752207e-04, 1.20333852013061409e-04, + 8.76160017921376148e-05, 5.77938304508217315e-04, 7.60972878504902238e-04, -1.82272425178899499e-04, -1.60779267929980014e-04, + 5.35448065399970162e-04, -3.79066952306616653e-04, -8.56199550095533123e-05, 6.92585641489698963e-05, -1.77063677568286815e-07, + -6.19787069144851961e-05, -4.12494051966487958e-06, 9.23467471398991294e-06, 2.20656813337354222e-05, -2.68841353591363623e-04, + -4.41569566824339039e-05, 9.39704392249946418e-05, 5.05686186431699705e-04, -1.34069787456886217e-05, -1.24401821560768692e-04, + -3.57022391309666403e-05, 3.18289650058353326e-05, -4.55877181661160831e-05, 1.88308936718896921e-05, 1.10332673498877904e-05, + 8.26712109978732347e-05, -3.60749199807011971e-04, 1.66345821208051797e-05, 1.38102500835173112e-04, -5.00940250071407793e-05, + -1.95402563658848610e-04, -3.17286321063148396e-05, 1.79777030274422993e-05, 7.63370547491521362e-06, -1.10396898961960510e-05, + 3.33369496271408800e-05, -3.04264250781569691e-05, -1.57216726797123306e-04, 0.00000000000000000e+00, 6.59370968572886660e-04, + 0.00000000000000000e+00, -1.58158308265806205e-04, -1.39270436780774621e-05, -1.30148387599806405e-04, -1.89881255738238400e-04, + 3.53165617144957002e-04, 5.52476715941731993e-04, 1.62507460835903910e-04, 1.96382682741124315e-04, 4.95030561024928590e-04, + -2.51538337834093535e-04, 1.01358288830775107e-04, -2.31117761155268212e-04, 1.61393344792953511e-05, 2.99917826599387518e-05, + 7.51186147023420687e-05, -9.84683991244665293e-05, -3.13331160710574486e-05, -1.62522943150101489e-04, -1.23500835514879590e-06, + -1.33566023652081705e-04, 3.97104494240615893e-04, 5.35531200087193626e-06, 2.03178932800896107e-04, 2.04733048314890730e-05, + 1.65109198739017411e-04, 3.56627616721475523e-05, 2.11796830261870299e-05, -2.55894236371568098e-05, -1.17754597691724491e-03, + 0.00000000000000000e+00, 8.07133621695610274e-04, 0.00000000000000000e+00 }; -#define ILCHAM 3128 +#define ILCHAM 3128 #define NSTRON 10 #define NSMAX 31 #define NMSMAX 31 -static void rectfromellipse (double * vr, const double * ve, int nsmax, int nmsmax) +static void rectfromellipse (double *vr, const double *ve, int nsmax, int nmsmax) { - int i, j, kr = 0, ke = 0; - for (i = 0; i <= nsmax; i++) - for (j = 0; j <= nmsmax; j++) - { - double xi = (double)i / (double)nsmax; - double xj = (double)j / (double)nmsmax; - if (xi * xi + xj * xj < 1) { - vr[kr+0] = ve[ke+0]; - vr[kr+1] = ve[ke+1]; - vr[kr+2] = ve[ke+2]; - vr[kr+3] = ve[ke+3]; - ke += 4; - } - else { - vr[kr+0] = 0.; - vr[kr+1] = 0.; - vr[kr+2] = 0.; - vr[kr+3] = 0.; - } - kr += 4; - } + int i, j, kr = 0, ke = 0; + for (i = 0; i <= nsmax; i++) + for (j = 0; j <= nmsmax; j++) + { + double xi = (double) i / (double) nsmax; + double xj = (double) j / (double) nmsmax; + if (xi * xi + xj * xj < 1) + { + vr[kr + 0] = ve[ke + 0]; + vr[kr + 1] = ve[ke + 1]; + vr[kr + 2] = ve[ke + 2]; + vr[kr + 3] = ve[ke + 3]; + ke += 4; + } + else + { + vr[kr + 0] = 0.; + vr[kr + 1] = 0.; + vr[kr + 2] = 0.; + vr[kr + 3] = 0.; + } + kr += 4; + } } typedef struct { - int trunc; /* 77, 88, 99 = truncation type */ - int subtrunc; /* 77, 88, 99 = subtruncation type */ - double * values; - int len; - const char * name; + int trunc; /* 77, 88, 99 = truncation type */ + int subtrunc; /* 77, 88, 99 = subtruncation type */ + double *values; + int len; + const char *name; } trunc_t; -int main (int argc, char * argv[]) +int main (int argc, char *argv[]) { - grib_handle * h; - size_t len; - const char * grids[] = {"lambert_bf", "mercator_bf", "polar_stereographic_bf"}; - int igrid, itrunc; - trunc_t trunc[2]; + grib_handle *h; + size_t len; + const char *grids[] = { "lambert_bf", "mercator_bf", "polar_stereographic_bf" }; + int igrid, itrunc; + trunc_t trunc[2]; - /* Elliptic truncation with diamond subtruncation */ - trunc[0].trunc = 99; - trunc[0].subtrunc = 77; - trunc[0].len = ILCHAM; - trunc[0].values = (double *)values; - trunc[0].name = "ellipse_diamond"; + /* Elliptic truncation with diamond subtruncation */ + trunc[0].trunc = 99; + trunc[0].subtrunc = 77; + trunc[0].len = ILCHAM; + trunc[0].values = (double *) values; + trunc[0].name = "ellipse_diamond"; - /* Rectangle truncation with rectangle subtruncation */ - trunc[1].trunc = 88; - trunc[1].subtrunc = 88; - trunc[1].len = 4 * (NSMAX + 1) * (NMSMAX + 1); - trunc[1].values = (double *)malloc (sizeof (double) * trunc[1].len); - trunc[1].name = "rectangle_rectangle"; + /* Rectangle truncation with rectangle subtruncation */ + trunc[1].trunc = 88; + trunc[1].subtrunc = 88; + trunc[1].len = 4 * (NSMAX + 1) * (NMSMAX + 1); + trunc[1].values = (double *) malloc (sizeof (double) * trunc[1].len); + trunc[1].name = "rectangle_rectangle"; - rectfromellipse (trunc[1].values, trunc[0].values, NSMAX, NMSMAX); + rectfromellipse (trunc[1].values, trunc[0].values, NSMAX, NMSMAX); - for (itrunc = 0; itrunc < 2; itrunc++) - for (igrid = 0; igrid < 3; igrid++) - { - GRIB_CHECK (((h = grib_handle_new_from_samples (NULL, "lambert_bf_grib2")) == NULL), 0); - //GRIB_CHECK (((h = grib_handle_new_from_samples (NULL, "sh_ml_grib2")) == NULL), 0); - GRIB_CHECK (grib_set_long (h, "centre", 85), 0); - GRIB_CHECK (grib_set_long (h, "tablesVersion", 23), 0); - len = strlen (grids[igrid]); - GRIB_CHECK (grib_set_string (h, "gridType", grids[igrid], &len), 0); - GRIB_CHECK (grib_set_long (h, "biFourierResolutionParameterN", NSMAX), 0); - GRIB_CHECK (grib_set_long (h, "biFourierResolutionParameterM", NMSMAX), 0); - GRIB_CHECK (grib_set_long (h, "biFourierTruncationType", trunc[itrunc].trunc) , 0); + for (itrunc = 0; itrunc < 2; itrunc++) { + for (igrid = 0; igrid < 3; igrid++) { + GRIB_CHECK (((h = grib_handle_new_from_samples (NULL, "lambert_bf_grib2")) == NULL), 0); + + GRIB_CHECK (grib_set_long (h, "centre", 85), 0); + GRIB_CHECK (grib_set_long (h, "tablesVersion", 23), 0); + len = strlen (grids[igrid]); + GRIB_CHECK (grib_set_string (h, "gridType", grids[igrid], &len), 0); + GRIB_CHECK (grib_set_long (h, "biFourierResolutionParameterN", NSMAX), 0); + GRIB_CHECK (grib_set_long (h, "biFourierResolutionParameterM", NMSMAX), 0); + GRIB_CHECK (grib_set_long (h, "biFourierTruncationType", trunc[itrunc].trunc), 0); + + GRIB_CHECK (grib_set_long (h, "LxInMetres", 2000), 0); + GRIB_CHECK (grib_set_long (h, "LyInMetres", 2000), 0); + + GRIB_CHECK (grib_set_long (h, "LuxInMetres", 1800), 0); + GRIB_CHECK (grib_set_long (h, "LuyInMetres", 1800), 0); + + GRIB_CHECK (grib_set_long (h, "LcxInMetres", 100), 0); + GRIB_CHECK (grib_set_long (h, "LcyInMetres", 100), 0); + + if (igrid == 0) { + GRIB_CHECK (grib_set_double (h, "latitudeOfFirstGridPointInDegrees", 67.9372009520603), 0); + GRIB_CHECK (grib_set_double (h, "longitudeOfFirstGridPointInDegrees", 25.1580207144963), 0); + GRIB_CHECK (grib_set_long (h, "latitudeOfSouthernPoleInDegrees", 0), 0); + GRIB_CHECK (grib_set_long (h, "longitudeOfSouthernPoleInDegrees", 0), 0); + GRIB_CHECK (grib_set_double (h, "LoVInDegrees", 26.6400000000000), 0); + GRIB_CHECK (grib_set_double (h, "Latin1InDegrees", 67.3600000000000), 0); + GRIB_CHECK (grib_set_double (h, "Latin2InDegrees", 67.3600000000000), 0); + GRIB_CHECK (grib_set_long (h, "projectionCentreFlag", 0), 0); + GRIB_CHECK (grib_set_long (h, "bitsPerValue", 16), 0); + } + else if (igrid == 1) { + GRIB_CHECK (grib_set_double (h, "latitudeOfFirstGridPointInDegrees", 67.9372009520603), 0); + GRIB_CHECK (grib_set_double (h, "longitudeOfFirstGridPointInDegrees", 25.1580207144963), 0); + GRIB_CHECK (grib_set_double (h, "LaDInDegrees", 0.), 0); + GRIB_CHECK (grib_set_double (h, "latitudeOfLastGridPointInDegrees", 72.9372009520603), 0); + GRIB_CHECK (grib_set_double (h, "longitudeOfLastGridPointInDegrees", 29.1580207144963), 0); + GRIB_CHECK (grib_set_double (h, "orientationOfTheGridInDegrees", 0.), 0); + } + else if (igrid == 2) { + GRIB_CHECK (grib_set_double (h, "latitudeOfFirstGridPointInDegrees", 67.9372009520603), 0); + GRIB_CHECK (grib_set_double (h, "longitudeOfFirstGridPointInDegrees", 25.1580207144963), 0); + GRIB_CHECK (grib_set_double (h, "LaDInDegrees", 0.), 0); + GRIB_CHECK (grib_set_double (h, "orientationOfTheGridInDegrees", 0.), 0); + } + + len = strlen ("bifourier_complex"); + GRIB_CHECK (grib_set_string (h, "packingType", "bifourier_complex", &len), 0); + GRIB_CHECK (grib_set_long (h, "biFourierResolutionSubSetParameterN", NSTRON), 0); + GRIB_CHECK (grib_set_long (h, "biFourierResolutionSubSetParameterM", NSTRON), 0); + GRIB_CHECK (grib_set_long (h, "biFourierSubTruncationType", trunc[itrunc].subtrunc), 0); + GRIB_CHECK (grib_set_long (h, "biFourierPackingModeForAxes", 1), 0); + GRIB_CHECK (grib_set_long (h, "unpackedSubsetPrecision", 2), 0); + + len = trunc[itrunc].len; + GRIB_CHECK (grib_set_double_array (h, "values", trunc[itrunc].values, len), 0); + + if (1) { + char f[128]; + FILE *fp; + size_t size; + const void *buffer = NULL; + sprintf (f, "lam_bf_%s_%s.grib", grids[igrid], trunc[itrunc].name); + fp = fopen (f, "w"); + GRIB_CHECK (grib_get_message (h, &buffer, &size), 0); + if (fwrite (buffer, 1, size, fp) != size) { + perror (f); + return 1; + } + fclose (fp); + } + + GRIB_CHECK (grib_handle_delete (h), 0); + + /* Check message correctness */ + { + char f[128]; + FILE *fp; + double *vals; + double norm = 0.; + int i, err; + size_t values_len, geometry_len; + long int LxInMetres, LyInMetres, LuxInMetres, LuyInMetres, LcxInMetres, LcyInMetres; + long int nsmax, nmsmax; + char geometry[128]; - GRIB_CHECK (grib_set_long (h, "LxInMetres", 2000), 0); - GRIB_CHECK (grib_set_long (h, "LyInMetres", 2000), 0); + sprintf (f, "lam_bf_%s_%s.grib", grids[igrid], trunc[itrunc].name); + fp = fopen (f, "r"); + h = grib_handle_new_from_file (0, fp, &err); + vals = (double *) malloc (sizeof (double) * trunc[itrunc].len); + values_len = trunc[itrunc].len; + GRIB_CHECK (grib_get_double_array (h, "values", vals, &values_len), 0); + for (i = 0; i < trunc[itrunc].len; i++) + norm += (trunc[itrunc].values[i] - vals[i]) * (trunc[itrunc].values[i] - vals[i]); + norm = sqrt (norm / trunc[itrunc].len); + free (vals); - GRIB_CHECK (grib_set_long (h, "LuxInMetres", 1800), 0); - GRIB_CHECK (grib_set_long (h, "LuyInMetres", 1800), 0); + if (norm > 0.0001) { + fprintf (stderr, "Error too large !\n"); + return 1; + } + fclose (fp); - GRIB_CHECK (grib_set_long (h, "LcxInMetres", 100), 0); - GRIB_CHECK (grib_set_long (h, "LcyInMetres", 100), 0); + GRIB_CHECK (grib_get_long (h, "biFourierResolutionParameterN", &nsmax), 0); + GRIB_CHECK (grib_get_long (h, "biFourierResolutionParameterM", &nmsmax), 0); - if (igrid == 0) - { - GRIB_CHECK (grib_set_double (h, "latitudeOfFirstGridPointInDegrees", 67.9372009520603), 0); - GRIB_CHECK (grib_set_double (h, "longitudeOfFirstGridPointInDegrees", 25.1580207144963), 0); - GRIB_CHECK (grib_set_long (h, "latitudeOfSouthernPoleInDegrees", 0), 0); - GRIB_CHECK (grib_set_long (h, "longitudeOfSouthernPoleInDegrees", 0), 0); - GRIB_CHECK (grib_set_double (h, "LoVInDegrees", 26.6400000000000), 0); - GRIB_CHECK (grib_set_double (h, "Latin1InDegrees", 67.3600000000000), 0); - GRIB_CHECK (grib_set_double (h, "Latin2InDegrees", 67.3600000000000), 0); - GRIB_CHECK (grib_set_long (h, "projectionCentreFlag", 0), 0); - GRIB_CHECK (grib_set_long (h, "bitsPerValue", 16) , 0); + GRIB_CHECK (grib_get_long (h, "LxInMetres", &LxInMetres), 0); + GRIB_CHECK (grib_get_long (h, "LyInMetres", &LyInMetres), 0); + + GRIB_CHECK (grib_get_long (h, "LuxInMetres", &LuxInMetres), 0); + GRIB_CHECK (grib_get_long (h, "LuyInMetres", &LuyInMetres), 0); + + GRIB_CHECK (grib_get_long (h, "LcxInMetres", &LcxInMetres), 0); + GRIB_CHECK (grib_get_long (h, "LcyInMetres", &LcyInMetres), 0); + + if (LxInMetres != 2000 || LyInMetres != 2000 || + LuxInMetres != 1800 || LuyInMetres != 1800 || + LcxInMetres != 100 || LcyInMetres != 100 || + NSMAX != nsmax || NMSMAX != nmsmax) + { + fprintf (stderr, "Geometry is incorrect\n"); + return 1; + } + + geometry_len = 128; + GRIB_CHECK (grib_get_string (h, "gridType", geometry, &geometry_len), 0); + if (strcmp (geometry, grids[igrid])) { + printf ("Geometry is incorrect\n"); + return 1; + } + + GRIB_CHECK (grib_handle_delete (h), 0); + } } - else if (igrid == 1) - { - GRIB_CHECK (grib_set_double (h, "latitudeOfFirstGridPointInDegrees", 67.9372009520603), 0); - GRIB_CHECK (grib_set_double (h, "longitudeOfFirstGridPointInDegrees", 25.1580207144963), 0); - GRIB_CHECK (grib_set_double (h, "LaDInDegrees", 0.), 0); - GRIB_CHECK (grib_set_double (h, "latitudeOfLastGridPointInDegrees", 72.9372009520603), 0); - GRIB_CHECK (grib_set_double (h, "longitudeOfLastGridPointInDegrees", 29.1580207144963), 0); - GRIB_CHECK (grib_set_double (h, "orientationOfTheGridInDegrees", 0.), 0); - } - else if (igrid == 2) - { - - GRIB_CHECK (grib_set_double (h, "latitudeOfFirstGridPointInDegrees", 67.9372009520603), 0); - GRIB_CHECK (grib_set_double (h, "longitudeOfFirstGridPointInDegrees", 25.1580207144963), 0); - GRIB_CHECK (grib_set_double (h, "LaDInDegrees", 0.), 0); - GRIB_CHECK (grib_set_double (h, "orientationOfTheGridInDegrees", 0.), 0); - } - - len = strlen ("bifourier_complex"); - GRIB_CHECK (grib_set_string (h, "packingType", "bifourier_complex", &len), 0); - GRIB_CHECK (grib_set_long (h, "biFourierResolutionSubSetParameterN", NSTRON), 0); - GRIB_CHECK (grib_set_long (h, "biFourierResolutionSubSetParameterM", NSTRON), 0); - GRIB_CHECK (grib_set_long (h, "biFourierSubTruncationType", trunc[itrunc].subtrunc) , 0); - GRIB_CHECK (grib_set_long (h, "biFourierPackingModeForAxes", 1), 0); - GRIB_CHECK (grib_set_long (h, "unpackedSubsetPrecision", 2), 0); - - len = trunc[itrunc].len; - GRIB_CHECK (grib_set_double_array (h, "values", trunc[itrunc].values, len), 0); - - if (1) - { - char f[128]; - FILE * fp; - size_t size; - const void * buffer = NULL; - sprintf (f, "lam_bf_%s_%s.grib", grids[igrid], trunc[itrunc].name); - fp = fopen (f, "w"); - GRIB_CHECK (grib_get_message (h, &buffer, &size), 0); - if (fwrite (buffer, 1, size, fp) != size) { - perror(f); - return 1; - } - fclose (fp); - } - - GRIB_CHECK (grib_handle_delete (h), 0); - - /* Check message correctness */ - { - char f[128]; - FILE * fp; - double * vals; - double norm = 0.; - int i, err; - size_t values_len, geometry_len; - long int LxInMetres, LyInMetres, LuxInMetres, LuyInMetres, LcxInMetres, LcyInMetres; - long int nsmax, nmsmax; - char geometry[128]; - - - sprintf (f, "lam_bf_%s_%s.grib", grids[igrid], trunc[itrunc].name); - fp = fopen (f, "r"); - h = grib_handle_new_from_file (0, fp, &err); - vals = (double *)malloc (sizeof (double) * trunc[itrunc].len); - values_len = trunc[itrunc].len; - GRIB_CHECK (grib_get_double_array (h, "values", vals, &values_len), 0); - for (i = 0; i < trunc[itrunc].len; i++) - norm += (trunc[itrunc].values[i] - vals[i]) * (trunc[itrunc].values[i] - vals[i]); - norm = sqrt (norm / trunc[itrunc].len); - free (vals); - - if (norm > 0.0001) - { - printf ("Error too large !\n"); - abort (); - } - fclose (fp); - - GRIB_CHECK (grib_get_long (h, "biFourierResolutionParameterN", &nsmax), 0); - GRIB_CHECK (grib_get_long (h, "biFourierResolutionParameterM", &nmsmax), 0); - - GRIB_CHECK (grib_get_long (h, "LxInMetres", &LxInMetres), 0); - GRIB_CHECK (grib_get_long (h, "LyInMetres", &LyInMetres), 0); - - GRIB_CHECK (grib_get_long (h, "LuxInMetres", &LuxInMetres), 0); - GRIB_CHECK (grib_get_long (h, "LuyInMetres", &LuyInMetres), 0); - - GRIB_CHECK (grib_get_long (h, "LcxInMetres", &LcxInMetres), 0); - GRIB_CHECK (grib_get_long (h, "LcyInMetres", &LcyInMetres), 0); - - if (LxInMetres != 2000 || LyInMetres != 2000 || LuxInMetres != 1800 || - LuyInMetres != 1800 || LcxInMetres != 100 || LcyInMetres != 100 || - NSMAX != nsmax || NMSMAX != nmsmax) - { - printf ("Geometry is incorrect\n"); - abort (); - } - - geometry_len = 128; - GRIB_CHECK (grib_get_string (h, "gridType", geometry, &geometry_len), 0); - if (strcmp (geometry, grids[igrid])) - { - printf ("Geometry is incorrect\n"); - abort (); - } - - - GRIB_CHECK (grib_handle_delete (h), 0); - - } - } - free(trunc[1].values); - return 0; + free (trunc[1].values); + return 0; } diff --git a/tests/lam_gp.c b/tests/lam_gp.c index f72f92595..f2b30c2b0 100644 --- a/tests/lam_gp.c +++ b/tests/lam_gp.c @@ -12,981 +12,971 @@ */ static double values[] = { - 276.857846883478, 276.794176778727, 277.181087123710, 277.271328891367, 277.738150007595, - 277.811501271569, 277.782801498740, 277.720243049346, 277.697362352800, 277.645937156907, - 277.434690429892, 277.479415166828, 277.480779740851, 277.470370683483, 277.466233617218, - 277.519636477424, 277.546507075768, 277.533196530853, 277.638535538066, 277.660223799155, - 277.516239354148, 277.435042994882, 277.233848743540, 277.204873528392, 277.217411121384, - 277.145056043542, 277.359707505178, 277.563426568591, 277.359606573371, 277.302689400583, - 277.135925984483, 277.013670202527, 277.249004656066, 277.362196243717, 277.472882266866, - 277.551374864505, 277.332048151829, 277.879973060166, 277.925942918285, 278.260846010953, - 278.144732099878, 278.206939585072, 277.936934540523, 278.025569678971, 278.307756924958, - 278.369318574429, 278.609267078466, 278.634490902502, 278.686706704875, 278.328553888493, - 278.418908930386, 279.060194431430, 279.114168787979, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 276.922836958812, - 276.932069336471, 277.225397205068, 277.545476457484, 277.807111956190, 277.768185575062, - 277.713814690105, 277.662213334460, 277.653334089351, 277.591821807616, 277.519290878870, - 277.499671640950, 277.471580060430, 277.398162354734, 277.371544952255, 277.453879058484, - 277.474032112632, 277.458747675572, 277.588871038908, 277.540124772655, 277.464264615292, - 277.039835665510, 277.050815441941, 277.165791541588, 277.284327024201, 277.353876090779, - 277.399785414714, 277.512330802008, 277.438449711794, 277.419894070553, 277.165764618769, - 277.034846715507, 277.230872118099, 277.277310155004, 277.272952146249, 277.486209474088, - 277.453656185210, 277.613143953527, 278.070672412350, 278.079989482462, 278.338031969208, - 278.163685044856, 278.214343856183, 278.255744502346, 277.941149161137, 278.165921759503, - 278.022894706983, 278.499780589025, 278.158397461806, 278.611643581705, 278.438079674786, - 278.816122996613, 278.628190436440, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 277.048057829677, 277.280372081890, - 277.423859756998, 277.465672699176, 277.728939006340, 277.726575834584, 277.688480429396, - 277.635385647721, 277.626062350091, 277.604239400215, 277.556926439833, 277.519394378669, - 277.425044031161, 277.318865067295, 277.309205651263, 277.348943116883, 277.361861210203, - 277.430978988228, 277.477408565654, 277.638923535542, 277.418799606607, 277.017513285449, - 276.976808425920, 277.159242736589, 277.315106840602, 277.327868258207, 277.390541905514, - 277.608373786211, 277.473011211489, 277.578037079299, 277.353975261579, 277.253195520645, - 277.219244477693, 277.303161046293, 277.197720889628, 277.568280002996, 277.565774183730, - 278.056333010069, 278.360857981015, 278.182020399473, 278.393376099219, 278.363774312832, - 278.203283980677, 278.146185013281, 278.348861342242, 278.330399393385, 278.059284960522, - 277.920499351734, 278.030061320993, 278.226766351540, 278.217750387710, 278.516389162421, - 278.535938385310, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 277.255920436446, 277.480949345724, 277.444597425498, - 277.647882845088, 277.496111688818, 277.670322939349, 277.765213822002, 277.666760657851, - 277.656928637994, 277.678906056191, 277.667906868059, 277.539641562735, 277.369487702737, - 277.285648882293, 277.326341650870, 277.351600146853, 277.359573895370, 277.493766228910, - 277.649003177440, 277.460872384943, 277.243514998577, 277.056578101319, 277.226617780177, - 277.271740370610, 277.294132332584, 277.308093611741, 277.378433184955, 277.570114302521, - 277.548859645865, 277.723889890260, 277.429263433352, 277.272737053512, 277.398599847739, - 277.309448997716, 277.328344724582, 277.207058029377, 277.696248070705, 277.835043755662, - 278.062452681475, 277.850550227440, 278.265559859820, 278.272872090840, 278.465229599008, - 278.217031341802, 278.386132964535, 278.224365564792, 278.232702192636, 278.099733855522, - 278.082038386312, 278.064057694079, 278.385342869231, 278.700953905968, 278.673157999290, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 277.459327717938, 277.559547836427, 277.422638507574, 277.572825627337, - 277.571463907280, 277.548694860479, 277.544037804342, 277.524653326012, 277.693130140178, - 277.706143234839, 277.497931516767, 277.349914202908, 277.161676307980, 277.258114023397, - 277.410663587516, 277.481076538026, 277.519833710823, 277.631696408897, 277.418308903785, - 277.304804629716, 277.259147844963, 277.382350427133, 277.299040041596, 277.256710875078, - 277.280373232168, 277.342518042564, 277.164290846344, 277.428166532894, 277.401545619979, - 277.739369780501, 277.395945166703, 277.460368035024, 277.476322888924, 277.493513518766, - 277.351824398612, 277.358401183558, 277.509306514214, 278.029530363332, 278.214265489018, - 278.152451178774, 278.452249056059, 278.282135844771, 278.031146456185, 278.126155437803, - 278.340924990343, 278.274408568623, 278.095792700955, 278.045155910991, 278.044971189736, - 278.227690671411, 278.277414153890, 278.322932576059, 278.574745416009, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 277.352885697217, 277.465676965878, 277.313718088585, 277.571636446583, 277.752813057885, - 277.876072319293, 277.600399390414, 277.629804333290, 277.509786900336, 277.350032286595, - 277.710697230771, 277.302689293788, 276.964102591939, 277.129868245471, 277.506377821286, - 277.620243311629, 277.670677617944, 277.590396381881, 277.259332104000, 277.282466682171, - 277.510494889930, 277.420372093899, 277.372440940559, 277.334025248344, 277.133405320679, - 277.432373537602, 277.458193421654, 277.573994485106, 277.560836748035, 277.504546294795, - 277.722963359918, 277.429148743501, 277.415671650080, 277.296250262619, 277.426094729653, - 277.013478567167, 277.173619712680, 277.722720050144, 278.152541665310, 278.471048817117, - 278.595955610324, 278.466217631891, 278.437646585921, 278.321089675788, 278.198112904595, - 277.952153564447, 278.065664545600, 278.357066253341, 277.965448681613, 278.124513612433, - 278.162667811909, 278.277405316586, 278.574537792479, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 277.390479450263, - 277.345673673084, 277.364302907561, 277.605928275352, 277.789929872344, 277.903984493908, - 277.966933216759, 277.912882971090, 277.703988459187, 277.351015681331, 277.674063100141, - 277.408395530420, 277.007259003699, 276.877336007904, 277.057623772846, 277.601455267293, - 277.323874590069, 277.238673158792, 277.337325747808, 277.439493917521, 277.541788857115, - 277.749810750892, 277.278504087019, 277.414256185858, 277.429899941764, 277.493551649852, - 277.511929075685, 277.190651115649, 277.443504438646, 277.605668250438, 277.771466436681, - 277.767262688689, 277.716100034677, 277.618374865972, 277.415460290735, 277.086306373890, - 277.176226842383, 277.650329975958, 277.765271071796, 278.463221024006, 278.702998001410, - 278.624355987396, 278.467009674144, 278.568028046137, 278.284237092204, 278.456297664446, - 278.609188468591, 278.571107283134, 278.248413926530, 278.155161517380, 278.404700226527, - 278.246987177160, 278.091060834030, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 277.419054703888, 277.313454081577, - 277.427414463702, 277.682584699189, 277.791193561005, 277.837885785253, 277.920062626646, - 277.919899324178, 277.689677224346, 277.410500912168, 277.630756408261, 277.629189004816, - 277.397411408199, 277.319060037245, 277.402102256687, 277.322768000649, 277.822242558531, - 277.887351499372, 277.454007146918, 277.676721339532, 277.602004218075, 277.714201570065, - 277.566677175978, 277.587799289763, 277.530615330753, 277.556498697055, 277.452480002766, - 277.522252203614, 277.645085515486, 277.845531596217, 277.946658451859, 277.602481754126, - 277.727335587639, 277.560791900289, 277.284230600351, 277.484662737021, 277.763836962967, - 277.845000815162, 278.010847594804, 278.693344887027, 278.809251065654, 278.723035732378, - 278.424896815390, 278.623465372965, 278.347354282196, 278.788885219380, 278.765666653428, - 278.053095427463, 278.334108537083, 278.163143059112, 278.791210402345, 278.564612083899, - 278.156097707067, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 277.260418446226, 277.335071352700, 277.491938938790, - 277.691206395263, 277.704209378278, 277.669286596309, 277.754719412166, 277.870079071509, - 277.502780644528, 277.754473095834, 277.727974436459, 277.557807112427, 277.336457025286, - 277.383919705566, 277.656951776528, 277.778531969694, 277.546679431981, 277.433886594239, - 277.849054763829, 277.827905512882, 277.852324775739, 277.715592971272, 277.705949179344, - 277.784233780020, 277.513796321220, 277.651505656888, 277.679417351708, 277.712133821933, - 277.640023428435, 277.845573550891, 277.939074922095, 277.983471194163, 277.686692172136, - 277.654194453924, 277.864032570137, 277.868319164885, 277.949388853803, 278.090141829888, - 278.064378565379, 278.473111038064, 278.567543171754, 278.829326294043, 278.294846275015, - 278.860106433048, 278.796593070403, 278.824386010090, 278.760223015153, 278.048034602279, - 278.456786976534, 278.270707527732, 278.883481216381, 278.331828953117, 278.594265837323, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 277.265976322594, 277.170431045594, 277.485489657589, 277.518150163777, - 277.594346099824, 277.525106574839, 277.660446242218, 277.653585064744, 277.344627321906, - 277.549004645704, 277.850802344347, 277.583257392330, 277.353933834212, 277.483162324227, - 277.802093742320, 277.620873269675, 277.778845766219, 277.705264213562, 277.541346709049, - 277.429472445857, 277.832567758240, 277.874496054447, 277.713531133238, 277.960569830321, - 277.669206881492, 277.755260958946, 277.586916719101, 277.841135564379, 277.718811273917, - 277.786742393662, 277.829134182740, 277.760954990401, 277.727290357312, 277.802718821044, - 277.926844650633, 277.940517920966, 277.860498676370, 277.948632515039, 278.482136788291, - 278.576025918865, 278.759903750249, 278.682290037298, 278.803929269590, 278.813600952805, - 278.879253548731, 278.646151177629, 278.776315233178, 278.693319468861, 278.379375494188, - 278.648541321932, 278.852157864598, 278.997643614525, 279.027698942229, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 277.366680878019, 277.381150787692, 277.486313780854, 277.312232782158, 277.401101882668, - 277.567697032357, 277.761418956830, 277.631564641376, 277.355216207498, 277.579622423646, - 277.946803922538, 277.745864795866, 277.554670208171, 277.653554412702, 277.886277698790, - 277.865648942958, 277.749235588755, 277.653323813329, 277.549350491474, 277.771809470937, - 277.894339690909, 277.969462462647, 278.118951046477, 278.108173032796, 277.923612184096, - 277.725656808996, 277.917004359488, 278.013510348155, 277.903413295852, 277.848269398192, - 277.837731396906, 277.733960635088, 277.766101554254, 277.546687146201, 277.856867293302, - 277.905478550194, 277.736223835135, 278.472986192106, 278.717220540209, 278.760841954155, - 278.638659440517, 278.681901711759, 278.363012975511, 278.807884722018, 278.838462052377, - 278.928798765744, 278.952453872397, 278.865733112592, 278.729566964511, 278.884998970494, - 278.942907006798, 278.960762454434, 278.688569887665, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 277.591550421937, - 277.499030877279, 277.305275168613, 277.541796080983, 277.195139366615, 277.331665964937, - 277.445626505916, 277.215335680856, 277.530907774801, 277.843341282378, 277.963214149135, - 277.927219319293, 277.797424178773, 277.813442210719, 277.933664495794, 277.858047474598, - 277.696277323311, 277.361473125741, 277.479932829295, 277.389415841575, 277.553020377427, - 277.924940171380, 278.159459379598, 278.037019105043, 277.914055069608, 277.647200588818, - 277.916937939818, 277.909534469069, 277.749633166238, 277.904591816623, 277.826866398276, - 277.903480594745, 277.699082807175, 277.688363481753, 277.605172407277, 277.842865865160, - 278.021216292518, 278.414517122505, 278.681556989763, 278.680320091635, 278.574125022233, - 278.370197434153, 278.734504756703, 278.493143759543, 278.779235286269, 278.935546444982, - 278.663643683160, 278.899996705338, 278.900791563301, 278.879832866026, 278.858705900529, - 278.815825789004, 278.824798215775, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 277.567216721718, 277.522475814565, - 277.303456918119, 277.208997427907, 277.424224609638, 277.567326891009, 277.516826173608, - 277.498907180864, 277.469773038402, 277.832555441150, 277.982833034908, 278.034185232461, - 277.939076079863, 277.902634532238, 277.970739026974, 277.895772802147, 277.735591951345, - 277.571305898374, 277.401061840836, 277.802603400487, 277.964968147081, 278.120946309288, - 278.120357306337, 278.027951015641, 277.674224913903, 277.745718315661, 277.676284056601, - 277.869144896292, 277.970562609159, 277.897871250900, 277.988896836592, 277.828464108029, - 277.787944526233, 277.592034339979, 277.887975166605, 277.726333366592, 278.031409362000, - 278.341449368467, 278.429430372404, 278.651974989787, 278.066148305173, 278.615426251337, - 278.658109595447, 278.764842621618, 278.797171571925, 278.930322025553, 278.589836306622, - 278.878563250804, 278.928365819420, 278.890061138998, 278.711334675770, 278.384119162997, - 278.646351915830, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 277.663311094642, 277.507469698425, 277.389870268662, - 277.406179041586, 277.420737084474, 277.458518864884, 277.735139471721, 277.538528827908, - 277.851206036120, 277.883910964943, 277.957774069964, 277.977068942386, 277.944430734847, - 277.548495261116, 277.973300201287, 277.918203113366, 277.766347699266, 277.602195991588, - 277.779284913253, 277.876179934937, 277.970720881483, 278.083009243663, 278.104572434708, - 277.809070170494, 277.861807626314, 277.891365545407, 277.598480819644, 277.808955771559, - 277.877037325444, 277.848094780278, 277.931719704904, 277.914973085381, 277.584619210738, - 277.926657140828, 278.195616408992, 278.085463190691, 277.980335449674, 278.380371866981, - 278.427298049019, 278.662228114450, 278.596051250816, 278.616744598565, 278.803046455795, - 278.791647475311, 278.497809355494, 278.866809060531, 278.869411961323, 278.852587248998, - 278.873678034993, 278.840736102112, 278.718548564065, 278.079520049554, 278.242255144442, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 277.663037557399, 277.570818671989, 277.407747457760, 277.335813345664, - 277.408696086859, 277.372137478768, 277.687262360450, 277.795853080682, 277.908241927909, - 277.869637561962, 277.892224175058, 277.606701811400, 277.922429208801, 277.536273731865, - 277.514854228159, 277.491556490133, 277.238066098239, 277.372640648916, 277.841348851264, - 277.929444260057, 277.976213790096, 278.044032057611, 277.835719155503, 277.767503822122, - 277.843943315539, 277.920171435982, 277.647907981291, 277.916193738411, 277.839013360636, - 277.803033017271, 277.864319377224, 277.746027317625, 277.651770176824, 278.063583343182, - 278.140685366536, 278.122090447834, 278.051809880199, 278.142408676546, 278.306266717218, - 278.732451854741, 278.748488287575, 278.749619678915, 278.800360568621, 278.706276462243, - 278.492046737934, 278.862935429038, 278.836729260372, 278.789661732480, 278.792523085067, - 278.785266852082, 278.004813712433, 278.206206534037, 278.268595922962, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 277.655861325454, 277.470105519071, 277.399821904234, 277.079715748819, 277.206531740859, - 277.468381791645, 277.363994499400, 277.823385911566, 277.933105323249, 277.866664229846, - 277.852775583871, 277.877579704086, 277.963875663629, 277.928717010393, 277.828398792983, - 277.296954832861, 277.401013285608, 277.627465823518, 277.658221668447, 277.774377222669, - 277.868027943365, 278.023351410815, 277.746712993709, 278.009216578254, 277.993159001656, - 277.680853664988, 277.661928822189, 277.876061141195, 277.861750611024, 277.598049579725, - 277.828212743813, 277.655101339813, 277.951762031896, 277.838019817885, 278.179159164042, - 278.237226454496, 278.178567686687, 278.271357845148, 278.743948910507, 278.860705502890, - 278.683448271915, 278.784519721920, 278.823631988977, 278.720806055127, 278.798185740840, - 278.751147075398, 278.657468304086, 278.445253830843, 278.647530368995, 278.649158962300, - 278.320344550426, 278.521904549617, 278.418647841440, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 277.402768933310, - 277.337648751023, 277.288997139047, 277.307430980466, 277.273543109168, 277.307022035080, - 277.641453325741, 277.844770093515, 277.953627149863, 277.942556409526, 278.215884948157, - 277.975149183501, 277.975145850398, 277.900981141501, 277.505402827533, 277.362760181571, - 277.548236940679, 277.664353875572, 277.502568484867, 277.584445002441, 277.713270317726, - 277.965355998582, 277.690792988212, 278.006179713121, 278.001384579859, 277.828691144649, - 277.561216736042, 277.889988864492, 277.754326137754, 277.904050492162, 277.709121972134, - 277.690236890821, 278.007302124024, 278.153784599132, 278.279221305941, 278.375074001404, - 278.132932590898, 278.527166347114, 278.731939115244, 278.786940471844, 278.668914201410, - 278.548949997938, 278.592784358004, 278.703220908555, 278.607776530910, 278.504228677905, - 278.163645789480, 278.248484564569, 278.501193898172, 278.642560007634, 278.370053886907, - 278.408249992376, 278.403262082509, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 277.207648756580, 277.331137219044, - 277.479780517975, 277.377551184413, 277.272600399963, 277.500350726646, 277.705863349177, - 277.864606993211, 277.966389026012, 278.042544067771, 278.322542195089, 278.031457007641, - 277.941373758310, 277.636410155692, 277.858031016031, 277.252349029484, 277.532160327080, - 277.374767480318, 277.358447349268, 277.596000095572, 277.677202591650, 277.510417183120, - 277.771541403309, 277.999812504068, 277.710912956346, 277.651416447672, 277.782845548063, - 277.920184623648, 278.100817677521, 277.830890386789, 277.549163570987, 277.924816153170, - 277.939889612067, 278.226842544695, 278.334446154499, 278.384165815707, 278.595962695245, - 278.279446869139, 278.639495704751, 278.773812076980, 278.436948614430, 278.920203762416, - 278.841422131634, 278.427836855974, 278.741570912682, 278.508545454593, 278.339874209391, - 278.557063084230, 278.416922724100, 278.706534660227, 278.334083779964, 278.643830203774, - 278.639844363161, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 277.374416670460, 277.500945802563, 277.426407890967, - 277.396874709479, 277.318086237064, 277.616856624914, 277.899994797892, 277.698238913389, - 277.977172419143, 278.341279558064, 278.388060688379, 278.293360918814, 277.904418999468, - 277.876108809024, 277.943923864864, 277.721133375911, 277.442202818399, 277.253739466136, - 277.509607250232, 277.667492305596, 277.591852155885, 277.835292482825, 277.968936425109, - 277.955535101385, 277.936720370208, 277.583707892174, 277.868800957519, 277.945079514213, - 278.033236526786, 277.903343895031, 278.056619912872, 278.157071041598, 278.283239136885, - 278.176795659042, 278.214399736990, 278.377534497257, 278.505800329270, 278.397309694119, - 278.669295404261, 278.768294086585, 278.677030612244, 278.800406330589, 278.667560270694, - 278.786628105936, 278.570032149640, 278.492115471478, 278.447513823625, 278.631423391505, - 278.397821811388, 278.495161908060, 278.272485916042, 278.556447973070, 278.677966110168, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 277.317281721922, 277.505968584604, 277.114499942864, 277.204273695860, - 277.333957324466, 277.623957317731, 277.644603479615, 278.000151120404, 277.641642354499, - 278.324675421874, 278.417063688056, 278.331839246209, 277.968470256881, 277.964794190107, - 278.037060222090, 277.649723985672, 277.168203186638, 277.143187050201, 277.273553266251, - 277.552393261269, 277.634517104997, 277.802271465379, 277.881739212292, 277.940910603072, - 277.879001692426, 277.745720318329, 277.913410218013, 278.101729803357, 277.802314274772, - 277.915739600581, 278.217977656900, 278.416638900017, 278.379485432682, 278.328422581059, - 278.343399135787, 278.412171676156, 278.436343517073, 278.543604914389, 278.063377717316, - 278.540875146925, 278.533646068312, 278.735677942685, 278.780712168233, 278.761366160987, - 278.038154721897, 277.866532120266, 278.165321893048, 278.680388296020, 278.573200036194, - 278.586831345728, 278.488241868816, 278.717947283378, 278.836911122056, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 277.480116247201, 277.368756132519, 277.384832941860, 277.308509322704, 277.345442414908, - 277.590676884641, 277.990539450091, 278.008983298761, 277.523442305010, 277.718274275941, - 277.715931444292, 277.879291396559, 277.831199273422, 277.864571039565, 277.936717108059, - 277.383879543378, 277.479777256307, 277.499848020363, 277.547859827789, 277.305533315021, - 277.482950172282, 277.774397519738, 277.898868170053, 277.817079364159, 277.711025079660, - 277.980058933637, 278.099658611097, 278.100938650431, 278.142922246411, 277.996704723186, - 278.305020752925, 278.407688919361, 278.163649151564, 278.023096003471, 278.332110722164, - 278.268480918882, 278.421591670262, 278.546119434891, 278.568382938671, 278.587036101537, - 278.647194694244, 278.632463274801, 278.809178187614, 278.560416104309, 278.581259006153, - 278.321975280033, 278.397446094076, 278.464681382615, 278.596423306474, 278.667946458021, - 278.738020433360, 278.814420875995, 279.011631604617, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 277.428218736626, - 277.508626172290, 277.415642785172, 277.326956949725, 277.422044581352, 277.628551397821, - 278.032568055647, 277.613158572540, 277.713901836099, 277.885738420719, 277.917749048996, - 278.013884830796, 277.837463066963, 278.076080916673, 277.808832386222, 277.917564486129, - 277.577955670404, 277.241692902309, 277.577689403392, 277.226372942221, 277.416783611213, - 277.772320420235, 277.599211176025, 277.836487250781, 277.809253831983, 277.951052110206, - 278.127684219100, 277.805451324327, 278.205782665344, 277.865170697282, 278.375832904428, - 278.485020997838, 278.294257990030, 277.778871781181, 278.041861178526, 278.230259905805, - 278.579538089333, 278.512225093511, 278.620858449128, 278.484717004610, 278.559119647309, - 278.617542855681, 278.820763331162, 278.736385000030, 278.489854683578, 278.188909713201, - 278.004895490409, 278.007836877641, 278.638253545765, 278.730478954238, 278.787710783790, - 278.859125519494, 279.227392202470, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 277.393891145112, 277.465694686045, - 277.467507921517, 277.411878635866, 277.504059151580, 277.630651160882, 277.879970074861, - 277.995167439470, 277.902552985162, 277.839877260391, 277.886479575329, 277.964201298207, - 277.748472501319, 278.029116825528, 278.009583787838, 277.934526840383, 277.918798670404, - 277.415532843179, 277.226805056122, 277.387098345780, 277.370489382575, 277.592402088486, - 277.700296833394, 277.892605230371, 277.891485508185, 278.129626663091, 278.237884596150, - 278.280404041963, 278.283057722739, 278.176984809500, 278.428645957507, 278.109976506484, - 278.299865428307, 277.995343116520, 277.977547389843, 278.172188036825, 278.514038655551, - 278.675018218984, 278.625249773115, 278.608351762487, 278.536197132141, 278.726854763747, - 278.805234471385, 278.674105241850, 278.663153403020, 278.298350908914, 278.124861199903, - 278.252964651486, 278.482059693182, 278.696680548966, 278.654309837275, 278.837647755382, - 278.841089485443, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 277.328655950263, 277.427619472960, 277.487446231366, - 277.482177271494, 277.494902394691, 277.591252248805, 277.971747475921, 278.009447854320, - 277.958400013211, 277.920394743774, 277.910344201103, 277.904280958818, 277.937158186883, - 278.076707899491, 278.062378531395, 277.668974757625, 277.800233651596, 277.541009600309, - 277.635857852503, 277.317816179233, 277.324195107430, 277.304573477618, 277.583966858675, - 277.801468375244, 277.858184963214, 278.015052891651, 278.279565568836, 278.150440976593, - 278.333103904681, 278.001182976533, 278.378488809734, 278.398697539971, 278.106032442229, - 277.965961371387, 278.143415892015, 278.377058446346, 278.574510298617, 278.436449113920, - 278.556672883167, 278.474960861679, 277.671139137360, 278.608670196079, 278.823152806552, - 278.860633331916, 278.712151986816, 278.295366943143, 277.973512496151, 278.147084138199, - 278.272905044223, 278.608690016513, 278.742172545861, 278.836415342435, 278.950088390739, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 277.310255947307, 277.438715269565, 277.535027802511, 277.514844555789, - 277.462658101701, 277.525339149085, 277.905885035111, 278.029200074722, 278.012440418427, - 277.996696426728, 277.957260620693, 277.882273913448, 277.923722117905, 278.057432597146, - 278.044128097293, 277.761271445925, 277.825323905342, 277.691879001328, 277.446628829196, - 277.285529192993, 277.207992853587, 277.564191085190, 277.712353241969, 277.873266532172, - 278.065423477158, 278.272705886866, 278.158741722804, 278.295227598450, 278.196699266996, - 278.353184502646, 278.349997851807, 278.141054038599, 277.886475692701, 277.859485979835, - 277.988073922406, 278.056957014442, 278.165448109257, 278.437202004743, 278.532793916627, - 278.729865755553, 278.336824160806, 278.305882985596, 278.713096825648, 278.851216364801, - 278.766735587507, 278.187401602110, 277.936089073750, 278.098752788839, 278.239953058972, - 278.622711192950, 278.843801280644, 278.884179584854, 278.970925282742, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 277.333993153785, 277.421151644708, 277.494771266272, 277.504859778772, 277.471450172707, - 277.495380050697, 277.897156708496, 278.087047727013, 278.045437799738, 278.056224065926, - 278.016178427298, 277.909517544432, 277.875464078132, 277.670207024597, 277.846114070057, - 277.728674807606, 277.481683080213, 277.678434290214, 277.452220611572, 277.118933743421, - 277.289809580767, 277.553585984918, 277.846040916297, 277.958533555517, 277.851453386475, - 277.929222688602, 278.241588928175, 278.028359727517, 278.357330703968, 278.540247369890, - 278.402603488606, 278.262877702620, 278.294646895428, 278.106029411922, 277.786973188420, - 277.901937357612, 278.009410152606, 278.354845055124, 278.644262693781, 278.840216526960, - 278.726204045146, 278.600937232653, 278.803160024776, 278.814239641429, 278.406107089989, - 278.204915060477, 278.086114594041, 277.967943887986, 278.030839062421, 278.631386341730, - 278.299910112812, 278.884560848832, 278.886180066033, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 277.403818020342, - 277.385736612011, 277.419079763626, 277.484883608931, 277.520716730724, 277.513550730617, - 277.891587970187, 278.087015712643, 278.064211437361, 278.083756882686, 278.081608204113, - 278.004930191931, 277.667983116988, 277.465515703008, 277.770465817560, 277.486273012311, - 277.812487190729, 277.521348154187, 277.263007792215, 277.559643310698, 277.428266858300, - 277.713431147430, 277.934927582205, 278.100297973144, 278.141264584283, 278.086993250781, - 278.379658327306, 278.359962783622, 278.333521305086, 278.570844647226, 278.406928088404, - 278.423636196882, 278.392152949565, 278.201452070097, 277.856477990354, 277.873435248789, - 278.096769778375, 278.407680402316, 278.908043981651, 278.827575506572, 278.712139062362, - 278.769591044403, 278.756261553376, 278.826156376636, 278.419163229658, 278.090389246096, - 278.124356160438, 278.035593626588, 278.254910218263, 277.366924718560, 278.253233151469, - 278.902280750162, 279.023193013234, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 277.489905843838, 277.288144403828, - 277.451382178926, 277.543372549140, 277.562640697184, 277.535439380058, 277.787699174599, - 277.995109516110, 278.012353528589, 278.018214990669, 278.026842232206, 278.025758889394, - 278.001468911932, 277.958981418954, 277.934824068020, 277.751018859661, 277.513289938194, - 277.478190521822, 277.696713037172, 277.504466132445, 277.486066884529, 277.853056781128, - 278.077295875773, 278.234774297493, 278.327662456752, 278.433621081338, 278.296684198791, - 278.342578057961, 278.285379040344, 277.983925074627, 278.248926266098, 278.525007446921, - 278.445876128392, 278.104398493173, 277.910536085917, 277.940945008878, 278.081826796893, - 278.529637105590, 278.698715957456, 278.794762804276, 278.861716433298, 278.335244079482, - 278.692137237630, 278.680804581213, 278.556629862749, 278.398770705898, 278.455259276313, - 278.292491405216, 278.409341863253, 278.567127873446, 278.775114227671, 278.952795140027, - 279.084767747687, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 277.524648375830, 277.496311267119, 277.564912458774, - 277.619013556894, 277.606746819707, 277.595920519719, 277.854151971529, 278.023987432708, - 278.002073841870, 277.986021680999, 278.024941876269, 278.000914649286, 277.592433020840, - 277.681860660305, 277.885631704720, 277.778259318705, 277.871014021210, 277.876428015559, - 277.788723284443, 277.787820645805, 277.938530551964, 277.864376078717, 278.173275923391, - 278.289334853041, 278.451226379450, 278.501430038586, 278.374869508469, 278.453566275875, - 278.262940769041, 278.201339865362, 278.504357434437, 278.550458514972, 278.415280015529, - 278.309083469218, 278.099364666955, 278.034272070086, 278.181290664566, 278.418559586295, - 278.627322595506, 278.729885168807, 278.788171788983, 278.676468137618, 278.430465953748, - 278.583736392926, 278.738818934276, 278.497103463576, 278.513281650723, 278.121679354076, - 278.516294602332, 278.829577561129, 278.956682360007, 279.057955060579, 279.348107461088, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 277.474572686648, 277.620526101819, 277.579876191216, 277.360462826964, - 277.549474136816, 277.588274409193, 277.894949427885, 278.083728110620, 277.555347984217, - 277.733247247895, 278.015445953589, 277.664549184972, 277.226566090387, 277.319835583899, - 277.669759532369, 277.815087621214, 277.874161852679, 278.107783063761, 278.140316595456, - 278.161088443851, 278.102908173169, 278.119213950167, 278.224356967513, 278.368545269317, - 278.424386685907, 278.174769159603, 278.434721663051, 278.475700763337, 278.510069020504, - 278.551175436030, 278.571361830045, 278.638092447369, 278.646605205673, 278.513270253124, - 278.141327144780, 278.115950680075, 278.337373363097, 278.274464616686, 278.499148651879, - 278.595423351542, 278.569133302757, 278.443504364184, 278.470116786663, 278.405474202063, - 278.476174607142, 278.351734796539, 278.057044240619, 278.525864307774, 278.636236054564, - 278.673533956426, 278.958480628853, 279.107513277297, 279.177226197697, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 277.580570122543, 277.634318472725, 277.659616485035, 277.618057346549, 277.522030659488, - 277.362267071782, 277.372186333198, 278.055229170801, 277.784391394722, 277.537574683026, - 277.784340466299, 277.547947537627, 277.451990151210, 277.480643933265, 277.666856164943, - 277.711808172746, 277.673179528355, 278.161015825933, 277.956039470577, 278.147107822033, - 277.923934558538, 278.104047544295, 277.992356939665, 278.206672410603, 278.508947854374, - 278.256305068195, 278.356204246512, 278.556714187128, 278.604795250140, 278.664440436865, - 278.766423700238, 278.736535640997, 278.720042846867, 278.499145050840, 278.185061618328, - 278.500779492250, 278.288933571022, 278.296811610179, 278.411719697789, 278.517980608444, - 278.463145591579, 278.387209307015, 278.498542676419, 278.586457379716, 278.312529862807, - 278.273753392221, 278.452376606509, 278.515187531602, 278.424686213262, 278.745884182673, - 279.143006916710, 278.919075152226, 279.321139034238, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 277.662378493687, - 277.678435934163, 277.662375895032, 277.591158494953, 277.510569010252, 277.571350359624, - 277.754121208130, 277.990973977522, 277.757628494100, 277.561287021943, 277.486634316690, - 277.525042945477, 277.532619439937, 277.572471674363, 277.443489464657, 277.644319445620, - 277.665981899947, 278.128702193914, 278.134993079919, 277.939643867877, 277.829674444778, - 277.920407262541, 278.225109521812, 278.454420846245, 278.335636048648, 278.439755866968, - 278.556282205556, 278.641783528936, 278.681789272875, 278.705946366072, 278.807551296203, - 278.775139246657, 278.816740548483, 278.723779732785, 278.140623274423, 278.551611396458, - 278.438468292334, 278.371046387243, 278.432387336449, 278.271114366293, 278.280713350360, - 278.328592293660, 278.509010393596, 278.315046309223, 278.168349319322, 278.279893722304, - 278.388489929202, 278.028546414610, 278.067008312878, 278.735603677916, 278.875197099938, - 278.916380807791, 279.081185555734, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 277.675564771386, 277.635443490043, - 277.555593388636, 277.474215655524, 277.508785537502, 277.559272826965, 277.898963108355, - 278.160478537993, 277.698446328836, 277.535506294291, 277.650670399939, 277.713715654254, - 277.734628640441, 277.634344419146, 277.955083825013, 277.839312734512, 278.032298048669, - 277.878980044522, 277.940977547635, 278.228734022884, 278.183322722407, 278.317956053497, - 278.223938712345, 278.281454807630, 278.286552318883, 278.286369796342, 278.414024043537, - 278.659360323843, 278.716814326172, 278.768624030203, 278.839142757595, 278.825723621249, - 278.854881582904, 278.492476448520, 278.560515417031, 278.575788272122, 278.498507193087, - 278.406864865871, 278.466947148140, 278.325092661631, 278.469051212641, 278.408787619500, - 278.661902048190, 278.661367318075, 278.459305901808, 278.222284106910, 278.377818887784, - 277.959327267209, 278.623834307258, 278.738685964726, 278.800554549259, 278.851954436327, - 278.995254298110, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 277.584969222118, 277.627926693726, 277.432600717237, - 277.459047042982, 277.597393070604, 277.234297430406, 277.627802486716, 277.768761653507, - 277.858521156621, 277.718058564950, 277.536424253963, 277.886264022321, 277.953425182639, - 277.898146408245, 277.845543290783, 278.043517097872, 278.101299101003, 278.285342963779, - 278.272056517909, 277.993274994819, 277.857694108392, 278.387036994248, 278.124588570184, - 278.166963674206, 278.394923902234, 278.402876708228, 277.959213287923, 278.570898673058, - 278.714369994443, 278.790925545959, 278.865460063705, 278.887653108598, 278.925165577904, - 278.445683950808, 278.454662353423, 278.661881572607, 278.503970146357, 278.416849170500, - 278.313604733026, 278.551157387306, 278.536725681615, 278.621164456571, 278.693420303848, - 278.659085456184, 278.410157301715, 278.248100222314, 278.068519937287, 277.489258886793, - 278.582901560003, 278.758730417454, 278.753965383538, 278.760787016072, 279.095432709613, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 277.617881541072, 277.711309115784, 277.528121492641, 277.692656014265, - 277.729855515134, 277.324286569399, 277.806867446539, 277.771307124788, 277.941974315568, - 277.793422663721, 277.560140843400, 277.640329086171, 277.719016393704, 277.775996718354, - 277.776543735559, 278.069109429862, 278.047555848040, 278.042547866743, 277.879970814221, - 278.078945404616, 278.172068463404, 278.338754643149, 278.107330216076, 278.112910048865, - 278.445453513808, 278.413972889685, 278.281435948761, 278.688102249953, 278.748755950831, - 278.825775954851, 278.864385587829, 278.887954649503, 278.923518570963, 278.497911197741, - 278.577311671993, 278.567434824410, 278.538279003744, 278.579915443113, 278.528959489854, - 278.497061723077, 278.590410175821, 278.685518588178, 278.714343026087, 278.633658175898, - 278.394357807741, 278.239312017157, 278.085722164932, 278.380059590956, 278.739705486505, - 278.694694263682, 278.672923745762, 278.696715687286, 278.853484672915, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 277.864490745271, 277.943292827263, 277.719654098130, 277.620485639589, 277.472319039130, - 277.693129006556, 278.133689973093, 277.965457344363, 278.104287602920, 277.823621279948, - 277.618839688350, 277.615190026184, 277.755976640115, 277.813120706528, 277.967931066943, - 277.982623081629, 277.997140146694, 277.975617671251, 278.039568336506, 277.889611169291, - 278.218105661708, 278.124968954386, 278.376454955636, 278.278665136291, 278.301183298592, - 278.397428714062, 278.196778796572, 278.746656377329, 278.846907930532, 278.786561698973, - 278.841304821452, 278.874397654021, 278.909276839009, 278.143937356126, 278.097256838341, - 278.545815137404, 278.494309833488, 278.700417405390, 278.612579318198, 278.560830208376, - 278.548054206682, 278.619008303868, 278.609079484424, 278.483923041726, 278.208681314237, - 278.090402297370, 278.747716499947, 278.515614144343, 278.526325760542, 278.605377647849, - 278.717274877437, 278.819420463325, 278.599577926182, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 278.068675398310, - 277.997973826578, 277.749167591392, 277.971702730095, 277.895766091276, 277.766323744104, - 278.114006780512, 278.215465587629, 277.865744497808, 277.621846139857, 277.619176720160, - 277.665176866961, 277.892488116900, 277.825831734535, 277.991463449834, 277.928833353682, - 277.746440198884, 277.792686927302, 277.910135077567, 277.533121937113, 278.131357931757, - 278.388181942261, 278.402417692803, 278.227304284300, 278.415814342073, 278.378254025897, - 278.601248279164, 278.758242092388, 278.847426423313, 278.280248973563, 278.725834255314, - 278.842186363034, 278.868778923155, 278.494225795144, 278.020128379151, 278.679498884784, - 278.912318616850, 278.814308937895, 278.701152379232, 278.573422817796, 278.532102069194, - 278.542072630317, 278.495785291661, 278.388540928046, 277.931685199925, 278.182962322534, - 278.499946233316, 278.539211829192, 278.586336069633, 278.553089371418, 278.596056981041, - 278.533478404021, 278.457299600740, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 278.084632811174, 277.820012443785, - 277.847308696263, 277.849503278643, 277.798568623574, 277.797575835420, 278.095663099731, - 278.176160746854, 278.055153965908, 277.658857926577, 277.600990658349, 277.654026836536, - 277.704990323093, 277.793048321917, 277.910121578336, 277.820873697740, 277.745501713345, - 277.917800418041, 277.944391515021, 278.049145512055, 278.043694650275, 278.359223099294, - 278.070771695770, 278.214994954607, 278.330759821265, 278.205028068094, 278.559361787443, - 278.733217829340, 278.744268100279, 278.596208016795, 278.640483841563, 278.694916381717, - 278.907613386036, 278.818024141397, 278.832740735832, 278.864929258857, 279.066035941021, - 278.954370093400, 278.808689512194, 278.608053707239, 278.495744514278, 278.455081259502, - 278.372791655716, 278.141900258419, 278.157538472382, 278.129509127672, 278.226019505944, - 278.517786152116, 278.439174014992, 278.709414812548, 278.622228174999, 278.479038464346, - 278.411419063810, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 278.059317675418, 277.775909541424, 277.981685147100, - 277.820433102725, 277.757691649352, 277.791125337952, 278.114244862593, 278.017847302545, - 277.739587601083, 277.595204498445, 277.444481155752, 277.508867798333, 277.654580807842, - 277.801555631030, 277.946216001618, 277.717518898982, 277.766353468943, 277.682654248428, - 277.981754049258, 278.135151366502, 278.237042418896, 278.307870507241, 278.340706625625, - 278.321035354200, 278.320273358697, 278.158571181206, 278.405855009476, 278.698752162175, - 278.489714021957, 278.447399946515, 278.208281541154, 278.274999857765, 278.742819250719, - 278.267292067544, 278.472633364801, 278.954199073712, 278.507525942737, 278.740647038251, - 278.712056316088, 278.578495872832, 278.539513494423, 278.291124747294, 278.285971725264, - 278.217669844021, 278.204961536595, 278.111539468452, 277.987196715585, 278.301219174750, - 278.308770143463, 278.450474529455, 278.387913656980, 278.345354979068, 278.308192795967, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 278.078766967738, 278.054694472586, 277.996546131957, 277.478107514078, - 277.498293431515, 277.439272646630, 278.170812997380, 278.031766350648, 277.926719630068, - 277.660631490707, 277.405466505229, 277.448131221500, 277.639980374018, 277.771980499881, - 277.699632610951, 277.872363280302, 277.869398539167, 277.927769742648, 277.856196077938, - 278.052767006803, 278.215030316361, 277.961917700862, 278.291818910231, 278.337805197442, - 278.117323423329, 278.455733028684, 278.701018948664, 278.676322213600, 278.350822146256, - 278.266243351366, 278.328051517560, 278.614915559626, 278.558300997375, 278.813314535584, - 278.881108562772, 278.123693523522, 278.802821050470, 278.781438747715, 278.621781876457, - 278.564387365762, 278.583461368131, 278.350036130682, 278.383351889379, 278.383019058144, - 278.217555758541, 278.167422809838, 278.238477919987, 278.226153636247, 278.084761209123, - 278.088484041540, 278.083492218972, 278.205027655804, 278.230216899737, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 278.045557859900, 277.849040307617, 277.906197759880, 277.593465692124, 277.699758481137, - 277.871410461793, 278.058125626538, 278.204525836660, 277.952696685466, 277.738482364071, - 277.391817333672, 277.414211293355, 277.713291394110, 277.795254016927, 277.757654239367, - 277.707136929518, 277.820516499087, 277.833903133206, 277.958888974124, 277.727592050621, - 277.979297315556, 278.041516057377, 278.241728050372, 278.352662301885, 278.378421828891, - 278.668011089711, 278.720413573120, 278.293463018845, 278.471858803908, 278.456120759094, - 278.451834597551, 278.400966141086, 278.228702595541, 278.199778173421, 278.229599019782, - 278.763504882934, 278.797467161442, 278.406340958912, 278.639263357618, 278.738466024170, - 278.356147734832, 278.377301134964, 278.324739430270, 278.365219303220, 278.277074392752, - 278.246691447173, 278.325438536989, 278.410510194260, 278.004569449865, 277.972537483973, - 277.956821946510, 278.172942728027, 278.345344049598, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 277.996969175390, - 277.862497775047, 277.649762377272, 277.559149409384, 277.580356760509, 277.718009367429, - 278.068756822897, 277.878009666029, 277.969360198421, 277.610090666218, 277.828347857057, - 277.544325721216, 277.732583265551, 278.116016214294, 277.972299696618, 277.687262934771, - 277.957182102556, 277.863999567218, 278.051999720662, 278.158060596001, 278.155762387840, - 278.127890904723, 278.223511374158, 278.356916537157, 278.639719890896, 278.714037786705, - 278.558389050067, 278.315362526995, 278.636748281842, 278.421360309160, 278.615746331257, - 278.298886265158, 278.533659911339, 278.333792298766, 278.643055170670, 278.858025832867, - 279.020835079354, 278.870273814320, 278.740600676717, 278.482283444293, 278.534910048501, - 278.346778954967, 278.353117018506, 278.419908994646, 278.281125729824, 278.285144148911, - 278.365767158905, 278.333351670498, 277.972629892376, 277.989686782478, 278.095826308077, - 278.302698360631, 278.382668003966, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 277.875713517719, 277.634128413762, - 277.832973471346, 277.448621515103, 277.593144967346, 277.620070785560, 278.022268231048, - 277.650661530718, 277.728550931249, 277.789574269136, 277.607135652596, 277.558983827518, - 277.867823445271, 277.980868124118, 278.152155038418, 277.872425545108, 278.032213134824, - 278.055596269546, 277.794984263919, 277.846180947964, 278.137493702594, 278.095071965260, - 278.130969913741, 278.103726648322, 278.796162214483, 278.772300848655, 278.550498461136, - 278.394793765962, 278.623206154742, 278.611024899396, 278.578628218960, 278.276590748045, - 278.468413343561, 278.450779339504, 278.554459701664, 278.806252974651, 279.013699273923, - 278.748514001816, 278.788419863602, 278.642315613660, 278.454524896995, 278.491218667764, - 278.463773729676, 278.435969444734, 278.300796479766, 278.136749416946, 278.373140364489, - 278.132948804942, 278.027912210990, 278.148274414281, 278.336173789580, 278.280453796923, - 278.416601405752, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 277.958466871634, 277.914274026264, 277.771935237925, - 277.604840373088, 277.681191841525, 277.734814857704, 277.836253334677, 277.790546207519, - 277.679698274453, 277.762322999726, 277.735323729530, 277.547356221084, 277.724659181931, - 278.062792028695, 277.919073079645, 277.773076074541, 278.020996741625, 278.022325061818, - 277.919346621275, 277.950865675377, 278.008524131751, 278.023480753982, 277.924336723588, - 278.332258375312, 278.736366682898, 278.523695501482, 278.502092576710, 278.225439092820, - 278.256232776798, 278.449499552010, 278.137549943998, 278.422050300432, 278.431511965178, - 278.274661992411, 278.431568551580, 278.753808621318, 278.761885574921, 278.415607975957, - 278.555121959527, 278.654993170504, 278.544139116180, 278.520795378936, 278.533770309691, - 278.547957275597, 278.407434870158, 278.298762571130, 278.487164079960, 278.392357298054, - 278.268034972770, 278.187199824354, 278.276694644393, 278.256517908057, 278.378067854440, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 277.976299775529, 278.042031136275, 277.464188145920, 277.771621894762, - 277.784361473567, 277.859883815950, 277.814022087487, 277.852386883815, 277.843778414429, - 277.700529593730, 277.720782097285, 277.895752429155, 278.233578251075, 278.276392982912, - 277.953661711230, 277.591545218148, 277.985804556808, 277.938997069968, 277.916409711425, - 277.888611552732, 277.925456871836, 277.977042887254, 278.082218353152, 278.472003946117, - 278.646240659087, 278.404855822350, 278.163989456392, 277.954560473176, 278.556236453466, - 278.296451614769, 278.277688882445, 278.374637286269, 278.332791290590, 278.203289210287, - 278.562584129166, 278.329198281083, 278.823530241748, 278.763160870026, 278.543114999088, - 278.556718492736, 278.657498589218, 278.499789731658, 278.592487422433, 278.649244580966, - 278.669257850905, 278.201148346028, 278.586350077861, 278.457878133903, 278.245990792454, - 278.112034510986, 278.055946777769, 278.159436781041, 278.294828313829, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 278.055463728037, 277.938769906207, 277.908616747506, 277.697182984726, 277.767438599440, - 277.618954673948, 277.849284086165, 277.888500733412, 277.803726801356, 277.887984809149, - 277.963831684250, 278.063254030007, 278.264222060266, 278.247209209771, 278.010146150856, - 277.737515908542, 277.889412006510, 277.981344866797, 277.913904542254, 277.836061245756, - 277.808859499689, 277.970758433246, 278.239527080226, 278.275624726729, 278.397363141215, - 278.343527616747, 278.259845839951, 278.368292580968, 278.583172394714, 278.290379278148, - 278.385955212872, 278.352217326569, 278.420090515247, 278.134725529508, 278.418675419067, - 278.363034465810, 278.431779148022, 278.438454682849, 278.264539348808, 278.429698158323, - 278.607118714023, 278.464672697985, 278.443469155020, 278.604002661624, 278.807929770258, - 278.629594459038, 278.763699668360, 278.301897413578, 278.088831652212, 277.971815866599, - 277.908876996953, 277.949580119805, 277.929385688745, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 278.164247814763, - 278.017634128271, 278.126496201983, 278.041275562602, 277.963103307992, 277.882098915321, - 277.832817052899, 278.194630071008, 277.940734107132, 278.028855985157, 277.589337692257, - 278.007707016965, 278.159356263938, 278.097452374726, 277.964902829032, 277.890310856301, - 277.995095341973, 277.660207908446, 277.786361546086, 277.815119589775, 277.914655235766, - 278.276761510933, 278.028707200239, 278.334143087463, 278.232784850170, 278.182589303626, - 278.197293256951, 278.305926587915, 278.318792747211, 278.484167044288, 278.357400768639, - 278.328509261854, 278.448253183213, 278.163374893923, 278.104866385859, 278.044914087322, - 278.173224770928, 278.338413210359, 278.380896912261, 278.730673471804, 278.450424564609, - 278.503155223128, 278.491430165703, 278.474964969620, 278.246765035551, 278.931615118388, - 278.559599207653, 278.156636961710, 278.008740658705, 277.932135871154, 277.822627679854, - 277.736249285180, 277.878138412578, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 278.082480645173, 278.043241069493, - 277.697041095551, 277.989863518743, 277.717897740312, 277.701839125518, 277.861708621096, - 278.280953208980, 277.804372502188, 277.704826013697, 277.596403430525, 277.712365023901, - 278.034041843709, 277.947346670070, 277.846022907482, 277.820870191912, 277.874461715493, - 277.769161099427, 277.750268832592, 277.850701911325, 277.878534019060, 278.027904999404, - 278.090516114696, 278.109187477565, 278.190939004850, 278.278788556568, 278.380627825278, - 278.407390272678, 278.511725032938, 278.506674787575, 278.442874478011, 278.405398330435, - 278.395518040659, 278.357905587250, 278.210737031126, 278.122068999623, 278.170689655080, - 278.152435924905, 278.236404166308, 278.676963499355, 278.364031374287, 278.396399598455, - 278.375591815009, 278.342047071761, 278.407524619964, 278.529076426794, 278.148144221518, - 278.042521318864, 277.942078734795, 277.821562712711, 277.728530388654, 277.736969229001, - 277.907471093473, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 277.819603551272, 277.828647314803, 277.754535652466, - 277.824122707543, 277.762454320427, 277.748628587305, 278.031167797444, 277.857054897891, - 277.780437750936, 277.673341198976, 277.580777138276, 277.728655867446, 277.897137734936, - 277.750051876006, 277.442585133617, 277.536109280911, 277.666042104756, 277.637084619762, - 277.954517294964, 277.933011800326, 277.638355177335, 277.771459546012, 277.907366166404, - 278.038032680944, 278.223370782900, 278.077760957702, 278.513395348027, 278.519194273139, - 278.542309039934, 278.482080267916, 278.340394482155, 278.341759181533, 278.301704207586, - 278.255804929780, 278.195762993763, 278.152065600453, 278.109495057418, 278.225701450697, - 278.493902456915, 278.637437629165, 278.359832350456, 278.305034727926, 278.296015493113, - 278.356150546679, 278.036917652359, 277.636846916859, 278.031252957091, 278.053317552121, - 277.856967881711, 277.828489726312, 277.819981618468, 277.859938918796, 277.956551311373, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 277.884653219230, 277.884698802114, 277.844277877433, 277.934802186492, - 277.864463150351, 277.803952962222, 277.862512817816, 278.030331030810, 277.751952165263, - 277.680464702272, 277.585446567641, 277.958894193742, 277.524642689383, 277.589772555767, - 277.547487191290, 277.553287779719, 277.547903182893, 277.780326455565, 278.007585878669, - 277.822118711121, 277.682976359764, 277.843136947080, 277.894178961775, 277.954909292289, - 278.221226702389, 278.236512222249, 278.471628587781, 278.517076530718, 278.553486136797, - 278.548068978131, 278.394215898281, 278.289120256620, 278.234843510822, 278.157199428167, - 278.206792433064, 278.242705298579, 278.226263767876, 278.437906673139, 278.580162411397, - 278.567277080119, 278.296662334949, 278.275257848275, 278.404346162035, 278.002008395328, - 277.160000000000, 277.422452606158, 278.124308422995, 278.212576318432, 278.016005178567, - 277.861666847072, 277.831807919342, 277.987901581353, 278.061939469824, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 277.932091130649, 277.951064758320, 277.839412458507, 277.841315615141, 277.806577252520, - 277.842248927079, 277.988730868827, 277.881229491595, 277.827771128070, 277.852117171922, - 277.977131550724, 277.890734880932, 277.363447936035, 277.674357318546, 277.874045802482, - 277.619616361043, 277.959695749966, 278.034434774544, 278.011503092349, 277.792532523158, - 277.883473108928, 277.906659808602, 277.859039495732, 277.950830457718, 278.150472303852, - 278.280666827875, 278.497788485655, 278.510726053483, 278.601565268380, 278.496480151954, - 278.430095137542, 278.316738350851, 278.171640925745, 278.099215960220, 278.139092052815, - 278.217292849195, 278.260283772674, 278.395024109814, 278.411196388457, 278.432581257165, - 278.381536736126, 278.363111710685, 278.429680484566, 277.793989872273, 277.160000000000, - 277.160000000000, 278.256273592222, 278.264019723457, 278.140777061859, 277.960057434051, - 277.915191160621, 277.936547331889, 278.099249337367, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 277.917465588048, - 277.806536213298, 277.829468329766, 277.894769654517, 277.878874487338, 278.213198285885, - 277.882881751217, 277.892374439465, 277.858339532912, 277.923051748953, 277.681370662730, - 277.510761769121, 277.346031782172, 277.635591850736, 277.505752171465, 277.838565919297, - 278.145230449989, 278.110256581579, 277.857261961129, 277.892771986443, 277.933046869362, - 277.858290703051, 277.761688955039, 277.868954215183, 278.100209314485, 278.316913494119, - 278.444218906419, 278.557360529658, 278.561171208143, 278.461978486569, 278.557371359122, - 278.268552022994, 278.168263392393, 278.004287261093, 278.100378738598, 278.174276275285, - 278.571381129483, 278.432024829889, 278.351912980210, 278.426658874171, 278.422291931680, - 278.425551948989, 278.455607158869, 278.142898669707, 277.160000000000, 277.160000000000, - 278.358691525700, 278.271973931751, 278.175217065772, 278.113413453687, 278.060115945570, - 278.072147299547, 278.221325526498, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 277.947472331137, 277.986181501038, - 277.984568003653, 278.110290656444, 277.897470824458, 277.874164089902, 277.898939913517, - 277.902875083266, 277.889547948396, 277.798750008214, 277.895056427821, 277.559027635660, - 277.397787394390, 277.415750853834, 277.795000812736, 278.022111292969, 278.209968407002, - 278.081682250882, 278.091845240573, 277.941999949457, 277.909072268308, 277.784844781870, - 277.659181293741, 277.950679245143, 278.025258482602, 278.291405558634, 278.461051894477, - 278.543413260710, 278.637341256470, 278.536026584681, 278.345094023061, 278.314548843661, - 278.141679812436, 277.941455855832, 278.086647453443, 278.112323026882, 278.109913998848, - 278.098115462881, 278.381213778877, 278.424512212838, 278.401413477507, 278.394564786766, - 277.894149214730, 277.375874807682, 277.160000000000, 278.149965464308, 278.077148773966, - 278.225807651780, 278.284892879974, 278.351353534523, 278.240233215773, 278.349246487147, - 278.349466760844, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, - 288.000000000000, 288.000000000000, 279.240455299468, 279.223818551588, 279.285849037670, - 279.376293488344, 279.461192356391, 279.551808319930, 279.628646083334, 279.652829397263, - 279.616525840893, 279.502069589155, 279.291108765522, 279.053106080215, 278.902689297837, - 278.875704607117, 278.947740010309, 279.107704342158, 279.293681458493, 279.389614320839, - 279.411224941796, 279.444212582782, 279.386698602138, 279.136632845345, 278.940936666674, - 279.114221831018, 279.555753115819, 279.953434278201, 280.226196904095, 280.405256334886, - 280.410401720828, 280.251580808077, 280.098019623178, 279.974301676744, 279.757509415710, - 279.521564884780, 279.499039528544, 279.701996418489, 279.925134655518, 280.065775204607, - 280.157363074379, 280.210875088178, 280.228483742292, 280.242147600516, 280.253696133409, - 280.268103214047, 280.320185953974, 280.334307179838, 280.179831259660, 279.974644702474, - 279.996541178206, 280.236144650250, 280.430297213138, 280.482837320704, 280.457167561948, - 280.368438239921, 280.237631095078, 280.139468565491, 280.058914690017, 279.931995170108, - 279.790325543831, 279.694221168621, 279.601661392615, 279.495094732655, 279.400305289408, - 279.315406421361, 279.170992589248, 279.122968987120, 279.185857037526, 279.307459658628, - 279.447414156257, 279.576963540092, 279.657803270340, 279.678727839839, 279.638593829489, - 279.510130693798, 279.301628221226, 279.100500801839, 278.988560072117, 278.974724701028, - 279.039385051036, 279.169048776781, 279.318322140061, 279.420543807447, 279.465423007055, - 279.468796093395, 279.383211173889, 279.191917158746, 279.053391934990, 279.156356824790, - 279.471311615411, 279.820168782296, 280.098305477953, 280.261471383277, 280.248379234602, - 280.089100954212, 279.926106561752, 279.809077617043, 279.659975766627, 279.501440708651, - 279.482574293529, 279.633677127367, 279.825485681103, 279.976645685896, 280.097276400764, - 280.174628702763, 280.192294527831, 280.188521244807, 280.196296494675, 280.219850928100, - 280.263243682879, 280.275020899592, 280.180917507803, 280.066804281795, 280.125290168672, - 280.362949828249, 280.587574510106, 280.668985949904, 280.616788868068, 280.490498228663, - 280.363864563528, 280.257412245478, 280.131064435118, 279.982362781387, 279.855843458162, - 279.757509415710, 279.634477520736, 279.518134627486, 279.422430448960, 279.301399537407, - 279.066598425575, 279.006454581005, 279.065626519341, 279.211698309147, 279.406079555854, - 279.575362753355, 279.659346886123, 279.668951606549, 279.614810712245, 279.477714762361, - 279.291623304116, 279.135260742427, 279.045559514167, 279.027379150504, 279.089638320405, - 279.211583967237, 279.338331974281, 279.433350101348, 279.488062705201, 279.486633431328, - 279.403907059567, 279.254061986738, 279.134288836193, 279.172764888850, 279.399447725084, - 279.708456736394, 279.964353930589, 280.087328654609, 280.053540620255, 279.905525017983, - 279.744302925125, 279.629846673388, 279.535743281599, 279.456733021908, 279.457876441006, - 279.562213433724, 279.709028445943, 279.857215561080, 280.002143931787, 280.100420803284, - 280.113627293870, 280.091559305273, 280.106995463100, 280.164566614698, 280.221223031018, - 280.227511836058, 280.166796281940, 280.117915115488, 280.205157992687, 280.436986214863, - 280.676989883592, 280.785042988379, 280.731302290760, 280.595006734245, 280.462141435025, - 280.330190871084, 280.161879579817, 280.001686564148, 279.887230312410, 279.769572487197, - 279.608579078159, 279.472969573104, 279.366345742189, 279.220731320023, 278.926872611765, - 278.881364531654, 278.941165350494, 279.107361316429, 279.349823336219, 279.555124235315, - 279.648370062780, 279.657231560791, 279.594858048980, 279.449300797769, 279.279102864990, - 279.156814192429, 279.084607276373, 279.061052842948, 279.111248941363, 279.216443498405, - 279.328441399081, 279.431749314611, 279.511274112896, 279.525624022579, 279.454617696576, - 279.326783441388, 279.211183770552, 279.203065494955, 279.353482277333, 279.594915219935, - 279.794384681630, 279.871851325538, 279.829087451263, 279.710686403636, 279.579536233063, - 279.486233234644, 279.434950888086, 279.410081522698, 279.424259919517, 279.498524989950, - 279.624358261716, 279.778090959479, 279.931023263874, 280.032330195982, 280.046737276620, - 280.015807790012, 280.018609166803, 280.078867353282, 280.150102363105, 280.176515344275, - 280.155247749047, 280.155933800506, 280.263815392429, 280.485638697495, 280.723469869937, - 280.847759525920, 280.806825122202, 280.666184573113, 280.512566217259, 280.352087346816, - 280.173428112710, 280.012091677942, 279.876825198616, 279.728295057749, 279.552723055209, - 279.402363443785, 279.254576525332, 279.074545188308, 278.792063500078, 278.765650518908, - 278.830882578465, 279.019032191087, 279.293738629448, 279.517277063162, 279.622357278294, - 279.646254737448, 279.592056672189, 279.448328891536, 279.283562199474, 279.169791999195, - 279.110905915633, 279.105703358736, 279.159043859671, 279.239997931829, 279.325754364200, - 279.426489586758, 279.520307123772, 279.551522465155, 279.502412614884, 279.403907059567, - 279.305458675206, 279.267725844962, 279.333072246429, 279.477371736632, 279.617554918081, - 279.673753966761, 279.623843723122, 279.509902009978, 279.398532989806, 279.334215665527, - 279.320437465393, 279.333072246429, 279.360399962878, 279.425917877209, 279.551751148975, - 279.712973241832, 279.857558586810, 279.950404217590, 279.981390875154, 279.965840375417, - 279.949546653266, 279.977160224490, 280.044278925559, 280.106423753550, 280.144328096658, - 280.197382742819, 280.319728586334, 280.514567200681, 280.716094816753, 280.831294290905, - 280.809912353767, 280.682078098579, 280.512966413944, 280.338595001456, 280.166338914300, - 279.997684597304, 279.819425559882, 279.641966915829, 279.479658574828, 279.323296013139, - 279.126284902505, 278.919611900491, 278.663943390116, 278.635872451253, 278.714768369034, - 278.939335879936, 279.234966887797, 279.462164262625, 279.579536233063, 279.613667293147, - 279.557754099241, 279.422258936095, 279.273099914724, 279.160301620679, 279.104045401044, - 279.120339123194, 279.186371576120, 279.254633696287, 279.324610945102, 279.415912960099, - 279.503327350163, 279.544947805340, 279.525223825895, 279.451873490740, 279.359942595239, - 279.299512895895, 279.299970263534, 279.366460084099, 279.468510238620, 279.518877849899, - 279.450730071642, 279.310718403058, 279.198949186201, 279.159386885400, 279.179282377710, - 279.227706176523, 279.276816026794, 279.339704077199, 279.455246577080, 279.610637232536, - 279.746761276187, 279.834861717709, 279.879798088271, 279.885629525673, 279.875395924743, - 279.895577271828, 279.960923673294, 280.039133539617, 280.106137898776, 280.185090987512, - 280.316469841904, 280.499531239539, 280.676532515953, 280.779268721933, 280.774980900315, - 280.668928778949, 280.494271511687, 280.303091838455, 280.126605100635, 279.943315019181, - 279.733497614647, 279.533456443403, 279.369032777070, 279.193232090709, 278.974724701028, - 278.776684513206, 278.477337393277, 278.425769191944, 278.545142145805, 278.845003804328, - 279.186257234210, 279.442668966999, 279.589884175903, 279.616983208532, 279.523623039157, - 279.377551249352, 279.241884573341, 279.128514569747, 279.069113947591, 279.093354432475, - 279.156013799060, 279.215357250261, 279.294424680907, 279.396417664474, 279.488805927615, - 279.561470211310, 279.584338593276, 279.506586094593, 279.365716861685, 279.260465133688, - 279.228049202252, 279.263152168569, 279.346850446563, 279.384926302536, 279.287735679182, - 279.118681165502, 279.009884838300, 278.999765579281, 279.055793115096, 279.139091196406, - 279.206552923204, 279.259093030770, 279.356112141259, 279.517105550297, 279.681186190900, - 279.784379764520, 279.807991368899, 279.779234378578, 279.764598614120, 279.813822806301, - 279.907468830450, 279.993796972370, 280.053540620255, 280.119458731271, 280.251409295212, - 280.463342025078, 280.675217583990, 280.789616664772, 280.782813321138, 280.675389096854, - 280.489526322429, 280.273134258080, 280.072292693467, 279.874195334690, 279.652486371533, - 279.437866606786, 279.233594784879, 279.015659104747, 278.793149748221, 278.609916837722, - 278.278039444447, 278.221211515262, 278.401014168466, 278.772568204452, 279.153212422270, - 279.444384095647, 279.618984191954, 279.628074373785, 279.498410648040, 279.344049069773, - 279.206610094159, 279.080376625709, 279.029322962971, 279.074373675443, 279.126685099190, - 279.162645629830, 279.242742137665, 279.351767148686, 279.452445200289, 279.569245461179, - 279.648770259464, 279.570846247916, 279.375721778795, 279.219645071880, 279.156013799060, - 279.166704767629, 279.232965904375, 279.254862380107, 279.131601801312, 278.940307786170, - 278.834598690534, 278.852035831783, 278.945624684977, 279.059509227166, 279.135375084336, - 279.175966462325, 279.264581442442, 279.446042053339, 279.658031954160, 279.793812972081, - 279.790782911470, 279.698680503104, 279.650028020472, 279.710629232681, 279.826171732562, - 279.931480631514, 280.008375565873, 280.071149274369, 280.185319671332, 280.405427847751, - 280.652120518204, 280.782241611589, 280.760745332541, 280.639542908123, 280.451907834096, - 280.226482758870, 280.002544128472, 279.780835165315, 279.552780226163, 279.330785408232, - 279.096041467356, 278.847748010164, 278.625009969819, 278.440576469267, 278.096350149730, - 278.070394536199, 278.305481502805, 278.723172499407, 279.140120273594, 279.458219466736, - 279.619441559593, 279.587482995796, 279.450272704003, 279.311976164066, 279.151897490307, - 278.991590132728, 278.964262416279, 279.057565414699, 279.110848744678, 279.115708275846, - 279.175451923731, 279.273671624273, 279.378923352270, 279.532427366214, 279.652257687714, - 279.582966490358, 279.372234350545, 279.184370592698, 279.073115914435, 279.055564431277, - 279.140348957414, 279.183455857419, 279.030009014430, 278.774740700739, 278.632785219688, - 278.674634358685, 278.827795346899, 278.977697590684, 279.039842418675, 279.051848319207, - 279.138576657812, 279.348279720436, 279.602690469803, 279.771058932025, 279.762711972608, - 279.633848640231, 279.556153312503, 279.607664342881, 279.721663226979, 279.841322035614, - 279.946287908836, 280.009804839746, 280.088243389888, 280.289885347869, 280.563848563817, - 280.727185982006, 280.709577327893, 280.579627747373, 280.394736879182, 280.175657779951, - 279.933024247296, 279.673182257212, 279.415970131054, 279.180025600124, 278.938421144658, - 278.683210001922, 278.455841114229, 278.261631380386, 277.941131007138, 277.966000372526, - 278.239391878925, 278.690642226061, 279.154870379962, 279.488577243795, 279.591484962640, - 279.499382554274, 279.378065787946, 279.270984589392, 279.083235173455, 278.890283200620, - 278.882622292662, 279.001137682198, 279.046359907535, 279.033553613635, 279.073458940165, - 279.153498277044, 279.279102864990, 279.478858181460, 279.608007368610, 279.522536791014, - 279.321638055446, 279.132745220410, 278.967120964025, 278.916810523700, 279.055735944141, - 279.162588458876, 278.986158892011, 278.647764009875, 278.455212233725, 278.525875533999, - 278.751586463999, 278.936991870785, 278.962775971451, 278.923213670651, 279.010285034985, - 279.265381835811, 279.562499288499, 279.744017070351, 279.719890927377, 279.567816187306, - 279.484632447906, 279.544033070062, 279.658603663709, 279.771058932025, 279.864419101400, - 279.899522067717, 279.941314035759, 280.136266992016, 280.447905867252, 280.660295964757, - 280.667213650302, 280.534005325352, 280.343283019759, 280.121574056603, 279.869335803522, - 279.580336626432, 279.282304438465, 279.009084444932, 278.747527326200, 278.486313233198, - 278.257286387813, 278.072967229170, 277.832734876621, 277.928782080877, 278.259516055054, - 278.741524375934, 279.215242908351, 279.510416548572, 279.531626972845, 279.398304305986, - 279.305801700935, 279.217586917503, 279.013715292280, 278.826308902072, 278.825336995838, - 278.901088511099, 278.911836650623, 278.914523685504, 278.944767120653, 278.984443763364, - 279.143607701844, 279.421115516997, 279.532198682394, 279.369490144709, 279.175623436596, - 279.045273659392, 278.877476906720, 278.808128538409, 278.992847893736, 279.154127157548, - 278.970494050365, 278.596996201912, 278.388550900295, 278.466303398978, 278.711623966514, - 278.898973185767, 278.883880053670, 278.801782562413, 278.914009146910, 279.254004815783, - 279.617497747126, 279.797872109880, 279.722920987987, 279.523508697248, 279.433064246574, - 279.512074506265, 279.634420349781, 279.724636116635, 279.773059915447, 279.762197434013, - 279.783636542106, 279.992196185632, 280.333335273604, 280.578827354005, 280.616388671383, - 280.501589393916, 280.301891248401, 280.061601724898, 279.796328494097, 279.497438741807, - 279.181626386862, 278.861812065073, 278.555661601509, 278.284156736622, 278.068336381822, - 277.909000930477 + 276.857846883478, 276.794176778727, 277.181087123710, 277.271328891367, 277.738150007595, + 277.811501271569, 277.782801498740, 277.720243049346, 277.697362352800, 277.645937156907, + 277.434690429892, 277.479415166828, 277.480779740851, 277.470370683483, 277.466233617218, + 277.519636477424, 277.546507075768, 277.533196530853, 277.638535538066, 277.660223799155, + 277.516239354148, 277.435042994882, 277.233848743540, 277.204873528392, 277.217411121384, + 277.145056043542, 277.359707505178, 277.563426568591, 277.359606573371, 277.302689400583, + 277.135925984483, 277.013670202527, 277.249004656066, 277.362196243717, 277.472882266866, + 277.551374864505, 277.332048151829, 277.879973060166, 277.925942918285, 278.260846010953, + 278.144732099878, 278.206939585072, 277.936934540523, 278.025569678971, 278.307756924958, + 278.369318574429, 278.609267078466, 278.634490902502, 278.686706704875, 278.328553888493, + 278.418908930386, 279.060194431430, 279.114168787979, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 276.922836958812, + 276.932069336471, 277.225397205068, 277.545476457484, 277.807111956190, 277.768185575062, + 277.713814690105, 277.662213334460, 277.653334089351, 277.591821807616, 277.519290878870, + 277.499671640950, 277.471580060430, 277.398162354734, 277.371544952255, 277.453879058484, + 277.474032112632, 277.458747675572, 277.588871038908, 277.540124772655, 277.464264615292, + 277.039835665510, 277.050815441941, 277.165791541588, 277.284327024201, 277.353876090779, + 277.399785414714, 277.512330802008, 277.438449711794, 277.419894070553, 277.165764618769, + 277.034846715507, 277.230872118099, 277.277310155004, 277.272952146249, 277.486209474088, + 277.453656185210, 277.613143953527, 278.070672412350, 278.079989482462, 278.338031969208, + 278.163685044856, 278.214343856183, 278.255744502346, 277.941149161137, 278.165921759503, + 278.022894706983, 278.499780589025, 278.158397461806, 278.611643581705, 278.438079674786, + 278.816122996613, 278.628190436440, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 277.048057829677, 277.280372081890, + 277.423859756998, 277.465672699176, 277.728939006340, 277.726575834584, 277.688480429396, + 277.635385647721, 277.626062350091, 277.604239400215, 277.556926439833, 277.519394378669, + 277.425044031161, 277.318865067295, 277.309205651263, 277.348943116883, 277.361861210203, + 277.430978988228, 277.477408565654, 277.638923535542, 277.418799606607, 277.017513285449, + 276.976808425920, 277.159242736589, 277.315106840602, 277.327868258207, 277.390541905514, + 277.608373786211, 277.473011211489, 277.578037079299, 277.353975261579, 277.253195520645, + 277.219244477693, 277.303161046293, 277.197720889628, 277.568280002996, 277.565774183730, + 278.056333010069, 278.360857981015, 278.182020399473, 278.393376099219, 278.363774312832, + 278.203283980677, 278.146185013281, 278.348861342242, 278.330399393385, 278.059284960522, + 277.920499351734, 278.030061320993, 278.226766351540, 278.217750387710, 278.516389162421, + 278.535938385310, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 277.255920436446, 277.480949345724, 277.444597425498, + 277.647882845088, 277.496111688818, 277.670322939349, 277.765213822002, 277.666760657851, + 277.656928637994, 277.678906056191, 277.667906868059, 277.539641562735, 277.369487702737, + 277.285648882293, 277.326341650870, 277.351600146853, 277.359573895370, 277.493766228910, + 277.649003177440, 277.460872384943, 277.243514998577, 277.056578101319, 277.226617780177, + 277.271740370610, 277.294132332584, 277.308093611741, 277.378433184955, 277.570114302521, + 277.548859645865, 277.723889890260, 277.429263433352, 277.272737053512, 277.398599847739, + 277.309448997716, 277.328344724582, 277.207058029377, 277.696248070705, 277.835043755662, + 278.062452681475, 277.850550227440, 278.265559859820, 278.272872090840, 278.465229599008, + 278.217031341802, 278.386132964535, 278.224365564792, 278.232702192636, 278.099733855522, + 278.082038386312, 278.064057694079, 278.385342869231, 278.700953905968, 278.673157999290, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 277.459327717938, 277.559547836427, 277.422638507574, 277.572825627337, + 277.571463907280, 277.548694860479, 277.544037804342, 277.524653326012, 277.693130140178, + 277.706143234839, 277.497931516767, 277.349914202908, 277.161676307980, 277.258114023397, + 277.410663587516, 277.481076538026, 277.519833710823, 277.631696408897, 277.418308903785, + 277.304804629716, 277.259147844963, 277.382350427133, 277.299040041596, 277.256710875078, + 277.280373232168, 277.342518042564, 277.164290846344, 277.428166532894, 277.401545619979, + 277.739369780501, 277.395945166703, 277.460368035024, 277.476322888924, 277.493513518766, + 277.351824398612, 277.358401183558, 277.509306514214, 278.029530363332, 278.214265489018, + 278.152451178774, 278.452249056059, 278.282135844771, 278.031146456185, 278.126155437803, + 278.340924990343, 278.274408568623, 278.095792700955, 278.045155910991, 278.044971189736, + 278.227690671411, 278.277414153890, 278.322932576059, 278.574745416009, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 277.352885697217, 277.465676965878, 277.313718088585, 277.571636446583, 277.752813057885, + 277.876072319293, 277.600399390414, 277.629804333290, 277.509786900336, 277.350032286595, + 277.710697230771, 277.302689293788, 276.964102591939, 277.129868245471, 277.506377821286, + 277.620243311629, 277.670677617944, 277.590396381881, 277.259332104000, 277.282466682171, + 277.510494889930, 277.420372093899, 277.372440940559, 277.334025248344, 277.133405320679, + 277.432373537602, 277.458193421654, 277.573994485106, 277.560836748035, 277.504546294795, + 277.722963359918, 277.429148743501, 277.415671650080, 277.296250262619, 277.426094729653, + 277.013478567167, 277.173619712680, 277.722720050144, 278.152541665310, 278.471048817117, + 278.595955610324, 278.466217631891, 278.437646585921, 278.321089675788, 278.198112904595, + 277.952153564447, 278.065664545600, 278.357066253341, 277.965448681613, 278.124513612433, + 278.162667811909, 278.277405316586, 278.574537792479, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 277.390479450263, + 277.345673673084, 277.364302907561, 277.605928275352, 277.789929872344, 277.903984493908, + 277.966933216759, 277.912882971090, 277.703988459187, 277.351015681331, 277.674063100141, + 277.408395530420, 277.007259003699, 276.877336007904, 277.057623772846, 277.601455267293, + 277.323874590069, 277.238673158792, 277.337325747808, 277.439493917521, 277.541788857115, + 277.749810750892, 277.278504087019, 277.414256185858, 277.429899941764, 277.493551649852, + 277.511929075685, 277.190651115649, 277.443504438646, 277.605668250438, 277.771466436681, + 277.767262688689, 277.716100034677, 277.618374865972, 277.415460290735, 277.086306373890, + 277.176226842383, 277.650329975958, 277.765271071796, 278.463221024006, 278.702998001410, + 278.624355987396, 278.467009674144, 278.568028046137, 278.284237092204, 278.456297664446, + 278.609188468591, 278.571107283134, 278.248413926530, 278.155161517380, 278.404700226527, + 278.246987177160, 278.091060834030, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 277.419054703888, 277.313454081577, + 277.427414463702, 277.682584699189, 277.791193561005, 277.837885785253, 277.920062626646, + 277.919899324178, 277.689677224346, 277.410500912168, 277.630756408261, 277.629189004816, + 277.397411408199, 277.319060037245, 277.402102256687, 277.322768000649, 277.822242558531, + 277.887351499372, 277.454007146918, 277.676721339532, 277.602004218075, 277.714201570065, + 277.566677175978, 277.587799289763, 277.530615330753, 277.556498697055, 277.452480002766, + 277.522252203614, 277.645085515486, 277.845531596217, 277.946658451859, 277.602481754126, + 277.727335587639, 277.560791900289, 277.284230600351, 277.484662737021, 277.763836962967, + 277.845000815162, 278.010847594804, 278.693344887027, 278.809251065654, 278.723035732378, + 278.424896815390, 278.623465372965, 278.347354282196, 278.788885219380, 278.765666653428, + 278.053095427463, 278.334108537083, 278.163143059112, 278.791210402345, 278.564612083899, + 278.156097707067, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 277.260418446226, 277.335071352700, 277.491938938790, + 277.691206395263, 277.704209378278, 277.669286596309, 277.754719412166, 277.870079071509, + 277.502780644528, 277.754473095834, 277.727974436459, 277.557807112427, 277.336457025286, + 277.383919705566, 277.656951776528, 277.778531969694, 277.546679431981, 277.433886594239, + 277.849054763829, 277.827905512882, 277.852324775739, 277.715592971272, 277.705949179344, + 277.784233780020, 277.513796321220, 277.651505656888, 277.679417351708, 277.712133821933, + 277.640023428435, 277.845573550891, 277.939074922095, 277.983471194163, 277.686692172136, + 277.654194453924, 277.864032570137, 277.868319164885, 277.949388853803, 278.090141829888, + 278.064378565379, 278.473111038064, 278.567543171754, 278.829326294043, 278.294846275015, + 278.860106433048, 278.796593070403, 278.824386010090, 278.760223015153, 278.048034602279, + 278.456786976534, 278.270707527732, 278.883481216381, 278.331828953117, 278.594265837323, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 277.265976322594, 277.170431045594, 277.485489657589, 277.518150163777, + 277.594346099824, 277.525106574839, 277.660446242218, 277.653585064744, 277.344627321906, + 277.549004645704, 277.850802344347, 277.583257392330, 277.353933834212, 277.483162324227, + 277.802093742320, 277.620873269675, 277.778845766219, 277.705264213562, 277.541346709049, + 277.429472445857, 277.832567758240, 277.874496054447, 277.713531133238, 277.960569830321, + 277.669206881492, 277.755260958946, 277.586916719101, 277.841135564379, 277.718811273917, + 277.786742393662, 277.829134182740, 277.760954990401, 277.727290357312, 277.802718821044, + 277.926844650633, 277.940517920966, 277.860498676370, 277.948632515039, 278.482136788291, + 278.576025918865, 278.759903750249, 278.682290037298, 278.803929269590, 278.813600952805, + 278.879253548731, 278.646151177629, 278.776315233178, 278.693319468861, 278.379375494188, + 278.648541321932, 278.852157864598, 278.997643614525, 279.027698942229, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 277.366680878019, 277.381150787692, 277.486313780854, 277.312232782158, 277.401101882668, + 277.567697032357, 277.761418956830, 277.631564641376, 277.355216207498, 277.579622423646, + 277.946803922538, 277.745864795866, 277.554670208171, 277.653554412702, 277.886277698790, + 277.865648942958, 277.749235588755, 277.653323813329, 277.549350491474, 277.771809470937, + 277.894339690909, 277.969462462647, 278.118951046477, 278.108173032796, 277.923612184096, + 277.725656808996, 277.917004359488, 278.013510348155, 277.903413295852, 277.848269398192, + 277.837731396906, 277.733960635088, 277.766101554254, 277.546687146201, 277.856867293302, + 277.905478550194, 277.736223835135, 278.472986192106, 278.717220540209, 278.760841954155, + 278.638659440517, 278.681901711759, 278.363012975511, 278.807884722018, 278.838462052377, + 278.928798765744, 278.952453872397, 278.865733112592, 278.729566964511, 278.884998970494, + 278.942907006798, 278.960762454434, 278.688569887665, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 277.591550421937, + 277.499030877279, 277.305275168613, 277.541796080983, 277.195139366615, 277.331665964937, + 277.445626505916, 277.215335680856, 277.530907774801, 277.843341282378, 277.963214149135, + 277.927219319293, 277.797424178773, 277.813442210719, 277.933664495794, 277.858047474598, + 277.696277323311, 277.361473125741, 277.479932829295, 277.389415841575, 277.553020377427, + 277.924940171380, 278.159459379598, 278.037019105043, 277.914055069608, 277.647200588818, + 277.916937939818, 277.909534469069, 277.749633166238, 277.904591816623, 277.826866398276, + 277.903480594745, 277.699082807175, 277.688363481753, 277.605172407277, 277.842865865160, + 278.021216292518, 278.414517122505, 278.681556989763, 278.680320091635, 278.574125022233, + 278.370197434153, 278.734504756703, 278.493143759543, 278.779235286269, 278.935546444982, + 278.663643683160, 278.899996705338, 278.900791563301, 278.879832866026, 278.858705900529, + 278.815825789004, 278.824798215775, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 277.567216721718, 277.522475814565, + 277.303456918119, 277.208997427907, 277.424224609638, 277.567326891009, 277.516826173608, + 277.498907180864, 277.469773038402, 277.832555441150, 277.982833034908, 278.034185232461, + 277.939076079863, 277.902634532238, 277.970739026974, 277.895772802147, 277.735591951345, + 277.571305898374, 277.401061840836, 277.802603400487, 277.964968147081, 278.120946309288, + 278.120357306337, 278.027951015641, 277.674224913903, 277.745718315661, 277.676284056601, + 277.869144896292, 277.970562609159, 277.897871250900, 277.988896836592, 277.828464108029, + 277.787944526233, 277.592034339979, 277.887975166605, 277.726333366592, 278.031409362000, + 278.341449368467, 278.429430372404, 278.651974989787, 278.066148305173, 278.615426251337, + 278.658109595447, 278.764842621618, 278.797171571925, 278.930322025553, 278.589836306622, + 278.878563250804, 278.928365819420, 278.890061138998, 278.711334675770, 278.384119162997, + 278.646351915830, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 277.663311094642, 277.507469698425, 277.389870268662, + 277.406179041586, 277.420737084474, 277.458518864884, 277.735139471721, 277.538528827908, + 277.851206036120, 277.883910964943, 277.957774069964, 277.977068942386, 277.944430734847, + 277.548495261116, 277.973300201287, 277.918203113366, 277.766347699266, 277.602195991588, + 277.779284913253, 277.876179934937, 277.970720881483, 278.083009243663, 278.104572434708, + 277.809070170494, 277.861807626314, 277.891365545407, 277.598480819644, 277.808955771559, + 277.877037325444, 277.848094780278, 277.931719704904, 277.914973085381, 277.584619210738, + 277.926657140828, 278.195616408992, 278.085463190691, 277.980335449674, 278.380371866981, + 278.427298049019, 278.662228114450, 278.596051250816, 278.616744598565, 278.803046455795, + 278.791647475311, 278.497809355494, 278.866809060531, 278.869411961323, 278.852587248998, + 278.873678034993, 278.840736102112, 278.718548564065, 278.079520049554, 278.242255144442, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 277.663037557399, 277.570818671989, 277.407747457760, 277.335813345664, + 277.408696086859, 277.372137478768, 277.687262360450, 277.795853080682, 277.908241927909, + 277.869637561962, 277.892224175058, 277.606701811400, 277.922429208801, 277.536273731865, + 277.514854228159, 277.491556490133, 277.238066098239, 277.372640648916, 277.841348851264, + 277.929444260057, 277.976213790096, 278.044032057611, 277.835719155503, 277.767503822122, + 277.843943315539, 277.920171435982, 277.647907981291, 277.916193738411, 277.839013360636, + 277.803033017271, 277.864319377224, 277.746027317625, 277.651770176824, 278.063583343182, + 278.140685366536, 278.122090447834, 278.051809880199, 278.142408676546, 278.306266717218, + 278.732451854741, 278.748488287575, 278.749619678915, 278.800360568621, 278.706276462243, + 278.492046737934, 278.862935429038, 278.836729260372, 278.789661732480, 278.792523085067, + 278.785266852082, 278.004813712433, 278.206206534037, 278.268595922962, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 277.655861325454, 277.470105519071, 277.399821904234, 277.079715748819, 277.206531740859, + 277.468381791645, 277.363994499400, 277.823385911566, 277.933105323249, 277.866664229846, + 277.852775583871, 277.877579704086, 277.963875663629, 277.928717010393, 277.828398792983, + 277.296954832861, 277.401013285608, 277.627465823518, 277.658221668447, 277.774377222669, + 277.868027943365, 278.023351410815, 277.746712993709, 278.009216578254, 277.993159001656, + 277.680853664988, 277.661928822189, 277.876061141195, 277.861750611024, 277.598049579725, + 277.828212743813, 277.655101339813, 277.951762031896, 277.838019817885, 278.179159164042, + 278.237226454496, 278.178567686687, 278.271357845148, 278.743948910507, 278.860705502890, + 278.683448271915, 278.784519721920, 278.823631988977, 278.720806055127, 278.798185740840, + 278.751147075398, 278.657468304086, 278.445253830843, 278.647530368995, 278.649158962300, + 278.320344550426, 278.521904549617, 278.418647841440, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 277.402768933310, + 277.337648751023, 277.288997139047, 277.307430980466, 277.273543109168, 277.307022035080, + 277.641453325741, 277.844770093515, 277.953627149863, 277.942556409526, 278.215884948157, + 277.975149183501, 277.975145850398, 277.900981141501, 277.505402827533, 277.362760181571, + 277.548236940679, 277.664353875572, 277.502568484867, 277.584445002441, 277.713270317726, + 277.965355998582, 277.690792988212, 278.006179713121, 278.001384579859, 277.828691144649, + 277.561216736042, 277.889988864492, 277.754326137754, 277.904050492162, 277.709121972134, + 277.690236890821, 278.007302124024, 278.153784599132, 278.279221305941, 278.375074001404, + 278.132932590898, 278.527166347114, 278.731939115244, 278.786940471844, 278.668914201410, + 278.548949997938, 278.592784358004, 278.703220908555, 278.607776530910, 278.504228677905, + 278.163645789480, 278.248484564569, 278.501193898172, 278.642560007634, 278.370053886907, + 278.408249992376, 278.403262082509, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 277.207648756580, 277.331137219044, + 277.479780517975, 277.377551184413, 277.272600399963, 277.500350726646, 277.705863349177, + 277.864606993211, 277.966389026012, 278.042544067771, 278.322542195089, 278.031457007641, + 277.941373758310, 277.636410155692, 277.858031016031, 277.252349029484, 277.532160327080, + 277.374767480318, 277.358447349268, 277.596000095572, 277.677202591650, 277.510417183120, + 277.771541403309, 277.999812504068, 277.710912956346, 277.651416447672, 277.782845548063, + 277.920184623648, 278.100817677521, 277.830890386789, 277.549163570987, 277.924816153170, + 277.939889612067, 278.226842544695, 278.334446154499, 278.384165815707, 278.595962695245, + 278.279446869139, 278.639495704751, 278.773812076980, 278.436948614430, 278.920203762416, + 278.841422131634, 278.427836855974, 278.741570912682, 278.508545454593, 278.339874209391, + 278.557063084230, 278.416922724100, 278.706534660227, 278.334083779964, 278.643830203774, + 278.639844363161, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 277.374416670460, 277.500945802563, 277.426407890967, + 277.396874709479, 277.318086237064, 277.616856624914, 277.899994797892, 277.698238913389, + 277.977172419143, 278.341279558064, 278.388060688379, 278.293360918814, 277.904418999468, + 277.876108809024, 277.943923864864, 277.721133375911, 277.442202818399, 277.253739466136, + 277.509607250232, 277.667492305596, 277.591852155885, 277.835292482825, 277.968936425109, + 277.955535101385, 277.936720370208, 277.583707892174, 277.868800957519, 277.945079514213, + 278.033236526786, 277.903343895031, 278.056619912872, 278.157071041598, 278.283239136885, + 278.176795659042, 278.214399736990, 278.377534497257, 278.505800329270, 278.397309694119, + 278.669295404261, 278.768294086585, 278.677030612244, 278.800406330589, 278.667560270694, + 278.786628105936, 278.570032149640, 278.492115471478, 278.447513823625, 278.631423391505, + 278.397821811388, 278.495161908060, 278.272485916042, 278.556447973070, 278.677966110168, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 277.317281721922, 277.505968584604, 277.114499942864, 277.204273695860, + 277.333957324466, 277.623957317731, 277.644603479615, 278.000151120404, 277.641642354499, + 278.324675421874, 278.417063688056, 278.331839246209, 277.968470256881, 277.964794190107, + 278.037060222090, 277.649723985672, 277.168203186638, 277.143187050201, 277.273553266251, + 277.552393261269, 277.634517104997, 277.802271465379, 277.881739212292, 277.940910603072, + 277.879001692426, 277.745720318329, 277.913410218013, 278.101729803357, 277.802314274772, + 277.915739600581, 278.217977656900, 278.416638900017, 278.379485432682, 278.328422581059, + 278.343399135787, 278.412171676156, 278.436343517073, 278.543604914389, 278.063377717316, + 278.540875146925, 278.533646068312, 278.735677942685, 278.780712168233, 278.761366160987, + 278.038154721897, 277.866532120266, 278.165321893048, 278.680388296020, 278.573200036194, + 278.586831345728, 278.488241868816, 278.717947283378, 278.836911122056, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 277.480116247201, 277.368756132519, 277.384832941860, 277.308509322704, 277.345442414908, + 277.590676884641, 277.990539450091, 278.008983298761, 277.523442305010, 277.718274275941, + 277.715931444292, 277.879291396559, 277.831199273422, 277.864571039565, 277.936717108059, + 277.383879543378, 277.479777256307, 277.499848020363, 277.547859827789, 277.305533315021, + 277.482950172282, 277.774397519738, 277.898868170053, 277.817079364159, 277.711025079660, + 277.980058933637, 278.099658611097, 278.100938650431, 278.142922246411, 277.996704723186, + 278.305020752925, 278.407688919361, 278.163649151564, 278.023096003471, 278.332110722164, + 278.268480918882, 278.421591670262, 278.546119434891, 278.568382938671, 278.587036101537, + 278.647194694244, 278.632463274801, 278.809178187614, 278.560416104309, 278.581259006153, + 278.321975280033, 278.397446094076, 278.464681382615, 278.596423306474, 278.667946458021, + 278.738020433360, 278.814420875995, 279.011631604617, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 277.428218736626, + 277.508626172290, 277.415642785172, 277.326956949725, 277.422044581352, 277.628551397821, + 278.032568055647, 277.613158572540, 277.713901836099, 277.885738420719, 277.917749048996, + 278.013884830796, 277.837463066963, 278.076080916673, 277.808832386222, 277.917564486129, + 277.577955670404, 277.241692902309, 277.577689403392, 277.226372942221, 277.416783611213, + 277.772320420235, 277.599211176025, 277.836487250781, 277.809253831983, 277.951052110206, + 278.127684219100, 277.805451324327, 278.205782665344, 277.865170697282, 278.375832904428, + 278.485020997838, 278.294257990030, 277.778871781181, 278.041861178526, 278.230259905805, + 278.579538089333, 278.512225093511, 278.620858449128, 278.484717004610, 278.559119647309, + 278.617542855681, 278.820763331162, 278.736385000030, 278.489854683578, 278.188909713201, + 278.004895490409, 278.007836877641, 278.638253545765, 278.730478954238, 278.787710783790, + 278.859125519494, 279.227392202470, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 277.393891145112, 277.465694686045, + 277.467507921517, 277.411878635866, 277.504059151580, 277.630651160882, 277.879970074861, + 277.995167439470, 277.902552985162, 277.839877260391, 277.886479575329, 277.964201298207, + 277.748472501319, 278.029116825528, 278.009583787838, 277.934526840383, 277.918798670404, + 277.415532843179, 277.226805056122, 277.387098345780, 277.370489382575, 277.592402088486, + 277.700296833394, 277.892605230371, 277.891485508185, 278.129626663091, 278.237884596150, + 278.280404041963, 278.283057722739, 278.176984809500, 278.428645957507, 278.109976506484, + 278.299865428307, 277.995343116520, 277.977547389843, 278.172188036825, 278.514038655551, + 278.675018218984, 278.625249773115, 278.608351762487, 278.536197132141, 278.726854763747, + 278.805234471385, 278.674105241850, 278.663153403020, 278.298350908914, 278.124861199903, + 278.252964651486, 278.482059693182, 278.696680548966, 278.654309837275, 278.837647755382, + 278.841089485443, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 277.328655950263, 277.427619472960, 277.487446231366, + 277.482177271494, 277.494902394691, 277.591252248805, 277.971747475921, 278.009447854320, + 277.958400013211, 277.920394743774, 277.910344201103, 277.904280958818, 277.937158186883, + 278.076707899491, 278.062378531395, 277.668974757625, 277.800233651596, 277.541009600309, + 277.635857852503, 277.317816179233, 277.324195107430, 277.304573477618, 277.583966858675, + 277.801468375244, 277.858184963214, 278.015052891651, 278.279565568836, 278.150440976593, + 278.333103904681, 278.001182976533, 278.378488809734, 278.398697539971, 278.106032442229, + 277.965961371387, 278.143415892015, 278.377058446346, 278.574510298617, 278.436449113920, + 278.556672883167, 278.474960861679, 277.671139137360, 278.608670196079, 278.823152806552, + 278.860633331916, 278.712151986816, 278.295366943143, 277.973512496151, 278.147084138199, + 278.272905044223, 278.608690016513, 278.742172545861, 278.836415342435, 278.950088390739, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 277.310255947307, 277.438715269565, 277.535027802511, 277.514844555789, + 277.462658101701, 277.525339149085, 277.905885035111, 278.029200074722, 278.012440418427, + 277.996696426728, 277.957260620693, 277.882273913448, 277.923722117905, 278.057432597146, + 278.044128097293, 277.761271445925, 277.825323905342, 277.691879001328, 277.446628829196, + 277.285529192993, 277.207992853587, 277.564191085190, 277.712353241969, 277.873266532172, + 278.065423477158, 278.272705886866, 278.158741722804, 278.295227598450, 278.196699266996, + 278.353184502646, 278.349997851807, 278.141054038599, 277.886475692701, 277.859485979835, + 277.988073922406, 278.056957014442, 278.165448109257, 278.437202004743, 278.532793916627, + 278.729865755553, 278.336824160806, 278.305882985596, 278.713096825648, 278.851216364801, + 278.766735587507, 278.187401602110, 277.936089073750, 278.098752788839, 278.239953058972, + 278.622711192950, 278.843801280644, 278.884179584854, 278.970925282742, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 277.333993153785, 277.421151644708, 277.494771266272, 277.504859778772, 277.471450172707, + 277.495380050697, 277.897156708496, 278.087047727013, 278.045437799738, 278.056224065926, + 278.016178427298, 277.909517544432, 277.875464078132, 277.670207024597, 277.846114070057, + 277.728674807606, 277.481683080213, 277.678434290214, 277.452220611572, 277.118933743421, + 277.289809580767, 277.553585984918, 277.846040916297, 277.958533555517, 277.851453386475, + 277.929222688602, 278.241588928175, 278.028359727517, 278.357330703968, 278.540247369890, + 278.402603488606, 278.262877702620, 278.294646895428, 278.106029411922, 277.786973188420, + 277.901937357612, 278.009410152606, 278.354845055124, 278.644262693781, 278.840216526960, + 278.726204045146, 278.600937232653, 278.803160024776, 278.814239641429, 278.406107089989, + 278.204915060477, 278.086114594041, 277.967943887986, 278.030839062421, 278.631386341730, + 278.299910112812, 278.884560848832, 278.886180066033, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 277.403818020342, + 277.385736612011, 277.419079763626, 277.484883608931, 277.520716730724, 277.513550730617, + 277.891587970187, 278.087015712643, 278.064211437361, 278.083756882686, 278.081608204113, + 278.004930191931, 277.667983116988, 277.465515703008, 277.770465817560, 277.486273012311, + 277.812487190729, 277.521348154187, 277.263007792215, 277.559643310698, 277.428266858300, + 277.713431147430, 277.934927582205, 278.100297973144, 278.141264584283, 278.086993250781, + 278.379658327306, 278.359962783622, 278.333521305086, 278.570844647226, 278.406928088404, + 278.423636196882, 278.392152949565, 278.201452070097, 277.856477990354, 277.873435248789, + 278.096769778375, 278.407680402316, 278.908043981651, 278.827575506572, 278.712139062362, + 278.769591044403, 278.756261553376, 278.826156376636, 278.419163229658, 278.090389246096, + 278.124356160438, 278.035593626588, 278.254910218263, 277.366924718560, 278.253233151469, + 278.902280750162, 279.023193013234, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 277.489905843838, 277.288144403828, + 277.451382178926, 277.543372549140, 277.562640697184, 277.535439380058, 277.787699174599, + 277.995109516110, 278.012353528589, 278.018214990669, 278.026842232206, 278.025758889394, + 278.001468911932, 277.958981418954, 277.934824068020, 277.751018859661, 277.513289938194, + 277.478190521822, 277.696713037172, 277.504466132445, 277.486066884529, 277.853056781128, + 278.077295875773, 278.234774297493, 278.327662456752, 278.433621081338, 278.296684198791, + 278.342578057961, 278.285379040344, 277.983925074627, 278.248926266098, 278.525007446921, + 278.445876128392, 278.104398493173, 277.910536085917, 277.940945008878, 278.081826796893, + 278.529637105590, 278.698715957456, 278.794762804276, 278.861716433298, 278.335244079482, + 278.692137237630, 278.680804581213, 278.556629862749, 278.398770705898, 278.455259276313, + 278.292491405216, 278.409341863253, 278.567127873446, 278.775114227671, 278.952795140027, + 279.084767747687, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 277.524648375830, 277.496311267119, 277.564912458774, + 277.619013556894, 277.606746819707, 277.595920519719, 277.854151971529, 278.023987432708, + 278.002073841870, 277.986021680999, 278.024941876269, 278.000914649286, 277.592433020840, + 277.681860660305, 277.885631704720, 277.778259318705, 277.871014021210, 277.876428015559, + 277.788723284443, 277.787820645805, 277.938530551964, 277.864376078717, 278.173275923391, + 278.289334853041, 278.451226379450, 278.501430038586, 278.374869508469, 278.453566275875, + 278.262940769041, 278.201339865362, 278.504357434437, 278.550458514972, 278.415280015529, + 278.309083469218, 278.099364666955, 278.034272070086, 278.181290664566, 278.418559586295, + 278.627322595506, 278.729885168807, 278.788171788983, 278.676468137618, 278.430465953748, + 278.583736392926, 278.738818934276, 278.497103463576, 278.513281650723, 278.121679354076, + 278.516294602332, 278.829577561129, 278.956682360007, 279.057955060579, 279.348107461088, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 277.474572686648, 277.620526101819, 277.579876191216, 277.360462826964, + 277.549474136816, 277.588274409193, 277.894949427885, 278.083728110620, 277.555347984217, + 277.733247247895, 278.015445953589, 277.664549184972, 277.226566090387, 277.319835583899, + 277.669759532369, 277.815087621214, 277.874161852679, 278.107783063761, 278.140316595456, + 278.161088443851, 278.102908173169, 278.119213950167, 278.224356967513, 278.368545269317, + 278.424386685907, 278.174769159603, 278.434721663051, 278.475700763337, 278.510069020504, + 278.551175436030, 278.571361830045, 278.638092447369, 278.646605205673, 278.513270253124, + 278.141327144780, 278.115950680075, 278.337373363097, 278.274464616686, 278.499148651879, + 278.595423351542, 278.569133302757, 278.443504364184, 278.470116786663, 278.405474202063, + 278.476174607142, 278.351734796539, 278.057044240619, 278.525864307774, 278.636236054564, + 278.673533956426, 278.958480628853, 279.107513277297, 279.177226197697, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 277.580570122543, 277.634318472725, 277.659616485035, 277.618057346549, 277.522030659488, + 277.362267071782, 277.372186333198, 278.055229170801, 277.784391394722, 277.537574683026, + 277.784340466299, 277.547947537627, 277.451990151210, 277.480643933265, 277.666856164943, + 277.711808172746, 277.673179528355, 278.161015825933, 277.956039470577, 278.147107822033, + 277.923934558538, 278.104047544295, 277.992356939665, 278.206672410603, 278.508947854374, + 278.256305068195, 278.356204246512, 278.556714187128, 278.604795250140, 278.664440436865, + 278.766423700238, 278.736535640997, 278.720042846867, 278.499145050840, 278.185061618328, + 278.500779492250, 278.288933571022, 278.296811610179, 278.411719697789, 278.517980608444, + 278.463145591579, 278.387209307015, 278.498542676419, 278.586457379716, 278.312529862807, + 278.273753392221, 278.452376606509, 278.515187531602, 278.424686213262, 278.745884182673, + 279.143006916710, 278.919075152226, 279.321139034238, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 277.662378493687, + 277.678435934163, 277.662375895032, 277.591158494953, 277.510569010252, 277.571350359624, + 277.754121208130, 277.990973977522, 277.757628494100, 277.561287021943, 277.486634316690, + 277.525042945477, 277.532619439937, 277.572471674363, 277.443489464657, 277.644319445620, + 277.665981899947, 278.128702193914, 278.134993079919, 277.939643867877, 277.829674444778, + 277.920407262541, 278.225109521812, 278.454420846245, 278.335636048648, 278.439755866968, + 278.556282205556, 278.641783528936, 278.681789272875, 278.705946366072, 278.807551296203, + 278.775139246657, 278.816740548483, 278.723779732785, 278.140623274423, 278.551611396458, + 278.438468292334, 278.371046387243, 278.432387336449, 278.271114366293, 278.280713350360, + 278.328592293660, 278.509010393596, 278.315046309223, 278.168349319322, 278.279893722304, + 278.388489929202, 278.028546414610, 278.067008312878, 278.735603677916, 278.875197099938, + 278.916380807791, 279.081185555734, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 277.675564771386, 277.635443490043, + 277.555593388636, 277.474215655524, 277.508785537502, 277.559272826965, 277.898963108355, + 278.160478537993, 277.698446328836, 277.535506294291, 277.650670399939, 277.713715654254, + 277.734628640441, 277.634344419146, 277.955083825013, 277.839312734512, 278.032298048669, + 277.878980044522, 277.940977547635, 278.228734022884, 278.183322722407, 278.317956053497, + 278.223938712345, 278.281454807630, 278.286552318883, 278.286369796342, 278.414024043537, + 278.659360323843, 278.716814326172, 278.768624030203, 278.839142757595, 278.825723621249, + 278.854881582904, 278.492476448520, 278.560515417031, 278.575788272122, 278.498507193087, + 278.406864865871, 278.466947148140, 278.325092661631, 278.469051212641, 278.408787619500, + 278.661902048190, 278.661367318075, 278.459305901808, 278.222284106910, 278.377818887784, + 277.959327267209, 278.623834307258, 278.738685964726, 278.800554549259, 278.851954436327, + 278.995254298110, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 277.584969222118, 277.627926693726, 277.432600717237, + 277.459047042982, 277.597393070604, 277.234297430406, 277.627802486716, 277.768761653507, + 277.858521156621, 277.718058564950, 277.536424253963, 277.886264022321, 277.953425182639, + 277.898146408245, 277.845543290783, 278.043517097872, 278.101299101003, 278.285342963779, + 278.272056517909, 277.993274994819, 277.857694108392, 278.387036994248, 278.124588570184, + 278.166963674206, 278.394923902234, 278.402876708228, 277.959213287923, 278.570898673058, + 278.714369994443, 278.790925545959, 278.865460063705, 278.887653108598, 278.925165577904, + 278.445683950808, 278.454662353423, 278.661881572607, 278.503970146357, 278.416849170500, + 278.313604733026, 278.551157387306, 278.536725681615, 278.621164456571, 278.693420303848, + 278.659085456184, 278.410157301715, 278.248100222314, 278.068519937287, 277.489258886793, + 278.582901560003, 278.758730417454, 278.753965383538, 278.760787016072, 279.095432709613, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 277.617881541072, 277.711309115784, 277.528121492641, 277.692656014265, + 277.729855515134, 277.324286569399, 277.806867446539, 277.771307124788, 277.941974315568, + 277.793422663721, 277.560140843400, 277.640329086171, 277.719016393704, 277.775996718354, + 277.776543735559, 278.069109429862, 278.047555848040, 278.042547866743, 277.879970814221, + 278.078945404616, 278.172068463404, 278.338754643149, 278.107330216076, 278.112910048865, + 278.445453513808, 278.413972889685, 278.281435948761, 278.688102249953, 278.748755950831, + 278.825775954851, 278.864385587829, 278.887954649503, 278.923518570963, 278.497911197741, + 278.577311671993, 278.567434824410, 278.538279003744, 278.579915443113, 278.528959489854, + 278.497061723077, 278.590410175821, 278.685518588178, 278.714343026087, 278.633658175898, + 278.394357807741, 278.239312017157, 278.085722164932, 278.380059590956, 278.739705486505, + 278.694694263682, 278.672923745762, 278.696715687286, 278.853484672915, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 277.864490745271, 277.943292827263, 277.719654098130, 277.620485639589, 277.472319039130, + 277.693129006556, 278.133689973093, 277.965457344363, 278.104287602920, 277.823621279948, + 277.618839688350, 277.615190026184, 277.755976640115, 277.813120706528, 277.967931066943, + 277.982623081629, 277.997140146694, 277.975617671251, 278.039568336506, 277.889611169291, + 278.218105661708, 278.124968954386, 278.376454955636, 278.278665136291, 278.301183298592, + 278.397428714062, 278.196778796572, 278.746656377329, 278.846907930532, 278.786561698973, + 278.841304821452, 278.874397654021, 278.909276839009, 278.143937356126, 278.097256838341, + 278.545815137404, 278.494309833488, 278.700417405390, 278.612579318198, 278.560830208376, + 278.548054206682, 278.619008303868, 278.609079484424, 278.483923041726, 278.208681314237, + 278.090402297370, 278.747716499947, 278.515614144343, 278.526325760542, 278.605377647849, + 278.717274877437, 278.819420463325, 278.599577926182, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 278.068675398310, + 277.997973826578, 277.749167591392, 277.971702730095, 277.895766091276, 277.766323744104, + 278.114006780512, 278.215465587629, 277.865744497808, 277.621846139857, 277.619176720160, + 277.665176866961, 277.892488116900, 277.825831734535, 277.991463449834, 277.928833353682, + 277.746440198884, 277.792686927302, 277.910135077567, 277.533121937113, 278.131357931757, + 278.388181942261, 278.402417692803, 278.227304284300, 278.415814342073, 278.378254025897, + 278.601248279164, 278.758242092388, 278.847426423313, 278.280248973563, 278.725834255314, + 278.842186363034, 278.868778923155, 278.494225795144, 278.020128379151, 278.679498884784, + 278.912318616850, 278.814308937895, 278.701152379232, 278.573422817796, 278.532102069194, + 278.542072630317, 278.495785291661, 278.388540928046, 277.931685199925, 278.182962322534, + 278.499946233316, 278.539211829192, 278.586336069633, 278.553089371418, 278.596056981041, + 278.533478404021, 278.457299600740, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 278.084632811174, 277.820012443785, + 277.847308696263, 277.849503278643, 277.798568623574, 277.797575835420, 278.095663099731, + 278.176160746854, 278.055153965908, 277.658857926577, 277.600990658349, 277.654026836536, + 277.704990323093, 277.793048321917, 277.910121578336, 277.820873697740, 277.745501713345, + 277.917800418041, 277.944391515021, 278.049145512055, 278.043694650275, 278.359223099294, + 278.070771695770, 278.214994954607, 278.330759821265, 278.205028068094, 278.559361787443, + 278.733217829340, 278.744268100279, 278.596208016795, 278.640483841563, 278.694916381717, + 278.907613386036, 278.818024141397, 278.832740735832, 278.864929258857, 279.066035941021, + 278.954370093400, 278.808689512194, 278.608053707239, 278.495744514278, 278.455081259502, + 278.372791655716, 278.141900258419, 278.157538472382, 278.129509127672, 278.226019505944, + 278.517786152116, 278.439174014992, 278.709414812548, 278.622228174999, 278.479038464346, + 278.411419063810, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 278.059317675418, 277.775909541424, 277.981685147100, + 277.820433102725, 277.757691649352, 277.791125337952, 278.114244862593, 278.017847302545, + 277.739587601083, 277.595204498445, 277.444481155752, 277.508867798333, 277.654580807842, + 277.801555631030, 277.946216001618, 277.717518898982, 277.766353468943, 277.682654248428, + 277.981754049258, 278.135151366502, 278.237042418896, 278.307870507241, 278.340706625625, + 278.321035354200, 278.320273358697, 278.158571181206, 278.405855009476, 278.698752162175, + 278.489714021957, 278.447399946515, 278.208281541154, 278.274999857765, 278.742819250719, + 278.267292067544, 278.472633364801, 278.954199073712, 278.507525942737, 278.740647038251, + 278.712056316088, 278.578495872832, 278.539513494423, 278.291124747294, 278.285971725264, + 278.217669844021, 278.204961536595, 278.111539468452, 277.987196715585, 278.301219174750, + 278.308770143463, 278.450474529455, 278.387913656980, 278.345354979068, 278.308192795967, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 278.078766967738, 278.054694472586, 277.996546131957, 277.478107514078, + 277.498293431515, 277.439272646630, 278.170812997380, 278.031766350648, 277.926719630068, + 277.660631490707, 277.405466505229, 277.448131221500, 277.639980374018, 277.771980499881, + 277.699632610951, 277.872363280302, 277.869398539167, 277.927769742648, 277.856196077938, + 278.052767006803, 278.215030316361, 277.961917700862, 278.291818910231, 278.337805197442, + 278.117323423329, 278.455733028684, 278.701018948664, 278.676322213600, 278.350822146256, + 278.266243351366, 278.328051517560, 278.614915559626, 278.558300997375, 278.813314535584, + 278.881108562772, 278.123693523522, 278.802821050470, 278.781438747715, 278.621781876457, + 278.564387365762, 278.583461368131, 278.350036130682, 278.383351889379, 278.383019058144, + 278.217555758541, 278.167422809838, 278.238477919987, 278.226153636247, 278.084761209123, + 278.088484041540, 278.083492218972, 278.205027655804, 278.230216899737, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 278.045557859900, 277.849040307617, 277.906197759880, 277.593465692124, 277.699758481137, + 277.871410461793, 278.058125626538, 278.204525836660, 277.952696685466, 277.738482364071, + 277.391817333672, 277.414211293355, 277.713291394110, 277.795254016927, 277.757654239367, + 277.707136929518, 277.820516499087, 277.833903133206, 277.958888974124, 277.727592050621, + 277.979297315556, 278.041516057377, 278.241728050372, 278.352662301885, 278.378421828891, + 278.668011089711, 278.720413573120, 278.293463018845, 278.471858803908, 278.456120759094, + 278.451834597551, 278.400966141086, 278.228702595541, 278.199778173421, 278.229599019782, + 278.763504882934, 278.797467161442, 278.406340958912, 278.639263357618, 278.738466024170, + 278.356147734832, 278.377301134964, 278.324739430270, 278.365219303220, 278.277074392752, + 278.246691447173, 278.325438536989, 278.410510194260, 278.004569449865, 277.972537483973, + 277.956821946510, 278.172942728027, 278.345344049598, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 277.996969175390, + 277.862497775047, 277.649762377272, 277.559149409384, 277.580356760509, 277.718009367429, + 278.068756822897, 277.878009666029, 277.969360198421, 277.610090666218, 277.828347857057, + 277.544325721216, 277.732583265551, 278.116016214294, 277.972299696618, 277.687262934771, + 277.957182102556, 277.863999567218, 278.051999720662, 278.158060596001, 278.155762387840, + 278.127890904723, 278.223511374158, 278.356916537157, 278.639719890896, 278.714037786705, + 278.558389050067, 278.315362526995, 278.636748281842, 278.421360309160, 278.615746331257, + 278.298886265158, 278.533659911339, 278.333792298766, 278.643055170670, 278.858025832867, + 279.020835079354, 278.870273814320, 278.740600676717, 278.482283444293, 278.534910048501, + 278.346778954967, 278.353117018506, 278.419908994646, 278.281125729824, 278.285144148911, + 278.365767158905, 278.333351670498, 277.972629892376, 277.989686782478, 278.095826308077, + 278.302698360631, 278.382668003966, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 277.875713517719, 277.634128413762, + 277.832973471346, 277.448621515103, 277.593144967346, 277.620070785560, 278.022268231048, + 277.650661530718, 277.728550931249, 277.789574269136, 277.607135652596, 277.558983827518, + 277.867823445271, 277.980868124118, 278.152155038418, 277.872425545108, 278.032213134824, + 278.055596269546, 277.794984263919, 277.846180947964, 278.137493702594, 278.095071965260, + 278.130969913741, 278.103726648322, 278.796162214483, 278.772300848655, 278.550498461136, + 278.394793765962, 278.623206154742, 278.611024899396, 278.578628218960, 278.276590748045, + 278.468413343561, 278.450779339504, 278.554459701664, 278.806252974651, 279.013699273923, + 278.748514001816, 278.788419863602, 278.642315613660, 278.454524896995, 278.491218667764, + 278.463773729676, 278.435969444734, 278.300796479766, 278.136749416946, 278.373140364489, + 278.132948804942, 278.027912210990, 278.148274414281, 278.336173789580, 278.280453796923, + 278.416601405752, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 277.958466871634, 277.914274026264, 277.771935237925, + 277.604840373088, 277.681191841525, 277.734814857704, 277.836253334677, 277.790546207519, + 277.679698274453, 277.762322999726, 277.735323729530, 277.547356221084, 277.724659181931, + 278.062792028695, 277.919073079645, 277.773076074541, 278.020996741625, 278.022325061818, + 277.919346621275, 277.950865675377, 278.008524131751, 278.023480753982, 277.924336723588, + 278.332258375312, 278.736366682898, 278.523695501482, 278.502092576710, 278.225439092820, + 278.256232776798, 278.449499552010, 278.137549943998, 278.422050300432, 278.431511965178, + 278.274661992411, 278.431568551580, 278.753808621318, 278.761885574921, 278.415607975957, + 278.555121959527, 278.654993170504, 278.544139116180, 278.520795378936, 278.533770309691, + 278.547957275597, 278.407434870158, 278.298762571130, 278.487164079960, 278.392357298054, + 278.268034972770, 278.187199824354, 278.276694644393, 278.256517908057, 278.378067854440, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 277.976299775529, 278.042031136275, 277.464188145920, 277.771621894762, + 277.784361473567, 277.859883815950, 277.814022087487, 277.852386883815, 277.843778414429, + 277.700529593730, 277.720782097285, 277.895752429155, 278.233578251075, 278.276392982912, + 277.953661711230, 277.591545218148, 277.985804556808, 277.938997069968, 277.916409711425, + 277.888611552732, 277.925456871836, 277.977042887254, 278.082218353152, 278.472003946117, + 278.646240659087, 278.404855822350, 278.163989456392, 277.954560473176, 278.556236453466, + 278.296451614769, 278.277688882445, 278.374637286269, 278.332791290590, 278.203289210287, + 278.562584129166, 278.329198281083, 278.823530241748, 278.763160870026, 278.543114999088, + 278.556718492736, 278.657498589218, 278.499789731658, 278.592487422433, 278.649244580966, + 278.669257850905, 278.201148346028, 278.586350077861, 278.457878133903, 278.245990792454, + 278.112034510986, 278.055946777769, 278.159436781041, 278.294828313829, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 278.055463728037, 277.938769906207, 277.908616747506, 277.697182984726, 277.767438599440, + 277.618954673948, 277.849284086165, 277.888500733412, 277.803726801356, 277.887984809149, + 277.963831684250, 278.063254030007, 278.264222060266, 278.247209209771, 278.010146150856, + 277.737515908542, 277.889412006510, 277.981344866797, 277.913904542254, 277.836061245756, + 277.808859499689, 277.970758433246, 278.239527080226, 278.275624726729, 278.397363141215, + 278.343527616747, 278.259845839951, 278.368292580968, 278.583172394714, 278.290379278148, + 278.385955212872, 278.352217326569, 278.420090515247, 278.134725529508, 278.418675419067, + 278.363034465810, 278.431779148022, 278.438454682849, 278.264539348808, 278.429698158323, + 278.607118714023, 278.464672697985, 278.443469155020, 278.604002661624, 278.807929770258, + 278.629594459038, 278.763699668360, 278.301897413578, 278.088831652212, 277.971815866599, + 277.908876996953, 277.949580119805, 277.929385688745, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 278.164247814763, + 278.017634128271, 278.126496201983, 278.041275562602, 277.963103307992, 277.882098915321, + 277.832817052899, 278.194630071008, 277.940734107132, 278.028855985157, 277.589337692257, + 278.007707016965, 278.159356263938, 278.097452374726, 277.964902829032, 277.890310856301, + 277.995095341973, 277.660207908446, 277.786361546086, 277.815119589775, 277.914655235766, + 278.276761510933, 278.028707200239, 278.334143087463, 278.232784850170, 278.182589303626, + 278.197293256951, 278.305926587915, 278.318792747211, 278.484167044288, 278.357400768639, + 278.328509261854, 278.448253183213, 278.163374893923, 278.104866385859, 278.044914087322, + 278.173224770928, 278.338413210359, 278.380896912261, 278.730673471804, 278.450424564609, + 278.503155223128, 278.491430165703, 278.474964969620, 278.246765035551, 278.931615118388, + 278.559599207653, 278.156636961710, 278.008740658705, 277.932135871154, 277.822627679854, + 277.736249285180, 277.878138412578, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 278.082480645173, 278.043241069493, + 277.697041095551, 277.989863518743, 277.717897740312, 277.701839125518, 277.861708621096, + 278.280953208980, 277.804372502188, 277.704826013697, 277.596403430525, 277.712365023901, + 278.034041843709, 277.947346670070, 277.846022907482, 277.820870191912, 277.874461715493, + 277.769161099427, 277.750268832592, 277.850701911325, 277.878534019060, 278.027904999404, + 278.090516114696, 278.109187477565, 278.190939004850, 278.278788556568, 278.380627825278, + 278.407390272678, 278.511725032938, 278.506674787575, 278.442874478011, 278.405398330435, + 278.395518040659, 278.357905587250, 278.210737031126, 278.122068999623, 278.170689655080, + 278.152435924905, 278.236404166308, 278.676963499355, 278.364031374287, 278.396399598455, + 278.375591815009, 278.342047071761, 278.407524619964, 278.529076426794, 278.148144221518, + 278.042521318864, 277.942078734795, 277.821562712711, 277.728530388654, 277.736969229001, + 277.907471093473, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 277.819603551272, 277.828647314803, 277.754535652466, + 277.824122707543, 277.762454320427, 277.748628587305, 278.031167797444, 277.857054897891, + 277.780437750936, 277.673341198976, 277.580777138276, 277.728655867446, 277.897137734936, + 277.750051876006, 277.442585133617, 277.536109280911, 277.666042104756, 277.637084619762, + 277.954517294964, 277.933011800326, 277.638355177335, 277.771459546012, 277.907366166404, + 278.038032680944, 278.223370782900, 278.077760957702, 278.513395348027, 278.519194273139, + 278.542309039934, 278.482080267916, 278.340394482155, 278.341759181533, 278.301704207586, + 278.255804929780, 278.195762993763, 278.152065600453, 278.109495057418, 278.225701450697, + 278.493902456915, 278.637437629165, 278.359832350456, 278.305034727926, 278.296015493113, + 278.356150546679, 278.036917652359, 277.636846916859, 278.031252957091, 278.053317552121, + 277.856967881711, 277.828489726312, 277.819981618468, 277.859938918796, 277.956551311373, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 277.884653219230, 277.884698802114, 277.844277877433, 277.934802186492, + 277.864463150351, 277.803952962222, 277.862512817816, 278.030331030810, 277.751952165263, + 277.680464702272, 277.585446567641, 277.958894193742, 277.524642689383, 277.589772555767, + 277.547487191290, 277.553287779719, 277.547903182893, 277.780326455565, 278.007585878669, + 277.822118711121, 277.682976359764, 277.843136947080, 277.894178961775, 277.954909292289, + 278.221226702389, 278.236512222249, 278.471628587781, 278.517076530718, 278.553486136797, + 278.548068978131, 278.394215898281, 278.289120256620, 278.234843510822, 278.157199428167, + 278.206792433064, 278.242705298579, 278.226263767876, 278.437906673139, 278.580162411397, + 278.567277080119, 278.296662334949, 278.275257848275, 278.404346162035, 278.002008395328, + 277.160000000000, 277.422452606158, 278.124308422995, 278.212576318432, 278.016005178567, + 277.861666847072, 277.831807919342, 277.987901581353, 278.061939469824, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 277.932091130649, 277.951064758320, 277.839412458507, 277.841315615141, 277.806577252520, + 277.842248927079, 277.988730868827, 277.881229491595, 277.827771128070, 277.852117171922, + 277.977131550724, 277.890734880932, 277.363447936035, 277.674357318546, 277.874045802482, + 277.619616361043, 277.959695749966, 278.034434774544, 278.011503092349, 277.792532523158, + 277.883473108928, 277.906659808602, 277.859039495732, 277.950830457718, 278.150472303852, + 278.280666827875, 278.497788485655, 278.510726053483, 278.601565268380, 278.496480151954, + 278.430095137542, 278.316738350851, 278.171640925745, 278.099215960220, 278.139092052815, + 278.217292849195, 278.260283772674, 278.395024109814, 278.411196388457, 278.432581257165, + 278.381536736126, 278.363111710685, 278.429680484566, 277.793989872273, 277.160000000000, + 277.160000000000, 278.256273592222, 278.264019723457, 278.140777061859, 277.960057434051, + 277.915191160621, 277.936547331889, 278.099249337367, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 277.917465588048, + 277.806536213298, 277.829468329766, 277.894769654517, 277.878874487338, 278.213198285885, + 277.882881751217, 277.892374439465, 277.858339532912, 277.923051748953, 277.681370662730, + 277.510761769121, 277.346031782172, 277.635591850736, 277.505752171465, 277.838565919297, + 278.145230449989, 278.110256581579, 277.857261961129, 277.892771986443, 277.933046869362, + 277.858290703051, 277.761688955039, 277.868954215183, 278.100209314485, 278.316913494119, + 278.444218906419, 278.557360529658, 278.561171208143, 278.461978486569, 278.557371359122, + 278.268552022994, 278.168263392393, 278.004287261093, 278.100378738598, 278.174276275285, + 278.571381129483, 278.432024829889, 278.351912980210, 278.426658874171, 278.422291931680, + 278.425551948989, 278.455607158869, 278.142898669707, 277.160000000000, 277.160000000000, + 278.358691525700, 278.271973931751, 278.175217065772, 278.113413453687, 278.060115945570, + 278.072147299547, 278.221325526498, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 277.947472331137, 277.986181501038, + 277.984568003653, 278.110290656444, 277.897470824458, 277.874164089902, 277.898939913517, + 277.902875083266, 277.889547948396, 277.798750008214, 277.895056427821, 277.559027635660, + 277.397787394390, 277.415750853834, 277.795000812736, 278.022111292969, 278.209968407002, + 278.081682250882, 278.091845240573, 277.941999949457, 277.909072268308, 277.784844781870, + 277.659181293741, 277.950679245143, 278.025258482602, 278.291405558634, 278.461051894477, + 278.543413260710, 278.637341256470, 278.536026584681, 278.345094023061, 278.314548843661, + 278.141679812436, 277.941455855832, 278.086647453443, 278.112323026882, 278.109913998848, + 278.098115462881, 278.381213778877, 278.424512212838, 278.401413477507, 278.394564786766, + 277.894149214730, 277.375874807682, 277.160000000000, 278.149965464308, 278.077148773966, + 278.225807651780, 278.284892879974, 278.351353534523, 278.240233215773, 278.349246487147, + 278.349466760844, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, 288.000000000000, + 288.000000000000, 288.000000000000, 279.240455299468, 279.223818551588, 279.285849037670, + 279.376293488344, 279.461192356391, 279.551808319930, 279.628646083334, 279.652829397263, + 279.616525840893, 279.502069589155, 279.291108765522, 279.053106080215, 278.902689297837, + 278.875704607117, 278.947740010309, 279.107704342158, 279.293681458493, 279.389614320839, + 279.411224941796, 279.444212582782, 279.386698602138, 279.136632845345, 278.940936666674, + 279.114221831018, 279.555753115819, 279.953434278201, 280.226196904095, 280.405256334886, + 280.410401720828, 280.251580808077, 280.098019623178, 279.974301676744, 279.757509415710, + 279.521564884780, 279.499039528544, 279.701996418489, 279.925134655518, 280.065775204607, + 280.157363074379, 280.210875088178, 280.228483742292, 280.242147600516, 280.253696133409, + 280.268103214047, 280.320185953974, 280.334307179838, 280.179831259660, 279.974644702474, + 279.996541178206, 280.236144650250, 280.430297213138, 280.482837320704, 280.457167561948, + 280.368438239921, 280.237631095078, 280.139468565491, 280.058914690017, 279.931995170108, + 279.790325543831, 279.694221168621, 279.601661392615, 279.495094732655, 279.400305289408, + 279.315406421361, 279.170992589248, 279.122968987120, 279.185857037526, 279.307459658628, + 279.447414156257, 279.576963540092, 279.657803270340, 279.678727839839, 279.638593829489, + 279.510130693798, 279.301628221226, 279.100500801839, 278.988560072117, 278.974724701028, + 279.039385051036, 279.169048776781, 279.318322140061, 279.420543807447, 279.465423007055, + 279.468796093395, 279.383211173889, 279.191917158746, 279.053391934990, 279.156356824790, + 279.471311615411, 279.820168782296, 280.098305477953, 280.261471383277, 280.248379234602, + 280.089100954212, 279.926106561752, 279.809077617043, 279.659975766627, 279.501440708651, + 279.482574293529, 279.633677127367, 279.825485681103, 279.976645685896, 280.097276400764, + 280.174628702763, 280.192294527831, 280.188521244807, 280.196296494675, 280.219850928100, + 280.263243682879, 280.275020899592, 280.180917507803, 280.066804281795, 280.125290168672, + 280.362949828249, 280.587574510106, 280.668985949904, 280.616788868068, 280.490498228663, + 280.363864563528, 280.257412245478, 280.131064435118, 279.982362781387, 279.855843458162, + 279.757509415710, 279.634477520736, 279.518134627486, 279.422430448960, 279.301399537407, + 279.066598425575, 279.006454581005, 279.065626519341, 279.211698309147, 279.406079555854, + 279.575362753355, 279.659346886123, 279.668951606549, 279.614810712245, 279.477714762361, + 279.291623304116, 279.135260742427, 279.045559514167, 279.027379150504, 279.089638320405, + 279.211583967237, 279.338331974281, 279.433350101348, 279.488062705201, 279.486633431328, + 279.403907059567, 279.254061986738, 279.134288836193, 279.172764888850, 279.399447725084, + 279.708456736394, 279.964353930589, 280.087328654609, 280.053540620255, 279.905525017983, + 279.744302925125, 279.629846673388, 279.535743281599, 279.456733021908, 279.457876441006, + 279.562213433724, 279.709028445943, 279.857215561080, 280.002143931787, 280.100420803284, + 280.113627293870, 280.091559305273, 280.106995463100, 280.164566614698, 280.221223031018, + 280.227511836058, 280.166796281940, 280.117915115488, 280.205157992687, 280.436986214863, + 280.676989883592, 280.785042988379, 280.731302290760, 280.595006734245, 280.462141435025, + 280.330190871084, 280.161879579817, 280.001686564148, 279.887230312410, 279.769572487197, + 279.608579078159, 279.472969573104, 279.366345742189, 279.220731320023, 278.926872611765, + 278.881364531654, 278.941165350494, 279.107361316429, 279.349823336219, 279.555124235315, + 279.648370062780, 279.657231560791, 279.594858048980, 279.449300797769, 279.279102864990, + 279.156814192429, 279.084607276373, 279.061052842948, 279.111248941363, 279.216443498405, + 279.328441399081, 279.431749314611, 279.511274112896, 279.525624022579, 279.454617696576, + 279.326783441388, 279.211183770552, 279.203065494955, 279.353482277333, 279.594915219935, + 279.794384681630, 279.871851325538, 279.829087451263, 279.710686403636, 279.579536233063, + 279.486233234644, 279.434950888086, 279.410081522698, 279.424259919517, 279.498524989950, + 279.624358261716, 279.778090959479, 279.931023263874, 280.032330195982, 280.046737276620, + 280.015807790012, 280.018609166803, 280.078867353282, 280.150102363105, 280.176515344275, + 280.155247749047, 280.155933800506, 280.263815392429, 280.485638697495, 280.723469869937, + 280.847759525920, 280.806825122202, 280.666184573113, 280.512566217259, 280.352087346816, + 280.173428112710, 280.012091677942, 279.876825198616, 279.728295057749, 279.552723055209, + 279.402363443785, 279.254576525332, 279.074545188308, 278.792063500078, 278.765650518908, + 278.830882578465, 279.019032191087, 279.293738629448, 279.517277063162, 279.622357278294, + 279.646254737448, 279.592056672189, 279.448328891536, 279.283562199474, 279.169791999195, + 279.110905915633, 279.105703358736, 279.159043859671, 279.239997931829, 279.325754364200, + 279.426489586758, 279.520307123772, 279.551522465155, 279.502412614884, 279.403907059567, + 279.305458675206, 279.267725844962, 279.333072246429, 279.477371736632, 279.617554918081, + 279.673753966761, 279.623843723122, 279.509902009978, 279.398532989806, 279.334215665527, + 279.320437465393, 279.333072246429, 279.360399962878, 279.425917877209, 279.551751148975, + 279.712973241832, 279.857558586810, 279.950404217590, 279.981390875154, 279.965840375417, + 279.949546653266, 279.977160224490, 280.044278925559, 280.106423753550, 280.144328096658, + 280.197382742819, 280.319728586334, 280.514567200681, 280.716094816753, 280.831294290905, + 280.809912353767, 280.682078098579, 280.512966413944, 280.338595001456, 280.166338914300, + 279.997684597304, 279.819425559882, 279.641966915829, 279.479658574828, 279.323296013139, + 279.126284902505, 278.919611900491, 278.663943390116, 278.635872451253, 278.714768369034, + 278.939335879936, 279.234966887797, 279.462164262625, 279.579536233063, 279.613667293147, + 279.557754099241, 279.422258936095, 279.273099914724, 279.160301620679, 279.104045401044, + 279.120339123194, 279.186371576120, 279.254633696287, 279.324610945102, 279.415912960099, + 279.503327350163, 279.544947805340, 279.525223825895, 279.451873490740, 279.359942595239, + 279.299512895895, 279.299970263534, 279.366460084099, 279.468510238620, 279.518877849899, + 279.450730071642, 279.310718403058, 279.198949186201, 279.159386885400, 279.179282377710, + 279.227706176523, 279.276816026794, 279.339704077199, 279.455246577080, 279.610637232536, + 279.746761276187, 279.834861717709, 279.879798088271, 279.885629525673, 279.875395924743, + 279.895577271828, 279.960923673294, 280.039133539617, 280.106137898776, 280.185090987512, + 280.316469841904, 280.499531239539, 280.676532515953, 280.779268721933, 280.774980900315, + 280.668928778949, 280.494271511687, 280.303091838455, 280.126605100635, 279.943315019181, + 279.733497614647, 279.533456443403, 279.369032777070, 279.193232090709, 278.974724701028, + 278.776684513206, 278.477337393277, 278.425769191944, 278.545142145805, 278.845003804328, + 279.186257234210, 279.442668966999, 279.589884175903, 279.616983208532, 279.523623039157, + 279.377551249352, 279.241884573341, 279.128514569747, 279.069113947591, 279.093354432475, + 279.156013799060, 279.215357250261, 279.294424680907, 279.396417664474, 279.488805927615, + 279.561470211310, 279.584338593276, 279.506586094593, 279.365716861685, 279.260465133688, + 279.228049202252, 279.263152168569, 279.346850446563, 279.384926302536, 279.287735679182, + 279.118681165502, 279.009884838300, 278.999765579281, 279.055793115096, 279.139091196406, + 279.206552923204, 279.259093030770, 279.356112141259, 279.517105550297, 279.681186190900, + 279.784379764520, 279.807991368899, 279.779234378578, 279.764598614120, 279.813822806301, + 279.907468830450, 279.993796972370, 280.053540620255, 280.119458731271, 280.251409295212, + 280.463342025078, 280.675217583990, 280.789616664772, 280.782813321138, 280.675389096854, + 280.489526322429, 280.273134258080, 280.072292693467, 279.874195334690, 279.652486371533, + 279.437866606786, 279.233594784879, 279.015659104747, 278.793149748221, 278.609916837722, + 278.278039444447, 278.221211515262, 278.401014168466, 278.772568204452, 279.153212422270, + 279.444384095647, 279.618984191954, 279.628074373785, 279.498410648040, 279.344049069773, + 279.206610094159, 279.080376625709, 279.029322962971, 279.074373675443, 279.126685099190, + 279.162645629830, 279.242742137665, 279.351767148686, 279.452445200289, 279.569245461179, + 279.648770259464, 279.570846247916, 279.375721778795, 279.219645071880, 279.156013799060, + 279.166704767629, 279.232965904375, 279.254862380107, 279.131601801312, 278.940307786170, + 278.834598690534, 278.852035831783, 278.945624684977, 279.059509227166, 279.135375084336, + 279.175966462325, 279.264581442442, 279.446042053339, 279.658031954160, 279.793812972081, + 279.790782911470, 279.698680503104, 279.650028020472, 279.710629232681, 279.826171732562, + 279.931480631514, 280.008375565873, 280.071149274369, 280.185319671332, 280.405427847751, + 280.652120518204, 280.782241611589, 280.760745332541, 280.639542908123, 280.451907834096, + 280.226482758870, 280.002544128472, 279.780835165315, 279.552780226163, 279.330785408232, + 279.096041467356, 278.847748010164, 278.625009969819, 278.440576469267, 278.096350149730, + 278.070394536199, 278.305481502805, 278.723172499407, 279.140120273594, 279.458219466736, + 279.619441559593, 279.587482995796, 279.450272704003, 279.311976164066, 279.151897490307, + 278.991590132728, 278.964262416279, 279.057565414699, 279.110848744678, 279.115708275846, + 279.175451923731, 279.273671624273, 279.378923352270, 279.532427366214, 279.652257687714, + 279.582966490358, 279.372234350545, 279.184370592698, 279.073115914435, 279.055564431277, + 279.140348957414, 279.183455857419, 279.030009014430, 278.774740700739, 278.632785219688, + 278.674634358685, 278.827795346899, 278.977697590684, 279.039842418675, 279.051848319207, + 279.138576657812, 279.348279720436, 279.602690469803, 279.771058932025, 279.762711972608, + 279.633848640231, 279.556153312503, 279.607664342881, 279.721663226979, 279.841322035614, + 279.946287908836, 280.009804839746, 280.088243389888, 280.289885347869, 280.563848563817, + 280.727185982006, 280.709577327893, 280.579627747373, 280.394736879182, 280.175657779951, + 279.933024247296, 279.673182257212, 279.415970131054, 279.180025600124, 278.938421144658, + 278.683210001922, 278.455841114229, 278.261631380386, 277.941131007138, 277.966000372526, + 278.239391878925, 278.690642226061, 279.154870379962, 279.488577243795, 279.591484962640, + 279.499382554274, 279.378065787946, 279.270984589392, 279.083235173455, 278.890283200620, + 278.882622292662, 279.001137682198, 279.046359907535, 279.033553613635, 279.073458940165, + 279.153498277044, 279.279102864990, 279.478858181460, 279.608007368610, 279.522536791014, + 279.321638055446, 279.132745220410, 278.967120964025, 278.916810523700, 279.055735944141, + 279.162588458876, 278.986158892011, 278.647764009875, 278.455212233725, 278.525875533999, + 278.751586463999, 278.936991870785, 278.962775971451, 278.923213670651, 279.010285034985, + 279.265381835811, 279.562499288499, 279.744017070351, 279.719890927377, 279.567816187306, + 279.484632447906, 279.544033070062, 279.658603663709, 279.771058932025, 279.864419101400, + 279.899522067717, 279.941314035759, 280.136266992016, 280.447905867252, 280.660295964757, + 280.667213650302, 280.534005325352, 280.343283019759, 280.121574056603, 279.869335803522, + 279.580336626432, 279.282304438465, 279.009084444932, 278.747527326200, 278.486313233198, + 278.257286387813, 278.072967229170, 277.832734876621, 277.928782080877, 278.259516055054, + 278.741524375934, 279.215242908351, 279.510416548572, 279.531626972845, 279.398304305986, + 279.305801700935, 279.217586917503, 279.013715292280, 278.826308902072, 278.825336995838, + 278.901088511099, 278.911836650623, 278.914523685504, 278.944767120653, 278.984443763364, + 279.143607701844, 279.421115516997, 279.532198682394, 279.369490144709, 279.175623436596, + 279.045273659392, 278.877476906720, 278.808128538409, 278.992847893736, 279.154127157548, + 278.970494050365, 278.596996201912, 278.388550900295, 278.466303398978, 278.711623966514, + 278.898973185767, 278.883880053670, 278.801782562413, 278.914009146910, 279.254004815783, + 279.617497747126, 279.797872109880, 279.722920987987, 279.523508697248, 279.433064246574, + 279.512074506265, 279.634420349781, 279.724636116635, 279.773059915447, 279.762197434013, + 279.783636542106, 279.992196185632, 280.333335273604, 280.578827354005, 280.616388671383, + 280.501589393916, 280.301891248401, 280.061601724898, 279.796328494097, 279.497438741807, + 279.181626386862, 278.861812065073, 278.555661601509, 278.284156736622, 278.068336381822, + 277.909000930477 }; -int main (int argc, char * argv[]) +int main (int argc, char *argv[]) { - grib_handle * h; - size_t len; - const char * grids[] = {"lambert_lam", "mercator_lam", "polar_stereographic_lam"}; - int igrid; + grib_handle *h; + size_t len; + const char *grids[] = { "lambert_lam", "mercator_lam", "polar_stereographic_lam" }; + int igrid; - for (igrid = 0; igrid < 3; igrid++) + for (igrid = 0; igrid < 3; igrid++) { - GRIB_CHECK (((h = grib_handle_new_from_samples (NULL, "regular_ll_pl_grib2")) == NULL), 0); - len = strlen ("lambert_lam"); - GRIB_CHECK (grib_set_string (h, "gridType", "lambert_lam", &len), 0); - GRIB_CHECK (grib_set_long (h, "centre", 85), 0); - len = strlen (grids[igrid]); - GRIB_CHECK (grib_set_string (h, "gridType", grids[igrid], &len), 0); - GRIB_CHECK (grib_set_long (h, "Nx", 64), 0); - GRIB_CHECK (grib_set_long (h, "Ny", 64), 0); - GRIB_CHECK (grib_set_long (h, "iScansNegatively", 0), 0); - GRIB_CHECK (grib_set_long (h, "jScansPositively", 1), 0); - GRIB_CHECK (grib_set_long (h, "jPointsAreConsecutive", 0), 0); - GRIB_CHECK (grib_set_long (h, "Nux", 53), 0); - GRIB_CHECK (grib_set_long (h, "Nuy", 53), 0); - GRIB_CHECK (grib_set_long (h, "Ncx", 8), 0); - GRIB_CHECK (grib_set_long (h, "Ncy", 8), 0); + GRIB_CHECK (((h = grib_handle_new_from_samples (NULL, "regular_ll_pl_grib2")) == NULL), 0); + len = strlen ("lambert_lam"); + GRIB_CHECK (grib_set_string (h, "gridType", "lambert_lam", &len), 0); + GRIB_CHECK (grib_set_long (h, "centre", 85), 0); + len = strlen (grids[igrid]); + GRIB_CHECK (grib_set_string (h, "gridType", grids[igrid], &len), 0); + GRIB_CHECK (grib_set_long (h, "Nx", 64), 0); + GRIB_CHECK (grib_set_long (h, "Ny", 64), 0); + GRIB_CHECK (grib_set_long (h, "iScansNegatively", 0), 0); + GRIB_CHECK (grib_set_long (h, "jScansPositively", 1), 0); + GRIB_CHECK (grib_set_long (h, "jPointsAreConsecutive", 0), 0); + GRIB_CHECK (grib_set_long (h, "Nux", 53), 0); + GRIB_CHECK (grib_set_long (h, "Nuy", 53), 0); + GRIB_CHECK (grib_set_long (h, "Ncx", 8), 0); + GRIB_CHECK (grib_set_long (h, "Ncy", 8), 0); - if (igrid == 0) - { - GRIB_CHECK (grib_set_double (h, "DxInMetres", 2500.00000000000), 0); - GRIB_CHECK (grib_set_double (h, "DyInMetres", 2500.00000000000), 0); - GRIB_CHECK (grib_set_double (h, "latitudeOfFirstGridPointInDegrees", 66.7684949529709), 0); - GRIB_CHECK (grib_set_double (h, "longitudeOfFirstGridPointInDegrees", 25.1580207144963), 0); - GRIB_CHECK (grib_set_double (h, "latitudeOfSouthernPoleInDegrees", 0.000000000000000E+000), 0); - GRIB_CHECK (grib_set_double (h, "longitudeOfSouthernPoleInDegrees", 0.000000000000000E+000), 0); - GRIB_CHECK (grib_set_double (h, "LaDInDegrees", 67.3600000000000), 0); - GRIB_CHECK (grib_set_double (h, "LoVInDegrees", 26.6400000000000), 0); - GRIB_CHECK (grib_set_double (h, "Latin1InDegrees", 67.3600000000000), 0); - GRIB_CHECK (grib_set_double (h, "Latin2InDegrees", 67.3600000000000), 0); - GRIB_CHECK (grib_set_long (h, "projectionCentreFlag", 0), 0); - GRIB_CHECK (grib_set_long (h, "uvRelativeToGrid", 1), 0); - } - else if (igrid == 1) - { - GRIB_CHECK (grib_set_double (h, "latitudeOfFirstGridPointInDegrees", 67.9372009520603), 0); - GRIB_CHECK (grib_set_double (h, "longitudeOfFirstGridPointInDegrees", 25.1580207144963), 0); - GRIB_CHECK (grib_set_double (h, "LaDInDegrees", 0.), 0); - GRIB_CHECK (grib_set_double (h, "latitudeOfLastGridPointInDegrees", 72.9372009520603), 0); - GRIB_CHECK (grib_set_double (h, "longitudeOfLastGridPointInDegrees", 29.1580207144963), 0); - GRIB_CHECK (grib_set_double (h, "orientationOfTheGridInDegrees", 0.), 0); - GRIB_CHECK (grib_set_long (h, "uvRelativeToGrid", 1), 0); - } - else if (igrid == 2) - { - GRIB_CHECK (grib_set_double (h, "DxInMetres", 2500.00000000000), 0); - GRIB_CHECK (grib_set_double (h, "DyInMetres", 2500.00000000000), 0); - GRIB_CHECK (grib_set_double (h, "latitudeOfFirstGridPointInDegrees", 67.9372009520603), 0); - GRIB_CHECK (grib_set_double (h, "longitudeOfFirstGridPointInDegrees", 25.1580207144963), 0); - GRIB_CHECK (grib_set_double (h, "LaDInDegrees", 0.), 0); - GRIB_CHECK (grib_set_double (h, "orientationOfTheGridInDegrees", 0.), 0); - } - + if (igrid == 0) { + GRIB_CHECK (grib_set_double (h, "DxInMetres", 2500.00000000000), 0); + GRIB_CHECK (grib_set_double (h, "DyInMetres", 2500.00000000000), 0); + GRIB_CHECK (grib_set_double (h, "latitudeOfFirstGridPointInDegrees", 66.7684949529709), 0); + GRIB_CHECK (grib_set_double (h, "longitudeOfFirstGridPointInDegrees", 25.1580207144963), 0); + GRIB_CHECK (grib_set_double (h, "latitudeOfSouthernPoleInDegrees", 0.000000000000000E+000), 0); + GRIB_CHECK (grib_set_double (h, "longitudeOfSouthernPoleInDegrees", 0.000000000000000E+000), 0); + GRIB_CHECK (grib_set_double (h, "LaDInDegrees", 67.3600000000000), 0); + GRIB_CHECK (grib_set_double (h, "LoVInDegrees", 26.6400000000000), 0); + GRIB_CHECK (grib_set_double (h, "Latin1InDegrees", 67.3600000000000), 0); + GRIB_CHECK (grib_set_double (h, "Latin2InDegrees", 67.3600000000000), 0); + GRIB_CHECK (grib_set_long (h, "projectionCentreFlag", 0), 0); + GRIB_CHECK (grib_set_long (h, "uvRelativeToGrid", 1), 0); + } + else if (igrid == 1) { + GRIB_CHECK (grib_set_double (h, "latitudeOfFirstGridPointInDegrees", 67.9372009520603), 0); + GRIB_CHECK (grib_set_double (h, "longitudeOfFirstGridPointInDegrees", 25.1580207144963), 0); + GRIB_CHECK (grib_set_double (h, "LaDInDegrees", 0.), 0); + GRIB_CHECK (grib_set_double (h, "latitudeOfLastGridPointInDegrees", 72.9372009520603), 0); + GRIB_CHECK (grib_set_double (h, "longitudeOfLastGridPointInDegrees", 29.1580207144963), 0); + GRIB_CHECK (grib_set_double (h, "orientationOfTheGridInDegrees", 0.), 0); + GRIB_CHECK (grib_set_long (h, "uvRelativeToGrid", 1), 0); + } + else if (igrid == 2) { + GRIB_CHECK (grib_set_double (h, "DxInMetres", 2500.00000000000), 0); + GRIB_CHECK (grib_set_double (h, "DyInMetres", 2500.00000000000), 0); + GRIB_CHECK (grib_set_double (h, "latitudeOfFirstGridPointInDegrees", 67.9372009520603), 0); + GRIB_CHECK (grib_set_double (h, "longitudeOfFirstGridPointInDegrees", 25.1580207144963), 0); + GRIB_CHECK (grib_set_double (h, "LaDInDegrees", 0.), 0); + GRIB_CHECK (grib_set_double (h, "orientationOfTheGridInDegrees", 0.), 0); + } - GRIB_CHECK (grib_set_long (h, "NV", 0), 0); - GRIB_CHECK (grib_set_long (h, "year", 2009), 0); - GRIB_CHECK (grib_set_long (h, "month", 5), 0); - GRIB_CHECK (grib_set_long (h, "day", 28), 0); - GRIB_CHECK (grib_set_long (h, "hour", 0), 0); - GRIB_CHECK (grib_set_long (h, "minute", 0), 0); - GRIB_CHECK (grib_set_long (h, "second", 0), 0); - len = strlen ("s"); - GRIB_CHECK (grib_set_string (h, "indicatorOfUnitOfTimeRange", "s", &len), 0); - len = strlen ("s"); - GRIB_CHECK (grib_set_string (h, "stepUnits", "s", &len), 0); - GRIB_CHECK (grib_set_long (h, "endStep", 3600), 0); - GRIB_CHECK (grib_set_long (h, "bitsPerValue", 16), 0); - len = strlen ("grid_simple"); - GRIB_CHECK (grib_set_string (h, "packingType", "grid_simple", &len), 0); - GRIB_CHECK (grib_set_long (h, "numberOfDataPoints", 4096), 0); - len = 4096; - GRIB_CHECK (grib_set_double_array (h, "values", values, len), 0); + GRIB_CHECK (grib_set_long (h, "NV", 0), 0); + GRIB_CHECK (grib_set_long (h, "year", 2009), 0); + GRIB_CHECK (grib_set_long (h, "month", 5), 0); + GRIB_CHECK (grib_set_long (h, "day", 28), 0); + GRIB_CHECK (grib_set_long (h, "hour", 0), 0); + GRIB_CHECK (grib_set_long (h, "minute", 0), 0); + GRIB_CHECK (grib_set_long (h, "second", 0), 0); + len = strlen ("s"); + GRIB_CHECK (grib_set_string (h, "indicatorOfUnitOfTimeRange", "s", &len), 0); + len = strlen ("s"); + GRIB_CHECK (grib_set_string (h, "stepUnits", "s", &len), 0); + GRIB_CHECK (grib_set_long (h, "endStep", 3600), 0); + GRIB_CHECK (grib_set_long (h, "bitsPerValue", 16), 0); + len = strlen ("grid_simple"); + GRIB_CHECK (grib_set_string (h, "packingType", "grid_simple", &len), 0); + GRIB_CHECK (grib_set_long (h, "numberOfDataPoints", 4096), 0); + len = 4096; + GRIB_CHECK (grib_set_double_array (h, "values", values, len), 0); - if (1) - { - char f[128]; - FILE * fp; - size_t size; - const void * buffer = NULL; - sprintf (f, "lam_gp_%s.grib", grids[igrid]); - fp = fopen (f, "w"); - GRIB_CHECK (grib_get_message (h, &buffer, &size), 0); - if (fwrite (buffer, 1, size, fp) != size) { - perror(f); - return 1; - } - fclose (fp); - } + if (1) { + char f[128]; + FILE *fp; + size_t size; + const void *buffer = NULL; + sprintf (f, "lam_gp_%s.grib", grids[igrid]); + fp = fopen (f, "w"); + GRIB_CHECK (grib_get_message (h, &buffer, &size), 0); + if (fwrite (buffer, 1, size, fp) != size) + { + perror (f); + return 1; + } + fclose (fp); + } - GRIB_CHECK (grib_handle_delete (h), 0); + GRIB_CHECK (grib_handle_delete (h), 0); - /* Check message correctness */ - { - char f[128]; - FILE * fp; - double * vals; - double norm = 0.; - int i, err; - size_t values_len, geometry_len; - long int Nux, Nuy, Ncx, Ncy; - char geometry[128]; + /* Check message correctness */ + { + char f[128]; + FILE *fp; + double *vals; + double norm = 0.; + int i, err; + size_t values_len, geometry_len; + long int Nux, Nuy, Ncx, Ncy; + char geometry[128]; - sprintf (f, "lam_gp_%s.grib", grids[igrid]); - fp = fopen (f, "r"); - h = grib_handle_new_from_file (0, fp, &err); - vals = (double *)malloc (sizeof (double) * 4096); - values_len = 4096; - GRIB_CHECK (grib_get_double_array (h, "values", vals, &values_len), 0); - for (i = 0; i < 4096; i++) - norm += (values[i] - vals[i]) * (values[i] - vals[i]); - norm = sqrt (norm / 4096); - free (vals); - printf ("%s : %lf\n", grids[igrid], norm); - if (norm > 0.0001) - { - printf ("Error too large !\n"); - abort (); - } - fclose (fp); + sprintf (f, "lam_gp_%s.grib", grids[igrid]); + fp = fopen (f, "r"); + h = grib_handle_new_from_file (0, fp, &err); + vals = (double *) malloc (sizeof (double) * 4096); + values_len = 4096; + GRIB_CHECK (grib_get_double_array (h, "values", vals, &values_len), 0); + for (i = 0; i < 4096; i++) + norm += (values[i] - vals[i]) * (values[i] - vals[i]); + norm = sqrt (norm / 4096); + free (vals); + printf ("%s : %lf\n", grids[igrid], norm); + if (norm > 0.0001) + { + fprintf(stderr, "Error too large !\n"); + return 1; + } + fclose (fp); + GRIB_CHECK (grib_get_long (h, "Nux", &Nux), 0); + GRIB_CHECK (grib_get_long (h, "Nuy", &Nuy), 0); + GRIB_CHECK (grib_get_long (h, "Ncx", &Ncx), 0); + GRIB_CHECK (grib_get_long (h, "Ncy", &Ncy), 0); - GRIB_CHECK (grib_get_long (h, "Nux", &Nux), 0); - GRIB_CHECK (grib_get_long (h, "Nuy", &Nuy), 0); - GRIB_CHECK (grib_get_long (h, "Ncx", &Ncx), 0); - GRIB_CHECK (grib_get_long (h, "Ncy", &Ncy), 0); + if (Nux != 53 || Nuy != 53 || Ncx != 8 || Ncy != 8) { + fprintf(stderr, "Geometry is incorrect\n"); + return 1; + } - if (Nux != 53 || Nuy != 53 || Ncx != 8 || Ncy != 8) - { - printf ("Geometry is incorrect\n"); - abort (); - } - - geometry_len = 128; - GRIB_CHECK (grib_get_string (h, "gridType", geometry, &geometry_len), 0); - if (strcmp (geometry, grids[igrid])) - { - printf ("Geometry is incorrect\n"); - abort (); - } - - - GRIB_CHECK (grib_handle_delete (h), 0); - - } + geometry_len = 128; + GRIB_CHECK (grib_get_string (h, "gridType", geometry, &geometry_len), 0); + if (strcmp (geometry, grids[igrid])) { + fprintf(stderr, "Geometry is incorrect\n"); + return 1; + } + GRIB_CHECK (grib_handle_delete (h), 0); + } } - return 0; + return 0; } From b359cf3293760c99d2751d2f630a038486fc359c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 15 May 2019 13:58:16 +0100 Subject: [PATCH 222/414] ECC-924: Definitions comments etc --- definitions/grib2/template.3.bf.def | 14 +++++++------- definitions/grib2/template.5.53.def | 10 ++++------ 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/definitions/grib2/template.3.bf.def b/definitions/grib2/template.3.bf.def index cee4f9802..858188f17 100644 --- a/definitions/grib2/template.3.bf.def +++ b/definitions/grib2/template.3.bf.def @@ -12,20 +12,20 @@ codetable[1] biFourierTruncationType ('3.25.table',masterDir,localDir) : dump; # Lx - Full domain length in X-direction. Size in metres of the domain along x-axis unsigned[8] Lx; -meta geography.LxInMetres scale(Lx,one,thousand) : dump; +alias geography.LxInMetres = Lx; # Lux - Useful domain length in X-direction. Size in metres of model forecast subdomain along x-axis unsigned[8] Lux; -meta geography.LuxInMetres scale(Lux,one,thousand) : dump; -# Lcx - Coupling domain width in X-direction +alias geography.LuxInMetres=Lux; +# Lcx - Coupling domain width in X-direction. Width in metres of coupling area within forecast domain along x-axis unsigned[8] Lcx; -meta geography.LcxInMetres scale(Lcx,one,thousand) : dump; +alias geography.LcxInMetres=Lcx; # Ly - Full domain length in Y-direction unsigned[8] Ly; -meta geography.LyInMetres scale(Ly,one,thousand) : dump; +alias geography.LyInMetres=Ly; # Luy - Useful domain length in Y-direction unsigned[8] Luy; -meta geography.LuyInMetres scale(Luy,one,thousand) : dump; +alias geography.LuyInMetres=Luy; # Lcy - Coupling domain width in Y-direction unsigned[8] Lcy; -meta geography.LcyInMetres scale(Lcy,one,thousand) : dump; +alias geography.LcyInMetres=Lcy; diff --git a/definitions/grib2/template.5.53.def b/definitions/grib2/template.5.53.def index 11aee60a9..f9fb79849 100644 --- a/definitions/grib2/template.5.53.def +++ b/definitions/grib2/template.5.53.def @@ -18,16 +18,14 @@ codetable[1] biFourierPackingModeForAxes ('5.26.table',masterDir,localDir) = 0 : # biFourierDoNotPackAxes constant laplacianScalingFactorUnset = -2147483647; -signed[4] laplacianScalingFactor : edition_specific ; +signed[4] laplacianScalingFactor : edition_specific ; # units of 10^-6 meta data.laplacianOperator scale(laplacianScalingFactor,one,million,truncateLaplacian) ; meta laplacianOperatorIsSet evaluate(laplacianScalingFactor != laplacianScalingFactorUnset && !computeLaplacianOperator); -unsigned[2] biFourierResolutionSubSetParameterN ; -unsigned[2] biFourierResolutionSubSetParameterM ; - -# TODO. Need to fix up the sample file samples/lambert_bf_grib2.tmpl -unsigned[4] totalNumberOfValuesInUnpackedSubset = 0 : dump; +unsigned[2] biFourierResolutionSubSetParameterN : dump ; # NS +unsigned[2] biFourierResolutionSubSetParameterM : dump ; # MS +unsigned[4] totalNumberOfValuesInUnpackedSubset = 0 : dump; # TS # This is read_only until we support other values codetable[1] unpackedSubsetPrecision ('5.7.table',masterDir,localDir) = 1 : dump; From c0cb9924a6235f31f60cc138496d07984fade3d7 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 15 May 2019 15:32:41 +0100 Subject: [PATCH 223/414] ECC-924: Fix the spectralType value --- definitions/grib2/section.5.def | 2 +- definitions/grib2/template.3.bf.def | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/definitions/grib2/section.5.def b/definitions/grib2/section.5.def index 0ec41b1a1..c6f803ca3 100644 --- a/definitions/grib2/section.5.def +++ b/definitions/grib2/section.5.def @@ -52,7 +52,7 @@ concept packingType (unknown) { "grid_second_order_SPD3" = { dataRepresentationTemplateNumber = 50001;orderOfSPD=3; } "spectral_ieee" = { dataRepresentationTemplateNumber=50000; } "grid_simple_log_preprocessing" = { dataRepresentationTemplateNumber = 61; } - "bifourier_complex" = { dataRepresentationTemplateNumber = 53; spectralType=99; } + "bifourier_complex" = { dataRepresentationTemplateNumber = 53; spectralType=2; } } : dump; template dataRepresentation "grib2/template.5.[dataRepresentationTemplateNumber:l].def"; diff --git a/definitions/grib2/template.3.bf.def b/definitions/grib2/template.3.bf.def index 858188f17..a2c12db0f 100644 --- a/definitions/grib2/template.3.bf.def +++ b/definitions/grib2/template.3.bf.def @@ -1,7 +1,7 @@ label "BiFourier coefficients"; constant biFourierCoefficients=1; -codetable[1] spectralType ('3.6.table',masterDir,localDir) = 99 : no_copy; +codetable[1] spectralType ('3.6.table',masterDir,localDir) = 2 : no_copy; alias spectralDataRepresentationType=spectralType; unsigned[4] biFourierResolutionParameterN : dump; From 83d443e4309aa8986e90d04be96b8982cd49f94e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 15 May 2019 15:45:04 +0100 Subject: [PATCH 224/414] ECC-924: Fix the samples file --- samples/lambert_bf_grib2.tmpl | Bin 1874 -> 1874 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/samples/lambert_bf_grib2.tmpl b/samples/lambert_bf_grib2.tmpl index bbf5f45a889f5de1d0785267f42046ed58381a2f..5c75880e0d0e741ca65dea6bb21be1bb47864efc 100644 GIT binary patch delta 59 zcmcb_cZqL;q>eZPBl~q`aUKQ+1|}e`WCjup1wd>M;<5lSdoqv!(HABgGHGngeaZ#^ D3XusN delta 59 zcmcb_cZqL;qz(%MBl~q`aUKQ+1|}e`WCjup1wd?{3?x{9m>tAmV32ERm~6 Date: Wed, 15 May 2019 16:55:59 +0100 Subject: [PATCH 225/414] ECC-924: Update key/accessor cache --- src/grib_accessor_class.c | 2 - src/grib_accessor_class.h | 2 +- src/grib_accessor_classes_hash.c | 810 +- src/grib_accessor_factory.h | 2 +- src/grib_accessor_factory_hash_list | 1 + src/grib_hash_keys.c | 17864 +++++++++++++------------- tests/keys | 4430 +++---- 7 files changed, 11396 insertions(+), 11715 deletions(-) diff --git a/src/grib_accessor_class.c b/src/grib_accessor_class.c index 900fc04b9..f938e96dd 100644 --- a/src/grib_accessor_class.c +++ b/src/grib_accessor_class.c @@ -9,8 +9,6 @@ */ -#define ACCESSOR_FACTORY_USE_TRIE // TODO: sort out the hash of accessor classes - #include "grib_api_internal.h" #include "grib_accessor_classes_hash.c" /* grib level */ diff --git a/src/grib_accessor_class.h b/src/grib_accessor_class.h index e8fb3bb12..bca97bebd 100644 --- a/src/grib_accessor_class.h +++ b/src/grib_accessor_class.h @@ -45,7 +45,6 @@ extern grib_accessor_class* grib_accessor_class_data_apply_boustrophedonic_bitma extern grib_accessor_class* grib_accessor_class_data_apply_gdsnotpresent; extern grib_accessor_class* grib_accessor_class_data_ccsds_packing; extern grib_accessor_class* grib_accessor_class_data_complex_packing; -extern grib_accessor_class* grib_accessor_class_data_g2bifourier_packing; extern grib_accessor_class* grib_accessor_class_data_constant_field; extern grib_accessor_class* grib_accessor_class_data_dummy_field; extern grib_accessor_class* grib_accessor_class_data_g1complex_packing; @@ -57,6 +56,7 @@ extern grib_accessor_class* grib_accessor_class_data_g1secondary_bitmap; extern grib_accessor_class* grib_accessor_class_data_g1shsimple_packing; extern grib_accessor_class* grib_accessor_class_data_g1simple_packing; extern grib_accessor_class* grib_accessor_class_data_g22order_packing; +extern grib_accessor_class* grib_accessor_class_data_g2bifourier_packing; extern grib_accessor_class* grib_accessor_class_data_g2complex_packing; extern grib_accessor_class* grib_accessor_class_data_g2secondary_bitmap; extern grib_accessor_class* grib_accessor_class_data_g2shsimple_packing; diff --git a/src/grib_accessor_classes_hash.c b/src/grib_accessor_classes_hash.c index 7321cec0c..741451b2d 100644 --- a/src/grib_accessor_classes_hash.c +++ b/src/grib_accessor_classes_hash.c @@ -37,12 +37,12 @@ error "gperf generated tables don't work with this execution character set. Plea #line 6 "accessor_class_list.gperf" struct accessor_class_hash { char *name; grib_accessor_class **cclass;}; -#define TOTAL_KEYWORDS 223 +#define TOTAL_KEYWORDS 224 #define MIN_WORD_LENGTH 1 #define MAX_WORD_LENGTH 44 #define MIN_HASH_VALUE 1 -#define MAX_HASH_VALUE 609 -/* maximum key range = 609, duplicates = 0 */ +#define MAX_HASH_VALUE 586 +/* maximum key range = 586, duplicates = 0 */ #ifdef __GNUC__ @@ -56,32 +56,32 @@ grib_accessor_classes_get_id (const char *str, unsigned int len) { static const unsigned short asso_values[] = { - 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, - 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, - 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, - 610, 610, 0, 610, 610, 610, 610, 610, 610, 610, - 610, 610, 610, 610, 610, 610, 610, 610, 2, 123, - 14, 16, 32, 610, 44, 610, 0, 610, 610, 610, - 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, - 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, - 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, - 610, 610, 610, 610, 610, 0, 610, 0, 86, 69, - 0, 0, 169, 29, 248, 1, 11, 1, 76, 195, - 13, 63, 20, 610, 178, 1, 53, 73, 195, 4, - 1, 5, 610, 610, 610, 610, 610, 610, 610, 610, - 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, - 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, - 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, - 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, - 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, - 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, - 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, - 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, - 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, - 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, - 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, - 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, - 610, 610, 610, 610, 610, 610 + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 0, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 2, 44, + 14, 14, 9, 587, 0, 587, 11, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 0, 587, 0, 104, 46, + 0, 0, 173, 29, 252, 1, 9, 3, 88, 155, + 13, 63, 20, 587, 196, 1, 53, 73, 160, 1, + 6, 5, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587 }; register int hval = len; @@ -118,134 +118,168 @@ static const struct accessor_class_hash classes[] = #line 9 "accessor_class_list.gperf" {" "}, {""}, {""}, {""}, {""}, -#line 197 "accessor_class_list.gperf" +#line 198 "accessor_class_list.gperf" {"size", &grib_accessor_class_size}, #line 14 "accessor_class_list.gperf" {"ascii", &grib_accessor_class_ascii}, -#line 194 "accessor_class_list.gperf" +#line 195 "accessor_class_list.gperf" {"signed", &grib_accessor_class_signed}, {""}, {""}, -#line 82 "accessor_class_list.gperf" +#line 83 "accessor_class_list.gperf" {"dirty", &grib_accessor_class_dirty}, {""}, {""}, -#line 195 "accessor_class_list.gperf" +#line 196 "accessor_class_list.gperf" {"signed_bits", &grib_accessor_class_signed_bits}, {""}, -#line 74 "accessor_class_list.gperf" +#line 75 "accessor_class_list.gperf" {"data_raw_packing", &grib_accessor_class_data_raw_packing}, {""}, -#line 141 "accessor_class_list.gperf" +#line 142 "accessor_class_list.gperf" {"int8", &grib_accessor_class_int8}, - {""}, -#line 79 "accessor_class_list.gperf" +#line 136 "accessor_class_list.gperf" + {"int16", &grib_accessor_class_int16}, +#line 80 "accessor_class_list.gperf" {"data_simple_packing", &grib_accessor_class_data_simple_packing}, -#line 75 "accessor_class_list.gperf" +#line 76 "accessor_class_list.gperf" {"data_secondary_bitmap", &grib_accessor_class_data_secondary_bitmap}, -#line 188 "accessor_class_list.gperf" +#line 189 "accessor_class_list.gperf" {"section", &grib_accessor_class_section}, -#line 175 "accessor_class_list.gperf" +#line 176 "accessor_class_list.gperf" {"pad", &grib_accessor_class_pad}, -#line 200 "accessor_class_list.gperf" +#line 201 "accessor_class_list.gperf" {"spd", &grib_accessor_class_spd}, -#line 81 "accessor_class_list.gperf" +#line 82 "accessor_class_list.gperf" {"dictionary", &grib_accessor_class_dictionary}, - {""}, {""}, {""}, -#line 73 "accessor_class_list.gperf" + {""}, {""}, +#line 140 "accessor_class_list.gperf" + {"int64", &grib_accessor_class_int64}, +#line 74 "accessor_class_list.gperf" {"data_png_packing", &grib_accessor_class_data_png_packing}, -#line 190 "accessor_class_list.gperf" - {"section_padding", &grib_accessor_class_section_padding}, #line 191 "accessor_class_list.gperf" + {"section_padding", &grib_accessor_class_section_padding}, +#line 192 "accessor_class_list.gperf" {"section_pointer", &grib_accessor_class_section_pointer}, -#line 125 "accessor_class_list.gperf" +#line 126 "accessor_class_list.gperf" {"gen", &grib_accessor_class_gen}, -#line 137 "accessor_class_list.gperf" +#line 138 "accessor_class_list.gperf" {"int32", &grib_accessor_class_int32}, -#line 87 "accessor_class_list.gperf" - {"expanded_descriptors", &grib_accessor_class_expanded_descriptors}, + {""}, #line 66 "accessor_class_list.gperf" {"data_g22order_packing", &grib_accessor_class_data_g22order_packing}, {""}, #line 50 "accessor_class_list.gperf" {"data_apply_bitmap", &grib_accessor_class_data_apply_bitmap}, -#line 69 "accessor_class_list.gperf" +#line 70 "accessor_class_list.gperf" {"data_g2shsimple_packing", &grib_accessor_class_data_g2shsimple_packing}, - {""}, {""}, -#line 187 "accessor_class_list.gperf" +#line 88 "accessor_class_list.gperf" + {"expanded_descriptors", &grib_accessor_class_expanded_descriptors}, + {""}, +#line 188 "accessor_class_list.gperf" {"second_order_bits_per_value", &grib_accessor_class_second_order_bits_per_value}, -#line 189 "accessor_class_list.gperf" +#line 190 "accessor_class_list.gperf" {"section_length", &grib_accessor_class_section_length}, -#line 72 "accessor_class_list.gperf" +#line 73 "accessor_class_list.gperf" {"data_jpeg2000_packing", &grib_accessor_class_data_jpeg2000_packing}, #line 53 "accessor_class_list.gperf" {"data_apply_gdsnotpresent", &grib_accessor_class_data_apply_gdsnotpresent}, -#line 123 "accessor_class_list.gperf" +#line 124 "accessor_class_list.gperf" {"gds_is_present", &grib_accessor_class_gds_is_present}, #line 51 "accessor_class_list.gperf" {"data_apply_boustrophedonic", &grib_accessor_class_data_apply_boustrophedonic}, {""}, -#line 126 "accessor_class_list.gperf" +#line 127 "accessor_class_list.gperf" {"getenv", &grib_accessor_class_getenv}, -#line 120 "accessor_class_list.gperf" +#line 121 "accessor_class_list.gperf" {"g2step", &grib_accessor_class_g2step}, -#line 116 "accessor_class_list.gperf" +#line 117 "accessor_class_list.gperf" {"g2grid", &grib_accessor_class_g2grid}, -#line 139 "accessor_class_list.gperf" - {"int64", &grib_accessor_class_int64}, {""}, +#line 186 "accessor_class_list.gperf" + {"scale", &grib_accessor_class_scale}, #line 52 "accessor_class_list.gperf" {"data_apply_boustrophedonic_bitmap", &grib_accessor_class_data_apply_boustrophedonic_bitmap}, -#line 115 "accessor_class_list.gperf" +#line 116 "accessor_class_list.gperf" {"g2end_step", &grib_accessor_class_g2end_step}, -#line 70 "accessor_class_list.gperf" +#line 71 "accessor_class_list.gperf" {"data_g2simple_packing", &grib_accessor_class_data_g2simple_packing}, -#line 67 "accessor_class_list.gperf" +#line 68 "accessor_class_list.gperf" {"data_g2complex_packing", &grib_accessor_class_data_g2complex_packing}, -#line 176 "accessor_class_list.gperf" +#line 177 "accessor_class_list.gperf" {"padding", &grib_accessor_class_padding}, -#line 208 "accessor_class_list.gperf" +#line 209 "accessor_class_list.gperf" {"time", &grib_accessor_class_time}, {""}, -#line 209 "accessor_class_list.gperf" +#line 210 "accessor_class_list.gperf" {"times", &grib_accessor_class_times}, -#line 119 "accessor_class_list.gperf" +#line 120 "accessor_class_list.gperf" {"g2lon", &grib_accessor_class_g2lon}, - {""}, -#line 135 "accessor_class_list.gperf" - {"int16", &grib_accessor_class_int16}, - {""}, {""}, {""}, {""}, {""}, -#line 110 "accessor_class_list.gperf" + {""}, {""}, +#line 54 "accessor_class_list.gperf" + {"data_ccsds_packing", &grib_accessor_class_data_ccsds_packing}, + {""}, {""}, {""}, +#line 64 "accessor_class_list.gperf" + {"data_g1shsimple_packing", &grib_accessor_class_data_g1shsimple_packing}, +#line 111 "accessor_class_list.gperf" {"g2_eps", &grib_accessor_class_g2_eps}, {""}, {""}, {""}, -#line 163 "accessor_class_list.gperf" +#line 164 "accessor_class_list.gperf" {"nearest", &grib_accessor_class_nearest}, -#line 71 "accessor_class_list.gperf" +#line 72 "accessor_class_list.gperf" {"data_g2simple_packing_with_preprocessing", &grib_accessor_class_data_g2simple_packing_with_preprocessing}, -#line 185 "accessor_class_list.gperf" - {"scale", &grib_accessor_class_scale}, - {""}, -#line 206 "accessor_class_list.gperf" + {""}, {""}, +#line 207 "accessor_class_list.gperf" {"sum", &grib_accessor_class_sum}, {""}, -#line 221 "accessor_class_list.gperf" - {"uint8", &grib_accessor_class_uint8}, - {""}, -#line 205 "accessor_class_list.gperf" +#line 95 "accessor_class_list.gperf" + {"g1area", &grib_accessor_class_g1area}, +#line 220 "accessor_class_list.gperf" + {"uint64", &grib_accessor_class_uint64}, +#line 206 "accessor_class_list.gperf" {"step_in_units", &grib_accessor_class_step_in_units}, #line 56 "accessor_class_list.gperf" {"data_constant_field", &grib_accessor_class_data_constant_field}, #line 55 "accessor_class_list.gperf" {"data_complex_packing", &grib_accessor_class_data_complex_packing}, -#line 121 "accessor_class_list.gperf" +#line 122 "accessor_class_list.gperf" {"g2step_range", &grib_accessor_class_g2step_range}, - {""}, -#line 147 "accessor_class_list.gperf" - {"laplacian", &grib_accessor_class_laplacian}, -#line 54 "accessor_class_list.gperf" - {"data_ccsds_packing", &grib_accessor_class_data_ccsds_packing}, -#line 177 "accessor_class_list.gperf" +#line 65 "accessor_class_list.gperf" + {"data_g1simple_packing", &grib_accessor_class_data_g1simple_packing}, +#line 58 "accessor_class_list.gperf" + {"data_g1complex_packing", &grib_accessor_class_data_g1complex_packing}, +#line 193 "accessor_class_list.gperf" + {"select_step_template", &grib_accessor_class_select_step_template}, +#line 178 "accessor_class_list.gperf" {"padto", &grib_accessor_class_padto}, #line 57 "accessor_class_list.gperf" {"data_dummy_field", &grib_accessor_class_data_dummy_field}, +#line 222 "accessor_class_list.gperf" + {"uint8", &grib_accessor_class_uint8}, +#line 93 "accessor_class_list.gperf" + {"g1_message_length", &grib_accessor_class_g1_message_length}, +#line 145 "accessor_class_list.gperf" + {"julian_day", &grib_accessor_class_julian_day}, +#line 144 "accessor_class_list.gperf" + {"julian_date", &grib_accessor_class_julian_date}, +#line 218 "accessor_class_list.gperf" + {"uint32", &grib_accessor_class_uint32}, + {""}, {""}, {""}, +#line 148 "accessor_class_list.gperf" + {"laplacian", &grib_accessor_class_laplacian}, +#line 105 "accessor_class_list.gperf" + {"g1p1p2", &grib_accessor_class_g1p1p2}, +#line 69 "accessor_class_list.gperf" + {"data_g2secondary_bitmap", &grib_accessor_class_data_g2secondary_bitmap}, +#line 67 "accessor_class_list.gperf" + {"data_g2bifourier_packing", &grib_accessor_class_data_g2bifourier_packing}, +#line 115 "accessor_class_list.gperf" + {"g2date", &grib_accessor_class_g2date}, +#line 12 "accessor_class_list.gperf" + {"apply_operators", &grib_accessor_class_apply_operators}, +#line 113 "accessor_class_list.gperf" + {"g2bitmap", &grib_accessor_class_g2bitmap}, +#line 165 "accessor_class_list.gperf" + {"non_alpha", &grib_accessor_class_non_alpha}, + {""}, {""}, #line 16 "accessor_class_list.gperf" {"bit", &grib_accessor_class_bit}, #line 18 "accessor_class_list.gperf" @@ -253,126 +287,145 @@ static const struct accessor_class_hash classes[] = {""}, #line 17 "accessor_class_list.gperf" {"bitmap", &grib_accessor_class_bitmap}, -#line 144 "accessor_class_list.gperf" - {"julian_day", &grib_accessor_class_julian_day}, -#line 143 "accessor_class_list.gperf" - {"julian_date", &grib_accessor_class_julian_date}, -#line 217 "accessor_class_list.gperf" - {"uint32", &grib_accessor_class_uint32}, + {""}, +#line 197 "accessor_class_list.gperf" + {"simple_packing_error", &grib_accessor_class_simple_packing_error}, +#line 107 "accessor_class_list.gperf" + {"g1step_range", &grib_accessor_class_g1step_range}, #line 36 "accessor_class_list.gperf" {"bytes", &grib_accessor_class_bytes}, - {""}, -#line 196 "accessor_class_list.gperf" - {"simple_packing_error", &grib_accessor_class_simple_packing_error}, -#line 68 "accessor_class_list.gperf" - {"data_g2secondary_bitmap", &grib_accessor_class_data_g2secondary_bitmap}, +#line 109 "accessor_class_list.gperf" + {"g2_aerosol", &grib_accessor_class_g2_aerosol}, +#line 125 "accessor_class_list.gperf" + {"gds_not_present_bitmap", &grib_accessor_class_gds_not_present_bitmap}, +#line 204 "accessor_class_list.gperf" + {"statistics", &grib_accessor_class_statistics}, #line 19 "accessor_class_list.gperf" {"bits_per_value", &grib_accessor_class_bits_per_value}, -#line 114 "accessor_class_list.gperf" - {"g2date", &grib_accessor_class_g2date}, -#line 12 "accessor_class_list.gperf" - {"apply_operators", &grib_accessor_class_apply_operators}, -#line 112 "accessor_class_list.gperf" - {"g2bitmap", &grib_accessor_class_g2bitmap}, -#line 164 "accessor_class_list.gperf" - {"non_alpha", &grib_accessor_class_non_alpha}, - {""}, {""}, {""}, {""}, -#line 192 "accessor_class_list.gperf" - {"select_step_template", &grib_accessor_class_select_step_template}, - {""}, {""}, {""}, {""}, {""}, -#line 108 "accessor_class_list.gperf" - {"g2_aerosol", &grib_accessor_class_g2_aerosol}, -#line 124 "accessor_class_list.gperf" - {"gds_not_present_bitmap", &grib_accessor_class_gds_not_present_bitmap}, -#line 203 "accessor_class_list.gperf" - {"statistics", &grib_accessor_class_statistics}, {""}, {""}, -#line 127 "accessor_class_list.gperf" - {"global_gaussian", &grib_accessor_class_global_gaussian}, -#line 166 "accessor_class_list.gperf" +#line 167 "accessor_class_list.gperf" {"number_of_points", &grib_accessor_class_number_of_points}, -#line 224 "accessor_class_list.gperf" +#line 225 "accessor_class_list.gperf" {"unsigned", &grib_accessor_class_unsigned}, -#line 219 "accessor_class_list.gperf" - {"uint64", &grib_accessor_class_uint64}, -#line 142 "accessor_class_list.gperf" +#line 216 "accessor_class_list.gperf" + {"uint16", &grib_accessor_class_uint16}, +#line 143 "accessor_class_list.gperf" {"iterator", &grib_accessor_class_iterator}, -#line 193 "accessor_class_list.gperf" - {"sexagesimal2decimal", &grib_accessor_class_sexagesimal2decimal}, -#line 204 "accessor_class_list.gperf" + {""}, +#line 205 "accessor_class_list.gperf" {"statistics_spectral", &grib_accessor_class_statistics_spectral}, {""}, -#line 225 "accessor_class_list.gperf" +#line 226 "accessor_class_list.gperf" {"unsigned_bits", &grib_accessor_class_unsigned_bits}, - {""}, -#line 167 "accessor_class_list.gperf" +#line 63 "accessor_class_list.gperf" + {"data_g1secondary_bitmap", &grib_accessor_class_data_g1secondary_bitmap}, +#line 168 "accessor_class_list.gperf" {"number_of_points_gaussian", &grib_accessor_class_number_of_points_gaussian}, - {""}, {""}, {""}, {""}, -#line 85 "accessor_class_list.gperf" - {"element", &grib_accessor_class_element}, - {""}, -#line 148 "accessor_class_list.gperf" - {"latitudes", &grib_accessor_class_latitudes}, -#line 211 "accessor_class_list.gperf" +#line 97 "accessor_class_list.gperf" + {"g1date", &grib_accessor_class_g1date}, +#line 128 "accessor_class_list.gperf" + {"global_gaussian", &grib_accessor_class_global_gaussian}, +#line 96 "accessor_class_list.gperf" + {"g1bitmap", &grib_accessor_class_g1bitmap}, + {""}, {""}, {""}, +#line 194 "accessor_class_list.gperf" + {"sexagesimal2decimal", &grib_accessor_class_sexagesimal2decimal}, +#line 212 "accessor_class_list.gperf" {"to_integer", &grib_accessor_class_to_integer}, {""}, -#line 222 "accessor_class_list.gperf" +#line 223 "accessor_class_list.gperf" {"unexpanded_descriptors", &grib_accessor_class_unexpanded_descriptors}, +#line 61 "accessor_class_list.gperf" + {"data_g1second_order_general_packing", &grib_accessor_class_data_g1second_order_general_packing}, + {""}, {""}, +#line 62 "accessor_class_list.gperf" + {"data_g1second_order_row_by_row_packing", &grib_accessor_class_data_g1second_order_row_by_row_packing}, {""}, -#line 153 "accessor_class_list.gperf" +#line 221 "accessor_class_list.gperf" + {"uint64_little_endian", &grib_accessor_class_uint64_little_endian}, +#line 86 "accessor_class_list.gperf" + {"element", &grib_accessor_class_element}, +#line 59 "accessor_class_list.gperf" + {"data_g1second_order_constant_width_packing", &grib_accessor_class_data_g1second_order_constant_width_packing}, +#line 149 "accessor_class_list.gperf" + {"latitudes", &grib_accessor_class_latitudes}, +#line 60 "accessor_class_list.gperf" + {"data_g1second_order_general_extended_packing", &grib_accessor_class_data_g1second_order_general_extended_packing}, + {""}, +#line 94 "accessor_class_list.gperf" + {"g1_section4_length", &grib_accessor_class_g1_section4_length}, +#line 166 "accessor_class_list.gperf" + {"number_of_coded_values", &grib_accessor_class_number_of_coded_values}, +#line 154 "accessor_class_list.gperf" {"long", &grib_accessor_class_long}, {""}, -#line 84 "accessor_class_list.gperf" +#line 85 "accessor_class_list.gperf" {"double", &grib_accessor_class_double}, -#line 111 "accessor_class_list.gperf" +#line 160 "accessor_class_list.gperf" + {"md5", &grib_accessor_class_md5}, + {""}, {""}, +#line 219 "accessor_class_list.gperf" + {"uint32_little_endian", &grib_accessor_class_uint32_little_endian}, +#line 161 "accessor_class_list.gperf" + {"message", &grib_accessor_class_message}, + {""}, +#line 112 "accessor_class_list.gperf" {"g2_mars_labeling", &grib_accessor_class_g2_mars_labeling}, -#line 64 "accessor_class_list.gperf" - {"data_g1shsimple_packing", &grib_accessor_class_data_g1shsimple_packing}, - {""}, {""}, {""}, {""}, +#line 158 "accessor_class_list.gperf" + {"mars_param", &grib_accessor_class_mars_param}, +#line 229 "accessor_class_list.gperf" + {"values", &grib_accessor_class_values}, +#line 118 "accessor_class_list.gperf" + {"g2latlon", &grib_accessor_class_g2latlon}, + {""}, +#line 43 "accessor_class_list.gperf" + {"concept", &grib_accessor_class_concept}, #line 21 "accessor_class_list.gperf" {"box", &grib_accessor_class_box}, - {""}, {""}, {""}, {""}, -#line 146 "accessor_class_list.gperf" - {"label", &grib_accessor_class_label}, -#line 94 "accessor_class_list.gperf" - {"g1area", &grib_accessor_class_g1area}, -#line 83 "accessor_class_list.gperf" - {"divdouble", &grib_accessor_class_divdouble}, {""}, {""}, {""}, -#line 218 "accessor_class_list.gperf" - {"uint32_little_endian", &grib_accessor_class_uint32_little_endian}, -#line 65 "accessor_class_list.gperf" - {"data_g1simple_packing", &grib_accessor_class_data_g1simple_packing}, -#line 58 "accessor_class_list.gperf" - {"data_g1complex_packing", &grib_accessor_class_data_g1complex_packing}, -#line 20 "accessor_class_list.gperf" - {"blob", &grib_accessor_class_blob}, -#line 117 "accessor_class_list.gperf" - {"g2latlon", &grib_accessor_class_g2latlon}, +#line 99 "accessor_class_list.gperf" + {"g1end_of_interval_monthly", &grib_accessor_class_g1end_of_interval_monthly}, + {""}, {""}, +#line 84 "accessor_class_list.gperf" + {"divdouble", &grib_accessor_class_divdouble}, + {""}, +#line 213 "accessor_class_list.gperf" + {"to_string", &grib_accessor_class_to_string}, + {""}, +#line 147 "accessor_class_list.gperf" + {"label", &grib_accessor_class_label}, + {""}, +#line 44 "accessor_class_list.gperf" + {"constant", &grib_accessor_class_constant}, + {""}, {""}, #line 24 "accessor_class_list.gperf" {"bufr_data", &grib_accessor_class_bufr_data}, +#line 162 "accessor_class_list.gperf" + {"message_copy", &grib_accessor_class_message_copy}, {""}, -#line 92 "accessor_class_list.gperf" - {"g1_message_length", &grib_accessor_class_g1_message_length}, -#line 132 "accessor_class_list.gperf" - {"ibmfloat", &grib_accessor_class_ibmfloat}, - {""}, {""}, +#line 180 "accessor_class_list.gperf" + {"padtomultiple", &grib_accessor_class_padtomultiple}, + {""}, +#line 217 "accessor_class_list.gperf" + {"uint16_little_endian", &grib_accessor_class_uint16_little_endian}, #line 25 "accessor_class_list.gperf" {"bufr_data_array", &grib_accessor_class_bufr_data_array}, - {""}, +#line 163 "accessor_class_list.gperf" + {"missing", &grib_accessor_class_missing}, #line 26 "accessor_class_list.gperf" {"bufr_data_element", &grib_accessor_class_bufr_data_element}, -#line 165 "accessor_class_list.gperf" - {"number_of_coded_values", &grib_accessor_class_number_of_coded_values}, -#line 104 "accessor_class_list.gperf" - {"g1p1p2", &grib_accessor_class_g1p1p2}, -#line 212 "accessor_class_list.gperf" - {"to_string", &grib_accessor_class_to_string}, + {""}, +#line 20 "accessor_class_list.gperf" + {"blob", &grib_accessor_class_blob}, + {""}, #line 33 "accessor_class_list.gperf" {"bufr_simple_thinning", &grib_accessor_class_bufr_simple_thinning}, -#line 181 "accessor_class_list.gperf" +#line 182 "accessor_class_list.gperf" {"raw", &grib_accessor_class_raw}, - {""}, {""}, {""}, + {""}, +#line 133 "accessor_class_list.gperf" + {"ibmfloat", &grib_accessor_class_ibmfloat}, + {""}, #line 15 "accessor_class_list.gperf" {"assert", &grib_accessor_class_assert}, #line 35 "accessor_class_list.gperf" @@ -381,295 +434,248 @@ static const struct accessor_class_hash classes[] = {"bufr_has_delayed_replication", &grib_accessor_class_bufr_has_delayed_replication}, #line 13 "accessor_class_list.gperf" {"array", &grib_accessor_class_array}, -#line 179 "accessor_class_list.gperf" - {"padtomultiple", &grib_accessor_class_padtomultiple}, - {""}, -#line 220 "accessor_class_list.gperf" - {"uint64_little_endian", &grib_accessor_class_uint64_little_endian}, -#line 43 "accessor_class_list.gperf" - {"concept", &grib_accessor_class_concept}, -#line 106 "accessor_class_list.gperf" - {"g1step_range", &grib_accessor_class_g1step_range}, - {""}, {""}, {""}, -#line 182 "accessor_class_list.gperf" - {"rdbtime_guess_date", &grib_accessor_class_rdbtime_guess_date}, -#line 159 "accessor_class_list.gperf" - {"md5", &grib_accessor_class_md5}, -#line 138 "accessor_class_list.gperf" - {"int32_little_endian", &grib_accessor_class_int32_little_endian}, - {""}, -#line 228 "accessor_class_list.gperf" - {"values", &grib_accessor_class_values}, -#line 160 "accessor_class_list.gperf" - {"message", &grib_accessor_class_message}, -#line 215 "accessor_class_list.gperf" - {"uint16", &grib_accessor_class_uint16}, - {""}, -#line 157 "accessor_class_list.gperf" - {"mars_param", &grib_accessor_class_mars_param}, -#line 44 "accessor_class_list.gperf" - {"constant", &grib_accessor_class_constant}, -#line 180 "accessor_class_list.gperf" +#line 181 "accessor_class_list.gperf" {"position", &grib_accessor_class_position}, {""}, -#line 63 "accessor_class_list.gperf" - {"data_g1secondary_bitmap", &grib_accessor_class_data_g1secondary_bitmap}, -#line 202 "accessor_class_list.gperf" +#line 137 "accessor_class_list.gperf" + {"int16_little_endian", &grib_accessor_class_int16_little_endian}, + {""}, {""}, {""}, {""}, +#line 203 "accessor_class_list.gperf" {"sprintf", &grib_accessor_class_sprintf}, -#line 96 "accessor_class_list.gperf" - {"g1date", &grib_accessor_class_g1date}, +#line 183 "accessor_class_list.gperf" + {"rdbtime_guess_date", &grib_accessor_class_rdbtime_guess_date}, {""}, -#line 95 "accessor_class_list.gperf" - {"g1bitmap", &grib_accessor_class_g1bitmap}, - {""}, {""}, {""}, -#line 140 "accessor_class_list.gperf" +#line 159 "accessor_class_list.gperf" + {"mars_step", &grib_accessor_class_mars_step}, +#line 141 "accessor_class_list.gperf" {"int64_little_endian", &grib_accessor_class_int64_little_endian}, -#line 156 "accessor_class_list.gperf" - {"lookup", &grib_accessor_class_lookup}, +#line 187 "accessor_class_list.gperf" + {"scale_values", &grib_accessor_class_scale_values}, + {""}, {""}, {""}, +#line 139 "accessor_class_list.gperf" + {"int32_little_endian", &grib_accessor_class_int32_little_endian}, + {""}, {""}, +#line 227 "accessor_class_list.gperf" + {"validity_date", &grib_accessor_class_validity_date}, +#line 228 "accessor_class_list.gperf" + {"validity_time", &grib_accessor_class_validity_time}, {""}, +#line 231 "accessor_class_list.gperf" + {"vector", &grib_accessor_class_vector}, +#line 157 "accessor_class_list.gperf" + {"lookup", &grib_accessor_class_lookup}, + {""}, {""}, {""}, {""}, +#line 156 "accessor_class_list.gperf" + {"longitudes", &grib_accessor_class_longitudes}, + {""}, {""}, #line 22 "accessor_class_list.gperf" {"budgdate", &grib_accessor_class_budgdate}, -#line 61 "accessor_class_list.gperf" - {"data_g1second_order_general_packing", &grib_accessor_class_data_g1second_order_general_packing}, - {""}, -#line 155 "accessor_class_list.gperf" - {"longitudes", &grib_accessor_class_longitudes}, -#line 62 "accessor_class_list.gperf" - {"data_g1second_order_row_by_row_packing", &grib_accessor_class_data_g1second_order_row_by_row_packing}, - {""}, -#line 122 "accessor_class_list.gperf" - {"gaussian_grid_name", &grib_accessor_class_gaussian_grid_name}, -#line 161 "accessor_class_list.gperf" - {"message_copy", &grib_accessor_class_message_copy}, -#line 59 "accessor_class_list.gperf" - {"data_g1second_order_constant_width_packing", &grib_accessor_class_data_g1second_order_constant_width_packing}, -#line 136 "accessor_class_list.gperf" - {"int16_little_endian", &grib_accessor_class_int16_little_endian}, -#line 60 "accessor_class_list.gperf" - {"data_g1second_order_general_extended_packing", &grib_accessor_class_data_g1second_order_general_extended_packing}, - {""}, -#line 128 "accessor_class_list.gperf" - {"group", &grib_accessor_class_group}, -#line 162 "accessor_class_list.gperf" - {"missing", &grib_accessor_class_missing}, - {""}, {""}, {""}, {""}, {""}, -#line 88 "accessor_class_list.gperf" + {""}, {""}, {""}, {""}, +#line 89 "accessor_class_list.gperf" {"forward", &grib_accessor_class_forward}, +#line 123 "accessor_class_list.gperf" + {"gaussian_grid_name", &grib_accessor_class_gaussian_grid_name}, {""}, -#line 213 "accessor_class_list.gperf" - {"transient", &grib_accessor_class_transient}, -#line 133 "accessor_class_list.gperf" +#line 134 "accessor_class_list.gperf" {"ieeefloat", &grib_accessor_class_ieeefloat}, -#line 172 "accessor_class_list.gperf" +#line 173 "accessor_class_list.gperf" {"offset_file", &grib_accessor_class_offset_file}, -#line 152 "accessor_class_list.gperf" - {"local_definition", &grib_accessor_class_local_definition}, {""}, -#line 184 "accessor_class_list.gperf" - {"round", &grib_accessor_class_round}, - {""}, -#line 214 "accessor_class_list.gperf" - {"transient_darray", &grib_accessor_class_transient_darray}, #line 30 "accessor_class_list.gperf" {"bufr_extract_subsets", &grib_accessor_class_bufr_extract_subsets}, - {""}, {""}, -#line 23 "accessor_class_list.gperf" - {"bufr_clear_tables", &grib_accessor_class_bufr_clear_tables}, -#line 98 "accessor_class_list.gperf" - {"g1end_of_interval_monthly", &grib_accessor_class_g1end_of_interval_monthly}, +#line 129 "accessor_class_list.gperf" + {"group", &grib_accessor_class_group}, + {""}, +#line 179 "accessor_class_list.gperf" + {"padtoeven", &grib_accessor_class_padtoeven}, + {""}, #line 28 "accessor_class_list.gperf" {"bufr_extract_area_subsets", &grib_accessor_class_bufr_extract_area_subsets}, -#line 93 "accessor_class_list.gperf" - {"g1_section4_length", &grib_accessor_class_g1_section4_length}, -#line 231 "accessor_class_list.gperf" + {""}, +#line 230 "accessor_class_list.gperf" + {"variable", &grib_accessor_class_variable}, +#line 232 "accessor_class_list.gperf" {"when", &grib_accessor_class_when}, -#line 158 "accessor_class_list.gperf" - {"mars_step", &grib_accessor_class_mars_step}, #line 29 "accessor_class_list.gperf" {"bufr_extract_datetime_subsets", &grib_accessor_class_bufr_extract_datetime_subsets}, +#line 214 "accessor_class_list.gperf" + {"transient", &grib_accessor_class_transient}, +#line 81 "accessor_class_list.gperf" + {"decimal_precision", &grib_accessor_class_decimal_precision}, +#line 146 "accessor_class_list.gperf" + {"ksec1expver", &grib_accessor_class_ksec1expver}, +#line 169 "accessor_class_list.gperf" + {"number_of_values", &grib_accessor_class_number_of_values}, + {""}, +#line 185 "accessor_class_list.gperf" + {"round", &grib_accessor_class_round}, + {""}, +#line 215 "accessor_class_list.gperf" + {"transient_darray", &grib_accessor_class_transient_darray}, + {""}, +#line 153 "accessor_class_list.gperf" + {"local_definition", &grib_accessor_class_local_definition}, +#line 175 "accessor_class_list.gperf" + {"pack_bufr_values", &grib_accessor_class_pack_bufr_values}, + {""}, {""}, +#line 172 "accessor_class_list.gperf" + {"octect_number", &grib_accessor_class_octect_number}, +#line 199 "accessor_class_list.gperf" + {"smart_table", &grib_accessor_class_smart_table}, + {""}, +#line 40 "accessor_class_list.gperf" + {"codetable", &grib_accessor_class_codetable}, + {""}, #line 34 "accessor_class_list.gperf" {"bufr_string_values", &grib_accessor_class_bufr_string_values}, #line 48 "accessor_class_list.gperf" {"data_2order_packing", &grib_accessor_class_data_2order_packing}, -#line 226 "accessor_class_list.gperf" - {"validity_date", &grib_accessor_class_validity_date}, -#line 227 "accessor_class_list.gperf" - {"validity_time", &grib_accessor_class_validity_time}, -#line 207 "accessor_class_list.gperf" +#line 170 "accessor_class_list.gperf" + {"number_of_values_data_raw_packing", &grib_accessor_class_number_of_values_data_raw_packing}, +#line 200 "accessor_class_list.gperf" + {"smart_table_column", &grib_accessor_class_smart_table_column}, +#line 208 "accessor_class_list.gperf" {"suppressed", &grib_accessor_class_suppressed}, -#line 230 "accessor_class_list.gperf" - {"vector", &grib_accessor_class_vector}, +#line 23 "accessor_class_list.gperf" + {"bufr_clear_tables", &grib_accessor_class_bufr_clear_tables}, {""}, #line 49 "accessor_class_list.gperf" {"data_2order_packing_count", &grib_accessor_class_data_2order_packing_count}, -#line 27 "accessor_class_list.gperf" - {"bufr_elements_table", &grib_accessor_class_bufr_elements_table}, - {""}, {""}, -#line 216 "accessor_class_list.gperf" - {"uint16_little_endian", &grib_accessor_class_uint16_little_endian}, -#line 201 "accessor_class_list.gperf" - {"spectral_truncation", &grib_accessor_class_spectral_truncation}, - {""}, {""}, -#line 210 "accessor_class_list.gperf" - {"to_double", &grib_accessor_class_to_double}, -#line 151 "accessor_class_list.gperf" - {"library_version", &grib_accessor_class_library_version}, - {""}, -#line 186 "accessor_class_list.gperf" - {"scale_values", &grib_accessor_class_scale_values}, - {""}, -#line 229 "accessor_class_list.gperf" - {"variable", &grib_accessor_class_variable}, -#line 40 "accessor_class_list.gperf" - {"codetable", &grib_accessor_class_codetable}, {""}, {""}, {""}, -#line 77 "accessor_class_list.gperf" - {"data_sh_unpacked", &grib_accessor_class_data_sh_unpacked}, - {""}, {""}, -#line 178 "accessor_class_list.gperf" - {"padtoeven", &grib_accessor_class_padtoeven}, -#line 80 "accessor_class_list.gperf" - {"decimal_precision", &grib_accessor_class_decimal_precision}, #line 78 "accessor_class_list.gperf" - {"data_shsimple_packing", &grib_accessor_class_data_shsimple_packing}, -#line 113 "accessor_class_list.gperf" - {"g2bitmap_present", &grib_accessor_class_g2bitmap_present}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 168 "accessor_class_list.gperf" - {"number_of_values", &grib_accessor_class_number_of_values}, - {""}, {""}, -#line 171 "accessor_class_list.gperf" - {"octect_number", &grib_accessor_class_octect_number}, - {""}, {""}, {""}, -#line 174 "accessor_class_list.gperf" - {"pack_bufr_values", &grib_accessor_class_pack_bufr_values}, - {""}, {""}, {""}, {""}, + {"data_sh_unpacked", &grib_accessor_class_data_sh_unpacked}, +#line 202 "accessor_class_list.gperf" + {"spectral_truncation", &grib_accessor_class_spectral_truncation}, #line 39 "accessor_class_list.gperf" {"codeflag", &grib_accessor_class_codeflag}, - {""}, {""}, {""}, -#line 198 "accessor_class_list.gperf" - {"smart_table", &grib_accessor_class_smart_table}, -#line 169 "accessor_class_list.gperf" - {"number_of_values_data_raw_packing", &grib_accessor_class_number_of_values_data_raw_packing}, -#line 145 "accessor_class_list.gperf" - {"ksec1expver", &grib_accessor_class_ksec1expver}, - {""}, {""}, -#line 173 "accessor_class_list.gperf" - {"offset_values", &grib_accessor_class_offset_values}, {""}, -#line 199 "accessor_class_list.gperf" - {"smart_table_column", &grib_accessor_class_smart_table_column}, -#line 118 "accessor_class_list.gperf" - {"g2level", &grib_accessor_class_g2level}, - {""}, {""}, {""}, -#line 47 "accessor_class_list.gperf" - {"count_total", &grib_accessor_class_count_total}, - {""}, {""}, -#line 154 "accessor_class_list.gperf" - {"long_vector", &grib_accessor_class_long_vector}, -#line 86 "accessor_class_list.gperf" +#line 211 "accessor_class_list.gperf" + {"to_double", &grib_accessor_class_to_double}, +#line 79 "accessor_class_list.gperf" + {"data_shsimple_packing", &grib_accessor_class_data_shsimple_packing}, +#line 87 "accessor_class_list.gperf" {"evaluate", &grib_accessor_class_evaluate}, + {""}, {""}, +#line 27 "accessor_class_list.gperf" + {"bufr_elements_table", &grib_accessor_class_bufr_elements_table}, +#line 119 "accessor_class_list.gperf" + {"g2level", &grib_accessor_class_g2level}, +#line 100 "accessor_class_list.gperf" + {"g1fcperiod", &grib_accessor_class_g1fcperiod}, + {""}, {""}, {""}, {""}, {""}, +#line 152 "accessor_class_list.gperf" + {"library_version", &grib_accessor_class_library_version}, {""}, -#line 76 "accessor_class_list.gperf" +#line 92 "accessor_class_list.gperf" + {"g1_increment", &grib_accessor_class_g1_increment}, +#line 114 "accessor_class_list.gperf" + {"g2bitmap_present", &grib_accessor_class_g2bitmap_present}, + {""}, {""}, {""}, +#line 77 "accessor_class_list.gperf" {"data_sh_packed", &grib_accessor_class_data_sh_packed}, {""}, -#line 149 "accessor_class_list.gperf" - {"latlon_increment", &grib_accessor_class_latlon_increment}, - {""}, {""}, {""}, -#line 131 "accessor_class_list.gperf" - {"headers_only", &grib_accessor_class_headers_only}, +#line 47 "accessor_class_list.gperf" + {"count_total", &grib_accessor_class_count_total}, + {""}, {""}, {""}, {""}, {""}, +#line 91 "accessor_class_list.gperf" + {"g1_half_byte_codeflag", &grib_accessor_class_g1_half_byte_codeflag}, {""}, +#line 174 "accessor_class_list.gperf" + {"offset_values", &grib_accessor_class_offset_values}, +#line 151 "accessor_class_list.gperf" + {"latlonvalues", &grib_accessor_class_latlonvalues}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 46 "accessor_class_list.gperf" + {"count_missing", &grib_accessor_class_count_missing}, + {""}, {""}, #line 41 "accessor_class_list.gperf" {"codetable_title", &grib_accessor_class_codetable_title}, -#line 129 "accessor_class_list.gperf" + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 130 "accessor_class_list.gperf" {"gts_header", &grib_accessor_class_gts_header}, - {""}, {""}, {""}, {""}, {""}, -#line 150 "accessor_class_list.gperf" - {"latlonvalues", &grib_accessor_class_latlonvalues}, -#line 31 "accessor_class_list.gperf" - {"bufr_group", &grib_accessor_class_bufr_group}, -#line 11 "accessor_class_list.gperf" - {"abstract_vector", &grib_accessor_class_abstract_vector}, - {""}, {""}, -#line 223 "accessor_class_list.gperf" - {"unpack_bufr_values", &grib_accessor_class_unpack_bufr_values}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 42 "accessor_class_list.gperf" - {"codetable_units", &grib_accessor_class_codetable_units}, -#line 99 "accessor_class_list.gperf" - {"g1fcperiod", &grib_accessor_class_g1fcperiod}, - {""}, {""}, {""}, #line 45 "accessor_class_list.gperf" {"count_file", &grib_accessor_class_count_file}, +#line 224 "accessor_class_list.gperf" + {"unpack_bufr_values", &grib_accessor_class_unpack_bufr_values}, + {""}, {""}, {""}, {""}, +#line 102 "accessor_class_list.gperf" + {"g1monthlydate", &grib_accessor_class_g1monthlydate}, + {""}, +#line 132 "accessor_class_list.gperf" + {"headers_only", &grib_accessor_class_headers_only}, +#line 42 "accessor_class_list.gperf" + {"codetable_units", &grib_accessor_class_codetable_units}, {""}, {""}, {""}, -#line 91 "accessor_class_list.gperf" - {"g1_increment", &grib_accessor_class_g1_increment}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 134 "accessor_class_list.gperf" - {"ifs_param", &grib_accessor_class_ifs_param}, - {""}, {""}, {""}, {""}, {""}, {""}, +#line 155 "accessor_class_list.gperf" + {"long_vector", &grib_accessor_class_long_vector}, + {""}, {""}, +#line 11 "accessor_class_list.gperf" + {"abstract_vector", &grib_accessor_class_abstract_vector}, + {""}, +#line 150 "accessor_class_list.gperf" + {"latlon_increment", &grib_accessor_class_latlon_increment}, + {""}, #line 37 "accessor_class_list.gperf" {"change_scanning_direction", &grib_accessor_class_change_scanning_direction}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 46 "accessor_class_list.gperf" - {"count_missing", &grib_accessor_class_count_missing}, -#line 90 "accessor_class_list.gperf" - {"g1_half_byte_codeflag", &grib_accessor_class_g1_half_byte_codeflag}, - {""}, {""}, {""}, -#line 170 "accessor_class_list.gperf" + {""}, {""}, {""}, {""}, {""}, +#line 171 "accessor_class_list.gperf" {"octahedral_gaussian", &grib_accessor_class_octahedral_gaussian}, + {""}, {""}, +#line 31 "accessor_class_list.gperf" + {"bufr_group", &grib_accessor_class_bufr_group}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 135 "accessor_class_list.gperf" + {"ifs_param", &grib_accessor_class_ifs_param}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 98 "accessor_class_list.gperf" + {"g1day_of_the_year_date", &grib_accessor_class_g1day_of_the_year_date}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, #line 10 "accessor_class_list.gperf" {"abstract_long_vector", &grib_accessor_class_abstract_long_vector}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 101 "accessor_class_list.gperf" - {"g1monthlydate", &grib_accessor_class_g1monthlydate}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 130 "accessor_class_list.gperf" - {"hash_array", &grib_accessor_class_hash_array}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 89 "accessor_class_list.gperf" + {""}, +#line 106 "accessor_class_list.gperf" + {"g1param", &grib_accessor_class_g1param}, + {""}, {""}, {""}, +#line 104 "accessor_class_list.gperf" + {"g1number_of_coded_values_sh_simple", &grib_accessor_class_g1number_of_coded_values_sh_simple}, +#line 103 "accessor_class_list.gperf" + {"g1number_of_coded_values_sh_complex", &grib_accessor_class_g1number_of_coded_values_sh_complex}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 90 "accessor_class_list.gperf" {"from_scale_factor_scaled_value", &grib_accessor_class_from_scale_factor_scaled_value}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 131 "accessor_class_list.gperf" + {"hash_array", &grib_accessor_class_hash_array}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 101 "accessor_class_list.gperf" + {"g1forecastmonth", &grib_accessor_class_g1forecastmonth}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 97 "accessor_class_list.gperf" - {"g1day_of_the_year_date", &grib_accessor_class_g1day_of_the_year_date}, +#line 108 "accessor_class_list.gperf" + {"g1verificationdate", &grib_accessor_class_g1verificationdate}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 38 "accessor_class_list.gperf" + {"check_internal_version", &grib_accessor_class_check_internal_version}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 38 "accessor_class_list.gperf" - {"check_internal_version", &grib_accessor_class_check_internal_version}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 105 "accessor_class_list.gperf" - {"g1param", &grib_accessor_class_g1param}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 103 "accessor_class_list.gperf" - {"g1number_of_coded_values_sh_simple", &grib_accessor_class_g1number_of_coded_values_sh_simple}, -#line 102 "accessor_class_list.gperf" - {"g1number_of_coded_values_sh_complex", &grib_accessor_class_g1number_of_coded_values_sh_complex}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 107 "accessor_class_list.gperf" - {"g1verificationdate", &grib_accessor_class_g1verificationdate}, - {""}, {""}, -#line 109 "accessor_class_list.gperf" +#line 110 "accessor_class_list.gperf" {"g2_chemical", &grib_accessor_class_g2_chemical}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 183 "accessor_class_list.gperf" - {"reference_value_error", &grib_accessor_class_reference_value_error}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 100 "accessor_class_list.gperf" - {"g1forecastmonth", &grib_accessor_class_g1forecastmonth} + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 184 "accessor_class_list.gperf" + {"reference_value_error", &grib_accessor_class_reference_value_error} }; const struct accessor_class_hash * diff --git a/src/grib_accessor_factory.h b/src/grib_accessor_factory.h index 5c31c9872..7f8ba46e2 100644 --- a/src/grib_accessor_factory.h +++ b/src/grib_accessor_factory.h @@ -45,7 +45,6 @@ { "data_apply_gdsnotpresent", &grib_accessor_class_data_apply_gdsnotpresent, }, { "data_ccsds_packing", &grib_accessor_class_data_ccsds_packing, }, { "data_complex_packing", &grib_accessor_class_data_complex_packing, }, -{ "data_g2bifourier_packing", &grib_accessor_class_data_g2bifourier_packing, }, { "data_constant_field", &grib_accessor_class_data_constant_field, }, { "data_dummy_field", &grib_accessor_class_data_dummy_field, }, { "data_g1complex_packing", &grib_accessor_class_data_g1complex_packing, }, @@ -57,6 +56,7 @@ { "data_g1shsimple_packing", &grib_accessor_class_data_g1shsimple_packing, }, { "data_g1simple_packing", &grib_accessor_class_data_g1simple_packing, }, { "data_g22order_packing", &grib_accessor_class_data_g22order_packing, }, +{ "data_g2bifourier_packing", &grib_accessor_class_data_g2bifourier_packing, }, { "data_g2complex_packing", &grib_accessor_class_data_g2complex_packing, }, { "data_g2secondary_bitmap", &grib_accessor_class_data_g2secondary_bitmap, }, { "data_g2shsimple_packing", &grib_accessor_class_data_g2shsimple_packing, }, diff --git a/src/grib_accessor_factory_hash_list b/src/grib_accessor_factory_hash_list index b1f3a7ca1..03234ba2a 100644 --- a/src/grib_accessor_factory_hash_list +++ b/src/grib_accessor_factory_hash_list @@ -57,6 +57,7 @@ data_g1secondary_bitmap, &grib_accessor_class_data_g1secondary_bitmap data_g1shsimple_packing, &grib_accessor_class_data_g1shsimple_packing data_g1simple_packing, &grib_accessor_class_data_g1simple_packing data_g22order_packing, &grib_accessor_class_data_g22order_packing +data_g2bifourier_packing, &grib_accessor_class_data_g2bifourier_packing data_g2complex_packing, &grib_accessor_class_data_g2complex_packing data_g2secondary_bitmap, &grib_accessor_class_data_g2secondary_bitmap data_g2shsimple_packing, &grib_accessor_class_data_g2shsimple_packing diff --git a/src/grib_hash_keys.c b/src/grib_hash_keys.c index 249f2d84f..0d698dce4 100644 --- a/src/grib_hash_keys.c +++ b/src/grib_hash_keys.c @@ -1,6 +1,6 @@ /* C code produced by gperf version 3.0.4 */ /* Command-line: gperf -l -C -I -t -G -H hash_keys -N grib_keys_hash_get -m 3 ../tests/keys */ -/* Computed positions: -k'1-16,19-20,23-25,27,$' */ +/* Computed positions: -k'1-16,19-20,23-27,$' */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ @@ -36,12 +36,12 @@ error "gperf generated tables don't work with this execution character set. Plea struct grib_keys_hash { char* name; int id;}; #include -#define TOTAL_KEYWORDS 2315 +#define TOTAL_KEYWORDS 2345 #define MIN_WORD_LENGTH 1 #define MAX_WORD_LENGTH 74 -#define MIN_HASH_VALUE 1 -#define MAX_HASH_VALUE 32806 -/* maximum key range = 32806, duplicates = 0 */ +#define MIN_HASH_VALUE 3 +#define MAX_HASH_VALUE 30506 +/* maximum key range = 30504, duplicates = 0 */ #ifdef __GNUC__ @@ -55,32 +55,32 @@ hash_keys (const char *str, unsigned int len) { static const unsigned short asso_values[] = { - 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, - 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, - 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, - 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, - 32807, 32807, 0, 32807, 32807, 0, 32807, 32807, 33, 1938, - 2217, 2394, 1965, 1888, 2775, 1268, 419, 1, 2, 0, - 0, 0, 32807, 32807, 32807, 1574, 4045, 1536, 164, 1783, - 42, 3000, 2985, 848, 2407, 531, 655, 2071, 1625, 35, - 935, 395, 145, 178, 84, 4757, 1023, 2612, 1397, 3943, - 36, 0, 0, 32807, 0, 2961, 32807, 3, 335, 51, - 0, 5, 310, 95, 99, 4, 2121, 734, 73, 4, - 0, 10, 21, 695, 2, 11, 2, 60, 172, 29, - 432, 55, 1842, 56, 1319, 8, 32807, 32807, 32807, 32807, - 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, - 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, - 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, - 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, - 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, - 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, - 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, - 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, - 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, - 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, - 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, - 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, - 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807, 32807 + 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, + 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, + 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, + 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, + 30507, 30507, 1, 30507, 30507, 1, 30507, 30507, 61, 1915, + 1983, 2282, 2412, 1777, 2535, 2422, 664, 95, 4, 1, + 2, 1, 30507, 30507, 30507, 1712, 3978, 1713, 109, 865, + 381, 751, 3460, 1981, 1946, 1685, 434, 1555, 345, 176, + 997, 184, 418, 150, 86, 4560, 595, 2054, 446, 3296, + 424, 1, 1, 30507, 1, 1795, 30507, 5, 26, 59, + 1, 2, 334, 130, 73, 10, 1800, 2391, 78, 7, + 1, 20, 29, 574, 1, 8, 4, 61, 174, 564, + 124, 22, 614, 95, 897, 4, 30507, 30507, 30507, 30507, + 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, + 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, + 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, + 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, + 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, + 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, + 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, + 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, + 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, + 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, + 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, + 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, + 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507 }; register int hval = len; @@ -90,6 +90,8 @@ hash_keys (const char *str, unsigned int len) hval += asso_values[(unsigned char)str[26]]; /*FALLTHROUGH*/ case 26: + hval += asso_values[(unsigned char)str[25]]; + /*FALLTHROUGH*/ case 25: hval += asso_values[(unsigned char)str[24]]; /*FALLTHROUGH*/ @@ -163,969 +165,879 @@ hash_keys (const char *str, unsigned int len) static const unsigned char lengthtable[] = { - 0, 1, 2, 3, 2, 1, 2, 2, 2, 1, 0, 3, 0, 2, - 0, 4, 0, 0, 5, 4, 0, 4, 0, 3, 4, 0, 0, 6, - 5, 0, 5, 4, 7, 8, 0, 4, 0, 6, 0, 5, 0, 9, - 5, 0, 4, 0, 0, 9, 0, 0, 0, 3, 5, 0, 3, 7, - 0, 9, 9, 0, 7, 3, 0, 0, 4, 6, 0, 0, 0, 0, - 0, 4, 0, 0, 0, 0, 6, 4, 4, 10, 10, 5, 10, 6, - 0, 7, 6, 9, 0, 0, 7, 7, 4, 5, 0, 0, 0, 6, - 6, 0, 0, 0, 10, 0, 0, 4, 6, 0, 0, 8, 8, 0, - 2, 0, 7, 5, 3, 9, 8, 5, 8, 6, 10, 5, 6, 0, - 6, 0, 0, 7, 5, 0, 0, 0, 3, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 10, 0, 5, 0, 0, 0, 0, - 0, 7, 0, 0, 10, 0, 0, 4, 8, 0, 0, 5, 0, 0, - 5, 2, 5, 6, 8, 7, 2, 7, 0, 4, 0, 9, 9, 10, - 0, 5, 0, 0, 8, 0, 10, 0, 0, 1, 6, 8, 0, 8, - 9, 0, 8, 7, 0, 0, 5, 0, 0, 0, 0, 0, 9, 10, - 8, 7, 5, 0, 0, 10, 10, 8, 0, 5, 0, 11, 10, 0, - 0, 7, 6, 0, 10, 0, 13, 6, 0, 0, 14, 0, 0, 0, - 0, 7, 0, 10, 7, 0, 8, 0, 10, 0, 0, 0, 0, 9, - 0, 0, 2, 8, 9, 10, 11, 0, 0, 0, 0, 9, 0, 0, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 8, - 0, 10, 9, 9, 0, 0, 0, 2, 5, 10, 0, 0, 0, 0, - 0, 11, 8, 7, 0, 0, 0, 9, 0, 0, 0, 0, 0, 12, - 0, 0, 9, 7, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, - 10, 0, 8, 8, 0, 0, 0, 0, 11, 0, 14, 0, 12, 0, - 0, 0, 0, 7, 0, 6, 4, 0, 0, 7, 17, 0, 10, 13, - 0, 0, 0, 20, 0, 8, 6, 0, 0, 0, 10, 0, 9, 0, - 7, 0, 0, 2, 3, 10, 0, 0, 10, 8, 0, 0, 0, 0, - 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 11, 11, 8, 0, - 0, 0, 0, 0, 6, 14, 0, 9, 0, 4, 0, 0, 10, 0, - 5, 0, 0, 0, 13, 8, 5, 0, 6, 0, 11, 0, 0, 0, - 0, 11, 0, 0, 0, 3, 4, 0, 6, 0, 0, 0, 13, 13, - 12, 0, 0, 8, 0, 11, 0, 0, 2, 0, 0, 0, 0, 0, - 0, 11, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, - 0, 15, 0, 0, 14, 0, 0, 0, 11, 0, 0, 0, 0, 17, - 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, - 0, 0, 0, 11, 0, 8, 10, 6, 0, 0, 0, 6, 0, 0, - 0, 0, 0, 9, 5, 13, 0, 0, 0, 6, 7, 0, 18, 0, - 0, 0, 0, 0, 7, 10, 0, 0, 0, 9, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 24, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 11, - 11, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 15, - 0, 0, 0, 14, 0, 15, 4, 0, 7, 0, 0, 13, 0, 0, - 18, 0, 6, 12, 18, 0, 0, 0, 0, 10, 0, 0, 0, 13, - 0, 0, 0, 0, 0, 12, 0, 0, 12, 0, 12, 10, 0, 0, - 0, 0, 0, 12, 0, 0, 0, 0, 0, 12, 0, 0, 8, 8, - 0, 0, 0, 0, 0, 0, 11, 0, 0, 10, 23, 0, 0, 18, - 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, - 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 6, 5, 18, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, - 9, 0, 13, 3, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 14, 0, 30, 0, 11, 13, 0, 0, 0, 0, 17, 0, 6, 0, - 21, 10, 0, 0, 0, 5, 0, 25, 0, 11, 15, 0, 0, 0, - 0, 15, 12, 0, 13, 0, 0, 0, 13, 12, 0, 14, 10, 19, - 0, 0, 14, 0, 17, 16, 0, 16, 0, 0, 0, 0, 0, 0, - 0, 0, 14, 23, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 10, 0, 0, 17, 0, 0, 0, 0, - 31, 0, 10, 0, 0, 0, 4, 6, 0, 0, 14, 0, 0, 19, - 4, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 8, - 15, 0, 11, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, - 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 8, - 0, 8, 0, 0, 20, 0, 0, 0, 0, 9, 0, 0, 2, 0, - 0, 0, 0, 0, 16, 0, 3, 0, 6, 0, 0, 17, 0, 0, - 0, 0, 0, 0, 9, 0, 7, 2, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 22, 0, 14, 0, 0, 0, - 0, 0, 0, 0, 14, 0, 0, 30, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 43, 8, 0, 0, 0, 10, 0, 0, 0, 24, - 0, 0, 0, 0, 12, 0, 18, 0, 13, 0, 0, 0, 0, 3, - 0, 18, 0, 0, 0, 12, 3, 12, 0, 0, 0, 0, 27, 0, - 0, 0, 0, 0, 0, 0, 0, 10, 0, 14, 7, 0, 0, 0, - 9, 0, 0, 0, 0, 6, 0, 0, 0, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10, 0, 0, 0, 9, 0, 17, 0, 0, 13, 3, 0, 0, 0, - 0, 0, 8, 20, 0, 0, 22, 0, 2, 0, 0, 11, 0, 8, - 0, 0, 0, 14, 27, 0, 12, 0, 0, 0, 0, 0, 21, 0, - 0, 37, 0, 0, 15, 0, 0, 0, 0, 15, 0, 0, 0, 1, - 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, - 0, 0, 23, 22, 0, 0, 23, 0, 0, 0, 0, 0, 13, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, - 0, 0, 0, 15, 5, 0, 0, 48, 15, 0, 23, 9, 0, 0, - 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, - 17, 0, 22, 0, 0, 0, 0, 0, 0, 14, 0, 23, 0, 0, - 0, 12, 12, 0, 15, 13, 0, 0, 0, 0, 0, 12, 0, 0, - 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 15, 0, 0, 0, - 19, 0, 0, 0, 0, 0, 17, 11, 19, 0, 0, 0, 0, 31, - 0, 23, 0, 0, 19, 19, 24, 0, 15, 0, 0, 21, 15, 0, - 10, 0, 0, 0, 0, 0, 37, 0, 0, 0, 27, 15, 0, 0, - 0, 0, 0, 0, 15, 0, 0, 0, 14, 21, 15, 0, 0, 0, - 0, 0, 40, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 17, - 0, 9, 16, 14, 0, 0, 0, 19, 0, 34, 18, 0, 0, 0, - 0, 16, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, - 0, 0, 0, 13, 0, 0, 0, 0, 0, 27, 8, 0, 16, 0, - 14, 0, 0, 0, 0, 0, 11, 0, 13, 0, 0, 16, 0, 0, - 0, 0, 15, 0, 0, 14, 22, 0, 0, 0, 0, 0, 19, 0, - 0, 0, 0, 0, 35, 0, 0, 32, 0, 0, 0, 27, 39, 0, - 9, 0, 0, 0, 0, 0, 13, 0, 13, 0, 0, 22, 24, 0, - 0, 0, 0, 0, 14, 25, 0, 10, 0, 0, 0, 0, 0, 0, - 13, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 20, 15, 0, 0, 0, 0, 0, - 15, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 18, 24, 0, 0, - 0, 0, 0, 0, 22, 2, 0, 13, 17, 0, 11, 0, 13, 0, - 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, - 0, 0, 3, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 14, 0, 0, 0, 0, 0, 13, 0, 0, 0, 23, - 25, 0, 20, 0, 0, 13, 0, 0, 23, 0, 0, 0, 26, 0, - 21, 34, 11, 0, 0, 0, 4, 14, 0, 0, 0, 0, 0, 18, - 0, 0, 0, 30, 14, 16, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 23, 0, 0, 0, 31, 0, 18, 0, 31, 0, 0, 12, 0, - 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, - 0, 0, 0, 0, 0, 13, 0, 4, 0, 0, 12, 0, 0, 18, - 0, 0, 23, 0, 13, 0, 16, 0, 0, 42, 0, 0, 0, 12, - 0, 21, 0, 0, 0, 0, 0, 0, 0, 15, 8, 0, 28, 0, - 0, 18, 0, 0, 0, 0, 0, 0, 0, 10, 19, 0, 30, 0, - 39, 0, 0, 0, 17, 15, 0, 0, 0, 0, 0, 0, 42, 6, - 21, 0, 0, 0, 0, 27, 0, 0, 11, 11, 0, 0, 16, 0, - 0, 35, 0, 0, 0, 0, 17, 2, 0, 0, 0, 2, 23, 0, - 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 17, 0, 7, 0, 21, 0, 0, 16, - 6, 22, 0, 0, 0, 0, 18, 0, 9, 0, 0, 6, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 29, 11, 0, 0, - 0, 0, 27, 19, 0, 26, 0, 0, 0, 13, 0, 0, 0, 11, - 0, 0, 12, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, - 0, 6, 0, 0, 10, 0, 0, 0, 0, 17, 0, 9, 0, 0, - 13, 2, 0, 14, 12, 0, 0, 9, 0, 3, 0, 0, 0, 0, - 0, 8, 0, 0, 14, 0, 11, 0, 44, 0, 0, 29, 0, 9, - 0, 6, 10, 25, 0, 0, 0, 0, 0, 14, 0, 9, 12, 0, - 13, 0, 0, 0, 25, 0, 0, 0, 26, 3, 0, 0, 0, 13, - 0, 17, 18, 2, 0, 0, 25, 0, 18, 27, 11, 27, 0, 0, - 0, 0, 13, 0, 9, 14, 0, 0, 22, 10, 12, 10, 16, 18, - 23, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, - 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 11, - 14, 20, 0, 0, 0, 0, 0, 13, 0, 1, 0, 4, 12, 0, + 0, 0, 0, 1, 0, 2, 2, 3, 2, 1, 0, 2, 2, 2, + 0, 1, 0, 0, 4, 0, 0, 4, 3, 0, 4, 0, 0, 5, + 3, 4, 0, 5, 0, 4, 0, 4, 5, 0, 4, 0, 6, 4, + 0, 5, 0, 0, 8, 2, 0, 0, 3, 6, 5, 3, 0, 0, + 7, 4, 7, 5, 7, 0, 0, 4, 6, 0, 9, 9, 0, 9, + 9, 0, 0, 0, 4, 3, 4, 6, 0, 0, 0, 0, 10, 0, + 10, 7, 6, 0, 4, 5, 0, 6, 5, 6, 7, 0, 0, 5, + 6, 0, 6, 5, 0, 0, 6, 6, 0, 0, 0, 0, 10, 0, + 7, 10, 6, 0, 6, 7, 9, 8, 7, 0, 0, 7, 5, 5, + 0, 8, 0, 0, 8, 2, 0, 0, 0, 0, 0, 0, 10, 3, + 0, 6, 7, 4, 0, 8, 5, 4, 7, 7, 9, 0, 8, 0, + 5, 2, 0, 9, 0, 0, 4, 0, 0, 3, 8, 0, 0, 0, + 0, 0, 8, 5, 0, 0, 0, 8, 7, 0, 0, 6, 0, 0, + 8, 5, 10, 9, 7, 2, 10, 0, 9, 5, 8, 6, 5, 0, + 6, 7, 0, 0, 8, 10, 11, 0, 0, 0, 0, 10, 10, 0, + 0, 0, 7, 0, 0, 0, 0, 0, 0, 10, 10, 0, 6, 0, + 7, 7, 5, 0, 5, 0, 10, 8, 0, 9, 13, 7, 0, 0, + 10, 0, 11, 0, 0, 8, 0, 9, 0, 0, 0, 0, 0, 2, + 0, 10, 0, 11, 10, 0, 0, 10, 2, 1, 0, 3, 0, 0, + 6, 0, 0, 14, 9, 0, 17, 0, 0, 0, 0, 8, 0, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, + 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 7, 10, 9, 0, + 0, 0, 0, 0, 0, 11, 7, 0, 0, 10, 9, 0, 7, 0, + 0, 5, 0, 0, 0, 0, 7, 0, 0, 0, 0, 10, 10, 0, + 9, 11, 0, 6, 0, 0, 6, 0, 0, 0, 0, 9, 0, 2, + 0, 0, 0, 0, 10, 0, 6, 11, 7, 2, 0, 0, 0, 0, + 0, 0, 0, 2, 8, 8, 0, 11, 0, 0, 0, 10, 0, 12, + 0, 2, 0, 0, 0, 13, 10, 0, 10, 0, 2, 12, 0, 2, + 2, 12, 0, 0, 11, 0, 11, 2, 0, 0, 0, 0, 13, 10, + 8, 0, 0, 0, 0, 11, 0, 0, 13, 9, 0, 5, 0, 11, + 0, 6, 0, 0, 0, 0, 10, 0, 0, 13, 4, 3, 0, 4, + 5, 11, 6, 0, 0, 0, 0, 0, 3, 0, 0, 17, 12, 0, + 13, 0, 12, 3, 0, 3, 0, 9, 0, 0, 0, 0, 5, 15, + 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 0, 9, 0, 2, 0, 5, 10, 9, 0, 0, 0, 2, 0, + 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 3, 0, 6, 0, + 0, 0, 2, 0, 20, 0, 0, 8, 0, 0, 0, 0, 12, 0, + 8, 2, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, + 0, 19, 0, 11, 8, 18, 6, 0, 3, 0, 3, 0, 6, 0, + 10, 0, 10, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 24, 0, 0, 0, 0, 0, 0, 5, 0, 13, 0, 0, 0, + 0, 0, 0, 6, 7, 0, 0, 14, 0, 0, 5, 0, 0, 0, + 9, 8, 15, 0, 6, 0, 0, 2, 0, 0, 0, 14, 0, 10, + 12, 0, 0, 0, 0, 13, 0, 0, 9, 3, 23, 0, 11, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 0, 17, 11, + 0, 12, 0, 0, 0, 0, 0, 12, 0, 14, 0, 0, 0, 0, + 0, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, + 0, 0, 3, 4, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 17, 16, 21, 10, 0, 4, 0, 0, 2, 0, + 0, 0, 0, 0, 10, 1, 8, 12, 17, 0, 0, 13, 0, 0, + 0, 0, 0, 10, 13, 0, 0, 0, 0, 0, 0, 0, 6, 21, + 0, 0, 13, 0, 0, 0, 8, 0, 13, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 9, 0, 0, 0, 0, 0, 0, 0, + 10, 0, 3, 8, 3, 8, 0, 0, 0, 0, 0, 0, 0, 10, + 12, 0, 19, 12, 6, 0, 0, 0, 0, 0, 0, 0, 23, 0, + 9, 0, 15, 15, 14, 0, 15, 0, 0, 0, 0, 0, 10, 0, + 0, 12, 0, 0, 0, 0, 0, 0, 12, 8, 0, 0, 0, 11, + 9, 0, 15, 8, 11, 0, 0, 0, 0, 25, 0, 0, 0, 0, + 13, 0, 0, 0, 0, 0, 14, 0, 0, 0, 24, 13, 15, 0, + 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, + 0, 10, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, + 0, 13, 0, 0, 0, 0, 0, 0, 0, 12, 0, 9, 0, 0, + 0, 0, 9, 0, 6, 10, 0, 0, 0, 0, 26, 0, 13, 0, + 0, 0, 0, 0, 13, 0, 0, 0, 0, 13, 20, 0, 13, 0, + 0, 0, 0, 0, 0, 0, 0, 11, 0, 10, 0, 15, 10, 0, + 0, 0, 0, 0, 0, 3, 0, 14, 0, 0, 0, 0, 13, 18, + 0, 0, 0, 0, 11, 0, 12, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, - 22, 0, 0, 0, 0, 0, 20, 0, 0, 0, 11, 0, 0, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, - 0, 0, 0, 0, 0, 15, 0, 13, 20, 0, 0, 0, 0, 0, - 0, 0, 0, 18, 0, 32, 0, 0, 34, 0, 0, 17, 0, 19, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 18, 16, - 0, 22, 19, 0, 0, 0, 0, 0, 10, 9, 15, 0, 21, 0, - 0, 0, 38, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 16, - 0, 0, 30, 0, 0, 0, 0, 6, 18, 0, 0, 0, 13, 0, - 0, 14, 0, 0, 0, 0, 0, 24, 0, 15, 0, 0, 0, 31, - 0, 11, 0, 0, 0, 0, 16, 15, 26, 0, 0, 13, 0, 0, - 0, 0, 0, 0, 18, 0, 0, 0, 16, 0, 8, 0, 0, 0, - 19, 0, 0, 0, 10, 0, 11, 0, 15, 0, 0, 31, 0, 20, - 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 21, 0, 26, 0, - 0, 20, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 28, 23, 0, 0, 0, 0, 22, 0, 9, 0, + 23, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 13, 0, 0, 0, 17, 9, 0, 0, 0, 0, 0, 0, + 0, 15, 0, 0, 0, 13, 0, 0, 0, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 6, + 13, 0, 0, 0, 0, 0, 15, 2, 0, 11, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 14, 0, 11, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 18, 0, 13, 0, 13, 0, 0, 0, 16, + 0, 0, 9, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 12, + 0, 7, 0, 0, 13, 12, 11, 0, 0, 11, 15, 0, 0, 0, + 0, 0, 0, 0, 10, 8, 13, 13, 0, 9, 0, 12, 0, 0, + 11, 0, 13, 13, 0, 0, 0, 14, 0, 0, 0, 14, 0, 8, + 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 9, 0, 0, 0, 20, 0, 0, 0, 22, 22, 0, 13, 14, + 0, 13, 0, 0, 0, 0, 3, 0, 0, 12, 10, 0, 17, 15, + 27, 0, 0, 0, 0, 0, 20, 0, 15, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 28, 11, 11, - 0, 0, 0, 0, 0, 14, 13, 30, 0, 0, 0, 0, 11, 0, - 0, 0, 17, 17, 0, 0, 11, 0, 0, 19, 0, 0, 0, 0, - 0, 22, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 11, 0, 0, 9, 0, 0, 17, 0, 11, 17, 12, 0, 12, 0, - 16, 0, 11, 0, 16, 0, 0, 0, 0, 0, 9, 17, 0, 0, - 0, 0, 9, 9, 20, 17, 0, 0, 0, 0, 0, 21, 23, 16, - 12, 0, 0, 0, 26, 0, 21, 21, 0, 12, 0, 0, 0, 0, - 0, 13, 0, 0, 23, 0, 0, 2, 0, 13, 0, 0, 0, 0, - 13, 0, 0, 19, 0, 0, 14, 9, 0, 0, 0, 0, 0, 12, - 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, - 24, 19, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, - 0, 2, 16, 0, 37, 14, 0, 0, 0, 17, 17, 0, 0, 0, - 0, 0, 0, 0, 0, 34, 34, 12, 0, 0, 0, 0, 10, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 12, 14, - 0, 0, 0, 0, 0, 11, 21, 26, 0, 0, 0, 25, 0, 0, - 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, - 13, 0, 0, 0, 0, 0, 0, 0, 13, 0, 18, 0, 0, 0, - 0, 0, 0, 14, 14, 0, 19, 0, 13, 13, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 31, 29, 0, 25, 0, 0, 14, 0, - 0, 0, 35, 15, 0, 0, 19, 0, 0, 0, 0, 6, 0, 24, - 0, 12, 14, 0, 0, 19, 0, 2, 0, 30, 26, 0, 0, 14, - 0, 0, 0, 0, 0, 0, 31, 10, 0, 10, 0, 10, 0, 0, - 0, 0, 24, 0, 0, 18, 12, 0, 14, 0, 12, 0, 11, 0, - 0, 0, 9, 0, 0, 12, 0, 0, 0, 16, 30, 0, 0, 0, - 0, 0, 0, 13, 0, 0, 0, 20, 0, 0, 0, 0, 0, 2, - 0, 0, 0, 27, 23, 24, 0, 0, 0, 10, 14, 0, 0, 0, - 33, 0, 23, 0, 0, 0, 0, 0, 13, 0, 19, 0, 0, 0, - 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 2, 9, - 0, 0, 0, 0, 12, 16, 0, 0, 20, 0, 0, 23, 0, 9, - 17, 0, 0, 0, 0, 14, 13, 0, 0, 0, 11, 0, 19, 0, - 0, 0, 0, 0, 0, 34, 19, 0, 0, 0, 0, 0, 32, 0, - 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, - 16, 15, 0, 0, 0, 0, 0, 31, 0, 0, 17, 0, 25, 0, - 0, 0, 18, 0, 0, 0, 14, 0, 30, 8, 0, 0, 0, 0, - 13, 0, 0, 0, 29, 32, 0, 15, 0, 0, 0, 9, 0, 15, - 20, 0, 22, 0, 0, 0, 0, 42, 15, 15, 26, 15, 0, 0, - 21, 0, 0, 21, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 30, 15, 0, 0, - 0, 0, 26, 0, 0, 0, 0, 0, 0, 14, 42, 0, 0, 0, - 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 3, 0, - 0, 0, 0, 23, 23, 0, 0, 17, 0, 22, 0, 12, 0, 0, - 24, 0, 0, 38, 15, 0, 0, 16, 13, 35, 0, 16, 0, 14, - 0, 0, 0, 0, 0, 0, 12, 22, 0, 21, 0, 0, 0, 18, - 0, 0, 0, 0, 20, 0, 0, 2, 0, 0, 13, 0, 0, 12, - 0, 0, 0, 23, 27, 0, 0, 0, 0, 17, 0, 0, 0, 15, - 23, 31, 33, 13, 0, 0, 12, 0, 0, 22, 0, 18, 15, 31, - 0, 0, 16, 42, 0, 0, 17, 18, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 22, 0, 0, - 26, 0, 0, 0, 0, 19, 0, 23, 0, 0, 0, 0, 0, 0, - 0, 22, 0, 0, 24, 29, 0, 0, 0, 30, 0, 20, 20, 0, - 14, 0, 0, 0, 29, 0, 0, 0, 0, 0, 37, 0, 31, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15, 0, 15, 0, 0, 0, 0, 21, 0, 31, 7, 0, 0, 16, - 0, 0, 0, 0, 16, 0, 0, 0, 0, 18, 0, 0, 0, 13, - 18, 23, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 15, 9, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, - 0, 12, 0, 12, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 12, 0, 0, 17, 0, 0, 0, 10, 32, 0, 0, - 0, 0, 11, 0, 0, 0, 0, 0, 32, 0, 0, 0, 18, 0, - 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 22, 0, 0, 0, 20, 0, 24, 24, 0, 0, 12, 0, 0, 0, - 0, 25, 0, 0, 10, 19, 0, 0, 0, 21, 0, 32, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 8, 0, 13, 0, - 0, 0, 9, 0, 29, 0, 0, 0, 0, 17, 0, 0, 10, 0, - 0, 0, 0, 13, 0, 0, 0, 8, 18, 0, 0, 0, 27, 18, - 0, 18, 0, 27, 0, 0, 0, 24, 22, 0, 0, 0, 0, 8, - 22, 0, 0, 10, 0, 0, 0, 0, 0, 10, 39, 40, 0, 15, - 5, 0, 0, 0, 0, 11, 0, 12, 0, 0, 0, 12, 0, 0, - 0, 0, 32, 13, 10, 0, 0, 0, 8, 0, 0, 0, 17, 15, - 13, 15, 26, 0, 0, 0, 0, 0, 0, 2, 0, 10, 14, 14, - 20, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 29, 16, 0, - 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 15, 0, 0, - 12, 0, 15, 15, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, - 0, 0, 23, 0, 0, 12, 10, 28, 0, 0, 0, 10, 8, 0, - 0, 0, 0, 10, 9, 0, 0, 0, 0, 11, 0, 0, 0, 31, - 0, 20, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 19, - 0, 0, 16, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 11, 25, 0, 27, 0, 26, 0, 14, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 17, 0, 0, 0, 0, 0, 0, 0, 15, 9, - 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, - 16, 0, 9, 0, 0, 0, 0, 23, 9, 6, 0, 11, 0, 0, - 13, 0, 0, 0, 18, 0, 0, 0, 0, 16, 0, 0, 17, 26, - 37, 0, 0, 12, 0, 0, 0, 0, 30, 25, 0, 0, 21, 21, - 0, 22, 0, 0, 0, 7, 0, 0, 0, 32, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 16, 0, 0, 23, - 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 3, 0, 0, 0, - 0, 24, 10, 0, 0, 0, 0, 11, 14, 0, 0, 13, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3, 34, 34, 0, 0, 0, 13, 0, 0, 0, 22, 0, - 0, 0, 0, 0, 0, 0, 0, 11, 14, 0, 0, 3, 0, 0, - 0, 0, 18, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, - 10, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 10, 29, 0, 0, 0, 15, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 11, 25, 17, 0, 16, 0, - 20, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, - 0, 28, 0, 25, 0, 0, 0, 0, 0, 14, 23, 25, 0, 0, - 0, 23, 0, 0, 0, 21, 0, 0, 0, 0, 33, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 33, 0, 14, 13, 18, 0, 0, 14, - 0, 0, 15, 0, 22, 16, 0, 42, 0, 0, 0, 27, 22, 0, - 7, 0, 0, 0, 20, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 19, 36, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, - 0, 0, 23, 16, 0, 0, 14, 14, 0, 0, 0, 0, 0, 24, - 0, 24, 0, 0, 20, 11, 33, 0, 0, 0, 0, 14, 0, 0, - 0, 0, 0, 22, 0, 0, 18, 0, 0, 0, 0, 9, 0, 13, - 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 27, 0, 0, 0, 12, 0, 0, 14, 0, 0, 0, 16, 0, 0, - 30, 34, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 0, 0, 0, 0, 0, 25, 26, 0, 24, 0, 0, 28, 0, - 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, - 24, 0, 12, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 24, 0, 0, 0, - 0, 25, 18, 0, 25, 15, 0, 0, 0, 0, 0, 0, 0, 44, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 20, - 15, 0, 0, 30, 0, 0, 31, 0, 14, 0, 11, 0, 0, 0, - 0, 0, 31, 0, 0, 0, 0, 15, 0, 0, 15, 28, 23, 0, - 0, 20, 0, 0, 15, 15, 0, 0, 0, 0, 0, 0, 14, 28, - 28, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 18, 15, 31, - 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 19, 0, 0, 25, - 12, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 31, 15, 18, - 0, 0, 0, 0, 0, 18, 0, 34, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 8, 22, 30, 0, 0, 0, 0, 0, 30, 0, 0, - 15, 0, 15, 0, 0, 0, 16, 20, 0, 20, 0, 0, 0, 9, - 0, 13, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 23, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 24, 0, - 0, 0, 0, 40, 0, 10, 0, 0, 0, 0, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, - 22, 0, 0, 0, 13, 0, 0, 0, 0, 15, 0, 0, 23, 15, - 15, 0, 14, 2, 18, 8, 26, 33, 0, 0, 0, 0, 0, 0, - 21, 28, 0, 0, 0, 0, 0, 23, 0, 26, 0, 2, 0, 16, - 25, 0, 0, 0, 0, 0, 28, 15, 25, 0, 0, 12, 0, 0, - 0, 6, 0, 22, 0, 12, 0, 0, 0, 0, 0, 0, 12, 0, - 15, 13, 0, 8, 20, 0, 15, 0, 0, 16, 0, 0, 0, 0, - 0, 0, 28, 0, 0, 13, 28, 0, 0, 19, 12, 0, 0, 0, - 0, 0, 0, 0, 0, 11, 0, 0, 20, 0, 0, 0, 0, 0, - 0, 0, 23, 0, 23, 0, 14, 0, 0, 0, 9, 0, 73, 74, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 9, - 0, 0, 0, 0, 0, 18, 29, 0, 0, 0, 32, 20, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 26, 0, 0, 23, - 30, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 11, 0, - 24, 0, 18, 0, 0, 0, 17, 29, 11, 24, 0, 27, 16, 1, - 0, 26, 0, 0, 30, 0, 0, 0, 0, 0, 7, 35, 0, 0, - 0, 25, 9, 0, 15, 0, 0, 0, 13, 0, 31, 0, 0, 0, - 0, 0, 9, 0, 29, 0, 0, 0, 14, 0, 0, 0, 37, 3, - 0, 0, 0, 36, 0, 0, 14, 38, 0, 0, 0, 26, 0, 0, - 16, 11, 15, 0, 15, 0, 0, 0, 0, 15, 0, 15, 0, 0, - 0, 0, 0, 0, 13, 11, 0, 0, 0, 15, 13, 0, 0, 0, - 0, 0, 0, 13, 0, 11, 26, 2, 0, 28, 0, 0, 0, 0, - 0, 25, 14, 0, 17, 0, 0, 0, 0, 0, 0, 11, 0, 30, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 30, 0, 15, 0, - 0, 0, 0, 0, 0, 0, 15, 0, 0, 30, 0, 12, 0, 0, - 0, 0, 0, 17, 21, 0, 0, 0, 13, 0, 0, 15, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 10, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 30, - 15, 0, 12, 15, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 11, 24, 0, 0, 0, 11, - 12, 32, 0, 0, 15, 0, 30, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, - 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 28, - 0, 0, 0, 24, 0, 0, 0, 0, 15, 0, 0, 0, 2, 0, - 20, 0, 0, 13, 0, 0, 11, 29, 24, 0, 23, 0, 0, 0, - 0, 15, 0, 0, 0, 26, 11, 25, 11, 0, 0, 0, 0, 0, - 16, 0, 0, 3, 0, 0, 0, 35, 0, 0, 18, 0, 0, 0, - 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 32, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 10, - 0, 0, 0, 22, 0, 0, 0, 0, 14, 0, 0, 0, 0, 11, - 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 4, 0, 0, 0, 3, 0, 6, 4, 21, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 6, - 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 14, 0, 0, 26, 0, 0, 12, 0, 19, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 38, 0, 32, 0, 0, 0, 11, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, - 0, 0, 0, 0, 8, 0, 0, 0, 9, 0, 15, 0, 23, 28, - 35, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 9, 0, 0, - 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 28, 24, - 21, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 24, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 24, 12, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, - 28, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, - 0, 0, 0, 0, 0, 11, 2, 0, 0, 0, 0, 0, 0, 28, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, - 0, 0, 13, 14, 21, 0, 12, 0, 24, 18, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 24, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 28, - 0, 15, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 0, 13, 0, 0, 0, 0, 2, 0, 1, - 13, 0, 22, 0, 15, 0, 15, 3, 0, 0, 0, 9, 0, 0, - 0, 0, 31, 9, 0, 0, 0, 19, 0, 22, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 14, 0, 8, 0, 0, 0, 0, 27, 0, - 0, 0, 0, 16, 0, 0, 0, 15, 26, 0, 21, 0, 13, 0, - 23, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 15, 0, - 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 14, 0, 0, 0, 0, 37, 39, 15, 0, 28, 0, - 0, 30, 0, 0, 0, 0, 0, 0, 22, 0, 10, 0, 0, 0, - 0, 11, 0, 0, 18, 32, 0, 6, 0, 0, 0, 0, 14, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 18, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, - 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, 0, 21, 28, - 0, 0, 0, 0, 13, 0, 0, 0, 30, 0, 0, 0, 33, 0, - 35, 9, 11, 0, 0, 11, 0, 0, 29, 0, 0, 0, 0, 13, - 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 25, 12, 29, - 0, 23, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, - 0, 14, 0, 0, 0, 0, 0, 19, 0, 0, 23, 14, 0, 16, - 0, 15, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 50, 0, - 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 25, 14, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 3, - 18, 0, 4, 0, 0, 19, 3, 7, 6, 4, 0, 0, 0, 13, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 18, - 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 24, 0, 0, - 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 19, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, - 0, 0, 16, 33, 31, 0, 0, 18, 0, 0, 0, 32, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 22, 0, 0, 0, - 0, 0, 22, 41, 0, 0, 18, 0, 0, 0, 31, 0, 0, 0, - 0, 8, 20, 0, 0, 0, 21, 18, 0, 22, 0, 0, 0, 0, - 37, 0, 19, 0, 0, 0, 0, 0, 24, 0, 6, 0, 0, 21, - 22, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 33, 0, - 10, 0, 0, 0, 0, 0, 0, 0, 14, 0, 15, 0, 0, 8, - 0, 0, 29, 19, 0, 0, 0, 0, 22, 0, 0, 2, 0, 0, - 0, 0, 0, 15, 0, 0, 18, 16, 0, 0, 18, 19, 7, 0, - 0, 15, 0, 0, 0, 0, 14, 28, 0, 0, 0, 17, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 16, 0, - 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 13, 18, - 0, 0, 0, 0, 17, 0, 0, 0, 15, 0, 11, 0, 30, 0, - 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 24, 0, 0, - 0, 0, 0, 14, 0, 23, 0, 0, 7, 0, 0, 0, 0, 22, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, - 0, 43, 0, 0, 0, 0, 18, 0, 0, 0, 0, 23, 0, 0, - 0, 0, 37, 0, 0, 0, 34, 0, 0, 22, 0, 0, 0, 7, - 0, 29, 0, 0, 0, 0, 15, 0, 15, 0, 0, 14, 0, 0, - 0, 16, 0, 0, 15, 0, 8, 0, 0, 0, 19, 0, 0, 0, - 0, 2, 21, 0, 0, 0, 35, 0, 17, 15, 0, 25, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 34, 0, 0, 0, 22, 0, 0, 0, 0, 10, 28, 22, 0, - 0, 0, 27, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, - 23, 29, 9, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, - 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 8, 0, 9, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 41, 31, 14, 0, 0, 0, - 0, 0, 0, 18, 0, 0, 0, 0, 0, 10, 0, 0, 0, 15, - 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, - 0, 0, 0, 0, 22, 0, 12, 0, 0, 0, 0, 0, 31, 0, - 0, 0, 0, 19, 0, 14, 0, 0, 0, 0, 35, 0, 0, 0, - 11, 0, 0, 17, 0, 0, 0, 24, 0, 18, 0, 31, 8, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15, 35, 0, 0, 0, 0, - 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, - 17, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, - 0, 22, 13, 0, 0, 0, 0, 23, 0, 0, 0, 0, 14, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 0, 0, 0, 0, 0, 35, 14, 0, 21, 0, 11, 0, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, - 0, 0, 0, 0, 16, 0, 0, 8, 0, 0, 0, 5, 0, 0, - 0, 0, 24, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 25, - 0, 19, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 21, 0, - 0, 32, 0, 32, 0, 0, 0, 21, 18, 0, 19, 0, 0, 0, - 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 15, - 0, 14, 37, 2, 0, 0, 11, 0, 0, 27, 0, 0, 0, 0, - 0, 0, 25, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 24, 0, 0, 0, 0, 0, 24, 25, 0, 0, 0, - 0, 13, 0, 16, 0, 0, 0, 27, 20, 23, 0, 31, 0, 24, - 0, 0, 23, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, - 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 11, 28, 0, - 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 15, 14, 14, 0, - 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 30, - 0, 0, 0, 0, 18, 0, 0, 19, 0, 3, 0, 0, 0, 0, - 0, 0, 0, 23, 0, 28, 0, 0, 0, 26, 29, 0, 0, 17, - 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, - 0, 0, 15, 0, 0, 0, 0, 0, 11, 24, 0, 0, 0, 2, - 0, 0, 0, 0, 0, 15, 0, 30, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 10, 33, 0, 0, 0, 0, - 0, 0, 0, 0, 19, 0, 31, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 8, 35, 28, 30, 0, 0, 0, 0, 0, 0, 15, - 0, 0, 0, 0, 0, 43, 15, 0, 0, 0, 23, 0, 15, 0, - 0, 0, 0, 30, 0, 0, 0, 26, 24, 0, 0, 0, 26, 0, - 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 21, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 3, 0, - 0, 0, 0, 0, 0, 19, 0, 0, 23, 21, 0, 36, 0, 0, - 0, 12, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 36, 0, 13, 0, - 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 14, 0, 0, 0, 0, 19, 0, 0, 0, 0, 24, - 11, 0, 33, 0, 18, 0, 0, 0, 12, 0, 0, 0, 0, 0, - 0, 0, 0, 27, 0, 0, 0, 0, 14, 0, 0, 0, 0, 27, - 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 14, 0, 28, 20, 0, 0, 0, 15, - 0, 14, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, - 0, 0, 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, - 72, 28, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 15, 0, - 0, 0, 0, 0, 28, 0, 0, 0, 19, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 22, 0, 0, 0, 27, 0, 30, 0, 0, 0, 18, - 0, 0, 13, 0, 0, 0, 0, 15, 0, 21, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 16, 0, 0, 0, 0, 33, 26, 36, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 14, - 0, 0, 18, 16, 31, 0, 0, 0, 0, 0, 0, 29, 0, 43, - 0, 0, 0, 0, 29, 0, 0, 0, 12, 19, 14, 0, 0, 0, - 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 11, 0, 0, 29, 0, 0, 11, 0, 0, 0, 18, 0, 0, 0, - 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 15, 18, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 28, 0, 0, 15, 0, 0, 0, 0, - 0, 0, 24, 0, 0, 36, 0, 0, 0, 29, 0, 0, 18, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 16, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 36, 6, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 15, 25, 0, 0, 0, 0, 0, 27, 27, 19, - 0, 0, 0, 0, 0, 0, 0, 24, 26, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0, 15, 38, 0, 0, 0, 0, - 0, 0, 0, 29, 24, 0, 0, 0, 0, 0, 0, 9, 22, 0, - 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 9, - 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 25, 0, 15, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 14, - 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 4, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 28, 9, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, - 13, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 14, 19, 0, - 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 0, 0, 21, 0, 0, 3, 0, - 20, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 10, 23, 0, - 29, 0, 0, 0, 0, 0, 0, 0, 29, 0, 19, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 33, - 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 29, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 11, 25, 0, 0, 0, 0, 0, 0, 0, 0, - 28, 0, 0, 0, 24, 0, 0, 0, 0, 0, 14, 0, 0, 0, - 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, - 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 0, 0, 0, 17, + 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 11, 14, 0, 0, + 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, + 31, 37, 23, 0, 0, 0, 0, 0, 0, 10, 32, 0, 0, 0, + 0, 10, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, + 13, 0, 0, 0, 0, 14, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 32, 0, - 20, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, - 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, - 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 31, 0, 0, 23, 0, 35, 0, 0, 0, 0, 0, 20, 0, - 11, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 16, 0, 0, 22, 0, 0, 16, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, - 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 27, - 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, - 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 16, 30, 0, - 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 10, 0, 0, 20, 0, 9, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 14, 0, 27, - 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, - 0, 28, 0, 0, 0, 0, 15, 0, 0, 0, 63, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 0, 0, 0, - 28, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 34, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 30, 0, 16, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 29, 22, 0, 0, 0, 0, 0, 0, 4, 19, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 11, 3, 0, 12, 0, 0, 0, 2, 31, 14, 0, + 11, 0, 0, 14, 0, 3, 0, 0, 0, 0, 0, 0, 0, 48, + 14, 0, 0, 0, 0, 0, 0, 14, 0, 0, 17, 0, 0, 0, + 0, 23, 0, 0, 0, 0, 0, 17, 19, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 15, 0, + 0, 15, 0, 0, 0, 20, 0, 0, 18, 0, 0, 13, 0, 0, + 0, 0, 19, 17, 19, 14, 9, 24, 0, 0, 3, 0, 16, 0, + 0, 18, 0, 11, 0, 0, 0, 0, 0, 0, 8, 0, 14, 15, + 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 19, 0, + 0, 19, 16, 0, 0, 0, 25, 0, 0, 0, 0, 0, 8, 0, + 17, 14, 0, 0, 0, 11, 21, 0, 0, 0, 15, 27, 19, 0, + 16, 14, 0, 0, 25, 0, 14, 0, 0, 14, 14, 0, 8, 0, + 0, 16, 12, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 17, + 44, 0, 0, 23, 0, 0, 27, 0, 0, 22, 0, 0, 0, 0, + 0, 0, 11, 17, 0, 12, 0, 0, 0, 26, 27, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 30, + 0, 15, 19, 18, 0, 28, 0, 0, 30, 24, 0, 0, 15, 0, + 0, 16, 0, 0, 0, 15, 0, 0, 0, 0, 0, 23, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 2, 26, 0, + 0, 0, 14, 0, 14, 22, 0, 0, 12, 0, 0, 0, 0, 0, + 0, 0, 18, 0, 0, 0, 24, 0, 0, 0, 23, 30, 0, 0, + 18, 0, 0, 0, 35, 0, 0, 28, 0, 0, 0, 0, 15, 0, + 0, 0, 0, 0, 0, 0, 15, 0, 0, 24, 0, 0, 43, 23, + 14, 13, 0, 0, 23, 0, 47, 21, 17, 20, 0, 14, 0, 0, + 0, 0, 16, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, + 0, 21, 0, 24, 16, 0, 26, 27, 0, 0, 0, 0, 0, 0, + 0, 0, 23, 0, 15, 0, 0, 0, 14, 3, 0, 20, 0, 0, + 26, 0, 0, 0, 16, 0, 0, 24, 0, 0, 0, 23, 0, 20, + 19, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 10, 0, 0, + 28, 13, 0, 0, 0, 21, 0, 0, 0, 0, 0, 16, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 15, 0, 0, + 15, 0, 12, 0, 0, 0, 0, 0, 16, 18, 0, 18, 0, 0, + 0, 0, 0, 0, 0, 16, 0, 21, 0, 0, 0, 0, 14, 0, + 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 8, 18, + 0, 0, 31, 0, 0, 0, 0, 13, 21, 0, 0, 16, 0, 0, + 9, 0, 0, 0, 18, 0, 0, 0, 15, 0, 0, 0, 30, 0, + 0, 0, 15, 23, 0, 0, 0, 21, 0, 0, 10, 0, 0, 0, + 0, 0, 0, 13, 0, 0, 0, 0, 0, 10, 0, 0, 0, 25, + 19, 0, 0, 12, 0, 0, 0, 6, 0, 25, 0, 0, 15, 0, + 0, 0, 0, 0, 0, 19, 0, 0, 0, 9, 32, 0, 0, 33, + 0, 20, 19, 39, 15, 0, 0, 6, 0, 22, 0, 0, 0, 24, + 0, 2, 9, 0, 0, 0, 12, 0, 24, 2, 17, 21, 0, 0, + 9, 0, 0, 0, 0, 12, 17, 0, 0, 0, 0, 0, 26, 0, + 0, 30, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 17, 12, 0, 0, + 17, 13, 0, 0, 0, 15, 10, 0, 0, 25, 25, 0, 14, 13, + 0, 18, 7, 18, 0, 0, 0, 23, 0, 0, 10, 0, 0, 0, + 29, 0, 0, 0, 0, 12, 0, 10, 0, 30, 0, 0, 0, 0, + 0, 0, 34, 0, 0, 0, 0, 42, 13, 0, 0, 11, 0, 11, + 0, 0, 22, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 10, 0, 12, 13, 0, 0, 0, 0, 0, 14, 0, 2, + 0, 13, 0, 0, 0, 0, 0, 1, 25, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 12, 0, 18, 17, 0, 0, 6, 22, 0, + 0, 0, 0, 14, 10, 0, 0, 9, 0, 0, 28, 0, 0, 14, + 15, 0, 10, 40, 0, 10, 0, 7, 24, 10, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, + 0, 0, 16, 0, 0, 18, 15, 0, 18, 22, 0, 0, 0, 9, + 0, 44, 0, 16, 0, 0, 31, 0, 0, 18, 10, 11, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 10, 8, + 0, 0, 0, 0, 23, 0, 23, 21, 0, 0, 0, 0, 0, 0, + 0, 0, 24, 9, 0, 0, 0, 0, 9, 0, 22, 0, 12, 0, + 0, 0, 13, 24, 0, 9, 0, 0, 0, 11, 15, 11, 0, 0, + 11, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, + 0, 0, 0, 0, 10, 18, 0, 20, 0, 0, 11, 0, 25, 0, + 0, 0, 0, 9, 0, 13, 0, 7, 0, 0, 0, 0, 0, 0, + 3, 5, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, + 0, 6, 21, 9, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 6, 30, 0, + 12, 0, 21, 0, 0, 19, 3, 0, 0, 0, 42, 19, 0, 24, + 0, 0, 0, 0, 0, 0, 39, 0, 2, 19, 10, 0, 0, 15, + 0, 2, 0, 0, 0, 0, 0, 0, 6, 31, 0, 21, 0, 0, + 0, 0, 0, 0, 0, 12, 0, 0, 42, 0, 10, 0, 0, 0, + 0, 18, 8, 21, 0, 0, 22, 18, 0, 0, 27, 0, 0, 0, + 0, 0, 19, 27, 0, 0, 0, 0, 0, 0, 0, 0, 17, 15, + 16, 14, 0, 18, 34, 0, 19, 0, 0, 0, 0, 0, 13, 0, + 0, 27, 28, 0, 0, 13, 20, 0, 0, 12, 0, 0, 9, 0, + 0, 14, 10, 2, 16, 28, 0, 0, 0, 21, 16, 3, 22, 20, + 0, 0, 11, 0, 13, 0, 0, 0, 37, 0, 0, 0, 0, 0, + 22, 0, 16, 0, 25, 0, 24, 0, 0, 0, 0, 0, 0, 0, + 0, 27, 0, 0, 0, 0, 17, 15, 18, 23, 0, 35, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 28, 26, 0, 0, 0, 0, 0, + 0, 20, 0, 20, 15, 0, 0, 0, 12, 0, 19, 25, 14, 0, + 0, 16, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, + 0, 23, 11, 0, 12, 0, 0, 27, 18, 0, 21, 0, 16, 23, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 20, 13, + 0, 4, 10, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, + 13, 19, 12, 0, 0, 0, 0, 13, 0, 0, 22, 0, 30, 0, + 0, 12, 14, 0, 15, 16, 0, 0, 9, 0, 13, 0, 14, 28, + 16, 0, 12, 0, 34, 0, 22, 0, 0, 0, 9, 0, 30, 8, + 0, 0, 0, 0, 0, 0, 21, 0, 22, 0, 0, 0, 24, 0, + 0, 0, 0, 10, 0, 12, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 7, 0, 11, 0, 15, 0, 0, 0, 31, 42, 0, 0, + 0, 3, 16, 0, 0, 0, 22, 0, 0, 0, 0, 0, 17, 0, + 11, 16, 0, 0, 17, 0, 0, 0, 6, 0, 29, 3, 0, 32, + 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, + 17, 0, 9, 0, 0, 0, 0, 31, 0, 0, 0, 0, 9, 0, + 0, 15, 0, 0, 0, 13, 0, 12, 0, 0, 20, 0, 0, 23, + 22, 0, 0, 18, 0, 0, 0, 0, 11, 0, 24, 30, 0, 0, + 23, 0, 13, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, + 35, 0, 0, 0, 0, 35, 0, 21, 0, 0, 0, 0, 29, 0, + 0, 0, 0, 0, 0, 26, 0, 13, 0, 0, 26, 0, 15, 0, + 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 16, 21, 0, 0, + 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 39, 40, + 22, 25, 24, 0, 0, 0, 0, 23, 14, 14, 0, 0, 13, 18, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, + 29, 0, 3, 20, 0, 28, 11, 0, 0, 0, 0, 0, 18, 31, + 0, 0, 0, 0, 0, 0, 14, 11, 0, 0, 0, 0, 0, 0, + 0, 14, 0, 0, 0, 0, 12, 0, 0, 0, 0, 14, 13, 0, + 0, 0, 24, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, + 0, 0, 0, 0, 24, 18, 0, 0, 0, 10, 0, 0, 0, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 31, + 0, 12, 0, 0, 0, 0, 11, 0, 25, 22, 0, 30, 0, 7, + 0, 23, 0, 0, 0, 0, 0, 0, 0, 15, 15, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, + 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 22, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, + 0, 15, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 13, 20, 0, 25, + 0, 0, 10, 0, 0, 28, 0, 0, 0, 0, 0, 0, 13, 20, + 15, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 23, 0, 0, + 0, 0, 24, 0, 0, 0, 0, 30, 15, 0, 14, 0, 0, 0, + 0, 0, 0, 0, 0, 14, 0, 0, 22, 0, 0, 0, 0, 0, + 13, 0, 22, 37, 8, 0, 0, 0, 38, 0, 0, 0, 0, 18, + 0, 15, 24, 0, 28, 0, 0, 0, 0, 29, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, + 0, 0, 0, 12, 0, 11, 0, 0, 26, 7, 0, 17, 16, 0, + 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, + 16, 0, 0, 0, 20, 0, 0, 0, 0, 16, 18, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 23, 14, 0, + 18, 20, 0, 14, 0, 26, 0, 0, 0, 0, 29, 0, 22, 0, + 0, 0, 23, 1, 0, 0, 24, 0, 0, 18, 0, 0, 0, 0, + 13, 25, 0, 0, 0, 0, 0, 0, 0, 26, 23, 0, 0, 0, + 30, 0, 23, 14, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, + 19, 0, 0, 25, 0, 0, 0, 11, 0, 20, 0, 0, 0, 0, + 0, 20, 0, 0, 0, 0, 0, 0, 0, 14, 24, 0, 0, 0, + 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 26, 18, 0, 0, + 0, 0, 17, 14, 0, 19, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 15, 0, 0, - 13, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 20, 0, - 0, 0, 0, 0, 25, 15, 13, 0, 0, 27, 27, 0, 0, 20, - 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 28, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 14, 16, 0, 0, 0, 0, 10, 14, 0, 0, 0, 0, 0, - 0, 18, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 34, - 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 18, 0, + 24, 0, 9, 0, 15, 17, 0, 0, 0, 0, 0, 0, 0, 0, + 23, 16, 19, 0, 22, 29, 0, 0, 24, 0, 0, 0, 0, 0, + 16, 21, 21, 0, 22, 0, 0, 0, 18, 22, 0, 0, 0, 0, + 0, 0, 0, 27, 0, 23, 0, 14, 20, 0, 0, 27, 0, 0, + 0, 24, 0, 0, 0, 21, 0, 0, 10, 0, 36, 0, 0, 14, + 0, 13, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 23, 0, 0, 14, 0, 0, 19, 14, 28, 0, 0, 19, 0, 0, + 0, 0, 13, 0, 0, 16, 2, 25, 0, 0, 21, 0, 0, 27, + 0, 32, 12, 0, 0, 0, 0, 0, 31, 0, 2, 0, 0, 0, + 0, 22, 0, 0, 24, 0, 31, 0, 7, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 19, 0, 0, 0, 0, 22, 14, 0, 0, 0, 33, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, - 0, 0, 14, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, + 0, 25, 0, 18, 0, 0, 0, 18, 0, 12, 0, 0, 0, 0, + 0, 0, 35, 0, 0, 23, 0, 0, 0, 0, 0, 0, 17, 0, + 0, 0, 0, 0, 0, 31, 28, 0, 0, 0, 0, 11, 19, 14, + 0, 0, 0, 18, 16, 0, 0, 14, 0, 24, 14, 0, 0, 32, + 0, 0, 0, 14, 0, 32, 21, 0, 0, 0, 0, 27, 26, 17, + 0, 0, 22, 15, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 0, 13, 0, 0, + 0, 0, 0, 0, 0, 28, 13, 12, 0, 0, 20, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 14, 30, 0, 13, 0, 0, 0, 0, 0, + 0, 0, 22, 0, 30, 0, 0, 24, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4, 23, 0, 0, 0, 0, 0, 27, 0, + 12, 0, 0, 0, 0, 0, 25, 0, 35, 0, 0, 0, 9, 0, + 0, 0, 40, 0, 24, 22, 0, 20, 0, 17, 0, 12, 0, 0, + 23, 0, 14, 0, 0, 0, 0, 26, 23, 0, 10, 0, 0, 11, + 25, 0, 0, 0, 0, 0, 0, 22, 0, 34, 0, 0, 23, 15, + 20, 18, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 18, 0, + 0, 24, 7, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 15, + 0, 0, 34, 0, 0, 15, 20, 22, 0, 0, 0, 15, 0, 21, + 0, 0, 0, 0, 23, 13, 0, 23, 0, 17, 0, 11, 8, 0, + 25, 15, 0, 0, 18, 0, 0, 28, 0, 15, 0, 0, 0, 0, + 0, 0, 0, 0, 22, 0, 0, 0, 0, 10, 0, 0, 23, 0, + 0, 0, 0, 11, 0, 0, 0, 10, 19, 0, 0, 0, 0, 0, + 14, 2, 0, 0, 17, 0, 0, 0, 29, 0, 0, 0, 16, 0, + 0, 0, 0, 0, 0, 0, 0, 16, 19, 0, 0, 20, 0, 0, + 0, 17, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 18, 0, + 0, 0, 19, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 50, 0, 0, 2, 0, 0, 15, 17, 0, 0, + 0, 0, 0, 24, 0, 0, 0, 0, 15, 0, 0, 0, 9, 0, + 0, 0, 21, 0, 0, 0, 24, 0, 34, 73, 74, 10, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 11, + 0, 30, 0, 22, 6, 0, 0, 0, 0, 19, 0, 0, 0, 12, + 22, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 30, 0, 0, 0, + 0, 0, 35, 0, 0, 30, 3, 0, 10, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 16, 16, 0, + 0, 1, 0, 0, 0, 16, 0, 0, 22, 0, 0, 0, 0, 0, + 24, 21, 15, 15, 4, 0, 0, 0, 32, 0, 25, 0, 18, 18, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, + 6, 0, 28, 0, 0, 0, 0, 0, 8, 0, 0, 0, 10, 2, + 11, 32, 11, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 11, + 0, 0, 3, 41, 0, 26, 0, 2, 11, 30, 0, 0, 0, 0, + 0, 0, 0, 12, 0, 32, 0, 26, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 14, 0, 0, 0, 24, 9, 0, 0, 7, 0, + 0, 0, 3, 0, 18, 0, 30, 0, 25, 0, 0, 0, 19, 6, + 0, 0, 0, 0, 11, 0, 0, 0, 31, 0, 10, 0, 9, 0, + 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 25, 0, 0, 27, 0, 0, 22, 0, + 0, 26, 22, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 29, 0, + 0, 0, 0, 26, 0, 0, 0, 6, 26, 0, 0, 0, 0, 33, + 9, 0, 0, 0, 23, 0, 0, 0, 21, 13, 0, 0, 0, 20, + 0, 0, 21, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 0, 12, 0, 2, 9, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 23, 0, 7, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 13, 0, 0, 15, + 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 33, 8, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 30, 0, 0, 5, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, - 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 17, 0, 0, 0, 14, 26, 0, 0, 0, 0, 0, + 0, 0, 29, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 12, 0, 23, 0, 12, 15, 0, 0, 11, 0, + 11, 0, 28, 0, 15, 0, 0, 17, 0, 0, 25, 7, 0, 0, + 0, 0, 3, 0, 4, 0, 17, 0, 2, 0, 0, 0, 14, 0, + 0, 0, 0, 3, 0, 4, 6, 0, 29, 0, 0, 0, 0, 29, + 29, 16, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, + 0, 2, 0, 17, 29, 0, 0, 15, 0, 0, 34, 0, 0, 0, + 0, 34, 0, 0, 11, 0, 0, 0, 18, 0, 0, 0, 0, 0, + 24, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 11, 0, 11, 0, 15, 0, 0, 0, 0, 0, 3, 0, + 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, + 0, 0, 0, 0, 0, 0, 16, 0, 0, 15, 11, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 0, + 4, 13, 0, 0, 2, 0, 0, 0, 0, 0, 15, 0, 0, 3, + 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 30, 0, 10, 0, + 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 28, 0, 0, 30, + 0, 22, 24, 0, 0, 0, 0, 0, 0, 37, 0, 29, 0, 22, + 0, 0, 11, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 11, 29, 0, 0, 0, 0, 0, 0, 0, 0, 23, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 8, 0, + 0, 0, 0, 0, 0, 20, 0, 11, 0, 0, 0, 0, 0, 0, + 26, 35, 0, 0, 31, 0, 11, 0, 0, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 17, 29, 0, + 0, 0, 25, 0, 18, 30, 0, 25, 0, 0, 0, 0, 16, 0, + 29, 14, 0, 2, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, + 19, 0, 0, 29, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 34, + 0, 0, 0, 0, 34, 0, 0, 13, 0, 0, 0, 16, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, + 0, 0, 0, 0, 33, 42, 0, 0, 0, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 8, 0, 0, 0, + 0, 0, 0, 0, 0, 12, 0, 21, 0, 0, 11, 0, 0, 13, + 8, 0, 24, 0, 30, 0, 0, 13, 0, 0, 0, 25, 0, 15, + 0, 0, 0, 0, 0, 0, 0, 25, 0, 12, 0, 0, 0, 0, + 0, 0, 0, 20, 0, 23, 22, 27, 34, 0, 0, 0, 0, 30, + 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 12, 32, 0, 13, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 9, 0, 31, 0, 27, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 17, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, - 27, 0, 20, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 19, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 19, 15, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 25, 0, 0, 0, 0, 0, + 0, 12, 0, 13, 0, 0, 13, 12, 0, 0, 0, 0, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 16, 14, 0, 0, + 0, 0, 0, 12, 23, 0, 0, 29, 0, 0, 0, 14, 0, 0, + 0, 18, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 25, 0, 20, 26, 0, 0, 14, 4, 0, 0, 0, 27, 14, 0, + 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 0, 0, 29, 6, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 31, 8, 24, 0, 0, 0, 0, 0, 0, 36, 18, + 0, 0, 0, 0, 0, 14, 0, 0, 8, 0, 0, 0, 0, 22, + 0, 6, 13, 0, 0, 0, 0, 0, 15, 0, 19, 16, 0, 0, + 8, 17, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, + 0, 31, 0, 0, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, + 0, 16, 24, 0, 9, 0, 0, 0, 0, 14, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 28, 0, 11, 0, 11, 18, 0, 0, 19, + 0, 0, 0, 0, 21, 0, 0, 0, 14, 23, 11, 19, 0, 0, + 0, 0, 0, 0, 0, 0, 20, 0, 31, 25, 0, 0, 0, 31, + 0, 0, 0, 0, 0, 22, 0, 0, 16, 3, 0, 0, 0, 18, + 0, 0, 0, 0, 0, 5, 0, 14, 0, 0, 0, 0, 0, 0, + 15, 18, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 3, 0, + 0, 0, 0, 31, 0, 15, 19, 34, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 16, 0, 28, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, + 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 17, + 0, 0, 0, 0, 0, 0, 37, 19, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 15, 0, 33, 9, 0, 0, 0, + 0, 22, 8, 0, 0, 0, 15, 28, 0, 12, 0, 0, 28, 0, + 19, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 0, + 0, 0, 0, 37, 0, 29, 0, 0, 31, 0, 0, 0, 0, 34, + 0, 0, 0, 0, 18, 0, 0, 29, 0, 0, 12, 15, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 22, + 0, 0, 0, 0, 0, 28, 29, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 15, 0, 0, 0, 0, 0, 15, 0, 0, 0, 33, + 0, 0, 0, 28, 10, 35, 8, 33, 28, 0, 0, 34, 0, 0, + 16, 0, 0, 0, 0, 29, 0, 0, 0, 0, 14, 0, 22, 0, + 0, 12, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, + 0, 0, 0, 0, 12, 30, 0, 0, 0, 0, 19, 15, 0, 0, + 0, 0, 0, 0, 31, 31, 0, 26, 0, 0, 13, 0, 0, 0, + 0, 29, 0, 0, 0, 13, 12, 28, 18, 0, 0, 0, 14, 0, + 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 14, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 42, 13, 0, 0, 15, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 13, + 0, 0, 8, 14, 0, 0, 0, 0, 0, 0, 0, 23, 16, 0, + 0, 0, 0, 0, 0, 34, 0, 0, 20, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, + 0, 0, 9, 0, 0, 0, 0, 32, 31, 0, 0, 25, 0, 32, + 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, + 0, 0, 14, 28, 0, 0, 18, 35, 0, 21, 0, 0, 14, 0, + 0, 25, 18, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, + 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 28, 0, 0, 0, + 0, 0, 13, 27, 18, 0, 0, 25, 15, 20, 0, 27, 0, 0, + 18, 10, 0, 14, 0, 31, 0, 28, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 17, 0, + 0, 0, 0, 0, 0, 0, 28, 25, 0, 0, 0, 0, 0, 14, + 0, 0, 0, 18, 14, 0, 0, 28, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 10, 36, 0, 0, 0, 0, 34, 0, 15, 16, 0, 0, 0, + 0, 0, 0, 10, 27, 0, 0, 13, 22, 0, 0, 0, 0, 0, + 28, 18, 0, 0, 0, 0, 0, 26, 0, 0, 28, 0, 0, 14, + 0, 0, 0, 15, 0, 0, 0, 27, 17, 0, 0, 0, 0, 0, + 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 27, + 29, 0, 0, 0, 0, 0, 24, 0, 11, 0, 0, 0, 9, 0, + 43, 0, 0, 0, 0, 0, 0, 31, 7, 0, 0, 0, 0, 0, + 0, 0, 0, 19, 0, 0, 11, 0, 0, 0, 32, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 27, 36, 0, + 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, 16, 0, + 0, 0, 0, 0, 10, 0, 11, 0, 0, 0, 0, 28, 0, 10, + 0, 0, 27, 0, 0, 0, 0, 27, 25, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 0, 0, 0, 0, 14, 0, 14, 0, 0, + 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 36, 0, 0, 26, + 22, 0, 0, 14, 0, 24, 0, 0, 0, 18, 0, 32, 0, 0, + 0, 0, 0, 0, 0, 18, 0, 0, 9, 0, 0, 0, 14, 0, + 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 3, 0, 0, + 0, 38, 15, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 20, 0, + 10, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, + 18, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, + 0, 14, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 18, + 0, 17, 0, 0, 25, 0, 0, 0, 0, 18, 27, 0, 0, 0, + 0, 0, 0, 0, 0, 30, 14, 0, 0, 0, 0, 19, 8, 0, + 0, 0, 0, 43, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 33, 17, 0, 0, 0, 0, 32, 0, 0, 0, + 0, 33, 0, 0, 0, 37, 0, 37, 0, 0, 22, 15, 0, 17, + 29, 0, 38, 0, 0, 0, 0, 24, 0, 0, 0, 0, 11, 0, + 0, 0, 0, 0, 18, 14, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 18, 0, 0, 0, 27, 0, 0, 18, 0, 27, 0, 0, 0, + 0, 16, 0, 0, 0, 0, 23, 0, 0, 0, 18, 14, 0, 33, + 0, 0, 0, 37, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, - 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 17, - 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 28, 0, 16, 12, 0, 0, 0, 0, 17, 0, - 0, 0, 0, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 24, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 22, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 11, - 0, 0, 0, 0, 13, 0, 17, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 33, 0, 0, 0, 37, 14, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, - 33, 0, 0, 0, 37, 0, 28, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, - 0, 0, 0, 19, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, - 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, - 8, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 16, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, - 0, 0, 0, 0, 0, 26, 0, 0, 16, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, - 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 33, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 22, 15, 13, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 28, 0, 0, 13, 0, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 14, 0, 28, 0, - 0, 0, 0, 0, 0, 16, 0, 0, 0, 17, 0, 22, 16, 0, - 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 20, 0, 7, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 37, - 0, 15, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 17, 0, 0, 0, 24, 0, 25, 0, 0, 0, 0, - 0, 24, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 25, 15, 0, 0, 15, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, - 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 26, 0, 0, - 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, - 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 0, 0, 25, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, - 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 37, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 22, 0, 0, 0, 0, 0, 0, 0, 0, 17, 16, 0, 0, 11, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 20, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 16, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, - 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, - 0, 2, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 7, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, - 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, - 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 25, 0, 0, 15, 0, 0, 6, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, - 6, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, - 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, - 0, 17, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 15, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, - 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, - 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 15, 7, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 17, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 29, 24, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, - 0, 0, 0, 9, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 17, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, - 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 22, 0, 6, 0, 0, 17, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 9, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, - 0, 0, 0, 0, 6, 0, 0, 17, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, - 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 7, 17, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, - 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0, 31, 0, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4, 0, 15, 0, 0, 0, 22, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 0, 24, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, + 0, 36, 0, 0, 0, 0, 0, 19, 28, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 16, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, + 19, 30, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 15, + 0, 22, 0, 0, 17, 0, 0, 0, 0, 13, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 14, 17, 0, 0, 12, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 15, 30, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 28, 0, + 0, 0, 0, 0, 0, 36, 8, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 19, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, + 0, 11, 0, 27, 0, 30, 0, 0, 0, 0, 0, 0, 43, 0, + 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 15, 0, 0, + 0, 0, 24, 0, 0, 24, 0, 0, 17, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 15, 0, 0, 0, 17, 23, 0, 7, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 15, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 0, 0, 13, 0, 0, 0, 0, 15, 0, 0, 0, 11, 0, + 0, 25, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 17, 0, + 0, 0, 37, 0, 33, 0, 0, 0, 37, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 14, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 29, 0, 0, + 0, 0, 0, 0, 9, 0, 0, 22, 0, 0, 0, 0, 0, 23, + 0, 0, 0, 0, 0, 24, 0, 0, 17, 0, 15, 0, 0, 35, + 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 26, 0, 0, + 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 37, 0, + 0, 0, 35, 0, 30, 28, 0, 0, 0, 0, 18, 27, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, + 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, + 35, 0, 0, 0, 0, 30, 0, 0, 0, 6, 24, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, + 24, 0, 11, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, + 18, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 72, 0, 0, 20, 30, 0, 0, 0, 0, 14, + 0, 6, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 14, 0, 14, 30, 0, 0, 0, 0, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, + 0, 0, 0, 0, 9, 7, 16, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 15, 0, 21, 0, + 0, 11, 15, 0, 10, 0, 0, 0, 12, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 10, 0, 0, 32, + 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, + 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 21, 0, 0, 11, + 0, 0, 0, 0, 0, 0, 28, 0, 0, 16, 0, 12, 0, 0, + 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 19, + 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, + 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, + 0, 0, 0, 23, 0, 35, 0, 24, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 14, 29, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, + 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, + 0, 14, 0, 0, 0, 0, 9, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 15, 0, 0, 0, + 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, + 0, 0, 0, 0, 0, 0, 0, 14, 0, 35, 0, 0, 0, 0, + 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 13, 35, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, + 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, + 0, 31, 0, 0, 0, 15, 0, 19, 0, 0, 0, 35, 0, 0, + 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 16, 14, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 2, 0, + 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 21, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 17, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, + 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 15, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, + 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, + 0, 0, 38, 0, 4, 19, 0, 0, 0, 0, 0, 0, 0, 23, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 27, + 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 24, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 15, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 20, 0, 22, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, + 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 15, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 22, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 16, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 23, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 27, 0, 0, 0, 0, 28, 0, + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 33, 26, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 29, 11, 0, 0, + 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 14, 0, 0, + 0, 0, 22, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, + 0, 0, 13, 0, 0, 0, 0, 26, 0, 0, 22, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 19, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, + 0, 0, 0, 0, 14, 36, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 26, 0, 0, 0, 14, 13, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 15, 0, 25, 0, + 0, 0, 0, 28, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 2, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 24, 0, + 0, 0, 13, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 25, 0, 0, 27, 0, 0, 24, 0, 0, 0, 16, 17, + 0, 17, 0, 0, 0, 0, 0, 28, 25, 19, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 31, + 15, 0, 0, 0, 0, 0, 0, 63, 17, 0, 0, 0, 0, 17, + 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 31, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 16, 0, + 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 15, 0, 0, 0, + 0, 0, 15, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 20, + 0, 0, 36, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 25, 0, 0, 0, 0, 0, 11, 0, 15, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, + 0, 0, 0, 0, 11, 0, 0, 0, 0, 17, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 17, 0, 27, 0, 0, 0, 0, 15, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, + 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 25, 0, 0, 38, 0, 0, 25, + 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 13, 0, + 0, 0, 0, 26, 0, 0, 17, 0, 0, 29, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, + 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 17, + 0, 15, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, + 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, + 0, 0, 0, 25, 0, 0, 0, 0, 16, 0, 0, 0, 35, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 28, 0, 0, 0, 31, 0, 0, 0, 16, 0, + 0, 0, 0, 17, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, + 17, 16, 0, 0, 9, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 22, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 13, 0, + 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 26, 0, 0, + 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 13, 0, 24, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 33, 0, 0, + 22, 0, 0, 0, 0, 0, 0, 28, 0, 0, 22, 0, 0, 0, + 0, 6, 0, 0, 11, 0, 0, 0, 0, 0, 28, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 22, 0, 0, 13, 0, 0, 0, 0, 22, 0, + 0, 0, 0, 0, 0, 28, 0, 0, 22, 0, 0, 0, 0, 0, + 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 22, 0, 0, + 25, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 22, 22, 17, 0, 25, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 17, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 17, 17, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 18, 0, 16, 0, 0, 0, 0, 0, + 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 25, + 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 28, 0, 0, 22, + 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 8, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, + 22, 7, 0, 25, 0, 0, 0, 22, 16, 0, 0, 0, 0, 0, + 28, 0, 0, 22, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 22, 0, 0, 25, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 37, 28, 0, 0, 0, 0, 0, + 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, + 0, 0, 14, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 29, + 0, 4, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 13, 0, 28, 0, 0, 0, 0, 14, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, + 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 0, 0, 0, 0, 0, 19, 0, 0, 28, 0, + 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 7, 0, 0, + 0, 28, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 24, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 14, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 40, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, + 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 24, 0, 0, 0, + 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 14, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, + 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 24, 0, 0, 0, 17, 0, 17, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 26, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 34, 0, 17, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 33, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 34, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 15, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, + 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 31, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 33, 0, 0, - 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, - 32, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, - 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, + 0, 0, 0, 0, 0, 36, 0, 0, 0, 15, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1136,19 +1048,99 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 32, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 36, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 27, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 13, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, + 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1156,7 +1148,174 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1170,23 +1329,18 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1196,32 +1350,21 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, - 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 15, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1230,15 +1373,12 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1250,7 +1390,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1261,7 +1400,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1269,7 +1407,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1278,7 +1415,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1291,7 +1427,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1309,16 +1444,14 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1355,239 +1488,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1669,9 +1569,392 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1683,7 +1966,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1750,7 +2032,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1873,7 +2154,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1942,7 +2222,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1986,6 +2265,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1999,7 +2279,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2065,6954 +2344,6668 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 27 + 31 }; static const struct grib_keys_hash wordlist[] = { - {""}, -#line 1272 "../tests/keys" - {"n",1267}, -#line 1281 "../tests/keys" - {"nd",1276}, -#line 1285 "../tests/keys" - {"nnn",1280}, -#line 2072 "../tests/keys" - {"td",2067}, -#line 2062 "../tests/keys" - {"t",2057}, -#line 1299 "../tests/keys" - {"nt",1294}, -#line 684 "../tests/keys" - {"ed",679}, -#line 1275 "../tests/keys" - {"na",1270}, -#line 1153 "../tests/keys" - {"m",1148}, - {""}, -#line 1235 "../tests/keys" - {"min",1230}, - {""}, -#line 1860 "../tests/keys" - {"sd",1855}, - {""}, -#line 591 "../tests/keys" - {"data",586}, - {""}, {""}, -#line 918 "../tests/keys" - {"ident",913}, -#line 609 "../tests/keys" - {"date",604}, - {""}, -#line 1276 "../tests/keys" - {"name",1271}, - {""}, -#line 1462 "../tests/keys" - {"one",1457}, -#line 2098 "../tests/keys" - {"time",2093}, - {""}, {""}, -#line 667 "../tests/keys" - {"domain",662}, -#line 737 "../tests/keys" - {"error",732}, - {""}, -#line 727 "../tests/keys" - {"enorm",722}, -#line 1985 "../tests/keys" - {"sort",1980}, -#line 685 "../tests/keys" - {"edition",680}, -#line 1231 "../tests/keys" - {"metadata",1226}, - {""}, -#line 1156 "../tests/keys" - {"mars",1151}, - {""}, -#line 2035 "../tests/keys" - {"stream",2030}, - {""}, -#line 1280 "../tests/keys" - {"names",1275}, - {""}, -#line 985 "../tests/keys" - {"iteration",980}, -#line 1570 "../tests/keys" - {"param",1565}, - {""}, -#line 1474 "../tests/keys" - {"oper",1469}, - {""}, {""}, -#line 650 "../tests/keys" - {"dimension",645}, {""}, {""}, {""}, -#line 732 "../tests/keys" - {"eps",727}, -#line 2001 "../tests/keys" - {"spare",1996}, +#line 1297 "../tests/keys" + {"n",1292}, {""}, -#line 2139 "../tests/keys" - {"two",2134}, -#line 1617 "../tests/keys" - {"present",1612}, +#line 1306 "../tests/keys" + {"nd",1301}, +#line 709 "../tests/keys" + {"ed",704}, +#line 1310 "../tests/keys" + {"nnn",1305}, +#line 2101 "../tests/keys" + {"td",2096}, +#line 2091 "../tests/keys" + {"t",2086}, {""}, -#line 300 "../tests/keys" - {"assertion",295}, -#line 1573 "../tests/keys" - {"parameter",1568}, +#line 1324 "../tests/keys" + {"nt",1319}, +#line 1889 "../tests/keys" + {"sd",1884}, +#line 1300 "../tests/keys" + {"na",1295}, {""}, -#line 1481 "../tests/keys" - {"opttime",1476}, -#line 358 "../tests/keys" - {"cat",353}, +#line 1178 "../tests/keys" + {"m",1173}, {""}, {""}, -#line 2025 "../tests/keys" - {"step",2020}, -#line 1607 "../tests/keys" - {"points",1602}, - {""}, {""}, {""}, {""}, {""}, -#line 2313 "../tests/keys" - {"year",2308}, - {""}, {""}, {""}, {""}, -#line 376 "../tests/keys" - {"centre",371}, -#line 569 "../tests/keys" - {"core",564}, -#line 2130 "../tests/keys" - {"true",2125}, -#line 1581 "../tests/keys" - {"parameters",1576}, -#line 1586 "../tests/keys" - {"partitions",1581}, -#line 543 "../tests/keys" - {"const",538}, -#line 2111 "../tests/keys" - {"timerepres",2106}, -#line 1861 "../tests/keys" - {"second",1856}, - {""}, -#line 1700 "../tests/keys" - {"rectime",1695}, -#line 1237 "../tests/keys" - {"minute",1232}, -#line 653 "../tests/keys" - {"direction",648}, +#line 634 "../tests/keys" + {"date",629}, {""}, {""}, -#line 1883 "../tests/keys" - {"section",1878}, -#line 1236 "../tests/keys" - {"minimum",1231}, -#line 2141 "../tests/keys" - {"type",2136}, -#line 2190 "../tests/keys" - {"units",2185}, - {""}, {""}, {""}, -#line 1675 "../tests/keys" - {"radius",1670}, -#line 2060 "../tests/keys" - {"system",2055}, - {""}, {""}, {""}, -#line 943 "../tests/keys" - {"instrument",938}, - {""}, {""}, -#line 869 "../tests/keys" - {"grid",864}, -#line 2024 "../tests/keys" - {"status",2019}, - {""}, {""}, -#line 1046 "../tests/keys" - {"leadtime",1041}, -#line 2034 "../tests/keys" - {"stepZero",2029}, - {""}, -#line 674 "../tests/keys" - {"dy",669}, - {""}, -#line 1674 "../tests/keys" - {"radials",1669}, -#line 1680 "../tests/keys" - {"range",1675}, -#line 620 "../tests/keys" - {"day",615}, -#line 1613 "../tests/keys" - {"precision",1608}, -#line 606 "../tests/keys" - {"dataTime",601}, -#line 891 "../tests/keys" - {"hdate",886}, -#line 618 "../tests/keys" - {"dateTime",613}, -#line 1486 "../tests/keys" - {"origin",1481}, -#line 2023 "../tests/keys" - {"statistics",2018}, -#line 2085 "../tests/keys" - {"three",2080}, -#line 2311 "../tests/keys" - {"yFirst",2306}, - {""}, -#line 1232 "../tests/keys" - {"method",1227}, - {""}, {""}, -#line 1647 "../tests/keys" - {"process",1642}, -#line 583 "../tests/keys" - {"count",578}, - {""}, {""}, {""}, -#line 2182 "../tests/keys" - {"uco",2177}, - {""}, -#line 2183 "../tests/keys" - {"ucs",2178}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 574 "../tests/keys" - {"correction",569}, - {""}, -#line 1600 "../tests/keys" - {"phase",1595}, - {""}, {""}, {""}, {""}, {""}, -#line 1649 "../tests/keys" - {"product",1644}, - {""}, {""}, -#line 598 "../tests/keys" - {"dataOrigin",593}, - {""}, {""}, -#line 395 "../tests/keys" - {"char",390}, -#line 1012 "../tests/keys" - {"latitude",1007}, - {""}, {""}, -#line 398 "../tests/keys" - {"class",393}, - {""}, {""}, -#line 2113 "../tests/keys" - {"total",2108}, -#line 1604 "../tests/keys" - {"pl",1599}, -#line 1253 "../tests/keys" - {"model",1248}, -#line 1288 "../tests/keys" - {"normal",1283}, -#line 1004 "../tests/keys" - {"landtype",999}, -#line 910 "../tests/keys" - {"hundred",905}, -#line 35 "../tests/keys" - {"Di",30}, -#line 1234 "../tests/keys" - {"million",1229}, - {""}, -#line 902 "../tests/keys" - {"hour",897}, - {""}, -#line 541 "../tests/keys" - {"consensus",536}, -#line 1042 "../tests/keys" - {"latitudes",1037}, -#line 923 "../tests/keys" - {"ieeeFloats",918}, - {""}, -#line 669 "../tests/keys" - {"dummy",664}, - {""}, {""}, -#line 607 "../tests/keys" - {"dataType",602}, - {""}, -#line 659 "../tests/keys" - {"discipline",654}, - {""}, {""}, -#line 847 "../tests/keys" - {"g",842}, -#line 43 "../tests/keys" - {"Dstart",38}, -#line 2084 "../tests/keys" - {"thousand",2079}, - {""}, -#line 594 "../tests/keys" - {"dataDate",589}, -#line 1968 "../tests/keys" - {"signature",1963}, - {""}, -#line 1184 "../tests/keys" - {"marsType",1179}, -#line 1160 "../tests/keys" - {"marsDir",1155}, - {""}, {""}, -#line 2234 "../tests/keys" - {"varno",2229}, - {""}, {""}, {""}, {""}, {""}, -#line 1189 "../tests/keys" - {"masterDir",1184}, -#line 359 "../tests/keys" - {"categories",354}, -#line 1724 "../tests/keys" - {"reserved",1719}, -#line 2239 "../tests/keys" - {"version",2234}, -#line 690 "../tests/keys" - {"eight",685}, - {""}, {""}, -#line 1161 "../tests/keys" - {"marsDomain",1156}, -#line 604 "../tests/keys" - {"dataStream",599}, -#line 2030 "../tests/keys" - {"stepType",2025}, - {""}, +#line 1301 "../tests/keys" + {"name",1296}, #line 1260 "../tests/keys" - {"month",1255}, + {"min",1255}, {""}, -#line 2074 "../tests/keys" - {"temperature",2069}, -#line 1720 "../tests/keys" - {"reportType",1715}, +#line 616 "../tests/keys" + {"data",611}, {""}, {""}, -#line 1500 "../tests/keys" - {"padding",1495}, -#line 971 "../tests/keys" - {"isSens",966}, +#line 943 "../tests/keys" + {"ident",938}, +#line 1491 "../tests/keys" + {"one",1486}, +#line 2127 "../tests/keys" + {"time",2122}, + {""}, +#line 762 "../tests/keys" + {"error",757}, {""}, #line 1181 "../tests/keys" - {"marsStream",1176}, + {"mars",1176}, {""}, -#line 691 "../tests/keys" - {"elementsTable",686}, -#line 672 "../tests/keys" - {"dummyc",667}, +#line 2343 "../tests/keys" + {"year",2338}, +#line 1305 "../tests/keys" + {"names",1300}, + {""}, +#line 328 "../tests/keys" + {"band",323}, + {""}, +#line 2064 "../tests/keys" + {"stream",2059}, +#line 2014 "../tests/keys" + {"sort",2009}, + {""}, +#line 752 "../tests/keys" + {"enorm",747}, {""}, {""}, -#line 1585 "../tests/keys" - {"partitionTable",1580}, - {""}, {""}, {""}, {""}, -#line 719 "../tests/keys" - {"endStep",714}, - {""}, -#line 646 "../tests/keys" - {"diagnostic",641}, -#line 587 "../tests/keys" - {"country",582}, - {""}, -#line 523 "../tests/keys" - {"codeType",518}, - {""}, -#line 1475 "../tests/keys" - {"operStream",1470}, - {""}, {""}, {""}, {""}, -#line 2283 "../tests/keys" - {"windSpeed",2278}, +#line 1256 "../tests/keys" + {"metadata",1251}, +#line 699 "../tests/keys" + {"dy",694}, {""}, {""}, -#line 221 "../tests/keys" - {"TT",216}, -#line 1180 "../tests/keys" - {"marsStep",1175}, -#line 2017 "../tests/keys" - {"startStep",2012}, -#line 1298 "../tests/keys" - {"notDecoded",1293}, -#line 2196 "../tests/keys" - {"unitsFactor",2191}, - {""}, {""}, {""}, {""}, -#line 1115 "../tests/keys" - {"longitude",1110}, +#line 757 "../tests/keys" + {"eps",752}, +#line 692 "../tests/keys" + {"domain",687}, +#line 2030 "../tests/keys" + {"spare",2025}, +#line 645 "../tests/keys" + {"day",640}, {""}, {""}, -#line 693 "../tests/keys" - {"eleven",688}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 710 "../tests/keys" + {"edition",705}, +#line 1503 "../tests/keys" + {"oper",1498}, +#line 1646 "../tests/keys" + {"present",1641}, +#line 1599 "../tests/keys" + {"param",1594}, +#line 1715 "../tests/keys" + {"rdbtime",1710}, + {""}, {""}, +#line 2171 "../tests/keys" + {"type",2166}, +#line 2089 "../tests/keys" + {"system",2084}, + {""}, +#line 1602 "../tests/keys" + {"parameter",1597}, +#line 1010 "../tests/keys" + {"iteration",1005}, + {""}, +#line 316 "../tests/keys" + {"assertion",311}, +#line 675 "../tests/keys" + {"dimension",670}, + {""}, {""}, {""}, +#line 2160 "../tests/keys" + {"true",2155}, +#line 383 "../tests/keys" + {"cat",378}, +#line 2054 "../tests/keys" + {"step",2049}, +#line 401 "../tests/keys" + {"centre",396}, + {""}, {""}, {""}, {""}, +#line 1610 "../tests/keys" + {"parameters",1605}, + {""}, +#line 2140 "../tests/keys" + {"timerepres",2135}, +#line 1510 "../tests/keys" + {"opttime",1505}, +#line 1636 "../tests/keys" + {"points",1631}, + {""}, +#line 594 "../tests/keys" + {"core",589}, +#line 2114 "../tests/keys" + {"three",2109}, + {""}, +#line 1296 "../tests/keys" + {"mybits",1291}, +#line 916 "../tests/keys" + {"hdate",911}, +#line 1262 "../tests/keys" + {"minute",1257}, +#line 1729 "../tests/keys" + {"rectime",1724}, + {""}, {""}, +#line 2220 "../tests/keys" + {"units",2215}, +#line 1890 "../tests/keys" + {"second",1885}, + {""}, +#line 1704 "../tests/keys" + {"radius",1699}, +#line 568 "../tests/keys" + {"const",563}, + {""}, {""}, +#line 2053 "../tests/keys" + {"status",2048}, +#line 1325 "../tests/keys" + {"number",1320}, + {""}, {""}, {""}, {""}, +#line 1615 "../tests/keys" + {"partitions",1610}, + {""}, +#line 1912 "../tests/keys" + {"section",1907}, +#line 968 "../tests/keys" + {"instrument",963}, +#line 1257 "../tests/keys" + {"method",1252}, + {""}, +#line 366 "../tests/keys" + {"bitmap",361}, +#line 1261 "../tests/keys" + {"minimum",1256}, +#line 678 "../tests/keys" + {"direction",673}, +#line 1071 "../tests/keys" + {"leadtime",1066}, +#line 1452 "../tests/keys" + {"obstype",1447}, + {""}, {""}, +#line 1703 "../tests/keys" + {"radials",1698}, +#line 1629 "../tests/keys" + {"phase",1624}, +#line 694 "../tests/keys" + {"dummy",689}, + {""}, +#line 643 "../tests/keys" + {"dateTime",638}, + {""}, {""}, +#line 631 "../tests/keys" + {"dataTime",626}, +#line 35 "../tests/keys" + {"Di",30}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 2052 "../tests/keys" + {"statistics",2047}, +#line 2213 "../tests/keys" + {"ucs",2208}, + {""}, +#line 43 "../tests/keys" + {"Dstart",38}, +#line 1676 "../tests/keys" + {"process",1671}, +#line 420 "../tests/keys" + {"char",415}, + {""}, +#line 619 "../tests/keys" + {"dataDate",614}, +#line 1709 "../tests/keys" + {"range",1704}, +#line 894 "../tests/keys" + {"grid",889}, +#line 935 "../tests/keys" + {"hundred",930}, +#line 1185 "../tests/keys" + {"marsDir",1180}, +#line 1642 "../tests/keys" + {"precision",1637}, + {""}, +#line 1029 "../tests/keys" + {"landtype",1024}, + {""}, +#line 608 "../tests/keys" + {"count",603}, #line 47 "../tests/keys" {"Dy",42}, - {""}, {""}, -#line 878 "../tests/keys" - {"gridType",873}, {""}, -#line 1144 "../tests/keys" - {"longitudes",1139}, -#line 1178 "../tests/keys" - {"marsRange",1173}, -#line 692 "../tests/keys" - {"elevation",687}, +#line 1214 "../tests/keys" + {"masterDir",1209}, + {""}, {""}, +#line 927 "../tests/keys" + {"hour",922}, + {""}, {""}, +#line 2212 "../tests/keys" + {"uco",2207}, +#line 632 "../tests/keys" + {"dataType",627}, + {""}, {""}, {""}, {""}, {""}, +#line 1209 "../tests/keys" + {"marsType",1204}, +#line 423 "../tests/keys" + {"class",418}, {""}, {""}, {""}, -#line 859 "../tests/keys" - {"gg",854}, -#line 1083 "../tests/keys" - {"local",1078}, -#line 522 "../tests/keys" - {"codeFigure",517}, - {""}, {""}, {""}, {""}, {""}, -#line 1425 "../tests/keys" - {"oceanStream",1420}, -#line 366 "../tests/keys" - {"ccsdsRsi",361}, -#line 304 "../tests/keys" - {"average",299}, - {""}, {""}, {""}, -#line 2028 "../tests/keys" - {"stepRange",2023}, - {""}, {""}, {""}, {""}, {""}, -#line 968 "../tests/keys" - {"isOctahedral",963}, +#line 1037 "../tests/keys" + {"latitude",1032}, +#line 1713 "../tests/keys" + {"rdbType",1708}, {""}, {""}, -#line 2086 "../tests/keys" - {"threshold",2081}, -#line 393 "../tests/keys" - {"channel",388}, - {""}, {""}, {""}, {""}, {""}, -#line 966 "../tests/keys" - {"isFillup",961}, - {""}, {""}, {""}, {""}, -#line 535 "../tests/keys" - {"conceptDir",530}, - {""}, -#line 595 "../tests/keys" - {"dataFlag",590}, -#line 896 "../tests/keys" - {"hideThis",891}, - {""}, {""}, {""}, {""}, -#line 721 "../tests/keys" - {"endTimeStep",716}, - {""}, -#line 698 "../tests/keys" - {"endDescriptors",693}, - {""}, -#line 1480 "../tests/keys" - {"optionalData",1475}, - {""}, {""}, {""}, {""}, -#line 1706 "../tests/keys" - {"refdate",1701}, - {""}, -#line 2222 "../tests/keys" - {"values",2217}, -#line 312 "../tests/keys" - {"band",307}, +#line 1515 "../tests/keys" + {"origin",1510}, {""}, {""}, +#line 2113 "../tests/keys" + {"thousand",2108}, +#line 1285 "../tests/keys" + {"month",1280}, +#line 1186 "../tests/keys" + {"marsDomain",1181}, +#line 566 "../tests/keys" + {"consensus",561}, +#line 1678 "../tests/keys" + {"product",1673}, +#line 1633 "../tests/keys" + {"pl",1628}, +#line 599 "../tests/keys" + {"correction",594}, + {""}, #line 1067 "../tests/keys" - {"levtype",1062}, -#line 2010 "../tests/keys" - {"standardDeviation",2005}, + {"latitudes",1062}, +#line 1278 "../tests/keys" + {"model",1273}, +#line 2059 "../tests/keys" + {"stepType",2054}, +#line 996 "../tests/keys" + {"isSens",991}, +#line 2142 "../tests/keys" + {"total",2137}, {""}, -#line 922 "../tests/keys" - {"identifier",917}, -#line 2272 "../tests/keys" - {"windDirection",2267}, - {""}, {""}, {""}, -#line 931 "../tests/keys" - {"indicatorOfParameter",926}, - {""}, -#line 1065 "../tests/keys" - {"levelist",1060}, -#line 1066 "../tests/keys" - {"levels",1061}, - {""}, {""}, {""}, -#line 1701 "../tests/keys" - {"rectimeDay",1696}, - {""}, -#line 1196 "../tests/keys" - {"matchSort",1191}, - {""}, -#line 1686 "../tests/keys" - {"rdbtime",1681}, +#line 1313 "../tests/keys" + {"normal",1308}, +#line 612 "../tests/keys" + {"country",607}, {""}, {""}, -#line 1660 "../tests/keys" - {"pv",1655}, -#line 308 "../tests/keys" - {"avg",303}, -#line 365 "../tests/keys" - {"ccsdsFlags",360}, +#line 1753 "../tests/keys" + {"reserved",1748}, +#line 629 "../tests/keys" + {"dataStream",624}, +#line 2103 "../tests/keys" + {"temperature",2098}, + {""}, {""}, {""}, {""}, +#line 1206 "../tests/keys" + {"marsStream",1201}, +#line 1749 "../tests/keys" + {"reportType",1744}, + {""}, {""}, {""}, +#line 1259 "../tests/keys" + {"million",1254}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1717 "../tests/keys" + {"rdbtimeDay",1712}, +#line 684 "../tests/keys" + {"discipline",679}, + {""}, +#line 697 "../tests/keys" + {"dummyc",692}, + {""}, +#line 2269 "../tests/keys" + {"version",2264}, +#line 744 "../tests/keys" + {"endStep",739}, +#line 2264 "../tests/keys" + {"varno",2259}, + {""}, +#line 715 "../tests/keys" + {"eight",710}, + {""}, +#line 1323 "../tests/keys" + {"notDecoded",1318}, +#line 548 "../tests/keys" + {"codeType",543}, + {""}, +#line 1997 "../tests/keys" + {"signature",1992}, +#line 716 "../tests/keys" + {"elementsTable",711}, +#line 1226 "../tests/keys" + {"maximum",1221}, + {""}, {""}, +#line 1504 "../tests/keys" + {"operStream",1499}, + {""}, +#line 1722 "../tests/keys" + {"rdbtimeTime",1717}, + {""}, {""}, +#line 1205 "../tests/keys" + {"marsStep",1200}, + {""}, +#line 2046 "../tests/keys" + {"startStep",2041}, + {""}, {""}, {""}, {""}, {""}, +#line 698 "../tests/keys" + {"dx",693}, + {""}, +#line 1730 "../tests/keys" + {"rectimeDay",1725}, + {""}, +#line 1716 "../tests/keys" + {"rdbtimeDate",1711}, +#line 2167 "../tests/keys" + {"tubeDomain",2162}, + {""}, {""}, +#line 384 "../tests/keys" + {"categories",379}, +#line 237 "../tests/keys" + {"TT",232}, +#line 872 "../tests/keys" + {"g",867}, + {""}, +#line 1225 "../tests/keys" + {"max",1220}, + {""}, {""}, +#line 718 "../tests/keys" + {"eleven",713}, + {""}, {""}, +#line 1614 "../tests/keys" + {"partitionTable",1609}, +#line 2115 "../tests/keys" + {"threshold",2110}, + {""}, +#line 2039 "../tests/keys" + {"standardDeviation",2034}, + {""}, {""}, {""}, {""}, +#line 784 "../tests/keys" + {"extraDim",779}, + {""}, +#line 921 "../tests/keys" + {"hideThis",916}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 903 "../tests/keys" + {"gridType",898}, + {""}, {""}, {""}, {""}, +#line 1454 "../tests/keys" + {"oceanStream",1449}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 418 "../tests/keys" + {"channel",413}, +#line 560 "../tests/keys" + {"conceptDir",555}, +#line 717 "../tests/keys" + {"elevation",712}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 746 "../tests/keys" + {"endTimeStep",741}, +#line 1529 "../tests/keys" + {"padding",1524}, + {""}, {""}, +#line 671 "../tests/keys" + {"diagnostic",666}, +#line 1140 "../tests/keys" + {"longitude",1135}, + {""}, +#line 1092 "../tests/keys" + {"levtype",1087}, + {""}, {""}, +#line 1108 "../tests/keys" + {"local",1103}, + {""}, {""}, {""}, {""}, +#line 320 "../tests/keys" + {"average",315}, + {""}, {""}, {""}, {""}, +#line 1169 "../tests/keys" + {"longitudes",1164}, +#line 1712 "../tests/keys" + {"rdbSubtype",1707}, + {""}, +#line 1221 "../tests/keys" + {"matchSort",1216}, +#line 1711 "../tests/keys" + {"rdbDateTime",1706}, + {""}, +#line 782 "../tests/keys" + {"expver",777}, + {""}, {""}, +#line 2252 "../tests/keys" + {"values",2247}, + {""}, {""}, {""}, {""}, +#line 319 "../tests/keys" + {"auxiliary",314}, + {""}, +#line 199 "../tests/keys" + {"Nr",194}, + {""}, {""}, {""}, {""}, +#line 623 "../tests/keys" + {"dataOrigin",618}, + {""}, +#line 1091 "../tests/keys" + {"levels",1086}, +#line 298 "../tests/keys" + {"aerosolType",293}, +#line 1735 "../tests/keys" + {"refdate",1730}, +#line 44 "../tests/keys" + {"Dx",39}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 197 "../tests/keys" + {"Ni",192}, +#line 1090 "../tests/keys" + {"levelist",1085}, +#line 1116 "../tests/keys" + {"localDir",1111}, + {""}, +#line 1726 "../tests/keys" + {"recDateTime",1721}, + {""}, {""}, {""}, +#line 2203 "../tests/keys" + {"typicalDay",2198}, + {""}, +#line 755 "../tests/keys" + {"ensembleSize",750}, + {""}, +#line 1689 "../tests/keys" + {"pv",1684}, + {""}, {""}, {""}, +#line 775 "../tests/keys" + {"expandedTypes",770}, +#line 2283 "../tests/keys" + {"visibility",2278}, + {""}, +#line 947 "../tests/keys" + {"identifier",942}, + {""}, +#line 235 "../tests/keys" + {"TS",230}, +#line 2037 "../tests/keys" + {"spectralType",2032}, + {""}, +#line 205 "../tests/keys" + {"Ny",200}, +#line 884 "../tests/keys" + {"gg",879}, +#line 1202 "../tests/keys" + {"marsQuantile",1197}, {""}, {""}, #line 2208 "../tests/keys" - {"upperRange",2203}, -#line 689 "../tests/keys" - {"efiOrder",684}, + {"typicalTime",2203}, + {""}, +#line 1683 "../tests/keys" + {"productType",1678}, +#line 193 "../tests/keys" + {"Nb",188}, {""}, {""}, {""}, {""}, -#line 586 "../tests/keys" - {"countTotal",581}, - {""}, {""}, {""}, -#line 1148 "../tests/keys" - {"lowerRange",1143}, - {""}, {""}, {""}, {""}, {""}, -#line 1473 "../tests/keys" - {"oneThousand",1468}, -#line 282 "../tests/keys" - {"aerosolType",277}, -#line 1091 "../tests/keys" - {"localDir",1086}, - {""}, {""}, {""}, {""}, {""}, -#line 341 "../tests/keys" - {"bitmap",336}, -#line 1145 "../tests/keys" - {"longitudesList",1140}, - {""}, -#line 1707 "../tests/keys" - {"reference",1702}, - {""}, -#line 812 "../tests/keys" - {"file",807}, - {""}, {""}, -#line 2262 "../tests/keys" - {"waveDomain",2257}, - {""}, -#line 1062 "../tests/keys" - {"level",1057}, - {""}, {""}, {""}, -#line 603 "../tests/keys" - {"dataSelection",598}, -#line 809 "../tests/keys" - {"fcperiod",804}, -#line 805 "../tests/keys" - {"false",800}, - {""}, -#line 1300 "../tests/keys" - {"number",1295}, - {""}, -#line 2178 "../tests/keys" - {"typicalTime",2173}, +#line 628 "../tests/keys" + {"dataSelection",623}, +#line 1490 "../tests/keys" + {"oldSubtype",1485}, +#line 1110 "../tests/keys" + {"localDay",1105}, {""}, {""}, {""}, {""}, -#line 1654 "../tests/keys" - {"productType",1649}, - {""}, {""}, {""}, -#line 1060 "../tests/keys" - {"lev",1055}, -#line 1284 "../tests/keys" - {"nlev",1279}, +#line 2201 "../tests/keys" + {"typicalDate",2196}, + {""}, {""}, +#line 2246 "../tests/keys" + {"userTimeStart",2241}, +#line 1736 "../tests/keys" + {"reference",1731}, {""}, -#line 1271 "../tests/keys" - {"mybits",1266}, - {""}, {""}, {""}, -#line 2216 "../tests/keys" - {"userTimeStart",2211}, -#line 1729 "../tests/keys" - {"reservedOctet",1724}, -#line 2008 "../tests/keys" - {"spectralType",2003}, - {""}, {""}, -#line 1605 "../tests/keys" - {"platform",1600}, +#line 1087 "../tests/keys" + {"level",1082}, {""}, -#line 1697 "../tests/keys" - {"recDateTime",1692}, - {""}, {""}, -#line 219 "../tests/keys" - {"TS",214}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1799 "../tests/keys" - {"runwayState",1794}, +#line 1502 "../tests/keys" + {"oneThousand",1497}, {""}, -#line 1423 "../tests/keys" - {"obstype",1418}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 527 "../tests/keys" - {"coefsFirst",522}, - {""}, {""}, -#line 1494 "../tests/keys" - {"overlayTemplate",1489}, - {""}, {""}, -#line 284 "../tests/keys" - {"aerosolpacking",279}, - {""}, {""}, {""}, -#line 969 "../tests/keys" - {"isSatellite",964}, +#line 885 "../tests/keys" + {"global",880}, {""}, {""}, {""}, {""}, -#line 377 "../tests/keys" - {"centreDescription",372}, +#line 611 "../tests/keys" + {"countTotal",606}, {""}, {""}, -#line 2019 "../tests/keys" - {"startTimeStep",2014}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 360 "../tests/keys" - {"categoryType",355}, - {""}, {""}, {""}, -#line 2171 "../tests/keys" - {"typicalDate",2166}, - {""}, +#line 2242 "../tests/keys" + {"userDateStart",2237}, +#line 837 "../tests/keys" + {"file",832}, #line 1085 "../tests/keys" - {"localDay",1080}, -#line 2173 "../tests/keys" - {"typicalDay",2168}, -#line 220 "../tests/keys" - {"TScalc",215}, - {""}, {""}, {""}, -#line 2304 "../tests/keys" - {"xFirst",2299}, - {""}, {""}, {""}, {""}, {""}, -#line 1064 "../tests/keys" - {"levelType",1059}, -#line 827 "../tests/keys" - {"flags",822}, -#line 2212 "../tests/keys" - {"userDateStart",2207}, - {""}, {""}, {""}, -#line 811 "../tests/keys" - {"fgTime",806}, -#line 1684 "../tests/keys" - {"rdbType",1679}, + {"lev",1080}, {""}, -#line 2021 "../tests/keys" - {"statisticalProcess",2016}, +#line 1309 "../tests/keys" + {"nlev",1304}, +#line 830 "../tests/keys" + {"false",825}, +#line 994 "../tests/keys" + {"isSatellite",989}, +#line 2341 "../tests/keys" + {"yFirst",2336}, {""}, {""}, {""}, {""}, {""}, -#line 1201 "../tests/keys" - {"maximum",1196}, -#line 2187 "../tests/keys" - {"unitOfTime",2182}, - {""}, {""}, {""}, -#line 1093 "../tests/keys" - {"localFlag",1088}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 324 "../tests/keys" + {"avg",319}, + {""}, {""}, +#line 402 "../tests/keys" + {"centreDescription",397}, +#line 385 "../tests/keys" + {"categoryType",380}, {""}, -#line 2221 "../tests/keys" - {"validityTime",2216}, - {""}, {""}, {""}, -#line 2022 "../tests/keys" - {"statisticalProcessesList",2017}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1576 "../tests/keys" - {"parameterDiscipline",1571}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1693 "../tests/keys" - {"rdbtimeTime",1688}, -#line 1105 "../tests/keys" - {"localSecond",1100}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1179 "../tests/keys" - {"marsStartStep",1174}, +#line 1607 "../tests/keys" + {"parameterName",1602}, + {""}, +#line 993 "../tests/keys" + {"isOctahedral",988}, +#line 195 "../tests/keys" + {"Ncy",190}, + {""}, +#line 203 "../tests/keys" + {"Nuy",198}, + {""}, +#line 2083 "../tests/keys" + {"suiteName",2078}, {""}, {""}, {""}, {""}, -#line 1197 "../tests/keys" - {"matchTimeRepres",1192}, - {""}, {""}, {""}, -#line 839 "../tests/keys" - {"forecastperiod",834}, - {""}, -#line 1804 "../tests/keys" - {"satelliteSeries",1799}, -#line 822 "../tests/keys" - {"flag",817}, - {""}, -#line 808 "../tests/keys" - {"fcmonth",803}, - {""}, {""}, -#line 1084 "../tests/keys" - {"localDateTime",1079}, - {""}, {""}, -#line 1721 "../tests/keys" - {"representationMode",1716}, - {""}, -#line 810 "../tests/keys" - {"fgDate",805}, -#line 842 "../tests/keys" - {"freeFormData",837}, -#line 568 "../tests/keys" - {"coordinatesPresent",563}, - {""}, {""}, {""}, {""}, -#line 2137 "../tests/keys" - {"tubeDomain",2132}, - {""}, {""}, {""}, -#line 1708 "../tests/keys" - {"referenceDate",1703}, - {""}, {""}, {""}, {""}, {""}, -#line 288 "../tests/keys" - {"angleDivisor",283}, - {""}, {""}, -#line 1177 "../tests/keys" - {"marsQuantile",1172}, - {""}, -#line 1596 "../tests/keys" - {"periodOfTime",1591}, -#line 718 "../tests/keys" - {"endOfRange",713}, - {""}, {""}, {""}, {""}, {""}, -#line 838 "../tests/keys" - {"forecastTime",833}, - {""}, {""}, {""}, {""}, {""}, -#line 2220 "../tests/keys" - {"validityDate",2215}, - {""}, {""}, -#line 759 "../tests/keys" - {"extraDim",754}, -#line 596 "../tests/keys" - {"dataKeys",591}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1687 "../tests/keys" - {"rdbtimeDate",1682}, - {""}, {""}, -#line 1688 "../tests/keys" - {"rdbtimeDay",1683}, -#line 2194 "../tests/keys" - {"unitsDecimalScaleFactor",2189}, - {""}, {""}, -#line 947 "../tests/keys" - {"integerScaleFactor",942}, - {""}, -#line 757 "../tests/keys" - {"expver",752}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1427 "../tests/keys" - {"offset",1422}, - {""}, {""}, {""}, {""}, -#line 295 "../tests/keys" - {"anoffset",290}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 860 "../tests/keys" - {"global",855}, #line 116 "../tests/keys" {"Latin",111}, -#line 628 "../tests/keys" - {"decimalScaleFactor",623}, +#line 1523 "../tests/keys" + {"overlayTemplate",1518}, + {""}, {""}, {""}, +#line 834 "../tests/keys" + {"fcperiod",829}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 928 "../tests/keys" - {"indexTemplate",923}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 1114 "../tests/keys" - {"logTransform",1109}, - {""}, {""}, {""}, {""}, -#line 303 "../tests/keys" - {"auxiliary",298}, {""}, -#line 623 "../tests/keys" - {"dayOfForecast",618}, +#line 1994 "../tests/keys" + {"shortName",1989}, + {""}, +#line 1281 "../tests/keys" + {"modelName",1276}, + {""}, +#line 154 "../tests/keys" + {"Ly",149}, + {""}, +#line 2342 "../tests/keys" + {"yLast",2337}, +#line 1277 "../tests/keys" + {"modeNumber",1272}, +#line 1089 "../tests/keys" + {"levelType",1084}, + {""}, {""}, {""}, +#line 271 "../tests/keys" + {"Xo",266}, + {""}, {""}, {""}, {""}, +#line 1634 "../tests/keys" + {"platform",1629}, + {""}, {""}, {""}, {""}, {""}, {""}, #line 111 "../tests/keys" {"Lap",106}, {""}, -#line 1283 "../tests/keys" - {"newSubtype",1278}, +#line 236 "../tests/keys" + {"TScalc",231}, + {""}, {""}, {""}, +#line 272 "../tests/keys" + {"Xp",267}, + {""}, +#line 956 "../tests/keys" + {"indicatorOfParameter",951}, + {""}, {""}, +#line 901 "../tests/keys" + {"gridName",896}, + {""}, {""}, {""}, {""}, +#line 2251 "../tests/keys" + {"validityTime",2246}, + {""}, +#line 2063 "../tests/keys" + {"stepZero",2058}, +#line 189 "../tests/keys" + {"NT",184}, +#line 192 "../tests/keys" + {"Nassigned",187}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 948 "../tests/keys" + {"ieeeFloats",943}, + {""}, {""}, +#line 1605 "../tests/keys" + {"parameterDiscipline",1600}, + {""}, +#line 425 "../tests/keys" + {"clearTables",420}, +#line 714 "../tests/keys" + {"efiOrder",709}, +#line 2050 "../tests/keys" + {"statisticalProcess",2045}, +#line 2334 "../tests/keys" + {"xFirst",2329}, + {""}, +#line 123 "../tests/keys" + {"Lcy",118}, + {""}, +#line 150 "../tests/keys" + {"Luy",145}, + {""}, +#line 615 "../tests/keys" + {"daLoop",610}, + {""}, +#line 2168 "../tests/keys" + {"tubeNumber",2163}, + {""}, +#line 751 "../tests/keys" + {"energyNorm",746}, + {""}, {""}, +#line 711 "../tests/keys" + {"editionNumber",706}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2051 "../tests/keys" + {"statisticalProcessesList",2046}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 852 "../tests/keys" + {"flags",847}, + {""}, +#line 1109 "../tests/keys" + {"localDateTime",1104}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 836 "../tests/keys" + {"fgTime",831}, +#line 833 "../tests/keys" + {"fcmonth",828}, + {""}, {""}, +#line 300 "../tests/keys" + {"aerosolpacking",295}, + {""}, {""}, +#line 2335 "../tests/keys" + {"xLast",2330}, + {""}, {""}, {""}, +#line 1203 "../tests/keys" + {"marsRange",1198}, +#line 391 "../tests/keys" + {"ccsdsRsi",386}, +#line 373 "../tests/keys" + {"boustrophedonic",368}, + {""}, +#line 835 "../tests/keys" + {"fgDate",830}, + {""}, {""}, +#line 204 "../tests/keys" + {"Nx",199}, + {""}, {""}, {""}, +#line 1170 "../tests/keys" + {"longitudesList",1165}, + {""}, +#line 2237 "../tests/keys" + {"upperLimit",2232}, +#line 304 "../tests/keys" + {"angleDivisor",299}, + {""}, {""}, {""}, {""}, +#line 1961 "../tests/keys" + {"sectionNumber",1956}, + {""}, {""}, +#line 2057 "../tests/keys" + {"stepRange",2052}, +#line 2169 "../tests/keys" + {"two",2164}, +#line 2224 "../tests/keys" + {"unitsDecimalScaleFactor",2219}, + {""}, +#line 1130 "../tests/keys" + {"localSecond",1125}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 2146 "../tests/keys" + {"totalNumber",2141}, +#line 2226 "../tests/keys" + {"unitsFactor",2221}, + {""}, +#line 2244 "../tests/keys" + {"userDateTimeStart",2239}, +#line 2094 "../tests/keys" + {"tableNumber",2089}, + {""}, +#line 1254 "../tests/keys" + {"memberNumber",1249}, + {""}, {""}, {""}, {""}, {""}, +#line 2090 "../tests/keys" + {"systemNumber",2085}, + {""}, +#line 864 "../tests/keys" + {"forecastperiod",859}, + {""}, {""}, {""}, {""}, {""}, +#line 863 "../tests/keys" + {"forecastTime",858}, +#line 770 "../tests/keys" + {"expandedNames",765}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 871 "../tests/keys" - {"gridDefinition",866}, +#line 194 "../tests/keys" + {"Ncx",189}, + {""}, +#line 202 "../tests/keys" + {"Nux",197}, + {""}, {""}, +#line 108 "../tests/keys" + {"LaD",103}, +#line 2350 "../tests/keys" + {"zero",2345}, +#line 1074 "../tests/keys" + {"legNumber",1069}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 1030 "../tests/keys" + {"laplacianOperator",1025}, +#line 672 "../tests/keys" + {"diagnosticNumber",667}, +#line 1524 "../tests/keys" + {"overlayTemplateNumber",1519}, +#line 547 "../tests/keys" + {"codeFigure",542}, + {""}, +#line 847 "../tests/keys" + {"flag",842}, + {""}, {""}, +#line 152 "../tests/keys" + {"Lx",147}, + {""}, {""}, {""}, {""}, {""}, +#line 2238 "../tests/keys" + {"upperRange",2233}, +#line 172 "../tests/keys" + {"N",167}, +#line 991 "../tests/keys" + {"isFillup",986}, +#line 1258 "../tests/keys" + {"methodNumber",1253}, +#line 2163 "../tests/keys" + {"truncateLaplacian",2158}, + {""}, {""}, +#line 862 "../tests/keys" + {"forecastSteps",857}, + {""}, {""}, {""}, {""}, {""}, +#line 2217 "../tests/keys" + {"unitOfTime",2212}, +#line 815 "../tests/keys" + {"extractSubset",810}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1456 "../tests/keys" + {"offset",1451}, +#line 785 "../tests/keys" + {"extraDimensionPresent",780}, + {""}, {""}, +#line 540 "../tests/keys" + {"clusterNumber",535}, + {""}, {""}, {""}, +#line 311 "../tests/keys" + {"anoffset",306}, + {""}, +#line 419 "../tests/keys" + {"channelNumber",414}, + {""}, +#line 1694 "../tests/keys" + {"qnh",1689}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1076 "../tests/keys" + {"lengthDescriptors",1071}, + {""}, +#line 1985 "../tests/keys" + {"sequences",1980}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 622 "../tests/keys" + {"dataLength",617}, + {""}, +#line 121 "../tests/keys" + {"Lcx",116}, +#line 1701 "../tests/keys" + {"quantile",1696}, +#line 148 "../tests/keys" + {"Lux",143}, +#line 620 "../tests/keys" + {"dataFlag",615}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 390 "../tests/keys" + {"ccsdsFlags",385}, +#line 1196 "../tests/keys" + {"marsLatitude",1191}, + {""}, +#line 1988 "../tests/keys" + {"setDecimalPrecision",1983}, +#line 2005 "../tests/keys" + {"siteLatitude",2000}, +#line 408 "../tests/keys" + {"cfName",403}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1111 "../tests/keys" + {"localDecimalScaleFactor",1106}, + {""}, +#line 2313 "../tests/keys" + {"windSpeed",2308}, + {""}, +#line 1608 "../tests/keys" + {"parameterNumber",1603}, +#line 1011 "../tests/keys" + {"iterationNumber",1006}, +#line 839 "../tests/keys" + {"firstDimension",834}, + {""}, +#line 676 "../tests/keys" + {"dimensionNumber",671}, + {""}, {""}, {""}, {""}, {""}, +#line 633 "../tests/keys" + {"dataValues",628}, + {""}, {""}, +#line 1625 "../tests/keys" + {"periodOfTime",1620}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1139 "../tests/keys" + {"logTransform",1134}, +#line 1191 "../tests/keys" + {"marsGrid",1186}, + {""}, {""}, {""}, +#line 553 "../tests/keys" + {"coefsSecond",548}, +#line 1197 "../tests/keys" + {"marsLevel",1192}, + {""}, +#line 1613 "../tests/keys" + {"partitionNumber",1608}, +#line 1248 "../tests/keys" + {"meanSize",1243}, +#line 372 "../tests/keys" + {"bottomLevel",367}, + {""}, {""}, {""}, {""}, +#line 881 "../tests/keys" + {"generatingProcessTemplate",876}, + {""}, {""}, {""}, {""}, +#line 1666 "../tests/keys" + {"pressureLevel",1661}, + {""}, {""}, {""}, {""}, {""}, +#line 723 "../tests/keys" + {"endDescriptors",718}, + {""}, {""}, {""}, +#line 1444 "../tests/keys" + {"numberingOrderOfDiamonds",1439}, +#line 2098 "../tests/keys" + {"tablesVersion",2093}, +#line 679 "../tests/keys" + {"directionNumber",674}, + {""}, {""}, {""}, {""}, +#line 2141 "../tests/keys" + {"topLevel",2136}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1086 "../tests/keys" + {"levTypeName",1081}, + {""}, {""}, {""}, {""}, +#line 552 "../tests/keys" + {"coefsFirst",547}, +#line 1031 "../tests/keys" + {"laplacianOperatorIsSet",1026}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1721 "../tests/keys" + {"rdbtimeSecond",1716}, + {""}, {""}, +#line 2302 "../tests/keys" + {"windDirection",2297}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1509 "../tests/keys" + {"optionalData",1504}, + {""}, +#line 644 "../tests/keys" + {"datumSize",639}, + {""}, {""}, {""}, {""}, +#line 781 "../tests/keys" + {"expoffset",776}, + {""}, +#line 613 "../tests/keys" + {"crcrlf",608}, +#line 1308 "../tests/keys" + {"newSubtype",1303}, + {""}, {""}, {""}, {""}, +#line 1446 "../tests/keys" + {"observablePropertyTemplate",1441}, + {""}, +#line 1068 "../tests/keys" + {"latitudesList",1063}, + {""}, {""}, {""}, {""}, {""}, +#line 1733 "../tests/keys" + {"rectimeSecond",1728}, + {""}, {""}, {""}, {""}, +#line 1199 "../tests/keys" + {"marsLongitude",1194}, +#line 969 "../tests/keys" + {"instrumentIdentifier",964}, {""}, #line 2006 "../tests/keys" - {"spectralDataRepresentationType",2001}, - {""}, -#line 1682 "../tests/keys" - {"rdbDateTime",1677}, -#line 837 "../tests/keys" - {"forecastSteps",832}, - {""}, {""}, {""}, {""}, -#line 2214 "../tests/keys" - {"userDateTimeStart",2209}, - {""}, -#line 590 "../tests/keys" - {"daLoop",585}, - {""}, -#line 1016 "../tests/keys" - {"latitudeOfCenterPoint",1011}, -#line 2253 "../tests/keys" - {"visibility",2248}, - {""}, {""}, {""}, -#line 2312 "../tests/keys" - {"yLast",2307}, - {""}, -#line 856 "../tests/keys" - {"generatingProcessTemplate",851}, - {""}, -#line 528 "../tests/keys" - {"coefsSecond",523}, -#line 290 "../tests/keys" - {"angleOfRotation",285}, - {""}, {""}, {""}, {""}, -#line 287 "../tests/keys" - {"analysisOffsets",282}, -#line 730 "../tests/keys" - {"ensembleSize",725}, - {""}, -#line 1715 "../tests/keys" - {"referenceStep",1710}, - {""}, {""}, {""}, -#line 750 "../tests/keys" - {"expandedTypes",745}, -#line 1422 "../tests/keys" - {"observedData",1417}, - {""}, -#line 611 "../tests/keys" - {"dateOfForecast",606}, -#line 1461 "../tests/keys" - {"oldSubtype",1456}, -#line 1039 "../tests/keys" - {"latitudeSexagesimal",1034}, - {""}, {""}, -#line 2105 "../tests/keys" - {"timeOfForecast",2100}, - {""}, -#line 1051 "../tests/keys" - {"lengthDescriptors",1046}, -#line 1240 "../tests/keys" - {"minuteOfForecast",1235}, - {""}, -#line 1868 "../tests/keys" - {"secondOfForecast",1863}, + {"siteLongitude",2001}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 882 "../tests/keys" - {"groupSplitting",877}, -#line 1086 "../tests/keys" - {"localDecimalScaleFactor",1081}, - {""}, -#line 814 "../tests/keys" - {"firstDimension",809}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 2207 "../tests/keys" - {"upperLimit",2202}, - {""}, {""}, -#line 534 "../tests/keys" - {"computeStatistics",529}, - {""}, {""}, {""}, {""}, -#line 857 "../tests/keys" - {"generatingProcessTemplateNumber",852}, - {""}, -#line 1147 "../tests/keys" - {"lowerLimit",1142}, - {""}, {""}, {""}, -#line 1001 "../tests/keys" - {"kurt",996}, -#line 588 "../tests/keys" - {"crcrlf",583}, - {""}, {""}, -#line 2317 "../tests/keys" - {"yearOfForecast",2312}, - {""}, {""}, -#line 1959 "../tests/keys" - {"setDecimalPrecision",1954}, -#line 1982 "../tests/keys" - {"skew",1977}, - {""}, {""}, {""}, {""}, -#line 348 "../tests/keys" - {"boustrophedonic",343}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1983 "../tests/keys" - {"skewness",1978}, -#line 1089 "../tests/keys" - {"localDefinition",1084}, - {""}, -#line 400 "../tests/keys" - {"clearTables",395}, - {""}, {""}, {""}, {""}, {""}, -#line 1005 "../tests/keys" - {"laplacianOperator",1000}, - {""}, {""}, {""}, {""}, {""}, -#line 2199 "../tests/keys" - {"unknown",2194}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1146 "../tests/keys" - {"longitudinalDirectionGridLength",1141}, -#line 1002 "../tests/keys" - {"kurtosis",997}, - {""}, -#line 1672 "../tests/keys" - {"quantile",1667}, - {""}, {""}, -#line 1723 "../tests/keys" - {"representativeMember",1718}, - {""}, {""}, {""}, {""}, -#line 1956 "../tests/keys" - {"sequences",1951}, - {""}, {""}, -#line 673 "../tests/keys" - {"dx",668}, - {""}, {""}, {""}, {""}, {""}, #line 1828 "../tests/keys" - {"scaledDirections",1823}, + {"runwayState",1823}, {""}, -#line 1200 "../tests/keys" - {"max",1195}, +#line 421 "../tests/keys" + {"charValues",416}, {""}, -#line 1975 "../tests/keys" - {"siteId",1970}, - {""}, {""}, -#line 2133 "../tests/keys" - {"truncateLaplacian",2128}, +#line 1832 "../tests/keys" + {"satelliteNumber",1827}, +#line 2292 "../tests/keys" + {"waveDomain",2287}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1167 "../tests/keys" - {"marsIdent",1162}, +#line 1691 "../tests/keys" + {"qfe",1686}, {""}, -#line 1571 "../tests/keys" - {"paramId",1566}, -#line 101 "../tests/keys" - {"KS",96}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1665 "../tests/keys" - {"qnh",1660}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1118 "../tests/keys" - {"longitudeOfCenterPoint",1113}, +#line 557 "../tests/keys" + {"compressedData",552}, + {""}, {""}, {""}, {""}, +#line 953 "../tests/keys" + {"indexTemplate",948}, +#line 1750 "../tests/keys" + {"representationMode",1745}, + {""}, {""}, {""}, {""}, +#line 657 "../tests/keys" + {"defaultName",652}, {""}, -#line 1347 "../tests/keys" - {"numberOfFloats",1342}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 905 "../tests/keys" - {"hourOfForecast",900}, +#line 1451 "../tests/keys" + {"observedData",1446}, {""}, {""}, -#line 1017 "../tests/keys" - {"latitudeOfCenterPointInDegrees",1012}, +#line 990 "../tests/keys" + {"isEps",985}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 920 "../tests/keys" - {"identificationOfOriginatingGeneratingCentre",915}, -#line 1923 "../tests/keys" - {"section8",1918}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1012 "../tests/keys" + {"iteratorDisableUnrotate",1007}, + {""}, {""}, {""}, {""}, {""}, +#line 1362 "../tests/keys" + {"numberOfDirections",1357}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1121 "../tests/keys" + {"localLatitude",1116}, {""}, {""}, {""}, -#line 915 "../tests/keys" - {"iIncrement",910}, +#line 1215 "../tests/keys" + {"masterTableNumber",1210}, +#line 1118 "../tests/keys" + {"localFlag",1113}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 976 "../tests/keys" + {"internalVersion",971}, {""}, {""}, {""}, -#line 1415 "../tests/keys" - {"numberingOrderOfDiamonds",1410}, +#line 2048 "../tests/keys" + {"startTimeStep",2043}, {""}, {""}, {""}, {""}, +#line 299 "../tests/keys" + {"aerosolbinnumber",294}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 1432 "../tests/keys" + {"numberOfTimeSteps",1427}, + {""}, {""}, {""}, +#line 84 "../tests/keys" + {"GTSstr",79}, +#line 2207 "../tests/keys" + {"typicalSecond",2202}, + {""}, {""}, {""}, {""}, {""}, +#line 1891 "../tests/keys" + {"secondDimension",1886}, +#line 196 "../tests/keys" + {"Nf",191}, + {""}, +#line 551 "../tests/keys" + {"codedValues",546}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 1093 "../tests/keys" + {"libraryVersion",1088}, + {""}, +#line 1734 "../tests/keys" + {"reducedGrid",1729}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1989 "../tests/keys" + {"setLocalDefinition",1984}, + {""}, +#line 1204 "../tests/keys" + {"marsStartStep",1199}, + {""}, +#line 1445 "../tests/keys" + {"numericValues",1440}, + {""}, {""}, {""}, +#line 1361 "../tests/keys" + {"numberOfDiamonds",1356}, + {""}, {""}, +#line 1201 "../tests/keys" + {"marsParam",1196}, +#line 1131 "../tests/keys" + {"localSection",1126}, +#line 975 "../tests/keys" + {"integerValues",970}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1271 "../tests/keys" + {"missingValue",1266}, + {""}, +#line 36 "../tests/keys" + {"DiGiven",31}, + {""}, {""}, +#line 677 "../tests/keys" + {"dimensionType",672}, +#line 2250 "../tests/keys" + {"validityDate",2245}, +#line 788 "../tests/keys" + {"extraValues",783}, + {""}, {""}, +#line 541 "../tests/keys" + {"clusterSize",536}, +#line 1833 "../tests/keys" + {"satelliteSeries",1828}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 743 "../tests/keys" + {"endOfRange",738}, +#line 759 "../tests/keys" + {"epsPoint",754}, +#line 1758 "../tests/keys" + {"reservedOctet",1753}, +#line 842 "../tests/keys" + {"firstLatitude",837}, + {""}, +#line 868 "../tests/keys" + {"frequency",863}, + {""}, +#line 2121 "../tests/keys" + {"tiggeSection",2116}, + {""}, {""}, +#line 1187 "../tests/keys" + {"marsEndStep",1182}, + {""}, +#line 1772 "../tests/keys" + {"rootTablesDir",1767}, +#line 1737 "../tests/keys" + {"referenceDate",1732}, + {""}, {""}, {""}, +#line 1745 "../tests/keys" + {"referenceValue",1740}, + {""}, {""}, {""}, +#line 1372 "../tests/keys" + {"numberOfFloats",1367}, + {""}, +#line 1724 "../tests/keys" + {"realPart",1719}, + {""}, {""}, {""}, +#line 593 "../tests/keys" + {"coordinatesPresent",588}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 1672 "../tests/keys" + {"probPoint",1667}, + {""}, {""}, {""}, #line 1168 "../tests/keys" - {"marsKeywords",1163}, + {"longitudeSexagesimal",1163}, + {""}, {""}, {""}, +#line 2279 "../tests/keys" + {"verticalDomainTemplate",2274}, +#line 1143 "../tests/keys" + {"longitudeOfCenterPoint",1138}, {""}, -#line 927 "../tests/keys" - {"incrementOfLengths",922}, +#line 72 "../tests/keys" + {"FirstLatitude",67}, +#line 1476 "../tests/keys" + {"offsetSection0",1471}, {""}, -#line 296 "../tests/keys" - {"anoffsetFirst",291}, +#line 1628 "../tests/keys" + {"perturbedType",1623}, {""}, {""}, {""}, {""}, +#line 83 "../tests/keys" + {"GTS",78}, + {""}, {""}, +#line 886 "../tests/keys" + {"globalDomain",881}, +#line 1172 "../tests/keys" + {"lowerLimit",1167}, + {""}, +#line 1470 "../tests/keys" + {"offsetDescriptors",1465}, +#line 918 "../tests/keys" + {"heightLevelName",913}, +#line 880 "../tests/keys" + {"generatingProcessIdentifier",875}, + {""}, {""}, {""}, {""}, {""}, +#line 1752 "../tests/keys" + {"representativeMember",1747}, + {""}, +#line 669 "../tests/keys" + {"derivedForecast",664}, + {""}, {""}, {""}, +#line 2068 "../tests/keys" + {"stringValues",2063}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 187 "../tests/keys" + {"NR",182}, + {""}, +#line 2245 "../tests/keys" + {"userTimeEnd",2240}, + {""}, {""}, {""}, +#line 309 "../tests/keys" + {"angleSubdivisions",304}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 648 "../tests/keys" + {"dayOfForecast",643}, + {""}, {""}, +#line 2241 "../tests/keys" + {"userDateEnd",2236}, +#line 1487 "../tests/keys" + {"offsetSection9",1482}, + {""}, {""}, {""}, +#line 853 "../tests/keys" + {"floatVal",848}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 185 "../tests/keys" + {"NL",180}, + {""}, {""}, +#line 882 "../tests/keys" + {"generatingProcessTemplateNumber",877}, +#line 879 "../tests/keys" + {"generatingProcessIdentificationNumber",874}, +#line 374 "../tests/keys" + {"boustrophedonicOrdering",369}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1189 "../tests/keys" + {"marsExpver",1184}, +#line 1447 "../tests/keys" + {"observablePropertyTemplateNumber",1442}, + {""}, {""}, {""}, {""}, +#line 1173 "../tests/keys" + {"lowerRange",1168}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1041 "../tests/keys" + {"latitudeOfCenterPoint",1036}, + {""}, {""}, {""}, {""}, +#line 2003 "../tests/keys" + {"siteElevation",1998}, + {""}, {""}, {""}, {""}, +#line 1894 "../tests/keys" + {"secondLatitude",1889}, + {""}, {""}, +#line 827 "../tests/keys" + {"faFieldName",822}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1744 "../tests/keys" + {"referenceStep",1739}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 917 "../tests/keys" + {"headersOnly",912}, #line 110 "../tests/keys" {"LaR",105}, {""}, -#line 629 "../tests/keys" - {"defaultFaFieldName",624}, - {""}, {""}, {""}, -#line 1171 "../tests/keys" - {"marsLatitude",1166}, -#line 125 "../tests/keys" - {"LoR",120}, -#line 1976 "../tests/keys" - {"siteLatitude",1971}, - {""}, {""}, {""}, {""}, -#line 292 "../tests/keys" - {"angleOfRotationOfProjection",287}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 597 "../tests/keys" - {"dataLength",592}, - {""}, -#line 1458 "../tests/keys" - {"offsetSection9",1453}, -#line 997 "../tests/keys" - {"keyData",992}, - {""}, {""}, {""}, -#line 1176 "../tests/keys" - {"marsParam",1171}, - {""}, {""}, {""}, {""}, -#line 999 "../tests/keys" - {"keySat",994}, - {""}, {""}, {""}, -#line 108 "../tests/keys" - {"LaD",103}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 734 "../tests/keys" - {"epsPoint",729}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1683 "../tests/keys" - {"rdbSubtype",1678}, - {""}, {""}, {""}, -#line 1172 "../tests/keys" - {"marsLevel",1167}, - {""}, -#line 1242 "../tests/keys" - {"minuteOfReference",1237}, - {""}, {""}, -#line 1704 "../tests/keys" - {"rectimeSecond",1699}, -#line 1662 "../tests/keys" - {"qfe",1657}, - {""}, {""}, {""}, {""}, {""}, -#line 2112 "../tests/keys" - {"topLevel",2107}, -#line 1143 "../tests/keys" - {"longitudeSexagesimal",1138}, - {""}, {""}, -#line 1006 "../tests/keys" - {"laplacianOperatorIsSet",1001}, - {""}, -#line 44 "../tests/keys" - {"Dx",39}, - {""}, {""}, -#line 2282 "../tests/keys" - {"windPresent",2277}, - {""}, -#line 1695 "../tests/keys" - {"realPart",1690}, - {""}, {""}, {""}, -#line 1447 "../tests/keys" - {"offsetSection0",1442}, -#line 855 "../tests/keys" - {"generatingProcessIdentifier",850}, - {""}, -#line 353 "../tests/keys" - {"bufrTemplate",348}, - {""}, {""}, {""}, {""}, {""}, -#line 760 "../tests/keys" - {"extraDimensionPresent",755}, - {""}, {""}, -#line 854 "../tests/keys" - {"generatingProcessIdentificationNumber",849}, - {""}, {""}, -#line 615 "../tests/keys" - {"dateOfReference",610}, - {""}, {""}, {""}, {""}, -#line 2107 "../tests/keys" - {"timeOfReference",2102}, - {""}, {""}, {""}, -#line 100 "../tests/keys" - {"K",95}, -#line 1583 "../tests/keys" - {"partitionItems",1578}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1043 "../tests/keys" - {"latitudesList",1038}, - {""}, {""}, -#line 1082 "../tests/keys" - {"listOfScaledFrequencies",1077}, -#line 1812 "../tests/keys" - {"scaleFactorOfFirstSize",1807}, - {""}, {""}, -#line 2268 "../tests/keys" - {"widthOfFirstOrderValues",2263}, - {""}, {""}, {""}, {""}, {""}, -#line 1637 "../tests/keys" - {"pressureLevel",1632}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 919 "../tests/keys" - {"identificationNumber",914}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2319 "../tests/keys" - {"yearOfReference",2314}, -#line 2305 "../tests/keys" - {"xLast",2300}, - {""}, {""}, -#line 2165 "../tests/keys" - {"typeOfStatisticalPostProcessingOfEnsembleMembers",2160}, -#line 644 "../tests/keys" - {"derivedForecast",639}, - {""}, -#line 349 "../tests/keys" - {"boustrophedonicOrdering",344}, -#line 756 "../tests/keys" - {"expoffset",751}, - {""}, {""}, {""}, {""}, -#line 661 "../tests/keys" - {"distinctLatitudes",656}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 2209 "../tests/keys" - {"upperThreshold",2204}, -#line 1441 "../tests/keys" - {"offsetDescriptors",1436}, - {""}, -#line 547 "../tests/keys" - {"controlForecastCluster",542}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1149 "../tests/keys" - {"lowerThreshold",1144}, - {""}, -#line 728 "../tests/keys" - {"ensembleForecastNumbers",723}, - {""}, {""}, {""}, -#line 1173 "../tests/keys" - {"marsLevelist",1168}, -#line 2092 "../tests/keys" - {"tiggeSection",2087}, - {""}, -#line 1862 "../tests/keys" - {"secondDimension",1857}, -#line 2177 "../tests/keys" - {"typicalSecond",2172}, - {""}, {""}, {""}, {""}, {""}, -#line 1106 "../tests/keys" - {"localSection",1101}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1337 "../tests/keys" - {"numberOfDirections",1332}, - {""}, {""}, {""}, {""}, {""}, -#line 1933 "../tests/keys" - {"sectionPosition",1928}, - {""}, {""}, {""}, -#line 645 "../tests/keys" - {"dewPointTemperature",640}, - {""}, {""}, {""}, {""}, {""}, -#line 1405 "../tests/keys" - {"numberOfTimeSteps",1400}, -#line 1499 "../tests/keys" - {"packingType",1494}, -#line 2210 "../tests/keys" - {"upperThresholdValue",2205}, - {""}, {""}, {""}, {""}, -#line 1373 "../tests/keys" - {"numberOfOperationalForecastTube",1368}, - {""}, -#line 1352 "../tests/keys" - {"numberOfForecastsInTube",1347}, - {""}, {""}, -#line 1150 "../tests/keys" - {"lowerThresholdValue",1145}, -#line 744 "../tests/keys" - {"expandedDescriptors",739}, -#line 883 "../tests/keys" - {"groupSplittingMethodUsed",878}, - {""}, -#line 1391 "../tests/keys" - {"numberOfRadials",1386}, - {""}, {""}, -#line 1495 "../tests/keys" - {"overlayTemplateNumber",1490}, -#line 362 "../tests/keys" - {"ccccIdentifiers",357}, - {""}, -#line 608 "../tests/keys" - {"dataValues",603}, - {""}, {""}, {""}, {""}, {""}, -#line 1807 "../tests/keys" - {"scaleFactorOfDistanceFromEnsembleMean",1802}, - {""}, {""}, {""}, -#line 2166 "../tests/keys" - {"typeOfStatisticalProcessing",2161}, -#line 907 "../tests/keys" - {"hourOfReference",902}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1255 "../tests/keys" - {"modelIdentifier",1250}, - {""}, {""}, {""}, -#line 1865 "../tests/keys" - {"secondLatitude",1860}, -#line 280 "../tests/keys" - {"additionalFlagPresent",275}, -#line 1402 "../tests/keys" - {"numberOfSubsets",1397}, - {""}, {""}, {""}, {""}, {""}, -#line 1863 "../tests/keys" - {"secondDimensionCoordinateValueDefinition",1858}, - {""}, {""}, -#line 1123 "../tests/keys" - {"longitudeOfFirstGridPoint",1118}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 297 "../tests/keys" - {"anoffsetFrequency",292}, - {""}, -#line 843 "../tests/keys" - {"frequency",838}, -#line 1336 "../tests/keys" - {"numberOfDiamonds",1331}, #line 378 "../tests/keys" - {"centreForLocal",373}, + {"bufrTemplate",373}, {""}, {""}, {""}, -#line 1802 "../tests/keys" - {"satelliteIdentifier",1797}, +#line 269 "../tests/keys" + {"XR",264}, +#line 1171 "../tests/keys" + {"longitudinalDirectionGridLength",1166}, +#line 896 "../tests/keys" + {"gridDefinition",891}, {""}, -#line 1124 "../tests/keys" - {"longitudeOfFirstGridPointInDegrees",1119}, -#line 1711 "../tests/keys" - {"referenceOfLengths",1706}, - {""}, {""}, {""}, {""}, -#line 2037 "../tests/keys" - {"stretchingFactor",2032}, +#line 2185 "../tests/keys" + {"typeOfLevel",2180}, + {""}, {""}, +#line 636 "../tests/keys" + {"dateOfForecast",631}, + {""}, +#line 129 "../tests/keys" + {"LoR",124}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2195 "../tests/keys" + {"typeOfStatisticalPostProcessingOfEnsembleMembers",2190}, +#line 2134 "../tests/keys" + {"timeOfForecast",2129}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2011 "../tests/keys" - {"standardParallel",2006}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 72 "../tests/keys" - {"FirstLatitude",67}, - {""}, {""}, {""}, {""}, {""}, -#line 1851 "../tests/keys" - {"scalingFactorForFrequencies",1846}, -#line 924 "../tests/keys" - {"ifsParam",919}, - {""}, -#line 2032 "../tests/keys" - {"stepTypeInternal",2027}, - {""}, -#line 1063 "../tests/keys" - {"levelIndicator",1058}, - {""}, {""}, {""}, {""}, {""}, -#line 347 "../tests/keys" - {"bottomLevel",342}, - {""}, -#line 1692 "../tests/keys" - {"rdbtimeSecond",1687}, +#line 2347 "../tests/keys" + {"yearOfForecast",2342}, {""}, {""}, -#line 1265 "../tests/keys" - {"monthOfReference",1260}, +#line 1679 "../tests/keys" + {"productDefinition",1674}, {""}, {""}, {""}, {""}, -#line 1398 "../tests/keys" - {"numberOfSection",1393}, - {""}, {""}, -#line 1045 "../tests/keys" - {"lcwfvSuiteName",1040}, -#line 2129 "../tests/keys" - {"treatmentOfMissingData",2124}, +#line 1743 "../tests/keys" + {"referenceSampleInterval",1738}, {""}, {""}, {""}, {""}, {""}, -#line 1353 "../tests/keys" - {"numberOfFrequencies",1348}, - {""}, {""}, {""}, {""}, {""}, -#line 1820 "../tests/keys" - {"scaleFactorOfRadiusOfSphericalEarth",1815}, - {""}, {""}, -#line 795 "../tests/keys" - {"extractedDateTimeNumberOfSubsets",790}, - {""}, {""}, {""}, -#line 1489 "../tests/keys" - {"originalSubCentreIdentifier",1484}, -#line 937 "../tests/keys" - {"inputDelayedDescriptorReplicationFactor",932}, - {""}, -#line 1643 "../tests/keys" - {"probPoint",1638}, - {""}, {""}, {""}, {""}, {""}, -#line 1174 "../tests/keys" - {"marsLongitude",1169}, - {""}, -#line 1977 "../tests/keys" - {"siteLongitude",1972}, - {""}, {""}, -#line 2038 "../tests/keys" - {"stretchingFactorScaled",2033}, -#line 1296 "../tests/keys" - {"northernLatitudeOfDomain",1291}, - {""}, {""}, {""}, {""}, {""}, -#line 1282 "../tests/keys" - {"neitherPresent",1277}, -#line 1344 "../tests/keys" - {"numberOfDistinctSection9s",1339}, - {""}, -#line 396 "../tests/keys" - {"charValues",391}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 790 "../tests/keys" - {"extractSubset",785}, -#line 2155 "../tests/keys" - {"typeOfLevel",2150}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 944 "../tests/keys" - {"instrumentIdentifier",939}, -#line 951 "../tests/keys" - {"internalVersion",946}, - {""}, {""}, {""}, {""}, {""}, -#line 1263 "../tests/keys" - {"monthOfForecast",1258}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 210 "../tests/keys" - {"SecondLatitude",205}, +#line 818 "../tests/keys" + {"extractSubsetList",813}, +#line 954 "../tests/keys" + {"indexTemplateNumber",949}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2181 "../tests/keys" + {"typeOfGrid",2176}, +#line 1222 "../tests/keys" + {"matchTimeRepres",1217}, {""}, {""}, -#line 2012 "../tests/keys" - {"standardParallelInDegrees",2007}, - {""}, {""}, {""}, {""}, -#line 1882 "../tests/keys" - {"secondsOfReference",1877}, -#line 1995 "../tests/keys" - {"southernLatitudeOfDomain",1990}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 519 "../tests/keys" - {"clutterFilterIndicator",514}, -#line 255 "../tests/keys" - {"Xo",250}, - {""}, -#line 715 "../tests/keys" - {"endOfInterval",710}, -#line 1650 "../tests/keys" - {"productDefinition",1645}, - {""}, -#line 526 "../tests/keys" - {"codedValues",521}, - {""}, -#line 1096 "../tests/keys" - {"localLatitude",1091}, - {""}, -#line 647 "../tests/keys" - {"diagnosticNumber",642}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 256 "../tests/keys" - {"Xp",251}, - {""}, {""}, -#line 209 "../tests/keys" - {"SPD",204}, -#line 936 "../tests/keys" - {"inputDataPresentIndicator",931}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1099 "../tests/keys" - {"localLongitude",1094}, - {""}, {""}, {""}, {""}, {""}, -#line 675 "../tests/keys" - {"earthIsOblate",670}, - {""}, {""}, {""}, -#line 1822 "../tests/keys" - {"scaleFactorOfSecondSize",1817}, -#line 1134 "../tests/keys" - {"longitudeOfStretchingPole",1129}, - {""}, -#line 1484 "../tests/keys" - {"orientationOfTheGrid",1479}, - {""}, {""}, -#line 652 "../tests/keys" - {"dimensionType",647}, - {""}, {""}, -#line 2202 "../tests/keys" - {"unpackedSubsetPrecision",2197}, - {""}, {""}, {""}, -#line 1417 "../tests/keys" - {"observablePropertyTemplate",1412}, - {""}, -#line 1395 "../tests/keys" - {"numberOfReservedBytes",1390}, -#line 1135 "../tests/keys" - {"longitudeOfStretchingPoleInDegrees",1130}, -#line 37 "../tests/keys" - {"DiInDegrees",32}, +#line 2243 "../tests/keys" + {"userDateTimeEnd",2238}, {""}, {""}, {""}, #line 1188 "../tests/keys" - {"mask",1183}, -#line 833 "../tests/keys" - {"forecastPeriod",828}, - {""}, {""}, {""}, {""}, {""}, -#line 381 "../tests/keys" - {"centuryOfReference",376}, - {""}, {""}, {""}, -#line 1811 "../tests/keys" - {"scaleFactorOfFirstFixedSurface",1806}, -#line 1716 "../tests/keys" - {"referenceValue",1711}, -#line 633 "../tests/keys" - {"defaultParameter",628}, + {"marsExperimentOffset",1183}, + {""}, {""}, +#line 624 "../tests/keys" + {"dataRepresentation",619}, + {""}, {""}, +#line 312 "../tests/keys" + {"anoffsetFirst",307}, {""}, {""}, {""}, {""}, -#line 1190 "../tests/keys" - {"masterTableNumber",1185}, - {""}, {""}, {""}, {""}, -#line 1714 "../tests/keys" - {"referenceSampleInterval",1709}, - {""}, {""}, {""}, -#line 1651 "../tests/keys" - {"productDefinitionTemplateNumber",1646}, - {""}, -#line 599 "../tests/keys" - {"dataRepresentation",594}, - {""}, -#line 1821 "../tests/keys" - {"scaleFactorOfSecondFixedSurface",1816}, +#line 936 "../tests/keys" + {"iDirectionIncrement",931}, +#line 559 "../tests/keys" + {"computeStatistics",554}, +#line 1064 "../tests/keys" + {"latitudeSexagesimal",1059}, +#line 1307 "../tests/keys" + {"neitherPresent",1302}, +#line 410 "../tests/keys" + {"cfVarName",405}, +#line 558 "../tests/keys" + {"computeLaplacianOperator",553}, {""}, {""}, -#line 298 "../tests/keys" - {"anoffsetLast",293}, - {""}, {""}, {""}, {""}, -#line 291 "../tests/keys" - {"angleOfRotationInDegrees",286}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 48 "../tests/keys" - {"DyInDegrees",43}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 817 "../tests/keys" - {"firstLatitude",812}, - {""}, -#line 1496 "../tests/keys" - {"pack",1491}, - {""}, {""}, -#line 861 "../tests/keys" - {"globalDomain",856}, - {""}, {""}, -#line 630 "../tests/keys" - {"defaultFaLevelName",625}, - {""}, {""}, -#line 1268 "../tests/keys" - {"monthlyVerificationTime",1263}, - {""}, -#line 2069 "../tests/keys" - {"tablesVersion",2064}, - {""}, -#line 518 "../tests/keys" - {"clusteringMethod",513}, - {""}, {""}, -#line 1808 "../tests/keys" - {"scaleFactorOfDistributionFunctionParameter",1803}, - {""}, {""}, {""}, -#line 2039 "../tests/keys" - {"stringValues",2034}, - {""}, -#line 1090 "../tests/keys" - {"localDefinitionNumber",1085}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 893 "../tests/keys" - {"heightLevelName",888}, -#line 828 "../tests/keys" - {"floatVal",823}, - {""}, -#line 952 "../tests/keys" - {"internationalDataSubCategory",947}, - {""}, {""}, -#line 1960 "../tests/keys" - {"setLocalDefinition",1955}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 962 "../tests/keys" - {"isConstant",957}, -#line 536 "../tests/keys" - {"conceptsLocalDirAll",531}, - {""}, -#line 1824 "../tests/keys" - {"scaleFactorOfStandardDeviation",1819}, - {""}, -#line 1652 "../tests/keys" - {"productDefinitionTemplateNumberInternal",1647}, - {""}, {""}, {""}, -#line 1829 "../tests/keys" - {"scaledFrequencies",1824}, -#line 307 "../tests/keys" - {"averagingPeriod",302}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1825 "../tests/keys" - {"scaleFactorOfStandardDeviationInTheCluster",1820}, -#line 2200 "../tests/keys" - {"unpack",2195}, -#line 299 "../tests/keys" - {"applicationIdentifier",294}, - {""}, {""}, {""}, {""}, -#line 1805 "../tests/keys" - {"scaleFactorAtReferencePoint",1800}, - {""}, {""}, -#line 892 "../tests/keys" - {"headersOnly",887}, -#line 1463 "../tests/keys" - {"oneConstant",1458}, - {""}, {""}, -#line 2204 "../tests/keys" - {"unsignedIntegers",2199}, - {""}, {""}, -#line 1864 "../tests/keys" - {"secondDimensionPhysicalSignificance",1859}, - {""}, {""}, {""}, {""}, -#line 293 "../tests/keys" - {"angleSubdivisions",288}, -#line 185 "../tests/keys" - {"Nr",180}, - {""}, {""}, {""}, -#line 183 "../tests/keys" - {"Ni",178}, -#line 1266 "../tests/keys" - {"monthlyVerificationDate",1261}, - {""}, {""}, {""}, {""}, {""}, -#line 533 "../tests/keys" - {"computeLaplacianOperator",528}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1712 "../tests/keys" - {"referenceOfWidths",1707}, - {""}, -#line 2050 "../tests/keys" - {"subSetK",2045}, - {""}, -#line 1393 "../tests/keys" - {"numberOfRemaininChars",1388}, - {""}, {""}, -#line 1478 "../tests/keys" - {"optimisationTime",1473}, -#line 18 "../tests/keys" - {"Adelta",13}, -#line 602 "../tests/keys" - {"dataRepresentationType",597}, - {""}, {""}, {""}, {""}, -#line 736 "../tests/keys" - {"epsStatisticsPoint",731}, - {""}, -#line 1157 "../tests/keys" - {"marsClass",1152}, - {""}, {""}, -#line 956 "../tests/keys" - {"isAuto",951}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 253 "../tests/keys" - {"XR",248}, -#line 2186 "../tests/keys" - {"unitOfOffsetFromReferenceTime",2181}, -#line 2116 "../tests/keys" - {"totalLength",2111}, - {""}, {""}, {""}, {""}, -#line 1971 "../tests/keys" - {"simpleThinningMissingRadius",1966}, -#line 911 "../tests/keys" - {"iDirectionIncrement",906}, - {""}, -#line 600 "../tests/keys" - {"dataRepresentationTemplate",595}, - {""}, {""}, {""}, -#line 1575 "../tests/keys" - {"parameterCode",1570}, - {""}, {""}, {""}, -#line 1661 "../tests/keys" - {"pvlLocation",1656}, - {""}, {""}, -#line 717 "../tests/keys" - {"endOfProduct",712}, - {""}, {""}, {""}, {""}, {""}, -#line 1578 "../tests/keys" - {"parameterName",1573}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 217 "../tests/keys" - {"TAFstr",212}, - {""}, {""}, -#line 648 "../tests/keys" - {"diffInDays",643}, - {""}, {""}, {""}, {""}, -#line 392 "../tests/keys" - {"changingPrecision",387}, - {""}, -#line 2054 "../tests/keys" - {"suiteName",2049}, - {""}, {""}, -#line 2102 "../tests/keys" - {"timeIncrement",2097}, -#line 189 "../tests/keys" - {"Ny",184}, - {""}, -#line 625 "../tests/keys" - {"dayOfReference",620}, -#line 1852 "../tests/keys" - {"scanPosition",1847}, - {""}, {""}, -#line 1256 "../tests/keys" - {"modelName",1251}, - {""}, -#line 216 "../tests/keys" - {"TAF",211}, - {""}, {""}, {""}, {""}, {""}, -#line 876 "../tests/keys" - {"gridName",871}, - {""}, {""}, -#line 2066 "../tests/keys" - {"tableReference",2061}, - {""}, -#line 829 "../tests/keys" - {"floatValues",824}, - {""}, -#line 301 "../tests/keys" - {"atmosphericChemicalOrPhysicalConstituentType",296}, - {""}, {""}, -#line 1485 "../tests/keys" - {"orientationOfTheGridInDegrees",1480}, - {""}, -#line 180 "../tests/keys" - {"Nassigned",175}, - {""}, -#line 28 "../tests/keys" - {"CDFstr",23}, -#line 1667 "../tests/keys" - {"qnhPresent",1662}, -#line 1343 "../tests/keys" - {"numberOfDistinctSection8s",1338}, - {""}, {""}, {""}, {""}, {""}, -#line 1068 "../tests/keys" - {"libraryVersion",1063}, - {""}, -#line 1965 "../tests/keys" - {"shortName",1960}, -#line 1246 "../tests/keys" - {"missingValue",1241}, - {""}, -#line 950 "../tests/keys" - {"integerValues",945}, - {""}, {""}, {""}, -#line 2198 "../tests/keys" - {"unitsOfSecondFixedSurface",2193}, - {""}, {""}, {""}, -#line 2146 "../tests/keys" - {"typeOfDistributionFunction",2141}, -#line 27 "../tests/keys" - {"CDF",22}, - {""}, {""}, {""}, -#line 1416 "../tests/keys" - {"numericValues",1411}, - {""}, -#line 311 "../tests/keys" - {"backgroundProcess",306}, -#line 1577 "../tests/keys" - {"parameterIndicator",1572}, -#line 177 "../tests/keys" - {"NT",172}, - {""}, {""}, -#line 731 "../tests/keys" - {"ensembleStandardDeviation",726}, - {""}, -#line 1361 "../tests/keys" - {"numberOfIterations",1356}, -#line 729 "../tests/keys" - {"ensembleForecastNumbersList",724}, -#line 763 "../tests/keys" - {"extraValues",758}, -#line 1228 "../tests/keys" - {"meaningOfVerticalCoordinate",1223}, - {""}, {""}, {""}, {""}, -#line 592 "../tests/keys" - {"dataAccessors",587}, - {""}, -#line 2097 "../tests/keys" - {"tileIndex",2092}, -#line 1457 "../tests/keys" - {"offsetSection8",1452}, - {""}, {""}, -#line 387 "../tests/keys" - {"changeDecimalPrecision",382}, -#line 1482 "../tests/keys" - {"orderOfSPD",1477}, -#line 1297 "../tests/keys" - {"nosigPresent",1292}, -#line 726 "../tests/keys" - {"energyNorm",721}, -#line 1348 "../tests/keys" - {"numberOfForcasts",1343}, -#line 1377 "../tests/keys" - {"numberOfPartitions",1372}, -#line 1487 "../tests/keys" - {"originalParameterNumber",1482}, - {""}, {""}, -#line 1360 "../tests/keys" - {"numberOfInts",1355}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 686 "../tests/keys" - {"editionNumber",681}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 965 "../tests/keys" - {"isEps",960}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1574 "../tests/keys" - {"parameterCategory",1569}, - {""}, {""}, {""}, {""}, {""}, -#line 2088 "../tests/keys" - {"tiggeCentre",2083}, -#line 530 "../tests/keys" - {"complexPacking",525}, -#line 1606 "../tests/keys" - {"plusOneinOrdersOfSPD",1601}, - {""}, {""}, {""}, {""}, {""}, -#line 1599 "../tests/keys" - {"perturbedType",1594}, - {""}, -#line 193 "../tests/keys" - {"P",188}, - {""}, -#line 2320 "../tests/keys" - {"zero",2315}, -#line 881 "../tests/keys" - {"groupLengths",876}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1932 "../tests/keys" - {"sectionNumber",1927}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2131 "../tests/keys" - {"trueLengthOfLastGroup",2126}, - {""}, -#line 2071 "../tests/keys" - {"targetCompressionRatio",2066}, - {""}, {""}, {""}, {""}, {""}, -#line 343 "../tests/keys" - {"bitmapSectionPresent",338}, - {""}, {""}, {""}, -#line 45 "../tests/keys" - {"DxInDegrees",40}, - {""}, {""}, -#line 175 "../tests/keys" - {"NR",170}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 2270 "../tests/keys" - {"widthOfSPD",2265}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 634 "../tests/keys" - {"defaultSequence",629}, - {""}, -#line 589 "../tests/keys" - {"createNewData",584}, -#line 403 "../tests/keys" - {"climatologicalRegime",398}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2247 "../tests/keys" - {"verticalCoordinate",2242}, - {""}, -#line 1128 "../tests/keys" - {"longitudeOfNorthWestCornerOfArea",1123}, - {""}, {""}, -#line 816 "../tests/keys" - {"firstDimensionPhysicalSignificance",811}, - {""}, {""}, -#line 355 "../tests/keys" - {"calendarIdPresent",350}, - {""}, -#line 2188 "../tests/keys" - {"unitOfTimeIncrement",2183}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 225 "../tests/keys" + {"SPD",220}, {""}, #line 2040 "../tests/keys" - {"subCentre",2035}, - {""}, -#line 637 "../tests/keys" - {"defaultTypeOfLevel",632}, -#line 2235 "../tests/keys" - {"verificationDate",2230}, - {""}, -#line 1414 "../tests/keys" - {"numberOfVerticalPoints",1409}, -#line 2167 "../tests/keys" - {"typeOfTimeIncrement",2162}, - {""}, {""}, {""}, {""}, {""}, -#line 1663 "../tests/keys" - {"qfePresent",1658}, -#line 2064 "../tests/keys" - {"tableCode",2059}, -#line 401 "../tests/keys" - {"climateDateFrom",396}, - {""}, -#line 2293 "../tests/keys" - {"windVariableDirection",2288}, - {""}, {""}, {""}, -#line 1345 "../tests/keys" - {"numberOfDistributionFunctionParameters",1340}, + {"standardParallel",2035}, {""}, {""}, -#line 1928 "../tests/keys" - {"section9Pointer",1923}, +#line 2281 "../tests/keys" + {"verticalVisibility",2276}, + {""}, +#line 854 "../tests/keys" + {"floatValues",849}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 949 "../tests/keys" + {"ifsParam",944}, + {""}, +#line 1440 "../tests/keys" + {"numberOfValues",1435}, +#line 1114 "../tests/keys" + {"localDefinition",1109}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 283 "../tests/keys" - {"aerosolbinnumber",278}, - {""}, {""}, -#line 953 "../tests/keys" - {"interpretationOfNumberOfPoints",948}, +#line 226 "../tests/keys" + {"SecondLatitude",221}, {""}, {""}, {""}, {""}, -#line 383 "../tests/keys" - {"cfName",378}, -#line 2108 "../tests/keys" - {"timeRangeIndicator",2103}, - {""}, {""}, {""}, -#line 515 "../tests/keys" - {"clusterNumber",510}, - {""}, {""}, -#line 955 "../tests/keys" - {"isAccumulation",950}, - {""}, {""}, {""}, {""}, {""}, -#line 1362 "../tests/keys" - {"numberOfLocalDefinitions",1357}, - {""}, -#line 1885 "../tests/keys" - {"section0Pointer",1880}, - {""}, {""}, {""}, -#line 1119 "../tests/keys" - {"longitudeOfCenterPointInDegrees",1114}, - {""}, -#line 1162 "../tests/keys" - {"marsEndStep",1157}, - {""}, {""}, {""}, {""}, -#line 1870 "../tests/keys" - {"secondOrderFlags",1865}, -#line 582 "../tests/keys" - {"correction4Part",577}, -#line 281 "../tests/keys" - {"addressOfFileFreeSpaceInfo",276}, - {""}, {""}, -#line 394 "../tests/keys" - {"channelNumber",389}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 2087 "../tests/keys" - {"thresholdIndicator",2082}, - {""}, {""}, {""}, -#line 830 "../tests/keys" - {"forecastLeadTime",825}, - {""}, -#line 1223 "../tests/keys" - {"meanSize",1218}, - {""}, {""}, {""}, -#line 2052 "../tests/keys" - {"subcentreOfAnalysis",2047}, - {""}, {""}, {""}, -#line 1252 "../tests/keys" - {"modeNumber",1247}, - {""}, -#line 2215 "../tests/keys" - {"userTimeEnd",2210}, - {""}, -#line 1245 "../tests/keys" - {"missingDataFlag",1240}, - {""}, {""}, -#line 1413 "../tests/keys" - {"numberOfVerticalGridDescriptors",1408}, - {""}, -#line 2159 "../tests/keys" - {"typeOfPostProcessing",2154}, - {""}, {""}, -#line 1202 "../tests/keys" - {"md5Data",1197}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1597 "../tests/keys" - {"periodOfTimeIntervals",1592}, - {""}, -#line 1125 "../tests/keys" - {"longitudeOfIcosahedronPole",1120}, - {""}, {""}, -#line 1374 "../tests/keys" - {"numberOfPackedValues",1369}, - {""}, {""}, -#line 2251 "../tests/keys" - {"verticalVisibility",2246}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 382 "../tests/keys" - {"centuryOfReferenceTimeOfData",377}, -#line 1022 "../tests/keys" - {"latitudeOfLastGridPoint",1017}, - {""}, {""}, {""}, {""}, -#line 2249 "../tests/keys" - {"verticalDomainTemplate",2244}, - {""}, -#line 619 "../tests/keys" - {"datumSize",614}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 342 "../tests/keys" - {"bitmapPresent",337}, - {""}, {""}, {""}, {""}, {""}, -#line 2248 "../tests/keys" - {"verticalCoordinateDefinition",2243}, -#line 313 "../tests/keys" - {"baseAddress",308}, -#line 2211 "../tests/keys" - {"userDateEnd",2206}, - {""}, {""}, {""}, {""}, {""}, -#line 542 "../tests/keys" - {"consensusCount",537}, -#line 1974 "../tests/keys" - {"siteElevation",1969}, -#line 1372 "../tests/keys" - {"numberOfOctetsExtraDescriptors",1367}, - {""}, {""}, {""}, {""}, -#line 1216 "../tests/keys" - {"md5Section9",1211}, - {""}, {""}, {""}, -#line 339 "../tests/keys" - {"binaryScaleFactor",334}, -#line 1653 "../tests/keys" - {"productIdentifier",1648}, - {""}, {""}, -#line 1061 "../tests/keys" - {"levTypeName",1056}, - {""}, {""}, -#line 1955 "../tests/keys" - {"sensitiveAreaDomain",1950}, - {""}, {""}, {""}, {""}, {""}, -#line 1836 "../tests/keys" - {"scaledValueOfFirstSize",1831}, - {""}, -#line 1278 "../tests/keys" - {"nameOfFirstFixedSurface",1273}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 802 "../tests/keys" - {"faFieldName",797}, - {""}, {""}, -#line 570 "../tests/keys" - {"corr1Data",565}, - {""}, {""}, -#line 877 "../tests/keys" - {"gridPointPosition",872}, - {""}, -#line 2117 "../tests/keys" - {"totalNumber",2112}, -#line 793 "../tests/keys" - {"extractSubsetList",788}, -#line 846 "../tests/keys" - {"functionCode",841}, - {""}, -#line 1011 "../tests/keys" - {"latLonValues",1006}, - {""}, -#line 1359 "../tests/keys" - {"numberOfIntegers",1354}, - {""}, -#line 632 "../tests/keys" - {"defaultName",627}, - {""}, -#line 627 "../tests/keys" - {"decimalPrecision",622}, - {""}, {""}, {""}, {""}, {""}, -#line 1259 "../tests/keys" - {"molarMass",1254}, -#line 612 "../tests/keys" - {"dateOfForecastRun",607}, - {""}, {""}, {""}, {""}, -#line 573 "../tests/keys" - {"corr4Data",568}, -#line 1049 "../tests/keys" - {"legNumber",1044}, -#line 1673 "../tests/keys" - {"radialAngularSpacing",1668}, -#line 504 "../tests/keys" - {"clusterIdentifier",499}, - {""}, {""}, {""}, {""}, {""}, -#line 2145 "../tests/keys" - {"typeOfCompressionUsed",2140}, -#line 987 "../tests/keys" - {"iteratorDisableUnrotate",982}, -#line 2036 "../tests/keys" - {"streamOfAnalysis",2031}, -#line 733 "../tests/keys" - {"epsContinous",728}, - {""}, {""}, {""}, -#line 935 "../tests/keys" - {"indicatorOfUnitOfTimeRange",930}, - {""}, -#line 2192 "../tests/keys" - {"unitsConversionOffset",2187}, -#line 1055 "../tests/keys" - {"lengthOfIndexTemplate",1050}, - {""}, -#line 109 "../tests/keys" - {"LaDInDegrees",104}, - {""}, {""}, {""}, {""}, {""}, -#line 740 "../tests/keys" - {"expandedCodes",735}, - {""}, {""}, -#line 2149 "../tests/keys" - {"typeOfFirstFixedSurface",2144}, - {""}, {""}, -#line 182 "../tests/keys" - {"Nf",177}, - {""}, -#line 745 "../tests/keys" - {"expandedNames",740}, - {""}, {""}, {""}, {""}, -#line 1195 "../tests/keys" - {"matchLandType",1190}, - {""}, {""}, -#line 2070 "../tests/keys" - {"tablesVersionLatest",2065}, - {""}, {""}, -#line 1411 "../tests/keys" - {"numberOfValues",1406}, -#line 1175 "../tests/keys" - {"marsModel",1170}, - {""}, {""}, {""}, {""}, {""}, -#line 1497 "../tests/keys" - {"packedValues",1492}, - {""}, {""}, {""}, {""}, {""}, -#line 1238 "../tests/keys" - {"minuteOfAnalysis",1233}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2197 "../tests/keys" - {"unitsOfFirstFixedSurface",2192}, -#line 1107 "../tests/keys" - {"localSectionPresent",1102}, - {""}, -#line 2061 "../tests/keys" - {"systemNumber",2056}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1058 "../tests/keys" - {"lengthOfProjectLocalTemplate",1053}, - {""}, {""}, -#line 181 "../tests/keys" - {"Nb",176}, -#line 294 "../tests/keys" - {"angularPrecision",289}, - {""}, -#line 1831 "../tests/keys" - {"scaledValueOfDistanceFromEnsembleMean",1826}, -#line 1199 "../tests/keys" - {"matrixOfValues",1194}, - {""}, {""}, {""}, -#line 361 "../tests/keys" - {"cavokOrVisibility",356}, -#line 2003 "../tests/keys" - {"spatialProcessing",1998}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1814 "../tests/keys" - {"scaleFactorOfLengthOfSemiMajorAxis",1809}, -#line 1815 "../tests/keys" - {"scaleFactorOfLengthOfSemiMinorAxis",1810}, -#line 1233 "../tests/keys" - {"methodNumber",1228}, - {""}, {""}, {""}, {""}, -#line 2079 "../tests/keys" - {"theMessage",2074}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1476 "../tests/keys" - {"operatingMode",1471}, - {""}, {""}, -#line 963 "../tests/keys" - {"isCorrection",958}, -#line 2170 "../tests/keys" - {"typicalCentury",2165}, - {""}, {""}, {""}, {""}, {""}, -#line 516 "../tests/keys" - {"clusterSize",511}, -#line 2031 "../tests/keys" - {"stepTypeForConversion",2026}, -#line 1993 "../tests/keys" - {"southPoleOnProjectionPlane",1988}, - {""}, {""}, {""}, -#line 1021 "../tests/keys" - {"latitudeOfIcosahedronPole",1016}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2213 "../tests/keys" - {"userDateTimeEnd",2208}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1958 "../tests/keys" - {"setCalendarId",1953}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1608 "../tests/keys" - {"postAuxiliary",1603}, - {""}, -#line 2096 "../tests/keys" - {"tileClassification",2091}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 2203 "../tests/keys" - {"unpackedValues",2198}, -#line 870 "../tests/keys" - {"gridCoordinate",865}, - {""}, -#line 929 "../tests/keys" - {"indexTemplateNumber",924}, - {""}, -#line 621 "../tests/keys" - {"dayOfAnalysis",616}, -#line 1642 "../tests/keys" - {"probContinous",1637}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 2109 "../tests/keys" - {"timeRangeIndicatorFromStepRange",2104}, -#line 875 "../tests/keys" - {"gridDescriptionSectionPresent",870}, - {""}, -#line 1303 "../tests/keys" - {"numberInTheAuxiliaryArray",1298}, - {""}, {""}, -#line 514 "../tests/keys" - {"clusterMember9",509}, - {""}, {""}, {""}, -#line 1844 "../tests/keys" - {"scaledValueOfRadiusOfSphericalEarth",1839}, -#line 1925 "../tests/keys" - {"section8Pointer",1920}, - {""}, {""}, -#line 1717 "../tests/keys" - {"referenceValueError",1712}, - {""}, {""}, {""}, {""}, -#line 850 "../tests/keys" - {"g2grid",845}, - {""}, -#line 791 "../tests/keys" - {"extractSubsetIntervalEnd",786}, - {""}, -#line 1217 "../tests/keys" - {"md5Structure",1212}, -#line 1203 "../tests/keys" - {"md5DataSection",1198}, - {""}, {""}, -#line 1744 "../tests/keys" - {"roundedMarsLatitude",1739}, - {""}, -#line 147 "../tests/keys" - {"MS",142}, - {""}, -#line 898 "../tests/keys" - {"horizontalCoordinateSupplement",893}, -#line 792 "../tests/keys" - {"extractSubsetIntervalStart",787}, - {""}, {""}, -#line 2140 "../tests/keys" - {"twoOrdersOfSPD",2135}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1655 "../tests/keys" - {"productionStatusOfProcessedData",1650}, -#line 2091 "../tests/keys" - {"tiggeModel",2086}, - {""}, -#line 2138 "../tests/keys" - {"tubeNumber",2133}, - {""}, -#line 1164 "../tests/keys" - {"marsExpver",1159}, - {""}, {""}, {""}, {""}, -#line 762 "../tests/keys" - {"extraLocalSectionPresent",757}, - {""}, {""}, -#line 1334 "../tests/keys" - {"numberOfDataValues",1329}, -#line 1853 "../tests/keys" - {"scanningMode",1848}, - {""}, -#line 678 "../tests/keys" - {"earthMinorAxis",673}, - {""}, -#line 2007 "../tests/keys" - {"spectralMode",2002}, - {""}, -#line 1102 "../tests/keys" - {"localMinute",1097}, - {""}, {""}, {""}, -#line 571 "../tests/keys" - {"corr2Data",566}, - {""}, {""}, -#line 2083 "../tests/keys" - {"thisMarsType",2078}, - {""}, {""}, {""}, -#line 713 "../tests/keys" - {"endOfFileAddress",708}, -#line 2307 "../tests/keys" - {"yCoordinateOfSubSatellitePoint",2302}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1318 "../tests/keys" - {"numberOfChars",1313}, - {""}, {""}, {""}, -#line 2206 "../tests/keys" - {"updateSequenceNumber",2201}, - {""}, {""}, {""}, {""}, {""}, -#line 188 "../tests/keys" - {"Nx",183}, - {""}, {""}, {""}, -#line 1970 "../tests/keys" - {"significanceOfReferenceTime",1965}, -#line 641 "../tests/keys" - {"deleteExtraLocalSection",636}, -#line 1030 "../tests/keys" - {"latitudeOfStretchingPole",1025}, - {""}, {""}, {""}, -#line 1103 "../tests/keys" - {"localMonth",1098}, -#line 1378 "../tests/keys" - {"numberOfPoints",1373}, - {""}, {""}, {""}, -#line 2240 "../tests/keys" - {"versionNumOfFilesFreeSpaceStorage",2235}, - {""}, -#line 761 "../tests/keys" - {"extraLocalSectionNumber",756}, - {""}, {""}, {""}, {""}, {""}, -#line 1719 "../tests/keys" - {"remarkPresent",1714}, - {""}, -#line 1479 "../tests/keys" - {"optimizeScaleFactor",1474}, - {""}, {""}, {""}, -#line 2065 "../tests/keys" - {"tableNumber",2060}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 2132 "../tests/keys" - {"truncateDegrees",2127}, - {""}, {""}, {""}, {""}, {""}, -#line 93 "../tests/keys" - {"II",88}, -#line 995 "../tests/keys" - {"julianDay",990}, - {""}, {""}, {""}, {""}, -#line 1229 "../tests/keys" - {"memberNumber",1224}, -#line 1257 "../tests/keys" - {"modelVersionDate",1252}, - {""}, {""}, -#line 276 "../tests/keys" - {"accumulationInterval",271}, - {""}, {""}, -#line 1846 "../tests/keys" - {"scaledValueOfSecondSize",1841}, - {""}, -#line 196 "../tests/keys" - {"PLPresent",191}, -#line 1165 "../tests/keys" - {"marsForecastMonth",1160}, - {""}, {""}, {""}, {""}, -#line 2082 "../tests/keys" - {"thisMarsStream",2077}, -#line 2315 "../tests/keys" - {"yearOfCentury",2310}, - {""}, {""}, {""}, -#line 1215 "../tests/keys" - {"md5Section8",1210}, - {""}, -#line 1745 "../tests/keys" - {"roundedMarsLevelist",1740}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1969 "../tests/keys" - {"significanceOfReferenceDateAndTime",1964}, -#line 1640 "../tests/keys" - {"primaryMissingValue",1635}, - {""}, {""}, {""}, {""}, {""}, -#line 2306 "../tests/keys" - {"yCoordinateOfOriginOfSectorImage",2301}, - {""}, {""}, -#line 1835 "../tests/keys" - {"scaledValueOfFirstFixedSurface",1830}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1163 "../tests/keys" - {"marsExperimentOffset",1158}, - {""}, {""}, {""}, -#line 1307 "../tests/keys" - {"numberOfAnalysis",1302}, -#line 289 "../tests/keys" - {"angleMultiplier",284}, - {""}, {""}, {""}, {""}, {""}, -#line 1845 "../tests/keys" - {"scaledValueOfSecondFixedSurface",1840}, - {""}, {""}, -#line 664 "../tests/keys" - {"doExtractDateTime",659}, - {""}, -#line 1342 "../tests/keys" - {"numberOfDistinctSection7s",1337}, - {""}, {""}, {""}, -#line 1332 "../tests/keys" - {"numberOfDataPoints",1327}, - {""}, {""}, {""}, -#line 531 "../tests/keys" - {"componentIndex",526}, - {""}, -#line 897 "../tests/keys" - {"horizontalCoordinateDefinition",892}, -#line 1919 "../tests/keys" - {"section7",1914}, - {""}, {""}, {""}, {""}, -#line 1703 "../tests/keys" - {"rectimeMinute",1698}, - {""}, {""}, {""}, -#line 796 "../tests/keys" - {"extremeClockwiseWindDirection",791}, -#line 1131 "../tests/keys" - {"longitudeOfSouthEastCornerOfArea",1126}, - {""}, -#line 986 "../tests/keys" - {"iterationNumber",981}, - {""}, {""}, {""}, -#line 572 "../tests/keys" - {"corr3Data",567}, - {""}, -#line 651 "../tests/keys" - {"dimensionNumber",646}, -#line 1658 "../tests/keys" - {"projectionCenterFlag",1653}, - {""}, -#line 2115 "../tests/keys" - {"totalInitialConditions",2110}, - {""}, {""}, {""}, {""}, -#line 1832 "../tests/keys" - {"scaledValueOfDistributionFunctionParameter",1827}, -#line 1579 "../tests/keys" - {"parameterNumber",1574}, -#line 1584 "../tests/keys" - {"partitionNumber",1579}, -#line 1349 "../tests/keys" - {"numberOfForecastsInCluster",1344}, -#line 578 "../tests/keys" - {"correction2Part",573}, - {""}, {""}, -#line 1569 "../tests/keys" - {"paleontologicalOffset",1564}, - {""}, {""}, -#line 739 "../tests/keys" - {"expandedAbbreviations",734}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 914 "../tests/keys" - {"iDirectionIncrementInDegrees",909}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 636 "../tests/keys" - {"defaultStepUnits",631}, - {""}, {""}, -#line 1848 "../tests/keys" - {"scaledValueOfStandardDeviation",1843}, -#line 654 "../tests/keys" - {"directionNumber",649}, - {""}, {""}, {""}, {""}, -#line 564 "../tests/keys" - {"coordinate4OfLastGridPoint",559}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1669 "../tests/keys" - {"qualityControl",1664}, -#line 1849 "../tests/keys" - {"scaledValueOfStandardDeviationInTheCluster",1844}, - {""}, {""}, {""}, {""}, -#line 2005 "../tests/keys" - {"spectralDataRepresentationMode",2000}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 984 "../tests/keys" - {"isotopeIdentificationNumber",979}, - {""}, -#line 126 "../tests/keys" - {"LoV",121}, - {""}, {""}, {""}, {""}, -#line 2128 "../tests/keys" - {"totalNumberOfdimensions",2123}, -#line 894 "../tests/keys" - {"heightOrPressureOfLevel",889}, - {""}, {""}, -#line 1287 "../tests/keys" - {"normAtInitialTime",1282}, - {""}, -#line 1028 "../tests/keys" - {"latitudeOfSouthernPole",1023}, - {""}, -#line 862 "../tests/keys" - {"grib1divider",857}, - {""}, {""}, #line 769 "../tests/keys" - {"extractAreaWestLongitude",764}, + {"expandedDescriptors",764}, {""}, {""}, -#line 1120 "../tests/keys" - {"longitudeOfCentralPointInClusterDomain",1115}, -#line 576 "../tests/keys" - {"correction1Part",571}, - {""}, {""}, -#line 1258 "../tests/keys" - {"modelVersionTime",1253}, -#line 2201 "../tests/keys" - {"unpackedError",2196}, -#line 1078 "../tests/keys" - {"listOfDistributionFunctionParameter",1073}, - {""}, -#line 2018 "../tests/keys" - {"startStepInHours",2013}, - {""}, -#line 2015 "../tests/keys" - {"startOfMessage",2010}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 2016 "../tests/keys" - {"startOfRange",2011}, -#line 749 "../tests/keys" - {"expandedOriginalWidths",744}, - {""}, -#line 746 "../tests/keys" - {"expandedOriginalCodes",741}, +#line 561 "../tests/keys" + {"conceptsLocalDirAll",556}, +#line 1857 "../tests/keys" + {"scaledDirections",1852}, {""}, {""}, {""}, -#line 1464 "../tests/keys" - {"oneMillionConstant",1459}, - {""}, {""}, {""}, {""}, -#line 1218 "../tests/keys" - {"md5TimeDomainSection",1213}, - {""}, {""}, -#line 99 "../tests/keys" - {"JS",94}, - {""}, {""}, -#line 2175 "../tests/keys" - {"typicalMinute",2170}, - {""}, {""}, -#line 1498 "../tests/keys" - {"packingError",1493}, - {""}, {""}, {""}, -#line 1424 "../tests/keys" - {"oceanAtmosphereCoupling",1419}, -#line 1733 "../tests/keys" - {"resolutionAndComponentFlags",1728}, - {""}, {""}, {""}, {""}, -#line 2026 "../tests/keys" - {"stepForClustering",2021}, - {""}, {""}, {""}, -#line 1803 "../tests/keys" - {"satelliteNumber",1798}, -#line 1431 "../tests/keys" - {"offsetAfterLocalSection",1426}, -#line 1713 "../tests/keys" - {"referenceReflectivityForEchoTop",1708}, -#line 1121 "../tests/keys" - {"longitudeOfFirstDiamondCenterLine",1116}, -#line 1000 "../tests/keys" - {"kindOfProduct",995}, - {""}, {""}, -#line 758 "../tests/keys" - {"extendedFlag",753}, - {""}, {""}, -#line 1677 "../tests/keys" - {"radiusOfCentralCluster",1672}, - {""}, -#line 1316 "../tests/keys" - {"numberOfCategories",1311}, -#line 1325 "../tests/keys" - {"numberOfColumns",1320}, -#line 1295 "../tests/keys" - {"northernLatitudeOfClusterDomain",1290}, - {""}, {""}, -#line 2029 "../tests/keys" - {"stepRangeInHours",2024}, -#line 1122 "../tests/keys" - {"longitudeOfFirstDiamondCenterLineInDegrees",1117}, - {""}, {""}, -#line 1490 "../tests/keys" - {"originatingCentre",1485}, -#line 2127 "../tests/keys" - {"totalNumberOfTubes",2122}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 938 "../tests/keys" - {"inputExtendedDelayedDescriptorReplicationFactor",933}, - {""}, {""}, {""}, {""}, -#line 748 "../tests/keys" - {"expandedOriginalScales",743}, - {""}, {""}, -#line 1477 "../tests/keys" - {"operationalForecastCluster",1472}, - {""}, {""}, {""}, {""}, -#line 2160 "../tests/keys" - {"typeOfPreProcessing",2155}, - {""}, -#line 921 "../tests/keys" - {"identificationOfProject",916}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 656 "../tests/keys" - {"directionScalingFactor",651}, - {""}, {""}, -#line 2125 "../tests/keys" - {"totalNumberOfRepetitions",2120}, -#line 1641 "../tests/keys" - {"primaryMissingValueSubstitute",1636}, - {""}, {""}, {""}, -#line 2300 "../tests/keys" - {"xCoordinateOfSubSatellitePoint",2295}, - {""}, -#line 1659 "../tests/keys" - {"projectionCentreFlag",1654}, -#line 2148 "../tests/keys" - {"typeOfEnsembleMember",2143}, - {""}, -#line 2144 "../tests/keys" - {"typeOfCalendar",2139}, - {""}, {""}, {""}, -#line 1351 "../tests/keys" - {"numberOfForecastsInTheCluster",1346}, +#line 756 "../tests/keys" + {"ensembleStandardDeviation",751}, {""}, {""}, {""}, {""}, {""}, -#line 2241 "../tests/keys" - {"versionNumOfRootGroupSymbolTableEntry",2236}, +#line 2307 "../tests/keys" + {"windGust",2302}, {""}, -#line 1994 "../tests/keys" - {"southernLatitudeOfClusterDomain",1989}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 2287 "../tests/keys" - {"windSpeedTrend4",2282}, - {""}, -#line 546 "../tests/keys" - {"constituentType",541}, - {""}, {""}, {""}, {""}, -#line 1092 "../tests/keys" - {"localExtensionPadding",1087}, - {""}, -#line 1024 "../tests/keys" - {"latitudeOfNorthWestCornerOfArea",1019}, -#line 998 "../tests/keys" - {"keyMore",993}, - {""}, {""}, -#line 917 "../tests/keys" - {"iScansPositively",912}, - {""}, {""}, {""}, {""}, -#line 835 "../tests/keys" - {"forecastPeriodTo",830}, - {""}, {""}, {""}, {""}, -#line 1722 "../tests/keys" - {"representationType",1717}, +#line 686 "../tests/keys" + {"distinctLatitudes",681}, +#line 403 "../tests/keys" + {"centreForLocal",398}, {""}, {""}, {""}, #line 1690 "../tests/keys" - {"rdbtimeMinute",1685}, -#line 631 "../tests/keys" - {"defaultFaModelName",626}, -#line 2120 "../tests/keys" - {"totalNumberOfDirections",2115}, - {""}, {""}, {""}, {""}, -#line 735 "../tests/keys" - {"epsStatisticsContinous",730}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1615 "../tests/keys" - {"predefined_grid",1610}, -#line 198 "../tests/keys" - {"PVPresent",193}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 173 "../tests/keys" - {"NL",168}, + {"pvlLocation",1685}, +#line 2214 "../tests/keys" + {"unexpandedDescriptors",2209}, {""}, {""}, {""}, -#line 344 "../tests/keys" - {"bitsPerValue",339}, +#line 303 "../tests/keys" + {"analysisOffsets",298}, +#line 1518 "../tests/keys" + {"originalSubCentreIdentifier",1513}, +#line 2081 "../tests/keys" + {"subcentreOfAnalysis",2076}, {""}, -#line 1396 "../tests/keys" - {"numberOfRows",1391}, - {""}, {""}, {""}, -#line 1612 "../tests/keys" - {"preProcessingParameter",1607}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1170 "../tests/keys" - {"marsLamModel",1165}, +#line 661 "../tests/keys" + {"defaultStepUnits",656}, +#line 907 "../tests/keys" + {"groupSplitting",902}, {""}, {""}, -#line 1881 "../tests/keys" - {"secondsOfAnalysis",1876}, - {""}, {""}, {""}, -#line 1206 "../tests/keys" - {"md5Product",1201}, -#line 2299 "../tests/keys" - {"xCoordinateOfOriginOfSectorImage",2294}, +#line 2041 "../tests/keys" + {"standardParallelInDegrees",2036}, + {""}, +#line 930 "../tests/keys" + {"hourOfForecast",925}, + {""}, {""}, +#line 1224 "../tests/keys" + {"matrixOfValues",1219}, +#line 2096 "../tests/keys" + {"tablesLocalDir",2091}, + {""}, +#line 1952 "../tests/keys" + {"section8",1947}, + {""}, {""}, +#line 1507 "../tests/keys" + {"optimisationTime",1502}, +#line 867 "../tests/keys" + {"freeFormData",862}, {""}, {""}, {""}, {""}, -#line 803 "../tests/keys" - {"faLevelName",798}, +#line 666 "../tests/keys" + {"deleteExtraLocalSection",661}, {""}, {""}, {""}, {""}, {""}, -#line 1023 "../tests/keys" - {"latitudeOfLastGridPointInDegrees",1018}, - {""}, {""}, {""}, -#line 2100 "../tests/keys" - {"timeDomainTemplate",2095}, - {""}, {""}, -#line 1492 "../tests/keys" - {"originatorLocalTemplate",1487}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1007 "../tests/keys" - {"laplacianScalingFactor",1002}, - {""}, {""}, {""}, -#line 1249 "../tests/keys" - {"missingValuesPresent",1244}, - {""}, -#line 1279 "../tests/keys" - {"nameOfSecondFixedSurface",1274}, -#line 2122 "../tests/keys" - {"totalNumberOfFrequencies",2117}, - {""}, {""}, -#line 865 "../tests/keys" - {"grib2divider",860}, - {""}, {""}, {""}, {""}, -#line 1859 "../tests/keys" - {"scanningModeForOneDiamond",1854}, - {""}, {""}, -#line 884 "../tests/keys" - {"groupWidth",879}, -#line 1194 "../tests/keys" - {"matchAerosolPacking",1189}, - {""}, {""}, {""}, -#line 540 "../tests/keys" - {"conceptsMasterMarsDir",535}, - {""}, -#line 1412 "../tests/keys" - {"numberOfVerticalCoordinateValues",1407}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 2068 "../tests/keys" - {"tablesMasterDir",2063}, - {""}, -#line 1166 "../tests/keys" - {"marsGrid",1161}, - {""}, -#line 1979 "../tests/keys" - {"sizeOfOffsets",1974}, - {""}, {""}, {""}, -#line 385 "../tests/keys" - {"cfVarName",380}, - {""}, -#line 622 "../tests/keys" - {"dayOfEndOfOverallTimeInterval",617}, - {""}, {""}, {""}, {""}, -#line 380 "../tests/keys" - {"centuryOfAnalysis",375}, - {""}, {""}, -#line 992 "../tests/keys" - {"jIncrement",987}, - {""}, {""}, {""}, {""}, -#line 402 "../tests/keys" - {"climateDateTo",397}, - {""}, {""}, {""}, -#line 980 "../tests/keys" - {"is_uerra",975}, -#line 1317 "../tests/keys" - {"numberOfCharacters",1312}, - {""}, {""}, {""}, -#line 2080 "../tests/keys" - {"thisExperimentVersionNumber",2075}, -#line 1432 "../tests/keys" - {"offsetAfterPadding",1427}, - {""}, -#line 1326 "../tests/keys" - {"numberOfComponents",1321}, - {""}, -#line 934 "../tests/keys" - {"indicatorOfUnitForTimeRange",929}, - {""}, {""}, {""}, -#line 2163 "../tests/keys" - {"typeOfSecondFixedSurface",2158}, -#line 1243 "../tests/keys" - {"minutesAfterDataCutoff",1238}, - {""}, {""}, {""}, {""}, -#line 643 "../tests/keys" - {"deletePV",638}, -#line 939 "../tests/keys" - {"inputOriginatingCentre",934}, - {""}, {""}, +#line 1267 "../tests/keys" + {"minuteOfReference",1262}, #line 967 "../tests/keys" - {"isHindcast",962}, - {""}, {""}, {""}, {""}, {""}, -#line 1942 "../tests/keys" - {"section_09",1937}, -#line 948 "../tests/keys" - {"integerScalingFactorAppliedToDirections",943}, -#line 949 "../tests/keys" - {"integerScalingFactorAppliedToFrequencies",944}, - {""}, -#line 350 "../tests/keys" - {"bufrDataEncoded",345}, -#line 964 "../tests/keys" - {"isEPS",959}, - {""}, {""}, {""}, {""}, -#line 885 "../tests/keys" - {"groupWidths",880}, - {""}, -#line 127 "../tests/keys" - {"LoVInDegrees",122}, - {""}, {""}, {""}, -#line 593 "../tests/keys" - {"dataCategory",588}, - {""}, {""}, {""}, {""}, -#line 1418 "../tests/keys" - {"observablePropertyTemplateNumber",1413}, -#line 807 "../tests/keys" - {"falseNorthing",802}, -#line 1967 "../tests/keys" - {"short_name",1962}, - {""}, {""}, {""}, -#line 2277 "../tests/keys" - {"windGust",2272}, - {""}, {""}, {""}, -#line 1059 "../tests/keys" - {"lengthOfTimeRange",1054}, -#line 2172 "../tests/keys" - {"typicalDateTime",2167}, + {"inputShortDelayedDescriptorReplicationFactor",962}, + {""}, {""}, #line 2158 "../tests/keys" - {"typeOfPacking",2153}, -#line 562 "../tests/keys" - {"coordinate4Flag",557}, -#line 747 "../tests/keys" - {"expandedOriginalReferences",742}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 271 "../tests/keys" - {"_T",266}, - {""}, -#line 38 "../tests/keys" - {"DiInMetres",33}, -#line 1676 "../tests/keys" - {"radiusInMetres",1671}, -#line 1370 "../tests/keys" - {"numberOfModels",1365}, -#line 813 "../tests/keys" - {"fileConsistencyFlags",808}, - {""}, {""}, {""}, {""}, {""}, -#line 532 "../tests/keys" - {"compressedData",527}, - {""}, {""}, {""}, {""}, -#line 668 "../tests/keys" - {"driverInformationBlockAddress",663}, -#line 1888 "../tests/keys" - {"section10Pointer",1883}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1230 "../tests/keys" - {"messageLength",1225}, - {""}, {""}, {""}, {""}, {""}, -#line 1056 "../tests/keys" - {"lengthOfMessage",1051}, + {"totalNumberOfdimensions",2153}, {""}, {""}, -#line 2176 "../tests/keys" - {"typicalMonth",2171}, - {""}, -#line 970 "../tests/keys" - {"isSatelliteType",965}, -#line 302 "../tests/keys" - {"attributeOfTile",297}, - {""}, {""}, {""}, {""}, {""}, -#line 972 "../tests/keys" - {"is_aerosol",967}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1346 "../tests/keys" - {"numberOfEffectiveValues",1341}, +#line 2196 "../tests/keys" + {"typeOfStatisticalProcessing",2191}, {""}, {""}, -#line 866 "../tests/keys" - {"grib3divider",861}, -#line 49 "../tests/keys" - {"DyInMetres",44}, -#line 1740 "../tests/keys" - {"resolutionAndComponentFlags8",1735}, - {""}, {""}, {""}, -#line 2094 "../tests/keys" - {"tigge_name",2089}, -#line 979 "../tests/keys" - {"is_tigge",974}, - {""}, {""}, {""}, {""}, -#line 889 "../tests/keys" - {"gts_header",884}, -#line 521 "../tests/keys" - {"cnmc_isac",516}, - {""}, {""}, {""}, {""}, -#line 1702 "../tests/keys" - {"rectimeHour",1697}, - {""}, {""}, {""}, -#line 1397 "../tests/keys" - {"numberOfSecondOrderPackedValues",1392}, +#line 627 "../tests/keys" + {"dataRepresentationType",622}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 828 "../tests/keys" + {"faLevelName",823}, +#line 1858 "../tests/keys" + {"scaledFrequencies",1853}, {""}, -#line 1746 "../tests/keys" - {"roundedMarsLongitude",1741}, +#line 1198 "../tests/keys" + {"marsLevelist",1193}, {""}, {""}, {""}, -#line 957 "../tests/keys" - {"isCavok",952}, +#line 960 "../tests/keys" + {"indicatorOfUnitOfTimeRange",955}, +#line 2000 "../tests/keys" + {"simpleThinningMissingRadius",1995}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 659 "../tests/keys" + {"defaultSequence",654}, + {""}, +#line 1042 "../tests/keys" + {"latitudeOfCenterPointInDegrees",1037}, + {""}, +#line 640 "../tests/keys" + {"dateOfReference",635}, +#line 1378 "../tests/keys" + {"numberOfFrequencies",1373}, +#line 2156 "../tests/keys" + {"totalNumberOfTubes",2151}, + {""}, +#line 2215 "../tests/keys" + {"unexpandedDescriptorsEncoded",2210}, + {""}, {""}, +#line 2035 "../tests/keys" + {"spectralDataRepresentationType",2030}, +#line 787 "../tests/keys" + {"extraLocalSectionPresent",782}, + {""}, {""}, +#line 2136 "../tests/keys" + {"timeOfReference",2131}, + {""}, {""}, +#line 2265 "../tests/keys" + {"verificationDate",2260}, + {""}, {""}, {""}, +#line 2349 "../tests/keys" + {"yearOfReference",2344}, + {""}, {""}, {""}, {""}, {""}, +#line 363 "../tests/keys" + {"biFourierTruncationType",358}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1398 "../tests/keys" + {"numberOfOperationalForecastTube",1393}, + {""}, {""}, +#line 191 "../tests/keys" + {"NV",186}, +#line 625 "../tests/keys" + {"dataRepresentationTemplate",620}, + {""}, {""}, {""}, +#line 1124 "../tests/keys" + {"localLongitude",1119}, + {""}, +#line 1381 "../tests/keys" + {"numberOfGroups",1376}, +#line 572 "../tests/keys" + {"controlForecastCluster",567}, + {""}, {""}, +#line 1036 "../tests/keys" + {"latLonValues",1031}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 849 "../tests/keys" - {"g1conceptsMasterDir",844}, +#line 972 "../tests/keys" + {"integerScaleFactor",967}, + {""}, {""}, {""}, +#line 1321 "../tests/keys" + {"northernLatitudeOfDomain",1316}, + {""}, {""}, {""}, +#line 786 "../tests/keys" + {"extraLocalSectionNumber",781}, +#line 923 "../tests/keys" + {"horizontalCoordinateSupplement",918}, {""}, {""}, -#line 558 "../tests/keys" - {"coordinate2Start",553}, +#line 653 "../tests/keys" + {"decimalScaleFactor",648}, + {""}, {""}, {""}, +#line 1893 "../tests/keys" + {"secondDimensionPhysicalSignificance",1888}, + {""}, {""}, +#line 2280 "../tests/keys" + {"verticalDomainTemplateNumber",2275}, + {""}, {""}, {""}, {""}, +#line 1288 "../tests/keys" + {"monthOfForecast",1283}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1429 "../tests/keys" + {"numberOfSubsets",1424}, + {""}, {""}, +#line 908 "../tests/keys" + {"groupSplittingMethodUsed",903}, + {""}, {""}, +#line 945 "../tests/keys" + {"identificationOfOriginatingGeneratingCentre",940}, +#line 2149 "../tests/keys" + {"totalNumberOfDirections",2144}, +#line 2095 "../tests/keys" + {"tableReference",2090}, +#line 1220 "../tests/keys" + {"matchLandType",1215}, + {""}, {""}, +#line 1107 "../tests/keys" + {"listOfScaledFrequencies",1102}, + {""}, +#line 963 "../tests/keys" + {"inputExtendedDelayedDescriptorReplicationFactor",958}, +#line 1115 "../tests/keys" + {"localDefinitionNumber",1110}, +#line 313 "../tests/keys" + {"anoffsetFrequency",308}, +#line 428 "../tests/keys" + {"climatologicalRegime",423}, + {""}, +#line 858 "../tests/keys" + {"forecastPeriod",853}, + {""}, {""}, {""}, {""}, +#line 658 "../tests/keys" + {"defaultParameter",653}, + {""}, {""}, {""}, {""}, {""}, +#line 1516 "../tests/keys" + {"originalParameterNumber",1511}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1422 "../tests/keys" + {"numberOfReservedBytes",1417}, + {""}, +#line 2024 "../tests/keys" + {"southernLatitudeOfDomain",2019}, +#line 1282 "../tests/keys" + {"modelVersionDate",1277}, + {""}, +#line 2176 "../tests/keys" + {"typeOfDistributionFunction",2171}, +#line 1253 "../tests/keys" + {"meaningOfVerticalCoordinate",1248}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1293 "../tests/keys" + {"monthlyVerificationTime",1288}, {""}, #line 932 "../tests/keys" - {"indicatorOfTypeOfLevel",927}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1705 "../tests/keys" - {"reducedGrid",1700}, -#line 1340 "../tests/keys" - {"numberOfDistinctSection5s",1335}, - {""}, -#line 1350 "../tests/keys" - {"numberOfForecastsInEnsemble",1345}, - {""}, -#line 2193 "../tests/keys" - {"unitsConversionScaleFactor",2188}, - {""}, -#line 513 "../tests/keys" - {"clusterMember8",508}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 160 "../tests/keys" - {"N",155}, -#line 1404 "../tests/keys" - {"numberOfTimeRange",1399}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1921 "../tests/keys" - {"section7Pointer",1916}, -#line 1113 "../tests/keys" - {"local_use",1108}, - {""}, {""}, -#line 1080 "../tests/keys" - {"listOfModelIdentifiers",1075}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 635 "../tests/keys" - {"defaultShortName",630}, + {"hourOfReference",927}, {""}, {""}, {""}, -#line 373 "../tests/keys" - {"centralLongitude",368}, +#line 1070 "../tests/keys" + {"lcwfvSuiteName",1065}, +#line 130 "../tests/keys" + {"LoV",125}, {""}, -#line 1095 "../tests/keys" - {"localHour",1090}, +#line 368 "../tests/keys" + {"bitmapSectionPresent",363}, + {""}, {""}, +#line 362 "../tests/keys" + {"biFourierSubTruncationType",357}, + {""}, {""}, {""}, +#line 543 "../tests/keys" + {"clusteringMethod",538}, + {""}, {""}, +#line 1387 "../tests/keys" + {"numberOfLocalDefinitions",1382}, + {""}, {""}, {""}, +#line 1291 "../tests/keys" + {"monthlyVerificationDate",1286}, + {""}, +#line 944 "../tests/keys" + {"identificationNumber",939}, +#line 1508 "../tests/keys" + {"optimizeScaleFactor",1503}, + {""}, {""}, {""}, {""}, {""}, +#line 1513 "../tests/keys" + {"orientationOfTheGrid",1508}, {""}, {""}, {""}, {""}, -#line 1964 "../tests/keys" - {"shapeOfVerificationArea",1959}, -#line 520 "../tests/keys" - {"cnmc_cmcc",515}, -#line 84 "../tests/keys" - {"GTSstr",79}, - {""}, -#line 974 "../tests/keys" - {"is_chemical",969}, +#line 1696 "../tests/keys" + {"qnhPresent",1691}, {""}, {""}, -#line 1858 "../tests/keys" - {"scanningMode8",1853}, +#line 977 "../tests/keys" + {"internationalDataSubCategory",972}, +#line 614 "../tests/keys" + {"createNewData",609}, {""}, {""}, {""}, -#line 946 "../tests/keys" - {"integerPointValues",941}, +#line 1420 "../tests/keys" + {"numberOfRemaininChars",1415}, + {""}, {""}, {""}, {""}, {""}, +#line 690 "../tests/keys" + {"doExtractSubsets",685}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 1284 "../tests/keys" + {"molarMass",1279}, +#line 1425 "../tests/keys" + {"numberOfSection",1420}, + {""}, {""}, +#line 323 "../tests/keys" + {"averagingPeriod",318}, + {""}, +#line 1881 "../tests/keys" + {"scanPosition",1876}, + {""}, {""}, {""}, {""}, {""}, +#line 542 "../tests/keys" + {"clusteringDomain",537}, +#line 1911 "../tests/keys" + {"secondsOfReference",1906}, + {""}, +#line 1627 "../tests/keys" + {"perturbationNumber",1622}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1290 "../tests/keys" + {"monthOfReference",1285}, + {""}, +#line 2323 "../tests/keys" + {"windVariableDirection",2318}, {""}, {""}, {""}, {""}, #line 555 "../tests/keys" - {"coordinate1Start",550}, - {""}, {""}, -#line 1087 "../tests/keys" - {"localDefNumberOne",1082}, -#line 2143 "../tests/keys" - {"typeOfAuxiliaryInformation",2138}, -#line 1018 "../tests/keys" - {"latitudeOfCentralPointInClusterDomain",1013}, - {""}, {""}, -#line 1691 "../tests/keys" - {"rdbtimeMonth",1686}, + {"complexPacking",550}, {""}, {""}, {""}, {""}, -#line 2013 "../tests/keys" - {"standardParallelInMicrodegrees",2008}, -#line 1339 "../tests/keys" - {"numberOfDistinctSection4s",1334}, - {""}, {""}, -#line 60 "../tests/keys" - {"Experiment_Identifier",55}, -#line 545 "../tests/keys" - {"constantFieldHalfByte",540}, - {""}, -#line 941 "../tests/keys" - {"inputProcessIdentifier",936}, - {""}, {""}, {""}, -#line 976 "../tests/keys" - {"is_efas",971}, - {""}, {""}, {""}, -#line 601 "../tests/keys" - {"dataRepresentationTemplateNumber",596}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2174 "../tests/keys" - {"typicalHour",2169}, - {""}, {""}, {""}, {""}, -#line 1321 "../tests/keys" - {"numberOfClusters",1316}, - {""}, {""}, -#line 1116 "../tests/keys" - {"longitudeFirstInDegrees",1111}, - {""}, {""}, {""}, -#line 683 "../tests/keys" - {"easternLongitudeOfDomain",678}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 36 "../tests/keys" - {"DiGiven",31}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1666 "../tests/keys" - {"qnhAPresent",1661}, - {""}, -#line 163 "../tests/keys" - {"NAT",158}, - {""}, {""}, {""}, {""}, -#line 2267 "../tests/keys" - {"westernLongitudeOfDomain",2262}, -#line 888 "../tests/keys" - {"gts_ddhh00",883}, - {""}, {""}, {""}, {""}, -#line 581 "../tests/keys" - {"correction4",576}, -#line 305 "../tests/keys" - {"averaging1Flag",300}, - {""}, {""}, -#line 1827 "../tests/keys" - {"scaleValuesBy",1822}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 272 "../tests/keys" - {"_TS",267}, -#line 1838 "../tests/keys" - {"scaledValueOfLengthOfSemiMajorAxis",1833}, -#line 1839 "../tests/keys" - {"scaledValueOfLengthOfSemiMinorAxis",1834}, - {""}, {""}, {""}, -#line 831 "../tests/keys" - {"forecastMonth",826}, - {""}, {""}, {""}, -#line 1616 "../tests/keys" - {"predefined_grid_values",1611}, +#line 1373 "../tests/keys" + {"numberOfForcasts",1368}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1214 "../tests/keys" - {"md5Section7",1209}, -#line 2269 "../tests/keys" - {"widthOfLengths",2264}, +#line 621 "../tests/keys" + {"dataKeys",616}, +#line 761 "../tests/keys" + {"epsStatisticsPoint",756}, {""}, {""}, -#line 20 "../tests/keys" - {"Azi",15}, +#line 1680 "../tests/keys" + {"productDefinitionTemplateNumber",1675}, {""}, {""}, {""}, {""}, -#line 2009 "../tests/keys" - {"sphericalHarmonics",2004}, - {""}, {""}, {""}, -#line 1261 "../tests/keys" - {"monthOfAnalysis",1256}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 83 "../tests/keys" - {"GTS",78}, -#line 2151 "../tests/keys" - {"typeOfGrid",2146}, - {""}, -#line 873 "../tests/keys" - {"gridDefinitionSection",868}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 687 "../tests/keys" - {"efas_model",682}, -#line 1429 "../tests/keys" - {"offsetAfterCentreLocalSection",1424}, - {""}, {""}, {""}, -#line 399 "../tests/keys" - {"classOfAnalysis",394}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1689 "../tests/keys" - {"rdbtimeHour",1684}, -#line 374 "../tests/keys" - {"centralLongitudeInDegrees",369}, -#line 2236 "../tests/keys" - {"verificationMonth",2231}, - {""}, -#line 666 "../tests/keys" - {"doSimpleThinning",661}, - {""}, -#line 2152 "../tests/keys" - {"typeOfHorizontalLine",2147}, - {""}, -#line 2121 "../tests/keys" - {"totalNumberOfForecastProbabilities",2116}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 174 "../tests/keys" - {"NP",169}, - {""}, {""}, {""}, -#line 1320 "../tests/keys" - {"numberOfClusterLowResolution",1315}, - {""}, -#line 1104 "../tests/keys" - {"localNumberOfObservations",1099}, - {""}, {""}, {""}, {""}, {""}, -#line 1456 "../tests/keys" - {"offsetSection7",1451}, -#line 538 "../tests/keys" - {"conceptsLocalMarsDirAll",533}, -#line 1329 "../tests/keys" - {"numberOfCoordinatesValues",1324}, - {""}, {""}, {""}, -#line 1132 "../tests/keys" - {"longitudeOfSouthernPole",1127}, - {""}, {""}, {""}, -#line 567 "../tests/keys" - {"coordinateIndexNumber",562}, - {""}, {""}, {""}, {""}, -#line 1031 "../tests/keys" - {"latitudeOfStretchingPoleInDegrees",1026}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1052 "../tests/keys" - {"lengthIncrementForTheGroupLengths",1047}, - {""}, -#line 610 "../tests/keys" - {"dateOfAnalysis",605}, -#line 1698 "../tests/keys" - {"recentWeather",1693}, -#line 1598 "../tests/keys" - {"perturbationNumber",1593}, +#line 367 "../tests/keys" + {"bitmapPresent",362}, +#line 1117 "../tests/keys" + {"localExtensionPadding",1112}, {""}, {""}, -#line 2104 "../tests/keys" - {"timeOfAnalysis",2099}, +#line 855 "../tests/keys" + {"forecastLeadTime",850}, {""}, {""}, -#line 580 "../tests/keys" - {"correction3Part",575}, - {""}, -#line 1289 "../tests/keys" - {"northLatitudeOfCluster",1284}, -#line 665 "../tests/keys" - {"doExtractSubsets",660}, - {""}, -#line 1375 "../tests/keys" - {"numberOfParallelsBetweenAPoleAndTheEquator",1370}, +#line 1200 "../tests/keys" + {"marsModel",1195}, {""}, {""}, {""}, -#line 1032 "../tests/keys" - {"latitudeOfSubSatellitePoint",1027}, -#line 680 "../tests/keys" - {"eastLongitudeOfCluster",675}, - {""}, -#line 704 "../tests/keys" - {"endMark",699}, +#line 406 "../tests/keys" + {"centuryOfReference",401}, {""}, {""}, {""}, -#line 1331 "../tests/keys" - {"numberOfDataMatrices",1326}, -#line 46 "../tests/keys" - {"DxInMetres",41}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1322 "../tests/keys" - {"numberOfCodedValues",1317}, -#line 1033 "../tests/keys" - {"latitudeOfSubSatellitePointInDegrees",1028}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2264 "../tests/keys" - {"westLongitudeOfCluster",2259}, - {""}, {""}, {""}, {""}, {""}, -#line 2252 "../tests/keys" - {"verticalVisibilityCoded",2247}, -#line 657 "../tests/keys" - {"dirty_statistics",652}, - {""}, {""}, -#line 2014 "../tests/keys" - {"startOfHeaders",2009}, -#line 2314 "../tests/keys" - {"yearOfAnalysis",2309}, - {""}, {""}, {""}, {""}, {""}, -#line 2053 "../tests/keys" - {"subdivisionsOfBasicAngle",2048}, - {""}, -#line 789 "../tests/keys" - {"extractDateTimeYearStart",784}, - {""}, {""}, -#line 537 "../tests/keys" - {"conceptsLocalDirECMF",532}, -#line 41 "../tests/keys" - {"DjInDegrees",36}, -#line 1081 "../tests/keys" - {"listOfParametersUsedForClustering",1076}, - {""}, {""}, {""}, {""}, -#line 2142 "../tests/keys" - {"typeOfAnalysis",2137}, - {""}, {""}, {""}, {""}, {""}, -#line 1991 "../tests/keys" - {"southLatitudeOfCluster",1986}, - {""}, {""}, -#line 975 "../tests/keys" - {"is_chemical_distfn",970}, - {""}, {""}, {""}, {""}, -#line 273 "../tests/keys" - {"_anoffset",268}, - {""}, -#line 1743 "../tests/keys" - {"rootTablesDir",1738}, +#line 869 "../tests/keys" + {"frequencyNumber",864}, {""}, {""}, {""}, -#line 2238 "../tests/keys" - {"verifyingMonth",2233}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 2004 "../tests/keys" - {"spatialSmoothingOfProduct",1999}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1152 "../tests/keys" - {"lsdate_bug",1147}, +#line 922 "../tests/keys" + {"horizontalCoordinateDefinition",917}, {""}, {""}, {""}, -#line 1871 "../tests/keys" - {"secondOrderOfDifferentWidth",1866}, - {""}, {""}, {""}, -#line 697 "../tests/keys" - {"endDayTrend4",692}, - {""}, {""}, #line 306 "../tests/keys" - {"averaging2Flag",301}, - {""}, {""}, {""}, -#line 916 "../tests/keys" - {"iScansNegatively",911}, - {""}, {""}, -#line 1139 "../tests/keys" - {"longitudeOfThePoleOfStretching",1134}, -#line 1610 "../tests/keys" - {"powerOfTenUsedToScaleClimateWeight",1605}, - {""}, {""}, {""}, -#line 179 "../tests/keys" - {"NV",174}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 397 "../tests/keys" - {"checkInternalVersion",392}, - {""}, {""}, {""}, {""}, {""}, -#line 215 "../tests/keys" - {"Sub-Experiment_Identifier",210}, -#line 1763 "../tests/keys" - {"runwayDepthOfDepositState1",1758}, - {""}, -#line 767 "../tests/keys" - {"extractAreaNorthLatitude",762}, - {""}, {""}, -#line 1813 "../tests/keys" - {"scaleFactorOfFirstWavelength",1808}, - {""}, {""}, -#line 903 "../tests/keys" - {"hourOfAnalysis",898}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2136 "../tests/keys" - {"tsectionNumber5",2131}, - {""}, {""}, -#line 1364 "../tests/keys" - {"numberOfMembersInCluster",1359}, - {""}, -#line 499 "../tests/keys" - {"cloudsTitle4",494}, - {""}, {""}, {""}, -#line 1766 "../tests/keys" - {"runwayDepthOfDepositState4",1761}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 926 "../tests/keys" - {"implementationDateOfModelCycle",921}, - {""}, {""}, -#line 1267 "../tests/keys" - {"monthlyVerificationMonth",1262}, - {""}, {""}, {""}, {""}, -#line 836 "../tests/keys" - {"forecastProbabilityNumber",831}, -#line 662 "../tests/keys" - {"distinctLongitudes",657}, - {""}, -#line 1338 "../tests/keys" - {"numberOfDistinctSection3s",1333}, -#line 557 "../tests/keys" - {"coordinate2Flag",552}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 942 "../tests/keys" - {"inputShortDelayedDescriptorReplicationFactor",937}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 2063 "../tests/keys" - {"table2Version",2058}, -#line 1656 "../tests/keys" - {"projectLocalTemplate",1651}, -#line 1054 "../tests/keys" - {"lengthOfHeaders",1049}, - {""}, {""}, -#line 2316 "../tests/keys" - {"yearOfEndOfOverallTimeInterval",2311}, - {""}, {""}, -#line 1057 "../tests/keys" - {"lengthOfOriginatorLocalTemplate",1052}, - {""}, -#line 1927 "../tests/keys" - {"section9Length",1922}, - {""}, -#line 1962 "../tests/keys" - {"sfc_levtype",1957}, - {""}, {""}, {""}, {""}, {""}, -#line 1262 "../tests/keys" - {"monthOfEndOfOverallTimeInterval",1257}, - {""}, {""}, {""}, {""}, -#line 1887 "../tests/keys" - {"section10Length",1882}, - {""}, {""}, -#line 844 "../tests/keys" - {"frequencyNumber",839}, -#line 1488 "../tests/keys" - {"originalParameterTableNumber",1483}, -#line 765 "../tests/keys" - {"extractAreaLatitudeRank",760}, - {""}, {""}, -#line 279 "../tests/keys" - {"addExtraLocalSection",274}, - {""}, {""}, -#line 2057 "../tests/keys" - {"swapScanningLon",2052}, -#line 340 "../tests/keys" - {"bitMapIndicator",335}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1884 "../tests/keys" - {"section0Length",1879}, -#line 2250 "../tests/keys" - {"verticalDomainTemplateNumber",2245}, -#line 1394 "../tests/keys" - {"numberOfRepresentativeMember",1389}, - {""}, {""}, {""}, {""}, {""}, -#line 988 "../tests/keys" - {"jDirectionIncrement",983}, - {""}, {""}, {""}, {""}, -#line 1972 "../tests/keys" - {"simpleThinningSkip",1967}, -#line 554 "../tests/keys" - {"coordinate1Flag",549}, -#line 933 "../tests/keys" - {"indicatorOfUnitForTimeIncrement",928}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 872 "../tests/keys" - {"gridDefinitionDescription",867}, - {""}, {""}, -#line 1973 "../tests/keys" - {"simpleThinningStart",1968}, - {""}, {""}, -#line 895 "../tests/keys" - {"heightPressureEtcOfLevels",890}, -#line 1978 "../tests/keys" - {"sizeOfLength",1973}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1420 "../tests/keys" - {"observationGeneratingProcessIdentifier",1415}, - {""}, {""}, {""}, -#line 1029 "../tests/keys" - {"latitudeOfSouthernPoleInDegrees",1024}, -#line 1963 "../tests/keys" - {"shapeOfTheEarth",1958}, -#line 1069 "../tests/keys" - {"listMembersMissing",1064}, - {""}, {""}, {""}, {""}, {""}, -#line 973 "../tests/keys" - {"is_aerosol_optical",968}, - {""}, -#line 824 "../tests/keys" - {"flagForIrregularGridCoordinateList",819}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1911 "../tests/keys" - {"section5",1906}, -#line 1247 "../tests/keys" - {"missingValueManagement",1242}, -#line 1759 "../tests/keys" - {"runwayDepthOfDepositCodeState1",1754}, - {""}, {""}, {""}, {""}, {""}, -#line 904 "../tests/keys" - {"hourOfEndOfOverallTimeInterval",899}, - {""}, {""}, -#line 2020 "../tests/keys" - {"startingAzimuth",2015}, - {""}, -#line 1913 "../tests/keys" - {"section5Pointer",1908}, - {""}, {""}, {""}, -#line 1363 "../tests/keys" - {"numberOfLogicals",1358}, -#line 1241 "../tests/keys" - {"minuteOfModelVersion",1236}, - {""}, -#line 1869 "../tests/keys" - {"secondOfModelVersion",1864}, - {""}, {""}, {""}, -#line 1952 "../tests/keys" - {"section_8",1947}, - {""}, -#line 2271 "../tests/keys" - {"widthOfWidths",2266}, - {""}, {""}, -#line 1762 "../tests/keys" - {"runwayDepthOfDepositCodeState4",1757}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1015 "../tests/keys" - {"latitudeLongitudeValues",1010}, - {""}, {""}, {""}, -#line 1996 "../tests/keys" - {"sp1",1991}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1251 "../tests/keys" - {"mixedCoordinateFieldFlag",1246}, - {""}, {""}, {""}, {""}, -#line 1306 "../tests/keys" - {"numberMissingFromAveragesOrAccumulations",1301}, - {""}, -#line 1941 "../tests/keys" - {"section_08",1936}, - {""}, {""}, {""}, {""}, -#line 1894 "../tests/keys" - {"section1Pointer",1889}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 113 "../tests/keys" - {"Lar1InDegrees",108}, - {""}, {""}, -#line 845 "../tests/keys" - {"frequencyScalingFactor",840}, - {""}, {""}, {""}, -#line 141 "../tests/keys" - {"Lor1InDegrees",136}, - {""}, {""}, {""}, {""}, -#line 1909 "../tests/keys" - {"section4Pointer",1904}, - {""}, {""}, -#line 1816 "../tests/keys" - {"scaleFactorOfLowerLimit",1811}, -#line 1421 "../tests/keys" - {"observationType",1416}, -#line 1898 "../tests/keys" - {"section2Present",1893}, - {""}, -#line 880 "../tests/keys" - {"groupLeafNodeK",875}, -#line 266 "../tests/keys" - {"Yo",261}, -#line 834 "../tests/keys" - {"forecastPeriodFrom",829}, -#line 1886 "../tests/keys" - {"section1",1881}, -#line 1764 "../tests/keys" - {"runwayDepthOfDepositState2",1759}, -#line 1327 "../tests/keys" - {"numberOfContributingSpectralBands",1322}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 2184 "../tests/keys" - {"unexpandedDescriptors",2179}, -#line 823 "../tests/keys" - {"flagForAnyFurtherInformation",818}, - {""}, {""}, {""}, {""}, {""}, -#line 1710 "../tests/keys" - {"referenceForGroupWidths",1705}, - {""}, -#line 1483 "../tests/keys" - {"orderOfSpatialDifferencing",1478}, - {""}, -#line 267 "../tests/keys" - {"Yp",262}, - {""}, -#line 1732 "../tests/keys" - {"reservedSection4",1727}, -#line 1953 "../tests/keys" - {"selectStepTemplateInstant",1948}, - {""}, {""}, {""}, {""}, {""}, -#line 874 "../tests/keys" - {"gridDefinitionTemplateNumber",869}, -#line 1893 "../tests/keys" - {"section1Padding",1888}, -#line 1365 "../tests/keys" - {"numberOfMembersInEnsemble",1360}, - {""}, {""}, -#line 2298 "../tests/keys" - {"wrongPadding",2293}, - {""}, {""}, {""}, -#line 670 "../tests/keys" - {"dummy1",665}, - {""}, -#line 356 "../tests/keys" - {"calendarIdentification",351}, - {""}, -#line 106 "../tests/keys" - {"La1InDegrees",101}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 123 "../tests/keys" - {"Lo1InDegrees",118}, - {""}, -#line 1366 "../tests/keys" - {"numberOfMissing",1361}, -#line 2081 "../tests/keys" - {"thisMarsClass",2076}, - {""}, -#line 1906 "../tests/keys" - {"section4",1901}, -#line 2308 "../tests/keys" - {"yDirectionGridLength",2303}, - {""}, -#line 1908 "../tests/keys" - {"section4Padding",1903}, - {""}, {""}, -#line 517 "../tests/keys" - {"clusteringDomain",512}, - {""}, {""}, {""}, {""}, {""}, {""}, + {"angleOfRotation",301}, #line 1739 "../tests/keys" - {"resolutionAndComponentFlags7",1734}, - {""}, {""}, -#line 663 "../tests/keys" - {"doExtractArea",658}, -#line 2185 "../tests/keys" - {"unexpandedDescriptorsEncoded",2180}, - {""}, {""}, -#line 1264 "../tests/keys" - {"monthOfModelVersion",1259}, -#line 346 "../tests/keys" - {"boot_edition",341}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 575 "../tests/keys" - {"correction1",570}, - {""}, {""}, -#line 211 "../tests/keys" - {"SecondOfModelVersion",206}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1140 "../tests/keys" - {"longitudeOfThePolePoint",1135}, - {""}, -#line 2124 "../tests/keys" - {"totalNumberOfIterations",2119}, - {""}, -#line 945 "../tests/keys" - {"instrumentType",940}, + {"referenceForGroupWidths",1734}, {""}, {""}, {""}, -#line 1185 "../tests/keys" - {"marsType1",1180}, - {""}, -#line 1323 "../tests/keys" - {"numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction",1318}, -#line 1324 "../tests/keys" - {"numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction",1319}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1709 "../tests/keys" - {"referenceForGroupLengths",1704}, +#line 2060 "../tests/keys" + {"stepTypeForConversion",2055}, {""}, {""}, -#line 1725 "../tests/keys" - {"reserved1",1720}, - {""}, {""}, {""}, {""}, {""}, -#line 879 "../tests/keys" - {"groupInternalNodeK",874}, -#line 1319 "../tests/keys" - {"numberOfClusterHighResolution",1314}, - {""}, {""}, {""}, -#line 1819 "../tests/keys" - {"scaleFactorOfPrimeMeridianOffset",1814}, -#line 655 "../tests/keys" - {"directionOfVariation",650}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 2126 "../tests/keys" - {"totalNumberOfTileAttributePairs",2121}, - {""}, -#line 1657 "../tests/keys" - {"projectLocalTemplateNumber",1652}, - {""}, {""}, -#line 1866 "../tests/keys" - {"secondLatitudeInDegrees",1861}, -#line 1930 "../tests/keys" - {"sectionLengthLimitForEnsembles",1925}, +#line 987 "../tests/keys" + {"isConstant",982}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1341 "../tests/keys" - {"numberOfDistinctSection6s",1336}, - {""}, {""}, {""}, {""}, +#line 832 "../tests/keys" + {"falseNorthing",827}, + {""}, {""}, {""}, {""}, {""}, +#line 2108 "../tests/keys" + {"theMessage",2103}, + {""}, {""}, {""}, +#line 1159 "../tests/keys" + {"longitudeOfStretchingPole",1154}, +#line 2197 "../tests/keys" + {"typeOfTimeIncrement",2192}, + {""}, {""}, +#line 2122 "../tests/keys" + {"tiggeSuiteID",2117}, + {""}, {""}, {""}, +#line 18 "../tests/keys" + {"Adelta",13}, + {""}, +#line 1216 "../tests/keys" + {"masterTablesVersionNumber",1211}, + {""}, {""}, +#line 1962 "../tests/keys" + {"sectionPosition",1957}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 2218 "../tests/keys" + {"unitOfTimeIncrement",2213}, + {""}, {""}, {""}, +#line 2069 "../tests/keys" + {"subCentre",2064}, +#line 820 "../tests/keys" + {"extractedDateTimeNumberOfSubsets",815}, + {""}, {""}, +#line 2270 "../tests/keys" + {"versionNumOfFilesFreeSpaceStorage",2265}, + {""}, +#line 2178 "../tests/keys" + {"typeOfEnsembleMember",2173}, +#line 2099 "../tests/keys" + {"tablesVersionLatest",2094}, +#line 1681 "../tests/keys" + {"productDefinitionTemplateNumberInternal",1676}, +#line 375 "../tests/keys" + {"bufrDataEncoded",370}, + {""}, {""}, +#line 981 "../tests/keys" + {"isAuto",976}, + {""}, +#line 412 "../tests/keys" + {"changeDecimalPrecision",407}, + {""}, {""}, {""}, +#line 1738 "../tests/keys" + {"referenceForGroupLengths",1733}, + {""}, +#line 181 "../tests/keys" + {"NG",176}, #line 1182 "../tests/keys" - {"marsStream1",1177}, - {""}, -#line 776 "../tests/keys" - {"extractDateTimeHourStart",771}, - {""}, -#line 2164 "../tests/keys" - {"typeOfSizeInterval",2159}, + {"marsClass",1177}, {""}, {""}, {""}, -#line 1582 "../tests/keys" - {"parametersVersion",1577}, -#line 1304 "../tests/keys" - {"numberInTheGridCoordinateList",1299}, -#line 2027 "../tests/keys" - {"stepInHours",2022}, -#line 1126 "../tests/keys" - {"longitudeOfLastGridPoint",1121}, +#line 1423 "../tests/keys" + {"numberOfRows",1418}, {""}, -#line 1328 "../tests/keys" - {"numberOfControlForecastTube",1323}, -#line 351 "../tests/keys" - {"bufrHeaderCentre",346}, -#line 144 "../tests/keys" - {"M",139}, - {""}, -#line 1765 "../tests/keys" - {"runwayDepthOfDepositState3",1760}, +#line 2154 "../tests/keys" + {"totalNumberOfRepetitions",2149}, +#line 159 "../tests/keys" + {"MS",154}, +#line 417 "../tests/keys" + {"changingPrecision",412}, +#line 315 "../tests/keys" + {"applicationIdentifier",310}, {""}, {""}, -#line 1760 "../tests/keys" - {"runwayDepthOfDepositCodeState2",1755}, - {""}, {""}, {""}, {""}, {""}, -#line 1685 "../tests/keys" - {"rdb_key",1680}, -#line 1603 "../tests/keys" - {"physicalMeaningOfVerticalCoordinate",1598}, - {""}, {""}, {""}, -#line 1191 "../tests/keys" - {"masterTablesVersionNumber",1186}, -#line 2191 "../tests/keys" - {"unitsBias",2186}, - {""}, -#line 2286 "../tests/keys" - {"windSpeedTrend3",2281}, - {""}, {""}, {""}, -#line 1112 "../tests/keys" - {"local_padding",1107}, - {""}, -#line 1192 "../tests/keys" - {"masterTablesVersionNumberLatest",1187}, - {""}, {""}, {""}, {""}, {""}, -#line 1111 "../tests/keys" - {"localYear",1106}, - {""}, -#line 1823 "../tests/keys" - {"scaleFactorOfSecondWavelength",1818}, - {""}, {""}, {""}, -#line 2067 "../tests/keys" - {"tablesLocalDir",2062}, - {""}, {""}, {""}, -#line 310 "../tests/keys" - {"backgroundGeneratingProcessIdentifier",305}, -#line 97 "../tests/keys" - {"ITN",92}, - {""}, {""}, {""}, -#line 357 "../tests/keys" - {"calendarIdentificationTemplateNumber",352}, - {""}, {""}, -#line 1924 "../tests/keys" - {"section8Length",1919}, -#line 318 "../tests/keys" - {"basicAngleOfTheInitialProductionDomain",313}, - {""}, {""}, {""}, -#line 561 "../tests/keys" - {"coordinate3OfLastGridPoint",556}, - {""}, {""}, -#line 1154 "../tests/keys" - {"mAngleMultiplier",1149}, -#line 1801 "../tests/keys" - {"satelliteID",1796}, -#line 2135 "../tests/keys" - {"tsectionNumber4",2130}, - {""}, -#line 983 "../tests/keys" - {"isectionNumber4",978}, - {""}, {""}, {""}, {""}, -#line 1897 "../tests/keys" - {"section2Pointer",1892}, - {""}, -#line 1073 "../tests/keys" - {"listMembersUsed",1068}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1639 "../tests/keys" - {"primaryBitmap",1634}, -#line 804 "../tests/keys" - {"faModelName",799}, - {""}, {""}, {""}, -#line 2056 "../tests/keys" - {"swapScanningLat",2051}, -#line 115 "../tests/keys" - {"Lar2InDegrees",110}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 143 "../tests/keys" - {"Lor2InDegrees",138}, - {""}, -#line 2179 "../tests/keys" - {"typicalYear",2174}, -#line 1954 "../tests/keys" - {"selectStepTemplateInterval",1949}, -#line 262 "../tests/keys" - {"YR",257}, - {""}, -#line 1741 "../tests/keys" - {"rootGroupObjectHeaderAddress",1736}, - {""}, {""}, {""}, {""}, {""}, -#line 925 "../tests/keys" - {"ijDirectionIncrementGiven",920}, -#line 1356 "../tests/keys" - {"numberOfGroups",1351}, - {""}, -#line 2076 "../tests/keys" - {"templatesLocalDir",2071}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 577 "../tests/keys" - {"correction2",572}, - {""}, -#line 2224 "../tests/keys" - {"variationOfVisibilityDirection",2219}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2225 "../tests/keys" - {"variationOfVisibilityDirectionAngle",2220}, -#line 1270 "../tests/keys" - {"multiplicationFactorForLatLong",1265}, - {""}, -#line 1595 "../tests/keys" - {"percentileValue",1590}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1896 "../tests/keys" - {"section2Padding",1891}, - {""}, {""}, -#line 1044 "../tests/keys" - {"latitudinalDirectionGridLength",1039}, - {""}, #line 2093 "../tests/keys" - {"tiggeSuiteID",2088}, + {"tableCode",2088}, + {""}, {""}, {""}, {""}, +#line 2112 "../tests/keys" + {"thisMarsType",2107}, +#line 1112 "../tests/keys" + {"localDefNumberOne",1107}, {""}, {""}, {""}, {""}, {""}, -#line 699 "../tests/keys" - {"endGridDefinition",694}, -#line 2223 "../tests/keys" - {"variationOfVisibility",2218}, - {""}, {""}, {""}, -#line 1891 "../tests/keys" - {"section1Flags",1886}, +#line 1382 "../tests/keys" + {"numberOfGroupsOfDataValues",1377}, {""}, {""}, -#line 1286 "../tests/keys" - {"normAtFinalTime",1281}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1069 "../tests/keys" + {"latitudinalDirectionGridLength",1064}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2109 "../tests/keys" + {"thisExperimentVersionNumber",2104}, + {""}, {""}, +#line 626 "../tests/keys" + {"dataRepresentationTemplateNumber",621}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1005 "../tests/keys" + {"is_uerra",1000}, + {""}, {""}, {""}, +#line 689 "../tests/keys" + {"doExtractDateTime",684}, +#line 314 "../tests/keys" + {"anoffsetLast",309}, + {""}, {""}, +#line 724 "../tests/keys" + {"endGridDefinition",719}, +#line 1505 "../tests/keys" + {"operatingMode",1500}, + {""}, {""}, {""}, +#line 1418 "../tests/keys" + {"numberOfRadials",1413}, +#line 1511 "../tests/keys" + {"orderOfSPD",1506}, + {""}, {""}, +#line 231 "../tests/keys" + {"Sub-Experiment_Identifier",226}, +#line 861 "../tests/keys" + {"forecastProbabilityNumber",856}, + {""}, +#line 703 "../tests/keys" + {"earthMinorAxis",698}, +#line 1604 "../tests/keys" + {"parameterCode",1599}, + {""}, +#line 655 "../tests/keys" + {"defaultFaLevelName",650}, +#line 1227 "../tests/keys" + {"md5Data",1222}, +#line 654 "../tests/keys" + {"defaultFaFieldName",649}, + {""}, {""}, {""}, +#line 753 "../tests/keys" + {"ensembleForecastNumbers",748}, + {""}, {""}, +#line 1996 "../tests/keys" + {"short_name",1991}, + {""}, {""}, {""}, +#line 1514 "../tests/keys" + {"orientationOfTheGridInDegrees",1509}, + {""}, {""}, {""}, {""}, +#line 369 "../tests/keys" + {"bitsPerValue",364}, + {""}, +#line 1692 "../tests/keys" + {"qfePresent",1687}, + {""}, +#line 1853 "../tests/keys" + {"scaleFactorOfStandardDeviation",1848}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 2150 "../tests/keys" + {"totalNumberOfForecastProbabilities",2145}, + {""}, {""}, {""}, {""}, +#line 1854 "../tests/keys" + {"scaleFactorOfStandardDeviationInTheCluster",1849}, +#line 617 "../tests/keys" + {"dataAccessors",612}, + {""}, {""}, +#line 1127 "../tests/keys" + {"localMinute",1122}, + {""}, +#line 329 "../tests/keys" + {"baseAddress",324}, + {""}, {""}, +#line 1443 "../tests/keys" + {"numberOfVerticalPoints",1438}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 287 "../tests/keys" + {"_T",282}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1128 "../tests/keys" + {"localMonth",1123}, + {""}, +#line 2036 "../tests/keys" + {"spectralMode",2031}, +#line 1671 "../tests/keys" + {"probContinous",1666}, + {""}, {""}, {""}, {""}, {""}, +#line 2111 "../tests/keys" + {"thisMarsStream",2106}, + {""}, +#line 101 "../tests/keys" + {"KS",96}, + {""}, +#line 1856 "../tests/keys" + {"scaleValuesBy",1851}, + {""}, {""}, {""}, {""}, {""}, +#line 209 "../tests/keys" + {"P",204}, +#line 961 "../tests/keys" + {"inputDataPresentIndicator",956}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1882 "../tests/keys" + {"scanningMode",1877}, + {""}, +#line 662 "../tests/keys" + {"defaultTypeOfLevel",657}, +#line 637 "../tests/keys" + {"dateOfForecastRun",632}, + {""}, {""}, +#line 2004 "../tests/keys" + {"siteId",1999}, +#line 2159 "../tests/keys" + {"treatmentOfMissingData",2154}, + {""}, {""}, {""}, {""}, +#line 650 "../tests/keys" + {"dayOfReference",645}, +#line 2120 "../tests/keys" + {"tiggeModel",2115}, + {""}, {""}, +#line 1192 "../tests/keys" + {"marsIdent",1187}, + {""}, {""}, +#line 1517 "../tests/keys" + {"originalParameterTableNumber",1512}, + {""}, {""}, +#line 567 "../tests/keys" + {"consensusCount",562}, +#line 1914 "../tests/keys" + {"section0Pointer",1909}, + {""}, +#line 914 "../tests/keys" + {"gts_header",909}, +#line 1892 "../tests/keys" + {"secondDimensionCoordinateValueDefinition",1887}, + {""}, +#line 997 "../tests/keys" + {"is_aerosol",992}, + {""}, +#line 1600 "../tests/keys" + {"paramId",1595}, +#line 2151 "../tests/keys" + {"totalNumberOfFrequencies",2146}, #line 73 "../tests/keys" {"GDSPresent",68}, - {""}, {""}, {""}, {""}, -#line 1013 "../tests/keys" - {"latitudeFirstInDegrees",1008}, - {""}, {""}, {""}, {""}, {""}, -#line 1761 "../tests/keys" - {"runwayDepthOfDepositCodeState3",1756}, -#line 2284 "../tests/keys" - {"windSpeedTrend1",2279}, - {""}, -#line 694 "../tests/keys" - {"endDayTrend1",689}, -#line 1874 "../tests/keys" - {"secondaryBitmap",1869}, -#line 1183 "../tests/keys" - {"marsStream2",1178}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1694 "../tests/keys" - {"rdbtimeYear",1689}, -#line 768 "../tests/keys" - {"extractAreaSouthLatitude",763}, - {""}, {""}, {""}, -#line 316 "../tests/keys" - {"baseTimeEPS",311}, -#line 484 "../tests/keys" - {"cloudsTitle1",479}, -#line 1133 "../tests/keys" - {"longitudeOfSouthernPoleInDegrees",1128}, - {""}, {""}, -#line 1904 "../tests/keys" - {"section3Pointer",1899}, - {""}, -#line 832 "../tests/keys" - {"forecastOrSingularVectorNumber",827}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 2301 "../tests/keys" - {"xDirectionGridLength",2296}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 39 "../tests/keys" - {"Dj",34}, - {""}, -#line 777 "../tests/keys" - {"extractDateTimeMinuteEnd",772}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 779 "../tests/keys" - {"extractDateTimeMinuteStart",774}, - {""}, -#line 794 "../tests/keys" - {"extractedAreaNumberOfSubsets",789}, - {""}, {""}, {""}, -#line 766 "../tests/keys" - {"extractAreaLongitudeRank",761}, - {""}, {""}, {""}, {""}, -#line 605 "../tests/keys" - {"dataSubCategory",600}, - {""}, {""}, {""}, -#line 1273 "../tests/keys" - {"n2",1268}, - {""}, -#line 786 "../tests/keys" - {"extractDateTimeStart",781}, +#line 539 "../tests/keys" + {"clusterMember9",534}, {""}, {""}, -#line 1187 "../tests/keys" - {"mars_labeling",1182}, +#line 1283 "../tests/keys" + {"modelVersionTime",1278}, {""}, {""}, -#line 1048 "../tests/keys" - {"legBaseTime",1043}, -#line 2075 "../tests/keys" - {"temperatureAndDewpointPresent",2070}, -#line 783 "../tests/keys" - {"extractDateTimeSecondEnd",778}, +#line 1075 "../tests/keys" + {"legacyGaussSubarea",1070}, +#line 1957 "../tests/keys" + {"section9Pointer",1952}, {""}, -#line 780 "../tests/keys" - {"extractDateTimeMonthEnd",775}, - {""}, {""}, {""}, {""}, -#line 1903 "../tests/keys" - {"section3Padding",1898}, +#line 1359 "../tests/keys" + {"numberOfDataValues",1354}, +#line 1841 "../tests/keys" + {"scaleFactorOfFirstSize",1836}, {""}, {""}, {""}, -#line 785 "../tests/keys" - {"extractDateTimeSecondStart",780}, -#line 314 "../tests/keys" - {"baseDateEPS",309}, -#line 782 "../tests/keys" - {"extractDateTimeMonthStart",777}, -#line 1212 "../tests/keys" - {"md5Section5",1207}, - {""}, {""}, {""}, {""}, {""}, -#line 2095 "../tests/keys" - {"tigge_short_name",2090}, - {""}, {""}, -#line 1997 "../tests/keys" - {"sp2",1992}, - {""}, {""}, {""}, -#line 524 "../tests/keys" - {"codedNumberOfFirstOrderPackedValues",519}, - {""}, {""}, -#line 500 "../tests/keys" - {"cloudsTitle4Trend1",495}, - {""}, {""}, {""}, {""}, {""}, -#line 2002 "../tests/keys" - {"spare2",1997}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1876 "../tests/keys" - {"secondaryBitmaps",1871}, -#line 1931 "../tests/keys" - {"sectionLengthLimitForProbability",1926}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 503 "../tests/keys" - {"cloudsTitle4Trend4",498}, - {""}, {""}, {""}, -#line 254 "../tests/keys" - {"XRInMetres",249}, - {""}, {""}, {""}, -#line 1875 "../tests/keys" - {"secondaryBitmapPresent",1870}, - {""}, {""}, {""}, {""}, -#line 720 "../tests/keys" - {"endStepInHours",715}, - {""}, {""}, {""}, {""}, -#line 1047 "../tests/keys" - {"legBaseDate",1042}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 695 "../tests/keys" - {"endDayTrend2",690}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 105 "../tests/keys" - {"La1",100}, - {""}, {""}, -#line 112 "../tests/keys" - {"Lar1",107}, - {""}, {""}, {""}, -#line 122 "../tests/keys" - {"Lo1",117}, +#line 546 "../tests/keys" + {"cnmc_isac",541}, {""}, -#line 117 "../tests/keys" - {"Latin1",112}, -#line 140 "../tests/keys" - {"Lor1",135}, -#line 1877 "../tests/keys" - {"secondaryBitmapsCount",1872}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1988 "../tests/keys" - {"southEastLatitudeOfVerficationArea",1983}, - {""}, {""}, {""}, {""}, -#line 671 "../tests/keys" - {"dummy2",666}, -#line 1443 "../tests/keys" - {"offsetFreeFormData",1438}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 676 "../tests/keys" - {"earthMajorAxis",671}, - {""}, {""}, -#line 1357 "../tests/keys" - {"numberOfGroupsOfDataValues",1352}, - {""}, {""}, -#line 489 "../tests/keys" - {"cloudsTitle2",484}, +#line 317 "../tests/keys" + {"atmosphericChemicalOrPhysicalConstituentType",312}, {""}, -#line 2273 "../tests/keys" - {"windDirectionTrend1",2268}, +#line 860 "../tests/keys" + {"forecastPeriodTo",855}, + {""}, {""}, +#line 1442 "../tests/keys" + {"numberOfVerticalGridDescriptors",1437}, + {""}, {""}, +#line 1751 "../tests/keys" + {"representationType",1746}, +#line 940 "../tests/keys" + {"iIncrement",935}, +#line 2117 "../tests/keys" + {"tiggeCentre",2112}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1403 "../tests/keys" - {"numberOfTensOfThousandsOfYearsOfOffset",1398}, - {""}, +#line 1370 "../tests/keys" + {"numberOfDistributionFunctionParameters",1365}, + {""}, {""}, +#line 2123 "../tests/keys" + {"tigge_name",2118}, +#line 1004 "../tests/keys" + {"is_tigge",999}, + {""}, {""}, {""}, {""}, #line 1371 "../tests/keys" - {"numberOfOctectsForNumberOfPoints",1366}, - {""}, {""}, {""}, -#line 2218 "../tests/keys" - {"uuidOfVGrid",2213}, -#line 890 "../tests/keys" - {"halfByte",885}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1966 "../tests/keys" - {"shortNameECMF",1961}, - {""}, {""}, {""}, {""}, {""}, -#line 738 "../tests/keys" - {"expandBy",733}, - {""}, {""}, {""}, -#line 1186 "../tests/keys" - {"marsType2",1181}, + {"numberOfEffectiveValues",1366}, {""}, -#line 559 "../tests/keys" - {"coordinate3Flag",554}, - {""}, -#line 752 "../tests/keys" - {"experimentVersionNumber",747}, -#line 2254 "../tests/keys" - {"visibilityInKilometresTrend1",2249}, -#line 1367 "../tests/keys" - {"numberOfMissingInStatisticalProcess",1362}, - {""}, {""}, {""}, {""}, {""}, -#line 2276 "../tests/keys" - {"windDirectionTrend4",2271}, - {""}, {""}, {""}, {""}, -#line 1726 "../tests/keys" - {"reserved2",1721}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 821 "../tests/keys" - {"firstOrderValues",816}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2257 "../tests/keys" - {"visibilityInKilometresTrend4",2252}, -#line 864 "../tests/keys" - {"grib2LocalSectionPresent",859}, -#line 2118 "../tests/keys" - {"totalNumberOfClusters",2113}, - {""}, {""}, {""}, -#line 218 "../tests/keys" - {"TIDE",213}, +#line 1851 "../tests/keys" + {"scaleFactorOfSecondSize",1846}, +#line 60 "../tests/keys" + {"Experiment_Identifier",55}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2101 "../tests/keys" - {"timeDomainTemplateNumber",2096}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 640 "../tests/keys" - {"deleteCalendarId",635}, - {""}, {""}, -#line 1800 "../tests/keys" - {"sampleSizeOfModelClimate",1795}, -#line 716 "../tests/keys" - {"endOfMessage",711}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 165 "../tests/keys" - {"NC",160}, - {""}, {""}, {""}, {""}, -#line 1734 "../tests/keys" - {"resolutionAndComponentFlags1",1729}, -#line 912 "../tests/keys" - {"iDirectionIncrementGiven",907}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1305 "../tests/keys" - {"numberIncludedInAverage",1300}, -#line 863 "../tests/keys" - {"grib2LocalSectionNumber",858}, - {""}, {""}, {""}, {""}, {""}, -#line 649 "../tests/keys" - {"diffInHours",644}, -#line 11 "../tests/keys" - {"AA",6}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1737 "../tests/keys" - {"resolutionAndComponentFlags4",1732}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2051 "../tests/keys" - {"subSetM",2046}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1901 "../tests/keys" - {"section3Flags",1896}, -#line 1454 "../tests/keys" - {"offsetSection5",1449}, -#line 1879 "../tests/keys" - {"secondaryMissingValue",1874}, - {""}, -#line 25 "../tests/keys" - {"BufrTemplate",20}, - {""}, +#line 937 "../tests/keys" + {"iDirectionIncrementGiven",932}, #line 1138 "../tests/keys" - {"longitudeOfTangencyPoint",1133}, -#line 501 "../tests/keys" - {"cloudsTitle4Trend2",496}, -#line 246 "../tests/keys" - {"WMO",241}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"local_use",1133}, + {""}, {""}, {""}, {""}, +#line 1020 "../tests/keys" + {"julianDay",1015}, {""}, -#line 1917 "../tests/keys" - {"section6Pointer",1912}, +#line 2100 "../tests/keys" + {"targetCompressionRatio",2095}, + {""}, +#line 758 "../tests/keys" + {"epsContinous",753}, + {""}, {""}, {""}, +#line 765 "../tests/keys" + {"expandedCodes",760}, +#line 1757 "../tests/keys" + {"reservedNeedNotBePresent",1752}, + {""}, +#line 595 "../tests/keys" + {"corr1Data",590}, + {""}, {""}, {""}, +#line 999 "../tests/keys" + {"is_chemical",994}, +#line 2097 "../tests/keys" + {"tablesMasterDir",2092}, +#line 1241 "../tests/keys" + {"md5Section9",1236}, {""}, {""}, -#line 2169 "../tests/keys" - {"typeOfWavelengthInterval",2164}, +#line 2248 "../tests/keys" + {"uuidOfVGrid",2243}, +#line 962 "../tests/keys" + {"inputDelayedDescriptorReplicationFactor",957}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1837 "../tests/keys" - {"scaledValueOfFirstWavelength",1832}, - {""}, {""}, -#line 991 "../tests/keys" - {"jDirectionIncrementInDegrees",986}, {""}, -#line 708 "../tests/keys" - {"endMinuteTrend4",703}, -#line 1274 "../tests/keys" - {"n3",1269}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 682 "../tests/keys" - {"easternLongitudeOfClusterDomain",677}, - {""}, -#line 1169 "../tests/keys" - {"marsKeywords1",1164}, - {""}, {""}, {""}, {""}, -#line 194 "../tests/keys" - {"P1",189}, - {""}, -#line 98 "../tests/keys" - {"J",93}, -#line 1618 "../tests/keys" - {"presentTrend1",1613}, - {""}, -#line 2147 "../tests/keys" - {"typeOfEnsembleForecast",2142}, - {""}, -#line 1645 "../tests/keys" - {"probabilityType",1640}, - {""}, -#line 2041 "../tests/keys" - {"subDefinitions1",2036}, -#line 1998 "../tests/keys" - {"sp3",1993}, - {""}, {""}, {""}, -#line 2288 "../tests/keys" - {"windUnits",2283}, - {""}, {""}, {""}, {""}, -#line 2266 "../tests/keys" - {"westernLongitudeOfClusterDomain",2261}, -#line 2033 "../tests/keys" - {"stepUnits",2028}, - {""}, {""}, {""}, -#line 2161 "../tests/keys" - {"typeOfProcessedData",2156}, - {""}, -#line 1036 "../tests/keys" - {"latitudeOfThePolePoint",1031}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1448 "../tests/keys" - {"offsetSection1",1443}, - {""}, -#line 96 "../tests/keys" - {"ITERATOR",91}, - {""}, {""}, {""}, {""}, -#line 1491 "../tests/keys" - {"originatingCentreOfAnalysis",1486}, - {""}, {""}, {""}, {""}, -#line 1730 "../tests/keys" - {"reservedSection2",1725}, - {""}, {""}, {""}, -#line 275 "../tests/keys" - {"_numberOfValues",270}, -#line 1648 "../tests/keys" - {"produceLargeConstantFields",1643}, - {""}, -#line 642 "../tests/keys" - {"deleteLocalDefinition",637}, - {""}, -#line 1621 "../tests/keys" - {"presentTrend4",1616}, - {""}, -#line 1034 "../tests/keys" - {"latitudeOfTangencyPoint",1029}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1900 "../tests/keys" - {"section3",1895}, - {""}, {""}, {""}, {""}, -#line 565 "../tests/keys" - {"coordinateFlag1",560}, +#line 305 "../tests/keys" + {"angleMultiplier",300}, {""}, {""}, {""}, {""}, {""}, -#line 1333 "../tests/keys" - {"numberOfDataPointsExpected",1328}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1453 "../tests/keys" - {"offsetSection4",1448}, - {""}, {""}, {""}, {""}, -#line 1038 "../tests/keys" - {"latitudeOfTheSouthernPoleOfProjection",1033}, -#line 815 "../tests/keys" - {"firstDimensionCoordinateValueDefinition",810}, -#line 1449 "../tests/keys" - {"offsetSection10",1444}, +#line 1971 "../tests/keys" + {"section_09",1966}, +#line 2277 "../tests/keys" + {"verticalCoordinate",2272}, {""}, -#line 2255 "../tests/keys" - {"visibilityInKilometresTrend2",2250}, +#line 2236 "../tests/keys" + {"updateSequenceNumber",2231}, {""}, {""}, -#line 1806 "../tests/keys" - {"scaleFactorOfCentralWaveNumber",1801}, +#line 2312 "../tests/keys" + {"windPresent",2307}, + {""}, +#line 2228 "../tests/keys" + {"unitsOfSecondFixedSurface",2223}, + {""}, {""}, {""}, {""}, +#line 545 "../tests/keys" + {"cnmc_cmcc",540}, + {""}, +#line 1637 "../tests/keys" + {"postAuxiliary",1632}, + {""}, +#line 1001 "../tests/keys" + {"is_efas",996}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1632 "../tests/keys" - {"presentWeather3Present",1627}, - {""}, -#line 1205 "../tests/keys" - {"md5Headers",1200}, - {""}, {""}, {""}, {""}, -#line 1213 "../tests/keys" - {"md5Section6",1208}, - {""}, {""}, -#line 502 "../tests/keys" - {"cloudsTitle4Trend3",497}, -#line 1141 "../tests/keys" - {"longitudeOfThePolePointInDegrees",1136}, - {""}, -#line 103 "../tests/keys" - {"LLCOSP",98}, - {""}, {""}, {""}, {""}, -#line 512 "../tests/keys" - {"clusterMember7",507}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 186 "../tests/keys" - {"NrInRadiusOfEarth",181}, - {""}, -#line 1108 "../tests/keys" - {"localTablesVersion",1103}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1117 "../tests/keys" - {"longitudeLastInDegrees",1112}, +#line 288 "../tests/keys" + {"_TS",283}, +#line 989 "../tests/keys" + {"isEPS",984}, {""}, {""}, {""}, {""}, {""}, -#line 556 "../tests/keys" - {"coordinate2End",551}, - {""}, {""}, {""}, -#line 1679 "../tests/keys" - {"radiusOfTheEarth",1674}, - {""}, {""}, {""}, -#line 1014 "../tests/keys" - {"latitudeLastInDegrees",1009}, -#line 1735 "../tests/keys" - {"resolutionAndComponentFlags2",1730}, - {""}, {""}, {""}, {""}, -#line 1857 "../tests/keys" - {"scanningMode7",1852}, - {""}, {""}, {""}, -#line 660 "../tests/keys" - {"distanceFromTubeToEnsembleMean",655}, - {""}, {""}, {""}, -#line 755 "../tests/keys" - {"experimentVersionNumberOfAnalysis",750}, - {""}, -#line 1990 "../tests/keys" - {"southEastLongitudeOfVerficationArea",1985}, -#line 1727 "../tests/keys" - {"reserved3",1722}, -#line 479 "../tests/keys" - {"cloudsCode4",474}, - {""}, {""}, -#line 529 "../tests/keys" - {"commonBlock",524}, - {""}, {""}, -#line 1493 "../tests/keys" - {"originatorLocalTemplateNumber",1488}, - {""}, {""}, {""}, {""}, -#line 1638 "../tests/keys" - {"pressureUnits",1633}, - {""}, {""}, -#line 994 "../tests/keys" - {"jScansPositively",989}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2157 "../tests/keys" - {"typeOfOriginalFieldValues",2152}, -#line 1308 "../tests/keys" - {"numberOfBits",1303}, -#line 1382 "../tests/keys" - {"numberOfPointsAlongSecondAxis",1377}, - {""}, -#line 788 "../tests/keys" - {"extractDateTimeYearRank",783}, - {""}, {""}, {""}, {""}, -#line 1050 "../tests/keys" - {"legacyGaussSubarea",1045}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1920 "../tests/keys" - {"section7Length",1915}, - {""}, {""}, {""}, {""}, {""}, -#line 868 "../tests/keys" - {"gribTablesVersionNo",863}, - {""}, {""}, -#line 1840 "../tests/keys" - {"scaledValueOfLowerLimit",1835}, -#line 553 "../tests/keys" - {"coordinate1End",548}, - {""}, -#line 1890 "../tests/keys" - {"section11Pointer",1885}, - {""}, -#line 1436 "../tests/keys" - {"offsetBSection9",1431}, - {""}, {""}, -#line 1944 "../tests/keys" - {"section_10",1939}, +#line 652 "../tests/keys" + {"decimalPrecision",647}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2119 "../tests/keys" - {"totalNumberOfDataValuesMissingInStatisticalProcess",2114}, - {""}, {""}, {""}, {""}, -#line 2090 "../tests/keys" - {"tiggeLocalVersion",2085}, +#line 233 "../tests/keys" + {"TAFstr",228}, +#line 764 "../tests/keys" + {"expandedAbbreviations",759}, +#line 596 "../tests/keys" + {"corr2Data",591}, + {""}, +#line 876 "../tests/keys" + {"gaussianGridName",871}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1609 "../tests/keys" - {"postAuxiliaryArrayPresent",1604}, -#line 309 "../tests/keys" - {"azimuthalWidth",304}, - {""}, {""}, {""}, {""}, -#line 2256 "../tests/keys" - {"visibilityInKilometresTrend3",2251}, - {""}, {""}, {""}, {""}, {""}, -#line 107 "../tests/keys" - {"La2",102}, -#line 490 "../tests/keys" - {"cloudsTitle2Trend1",485}, - {""}, -#line 114 "../tests/keys" - {"Lar2",109}, - {""}, {""}, -#line 1755 "../tests/keys" - {"runwayDepositState1",1750}, -#line 124 "../tests/keys" - {"Lo2",119}, -#line 86 "../tests/keys" - {"HDF5str",81}, -#line 119 "../tests/keys" - {"Latin2",114}, -#line 142 "../tests/keys" - {"Lor2",137}, - {""}, {""}, {""}, -#line 1999 "../tests/keys" - {"spaceUnitFlag",1994}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1113 "../tests/keys" + {"localDefNumberTwo",1108}, +#line 28 "../tests/keys" + {"CDFstr",23}, +#line 1877 "../tests/keys" + {"scaledValueOfStandardDeviation",1872}, + {""}, +#line 1195 "../tests/keys" + {"marsLamModel",1190}, + {""}, +#line 356 "../tests/keys" + {"biFourierMakeTemplate",351}, {""}, {""}, -#line 1428 "../tests/keys" - {"offsetAfterBitmap",1423}, - {""}, -#line 493 "../tests/keys" - {"cloudsTitle2Trend4",488}, - {""}, {""}, {""}, {""}, -#line 806 "../tests/keys" - {"falseEasting",801}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 372 "../tests/keys" - {"centralClusterDefinition",367}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2274 "../tests/keys" - {"windDirectionTrend2",2269}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1758 "../tests/keys" - {"runwayDepositState4",1753}, - {""}, {""}, {""}, {""}, -#line 1736 "../tests/keys" - {"resolutionAndComponentFlags3",1731}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1699 "../tests/keys" - {"recentWeatherTry",1694}, -#line 1127 "../tests/keys" - {"longitudeOfLastGridPointInDegrees",1122}, -#line 1880 "../tests/keys" - {"secondaryMissingValueSubstitute",1875}, - {""}, {""}, -#line 485 "../tests/keys" - {"cloudsTitle1Trend1",480}, - {""}, {""}, {""}, -#line 1040 "../tests/keys" - {"latitudeWhereDxAndDyAreSpecified",1035}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1843 "../tests/keys" - {"scaledValueOfPrimeMeridianOffset",1838}, - {""}, -#line 1771 "../tests/keys" - {"runwayDesignatorState1",1766}, - {""}, {""}, {""}, {""}, {""}, -#line 787 "../tests/keys" - {"extractDateTimeYearEnd",782}, -#line 1041 "../tests/keys" - {"latitudeWhereDxAndDyAreSpecifiedInDegrees",1036}, - {""}, {""}, -#line 488 "../tests/keys" - {"cloudsTitle1Trend4",483}, - {""}, {""}, {""}, -#line 1718 "../tests/keys" - {"reflectivityCalibrationConstant",1713}, - {""}, {""}, {""}, {""}, -#line 1219 "../tests/keys" - {"meanRVR1",1214}, -#line 853 "../tests/keys" - {"generalExtended2ordr",848}, - {""}, {""}, {""}, -#line 2078 "../tests/keys" - {"theHindcastMarsStream",2073}, -#line 616 "../tests/keys" - {"dateOfSSTFieldUsed",611}, - {""}, #line 1774 "../tests/keys" - {"runwayDesignatorState4",1769}, - {""}, {""}, {""}, {""}, -#line 1244 "../tests/keys" - {"minutesAfterReferenceTimeOfDataCutoff",1239}, + {"roundedMarsLevelist",1769}, +#line 175 "../tests/keys" + {"NAT",170}, + {""}, {""}, {""}, +#line 1878 "../tests/keys" + {"scaledValueOfStandardDeviationInTheCluster",1873}, +#line 1984 "../tests/keys" + {"sensitiveAreaDomain",1979}, {""}, -#line 1646 "../tests/keys" - {"probabilityTypeName",1641}, +#line 925 "../tests/keys" + {"horizontalDomainTemplate",920}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 840 "../tests/keys" + {"firstDimensionCoordinateValueDefinition",835}, + {""}, +#line 99 "../tests/keys" + {"JS",94}, +#line 1132 "../tests/keys" + {"localSectionPresent",1127}, +#line 1177 "../tests/keys" + {"lsdate_bug",1172}, + {""}, {""}, +#line 603 "../tests/keys" + {"correction2Part",598}, + {""}, +#line 74 "../tests/keys" + {"GG",69}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 875 "../tests/keys" + {"g2grid",870}, +#line 1217 "../tests/keys" + {"masterTablesVersionNumberLatest",1212}, + {""}, +#line 592 "../tests/keys" + {"coordinateIndexNumber",587}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1242 "../tests/keys" + {"md5Structure",1237}, + {""}, {""}, +#line 1837 "../tests/keys" + {"scaleFactorOfDistributionFunctionParameter",1832}, + {""}, +#line 913 "../tests/keys" + {"gts_ddhh00",908}, + {""}, {""}, {""}, {""}, +#line 1402 "../tests/keys" + {"numberOfPartitions",1397}, +#line 668 "../tests/keys" + {"deletePV",663}, +#line 771 "../tests/keys" + {"expandedOriginalCodes",766}, + {""}, {""}, +#line 774 "../tests/keys" + {"expandedOriginalWidths",769}, +#line 2125 "../tests/keys" + {"tileClassification",2120}, + {""}, {""}, +#line 1999 "../tests/keys" + {"significanceOfReferenceTime",1994}, {""}, {""}, {""}, {""}, {""}, -#line 1019 "../tests/keys" - {"latitudeOfFirstGridPoint",1014}, +#line 550 "../tests/keys" + {"codedNumberOfGroups",545}, +#line 1834 "../tests/keys" + {"scaleFactorAtReferencePoint",1829}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2032 "../tests/keys" + {"spatialProcessing",2027}, +#line 1644 "../tests/keys" + {"predefined_grid",1639}, +#line 310 "../tests/keys" + {"angularPrecision",305}, +#line 1403 "../tests/keys" + {"numberOfPoints",1398}, + {""}, +#line 1493 "../tests/keys" + {"oneMillionConstant",1488}, +#line 1998 "../tests/keys" + {"significanceOfReferenceDateAndTime",1993}, + {""}, +#line 670 "../tests/keys" + {"dewPointTemperature",665}, + {""}, {""}, {""}, {""}, {""}, +#line 1719 "../tests/keys" + {"rdbtimeMinute",1714}, + {""}, {""}, +#line 308 "../tests/keys" + {"angleOfRotationOfProjection",303}, +#line 2278 "../tests/keys" + {"verticalCoordinateDefinition",2273}, + {""}, {""}, +#line 1987 "../tests/keys" + {"setCalendarId",1982}, +#line 1274 "../tests/keys" + {"missingValuesPresent",1269}, + {""}, {""}, +#line 1322 "../tests/keys" + {"nosigPresent",1317}, + {""}, {""}, +#line 2126 "../tests/keys" + {"tileIndex",2121}, + {""}, {""}, +#line 1486 "../tests/keys" + {"offsetSection8",1481}, +#line 712 "../tests/keys" + {"efas_model",707}, +#line 186 "../tests/keys" + {"NP",181}, +#line 1265 "../tests/keys" + {"minuteOfForecast",1260}, +#line 899 "../tests/keys" + {"gridDefinitionTemplateNumber",894}, + {""}, {""}, {""}, +#line 667 "../tests/keys" + {"deleteLocalDefinition",662}, +#line 1897 "../tests/keys" + {"secondOfForecast",1892}, +#line 20 "../tests/keys" + {"Azi",15}, +#line 1865 "../tests/keys" + {"scaledValueOfFirstSize",1860}, +#line 2189 "../tests/keys" + {"typeOfPostProcessing",2184}, + {""}, {""}, +#line 1492 "../tests/keys" + {"oneConstant",1487}, + {""}, +#line 1732 "../tests/keys" + {"rectimeMinute",1727}, + {""}, {""}, {""}, +#line 2271 "../tests/keys" + {"versionNumOfRootGroupSymbolTableEntry",2266}, + {""}, {""}, {""}, {""}, {""}, +#line 773 "../tests/keys" + {"expandedOriginalScales",768}, + {""}, +#line 660 "../tests/keys" + {"defaultShortName",655}, + {""}, +#line 1369 "../tests/keys" + {"numberOfDistinctSection9s",1364}, + {""}, +#line 307 "../tests/keys" + {"angleOfRotationInDegrees",302}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 754 "../tests/keys" + {"ensembleForecastNumbersList",749}, + {""}, {""}, {""}, {""}, +#line 902 "../tests/keys" + {"gridPointPosition",897}, +#line 1280 "../tests/keys" + {"modelIdentifier",1275}, +#line 2129 "../tests/keys" + {"timeDomainTemplate",2124}, +#line 1875 "../tests/keys" + {"scaledValueOfSecondSize",1870}, + {""}, +#line 1849 "../tests/keys" + {"scaleFactorOfRadiusOfSphericalEarth",1844}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1083 "../tests/keys" + {"lengthOfProjectLocalTemplate",1078}, +#line 2022 "../tests/keys" + {"southPoleOnProjectionPlane",2017}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 295 "../tests/keys" + {"addExtraLocalSection",290}, + {""}, +#line 1399 "../tests/keys" + {"numberOfPackedValues",1394}, +#line 1098 "../tests/keys" + {"listMembersUsed",1093}, + {""}, {""}, {""}, +#line 988 "../tests/keys" + {"isCorrection",983}, + {""}, +#line 1831 "../tests/keys" + {"satelliteIdentifier",1826}, +#line 1129 "../tests/keys" + {"localNumberOfObservations",1124}, +#line 2044 "../tests/keys" + {"startOfMessage",2039}, + {""}, {""}, +#line 2066 "../tests/keys" + {"stretchingFactor",2061}, + {""}, +#line 887 "../tests/keys" + {"grib1divider",882}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2166 "../tests/keys" + {"tsectionNumber5",2161}, + {""}, +#line 2152 "../tests/keys" + {"totalNumberOfGridPoints",2147}, +#line 829 "../tests/keys" + {"faModelName",824}, + {""}, +#line 871 "../tests/keys" + {"functionCode",866}, + {""}, {""}, +#line 1880 "../tests/keys" + {"scalingFactorForFrequencies",1875}, +#line 998 "../tests/keys" + {"is_aerosol_optical",993}, + {""}, +#line 296 "../tests/keys" + {"additionalFlagPresent",291}, + {""}, +#line 682 "../tests/keys" + {"dirty_statistics",677}, +#line 1377 "../tests/keys" + {"numberOfForecastsInTube",1372}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 212 "../tests/keys" + {"PLPresent",207}, + {""}, {""}, +#line 1702 "../tests/keys" + {"radialAngularSpacing",1697}, +#line 427 "../tests/keys" + {"climateDateTo",422}, + {""}, +#line 1026 "../tests/keys" + {"kurt",1021}, +#line 909 "../tests/keys" + {"groupWidth",904}, + {""}, {""}, {""}, {""}, {""}, +#line 318 "../tests/keys" + {"attributeOfTile",313}, + {""}, {""}, {""}, {""}, {""}, +#line 2205 "../tests/keys" + {"typicalMinute",2200}, +#line 1669 "../tests/keys" + {"primaryMissingValue",1664}, +#line 371 "../tests/keys" + {"boot_edition",366}, + {""}, {""}, {""}, {""}, +#line 1343 "../tests/keys" + {"numberOfChars",1338}, + {""}, {""}, +#line 1645 "../tests/keys" + {"predefined_grid_values",1640}, {""}, #line 978 "../tests/keys" - {"is_s2s",973}, + {"interpretationOfNumberOfPoints",973}, {""}, {""}, -#line 993 "../tests/keys" - {"jPointsAreConsecutive",988}, -#line 679 "../tests/keys" - {"earthMinorAxisInMetres",674}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 840 "../tests/keys" - {"formatVersionMajorNumber",835}, - {""}, {""}, -#line 1302 "../tests/keys" - {"numberInMixedCoordinateDefinition",1297}, +#line 890 "../tests/keys" + {"grib2divider",885}, +#line 1395 "../tests/keys" + {"numberOfModels",1390}, {""}, -#line 42 "../tests/keys" - {"DjInMetres",37}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1204 "../tests/keys" - {"md5GridSection",1199}, +#line 2202 "../tests/keys" + {"typicalDateTime",2197}, +#line 941 "../tests/keys" + {"iScansNegatively",936}, + {""}, {""}, +#line 597 "../tests/keys" + {"corr3Data",592}, + {""}, +#line 2345 "../tests/keys" + {"yearOfCentury",2340}, + {""}, +#line 895 "../tests/keys" + {"gridCoordinate",890}, +#line 407 "../tests/keys" + {"centuryOfReferenceTimeOfData",402}, +#line 2065 "../tests/keys" + {"streamOfAnalysis",2060}, {""}, -#line 1611 "../tests/keys" - {"preBitmapValues",1606}, - {""}, {""}, -#line 1222 "../tests/keys" - {"meanRVR4",1217}, - {""}, {""}, -#line 1847 "../tests/keys" - {"scaledValueOfSecondWavelength",1842}, -#line 741 "../tests/keys" - {"expandedCrex_scales",736}, - {""}, {""}, {""}, {""}, -#line 1387 "../tests/keys" - {"numberOfPointsInDomain",1382}, - {""}, {""}, -#line 249 "../tests/keys" - {"X1",244}, - {""}, {""}, {""}, {""}, {""}, -#line 1100 "../tests/keys" - {"localLongitude1",1095}, - {""}, {""}, #line 742 "../tests/keys" - {"expandedCrex_units",737}, -#line 2237 "../tests/keys" - {"verificationYear",2232}, - {""}, {""}, -#line 2162 "../tests/keys" - {"typeOfSSTFieldUsed",2157}, -#line 743 "../tests/keys" - {"expandedCrex_widths",738}, -#line 248 "../tests/keys" - {"WRAPstr",243}, - {""}, {""}, -#line 379 "../tests/keys" - {"centreForTable2",374}, - {""}, {""}, {""}, {""}, -#line 1097 "../tests/keys" - {"localLatitude1",1092}, -#line 1330 "../tests/keys" - {"numberOfDataBinsAlongRadials",1325}, + {"endOfProduct",737}, + {""}, +#line 1639 "../tests/keys" + {"powerOfTenUsedToScaleClimateWeight",1634}, + {""}, +#line 2067 "../tests/keys" + {"stretchingFactorScaled",2062}, {""}, {""}, {""}, -#line 317 "../tests/keys" - {"baseTimeOfThisLeg",312}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 579 "../tests/keys" - {"correction3",574}, -#line 626 "../tests/keys" - {"dayOfTheYearDate",621}, +#line 289 "../tests/keys" + {"_anoffset",284}, {""}, -#line 1292 "../tests/keys" - {"northWestLatitudeOfVerficationArea",1287}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 639 "../tests/keys" - {"definitionFilesVersion",634}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 857 "../tests/keys" + {"forecastOrSingularVectorNumber",852}, +#line 1027 "../tests/keys" + {"kurtosis",1022}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 2175 "../tests/keys" + {"typeOfCompressionUsed",2170}, + {""}, +#line 1053 "../tests/keys" + {"latitudeOfSouthernPole",1048}, {""}, {""}, {""}, -#line 751 "../tests/keys" - {"expandedUnits",746}, +#line 1055 "../tests/keys" + {"latitudeOfStretchingPole",1050}, + {""}, {""}, {""}, {""}, +#line 2300 "../tests/keys" + {"widthOfSPD",2295}, + {""}, +#line 783 "../tests/keys" + {"extendedFlag",778}, +#line 37 "../tests/keys" + {"DiInDegrees",32}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1022 "../tests/keys" + {"keyData",1017}, {""}, -#line 195 "../tests/keys" - {"P2",190}, - {""}, {""}, -#line 1619 "../tests/keys" - {"presentTrend2",1614}, -#line 491 "../tests/keys" - {"cloudsTitle2Trend2",486}, - {""}, {""}, {""}, {""}, -#line 315 "../tests/keys" - {"baseDateOfThisLeg",310}, +#line 48 "../tests/keys" + {"DyInDegrees",43}, + {""}, +#line 995 "../tests/keys" + {"isSatelliteType",990}, {""}, {""}, {""}, -#line 2189 "../tests/keys" - {"unitOfTimeRange",2184}, - {""}, -#line 1211 "../tests/keys" - {"md5Section4",1206}, - {""}, -#line 375 "../tests/keys" - {"centralLongitudeInMicrodegrees",370}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1987 "../tests/keys" - {"southEastLatitudeOfLPOArea",1982}, - {""}, {""}, {""}, {""}, -#line 2099 "../tests/keys" - {"timeCoordinateDefinition",2094}, +#line 1850 "../tests/keys" + {"scaleFactorOfSecondFixedSurface",1845}, +#line 1861 "../tests/keys" + {"scaledValueOfDistributionFunctionParameter",1856}, + {""}, {""}, {""}, +#line 232 "../tests/keys" + {"TAF",227}, +#line 1263 "../tests/keys" + {"minuteOfAnalysis",1258}, + {""}, {""}, {""}, +#line 681 "../tests/keys" + {"directionScalingFactor",676}, {""}, {""}, {""}, {""}, {""}, -#line 1451 "../tests/keys" - {"offsetSection2",1446}, +#line 1603 "../tests/keys" + {"parameterCategory",1598}, {""}, -#line 1269 "../tests/keys" - {"monthlyVerificationYear",1264}, +#line 910 "../tests/keys" + {"groupWidths",905}, +#line 1332 "../tests/keys" + {"numberOfAnalysis",1327}, {""}, {""}, -#line 2049 "../tests/keys" - {"subSetJ",2044}, - {""}, {""}, {""}, {""}, -#line 818 "../tests/keys" - {"firstLatitudeInDegrees",813}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 319 "../tests/keys" - {"beginDayTrend1",314}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1519 "../tests/keys" + {"originatingCentre",1514}, {""}, {""}, {""}, -#line 1136 "../tests/keys" - {"longitudeOfSubSatellitePoint",1131}, +#line 1024 "../tests/keys" + {"keySat",1019}, + {""}, +#line 900 "../tests/keys" + {"gridDescriptionSectionPresent",895}, +#line 27 "../tests/keys" + {"CDF",22}, + {""}, +#line 1441 "../tests/keys" + {"numberOfVerticalCoordinateValues",1436}, + {""}, +#line 1991 "../tests/keys" + {"sfc_levtype",1986}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1773 "../tests/keys" + {"roundedMarsLatitude",1768}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 2155 "../tests/keys" + {"totalNumberOfTileAttributePairs",2150}, {""}, {""}, -#line 1817 "../tests/keys" - {"scaleFactorOfMajorAxisOfOblateSpheroidEarth",1812}, +#line 364 "../tests/keys" + {"binaryScaleFactor",359}, + {""}, +#line 214 "../tests/keys" + {"PVPresent",209}, {""}, {""}, {""}, {""}, -#line 486 "../tests/keys" - {"cloudsTitle1Trend2",481}, +#line 1684 "../tests/keys" + {"productionStatusOfProcessedData",1679}, {""}, {""}, {""}, {""}, +#line 598 "../tests/keys" + {"corr4Data",593}, + {""}, {""}, +#line 1954 "../tests/keys" + {"section8Pointer",1949}, + {""}, {""}, {""}, +#line 646 "../tests/keys" + {"dayOfAnalysis",641}, + {""}, +#line 1193 "../tests/keys" + {"marsKeywords",1188}, + {""}, {""}, +#line 1243 "../tests/keys" + {"md5TimeDomainSection",1238}, + {""}, {""}, +#line 919 "../tests/keys" + {"heightOrPressureOfLevel",914}, +#line 1272 "../tests/keys" + {"missingValueManagement",1267}, + {""}, {""}, +#line 2194 "../tests/keys" + {"typeOfSizeInterval",2189}, + {""}, {""}, {""}, {""}, +#line 45 "../tests/keys" + {"DxInDegrees",40}, + {""}, +#line 814 "../tests/keys" + {"extractDateTimeYearStart",809}, +#line 926 "../tests/keys" + {"horizontalDomainTemplateNumber",921}, + {""}, {""}, +#line 1521 "../tests/keys" + {"originatorLocalTemplate",1516}, + {""}, +#line 2008 "../tests/keys" + {"sizeOfOffsets",2003}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2200 "../tests/keys" + {"typicalCentury",2195}, + {""}, {""}, {""}, +#line 1873 "../tests/keys" + {"scaledValueOfRadiusOfSphericalEarth",1868}, + {""}, {""}, {""}, {""}, +#line 1103 "../tests/keys" + {"listOfDistributionFunctionParameter",1098}, + {""}, +#line 1598 "../tests/keys" + {"paleontologicalOffset",1593}, + {""}, {""}, {""}, {""}, +#line 647 "../tests/keys" + {"dayOfEndOfOverallTimeInterval",642}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 772 "../tests/keys" + {"expandedOriginalReferences",767}, + {""}, +#line 740 "../tests/keys" + {"endOfInterval",735}, + {""}, {""}, +#line 1150 "../tests/keys" + {"longitudeOfIcosahedronPole",1145}, + {""}, +#line 2162 "../tests/keys" + {"truncateDegrees",2157}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1240 "../tests/keys" + {"md5Section8",1235}, + {""}, {""}, {""}, {""}, +#line 398 "../tests/keys" + {"centralLongitude",393}, +#line 2222 "../tests/keys" + {"unitsConversionOffset",2217}, + {""}, {""}, +#line 1836 "../tests/keys" + {"scaleFactorOfDistanceFromEnsembleMean",1831}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 1670 "../tests/keys" - {"qualityControlIndicator",1665}, + {"primaryMissingValueSubstitute",1665}, + {""}, +#line 973 "../tests/keys" + {"integerScalingFactorAppliedToDirections",968}, +#line 974 "../tests/keys" + {"integerScalingFactorAppliedToFrequencies",969}, +#line 1032 "../tests/keys" + {"laplacianScalingFactor",1027}, +#line 1328 "../tests/keys" + {"numberInTheAuxiliaryArray",1323}, +#line 708 "../tests/keys" + {"easternLongitudeOfDomain",703}, {""}, {""}, {""}, {""}, -#line 1137 "../tests/keys" - {"longitudeOfSubSatellitePointInDegrees",1132}, - {""}, {""}, {""}, -#line 826 "../tests/keys" - {"flagShowingPostAuxiliaryArrayInUse",821}, +#line 2298 "../tests/keys" + {"widthOfFirstOrderValues",2293}, +#line 980 "../tests/keys" + {"isAccumulation",975}, +#line 1612 "../tests/keys" + {"partitionItems",1607}, {""}, {""}, -#line 1772 "../tests/keys" - {"runwayDesignatorState2",1767}, +#line 2131 "../tests/keys" + {"timeIncrement",2126}, +#line 1342 "../tests/keys" + {"numberOfCharacters",1337}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 2191 "../tests/keys" + {"typeOfProcessedData",2186}, {""}, {""}, {""}, +#line 938 "../tests/keys" + {"iDirectionIncrementGridLength",933}, + {""}, +#line 97 "../tests/keys" + {"ITN",92}, +#line 1687 "../tests/keys" + {"projectionCenterFlag",1682}, + {""}, +#line 819 "../tests/keys" + {"extractedAreaNumberOfSubsets",814}, +#line 332 "../tests/keys" + {"baseTimeEPS",327}, + {""}, {""}, {""}, {""}, {""}, +#line 1386 "../tests/keys" + {"numberOfIterations",1381}, +#line 1742 "../tests/keys" + {"referenceReflectivityForEchoTop",1737}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 2239 "../tests/keys" + {"upperThreshold",2234}, +#line 330 "../tests/keys" + {"baseDateEPS",325}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2170 "../tests/keys" + {"twoOrdersOfSPD",2165}, + {""}, {""}, {""}, {""}, +#line 891 "../tests/keys" + {"grib3divider",886}, + {""}, {""}, {""}, {""}, +#line 1228 "../tests/keys" + {"md5DataSection",1223}, +#line 2092 "../tests/keys" + {"table2Version",2087}, + {""}, {""}, {""}, +#line 2130 "../tests/keys" + {"timeDomainTemplateNumber",2125}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 565 "../tests/keys" + {"conceptsMasterMarsDir",560}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 794 "../tests/keys" + {"extractAreaWestLongitude",789}, +#line 2106 "../tests/keys" + {"templatesMasterDir",2101}, + {""}, {""}, {""}, +#line 673 "../tests/keys" + {"diffInDays",668}, + {""}, {""}, {""}, +#line 2049 "../tests/keys" + {"startingAzimuth",2044}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 2161 "../tests/keys" + {"trueLengthOfLastGroup",2156}, + {""}, {""}, +#line 1874 "../tests/keys" + {"scaledValueOfSecondFixedSurface",1869}, + {""}, +#line 2045 "../tests/keys" + {"startOfRange",2040}, + {""}, {""}, {""}, {""}, +#line 1528 "../tests/keys" + {"packingType",1523}, + {""}, +#line 399 "../tests/keys" + {"centralLongitudeInDegrees",394}, +#line 964 "../tests/keys" + {"inputOriginatingCentre",959}, + {""}, +#line 1840 "../tests/keys" + {"scaleFactorOfFirstFixedSurface",1835}, + {""}, #line 40 "../tests/keys" {"DjGiven",35}, {""}, -#line 1035 "../tests/keys" - {"latitudeOfThePoleOfStretching",1030}, - {""}, {""}, {""}, {""}, -#line 2134 "../tests/keys" - {"tsectionNumber3",2129}, - {""}, -#line 982 "../tests/keys" - {"isectionNumber3",977}, - {""}, {""}, -#line 322 "../tests/keys" - {"beginDayTrend4",317}, - {""}, {""}, {""}, -#line 617 "../tests/keys" - {"dateSSTFieldUsed",612}, - {""}, {""}, -#line 2285 "../tests/keys" - {"windSpeedTrend2",2280}, - {""}, -#line 1277 "../tests/keys" - {"nameECMF",1272}, - {""}, {""}, {""}, -#line 2275 "../tests/keys" - {"windDirectionTrend3",2270}, - {""}, {""}, {""}, {""}, -#line 161 "../tests/keys" - {"N1",156}, -#line 1644 "../tests/keys" - {"probProductDefinition",1639}, - {""}, {""}, {""}, -#line 2153 "../tests/keys" - {"typeOfIntervalForFirstAndSecondSize",2148}, - {""}, -#line 539 "../tests/keys" - {"conceptsMasterDir",534}, -#line 1681 "../tests/keys" - {"rangeBinSpacing",1676}, - {""}, -#line 1129 "../tests/keys" - {"longitudeOfReferencePoint",1124}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1130 "../tests/keys" - {"longitudeOfReferencePointInDegrees",1125}, - {""}, {""}, {""}, -#line 1094 "../tests/keys" - {"localFlagLatestVersion",1089}, - {""}, {""}, {""}, {""}, -#line 1158 "../tests/keys" - {"marsClass1",1153}, -#line 1738 "../tests/keys" - {"resolutionAndComponentFlags6",1733}, -#line 1622 "../tests/keys" - {"presentWeather1Present",1617}, - {""}, {""}, {""}, -#line 1426 "../tests/keys" - {"octetAtWichPackedDataBegins",1421}, - {""}, {""}, {""}, {""}, {""}, -#line 492 "../tests/keys" - {"cloudsTitle2Trend3",487}, - {""}, {""}, {""}, {""}, {""}, -#line 775 "../tests/keys" - {"extractDateTimeHourRank",770}, -#line 913 "../tests/keys" - {"iDirectionIncrementGridLength",908}, -#line 2195 "../tests/keys" - {"unitsECMF",2190}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2077 "../tests/keys" - {"templatesMasterDir",2072}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 977 "../tests/keys" - {"is_rotated_grid",972}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1668 "../tests/keys" - {"qnhUnits",1663}, - {""}, -#line 1951 "../tests/keys" - {"section_7",1946}, - {""}, {""}, {""}, {""}, -#line 696 "../tests/keys" - {"endDayTrend3",691}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 2154 "../tests/keys" - {"typeOfIntervalForFirstAndSecondWavelength",2149}, -#line 1399 "../tests/keys" - {"numberOfSingularVectorsComputed",1394}, -#line 1580 "../tests/keys" - {"parameterUnits",1575}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 552 "../tests/keys" - {"coordAveragingTims",547}, - {""}, {""}, {""}, {""}, {""}, -#line 1940 "../tests/keys" - {"section_07",1935}, - {""}, {""}, {""}, -#line 1430 "../tests/keys" - {"offsetAfterData",1425}, - {""}, -#line 487 "../tests/keys" - {"cloudsTitle1Trend3",482}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1915 "../tests/keys" - {"section6",1910}, - {""}, {""}, {""}, {""}, -#line 1773 "../tests/keys" - {"runwayDesignatorState3",1768}, - {""}, -#line 494 "../tests/keys" - {"cloudsTitle3",489}, - {""}, {""}, {""}, {""}, {""}, -#line 1791 "../tests/keys" - {"runwayFrictionCoefficientState1",1786}, - {""}, {""}, {""}, {""}, -#line 1756 "../tests/keys" - {"runwayDepositState2",1751}, - {""}, -#line 1912 "../tests/keys" - {"section5Length",1907}, - {""}, {""}, {""}, {""}, -#line 1787 "../tests/keys" - {"runwayFrictionCoefficientCodeState1",1782}, - {""}, {""}, {""}, -#line 464 "../tests/keys" - {"cloudsCode1",459}, - {""}, {""}, -#line 1088 "../tests/keys" - {"localDefNumberTwo",1083}, - {""}, {""}, {""}, -#line 764 "../tests/keys" - {"extractAreaEastLongitude",759}, - {""}, -#line 613 "../tests/keys" - {"dateOfIceFieldUsed",608}, - {""}, -#line 1794 "../tests/keys" - {"runwayFrictionCoefficientState4",1789}, -#line 146 "../tests/keys" - {"METARstr",141}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1889 "../tests/keys" - {"section11Length",1884}, -#line 1790 "../tests/keys" - {"runwayFrictionCoefficientCodeState4",1785}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 996 "../tests/keys" - {"julianForecastDay",991}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1892 "../tests/keys" - {"section1Length",1887}, -#line 1442 "../tests/keys" - {"offsetEndSection4",1437}, - {""}, {""}, {""}, {""}, {""}, -#line 197 "../tests/keys" - {"PUnset",192}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 774 "../tests/keys" - {"extractDateTimeHourEnd",769}, -#line 1620 "../tests/keys" - {"presentTrend3",1615}, - {""}, {""}, {""}, {""}, -#line 2150 "../tests/keys" - {"typeOfGeneratingProcess",2145}, - {""}, {""}, {""}, {""}, -#line 1907 "../tests/keys" - {"section4Length",1902}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1198 "../tests/keys" - {"matrixBitmapsPresent",1193}, - {""}, {""}, {""}, {""}, {""}, -#line 1294 "../tests/keys" - {"northWestLongitudeOfVerficationArea",1289}, -#line 1452 "../tests/keys" - {"offsetSection3",1447}, - {""}, -#line 1419 "../tests/keys" - {"observationDiagnostic",1414}, - {""}, -#line 1151 "../tests/keys" - {"ls_labeling",1146}, - {""}, -#line 1220 "../tests/keys" - {"meanRVR2",1215}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1438 "../tests/keys" - {"offsetBeforeData",1433}, - {""}, {""}, {""}, {""}, -#line 851 "../tests/keys" - {"gaussianGridName",846}, - {""}, {""}, -#line 1664 "../tests/keys" - {"qfeUnits",1659}, - {""}, {""}, {""}, -#line 145 "../tests/keys" - {"METAR",140}, - {""}, {""}, {""}, {""}, -#line 1385 "../tests/keys" - {"numberOfPointsAlongXAxis",1380}, - {""}, -#line 900 "../tests/keys" - {"horizontalDomainTemplate",895}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1250 "../tests/keys" - {"mixedCoordinateDefinition",1245}, - {""}, -#line 525 "../tests/keys" - {"codedNumberOfGroups",520}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 251 "../tests/keys" - {"X2",246}, - {""}, {""}, -#line 2246 "../tests/keys" - {"versionOfModelClimate",2241}, - {""}, {""}, -#line 1239 "../tests/keys" - {"minuteOfEndOfOverallTimeInterval",1234}, - {""}, -#line 1867 "../tests/keys" - {"secondOfEndOfOverallTimeInterval",1862}, - {""}, {""}, {""}, -#line 1678 "../tests/keys" - {"radiusOfClusterDomain",1673}, -#line 714 "../tests/keys" - {"endOfHeadersMarker",709}, - {""}, -#line 2043 "../tests/keys" - {"subLocalDefinition1",2038}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1098 "../tests/keys" - {"localLatitude2",1093}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 118 "../tests/keys" - {"Latin1InDegrees",113}, - {""}, -#line 1254 "../tests/keys" - {"modelErrorType",1249}, -#line 1392 "../tests/keys" - {"numberOfReforecastYearsInModelClimate",1387}, -#line 184 "../tests/keys" - {"Nj",179}, - {""}, {""}, -#line 469 "../tests/keys" - {"cloudsCode2",464}, - {""}, {""}, -#line 2294 "../tests/keys" - {"windVariableDirectionTrend1",2289}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 778 "../tests/keys" - {"extractDateTimeMinuteRank",773}, -#line 386 "../tests/keys" - {"cfVarNameECMF",381}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, #line 563 "../tests/keys" - {"coordinate4OfFirstGridPoint",558}, + {"conceptsLocalMarsDirAll",558}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1081 "../tests/keys" + {"lengthOfMessage",1076}, +#line 571 "../tests/keys" + {"constituentType",566}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 618 "../tests/keys" + {"dataCategory",613}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 601 "../tests/keys" + {"correction1Part",596}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1268 "../tests/keys" + {"minutesAfterDataCutoff",1263}, + {""}, +#line 607 "../tests/keys" + {"correction4Part",602}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1728 "../tests/keys" - {"reservedNeedNotBePresent",1723}, +#line 1357 "../tests/keys" + {"numberOfDataPoints",1352}, + {""}, +#line 387 "../tests/keys" + {"ccccIdentifiers",382}, {""}, {""}, {""}, {""}, {""}, -#line 781 "../tests/keys" - {"extractDateTimeMonthRank",776}, -#line 784 "../tests/keys" - {"extractDateTimeSecondRank",779}, - {""}, {""}, {""}, {""}, -#line 2058 "../tests/keys" - {"swapScanningX",2053}, - {""}, -#line 1731 "../tests/keys" - {"reservedSection3",1726}, - {""}, {""}, {""}, -#line 2297 "../tests/keys" - {"windVariableDirectionTrend4",2292}, -#line 585 "../tests/keys" - {"countOfICEFieldsUsed",580}, -#line 1354 "../tests/keys" - {"numberOfGridInReference",1349}, - {""}, -#line 1792 "../tests/keys" - {"runwayFrictionCoefficientState2",1787}, - {""}, -#line 841 "../tests/keys" - {"formatVersionMinorNumber",836}, - {""}, {""}, -#line 2123 "../tests/keys" - {"totalNumberOfGridPoints",2118}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1788 "../tests/keys" - {"runwayFrictionCoefficientCodeState2",1783}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 148 "../tests/keys" - {"MinuteOfModelVersion",143}, +#line 2061 "../tests/keys" + {"stepTypeInternal",2056}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1037 "../tests/keys" - {"latitudeOfThePolePointInDegrees",1032}, - {""}, {""}, {""}, {""}, -#line 2103 "../tests/keys" - {"timeIncrementBetweenSuccessiveFields",2098}, + {""}, +#line 1212 "../tests/keys" + {"mars_labeling",1207}, {""}, {""}, {""}, {""}, {""}, -#line 1155 "../tests/keys" - {"mBasicAngle",1150}, -#line 1379 "../tests/keys" - {"numberOfPointsAlongAMeridian",1374}, +#line 700 "../tests/keys" + {"earthIsOblate",695}, +#line 1688 "../tests/keys" + {"projectionCentreFlag",1683}, + {""}, +#line 1368 "../tests/keys" + {"numberOfDistinctSection8s",1363}, + {""}, {""}, +#line 1231 "../tests/keys" + {"md5Product",1226}, + {""}, {""}, +#line 924 "../tests/keys" + {"horizontalDimensionProcessed",919}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 495 "../tests/keys" - {"cloudsTitle3Trend1",490}, +#line 688 "../tests/keys" + {"doExtractArea",683}, +#line 1635 "../tests/keys" + {"plusOneinOrdersOfSPD",1630}, +#line 426 "../tests/keys" + {"climateDateFrom",421}, + {""}, {""}, {""}, {""}, {""}, +#line 380 "../tests/keys" + {"calendarIdPresent",375}, + {""}, {""}, {""}, {""}, +#line 1845 "../tests/keys" + {"scaleFactorOfLowerLimit",1840}, + {""}, {""}, {""}, {""}, +#line 1304 "../tests/keys" + {"nameOfSecondFixedSurface",1299}, + {""}, {""}, {""}, {""}, +#line 2034 "../tests/keys" + {"spectralDataRepresentationMode",2029}, +#line 1450 "../tests/keys" + {"observationType",1445}, + {""}, +#line 2268 "../tests/keys" + {"verifyingMonth",2263}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1088 "../tests/keys" + {"levelIndicator",1083}, + {""}, {""}, +#line 760 "../tests/keys" + {"epsStatisticsContinous",755}, + {""}, {""}, {""}, {""}, {""}, +#line 1137 "../tests/keys" + {"local_padding",1132}, + {""}, +#line 1641 "../tests/keys" + {"preProcessingParameter",1636}, +#line 1860 "../tests/keys" + {"scaledValueOfDistanceFromEnsembleMean",1855}, +#line 2012 "../tests/keys" + {"skewness",2007}, + {""}, {""}, {""}, +#line 1449 "../tests/keys" + {"observationGeneratingProcessIdentifier",1444}, + {""}, {""}, {""}, {""}, +#line 1351 "../tests/keys" + {"numberOfComponents",1346}, + {""}, +#line 605 "../tests/keys" + {"correction3Part",600}, +#line 2193 "../tests/keys" + {"typeOfSecondFixedSurface",2188}, + {""}, +#line 1770 "../tests/keys" + {"rootGroupObjectHeaderAddress",1765}, + {""}, {""}, {""}, {""}, +#line 2216 "../tests/keys" + {"unitOfOffsetFromReferenceTime",2211}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 2042 "../tests/keys" - {"subDefinitions2",2037}, -#line 320 "../tests/keys" - {"beginDayTrend2",315}, -#line 1895 "../tests/keys" - {"section2Length",1890}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1390 "../tests/keys" - {"numberOfRadarSitesUsed",1385}, + {"standardParallelInMicrodegrees",2037}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1830 "../tests/keys" - {"scaledValueOfCentralWaveNumber",1825}, - {""}, {""}, {""}, {""}, -#line 498 "../tests/keys" - {"cloudsTitle3Trend4",493}, - {""}, {""}, -#line 1757 "../tests/keys" - {"runwayDepositState3",1752}, +#line 109 "../tests/keys" + {"LaDInDegrees",104}, {""}, -#line 176 "../tests/keys" - {"NRj",171}, +#line 1830 "../tests/keys" + {"satelliteID",1825}, + {""}, {""}, +#line 2223 "../tests/keys" + {"unitsConversionScaleFactor",2218}, +#line 2229 "../tests/keys" + {"unknown",2224}, + {""}, +#line 1431 "../tests/keys" + {"numberOfTimeRange",1426}, +#line 942 "../tests/keys" + {"iScansPositively",937}, + {""}, {""}, {""}, {""}, +#line 865 "../tests/keys" + {"formatVersionMajorNumber",860}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1626 "../tests/keys" + {"periodOfTimeIntervals",1621}, + {""}, {""}, {""}, +#line 691 "../tests/keys" + {"doSimpleThinning",686}, + {""}, {""}, {""}, +#line 1356 "../tests/keys" + {"numberOfDataMatrices",1351}, + {""}, {""}, {""}, {""}, +#line 1346 "../tests/keys" + {"numberOfClusters",1341}, +#line 656 "../tests/keys" + {"defaultFaModelName",651}, + {""}, {""}, {""}, +#line 1350 "../tests/keys" + {"numberOfColumns",1345}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2174 "../tests/keys" + {"typeOfCalendar",2169}, +#line 2282 "../tests/keys" + {"verticalVisibilityCoded",2277}, +#line 556 "../tests/keys" + {"componentIndex",551}, + {""}, +#line 971 "../tests/keys" + {"integerPointValues",966}, +#line 811 "../tests/keys" + {"extractDateTimeStart",806}, + {""}, +#line 970 "../tests/keys" + {"instrumentType",965}, + {""}, +#line 2173 "../tests/keys" + {"typeOfAuxiliaryInformation",2168}, + {""}, {""}, {""}, {""}, +#line 1522 "../tests/keys" + {"originatorLocalTemplateNumber",1517}, + {""}, +#line 957 "../tests/keys" + {"indicatorOfTypeOfLevel",952}, + {""}, {""}, {""}, +#line 946 "../tests/keys" + {"identificationOfProject",941}, +#line 156 "../tests/keys" + {"M",151}, + {""}, {""}, +#line 808 "../tests/keys" + {"extractDateTimeSecondEnd",803}, + {""}, {""}, +#line 687 "../tests/keys" + {"distinctLongitudes",682}, + {""}, {""}, {""}, {""}, +#line 1255 "../tests/keys" + {"messageLength",1250}, +#line 1354 "../tests/keys" + {"numberOfCoordinatesValues",1349}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 810 "../tests/keys" + {"extractDateTimeSecondStart",805}, +#line 2232 "../tests/keys" + {"unpackedSubsetPrecision",2227}, + {""}, {""}, {""}, +#line 1864 "../tests/keys" + {"scaledValueOfFirstFixedSurface",1859}, + {""}, +#line 1141 "../tests/keys" + {"longitudeFirstInDegrees",1136}, +#line 1913 "../tests/keys" + {"section0Length",1908}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1746 "../tests/keys" + {"referenceValueError",1741}, +#line 1685 "../tests/keys" + {"projectLocalTemplate",1680}, + {""}, {""}, +#line 1013 "../tests/keys" + {"jDirectionIncrement",1008}, + {""}, {""}, +#line 1888 "../tests/keys" + {"scanningModeForOneDiamond",1883}, + {""}, {""}, {""}, +#line 2145 "../tests/keys" + {"totalLength",2140}, + {""}, +#line 1266 "../tests/keys" + {"minuteOfModelVersion",1261}, + {""}, {""}, {""}, {""}, {""}, +#line 1898 "../tests/keys" + {"secondOfModelVersion",1893}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1956 "../tests/keys" + {"section9Length",1951}, +#line 1829 "../tests/keys" + {"sampleSizeOfModelClimate",1824}, + {""}, {""}, {""}, {""}, {""}, +#line 1460 "../tests/keys" + {"offsetAfterLocalSection",1455}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1686 "../tests/keys" + {"projectLocalTemplateNumber",1681}, +#line 2001 "../tests/keys" + {"simpleThinningSkip",1996}, + {""}, {""}, {""}, {""}, +#line 327 "../tests/keys" + {"backgroundProcess",322}, +#line 538 "../tests/keys" + {"clusterMember8",533}, + {""}, +#line 1347 "../tests/keys" + {"numberOfCodedValues",1342}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1314 "../tests/keys" + {"northLatitudeOfCluster",1309}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 2240 "../tests/keys" + {"upperThresholdValue",2235}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1388 "../tests/keys" + {"numberOfLogicals",1383}, +#line 1000 "../tests/keys" + {"is_chemical_distfn",995}, + {""}, +#line 2227 "../tests/keys" + {"unitsOfFirstFixedSurface",2222}, + {""}, +#line 1981 "../tests/keys" + {"section_8",1976}, + {""}, +#line 1674 "../tests/keys" + {"probabilityType",1669}, +#line 1084 "../tests/keys" + {"lengthOfTimeRange",1079}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1869 "../tests/keys" + {"scaledValueOfLowerLimit",1864}, +#line 1917 "../tests/keys" + {"section10Pointer",1912}, +#line 1289 "../tests/keys" + {"monthOfModelVersion",1284}, + {""}, +#line 1105 "../tests/keys" + {"listOfModelIdentifiers",1100}, +#line 359 "../tests/keys" + {"biFourierResolutionParameterN",354}, + {""}, {""}, +#line 1292 "../tests/keys" + {"monthlyVerificationMonth",1287}, + {""}, {""}, {""}, {""}, {""}, +#line 583 "../tests/keys" + {"coordinate2Start",578}, +#line 2147 "../tests/keys" + {"totalNumberOfClusters",2142}, +#line 1080 "../tests/keys" + {"lengthOfIndexTemplate",1075}, + {""}, +#line 705 "../tests/keys" + {"eastLongitudeOfCluster",700}, + {""}, {""}, {""}, +#line 1461 "../tests/keys" + {"offsetAfterPadding",1456}, +#line 2020 "../tests/keys" + {"southLatitudeOfCluster",2015}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1762 "../tests/keys" + {"resolutionAndComponentFlags",1757}, + {""}, +#line 1040 "../tests/keys" + {"latitudeLongitudeValues",1035}, + {""}, +#line 325 "../tests/keys" + {"azimuthalWidth",320}, +#line 292 "../tests/keys" + {"accumulationInterval",287}, + {""}, {""}, +#line 1057 "../tests/keys" + {"latitudeOfSubSatellitePoint",1052}, + {""}, {""}, {""}, +#line 2297 "../tests/keys" + {"westernLongitudeOfDomain",2292}, + {""}, {""}, {""}, +#line 2276 "../tests/keys" + {"versionOfModelClimate",2271}, + {""}, {""}, +#line 1970 "../tests/keys" + {"section_08",1965}, + {""}, +#line 1058 "../tests/keys" + {"latitudeOfSubSatellitePointInDegrees",1053}, + {""}, {""}, +#line 1698 "../tests/keys" + {"qualityControl",1693}, + {""}, +#line 856 "../tests/keys" + {"forecastMonth",851}, + {""}, +#line 227 "../tests/keys" + {"SecondOfModelVersion",222}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 2180 "../tests/keys" + {"typeOfGeneratingProcess",2175}, + {""}, {""}, +#line 1174 "../tests/keys" + {"lowerThreshold",1169}, + {""}, {""}, +#line 1219 "../tests/keys" + {"matchAerosolPacking",1214}, +#line 2233 "../tests/keys" + {"unpackedValues",2228}, +#line 1421 "../tests/keys" + {"numberOfRepresentativeMember",1416}, + {""}, {""}, +#line 874 "../tests/keys" + {"g1conceptsMasterDir",869}, + {""}, {""}, {""}, {""}, +#line 1887 "../tests/keys" + {"scanningMode8",1882}, + {""}, {""}, +#line 2234 "../tests/keys" + {"unsignedIntegers",2229}, +#line 282 "../tests/keys" + {"Yo",277}, +#line 1390 "../tests/keys" + {"numberOfMembersInEnsemble",1385}, + {""}, {""}, +#line 355 "../tests/keys" + {"biFourierCoefficients",350}, + {""}, {""}, +#line 1375 "../tests/keys" + {"numberOfForecastsInEnsemble",1370}, + {""}, +#line 2336 "../tests/keys" + {"yCoordinateOfOriginOfSectorImage",2331}, +#line 1385 "../tests/keys" + {"numberOfInts",1380}, + {""}, {""}, {""}, {""}, {""}, +#line 1320 "../tests/keys" + {"northernLatitudeOfClusterDomain",1315}, + {""}, +#line 283 "../tests/keys" + {"Yp",278}, + {""}, {""}, {""}, {""}, +#line 812 "../tests/keys" + {"extractDateTimeYearEnd",807}, + {""}, {""}, +#line 1389 "../tests/keys" + {"numberOfMembersInCluster",1384}, + {""}, +#line 1144 "../tests/keys" + {"longitudeOfCenterPointInDegrees",1139}, + {""}, +#line 2080 "../tests/keys" + {"subSetM",2075}, + {""}, {""}, +#line 100 "../tests/keys" + {"K",95}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1275 "../tests/keys" + {"mixedCoordinateDefinition",1270}, + {""}, +#line 1341 "../tests/keys" + {"numberOfCategories",1336}, + {""}, {""}, {""}, +#line 1606 "../tests/keys" + {"parameterIndicator",1601}, + {""}, +#line 906 "../tests/keys" + {"groupLengths",901}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 2019 "../tests/keys" + {"southEastLongitudeOfVerficationArea",2014}, + {""}, {""}, +#line 797 "../tests/keys" + {"extractDateTimeDayStart",792}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 2266 "../tests/keys" + {"verificationMonth",2261}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 2023 "../tests/keys" + {"southernLatitudeOfClusterDomain",2018}, +#line 850 "../tests/keys" + {"flagForNormalOrStaggeredGrid",845}, + {""}, {""}, {""}, {""}, +#line 1723 "../tests/keys" + {"rdbtimeYear",1718}, +#line 1675 "../tests/keys" + {"probabilityTypeName",1670}, +#line 635 "../tests/keys" + {"dateOfAnalysis",630}, + {""}, {""}, {""}, +#line 952 "../tests/keys" + {"incrementOfLengths",947}, +#line 2124 "../tests/keys" + {"tigge_short_name",2119}, + {""}, {""}, +#line 1229 "../tests/keys" + {"md5GridSection",1224}, + {""}, +#line 816 "../tests/keys" + {"extractSubsetIntervalEnd",811}, +#line 2133 "../tests/keys" + {"timeOfAnalysis",2128}, + {""}, {""}, +#line 1153 "../tests/keys" + {"longitudeOfNorthWestCornerOfArea",1148}, + {""}, {""}, {""}, +#line 2344 "../tests/keys" + {"yearOfAnalysis",2339}, + {""}, +#line 2329 "../tests/keys" + {"xCoordinateOfOriginOfSectorImage",2324}, +#line 898 "../tests/keys" + {"gridDefinitionSection",893}, + {""}, {""}, {""}, {""}, +#line 1900 "../tests/keys" + {"secondOrderOfDifferentWidth",1895}, +#line 817 "../tests/keys" + {"extractSubsetIntervalStart",812}, +#line 1190 "../tests/keys" + {"marsForecastMonth",1185}, + {""}, {""}, +#line 544 "../tests/keys" + {"clutterFilterIndicator",539}, +#line 1916 "../tests/keys" + {"section10Length",1911}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1611 "../tests/keys" + {"parametersVersion",1606}, + {""}, {""}, {""}, {""}, {""}, +#line 2172 "../tests/keys" + {"typeOfAnalysis",2167}, + {""}, {""}, {""}, +#line 1927 "../tests/keys" + {"section2Present",1922}, + {""}, {""}, {""}, {""}, +#line 1995 "../tests/keys" + {"shortNameECMF",1990}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 939 "../tests/keys" + {"iDirectionIncrementInDegrees",934}, +#line 2231 "../tests/keys" + {"unpackedError",2226}, +#line 1526 "../tests/keys" + {"packedValues",1521}, + {""}, {""}, +#line 2338 "../tests/keys" + {"yDirectionGridLength",2333}, + {""}, {""}, +#line 1673 "../tests/keys" + {"probProductDefinition",1668}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 870 "../tests/keys" + {"frequencyScalingFactor",865}, + {""}, +#line 1164 "../tests/keys" + {"longitudeOfThePoleOfStretching",1159}, + {""}, {""}, +#line 889 "../tests/keys" + {"grib2LocalSectionPresent",884}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 2011 "../tests/keys" + {"skew",2006}, +#line 1895 "../tests/keys" + {"secondLatitudeInDegrees",1890}, + {""}, {""}, {""}, {""}, {""}, +#line 959 "../tests/keys" + {"indicatorOfUnitForTimeRange",954}, + {""}, +#line 131 "../tests/keys" + {"LoVInDegrees",126}, + {""}, {""}, {""}, {""}, {""}, +#line 950 "../tests/keys" + {"ijDirectionIncrementGiven",945}, + {""}, +#line 361 "../tests/keys" + {"biFourierResolutionSubSetParameterN",356}, + {""}, {""}, {""}, +#line 1136 "../tests/keys" + {"localYear",1131}, + {""}, {""}, {""}, +#line 1331 "../tests/keys" + {"numberMissingFromAveragesOrAccumulations",1326}, + {""}, +#line 802 "../tests/keys" + {"extractDateTimeMinuteEnd",797}, +#line 1038 "../tests/keys" + {"latitudeFirstInDegrees",1033}, + {""}, +#line 562 "../tests/keys" + {"conceptsLocalDirECMF",557}, + {""}, +#line 1741 "../tests/keys" + {"referenceOfWidths",1736}, + {""}, +#line 1527 "../tests/keys" + {"packingError",1522}, + {""}, {""}, +#line 805 "../tests/keys" + {"extractDateTimeMonthEnd",800}, + {""}, +#line 928 "../tests/keys" + {"hourOfAnalysis",923}, + {""}, {""}, {""}, {""}, +#line 804 "../tests/keys" + {"extractDateTimeMinuteStart",799}, +#line 888 "../tests/keys" + {"grib2LocalSectionNumber",883}, + {""}, +#line 992 "../tests/keys" + {"isHindcast",987}, + {""}, {""}, +#line 2209 "../tests/keys" + {"typicalYear",2204}, +#line 807 "../tests/keys" + {"extractDateTimeMonthStart",802}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 2177 "../tests/keys" + {"typeOfEnsembleForecast",2172}, + {""}, +#line 2017 "../tests/keys" + {"southEastLatitudeOfVerficationArea",2012}, + {""}, {""}, +#line 2153 "../tests/keys" + {"totalNumberOfIterations",2148}, +#line 1459 "../tests/keys" + {"offsetAfterData",1454}, +#line 2331 "../tests/keys" + {"xDirectionGridLength",2326}, +#line 2116 "../tests/keys" + {"thresholdIndicator",2111}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 821 "../tests/keys" + {"extremeClockwiseWindDirection",816}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 685 "../tests/keys" + {"distanceFromTubeToEnsembleMean",680}, + {""}, {""}, +#line 859 "../tests/keys" + {"forecastPeriodFrom",854}, + {""}, {""}, +#line 866 "../tests/keys" + {"formatVersionMinorNumber",861}, +#line 2079 "../tests/keys" + {"subSetK",2074}, + {""}, {""}, {""}, {""}, {""}, +#line 1049 "../tests/keys" + {"latitudeOfNorthWestCornerOfArea",1044}, + {""}, {""}, {""}, {""}, +#line 2165 "../tests/keys" + {"tsectionNumber4",2160}, + {""}, {""}, +#line 841 "../tests/keys" + {"firstDimensionPhysicalSignificance",836}, + {""}, {""}, +#line 1008 "../tests/keys" + {"isectionNumber4",1003}, +#line 680 "../tests/keys" + {"directionOfVariation",675}, +#line 2015 "../tests/keys" + {"sourceOfGridDefinition",2010}, + {""}, {""}, {""}, +#line 1624 "../tests/keys" + {"percentileValue",1619}, + {""}, +#line 1707 "../tests/keys" + {"radiusOfClusterDomain",1702}, + {""}, {""}, {""}, {""}, +#line 1047 "../tests/keys" + {"latitudeOfLastGridPoint",1042}, +#line 2110 "../tests/keys" + {"thisMarsClass",2105}, + {""}, +#line 777 "../tests/keys" + {"experimentVersionNumber",772}, + {""}, +#line 1910 "../tests/keys" + {"secondsOfAnalysis",1905}, + {""}, +#line 1718 "../tests/keys" + {"rdbtimeHour",1713}, +#line 1940 "../tests/keys" + {"section5",1935}, + {""}, +#line 1148 "../tests/keys" + {"longitudeOfFirstGridPoint",1143}, +#line 291 "../tests/keys" + {"_numberOfValues",286}, + {""}, {""}, +#line 1094 "../tests/keys" + {"listMembersMissing",1089}, + {""}, {""}, +#line 1345 "../tests/keys" + {"numberOfClusterLowResolution",1340}, + {""}, +#line 2086 "../tests/keys" + {"swapScanningLon",2081}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1142 "../tests/keys" + {"longitudeLastInDegrees",1137}, + {""}, {""}, {""}, {""}, +#line 38 "../tests/keys" + {"DiInMetres",33}, + {""}, {""}, +#line 1993 "../tests/keys" + {"shapeOfVerificationArea",1988}, + {""}, {""}, {""}, {""}, +#line 1731 "../tests/keys" + {"rectimeHour",1726}, + {""}, {""}, {""}, +#line 49 "../tests/keys" + {"DyInMetres",44}, +#line 2190 "../tests/keys" + {"typeOfPreProcessing",2185}, + {""}, {""}, {""}, {""}, {""}, +#line 701 "../tests/keys" + {"earthMajorAxis",696}, +#line 39 "../tests/keys" + {"Dj",34}, + {""}, {""}, +#line 405 "../tests/keys" + {"centuryOfAnalysis",400}, + {""}, {""}, {""}, +#line 1458 "../tests/keys" + {"offsetAfterCentreLocalSection",1453}, + {""}, {""}, {""}, +#line 738 "../tests/keys" + {"endOfFileAddress",733}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1384 "../tests/keys" + {"numberOfIntegers",1379}, +#line 2002 "../tests/keys" + {"simpleThinningStart",1997}, + {""}, {""}, +#line 878 "../tests/keys" + {"generalExtended2ordr",873}, + {""}, {""}, {""}, +#line 1682 "../tests/keys" + {"productIdentifier",1677}, + {""}, {""}, +#line 1953 "../tests/keys" + {"section8Length",1948}, + {""}, {""}, {""}, +#line 1942 "../tests/keys" + {"section5Pointer",1937}, + {""}, {""}, {""}, +#line 1740 "../tests/keys" + {"referenceOfLengths",1735}, + {""}, {""}, {""}, +#line 1175 "../tests/keys" + {"lowerThresholdValue",1170}, + {""}, {""}, +#line 1165 "../tests/keys" + {"longitudeOfThePolePoint",1160}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2055 "../tests/keys" + {"stepForClustering",2050}, + {""}, {""}, {""}, +#line 2148 "../tests/keys" + {"totalNumberOfDataValuesMissingInStatisticalProcess",2143}, + {""}, {""}, +#line 177 "../tests/keys" + {"NC",172}, + {""}, {""}, +#line 1002 "../tests/keys" + {"is_rotated_grid",997}, +#line 529 "../tests/keys" + {"clusterIdentifier",524}, + {""}, {""}, {""}, {""}, {""}, +#line 1151 "../tests/keys" + {"longitudeOfLastGridPoint",1146}, + {""}, {""}, {""}, {""}, +#line 2085 "../tests/keys" + {"swapScanningLat",2080}, + {""}, {""}, {""}, +#line 1120 "../tests/keys" + {"localHour",1115}, + {""}, {""}, {""}, +#line 2253 "../tests/keys" + {"variationOfVisibility",2248}, + {""}, {""}, {""}, +#line 1410 "../tests/keys" + {"numberOfPointsAlongXAxis",1405}, + {""}, +#line 1160 "../tests/keys" + {"longitudeOfStretchingPoleInDegrees",1155}, +#line 1348 "../tests/keys" + {"numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction",1343}, +#line 1349 "../tests/keys" + {"numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction",1344}, +#line 46 "../tests/keys" + {"DxInMetres",41}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 893 "../tests/keys" + {"gribTablesVersionNo",888}, + {""}, {""}, {""}, +#line 2204 "../tests/keys" + {"typicalHour",2199}, + {""}, +#line 1397 "../tests/keys" + {"numberOfOctetsExtraDescriptors",1392}, + {""}, +#line 2294 "../tests/keys" + {"westLongitudeOfCluster",2289}, +#line 1003 "../tests/keys" + {"is_s2s",998}, + {""}, {""}, {""}, {""}, +#line 609 "../tests/keys" + {"countOfGroupLengths",604}, + {""}, {""}, {""}, +#line 831 "../tests/keys" + {"falseEasting",826}, +#line 843 "../tests/keys" + {"firstLatitudeInDegrees",838}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2082 "../tests/keys" + {"subdivisionsOfBasicAngle",2077}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1286 "../tests/keys" + {"monthOfAnalysis",1281}, + {""}, {""}, {""}, {""}, +#line 2254 "../tests/keys" + {"variationOfVisibilityDirection",2249}, + {""}, {""}, {""}, {""}, {""}, +#line 2255 "../tests/keys" + {"variationOfVisibilityDirectionAngle",2250}, + {""}, {""}, +#line 2337 "../tests/keys" + {"yCoordinateOfSubSatellitePoint",2332}, +#line 2025 "../tests/keys" + {"sp1",2020}, + {""}, +#line 1017 "../tests/keys" + {"jIncrement",1012}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 1923 "../tests/keys" + {"section1Pointer",1918}, + {""}, {""}, {""}, {""}, +#line 2249 "../tests/keys" + {"uvRelativeToGrid",2244}, +#line 1179 "../tests/keys" + {"mAngleMultiplier",1174}, + {""}, {""}, +#line 98 "../tests/keys" + {"J",93}, + {""}, {""}, {""}, +#line 580 "../tests/keys" + {"coordinate1Start",575}, + {""}, {""}, +#line 1706 "../tests/keys" + {"radiusOfCentralCluster",1701}, + {""}, {""}, {""}, {""}, {""}, +#line 1014 "../tests/keys" + {"jDirectionIncrementGiven",1009}, +#line 1908 "../tests/keys" + {"secondaryMissingValue",1903}, +#line 424 "../tests/keys" + {"classOfAnalysis",419}, +#line 630 "../tests/keys" + {"dataSubCategory",625}, +#line 234 "../tests/keys" + {"TIDE",229}, + {""}, {""}, {""}, +#line 1156 "../tests/keys" + {"longitudeOfSouthEastCornerOfArea",1151}, + {""}, +#line 2033 "../tests/keys" + {"spatialSmoothingOfProduct",2028}, + {""}, +#line 2137 "../tests/keys" + {"timeRangeIndicator",2132}, +#line 2038 "../tests/keys" + {"sphericalHarmonics",2033}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 1959 "../tests/keys" + {"sectionLengthLimitForEnsembles",1954}, + {""}, {""}, +#line 695 "../tests/keys" + {"dummy1",690}, + {""}, +#line 1769 "../tests/keys" + {"resolutionAndComponentFlags8",1764}, + {""}, {""}, {""}, {""}, {""}, +#line 1915 "../tests/keys" + {"section1",1910}, + {""}, {""}, {""}, +#line 1973 "../tests/keys" + {"section_10",1968}, +#line 198 "../tests/keys" + {"Nj",193}, +#line 602 "../tests/keys" + {"correction2",597}, +#line 1065 "../tests/keys" + {"latitudeWhereDxAndDyAreSpecified",1060}, +#line 1695 "../tests/keys" + {"qnhAPresent",1690}, + {""}, +#line 1926 "../tests/keys" + {"section2Pointer",1921}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1208 "../tests/keys" + {"marsStream2",1203}, + {""}, {""}, +#line 262 "../tests/keys" + {"WMO",257}, +#line 1066 "../tests/keys" + {"latitudeWhereDxAndDyAreSpecifiedInDegrees",1061}, + {""}, +#line 1358 "../tests/keys" + {"numberOfDataPointsExpected",1353}, + {""}, +#line 1298 "../tests/keys" + {"n2",1293}, +#line 290 "../tests/keys" + {"_leg_number",285}, +#line 2330 "../tests/keys" + {"xCoordinateOfSubSatellitePoint",2325}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 741 "../tests/keys" + {"endOfMessage",736}, + {""}, +#line 1960 "../tests/keys" + {"sectionLengthLimitForProbability",1955}, + {""}, +#line 589 "../tests/keys" + {"coordinate4OfLastGridPoint",584}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1279 "../tests/keys" + {"modelErrorType",1274}, + {""}, {""}, {""}, +#line 683 "../tests/keys" + {"disableGrib1LocalSection",678}, +#line 1210 "../tests/keys" + {"marsType1",1205}, + {""}, {""}, +#line 1023 "../tests/keys" + {"keyMore",1018}, + {""}, {""}, {""}, +#line 2026 "../tests/keys" + {"sp2",2021}, + {""}, +#line 767 "../tests/keys" + {"expandedCrex_units",762}, + {""}, +#line 1295 "../tests/keys" + {"multiplicationFactorForLatLong",1290}, + {""}, +#line 1046 "../tests/keys" + {"latitudeOfIcosahedronPole",1041}, + {""}, {""}, {""}, +#line 766 "../tests/keys" + {"expandedCrex_scales",761}, +#line 2031 "../tests/keys" + {"spare2",2026}, + {""}, {""}, {""}, {""}, +#line 1176 "../tests/keys" + {"ls_labeling",1171}, + {""}, {""}, {""}, +#line 1909 "../tests/keys" + {"secondaryMissingValueSubstitute",1904}, + {""}, +#line 155 "../tests/keys" + {"LyInMetres",150}, + {""}, +#line 1754 "../tests/keys" + {"reserved1",1749}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1312 "../tests/keys" + {"normAtInitialTime",1307}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 1365 "../tests/keys" + {"numberOfDistinctSection5s",1360}, + {""}, {""}, +#line 1009 "../tests/keys" + {"isotopeIdentificationNumber",1004}, + {""}, {""}, +#line 704 "../tests/keys" + {"earthMinorAxisInMetres",699}, + {""}, {""}, +#line 297 "../tests/keys" + {"addressOfFileFreeSpaceInfo",292}, +#line 2144 "../tests/keys" + {"totalInitialConditions",2139}, + {""}, {""}, {""}, +#line 2299 "../tests/keys" + {"widthOfLengths",2294}, + {""}, {""}, {""}, +#line 696 "../tests/keys" + {"dummy2",691}, + {""}, {""}, +#line 2317 "../tests/keys" + {"windSpeedTrend4",2312}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1748 "../tests/keys" + {"remarkPresent",1743}, + {""}, {""}, +#line 1104 "../tests/keys" + {"listOfEnsembleForecastNumbers",1099}, + {""}, {""}, {""}, {""}, +#line 1374 "../tests/keys" + {"numberOfForecastsInCluster",1369}, + {""}, {""}, {""}, +#line 30 "../tests/keys" + {"DELETE",25}, +#line 586 "../tests/keys" + {"coordinate3OfLastGridPoint",581}, + {""}, {""}, {""}, {""}, +#line 1106 "../tests/keys" + {"listOfParametersUsedForClustering",1101}, +#line 2221 "../tests/keys" + {"unitsBias",2216}, + {""}, {""}, {""}, +#line 1303 "../tests/keys" + {"nameOfFirstFixedSurface",1298}, + {""}, {""}, {""}, +#line 795 "../tests/keys" + {"extractDateTimeDayEnd",790}, +#line 2087 "../tests/keys" + {"swapScanningX",2082}, + {""}, {""}, {""}, +#line 2182 "../tests/keys" + {"typeOfHorizontalLine",2177}, + {""}, {""}, +#line 570 "../tests/keys" + {"constantFieldHalfByte",565}, +#line 1082 "../tests/keys" + {"lengthOfOriginatorLocalTemplate",1077}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 153 "../tests/keys" + {"LxInMetres",148}, + {""}, +#line 720 "../tests/keys" + {"endDayTrend2",715}, + {""}, +#line 278 "../tests/keys" + {"YR",273}, +#line 1211 "../tests/keys" + {"marsType2",1206}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 2179 "../tests/keys" + {"typeOfFirstFixedSurface",2174}, + {""}, +#line 2078 "../tests/keys" + {"subSetJ",2073}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1755 "../tests/keys" + {"reserved2",1750}, + {""}, +#line 1668 "../tests/keys" + {"primaryBitmap",1663}, + {""}, {""}, +#line 365 "../tests/keys" + {"bitMapIndicator",360}, + {""}, {""}, {""}, {""}, {""}, +#line 173 "../tests/keys" + {"N1",168}, + {""}, {""}, {""}, {""}, +#line 846 "../tests/keys" + {"firstOrderValues",841}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1352 "../tests/keys" + {"numberOfContributingSpectralBands",1347}, +#line 763 "../tests/keys" + {"expandBy",758}, + {""}, {""}, +#line 334 "../tests/keys" + {"basicAngleOfTheInitialProductionDomain",329}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 386 "../tests/keys" + {"cavokOrVisibility",381}, + {""}, {""}, {""}, +#line 713 "../tests/keys" + {"efas_post_proc",708}, +#line 1506 "../tests/keys" + {"operationalForecastCluster",1501}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 1315 "../tests/keys" - {"numberOfBytesPerInteger",1310}, - {""}, -#line 2309 "../tests/keys" - {"yDirectionGridLengthInMetres",2304}, - {""}, {""}, {""}, -#line 1409 "../tests/keys" - {"numberOfUsedTileAttributes",1404}, -#line 1406 "../tests/keys" - {"numberOfUnexpandedDescriptors",1401}, + {"northLatitudeOfDomainOfTubing",1310}, {""}, {""}, -#line 2073 "../tests/keys" - {"tempPressureUnits",2068}, +#line 2043 "../tests/keys" + {"startOfHeaders",2038}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1381 "../tests/keys" - {"numberOfPointsAlongFirstAxis",1376}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1986 "../tests/keys" - {"sourceOfGridDefinition",1981}, +#line 2328 "../tests/keys" + {"wrongPadding",2323}, + {""}, +#line 1379 "../tests/keys" + {"numberOfGridInReference",1374}, + {""}, +#line 514 "../tests/keys" + {"cloudsTitle2",509}, +#line 1933 "../tests/keys" + {"section3Pointer",1928}, + {""}, {""}, +#line 124 "../tests/keys" + {"LcyInMetres",119}, + {""}, +#line 151 "../tests/keys" + {"LuyInMetres",146}, + {""}, +#line 1842 "../tests/keys" + {"scaleFactorOfFirstWavelength",1837}, + {""}, +#line 1311 "../tests/keys" + {"normAtFinalTime",1306}, + {""}, {""}, +#line 883 "../tests/keys" + {"getNumberOfValues",878}, + {""}, {""}, +#line 1771 "../tests/keys" + {"rootGroupSymbolTableEntry",1766}, +#line 1714 "../tests/keys" + {"rdb_key",1709}, {""}, {""}, {""}, {""}, -#line 566 "../tests/keys" - {"coordinateFlag2",561}, - {""}, {""}, {""}, {""}, {""}, -#line 1207 "../tests/keys" - {"md5Section1",1202}, -#line 1980 "../tests/keys" - {"sizeOfPostAuxiliaryArray",1975}, +#line 105 "../tests/keys" + {"La1",100}, + {""}, +#line 112 "../tests/keys" + {"Lar1",107}, + {""}, +#line 2119 "../tests/keys" + {"tiggeLocalVersion",2114}, + {""}, +#line 265 "../tests/keys" + {"X1",260}, {""}, {""}, {""}, -#line 162 "../tests/keys" - {"N2",157}, +#line 1705 "../tests/keys" + {"radiusInMetres",1700}, + {""}, {""}, {""}, {""}, +#line 126 "../tests/keys" + {"Lo1",121}, + {""}, +#line 144 "../tests/keys" + {"Lor1",139}, +#line 117 "../tests/keys" + {"Latin1",112}, + {""}, +#line 706 "../tests/keys" + {"eastLongitudeOfDomainOfTubing",701}, + {""}, {""}, {""}, {""}, +#line 2021 "../tests/keys" + {"southLatitudeOfDomainOfTubing",2016}, +#line 1852 "../tests/keys" + {"scaleFactorOfSecondWavelength",1847}, +#line 665 "../tests/keys" + {"deleteCalendarId",660}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1920 "../tests/keys" + {"section1Flags",1915}, + {""}, {""}, {""}, {""}, +#line 174 "../tests/keys" + {"N2",169}, + {""}, +#line 1457 "../tests/keys" + {"offsetAfterBitmap",1452}, +#line 1376 "../tests/keys" + {"numberOfForecastsInTheCluster",1371}, + {""}, {""}, +#line 1620 "../tests/keys" + {"patch_precip_fp",1615}, + {""}, {""}, +#line 1843 "../tests/keys" + {"scaleFactorOfLengthOfSemiMajorAxis",1838}, + {""}, {""}, {""}, {""}, +#line 1844 "../tests/keys" + {"scaleFactorOfLengthOfSemiMinorAxis",1839}, + {""}, {""}, +#line 41 "../tests/keys" + {"DjInDegrees",36}, + {""}, {""}, {""}, +#line 663 "../tests/keys" + {"default_step_units",658}, {""}, {""}, {""}, {""}, {""}, +#line 801 "../tests/keys" + {"extractDateTimeHourStart",796}, + {""}, {""}, +#line 2187 "../tests/keys" + {"typeOfOriginalFieldValues",2182}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 122 "../tests/keys" + {"LcxInMetres",117}, + {""}, +#line 149 "../tests/keys" + {"LuxInMetres",144}, + {""}, +#line 2070 "../tests/keys" + {"subDefinitions1",2065}, + {""}, {""}, {""}, {""}, {""}, +#line 188 "../tests/keys" + {"NRj",183}, + {""}, {""}, {""}, {""}, +#line 411 "../tests/keys" + {"cfVarNameECMF",406}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1938 "../tests/keys" + {"section4Pointer",1933}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 651 "../tests/keys" + {"dayOfTheYearDate",646}, + {""}, {""}, +#line 1950 "../tests/keys" + {"section7Pointer",1945}, +#line 1073 "../tests/keys" + {"legBaseTime",1068}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 1072 "../tests/keys" + {"legBaseDate",1067}, +#line 107 "../tests/keys" + {"La2",102}, + {""}, +#line 114 "../tests/keys" + {"Lar2",109}, +#line 1025 "../tests/keys" + {"kindOfProduct",1020}, + {""}, {""}, +#line 267 "../tests/keys" + {"X2",262}, + {""}, {""}, {""}, {""}, {""}, +#line 1992 "../tests/keys" + {"shapeOfTheEarth",1987}, + {""}, {""}, +#line 128 "../tests/keys" + {"Lo2",123}, + {""}, +#line 146 "../tests/keys" + {"Lor2",141}, +#line 119 "../tests/keys" + {"Latin2",114}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1835 "../tests/keys" + {"scaleFactorOfCentralWaveNumber",1830}, + {""}, +#line 270 "../tests/keys" + {"XRInMetres",265}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 2118 "../tests/keys" + {"tiggeLAMName",2113}, + {""}, {""}, {""}, {""}, +#line 1161 "../tests/keys" + {"longitudeOfSubSatellitePoint",1156}, + {""}, {""}, +#line 400 "../tests/keys" + {"centralLongitudeInMicrodegrees",395}, + {""}, +#line 1414 "../tests/keys" + {"numberOfPointsInDomain",1409}, +#line 2009 "../tests/keys" + {"sizeOfPostAuxiliaryArray",2004}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1162 "../tests/keys" + {"longitudeOfSubSatellitePointInDegrees",1157}, + {""}, +#line 358 "../tests/keys" + {"biFourierResolutionParameterM",353}, + {""}, +#line 966 "../tests/keys" + {"inputProcessIdentifier",961}, + {""}, {""}, +#line 1239 "../tests/keys" + {"md5Section7",1234}, +#line 1848 "../tests/keys" + {"scaleFactorOfPrimeMeridianOffset",1843}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 1237 "../tests/keys" + {"md5Section5",1232}, +#line 693 "../tests/keys" + {"driverInformationBlockAddress",688}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1059 "../tests/keys" + {"latitudeOfTangencyPoint",1054}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1946 "../tests/keys" + {"section6Pointer",1941}, + {""}, +#line 915 "../tests/keys" + {"halfByte",910}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1775 "../tests/keys" + {"roundedMarsLongitude",1770}, + {""}, +#line 600 "../tests/keys" + {"correction1",595}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1677 "../tests/keys" + {"produceLargeConstantFields",1672}, +#line 1319 "../tests/keys" + {"northWestLongitudeOfVerficationArea",1314}, + {""}, {""}, #line 707 "../tests/keys" - {"endMinuteTrend3",702}, + {"easternLongitudeOfClusterDomain",702}, {""}, +#line 1207 "../tests/keys" + {"marsStream1",1202}, + {""}, {""}, {""}, {""}, {""}, +#line 180 "../tests/keys" + {"NEAREST",175}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1866 "../tests/keys" + {"scaledValueOfFirstWavelength",1861}, + {""}, {""}, {""}, {""}, {""}, +#line 2105 "../tests/keys" + {"templatesLocalDir",2100}, +#line 1015 "../tests/keys" + {"jDirectionIncrementGridLength",1010}, + {""}, {""}, {""}, +#line 1982 "../tests/keys" + {"selectStepTemplateInstant",1977}, + {""}, +#line 577 "../tests/keys" + {"coordAveragingTims",572}, +#line 2346 "../tests/keys" + {"yearOfEndOfOverallTimeInterval",2341}, + {""}, +#line 1363 "../tests/keys" + {"numberOfDistinctSection3s",1358}, + {""}, {""}, {""}, {""}, +#line 2267 "../tests/keys" + {"verificationYear",2262}, + {""}, +#line 892 "../tests/keys" + {"gribMasterTablesVersionNumber",887}, +#line 1483 "../tests/keys" + {"offsetSection5",1478}, + {""}, +#line 1299 "../tests/keys" + {"n3",1294}, + {""}, {""}, {""}, +#line 1133 "../tests/keys" + {"localTablesVersion",1128}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 768 "../tests/keys" + {"expandedCrex_widths",763}, + {""}, {""}, +#line 1876 "../tests/keys" + {"scaledValueOfSecondWavelength",1871}, + {""}, +#line 1427 "../tests/keys" + {"numberOfSingularVectorsEvolved",1422}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1287 "../tests/keys" + {"monthOfEndOfOverallTimeInterval",1282}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2027 "../tests/keys" + {"sp3",2022}, +#line 1867 "../tests/keys" + {"scaledValueOfLengthOfSemiMajorAxis",1862}, + {""}, {""}, {""}, {""}, +#line 1868 "../tests/keys" + {"scaledValueOfLengthOfSemiMinorAxis",1863}, + {""}, {""}, +#line 1727 "../tests/keys" + {"recentWeather",1722}, + {""}, {""}, {""}, +#line 376 "../tests/keys" + {"bufrHeaderCentre",371}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1330 "../tests/keys" + {"numberIncludedInAverage",1325}, + {""}, {""}, {""}, {""}, +#line 1056 "../tests/keys" + {"latitudeOfStretchingPoleInDegrees",1051}, #line 1400 "../tests/keys" - {"numberOfSingularVectorsEvolved",1395}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1159 "../tests/keys" - {"marsClass2",1154}, -#line 2310 "../tests/keys" - {"yDirectionGridLengthInMillimetres",2305}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 159 "../tests/keys" - {"MonthOfModelVersion",154}, - {""}, -#line 1793 "../tests/keys" - {"runwayFrictionCoefficientState3",1788}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1221 "../tests/keys" - {"meanRVR3",1216}, -#line 1789 "../tests/keys" - {"runwayFrictionCoefficientCodeState3",1784}, -#line 1380 "../tests/keys" - {"numberOfPointsAlongAParallel",1375}, -#line 1593 "../tests/keys" - {"pentagonalResolutionParameterK",1588}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 548 "../tests/keys" - {"coordAveraging0",543}, - {""}, {""}, {""}, {""}, {""}, -#line 1818 "../tests/keys" - {"scaleFactorOfMinorAxisOfOblateSpheroidEarth",1813}, -#line 326 "../tests/keys" - {"beginHourTrend4",321}, + {"numberOfParallelsBetweenAPoleAndTheEquator",1395}, {""}, {""}, {""}, -#line 1751 "../tests/keys" - {"runwayDepositCodeState1",1746}, - {""}, -#line 120 "../tests/keys" - {"Latin2InDegrees",115}, +#line 2062 "../tests/keys" + {"stepUnits",2057}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 321 "../tests/keys" + {"averaging1Flag",316}, {""}, {""}, {""}, {""}, -#line 1401 "../tests/keys" - {"numberOfStepsUsedForClustering",1396}, - {""}, {""}, {""}, -#line 2055 "../tests/keys" - {"superblockExtensionAddress",2050}, -#line 1408 "../tests/keys" - {"numberOfUsedSpatialTiles",1403}, - {""}, {""}, {""}, -#line 1291 "../tests/keys" - {"northWestLatitudeOfLPOArea",1286}, +#line 158 "../tests/keys" + {"METARstr",153}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1902 "../tests/keys" - {"section3Length",1897}, - {""}, {""}, -#line 388 "../tests/keys" - {"changeIndicatorTrend1",383}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 510 "../tests/keys" - {"clusterMember5",505}, - {""}, {""}, {""}, {""}, {""}, -#line 208 "../tests/keys" - {"SOH",203}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1053 "../tests/keys" - {"lengthOf4DvarWindow",1048}, - {""}, {""}, -#line 1754 "../tests/keys" - {"runwayDepositCodeState4",1749}, -#line 391 "../tests/keys" - {"changeIndicatorTrend4",386}, +#line 1720 "../tests/keys" + {"rdbtimeMonth",1715}, {""}, -#line 2226 "../tests/keys" - {"variationOfVisibilityDirectionTrend1",2221}, +#line 1448 "../tests/keys" + {"observationDiagnostic",1443}, + {""}, {""}, +#line 1238 "../tests/keys" + {"md5Section6",1233}, + {""}, {""}, +#line 1930 "../tests/keys" + {"section3Flags",1925}, +#line 1929 "../tests/keys" + {"section3",1924}, + {""}, +#line 792 "../tests/keys" + {"extractAreaNorthLatitude",787}, + {""}, +#line 929 "../tests/keys" + {"hourOfEndOfOverallTimeInterval",924}, + {""}, {""}, +#line 1647 "../tests/keys" + {"presentTrend1",1642}, {""}, {""}, {""}, -#line 1696 "../tests/keys" - {"realPartOf00",1691}, +#line 1364 "../tests/keys" + {"numberOfDistinctSection4s",1359}, {""}, -#line 247 "../tests/keys" - {"WRAP",242}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2314 "../tests/keys" + {"windSpeedTrend1",2309}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1826 "../tests/keys" - {"scaleFactorOfUpperLimit",1821}, - {""}, {""}, {""}, -#line 2229 "../tests/keys" - {"variationOfVisibilityDirectionTrend4",2224}, +#line 1367 "../tests/keys" + {"numberOfDistinctSection7s",1362}, {""}, -#line 1855 "../tests/keys" - {"scanningMode5",1850}, - {""}, {""}, -#line 705 "../tests/keys" - {"endMinuteTrend1",700}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1460 "../tests/keys" - {"offsetValuesBy",1455}, +#line 719 "../tests/keys" + {"endDayTrend1",714}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 160 "../tests/keys" + {"MinuteOfModelVersion",155}, + {""}, +#line 1157 "../tests/keys" + {"longitudeOfSouthernPole",1152}, +#line 381 "../tests/keys" + {"calendarIdentification",376}, +#line 55 "../tests/keys" + {"Ensemble_Combination_Number",50}, +#line 1317 "../tests/keys" + {"northWestLatitudeOfVerficationArea",1312}, {""}, {""}, {""}, {""}, +#line 1859 "../tests/keys" + {"scaledValueOfCentralWaveNumber",1854}, + {""}, {""}, {""}, +#line 322 "../tests/keys" + {"averaging2Flag",317}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 2016 "../tests/keys" + {"southEastLatitudeOfLPOArea",2011}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2007 "../tests/keys" + {"sizeOfLength",2002}, +#line 1872 "../tests/keys" + {"scaledValueOfPrimeMeridianOffset",1867}, + {""}, +#line 113 "../tests/keys" + {"Lar1InDegrees",108}, + {""}, {""}, {""}, {""}, {""}, +#line 360 "../tests/keys" + {"biFourierResolutionSubSetParameterM",355}, + {""}, {""}, {""}, +#line 1756 "../tests/keys" + {"reserved3",1751}, + {""}, +#line 1054 "../tests/keys" + {"latitudeOfSouthernPoleInDegrees",1049}, + {""}, +#line 1520 "../tests/keys" + {"originatingCentreOfAnalysis",1515}, +#line 145 "../tests/keys" + {"Lor1InDegrees",140}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1122 "../tests/keys" + {"localLatitude1",1117}, +#line 171 "../tests/keys" + {"MonthOfModelVersion",166}, +#line 1903 "../tests/keys" + {"secondaryBitmap",1898}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1213 "../tests/keys" + {"mask",1208}, + {""}, {""}, {""}, +#line 1366 "../tests/keys" + {"numberOfDistinctSection6s",1361}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 509 "../tests/keys" + {"cloudsTitle1",504}, + {""}, +#line 1648 "../tests/keys" + {"presentTrend2",1643}, + {""}, {""}, +#line 115 "../tests/keys" + {"Lar2InDegrees",110}, +#line 2206 "../tests/keys" + {"typicalMonth",2201}, + {""}, {""}, {""}, {""}, {""}, +#line 210 "../tests/keys" + {"P1",205}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 147 "../tests/keys" + {"Lor2InDegrees",142}, + {""}, {""}, +#line 1019 "../tests/keys" + {"jScansPositively",1014}, +#line 1477 "../tests/keys" + {"offsetSection1",1472}, + {""}, {""}, {""}, {""}, {""}, +#line 106 "../tests/keys" + {"La1InDegrees",101}, +#line 1294 "../tests/keys" + {"monthlyVerificationYear",1289}, + {""}, {""}, +#line 2295 "../tests/keys" + {"westLongitudeOfDomainOfTubing",2290}, + {""}, {""}, {""}, +#line 1941 "../tests/keys" + {"section5Length",1936}, + {""}, {""}, {""}, +#line 515 "../tests/keys" + {"cloudsTitle2Trend1",510}, + {""}, {""}, +#line 127 "../tests/keys" + {"Lo1InDegrees",122}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 897 "../tests/keys" + {"gridDefinitionDescription",892}, + {""}, +#line 933 "../tests/keys" + {"hoursAfterDataCutoff",928}, +#line 1983 "../tests/keys" + {"selectStepTemplateInterval",1978}, + {""}, {""}, +#line 905 "../tests/keys" + {"groupLeafNodeK",900}, +#line 1525 "../tests/keys" + {"pack",1520}, + {""}, {""}, {""}, +#line 2018 "../tests/keys" + {"southEastLongitudeOfLPOArea",2013}, +#line 335 "../tests/keys" + {"beginDayTrend1",330}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1270 "../tests/keys" + {"missingDataFlag",1265}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 2047 "../tests/keys" + {"startStepInHours",2042}, + {""}, {""}, {""}, {""}, {""}, +#line 2104 "../tests/keys" + {"temperatureAndDewpointPresent",2099}, +#line 103 "../tests/keys" + {"LLCOSP",98}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2138 "../tests/keys" + {"timeRangeIndicatorFromStepRange",2133}, +#line 1302 "../tests/keys" + {"nameECMF",1297}, +#line 1276 "../tests/keys" + {"mixedCoordinateFieldFlag",1271}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 382 "../tests/keys" + {"calendarIdentificationTemplateNumber",377}, +#line 516 "../tests/keys" + {"cloudsTitle2Trend2",511}, + {""}, {""}, {""}, {""}, {""}, +#line 1123 "../tests/keys" + {"localLatitude2",1118}, + {""}, {""}, +#line 1935 "../tests/keys" + {"section4",1930}, + {""}, {""}, {""}, {""}, +#line 1904 "../tests/keys" + {"secondaryBitmapPresent",1899}, + {""}, +#line 2230 "../tests/keys" + {"unpack",2225}, +#line 2188 "../tests/keys" + {"typeOfPacking",2183}, + {""}, {""}, {""}, {""}, {""}, +#line 733 "../tests/keys" + {"endMinuteTrend4",728}, + {""}, +#line 2072 "../tests/keys" + {"subLocalDefinition1",2067}, +#line 1905 "../tests/keys" + {"secondaryBitmaps",1900}, + {""}, {""}, +#line 1948 "../tests/keys" + {"section7",1943}, +#line 200 "../tests/keys" + {"NrInRadiusOfEarth",195}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 211 "../tests/keys" + {"P2",206}, + {""}, {""}, {""}, {""}, {""}, +#line 1820 "../tests/keys" + {"runwayFrictionCoefficientState1",1815}, + {""}, {""}, {""}, {""}, {""}, +#line 1480 "../tests/keys" + {"offsetSection2",1475}, + {""}, {""}, {""}, +#line 1079 "../tests/keys" + {"lengthOfHeaders",1074}, + {""}, {""}, {""}, +#line 1899 "../tests/keys" + {"secondOrderFlags",1894}, +#line 1134 "../tests/keys" + {"localTablesVersionNumber",1129}, + {""}, +#line 2225 "../tests/keys" + {"unitsECMF",2220}, + {""}, {""}, {""}, {""}, +#line 1921 "../tests/keys" + {"section1Length",1916}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2339 "../tests/keys" + {"yDirectionGridLengthInMetres",2334}, + {""}, +#line 604 "../tests/keys" + {"correction3",599}, + {""}, +#line 2247 "../tests/keys" + {"uuidOfHGrid",2242}, +#line 641 "../tests/keys" + {"dateOfSSTFieldUsed",636}, + {""}, {""}, #line 56 "../tests/keys" {"Ensemble_Identifier",51}, {""}, {""}, {""}, {""}, -#line 658 "../tests/keys" - {"disableGrib1LocalSection",653}, -#line 1209 "../tests/keys" - {"md5Section2",1204}, - {""}, -#line 1020 "../tests/keys" - {"latitudeOfFirstGridPointInDegrees",1015}, - {""}, -#line 496 "../tests/keys" - {"cloudsTitle3Trend2",491}, +#line 1906 "../tests/keys" + {"secondaryBitmapsCount",1901}, {""}, {""}, {""}, -#line 2089 "../tests/keys" - {"tiggeLAMName",2084}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 364 "../tests/keys" - {"ccsdsCompressionOptionsMask",359}, - {""}, {""}, {""}, {""}, -#line 505 "../tests/keys" - {"clusterMember1",500}, - {""}, {""}, {""}, {""}, -#line 1989 "../tests/keys" - {"southEastLongitudeOfLPOArea",1984}, - {""}, {""}, -#line 930 "../tests/keys" - {"indexedStorageInternalNodeK",925}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1313 "../tests/keys" - {"numberOfBytesInLocalDefinition",1308}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 2114 "../tests/keys" - {"totalAerosolBinsNumbers",2109}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1445 "../tests/keys" - {"offsetFromReferenceOfFirstTime",1440}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 509 "../tests/keys" - {"clusterMember4",504}, - {""}, -#line 899 "../tests/keys" - {"horizontalDimensionProcessed",894}, -#line 1878 "../tests/keys" - {"secondaryBitmapsSize",1873}, - {""}, {""}, {""}, -#line 506 "../tests/keys" - {"clusterMember10",501}, - {""}, -#line 321 "../tests/keys" - {"beginDayTrend3",316}, -#line 10 "../tests/keys" - {"7777",5}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 1335 "../tests/keys" - {"numberOfDaysInClimateSamplingWindow",1330}, - {""}, {""}, {""}, -#line 2219 "../tests/keys" - {"uvRelativeToGrid",2214}, -#line 858 "../tests/keys" - {"getNumberOfValues",853}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1854 "../tests/keys" - {"scanningMode4",1849}, - {""}, -#line 2168 "../tests/keys" - {"typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing",2163}, -#line 2263 "../tests/keys" - {"weightAppliedToClimateMonth1",2258}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 773 "../tests/keys" - {"extractDateTimeEnd",768}, - {""}, {""}, {""}, -#line 1873 "../tests/keys" - {"secondaryBitMap",1868}, - {""}, {""}, {""}, {""}, {""}, -#line 2302 "../tests/keys" - {"xDirectionGridLengthInMetres",2297}, - {""}, {""}, {""}, -#line 2044 "../tests/keys" - {"subLocalDefinition2",2039}, -#line 887 "../tests/keys" - {"gts_TTAAii",882}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1627 "../tests/keys" - {"presentWeather2Present",1622}, - {""}, {""}, {""}, -#line 2295 "../tests/keys" - {"windVariableDirectionTrend2",2290}, - {""}, -#line 940 "../tests/keys" - {"inputOverriddenReferenceValues",935}, - {""}, {""}, {""}, -#line 497 "../tests/keys" - {"cloudsTitle3Trend3",492}, - {""}, {""}, -#line 1601 "../tests/keys" - {"physicalFlag1",1596}, - {""}, {""}, {""}, {""}, -#line 1101 "../tests/keys" - {"localLongitude2",1096}, - {""}, -#line 389 "../tests/keys" - {"changeIndicatorTrend2",384}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 157 "../tests/keys" - {"Model_Identifier",152}, - {""}, {""}, {""}, {""}, +#line 336 "../tests/keys" + {"beginDayTrend2",331}, +#line 1453 "../tests/keys" + {"oceanAtmosphereCoupling",1448}, +#line 606 "../tests/keys" + {"correction4",601}, #line 2303 "../tests/keys" - {"xDirectionGridLengthInMillimetres",2298}, -#line 1369 "../tests/keys" - {"numberOfModeOfDistribution",1364}, -#line 2227 "../tests/keys" - {"variationOfVisibilityDirectionTrend2",2222}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 688 "../tests/keys" - {"efas_post_proc",683}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"windDirectionTrend1",2298}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 838 "../tests/keys" + {"fileConsistencyFlags",833}, {""}, -#line 614 "../tests/keys" - {"dateOfModelVersion",609}, - {""}, -#line 1455 "../tests/keys" - {"offsetSection6",1450}, - {""}, {""}, -#line 2106 "../tests/keys" - {"timeOfModelVersion",2101}, -#line 278 "../tests/keys" - {"addEmptySection2",273}, -#line 1027 "../tests/keys" - {"latitudeOfSouthEastCornerOfArea",1022}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1079 "../tests/keys" - {"listOfEnsembleForecastNumbers",1074}, - {""}, -#line 1841 "../tests/keys" - {"scaledValueOfMajorAxisOfOblateSpheroidEarth",1836}, - {""}, {""}, {""}, {""}, -#line 1783 "../tests/keys" - {"runwayFrictionCodeValueState1",1778}, +#line 958 "../tests/keys" + {"indicatorOfUnitForTimeIncrement",953}, +#line 920 "../tests/keys" + {"heightPressureEtcOfLevels",915}, {""}, {""}, {""}, -#line 1208 "../tests/keys" - {"md5Section10",1203}, -#line 1446 "../tests/keys" - {"offsetICEFieldsUsed",1441}, -#line 1916 "../tests/keys" - {"section6Length",1911}, - {""}, {""}, {""}, {""}, -#line 178 "../tests/keys" - {"NUT",173}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 2217 "../tests/keys" - {"uuidOfHGrid",2212}, - {""}, {""}, -#line 1786 "../tests/keys" - {"runwayFrictionCodeValueState4",1781}, - {""}, {""}, -#line 274 "../tests/keys" - {"_leg_number",269}, - {""}, {""}, {""}, -#line 2318 "../tests/keys" - {"yearOfModelVersion",2313}, +#line 1821 "../tests/keys" + {"runwayFrictionCoefficientState2",1816}, {""}, {""}, {""}, {""}, {""}, -#line 1193 "../tests/keys" - {"matchAerosolBinNumber",1188}, +#line 799 "../tests/keys" + {"extractDateTimeHourEnd",794}, + {""}, {""}, +#line 1759 "../tests/keys" + {"reservedSection2",1754}, +#line 22 "../tests/keys" + {"BOX",17}, + {""}, {""}, {""}, +#line 2192 "../tests/keys" + {"typeOfSSTFieldUsed",2187}, + {""}, {""}, {""}, {""}, {""}, +#line 157 "../tests/keys" + {"METAR",152}, + {""}, +#line 1924 "../tests/keys" + {"section2Length",1919}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1391 "../tests/keys" + {"numberOfMissing",1386}, +#line 904 "../tests/keys" + {"groupInternalNodeK",899}, + {""}, {""}, +#line 1404 "../tests/keys" + {"numberOfPointsAlongAMeridian",1399}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 190 "../tests/keys" + {"NUT",185}, + {""}, {""}, {""}, {""}, +#line 2296 "../tests/keys" + {"westernLongitudeOfClusterDomain",2291}, + {""}, +#line 1006 "../tests/keys" + {"isectionNumber2",1001}, +#line 2073 "../tests/keys" + {"subLocalDefinition2",2068}, +#line 849 "../tests/keys" + {"flagForIrregularGridCoordinateList",844}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 772 "../tests/keys" - {"extractDateTimeDayStart",767}, +#line 1919 "../tests/keys" + {"section11Pointer",1914}, + {""}, +#line 2332 "../tests/keys" + {"xDirectionGridLengthInMetres",2327}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1638 "../tests/keys" + {"postAuxiliaryArrayPresent",1633}, + {""}, {""}, +#line 2284 "../tests/keys" + {"visibilityInKilometresTrend1",2279}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1591 "../tests/keys" - {"patch_precip_fp",1586}, -#line 1388 "../tests/keys" - {"numberOfPointsUsed",1383}, - {""}, {""}, {""}, {""}, -#line 2045 "../tests/keys" - {"subLocalDefinitionLength1",2040}, +#line 873 "../tests/keys" + {"g1conceptsLocalDirAll",868}, +#line 11 "../tests/keys" + {"AA",6}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 390 "../tests/keys" - {"changeIndicatorTrend3",385}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 624 "../tests/keys" - {"dayOfModelVersion",619}, +#line 793 "../tests/keys" + {"extractAreaSouthLatitude",788}, {""}, -#line 1444 "../tests/keys" - {"offsetFromOriginToInnerBound",1439}, - {""}, {""}, -#line 1110 "../tests/keys" - {"localUsePresent",1105}, +#line 1471 "../tests/keys" + {"offsetEndSection4",1466}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1109 "../tests/keys" - {"localTablesVersionNumber",1104}, - {""}, {""}, -#line 2228 "../tests/keys" - {"variationOfVisibilityDirectionTrend3",2223}, +#line 326 "../tests/keys" + {"backgroundGeneratingProcessIdentifier",321}, +#line 2304 "../tests/keys" + {"windDirectionTrend2",2299}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 404 "../tests/keys" + {"centreForTable2",399}, + {""}, +#line 2340 "../tests/keys" + {"yDirectionGridLengthInMillimetres",2335}, +#line 2318 "../tests/keys" + {"windUnits",2313}, + {""}, {""}, {""}, {""}, +#line 1800 "../tests/keys" + {"runwayDesignatorState1",1795}, +#line 1944 "../tests/keys" + {"section6",1939}, {""}, {""}, {""}, -#line 544 "../tests/keys" - {"constantAntennaElevationAngle",539}, +#line 2071 "../tests/keys" + {"subDefinitions2",2066}, +#line 1763 "../tests/keys" + {"resolutionAndComponentFlags1",1758}, + {""}, +#line 721 "../tests/keys" + {"endDayTrend3",716}, {""}, {""}, -#line 638 "../tests/keys" - {"default_step_units",633}, +#line 2285 "../tests/keys" + {"visibilityInKilometresTrend2",2280}, + {""}, +#line 1784 "../tests/keys" + {"runwayDepositState1",1779}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 264 "../tests/keys" + {"WRAPstr",259}, + {""}, {""}, {""}, +#line 722 "../tests/keys" + {"endDayTrend4",717}, + {""}, {""}, {""}, {""}, +#line 1043 "../tests/keys" + {"latitudeOfCentralPointInClusterDomain",1038}, + {""}, +#line 1329 "../tests/keys" + {"numberInTheGridCoordinateList",1324}, + {""}, {""}, +#line 1426 "../tests/keys" + {"numberOfSingularVectorsComputed",1421}, + {""}, {""}, {""}, {""}, +#line 844 "../tests/keys" + {"firstMonthUsedToBuildClimateMonth1",839}, + {""}, {""}, {""}, {""}, +#line 517 "../tests/keys" + {"cloudsTitle2Trend3",512}, + {""}, {""}, +#line 1812 "../tests/keys" + {"runwayFrictionCodeValueState1",1807}, + {""}, {""}, +#line 25 "../tests/keys" + {"BufrTemplate",20}, +#line 1125 "../tests/keys" + {"localLongitude1",1120}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 1697 "../tests/keys" + {"qnhUnits",1692}, + {""}, +#line 1801 "../tests/keys" + {"runwayDesignatorState2",1796}, + {""}, {""}, {""}, {""}, {""}, +#line 1764 "../tests/keys" + {"resolutionAndComponentFlags2",1759}, +#line 1344 "../tests/keys" + {"numberOfClusterHighResolution",1339}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 906 "../tests/keys" - {"hourOfModelVersion",901}, +#line 2164 "../tests/keys" + {"tsectionNumber3",2159}, + {""}, {""}, {""}, {""}, {""}, +#line 1007 "../tests/keys" + {"isectionNumber3",1002}, + {""}, {""}, {""}, +#line 2333 "../tests/keys" + {"xDirectionGridLengthInMillimetres",2328}, + {""}, {""}, {""}, +#line 1016 "../tests/keys" + {"jDirectionIncrementInDegrees",1011}, +#line 1230 "../tests/keys" + {"md5Headers",1225}, +#line 1360 "../tests/keys" + {"numberOfDaysInClimateSamplingWindow",1355}, +#line 1244 "../tests/keys" + {"meanRVR1",1239}, +#line 1077 "../tests/keys" + {"lengthIncrementForTheGroupLengths",1072}, +#line 1405 "../tests/keys" + {"numberOfPointsAlongAParallel",1400}, + {""}, {""}, +#line 845 "../tests/keys" + {"firstMonthUsedToBuildClimateMonth2",840}, + {""}, {""}, +#line 2058 "../tests/keys" + {"stepRangeInHours",2053}, + {""}, {""}, {""}, {""}, +#line 1813 "../tests/keys" + {"runwayFrictionCodeValueState2",1808}, + {""}, {""}, {""}, {""}, +#line 1609 "../tests/keys" + {"parameterUnits",1604}, + {""}, +#line 1119 "../tests/keys" + {"localFlagLatestVersion",1114}, + {""}, {""}, +#line 519 "../tests/keys" + {"cloudsTitle3",514}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1918 "../tests/keys" + {"section11Length",1913}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 524 "../tests/keys" + {"cloudsTitle4",519}, +#line 2274 "../tests/keys" + {"versionNumberOfGribLocalTables",2269}, + {""}, {""}, {""}, {""}, +#line 1785 "../tests/keys" + {"runwayDepositState2",1780}, +#line 1640 "../tests/keys" + {"preBitmapValues",1635}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2261 "../tests/keys" - {"visibilityTrend4",2256}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1822 "../tests/keys" + {"runwayFrictionCoefficientState3",1817}, +#line 1424 "../tests/keys" + {"numberOfSecondOrderPackedValues",1419}, {""}, -#line 1752 "../tests/keys" - {"runwayDepositCodeState2",1747}, +#line 1512 "../tests/keys" + {"orderOfSpatialDifferencing",1507}, + {""}, {""}, +#line 1667 "../tests/keys" + {"pressureUnits",1662}, + {""}, {""}, {""}, {""}, +#line 1407 "../tests/keys" + {"numberOfPointsAlongSecondAxis",1402}, + {""}, {""}, {""}, +#line 2028 "../tests/keys" + {"spaceUnitFlag",2023}, +#line 1333 "../tests/keys" + {"numberOfBits",1328}, +#line 848 "../tests/keys" + {"flagForAnyFurtherInformation",843}, +#line 518 "../tests/keys" + {"cloudsTitle2Trend4",513}, + {""}, {""}, {""}, +#line 1931 "../tests/keys" + {"section3Length",1926}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 2076 "../tests/keys" + {"subLocalDefinitionNumber1",2071}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 581 "../tests/keys" + {"coordinate2End",576}, + {""}, {""}, {""}, +#line 1146 "../tests/keys" + {"longitudeOfFirstDiamondCenterLine",1141}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 1147 "../tests/keys" + {"longitudeOfFirstDiamondCenterLineInDegrees",1142}, +#line 776 "../tests/keys" + {"expandedUnits",771}, + {""}, {""}, +#line 1478 "../tests/keys" + {"offsetSection10",1473}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2219 "../tests/keys" + {"unitOfTimeRange",2214}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1649 "../tests/keys" + {"presentTrend3",1644}, + {""}, {""}, +#line 1245 "../tests/keys" + {"meanRVR2",1240}, +#line 535 "../tests/keys" + {"clusterMember5",530}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1699 "../tests/keys" + {"qualityControlIndicator",1694}, +#line 1467 "../tests/keys" + {"offsetBeforeData",1462}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 851 "../tests/keys" + {"flagShowingPostAuxiliaryArrayInUse",846}, + {""}, {""}, +#line 1223 "../tests/keys" + {"matrixBitmapsPresent",1218}, + {""}, {""}, {""}, {""}, {""}, +#line 215 "../tests/keys" + {"P_INST",210}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 549 "../tests/keys" + {"codedNumberOfFirstOrderPackedValues",544}, + {""}, {""}, +#line 1978 "../tests/keys" + {"section_5",1973}, + {""}, {""}, {""}, {""}, +#line 1264 "../tests/keys" + {"minuteOfEndOfOverallTimeInterval",1259}, +#line 1823 "../tests/keys" + {"runwayFrictionCoefficientState4",1818}, + {""}, {""}, +#line 2074 "../tests/keys" + {"subLocalDefinitionLength1",2069}, {""}, +#line 1896 "../tests/keys" + {"secondOfEndOfOverallTimeInterval",1891}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 42 "../tests/keys" + {"DjInMetres",37}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1936 "../tests/keys" + {"section4Length",1931}, +#line 2286 "../tests/keys" + {"visibilityInKilometresTrend3",2281}, + {""}, {""}, +#line 510 "../tests/keys" + {"cloudsTitle1Trend1",505}, +#line 1392 "../tests/keys" + {"numberOfMissingInStatisticalProcess",1387}, + {""}, +#line 1018 "../tests/keys" + {"jPointsAreConsecutive",1013}, + {""}, {""}, +#line 1949 "../tests/keys" + {"section7Length",1944}, + {""}, {""}, +#line 2077 "../tests/keys" + {"subLocalDefinitionNumber2",2072}, +#line 525 "../tests/keys" + {"cloudsTitle4Trend1",520}, + {""}, {""}, {""}, {""}, +#line 1693 "../tests/keys" + {"qfeUnits",1688}, + {""}, {""}, {""}, {""}, {""}, +#line 2315 "../tests/keys" + {"windSpeedTrend2",2310}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1967 "../tests/keys" + {"section_05",1962}, + {""}, {""}, {""}, {""}, {""}, +#line 1269 "../tests/keys" + {"minutesAfterReferenceTimeOfDataCutoff",1264}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1802 "../tests/keys" + {"runwayDesignatorState3",1797}, + {""}, {""}, {""}, {""}, {""}, +#line 1765 "../tests/keys" + {"resolutionAndComponentFlags3",1760}, + {""}, {""}, {""}, {""}, {""}, +#line 1884 "../tests/keys" + {"scanningMode5",1879}, +#line 588 "../tests/keys" + {"coordinate4OfFirstGridPoint",583}, +#line 511 "../tests/keys" + {"cloudsTitle1Trend2",506}, + {""}, {""}, +#line 1154 "../tests/keys" + {"longitudeOfReferencePoint",1149}, +#line 730 "../tests/keys" + {"endMinuteTrend1",725}, +#line 1907 "../tests/keys" + {"secondaryBitmapsSize",1902}, + {""}, +#line 2324 "../tests/keys" + {"windVariableDirectionTrend1",2319}, + {""}, {""}, +#line 526 "../tests/keys" + {"cloudsTitle4Trend2",521}, +#line 912 "../tests/keys" + {"gts_TTAAii",907}, + {""}, +#line 1481 "../tests/keys" + {"offsetSection3",1476}, + {""}, +#line 2010 "../tests/keys" + {"sizeOfPostAuxiliaryArrayPlusOne",2005}, + {""}, +#line 1406 "../tests/keys" + {"numberOfPointsAlongFirstAxis",1401}, + {""}, {""}, +#line 213 "../tests/keys" + {"PUnset",208}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 1814 "../tests/keys" + {"runwayFrictionCodeValueState3",1809}, + {""}, +#line 649 "../tests/keys" + {"dayOfModelVersion",644}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1355 "../tests/keys" + {"numberOfDataBinsAlongRadials",1350}, +#line 2075 "../tests/keys" + {"subLocalDefinitionLength2",2070}, + {""}, {""}, {""}, {""}, {""}, +#line 1945 "../tests/keys" + {"section6Length",1940}, + {""}, {""}, {""}, +#line 520 "../tests/keys" + {"cloudsTitle3Trend1",515}, +#line 337 "../tests/keys" + {"beginDayTrend3",332}, + {""}, {""}, +#line 2287 "../tests/keys" + {"visibilityInKilometresTrend4",2282}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 409 "../tests/keys" + {"cfNameECMF",404}, #line 8 "../tests/keys" {"************_PRODUCT_***************",3}, -#line 199 "../tests/keys" - {"P_INST",194}, + {""}, {""}, {""}, {""}, +#line 1149 "../tests/keys" + {"longitudeOfFirstGridPointInDegrees",1144}, {""}, -#line 825 "../tests/keys" - {"flagForNormalOrStaggeredGrid",820}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1465 "../tests/keys" + {"offsetBSection9",1460}, +#line 642 "../tests/keys" + {"dateSSTFieldUsed",637}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1183 "../tests/keys" + {"marsClass1",1178}, +#line 585 "../tests/keys" + {"coordinate3OfFirstGridPoint",580}, + {""}, {""}, +#line 1650 "../tests/keys" + {"presentTrend4",1645}, +#line 1803 "../tests/keys" + {"runwayDesignatorState4",1798}, {""}, {""}, {""}, {""}, {""}, -#line 1450 "../tests/keys" - {"offsetSection11",1445}, -#line 2245 "../tests/keys" - {"versionNumberOfSuperblock",2240}, +#line 1766 "../tests/keys" + {"resolutionAndComponentFlags4",1761}, +#line 521 "../tests/keys" + {"cloudsTitle3Trend2",516}, {""}, {""}, {""}, {""}, {""}, -#line 1809 "../tests/keys" - {"scaleFactorOfEarthMajorAxis",1804}, -#line 1810 "../tests/keys" - {"scaleFactorOfEarthMinorAxis",1805}, -#line 584 "../tests/keys" - {"countOfGroupLengths",579}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1358 "../tests/keys" - {"numberOfHorizontalPoints",1353}, -#line 277 "../tests/keys" - {"accuracyMultipliedByFactor",272}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1436 "../tests/keys" + {"numberOfUsedTileAttributes",1431}, + {""}, {""}, +#line 1768 "../tests/keys" + {"resolutionAndComponentFlags7",1763}, + {""}, {""}, +#line 530 "../tests/keys" + {"clusterMember1",525}, {""}, {""}, {""}, -#line 2296 "../tests/keys" - {"windVariableDirectionTrend3",2291}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2316 "../tests/keys" + {"windSpeedTrend3",2311}, + {""}, {""}, {""}, +#line 2325 "../tests/keys" + {"windVariableDirectionTrend2",2320}, #line 34 "../tests/keys" {"DayOfModelVersion",29}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 981 "../tests/keys" - {"isectionNumber2",976}, -#line 1142 "../tests/keys" - {"longitudeOfTheSouthernPoleOfProjection",1137}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1784 "../tests/keys" - {"runwayFrictionCodeValueState2",1779}, -#line 989 "../tests/keys" - {"jDirectionIncrementGiven",984}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1949 "../tests/keys" - {"section_5",1944}, -#line 367 "../tests/keys" - {"ceilingAndVisibilityOK",362}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 507 "../tests/keys" - {"clusterMember2",502}, +#line 1433 "../tests/keys" + {"numberOfUnexpandedDescriptors",1428}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1938 "../tests/keys" - {"section_05",1933}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 22 "../tests/keys" - {"BOX",17}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1025 "../tests/keys" - {"latitudeOfReferencePoint",1020}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1795 "../tests/keys" - {"runwaySideCodeState1",1790}, - {""}, -#line 1943 "../tests/keys" - {"section_1",1938}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 474 "../tests/keys" - {"cloudsCode3",469}, - {""}, {""}, {""}, {""}, -#line 354 "../tests/keys" - {"bufrdcExpandedDescriptors",349}, - {""}, -#line 1434 "../tests/keys" - {"offsetBSection5",1429}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1633 "../tests/keys" - {"presentWeather3PresentTrend1",1628}, - {""}, -#line 709 "../tests/keys" - {"endMonthTrend1",704}, +#line 1489 "../tests/keys" + {"offsetValuesBy",1484}, +#line 1408 "../tests/keys" + {"numberOfPointsAlongTheXAxis",1403}, +#line 1815 "../tests/keys" + {"runwayFrictionCodeValueState4",1810}, {""}, {""}, {""}, {""}, {""}, -#line 1934 "../tests/keys" - {"section_01",1929}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 85 "../tests/keys" - {"HDF5",80}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1798 "../tests/keys" - {"runwaySideCodeState4",1793}, -#line 1636 "../tests/keys" - {"presentWeather3PresentTrend4",1631}, -#line 1948 "../tests/keys" - {"section_4",1943}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 1785 "../tests/keys" - {"runwayFrictionCodeValueState3",1780}, +#line 2199 "../tests/keys" + {"typeOfWavelengthInterval",2194}, {""}, -#line 1602 "../tests/keys" - {"physicalFlag2",1597}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1981 "../tests/keys" - {"sizeOfPostAuxiliaryArrayPlusOne",1976}, - {""}, -#line 712 "../tests/keys" - {"endMonthTrend4",707}, -#line 404 "../tests/keys" - {"cloudsAbbreviation1",399}, - {""}, {""}, {""}, {""}, -#line 1937 "../tests/keys" - {"section_04",1932}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 338 "../tests/keys" - {"beginYearTrend4",333}, - {""}, {""}, -#line 848 "../tests/keys" - {"g1conceptsLocalDirAll",843}, - {""}, {""}, -#line 166 "../tests/keys" - {"NC1",161}, - {""}, -#line 2181 "../tests/keys" - {"typicalYearOfCentury",2176}, - {""}, {""}, {""}, {""}, -#line 1293 "../tests/keys" - {"northWestLongitudeOfLPOArea",1288}, - {""}, {""}, {""}, {""}, {""}, -#line 263 "../tests/keys" - {"YRInMetres",258}, -#line 1753 "../tests/keys" - {"runwayDepositCodeState3",1748}, - {""}, -#line 1290 "../tests/keys" - {"northLatitudeOfDomainOfTubing",1285}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 681 "../tests/keys" - {"eastLongitudeOfDomainOfTubing",676}, - {""}, -#line 419 "../tests/keys" - {"cloudsAbbreviation4",414}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 2265 "../tests/keys" - {"westLongitudeOfDomainOfTubing",2260}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1310 "../tests/keys" - {"numberOfBitsForScaledGroupLengths",1305}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1984 "../tests/keys" - {"skipExtraKeyAttributes",1979}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2110 "../tests/keys" - {"timeUnitFlag",2105}, +#line 494 "../tests/keys" + {"cloudsCode2",489}, {""}, {""}, {""}, -#line 1992 "../tests/keys" - {"southLatitudeOfDomainOfTubing",1987}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1972 "../tests/keys" + {"section_1",1967}, {""}, -#line 1572 "../tests/keys" - {"paramIdECMF",1567}, -#line 2046 "../tests/keys" - {"subLocalDefinitionLength2",2041}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 156 "../tests/keys" - {"Model_Additional_Information",151}, - {""}, {""}, {""}, -#line 1929 "../tests/keys" - {"section9UniqueIdentifier",1924}, - {""}, {""}, {""}, {""}, {""}, -#line 508 "../tests/keys" - {"clusterMember3",503}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1590 "../tests/keys" - {"pastTendencyRVR4",1585}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 2000 "../tests/keys" - {"spacingOfBinsAlongRadials",1995}, - {""}, {""}, {""}, {""}, -#line 1842 "../tests/keys" - {"scaledValueOfMinorAxisOfOblateSpheroidEarth",1837}, +#line 1846 "../tests/keys" + {"scaleFactorOfMajorAxisOfOblateSpheroidEarth",1841}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1634 "../tests/keys" - {"presentWeather3PresentTrend2",1629}, - {""}, {""}, {""}, {""}, {""}, -#line 958 "../tests/keys" - {"isCavokTrend1",953}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1747 "../tests/keys" + {"reflectivityCalibrationConstant",1742}, +#line 86 "../tests/keys" + {"HDF5str",81}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2305 "../tests/keys" + {"windDirectionTrend3",2300}, + {""}, {""}, +#line 2056 "../tests/keys" + {"stepInHours",2051}, + {""}, {""}, {""}, +#line 1048 "../tests/keys" + {"latitudeOfLastGridPointInDegrees",1043}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 168 "../tests/keys" - {"NEAREST",163}, -#line 2243 "../tests/keys" - {"versionNumberOfExperimentalSuite",2238}, +#line 1415 "../tests/keys" + {"numberOfPointsUsed",1410}, +#line 1353 "../tests/keys" + {"numberOfControlForecastTube",1348}, +#line 2256 "../tests/keys" + {"variationOfVisibilityDirectionTrend1",2251}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 745 "../tests/keys" + {"endStepInHours",740}, + {""}, {""}, {""}, +#line 294 "../tests/keys" + {"addEmptySection2",289}, + {""}, {""}, +#line 1728 "../tests/keys" + {"recentWeatherTry",1723}, + {""}, {""}, {""}, {""}, {""}, +#line 1963 "../tests/keys" + {"section_01",1958}, {""}, +#line 1234 "../tests/keys" + {"md5Section2",1229}, + {""}, {""}, {""}, {""}, #line 1767 "../tests/keys" - {"runwayDesignatorRVR1",1762}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1899 "../tests/keys" - {"section2Used",1894}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 230 "../tests/keys" - {"Threshold_Or_Distribution_0_no_1_yes",225}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 771 "../tests/keys" - {"extractDateTimeDayRank",766}, -#line 961 "../tests/keys" - {"isCavokTrend4",956}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 1077 "../tests/keys" - {"listOfContributingSpectralBands",1072}, - {""}, {""}, -#line 1850 "../tests/keys" - {"scaledValueOfUpperLimit",1845}, + {"resolutionAndComponentFlags6",1762}, {""}, -#line 1376 "../tests/keys" - {"numberOfParametersUsedForClustering",1371}, - {""}, {""}, {""}, {""}, {""}, -#line 1770 "../tests/keys" - {"runwayDesignatorRVR4",1765}, - {""}, -#line 1210 "../tests/keys" - {"md5Section3",1205}, - {""}, {""}, {""}, {""}, {""}, -#line 1872 "../tests/keys" - {"secondOrderValuesDifferentWidths",1867}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 327 "../tests/keys" - {"beginMinuteTrend1",322}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1507 "../tests/keys" - {"padding_grid90_1",1502}, +#line 1184 "../tests/keys" + {"marsClass2",1179}, {""}, {""}, -#line 677 "../tests/keys" - {"earthMajorAxisInMetres",672}, - {""}, {""}, -#line 2258 "../tests/keys" - {"visibilityTrend1",2253}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1838 "../tests/keys" + {"scaleFactorOfEarthMajorAxis",1833}, {""}, {""}, {""}, {""}, -#line 330 "../tests/keys" - {"beginMinuteTrend4",325}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1961 "../tests/keys" - {"setToMissingIfOutOfRange",1956}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 706 "../tests/keys" - {"endMinuteTrend2",701}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 560 "../tests/keys" - {"coordinate3OfFirstGridPoint",555}, - {""}, {""}, {""}, {""}, {""}, -#line 1635 "../tests/keys" - {"presentWeather3PresentTrend3",1630}, - {""}, {""}, {""}, {""}, -#line 325 "../tests/keys" - {"beginHourTrend3",320}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1389 "../tests/keys" - {"numberOfPressureLevelsUsedForClustering",1384}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1439 "../tests/keys" - {"offsetBeforePL",1434}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1076 "../tests/keys" - {"listMembersUsed4",1071}, -#line 901 "../tests/keys" - {"horizontalDomainTemplateNumber",896}, - {""}, {""}, -#line 2292 "../tests/keys" - {"windUnitsTrend4",2287}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 384 "../tests/keys" - {"cfNameECMF",379}, - {""}, {""}, -#line 1796 "../tests/keys" - {"runwaySideCodeState2",1791}, - {""}, -#line 1946 "../tests/keys" - {"section_2",1941}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 2242 "../tests/keys" - {"versionNumOfSharedHeaderMessageFormat",2237}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 439 "../tests/keys" - {"cloudsBase4",434}, - {""}, -#line 710 "../tests/keys" - {"endMonthTrend2",705}, - {""}, -#line 55 "../tests/keys" - {"Ensemble_Combination_Number",50}, - {""}, {""}, {""}, -#line 1935 "../tests/keys" - {"section_02",1930}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 2047 "../tests/keys" - {"subLocalDefinitionNumber1",2042}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 2259 "../tests/keys" - {"visibilityTrend2",2254}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 409 "../tests/keys" - {"cloudsAbbreviation2",404}, - {""}, {""}, {""}, {""}, -#line 1623 "../tests/keys" - {"presentWeather1PresentTrend1",1618}, - {""}, {""}, {""}, {""}, -#line 323 "../tests/keys" - {"beginHourTrend1",318}, - {""}, {""}, {""}, -#line 286 "../tests/keys" - {"altitudeOfTheCameraFromTheEarthSCenterMeasuredInUnitsOfTheEarth",281}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 170 "../tests/keys" - {"NH",165}, -#line 167 "../tests/keys" - {"NC2",162}, - {""}, {""}, {""}, -#line 1626 "../tests/keys" - {"presentWeather1PresentTrend4",1621}, - {""}, -#line 1926 "../tests/keys" - {"section8UniqueIdentifier",1921}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 819 "../tests/keys" - {"firstMonthUsedToBuildClimateMonth1",814}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 328 "../tests/keys" - {"beginMinuteTrend2",323}, - {""}, -#line 169 "../tests/keys" - {"NG",164}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 460 "../tests/keys" - {"cloudsBaseCoded4Trend1",455}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1594 "../tests/keys" - {"pentagonalResolutionParameterM",1589}, - {""}, -#line 459 "../tests/keys" - {"cloudsBaseCoded4",454}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 990 "../tests/keys" - {"jDirectionIncrementGridLength",985}, -#line 463 "../tests/keys" - {"cloudsBaseCoded4Trend4",458}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 26 "../tests/keys" - {"CCCC",21}, -#line 1072 "../tests/keys" - {"listMembersMissing4",1067}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 480 "../tests/keys" - {"cloudsCode4Trend1",475}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 483 "../tests/keys" - {"cloudsCode4Trend4",478}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1671 "../tests/keys" - {"qualityValueAssociatedWithParameter",1666}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 352 "../tests/keys" - {"bufrHeaderSubCentre",347}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1008 "../tests/keys" - {"laplacianScalingFactorUnset",1003}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 867 "../tests/keys" - {"gribMasterTablesVersionNumber",862}, - {""}, {""}, {""}, {""}, -#line 551 "../tests/keys" - {"coordAveraging3",546}, - {""}, {""}, -#line 959 "../tests/keys" - {"isCavokTrend2",954}, - {""}, {""}, {""}, -#line 329 "../tests/keys" - {"beginMinuteTrend3",324}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 94 "../tests/keys" - {"INBITS",89}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 258 "../tests/keys" - {"Y1",253}, - {""}, {""}, -#line 1768 "../tests/keys" - {"runwayDesignatorRVR2",1763}, - {""}, {""}, {""}, {""}, {""}, -#line 1742 "../tests/keys" - {"rootGroupSymbolTableEntry",1737}, -#line 1435 "../tests/keys" - {"offsetBSection6",1430}, -#line 700 "../tests/keys" - {"endHourTrend1",695}, - {""}, {""}, -#line 1833 "../tests/keys" - {"scaledValueOfEarthMajorAxis",1828}, -#line 1834 "../tests/keys" - {"scaledValueOfEarthMinorAxis",1829}, - {""}, {""}, -#line 1797 "../tests/keys" - {"runwaySideCodeState3",1792}, - {""}, -#line 1947 "../tests/keys" - {"section_3",1942}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1624 "../tests/keys" - {"presentWeather1PresentTrend2",1619}, - {""}, {""}, -#line 1301 "../tests/keys" - {"numberInHorizontalCoordinates",1296}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 711 "../tests/keys" - {"endMonthTrend3",706}, -#line 1587 "../tests/keys" - {"pastTendencyRVR1",1582}, - {""}, {""}, {""}, {""}, -#line 1936 "../tests/keys" - {"section_03",1931}, -#line 2278 "../tests/keys" - {"windGustTrend1",2273}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 202 "../tests/keys" - {"Product_Identifier",197}, - {""}, {""}, -#line 703 "../tests/keys" - {"endHourTrend4",698}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 820 "../tests/keys" - {"firstMonthUsedToBuildClimateMonth2",815}, - {""}, {""}, {""}, {""}, {""}, -#line 1383 "../tests/keys" - {"numberOfPointsAlongTheXAxis",1378}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 414 "../tests/keys" - {"cloudsAbbreviation3",409}, - {""}, {""}, {""}, {""}, -#line 461 "../tests/keys" - {"cloudsBaseCoded4Trend2",456}, -#line 2281 "../tests/keys" - {"windGustTrend4",2276}, - {""}, {""}, {""}, -#line 1026 "../tests/keys" - {"latitudeOfReferencePointInDegrees",1021}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1368 "../tests/keys" - {"numberOfMissingValues",1363}, - {""}, {""}, {""}, {""}, {""}, -#line 511 "../tests/keys" - {"clusterMember6",506}, - {""}, {""}, {""}, {""}, -#line 549 "../tests/keys" - {"coordAveraging1",544}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 481 "../tests/keys" - {"cloudsCode4Trend2",476}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 363 "../tests/keys" - {"ccsdsBlockSize",358}, -#line 1592 "../tests/keys" - {"pentagonalResolutionParameterJ",1587}, - {""}, -#line 1856 "../tests/keys" - {"scanningMode6",1851}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1625 "../tests/keys" - {"presentWeather1PresentTrend3",1620}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 30 "../tests/keys" - {"DELETE",25}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 192 "../tests/keys" - {"Original_Parameter_Identifier",187}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1588 "../tests/keys" - {"pastTendencyRVR2",1583}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1314 "../tests/keys" - {"numberOfBytesOfFreeFormatData",1309}, - {""}, {""}, -#line 2244 "../tests/keys" - {"versionNumberOfGribLocalTables",2239}, - {""}, {""}, -#line 50 "../tests/keys" - {"ECMWF",45}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 2048 "../tests/keys" - {"subLocalDefinitionNumber2",2043}, - {""}, -#line 462 "../tests/keys" - {"cloudsBaseCoded4Trend3",457}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 2230 "../tests/keys" - {"variationOfVisibilityTrend1",2225}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 482 "../tests/keys" - {"cloudsCode4Trend3",477}, -#line 960 "../tests/keys" - {"isCavokTrend3",955}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1440 "../tests/keys" - {"offsetBeforePV",1435}, - {""}, {""}, {""}, -#line 2233 "../tests/keys" - {"variationOfVisibilityTrend4",2228}, - {""}, -#line 1769 "../tests/keys" - {"runwayDesignatorRVR3",1764}, - {""}, {""}, {""}, {""}, -#line 424 "../tests/keys" - {"cloudsBase1",419}, - {""}, {""}, {""}, {""}, {""}, -#line 1070 "../tests/keys" - {"listMembersMissing2",1065}, - {""}, {""}, {""}, -#line 770 "../tests/keys" - {"extractDateTimeDayEnd",765}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 285 "../tests/keys" - {"alternativeRowScanning",280}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 450 "../tests/keys" - {"cloudsBaseCoded2Trend1",445}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 453 "../tests/keys" - {"cloudsBaseCoded2Trend4",448}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 909 "../tests/keys" - {"hoursAfterReferenceTimeOfDataCutoff",904}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 337 "../tests/keys" - {"beginYearTrend3",332}, - {""}, {""}, -#line 470 "../tests/keys" - {"cloudsCode2Trend1",465}, - {""}, -#line 1074 "../tests/keys" - {"listMembersUsed2",1069}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 368 "../tests/keys" - {"ceilingAndVisibilityOKTrend1",363}, - {""}, -#line 444 "../tests/keys" - {"cloudsBaseCoded1",439}, -#line 2180 "../tests/keys" - {"typicalYear2",2175}, - {""}, {""}, {""}, {""}, -#line 473 "../tests/keys" - {"cloudsCode2Trend4",468}, - {""}, {""}, {""}, {""}, -#line 445 "../tests/keys" - {"cloudsBaseCoded1Trend1",440}, -#line 270 "../tests/keys" - {"ZLMULT",265}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1386 "../tests/keys" - {"numberOfPointsAlongYAxis",1381}, - {""}, {""}, -#line 371 "../tests/keys" - {"ceilingAndVisibilityOKTrend4",366}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 448 "../tests/keys" - {"cloudsBaseCoded1Trend4",443}, - {""}, {""}, {""}, {""}, -#line 260 "../tests/keys" - {"Y2",255}, - {""}, {""}, {""}, {""}, {""}, -#line 429 "../tests/keys" - {"cloudsBase2",424}, - {""}, {""}, {""}, {""}, -#line 701 "../tests/keys" - {"endHourTrend2",696}, - {""}, -#line 465 "../tests/keys" - {"cloudsCode1Trend1",460}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 468 "../tests/keys" - {"cloudsCode1Trend4",463}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1779 "../tests/keys" - {"runwayExtentOfContaminationState1",1774}, - {""}, {""}, {""}, -#line 1775 "../tests/keys" - {"runwayExtentOfContaminationCodeState1",1770}, -#line 2279 "../tests/keys" - {"windGustTrend2",2274}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1839 "../tests/keys" + {"scaleFactorOfEarthMinorAxis",1834}, +#line 379 "../tests/keys" + {"bufrdcExpandedDescriptors",374}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 1922 "../tests/keys" - {"section7UniqueIdentifier",1917}, - {""}, {""}, -#line 1782 "../tests/keys" - {"runwayExtentOfContaminationState4",1777}, - {""}, {""}, {""}, -#line 1778 "../tests/keys" - {"runwayExtentOfContaminationCodeState4",1773}, + {"section1Padding",1917}, + {""}, {""}, {""}, {""}, +#line 532 "../tests/keys" + {"clusterMember2",527}, {""}, -#line 1628 "../tests/keys" - {"presentWeather2PresentTrend1",1623}, +#line 1482 "../tests/keys" + {"offsetSection4",1477}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1044 "../tests/keys" + {"latitudeOfFirstGridPoint",1039}, + {""}, {""}, {""}, +#line 2257 "../tests/keys" + {"variationOfVisibilityDirectionTrend2",2252}, + {""}, {""}, +#line 1316 "../tests/keys" + {"northWestLatitudeOfLPOArea",1311}, +#line 702 "../tests/keys" + {"earthMajorAxisInMetres",697}, + {""}, {""}, +#line 1485 "../tests/keys" + {"offsetSection7",1480}, + {""}, +#line 789 "../tests/keys" + {"extractAreaEastLongitude",784}, + {""}, {""}, {""}, +#line 512 "../tests/keys" + {"cloudsTitle1Trend3",507}, + {""}, +#line 1166 "../tests/keys" + {"longitudeOfThePolePointInDegrees",1161}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 527 "../tests/keys" + {"cloudsTitle4Trend3",522}, + {""}, {""}, +#line 1975 "../tests/keys" + {"section_2",1970}, + {""}, {""}, {""}, +#line 338 "../tests/keys" + {"beginDayTrend4",333}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1152 "../tests/keys" + {"longitudeOfLastGridPointInDegrees",1147}, + {""}, {""}, {""}, +#line 178 "../tests/keys" + {"NC1",173}, + {""}, {""}, {""}, +#line 1145 "../tests/keys" + {"longitudeOfCentralPointInClusterDomain",1140}, +#line 1925 "../tests/keys" + {"section2Padding",1920}, + {""}, {""}, {""}, {""}, +#line 780 "../tests/keys" + {"experimentVersionNumberOfAnalysis",775}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1786 "../tests/keys" + {"runwayDepositState3",1781}, + {""}, {""}, {""}, {""}, {""}, +#line 422 "../tests/keys" + {"checkInternalVersion",417}, + {""}, +#line 1964 "../tests/keys" + {"section_02",1959}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 93 "../tests/keys" + {"II",88}, + {""}, {""}, {""}, {""}, +#line 798 "../tests/keys" + {"extractDateTimeEnd",793}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2128 "../tests/keys" + {"timeCoordinateDefinition",2123}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 590 "../tests/keys" + {"coordinateFlag1",585}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 739 "../tests/keys" + {"endOfHeadersMarker",734}, + {""}, {""}, {""}, {""}, {""}, +#line 2308 "../tests/keys" + {"windGustTrend1",2303}, + {""}, {""}, {""}, {""}, +#line 522 "../tests/keys" + {"cloudsTitle3Trend3",517}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 513 "../tests/keys" + {"cloudsTitle1Trend4",508}, + {""}, +#line 343 "../tests/keys" + {"beginMinuteTrend1",338}, + {""}, {""}, +#line 256 "../tests/keys" + {"Total_Number_Members_Used",251}, + {""}, {""}, {""}, {""}, +#line 528 "../tests/keys" + {"cloudsTitle4Trend4",523}, +#line 1318 "../tests/keys" + {"northWestLongitudeOfLPOArea",1313}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 965 "../tests/keys" + {"inputOverriddenReferenceValues",960}, +#line 578 "../tests/keys" + {"coordinate1End",573}, + {""}, {""}, {""}, {""}, +#line 2306 "../tests/keys" + {"windDirectionTrend4",2301}, +#line 1246 "../tests/keys" + {"meanRVR3",1241}, + {""}, {""}, {""}, {""}, +#line 1870 "../tests/keys" + {"scaledValueOfMajorAxisOfOblateSpheroidEarth",1865}, + {""}, {""}, {""}, +#line 179 "../tests/keys" + {"NC2",174}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1327 "../tests/keys" + {"numberInMixedCoordinateDefinition",1322}, +#line 564 "../tests/keys" + {"conceptsMasterDir",559}, + {""}, {""}, {""}, {""}, +#line 1396 "../tests/keys" + {"numberOfOctectsForNumberOfPoints",1391}, + {""}, {""}, {""}, {""}, +#line 1808 "../tests/keys" + {"runwayExtentOfContaminationState1",1803}, + {""}, {""}, {""}, +#line 1804 "../tests/keys" + {"runwayExtentOfContaminationCodeState1",1799}, + {""}, +#line 1063 "../tests/keys" + {"latitudeOfTheSouthernPoleOfProjection",1058}, + {""}, {""}, +#line 796 "../tests/keys" + {"extractDateTimeDayRank",791}, +#line 1126 "../tests/keys" + {"localLongitude2",1121}, + {""}, +#line 344 "../tests/keys" + {"beginMinuteTrend2",339}, +#line 255 "../tests/keys" + {"Total_Number_Members_Possible",250}, + {""}, +#line 1167 "../tests/keys" + {"longitudeOfTheSouthernPoleOfProjection",1162}, + {""}, {""}, {""}, {""}, +#line 1163 "../tests/keys" + {"longitudeOfTangencyPoint",1158}, + {""}, {""}, {""}, {""}, +#line 1180 "../tests/keys" + {"mBasicAngle",1175}, + {""}, {""}, {""}, {""}, {""}, +#line 639 "../tests/keys" + {"dateOfModelVersion",634}, +#line 1484 "../tests/keys" + {"offsetSection6",1479}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2135 "../tests/keys" + {"timeOfModelVersion",2130}, + {""}, {""}, {""}, +#line 1862 "../tests/keys" + {"scaledValueOfEarthMajorAxis",1857}, + {""}, {""}, +#line 2348 "../tests/keys" + {"yearOfModelVersion",2343}, + {""}, +#line 1863 "../tests/keys" + {"scaledValueOfEarthMinorAxis",1858}, + {""}, {""}, {""}, {""}, +#line 1760 "../tests/keys" + {"reservedSection3",1755}, + {""}, {""}, {""}, {""}, +#line 2143 "../tests/keys" + {"totalAerosolBinsNumbers",2138}, + {""}, {""}, {""}, +#line 523 "../tests/keys" + {"cloudsTitle3Trend4",518}, +#line 2309 "../tests/keys" + {"windGustTrend2",2304}, + {""}, +#line 1809 "../tests/keys" + {"runwayExtentOfContaminationState2",1804}, + {""}, {""}, {""}, +#line 1805 "../tests/keys" + {"runwayExtentOfContaminationCodeState2",1800}, +#line 1761 "../tests/keys" + {"reservedSection4",1756}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 1218 "../tests/keys" + {"matchAerosolBinNumber",1213}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 2258 "../tests/keys" + {"variationOfVisibilityDirectionTrend3",2253}, + {""}, {""}, {""}, {""}, {""}, +#line 429 "../tests/keys" + {"cloudsAbbreviation1",424}, +#line 254 "../tests/keys" + {"Total_Number_Members_Missing",249}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 335 "../tests/keys" - {"beginYearTrend1",330}, +#line 96 "../tests/keys" + {"ITERATOR",91}, + {""}, {""}, {""}, +#line 1099 "../tests/keys" + {"listMembersUsed2",1094}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 263 "../tests/keys" + {"WRAP",258}, + {""}, {""}, {""}, {""}, {""}, +#line 1787 "../tests/keys" + {"runwayDepositState4",1782}, +#line 1788 "../tests/keys" + {"runwayDepthOfDepositCodeState1",1783}, + {""}, {""}, {""}, {""}, {""}, +#line 1932 "../tests/keys" + {"section3Padding",1927}, + {""}, {""}, {""}, {""}, {""}, +#line 1135 "../tests/keys" + {"localUsePresent",1130}, + {""}, +#line 1061 "../tests/keys" + {"latitudeOfThePolePoint",1056}, + {""}, {""}, +#line 1021 "../tests/keys" + {"julianForecastDay",1016}, + {""}, {""}, {""}, {""}, +#line 2301 "../tests/keys" + {"widthOfWidths",2296}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 931 "../tests/keys" + {"hourOfModelVersion",926}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 734 "../tests/keys" + {"endMonthTrend1",729}, +#line 1591 "../tests/keys" + {"padding_local_7_1",1586}, + {""}, {""}, +#line 1725 "../tests/keys" + {"realPartOf00",1720}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 1901 "../tests/keys" + {"secondOrderValuesDifferentWidths",1896}, + {""}, {""}, {""}, +#line 531 "../tests/keys" + {"clusterMember10",526}, +#line 1789 "../tests/keys" + {"runwayDepthOfDepositCodeState2",1784}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 2273 "../tests/keys" + {"versionNumberOfExperimentalSuite",2268}, + {""}, +#line 168 "../tests/keys" + {"Model_Additional_Information",163}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 2259 "../tests/keys" + {"variationOfVisibilityDirectionTrend4",2254}, +#line 1247 "../tests/keys" + {"meanRVR4",1242}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 434 "../tests/keys" + {"cloudsAbbreviation2",429}, + {""}, {""}, {""}, +#line 1380 "../tests/keys" + {"numberOfGridUsed",1375}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 489 "../tests/keys" + {"cloudsCode1",484}, + {""}, +#line 2326 "../tests/keys" + {"windVariableDirectionTrend3",2321}, + {""}, +#line 1428 "../tests/keys" + {"numberOfStepsUsedForClustering",1423}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1847 "../tests/keys" + {"scaleFactorOfMinorAxisOfOblateSpheroidEarth",1842}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 2289 "../tests/keys" + {"visibilityTrend2",2284}, + {""}, {""}, {""}, {""}, {""}, +#line 1937 "../tests/keys" + {"section4Padding",1932}, + {""}, {""}, {""}, {""}, +#line 1435 "../tests/keys" + {"numberOfUsedSpatialTiles",1430}, + {""}, {""}, +#line 397 "../tests/keys" + {"centralClusterDefinition",392}, + {""}, {""}, +#line 333 "../tests/keys" + {"baseTimeOfThisLeg",328}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1902 "../tests/keys" + {"secondaryBitMap",1897}, + {""}, {""}, {""}, +#line 331 "../tests/keys" + {"baseDateOfThisLeg",326}, +#line 1340 "../tests/keys" + {"numberOfBytesPerInteger",1335}, + {""}, +#line 729 "../tests/keys" + {"endMark",724}, + {""}, {""}, {""}, {""}, {""}, +#line 345 "../tests/keys" + {"beginMinuteTrend3",340}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1232 "../tests/keys" + {"md5Section1",1227}, + {""}, {""}, +#line 735 "../tests/keys" + {"endMonthTrend2",730}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 2107 "../tests/keys" + {"theHindcastMarsStream",2102}, + {""}, {""}, +#line 1630 "../tests/keys" + {"physicalFlag1",1625}, + {""}, {""}, {""}, {""}, +#line 731 "../tests/keys" + {"endMinuteTrend2",726}, + {""}, {""}, {""}, +#line 674 "../tests/keys" + {"diffInHours",669}, + {""}, {""}, +#line 140 "../tests/keys" + {"Local_Number_Members_Used",135}, + {""}, {""}, {""}, {""}, {""}, +#line 955 "../tests/keys" + {"indexedStorageInternalNodeK",950}, + {""}, {""}, {""}, {""}, +#line 2102 "../tests/keys" + {"tempPressureUnits",2097}, + {""}, {""}, {""}, +#line 2272 "../tests/keys" + {"versionNumOfSharedHeaderMessageFormat",2267}, + {""}, +#line 1810 "../tests/keys" + {"runwayExtentOfContaminationState3",1805}, + {""}, {""}, {""}, +#line 1806 "../tests/keys" + {"runwayExtentOfContaminationCodeState3",1801}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 533 "../tests/keys" + {"clusterMember3",528}, + {""}, +#line 664 "../tests/keys" + {"definitionFilesVersion",659}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1194 "../tests/keys" + {"marsKeywords1",1189}, + {""}, {""}, +#line 136 "../tests/keys" + {"Local_Number_Members_Possible",131}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1976 "../tests/keys" + {"section_3",1971}, + {""}, {""}, +#line 1417 "../tests/keys" + {"numberOfRadarSitesUsed",1412}, + {""}, {""}, {""}, {""}, {""}, +#line 1855 "../tests/keys" + {"scaleFactorOfUpperLimit",1850}, + {""}, {""}, {""}, {""}, {""}, +#line 1383 "../tests/keys" + {"numberOfHorizontalPoints",1378}, + {""}, {""}, +#line 346 "../tests/keys" + {"beginMinuteTrend4",341}, + {""}, +#line 573 "../tests/keys" + {"coordAveraging0",568}, + {""}, {""}, +#line 2157 "../tests/keys" + {"totalNumberOfValuesInUnpackedSubset",2152}, + {""}, {""}, {""}, {""}, +#line 582 "../tests/keys" + {"coordinate2Flag",577}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1394 "../tests/keys" + {"numberOfModeOfDistribution",1389}, + {""}, {""}, +#line 169 "../tests/keys" + {"Model_Identifier",164}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 1631 "../tests/keys" - {"presentWeather2PresentTrend4",1626}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 753 "../tests/keys" - {"experimentVersionNumber1",748}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 449 "../tests/keys" - {"cloudsBaseCoded2",444}, - {""}, {""}, {""}, {""}, -#line 1071 "../tests/keys" - {"listMembersMissing3",1066}, - {""}, {""}, {""}, {""}, {""}, -#line 451 "../tests/keys" - {"cloudsBaseCoded2Trend2",446}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 852 "../tests/keys" - {"genVertHeightCoords",847}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 471 "../tests/keys" - {"cloudsCode2Trend2",466}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1950 "../tests/keys" - {"section_6",1945}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 92 "../tests/keys" - {"ICPLSIZE",87}, - {""}, {""}, -#line 369 "../tests/keys" - {"ceilingAndVisibilityOKTrend2",364}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 2260 "../tests/keys" - {"visibilityTrend3",2255}, -#line 446 "../tests/keys" - {"cloudsBaseCoded1Trend2",441}, + {"physicalFlag2",1626}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1939 "../tests/keys" - {"section_06",1934}, - {""}, {""}, {""}, {""}, {""}, -#line 1248 "../tests/keys" - {"missingValueManagementUsed",1243}, - {""}, {""}, -#line 334 "../tests/keys" - {"beginMonthTrend4",329}, +#line 1965 "../tests/keys" + {"section_03",1960}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 241 "../tests/keys" - {"UseEcmfConventions",236}, +#line 1811 "../tests/keys" + {"runwayExtentOfContaminationState4",1806}, + {""}, {""}, {""}, +#line 1807 "../tests/keys" + {"runwayExtentOfContaminationCodeState4",1802}, + {""}, {""}, {""}, +#line 1816 "../tests/keys" + {"runwayFrictionCoefficientCodeState1",1811}, + {""}, +#line 1790 "../tests/keys" + {"runwayDepthOfDepositCodeState3",1785}, +#line 132 "../tests/keys" + {"Local_Number_Members_Missing",127}, + {""}, {""}, {""}, {""}, +#line 1472 "../tests/keys" + {"offsetFreeFormData",1467}, +#line 2327 "../tests/keys" + {"windVariableDirectionTrend4",2322}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 732 "../tests/keys" + {"endMinuteTrend3",727}, + {""}, {""}, {""}, +#line 2183 "../tests/keys" + {"typeOfIntervalForFirstAndSecondSize",2178}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 466 "../tests/keys" - {"cloudsCode1Trend2",461}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2231 "../tests/keys" - {"variationOfVisibilityTrend2",2226}, +#line 1871 "../tests/keys" + {"scaledValueOfMinorAxisOfOblateSpheroidEarth",1866}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 1479 "../tests/keys" + {"offsetSection11",1474}, + {""}, {""}, +#line 1817 "../tests/keys" + {"runwayFrictionCoefficientCodeState2",1812}, + {""}, {""}, {""}, {""}, +#line 951 "../tests/keys" + {"implementationDateOfModelCycle",946}, + {""}, {""}, {""}, +#line 219 "../tests/keys" + {"RENAME",214}, +#line 1958 "../tests/keys" + {"section9UniqueIdentifier",1953}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 1474 "../tests/keys" + {"offsetFromReferenceOfFirstTime",1469}, + {""}, {""}, {""}, +#line 1412 "../tests/keys" + {"numberOfPointsAlongYAxis",1407}, + {""}, +#line 554 "../tests/keys" + {"commonBlock",549}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 2184 "../tests/keys" + {"typeOfIntervalForFirstAndSecondWavelength",2179}, + {""}, {""}, {""}, {""}, +#line 638 "../tests/keys" + {"dateOfIceFieldUsed",633}, + {""}, {""}, {""}, +#line 246 "../tests/keys" + {"Threshold_Or_Distribution_0_no_1_yes",241}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 2198 "../tests/keys" + {"typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing",2193}, + {""}, {""}, +#line 2211 "../tests/keys" + {"typicalYearOfCentury",2206}, +#line 1791 "../tests/keys" + {"runwayDepthOfDepositCodeState4",1786}, + {""}, {""}, {""}, {""}, +#line 534 "../tests/keys" + {"clusterMember4",529}, + {""}, +#line 217 "../tests/keys" + {"P_TAVG",212}, +#line 273 "../tests/keys" + {"XpInGridLengths",268}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 537 "../tests/keys" + {"clusterMember7",532}, + {""}, +#line 2310 "../tests/keys" + {"windGustTrend3",2305}, +#line 1623 "../tests/keys" + {"pentagonalResolutionParameterM",1618}, + {""}, {""}, {""}, {""}, +#line 982 "../tests/keys" + {"isCavok",977}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 293 "../tests/keys" + {"accuracyMultipliedByFactor",288}, + {""}, {""}, {""}, +#line 1977 "../tests/keys" + {"section_4",1972}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1980 "../tests/keys" + {"section_7",1975}, +#line 31 "../tests/keys" + {"Date_E2",26}, +#line 1617 "../tests/keys" + {"pastTendencyRVR2",1612}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1879 "../tests/keys" + {"scaledValueOfUpperLimit",1874}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 1780 "../tests/keys" - {"runwayExtentOfContaminationState2",1775}, - {""}, {""}, {""}, -#line 1776 "../tests/keys" - {"runwayExtentOfContaminationCodeState2",1771}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 452 "../tests/keys" - {"cloudsBaseCoded2Trend3",447}, -#line 2291 "../tests/keys" - {"windUnitsTrend3",2286}, -#line 722 "../tests/keys" - {"endYearTrend1",717}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1629 "../tests/keys" - {"presentWeather2PresentTrend2",1624}, + {"runwayDepositCodeState1",1775}, {""}, {""}, -#line 702 "../tests/keys" - {"endHourTrend3",697}, +#line 354 "../tests/keys" + {"beginYearTrend4",349}, {""}, -#line 324 "../tests/keys" - {"beginHourTrend2",319}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 472 "../tests/keys" - {"cloudsCode2Trend3",467}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 725 "../tests/keys" - {"endYearTrend4",720}, - {""}, {""}, {""}, {""}, {""}, -#line 2280 "../tests/keys" - {"windGustTrend3",2275}, - {""}, -#line 370 "../tests/keys" - {"ceilingAndVisibilityOKTrend3",365}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1563 "../tests/keys" - {"padding_sec1_loc",1558}, - {""}, {""}, {""}, -#line 1562 "../tests/keys" - {"padding_local_7_1",1557}, - {""}, -#line 447 "../tests/keys" - {"cloudsBaseCoded1Trend3",442}, -#line 1355 "../tests/keys" - {"numberOfGridUsed",1350}, - {""}, {""}, {""}, {""}, -#line 234 "../tests/keys" - {"Time_Range_One_E4",229}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1433 "../tests/keys" - {"offsetBBitmap",1428}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 467 "../tests/keys" - {"cloudsCode1Trend3",462}, - {""}, {""}, {""}, {""}, -#line 954 "../tests/keys" - {"intervalBetweenTimes",949}, - {""}, -#line 33 "../tests/keys" - {"Date_E4",28}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1945 "../tests/keys" - {"section_11",1940}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1781 "../tests/keys" - {"runwayExtentOfContaminationState3",1776}, - {""}, {""}, {""}, -#line 1777 "../tests/keys" - {"runwayExtentOfContaminationCodeState3",1772}, - {""}, -#line 2289 "../tests/keys" - {"windUnitsTrend1",2284}, - {""}, {""}, -#line 1614 "../tests/keys" - {"precisionOfTheUnpackedSubset",1609}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 257 "../tests/keys" - {"XpInGridLengths",252}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1630 "../tests/keys" - {"presentWeather2PresentTrend3",1625}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 62 "../tests/keys" - {"ExtremeValuesInMaximumRVR1",57}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 65 "../tests/keys" - {"ExtremeValuesInMaximumRVR4",60}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 798 "../tests/keys" - {"extremeValuesRVR1",793}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 74 "../tests/keys" - {"GG",69}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 801 "../tests/keys" - {"extremeValuesRVR4",796}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2232 "../tests/keys" - {"variationOfVisibilityTrend3",2227}, - {""}, {""}, {""}, {""}, {""}, -#line 405 "../tests/keys" - {"cloudsAbbreviation1Trend1",400}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 232 "../tests/keys" - {"Time_Range_One_E2",227}, - {""}, {""}, {""}, -#line 754 "../tests/keys" - {"experimentVersionNumber2",749}, - {""}, -#line 420 "../tests/keys" - {"cloudsAbbreviation4Trend1",415}, - {""}, {""}, {""}, {""}, {""}, -#line 1914 "../tests/keys" - {"section5UniqueIdentifier",1909}, - {""}, {""}, -#line 29 "../tests/keys" - {"CLNOMA",24}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 408 "../tests/keys" - {"cloudsAbbreviation1Trend4",403}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 423 "../tests/keys" - {"cloudsAbbreviation4Trend4",418}, -#line 1957 "../tests/keys" - {"setBitsPerValue",1952}, - {""}, {""}, -#line 550 "../tests/keys" - {"coordAveraging2",545}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1589 "../tests/keys" - {"pastTendencyRVR3",1584}, - {""}, -#line 24 "../tests/keys" - {"BUFR",19}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1910 "../tests/keys" - {"section4UniqueIdentifier",1905}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 455 "../tests/keys" - {"cloudsBaseCoded3Trend1",450}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 458 "../tests/keys" - {"cloudsBaseCoded3Trend4",453}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 475 "../tests/keys" - {"cloudsCode3Trend1",470}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 797 "../tests/keys" - {"extremeCounterClockwiseWindDirection",792}, -#line 63 "../tests/keys" - {"ExtremeValuesInMaximumRVR2",58}, - {""}, {""}, {""}, {""}, {""}, -#line 478 "../tests/keys" - {"cloudsCode3Trend4",473}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 233 "../tests/keys" - {"Time_Range_One_E3",228}, - {""}, -#line 1505 "../tests/keys" - {"padding_grid50_1",1500}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 799 "../tests/keys" - {"extremeValuesRVR2",794}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 723 "../tests/keys" - {"endYearTrend2",718}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 331 "../tests/keys" - {"beginMonthTrend1",326}, - {""}, {""}, -#line 410 "../tests/keys" - {"cloudsAbbreviation2Trend1",405}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 91 "../tests/keys" - {"ICEFieldsUsed",86}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 31 "../tests/keys" - {"Date_E2",26}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, #line 413 "../tests/keys" - {"cloudsAbbreviation2Trend4",408}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1075 "../tests/keys" - {"listMembersUsed3",1070}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 1309 "../tests/keys" - {"numberOfBitsContainingEachPackedValue",1304}, - {""}, {""}, {""}, -#line 64 "../tests/keys" - {"ExtremeValuesInMaximumRVR3",59}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 456 "../tests/keys" - {"cloudsBaseCoded3Trend2",451}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 800 "../tests/keys" - {"extremeValuesRVR3",795}, -#line 1521 "../tests/keys" - {"padding_loc190_1",1516}, + {"changeIndicatorTrend1",408}, {""}, {""}, -#line 434 "../tests/keys" - {"cloudsBase3",429}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1558 "../tests/keys" - {"padding_local1_1",1553}, +#line 499 "../tests/keys" + {"cloudsCode3",494}, +#line 591 "../tests/keys" + {"coordinateFlag2",586}, + {""}, +#line 1966 "../tests/keys" + {"section_04",1961}, {""}, {""}, {""}, -#line 908 "../tests/keys" - {"hoursAfterDataCutoff",903}, +#line 1233 "../tests/keys" + {"md5Section10",1228}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 504 "../tests/keys" + {"cloudsCode4",499}, + {""}, {""}, {""}, {""}, {""}, +#line 1969 "../tests/keys" + {"section_07",1964}, + {""}, {""}, +#line 1158 "../tests/keys" + {"longitudeOfSouthernPoleInDegrees",1153}, + {""}, {""}, {""}, +#line 1455 "../tests/keys" + {"octetAtWichPackedDataBegins",1450}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1883 "../tests/keys" + {"scanningMode4",1878}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 1622 "../tests/keys" + {"pentagonalResolutionParameterK",1617}, + {""}, {""}, {""}, {""}, {""}, +#line 1886 "../tests/keys" + {"scanningMode7",1881}, + {""}, {""}, {""}, {""}, {""}, +#line 414 "../tests/keys" + {"changeIndicatorTrend2",409}, + {""}, {""}, +#line 1235 "../tests/keys" + {"md5Section3",1230}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 2293 "../tests/keys" + {"weightAppliedToClimateMonth1",2288}, + {""}, {""}, +#line 1536 "../tests/keys" + {"padding_grid90_1",1531}, + {""}, +#line 1928 "../tests/keys" + {"section2Used",1923}, + {""}, {""}, {""}, {""}, +#line 1236 "../tests/keys" + {"md5Section4",1231}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2288 "../tests/keys" + {"visibilityTrend1",2283}, +#line 439 "../tests/keys" + {"cloudsAbbreviation3",434}, + {""}, {""}, +#line 1039 "../tests/keys" + {"latitudeLastInDegrees",1034}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1708 "../tests/keys" + {"radiusOfTheEarth",1703}, + {""}, {""}, {""}, {""}, +#line 1475 "../tests/keys" + {"offsetICEFieldsUsed",1470}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 118 "../tests/keys" + {"Latin1InDegrees",113}, + {""}, {""}, {""}, {""}, +#line 1781 "../tests/keys" + {"runwayDepositCodeState2",1776}, + {""}, +#line 1818 "../tests/keys" + {"runwayFrictionCoefficientCodeState3",1813}, + {""}, +#line 1050 "../tests/keys" + {"latitudeOfReferencePoint",1045}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 536 "../tests/keys" + {"clusterMember6",531}, +#line 1060 "../tests/keys" + {"latitudeOfThePoleOfStretching",1055}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 50 "../tests/keys" + {"ECMWF",45}, + {""}, {""}, {""}, +#line 377 "../tests/keys" + {"bufrHeaderSubCentre",372}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 736 "../tests/keys" + {"endMonthTrend3",731}, + {""}, {""}, +#line 2311 "../tests/keys" + {"windGustTrend4",2306}, + {""}, {""}, {""}, {""}, +#line 1979 "../tests/keys" + {"section_6",1974}, + {""}, {""}, {""}, +#line 120 "../tests/keys" + {"Latin2InDegrees",115}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2139 "../tests/keys" + {"timeUnitFlag",2134}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1592 "../tests/keys" + {"padding_sec1_loc",1587}, + {""}, {""}, {""}, {""}, {""}, +#line 342 "../tests/keys" + {"beginHourTrend4",337}, + {""}, {""}, {""}, {""}, +#line 1651 "../tests/keys" + {"presentWeather1Present",1646}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1968 "../tests/keys" + {"section_06",1963}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1468 "../tests/keys" + {"offsetBeforePL",1463}, + {""}, +#line 1819 "../tests/keys" + {"runwayFrictionCoefficientCodeState4",1814}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1102 "../tests/keys" + {"listOfContributingSpectralBands",1097}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1885 "../tests/keys" + {"scanningMode6",1880}, +#line 201 "../tests/keys" + {"Number_Combination_Ensembles_1_none",196}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 476 "../tests/keys" - {"cloudsCode3Trend2",471}, + {""}, +#line 1700 "../tests/keys" + {"qualityValueAssociatedWithParameter",1695}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1621 "../tests/keys" + {"pentagonalResolutionParameterJ",1616}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1078 "../tests/keys" + {"lengthOf4DvarWindow",1073}, + {""}, {""}, +#line 274 "../tests/keys" + {"Y1",269}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 579 "../tests/keys" + {"coordinate1Flag",574}, + {""}, {""}, {""}, {""}, {""}, +#line 1052 "../tests/keys" + {"latitudeOfSouthEastCornerOfArea",1047}, + {""}, {""}, {""}, +#line 587 "../tests/keys" + {"coordinate4Flag",582}, + {""}, +#line 444 "../tests/keys" + {"cloudsAbbreviation4",439}, + {""}, {""}, {""}, +#line 1632 "../tests/keys" + {"physicalMeaningOfVerticalCoordinate",1627}, + {""}, {""}, {""}, +#line 415 "../tests/keys" + {"changeIndicatorTrend3",410}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 415 "../tests/keys" - {"cloudsAbbreviation3Trend1",410}, +#line 1335 "../tests/keys" + {"numberOfBitsForScaledGroupLengths",1330}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 332 "../tests/keys" - {"beginMonthTrend2",327}, +#line 1710 "../tests/keys" + {"rangeBinSpacing",1705}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 1955 "../tests/keys" + {"section8UniqueIdentifier",1950}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1273 "../tests/keys" + {"missingValueManagementUsed",1268}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1100 "../tests/keys" + {"listMembersUsed3",1095}, +#line 737 "../tests/keys" + {"endMonthTrend4",732}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1101 "../tests/keys" + {"listMembersUsed4",1096}, + {""}, {""}, +#line 224 "../tests/keys" + {"SOH",219}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 584 "../tests/keys" + {"coordinate3Flag",579}, + {""}, {""}, {""}, {""}, {""}, +#line 276 "../tests/keys" + {"Y2",271}, + {""}, {""}, +#line 182 "../tests/keys" + {"NH",177}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 416 "../tests/keys" + {"changeIndicatorTrend4",411}, +#line 279 "../tests/keys" + {"YRInMetres",274}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 418 "../tests/keys" - {"cloudsAbbreviation3Trend4",413}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 87 "../tests/keys" - {"HourOfModelVersion",82}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1905 "../tests/keys" - {"section3UniqueIdentifier",1900}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 406 "../tests/keys" - {"cloudsAbbreviation1Trend2",401}, +#line 1439 "../tests/keys" + {"numberOfVGridUsed",1434}, {""}, {""}, {""}, -#line 454 "../tests/keys" - {"cloudsBaseCoded3",449}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 457 "../tests/keys" - {"cloudsBaseCoded3Trend3",452}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 421 "../tests/keys" - {"cloudsAbbreviation4Trend2",416}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 724 "../tests/keys" - {"endYearTrend3",719}, - {""}, -#line 336 "../tests/keys" - {"beginYearTrend2",331}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 477 "../tests/keys" - {"cloudsCode3Trend3",472}, +#line 1033 "../tests/keys" + {"laplacianScalingFactorUnset",1028}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1557 "../tests/keys" - {"padding_local11_1",1552}, +#line 1616 "../tests/keys" + {"pastTendencyRVR1",1611}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, + {""}, {""}, {""}, +#line 2210 "../tests/keys" + {"typicalYear2",2205}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 32 "../tests/keys" {"Date_E3",27}, - {""}, {""}, {""}, -#line 164 "../tests/keys" - {"NB",159}, -#line 1437 "../tests/keys" - {"offsetBeforeBitmap",1432}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1560 "../tests/keys" - {"padding_local40_1",1555}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1410 "../tests/keys" - {"numberOfVGridUsed",1405}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 227 "../tests/keys" - {"TYPE_OF",222}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 225 "../tests/keys" - {"TYPE_FF",220}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 411 "../tests/keys" - {"cloudsAbbreviation2Trend2",406}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1469 "../tests/keys" + {"offsetBeforePV",1464}, + {""}, {""}, {""}, {""}, +#line 2290 "../tests/keys" + {"visibilityTrend3",2285}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2291 "../tests/keys" + {"visibilityTrend4",2286}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 351 "../tests/keys" + {"beginYearTrend1",346}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 407 "../tests/keys" - {"cloudsAbbreviation1Trend3",402}, +#line 1463 "../tests/keys" + {"offsetBSection5",1458}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2132 "../tests/keys" + {"timeIncrementBetweenSuccessiveFields",2127}, + {""}, {""}, {""}, {""}, {""}, +#line 1416 "../tests/keys" + {"numberOfPressureLevelsUsedForClustering",1411}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 218 "../tests/keys" + {"Product_Identifier",213}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 778 "../tests/keys" + {"experimentVersionNumber1",773}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 1796 "../tests/keys" + {"runwayDesignatorRVR1",1791}, + {""}, {""}, +#line 1411 "../tests/keys" + {"numberOfPointsAlongXAxisInCouplingArea",1406}, + {""}, +#line 85 "../tests/keys" + {"HDF5",80}, +#line 1095 "../tests/keys" + {"listMembersMissing2",1090}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1918 "../tests/keys" - {"section6UniqueIdentifier",1913}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 422 "../tests/keys" - {"cloudsAbbreviation4Trend3",417}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 9 "../tests/keys" - {"*********_EXTRA_DATA_***************",4}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1782 "../tests/keys" + {"runwayDepositCodeState3",1777}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 979 "../tests/keys" + {"intervalBetweenTimes",974}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 392 "../tests/keys" + {"ceilingAndVisibilityOK",387}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1155 "../tests/keys" + {"longitudeOfReferencePointInDegrees",1150}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 228 "../tests/keys" - {"TYPE_OR",223}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 416 "../tests/keys" - {"cloudsAbbreviation3Trend2",411}, - {""}, {""}, -#line 2290 "../tests/keys" - {"windUnitsTrend2",2285}, - {""}, {""}, -#line 269 "../tests/keys" - {"ZLBASE",264}, +#line 1990 "../tests/keys" + {"setToMissingIfOutOfRange",1985}, +#line 286 "../tests/keys" + {"ZLMULT",281}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 2205 "../tests/keys" - {"unusedBitsInBitmap",2200}, - {""}, {""}, {""}, {""}, -#line 204 "../tests/keys" - {"RVR1_1",199}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1561 "../tests/keys" - {"padding_local_35",1556}, +#line 33 "../tests/keys" + {"Date_E4",28}, + {""}, {""}, {""}, +#line 2260 "../tests/keys" + {"variationOfVisibilityTrend1",2255}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 610 "../tests/keys" + {"countOfICEFieldsUsed",605}, + {""}, {""}, +#line 779 "../tests/keys" + {"experimentVersionNumber2",774}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 1797 "../tests/keys" + {"runwayDesignatorRVR2",1792}, +#line 339 "../tests/keys" + {"beginHourTrend1",334}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 29 "../tests/keys" + {"CLNOMA",24}, +#line 1974 "../tests/keys" + {"section_11",1969}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1824 "../tests/keys" + {"runwaySideCodeState1",1819}, + {""}, +#line 1661 "../tests/keys" + {"presentWeather3Present",1656}, + {""}, {""}, {""}, {""}, +#line 2029 "../tests/keys" + {"spacingOfBinsAlongRadials",2024}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 813 "../tests/keys" + {"extractDateTimeYearRank",808}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 257 "../tests/keys" + {"UseEcmfConventions",252}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 574 "../tests/keys" + {"coordAveraging1",569}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 207 "../tests/keys" - {"RVR4_1",202}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 190 "../tests/keys" - {"Original_CodeTable_2_Version_Number",185}, +#line 2261 "../tests/keys" + {"variationOfVisibilityTrend2",2256}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1783 "../tests/keys" + {"runwayDepositCodeState4",1778}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1656 "../tests/keys" + {"presentWeather2Present",1651}, + {""}, +#line 348 "../tests/keys" + {"beginMonthTrend2",343}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1825 "../tests/keys" + {"runwaySideCodeState2",1820}, + {""}, {""}, +#line 1618 "../tests/keys" + {"pastTendencyRVR3",1613}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1619 "../tests/keys" + {"pastTendencyRVR4",1614}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1437 "../tests/keys" + {"numberOfUsefulPointsAlongXAxis",1432}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 495 "../tests/keys" + {"cloudsCode2Trend1",490}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 393 "../tests/keys" + {"ceilingAndVisibilityOKTrend1",388}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1338 "../tests/keys" + {"numberOfBytesInLocalDefinition",1333}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 790 "../tests/keys" + {"extractAreaLatitudeRank",785}, + {""}, {""}, {""}, +#line 809 "../tests/keys" + {"extractDateTimeSecondRank",804}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 496 "../tests/keys" + {"cloudsCode2Trend2",491}, + {""}, {""}, +#line 357 "../tests/keys" + {"biFourierPackingModeForAxes",352}, + {""}, {""}, {""}, {""}, +#line 394 "../tests/keys" + {"ceilingAndVisibilityOKTrend2",389}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 747 "../tests/keys" + {"endYearTrend1",742}, + {""}, {""}, {""}, +#line 1045 "../tests/keys" + {"latitudeOfFirstGridPointInDegrees",1040}, +#line 1792 "../tests/keys" + {"runwayDepthOfDepositState1",1787}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 388 "../tests/keys" + {"ccsdsBlockSize",383}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 243 "../tests/keys" + {"TYPE_OF",238}, + {""}, {""}, {""}, {""}, {""}, +#line 569 "../tests/keys" + {"constantAntennaElevationAngle",564}, +#line 454 "../tests/keys" + {"cloudsBase2",449}, + {""}, {""}, {""}, {""}, {""}, +#line 206 "../tests/keys" + {"Original_CodeTable_2_Version_Number",201}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 208 "../tests/keys" + {"Original_Parameter_Identifier",203}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 345 "../tests/keys" - {"bitsPerValueAndRepack",340}, +#line 1584 "../tests/keys" + {"padding_loc9_1",1579}, + {""}, +#line 1583 "../tests/keys" + {"padding_loc7_1",1578}, {""}, {""}, {""}, {""}, -#line 200 "../tests/keys" - {"P_TACC",195}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 440 "../tests/keys" - {"cloudsBase4Trend1",435}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 301 "../tests/keys" + {"alternativeRowScanning",296}, + {""}, {""}, {""}, {""}, {""}, +#line 244 "../tests/keys" + {"TYPE_OR",239}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1419 "../tests/keys" + {"numberOfReforecastYearsInModelClimate",1414}, {""}, {""}, {""}, {""}, -#line 412 "../tests/keys" - {"cloudsAbbreviation2Trend3",407}, - {""}, {""}, {""}, -#line 443 "../tests/keys" - {"cloudsBase4Trend4",438}, +#line 748 "../tests/keys" + {"endYearTrend2",743}, + {""}, {""}, {""}, {""}, +#line 1793 "../tests/keys" + {"runwayDepthOfDepositState2",1788}, + {""}, {""}, +#line 2013 "../tests/keys" + {"skipExtraKeyAttributes",2008}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1096 "../tests/keys" + {"listMembersMissing3",1091}, +#line 1464 "../tests/keys" + {"offsetBSection6",1459}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1312 "../tests/keys" - {"numberOfBitsUsedForTheScaledGroupLengths",1307}, +#line 1586 "../tests/keys" + {"padding_local11_1",1581}, + {""}, {""}, {""}, {""}, +#line 1582 "../tests/keys" + {"padding_loc6_1",1577}, +#line 6 "../tests/keys" + {"************_ENSEMBLE_**************",1}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 430 "../tests/keys" + {"cloudsAbbreviation1Trend1",425}, + {""}, {""}, +#line 2275 "../tests/keys" + {"versionNumberOfSuperblock",2270}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 2084 "../tests/keys" + {"superblockExtensionAddress",2079}, + {""}, {""}, {""}, +#line 1585 "../tests/keys" + {"padding_loc9_2",1580}, +#line 725 "../tests/keys" + {"endHourTrend1",720}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 241 "../tests/keys" + {"TYPE_FF",236}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 497 "../tests/keys" + {"cloudsCode2Trend3",492}, +#line 352 "../tests/keys" + {"beginYearTrend2",347}, + {""}, +#line 435 "../tests/keys" + {"cloudsAbbreviation2Trend1",430}, + {""}, {""}, {""}, {""}, +#line 395 "../tests/keys" + {"ceilingAndVisibilityOKTrend3",390}, + {""}, +#line 1798 "../tests/keys" + {"runwayDesignatorRVR3",1793}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 161 "../tests/keys" + {"Minute_E2",156}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 7 "../tests/keys" + {"************_EXPERIMENT_************",2}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 431 "../tests/keys" + {"cloudsAbbreviation1Trend2",426}, + {""}, {""}, {""}, {""}, +#line 176 "../tests/keys" + {"NB",171}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1393 "../tests/keys" + {"numberOfMissingValues",1388}, + {""}, {""}, +#line 1943 "../tests/keys" + {"section5UniqueIdentifier",1938}, + {""}, {""}, {""}, +#line 726 "../tests/keys" + {"endHourTrend2",721}, +#line 242 "../tests/keys" + {"TYPE_FX",237}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1559 "../tests/keys" - {"padding_local1_31",1554}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1555 "../tests/keys" - {"padding_loc9_1",1550}, -#line 1553 "../tests/keys" - {"padding_loc6_1",1548}, -#line 1554 "../tests/keys" - {"padding_loc7_1",1549}, -#line 2156 "../tests/keys" - {"typeOfLevelECMF",2151}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 205 "../tests/keys" - {"RVR2_1",200}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 417 "../tests/keys" - {"cloudsAbbreviation3Trend3",412}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 240 "../tests/keys" - {"Total_Number_Members_Used",235}, +#line 803 "../tests/keys" + {"extractDateTimeMinuteRank",798}, + {""}, {""}, +#line 2262 "../tests/keys" + {"variationOfVisibilityTrend3",2257}, + {""}, {""}, +#line 806 "../tests/keys" + {"extractDateTimeMonthRank",801}, {""}, {""}, {""}, -#line 61 "../tests/keys" - {"Extra_Data_FreeFormat_0_none",56}, +#line 347 "../tests/keys" + {"beginMonthTrend1",342}, +#line 498 "../tests/keys" + {"cloudsCode2Trend4",493}, + {""}, +#line 823 "../tests/keys" + {"extremeValuesRVR1",818}, + {""}, {""}, {""}, {""}, {""}, +#line 396 "../tests/keys" + {"ceilingAndVisibilityOKTrend4",391}, +#line 436 "../tests/keys" + {"cloudsAbbreviation2Trend2",431}, +#line 1097 "../tests/keys" + {"listMembersMissing4",1092}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1384 "../tests/keys" - {"numberOfPointsAlongTheYAxis",1379}, +#line 1473 "../tests/keys" + {"offsetFromOriginToInnerBound",1468}, + {""}, {""}, +#line 51 "../tests/keys" + {"ECMWF_s",46}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 475 "../tests/keys" + {"cloudsBaseCoded2Trend1",470}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 265 "../tests/keys" - {"YearOfModelVersion",260}, + {""}, +#line 1826 "../tests/keys" + {"runwaySideCodeState3",1821}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 133 "../tests/keys" + {"Local_Number_Members_Missing_E2",128}, +#line 353 "../tests/keys" + {"beginYearTrend3",348}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 302 "../tests/keys" + {"altitudeOfTheCameraFromTheEarthSCenterMeasuredInUnitsOfTheEarth",297}, +#line 248 "../tests/keys" + {"Time_Range_One_E2",243}, + {""}, {""}, {""}, {""}, +#line 824 "../tests/keys" + {"extremeValuesRVR2",819}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 285 "../tests/keys" + {"ZLBASE",280}, + {""}, {""}, {""}, {""}, +#line 1062 "../tests/keys" + {"latitudeOfThePolePointInDegrees",1057}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 137 "../tests/keys" + {"Local_Number_Members_Possible_E2",132}, + {""}, {""}, {""}, {""}, +#line 474 "../tests/keys" + {"cloudsBaseCoded2",469}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 476 "../tests/keys" + {"cloudsBaseCoded2Trend2",471}, + {""}, {""}, +#line 340 "../tests/keys" + {"beginHourTrend2",335}, + {""}, {""}, {""}, {""}, {""}, +#line 2322 "../tests/keys" + {"windUnitsTrend4",2317}, + {""}, {""}, {""}, {""}, +#line 1986 "../tests/keys" + {"setBitsPerValue",1981}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 490 "../tests/keys" + {"cloudsCode1Trend1",485}, + {""}, +#line 1799 "../tests/keys" + {"runwayDesignatorRVR4",1794}, + {""}, {""}, +#line 9 "../tests/keys" + {"*********_EXTRA_DATA_***************",4}, + {""}, {""}, {""}, {""}, +#line 505 "../tests/keys" + {"cloudsCode4Trend1",500}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 934 "../tests/keys" + {"hoursAfterReferenceTimeOfDataCutoff",929}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 440 "../tests/keys" + {"cloudsAbbreviation3Trend1",435}, + {""}, {""}, {""}, {""}, {""}, +#line 1601 "../tests/keys" + {"paramIdECMF",1596}, + {""}, +#line 575 "../tests/keys" + {"coordAveraging2",570}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 1534 "../tests/keys" + {"padding_grid50_1",1529}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 449 "../tests/keys" + {"cloudsBase1",444}, + {""}, {""}, {""}, {""}, +#line 491 "../tests/keys" + {"cloudsCode1Trend2",486}, + {""}, {""}, {""}, {""}, {""}, +#line 26 "../tests/keys" + {"CCCC",21}, + {""}, {""}, {""}, +#line 506 "../tests/keys" + {"cloudsCode4Trend2",501}, + {""}, +#line 1409 "../tests/keys" + {"numberOfPointsAlongTheYAxis",1404}, + {""}, {""}, {""}, {""}, +#line 266 "../tests/keys" + {"X1InGridLengths",261}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 2263 "../tests/keys" + {"variationOfVisibilityTrend4",2258}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 500 "../tests/keys" + {"cloudsCode3Trend1",495}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 1580 "../tests/keys" + {"padding_loc50_1",1575}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 125 "../tests/keys" + {"Less_Than_Or_To_Overall_Distribution",120}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 268 "../tests/keys" + {"X2InGridLengths",263}, + {""}, {""}, {""}, +#line 341 "../tests/keys" + {"beginHourTrend3",336}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 445 "../tests/keys" + {"cloudsAbbreviation4Trend1",440}, + {""}, {""}, +#line 1430 "../tests/keys" + {"numberOfTensOfThousandsOfYearsOfOffset",1425}, + {""}, {""}, #line 441 "../tests/keys" - {"cloudsBase4Trend2",436}, + {"cloudsAbbreviation3Trend2",436}, +#line 1827 "../tests/keys" + {"runwaySideCodeState4",1822}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 94 "../tests/keys" + {"INBITS",89}, +#line 749 "../tests/keys" + {"endYearTrend3",744}, + {""}, {""}, {""}, {""}, +#line 1794 "../tests/keys" + {"runwayDepthOfDepositState3",1789}, + {""}, {""}, +#line 501 "../tests/keys" + {"cloudsCode3Trend2",496}, + {""}, {""}, +#line 1326 "../tests/keys" + {"numberInHorizontalCoordinates",1321}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1581 "../tests/keys" + {"padding_loc5_1",1576}, + {""}, {""}, {""}, {""}, +#line 134 "../tests/keys" + {"Local_Number_Members_Missing_E3",129}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 249 "../tests/keys" + {"Time_Range_One_E3",244}, + {""}, +#line 576 "../tests/keys" + {"coordAveraging3",571}, + {""}, {""}, +#line 825 "../tests/keys" + {"extremeValuesRVR3",820}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 138 "../tests/keys" + {"Local_Number_Members_Possible_E3",133}, + {""}, {""}, {""}, +#line 70 "../tests/keys" + {"FMULTE",65}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 477 "../tests/keys" + {"cloudsBaseCoded2Trend3",472}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1462 "../tests/keys" + {"offsetBBitmap",1457}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 57 "../tests/keys" + {"Ensemble_Identifier_E2",52}, + {""}, {""}, {""}, +#line 446 "../tests/keys" + {"cloudsAbbreviation4Trend2",441}, + {""}, {""}, {""}, {""}, +#line 1587 "../tests/keys" + {"padding_local1_1",1582}, + {""}, {""}, {""}, +#line 1401 "../tests/keys" + {"numberOfParametersUsedForClustering",1396}, +#line 245 "../tests/keys" + {"TYPE_PF",240}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 1934 "../tests/keys" + {"section3UniqueIdentifier",1929}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 61 "../tests/keys" + {"Extra_Data_FreeFormat_0_none",56}, + {""}, {""}, {""}, +#line 135 "../tests/keys" + {"Local_Number_Members_Missing_E4",130}, + {""}, {""}, {""}, +#line 349 "../tests/keys" + {"beginMonthTrend3",344}, + {""}, {""}, {""}, {""}, +#line 250 "../tests/keys" + {"Time_Range_One_E4",245}, + {""}, {""}, {""}, {""}, +#line 826 "../tests/keys" + {"extremeValuesRVR4",821}, + {""}, {""}, {""}, {""}, {""}, +#line 492 "../tests/keys" + {"cloudsCode1Trend3",487}, +#line 350 "../tests/keys" + {"beginMonthTrend4",345}, + {""}, {""}, +#line 162 "../tests/keys" + {"Minute_E3",157}, + {""}, {""}, {""}, {""}, {""}, +#line 507 "../tests/keys" + {"cloudsCode4Trend3",502}, + {""}, {""}, {""}, {""}, {""}, +#line 139 "../tests/keys" + {"Local_Number_Members_Possible_E4",134}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 478 "../tests/keys" + {"cloudsBaseCoded2Trend4",473}, + {""}, {""}, {""}, +#line 432 "../tests/keys" + {"cloudsAbbreviation1Trend3",427}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 822 "../tests/keys" + {"extremeCounterClockwiseWindDirection",817}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 727 "../tests/keys" + {"endHourTrend3",722}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1588 "../tests/keys" + {"padding_local1_31",1583}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 750 "../tests/keys" + {"endYearTrend4",745}, + {""}, {""}, {""}, {""}, +#line 1795 "../tests/keys" + {"runwayDepthOfDepositState4",1790}, + {""}, {""}, {""}, {""}, {""}, +#line 1939 "../tests/keys" + {"section4UniqueIdentifier",1934}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 983 "../tests/keys" + {"isCavokTrend1",978}, + {""}, +#line 1951 "../tests/keys" + {"section7UniqueIdentifier",1946}, + {""}, {""}, {""}, {""}, +#line 437 "../tests/keys" + {"cloudsAbbreviation2Trend3",432}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 220 "../tests/keys" + {"RVR1_1",215}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 502 "../tests/keys" + {"cloudsCode3Trend3",497}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 493 "../tests/keys" + {"cloudsCode1Trend4",488}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 508 "../tests/keys" + {"cloudsCode4Trend4",503}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 469 "../tests/keys" + {"cloudsBaseCoded1",464}, + {""}, {""}, {""}, {""}, {""}, +#line 1051 "../tests/keys" + {"latitudeOfReferencePointInDegrees",1046}, + {""}, {""}, +#line 470 "../tests/keys" + {"cloudsBaseCoded1Trend1",465}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1652 "../tests/keys" + {"presentWeather1PresentTrend1",1647}, + {""}, {""}, +#line 485 "../tests/keys" + {"cloudsBaseCoded4Trend1",480}, + {""}, {""}, {""}, {""}, +#line 221 "../tests/keys" + {"RVR2_1",216}, + {""}, {""}, +#line 459 "../tests/keys" + {"cloudsBase3",454}, + {""}, {""}, {""}, {""}, {""}, +#line 1643 "../tests/keys" + {"precisionOfTheUnpackedSubset",1638}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 464 "../tests/keys" + {"cloudsBase4",459}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1947 "../tests/keys" + {"section6UniqueIdentifier",1942}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 2319 "../tests/keys" + {"windUnitsTrend1",2314}, + {""}, +#line 58 "../tests/keys" + {"Ensemble_Identifier_E3",53}, + {""}, {""}, +#line 984 "../tests/keys" + {"isCavokTrend2",979}, + {""}, {""}, {""}, {""}, +#line 471 "../tests/keys" + {"cloudsBaseCoded1Trend2",466}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1653 "../tests/keys" + {"presentWeather1PresentTrend2",1648}, + {""}, {""}, +#line 486 "../tests/keys" + {"cloudsBaseCoded4Trend2",481}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 503 "../tests/keys" + {"cloudsCode3Trend4",498}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 163 "../tests/keys" + {"Minute_E4",158}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 389 "../tests/keys" + {"ccsdsCompressionOptionsMask",384}, + {""}, +#line 480 "../tests/keys" + {"cloudsBaseCoded3Trend1",475}, + {""}, {""}, +#line 433 "../tests/keys" + {"cloudsAbbreviation1Trend4",428}, +#line 1590 "../tests/keys" + {"padding_local_35",1585}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 728 "../tests/keys" + {"endHourTrend4",723}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 59 "../tests/keys" + {"Ensemble_Identifier_E4",54}, +#line 481 "../tests/keys" + {"cloudsBaseCoded3Trend2",476}, +#line 66 "../tests/keys" + {"ExtremeValuesRVR1",61}, + {""}, +#line 438 "../tests/keys" + {"cloudsAbbreviation2Trend4",433}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 442 "../tests/keys" + {"cloudsAbbreviation3Trend3",437}, + {""}, +#line 1589 "../tests/keys" + {"padding_local40_1",1584}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 1494 "../tests/keys" + {"oneMinuteMeanMaximumRVR1",1489}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 79 "../tests/keys" + {"GRIBEditionNumber",74}, +#line 67 "../tests/keys" + {"ExtremeValuesRVR2",62}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 2235 "../tests/keys" + {"unusedBitsInBitmap",2230}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 222 "../tests/keys" + {"RVR3_1",217}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 1466 "../tests/keys" + {"offsetBeforeBitmap",1461}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 281 "../tests/keys" + {"YearOfModelVersion",276}, + {""}, +#line 1550 "../tests/keys" + {"padding_loc190_1",1545}, + {""}, {""}, {""}, {""}, {""}, +#line 800 "../tests/keys" + {"extractDateTimeHourRank",795}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 791 "../tests/keys" + {"extractAreaLongitudeRank",786}, + {""}, +#line 447 "../tests/keys" + {"cloudsAbbreviation4Trend3",442}, + {""}, {""}, {""}, +#line 472 "../tests/keys" + {"cloudsBaseCoded1Trend3",467}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1654 "../tests/keys" + {"presentWeather1PresentTrend3",1649}, + {""}, {""}, +#line 487 "../tests/keys" + {"cloudsBaseCoded4Trend3",482}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1495 "../tests/keys" + {"oneMinuteMeanMaximumRVR2",1490}, + {""}, {""}, {""}, +#line 92 "../tests/keys" + {"ICPLSIZE",87}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 238 "../tests/keys" - {"Total_Number_Members_Missing",233}, + {"TYPE_AN",233}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 206 "../tests/keys" - {"RVR3_1",201}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 223 "../tests/keys" + {"RVR4_1",218}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 479 "../tests/keys" + {"cloudsBaseCoded3",474}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1465 "../tests/keys" - {"oneMinuteMeanMaximumRVR1",1460}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 333 "../tests/keys" - {"beginMonthTrend3",328}, - {""}, {""}, -#line 1407 "../tests/keys" - {"numberOfUnusedBitsAtEndOfSection3",1402}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1468 "../tests/keys" - {"oneMinuteMeanMaximumRVR4",1463}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 6 "../tests/keys" - {"************_ENSEMBLE_**************",1}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 442 "../tests/keys" - {"cloudsBase4Trend3",437}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1551 "../tests/keys" - {"padding_loc50_1",1546}, -#line 229 "../tests/keys" - {"TYPE_PF",224}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 1552 "../tests/keys" - {"padding_loc5_1",1547}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 886 "../tests/keys" - {"gts_CCCC",881}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 66 "../tests/keys" - {"ExtremeValuesRVR1",61}, - {""}, {""}, -#line 203 "../tests/keys" - {"RENAME",198}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 482 "../tests/keys" + {"cloudsBaseCoded3Trend3",477}, #line 239 "../tests/keys" - {"Total_Number_Members_Possible",234}, -#line 1459 "../tests/keys" - {"offsetToEndOf4DvarWindow",1454}, - {""}, {""}, {""}, {""}, {""}, -#line 69 "../tests/keys" - {"ExtremeValuesRVR4",64}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 250 "../tests/keys" - {"X1InGridLengths",245}, - {""}, {""}, {""}, -#line 151 "../tests/keys" - {"Minute_E4",146}, - {""}, {""}, -#line 430 "../tests/keys" - {"cloudsBase2Trend1",425}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 433 "../tests/keys" - {"cloudsBase2Trend4",428}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1556 "../tests/keys" - {"padding_loc9_2",1551}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 425 "../tests/keys" - {"cloudsBase1Trend1",420}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 7 "../tests/keys" - {"************_EXPERIMENT_************",2}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 428 "../tests/keys" - {"cloudsBase1Trend4",423}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"TYPE_CF",234}, {""}, -#line 2059 "../tests/keys" - {"swapScanningY",2054}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 51 "../tests/keys" - {"ECMWF_s",46}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 443 "../tests/keys" + {"cloudsAbbreviation3Trend4",438}, + {""}, {""}, {""}, +#line 473 "../tests/keys" + {"cloudsBaseCoded1Trend4",468}, +#line 484 "../tests/keys" + {"cloudsBaseCoded4",479}, + {""}, {""}, {""}, {""}, {""}, +#line 1655 "../tests/keys" + {"presentWeather1PresentTrend4",1650}, {""}, {""}, -#line 67 "../tests/keys" - {"ExtremeValuesRVR2",62}, -#line 136 "../tests/keys" - {"Local_Number_Members_Used",131}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 252 "../tests/keys" - {"X2InGridLengths",247}, +#line 488 "../tests/keys" + {"cloudsBaseCoded4Trend4",483}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 431 "../tests/keys" - {"cloudsBase2Trend2",426}, +#line 284 "../tests/keys" + {"YpInGridLengths",279}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1466 "../tests/keys" - {"oneMinuteMeanMaximumRVR2",1461}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 128 "../tests/keys" - {"Local_Number_Members_Missing",123}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 59 "../tests/keys" - {"Ensemble_Identifier_E4",54}, - {""}, -#line 70 "../tests/keys" - {"FMULTE",65}, - {""}, {""}, -#line 426 "../tests/keys" - {"cloudsBase1Trend2",421}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1469 "../tests/keys" - {"oneMinuteMeanMinimumRVR1",1464}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1034 "../tests/keys" + {"lastMonthUsedToBuildClimateMonth1",1029}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 68 "../tests/keys" {"ExtremeValuesRVR3",63}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1009 "../tests/keys" - {"lastMonthUsedToBuildClimateMonth1",1004}, +#line 1535 "../tests/keys" + {"padding_grid5_1",1530}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1472 "../tests/keys" - {"oneMinuteMeanMinimumRVR4",1467}, + {""}, +#line 87 "../tests/keys" + {"HourOfModelVersion",82}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1035 "../tests/keys" + {"lastMonthUsedToBuildClimateMonth2",1030}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 483 "../tests/keys" + {"cloudsBaseCoded3Trend4",478}, + {""}, {""}, +#line 448 "../tests/keys" + {"cloudsAbbreviation4Trend4",443}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1334 "../tests/keys" + {"numberOfBitsContainingEachPackedValue",1329}, +#line 1662 "../tests/keys" + {"presentWeather3PresentTrend1",1657}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 985 "../tests/keys" + {"isCavokTrend3",980}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 69 "../tests/keys" + {"ExtremeValuesRVR4",64}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1530 "../tests/keys" + {"padding_grid1_1",1525}, + {""}, {""}, {""}, +#line 1593 "../tests/keys" + {"padding_sec2_1",1588}, + {""}, {""}, +#line 216 "../tests/keys" + {"P_TACC",211}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1556 "../tests/keys" + {"padding_loc20_1",1551}, {""}, {""}, {""}, {""}, {""}, -#line 432 "../tests/keys" - {"cloudsBase2Trend3",427}, +#line 1663 "../tests/keys" + {"presentWeather3PresentTrend2",1658}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1339 "../tests/keys" + {"numberOfBytesOfFreeFormatData",1334}, + {""}, +#line 24 "../tests/keys" + {"BUFR",19}, + {""}, {""}, +#line 1498 "../tests/keys" + {"oneMinuteMeanMinimumRVR1",1493}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1568 "../tests/keys" + {"padding_loc29_1",1563}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 237 "../tests/keys" - {"Time_Range_Two_E4",232}, +#line 1657 "../tests/keys" + {"presentWeather2PresentTrend1",1652}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 149 "../tests/keys" - {"Minute_E2",144}, - {""}, {""}, {""}, -#line 223 "../tests/keys" - {"TYPE_CF",218}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1522 "../tests/keys" - {"padding_loc191_1",1517}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2088 "../tests/keys" + {"swapScanningY",2083}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1571 "../tests/keys" + {"padding_loc2_1",1566}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 91 "../tests/keys" + {"ICEFieldsUsed",86}, + {""}, +#line 1658 "../tests/keys" + {"presentWeather2PresentTrend2",1653}, + {""}, {""}, {""}, {""}, +#line 1594 "../tests/keys" + {"padding_sec2_2",1589}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 280 "../tests/keys" + {"YY",275}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1499 "../tests/keys" + {"oneMinuteMeanMinimumRVR2",1494}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 2320 "../tests/keys" + {"windUnitsTrend2",2315}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 986 "../tests/keys" + {"isCavokTrend4",981}, + {""}, {""}, {""}, {""}, +#line 1572 "../tests/keys" + {"padding_loc2_2",1567}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1496 "../tests/keys" + {"oneMinuteMeanMaximumRVR3",1491}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1664 "../tests/keys" + {"presentWeather3PresentTrend3",1659}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 104 "../tests/keys" {"LSTCUM",99}, - {""}, {""}, -#line 427 "../tests/keys" - {"cloudsBase1Trend3",422}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1532 "../tests/keys" + {"padding_grid3_1",1527}, + {""}, {""}, {""}, {""}, +#line 2321 "../tests/keys" + {"windUnitsTrend3",2316}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 132 "../tests/keys" - {"Local_Number_Members_Possible",127}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 79 "../tests/keys" - {"GRIBEditionNumber",74}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 57 "../tests/keys" - {"Ensemble_Identifier_E2",52}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 268 "../tests/keys" - {"YpInGridLengths",263}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1467 "../tests/keys" - {"oneMinuteMeanMaximumRVR3",1462}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1010 "../tests/keys" - {"lastMonthUsedToBuildClimateMonth2",1005}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1568 "../tests/keys" - {"padding_sec4_1",1563}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 1523 "../tests/keys" - {"padding_loc191_2",1518}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 235 "../tests/keys" - {"Time_Range_Two_E2",230}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1747 "../tests/keys" - {"runwayBrakingActionState1",1742}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 58 "../tests/keys" - {"Ensemble_Identifier_E3",53}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1525 "../tests/keys" - {"padding_loc192_1",1520}, - {""}, {""}, {""}, -#line 1750 "../tests/keys" - {"runwayBrakingActionState4",1745}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 150 "../tests/keys" - {"Minute_E3",145}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 435 "../tests/keys" - {"cloudsBase3Trend1",430}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 90 "../tests/keys" - {"Hour_E4",85}, -#line 236 "../tests/keys" - {"Time_Range_Two_E3",231}, - {""}, {""}, -#line 438 "../tests/keys" - {"cloudsBase3Trend4",433}, +#line 455 "../tests/keys" + {"cloudsBase2Trend1",450}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 71 "../tests/keys" {"FMULTM",66}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1470 "../tests/keys" - {"oneMinuteMeanMinimumRVR2",1465}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 23 "../tests/keys" + {"BUDG",18}, + {""}, {""}, {""}, {""}, {""}, +#line 877 "../tests/keys" + {"genVertHeightCoords",872}, + {""}, {""}, +#line 1659 "../tests/keys" + {"presentWeather2PresentTrend3",1654}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 62 "../tests/keys" + {"ExtremeValuesInMaximumRVR1",57}, + {""}, {""}, {""}, +#line 88 "../tests/keys" + {"Hour_E2",83}, + {""}, {""}, {""}, +#line 1665 "../tests/keys" + {"presentWeather3PresentTrend4",1660}, + {""}, {""}, {""}, {""}, {""}, +#line 456 "../tests/keys" + {"cloudsBase2Trend2",451}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 1533 "../tests/keys" + {"padding_grid4_1",1528}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 2186 "../tests/keys" + {"typeOfLevelECMF",2181}, + {""}, {""}, +#line 1497 "../tests/keys" + {"oneMinuteMeanMaximumRVR4",1492}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1660 "../tests/keys" + {"presentWeather2PresentTrend4",1655}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 63 "../tests/keys" + {"ExtremeValuesInMaximumRVR2",58}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 1567 "../tests/keys" + {"padding_loc28_1",1562}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1413 "../tests/keys" + {"numberOfPointsAlongYAxisInCouplingArea",1408}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 1597 "../tests/keys" + {"padding_sec4_1",1592}, + {""}, +#line 1537 "../tests/keys" + {"padding_loc10_1",1532}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 1595 "../tests/keys" + {"padding_sec2_3",1590}, + {""}, {""}, {""}, {""}, +#line 1337 "../tests/keys" + {"numberOfBitsUsedForTheScaledGroupLengths",1332}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 457 "../tests/keys" + {"cloudsBase2Trend3",452}, + {""}, {""}, {""}, {""}, {""}, +#line 1596 "../tests/keys" + {"padding_sec3_1",1591}, + {""}, {""}, {""}, {""}, {""}, +#line 1500 "../tests/keys" + {"oneMinuteMeanMinimumRVR3",1495}, + {""}, {""}, {""}, {""}, {""}, +#line 1573 "../tests/keys" + {"padding_loc30_1",1568}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 911 "../tests/keys" + {"gts_CCCC",906}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1531 "../tests/keys" + {"padding_grid1_2",1526}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 1578 "../tests/keys" + {"padding_loc3_1",1573}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 1579 "../tests/keys" + {"padding_loc4_2",1574}, + {""}, {""}, +#line 1569 "../tests/keys" + {"padding_loc29_2",1564}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 458 "../tests/keys" + {"cloudsBase2Trend4",453}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1434 "../tests/keys" + {"numberOfUnusedBitsAtEndOfSection3",1429}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 251 "../tests/keys" + {"Time_Range_Two_E2",246}, + {""}, {""}, +#line 52 "../tests/keys" + {"Ensemble_Combinat_Number_0_none_E2",47}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1552 "../tests/keys" + {"padding_loc191_2",1547}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 1438 "../tests/keys" + {"numberOfUsefulPointsAlongYAxis",1433}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 370 "../tests/keys" + {"bitsPerValueAndRepack",365}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 450 "../tests/keys" + {"cloudsBase1Trend1",445}, + {""}, {""}, {""}, +#line 1501 "../tests/keys" + {"oneMinuteMeanMinimumRVR4",1496}, + {""}, {""}, {""}, +#line 164 "../tests/keys" + {"Missing_Model_LBC",159}, + {""}, +#line 465 "../tests/keys" + {"cloudsBase4Trend1",460}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 89 "../tests/keys" + {"Hour_E3",84}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1542 "../tests/keys" + {"padding_loc13_5",1537}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1570 "../tests/keys" + {"padding_loc29_3",1565}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 451 "../tests/keys" + {"cloudsBase1Trend2",446}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 466 "../tests/keys" + {"cloudsBase4Trend2",461}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 240 "../tests/keys" + {"TYPE_FC",235}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 460 "../tests/keys" + {"cloudsBase3Trend1",455}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 76 "../tests/keys" + {"GRIBEXSection1Problem",71}, +#line 64 "../tests/keys" + {"ExtremeValuesInMaximumRVR3",59}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 252 "../tests/keys" + {"Time_Range_Two_E3",247}, + {""}, {""}, +#line 53 "../tests/keys" + {"Ensemble_Combinat_Number_0_none_E3",48}, + {""}, +#line 461 "../tests/keys" + {"cloudsBase3Trend2",456}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 1548 "../tests/keys" + {"padding_loc18_1",1543}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 1336 "../tests/keys" + {"numberOfBitsUsedForTheGroupWidths",1331}, +#line 90 "../tests/keys" + {"Hour_E4",85}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 141 "../tests/keys" + {"Local_Number_Members_Used_E2",136}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 253 "../tests/keys" + {"Time_Range_Two_E4",248}, + {""}, {""}, +#line 54 "../tests/keys" + {"Ensemble_Combinat_Number_0_none_E4",49}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1577 "../tests/keys" + {"padding_loc38_1",1572}, + {""}, {""}, {""}, {""}, +#line 75 "../tests/keys" + {"GRIB",70}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 452 "../tests/keys" + {"cloudsBase1Trend3",447}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 467 "../tests/keys" + {"cloudsBase4Trend3",462}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 247 "../tests/keys" + {"Threshold_Or_Distribution_Units",242}, + {""}, {""}, +#line 65 "../tests/keys" + {"ExtremeValuesInMaximumRVR4",60}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1551 "../tests/keys" + {"padding_loc191_1",1546}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 1555 "../tests/keys" + {"padding_loc19_2",1550}, + {""}, {""}, +#line 462 "../tests/keys" + {"cloudsBase3Trend3",457}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 453 "../tests/keys" + {"cloudsBase1Trend4",448}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 468 "../tests/keys" + {"cloudsBase4Trend4",463}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1554 "../tests/keys" + {"padding_loc192_1",1549}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 1574 "../tests/keys" + {"padding_loc30_2",1569}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 142 "../tests/keys" + {"Local_Number_Members_Used_E3",137}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 463 "../tests/keys" + {"cloudsBase3Trend4",458}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 264 "../tests/keys" - {"YY",259}, +#line 275 "../tests/keys" + {"Y1InGridLengths",270}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 143 "../tests/keys" + {"Local_Number_Members_Used_E4",138}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 277 "../tests/keys" + {"Y2InGridLengths",272}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9024,6 +9017,8 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1557 "../tests/keys" + {"padding_loc21_1",1552}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9031,158 +9026,154 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 436 "../tests/keys" - {"cloudsBase3Trend2",431}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 231 "../tests/keys" - {"Threshold_Or_Distribution_Units",226}, - {""}, -#line 1541 "../tests/keys" - {"padding_loc29_3",1536}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1488 "../tests/keys" + {"offsetToEndOf4DvarWindow",1483}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 1553 "../tests/keys" + {"padding_loc191_3",1548}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1549 "../tests/keys" + {"padding_loc18_2",1544}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1506 "../tests/keys" - {"padding_grid5_1",1501}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 75 "../tests/keys" - {"GRIB",70}, - {""}, -#line 1501 "../tests/keys" - {"padding_grid1_1",1496}, - {""}, {""}, {""}, #line 102 "../tests/keys" {"LBC_Initial_Conditions",97}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1504 "../tests/keys" - {"padding_grid4_1",1499}, - {""}, -#line 1471 "../tests/keys" - {"oneMinuteMeanMinimumRVR3",1466}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1748 "../tests/keys" - {"runwayBrakingActionState2",1743}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1564 "../tests/keys" - {"padding_sec2_1",1559}, - {""}, {""}, {""}, {""}, -#line 1550 "../tests/keys" - {"padding_loc4_2",1545}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1539 "../tests/keys" - {"padding_loc29_1",1534}, - {""}, {""}, -#line 437 "../tests/keys" - {"cloudsBase3Trend3",432}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1527 "../tests/keys" - {"padding_loc20_1",1522}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1003 "../tests/keys" - {"lBB",998}, - {""}, {""}, {""}, {""}, -#line 1542 "../tests/keys" - {"padding_loc2_1",1537}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 88 "../tests/keys" - {"Hour_E2",83}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 187 "../tests/keys" - {"Number_Combination_Ensembles_1_none",182}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1508 "../tests/keys" - {"padding_loc10_1",1503}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1558 "../tests/keys" + {"padding_loc23_1",1553}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1541 "../tests/keys" + {"padding_loc13_4",1536}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1749 "../tests/keys" - {"runwayBrakingActionState3",1744}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1503 "../tests/keys" - {"padding_grid3_1",1498}, {""}, {""}, {""}, -#line 226 "../tests/keys" - {"TYPE_FX",221}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 201 "../tests/keys" - {"P_TAVG",196}, - {""}, {""}, -#line 1538 "../tests/keys" - {"padding_loc28_1",1533}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 89 "../tests/keys" - {"Hour_E3",84}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1524 "../tests/keys" - {"padding_loc191_3",1519}, +#line 1028 "../tests/keys" + {"lBB",1023}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1545 "../tests/keys" + {"padding_loc15_1",1540}, + {""}, {""}, {""}, {""}, {""}, +#line 228 "../tests/keys" + {"Show_Combination_Ensem_E2_0_no_1_yes",223}, + {""}, {""}, {""}, +#line 1565 "../tests/keys" + {"padding_loc27_1",1560}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 10 "../tests/keys" + {"7777",5}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1563 "../tests/keys" + {"padding_loc245_2",1558}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 1564 "../tests/keys" + {"padding_loc26_1",1559}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1519 "../tests/keys" - {"padding_loc18_1",1514}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1513 "../tests/keys" - {"padding_loc13_5",1508}, - {""}, {""}, {""}, {""}, {""}, -#line 1565 "../tests/keys" - {"padding_sec2_2",1560}, +#line 229 "../tests/keys" + {"Show_Combination_Ensem_E3_0_no_1_yes",224}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 230 "../tests/keys" + {"Show_Combination_Ensem_E4_0_no_1_yes",225}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1538 "../tests/keys" + {"padding_loc13_1",1533}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9192,15 +9183,14 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 1543 "../tests/keys" - {"padding_loc2_2",1538}, + {"padding_loc14_1",1538}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 224 "../tests/keys" - {"TYPE_FC",219}, + {""}, {""}, {""}, {""}, {""}, +#line 1562 "../tests/keys" + {"padding_loc245_1",1557}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9208,249 +9198,46 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 131 "../tests/keys" - {"Local_Number_Members_Missing_E4",126}, - {""}, {""}, -#line 1311 "../tests/keys" - {"numberOfBitsUsedForTheGroupWidths",1306}, {""}, {""}, {""}, {""}, -#line 1567 "../tests/keys" - {"padding_sec3_1",1562}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1566 "../tests/keys" - {"padding_sec2_3",1561}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1544 "../tests/keys" - {"padding_loc30_1",1539}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1549 "../tests/keys" - {"padding_loc3_1",1544}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1560 "../tests/keys" + {"padding_loc244_2",1555}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1533 "../tests/keys" - {"padding_loc245_1",1528}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1512 "../tests/keys" - {"padding_loc13_4",1507}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1502 "../tests/keys" - {"padding_grid1_2",1497}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1530 "../tests/keys" - {"padding_loc244_1",1525}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 129 "../tests/keys" - {"Local_Number_Members_Missing_E2",124}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1540 "../tests/keys" - {"padding_loc29_2",1535}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 259 "../tests/keys" - {"Y1InGridLengths",254}, - {""}, {""}, -#line 135 "../tests/keys" - {"Local_Number_Members_Possible_E4",130}, - {""}, {""}, -#line 214 "../tests/keys" - {"Show_Combination_Ensem_E4_0_no_1_yes",209}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1534 "../tests/keys" - {"padding_loc245_2",1529}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1526 "../tests/keys" - {"padding_loc19_2",1521}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 1536 "../tests/keys" - {"padding_loc27_1",1531}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 130 "../tests/keys" - {"Local_Number_Members_Missing_E3",125}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1531 "../tests/keys" - {"padding_loc244_2",1526}, - {""}, {""}, {""}, {""}, {""}, -#line 1548 "../tests/keys" - {"padding_loc38_1",1543}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 133 "../tests/keys" - {"Local_Number_Members_Possible_E2",128}, - {""}, {""}, -#line 212 "../tests/keys" - {"Show_Combination_Ensem_E2_0_no_1_yes",207}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 121 "../tests/keys" - {"Less_Than_Or_To_Overall_Distribution",116}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 261 "../tests/keys" - {"Y2InGridLengths",256}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 76 "../tests/keys" - {"GRIBEXSection1Problem",71}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 134 "../tests/keys" - {"Local_Number_Members_Possible_E3",129}, - {""}, {""}, -#line 213 "../tests/keys" - {"Show_Combination_Ensem_E3_0_no_1_yes",208}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1520 "../tests/keys" - {"padding_loc18_2",1515}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1224 "../tests/keys" - {"meanValueRVR1",1219}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1227 "../tests/keys" - {"meanValueRVR4",1222}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 1528 "../tests/keys" - {"padding_loc21_1",1523}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1516 "../tests/keys" - {"padding_loc15_1",1511}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1514 "../tests/keys" - {"padding_loc14_1",1509}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1545 "../tests/keys" - {"padding_loc30_2",1540}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, #line 1546 "../tests/keys" - {"padding_loc37_1",1541}, + {"padding_loc16_1",1541}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1575 "../tests/keys" + {"padding_loc37_1",1570}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1249 "../tests/keys" + {"meanValueRVR1",1244}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 1566 "../tests/keys" + {"padding_loc27_2",1561}, + {""}, +#line 170 "../tests/keys" + {"Model_LBC_Member_Identifier",165}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 1250 "../tests/keys" + {"meanValueRVR2",1245}, +#line 19 "../tests/keys" + {"At_least__Or_Distribut_Proportion_Of",14}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9468,185 +9255,132 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1225 "../tests/keys" - {"meanValueRVR2",1220}, - {""}, {""}, {""}, {""}, {""}, -#line 1511 "../tests/keys" - {"padding_loc13_3",1506}, +#line 207 "../tests/keys" + {"Original_Parameter_Iden_CodeTable2",202}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1559 "../tests/keys" + {"padding_loc244_1",1554}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1539 "../tests/keys" + {"padding_loc13_2",1534}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1532 "../tests/keys" - {"padding_loc244_3",1527}, - {""}, {""}, {""}, {""}, {""}, -#line 222 "../tests/keys" - {"TYPE_AN",217}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 1529 "../tests/keys" - {"padding_loc23_1",1524}, #line 95 "../tests/keys" {"INGRIB",90}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1537 "../tests/keys" - {"padding_loc27_2",1532}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1509 "../tests/keys" - {"padding_loc13_1",1504}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1518 "../tests/keys" - {"padding_loc17_2",1513}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1544 "../tests/keys" + {"padding_loc14_2",1539}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 152 "../tests/keys" - {"Missing_Model_LBC",147}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 191 "../tests/keys" - {"Original_Parameter_Iden_CodeTable2",186}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 139 "../tests/keys" - {"Local_Number_Members_Used_E4",134}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 1226 "../tests/keys" - {"meanValueRVR3",1221}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1535 "../tests/keys" - {"padding_loc26_1",1530}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 23 "../tests/keys" - {"BUDG",18}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1517 "../tests/keys" - {"padding_loc16_1",1512}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 137 "../tests/keys" - {"Local_Number_Members_Used_E2",132}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 138 "../tests/keys" - {"Local_Number_Members_Used_E3",133}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1515 "../tests/keys" - {"padding_loc14_2",1510}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, #line 1547 "../tests/keys" - {"padding_loc37_2",1542}, + {"padding_loc17_2",1542}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, + {""}, {""}, {""}, #line 78 "../tests/keys" {"GRIBEX_boustrophedonic",73}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1251 "../tests/keys" + {"meanValueRVR3",1246}, + {""}, {""}, {""}, {""}, +#line 1540 "../tests/keys" + {"padding_loc13_3",1535}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 1576 "../tests/keys" + {"padding_loc37_2",1571}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1252 "../tests/keys" + {"meanValueRVR4",1247}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 165 "../tests/keys" + {"Missing_Model_LBC_E2",160}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1561 "../tests/keys" + {"padding_loc244_3",1556}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9667,8 +9401,8 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1510 "../tests/keys" - {"padding_loc13_2",1505}, +#line 1776 "../tests/keys" + {"runwayBrakingActionState1",1771}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9684,6 +9418,34 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1777 "../tests/keys" + {"runwayBrakingActionState2",1772}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 166 "../tests/keys" + {"Missing_Model_LBC_E3",161}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9701,13 +9463,13 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 172 "../tests/keys" - {"NINT_RITZ_EXP",167}, +#line 184 "../tests/keys" + {"NINT_RITZ_EXP",179}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 167 "../tests/keys" + {"Missing_Model_LBC_E4",162}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 158 "../tests/keys" - {"Model_LBC_Member_Identifier",153}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9716,9 +9478,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 21 "../tests/keys" - {"BBB",16}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9734,8 +9493,13 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 1778 "../tests/keys" + {"runwayBrakingActionState3",1773}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 183 "../tests/keys" + {"NINT_LOG10_RITZ",178}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9762,40 +9526,9 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 54 "../tests/keys" - {"Ensemble_Combinat_Number_0_none_E4",49}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 1779 "../tests/keys" + {"runwayBrakingActionState4",1774}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9806,137 +9539,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 52 "../tests/keys" - {"Ensemble_Combinat_Number_0_none_E2",47}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 53 "../tests/keys" - {"Ensemble_Combinat_Number_0_none_E3",48}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 242 "../tests/keys" - {"Used_Model_LBC",237}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, #line 77 "../tests/keys" {"GRIBEXShBugPresent",72}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9975,140 +9577,9 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 19 "../tests/keys" - {"At_least__Or_Distribut_Proportion_Of",14}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 171 "../tests/keys" - {"NINT_LOG10_RITZ",166}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 155 "../tests/keys" - {"Missing_Model_LBC_E4",150}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 153 "../tests/keys" - {"Missing_Model_LBC_E2",148}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 258 "../tests/keys" + {"Used_Model_LBC",253}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -10140,8 +9611,8 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 154 "../tests/keys" - {"Missing_Model_LBC_E3",149}, +#line 21 "../tests/keys" + {"BBB",16}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -10160,7 +9631,215 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 81 "../tests/keys" + {"GRIB_LATITUDE",76}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 82 "../tests/keys" + {"GRIB_LONGITUDE",77}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, #line 80 "../tests/keys" {"GRIB_DEPTH",75}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -10264,9 +9943,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 245 "../tests/keys" - {"Used_Model_LBC_E4",240}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -10293,12 +9969,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 17 "../tests/keys" - {"AEC_RESTRICTED_OPTION_MASK",12}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 243 "../tests/keys" - {"Used_Model_LBC_E2",238}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -10318,9 +9989,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 244 "../tests/keys" - {"Used_Model_LBC_E3",239}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -10343,6 +10011,9 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 259 "../tests/keys" + {"Used_Model_LBC_E2",254}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -10376,6 +10047,51 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 260 "../tests/keys" + {"Used_Model_LBC_E3",255}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 261 "../tests/keys" + {"Used_Model_LBC_E4",256}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -10425,199 +10141,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 81 "../tests/keys" - {"GRIB_LATITUDE",76}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 16 "../tests/keys" {"AEC_PAD_RSI_OPTION_MASK",11}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -10728,9 +10251,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 82 "../tests/keys" - {"GRIB_LONGITUDE",77}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -10819,6 +10339,316 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 17 "../tests/keys" + {"AEC_RESTRICTED_OPTION_MASK",12}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 13 "../tests/keys" + {"AEC_DATA_MSB_OPTION_MASK",8}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 12 "../tests/keys" {"AEC_DATA_3BYTE_OPTION_MASK",7}, @@ -11305,318 +11135,134 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 13 "../tests/keys" - {"AEC_DATA_MSB_OPTION_MASK",8}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 14 "../tests/keys" - {"AEC_DATA_PREPROCESS_OPTION_MASK",9}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 15 "../tests/keys" - {"AEC_DATA_SIGNED_OPTION_MASK",10} + {"AEC_DATA_SIGNED_OPTION_MASK",10}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 14 "../tests/keys" + {"AEC_DATA_PREPROCESS_OPTION_MASK",9} }; const struct grib_keys_hash * diff --git a/tests/keys b/tests/keys index b37f99685..51286d343 100644 --- a/tests/keys +++ b/tests/keys @@ -118,2203 +118,2233 @@ Latin1,112 Latin1InDegrees,113 Latin2,114 Latin2InDegrees,115 -Less_Than_Or_To_Overall_Distribution,116 -Lo1,117 -Lo1InDegrees,118 -Lo2,119 -LoR,120 -LoV,121 -LoVInDegrees,122 -Local_Number_Members_Missing,123 -Local_Number_Members_Missing_E2,124 -Local_Number_Members_Missing_E3,125 -Local_Number_Members_Missing_E4,126 -Local_Number_Members_Possible,127 -Local_Number_Members_Possible_E2,128 -Local_Number_Members_Possible_E3,129 -Local_Number_Members_Possible_E4,130 -Local_Number_Members_Used,131 -Local_Number_Members_Used_E2,132 -Local_Number_Members_Used_E3,133 -Local_Number_Members_Used_E4,134 -Lor1,135 -Lor1InDegrees,136 -Lor2,137 -Lor2InDegrees,138 -M,139 -METAR,140 -METARstr,141 -MS,142 -MinuteOfModelVersion,143 -Minute_E2,144 -Minute_E3,145 -Minute_E4,146 -Missing_Model_LBC,147 -Missing_Model_LBC_E2,148 -Missing_Model_LBC_E3,149 -Missing_Model_LBC_E4,150 -Model_Additional_Information,151 -Model_Identifier,152 -Model_LBC_Member_Identifier,153 -MonthOfModelVersion,154 -N,155 -N1,156 -N2,157 -NAT,158 -NB,159 -NC,160 -NC1,161 -NC2,162 -NEAREST,163 -NG,164 -NH,165 -NINT_LOG10_RITZ,166 -NINT_RITZ_EXP,167 -NL,168 -NP,169 -NR,170 -NRj,171 -NT,172 -NUT,173 -NV,174 -Nassigned,175 -Nb,176 -Nf,177 -Ni,178 -Nj,179 -Nr,180 -NrInRadiusOfEarth,181 -Number_Combination_Ensembles_1_none,182 -Nx,183 -Ny,184 -Original_CodeTable_2_Version_Number,185 -Original_Parameter_Iden_CodeTable2,186 -Original_Parameter_Identifier,187 -P,188 -P1,189 -P2,190 -PLPresent,191 -PUnset,192 -PVPresent,193 -P_INST,194 -P_TACC,195 -P_TAVG,196 -Product_Identifier,197 -RENAME,198 -RVR1_1,199 -RVR2_1,200 -RVR3_1,201 -RVR4_1,202 -SOH,203 -SPD,204 -SecondLatitude,205 -SecondOfModelVersion,206 -Show_Combination_Ensem_E2_0_no_1_yes,207 -Show_Combination_Ensem_E3_0_no_1_yes,208 -Show_Combination_Ensem_E4_0_no_1_yes,209 -Sub-Experiment_Identifier,210 -TAF,211 -TAFstr,212 -TIDE,213 -TS,214 -TScalc,215 -TT,216 -TYPE_AN,217 -TYPE_CF,218 -TYPE_FC,219 -TYPE_FF,220 -TYPE_FX,221 -TYPE_OF,222 -TYPE_OR,223 -TYPE_PF,224 -Threshold_Or_Distribution_0_no_1_yes,225 -Threshold_Or_Distribution_Units,226 -Time_Range_One_E2,227 -Time_Range_One_E3,228 -Time_Range_One_E4,229 -Time_Range_Two_E2,230 -Time_Range_Two_E3,231 -Time_Range_Two_E4,232 -Total_Number_Members_Missing,233 -Total_Number_Members_Possible,234 -Total_Number_Members_Used,235 -UseEcmfConventions,236 -Used_Model_LBC,237 -Used_Model_LBC_E2,238 -Used_Model_LBC_E3,239 -Used_Model_LBC_E4,240 -WMO,241 -WRAP,242 -WRAPstr,243 -X1,244 -X1InGridLengths,245 -X2,246 -X2InGridLengths,247 -XR,248 -XRInMetres,249 -Xo,250 -Xp,251 -XpInGridLengths,252 -Y1,253 -Y1InGridLengths,254 -Y2,255 -Y2InGridLengths,256 -YR,257 -YRInMetres,258 -YY,259 -YearOfModelVersion,260 -Yo,261 -Yp,262 -YpInGridLengths,263 -ZLBASE,264 -ZLMULT,265 -_T,266 -_TS,267 -_anoffset,268 -_leg_number,269 -_numberOfValues,270 -accumulationInterval,271 -accuracyMultipliedByFactor,272 -addEmptySection2,273 -addExtraLocalSection,274 -additionalFlagPresent,275 -addressOfFileFreeSpaceInfo,276 -aerosolType,277 -aerosolbinnumber,278 -aerosolpacking,279 -alternativeRowScanning,280 -altitudeOfTheCameraFromTheEarthSCenterMeasuredInUnitsOfTheEarth,281 -analysisOffsets,282 -angleDivisor,283 -angleMultiplier,284 -angleOfRotation,285 -angleOfRotationInDegrees,286 -angleOfRotationOfProjection,287 -angleSubdivisions,288 -angularPrecision,289 -anoffset,290 -anoffsetFirst,291 -anoffsetFrequency,292 -anoffsetLast,293 -applicationIdentifier,294 -assertion,295 -atmosphericChemicalOrPhysicalConstituentType,296 -attributeOfTile,297 -auxiliary,298 -average,299 -averaging1Flag,300 -averaging2Flag,301 -averagingPeriod,302 -avg,303 -azimuthalWidth,304 -backgroundGeneratingProcessIdentifier,305 -backgroundProcess,306 -band,307 -baseAddress,308 -baseDateEPS,309 -baseDateOfThisLeg,310 -baseTimeEPS,311 -baseTimeOfThisLeg,312 -basicAngleOfTheInitialProductionDomain,313 -beginDayTrend1,314 -beginDayTrend2,315 -beginDayTrend3,316 -beginDayTrend4,317 -beginHourTrend1,318 -beginHourTrend2,319 -beginHourTrend3,320 -beginHourTrend4,321 -beginMinuteTrend1,322 -beginMinuteTrend2,323 -beginMinuteTrend3,324 -beginMinuteTrend4,325 -beginMonthTrend1,326 -beginMonthTrend2,327 -beginMonthTrend3,328 -beginMonthTrend4,329 -beginYearTrend1,330 -beginYearTrend2,331 -beginYearTrend3,332 -beginYearTrend4,333 -binaryScaleFactor,334 -bitMapIndicator,335 -bitmap,336 -bitmapPresent,337 -bitmapSectionPresent,338 -bitsPerValue,339 -bitsPerValueAndRepack,340 -boot_edition,341 -bottomLevel,342 -boustrophedonic,343 -boustrophedonicOrdering,344 -bufrDataEncoded,345 -bufrHeaderCentre,346 -bufrHeaderSubCentre,347 -bufrTemplate,348 -bufrdcExpandedDescriptors,349 -calendarIdPresent,350 -calendarIdentification,351 -calendarIdentificationTemplateNumber,352 -cat,353 -categories,354 -categoryType,355 -cavokOrVisibility,356 -ccccIdentifiers,357 -ccsdsBlockSize,358 -ccsdsCompressionOptionsMask,359 -ccsdsFlags,360 -ccsdsRsi,361 -ceilingAndVisibilityOK,362 -ceilingAndVisibilityOKTrend1,363 -ceilingAndVisibilityOKTrend2,364 -ceilingAndVisibilityOKTrend3,365 -ceilingAndVisibilityOKTrend4,366 -centralClusterDefinition,367 -centralLongitude,368 -centralLongitudeInDegrees,369 -centralLongitudeInMicrodegrees,370 -centre,371 -centreDescription,372 -centreForLocal,373 -centreForTable2,374 -centuryOfAnalysis,375 -centuryOfReference,376 -centuryOfReferenceTimeOfData,377 -cfName,378 -cfNameECMF,379 -cfVarName,380 -cfVarNameECMF,381 -changeDecimalPrecision,382 -changeIndicatorTrend1,383 -changeIndicatorTrend2,384 -changeIndicatorTrend3,385 -changeIndicatorTrend4,386 -changingPrecision,387 -channel,388 -channelNumber,389 -char,390 -charValues,391 -checkInternalVersion,392 -class,393 -classOfAnalysis,394 -clearTables,395 -climateDateFrom,396 -climateDateTo,397 -climatologicalRegime,398 -cloudsAbbreviation1,399 -cloudsAbbreviation1Trend1,400 -cloudsAbbreviation1Trend2,401 -cloudsAbbreviation1Trend3,402 -cloudsAbbreviation1Trend4,403 -cloudsAbbreviation2,404 -cloudsAbbreviation2Trend1,405 -cloudsAbbreviation2Trend2,406 -cloudsAbbreviation2Trend3,407 -cloudsAbbreviation2Trend4,408 -cloudsAbbreviation3,409 -cloudsAbbreviation3Trend1,410 -cloudsAbbreviation3Trend2,411 -cloudsAbbreviation3Trend3,412 -cloudsAbbreviation3Trend4,413 -cloudsAbbreviation4,414 -cloudsAbbreviation4Trend1,415 -cloudsAbbreviation4Trend2,416 -cloudsAbbreviation4Trend3,417 -cloudsAbbreviation4Trend4,418 -cloudsBase1,419 -cloudsBase1Trend1,420 -cloudsBase1Trend2,421 -cloudsBase1Trend3,422 -cloudsBase1Trend4,423 -cloudsBase2,424 -cloudsBase2Trend1,425 -cloudsBase2Trend2,426 -cloudsBase2Trend3,427 -cloudsBase2Trend4,428 -cloudsBase3,429 -cloudsBase3Trend1,430 -cloudsBase3Trend2,431 -cloudsBase3Trend3,432 -cloudsBase3Trend4,433 -cloudsBase4,434 -cloudsBase4Trend1,435 -cloudsBase4Trend2,436 -cloudsBase4Trend3,437 -cloudsBase4Trend4,438 -cloudsBaseCoded1,439 -cloudsBaseCoded1Trend1,440 -cloudsBaseCoded1Trend2,441 -cloudsBaseCoded1Trend3,442 -cloudsBaseCoded1Trend4,443 -cloudsBaseCoded2,444 -cloudsBaseCoded2Trend1,445 -cloudsBaseCoded2Trend2,446 -cloudsBaseCoded2Trend3,447 -cloudsBaseCoded2Trend4,448 -cloudsBaseCoded3,449 -cloudsBaseCoded3Trend1,450 -cloudsBaseCoded3Trend2,451 -cloudsBaseCoded3Trend3,452 -cloudsBaseCoded3Trend4,453 -cloudsBaseCoded4,454 -cloudsBaseCoded4Trend1,455 -cloudsBaseCoded4Trend2,456 -cloudsBaseCoded4Trend3,457 -cloudsBaseCoded4Trend4,458 -cloudsCode1,459 -cloudsCode1Trend1,460 -cloudsCode1Trend2,461 -cloudsCode1Trend3,462 -cloudsCode1Trend4,463 -cloudsCode2,464 -cloudsCode2Trend1,465 -cloudsCode2Trend2,466 -cloudsCode2Trend3,467 -cloudsCode2Trend4,468 -cloudsCode3,469 -cloudsCode3Trend1,470 -cloudsCode3Trend2,471 -cloudsCode3Trend3,472 -cloudsCode3Trend4,473 -cloudsCode4,474 -cloudsCode4Trend1,475 -cloudsCode4Trend2,476 -cloudsCode4Trend3,477 -cloudsCode4Trend4,478 -cloudsTitle1,479 -cloudsTitle1Trend1,480 -cloudsTitle1Trend2,481 -cloudsTitle1Trend3,482 -cloudsTitle1Trend4,483 -cloudsTitle2,484 -cloudsTitle2Trend1,485 -cloudsTitle2Trend2,486 -cloudsTitle2Trend3,487 -cloudsTitle2Trend4,488 -cloudsTitle3,489 -cloudsTitle3Trend1,490 -cloudsTitle3Trend2,491 -cloudsTitle3Trend3,492 -cloudsTitle3Trend4,493 -cloudsTitle4,494 -cloudsTitle4Trend1,495 -cloudsTitle4Trend2,496 -cloudsTitle4Trend3,497 -cloudsTitle4Trend4,498 -clusterIdentifier,499 -clusterMember1,500 -clusterMember10,501 -clusterMember2,502 -clusterMember3,503 -clusterMember4,504 -clusterMember5,505 -clusterMember6,506 -clusterMember7,507 -clusterMember8,508 -clusterMember9,509 -clusterNumber,510 -clusterSize,511 -clusteringDomain,512 -clusteringMethod,513 -clutterFilterIndicator,514 -cnmc_cmcc,515 -cnmc_isac,516 -codeFigure,517 -codeType,518 -codedNumberOfFirstOrderPackedValues,519 -codedNumberOfGroups,520 -codedValues,521 -coefsFirst,522 -coefsSecond,523 -commonBlock,524 -complexPacking,525 -componentIndex,526 -compressedData,527 -computeLaplacianOperator,528 -computeStatistics,529 -conceptDir,530 -conceptsLocalDirAll,531 -conceptsLocalDirECMF,532 -conceptsLocalMarsDirAll,533 -conceptsMasterDir,534 -conceptsMasterMarsDir,535 -consensus,536 -consensusCount,537 -const,538 -constantAntennaElevationAngle,539 -constantFieldHalfByte,540 -constituentType,541 -controlForecastCluster,542 -coordAveraging0,543 -coordAveraging1,544 -coordAveraging2,545 -coordAveraging3,546 -coordAveragingTims,547 -coordinate1End,548 -coordinate1Flag,549 -coordinate1Start,550 -coordinate2End,551 -coordinate2Flag,552 -coordinate2Start,553 -coordinate3Flag,554 -coordinate3OfFirstGridPoint,555 -coordinate3OfLastGridPoint,556 -coordinate4Flag,557 -coordinate4OfFirstGridPoint,558 -coordinate4OfLastGridPoint,559 -coordinateFlag1,560 -coordinateFlag2,561 -coordinateIndexNumber,562 -coordinatesPresent,563 -core,564 -corr1Data,565 -corr2Data,566 -corr3Data,567 -corr4Data,568 -correction,569 -correction1,570 -correction1Part,571 -correction2,572 -correction2Part,573 -correction3,574 -correction3Part,575 -correction4,576 -correction4Part,577 -count,578 -countOfGroupLengths,579 -countOfICEFieldsUsed,580 -countTotal,581 -country,582 -crcrlf,583 -createNewData,584 -daLoop,585 -data,586 -dataAccessors,587 -dataCategory,588 -dataDate,589 -dataFlag,590 -dataKeys,591 -dataLength,592 -dataOrigin,593 -dataRepresentation,594 -dataRepresentationTemplate,595 -dataRepresentationTemplateNumber,596 -dataRepresentationType,597 -dataSelection,598 -dataStream,599 -dataSubCategory,600 -dataTime,601 -dataType,602 -dataValues,603 -date,604 -dateOfAnalysis,605 -dateOfForecast,606 -dateOfForecastRun,607 -dateOfIceFieldUsed,608 -dateOfModelVersion,609 -dateOfReference,610 -dateOfSSTFieldUsed,611 -dateSSTFieldUsed,612 -dateTime,613 -datumSize,614 -day,615 -dayOfAnalysis,616 -dayOfEndOfOverallTimeInterval,617 -dayOfForecast,618 -dayOfModelVersion,619 -dayOfReference,620 -dayOfTheYearDate,621 -decimalPrecision,622 -decimalScaleFactor,623 -defaultFaFieldName,624 -defaultFaLevelName,625 -defaultFaModelName,626 -defaultName,627 -defaultParameter,628 -defaultSequence,629 -defaultShortName,630 -defaultStepUnits,631 -defaultTypeOfLevel,632 -default_step_units,633 -definitionFilesVersion,634 -deleteCalendarId,635 -deleteExtraLocalSection,636 -deleteLocalDefinition,637 -deletePV,638 -derivedForecast,639 -dewPointTemperature,640 -diagnostic,641 -diagnosticNumber,642 -diffInDays,643 -diffInHours,644 -dimension,645 -dimensionNumber,646 -dimensionType,647 -direction,648 -directionNumber,649 -directionOfVariation,650 -directionScalingFactor,651 -dirty_statistics,652 -disableGrib1LocalSection,653 -discipline,654 -distanceFromTubeToEnsembleMean,655 -distinctLatitudes,656 -distinctLongitudes,657 -doExtractArea,658 -doExtractDateTime,659 -doExtractSubsets,660 -doSimpleThinning,661 -domain,662 -driverInformationBlockAddress,663 -dummy,664 -dummy1,665 -dummy2,666 -dummyc,667 -dx,668 -dy,669 -earthIsOblate,670 -earthMajorAxis,671 -earthMajorAxisInMetres,672 -earthMinorAxis,673 -earthMinorAxisInMetres,674 -eastLongitudeOfCluster,675 -eastLongitudeOfDomainOfTubing,676 -easternLongitudeOfClusterDomain,677 -easternLongitudeOfDomain,678 -ed,679 -edition,680 -editionNumber,681 -efas_model,682 -efas_post_proc,683 -efiOrder,684 -eight,685 -elementsTable,686 -elevation,687 -eleven,688 -endDayTrend1,689 -endDayTrend2,690 -endDayTrend3,691 -endDayTrend4,692 -endDescriptors,693 -endGridDefinition,694 -endHourTrend1,695 -endHourTrend2,696 -endHourTrend3,697 -endHourTrend4,698 -endMark,699 -endMinuteTrend1,700 -endMinuteTrend2,701 -endMinuteTrend3,702 -endMinuteTrend4,703 -endMonthTrend1,704 -endMonthTrend2,705 -endMonthTrend3,706 -endMonthTrend4,707 -endOfFileAddress,708 -endOfHeadersMarker,709 -endOfInterval,710 -endOfMessage,711 -endOfProduct,712 -endOfRange,713 -endStep,714 -endStepInHours,715 -endTimeStep,716 -endYearTrend1,717 -endYearTrend2,718 -endYearTrend3,719 -endYearTrend4,720 -energyNorm,721 -enorm,722 -ensembleForecastNumbers,723 -ensembleForecastNumbersList,724 -ensembleSize,725 -ensembleStandardDeviation,726 -eps,727 -epsContinous,728 -epsPoint,729 -epsStatisticsContinous,730 -epsStatisticsPoint,731 -error,732 -expandBy,733 -expandedAbbreviations,734 -expandedCodes,735 -expandedCrex_scales,736 -expandedCrex_units,737 -expandedCrex_widths,738 -expandedDescriptors,739 -expandedNames,740 -expandedOriginalCodes,741 -expandedOriginalReferences,742 -expandedOriginalScales,743 -expandedOriginalWidths,744 -expandedTypes,745 -expandedUnits,746 -experimentVersionNumber,747 -experimentVersionNumber1,748 -experimentVersionNumber2,749 -experimentVersionNumberOfAnalysis,750 -expoffset,751 -expver,752 -extendedFlag,753 -extraDim,754 -extraDimensionPresent,755 -extraLocalSectionNumber,756 -extraLocalSectionPresent,757 -extraValues,758 -extractAreaEastLongitude,759 -extractAreaLatitudeRank,760 -extractAreaLongitudeRank,761 -extractAreaNorthLatitude,762 -extractAreaSouthLatitude,763 -extractAreaWestLongitude,764 -extractDateTimeDayEnd,765 -extractDateTimeDayRank,766 -extractDateTimeDayStart,767 -extractDateTimeEnd,768 -extractDateTimeHourEnd,769 -extractDateTimeHourRank,770 -extractDateTimeHourStart,771 -extractDateTimeMinuteEnd,772 -extractDateTimeMinuteRank,773 -extractDateTimeMinuteStart,774 -extractDateTimeMonthEnd,775 -extractDateTimeMonthRank,776 -extractDateTimeMonthStart,777 -extractDateTimeSecondEnd,778 -extractDateTimeSecondRank,779 -extractDateTimeSecondStart,780 -extractDateTimeStart,781 -extractDateTimeYearEnd,782 -extractDateTimeYearRank,783 -extractDateTimeYearStart,784 -extractSubset,785 -extractSubsetIntervalEnd,786 -extractSubsetIntervalStart,787 -extractSubsetList,788 -extractedAreaNumberOfSubsets,789 -extractedDateTimeNumberOfSubsets,790 -extremeClockwiseWindDirection,791 -extremeCounterClockwiseWindDirection,792 -extremeValuesRVR1,793 -extremeValuesRVR2,794 -extremeValuesRVR3,795 -extremeValuesRVR4,796 -faFieldName,797 -faLevelName,798 -faModelName,799 -false,800 -falseEasting,801 -falseNorthing,802 -fcmonth,803 -fcperiod,804 -fgDate,805 -fgTime,806 -file,807 -fileConsistencyFlags,808 -firstDimension,809 -firstDimensionCoordinateValueDefinition,810 -firstDimensionPhysicalSignificance,811 -firstLatitude,812 -firstLatitudeInDegrees,813 -firstMonthUsedToBuildClimateMonth1,814 -firstMonthUsedToBuildClimateMonth2,815 -firstOrderValues,816 -flag,817 -flagForAnyFurtherInformation,818 -flagForIrregularGridCoordinateList,819 -flagForNormalOrStaggeredGrid,820 -flagShowingPostAuxiliaryArrayInUse,821 -flags,822 -floatVal,823 -floatValues,824 -forecastLeadTime,825 -forecastMonth,826 -forecastOrSingularVectorNumber,827 -forecastPeriod,828 -forecastPeriodFrom,829 -forecastPeriodTo,830 -forecastProbabilityNumber,831 -forecastSteps,832 -forecastTime,833 -forecastperiod,834 -formatVersionMajorNumber,835 -formatVersionMinorNumber,836 -freeFormData,837 -frequency,838 -frequencyNumber,839 -frequencyScalingFactor,840 -functionCode,841 -g,842 -g1conceptsLocalDirAll,843 -g1conceptsMasterDir,844 -g2grid,845 -gaussianGridName,846 -genVertHeightCoords,847 -generalExtended2ordr,848 -generatingProcessIdentificationNumber,849 -generatingProcessIdentifier,850 -generatingProcessTemplate,851 -generatingProcessTemplateNumber,852 -getNumberOfValues,853 -gg,854 -global,855 -globalDomain,856 -grib1divider,857 -grib2LocalSectionNumber,858 -grib2LocalSectionPresent,859 -grib2divider,860 -grib3divider,861 -gribMasterTablesVersionNumber,862 -gribTablesVersionNo,863 -grid,864 -gridCoordinate,865 -gridDefinition,866 -gridDefinitionDescription,867 -gridDefinitionSection,868 -gridDefinitionTemplateNumber,869 -gridDescriptionSectionPresent,870 -gridName,871 -gridPointPosition,872 -gridType,873 -groupInternalNodeK,874 -groupLeafNodeK,875 -groupLengths,876 -groupSplitting,877 -groupSplittingMethodUsed,878 -groupWidth,879 -groupWidths,880 -gts_CCCC,881 -gts_TTAAii,882 -gts_ddhh00,883 -gts_header,884 -halfByte,885 -hdate,886 -headersOnly,887 -heightLevelName,888 -heightOrPressureOfLevel,889 -heightPressureEtcOfLevels,890 -hideThis,891 -horizontalCoordinateDefinition,892 -horizontalCoordinateSupplement,893 -horizontalDimensionProcessed,894 -horizontalDomainTemplate,895 -horizontalDomainTemplateNumber,896 -hour,897 -hourOfAnalysis,898 -hourOfEndOfOverallTimeInterval,899 -hourOfForecast,900 -hourOfModelVersion,901 -hourOfReference,902 -hoursAfterDataCutoff,903 -hoursAfterReferenceTimeOfDataCutoff,904 -hundred,905 -iDirectionIncrement,906 -iDirectionIncrementGiven,907 -iDirectionIncrementGridLength,908 -iDirectionIncrementInDegrees,909 -iIncrement,910 -iScansNegatively,911 -iScansPositively,912 -ident,913 -identificationNumber,914 -identificationOfOriginatingGeneratingCentre,915 -identificationOfProject,916 -identifier,917 -ieeeFloats,918 -ifsParam,919 -ijDirectionIncrementGiven,920 -implementationDateOfModelCycle,921 -incrementOfLengths,922 -indexTemplate,923 -indexTemplateNumber,924 -indexedStorageInternalNodeK,925 -indicatorOfParameter,926 -indicatorOfTypeOfLevel,927 -indicatorOfUnitForTimeIncrement,928 -indicatorOfUnitForTimeRange,929 -indicatorOfUnitOfTimeRange,930 -inputDataPresentIndicator,931 -inputDelayedDescriptorReplicationFactor,932 -inputExtendedDelayedDescriptorReplicationFactor,933 -inputOriginatingCentre,934 -inputOverriddenReferenceValues,935 -inputProcessIdentifier,936 -inputShortDelayedDescriptorReplicationFactor,937 -instrument,938 -instrumentIdentifier,939 -instrumentType,940 -integerPointValues,941 -integerScaleFactor,942 -integerScalingFactorAppliedToDirections,943 -integerScalingFactorAppliedToFrequencies,944 -integerValues,945 -internalVersion,946 -internationalDataSubCategory,947 -interpretationOfNumberOfPoints,948 -intervalBetweenTimes,949 -isAccumulation,950 -isAuto,951 -isCavok,952 -isCavokTrend1,953 -isCavokTrend2,954 -isCavokTrend3,955 -isCavokTrend4,956 -isConstant,957 -isCorrection,958 -isEPS,959 -isEps,960 -isFillup,961 -isHindcast,962 -isOctahedral,963 -isSatellite,964 -isSatelliteType,965 -isSens,966 -is_aerosol,967 -is_aerosol_optical,968 -is_chemical,969 -is_chemical_distfn,970 -is_efas,971 -is_rotated_grid,972 -is_s2s,973 -is_tigge,974 -is_uerra,975 -isectionNumber2,976 -isectionNumber3,977 -isectionNumber4,978 -isotopeIdentificationNumber,979 -iteration,980 -iterationNumber,981 -iteratorDisableUnrotate,982 -jDirectionIncrement,983 -jDirectionIncrementGiven,984 -jDirectionIncrementGridLength,985 -jDirectionIncrementInDegrees,986 -jIncrement,987 -jPointsAreConsecutive,988 -jScansPositively,989 -julianDay,990 -julianForecastDay,991 -keyData,992 -keyMore,993 -keySat,994 -kindOfProduct,995 -kurt,996 -kurtosis,997 -lBB,998 -landtype,999 -laplacianOperator,1000 -laplacianOperatorIsSet,1001 -laplacianScalingFactor,1002 -laplacianScalingFactorUnset,1003 -lastMonthUsedToBuildClimateMonth1,1004 -lastMonthUsedToBuildClimateMonth2,1005 -latLonValues,1006 -latitude,1007 -latitudeFirstInDegrees,1008 -latitudeLastInDegrees,1009 -latitudeLongitudeValues,1010 -latitudeOfCenterPoint,1011 -latitudeOfCenterPointInDegrees,1012 -latitudeOfCentralPointInClusterDomain,1013 -latitudeOfFirstGridPoint,1014 -latitudeOfFirstGridPointInDegrees,1015 -latitudeOfIcosahedronPole,1016 -latitudeOfLastGridPoint,1017 -latitudeOfLastGridPointInDegrees,1018 -latitudeOfNorthWestCornerOfArea,1019 -latitudeOfReferencePoint,1020 -latitudeOfReferencePointInDegrees,1021 -latitudeOfSouthEastCornerOfArea,1022 -latitudeOfSouthernPole,1023 -latitudeOfSouthernPoleInDegrees,1024 -latitudeOfStretchingPole,1025 -latitudeOfStretchingPoleInDegrees,1026 -latitudeOfSubSatellitePoint,1027 -latitudeOfSubSatellitePointInDegrees,1028 -latitudeOfTangencyPoint,1029 -latitudeOfThePoleOfStretching,1030 -latitudeOfThePolePoint,1031 -latitudeOfThePolePointInDegrees,1032 -latitudeOfTheSouthernPoleOfProjection,1033 -latitudeSexagesimal,1034 -latitudeWhereDxAndDyAreSpecified,1035 -latitudeWhereDxAndDyAreSpecifiedInDegrees,1036 -latitudes,1037 -latitudesList,1038 -latitudinalDirectionGridLength,1039 -lcwfvSuiteName,1040 -leadtime,1041 -legBaseDate,1042 -legBaseTime,1043 -legNumber,1044 -legacyGaussSubarea,1045 -lengthDescriptors,1046 -lengthIncrementForTheGroupLengths,1047 -lengthOf4DvarWindow,1048 -lengthOfHeaders,1049 -lengthOfIndexTemplate,1050 -lengthOfMessage,1051 -lengthOfOriginatorLocalTemplate,1052 -lengthOfProjectLocalTemplate,1053 -lengthOfTimeRange,1054 -lev,1055 -levTypeName,1056 -level,1057 -levelIndicator,1058 -levelType,1059 -levelist,1060 -levels,1061 -levtype,1062 -libraryVersion,1063 -listMembersMissing,1064 -listMembersMissing2,1065 -listMembersMissing3,1066 -listMembersMissing4,1067 -listMembersUsed,1068 -listMembersUsed2,1069 -listMembersUsed3,1070 -listMembersUsed4,1071 -listOfContributingSpectralBands,1072 -listOfDistributionFunctionParameter,1073 -listOfEnsembleForecastNumbers,1074 -listOfModelIdentifiers,1075 -listOfParametersUsedForClustering,1076 -listOfScaledFrequencies,1077 -local,1078 -localDateTime,1079 -localDay,1080 -localDecimalScaleFactor,1081 -localDefNumberOne,1082 -localDefNumberTwo,1083 -localDefinition,1084 -localDefinitionNumber,1085 -localDir,1086 -localExtensionPadding,1087 -localFlag,1088 -localFlagLatestVersion,1089 -localHour,1090 -localLatitude,1091 -localLatitude1,1092 -localLatitude2,1093 -localLongitude,1094 -localLongitude1,1095 -localLongitude2,1096 -localMinute,1097 -localMonth,1098 -localNumberOfObservations,1099 -localSecond,1100 -localSection,1101 -localSectionPresent,1102 -localTablesVersion,1103 -localTablesVersionNumber,1104 -localUsePresent,1105 -localYear,1106 -local_padding,1107 -local_use,1108 -logTransform,1109 -longitude,1110 -longitudeFirstInDegrees,1111 -longitudeLastInDegrees,1112 -longitudeOfCenterPoint,1113 -longitudeOfCenterPointInDegrees,1114 -longitudeOfCentralPointInClusterDomain,1115 -longitudeOfFirstDiamondCenterLine,1116 -longitudeOfFirstDiamondCenterLineInDegrees,1117 -longitudeOfFirstGridPoint,1118 -longitudeOfFirstGridPointInDegrees,1119 -longitudeOfIcosahedronPole,1120 -longitudeOfLastGridPoint,1121 -longitudeOfLastGridPointInDegrees,1122 -longitudeOfNorthWestCornerOfArea,1123 -longitudeOfReferencePoint,1124 -longitudeOfReferencePointInDegrees,1125 -longitudeOfSouthEastCornerOfArea,1126 -longitudeOfSouthernPole,1127 -longitudeOfSouthernPoleInDegrees,1128 -longitudeOfStretchingPole,1129 -longitudeOfStretchingPoleInDegrees,1130 -longitudeOfSubSatellitePoint,1131 -longitudeOfSubSatellitePointInDegrees,1132 -longitudeOfTangencyPoint,1133 -longitudeOfThePoleOfStretching,1134 -longitudeOfThePolePoint,1135 -longitudeOfThePolePointInDegrees,1136 -longitudeOfTheSouthernPoleOfProjection,1137 -longitudeSexagesimal,1138 -longitudes,1139 -longitudesList,1140 -longitudinalDirectionGridLength,1141 -lowerLimit,1142 -lowerRange,1143 -lowerThreshold,1144 -lowerThresholdValue,1145 -ls_labeling,1146 -lsdate_bug,1147 -m,1148 -mAngleMultiplier,1149 -mBasicAngle,1150 -mars,1151 -marsClass,1152 -marsClass1,1153 -marsClass2,1154 -marsDir,1155 -marsDomain,1156 -marsEndStep,1157 -marsExperimentOffset,1158 -marsExpver,1159 -marsForecastMonth,1160 -marsGrid,1161 -marsIdent,1162 -marsKeywords,1163 -marsKeywords1,1164 -marsLamModel,1165 -marsLatitude,1166 -marsLevel,1167 -marsLevelist,1168 -marsLongitude,1169 -marsModel,1170 -marsParam,1171 -marsQuantile,1172 -marsRange,1173 -marsStartStep,1174 -marsStep,1175 -marsStream,1176 -marsStream1,1177 -marsStream2,1178 -marsType,1179 -marsType1,1180 -marsType2,1181 -mars_labeling,1182 -mask,1183 -masterDir,1184 -masterTableNumber,1185 -masterTablesVersionNumber,1186 -masterTablesVersionNumberLatest,1187 -matchAerosolBinNumber,1188 -matchAerosolPacking,1189 -matchLandType,1190 -matchSort,1191 -matchTimeRepres,1192 -matrixBitmapsPresent,1193 -matrixOfValues,1194 -max,1195 -maximum,1196 -md5Data,1197 -md5DataSection,1198 -md5GridSection,1199 -md5Headers,1200 -md5Product,1201 -md5Section1,1202 -md5Section10,1203 -md5Section2,1204 -md5Section3,1205 -md5Section4,1206 -md5Section5,1207 -md5Section6,1208 -md5Section7,1209 -md5Section8,1210 -md5Section9,1211 -md5Structure,1212 -md5TimeDomainSection,1213 -meanRVR1,1214 -meanRVR2,1215 -meanRVR3,1216 -meanRVR4,1217 -meanSize,1218 -meanValueRVR1,1219 -meanValueRVR2,1220 -meanValueRVR3,1221 -meanValueRVR4,1222 -meaningOfVerticalCoordinate,1223 -memberNumber,1224 -messageLength,1225 -metadata,1226 -method,1227 -methodNumber,1228 -million,1229 -min,1230 -minimum,1231 -minute,1232 -minuteOfAnalysis,1233 -minuteOfEndOfOverallTimeInterval,1234 -minuteOfForecast,1235 -minuteOfModelVersion,1236 -minuteOfReference,1237 -minutesAfterDataCutoff,1238 -minutesAfterReferenceTimeOfDataCutoff,1239 -missingDataFlag,1240 -missingValue,1241 -missingValueManagement,1242 -missingValueManagementUsed,1243 -missingValuesPresent,1244 -mixedCoordinateDefinition,1245 -mixedCoordinateFieldFlag,1246 -modeNumber,1247 -model,1248 -modelErrorType,1249 -modelIdentifier,1250 -modelName,1251 -modelVersionDate,1252 -modelVersionTime,1253 -molarMass,1254 -month,1255 -monthOfAnalysis,1256 -monthOfEndOfOverallTimeInterval,1257 -monthOfForecast,1258 -monthOfModelVersion,1259 -monthOfReference,1260 -monthlyVerificationDate,1261 -monthlyVerificationMonth,1262 -monthlyVerificationTime,1263 -monthlyVerificationYear,1264 -multiplicationFactorForLatLong,1265 -mybits,1266 -n,1267 -n2,1268 -n3,1269 -na,1270 -name,1271 -nameECMF,1272 -nameOfFirstFixedSurface,1273 -nameOfSecondFixedSurface,1274 -names,1275 -nd,1276 -neitherPresent,1277 -newSubtype,1278 -nlev,1279 -nnn,1280 -normAtFinalTime,1281 -normAtInitialTime,1282 -normal,1283 -northLatitudeOfCluster,1284 -northLatitudeOfDomainOfTubing,1285 -northWestLatitudeOfLPOArea,1286 -northWestLatitudeOfVerficationArea,1287 -northWestLongitudeOfLPOArea,1288 -northWestLongitudeOfVerficationArea,1289 -northernLatitudeOfClusterDomain,1290 -northernLatitudeOfDomain,1291 -nosigPresent,1292 -notDecoded,1293 -nt,1294 -number,1295 -numberInHorizontalCoordinates,1296 -numberInMixedCoordinateDefinition,1297 -numberInTheAuxiliaryArray,1298 -numberInTheGridCoordinateList,1299 -numberIncludedInAverage,1300 -numberMissingFromAveragesOrAccumulations,1301 -numberOfAnalysis,1302 -numberOfBits,1303 -numberOfBitsContainingEachPackedValue,1304 -numberOfBitsForScaledGroupLengths,1305 -numberOfBitsUsedForTheGroupWidths,1306 -numberOfBitsUsedForTheScaledGroupLengths,1307 -numberOfBytesInLocalDefinition,1308 -numberOfBytesOfFreeFormatData,1309 -numberOfBytesPerInteger,1310 -numberOfCategories,1311 -numberOfCharacters,1312 -numberOfChars,1313 -numberOfClusterHighResolution,1314 -numberOfClusterLowResolution,1315 -numberOfClusters,1316 -numberOfCodedValues,1317 -numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction,1318 -numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction,1319 -numberOfColumns,1320 -numberOfComponents,1321 -numberOfContributingSpectralBands,1322 -numberOfControlForecastTube,1323 -numberOfCoordinatesValues,1324 -numberOfDataBinsAlongRadials,1325 -numberOfDataMatrices,1326 -numberOfDataPoints,1327 -numberOfDataPointsExpected,1328 -numberOfDataValues,1329 -numberOfDaysInClimateSamplingWindow,1330 -numberOfDiamonds,1331 -numberOfDirections,1332 -numberOfDistinctSection3s,1333 -numberOfDistinctSection4s,1334 -numberOfDistinctSection5s,1335 -numberOfDistinctSection6s,1336 -numberOfDistinctSection7s,1337 -numberOfDistinctSection8s,1338 -numberOfDistinctSection9s,1339 -numberOfDistributionFunctionParameters,1340 -numberOfEffectiveValues,1341 -numberOfFloats,1342 -numberOfForcasts,1343 -numberOfForecastsInCluster,1344 -numberOfForecastsInEnsemble,1345 -numberOfForecastsInTheCluster,1346 -numberOfForecastsInTube,1347 -numberOfFrequencies,1348 -numberOfGridInReference,1349 -numberOfGridUsed,1350 -numberOfGroups,1351 -numberOfGroupsOfDataValues,1352 -numberOfHorizontalPoints,1353 -numberOfIntegers,1354 -numberOfInts,1355 -numberOfIterations,1356 -numberOfLocalDefinitions,1357 -numberOfLogicals,1358 -numberOfMembersInCluster,1359 -numberOfMembersInEnsemble,1360 -numberOfMissing,1361 -numberOfMissingInStatisticalProcess,1362 -numberOfMissingValues,1363 -numberOfModeOfDistribution,1364 -numberOfModels,1365 -numberOfOctectsForNumberOfPoints,1366 -numberOfOctetsExtraDescriptors,1367 -numberOfOperationalForecastTube,1368 -numberOfPackedValues,1369 -numberOfParallelsBetweenAPoleAndTheEquator,1370 -numberOfParametersUsedForClustering,1371 -numberOfPartitions,1372 -numberOfPoints,1373 -numberOfPointsAlongAMeridian,1374 -numberOfPointsAlongAParallel,1375 -numberOfPointsAlongFirstAxis,1376 -numberOfPointsAlongSecondAxis,1377 -numberOfPointsAlongTheXAxis,1378 -numberOfPointsAlongTheYAxis,1379 -numberOfPointsAlongXAxis,1380 -numberOfPointsAlongYAxis,1381 -numberOfPointsInDomain,1382 -numberOfPointsUsed,1383 -numberOfPressureLevelsUsedForClustering,1384 -numberOfRadarSitesUsed,1385 -numberOfRadials,1386 -numberOfReforecastYearsInModelClimate,1387 -numberOfRemaininChars,1388 -numberOfRepresentativeMember,1389 -numberOfReservedBytes,1390 -numberOfRows,1391 -numberOfSecondOrderPackedValues,1392 -numberOfSection,1393 -numberOfSingularVectorsComputed,1394 -numberOfSingularVectorsEvolved,1395 -numberOfStepsUsedForClustering,1396 -numberOfSubsets,1397 -numberOfTensOfThousandsOfYearsOfOffset,1398 -numberOfTimeRange,1399 -numberOfTimeSteps,1400 -numberOfUnexpandedDescriptors,1401 -numberOfUnusedBitsAtEndOfSection3,1402 -numberOfUsedSpatialTiles,1403 -numberOfUsedTileAttributes,1404 -numberOfVGridUsed,1405 -numberOfValues,1406 -numberOfVerticalCoordinateValues,1407 -numberOfVerticalGridDescriptors,1408 -numberOfVerticalPoints,1409 -numberingOrderOfDiamonds,1410 -numericValues,1411 -observablePropertyTemplate,1412 -observablePropertyTemplateNumber,1413 -observationDiagnostic,1414 -observationGeneratingProcessIdentifier,1415 -observationType,1416 -observedData,1417 -obstype,1418 -oceanAtmosphereCoupling,1419 -oceanStream,1420 -octetAtWichPackedDataBegins,1421 -offset,1422 -offsetAfterBitmap,1423 -offsetAfterCentreLocalSection,1424 -offsetAfterData,1425 -offsetAfterLocalSection,1426 -offsetAfterPadding,1427 -offsetBBitmap,1428 -offsetBSection5,1429 -offsetBSection6,1430 -offsetBSection9,1431 -offsetBeforeBitmap,1432 -offsetBeforeData,1433 -offsetBeforePL,1434 -offsetBeforePV,1435 -offsetDescriptors,1436 -offsetEndSection4,1437 -offsetFreeFormData,1438 -offsetFromOriginToInnerBound,1439 -offsetFromReferenceOfFirstTime,1440 -offsetICEFieldsUsed,1441 -offsetSection0,1442 -offsetSection1,1443 -offsetSection10,1444 -offsetSection11,1445 -offsetSection2,1446 -offsetSection3,1447 -offsetSection4,1448 -offsetSection5,1449 -offsetSection6,1450 -offsetSection7,1451 -offsetSection8,1452 -offsetSection9,1453 -offsetToEndOf4DvarWindow,1454 -offsetValuesBy,1455 -oldSubtype,1456 -one,1457 -oneConstant,1458 -oneMillionConstant,1459 -oneMinuteMeanMaximumRVR1,1460 -oneMinuteMeanMaximumRVR2,1461 -oneMinuteMeanMaximumRVR3,1462 -oneMinuteMeanMaximumRVR4,1463 -oneMinuteMeanMinimumRVR1,1464 -oneMinuteMeanMinimumRVR2,1465 -oneMinuteMeanMinimumRVR3,1466 -oneMinuteMeanMinimumRVR4,1467 -oneThousand,1468 -oper,1469 -operStream,1470 -operatingMode,1471 -operationalForecastCluster,1472 -optimisationTime,1473 -optimizeScaleFactor,1474 -optionalData,1475 -opttime,1476 -orderOfSPD,1477 -orderOfSpatialDifferencing,1478 -orientationOfTheGrid,1479 -orientationOfTheGridInDegrees,1480 -origin,1481 -originalParameterNumber,1482 -originalParameterTableNumber,1483 -originalSubCentreIdentifier,1484 -originatingCentre,1485 -originatingCentreOfAnalysis,1486 -originatorLocalTemplate,1487 -originatorLocalTemplateNumber,1488 -overlayTemplate,1489 -overlayTemplateNumber,1490 -pack,1491 -packedValues,1492 -packingError,1493 -packingType,1494 -padding,1495 -padding_grid1_1,1496 -padding_grid1_2,1497 -padding_grid3_1,1498 -padding_grid4_1,1499 -padding_grid50_1,1500 -padding_grid5_1,1501 -padding_grid90_1,1502 -padding_loc10_1,1503 -padding_loc13_1,1504 -padding_loc13_2,1505 -padding_loc13_3,1506 -padding_loc13_4,1507 -padding_loc13_5,1508 -padding_loc14_1,1509 -padding_loc14_2,1510 -padding_loc15_1,1511 -padding_loc16_1,1512 -padding_loc17_2,1513 -padding_loc18_1,1514 -padding_loc18_2,1515 -padding_loc190_1,1516 -padding_loc191_1,1517 -padding_loc191_2,1518 -padding_loc191_3,1519 -padding_loc192_1,1520 -padding_loc19_2,1521 -padding_loc20_1,1522 -padding_loc21_1,1523 -padding_loc23_1,1524 -padding_loc244_1,1525 -padding_loc244_2,1526 -padding_loc244_3,1527 -padding_loc245_1,1528 -padding_loc245_2,1529 -padding_loc26_1,1530 -padding_loc27_1,1531 -padding_loc27_2,1532 -padding_loc28_1,1533 -padding_loc29_1,1534 -padding_loc29_2,1535 -padding_loc29_3,1536 -padding_loc2_1,1537 -padding_loc2_2,1538 -padding_loc30_1,1539 -padding_loc30_2,1540 -padding_loc37_1,1541 -padding_loc37_2,1542 -padding_loc38_1,1543 -padding_loc3_1,1544 -padding_loc4_2,1545 -padding_loc50_1,1546 -padding_loc5_1,1547 -padding_loc6_1,1548 -padding_loc7_1,1549 -padding_loc9_1,1550 -padding_loc9_2,1551 -padding_local11_1,1552 -padding_local1_1,1553 -padding_local1_31,1554 -padding_local40_1,1555 -padding_local_35,1556 -padding_local_7_1,1557 -padding_sec1_loc,1558 -padding_sec2_1,1559 -padding_sec2_2,1560 -padding_sec2_3,1561 -padding_sec3_1,1562 -padding_sec4_1,1563 -paleontologicalOffset,1564 -param,1565 -paramId,1566 -paramIdECMF,1567 -parameter,1568 -parameterCategory,1569 -parameterCode,1570 -parameterDiscipline,1571 -parameterIndicator,1572 -parameterName,1573 -parameterNumber,1574 -parameterUnits,1575 -parameters,1576 -parametersVersion,1577 -partitionItems,1578 -partitionNumber,1579 -partitionTable,1580 -partitions,1581 -pastTendencyRVR1,1582 -pastTendencyRVR2,1583 -pastTendencyRVR3,1584 -pastTendencyRVR4,1585 -patch_precip_fp,1586 -pentagonalResolutionParameterJ,1587 -pentagonalResolutionParameterK,1588 -pentagonalResolutionParameterM,1589 -percentileValue,1590 -periodOfTime,1591 -periodOfTimeIntervals,1592 -perturbationNumber,1593 -perturbedType,1594 -phase,1595 -physicalFlag1,1596 -physicalFlag2,1597 -physicalMeaningOfVerticalCoordinate,1598 -pl,1599 -platform,1600 -plusOneinOrdersOfSPD,1601 -points,1602 -postAuxiliary,1603 -postAuxiliaryArrayPresent,1604 -powerOfTenUsedToScaleClimateWeight,1605 -preBitmapValues,1606 -preProcessingParameter,1607 -precision,1608 -precisionOfTheUnpackedSubset,1609 -predefined_grid,1610 -predefined_grid_values,1611 -present,1612 -presentTrend1,1613 -presentTrend2,1614 -presentTrend3,1615 -presentTrend4,1616 -presentWeather1Present,1617 -presentWeather1PresentTrend1,1618 -presentWeather1PresentTrend2,1619 -presentWeather1PresentTrend3,1620 -presentWeather1PresentTrend4,1621 -presentWeather2Present,1622 -presentWeather2PresentTrend1,1623 -presentWeather2PresentTrend2,1624 -presentWeather2PresentTrend3,1625 -presentWeather2PresentTrend4,1626 -presentWeather3Present,1627 -presentWeather3PresentTrend1,1628 -presentWeather3PresentTrend2,1629 -presentWeather3PresentTrend3,1630 -presentWeather3PresentTrend4,1631 -pressureLevel,1632 -pressureUnits,1633 -primaryBitmap,1634 -primaryMissingValue,1635 -primaryMissingValueSubstitute,1636 -probContinous,1637 -probPoint,1638 -probProductDefinition,1639 -probabilityType,1640 -probabilityTypeName,1641 -process,1642 -produceLargeConstantFields,1643 -product,1644 -productDefinition,1645 -productDefinitionTemplateNumber,1646 -productDefinitionTemplateNumberInternal,1647 -productIdentifier,1648 -productType,1649 -productionStatusOfProcessedData,1650 -projectLocalTemplate,1651 -projectLocalTemplateNumber,1652 -projectionCenterFlag,1653 -projectionCentreFlag,1654 -pv,1655 -pvlLocation,1656 -qfe,1657 -qfePresent,1658 -qfeUnits,1659 -qnh,1660 -qnhAPresent,1661 -qnhPresent,1662 -qnhUnits,1663 -qualityControl,1664 -qualityControlIndicator,1665 -qualityValueAssociatedWithParameter,1666 -quantile,1667 -radialAngularSpacing,1668 -radials,1669 -radius,1670 -radiusInMetres,1671 -radiusOfCentralCluster,1672 -radiusOfClusterDomain,1673 -radiusOfTheEarth,1674 -range,1675 -rangeBinSpacing,1676 -rdbDateTime,1677 -rdbSubtype,1678 -rdbType,1679 -rdb_key,1680 -rdbtime,1681 -rdbtimeDate,1682 -rdbtimeDay,1683 -rdbtimeHour,1684 -rdbtimeMinute,1685 -rdbtimeMonth,1686 -rdbtimeSecond,1687 -rdbtimeTime,1688 -rdbtimeYear,1689 -realPart,1690 -realPartOf00,1691 -recDateTime,1692 -recentWeather,1693 -recentWeatherTry,1694 -rectime,1695 -rectimeDay,1696 -rectimeHour,1697 -rectimeMinute,1698 -rectimeSecond,1699 -reducedGrid,1700 -refdate,1701 -reference,1702 -referenceDate,1703 -referenceForGroupLengths,1704 -referenceForGroupWidths,1705 -referenceOfLengths,1706 -referenceOfWidths,1707 -referenceReflectivityForEchoTop,1708 -referenceSampleInterval,1709 -referenceStep,1710 -referenceValue,1711 -referenceValueError,1712 -reflectivityCalibrationConstant,1713 -remarkPresent,1714 -reportType,1715 -representationMode,1716 -representationType,1717 -representativeMember,1718 -reserved,1719 -reserved1,1720 -reserved2,1721 -reserved3,1722 -reservedNeedNotBePresent,1723 -reservedOctet,1724 -reservedSection2,1725 -reservedSection3,1726 -reservedSection4,1727 -resolutionAndComponentFlags,1728 -resolutionAndComponentFlags1,1729 -resolutionAndComponentFlags2,1730 -resolutionAndComponentFlags3,1731 -resolutionAndComponentFlags4,1732 -resolutionAndComponentFlags6,1733 -resolutionAndComponentFlags7,1734 -resolutionAndComponentFlags8,1735 -rootGroupObjectHeaderAddress,1736 -rootGroupSymbolTableEntry,1737 -rootTablesDir,1738 -roundedMarsLatitude,1739 -roundedMarsLevelist,1740 -roundedMarsLongitude,1741 -runwayBrakingActionState1,1742 -runwayBrakingActionState2,1743 -runwayBrakingActionState3,1744 -runwayBrakingActionState4,1745 -runwayDepositCodeState1,1746 -runwayDepositCodeState2,1747 -runwayDepositCodeState3,1748 -runwayDepositCodeState4,1749 -runwayDepositState1,1750 -runwayDepositState2,1751 -runwayDepositState3,1752 -runwayDepositState4,1753 -runwayDepthOfDepositCodeState1,1754 -runwayDepthOfDepositCodeState2,1755 -runwayDepthOfDepositCodeState3,1756 -runwayDepthOfDepositCodeState4,1757 -runwayDepthOfDepositState1,1758 -runwayDepthOfDepositState2,1759 -runwayDepthOfDepositState3,1760 -runwayDepthOfDepositState4,1761 -runwayDesignatorRVR1,1762 -runwayDesignatorRVR2,1763 -runwayDesignatorRVR3,1764 -runwayDesignatorRVR4,1765 -runwayDesignatorState1,1766 -runwayDesignatorState2,1767 -runwayDesignatorState3,1768 -runwayDesignatorState4,1769 -runwayExtentOfContaminationCodeState1,1770 -runwayExtentOfContaminationCodeState2,1771 -runwayExtentOfContaminationCodeState3,1772 -runwayExtentOfContaminationCodeState4,1773 -runwayExtentOfContaminationState1,1774 -runwayExtentOfContaminationState2,1775 -runwayExtentOfContaminationState3,1776 -runwayExtentOfContaminationState4,1777 -runwayFrictionCodeValueState1,1778 -runwayFrictionCodeValueState2,1779 -runwayFrictionCodeValueState3,1780 -runwayFrictionCodeValueState4,1781 -runwayFrictionCoefficientCodeState1,1782 -runwayFrictionCoefficientCodeState2,1783 -runwayFrictionCoefficientCodeState3,1784 -runwayFrictionCoefficientCodeState4,1785 -runwayFrictionCoefficientState1,1786 -runwayFrictionCoefficientState2,1787 -runwayFrictionCoefficientState3,1788 -runwayFrictionCoefficientState4,1789 -runwaySideCodeState1,1790 -runwaySideCodeState2,1791 -runwaySideCodeState3,1792 -runwaySideCodeState4,1793 -runwayState,1794 -sampleSizeOfModelClimate,1795 -satelliteID,1796 -satelliteIdentifier,1797 -satelliteNumber,1798 -satelliteSeries,1799 -scaleFactorAtReferencePoint,1800 -scaleFactorOfCentralWaveNumber,1801 -scaleFactorOfDistanceFromEnsembleMean,1802 -scaleFactorOfDistributionFunctionParameter,1803 -scaleFactorOfEarthMajorAxis,1804 -scaleFactorOfEarthMinorAxis,1805 -scaleFactorOfFirstFixedSurface,1806 -scaleFactorOfFirstSize,1807 -scaleFactorOfFirstWavelength,1808 -scaleFactorOfLengthOfSemiMajorAxis,1809 -scaleFactorOfLengthOfSemiMinorAxis,1810 -scaleFactorOfLowerLimit,1811 -scaleFactorOfMajorAxisOfOblateSpheroidEarth,1812 -scaleFactorOfMinorAxisOfOblateSpheroidEarth,1813 -scaleFactorOfPrimeMeridianOffset,1814 -scaleFactorOfRadiusOfSphericalEarth,1815 -scaleFactorOfSecondFixedSurface,1816 -scaleFactorOfSecondSize,1817 -scaleFactorOfSecondWavelength,1818 -scaleFactorOfStandardDeviation,1819 -scaleFactorOfStandardDeviationInTheCluster,1820 -scaleFactorOfUpperLimit,1821 -scaleValuesBy,1822 -scaledDirections,1823 -scaledFrequencies,1824 -scaledValueOfCentralWaveNumber,1825 -scaledValueOfDistanceFromEnsembleMean,1826 -scaledValueOfDistributionFunctionParameter,1827 -scaledValueOfEarthMajorAxis,1828 -scaledValueOfEarthMinorAxis,1829 -scaledValueOfFirstFixedSurface,1830 -scaledValueOfFirstSize,1831 -scaledValueOfFirstWavelength,1832 -scaledValueOfLengthOfSemiMajorAxis,1833 -scaledValueOfLengthOfSemiMinorAxis,1834 -scaledValueOfLowerLimit,1835 -scaledValueOfMajorAxisOfOblateSpheroidEarth,1836 -scaledValueOfMinorAxisOfOblateSpheroidEarth,1837 -scaledValueOfPrimeMeridianOffset,1838 -scaledValueOfRadiusOfSphericalEarth,1839 -scaledValueOfSecondFixedSurface,1840 -scaledValueOfSecondSize,1841 -scaledValueOfSecondWavelength,1842 -scaledValueOfStandardDeviation,1843 -scaledValueOfStandardDeviationInTheCluster,1844 -scaledValueOfUpperLimit,1845 -scalingFactorForFrequencies,1846 -scanPosition,1847 -scanningMode,1848 -scanningMode4,1849 -scanningMode5,1850 -scanningMode6,1851 -scanningMode7,1852 -scanningMode8,1853 -scanningModeForOneDiamond,1854 -sd,1855 -second,1856 -secondDimension,1857 -secondDimensionCoordinateValueDefinition,1858 -secondDimensionPhysicalSignificance,1859 -secondLatitude,1860 -secondLatitudeInDegrees,1861 -secondOfEndOfOverallTimeInterval,1862 -secondOfForecast,1863 -secondOfModelVersion,1864 -secondOrderFlags,1865 -secondOrderOfDifferentWidth,1866 -secondOrderValuesDifferentWidths,1867 -secondaryBitMap,1868 -secondaryBitmap,1869 -secondaryBitmapPresent,1870 -secondaryBitmaps,1871 -secondaryBitmapsCount,1872 -secondaryBitmapsSize,1873 -secondaryMissingValue,1874 -secondaryMissingValueSubstitute,1875 -secondsOfAnalysis,1876 -secondsOfReference,1877 -section,1878 -section0Length,1879 -section0Pointer,1880 -section1,1881 -section10Length,1882 -section10Pointer,1883 -section11Length,1884 -section11Pointer,1885 -section1Flags,1886 -section1Length,1887 -section1Padding,1888 -section1Pointer,1889 -section2Length,1890 -section2Padding,1891 -section2Pointer,1892 -section2Present,1893 -section2Used,1894 -section3,1895 -section3Flags,1896 -section3Length,1897 -section3Padding,1898 -section3Pointer,1899 -section3UniqueIdentifier,1900 -section4,1901 -section4Length,1902 -section4Padding,1903 -section4Pointer,1904 -section4UniqueIdentifier,1905 -section5,1906 -section5Length,1907 -section5Pointer,1908 -section5UniqueIdentifier,1909 -section6,1910 -section6Length,1911 -section6Pointer,1912 -section6UniqueIdentifier,1913 -section7,1914 -section7Length,1915 -section7Pointer,1916 -section7UniqueIdentifier,1917 -section8,1918 -section8Length,1919 -section8Pointer,1920 -section8UniqueIdentifier,1921 -section9Length,1922 -section9Pointer,1923 -section9UniqueIdentifier,1924 -sectionLengthLimitForEnsembles,1925 -sectionLengthLimitForProbability,1926 -sectionNumber,1927 -sectionPosition,1928 -section_01,1929 -section_02,1930 -section_03,1931 -section_04,1932 -section_05,1933 -section_06,1934 -section_07,1935 -section_08,1936 -section_09,1937 -section_1,1938 -section_10,1939 -section_11,1940 -section_2,1941 -section_3,1942 -section_4,1943 -section_5,1944 -section_6,1945 -section_7,1946 -section_8,1947 -selectStepTemplateInstant,1948 -selectStepTemplateInterval,1949 -sensitiveAreaDomain,1950 -sequences,1951 -setBitsPerValue,1952 -setCalendarId,1953 -setDecimalPrecision,1954 -setLocalDefinition,1955 -setToMissingIfOutOfRange,1956 -sfc_levtype,1957 -shapeOfTheEarth,1958 -shapeOfVerificationArea,1959 -shortName,1960 -shortNameECMF,1961 -short_name,1962 -signature,1963 -significanceOfReferenceDateAndTime,1964 -significanceOfReferenceTime,1965 -simpleThinningMissingRadius,1966 -simpleThinningSkip,1967 -simpleThinningStart,1968 -siteElevation,1969 -siteId,1970 -siteLatitude,1971 -siteLongitude,1972 -sizeOfLength,1973 -sizeOfOffsets,1974 -sizeOfPostAuxiliaryArray,1975 -sizeOfPostAuxiliaryArrayPlusOne,1976 -skew,1977 -skewness,1978 -skipExtraKeyAttributes,1979 -sort,1980 -sourceOfGridDefinition,1981 -southEastLatitudeOfLPOArea,1982 -southEastLatitudeOfVerficationArea,1983 -southEastLongitudeOfLPOArea,1984 -southEastLongitudeOfVerficationArea,1985 -southLatitudeOfCluster,1986 -southLatitudeOfDomainOfTubing,1987 -southPoleOnProjectionPlane,1988 -southernLatitudeOfClusterDomain,1989 -southernLatitudeOfDomain,1990 -sp1,1991 -sp2,1992 -sp3,1993 -spaceUnitFlag,1994 -spacingOfBinsAlongRadials,1995 -spare,1996 -spare2,1997 -spatialProcessing,1998 -spatialSmoothingOfProduct,1999 -spectralDataRepresentationMode,2000 -spectralDataRepresentationType,2001 -spectralMode,2002 -spectralType,2003 -sphericalHarmonics,2004 -standardDeviation,2005 -standardParallel,2006 -standardParallelInDegrees,2007 -standardParallelInMicrodegrees,2008 -startOfHeaders,2009 -startOfMessage,2010 -startOfRange,2011 -startStep,2012 -startStepInHours,2013 -startTimeStep,2014 -startingAzimuth,2015 -statisticalProcess,2016 -statisticalProcessesList,2017 -statistics,2018 -status,2019 -step,2020 -stepForClustering,2021 -stepInHours,2022 -stepRange,2023 -stepRangeInHours,2024 -stepType,2025 -stepTypeForConversion,2026 -stepTypeInternal,2027 -stepUnits,2028 -stepZero,2029 -stream,2030 -streamOfAnalysis,2031 -stretchingFactor,2032 -stretchingFactorScaled,2033 -stringValues,2034 -subCentre,2035 -subDefinitions1,2036 -subDefinitions2,2037 -subLocalDefinition1,2038 -subLocalDefinition2,2039 -subLocalDefinitionLength1,2040 -subLocalDefinitionLength2,2041 -subLocalDefinitionNumber1,2042 -subLocalDefinitionNumber2,2043 -subSetJ,2044 -subSetK,2045 -subSetM,2046 -subcentreOfAnalysis,2047 -subdivisionsOfBasicAngle,2048 -suiteName,2049 -superblockExtensionAddress,2050 -swapScanningLat,2051 -swapScanningLon,2052 -swapScanningX,2053 -swapScanningY,2054 -system,2055 -systemNumber,2056 -t,2057 -table2Version,2058 -tableCode,2059 -tableNumber,2060 -tableReference,2061 -tablesLocalDir,2062 -tablesMasterDir,2063 -tablesVersion,2064 -tablesVersionLatest,2065 -targetCompressionRatio,2066 -td,2067 -tempPressureUnits,2068 -temperature,2069 -temperatureAndDewpointPresent,2070 -templatesLocalDir,2071 -templatesMasterDir,2072 -theHindcastMarsStream,2073 -theMessage,2074 -thisExperimentVersionNumber,2075 -thisMarsClass,2076 -thisMarsStream,2077 -thisMarsType,2078 -thousand,2079 -three,2080 -threshold,2081 -thresholdIndicator,2082 -tiggeCentre,2083 -tiggeLAMName,2084 -tiggeLocalVersion,2085 -tiggeModel,2086 -tiggeSection,2087 -tiggeSuiteID,2088 -tigge_name,2089 -tigge_short_name,2090 -tileClassification,2091 -tileIndex,2092 -time,2093 -timeCoordinateDefinition,2094 -timeDomainTemplate,2095 -timeDomainTemplateNumber,2096 -timeIncrement,2097 -timeIncrementBetweenSuccessiveFields,2098 -timeOfAnalysis,2099 -timeOfForecast,2100 -timeOfModelVersion,2101 -timeOfReference,2102 -timeRangeIndicator,2103 -timeRangeIndicatorFromStepRange,2104 -timeUnitFlag,2105 -timerepres,2106 -topLevel,2107 -total,2108 -totalAerosolBinsNumbers,2109 -totalInitialConditions,2110 -totalLength,2111 -totalNumber,2112 -totalNumberOfClusters,2113 -totalNumberOfDataValuesMissingInStatisticalProcess,2114 -totalNumberOfDirections,2115 -totalNumberOfForecastProbabilities,2116 -totalNumberOfFrequencies,2117 -totalNumberOfGridPoints,2118 -totalNumberOfIterations,2119 -totalNumberOfRepetitions,2120 -totalNumberOfTileAttributePairs,2121 -totalNumberOfTubes,2122 -totalNumberOfdimensions,2123 -treatmentOfMissingData,2124 -true,2125 -trueLengthOfLastGroup,2126 -truncateDegrees,2127 -truncateLaplacian,2128 -tsectionNumber3,2129 -tsectionNumber4,2130 -tsectionNumber5,2131 -tubeDomain,2132 -tubeNumber,2133 -two,2134 -twoOrdersOfSPD,2135 -type,2136 -typeOfAnalysis,2137 -typeOfAuxiliaryInformation,2138 -typeOfCalendar,2139 -typeOfCompressionUsed,2140 -typeOfDistributionFunction,2141 -typeOfEnsembleForecast,2142 -typeOfEnsembleMember,2143 -typeOfFirstFixedSurface,2144 -typeOfGeneratingProcess,2145 -typeOfGrid,2146 -typeOfHorizontalLine,2147 -typeOfIntervalForFirstAndSecondSize,2148 -typeOfIntervalForFirstAndSecondWavelength,2149 -typeOfLevel,2150 -typeOfLevelECMF,2151 -typeOfOriginalFieldValues,2152 -typeOfPacking,2153 -typeOfPostProcessing,2154 -typeOfPreProcessing,2155 -typeOfProcessedData,2156 -typeOfSSTFieldUsed,2157 -typeOfSecondFixedSurface,2158 -typeOfSizeInterval,2159 -typeOfStatisticalPostProcessingOfEnsembleMembers,2160 -typeOfStatisticalProcessing,2161 -typeOfTimeIncrement,2162 -typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing,2163 -typeOfWavelengthInterval,2164 -typicalCentury,2165 -typicalDate,2166 -typicalDateTime,2167 -typicalDay,2168 -typicalHour,2169 -typicalMinute,2170 -typicalMonth,2171 -typicalSecond,2172 -typicalTime,2173 -typicalYear,2174 -typicalYear2,2175 -typicalYearOfCentury,2176 -uco,2177 -ucs,2178 -unexpandedDescriptors,2179 -unexpandedDescriptorsEncoded,2180 -unitOfOffsetFromReferenceTime,2181 -unitOfTime,2182 -unitOfTimeIncrement,2183 -unitOfTimeRange,2184 -units,2185 -unitsBias,2186 -unitsConversionOffset,2187 -unitsConversionScaleFactor,2188 -unitsDecimalScaleFactor,2189 -unitsECMF,2190 -unitsFactor,2191 -unitsOfFirstFixedSurface,2192 -unitsOfSecondFixedSurface,2193 -unknown,2194 -unpack,2195 -unpackedError,2196 -unpackedSubsetPrecision,2197 -unpackedValues,2198 -unsignedIntegers,2199 -unusedBitsInBitmap,2200 -updateSequenceNumber,2201 -upperLimit,2202 -upperRange,2203 -upperThreshold,2204 -upperThresholdValue,2205 -userDateEnd,2206 -userDateStart,2207 -userDateTimeEnd,2208 -userDateTimeStart,2209 -userTimeEnd,2210 -userTimeStart,2211 -uuidOfHGrid,2212 -uuidOfVGrid,2213 -uvRelativeToGrid,2214 -validityDate,2215 -validityTime,2216 -values,2217 -variationOfVisibility,2218 -variationOfVisibilityDirection,2219 -variationOfVisibilityDirectionAngle,2220 -variationOfVisibilityDirectionTrend1,2221 -variationOfVisibilityDirectionTrend2,2222 -variationOfVisibilityDirectionTrend3,2223 -variationOfVisibilityDirectionTrend4,2224 -variationOfVisibilityTrend1,2225 -variationOfVisibilityTrend2,2226 -variationOfVisibilityTrend3,2227 -variationOfVisibilityTrend4,2228 -varno,2229 -verificationDate,2230 -verificationMonth,2231 -verificationYear,2232 -verifyingMonth,2233 -version,2234 -versionNumOfFilesFreeSpaceStorage,2235 -versionNumOfRootGroupSymbolTableEntry,2236 -versionNumOfSharedHeaderMessageFormat,2237 -versionNumberOfExperimentalSuite,2238 -versionNumberOfGribLocalTables,2239 -versionNumberOfSuperblock,2240 -versionOfModelClimate,2241 -verticalCoordinate,2242 -verticalCoordinateDefinition,2243 -verticalDomainTemplate,2244 -verticalDomainTemplateNumber,2245 -verticalVisibility,2246 -verticalVisibilityCoded,2247 -visibility,2248 -visibilityInKilometresTrend1,2249 -visibilityInKilometresTrend2,2250 -visibilityInKilometresTrend3,2251 -visibilityInKilometresTrend4,2252 -visibilityTrend1,2253 -visibilityTrend2,2254 -visibilityTrend3,2255 -visibilityTrend4,2256 -waveDomain,2257 -weightAppliedToClimateMonth1,2258 -westLongitudeOfCluster,2259 -westLongitudeOfDomainOfTubing,2260 -westernLongitudeOfClusterDomain,2261 -westernLongitudeOfDomain,2262 -widthOfFirstOrderValues,2263 -widthOfLengths,2264 -widthOfSPD,2265 -widthOfWidths,2266 -windDirection,2267 -windDirectionTrend1,2268 -windDirectionTrend2,2269 -windDirectionTrend3,2270 -windDirectionTrend4,2271 -windGust,2272 -windGustTrend1,2273 -windGustTrend2,2274 -windGustTrend3,2275 -windGustTrend4,2276 -windPresent,2277 -windSpeed,2278 -windSpeedTrend1,2279 -windSpeedTrend2,2280 -windSpeedTrend3,2281 -windSpeedTrend4,2282 -windUnits,2283 -windUnitsTrend1,2284 -windUnitsTrend2,2285 -windUnitsTrend3,2286 -windUnitsTrend4,2287 -windVariableDirection,2288 -windVariableDirectionTrend1,2289 -windVariableDirectionTrend2,2290 -windVariableDirectionTrend3,2291 -windVariableDirectionTrend4,2292 -wrongPadding,2293 -xCoordinateOfOriginOfSectorImage,2294 -xCoordinateOfSubSatellitePoint,2295 -xDirectionGridLength,2296 -xDirectionGridLengthInMetres,2297 -xDirectionGridLengthInMillimetres,2298 -xFirst,2299 -xLast,2300 -yCoordinateOfOriginOfSectorImage,2301 -yCoordinateOfSubSatellitePoint,2302 -yDirectionGridLength,2303 -yDirectionGridLengthInMetres,2304 -yDirectionGridLengthInMillimetres,2305 -yFirst,2306 -yLast,2307 -year,2308 -yearOfAnalysis,2309 -yearOfCentury,2310 -yearOfEndOfOverallTimeInterval,2311 -yearOfForecast,2312 -yearOfModelVersion,2313 -yearOfReference,2314 -zero,2315 +Lcx,116 +LcxInMetres,117 +Lcy,118 +LcyInMetres,119 +Less_Than_Or_To_Overall_Distribution,120 +Lo1,121 +Lo1InDegrees,122 +Lo2,123 +LoR,124 +LoV,125 +LoVInDegrees,126 +Local_Number_Members_Missing,127 +Local_Number_Members_Missing_E2,128 +Local_Number_Members_Missing_E3,129 +Local_Number_Members_Missing_E4,130 +Local_Number_Members_Possible,131 +Local_Number_Members_Possible_E2,132 +Local_Number_Members_Possible_E3,133 +Local_Number_Members_Possible_E4,134 +Local_Number_Members_Used,135 +Local_Number_Members_Used_E2,136 +Local_Number_Members_Used_E3,137 +Local_Number_Members_Used_E4,138 +Lor1,139 +Lor1InDegrees,140 +Lor2,141 +Lor2InDegrees,142 +Lux,143 +LuxInMetres,144 +Luy,145 +LuyInMetres,146 +Lx,147 +LxInMetres,148 +Ly,149 +LyInMetres,150 +M,151 +METAR,152 +METARstr,153 +MS,154 +MinuteOfModelVersion,155 +Minute_E2,156 +Minute_E3,157 +Minute_E4,158 +Missing_Model_LBC,159 +Missing_Model_LBC_E2,160 +Missing_Model_LBC_E3,161 +Missing_Model_LBC_E4,162 +Model_Additional_Information,163 +Model_Identifier,164 +Model_LBC_Member_Identifier,165 +MonthOfModelVersion,166 +N,167 +N1,168 +N2,169 +NAT,170 +NB,171 +NC,172 +NC1,173 +NC2,174 +NEAREST,175 +NG,176 +NH,177 +NINT_LOG10_RITZ,178 +NINT_RITZ_EXP,179 +NL,180 +NP,181 +NR,182 +NRj,183 +NT,184 +NUT,185 +NV,186 +Nassigned,187 +Nb,188 +Ncx,189 +Ncy,190 +Nf,191 +Ni,192 +Nj,193 +Nr,194 +NrInRadiusOfEarth,195 +Number_Combination_Ensembles_1_none,196 +Nux,197 +Nuy,198 +Nx,199 +Ny,200 +Original_CodeTable_2_Version_Number,201 +Original_Parameter_Iden_CodeTable2,202 +Original_Parameter_Identifier,203 +P,204 +P1,205 +P2,206 +PLPresent,207 +PUnset,208 +PVPresent,209 +P_INST,210 +P_TACC,211 +P_TAVG,212 +Product_Identifier,213 +RENAME,214 +RVR1_1,215 +RVR2_1,216 +RVR3_1,217 +RVR4_1,218 +SOH,219 +SPD,220 +SecondLatitude,221 +SecondOfModelVersion,222 +Show_Combination_Ensem_E2_0_no_1_yes,223 +Show_Combination_Ensem_E3_0_no_1_yes,224 +Show_Combination_Ensem_E4_0_no_1_yes,225 +Sub-Experiment_Identifier,226 +TAF,227 +TAFstr,228 +TIDE,229 +TS,230 +TScalc,231 +TT,232 +TYPE_AN,233 +TYPE_CF,234 +TYPE_FC,235 +TYPE_FF,236 +TYPE_FX,237 +TYPE_OF,238 +TYPE_OR,239 +TYPE_PF,240 +Threshold_Or_Distribution_0_no_1_yes,241 +Threshold_Or_Distribution_Units,242 +Time_Range_One_E2,243 +Time_Range_One_E3,244 +Time_Range_One_E4,245 +Time_Range_Two_E2,246 +Time_Range_Two_E3,247 +Time_Range_Two_E4,248 +Total_Number_Members_Missing,249 +Total_Number_Members_Possible,250 +Total_Number_Members_Used,251 +UseEcmfConventions,252 +Used_Model_LBC,253 +Used_Model_LBC_E2,254 +Used_Model_LBC_E3,255 +Used_Model_LBC_E4,256 +WMO,257 +WRAP,258 +WRAPstr,259 +X1,260 +X1InGridLengths,261 +X2,262 +X2InGridLengths,263 +XR,264 +XRInMetres,265 +Xo,266 +Xp,267 +XpInGridLengths,268 +Y1,269 +Y1InGridLengths,270 +Y2,271 +Y2InGridLengths,272 +YR,273 +YRInMetres,274 +YY,275 +YearOfModelVersion,276 +Yo,277 +Yp,278 +YpInGridLengths,279 +ZLBASE,280 +ZLMULT,281 +_T,282 +_TS,283 +_anoffset,284 +_leg_number,285 +_numberOfValues,286 +accumulationInterval,287 +accuracyMultipliedByFactor,288 +addEmptySection2,289 +addExtraLocalSection,290 +additionalFlagPresent,291 +addressOfFileFreeSpaceInfo,292 +aerosolType,293 +aerosolbinnumber,294 +aerosolpacking,295 +alternativeRowScanning,296 +altitudeOfTheCameraFromTheEarthSCenterMeasuredInUnitsOfTheEarth,297 +analysisOffsets,298 +angleDivisor,299 +angleMultiplier,300 +angleOfRotation,301 +angleOfRotationInDegrees,302 +angleOfRotationOfProjection,303 +angleSubdivisions,304 +angularPrecision,305 +anoffset,306 +anoffsetFirst,307 +anoffsetFrequency,308 +anoffsetLast,309 +applicationIdentifier,310 +assertion,311 +atmosphericChemicalOrPhysicalConstituentType,312 +attributeOfTile,313 +auxiliary,314 +average,315 +averaging1Flag,316 +averaging2Flag,317 +averagingPeriod,318 +avg,319 +azimuthalWidth,320 +backgroundGeneratingProcessIdentifier,321 +backgroundProcess,322 +band,323 +baseAddress,324 +baseDateEPS,325 +baseDateOfThisLeg,326 +baseTimeEPS,327 +baseTimeOfThisLeg,328 +basicAngleOfTheInitialProductionDomain,329 +beginDayTrend1,330 +beginDayTrend2,331 +beginDayTrend3,332 +beginDayTrend4,333 +beginHourTrend1,334 +beginHourTrend2,335 +beginHourTrend3,336 +beginHourTrend4,337 +beginMinuteTrend1,338 +beginMinuteTrend2,339 +beginMinuteTrend3,340 +beginMinuteTrend4,341 +beginMonthTrend1,342 +beginMonthTrend2,343 +beginMonthTrend3,344 +beginMonthTrend4,345 +beginYearTrend1,346 +beginYearTrend2,347 +beginYearTrend3,348 +beginYearTrend4,349 +biFourierCoefficients,350 +biFourierMakeTemplate,351 +biFourierPackingModeForAxes,352 +biFourierResolutionParameterM,353 +biFourierResolutionParameterN,354 +biFourierResolutionSubSetParameterM,355 +biFourierResolutionSubSetParameterN,356 +biFourierSubTruncationType,357 +biFourierTruncationType,358 +binaryScaleFactor,359 +bitMapIndicator,360 +bitmap,361 +bitmapPresent,362 +bitmapSectionPresent,363 +bitsPerValue,364 +bitsPerValueAndRepack,365 +boot_edition,366 +bottomLevel,367 +boustrophedonic,368 +boustrophedonicOrdering,369 +bufrDataEncoded,370 +bufrHeaderCentre,371 +bufrHeaderSubCentre,372 +bufrTemplate,373 +bufrdcExpandedDescriptors,374 +calendarIdPresent,375 +calendarIdentification,376 +calendarIdentificationTemplateNumber,377 +cat,378 +categories,379 +categoryType,380 +cavokOrVisibility,381 +ccccIdentifiers,382 +ccsdsBlockSize,383 +ccsdsCompressionOptionsMask,384 +ccsdsFlags,385 +ccsdsRsi,386 +ceilingAndVisibilityOK,387 +ceilingAndVisibilityOKTrend1,388 +ceilingAndVisibilityOKTrend2,389 +ceilingAndVisibilityOKTrend3,390 +ceilingAndVisibilityOKTrend4,391 +centralClusterDefinition,392 +centralLongitude,393 +centralLongitudeInDegrees,394 +centralLongitudeInMicrodegrees,395 +centre,396 +centreDescription,397 +centreForLocal,398 +centreForTable2,399 +centuryOfAnalysis,400 +centuryOfReference,401 +centuryOfReferenceTimeOfData,402 +cfName,403 +cfNameECMF,404 +cfVarName,405 +cfVarNameECMF,406 +changeDecimalPrecision,407 +changeIndicatorTrend1,408 +changeIndicatorTrend2,409 +changeIndicatorTrend3,410 +changeIndicatorTrend4,411 +changingPrecision,412 +channel,413 +channelNumber,414 +char,415 +charValues,416 +checkInternalVersion,417 +class,418 +classOfAnalysis,419 +clearTables,420 +climateDateFrom,421 +climateDateTo,422 +climatologicalRegime,423 +cloudsAbbreviation1,424 +cloudsAbbreviation1Trend1,425 +cloudsAbbreviation1Trend2,426 +cloudsAbbreviation1Trend3,427 +cloudsAbbreviation1Trend4,428 +cloudsAbbreviation2,429 +cloudsAbbreviation2Trend1,430 +cloudsAbbreviation2Trend2,431 +cloudsAbbreviation2Trend3,432 +cloudsAbbreviation2Trend4,433 +cloudsAbbreviation3,434 +cloudsAbbreviation3Trend1,435 +cloudsAbbreviation3Trend2,436 +cloudsAbbreviation3Trend3,437 +cloudsAbbreviation3Trend4,438 +cloudsAbbreviation4,439 +cloudsAbbreviation4Trend1,440 +cloudsAbbreviation4Trend2,441 +cloudsAbbreviation4Trend3,442 +cloudsAbbreviation4Trend4,443 +cloudsBase1,444 +cloudsBase1Trend1,445 +cloudsBase1Trend2,446 +cloudsBase1Trend3,447 +cloudsBase1Trend4,448 +cloudsBase2,449 +cloudsBase2Trend1,450 +cloudsBase2Trend2,451 +cloudsBase2Trend3,452 +cloudsBase2Trend4,453 +cloudsBase3,454 +cloudsBase3Trend1,455 +cloudsBase3Trend2,456 +cloudsBase3Trend3,457 +cloudsBase3Trend4,458 +cloudsBase4,459 +cloudsBase4Trend1,460 +cloudsBase4Trend2,461 +cloudsBase4Trend3,462 +cloudsBase4Trend4,463 +cloudsBaseCoded1,464 +cloudsBaseCoded1Trend1,465 +cloudsBaseCoded1Trend2,466 +cloudsBaseCoded1Trend3,467 +cloudsBaseCoded1Trend4,468 +cloudsBaseCoded2,469 +cloudsBaseCoded2Trend1,470 +cloudsBaseCoded2Trend2,471 +cloudsBaseCoded2Trend3,472 +cloudsBaseCoded2Trend4,473 +cloudsBaseCoded3,474 +cloudsBaseCoded3Trend1,475 +cloudsBaseCoded3Trend2,476 +cloudsBaseCoded3Trend3,477 +cloudsBaseCoded3Trend4,478 +cloudsBaseCoded4,479 +cloudsBaseCoded4Trend1,480 +cloudsBaseCoded4Trend2,481 +cloudsBaseCoded4Trend3,482 +cloudsBaseCoded4Trend4,483 +cloudsCode1,484 +cloudsCode1Trend1,485 +cloudsCode1Trend2,486 +cloudsCode1Trend3,487 +cloudsCode1Trend4,488 +cloudsCode2,489 +cloudsCode2Trend1,490 +cloudsCode2Trend2,491 +cloudsCode2Trend3,492 +cloudsCode2Trend4,493 +cloudsCode3,494 +cloudsCode3Trend1,495 +cloudsCode3Trend2,496 +cloudsCode3Trend3,497 +cloudsCode3Trend4,498 +cloudsCode4,499 +cloudsCode4Trend1,500 +cloudsCode4Trend2,501 +cloudsCode4Trend3,502 +cloudsCode4Trend4,503 +cloudsTitle1,504 +cloudsTitle1Trend1,505 +cloudsTitle1Trend2,506 +cloudsTitle1Trend3,507 +cloudsTitle1Trend4,508 +cloudsTitle2,509 +cloudsTitle2Trend1,510 +cloudsTitle2Trend2,511 +cloudsTitle2Trend3,512 +cloudsTitle2Trend4,513 +cloudsTitle3,514 +cloudsTitle3Trend1,515 +cloudsTitle3Trend2,516 +cloudsTitle3Trend3,517 +cloudsTitle3Trend4,518 +cloudsTitle4,519 +cloudsTitle4Trend1,520 +cloudsTitle4Trend2,521 +cloudsTitle4Trend3,522 +cloudsTitle4Trend4,523 +clusterIdentifier,524 +clusterMember1,525 +clusterMember10,526 +clusterMember2,527 +clusterMember3,528 +clusterMember4,529 +clusterMember5,530 +clusterMember6,531 +clusterMember7,532 +clusterMember8,533 +clusterMember9,534 +clusterNumber,535 +clusterSize,536 +clusteringDomain,537 +clusteringMethod,538 +clutterFilterIndicator,539 +cnmc_cmcc,540 +cnmc_isac,541 +codeFigure,542 +codeType,543 +codedNumberOfFirstOrderPackedValues,544 +codedNumberOfGroups,545 +codedValues,546 +coefsFirst,547 +coefsSecond,548 +commonBlock,549 +complexPacking,550 +componentIndex,551 +compressedData,552 +computeLaplacianOperator,553 +computeStatistics,554 +conceptDir,555 +conceptsLocalDirAll,556 +conceptsLocalDirECMF,557 +conceptsLocalMarsDirAll,558 +conceptsMasterDir,559 +conceptsMasterMarsDir,560 +consensus,561 +consensusCount,562 +const,563 +constantAntennaElevationAngle,564 +constantFieldHalfByte,565 +constituentType,566 +controlForecastCluster,567 +coordAveraging0,568 +coordAveraging1,569 +coordAveraging2,570 +coordAveraging3,571 +coordAveragingTims,572 +coordinate1End,573 +coordinate1Flag,574 +coordinate1Start,575 +coordinate2End,576 +coordinate2Flag,577 +coordinate2Start,578 +coordinate3Flag,579 +coordinate3OfFirstGridPoint,580 +coordinate3OfLastGridPoint,581 +coordinate4Flag,582 +coordinate4OfFirstGridPoint,583 +coordinate4OfLastGridPoint,584 +coordinateFlag1,585 +coordinateFlag2,586 +coordinateIndexNumber,587 +coordinatesPresent,588 +core,589 +corr1Data,590 +corr2Data,591 +corr3Data,592 +corr4Data,593 +correction,594 +correction1,595 +correction1Part,596 +correction2,597 +correction2Part,598 +correction3,599 +correction3Part,600 +correction4,601 +correction4Part,602 +count,603 +countOfGroupLengths,604 +countOfICEFieldsUsed,605 +countTotal,606 +country,607 +crcrlf,608 +createNewData,609 +daLoop,610 +data,611 +dataAccessors,612 +dataCategory,613 +dataDate,614 +dataFlag,615 +dataKeys,616 +dataLength,617 +dataOrigin,618 +dataRepresentation,619 +dataRepresentationTemplate,620 +dataRepresentationTemplateNumber,621 +dataRepresentationType,622 +dataSelection,623 +dataStream,624 +dataSubCategory,625 +dataTime,626 +dataType,627 +dataValues,628 +date,629 +dateOfAnalysis,630 +dateOfForecast,631 +dateOfForecastRun,632 +dateOfIceFieldUsed,633 +dateOfModelVersion,634 +dateOfReference,635 +dateOfSSTFieldUsed,636 +dateSSTFieldUsed,637 +dateTime,638 +datumSize,639 +day,640 +dayOfAnalysis,641 +dayOfEndOfOverallTimeInterval,642 +dayOfForecast,643 +dayOfModelVersion,644 +dayOfReference,645 +dayOfTheYearDate,646 +decimalPrecision,647 +decimalScaleFactor,648 +defaultFaFieldName,649 +defaultFaLevelName,650 +defaultFaModelName,651 +defaultName,652 +defaultParameter,653 +defaultSequence,654 +defaultShortName,655 +defaultStepUnits,656 +defaultTypeOfLevel,657 +default_step_units,658 +definitionFilesVersion,659 +deleteCalendarId,660 +deleteExtraLocalSection,661 +deleteLocalDefinition,662 +deletePV,663 +derivedForecast,664 +dewPointTemperature,665 +diagnostic,666 +diagnosticNumber,667 +diffInDays,668 +diffInHours,669 +dimension,670 +dimensionNumber,671 +dimensionType,672 +direction,673 +directionNumber,674 +directionOfVariation,675 +directionScalingFactor,676 +dirty_statistics,677 +disableGrib1LocalSection,678 +discipline,679 +distanceFromTubeToEnsembleMean,680 +distinctLatitudes,681 +distinctLongitudes,682 +doExtractArea,683 +doExtractDateTime,684 +doExtractSubsets,685 +doSimpleThinning,686 +domain,687 +driverInformationBlockAddress,688 +dummy,689 +dummy1,690 +dummy2,691 +dummyc,692 +dx,693 +dy,694 +earthIsOblate,695 +earthMajorAxis,696 +earthMajorAxisInMetres,697 +earthMinorAxis,698 +earthMinorAxisInMetres,699 +eastLongitudeOfCluster,700 +eastLongitudeOfDomainOfTubing,701 +easternLongitudeOfClusterDomain,702 +easternLongitudeOfDomain,703 +ed,704 +edition,705 +editionNumber,706 +efas_model,707 +efas_post_proc,708 +efiOrder,709 +eight,710 +elementsTable,711 +elevation,712 +eleven,713 +endDayTrend1,714 +endDayTrend2,715 +endDayTrend3,716 +endDayTrend4,717 +endDescriptors,718 +endGridDefinition,719 +endHourTrend1,720 +endHourTrend2,721 +endHourTrend3,722 +endHourTrend4,723 +endMark,724 +endMinuteTrend1,725 +endMinuteTrend2,726 +endMinuteTrend3,727 +endMinuteTrend4,728 +endMonthTrend1,729 +endMonthTrend2,730 +endMonthTrend3,731 +endMonthTrend4,732 +endOfFileAddress,733 +endOfHeadersMarker,734 +endOfInterval,735 +endOfMessage,736 +endOfProduct,737 +endOfRange,738 +endStep,739 +endStepInHours,740 +endTimeStep,741 +endYearTrend1,742 +endYearTrend2,743 +endYearTrend3,744 +endYearTrend4,745 +energyNorm,746 +enorm,747 +ensembleForecastNumbers,748 +ensembleForecastNumbersList,749 +ensembleSize,750 +ensembleStandardDeviation,751 +eps,752 +epsContinous,753 +epsPoint,754 +epsStatisticsContinous,755 +epsStatisticsPoint,756 +error,757 +expandBy,758 +expandedAbbreviations,759 +expandedCodes,760 +expandedCrex_scales,761 +expandedCrex_units,762 +expandedCrex_widths,763 +expandedDescriptors,764 +expandedNames,765 +expandedOriginalCodes,766 +expandedOriginalReferences,767 +expandedOriginalScales,768 +expandedOriginalWidths,769 +expandedTypes,770 +expandedUnits,771 +experimentVersionNumber,772 +experimentVersionNumber1,773 +experimentVersionNumber2,774 +experimentVersionNumberOfAnalysis,775 +expoffset,776 +expver,777 +extendedFlag,778 +extraDim,779 +extraDimensionPresent,780 +extraLocalSectionNumber,781 +extraLocalSectionPresent,782 +extraValues,783 +extractAreaEastLongitude,784 +extractAreaLatitudeRank,785 +extractAreaLongitudeRank,786 +extractAreaNorthLatitude,787 +extractAreaSouthLatitude,788 +extractAreaWestLongitude,789 +extractDateTimeDayEnd,790 +extractDateTimeDayRank,791 +extractDateTimeDayStart,792 +extractDateTimeEnd,793 +extractDateTimeHourEnd,794 +extractDateTimeHourRank,795 +extractDateTimeHourStart,796 +extractDateTimeMinuteEnd,797 +extractDateTimeMinuteRank,798 +extractDateTimeMinuteStart,799 +extractDateTimeMonthEnd,800 +extractDateTimeMonthRank,801 +extractDateTimeMonthStart,802 +extractDateTimeSecondEnd,803 +extractDateTimeSecondRank,804 +extractDateTimeSecondStart,805 +extractDateTimeStart,806 +extractDateTimeYearEnd,807 +extractDateTimeYearRank,808 +extractDateTimeYearStart,809 +extractSubset,810 +extractSubsetIntervalEnd,811 +extractSubsetIntervalStart,812 +extractSubsetList,813 +extractedAreaNumberOfSubsets,814 +extractedDateTimeNumberOfSubsets,815 +extremeClockwiseWindDirection,816 +extremeCounterClockwiseWindDirection,817 +extremeValuesRVR1,818 +extremeValuesRVR2,819 +extremeValuesRVR3,820 +extremeValuesRVR4,821 +faFieldName,822 +faLevelName,823 +faModelName,824 +false,825 +falseEasting,826 +falseNorthing,827 +fcmonth,828 +fcperiod,829 +fgDate,830 +fgTime,831 +file,832 +fileConsistencyFlags,833 +firstDimension,834 +firstDimensionCoordinateValueDefinition,835 +firstDimensionPhysicalSignificance,836 +firstLatitude,837 +firstLatitudeInDegrees,838 +firstMonthUsedToBuildClimateMonth1,839 +firstMonthUsedToBuildClimateMonth2,840 +firstOrderValues,841 +flag,842 +flagForAnyFurtherInformation,843 +flagForIrregularGridCoordinateList,844 +flagForNormalOrStaggeredGrid,845 +flagShowingPostAuxiliaryArrayInUse,846 +flags,847 +floatVal,848 +floatValues,849 +forecastLeadTime,850 +forecastMonth,851 +forecastOrSingularVectorNumber,852 +forecastPeriod,853 +forecastPeriodFrom,854 +forecastPeriodTo,855 +forecastProbabilityNumber,856 +forecastSteps,857 +forecastTime,858 +forecastperiod,859 +formatVersionMajorNumber,860 +formatVersionMinorNumber,861 +freeFormData,862 +frequency,863 +frequencyNumber,864 +frequencyScalingFactor,865 +functionCode,866 +g,867 +g1conceptsLocalDirAll,868 +g1conceptsMasterDir,869 +g2grid,870 +gaussianGridName,871 +genVertHeightCoords,872 +generalExtended2ordr,873 +generatingProcessIdentificationNumber,874 +generatingProcessIdentifier,875 +generatingProcessTemplate,876 +generatingProcessTemplateNumber,877 +getNumberOfValues,878 +gg,879 +global,880 +globalDomain,881 +grib1divider,882 +grib2LocalSectionNumber,883 +grib2LocalSectionPresent,884 +grib2divider,885 +grib3divider,886 +gribMasterTablesVersionNumber,887 +gribTablesVersionNo,888 +grid,889 +gridCoordinate,890 +gridDefinition,891 +gridDefinitionDescription,892 +gridDefinitionSection,893 +gridDefinitionTemplateNumber,894 +gridDescriptionSectionPresent,895 +gridName,896 +gridPointPosition,897 +gridType,898 +groupInternalNodeK,899 +groupLeafNodeK,900 +groupLengths,901 +groupSplitting,902 +groupSplittingMethodUsed,903 +groupWidth,904 +groupWidths,905 +gts_CCCC,906 +gts_TTAAii,907 +gts_ddhh00,908 +gts_header,909 +halfByte,910 +hdate,911 +headersOnly,912 +heightLevelName,913 +heightOrPressureOfLevel,914 +heightPressureEtcOfLevels,915 +hideThis,916 +horizontalCoordinateDefinition,917 +horizontalCoordinateSupplement,918 +horizontalDimensionProcessed,919 +horizontalDomainTemplate,920 +horizontalDomainTemplateNumber,921 +hour,922 +hourOfAnalysis,923 +hourOfEndOfOverallTimeInterval,924 +hourOfForecast,925 +hourOfModelVersion,926 +hourOfReference,927 +hoursAfterDataCutoff,928 +hoursAfterReferenceTimeOfDataCutoff,929 +hundred,930 +iDirectionIncrement,931 +iDirectionIncrementGiven,932 +iDirectionIncrementGridLength,933 +iDirectionIncrementInDegrees,934 +iIncrement,935 +iScansNegatively,936 +iScansPositively,937 +ident,938 +identificationNumber,939 +identificationOfOriginatingGeneratingCentre,940 +identificationOfProject,941 +identifier,942 +ieeeFloats,943 +ifsParam,944 +ijDirectionIncrementGiven,945 +implementationDateOfModelCycle,946 +incrementOfLengths,947 +indexTemplate,948 +indexTemplateNumber,949 +indexedStorageInternalNodeK,950 +indicatorOfParameter,951 +indicatorOfTypeOfLevel,952 +indicatorOfUnitForTimeIncrement,953 +indicatorOfUnitForTimeRange,954 +indicatorOfUnitOfTimeRange,955 +inputDataPresentIndicator,956 +inputDelayedDescriptorReplicationFactor,957 +inputExtendedDelayedDescriptorReplicationFactor,958 +inputOriginatingCentre,959 +inputOverriddenReferenceValues,960 +inputProcessIdentifier,961 +inputShortDelayedDescriptorReplicationFactor,962 +instrument,963 +instrumentIdentifier,964 +instrumentType,965 +integerPointValues,966 +integerScaleFactor,967 +integerScalingFactorAppliedToDirections,968 +integerScalingFactorAppliedToFrequencies,969 +integerValues,970 +internalVersion,971 +internationalDataSubCategory,972 +interpretationOfNumberOfPoints,973 +intervalBetweenTimes,974 +isAccumulation,975 +isAuto,976 +isCavok,977 +isCavokTrend1,978 +isCavokTrend2,979 +isCavokTrend3,980 +isCavokTrend4,981 +isConstant,982 +isCorrection,983 +isEPS,984 +isEps,985 +isFillup,986 +isHindcast,987 +isOctahedral,988 +isSatellite,989 +isSatelliteType,990 +isSens,991 +is_aerosol,992 +is_aerosol_optical,993 +is_chemical,994 +is_chemical_distfn,995 +is_efas,996 +is_rotated_grid,997 +is_s2s,998 +is_tigge,999 +is_uerra,1000 +isectionNumber2,1001 +isectionNumber3,1002 +isectionNumber4,1003 +isotopeIdentificationNumber,1004 +iteration,1005 +iterationNumber,1006 +iteratorDisableUnrotate,1007 +jDirectionIncrement,1008 +jDirectionIncrementGiven,1009 +jDirectionIncrementGridLength,1010 +jDirectionIncrementInDegrees,1011 +jIncrement,1012 +jPointsAreConsecutive,1013 +jScansPositively,1014 +julianDay,1015 +julianForecastDay,1016 +keyData,1017 +keyMore,1018 +keySat,1019 +kindOfProduct,1020 +kurt,1021 +kurtosis,1022 +lBB,1023 +landtype,1024 +laplacianOperator,1025 +laplacianOperatorIsSet,1026 +laplacianScalingFactor,1027 +laplacianScalingFactorUnset,1028 +lastMonthUsedToBuildClimateMonth1,1029 +lastMonthUsedToBuildClimateMonth2,1030 +latLonValues,1031 +latitude,1032 +latitudeFirstInDegrees,1033 +latitudeLastInDegrees,1034 +latitudeLongitudeValues,1035 +latitudeOfCenterPoint,1036 +latitudeOfCenterPointInDegrees,1037 +latitudeOfCentralPointInClusterDomain,1038 +latitudeOfFirstGridPoint,1039 +latitudeOfFirstGridPointInDegrees,1040 +latitudeOfIcosahedronPole,1041 +latitudeOfLastGridPoint,1042 +latitudeOfLastGridPointInDegrees,1043 +latitudeOfNorthWestCornerOfArea,1044 +latitudeOfReferencePoint,1045 +latitudeOfReferencePointInDegrees,1046 +latitudeOfSouthEastCornerOfArea,1047 +latitudeOfSouthernPole,1048 +latitudeOfSouthernPoleInDegrees,1049 +latitudeOfStretchingPole,1050 +latitudeOfStretchingPoleInDegrees,1051 +latitudeOfSubSatellitePoint,1052 +latitudeOfSubSatellitePointInDegrees,1053 +latitudeOfTangencyPoint,1054 +latitudeOfThePoleOfStretching,1055 +latitudeOfThePolePoint,1056 +latitudeOfThePolePointInDegrees,1057 +latitudeOfTheSouthernPoleOfProjection,1058 +latitudeSexagesimal,1059 +latitudeWhereDxAndDyAreSpecified,1060 +latitudeWhereDxAndDyAreSpecifiedInDegrees,1061 +latitudes,1062 +latitudesList,1063 +latitudinalDirectionGridLength,1064 +lcwfvSuiteName,1065 +leadtime,1066 +legBaseDate,1067 +legBaseTime,1068 +legNumber,1069 +legacyGaussSubarea,1070 +lengthDescriptors,1071 +lengthIncrementForTheGroupLengths,1072 +lengthOf4DvarWindow,1073 +lengthOfHeaders,1074 +lengthOfIndexTemplate,1075 +lengthOfMessage,1076 +lengthOfOriginatorLocalTemplate,1077 +lengthOfProjectLocalTemplate,1078 +lengthOfTimeRange,1079 +lev,1080 +levTypeName,1081 +level,1082 +levelIndicator,1083 +levelType,1084 +levelist,1085 +levels,1086 +levtype,1087 +libraryVersion,1088 +listMembersMissing,1089 +listMembersMissing2,1090 +listMembersMissing3,1091 +listMembersMissing4,1092 +listMembersUsed,1093 +listMembersUsed2,1094 +listMembersUsed3,1095 +listMembersUsed4,1096 +listOfContributingSpectralBands,1097 +listOfDistributionFunctionParameter,1098 +listOfEnsembleForecastNumbers,1099 +listOfModelIdentifiers,1100 +listOfParametersUsedForClustering,1101 +listOfScaledFrequencies,1102 +local,1103 +localDateTime,1104 +localDay,1105 +localDecimalScaleFactor,1106 +localDefNumberOne,1107 +localDefNumberTwo,1108 +localDefinition,1109 +localDefinitionNumber,1110 +localDir,1111 +localExtensionPadding,1112 +localFlag,1113 +localFlagLatestVersion,1114 +localHour,1115 +localLatitude,1116 +localLatitude1,1117 +localLatitude2,1118 +localLongitude,1119 +localLongitude1,1120 +localLongitude2,1121 +localMinute,1122 +localMonth,1123 +localNumberOfObservations,1124 +localSecond,1125 +localSection,1126 +localSectionPresent,1127 +localTablesVersion,1128 +localTablesVersionNumber,1129 +localUsePresent,1130 +localYear,1131 +local_padding,1132 +local_use,1133 +logTransform,1134 +longitude,1135 +longitudeFirstInDegrees,1136 +longitudeLastInDegrees,1137 +longitudeOfCenterPoint,1138 +longitudeOfCenterPointInDegrees,1139 +longitudeOfCentralPointInClusterDomain,1140 +longitudeOfFirstDiamondCenterLine,1141 +longitudeOfFirstDiamondCenterLineInDegrees,1142 +longitudeOfFirstGridPoint,1143 +longitudeOfFirstGridPointInDegrees,1144 +longitudeOfIcosahedronPole,1145 +longitudeOfLastGridPoint,1146 +longitudeOfLastGridPointInDegrees,1147 +longitudeOfNorthWestCornerOfArea,1148 +longitudeOfReferencePoint,1149 +longitudeOfReferencePointInDegrees,1150 +longitudeOfSouthEastCornerOfArea,1151 +longitudeOfSouthernPole,1152 +longitudeOfSouthernPoleInDegrees,1153 +longitudeOfStretchingPole,1154 +longitudeOfStretchingPoleInDegrees,1155 +longitudeOfSubSatellitePoint,1156 +longitudeOfSubSatellitePointInDegrees,1157 +longitudeOfTangencyPoint,1158 +longitudeOfThePoleOfStretching,1159 +longitudeOfThePolePoint,1160 +longitudeOfThePolePointInDegrees,1161 +longitudeOfTheSouthernPoleOfProjection,1162 +longitudeSexagesimal,1163 +longitudes,1164 +longitudesList,1165 +longitudinalDirectionGridLength,1166 +lowerLimit,1167 +lowerRange,1168 +lowerThreshold,1169 +lowerThresholdValue,1170 +ls_labeling,1171 +lsdate_bug,1172 +m,1173 +mAngleMultiplier,1174 +mBasicAngle,1175 +mars,1176 +marsClass,1177 +marsClass1,1178 +marsClass2,1179 +marsDir,1180 +marsDomain,1181 +marsEndStep,1182 +marsExperimentOffset,1183 +marsExpver,1184 +marsForecastMonth,1185 +marsGrid,1186 +marsIdent,1187 +marsKeywords,1188 +marsKeywords1,1189 +marsLamModel,1190 +marsLatitude,1191 +marsLevel,1192 +marsLevelist,1193 +marsLongitude,1194 +marsModel,1195 +marsParam,1196 +marsQuantile,1197 +marsRange,1198 +marsStartStep,1199 +marsStep,1200 +marsStream,1201 +marsStream1,1202 +marsStream2,1203 +marsType,1204 +marsType1,1205 +marsType2,1206 +mars_labeling,1207 +mask,1208 +masterDir,1209 +masterTableNumber,1210 +masterTablesVersionNumber,1211 +masterTablesVersionNumberLatest,1212 +matchAerosolBinNumber,1213 +matchAerosolPacking,1214 +matchLandType,1215 +matchSort,1216 +matchTimeRepres,1217 +matrixBitmapsPresent,1218 +matrixOfValues,1219 +max,1220 +maximum,1221 +md5Data,1222 +md5DataSection,1223 +md5GridSection,1224 +md5Headers,1225 +md5Product,1226 +md5Section1,1227 +md5Section10,1228 +md5Section2,1229 +md5Section3,1230 +md5Section4,1231 +md5Section5,1232 +md5Section6,1233 +md5Section7,1234 +md5Section8,1235 +md5Section9,1236 +md5Structure,1237 +md5TimeDomainSection,1238 +meanRVR1,1239 +meanRVR2,1240 +meanRVR3,1241 +meanRVR4,1242 +meanSize,1243 +meanValueRVR1,1244 +meanValueRVR2,1245 +meanValueRVR3,1246 +meanValueRVR4,1247 +meaningOfVerticalCoordinate,1248 +memberNumber,1249 +messageLength,1250 +metadata,1251 +method,1252 +methodNumber,1253 +million,1254 +min,1255 +minimum,1256 +minute,1257 +minuteOfAnalysis,1258 +minuteOfEndOfOverallTimeInterval,1259 +minuteOfForecast,1260 +minuteOfModelVersion,1261 +minuteOfReference,1262 +minutesAfterDataCutoff,1263 +minutesAfterReferenceTimeOfDataCutoff,1264 +missingDataFlag,1265 +missingValue,1266 +missingValueManagement,1267 +missingValueManagementUsed,1268 +missingValuesPresent,1269 +mixedCoordinateDefinition,1270 +mixedCoordinateFieldFlag,1271 +modeNumber,1272 +model,1273 +modelErrorType,1274 +modelIdentifier,1275 +modelName,1276 +modelVersionDate,1277 +modelVersionTime,1278 +molarMass,1279 +month,1280 +monthOfAnalysis,1281 +monthOfEndOfOverallTimeInterval,1282 +monthOfForecast,1283 +monthOfModelVersion,1284 +monthOfReference,1285 +monthlyVerificationDate,1286 +monthlyVerificationMonth,1287 +monthlyVerificationTime,1288 +monthlyVerificationYear,1289 +multiplicationFactorForLatLong,1290 +mybits,1291 +n,1292 +n2,1293 +n3,1294 +na,1295 +name,1296 +nameECMF,1297 +nameOfFirstFixedSurface,1298 +nameOfSecondFixedSurface,1299 +names,1300 +nd,1301 +neitherPresent,1302 +newSubtype,1303 +nlev,1304 +nnn,1305 +normAtFinalTime,1306 +normAtInitialTime,1307 +normal,1308 +northLatitudeOfCluster,1309 +northLatitudeOfDomainOfTubing,1310 +northWestLatitudeOfLPOArea,1311 +northWestLatitudeOfVerficationArea,1312 +northWestLongitudeOfLPOArea,1313 +northWestLongitudeOfVerficationArea,1314 +northernLatitudeOfClusterDomain,1315 +northernLatitudeOfDomain,1316 +nosigPresent,1317 +notDecoded,1318 +nt,1319 +number,1320 +numberInHorizontalCoordinates,1321 +numberInMixedCoordinateDefinition,1322 +numberInTheAuxiliaryArray,1323 +numberInTheGridCoordinateList,1324 +numberIncludedInAverage,1325 +numberMissingFromAveragesOrAccumulations,1326 +numberOfAnalysis,1327 +numberOfBits,1328 +numberOfBitsContainingEachPackedValue,1329 +numberOfBitsForScaledGroupLengths,1330 +numberOfBitsUsedForTheGroupWidths,1331 +numberOfBitsUsedForTheScaledGroupLengths,1332 +numberOfBytesInLocalDefinition,1333 +numberOfBytesOfFreeFormatData,1334 +numberOfBytesPerInteger,1335 +numberOfCategories,1336 +numberOfCharacters,1337 +numberOfChars,1338 +numberOfClusterHighResolution,1339 +numberOfClusterLowResolution,1340 +numberOfClusters,1341 +numberOfCodedValues,1342 +numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction,1343 +numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction,1344 +numberOfColumns,1345 +numberOfComponents,1346 +numberOfContributingSpectralBands,1347 +numberOfControlForecastTube,1348 +numberOfCoordinatesValues,1349 +numberOfDataBinsAlongRadials,1350 +numberOfDataMatrices,1351 +numberOfDataPoints,1352 +numberOfDataPointsExpected,1353 +numberOfDataValues,1354 +numberOfDaysInClimateSamplingWindow,1355 +numberOfDiamonds,1356 +numberOfDirections,1357 +numberOfDistinctSection3s,1358 +numberOfDistinctSection4s,1359 +numberOfDistinctSection5s,1360 +numberOfDistinctSection6s,1361 +numberOfDistinctSection7s,1362 +numberOfDistinctSection8s,1363 +numberOfDistinctSection9s,1364 +numberOfDistributionFunctionParameters,1365 +numberOfEffectiveValues,1366 +numberOfFloats,1367 +numberOfForcasts,1368 +numberOfForecastsInCluster,1369 +numberOfForecastsInEnsemble,1370 +numberOfForecastsInTheCluster,1371 +numberOfForecastsInTube,1372 +numberOfFrequencies,1373 +numberOfGridInReference,1374 +numberOfGridUsed,1375 +numberOfGroups,1376 +numberOfGroupsOfDataValues,1377 +numberOfHorizontalPoints,1378 +numberOfIntegers,1379 +numberOfInts,1380 +numberOfIterations,1381 +numberOfLocalDefinitions,1382 +numberOfLogicals,1383 +numberOfMembersInCluster,1384 +numberOfMembersInEnsemble,1385 +numberOfMissing,1386 +numberOfMissingInStatisticalProcess,1387 +numberOfMissingValues,1388 +numberOfModeOfDistribution,1389 +numberOfModels,1390 +numberOfOctectsForNumberOfPoints,1391 +numberOfOctetsExtraDescriptors,1392 +numberOfOperationalForecastTube,1393 +numberOfPackedValues,1394 +numberOfParallelsBetweenAPoleAndTheEquator,1395 +numberOfParametersUsedForClustering,1396 +numberOfPartitions,1397 +numberOfPoints,1398 +numberOfPointsAlongAMeridian,1399 +numberOfPointsAlongAParallel,1400 +numberOfPointsAlongFirstAxis,1401 +numberOfPointsAlongSecondAxis,1402 +numberOfPointsAlongTheXAxis,1403 +numberOfPointsAlongTheYAxis,1404 +numberOfPointsAlongXAxis,1405 +numberOfPointsAlongXAxisInCouplingArea,1406 +numberOfPointsAlongYAxis,1407 +numberOfPointsAlongYAxisInCouplingArea,1408 +numberOfPointsInDomain,1409 +numberOfPointsUsed,1410 +numberOfPressureLevelsUsedForClustering,1411 +numberOfRadarSitesUsed,1412 +numberOfRadials,1413 +numberOfReforecastYearsInModelClimate,1414 +numberOfRemaininChars,1415 +numberOfRepresentativeMember,1416 +numberOfReservedBytes,1417 +numberOfRows,1418 +numberOfSecondOrderPackedValues,1419 +numberOfSection,1420 +numberOfSingularVectorsComputed,1421 +numberOfSingularVectorsEvolved,1422 +numberOfStepsUsedForClustering,1423 +numberOfSubsets,1424 +numberOfTensOfThousandsOfYearsOfOffset,1425 +numberOfTimeRange,1426 +numberOfTimeSteps,1427 +numberOfUnexpandedDescriptors,1428 +numberOfUnusedBitsAtEndOfSection3,1429 +numberOfUsedSpatialTiles,1430 +numberOfUsedTileAttributes,1431 +numberOfUsefulPointsAlongXAxis,1432 +numberOfUsefulPointsAlongYAxis,1433 +numberOfVGridUsed,1434 +numberOfValues,1435 +numberOfVerticalCoordinateValues,1436 +numberOfVerticalGridDescriptors,1437 +numberOfVerticalPoints,1438 +numberingOrderOfDiamonds,1439 +numericValues,1440 +observablePropertyTemplate,1441 +observablePropertyTemplateNumber,1442 +observationDiagnostic,1443 +observationGeneratingProcessIdentifier,1444 +observationType,1445 +observedData,1446 +obstype,1447 +oceanAtmosphereCoupling,1448 +oceanStream,1449 +octetAtWichPackedDataBegins,1450 +offset,1451 +offsetAfterBitmap,1452 +offsetAfterCentreLocalSection,1453 +offsetAfterData,1454 +offsetAfterLocalSection,1455 +offsetAfterPadding,1456 +offsetBBitmap,1457 +offsetBSection5,1458 +offsetBSection6,1459 +offsetBSection9,1460 +offsetBeforeBitmap,1461 +offsetBeforeData,1462 +offsetBeforePL,1463 +offsetBeforePV,1464 +offsetDescriptors,1465 +offsetEndSection4,1466 +offsetFreeFormData,1467 +offsetFromOriginToInnerBound,1468 +offsetFromReferenceOfFirstTime,1469 +offsetICEFieldsUsed,1470 +offsetSection0,1471 +offsetSection1,1472 +offsetSection10,1473 +offsetSection11,1474 +offsetSection2,1475 +offsetSection3,1476 +offsetSection4,1477 +offsetSection5,1478 +offsetSection6,1479 +offsetSection7,1480 +offsetSection8,1481 +offsetSection9,1482 +offsetToEndOf4DvarWindow,1483 +offsetValuesBy,1484 +oldSubtype,1485 +one,1486 +oneConstant,1487 +oneMillionConstant,1488 +oneMinuteMeanMaximumRVR1,1489 +oneMinuteMeanMaximumRVR2,1490 +oneMinuteMeanMaximumRVR3,1491 +oneMinuteMeanMaximumRVR4,1492 +oneMinuteMeanMinimumRVR1,1493 +oneMinuteMeanMinimumRVR2,1494 +oneMinuteMeanMinimumRVR3,1495 +oneMinuteMeanMinimumRVR4,1496 +oneThousand,1497 +oper,1498 +operStream,1499 +operatingMode,1500 +operationalForecastCluster,1501 +optimisationTime,1502 +optimizeScaleFactor,1503 +optionalData,1504 +opttime,1505 +orderOfSPD,1506 +orderOfSpatialDifferencing,1507 +orientationOfTheGrid,1508 +orientationOfTheGridInDegrees,1509 +origin,1510 +originalParameterNumber,1511 +originalParameterTableNumber,1512 +originalSubCentreIdentifier,1513 +originatingCentre,1514 +originatingCentreOfAnalysis,1515 +originatorLocalTemplate,1516 +originatorLocalTemplateNumber,1517 +overlayTemplate,1518 +overlayTemplateNumber,1519 +pack,1520 +packedValues,1521 +packingError,1522 +packingType,1523 +padding,1524 +padding_grid1_1,1525 +padding_grid1_2,1526 +padding_grid3_1,1527 +padding_grid4_1,1528 +padding_grid50_1,1529 +padding_grid5_1,1530 +padding_grid90_1,1531 +padding_loc10_1,1532 +padding_loc13_1,1533 +padding_loc13_2,1534 +padding_loc13_3,1535 +padding_loc13_4,1536 +padding_loc13_5,1537 +padding_loc14_1,1538 +padding_loc14_2,1539 +padding_loc15_1,1540 +padding_loc16_1,1541 +padding_loc17_2,1542 +padding_loc18_1,1543 +padding_loc18_2,1544 +padding_loc190_1,1545 +padding_loc191_1,1546 +padding_loc191_2,1547 +padding_loc191_3,1548 +padding_loc192_1,1549 +padding_loc19_2,1550 +padding_loc20_1,1551 +padding_loc21_1,1552 +padding_loc23_1,1553 +padding_loc244_1,1554 +padding_loc244_2,1555 +padding_loc244_3,1556 +padding_loc245_1,1557 +padding_loc245_2,1558 +padding_loc26_1,1559 +padding_loc27_1,1560 +padding_loc27_2,1561 +padding_loc28_1,1562 +padding_loc29_1,1563 +padding_loc29_2,1564 +padding_loc29_3,1565 +padding_loc2_1,1566 +padding_loc2_2,1567 +padding_loc30_1,1568 +padding_loc30_2,1569 +padding_loc37_1,1570 +padding_loc37_2,1571 +padding_loc38_1,1572 +padding_loc3_1,1573 +padding_loc4_2,1574 +padding_loc50_1,1575 +padding_loc5_1,1576 +padding_loc6_1,1577 +padding_loc7_1,1578 +padding_loc9_1,1579 +padding_loc9_2,1580 +padding_local11_1,1581 +padding_local1_1,1582 +padding_local1_31,1583 +padding_local40_1,1584 +padding_local_35,1585 +padding_local_7_1,1586 +padding_sec1_loc,1587 +padding_sec2_1,1588 +padding_sec2_2,1589 +padding_sec2_3,1590 +padding_sec3_1,1591 +padding_sec4_1,1592 +paleontologicalOffset,1593 +param,1594 +paramId,1595 +paramIdECMF,1596 +parameter,1597 +parameterCategory,1598 +parameterCode,1599 +parameterDiscipline,1600 +parameterIndicator,1601 +parameterName,1602 +parameterNumber,1603 +parameterUnits,1604 +parameters,1605 +parametersVersion,1606 +partitionItems,1607 +partitionNumber,1608 +partitionTable,1609 +partitions,1610 +pastTendencyRVR1,1611 +pastTendencyRVR2,1612 +pastTendencyRVR3,1613 +pastTendencyRVR4,1614 +patch_precip_fp,1615 +pentagonalResolutionParameterJ,1616 +pentagonalResolutionParameterK,1617 +pentagonalResolutionParameterM,1618 +percentileValue,1619 +periodOfTime,1620 +periodOfTimeIntervals,1621 +perturbationNumber,1622 +perturbedType,1623 +phase,1624 +physicalFlag1,1625 +physicalFlag2,1626 +physicalMeaningOfVerticalCoordinate,1627 +pl,1628 +platform,1629 +plusOneinOrdersOfSPD,1630 +points,1631 +postAuxiliary,1632 +postAuxiliaryArrayPresent,1633 +powerOfTenUsedToScaleClimateWeight,1634 +preBitmapValues,1635 +preProcessingParameter,1636 +precision,1637 +precisionOfTheUnpackedSubset,1638 +predefined_grid,1639 +predefined_grid_values,1640 +present,1641 +presentTrend1,1642 +presentTrend2,1643 +presentTrend3,1644 +presentTrend4,1645 +presentWeather1Present,1646 +presentWeather1PresentTrend1,1647 +presentWeather1PresentTrend2,1648 +presentWeather1PresentTrend3,1649 +presentWeather1PresentTrend4,1650 +presentWeather2Present,1651 +presentWeather2PresentTrend1,1652 +presentWeather2PresentTrend2,1653 +presentWeather2PresentTrend3,1654 +presentWeather2PresentTrend4,1655 +presentWeather3Present,1656 +presentWeather3PresentTrend1,1657 +presentWeather3PresentTrend2,1658 +presentWeather3PresentTrend3,1659 +presentWeather3PresentTrend4,1660 +pressureLevel,1661 +pressureUnits,1662 +primaryBitmap,1663 +primaryMissingValue,1664 +primaryMissingValueSubstitute,1665 +probContinous,1666 +probPoint,1667 +probProductDefinition,1668 +probabilityType,1669 +probabilityTypeName,1670 +process,1671 +produceLargeConstantFields,1672 +product,1673 +productDefinition,1674 +productDefinitionTemplateNumber,1675 +productDefinitionTemplateNumberInternal,1676 +productIdentifier,1677 +productType,1678 +productionStatusOfProcessedData,1679 +projectLocalTemplate,1680 +projectLocalTemplateNumber,1681 +projectionCenterFlag,1682 +projectionCentreFlag,1683 +pv,1684 +pvlLocation,1685 +qfe,1686 +qfePresent,1687 +qfeUnits,1688 +qnh,1689 +qnhAPresent,1690 +qnhPresent,1691 +qnhUnits,1692 +qualityControl,1693 +qualityControlIndicator,1694 +qualityValueAssociatedWithParameter,1695 +quantile,1696 +radialAngularSpacing,1697 +radials,1698 +radius,1699 +radiusInMetres,1700 +radiusOfCentralCluster,1701 +radiusOfClusterDomain,1702 +radiusOfTheEarth,1703 +range,1704 +rangeBinSpacing,1705 +rdbDateTime,1706 +rdbSubtype,1707 +rdbType,1708 +rdb_key,1709 +rdbtime,1710 +rdbtimeDate,1711 +rdbtimeDay,1712 +rdbtimeHour,1713 +rdbtimeMinute,1714 +rdbtimeMonth,1715 +rdbtimeSecond,1716 +rdbtimeTime,1717 +rdbtimeYear,1718 +realPart,1719 +realPartOf00,1720 +recDateTime,1721 +recentWeather,1722 +recentWeatherTry,1723 +rectime,1724 +rectimeDay,1725 +rectimeHour,1726 +rectimeMinute,1727 +rectimeSecond,1728 +reducedGrid,1729 +refdate,1730 +reference,1731 +referenceDate,1732 +referenceForGroupLengths,1733 +referenceForGroupWidths,1734 +referenceOfLengths,1735 +referenceOfWidths,1736 +referenceReflectivityForEchoTop,1737 +referenceSampleInterval,1738 +referenceStep,1739 +referenceValue,1740 +referenceValueError,1741 +reflectivityCalibrationConstant,1742 +remarkPresent,1743 +reportType,1744 +representationMode,1745 +representationType,1746 +representativeMember,1747 +reserved,1748 +reserved1,1749 +reserved2,1750 +reserved3,1751 +reservedNeedNotBePresent,1752 +reservedOctet,1753 +reservedSection2,1754 +reservedSection3,1755 +reservedSection4,1756 +resolutionAndComponentFlags,1757 +resolutionAndComponentFlags1,1758 +resolutionAndComponentFlags2,1759 +resolutionAndComponentFlags3,1760 +resolutionAndComponentFlags4,1761 +resolutionAndComponentFlags6,1762 +resolutionAndComponentFlags7,1763 +resolutionAndComponentFlags8,1764 +rootGroupObjectHeaderAddress,1765 +rootGroupSymbolTableEntry,1766 +rootTablesDir,1767 +roundedMarsLatitude,1768 +roundedMarsLevelist,1769 +roundedMarsLongitude,1770 +runwayBrakingActionState1,1771 +runwayBrakingActionState2,1772 +runwayBrakingActionState3,1773 +runwayBrakingActionState4,1774 +runwayDepositCodeState1,1775 +runwayDepositCodeState2,1776 +runwayDepositCodeState3,1777 +runwayDepositCodeState4,1778 +runwayDepositState1,1779 +runwayDepositState2,1780 +runwayDepositState3,1781 +runwayDepositState4,1782 +runwayDepthOfDepositCodeState1,1783 +runwayDepthOfDepositCodeState2,1784 +runwayDepthOfDepositCodeState3,1785 +runwayDepthOfDepositCodeState4,1786 +runwayDepthOfDepositState1,1787 +runwayDepthOfDepositState2,1788 +runwayDepthOfDepositState3,1789 +runwayDepthOfDepositState4,1790 +runwayDesignatorRVR1,1791 +runwayDesignatorRVR2,1792 +runwayDesignatorRVR3,1793 +runwayDesignatorRVR4,1794 +runwayDesignatorState1,1795 +runwayDesignatorState2,1796 +runwayDesignatorState3,1797 +runwayDesignatorState4,1798 +runwayExtentOfContaminationCodeState1,1799 +runwayExtentOfContaminationCodeState2,1800 +runwayExtentOfContaminationCodeState3,1801 +runwayExtentOfContaminationCodeState4,1802 +runwayExtentOfContaminationState1,1803 +runwayExtentOfContaminationState2,1804 +runwayExtentOfContaminationState3,1805 +runwayExtentOfContaminationState4,1806 +runwayFrictionCodeValueState1,1807 +runwayFrictionCodeValueState2,1808 +runwayFrictionCodeValueState3,1809 +runwayFrictionCodeValueState4,1810 +runwayFrictionCoefficientCodeState1,1811 +runwayFrictionCoefficientCodeState2,1812 +runwayFrictionCoefficientCodeState3,1813 +runwayFrictionCoefficientCodeState4,1814 +runwayFrictionCoefficientState1,1815 +runwayFrictionCoefficientState2,1816 +runwayFrictionCoefficientState3,1817 +runwayFrictionCoefficientState4,1818 +runwaySideCodeState1,1819 +runwaySideCodeState2,1820 +runwaySideCodeState3,1821 +runwaySideCodeState4,1822 +runwayState,1823 +sampleSizeOfModelClimate,1824 +satelliteID,1825 +satelliteIdentifier,1826 +satelliteNumber,1827 +satelliteSeries,1828 +scaleFactorAtReferencePoint,1829 +scaleFactorOfCentralWaveNumber,1830 +scaleFactorOfDistanceFromEnsembleMean,1831 +scaleFactorOfDistributionFunctionParameter,1832 +scaleFactorOfEarthMajorAxis,1833 +scaleFactorOfEarthMinorAxis,1834 +scaleFactorOfFirstFixedSurface,1835 +scaleFactorOfFirstSize,1836 +scaleFactorOfFirstWavelength,1837 +scaleFactorOfLengthOfSemiMajorAxis,1838 +scaleFactorOfLengthOfSemiMinorAxis,1839 +scaleFactorOfLowerLimit,1840 +scaleFactorOfMajorAxisOfOblateSpheroidEarth,1841 +scaleFactorOfMinorAxisOfOblateSpheroidEarth,1842 +scaleFactorOfPrimeMeridianOffset,1843 +scaleFactorOfRadiusOfSphericalEarth,1844 +scaleFactorOfSecondFixedSurface,1845 +scaleFactorOfSecondSize,1846 +scaleFactorOfSecondWavelength,1847 +scaleFactorOfStandardDeviation,1848 +scaleFactorOfStandardDeviationInTheCluster,1849 +scaleFactorOfUpperLimit,1850 +scaleValuesBy,1851 +scaledDirections,1852 +scaledFrequencies,1853 +scaledValueOfCentralWaveNumber,1854 +scaledValueOfDistanceFromEnsembleMean,1855 +scaledValueOfDistributionFunctionParameter,1856 +scaledValueOfEarthMajorAxis,1857 +scaledValueOfEarthMinorAxis,1858 +scaledValueOfFirstFixedSurface,1859 +scaledValueOfFirstSize,1860 +scaledValueOfFirstWavelength,1861 +scaledValueOfLengthOfSemiMajorAxis,1862 +scaledValueOfLengthOfSemiMinorAxis,1863 +scaledValueOfLowerLimit,1864 +scaledValueOfMajorAxisOfOblateSpheroidEarth,1865 +scaledValueOfMinorAxisOfOblateSpheroidEarth,1866 +scaledValueOfPrimeMeridianOffset,1867 +scaledValueOfRadiusOfSphericalEarth,1868 +scaledValueOfSecondFixedSurface,1869 +scaledValueOfSecondSize,1870 +scaledValueOfSecondWavelength,1871 +scaledValueOfStandardDeviation,1872 +scaledValueOfStandardDeviationInTheCluster,1873 +scaledValueOfUpperLimit,1874 +scalingFactorForFrequencies,1875 +scanPosition,1876 +scanningMode,1877 +scanningMode4,1878 +scanningMode5,1879 +scanningMode6,1880 +scanningMode7,1881 +scanningMode8,1882 +scanningModeForOneDiamond,1883 +sd,1884 +second,1885 +secondDimension,1886 +secondDimensionCoordinateValueDefinition,1887 +secondDimensionPhysicalSignificance,1888 +secondLatitude,1889 +secondLatitudeInDegrees,1890 +secondOfEndOfOverallTimeInterval,1891 +secondOfForecast,1892 +secondOfModelVersion,1893 +secondOrderFlags,1894 +secondOrderOfDifferentWidth,1895 +secondOrderValuesDifferentWidths,1896 +secondaryBitMap,1897 +secondaryBitmap,1898 +secondaryBitmapPresent,1899 +secondaryBitmaps,1900 +secondaryBitmapsCount,1901 +secondaryBitmapsSize,1902 +secondaryMissingValue,1903 +secondaryMissingValueSubstitute,1904 +secondsOfAnalysis,1905 +secondsOfReference,1906 +section,1907 +section0Length,1908 +section0Pointer,1909 +section1,1910 +section10Length,1911 +section10Pointer,1912 +section11Length,1913 +section11Pointer,1914 +section1Flags,1915 +section1Length,1916 +section1Padding,1917 +section1Pointer,1918 +section2Length,1919 +section2Padding,1920 +section2Pointer,1921 +section2Present,1922 +section2Used,1923 +section3,1924 +section3Flags,1925 +section3Length,1926 +section3Padding,1927 +section3Pointer,1928 +section3UniqueIdentifier,1929 +section4,1930 +section4Length,1931 +section4Padding,1932 +section4Pointer,1933 +section4UniqueIdentifier,1934 +section5,1935 +section5Length,1936 +section5Pointer,1937 +section5UniqueIdentifier,1938 +section6,1939 +section6Length,1940 +section6Pointer,1941 +section6UniqueIdentifier,1942 +section7,1943 +section7Length,1944 +section7Pointer,1945 +section7UniqueIdentifier,1946 +section8,1947 +section8Length,1948 +section8Pointer,1949 +section8UniqueIdentifier,1950 +section9Length,1951 +section9Pointer,1952 +section9UniqueIdentifier,1953 +sectionLengthLimitForEnsembles,1954 +sectionLengthLimitForProbability,1955 +sectionNumber,1956 +sectionPosition,1957 +section_01,1958 +section_02,1959 +section_03,1960 +section_04,1961 +section_05,1962 +section_06,1963 +section_07,1964 +section_08,1965 +section_09,1966 +section_1,1967 +section_10,1968 +section_11,1969 +section_2,1970 +section_3,1971 +section_4,1972 +section_5,1973 +section_6,1974 +section_7,1975 +section_8,1976 +selectStepTemplateInstant,1977 +selectStepTemplateInterval,1978 +sensitiveAreaDomain,1979 +sequences,1980 +setBitsPerValue,1981 +setCalendarId,1982 +setDecimalPrecision,1983 +setLocalDefinition,1984 +setToMissingIfOutOfRange,1985 +sfc_levtype,1986 +shapeOfTheEarth,1987 +shapeOfVerificationArea,1988 +shortName,1989 +shortNameECMF,1990 +short_name,1991 +signature,1992 +significanceOfReferenceDateAndTime,1993 +significanceOfReferenceTime,1994 +simpleThinningMissingRadius,1995 +simpleThinningSkip,1996 +simpleThinningStart,1997 +siteElevation,1998 +siteId,1999 +siteLatitude,2000 +siteLongitude,2001 +sizeOfLength,2002 +sizeOfOffsets,2003 +sizeOfPostAuxiliaryArray,2004 +sizeOfPostAuxiliaryArrayPlusOne,2005 +skew,2006 +skewness,2007 +skipExtraKeyAttributes,2008 +sort,2009 +sourceOfGridDefinition,2010 +southEastLatitudeOfLPOArea,2011 +southEastLatitudeOfVerficationArea,2012 +southEastLongitudeOfLPOArea,2013 +southEastLongitudeOfVerficationArea,2014 +southLatitudeOfCluster,2015 +southLatitudeOfDomainOfTubing,2016 +southPoleOnProjectionPlane,2017 +southernLatitudeOfClusterDomain,2018 +southernLatitudeOfDomain,2019 +sp1,2020 +sp2,2021 +sp3,2022 +spaceUnitFlag,2023 +spacingOfBinsAlongRadials,2024 +spare,2025 +spare2,2026 +spatialProcessing,2027 +spatialSmoothingOfProduct,2028 +spectralDataRepresentationMode,2029 +spectralDataRepresentationType,2030 +spectralMode,2031 +spectralType,2032 +sphericalHarmonics,2033 +standardDeviation,2034 +standardParallel,2035 +standardParallelInDegrees,2036 +standardParallelInMicrodegrees,2037 +startOfHeaders,2038 +startOfMessage,2039 +startOfRange,2040 +startStep,2041 +startStepInHours,2042 +startTimeStep,2043 +startingAzimuth,2044 +statisticalProcess,2045 +statisticalProcessesList,2046 +statistics,2047 +status,2048 +step,2049 +stepForClustering,2050 +stepInHours,2051 +stepRange,2052 +stepRangeInHours,2053 +stepType,2054 +stepTypeForConversion,2055 +stepTypeInternal,2056 +stepUnits,2057 +stepZero,2058 +stream,2059 +streamOfAnalysis,2060 +stretchingFactor,2061 +stretchingFactorScaled,2062 +stringValues,2063 +subCentre,2064 +subDefinitions1,2065 +subDefinitions2,2066 +subLocalDefinition1,2067 +subLocalDefinition2,2068 +subLocalDefinitionLength1,2069 +subLocalDefinitionLength2,2070 +subLocalDefinitionNumber1,2071 +subLocalDefinitionNumber2,2072 +subSetJ,2073 +subSetK,2074 +subSetM,2075 +subcentreOfAnalysis,2076 +subdivisionsOfBasicAngle,2077 +suiteName,2078 +superblockExtensionAddress,2079 +swapScanningLat,2080 +swapScanningLon,2081 +swapScanningX,2082 +swapScanningY,2083 +system,2084 +systemNumber,2085 +t,2086 +table2Version,2087 +tableCode,2088 +tableNumber,2089 +tableReference,2090 +tablesLocalDir,2091 +tablesMasterDir,2092 +tablesVersion,2093 +tablesVersionLatest,2094 +targetCompressionRatio,2095 +td,2096 +tempPressureUnits,2097 +temperature,2098 +temperatureAndDewpointPresent,2099 +templatesLocalDir,2100 +templatesMasterDir,2101 +theHindcastMarsStream,2102 +theMessage,2103 +thisExperimentVersionNumber,2104 +thisMarsClass,2105 +thisMarsStream,2106 +thisMarsType,2107 +thousand,2108 +three,2109 +threshold,2110 +thresholdIndicator,2111 +tiggeCentre,2112 +tiggeLAMName,2113 +tiggeLocalVersion,2114 +tiggeModel,2115 +tiggeSection,2116 +tiggeSuiteID,2117 +tigge_name,2118 +tigge_short_name,2119 +tileClassification,2120 +tileIndex,2121 +time,2122 +timeCoordinateDefinition,2123 +timeDomainTemplate,2124 +timeDomainTemplateNumber,2125 +timeIncrement,2126 +timeIncrementBetweenSuccessiveFields,2127 +timeOfAnalysis,2128 +timeOfForecast,2129 +timeOfModelVersion,2130 +timeOfReference,2131 +timeRangeIndicator,2132 +timeRangeIndicatorFromStepRange,2133 +timeUnitFlag,2134 +timerepres,2135 +topLevel,2136 +total,2137 +totalAerosolBinsNumbers,2138 +totalInitialConditions,2139 +totalLength,2140 +totalNumber,2141 +totalNumberOfClusters,2142 +totalNumberOfDataValuesMissingInStatisticalProcess,2143 +totalNumberOfDirections,2144 +totalNumberOfForecastProbabilities,2145 +totalNumberOfFrequencies,2146 +totalNumberOfGridPoints,2147 +totalNumberOfIterations,2148 +totalNumberOfRepetitions,2149 +totalNumberOfTileAttributePairs,2150 +totalNumberOfTubes,2151 +totalNumberOfValuesInUnpackedSubset,2152 +totalNumberOfdimensions,2153 +treatmentOfMissingData,2154 +true,2155 +trueLengthOfLastGroup,2156 +truncateDegrees,2157 +truncateLaplacian,2158 +tsectionNumber3,2159 +tsectionNumber4,2160 +tsectionNumber5,2161 +tubeDomain,2162 +tubeNumber,2163 +two,2164 +twoOrdersOfSPD,2165 +type,2166 +typeOfAnalysis,2167 +typeOfAuxiliaryInformation,2168 +typeOfCalendar,2169 +typeOfCompressionUsed,2170 +typeOfDistributionFunction,2171 +typeOfEnsembleForecast,2172 +typeOfEnsembleMember,2173 +typeOfFirstFixedSurface,2174 +typeOfGeneratingProcess,2175 +typeOfGrid,2176 +typeOfHorizontalLine,2177 +typeOfIntervalForFirstAndSecondSize,2178 +typeOfIntervalForFirstAndSecondWavelength,2179 +typeOfLevel,2180 +typeOfLevelECMF,2181 +typeOfOriginalFieldValues,2182 +typeOfPacking,2183 +typeOfPostProcessing,2184 +typeOfPreProcessing,2185 +typeOfProcessedData,2186 +typeOfSSTFieldUsed,2187 +typeOfSecondFixedSurface,2188 +typeOfSizeInterval,2189 +typeOfStatisticalPostProcessingOfEnsembleMembers,2190 +typeOfStatisticalProcessing,2191 +typeOfTimeIncrement,2192 +typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing,2193 +typeOfWavelengthInterval,2194 +typicalCentury,2195 +typicalDate,2196 +typicalDateTime,2197 +typicalDay,2198 +typicalHour,2199 +typicalMinute,2200 +typicalMonth,2201 +typicalSecond,2202 +typicalTime,2203 +typicalYear,2204 +typicalYear2,2205 +typicalYearOfCentury,2206 +uco,2207 +ucs,2208 +unexpandedDescriptors,2209 +unexpandedDescriptorsEncoded,2210 +unitOfOffsetFromReferenceTime,2211 +unitOfTime,2212 +unitOfTimeIncrement,2213 +unitOfTimeRange,2214 +units,2215 +unitsBias,2216 +unitsConversionOffset,2217 +unitsConversionScaleFactor,2218 +unitsDecimalScaleFactor,2219 +unitsECMF,2220 +unitsFactor,2221 +unitsOfFirstFixedSurface,2222 +unitsOfSecondFixedSurface,2223 +unknown,2224 +unpack,2225 +unpackedError,2226 +unpackedSubsetPrecision,2227 +unpackedValues,2228 +unsignedIntegers,2229 +unusedBitsInBitmap,2230 +updateSequenceNumber,2231 +upperLimit,2232 +upperRange,2233 +upperThreshold,2234 +upperThresholdValue,2235 +userDateEnd,2236 +userDateStart,2237 +userDateTimeEnd,2238 +userDateTimeStart,2239 +userTimeEnd,2240 +userTimeStart,2241 +uuidOfHGrid,2242 +uuidOfVGrid,2243 +uvRelativeToGrid,2244 +validityDate,2245 +validityTime,2246 +values,2247 +variationOfVisibility,2248 +variationOfVisibilityDirection,2249 +variationOfVisibilityDirectionAngle,2250 +variationOfVisibilityDirectionTrend1,2251 +variationOfVisibilityDirectionTrend2,2252 +variationOfVisibilityDirectionTrend3,2253 +variationOfVisibilityDirectionTrend4,2254 +variationOfVisibilityTrend1,2255 +variationOfVisibilityTrend2,2256 +variationOfVisibilityTrend3,2257 +variationOfVisibilityTrend4,2258 +varno,2259 +verificationDate,2260 +verificationMonth,2261 +verificationYear,2262 +verifyingMonth,2263 +version,2264 +versionNumOfFilesFreeSpaceStorage,2265 +versionNumOfRootGroupSymbolTableEntry,2266 +versionNumOfSharedHeaderMessageFormat,2267 +versionNumberOfExperimentalSuite,2268 +versionNumberOfGribLocalTables,2269 +versionNumberOfSuperblock,2270 +versionOfModelClimate,2271 +verticalCoordinate,2272 +verticalCoordinateDefinition,2273 +verticalDomainTemplate,2274 +verticalDomainTemplateNumber,2275 +verticalVisibility,2276 +verticalVisibilityCoded,2277 +visibility,2278 +visibilityInKilometresTrend1,2279 +visibilityInKilometresTrend2,2280 +visibilityInKilometresTrend3,2281 +visibilityInKilometresTrend4,2282 +visibilityTrend1,2283 +visibilityTrend2,2284 +visibilityTrend3,2285 +visibilityTrend4,2286 +waveDomain,2287 +weightAppliedToClimateMonth1,2288 +westLongitudeOfCluster,2289 +westLongitudeOfDomainOfTubing,2290 +westernLongitudeOfClusterDomain,2291 +westernLongitudeOfDomain,2292 +widthOfFirstOrderValues,2293 +widthOfLengths,2294 +widthOfSPD,2295 +widthOfWidths,2296 +windDirection,2297 +windDirectionTrend1,2298 +windDirectionTrend2,2299 +windDirectionTrend3,2300 +windDirectionTrend4,2301 +windGust,2302 +windGustTrend1,2303 +windGustTrend2,2304 +windGustTrend3,2305 +windGustTrend4,2306 +windPresent,2307 +windSpeed,2308 +windSpeedTrend1,2309 +windSpeedTrend2,2310 +windSpeedTrend3,2311 +windSpeedTrend4,2312 +windUnits,2313 +windUnitsTrend1,2314 +windUnitsTrend2,2315 +windUnitsTrend3,2316 +windUnitsTrend4,2317 +windVariableDirection,2318 +windVariableDirectionTrend1,2319 +windVariableDirectionTrend2,2320 +windVariableDirectionTrend3,2321 +windVariableDirectionTrend4,2322 +wrongPadding,2323 +xCoordinateOfOriginOfSectorImage,2324 +xCoordinateOfSubSatellitePoint,2325 +xDirectionGridLength,2326 +xDirectionGridLengthInMetres,2327 +xDirectionGridLengthInMillimetres,2328 +xFirst,2329 +xLast,2330 +yCoordinateOfOriginOfSectorImage,2331 +yCoordinateOfSubSatellitePoint,2332 +yDirectionGridLength,2333 +yDirectionGridLengthInMetres,2334 +yDirectionGridLengthInMillimetres,2335 +yFirst,2336 +yLast,2337 +year,2338 +yearOfAnalysis,2339 +yearOfCentury,2340 +yearOfEndOfOverallTimeInterval,2341 +yearOfForecast,2342 +yearOfModelVersion,2343 +yearOfReference,2344 +zero,2345 From 72edd846f2cf5108bbcbdbe86d8eba4f26d8e7c3 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 15 May 2019 17:42:37 +0100 Subject: [PATCH 226/414] Update the minimum required version of CMake --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 772268a14..f27432618 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,7 +16,7 @@ # # -DCMAKE_MODULE_PATH=/path/to/ecbuild/cmake -cmake_minimum_required( VERSION 2.8.11 FATAL_ERROR ) +cmake_minimum_required( VERSION 3.6 FATAL_ERROR ) project( eccodes C ) From 7e1d205b00e189a63eb93551eaa76db96ba9eb0f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 16 May 2019 12:33:59 +0100 Subject: [PATCH 227/414] Show the commands using triple back-tick --- README.md | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index fc4afc7bf..f9c38508a 100644 --- a/README.md +++ b/README.md @@ -29,21 +29,28 @@ INSTALLATION 1. Download ecCodes from https://software.ecmwf.int/wiki/display/ECC/Releases 2. Unpack distribution: - > tar -xzf eccodes-x.y.z-Source.tar.gz + ``` + tar -xzf eccodes-x.y.z-Source.tar.gz + ``` 3. Create a separate directory where to build ecCodes: - > mkdir build - > cd build + ``` + mkdir build + cd build + ``` 4. Run cmake pointing to the source and specify the installation location: - > cmake ../eccodes-x.y.z-Source -DCMAKE_INSTALL_PREFIX=/path/to/where/you/install/eccodes - + ``` + cmake ../eccodes-x.y.z-Source -DCMAKE_INSTALL_PREFIX=/path/to/where/you/install/eccodes + ``` It is strongly recommended that you install into a clean directory 5. Compile, test and install: - > make - > ctest - > make install + ``` + make + ctest + make install + ``` For more details, please see: From b2744eeb43bde3633d6569922735548975923f6b Mon Sep 17 00:00:00 2001 From: shahramn Date: Thu, 16 May 2019 12:43:54 +0100 Subject: [PATCH 228/414] Update README.md Code block --- README.md | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index ecb5f21f9..9648afb19 100644 --- a/README.md +++ b/README.md @@ -29,21 +29,29 @@ INSTALLATION 1. Download ecCodes from https://software.ecmwf.int/wiki/display/ECC/Releases 2. Unpack distribution: - > tar -xzf eccodes-x.y.z-Source.tar.gz + ``` + tar -xzf eccodes-x.y.z-Source.tar.gz + ``` 3. Create a separate directory where to build ecCodes: - > mkdir build - > cd build + ``` + mkdir build + cd build + ``` 4. Run cmake pointing to the source and specify the installation location: - > cmake ../eccodes-x.y.z-Source -DCMAKE_INSTALL_PREFIX=/path/to/where/you/install/eccodes + ``` + cmake ../eccodes-x.y.z-Source -DCMAKE_INSTALL_PREFIX=/path/to/where/you/install/eccodes + ``` It is strongly recommended that you install into a clean directory 5. Compile, test and install: - > make - > ctest - > make install + ``` + make + ctest + make install + ``` For more details, please see: From 6535e128cdd177d6c0df575e75dcec33af2f38fb Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 16 May 2019 13:49:04 +0100 Subject: [PATCH 229/414] Run make_class and clean up accessors --- ...ssor_class_bufr_extract_datetime_subsets.c | 70 +++++++++---------- ..._accessor_class_data_g2bifourier_packing.c | 23 +++--- src/grib_iterator_class_gaussian.c | 1 + 3 files changed, 51 insertions(+), 43 deletions(-) diff --git a/src/grib_accessor_class_bufr_extract_datetime_subsets.c b/src/grib_accessor_class_bufr_extract_datetime_subsets.c index cc7da5bd3..129bdbcc6 100644 --- a/src/grib_accessor_class_bufr_extract_datetime_subsets.c +++ b/src/grib_accessor_class_bufr_extract_datetime_subsets.c @@ -43,9 +43,9 @@ typedef struct grib_accessor_bufr_extract_datetime_subsets { grib_accessor att; /* Members defined in gen */ /* Members defined in bufr_extract_datetime_subsets */ - const char* doExtractSubsets; - const char* numberOfSubsets; - const char* extractSubsetList; + const char* doExtractSubsets; + const char* numberOfSubsets; + const char* extractSubsetList; } grib_accessor_bufr_extract_datetime_subsets; extern grib_accessor_class* grib_accessor_class_gen; @@ -89,8 +89,8 @@ static grib_accessor_class _grib_accessor_class_bufr_extract_datetime_subsets = 0, /* compare vs. another accessor */ 0, /* unpack only ith value */ 0, /* unpack a subarray */ - 0, /* clear */ - 0, /* clone accessor */ + 0, /* clear */ + 0, /* clone accessor */ }; @@ -99,36 +99,36 @@ grib_accessor_class* grib_accessor_class_bufr_extract_datetime_subsets = &_grib_ static void init_class(grib_accessor_class* c) { - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->unpack_double = (*(c->super))->unpack_double; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; + c->dump = (*(c->super))->dump; + c->next_offset = (*(c->super))->next_offset; + c->string_length = (*(c->super))->string_length; + c->value_count = (*(c->super))->value_count; + c->byte_count = (*(c->super))->byte_count; + c->byte_offset = (*(c->super))->byte_offset; + c->sub_section = (*(c->super))->sub_section; + c->pack_missing = (*(c->super))->pack_missing; + c->is_missing = (*(c->super))->is_missing; + c->unpack_long = (*(c->super))->unpack_long; + c->pack_double = (*(c->super))->pack_double; + c->unpack_double = (*(c->super))->unpack_double; + c->pack_string = (*(c->super))->pack_string; + c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; + c->pack_bytes = (*(c->super))->pack_bytes; + c->unpack_bytes = (*(c->super))->unpack_bytes; + c->pack_expression = (*(c->super))->pack_expression; + c->notify_change = (*(c->super))->notify_change; + c->update_size = (*(c->super))->update_size; + c->preferred_size = (*(c->super))->preferred_size; + c->resize = (*(c->super))->resize; + c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; + c->next = (*(c->super))->next; + c->compare = (*(c->super))->compare; + c->unpack_double_element = (*(c->super))->unpack_double_element; + c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; + c->clear = (*(c->super))->clear; + c->make_clone = (*(c->super))->make_clone; } /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g2bifourier_packing.c b/src/grib_accessor_class_data_g2bifourier_packing.c index 66a7209c7..010d32d6b 100644 --- a/src/grib_accessor_class_data_g2bifourier_packing.c +++ b/src/grib_accessor_class_data_g2bifourier_packing.c @@ -26,8 +26,6 @@ SUPER = grib_accessor_class_data_simple_packing IMPLEMENTS = init IMPLEMENTS = unpack_double - IMPLEMENTS = unpack_double_element - IMPLEMENTS = unpack_double_subarray IMPLEMENTS = pack_double IMPLEMENTS = value_count MEMBERS= const char* ieee_floats @@ -99,10 +97,10 @@ typedef struct grib_accessor_data_g2bifourier_packing { const char* numberOfValues; } grib_accessor_data_g2bifourier_packing; -extern grib_accessor_class* grib_accessor_class_values; +extern grib_accessor_class* grib_accessor_class_data_simple_packing; static grib_accessor_class _grib_accessor_class_data_g2bifourier_packing = { - &grib_accessor_class_data_simple_packing, /* super */ + &grib_accessor_class_data_simple_packing, /* super */ "data_g2bifourier_packing", /* name */ sizeof(grib_accessor_data_g2bifourier_packing), /* size */ 0, /* inited */ @@ -119,13 +117,15 @@ static grib_accessor_class _grib_accessor_class_data_g2bifourier_packing = { 0, /* get native type */ 0, /* get sub_section */ 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ + 0, /* grib_pack procedures long */ 0, /* grib_pack procedures long */ 0, /* grib_unpack procedures long */ &pack_double, /* grib_pack procedures double */ &unpack_double, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -136,14 +136,16 @@ static grib_accessor_class _grib_accessor_class_data_g2bifourier_packing = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack a subarray */ - 0, /* clear */ + 0, /* unpack only ith value */ + 0, /* unpack a subarray */ + 0, /* clear */ + 0, /* clone accessor */ }; grib_accessor_class* grib_accessor_class_data_g2bifourier_packing = &_grib_accessor_class_data_g2bifourier_packing; + static void init_class(grib_accessor_class* c) { c->dump = (*(c->super))->dump; @@ -159,6 +161,8 @@ static void init_class(grib_accessor_class* c) c->unpack_long = (*(c->super))->unpack_long; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; @@ -169,7 +173,10 @@ static void init_class(grib_accessor_class* c) c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; c->next = (*(c->super))->next; c->compare = (*(c->super))->compare; + c->unpack_double_element = (*(c->super))->unpack_double_element; + c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; c->clear = (*(c->super))->clear; + c->make_clone = (*(c->super))->make_clone; } /* END_CLASS_IMP */ diff --git a/src/grib_iterator_class_gaussian.c b/src/grib_iterator_class_gaussian.c index e68d7d81c..a6ed423ce 100644 --- a/src/grib_iterator_class_gaussian.c +++ b/src/grib_iterator_class_gaussian.c @@ -58,6 +58,7 @@ typedef struct grib_iterator_gaussian{ double southPoleLat; double southPoleLon; long jPointsAreConsecutive; + long disableUnrotate; /* Members defined in gaussian */ } grib_iterator_gaussian; From 3a257229ba7ce424571689a325f4ce27ea809f3d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 16 May 2019 13:51:11 +0100 Subject: [PATCH 230/414] Script: turn off verbose --- tests/list_all_keys.ksh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/list_all_keys.ksh b/tests/list_all_keys.ksh index 79eb8a9ce..9e6ff626e 100755 --- a/tests/list_all_keys.ksh +++ b/tests/list_all_keys.ksh @@ -20,11 +20,13 @@ if [ ! -x $GRIB_LIST_KEYS ]; then GRIB_LIST_KEYS=$GRIB_LIST_KEYS_EXE fi +set +x touch tmp$$ for file in `find $ECCODES_DEFINITION_PATH -name '*.def' -print` do ${GRIB_LIST_KEYS} $file >> tmp$$ done +set -x cat >keys < Date: Thu, 16 May 2019 14:50:32 +0100 Subject: [PATCH 231/414] Test: Comments --- tests/grib_check_param_concepts.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/grib_check_param_concepts.sh b/tests/grib_check_param_concepts.sh index 1e12ca526..d84ced85a 100755 --- a/tests/grib_check_param_concepts.sh +++ b/tests/grib_check_param_concepts.sh @@ -15,6 +15,11 @@ REDIRECT=/dev/null # This script will check the following concept files: # name.def paramId.def shortName.def units.def cfVarName.def # + +# Perhaps we should check whether the Test::More Perl module is available? +#perl -MTest::More -e 'print $Test::More::VERSION ."\n";' + + CHECK_DEFS=$ECCODES_DEFINITION_PATH/check_grib_defs.pl defs_dirs=" From db542bfbd5afca393d0dbc47f98ba998801c9a91 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 16 May 2019 14:55:31 +0100 Subject: [PATCH 232/414] Rename lam_bf test --- tests/CMakeLists.txt | 6 +++--- tests/{lam_bf.c => grib_lam_bf.c} | 0 tests/{lam_bf.sh => grib_lam_bf.sh} | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) rename tests/{lam_bf.c => grib_lam_bf.c} (100%) rename tests/{lam_bf.sh => grib_lam_bf.sh} (96%) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 7e93e58ca..5195901aa 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -30,7 +30,7 @@ list( APPEND test_bins grib_sh_ieee64 ieee grib_sh_imag - lam_bf + grib_lam_bf lam_gp ) @@ -116,8 +116,8 @@ list( APPEND tests_data_reqd grib_sh_ieee64 optimize_scaling optimize_scaling_sh - lam_bf - lam_gp + grib_lam_bf + lam_gp grib1to2 grib2to1 grib1to3 diff --git a/tests/lam_bf.c b/tests/grib_lam_bf.c similarity index 100% rename from tests/lam_bf.c rename to tests/grib_lam_bf.c diff --git a/tests/lam_bf.sh b/tests/grib_lam_bf.sh similarity index 96% rename from tests/lam_bf.sh rename to tests/grib_lam_bf.sh index b06bccdcc..f80c7e6c6 100755 --- a/tests/lam_bf.sh +++ b/tests/grib_lam_bf.sh @@ -31,9 +31,9 @@ dump_and_check() set -e } -# Spectral LAM fields +# Spectral LAM fields (Bi-Fourier) # Run the test which generates the GRIB files -${test_dir}/lam_bf +${test_dir}/grib_lam_bf dump_and_check lam_bf_lambert_bf_ellipse_diamond.grib 3128 dump_and_check lam_bf_mercator_bf_ellipse_diamond.grib 3128 From c0d7f98d5d3bd274c672f32a56866abccc4d4ca9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 16 May 2019 15:01:11 +0100 Subject: [PATCH 233/414] Rename lam_gp test --- tests/CMakeLists.txt | 4 ++-- tests/{lam_gp.c => grib_lam_gp.c} | 0 tests/{lam_gp.sh => grib_lam_gp.sh} | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) rename tests/{lam_gp.c => grib_lam_gp.c} (100%) rename tests/{lam_gp.sh => grib_lam_gp.sh} (89%) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 5195901aa..42eecaca4 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -31,7 +31,7 @@ list( APPEND test_bins ieee grib_sh_imag grib_lam_bf - lam_gp + grib_lam_gp ) foreach( tool ${test_bins} ) @@ -117,7 +117,7 @@ list( APPEND tests_data_reqd optimize_scaling optimize_scaling_sh grib_lam_bf - lam_gp + grib_lam_gp grib1to2 grib2to1 grib1to3 diff --git a/tests/lam_gp.c b/tests/grib_lam_gp.c similarity index 100% rename from tests/lam_gp.c rename to tests/grib_lam_gp.c diff --git a/tests/lam_gp.sh b/tests/grib_lam_gp.sh similarity index 89% rename from tests/lam_gp.sh rename to tests/grib_lam_gp.sh index 50fedc0d5..196be16ea 100755 --- a/tests/lam_gp.sh +++ b/tests/grib_lam_gp.sh @@ -32,7 +32,7 @@ dump_and_check() # Grid-point LAM fields # Run the test which generates the GRIB files -${test_dir}/lam_gp +${test_dir}/grib_lam_gp dump_and_check lam_gp_lambert_lam.grib dump_and_check lam_gp_mercator_lam.grib @@ -41,5 +41,5 @@ dump_and_check lam_gp_polar_stereographic_lam.grib # Clean up test outputs rm -f $temp rm -f lam_gp_lambert_lam.grib -rm -f dump_and_check lam_gp_mercator_lam.grib -rm -f dump_and_check lam_gp_polar_stereographic_lam.grib +rm -f lam_gp_mercator_lam.grib +rm -f lam_gp_polar_stereographic_lam.grib From 1c8a0f06b888855684dcd78a6af90f0ff30a2d5e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 16 May 2019 15:10:26 +0100 Subject: [PATCH 234/414] Rename optimize_scaling test --- tests/CMakeLists.txt | 8 ++++---- tests/{optimize_scaling.c => grib_optimize_scaling.c} | 0 tests/{optimize_scaling.sh => grib_optimize_scaling.sh} | 2 +- .../{optimize_scaling_sh.c => grib_optimize_scaling_sh.c} | 0 ...optimize_scaling_sh.sh => grib_optimize_scaling_sh.sh} | 3 ++- 5 files changed, 7 insertions(+), 6 deletions(-) rename tests/{optimize_scaling.c => grib_optimize_scaling.c} (100%) rename tests/{optimize_scaling.sh => grib_optimize_scaling.sh} (91%) rename tests/{optimize_scaling_sh.c => grib_optimize_scaling_sh.c} (100%) rename tests/{optimize_scaling_sh.sh => grib_optimize_scaling_sh.sh} (85%) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 42eecaca4..580f93af3 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -22,8 +22,8 @@ list( APPEND test_bins grib_util_set_spec grib_local_MeteoFrance grib_2nd_order_numValues - optimize_scaling - optimize_scaling_sh + grib_optimize_scaling + grib_optimize_scaling_sh grib_ecc-386 bufr_ecc-517 bufr_get_element @@ -114,8 +114,8 @@ list( APPEND tests_data_reqd bufr_set ieee grib_sh_ieee64 - optimize_scaling - optimize_scaling_sh + grib_optimize_scaling + grib_optimize_scaling_sh grib_lam_bf grib_lam_gp grib1to2 diff --git a/tests/optimize_scaling.c b/tests/grib_optimize_scaling.c similarity index 100% rename from tests/optimize_scaling.c rename to tests/grib_optimize_scaling.c diff --git a/tests/optimize_scaling.sh b/tests/grib_optimize_scaling.sh similarity index 91% rename from tests/optimize_scaling.sh rename to tests/grib_optimize_scaling.sh index d01b15f89..d7a956d5a 100755 --- a/tests/optimize_scaling.sh +++ b/tests/grib_optimize_scaling.sh @@ -10,4 +10,4 @@ . ./include.sh -exec $test_dir/optimize_scaling +exec $test_dir/grib_optimize_scaling diff --git a/tests/optimize_scaling_sh.c b/tests/grib_optimize_scaling_sh.c similarity index 100% rename from tests/optimize_scaling_sh.c rename to tests/grib_optimize_scaling_sh.c diff --git a/tests/optimize_scaling_sh.sh b/tests/grib_optimize_scaling_sh.sh similarity index 85% rename from tests/optimize_scaling_sh.sh rename to tests/grib_optimize_scaling_sh.sh index 85e096801..75e1b309e 100755 --- a/tests/optimize_scaling_sh.sh +++ b/tests/grib_optimize_scaling_sh.sh @@ -10,4 +10,5 @@ . ./include.sh -exec $test_dir/optimize_scaling_sh +# Spherical harmonics version +exec $test_dir/grib_optimize_scaling_sh From 7b57134d7b14ffd86fc82bf722cb31e8c7ce5fbd Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 16 May 2019 15:35:29 +0100 Subject: [PATCH 235/414] Rename and clean up comments --- definitions/grib2/template.3.13.def | 12 ++-------- definitions/grib2/template.3.23.def | 11 ++------- definitions/grib2/template.3.33.def | 11 ++------- definitions/grib2/template.3.61.def | 15 ++---------- definitions/grib2/template.3.62.def | 17 ++------------ definitions/grib2/template.3.63.def | 23 +------------------ definitions/grib2/template.5.53.def | 19 +++++---------- definitions/grib2/template.7.53.def | 22 ++++++------------ ..._accessor_class_data_g2bifourier_packing.c | 3 +-- tests/CMakeLists.txt | 2 +- tests/{missing.sh => grib_missing.sh} | 2 +- 11 files changed, 27 insertions(+), 110 deletions(-) rename tests/{missing.sh => grib_missing.sh} (96%) diff --git a/definitions/grib2/template.3.13.def b/definitions/grib2/template.3.13.def index 33df979d2..717471573 100644 --- a/definitions/grib2/template.3.13.def +++ b/definitions/grib2/template.3.13.def @@ -1,13 +1,5 @@ -# Copyright 2005-2018 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - -# TEMPLATE 3.33002, Mercator for limited area models +# Copyright 2005-2019 ECMWF. +# TEMPLATE 3.13 Mercator with modelling subdomains definition include "grib2/template.3.10.def" include "grib2/template.3.lam.def" diff --git a/definitions/grib2/template.3.23.def b/definitions/grib2/template.3.23.def index 119d588da..ec1bc325b 100644 --- a/definitions/grib2/template.3.23.def +++ b/definitions/grib2/template.3.23.def @@ -1,12 +1,5 @@ -# Copyright 2005-2018 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# +# Copyright 2005-2019 ECMWF. -# TEMPLATE 3.33003, Polar stereographic projection for limited area models +# TEMPLATE 3.23 Polar stereographic with modelling subdomains definition include "grib2/template.3.20.def" include "grib2/template.3.lam.def" diff --git a/definitions/grib2/template.3.33.def b/definitions/grib2/template.3.33.def index 00c06b3e1..d7211bff6 100644 --- a/definitions/grib2/template.3.33.def +++ b/definitions/grib2/template.3.33.def @@ -1,12 +1,5 @@ -# Copyright 2005-2018 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# +# Copyright 2005-2019 ECMWF. -# TEMPLATE 3.33001, Lambert conformal for limited area models +# TEMPLATE 3.33, Lambert conformal with modelling subdomains definition include "grib2/template.3.30.def" include "grib2/template.3.lam.def" diff --git a/definitions/grib2/template.3.61.def b/definitions/grib2/template.3.61.def index 6816fa1e5..e3bfc7a8a 100644 --- a/definitions/grib2/template.3.61.def +++ b/definitions/grib2/template.3.61.def @@ -1,13 +1,7 @@ -# Copyright 2005-2018 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# +# Copyright 2005-2019 ECMWF. # TEMPLATE 3.61, Bi-Fourier coefficients on Mercator projection +# Spectral Mercator with modelling subdomains definition transient biFourierMakeTemplate = 0; @@ -15,7 +9,6 @@ include "grib2/template.3.bf.def" include "grib2/template.3.shape_of_the_earth.def"; -#include "grib2/template.3.10.part1.def" # La1 - latitude of first grid point signed[4] latitudeOfFirstGridPoint: edition_specific,no_copy ; alias La1 = latitudeOfFirstGridPoint; @@ -26,8 +19,6 @@ signed[4] longitudeOfFirstGridPoint : edition_specific,no_copy; alias Lo1 = longitudeOfFirstGridPoint; meta geography.longitudeOfFirstGridPointInDegrees scale(longitudeOfFirstGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; - -#include "grib2/template.3.10.part2.def" # LaD - Latitude(s) at which the Mercator projection intersects the Earth # (Latitude(s) where Di and Dj are specified) signed[4] LaD : edition_specific,no_copy; @@ -43,7 +34,6 @@ signed[4] longitudeOfLastGridPoint: edition_specific,no_copy ; alias Lo2 = longitudeOfLastGridPoint; meta geography.longitudeOfLastGridPointInDegrees scale(longitudeOfLastGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; -#include "grib2/template.3.10.part3.def" # Orientation of the grid, angle between i direction on the map and the equator # NOTE 1: Limited to the range of 0 to 90 degrees; if the angle of orientation of the grid is neither 0 nor 90 degrees, # Di and Dj must be equal to each other @@ -51,4 +41,3 @@ unsigned[4] orientationOfTheGrid : dump ; meta geography.orientationOfTheGridInDegrees scale(orientationOfTheGrid,oneConstant,grib2divider,truncateDegrees) : dump; -# END 2/template.3.61 ---------------------------------------------------------------------- diff --git a/definitions/grib2/template.3.62.def b/definitions/grib2/template.3.62.def index c8450ed13..772b263dc 100644 --- a/definitions/grib2/template.3.62.def +++ b/definitions/grib2/template.3.62.def @@ -1,14 +1,7 @@ -# Copyright 2005-2018 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# - +# Copyright 2005-2019 ECMWF. # TEMPLATE 3.62, Bi-Fourier coefficients on polar stereographic projection +# Spectral polar stereographic with modelling subdomains definition transient biFourierMakeTemplate = 0; @@ -18,7 +11,6 @@ include "grib2/template.3.shape_of_the_earth.def"; transient oneThousand=1000; -#include "grib2/template.3.20.part1.def" # La1 - latitude of first grid point signed[4] latitudeOfFirstGridPoint : edition_specific ; meta geography.latitudeOfFirstGridPointInDegrees scale(latitudeOfFirstGridPoint,oneConstant,grib2divider,truncateDegrees) : dump; @@ -45,14 +37,9 @@ signed[4] orientationOfTheGrid : edition_specific; alias LoV = orientationOfTheGrid ; meta geography.orientationOfTheGridInDegrees scale(orientationOfTheGrid,oneConstant,grib2divider,truncateDegrees) : dump; - -#include "grib2/template.3.20.part2.def" # Projection centre flag flags[1] projectionCentreFlag 'grib2/tables/[tablesVersion]/3.5.table' : dump; # Note our flagbit numbers go from 7 to 0, while WMO convention is from 1 to 8 # If bit 1 is 0, then the North Pole is on the projection plane # If bit 1 is 1, then the South Pole is on the projection plane flagbit southPoleOnProjectionPlane(projectionCentreFlag,7) : dump; # WMO bit 1 - - -# END 2/template.3.62 ---------------------------------------------------------------------- diff --git a/definitions/grib2/template.3.63.def b/definitions/grib2/template.3.63.def index bfa553227..f5760f0f0 100644 --- a/definitions/grib2/template.3.63.def +++ b/definitions/grib2/template.3.63.def @@ -1,11 +1,4 @@ -# Copyright 2005-2018 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# +# Copyright 2005-2019 ECMWF. # TEMPLATE 3.63, BiFourier coefficients on lambert projection @@ -15,7 +8,6 @@ include "grib2/template.3.bf.def" include "grib2/template.3.shape_of_the_earth.def"; -#include "grib2/template.3.30.part1.def" # La1 - latitude of first grid point signed[4] latitudeOfFirstGridPoint : edition_specific; alias La1 = latitudeOfFirstGridPoint; @@ -32,9 +24,6 @@ meta geography.longitudeOfFirstGridPointInDegrees alias Lo1InDegrees = longitudeOfFirstGridPointInDegrees; #meta longitudeOfFirstGridPointInMicrodegrees times(longitudeOfFirstGridPoint,oneConstant) : no_copy; - - -#include "grib2/template.3.30.part2.def" # LaD - Latitude where Dx and Dy are specified signed[4] LaD : edition_specific ; alias latitudeWhereDxAndDyAreSpecified=LaD; @@ -44,14 +33,9 @@ meta geography.LaDInDegrees scale(LaD,one,grib2divider,truncateDegrees) : dump; unsigned[4] LoV : edition_specific; meta geography.LoVInDegrees scale(LoV,one,grib2divider,truncateDegrees) : dump; - - -#include "grib2/template.3.30.part3.def" # Projection centre flag flags[1] projectionCentreFlag 'grib2/tables/[tablesVersion]/3.5.table' : dump; - -#include "grib2/template.3.30.part4.def" # Latin 1 - first latitude from the pole at which the secant cone cuts the sphere signed[4] Latin1 : edition_specific; alias FirstLatitude=Latin1; @@ -71,8 +55,3 @@ meta geography.latitudeOfSouthernPoleInDegrees scale(latitudeOfSouthernPole unsigned[4] longitudeOfSouthernPole : edition_specific; alias longitudeOfTheSouthernPoleOfProjection=longitudeOfSouthernPole; meta geography.longitudeOfSouthernPoleInDegrees scale(longitudeOfSouthernPole,oneConstant,grib2divider,truncateDegrees) : dump; - - - - - diff --git a/definitions/grib2/template.5.53.def b/definitions/grib2/template.5.53.def index f9fb79849..f72ae1f6c 100644 --- a/definitions/grib2/template.5.53.def +++ b/definitions/grib2/template.5.53.def @@ -1,13 +1,7 @@ -# Copyright 2005-2018 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# +# Copyright 2005-2019 ECMWF. # TEMPLATE 5.53, BiFourier coefficients data - complex packing +# Spectral data for limited area models \u2013 complex packing include "grib2/template.5.packing.def"; @@ -15,16 +9,15 @@ transient computeLaplacianOperator=1 : hidden; codetable[1] biFourierSubTruncationType ('5.25.table',masterDir,localDir) : dump; codetable[1] biFourierPackingModeForAxes ('5.26.table',masterDir,localDir) = 0 : dump; -# biFourierDoNotPackAxes constant laplacianScalingFactorUnset = -2147483647; signed[4] laplacianScalingFactor : edition_specific ; # units of 10^-6 -meta data.laplacianOperator scale(laplacianScalingFactor,one,million,truncateLaplacian) ; -meta laplacianOperatorIsSet evaluate(laplacianScalingFactor != laplacianScalingFactorUnset && !computeLaplacianOperator); +meta data.laplacianOperator scale(laplacianScalingFactor,one,million,truncateLaplacian) ; +meta laplacianOperatorIsSet evaluate(laplacianScalingFactor != laplacianScalingFactorUnset && !computeLaplacianOperator); -unsigned[2] biFourierResolutionSubSetParameterN : dump ; # NS -unsigned[2] biFourierResolutionSubSetParameterM : dump ; # MS +unsigned[2] biFourierResolutionSubSetParameterN : dump ; # NS +unsigned[2] biFourierResolutionSubSetParameterM : dump ; # MS unsigned[4] totalNumberOfValuesInUnpackedSubset = 0 : dump; # TS # This is read_only until we support other values diff --git a/definitions/grib2/template.7.53.def b/definitions/grib2/template.7.53.def index 14a55813e..97cb22e89 100644 --- a/definitions/grib2/template.7.53.def +++ b/definitions/grib2/template.7.53.def @@ -1,18 +1,11 @@ -# Copyright 2005-2018 ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by -# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. -# +# Copyright 2005-2019 ECMWF. # TEMPLATE 7.53, BiFourier coefficients - complex packing +# Spectral data for limited area models \u2013 complex packing constant biFourierCoefficients = 1; constant complexPacking = 1; - meta codedValues data_g2bifourier_packing( section7Length, offsetBeforeData, @@ -47,9 +40,8 @@ meta codedValues data_g2bifourier_packing( ): read_only; meta values data_apply_bitmap(codedValues, - bitmap, - missingValue, - binaryScaleFactor, - numberOfDataPoints, - numberOfValues) : dump; - + bitmap, + missingValue, + binaryScaleFactor, + numberOfDataPoints, + numberOfValues) : dump; diff --git a/src/grib_accessor_class_data_g2bifourier_packing.c b/src/grib_accessor_class_data_g2bifourier_packing.c index 010d32d6b..9d42bef56 100644 --- a/src/grib_accessor_class_data_g2bifourier_packing.c +++ b/src/grib_accessor_class_data_g2bifourier_packing.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 ECMWF. + * Copyright 2005-2019 ECMWF. * * This software is licensed under the terms of the Apache Licence Version 2.0 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. @@ -16,7 +16,6 @@ #include "grib_accessor_class.h" #include "grib_optimize_decimal_factor.h" #include -#include /* This is used by make_class.pl diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 580f93af3..8f4e8bf41 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -135,7 +135,7 @@ list( APPEND tests_data_reqd decimalPrecision grib_bitsPerValue get_fail - missing + grib_missing grib_local grib_step grib_set diff --git a/tests/missing.sh b/tests/grib_missing.sh similarity index 96% rename from tests/missing.sh rename to tests/grib_missing.sh index 7ffcff089..524d20d84 100755 --- a/tests/missing.sh +++ b/tests/grib_missing.sh @@ -13,7 +13,7 @@ REDIRECT=/dev/null infile="${data_dir}/missing.grib2" -outfile="${data_dir}/missing_new.grib2" +outfile="${data_dir}/temp.missing_new.grib2" scaleFactorOfSecondFixedSurface=`${tools_dir}/grib_get -w count=1 -p scaleFactorOfSecondFixedSurface $infile` [ "$scaleFactorOfSecondFixedSurface" = "0" ] From e7f130e5fd5051e367f6543ade8b7253714eddeb Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 16 May 2019 16:55:29 +0100 Subject: [PATCH 236/414] Clean up --- definitions/grib2/tables/0/4.203.table | 65 +------------------------- definitions/grib2/tables/1/4.203.table | 65 +------------------------- definitions/grib2/tables/2/4.203.table | 65 +------------------------- definitions/grib2/tables/3/4.203.table | 64 +------------------------ definitions/grib2/tables/5/4.203.table | 65 +------------------------- definitions/grib2/tables/6/4.203.table | 65 +------------------------- definitions/grib2/tables/7/4.203.table | 65 +------------------------- definitions/grib2/tables/8/4.203.table | 1 - definitions/grib2/tables/9/4.203.table | 1 - 9 files changed, 7 insertions(+), 449 deletions(-) diff --git a/definitions/grib2/tables/0/4.203.table b/definitions/grib2/tables/0/4.203.table index d2ad10b07..057f40910 100644 --- a/definitions/grib2/tables/0/4.203.table +++ b/definitions/grib2/tables/0/4.203.table @@ -1,5 +1,4 @@ # CODE TABLE 4.203, Cloud type - 0 0 Clear 1 1 Cumulonimbus 2 2 Stratus @@ -22,67 +21,5 @@ 19 19 Cirrocumulus - ground based fog beneath the lowest layer 20 20 Cirrus - ground based fog beneath the lowest layer 191 191 Unknown -192 192 Reserved for local use -193 193 Reserved for local use -194 194 Reserved for local use -195 195 Reserved for local use -196 196 Reserved for local use -197 197 Reserved for local use -198 198 Reserved for local use -199 199 Reserved for local use -200 200 Reserved for local use -201 201 Reserved for local use -202 202 Reserved for local use -203 203 Reserved for local use -204 204 Reserved for local use -205 205 Reserved for local use -206 206 Reserved for local use -207 207 Reserved for local use -208 208 Reserved for local use -209 209 Reserved for local use -210 210 Reserved for local use -211 211 Reserved for local use -212 212 Reserved for local use -213 213 Reserved for local use -214 214 Reserved for local use -215 215 Reserved for local use -216 216 Reserved for local use -217 217 Reserved for local use -218 218 Reserved for local use -219 219 Reserved for local use -220 220 Reserved for local use -221 221 Reserved for local use -222 222 Reserved for local use -223 223 Reserved for local use -224 224 Reserved for local use -225 225 Reserved for local use -226 226 Reserved for local use -227 227 Reserved for local use -228 228 Reserved for local use -229 229 Reserved for local use -230 230 Reserved for local use -231 231 Reserved for local use -232 232 Reserved for local use -233 233 Reserved for local use -234 234 Reserved for local use -235 235 Reserved for local use -236 236 Reserved for local use -237 237 Reserved for local use -238 238 Reserved for local use -239 239 Reserved for local use -240 240 Reserved for local use -241 241 Reserved for local use -242 242 Reserved for local use -243 243 Reserved for local use -244 244 Reserved for local use -245 245 Reserved for local use -246 246 Reserved for local use -247 247 Reserved for local use -248 248 Reserved for local use -249 249 Reserved for local use -250 250 Reserved for local use -251 251 Reserved for local use -252 252 Reserved for local use -253 253 Reserved for local use -254 254 Reserved for local use +# 192-254 Reserved for local use 255 255 Missing diff --git a/definitions/grib2/tables/1/4.203.table b/definitions/grib2/tables/1/4.203.table index d2ad10b07..057f40910 100644 --- a/definitions/grib2/tables/1/4.203.table +++ b/definitions/grib2/tables/1/4.203.table @@ -1,5 +1,4 @@ # CODE TABLE 4.203, Cloud type - 0 0 Clear 1 1 Cumulonimbus 2 2 Stratus @@ -22,67 +21,5 @@ 19 19 Cirrocumulus - ground based fog beneath the lowest layer 20 20 Cirrus - ground based fog beneath the lowest layer 191 191 Unknown -192 192 Reserved for local use -193 193 Reserved for local use -194 194 Reserved for local use -195 195 Reserved for local use -196 196 Reserved for local use -197 197 Reserved for local use -198 198 Reserved for local use -199 199 Reserved for local use -200 200 Reserved for local use -201 201 Reserved for local use -202 202 Reserved for local use -203 203 Reserved for local use -204 204 Reserved for local use -205 205 Reserved for local use -206 206 Reserved for local use -207 207 Reserved for local use -208 208 Reserved for local use -209 209 Reserved for local use -210 210 Reserved for local use -211 211 Reserved for local use -212 212 Reserved for local use -213 213 Reserved for local use -214 214 Reserved for local use -215 215 Reserved for local use -216 216 Reserved for local use -217 217 Reserved for local use -218 218 Reserved for local use -219 219 Reserved for local use -220 220 Reserved for local use -221 221 Reserved for local use -222 222 Reserved for local use -223 223 Reserved for local use -224 224 Reserved for local use -225 225 Reserved for local use -226 226 Reserved for local use -227 227 Reserved for local use -228 228 Reserved for local use -229 229 Reserved for local use -230 230 Reserved for local use -231 231 Reserved for local use -232 232 Reserved for local use -233 233 Reserved for local use -234 234 Reserved for local use -235 235 Reserved for local use -236 236 Reserved for local use -237 237 Reserved for local use -238 238 Reserved for local use -239 239 Reserved for local use -240 240 Reserved for local use -241 241 Reserved for local use -242 242 Reserved for local use -243 243 Reserved for local use -244 244 Reserved for local use -245 245 Reserved for local use -246 246 Reserved for local use -247 247 Reserved for local use -248 248 Reserved for local use -249 249 Reserved for local use -250 250 Reserved for local use -251 251 Reserved for local use -252 252 Reserved for local use -253 253 Reserved for local use -254 254 Reserved for local use +# 192-254 Reserved for local use 255 255 Missing diff --git a/definitions/grib2/tables/2/4.203.table b/definitions/grib2/tables/2/4.203.table index d2ad10b07..057f40910 100644 --- a/definitions/grib2/tables/2/4.203.table +++ b/definitions/grib2/tables/2/4.203.table @@ -1,5 +1,4 @@ # CODE TABLE 4.203, Cloud type - 0 0 Clear 1 1 Cumulonimbus 2 2 Stratus @@ -22,67 +21,5 @@ 19 19 Cirrocumulus - ground based fog beneath the lowest layer 20 20 Cirrus - ground based fog beneath the lowest layer 191 191 Unknown -192 192 Reserved for local use -193 193 Reserved for local use -194 194 Reserved for local use -195 195 Reserved for local use -196 196 Reserved for local use -197 197 Reserved for local use -198 198 Reserved for local use -199 199 Reserved for local use -200 200 Reserved for local use -201 201 Reserved for local use -202 202 Reserved for local use -203 203 Reserved for local use -204 204 Reserved for local use -205 205 Reserved for local use -206 206 Reserved for local use -207 207 Reserved for local use -208 208 Reserved for local use -209 209 Reserved for local use -210 210 Reserved for local use -211 211 Reserved for local use -212 212 Reserved for local use -213 213 Reserved for local use -214 214 Reserved for local use -215 215 Reserved for local use -216 216 Reserved for local use -217 217 Reserved for local use -218 218 Reserved for local use -219 219 Reserved for local use -220 220 Reserved for local use -221 221 Reserved for local use -222 222 Reserved for local use -223 223 Reserved for local use -224 224 Reserved for local use -225 225 Reserved for local use -226 226 Reserved for local use -227 227 Reserved for local use -228 228 Reserved for local use -229 229 Reserved for local use -230 230 Reserved for local use -231 231 Reserved for local use -232 232 Reserved for local use -233 233 Reserved for local use -234 234 Reserved for local use -235 235 Reserved for local use -236 236 Reserved for local use -237 237 Reserved for local use -238 238 Reserved for local use -239 239 Reserved for local use -240 240 Reserved for local use -241 241 Reserved for local use -242 242 Reserved for local use -243 243 Reserved for local use -244 244 Reserved for local use -245 245 Reserved for local use -246 246 Reserved for local use -247 247 Reserved for local use -248 248 Reserved for local use -249 249 Reserved for local use -250 250 Reserved for local use -251 251 Reserved for local use -252 252 Reserved for local use -253 253 Reserved for local use -254 254 Reserved for local use +# 192-254 Reserved for local use 255 255 Missing diff --git a/definitions/grib2/tables/3/4.203.table b/definitions/grib2/tables/3/4.203.table index d2ad10b07..a5b02a88e 100644 --- a/definitions/grib2/tables/3/4.203.table +++ b/definitions/grib2/tables/3/4.203.table @@ -22,67 +22,5 @@ 19 19 Cirrocumulus - ground based fog beneath the lowest layer 20 20 Cirrus - ground based fog beneath the lowest layer 191 191 Unknown -192 192 Reserved for local use -193 193 Reserved for local use -194 194 Reserved for local use -195 195 Reserved for local use -196 196 Reserved for local use -197 197 Reserved for local use -198 198 Reserved for local use -199 199 Reserved for local use -200 200 Reserved for local use -201 201 Reserved for local use -202 202 Reserved for local use -203 203 Reserved for local use -204 204 Reserved for local use -205 205 Reserved for local use -206 206 Reserved for local use -207 207 Reserved for local use -208 208 Reserved for local use -209 209 Reserved for local use -210 210 Reserved for local use -211 211 Reserved for local use -212 212 Reserved for local use -213 213 Reserved for local use -214 214 Reserved for local use -215 215 Reserved for local use -216 216 Reserved for local use -217 217 Reserved for local use -218 218 Reserved for local use -219 219 Reserved for local use -220 220 Reserved for local use -221 221 Reserved for local use -222 222 Reserved for local use -223 223 Reserved for local use -224 224 Reserved for local use -225 225 Reserved for local use -226 226 Reserved for local use -227 227 Reserved for local use -228 228 Reserved for local use -229 229 Reserved for local use -230 230 Reserved for local use -231 231 Reserved for local use -232 232 Reserved for local use -233 233 Reserved for local use -234 234 Reserved for local use -235 235 Reserved for local use -236 236 Reserved for local use -237 237 Reserved for local use -238 238 Reserved for local use -239 239 Reserved for local use -240 240 Reserved for local use -241 241 Reserved for local use -242 242 Reserved for local use -243 243 Reserved for local use -244 244 Reserved for local use -245 245 Reserved for local use -246 246 Reserved for local use -247 247 Reserved for local use -248 248 Reserved for local use -249 249 Reserved for local use -250 250 Reserved for local use -251 251 Reserved for local use -252 252 Reserved for local use -253 253 Reserved for local use -254 254 Reserved for local use +# 192-254 Reserved for local use 255 255 Missing diff --git a/definitions/grib2/tables/5/4.203.table b/definitions/grib2/tables/5/4.203.table index d2ad10b07..057f40910 100644 --- a/definitions/grib2/tables/5/4.203.table +++ b/definitions/grib2/tables/5/4.203.table @@ -1,5 +1,4 @@ # CODE TABLE 4.203, Cloud type - 0 0 Clear 1 1 Cumulonimbus 2 2 Stratus @@ -22,67 +21,5 @@ 19 19 Cirrocumulus - ground based fog beneath the lowest layer 20 20 Cirrus - ground based fog beneath the lowest layer 191 191 Unknown -192 192 Reserved for local use -193 193 Reserved for local use -194 194 Reserved for local use -195 195 Reserved for local use -196 196 Reserved for local use -197 197 Reserved for local use -198 198 Reserved for local use -199 199 Reserved for local use -200 200 Reserved for local use -201 201 Reserved for local use -202 202 Reserved for local use -203 203 Reserved for local use -204 204 Reserved for local use -205 205 Reserved for local use -206 206 Reserved for local use -207 207 Reserved for local use -208 208 Reserved for local use -209 209 Reserved for local use -210 210 Reserved for local use -211 211 Reserved for local use -212 212 Reserved for local use -213 213 Reserved for local use -214 214 Reserved for local use -215 215 Reserved for local use -216 216 Reserved for local use -217 217 Reserved for local use -218 218 Reserved for local use -219 219 Reserved for local use -220 220 Reserved for local use -221 221 Reserved for local use -222 222 Reserved for local use -223 223 Reserved for local use -224 224 Reserved for local use -225 225 Reserved for local use -226 226 Reserved for local use -227 227 Reserved for local use -228 228 Reserved for local use -229 229 Reserved for local use -230 230 Reserved for local use -231 231 Reserved for local use -232 232 Reserved for local use -233 233 Reserved for local use -234 234 Reserved for local use -235 235 Reserved for local use -236 236 Reserved for local use -237 237 Reserved for local use -238 238 Reserved for local use -239 239 Reserved for local use -240 240 Reserved for local use -241 241 Reserved for local use -242 242 Reserved for local use -243 243 Reserved for local use -244 244 Reserved for local use -245 245 Reserved for local use -246 246 Reserved for local use -247 247 Reserved for local use -248 248 Reserved for local use -249 249 Reserved for local use -250 250 Reserved for local use -251 251 Reserved for local use -252 252 Reserved for local use -253 253 Reserved for local use -254 254 Reserved for local use +# 192-254 Reserved for local use 255 255 Missing diff --git a/definitions/grib2/tables/6/4.203.table b/definitions/grib2/tables/6/4.203.table index d2ad10b07..057f40910 100644 --- a/definitions/grib2/tables/6/4.203.table +++ b/definitions/grib2/tables/6/4.203.table @@ -1,5 +1,4 @@ # CODE TABLE 4.203, Cloud type - 0 0 Clear 1 1 Cumulonimbus 2 2 Stratus @@ -22,67 +21,5 @@ 19 19 Cirrocumulus - ground based fog beneath the lowest layer 20 20 Cirrus - ground based fog beneath the lowest layer 191 191 Unknown -192 192 Reserved for local use -193 193 Reserved for local use -194 194 Reserved for local use -195 195 Reserved for local use -196 196 Reserved for local use -197 197 Reserved for local use -198 198 Reserved for local use -199 199 Reserved for local use -200 200 Reserved for local use -201 201 Reserved for local use -202 202 Reserved for local use -203 203 Reserved for local use -204 204 Reserved for local use -205 205 Reserved for local use -206 206 Reserved for local use -207 207 Reserved for local use -208 208 Reserved for local use -209 209 Reserved for local use -210 210 Reserved for local use -211 211 Reserved for local use -212 212 Reserved for local use -213 213 Reserved for local use -214 214 Reserved for local use -215 215 Reserved for local use -216 216 Reserved for local use -217 217 Reserved for local use -218 218 Reserved for local use -219 219 Reserved for local use -220 220 Reserved for local use -221 221 Reserved for local use -222 222 Reserved for local use -223 223 Reserved for local use -224 224 Reserved for local use -225 225 Reserved for local use -226 226 Reserved for local use -227 227 Reserved for local use -228 228 Reserved for local use -229 229 Reserved for local use -230 230 Reserved for local use -231 231 Reserved for local use -232 232 Reserved for local use -233 233 Reserved for local use -234 234 Reserved for local use -235 235 Reserved for local use -236 236 Reserved for local use -237 237 Reserved for local use -238 238 Reserved for local use -239 239 Reserved for local use -240 240 Reserved for local use -241 241 Reserved for local use -242 242 Reserved for local use -243 243 Reserved for local use -244 244 Reserved for local use -245 245 Reserved for local use -246 246 Reserved for local use -247 247 Reserved for local use -248 248 Reserved for local use -249 249 Reserved for local use -250 250 Reserved for local use -251 251 Reserved for local use -252 252 Reserved for local use -253 253 Reserved for local use -254 254 Reserved for local use +# 192-254 Reserved for local use 255 255 Missing diff --git a/definitions/grib2/tables/7/4.203.table b/definitions/grib2/tables/7/4.203.table index d2ad10b07..057f40910 100644 --- a/definitions/grib2/tables/7/4.203.table +++ b/definitions/grib2/tables/7/4.203.table @@ -1,5 +1,4 @@ # CODE TABLE 4.203, Cloud type - 0 0 Clear 1 1 Cumulonimbus 2 2 Stratus @@ -22,67 +21,5 @@ 19 19 Cirrocumulus - ground based fog beneath the lowest layer 20 20 Cirrus - ground based fog beneath the lowest layer 191 191 Unknown -192 192 Reserved for local use -193 193 Reserved for local use -194 194 Reserved for local use -195 195 Reserved for local use -196 196 Reserved for local use -197 197 Reserved for local use -198 198 Reserved for local use -199 199 Reserved for local use -200 200 Reserved for local use -201 201 Reserved for local use -202 202 Reserved for local use -203 203 Reserved for local use -204 204 Reserved for local use -205 205 Reserved for local use -206 206 Reserved for local use -207 207 Reserved for local use -208 208 Reserved for local use -209 209 Reserved for local use -210 210 Reserved for local use -211 211 Reserved for local use -212 212 Reserved for local use -213 213 Reserved for local use -214 214 Reserved for local use -215 215 Reserved for local use -216 216 Reserved for local use -217 217 Reserved for local use -218 218 Reserved for local use -219 219 Reserved for local use -220 220 Reserved for local use -221 221 Reserved for local use -222 222 Reserved for local use -223 223 Reserved for local use -224 224 Reserved for local use -225 225 Reserved for local use -226 226 Reserved for local use -227 227 Reserved for local use -228 228 Reserved for local use -229 229 Reserved for local use -230 230 Reserved for local use -231 231 Reserved for local use -232 232 Reserved for local use -233 233 Reserved for local use -234 234 Reserved for local use -235 235 Reserved for local use -236 236 Reserved for local use -237 237 Reserved for local use -238 238 Reserved for local use -239 239 Reserved for local use -240 240 Reserved for local use -241 241 Reserved for local use -242 242 Reserved for local use -243 243 Reserved for local use -244 244 Reserved for local use -245 245 Reserved for local use -246 246 Reserved for local use -247 247 Reserved for local use -248 248 Reserved for local use -249 249 Reserved for local use -250 250 Reserved for local use -251 251 Reserved for local use -252 252 Reserved for local use -253 253 Reserved for local use -254 254 Reserved for local use +# 192-254 Reserved for local use 255 255 Missing diff --git a/definitions/grib2/tables/8/4.203.table b/definitions/grib2/tables/8/4.203.table index 9736c1ab3..fce5a15b1 100644 --- a/definitions/grib2/tables/8/4.203.table +++ b/definitions/grib2/tables/8/4.203.table @@ -1,4 +1,3 @@ -# Automatically generated by ./create_tables.pl from database fm92_grib2@grib-param-db-prod.ecmwf.int, do not edit 0 0 Clear 1 1 Cumulonimbus 2 2 Stratus diff --git a/definitions/grib2/tables/9/4.203.table b/definitions/grib2/tables/9/4.203.table index 9736c1ab3..fce5a15b1 100644 --- a/definitions/grib2/tables/9/4.203.table +++ b/definitions/grib2/tables/9/4.203.table @@ -1,4 +1,3 @@ -# Automatically generated by ./create_tables.pl from database fm92_grib2@grib-param-db-prod.ecmwf.int, do not edit 0 0 Clear 1 1 Cumulonimbus 2 2 Stratus From 5d4103f590c5533852fd0e5e56b5f946296a6d04 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 16 May 2019 17:16:20 +0100 Subject: [PATCH 237/414] Fix tests --- tests/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Makefile.am b/tests/Makefile.am index 19c54289e..6c164100b 100755 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -35,7 +35,7 @@ TESTS = definitions.sh \ decimalPrecision.sh \ grib_bitsPerValue.sh \ get_fail.sh \ - missing.sh \ + grib_missing.sh \ grib_local.sh \ grib_step.sh \ grib_set.sh \ From 7738c9e23e527a2c9276b8deb4c42b4f8b195017 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 16 May 2019 17:32:15 +0100 Subject: [PATCH 238/414] Update ignore list --- .gitignore | 50 -------------------------------------------------- 1 file changed, 50 deletions(-) diff --git a/.gitignore b/.gitignore index 2f3f623d6..8a3639ff7 100644 --- a/.gitignore +++ b/.gitignore @@ -11,48 +11,13 @@ src/eccodes_constants.h.new src/grib_errors.c.new src/grib_errors.h.new src/errors.py.new -config/test-driver -autom4te.cache/ -config.log -config.status configure grib_api.spec grib_api.pc grib_api_f90.pc -perl/GRIB-API/Makefile.PL rpms/eccodes.pc rpms/eccodes.spec rpms/eccodes_f90.pc -aclocal.m4 -src/config.h.in~ - -python/eccodes.py -python/eccodes/__init__.pyc -python/eccodes/eccodes.pyc -python/gribapi.py -python/gribapi/__init__.pyc -python/gribapi/gribapi.pyc -python/gribapi_swig.pyc - -# Generated stuff from builds -src/.libs/ -tools/.libs/ -fortran/.libs/ -fortran/*.mod -fortran/grib_f90.f90 -fortran/eccodes_f90.f90 -fortran/grib_kinds.h -fortran/grib_types -fortran/same_int_long -fortran/same_int_size_t -python/.libs/ -python/gribapi_swig.py -python/gribapi_swig_wrap.c -python/eccode_swig.py -python/eccode_swig_wrap.c -python/setup.py -tests/.libs/ -tigge/.libs/ # compiled source # ################### @@ -91,21 +56,6 @@ Thumbs.db src/tags -data/bufr/*.ref -data/bufr/*.test -data/bufr/*.json -data/bufr/*.no -data/bufr/*.bufr -data/gts/*.DAT -data/gts/*.ref -data/metar/*.txt -data/metar/*.ref -data/.downloaded -data/budg -data/*.grib -data/*.grib2 -data/*.grib1 -data/tigge/tigge*.grib data/exp/ CMakeLists.txt.user* From bdf2b02b490752ce1a122cb2dacf77c931ffb246 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 17 May 2019 15:02:58 +0100 Subject: [PATCH 239/414] Add codes_get_product_kind --- examples/C/grib_pthreads.c | 3 +++ src/eccodes.h | 1 + src/grib_handle.c | 9 +++++++++ tests/bufr_get_element.c | 5 ++++- 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/examples/C/grib_pthreads.c b/examples/C/grib_pthreads.c index b99b5fb27..f1fc72df5 100644 --- a/examples/C/grib_pthreads.c +++ b/examples/C/grib_pthreads.c @@ -26,9 +26,12 @@ static void* process_grib(void* threadID) double min=0,max=0; double pv[4]={1,2,3,4}; const size_t pvsize=4; + ProductKind prod_kind = 0; codes_handle* h = codes_grib_handle_new_from_samples(0, "regular_ll_pl_grib2"); assert(h); + CODES_CHECK(codes_get_product_kind(h, &prod_kind), 0); + assert(prod_kind == PRODUCT_GRIB); printf("Thread %ld running\n", tid); CODES_CHECK(codes_set_long(h,"indicatorOfUnitOfTimeRange", indicatorOfUnitOfTimeRange),0); diff --git a/src/eccodes.h b/src/eccodes.h index 3d39be6a9..09055ba93 100644 --- a/src/eccodes.h +++ b/src/eccodes.h @@ -1208,6 +1208,7 @@ void codes_get_reduced_row_p(long pl, double lon_first, double lon_last, long *n /* read products */ int codes_get_message_offset(codes_handle* h,off_t* offset); int codes_get_message_size(codes_handle* h,size_t* size); +int codes_get_product_kind(codes_handle* h, ProductKind* product_kind); codes_box* codes_box_new(codes_handle* h,int* error); codes_points* codes_box_get_points(codes_box *box,double north, double west,double south,double east, int *err); diff --git a/src/grib_handle.c b/src/grib_handle.c index 2c8e136f3..00dd44474 100644 --- a/src/grib_handle.c +++ b/src/grib_handle.c @@ -1286,6 +1286,15 @@ int grib_get_message_offset ( grib_handle* h,off_t* offset ) return 0; } +int codes_get_product_kind(grib_handle* h, ProductKind* product_kind) +{ + if (h) { + *product_kind = h->product_kind; + return GRIB_SUCCESS; + } + return GRIB_NULL_HANDLE; +} + int grib_get_message_size ( grib_handle* h,size_t* size ) { long totalLength=0; diff --git a/tests/bufr_get_element.c b/tests/bufr_get_element.c index b993be185..15a32ccc4 100644 --- a/tests/bufr_get_element.c +++ b/tests/bufr_get_element.c @@ -28,13 +28,16 @@ int main(int argc,char* argv[]) const char* infile = "../data/bufr/mhen_55.bufr"; const char* key_name = "#5#brightnessTemperature"; const double tolerance = 1e-6; + ProductKind prod_kind = 0; in=fopen(infile,"rb"); assert(in); while ((h = codes_handle_new_from_file(NULL, in, PRODUCT_BUFR, &err)) != NULL || err != CODES_SUCCESS) { - assert(h); + CODES_CHECK(codes_get_product_kind(h, &prod_kind), 0); + assert(prod_kind == PRODUCT_BUFR); + CODES_CHECK(codes_get_long(h, "compressedData", &compressed), 0); assert(compressed == 1); From 6fbac3427c67d17168703c0bcd2898e73d024567 Mon Sep 17 00:00:00 2001 From: Marijana Crepulja Date: Mon, 20 May 2019 12:13:29 +0100 Subject: [PATCH 240/414] ECC-927: Update BUFR tables with the latest WMO version 32 --- .../tables/0/wmo/32/codetables/1003.table | 8 + .../tables/0/wmo/32/codetables/10063.table | 10 + .../tables/0/wmo/32/codetables/10064.table | 4 + .../tables/0/wmo/32/codetables/1007.table | 212 +++ .../tables/0/wmo/32/codetables/1024.table | 9 + .../tables/0/wmo/32/codetables/1028.table | 7 + .../tables/0/wmo/32/codetables/1029.table | 8 + .../tables/0/wmo/32/codetables/1033.table | 237 +++ .../tables/0/wmo/32/codetables/1034.table | 104 + .../tables/0/wmo/32/codetables/1036.table | 38 + .../tables/0/wmo/32/codetables/1038.table | 7 + .../tables/0/wmo/32/codetables/1044.table | 9 + .../tables/0/wmo/32/codetables/1052.table | 4 + .../tables/0/wmo/32/codetables/1090.table | 5 + .../tables/0/wmo/32/codetables/1092.table | 5 + .../tables/0/wmo/32/codetables/1101.table | 202 ++ .../tables/0/wmo/32/codetables/11030.table | 25 + .../tables/0/wmo/32/codetables/11031.table | 16 + .../tables/0/wmo/32/codetables/11037.table | 30 + .../tables/0/wmo/32/codetables/11038.table | 17 + .../tables/0/wmo/32/codetables/11039.table | 17 + .../tables/0/wmo/32/codetables/1150.table | 6 + .../tables/0/wmo/32/codetables/1151.table | 3 + .../tables/0/wmo/32/codetables/13038.table | 4 + .../tables/0/wmo/32/codetables/13039.table | 3 + .../tables/0/wmo/32/codetables/13040.table | 13 + .../tables/0/wmo/32/codetables/13041.table | 10 + .../tables/0/wmo/32/codetables/13051.table | 8 + .../tables/0/wmo/32/codetables/13056.table | 11 + .../tables/0/wmo/32/codetables/13057.table | 11 + .../tables/0/wmo/32/codetables/15025.table | 4 + .../tables/0/wmo/32/codetables/19001.table | 7 + .../tables/0/wmo/32/codetables/19008.table | 5 + .../tables/0/wmo/32/codetables/19010.table | 3 + .../tables/0/wmo/32/codetables/19100.table | 9 + .../tables/0/wmo/32/codetables/19101.table | 10 + .../tables/0/wmo/32/codetables/19102.table | 8 + .../tables/0/wmo/32/codetables/19103.table | 12 + .../tables/0/wmo/32/codetables/19104.table | 12 + .../tables/0/wmo/32/codetables/19105.table | 10 + .../tables/0/wmo/32/codetables/19107.table | 11 + .../tables/0/wmo/32/codetables/19108.table | 8 + .../tables/0/wmo/32/codetables/19109.table | 12 + .../tables/0/wmo/32/codetables/19110.table | 8 + .../tables/0/wmo/32/codetables/19113.table | 8 + .../tables/0/wmo/32/codetables/19117.table | 4 + .../tables/0/wmo/32/codetables/19119.table | 4 + .../tables/0/wmo/32/codetables/20003.table | 266 +++ .../tables/0/wmo/32/codetables/20004.table | 21 + .../tables/0/wmo/32/codetables/20005.table | 21 + .../tables/0/wmo/32/codetables/20006.table | 5 + .../tables/0/wmo/32/codetables/20008.table | 19 + .../tables/0/wmo/32/codetables/20009.table | 6 + .../tables/0/wmo/32/codetables/2001.table | 4 + .../tables/0/wmo/32/codetables/20011.table | 16 + .../tables/0/wmo/32/codetables/20012.table | 55 + .../tables/0/wmo/32/codetables/20017.table | 11 + .../tables/0/wmo/32/codetables/20018.table | 4 + .../tables/0/wmo/32/codetables/2002.table | 3 + .../tables/0/wmo/32/codetables/20021.table | 23 + .../tables/0/wmo/32/codetables/20022.table | 7 + .../tables/0/wmo/32/codetables/20023.table | 14 + .../tables/0/wmo/32/codetables/20024.table | 8 + .../tables/0/wmo/32/codetables/20025.table | 13 + .../tables/0/wmo/32/codetables/20026.table | 16 + .../tables/0/wmo/32/codetables/20027.table | 8 + .../tables/0/wmo/32/codetables/20028.table | 4 + .../tables/0/wmo/32/codetables/20029.table | 4 + .../tables/0/wmo/32/codetables/2003.table | 13 + .../tables/0/wmo/32/codetables/20032.table | 6 + .../tables/0/wmo/32/codetables/20033.table | 3 + .../tables/0/wmo/32/codetables/20034.table | 12 + .../tables/0/wmo/32/codetables/20035.table | 12 + .../tables/0/wmo/32/codetables/20036.table | 12 + .../tables/0/wmo/32/codetables/20037.table | 12 + .../tables/0/wmo/32/codetables/2004.table | 11 + .../tables/0/wmo/32/codetables/20040.table | 9 + .../tables/0/wmo/32/codetables/20041.table | 14 + .../tables/0/wmo/32/codetables/20042.table | 4 + .../tables/0/wmo/32/codetables/20045.table | 4 + .../tables/0/wmo/32/codetables/20048.table | 5 + .../tables/0/wmo/32/codetables/20050.table | 10 + .../tables/0/wmo/32/codetables/20055.table | 12 + .../tables/0/wmo/32/codetables/20056.table | 8 + .../tables/0/wmo/32/codetables/20062.table | 21 + .../tables/0/wmo/32/codetables/20063.table | 71 + .../tables/0/wmo/32/codetables/2007.table | 11 + .../tables/0/wmo/32/codetables/20071.table | 11 + .../tables/0/wmo/32/codetables/2008.table | 7 + .../tables/0/wmo/32/codetables/20085.table | 3 + .../tables/0/wmo/32/codetables/20086.table | 11 + .../tables/0/wmo/32/codetables/20087.table | 6 + .../tables/0/wmo/32/codetables/20089.table | 11 + .../tables/0/wmo/32/codetables/20090.table | 7 + .../tables/0/wmo/32/codetables/20101.table | 11 + .../tables/0/wmo/32/codetables/20102.table | 11 + .../tables/0/wmo/32/codetables/20103.table | 11 + .../tables/0/wmo/32/codetables/20104.table | 11 + .../tables/0/wmo/32/codetables/20105.table | 12 + .../tables/0/wmo/32/codetables/20106.table | 7 + .../tables/0/wmo/32/codetables/20107.table | 11 + .../tables/0/wmo/32/codetables/20108.table | 9 + .../tables/0/wmo/32/codetables/2011.table | 100 + .../tables/0/wmo/32/codetables/20119.table | 4 + .../tables/0/wmo/32/codetables/20124.table | 4 + .../tables/0/wmo/32/codetables/2013.table | 11 + .../tables/0/wmo/32/codetables/20136.table | 44 + .../tables/0/wmo/32/codetables/20137.table | 11 + .../tables/0/wmo/32/codetables/20138.table | 9 + .../tables/0/wmo/32/codetables/2014.table | 51 + .../tables/0/wmo/32/codetables/2015.table | 7 + .../tables/0/wmo/32/codetables/2016.table | 4 + .../tables/0/wmo/32/codetables/2017.table | 6 + .../tables/0/wmo/32/codetables/2019.table | 346 ++++ .../tables/0/wmo/32/codetables/2020.table | 32 + .../tables/0/wmo/32/codetables/2021.table | 8 + .../tables/0/wmo/32/codetables/2022.table | 5 + .../tables/0/wmo/32/codetables/2023.table | 11 + .../tables/0/wmo/32/codetables/2024.table | 4 + .../tables/0/wmo/32/codetables/2025.table | 16 + .../tables/0/wmo/32/codetables/2030.table | 8 + .../tables/0/wmo/32/codetables/2031.table | 21 + .../tables/0/wmo/32/codetables/2032.table | 4 + .../tables/0/wmo/32/codetables/2033.table | 5 + .../tables/0/wmo/32/codetables/2034.table | 7 + .../tables/0/wmo/32/codetables/2036.table | 4 + .../tables/0/wmo/32/codetables/2037.table | 8 + .../tables/0/wmo/32/codetables/2038.table | 16 + .../tables/0/wmo/32/codetables/2039.table | 5 + .../tables/0/wmo/32/codetables/2040.table | 8 + .../tables/0/wmo/32/codetables/2041.table | 6 + .../tables/0/wmo/32/codetables/2042.table | 4 + .../tables/0/wmo/32/codetables/2044.table | 6 + .../tables/0/wmo/32/codetables/2045.table | 5 + .../tables/0/wmo/32/codetables/2046.table | 4 + .../tables/0/wmo/32/codetables/2047.table | 9 + .../tables/0/wmo/32/codetables/2048.table | 14 + .../tables/0/wmo/32/codetables/2049.table | 4 + .../tables/0/wmo/32/codetables/2050.table | 19 + .../tables/0/wmo/32/codetables/2051.table | 5 + .../tables/0/wmo/32/codetables/2052.table | 5 + .../tables/0/wmo/32/codetables/2053.table | 5 + .../tables/0/wmo/32/codetables/2054.table | 6 + .../tables/0/wmo/32/codetables/2055.table | 10 + .../tables/0/wmo/32/codetables/2056.table | 6 + .../tables/0/wmo/32/codetables/2057.table | 7 + .../tables/0/wmo/32/codetables/2058.table | 5 + .../tables/0/wmo/32/codetables/2059.table | 5 + .../tables/0/wmo/32/codetables/2060.table | 7 + .../tables/0/wmo/32/codetables/2061.table | 3 + .../tables/0/wmo/32/codetables/2062.table | 7 + .../tables/0/wmo/32/codetables/2064.table | 4 + .../tables/0/wmo/32/codetables/2066.table | 9 + .../tables/0/wmo/32/codetables/2070.table | 13 + .../tables/0/wmo/32/codetables/2080.table | 7 + .../tables/0/wmo/32/codetables/2081.table | 11 + .../tables/0/wmo/32/codetables/2083.table | 7 + .../tables/0/wmo/32/codetables/2084.table | 5 + .../tables/0/wmo/32/codetables/2095.table | 7 + .../tables/0/wmo/32/codetables/2096.table | 9 + .../tables/0/wmo/32/codetables/2097.table | 26 + .../tables/0/wmo/32/codetables/2099.table | 5 + .../tables/0/wmo/32/codetables/2101.table | 10 + .../tables/0/wmo/32/codetables/2103.table | 1 + .../tables/0/wmo/32/codetables/2104.table | 9 + .../tables/0/wmo/32/codetables/21066.table | 11 + .../tables/0/wmo/32/codetables/21067.table | 12 + .../tables/0/wmo/32/codetables/21068.table | 7 + .../tables/0/wmo/32/codetables/21069.table | 9 + .../tables/0/wmo/32/codetables/21070.table | 22 + .../tables/0/wmo/32/codetables/21072.table | 3 + .../tables/0/wmo/32/codetables/21073.table | 8 + .../tables/0/wmo/32/codetables/21076.table | 4 + .../tables/0/wmo/32/codetables/21109.table | 7 + .../tables/0/wmo/32/codetables/21115.table | 10 + .../tables/0/wmo/32/codetables/21116.table | 16 + .../tables/0/wmo/32/codetables/21119.table | 14 + .../tables/0/wmo/32/codetables/21144.table | 1 + .../tables/0/wmo/32/codetables/21148.table | 2 + .../tables/0/wmo/32/codetables/2115.table | 7 + .../tables/0/wmo/32/codetables/21150.table | 4 + .../tables/0/wmo/32/codetables/21155.table | 16 + .../tables/0/wmo/32/codetables/21158.table | 4 + .../tables/0/wmo/32/codetables/21159.table | 4 + .../tables/0/wmo/32/codetables/21169.table | 4 + .../tables/0/wmo/32/codetables/2119.table | 8 + .../tables/0/wmo/32/codetables/2131.table | 1 + .../tables/0/wmo/32/codetables/2137.table | 4 + .../tables/0/wmo/32/codetables/2138.table | 3 + .../tables/0/wmo/32/codetables/2139.table | 3 + .../tables/0/wmo/32/codetables/2143.table | 21 + .../tables/0/wmo/32/codetables/2144.table | 8 + .../tables/0/wmo/32/codetables/2145.table | 9 + .../tables/0/wmo/32/codetables/2146.table | 11 + .../tables/0/wmo/32/codetables/2147.table | 11 + .../tables/0/wmo/32/codetables/2148.table | 12 + .../tables/0/wmo/32/codetables/2149.table | 38 + .../tables/0/wmo/32/codetables/2150.table | 55 + .../tables/0/wmo/32/codetables/2151.table | 11 + .../tables/0/wmo/32/codetables/2152.table | 13 + .../tables/0/wmo/32/codetables/2158.table | 8 + .../tables/0/wmo/32/codetables/2159.table | 7 + .../tables/0/wmo/32/codetables/2160.table | 11 + .../tables/0/wmo/32/codetables/2161.table | 5 + .../tables/0/wmo/32/codetables/2162.table | 19 + .../tables/0/wmo/32/codetables/2163.table | 16 + .../tables/0/wmo/32/codetables/2164.table | 5 + .../tables/0/wmo/32/codetables/2165.table | 7 + .../tables/0/wmo/32/codetables/2166.table | 6 + .../tables/0/wmo/32/codetables/2167.table | 4 + .../tables/0/wmo/32/codetables/2169.table | 5 + .../tables/0/wmo/32/codetables/2170.table | 5 + .../tables/0/wmo/32/codetables/2172.table | 4 + .../tables/0/wmo/32/codetables/2175.table | 9 + .../tables/0/wmo/32/codetables/2176.table | 6 + .../tables/0/wmo/32/codetables/2177.table | 6 + .../tables/0/wmo/32/codetables/2178.table | 5 + .../tables/0/wmo/32/codetables/2179.table | 6 + .../tables/0/wmo/32/codetables/2180.table | 8 + .../tables/0/wmo/32/codetables/2181.table | 5 + .../tables/0/wmo/32/codetables/2182.table | 7 + .../tables/0/wmo/32/codetables/2183.table | 9 + .../tables/0/wmo/32/codetables/2184.table | 9 + .../tables/0/wmo/32/codetables/2185.table | 7 + .../tables/0/wmo/32/codetables/2186.table | 24 + .../tables/0/wmo/32/codetables/2187.table | 11 + .../tables/0/wmo/32/codetables/2188.table | 10 + .../tables/0/wmo/32/codetables/2189.table | 4 + .../tables/0/wmo/32/codetables/2191.table | 4 + .../tables/0/wmo/32/codetables/22056.table | 4 + .../tables/0/wmo/32/codetables/22060.table | 4 + .../tables/0/wmo/32/codetables/22061.table | 11 + .../tables/0/wmo/32/codetables/22067.table | 109 ++ .../tables/0/wmo/32/codetables/22068.table | 43 + .../tables/0/wmo/32/codetables/22120.table | 13 + .../tables/0/wmo/32/codetables/22121.table | 9 + .../tables/0/wmo/32/codetables/22122.table | 8 + .../tables/0/wmo/32/codetables/22123.table | 9 + .../tables/0/wmo/32/codetables/22178.table | 12 + .../tables/0/wmo/32/codetables/23001.table | 5 + .../tables/0/wmo/32/codetables/23002.table | 16 + .../tables/0/wmo/32/codetables/23003.table | 8 + .../tables/0/wmo/32/codetables/23004.table | 6 + .../tables/0/wmo/32/codetables/23005.table | 4 + .../tables/0/wmo/32/codetables/23006.table | 8 + .../tables/0/wmo/32/codetables/23007.table | 5 + .../tables/0/wmo/32/codetables/23008.table | 4 + .../tables/0/wmo/32/codetables/23009.table | 4 + .../tables/0/wmo/32/codetables/23016.table | 4 + .../tables/0/wmo/32/codetables/23018.table | 6 + .../tables/0/wmo/32/codetables/23031.table | 4 + .../tables/0/wmo/32/codetables/23032.table | 4 + .../tables/0/wmo/32/codetables/24003.table | 5 + .../tables/0/wmo/32/codetables/25004.table | 4 + .../tables/0/wmo/32/codetables/25005.table | 4 + .../tables/0/wmo/32/codetables/25006.table | 5 + .../tables/0/wmo/32/codetables/25009.table | 4 + .../tables/0/wmo/32/codetables/25010.table | 8 + .../tables/0/wmo/32/codetables/25011.table | 4 + .../tables/0/wmo/32/codetables/25012.table | 4 + .../tables/0/wmo/32/codetables/25013.table | 1 + .../tables/0/wmo/32/codetables/25015.table | 1 + .../tables/0/wmo/32/codetables/25017.table | 1 + .../tables/0/wmo/32/codetables/25020.table | 4 + .../tables/0/wmo/32/codetables/25021.table | 5 + .../tables/0/wmo/32/codetables/25022.table | 8 + .../tables/0/wmo/32/codetables/25023.table | 8 + .../tables/0/wmo/32/codetables/25024.table | 13 + .../tables/0/wmo/32/codetables/25029.table | 5 + .../tables/0/wmo/32/codetables/25030.table | 4 + .../tables/0/wmo/32/codetables/25031.table | 6 + .../tables/0/wmo/32/codetables/25032.table | 4 + .../tables/0/wmo/32/codetables/25033.table | 4 + .../tables/0/wmo/32/codetables/25034.table | 3 + .../tables/0/wmo/32/codetables/25035.table | 8 + .../tables/0/wmo/32/codetables/25036.table | 4 + .../tables/0/wmo/32/codetables/25040.table | 10 + .../tables/0/wmo/32/codetables/25041.table | 4 + .../tables/0/wmo/32/codetables/25042.table | 4 + .../tables/0/wmo/32/codetables/25053.table | 6 + .../tables/0/wmo/32/codetables/25063.table | 4 + .../tables/0/wmo/32/codetables/25069.table | 7 + .../tables/0/wmo/32/codetables/25086.table | 4 + .../tables/0/wmo/32/codetables/25090.table | 11 + .../tables/0/wmo/32/codetables/25093.table | 3 + .../tables/0/wmo/32/codetables/25095.table | 1 + .../tables/0/wmo/32/codetables/25096.table | 4 + .../tables/0/wmo/32/codetables/25097.table | 11 + .../tables/0/wmo/32/codetables/25098.table | 8 + .../tables/0/wmo/32/codetables/25099.table | 6 + .../tables/0/wmo/32/codetables/25110.table | 6 + .../tables/0/wmo/32/codetables/25112.table | 5 + .../tables/0/wmo/32/codetables/25113.table | 3 + .../tables/0/wmo/32/codetables/25120.table | 4 + .../tables/0/wmo/32/codetables/25122.table | 4 + .../tables/0/wmo/32/codetables/25123.table | 4 + .../tables/0/wmo/32/codetables/25124.table | 4 + .../tables/0/wmo/32/codetables/25150.table | 3 + .../tables/0/wmo/32/codetables/25174.table | 13 + .../tables/0/wmo/32/codetables/25181.table | 3 + .../tables/0/wmo/32/codetables/25182.table | 3 + .../tables/0/wmo/32/codetables/25184.table | 3 + .../tables/0/wmo/32/codetables/25185.table | 2 + .../tables/0/wmo/32/codetables/25187.table | 3 + .../tables/0/wmo/32/codetables/25188.table | 6 + .../tables/0/wmo/32/codetables/25190.table | 7 + .../tables/0/wmo/32/codetables/25191.table | 4 + .../tables/0/wmo/32/codetables/26010.table | 25 + .../tables/0/wmo/32/codetables/29001.table | 8 + .../tables/0/wmo/32/codetables/29002.table | 4 + .../tables/0/wmo/32/codetables/3001.table | 11 + .../tables/0/wmo/32/codetables/3003.table | 8 + .../tables/0/wmo/32/codetables/30031.table | 13 + .../tables/0/wmo/32/codetables/30032.table | 9 + .../tables/0/wmo/32/codetables/3004.table | 11 + .../tables/0/wmo/32/codetables/3008.table | 4 + .../tables/0/wmo/32/codetables/3010.table | 12 + .../tables/0/wmo/32/codetables/3011.table | 4 + .../tables/0/wmo/32/codetables/3012.table | 3 + .../tables/0/wmo/32/codetables/3016.table | 9 + .../tables/0/wmo/32/codetables/3017.table | 5 + .../tables/0/wmo/32/codetables/3018.table | 22 + .../tables/0/wmo/32/codetables/3019.table | 8 + .../tables/0/wmo/32/codetables/3020.table | 5 + .../tables/0/wmo/32/codetables/3021.table | 4 + .../tables/0/wmo/32/codetables/3022.table | 4 + .../tables/0/wmo/32/codetables/3023.table | 8 + .../tables/0/wmo/32/codetables/3027.table | 8 + .../tables/0/wmo/32/codetables/3028.table | 8 + .../tables/0/wmo/32/codetables/31021.table | 9 + .../tables/0/wmo/32/codetables/31031.table | 1 + .../tables/0/wmo/32/codetables/33002.table | 4 + .../tables/0/wmo/32/codetables/33003.table | 5 + .../tables/0/wmo/32/codetables/33005.table | 23 + .../tables/0/wmo/32/codetables/33006.table | 5 + .../tables/0/wmo/32/codetables/33015.table | 16 + .../tables/0/wmo/32/codetables/33020.table | 8 + .../tables/0/wmo/32/codetables/33021.table | 4 + .../tables/0/wmo/32/codetables/33022.table | 4 + .../tables/0/wmo/32/codetables/33023.table | 4 + .../tables/0/wmo/32/codetables/33024.table | 10 + .../tables/0/wmo/32/codetables/33025.table | 5 + .../tables/0/wmo/32/codetables/33026.table | 17 + .../tables/0/wmo/32/codetables/33027.table | 6 + .../tables/0/wmo/32/codetables/33028.table | 5 + .../tables/0/wmo/32/codetables/33030.table | 7 + .../tables/0/wmo/32/codetables/33031.table | 21 + .../tables/0/wmo/32/codetables/33032.table | 7 + .../tables/0/wmo/32/codetables/33033.table | 3 + .../tables/0/wmo/32/codetables/33035.table | 10 + .../tables/0/wmo/32/codetables/33037.table | 19 + .../tables/0/wmo/32/codetables/33038.table | 9 + .../tables/0/wmo/32/codetables/33039.table | 9 + .../tables/0/wmo/32/codetables/33041.table | 4 + .../tables/0/wmo/32/codetables/33042.table | 5 + .../tables/0/wmo/32/codetables/33043.table | 4 + .../tables/0/wmo/32/codetables/33044.table | 14 + .../tables/0/wmo/32/codetables/33047.table | 27 + .../tables/0/wmo/32/codetables/33048.table | 4 + .../tables/0/wmo/32/codetables/33049.table | 4 + .../tables/0/wmo/32/codetables/33050.table | 9 + .../tables/0/wmo/32/codetables/33060.table | 4 + .../tables/0/wmo/32/codetables/33066.table | 2 + .../tables/0/wmo/32/codetables/33070.table | 14 + .../tables/0/wmo/32/codetables/33071.table | 10 + .../tables/0/wmo/32/codetables/33072.table | 18 + .../tables/0/wmo/32/codetables/33075.table | 5 + .../tables/0/wmo/32/codetables/33076.table | 2 + .../tables/0/wmo/32/codetables/33077.table | 12 + .../tables/0/wmo/32/codetables/33078.table | 5 + .../tables/0/wmo/32/codetables/33079.table | 10 + .../tables/0/wmo/32/codetables/33080.table | 13 + .../tables/0/wmo/32/codetables/33081.table | 9 + .../tables/0/wmo/32/codetables/33082.table | 10 + .../tables/0/wmo/32/codetables/33083.table | 10 + .../tables/0/wmo/32/codetables/33084.table | 10 + .../tables/0/wmo/32/codetables/33085.table | 14 + .../tables/0/wmo/32/codetables/33086.table | 5 + .../tables/0/wmo/32/codetables/33087.table | 10 + .../tables/0/wmo/32/codetables/33088.table | 12 + .../tables/0/wmo/32/codetables/33092.table | 2 + .../tables/0/wmo/32/codetables/35000.table | 1 + .../tables/0/wmo/32/codetables/35001.table | 4 + .../tables/0/wmo/32/codetables/35030.table | 10 + .../tables/0/wmo/32/codetables/35031.table | 20 + .../tables/0/wmo/32/codetables/35032.table | 10 + .../tables/0/wmo/32/codetables/35033.table | 12 + .../tables/0/wmo/32/codetables/35034.table | 7 + .../tables/0/wmo/32/codetables/35035.table | 20 + .../tables/0/wmo/32/codetables/40005.table | 5 + .../tables/0/wmo/32/codetables/40006.table | 8 + .../tables/0/wmo/32/codetables/40011.table | 4 + .../tables/0/wmo/32/codetables/40012.table | 3 + .../tables/0/wmo/32/codetables/40013.table | 5 + .../tables/0/wmo/32/codetables/40020.table | 16 + .../tables/0/wmo/32/codetables/40023.table | 4 + .../tables/0/wmo/32/codetables/40024.table | 5 + .../tables/0/wmo/32/codetables/40025.table | 4 + .../tables/0/wmo/32/codetables/40028.table | 16 + .../tables/0/wmo/32/codetables/40036.table | 3 + .../tables/0/wmo/32/codetables/40043.table | 4 + .../tables/0/wmo/32/codetables/40045.table | 4 + .../tables/0/wmo/32/codetables/40046.table | 5 + .../tables/0/wmo/32/codetables/40047.table | 4 + .../tables/0/wmo/32/codetables/40048.table | 4 + .../tables/0/wmo/32/codetables/40049.table | 12 + .../tables/0/wmo/32/codetables/40050.table | 3 + .../tables/0/wmo/32/codetables/40051.table | 8 + .../tables/0/wmo/32/codetables/40052.table | 4 + .../tables/0/wmo/32/codetables/40054.table | 12 + .../tables/0/wmo/32/codetables/40055.table | 20 + .../tables/0/wmo/32/codetables/40056.table | 4 + .../tables/0/wmo/32/codetables/40057.table | 30 + .../tables/0/wmo/32/codetables/40068.table | 4 + .../tables/0/wmo/32/codetables/4059.table | 5 + .../tables/0/wmo/32/codetables/4080.table | 6 + .../tables/0/wmo/32/codetables/42004.table | 3 + .../tables/0/wmo/32/codetables/5069.table | 4 + .../tables/0/wmo/32/codetables/8001.table | 6 + .../tables/0/wmo/32/codetables/8002.table | 19 + .../tables/0/wmo/32/codetables/8003.table | 12 + .../tables/0/wmo/32/codetables/8004.table | 6 + .../tables/0/wmo/32/codetables/8005.table | 7 + .../tables/0/wmo/32/codetables/8006.table | 8 + .../tables/0/wmo/32/codetables/8007.table | 5 + .../tables/0/wmo/32/codetables/8008.table | 8 + .../tables/0/wmo/32/codetables/8009.table | 16 + .../tables/0/wmo/32/codetables/8010.table | 14 + .../tables/0/wmo/32/codetables/8011.table | 27 + .../tables/0/wmo/32/codetables/8012.table | 4 + .../tables/0/wmo/32/codetables/8013.table | 4 + .../tables/0/wmo/32/codetables/8014.table | 10 + .../tables/0/wmo/32/codetables/8015.table | 4 + .../tables/0/wmo/32/codetables/8016.table | 5 + .../tables/0/wmo/32/codetables/8017.table | 4 + .../tables/0/wmo/32/codetables/8018.table | 4 + .../tables/0/wmo/32/codetables/8019.table | 8 + .../tables/0/wmo/32/codetables/8021.table | 32 + .../tables/0/wmo/32/codetables/8023.table | 14 + .../tables/0/wmo/32/codetables/8024.table | 12 + .../tables/0/wmo/32/codetables/8025.table | 5 + .../tables/0/wmo/32/codetables/8026.table | 5 + .../tables/0/wmo/32/codetables/8029.table | 16 + .../tables/0/wmo/32/codetables/8032.table | 7 + .../tables/0/wmo/32/codetables/8033.table | 6 + .../tables/0/wmo/32/codetables/8034.table | 10 + .../tables/0/wmo/32/codetables/8035.table | 8 + .../tables/0/wmo/32/codetables/8036.table | 8 + .../tables/0/wmo/32/codetables/8037.table | 4 + .../tables/0/wmo/32/codetables/8038.table | 3 + .../tables/0/wmo/32/codetables/8039.table | 8 + .../tables/0/wmo/32/codetables/8040.table | 49 + .../tables/0/wmo/32/codetables/8041.table | 15 + .../tables/0/wmo/32/codetables/8042.table | 17 + .../tables/0/wmo/32/codetables/8043.table | 17 + .../tables/0/wmo/32/codetables/8050.table | 11 + .../tables/0/wmo/32/codetables/8051.table | 7 + .../tables/0/wmo/32/codetables/8052.table | 26 + .../tables/0/wmo/32/codetables/8053.table | 4 + .../tables/0/wmo/32/codetables/8054.table | 3 + .../tables/0/wmo/32/codetables/8060.table | 8 + .../tables/0/wmo/32/codetables/8065.table | 4 + .../tables/0/wmo/32/codetables/8066.table | 4 + .../tables/0/wmo/32/codetables/8070.table | 6 + .../tables/0/wmo/32/codetables/8072.table | 6 + .../tables/0/wmo/32/codetables/8074.table | 4 + .../tables/0/wmo/32/codetables/8075.table | 4 + .../tables/0/wmo/32/codetables/8076.table | 9 + .../tables/0/wmo/32/codetables/8077.table | 7 + .../tables/0/wmo/32/codetables/8079.table | 9 + .../tables/0/wmo/32/codetables/8080.table | 14 + .../tables/0/wmo/32/codetables/8081.table | 5 + .../tables/0/wmo/32/codetables/8082.table | 3 + .../tables/0/wmo/32/codetables/8083.table | 9 + .../tables/0/wmo/32/codetables/8085.table | 4 + .../tables/0/wmo/32/codetables/8086.table | 11 + .../tables/0/wmo/32/codetables/8087.table | 5 + .../tables/0/wmo/32/codetables/8088.table | 4 + .../tables/0/wmo/32/codetables/8091.table | 11 + .../tables/0/wmo/32/codetables/8092.table | 2 + .../tables/0/wmo/32/codetables/8093.table | 4 + .../bufr/tables/0/wmo/32/element.table | 1691 +++++++++++++++++ definitions/bufr/tables/0/wmo/32/sequence.def | 1066 +++++++++++ 483 files changed, 8594 insertions(+) create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/1003.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/10063.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/10064.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/1007.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/1024.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/1028.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/1029.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/1033.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/1034.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/1036.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/1038.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/1044.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/1052.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/1090.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/1092.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/1101.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/11030.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/11031.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/11037.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/11038.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/11039.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/1150.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/1151.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/13038.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/13039.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/13040.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/13041.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/13051.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/13056.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/13057.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/15025.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/19001.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/19008.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/19010.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/19100.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/19101.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/19102.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/19103.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/19104.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/19105.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/19107.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/19108.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/19109.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/19110.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/19113.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/19117.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/19119.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20003.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20004.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20005.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20006.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20008.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20009.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2001.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20011.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20012.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20017.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20018.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2002.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20021.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20022.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20023.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20024.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20025.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20026.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20027.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20028.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20029.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2003.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20032.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20033.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20034.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20035.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20036.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20037.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2004.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20040.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20041.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20042.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20045.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20048.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20050.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20055.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20056.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20062.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20063.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2007.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20071.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2008.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20085.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20086.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20087.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20089.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20090.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20101.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20102.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20103.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20104.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20105.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20106.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20107.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20108.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2011.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20119.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20124.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2013.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20136.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20137.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/20138.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2014.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2015.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2016.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2017.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2019.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2020.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2021.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2022.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2023.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2024.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2025.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2030.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2031.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2032.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2033.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2034.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2036.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2037.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2038.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2039.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2040.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2041.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2042.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2044.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2045.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2046.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2047.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2048.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2049.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2050.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2051.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2052.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2053.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2054.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2055.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2056.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2057.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2058.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2059.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2060.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2061.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2062.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2064.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2066.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2070.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2080.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2081.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2083.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2084.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2095.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2096.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2097.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2099.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2101.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2103.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2104.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/21066.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/21067.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/21068.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/21069.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/21070.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/21072.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/21073.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/21076.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/21109.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/21115.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/21116.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/21119.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/21144.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/21148.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2115.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/21150.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/21155.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/21158.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/21159.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/21169.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2119.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2131.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2137.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2138.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2139.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2143.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2144.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2145.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2146.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2147.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2148.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2149.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2150.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2151.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2152.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2158.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2159.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2160.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2161.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2162.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2163.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2164.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2165.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2166.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2167.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2169.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2170.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2172.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2175.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2176.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2177.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2178.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2179.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2180.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2181.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2182.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2183.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2184.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2185.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2186.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2187.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2188.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2189.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/2191.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/22056.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/22060.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/22061.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/22067.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/22068.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/22120.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/22121.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/22122.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/22123.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/22178.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/23001.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/23002.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/23003.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/23004.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/23005.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/23006.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/23007.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/23008.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/23009.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/23016.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/23018.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/23031.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/23032.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/24003.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25004.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25005.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25006.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25009.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25010.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25011.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25012.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25013.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25015.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25017.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25020.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25021.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25022.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25023.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25024.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25029.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25030.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25031.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25032.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25033.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25034.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25035.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25036.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25040.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25041.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25042.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25053.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25063.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25069.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25086.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25090.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25093.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25095.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25096.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25097.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25098.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25099.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25110.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25112.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25113.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25120.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25122.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25123.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25124.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25150.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25174.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25181.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25182.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25184.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25185.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25187.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25188.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25190.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/25191.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/26010.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/29001.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/29002.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/3001.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/3003.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/30031.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/30032.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/3004.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/3008.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/3010.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/3011.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/3012.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/3016.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/3017.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/3018.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/3019.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/3020.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/3021.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/3022.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/3023.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/3027.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/3028.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/31021.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/31031.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33002.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33003.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33005.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33006.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33015.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33020.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33021.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33022.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33023.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33024.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33025.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33026.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33027.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33028.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33030.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33031.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33032.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33033.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33035.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33037.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33038.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33039.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33041.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33042.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33043.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33044.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33047.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33048.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33049.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33050.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33060.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33066.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33070.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33071.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33072.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33075.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33076.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33077.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33078.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33079.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33080.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33081.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33082.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33083.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33084.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33085.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33086.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33087.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33088.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/33092.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/35000.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/35001.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/35030.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/35031.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/35032.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/35033.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/35034.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/35035.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/40005.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/40006.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/40011.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/40012.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/40013.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/40020.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/40023.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/40024.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/40025.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/40028.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/40036.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/40043.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/40045.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/40046.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/40047.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/40048.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/40049.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/40050.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/40051.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/40052.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/40054.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/40055.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/40056.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/40057.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/40068.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/4059.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/4080.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/42004.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/5069.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8001.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8002.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8003.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8004.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8005.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8006.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8007.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8008.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8009.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8010.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8011.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8012.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8013.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8014.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8015.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8016.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8017.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8018.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8019.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8021.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8023.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8024.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8025.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8026.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8029.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8032.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8033.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8034.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8035.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8036.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8037.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8038.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8039.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8040.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8041.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8042.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8043.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8050.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8051.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8052.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8053.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8054.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8060.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8065.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8066.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8070.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8072.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8074.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8075.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8076.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8077.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8079.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8080.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8081.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8082.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8083.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8085.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8086.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8087.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8088.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8091.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8092.table create mode 100644 definitions/bufr/tables/0/wmo/32/codetables/8093.table create mode 100644 definitions/bufr/tables/0/wmo/32/element.table create mode 100644 definitions/bufr/tables/0/wmo/32/sequence.def diff --git a/definitions/bufr/tables/0/wmo/32/codetables/1003.table b/definitions/bufr/tables/0/wmo/32/codetables/1003.table new file mode 100644 index 000000000..a0c90ee0f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/1003.table @@ -0,0 +1,8 @@ +0 0 ANTARCTICA +1 1 REGION I +2 2 REGION II +3 3 REGION III +4 4 REGION IV +5 5 REGION V +6 6 REGION VI +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/10063.table b/definitions/bufr/tables/0/wmo/32/codetables/10063.table new file mode 100644 index 000000000..50978740b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/10063.table @@ -0,0 +1,10 @@ +0 0 INCREASING, THEN DECREASING; ATMOSPHERIC PRESSURE THE SAME OR HIGHER THAN THREE HOURS AGO +1 1 INCREASING, THEN STEADY; OR INCREASING, THEN INCREASING MORE SLOWLY +2 2 INCREASING (STEADILY OR UNSTEADILY) +3 3 DECREASING OR STEADY, THEN INCREASING; OR INCREASING, THEN INCREASING MORE RAPIDLY +4 4 STEADY; ATMOSPHERIC PRESSURE THE SAME AS THREE HOURS AGO +5 5 DECREASING, THEN INCREASING; ATMOSPHERIC PRESSURE THE SAME OR LOWER THAN THREE HOURS AGO +6 6 DECREASING, THEN STEADY; OR DECREASING, THEN DECREASING MORE SLOWLY +7 7 DECREASING (STEADILY OR UNSTEADILY) +8 8 STEADY OR INCREASING, THEN DECREASING; OR DECREASING, THEN DECREASING MORE RAPIDLY +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/10064.table b/definitions/bufr/tables/0/wmo/32/codetables/10064.table new file mode 100644 index 000000000..88ba38a95 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/10064.table @@ -0,0 +1,4 @@ +0 0 SUBSONIC +1 1 TRANSONIC +2 2 SUPERSONIC +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/1007.table b/definitions/bufr/tables/0/wmo/32/codetables/1007.table new file mode 100644 index 000000000..f60a1540f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/1007.table @@ -0,0 +1,212 @@ +0 0 RESERVED +1 1 ERS 1 +2 2 ERS 2 +3 3 METOP-1 (METOP-B) +4 4 METOP-2 (METOP-A) +5 5 METOP-3 (METOP-C) +20 20 SPOT1 +21 21 SPOT2 +22 22 SPOT3 +23 23 SPOT4 +40 40 OERSTED +41 41 CHAMP +42 42 TERRASAR-X +43 43 TANDEM-X +44 44 PAZ +46 46 SMOS +47 47 CRYOSAT-2 +48 48 AEOLUS +50 50 METEOSAT 3 +51 51 METEOSAT 4 +52 52 METEOSAT 5 +53 53 METEOSAT 6 +54 54 METEOSAT 7 +55 55 METEOSAT 8 +56 56 METEOSAT 9 +57 57 METEOSAT 10 +58 58 METEOSAT 1 +59 59 METEOSAT 2 +60 60 ENVISAT +61 61 SENTINEL 3A +62 62 SENTINEL 1A +63 63 SENTINEL 1B +64 64 SENTINEL 5P +65 65 SENTINEL 3B +70 70 METEOSAT 11 +120 120 ADEOS +121 121 ADEOS II +122 122 GCOM-W1 +140 140 GOSAT +150 150 GMS 3 +151 151 GMS 4 +152 152 GMS 5 +153 153 GMS +154 154 GMS 2 +171 171 MTSAT-1R +172 172 MTSAT-2 +173 173 HIMAWARI-8 +174 174 HIMAWARI-9 +200 200 NOAA 8 +201 201 NOAA 9 +202 202 NOAA 10 +203 203 NOAA 11 +204 204 NOAA 12 +205 205 NOAA 14 +206 206 NOAA 15 +207 207 NOAA 16 +208 208 NOAA 17 +209 209 NOAA 18 +220 220 LANDSAT 5 +221 221 LANDSAT 4 +222 222 LANDSAT 7 +223 223 NOAA 19 +224 224 NPP +225 225 NOAA 20 +226 226 NOAA 21 +240 240 DMSP 7 +241 241 DMSP 8 +242 242 DMSP 9 +243 243 DMSP 10 +244 244 DMSP 11 +245 245 DMSP 12 +246 246 DMSP 13 +247 247 DMSP 14 +248 248 DMSP 15 +249 249 DMSP 16 +250 250 GOES 6 +251 251 GOES 7 +252 252 GOES 8 +253 253 GOES 9 +254 254 GOES 10 +255 255 GOES 11 +256 256 GOES 12 +257 257 GOES 13 +258 258 GOES 14 +259 259 GOES 15 +260 260 JASON 1 +261 261 JASON 2 +262 262 JASON 3 +269 269 SPIRE LEMUR 3U CUBESAT +270 270 GOES 16 +271 271 GOES 17 +272 272 GOES 18 +273 273 GOES 19 +281 281 QUIKSCAT +282 282 TRMM +283 283 CORIOLIS +285 285 DMSP 17 +286 286 DMSP 18 +287 287 DMSP 19 +288 288 GPM-CORE +289 289 ORBITING CARBON OBSERVATORY - 2 (OCO-2, NASA) +310 310 GOMS 1 +311 311 GOMS 2 +320 320 METEOR 2-21 +321 321 METEOR 3-5 +322 322 METEOR 3M-1 +323 323 METEOR 3M-2 +341 341 RESURS 01-4 +410 410 KALPANA-1 +421 421 OCEANSAT-2 +422 422 SCATSAT-1 +423 423 OCEANSAT-3 +430 430 INSAT 1B +431 431 INSAT 1C +432 432 INSAT 1D +440 440 MEGHA-TROPIQUES +441 441 SARAL +450 450 INSAT 2A +451 451 INSAT 2B +452 452 INSAT 2E +470 470 INSAT 3A +471 471 INSAT 3D +472 472 INSAT 3E +473 473 INSAT 3DR +474 474 INSAT 3DS +500 500 FY-1C +501 501 FY-1D +502 502 HAI YANG 2A (HY-2A, SOA/NSOAS CHINA) +503 503 HAI YANG 2B (HY-2B, SOA/NSOAS CHINA) +510 510 FY-2 +512 512 FY-2B +513 513 FY-2C +514 514 FY-2D +515 515 FY-2E +516 516 FY-2F +517 517 FY-2G +520 520 FY-3A +521 521 FY-3B +522 522 FY-3C +523 523 FY-3D +530 530 FY-4A +700 700 TIROS M (ITOS 1) +701 701 NOAA 1 +702 702 NOAA 2 +703 703 NOAA 3 +704 704 NOAA 4 +705 705 NOAA 5 +706 706 NOAA 6 +707 707 NOAA 7 +708 708 TIROS-N +710 710 GOES (SMS 1) +711 711 GOES (SMS 2) +720 720 TOPEX +721 721 GFO (GEOSAT FOLLOW ON) +722 722 GRACE A +723 723 GRACE B +724 724 COSMIC-2 P1 +725 725 COSMIC-2 P2 +726 726 COSMIC-2 P3 +727 727 COSMIC-2 P4 +728 728 COSMIC-2 P5 +729 729 COSMIC-2 P6 +731 731 GOES 1 +732 732 GOES 2 +733 733 GOES 3 +734 734 GOES 4 +735 735 GOES 5 +740 740 COSMIC-1 +741 741 COSMIC-2 +742 742 COSMIC-3 +743 743 COSMIC-4 +744 744 COSMIC-5 +745 745 COSMIC-6 +750 750 COSMIC-2 E1 +751 751 COSMIC-2 E2 +752 752 COSMIC-2 E3 +753 753 COSMIC-2 E4 +754 754 COSMIC-2 E5 +755 755 COSMIC-2 E6 +763 763 NIMBUS 3 +764 764 NIMBUS 4 +765 765 NIMBUS 5 +766 766 NIMBUS 6 +767 767 NIMBUS 7 +780 780 ERBS +781 781 UARS +782 782 EARTH PROBE +783 783 TERRA +784 784 AQUA +785 785 AURA +786 786 C/NOFS +787 787 CALIPSO +788 788 CLOUDSAT +800 800 SUNSAT +801 801 INTERNATIONAL SPACE STATION (ISS) +802 802 CFOSAT +803 803 GRACE C (GRACE-FO) +804 804 GRACE D (GRACE-FO) +810 810 COMS-1 +811 811 COMS-2 +812 812 SCISAT-1 +813 813 ODIN +820 820 SAC-C +821 821 SAC-D +825 825 KOMPSAT-5 +850 850 COMBINATION OF TERRA AND AQUA +851 851 COMBINATION OF NOAA 16 TO NOAA 19 +852 852 COMBINATION OF METOP-1 TO METOP-3 +853 853 COMBINATION OF METEOSAT AND DMSP +854 854 NON-SPECIFIC MIXTURE OF GEOSTATIONARY AND LOW EARTH-ORBITING SATELLITES +855 855 COMBINATION OF INSAT 3D AND INSAT 3DR +1023 1023 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/1024.table b/definitions/bufr/tables/0/wmo/32/codetables/1024.table new file mode 100644 index 000000000..cdc9e2470 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/1024.table @@ -0,0 +1,9 @@ +0 0 NO WIND SPEED DATA AVAILABLE +1 1 AMSR-E DATA +2 2 TMI DATA +3 3 NWP: ECMWF +4 4 NWP: UK MET OFFICE +5 5 NWP: NCEP +6 6 REFERENCE CLIMATOLOGY +7 7 ERS_SCATTEROMETER +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/1028.table b/definitions/bufr/tables/0/wmo/32/codetables/1028.table new file mode 100644 index 000000000..18f82068b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/1028.table @@ -0,0 +1,7 @@ +0 0 NO AOD DATA AVAILABLE +1 1 NESDIS +2 2 NAVOCEANO +3 3 NAAPS +4 4 MERIS +5 5 AATSR +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/1029.table b/definitions/bufr/tables/0/wmo/32/codetables/1029.table new file mode 100644 index 000000000..d63d07ef0 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/1029.table @@ -0,0 +1,8 @@ +0 0 NO SSI DATA AVAILABLE +1 1 MSG_SEVIRI +2 2 GOES EAST +3 3 GOES WEST +4 4 ECMWF +5 5 NCEP +6 6 UK MET OFFICE +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/1033.table b/definitions/bufr/tables/0/wmo/32/codetables/1033.table new file mode 100644 index 000000000..68839fe19 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/1033.table @@ -0,0 +1,237 @@ +0 0 WMO SECRETARIAT +1 1 MELBOURNE +2 2 MELBOURNE +3 3 ) +4 4 MOSCOW +5 5 MOSCOW +6 6 ) +7 7 US NATIONAL WEATHER SERVICE - NATIONAL CENTRES FOR ENVIRONMENTAL PREDICTION (NCEP) +8 8 US NATIONAL WEATHER SERVICE TELECOMMUNICATIONS GATEWAY (NWSTG) +9 9 US NATIONAL WEATHER SERVICE - OTHER +10 10 CAIRO (RSMC) +11 11 ) +12 12 DAKAR (RSMC) +13 13 ) +14 14 NAIROBI (RSMC) +15 15 ) +16 16 CASABLANCA (RSMC) +17 17 TUNIS (RSMC) +18 18 TUNIS - CASABLANCA (RSMC) +19 19 ) +20 20 LAS PALMAS +21 21 ALGIERS (RSMC) +22 22 ACMAD +23 23 MOZAMBIQUE (NMC) +24 24 PRETORIA (RSMC) +25 25 LA RéUNION (RSMC) +26 26 KHABAROVSK (RSMC) +27 27 ) +28 28 NEW DELHI (RSMC) +29 29 ) +30 30 NOVOSIBIRSK (RSMC) +31 31 ) +32 32 TASHKENT (RSMC) +33 33 JEDDAH (RSMC) +34 34 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY +35 35 ) +36 36 BANGKOK +37 37 ULAANBAATAR +38 38 BEIJING (RSMC) +39 39 ) +40 40 SEOUL +41 41 BUENOS AIRES (RSMC) +42 42 ) +43 43 BRASILIA (RSMC) +44 44 ) +45 45 SANTIAGO +46 46 BRAZILIAN SPACE AGENCY ­ INPE +47 47 COLOMBIA (NMC) +48 48 ECUADOR (NMC) +49 49 PERU (NMC) +50 50 VENEZUELA (BOLIVARIAN REPUBLIC OF) (NMC) +51 51 MIAMI (RSMC) +52 52 MIAMI (RSMC), NATIONAL HURRICANE CENTRE +53 53 MSC MONITORING +54 54 MONTREAL (RSMC) +55 55 SAN FRANCISCO +56 56 ARINC CENTRE +57 57 US AIR FORCE - AIR FORCE GLOBAL WEATHER CENTRAL +58 58 FLEET NUMERICAL METEOROLOGY AND OCEANOGRAPHY CENTER, MONTEREY, CA, UNITED STATES +59 59 THE NOAA FORECAST SYSTEMS LABORATORY, BOULDER, CO, UNITED STATES +60 60 UNITED STATES NATIONAL CENTER FOR ATMOSPHERIC RESEARCH (NCAR) +61 61 SERVICE ARGOS - LANDOVER +62 62 US NAVAL OCEANOGRAPHIC OFFICE +63 63 INTERNATIONAL RESEARCH INSTITUTE FOR CLIMATE AND SOCIETY (IRI) +64 64 HONOLULU (RSMC) +65 65 DARWIN (RSMC) +66 66 ) +67 67 MELBOURNE (RSMC) +68 68 RESERVED +69 69 WELLINGTON (RSMC) +70 70 ) +71 71 NADI (RSMC) +72 72 SINGAPORE +73 73 MALAYSIA (NMC) +74 74 UK METEOROLOGICAL OFFICE ­ EXETER (RSMC) +75 75 ) +76 76 MOSCOW (RSMC) +77 77 RESERVED +78 78 OFFENBACH (RSMC) +79 79 ) +80 80 ROME (RSMC) +81 81 ) +82 82 NORRKöPING +83 83 ) +84 84 TOULOUSE (RSMC) +85 85 TOULOUSE (RSMC) +86 86 HELSINKI +87 87 BELGRADE +88 88 OSLO +89 89 PRAGUE +90 90 EPISKOPI +91 91 ANKARA +92 92 FRANKFURT/MAIN +93 93 LONDON (WAFC) +94 94 COPENHAGEN +95 95 ROTA +96 96 ATHENS +97 97 EUROPEAN SPACE AGENCY (ESA) +98 98 EUROPEAN CENTRE FOR MEDIUM-RANGE WEATHER FORECASTS (ECMWF) (RSMC) +99 99 DE BILT +100 100 BRAZZAVILLE +101 101 ABIDJAN +102 102 LIBYA (NMC) +103 103 MADAGASCAR (NMC) +104 104 MAURITIUS (NMC) +105 105 NIGER (NMC) +106 106 SEYCHELLES (NMC) +107 107 UGANDA (NMC) +108 108 UNITED REPUBLIC OF TANZANIA (NMC) +109 109 ZIMBABWE (NMC) +110 110 HONG-KONG, CHINA +111 111 AFGHANISTAN (NMC) +112 112 BAHRAIN (NMC) +113 113 BANGLADESH (NMC) +114 114 BHUTAN (NMC) +115 115 CAMBODIA (NMC) +116 116 DEMOCRATIC PEOPLE'S REPUBLIC OF KOREA (NMC) +117 117 ISLAMIC REPUBLIC OF IRAN (NMC) +118 118 IRAQ (NMC) +119 119 KAZAKHSTAN (NMC) +120 120 KUWAIT (NMC) +121 121 KYRGYZSTAN (NMC) +122 122 LAO PEOPLE'S DEMOCRATIC REPUBLIC (NMC) +123 123 MACAO, CHINA +124 124 MALDIVES (NMC) +125 125 MYANMAR (NMC) +126 126 NEPAL (NMC) +127 127 OMAN (NMC) +128 128 PAKISTAN (NMC) +129 129 QATAR (NMC) +130 130 YEMEN (NMC) +131 131 SRI LANKA (NMC) +132 132 TAJIKISTAN (NMC) +133 133 TURKMENISTAN (NMC) +134 134 UNITED ARAB EMIRATES (NMC) +135 135 UZBEKISTAN (NMC) +136 136 VIET NAM (NMC) +140 140 BOLIVIA (PLURINATIONAL STATE OF) (NMC) +141 141 GUYANA (NMC) +142 142 PARAGUAY (NMC) +143 143 SURINAME (NMC) +144 144 URUGUAY (NMC) +145 145 FRENCH GUIANA +146 146 BRAZILIAN NAVY HYDROGRAPHIC CENTRE +147 147 NATIONAL COMMISSION ON SPACE ACTIVITIES (CONAE) - ARGENTINA +148 148 BRAZILIAN DEPARTMENT OF AIRSPACE CONTROL - DECEA +149 149 RESERVED FOR OTHER CENTRES +150 150 ANTIGUA AND BARBUDA (NMC) +151 151 BAHAMAS (NMC) +152 152 BARBADOS (NMC) +153 153 BELIZE (NMC) +154 154 BRITISH CARIBBEAN TERRITORIES CENTRE +155 155 SAN JOSé +156 156 CUBA (NMC) +157 157 DOMINICA (NMC) +158 158 DOMINICAN REPUBLIC (NMC) +159 159 EL SALVADOR (NMC) +160 160 US NOAA/NESDIS +161 161 US NOAA OFFICE OF OCEANIC AND ATMOSPHERIC RESEARCH +162 162 GUATEMALA (NMC) +163 163 HAITI (NMC) +164 164 HONDURAS (NMC) +165 165 JAMAICA (NMC) +166 166 MEXICO CITY +167 167 CURAçAO AND SINT MAARTEN (NMC) +168 168 NICARAGUA (NMC) +169 169 PANAMA (NMC) +170 170 SAINT LUCIA (NMC) +171 171 TRINIDAD AND TOBAGO (NMC) +172 172 FRENCH DEPARTMENTS IN RA IV +173 173 US NATIONAL AERONAUTICS AND SPACE ADMINISTRATION (NASA) +174 174 INTEGRATED SCIENCE DATA MANAGEMENT/MARINE ENVIRONMENTAL DATA SERVICE (ISDM/MEDS) - CANADA +175 175 UNIVERSITY CORPORATION FOR ATMOSPHERIC RESEARCH (UCAR) - UNITED STATES +176 176 COOPERATIVE INSTITUTE FOR METEOROLOGICAL SATELLITE STUDIES (CIMSS) - UNITED STATES +177 177 NOAA NATIONAL OCEAN SERVICE - UNITED STATES +178 178 SPIRE GLOBAL, INC. +190 190 COOK ISLANDS (NMC) +191 191 FRENCH POLYNESIA (NMC) +192 192 TONGA (NMC) +193 193 VANUATU (NMC) +194 194 BRUNEI DARUSSALAM (NMC) +195 195 INDONESIA (NMC) +196 196 KIRIBATI (NMC) +197 197 FEDERATED STATES OF MICRONESIA (NMC) +198 198 NEW CALEDONIA (NMC) +199 199 NIUE +200 200 PAPUA NEW GUINEA (NMC) +201 201 PHILIPPINES (NMC) +202 202 SAMOA (NMC) +203 203 SOLOMON ISLANDS (NMC) +204 204 NATIONAL INSTITUTE OF WATER AND ATMOSPHERIC RESEARCH (NIWA - NEW ZEALAND) +210 210 FRASCATI (ESA/ESRIN) +211 211 LANNION +212 212 LISBON +213 213 REYKJAVIK +214 214 MADRID +215 215 ZURICH +216 216 SERVICE ARGOS - TOULOUSE +217 217 BRATISLAVA +218 218 BUDAPEST +219 219 LJUBLJANA +220 220 WARSAW +221 221 ZAGREB +222 222 ALBANIA (NMC) +223 223 ARMENIA (NMC) +224 224 AUSTRIA (NMC) +225 225 AZERBAIJAN (NMC) +226 226 BELARUS (NMC) +227 227 BELGIUM (NMC) +228 228 BOSNIA AND HERZEGOVINA (NMC) +229 229 BULGARIA (NMC) +230 230 CYPRUS (NMC) +231 231 ESTONIA (NMC) +232 232 GEORGIA (NMC) +233 233 DUBLIN +234 234 ISRAEL (NMC) +235 235 JORDAN (NMC) +236 236 LATVIA (NMC) +237 237 LEBANON (NMC) +238 238 LITHUANIA (NMC) +239 239 LUXEMBOURG +240 240 MALTA (NMC) +241 241 MONACO +242 242 ROMANIA (NMC) +243 243 SYRIAN ARAB REPUBLIC (NMC) +244 244 THE FORMER YUGOSLAV REPUBLIC OF MACEDONIA (NMC) +245 245 UKRAINE (NMC) +246 246 REPUBLIC OF MOLDOVA (NMC) +247 247 OPERATIONAL PROGRAMME FOR THE EXCHANGE OF WEATHER RADAR INFORMATION (OPERA) - EUMETNET +248 248 MONTENEGRO (NMC) +249 249 BARCELONA DUST FORECAST CENTER +250 250 CONSORTIUM FOR SMALL SCALE MODELLING (COSMO) +251 251 METEOROLOGICAL COOPERATION ON OPERATIONAL NWP (METCOOP) +252 252 MAX PLANCK INSTITUTE FOR METEOROLOGY (MPI-M) +253 253 RESERVED FOR OTHER CENTRES +254 254 EUMETSAT OPERATION CENTRE +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/1034.table b/definitions/bufr/tables/0/wmo/32/codetables/1034.table new file mode 100644 index 000000000..fab134d61 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/1034.table @@ -0,0 +1,104 @@ +0 0 NO SUB-CENTRE +1 1 LUXEMBOURG (NMC) +2 2 FUCINO +3 3 GATINEAU +4 4 MASPALOMAS (SPAIN) +5 5 ESA ERS CENTRAL FACILITY +6 6 PRINCE ALBERT +7 7 WEST FREUGH +8 8 LANGLEY RESEARCH CENTER +9 9 MARSHALL SPACE FLIGHT CENTER +10 10 TROMSO (NORWAY) +11 11 MCMURDO (ANTARCTICA) +12 12 SODANKYLA (FINLAND) +13 13 TROMSO +14 14 BARROW (UNITED STATES) +15 15 ROTHERA (ANTARCTICA) +16 16 SPACE WEATHER PREDICTION CENTER +17 17 ESRL GLOBAL SYSTEMS DIVISION +18 18 SIPAM-PORTO VELHO-RO +19 19 SIPAM-BELéM-PA +20 20 MASPALOMAS (SPAIN) +21 21 AGENZIA SPAZIALE ITALIANA (ITALY) +22 22 CENTRE NATIONAL DE LA RECHERCHE SCIENTIFIQUE (FRANCE) +23 23 GEOFORSCHUNGS ZENTRUM (GERMANY) +24 24 GEODETIC OBSERVATORY PECNY (CZECHIA) +25 25 INSTITUT D'ESTUDIS ESPACIALS DE CATALUNYA (SPAIN) +26 26 FEDERAL OFFICE OF TOPOGRAPHY (SWITZERLAND) +27 27 NORDIC COMMISSION OF GEODESY (NORWAY) +28 28 NORDIC COMMISSION OF GEODESY (SWEDEN) +29 29 INSTITUTE GéOGRAPHIQUE NATIONAL (FRANCE) - SERVICE DE GéODéSIE +30 30 KANGERLUSSUAQ (GREENLAND) +31 31 INSTITUTE OF ENGINEERING SATELLITE SURVEYING AND GEODESY (UNITED KINGDOM) +32 32 JOINT OPERATIONAL METEOROLOGY AND OCEANOGRAPHY CENTRE (JOMOC) +33 33 KONINKLIJK NEDERLANDS METEOROLOGISCH INSTITUT (NETHERLANDS) +34 34 NORDIC GPS ATMOSPHERIC ANALYSIS CENTRE (SWEDEN) +35 35 INSTITUTO GEOGRAFICO NACIONAL DE ESPAñA (SPAIN) +36 36 MET ÉIREANN (IRELAND) +37 37 ROYAL OBSERVATORY OF BELGIUM (BELGIUM) +40 40 EDMONTON (CANADA) +50 50 BEDFORD (CANADA) +60 60 GANDER (CANADA) +64 64 BUNDESWEHR GEOINFORMATION OFFICE (BGIO) +70 70 MONTEREY (UNITED STATES) +76 76 ROSHYDROMET (RUSSIAN FEDERATION) +78 78 DEUTSCHER WETTERDIENST (GERMANY) +80 80 WALLOPS ISLAND (UNITED STATES) +90 90 GILMOR CREEK (UNITED STATES) +96 96 HELLENIC NATIONAL METEOROLOGICAL SERVICE (GREECE) +100 100 ATHENS (GREECE) +101 101 ALBANIA (NMC) +102 102 NATIONAL RESEARCH COUNCIL/INSTITUTE OF ATMOSPHERIC SCIENCES AND CLIMATE (CNR-ISAC) +110 110 NOWCAST MOBILE (LIGHTNING DATA) +120 120 EWA BEACH, HAWAII +125 125 FORD ISLAND, HAWAII +130 130 MIAMI, FLORIDA +140 140 LANNION (FRANCE) +150 150 SVALBARD (NORWAY) +170 170 ST DENIS (LA RéUNION) +180 180 MOSCOW +190 190 MUSCAT +200 200 KHABAROVSK +201 201 RHEINISCHES INSTITUT FüR UMWELTFORSCHUNG AN DER UNIVERSITäT ZU KöLN E.V. (GERMANY) +202 202 INSTITUT FRANçAIS DE RECHERCHE POUR L'EXPLOITATION DE LA MER +203 203 AARHUS UNIVERSITY (DENMARK) +204 204 INSTITUTE OF ENVIRONMENTAL PROTECTION - NATIONAL RESEARCH INSTITUTE (POLAND) +205 205 NIUE +206 206 RAROTONGA (COOK ISLANDS) +207 207 APIA (SAMOA) +208 208 TONGA +209 209 TUVALU +210 210 NOVOSIBIRSK +211 211 TOKELAU +214 214 DARWIN +215 215 METEOSWISS (SWITZERLAND) +217 217 PERTH +219 219 TOWNSVILLE +220 220 INSTITUTE OF METEOROLOGY AND WATER MANAGEMENT (POLAND) +221 221 SCHLESWIG-HOLSTEIN, TRAFFIC OPERATIONS COMPUTING CENTRE (TOCC) KIEL/NEUMüNSTER +222 222 HAMBURG, TOCC HAMBURG +223 223 NIEDERSACHSEN, TOCC HANNOVER +224 224 AUSTRIA (NMC) +225 225 NORDRHEIN-WESTFALEN, TOCC KAMEN LEVERKUSEN +226 226 HESSEN, TOCC RüSSELSHEIM +227 227 RHEINLAND-PFALZ, TOCC KOBLENZ +228 228 BADEN-WüRTTEMBERG, TOCC LUDWIGSBURG +229 229 BAYERN, TOCC FREIMANN +230 230 SAARLAND, TOCC ROHRBACH +231 231 BAYERN, AUTOBAHN DIRECTORATE NORDBAYERN +232 232 BRANDENBURG, TOCC STOLPE +233 233 MECKLENBURG-VORPOMMERN, TOCC MALCHOW +234 234 SACHSEN, TOCC DRESDEN +235 235 SACHSEN-ANHALT, TOCC HALLE +236 236 THüRINGEN, TOCC ERFURT +237 237 EASYWAY - METEOTRANS +240 240 KIYOSE +241 241 REANALYSIS PROJECT +242 242 NATIONAL METEOROLOGICAL ADMINISTRATION (ROMANIA) +243 243 KELBURN +245 245 JINCHEON +249 249 SINGAPORE +250 250 VLADIVOSTOCK +251 251 GUAM +252 252 HONOLULU +254 254 EUMETSAT diff --git a/definitions/bufr/tables/0/wmo/32/codetables/1036.table b/definitions/bufr/tables/0/wmo/32/codetables/1036.table new file mode 100644 index 000000000..e7e4045e3 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/1036.table @@ -0,0 +1,38 @@ +36001 36001 AUSTRALIA, BUREAU OF METEOROLOGY (BOM) +36002 36002 AUSTRALIA, JOINT AUSTRALIAN FACILITY FOR OCEAN OBSERVING SYSTEMS (JAFOOS) +36003 36003 AUSTRALIA, THE COMMONWEALTH SCIENTIFIC AND INDUSTRIAL RESEARCH ORGANIZATION (CSIRO) +124001 124001 CANADA, MARINE ENVIRONMENTAL DATA SERVICE (MEDS) +124002 124002 CANADA, INSTITUTE OF OCEAN SCIENCES (IOS) +124173 124173 CANADA, ENVIRONMENT CANADA +124174 124174 CANADA, DEPARTMENT OF NATIONAL DEFENCE +124175 124175 CANADA, NAV CANADA +156001 156001 CHINA, THE STATE OCEANIC ADMINISTRATION +156002 156002 CHINA, SECOND INSTITUTE OF OCEANOGRAPHY, STATE OCEANIC ADMINISTRATION +156003 156003 CHINA, INSTITUTE OF OCEAN TECHNOLOGY +250001 250001 FRANCE, INSTITUT DE RECHERCHE POUR LE DéVELOPPEMENT (IRD) +250002 250002 FRANCE, INSTITUT FRANçAIS DE RECHERCHE POUR L'EXPLOITATION DE LA MER (IFREMER) +276001 276001 GERMANY, BUNDESAMT FUER SEESCHIFFAHRT UND HYDROGRAPHIE (BSH) +276002 276002 GERMANY, INSTITUT FUER MEERESKUNDE, KIEL +356001 356001 INDIA, NATIONAL INSTITUTE OF OCEANOGRAPHY (NIO) +356002 356002 INDIA, NATIONAL INSTITUTE FOR OCEAN TECHNOLOGY (NIOT) +356003 356003 INDIA, NATIONAL CENTRE FOR OCEAN INFORMATION SERVICE +392001 392001 JAPAN, JAPAN METEOROLOGICAL AGENCY (JMA) +392002 392002 JAPAN, FRONTIER OBSERVATIONAL RESEARCH SYSTEM FOR GLOBAL CHANGE +392003 392003 JAPAN, JAPAN MARINE SCIENCE AND TECHNOLOGY CENTRE (JAMSTEC) +410001 410001 REPUBLIC OF KOREA, SEOUL NATIONAL UNIVERSITY +410002 410002 REPUBLIC OF KOREA, KOREA OCEAN RESEARCH AND DEVELOPMENT INSTITUTE (KORDI) +410003 410003 REPUBLIC OF KOREA, METEOROLOGICAL RESEARCH INSTITUTE +540001 540001 NEW CALEDONIA, INSTITUT DE RECHERCHE POUR LE DéVELOPPEMENT (IRD) +554001 554001 NEW ZEALAND, NATIONAL INSTITUTE OF WATER AND ATMOSPHERIC RESEARCH (NIWA) +643001 643001 RUSSIAN FEDERATION, STATE OCEANOGRAPHIC INSTITUTE OF ROSHYDROMET +643002 643002 RUSSIAN FEDERATION, FEDERAL SERVICE FOR HYDROMETEOROLOGY AND ENVIRONMENTAL MONITORING +724001 724001 SPAIN, INSTITUTO ESPAñOL DE OCEANOGRAFIA +826001 826001 UNITED KINGDOM, HYDROGRAPHIC OFFICE +826002 826002 UNITED KINGDOM, SOUTHAMPTON OCEANOGRAPHY CENTRE (SOC) +840001 840001 USA, NOAA ATLANTIC OCEANOGRAPHIC AND METEOROLOGICAL LABORATORIES (AOML) +840002 840002 USA, NOAA PACIFIC MARINE ENVIRONMENTAL LABORATORIES (PMEL) +840003 840003 USA, SCRIPPS INSTITUTION OF OCEANOGRAPHY (SIO) +840004 840004 USA, WOODS HOLE OCEANOGRAPHIC INSTITUTION (WHOI) +840005 840005 USA, UNIVERSITY OF WASHINGTON +840006 840006 USA, NAVAL OCEANOGRAPHIC OFFICE +1048575 1048575 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/1038.table b/definitions/bufr/tables/0/wmo/32/codetables/1038.table new file mode 100644 index 000000000..2eee38baf --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/1038.table @@ -0,0 +1,7 @@ +0 0 NO SEA ICE SET +1 1 NSIDC SSM/I CAVALIERI ET AL (1992) +2 2 AMSR-E +3 3 ECMWF +4 4 CMS (FRANCE) CLOUD MASK USED BY MEDSPIRATION +5 5 EUMETSAT OSI-SAF +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/1044.table b/definitions/bufr/tables/0/wmo/32/codetables/1044.table new file mode 100644 index 000000000..c419e8307 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/1044.table @@ -0,0 +1,9 @@ +0 0 RESERVED +1 1 FULL WEIGHTED MIXTURE OF INDIVIDUAL QUALITY TESTS +2 2 WEIGHTED MIXTURE OF INDIVIDUAL TESTS, BUT EXCLUDING FORECAST COMPARISON +3 3 RECURSIVE FILTER FUNCTION +4 4 COMMON QUALITY INDEX (QI) WITHOUT FORECAST +5 5 QI WITHOUT FORECAST +6 6 QI WITH FORECAST +7 7 ESTIMATED ERROR IN M/S CONVERTED TO A PERCENT CONFIDENCE +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/1052.table b/definitions/bufr/tables/0/wmo/32/codetables/1052.table new file mode 100644 index 000000000..b8e14ed0f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/1052.table @@ -0,0 +1,4 @@ +0 0 PRIMARY +1 1 SECONDARY +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/1090.table b/definitions/bufr/tables/0/wmo/32/codetables/1090.table new file mode 100644 index 000000000..55f7ca25d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/1090.table @@ -0,0 +1,5 @@ +0 0 LAGGED-AVERAGE FORECASTING (LAF) +1 1 BREEDING +2 2 SINGULAR VECTORS +3 3 MULTIPLE ANALYSIS CYCLES +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/1092.table b/definitions/bufr/tables/0/wmo/32/codetables/1092.table new file mode 100644 index 000000000..dc9bf1c16 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/1092.table @@ -0,0 +1,5 @@ +0 0 UNPERTURBED HIGH-RESOLUTION CONTROL FORECAST +1 1 UNPERTURBED LOW-RESOLUTION CONTROL FORECAST +2 2 NEGATIVELY PERTURBED FORECAST +3 3 POSITIVELY PERTURBED FORECAST +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/1101.table b/definitions/bufr/tables/0/wmo/32/codetables/1101.table new file mode 100644 index 000000000..b5792ddac --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/1101.table @@ -0,0 +1,202 @@ +100 100 ALGERIA +101 101 ANGOLA +102 102 BENIN +103 103 BOTSWANA +104 104 BURKINA FASO +105 105 BURUNDI +106 106 CAMEROON +107 107 CABO VERDE +108 108 CENTRAL AFRICAN REPUBLIC +109 109 CHAD +110 110 COMOROS +111 111 CONGO +112 112 CôTE D'IVOIRE +113 113 DEMOCRATIC REPUBLIC OF THE CONGO +114 114 DJIBOUTI +115 115 EGYPT +116 116 ERITREA +117 117 ETHIOPIA +118 118 FRANCE (RA I) +119 119 GABON +120 120 GAMBIA +121 121 GHANA +122 122 GUINEA +123 123 GUINEA-BISSAU +124 124 KENYA +125 125 LESOTHO +126 126 LIBERIA +127 127 LIBYA +128 128 MADAGASCAR +129 129 MALAWI +130 130 MALI +131 131 MAURITANIA +132 132 MAURITIUS +133 133 MOROCCO +134 134 MOZAMBIQUE +135 135 NAMIBIA +136 136 NIGER +137 137 NIGERIA +138 138 PORTUGAL (RA I) +139 139 RWANDA +140 140 SAO TOME AND PRINCIPE +141 141 SENEGAL +142 142 SEYCHELLES +143 143 SIERRA LEONE +144 144 SOMALIA +145 145 SOUTH AFRICA +146 146 SPAIN (RA I) +147 147 SUDAN +148 148 ESWATINI +149 149 TOGO +150 150 TUNISIA +151 151 UGANDA +152 152 UNITED KINGDOM OF GREAT BRITAIN AND NORTHERN IRELAND (RA I) +153 153 UNITED REPUBLIC OF TANZANIA +154 154 ZAMBIA +155 155 ZIMBABWE +200 200 AFGHANISTAN +201 201 BAHRAIN +202 202 BANGLADESH +203 203 BHUTAN +204 204 CAMBODIA +205 205 CHINA +206 206 DEMOCRATIC PEOPLE'S REPUBLIC OF KOREA +207 207 HONG KONG, CHINA +208 208 INDIA +209 209 IRAN, ISLAMIC REPUBLIC OF +210 210 IRAQ +211 211 JAPAN +212 212 KAZAKHSTAN +213 213 KUWAIT +214 214 KYRGYZSTAN +215 215 LAO PEOPLE'S DEMOCRATIC REPUBLIC +216 216 MACAO, CHINA +217 217 MALDIVES +218 218 MONGOLIA +219 219 MYANMAR +220 220 NEPAL +221 221 OMAN +222 222 PAKISTAN +223 223 QATAR +224 224 REPUBLIC OF KOREA +225 225 YEMEN +226 226 RUSSIAN FEDERATION (RA II) +227 227 SAUDI ARABIA +228 228 SRI LANKA +229 229 TAJIKISTAN +230 230 THAILAND +231 231 TURKMENISTAN +232 232 UNITED ARAB EMIRATES +233 233 UZBEKISTAN +234 234 VIET NAM +300 300 ARGENTINA +301 301 BOLIVIA (PLURINATIONAL STATE OF) +302 302 BRAZIL +303 303 CHILE +304 304 COLOMBIA +305 305 ECUADOR +306 306 FRANCE (RA III) +307 307 GUYANA +308 308 PARAGUAY +309 309 PERU +310 310 SURINAME +311 311 URUGUAY +312 312 VENEZUELA (BOLIVARIAN REPUBLIC OF) +400 400 ANTIGUA AND BARBUDA +401 401 BAHAMAS +402 402 BARBADOS +403 403 BELIZE +404 404 BRITISH CARIBBEAN TERRITORIES +405 405 CANADA +406 406 COLOMBIA +407 407 COSTA RICA +408 408 CUBA +409 409 DOMINICA +410 410 DOMINICAN REPUBLIC +411 411 EL SALVADOR +412 412 FRANCE (RA IV) +413 413 GUATEMALA +414 414 HAITI +415 415 HONDURAS +416 416 JAMAICA +417 417 MEXICO +418 418 CURAçAO AND SINT MAARTEN +419 419 NICARAGUA +420 420 PANAMA +421 421 SAINT LUCIA +422 422 TRINIDAD AND TOBAGO +423 423 UNITED KINGDOM OF GREAT BRITAIN AND NORTHERN IRELAND (RA IV) +424 424 UNITED STATES OF AMERICA (RA IV) +425 425 VENEZUELA (BOLIVARIAN REPUBLIC OF) +500 500 AUSTRALIA +501 501 BRUNEI DARUSSALAM +502 502 COOK ISLANDS +503 503 FIJI +504 504 FRENCH POLYNESIA +505 505 INDONESIA +506 506 KIRIBATI +507 507 MALAYSIA +508 508 MICRONESIA, FEDERATED STATES OF +509 509 NEW CALEDONIA +510 510 NEW ZEALAND +511 511 NIUE +512 512 PAPUA NEW GUINEA +513 513 PHILIPPINES +514 514 SAMOA +515 515 SINGAPORE +516 516 SOLOMON ISLANDS +517 517 TONGA +518 518 UNITED KINGDOM OF GREAT BRITAIN AND NORTHERN IRELAND (RA V) +519 519 UNITED STATES OF AMERICA (RA V) +520 520 VANUATU +600 600 ALBANIA +601 601 ARMENIA +602 602 AUSTRIA +603 603 AZERBAIJAN +604 604 BELARUS +605 605 BELGIUM +606 606 BOSNIA AND HERZEGOVINA +607 607 BULGARIA +608 608 CROATIA +609 609 CYPRUS +610 610 CZECHIA +611 611 DENMARK +612 612 ESTONIA +613 613 FINLAND +614 614 FRANCE (RA VI) +615 615 GEORGIA +616 616 GERMANY +617 617 GREECE +618 618 HUNGARY +619 619 ICELAND +620 620 IRELAND +621 621 ISRAEL +622 622 ITALY +623 623 JORDAN +624 624 KAZAKHSTAN +625 625 LATVIA +626 626 LEBANON +627 627 LITHUANIA +628 628 LUXEMBOURG +629 629 MALTA +630 630 MONACO +631 631 MONTENEGRO +632 632 NETHERLANDS +633 633 NORWAY +634 634 POLAND +635 635 PORTUGAL (RA VI) +636 636 REPUBLIC OF MOLDOVA +637 637 ROMANIA +638 638 RUSSIAN FEDERATION (RA VI) +639 639 SERBIA +640 640 SLOVAKIA +641 641 SLOVENIA +642 642 SPAIN (RA VI) +643 643 SWEDEN +644 644 SWITZERLAND +645 645 SYRIAN ARAB REPUBLIC +646 646 THE FORMER YUGOSLAV REPUBLIC OF MACEDONIA +647 647 TURKEY +648 648 UKRAINE +649 649 UNITED KINGDOM OF GREAT BRITAIN AND NORTHERN IRELAND (RA VI) +1023 1023 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/11030.table b/definitions/bufr/tables/0/wmo/32/codetables/11030.table new file mode 100644 index 000000000..253b8fccc --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/11030.table @@ -0,0 +1,25 @@ +0 0 NIL +1 1 LIGHT +2 2 MODERATE +3 3 SEVERE +4 4 NIL +5 5 LIGHT +6 6 MODERATE +7 7 SEVERE +8 8 NIL +9 9 LIGHT +10 10 MODERATE +11 11 SEVERE +12 12 EXTREME, IN CLEAR AIR +13 13 EXTREME, IN CLOUD +14 14 EXTREME, CLOUD/CLEAR AIR NOT SPECIFIED +15 15 LIGHT, ISOLATED MODERATE +16 16 LIGHT, OCCASIONAL MODERATE +17 17 LIGHT, FREQUENTLY MODERATE +18 18 MODERATE, ISOLATED SEVERE +19 19 MODERATE, OCCASIONAL SEVERE +20 20 MODERATE, FREQUENTLY SEVERE +21 21 SEVERE, ISOLATED EXTREME +22 22 SEVERE, OCCASIONAL EXTREME +23 23 SEVERE, FREQUENTLY EXTREME +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/11031.table b/definitions/bufr/tables/0/wmo/32/codetables/11031.table new file mode 100644 index 000000000..7bece1c85 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/11031.table @@ -0,0 +1,16 @@ +0 0 NIL +1 1 LIGHT +2 2 MODERATE +3 3 SEVERE +4 4 NIL +5 5 LIGHT +6 6 MODERATE +7 7 SEVERE +8 8 NIL +9 9 LIGHT +10 10 MODERATE +11 11 SEVERE +12 12 EXTREME, IN CLEAR AIR +13 13 EXTREME, IN CLOUD +14 14 EXTREME, CLOUD/CLEAR AIR NOT SPECIFIED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/11037.table b/definitions/bufr/tables/0/wmo/32/codetables/11037.table new file mode 100644 index 000000000..e25c9da63 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/11037.table @@ -0,0 +1,30 @@ +0 0 AVE < 0.1 +1 1 AVE < 0.1 +2 2 0.1 =< AVE < 0.2 +3 3 AVE <0.1 +4 4 0.1 =< AVE < 0.2 +5 5 0.2 =< AVE < 0.3 +6 6 AVE < 0.1 +7 7 0.1 =< AVE < 0.2 +8 8 0.2 =< AVE < 0.3 +9 9 0.3 =< AVE < 0.4 +10 10 AVE < 0.1 +11 11 0.1 =< AVE < 0.2 +12 12 0.2 =< AVE < 0.3 +13 13 0.3 =< AVE < 0.4 +14 14 0.4 =< AVE < 0.5 +15 15 AVE < 0.1 +16 16 0.1 =< AVE < 0.2 +17 17 0.2 =< AVE < 0.3 +18 18 0.3 =< AVE < 0.4 +19 19 0.4 =< AVE < 0.5 +20 20 0.5 =< AVE < 0.8 +21 21 AVE < 0.1 +22 22 0.1 =< AVE < 0.2 +23 23 0.2 =< AVE < 0.3 +24 24 0.3 =< AVE < 0.4 +25 25 0.4 =< AVE < 0.5 +26 26 0.5 =< AVE < 0.8 +27 27 0.8 =< AVE +28 28 NIL +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/11038.table b/definitions/bufr/tables/0/wmo/32/codetables/11038.table new file mode 100644 index 000000000..68876b0b6 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/11038.table @@ -0,0 +1,17 @@ +0 0 MIN < 1 +1 1 1 =< MIN < 2 +2 2 2 =< MIN < 3 +3 3 3 =< MIN < 4 +4 4 4 =< MIN < 5 +5 5 5 =< MIN < 6 +6 6 6 =< MIN < 7 +7 7 7 =< MIN < 8 +8 8 8 =< MIN < 9 +9 9 9 =< MIN < 10 +10 10 10 =< MIN < 11 +11 11 11 =< MIN < 12 +12 12 12 =< MIN < 13 +13 13 13 =< MIN < 14 +14 14 14 =< MIN < 15 +15 15 NO TIMING INFORMATION AVAILABLE +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/11039.table b/definitions/bufr/tables/0/wmo/32/codetables/11039.table new file mode 100644 index 000000000..e5af0f23b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/11039.table @@ -0,0 +1,17 @@ +0 0 MIN < 1 +1 1 1 =< MIN < 2 +2 2 2 =< MIN < 3 +3 3 3 =< MIN < 4 +4 4 4 =< MIN < 5 +5 5 5 =< MIN < 6 +6 6 6 =< MIN < 7 +7 7 7 =< MIN < 8 +8 8 8 =< MIN < 9 +9 9 9 =< MIN < 10 +10 10 10 =< MIN < 11 +11 11 11 =< MIN < 12 +12 12 12 =< MIN < 13 +13 13 13 =< MIN < 14 +14 14 14 =< MIN < 15 +60 60 NO TIMING INFORMATION AVAILABLE +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/1150.table b/definitions/bufr/tables/0/wmo/32/codetables/1150.table new file mode 100644 index 000000000..d0923b6c2 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/1150.table @@ -0,0 +1,6 @@ +0 0 WGS84, AS USED BY ICAO SINCE 1998 +1 1 ETRS89, AS DEFINED BY EPSG:4258 +2 2 NAD83, AS DEFINED BY EPSG:4269 +3 3 DHDN, AS DEFINED BY EPSG:4314 +4 4 ELLIPSOIDAL DATUM USING THE INTERNATIONAL REFERENCE MERIDIAN AND THE INTERNATIONAL REFERENCE POLE AS THE PRIME MERIDIAN AND PRIME POLE, RESPECTIVELY, AND THE ORIGIN OF THE INTERNATIONAL TERRESTRIAL REFERENCE SYSTEM (ITRS) (SEE NOTE 2). THE INTERNATIONAL REFERENCE MERIDIAN, INTERNATIONAL REFERENCE POLE AND ITRS ARE MAINTAINED BY THE INTERNATIONAL EARTH ROTATION AND REFERENCE SYSTEMS SERVICE (IERS) +65535 65535 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/1151.table b/definitions/bufr/tables/0/wmo/32/codetables/1151.table new file mode 100644 index 000000000..8907f2371 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/1151.table @@ -0,0 +1,3 @@ +0 0 EARTH GRAVITATIONAL MODEL 1996 +1 1 BALTIC HEIGHT SYSTEM 1977 +4095 4095 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/13038.table b/definitions/bufr/tables/0/wmo/32/codetables/13038.table new file mode 100644 index 000000000..19bc42216 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/13038.table @@ -0,0 +1,4 @@ +0 0 NOT SUPERADIABATIC +1 1 SUPERADIABATIC +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/13039.table b/definitions/bufr/tables/0/wmo/32/codetables/13039.table new file mode 100644 index 000000000..c070b1da9 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/13039.table @@ -0,0 +1,3 @@ +0 0 SEA ICE +1 1 SNOW ON LAND +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/13040.table b/definitions/bufr/tables/0/wmo/32/codetables/13040.table new file mode 100644 index 000000000..30cccb03b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/13040.table @@ -0,0 +1,13 @@ +0 0 LAND +1 1 RESERVED +2 2 NEAR COAST +3 3 ICE +4 4 POSSIBLE ICE +5 5 OCEAN +6 6 COAST +7 7 INLAND WATER +8 8 SNOW COVER +9 9 SEA ICE +10 10 STANDING WATER +11 11 SNOW +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/13041.table b/definitions/bufr/tables/0/wmo/32/codetables/13041.table new file mode 100644 index 000000000..9e77b6466 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/13041.table @@ -0,0 +1,10 @@ +1 1 A +2 2 A - B +3 3 B +4 4 B - C +5 5 C +6 6 D +7 7 E +8 8 F +9 9 G +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/13051.table b/definitions/bufr/tables/0/wmo/32/codetables/13051.table new file mode 100644 index 000000000..4bdb73e71 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/13051.table @@ -0,0 +1,8 @@ +0 0 SMALLER THAN ANY VALUE IN THE 30-YEAR PERIOD +1 1 IN THE FIRST QUINTILE +2 2 IN THE SECOND QUINTILE +3 3 IN THE THIRD QUINTILE +4 4 IN THE FOURTH QUINTILE +5 5 IN THE FIFTH QUINTILE +6 6 GREATER THAN ANY VALUE IN THE 30-YEAR PERIOD +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/13056.table b/definitions/bufr/tables/0/wmo/32/codetables/13056.table new file mode 100644 index 000000000..448c26927 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/13056.table @@ -0,0 +1,11 @@ +0 0 NO PRECIPITATION +1 1 LIGHT INTERMITTENT +2 2 MODERATE INTERMITTENT +3 3 HEAVY INTERMITTENT +4 4 VERY HEAVY INTERMITTENT +5 5 LIGHT CONTINUOUS +6 6 MODERATE CONTINUOUS +7 7 HEAVY CONTINUOUS +8 8 VERY HEAVY CONTINUOUS +9 9 VARIABLE - ALTERNATIVELY LIGHT AND HEAVY +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/13057.table b/definitions/bufr/tables/0/wmo/32/codetables/13057.table new file mode 100644 index 000000000..6dfa18dd0 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/13057.table @@ -0,0 +1,11 @@ +0 0 NO PRECIPITATION +1 1 WITHIN THE LAST HOUR +2 2 1 TO 2 HOURS AGO +3 3 2 TO 3 HOURS AGO +4 4 3 TO 4 HOURS AGO +5 5 4 TO 5 HOURS AGO +6 6 5 TO 6 HOURS AGO +7 7 6 TO 8 HOURS AGO +8 8 8 TO 10 HOURS AGO +9 9 MORE THAN 10 HOURS AGO +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/15025.table b/definitions/bufr/tables/0/wmo/32/codetables/15025.table new file mode 100644 index 000000000..6bb6ed508 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/15025.table @@ -0,0 +1,4 @@ +0 0 OZONE +11 11 FINE PARTICULATE MATTER (DIAMETER < 2.5 MICRONS) +12 12 FINE PARTICULATE MATTER (DIAMETER < 10 MICRONS) +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/19001.table b/definitions/bufr/tables/0/wmo/32/codetables/19001.table new file mode 100644 index 000000000..af893eb9a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/19001.table @@ -0,0 +1,7 @@ +0 0 DEPRESSION OR LOW (EXTRATROPLCAL) +1 1 TROPICAL DEPRESSION +2 2 TROPICAL STORM +3 3 SEVERE TROPICAL STORM +4 4 TYPHOON +10 10 DUST/SANDSTORM +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/19008.table b/definitions/bufr/tables/0/wmo/32/codetables/19008.table new file mode 100644 index 000000000..3bcb5195a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/19008.table @@ -0,0 +1,5 @@ +0 0 RESERVED +1 1 SHALLOW (TOP OF CIRCULATION BELOW 700-HPA LEVEL) +2 2 MEDIUM (TOP BETWEEN 700-HPA AND 400-HPA LEVEL) +3 3 DEEP (TOP ABOVE 400-HPA LEVEL) +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/19010.table b/definitions/bufr/tables/0/wmo/32/codetables/19010.table new file mode 100644 index 000000000..b091d96f0 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/19010.table @@ -0,0 +1,3 @@ +1 1 MINIMUM VALUE OF SEA LEVEL PRESSURE +2 2 MAXIMUM VALUE OF 850 HPA RELATIVE VORTICITY +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/19100.table b/definitions/bufr/tables/0/wmo/32/codetables/19100.table new file mode 100644 index 000000000..1f03a6f1b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/19100.table @@ -0,0 +1,9 @@ +3 3 DURING THE PRECEDING 15 MINUTES +4 4 DURING THE PRECEDING 30 MINUTES +5 5 DURING THE PRECEDING 1 HOUR +6 6 DURING THE PRECEDING 2 HOURS +7 7 DURING THE PRECEDING 3 HOURS +8 8 DURING THE PRECEDING 6 HOURS +9 9 DURING A PERIOD OF MORE THAN 6 HOURS +10 10 UNDETERMINED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/19101.table b/definitions/bufr/tables/0/wmo/32/codetables/19101.table new file mode 100644 index 000000000..0cd1ff4a6 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/19101.table @@ -0,0 +1,10 @@ +0 0 RESERVED +1 1 EYE VISIBLE ON RADAR SCOPE, ACCURACY GOOD (WITHIN 10 KM) +2 2 EYE VISIBLE ON RADAR SCOPE, ACCURACY FAIR (WITHIN 30 KM) +3 3 EYE VISIBLE ON RADAR SCOPE, ACCURACY POOR (WITHIN 50 KM) +4 4 POSITION OF THE CENTRE WITHIN THE AREA COVERED BY THE RADAR SCOPE, DETERMINATION BY MEANS OF THE SPIRAL-BAND OVERLAY, ACCURACY GOOD (WITHIN 10 KM) +5 5 POSITION OF THE CENTRE WITHIN THE AREA COVERED BY THE RADAR SCOPE, DETERMINATION BY MEANS OF THE SPIRAL-BAND OVERLAY, ACCURACY FAIR (WITHIN 30 KM) +6 6 POSITION OF THE CENTRE WITHIN THE AREA COVERED BY THE RADAR SCOPE, DETERMINATION BY MEANS OF THE SPIRAL-BAND OVERLAY, ACCURACY POOR (WITHIN 50 KM) +7 7 POSITION OF THE CENTRE OUTSIDE THE AREA COVERED BY THE RADAR SCOPE, EXTRAPOLATION BY MEANS OF THE SPIRAL-BAND OVERLAY +10 10 ACCURACY UNDETERMINED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/19102.table b/definitions/bufr/tables/0/wmo/32/codetables/19102.table new file mode 100644 index 000000000..21ab7756b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/19102.table @@ -0,0 +1,8 @@ +0 0 CIRCULAR +1 1 ELLIPTICAL - THE MINOR AXIS IS AT LEAST 3/4 THE LENGTH OF THE MAJOR AXIS +2 2 ELLIPTICAL - THE MINOR AXIS IS LESS THAN 3/4 THE LENGTH OF THE MAJOR AXIS +3 3 APPARENT DOUBLE EYE +4 4 OTHER SHAPE +5 5 ILL DEFINED +6 6 UNDETERMINED +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/19103.table b/definitions/bufr/tables/0/wmo/32/codetables/19103.table new file mode 100644 index 000000000..3abb184f8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/19103.table @@ -0,0 +1,12 @@ +0 0 LESS THAN 5 KM +1 1 5 TO LESS THAN 10 KM +2 2 10 TO LESS THAN 15 KM +3 3 15 TO LESS THAN 20 KM +4 4 20 TO LESS THAN 25 KM +5 5 25 TO LESS THAN 30 KM +6 6 30 TO LESS THAN 35 KM +7 7 35 TO LESS THAN 40 KM +8 8 40 TO LESS THAN 50 KM +9 9 50 KM AND GREATER +10 10 UNDETERMINED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/19104.table b/definitions/bufr/tables/0/wmo/32/codetables/19104.table new file mode 100644 index 000000000..67ae47479 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/19104.table @@ -0,0 +1,12 @@ +0 0 EYE HAS FIRST BECOME VISIBLE DURING THE PAST 30 MINUTES +1 1 NO SIGNIFICANT CHANGE IN THE CHARACTERISTICS OR SIZE OF THE EYE +2 2 EYE HAS BECOME SMALLER WITH NO OTHER SIGNIFICANT CHANGE IN CHARACTERISTICS +3 3 EYE HAS BECOME LARGER WITH NO OTHER SIGNIFICANT CHANGE IN CHARACTERISTICS +4 4 EYE HAS BECOME LESS DISTINCT WITH NO SIGNIFICANT CHANGE IN SIZE +5 5 EYE HAS BECOME LESS DISTINCT AND DECREASED IN SIZE +6 6 EYE HAS BECOME LESS DISTINCT AND INCREASED IN SIZE +7 7 EYE HAS BECOME MORE DISTINCT WITH NO SIGNIFICANT CHANGE IN SIZE +8 8 EYE HAS BECOME MORE DISTINCT AND DECREASED IN SIZE +9 9 EYE HAS BECOME MORE DISTINCT AND INCREASED IN SIZE +10 10 CHANGE IN CHARACTER AND SIZE OF EYE CANNOT BE DETERMINED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/19105.table b/definitions/bufr/tables/0/wmo/32/codetables/19105.table new file mode 100644 index 000000000..becfceea8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/19105.table @@ -0,0 +1,10 @@ +0 0 0 TO LESS THAN 100 KM +1 1 100 TO LESS THAN 200 KM +2 2 200 TO LESS THAN 300 KM +3 3 300 TO LESS THAN 400 KM +4 4 400 TO LESS THAN 500 KM +5 5 500 TO LESS THAN 600 KM +6 6 600 TO LESS THAN 800 KM +7 7 800 KM OR MORE +10 10 DOUBTFUL OR UNDETERMINED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/19107.table b/definitions/bufr/tables/0/wmo/32/codetables/19107.table new file mode 100644 index 000000000..ed6b79c54 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/19107.table @@ -0,0 +1,11 @@ +0 0 LESS THAN 1 HOUR +1 1 1 TO LESS THAN 2 HOURS +2 2 2 TO LESS THAN 3 HOURS +3 3 3 TO LESS THAN 6 HOURS +4 4 6 TO LESS THAN 9 HOURS +5 5 9 TO LESS THAN 12 HOURS +6 6 12 TO LESS THAN 15 HOURS +7 7 15 TO LESS THAN 18 HOURS +8 8 18 TO LESS THAN 21 HOURS +9 9 21 TO LESS THAN 30 HOURS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/19108.table b/definitions/bufr/tables/0/wmo/32/codetables/19108.table new file mode 100644 index 000000000..9350bc265 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/19108.table @@ -0,0 +1,8 @@ +0 0 CYCLONE CENTRE WITHIN 10 KM OF THE TRANSMITTED POSITION +1 1 CYCLONE CENTRE WITHIN 20 KM OF THE TRANSMITTED POSITION +2 2 CYCLONE CENTRE WITHIN 50 KM OF THE TRANSMITTED POSITION +3 3 CYCLONE CENTRE WITHIN 100 KM OF THE TRANSMITTED POSITION +4 4 CYCLONE CENTRE WITHIN 200 KM OF THE TRANSMITTED POSITION +5 5 CYCLONE CENTRE WITHIN 300 KM OF THE TRANSMITTED POSITION +6 6 CYCLONE CENTRE UNDETERMINED +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/19109.table b/definitions/bufr/tables/0/wmo/32/codetables/19109.table new file mode 100644 index 000000000..e3c9c05bf --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/19109.table @@ -0,0 +1,12 @@ +0 0 LESS THAN 1° OF LATITUDE +1 1 1° TO LESS THAN 2° OF LATITUDE +2 2 2° TO LESS THAN 3° OF LATITUDE +3 3 3° TO LESS THAN 4° OF LATITUDE +4 4 4° TO LESS THAN 5° OF LATITUDE +5 5 5° TO LESS THAN 6° OF LATITUDE +6 6 6° TO LESS THAN 7° OF LATITUDE +7 7 7° TO LESS THAN 8° OF LATITUDE +8 8 8° TO LESS THAN 9° OF LATITUDE +9 9 9° OF LATITUDE OR MORE +10 10 UNDETERMINED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/19110.table b/definitions/bufr/tables/0/wmo/32/codetables/19110.table new file mode 100644 index 000000000..81f4f593c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/19110.table @@ -0,0 +1,8 @@ +0 0 MUCH WEAKENING +1 1 WEAKENING +2 2 NO CHANGE +3 3 INTENSIFICATION +4 4 STRONG INTENSIFICATION +9 9 NOT OBSERVED PREVIOUSLY +10 10 UNDETERMINED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/19113.table b/definitions/bufr/tables/0/wmo/32/codetables/19113.table new file mode 100644 index 000000000..ba46dca88 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/19113.table @@ -0,0 +1,8 @@ +1 1 CURVED BAND +2 2 SHEAR +3 3 EYE +4 4 BANDING EYE +5 5 CENTRAL DENSE OVERCAST (CDO) +6 6 EMBEDDED CENTRE +7 7 CENTRE COLD COVER (CCC) +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/19117.table b/definitions/bufr/tables/0/wmo/32/codetables/19117.table new file mode 100644 index 000000000..b623197a3 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/19117.table @@ -0,0 +1,4 @@ +1 1 A (CURVED BAND) +2 2 B (CDO) +3 3 C (SHEAR) +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/19119.table b/definitions/bufr/tables/0/wmo/32/codetables/19119.table new file mode 100644 index 000000000..8329a8a58 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/19119.table @@ -0,0 +1,4 @@ +1 1 DT-NUMBER +2 2 PT-NUMBER +3 3 MET-NUMBER +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20003.table b/definitions/bufr/tables/0/wmo/32/codetables/20003.table new file mode 100644 index 000000000..0ebc7c7e8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20003.table @@ -0,0 +1,266 @@ +0 0 CLOUD DEVELOPMENT NOT OBSERVED OR NOT OBSERVABLE +1 1 CLOUDS GENERALLY DISSOLVING OR BECOMING LESS DEVELOPED +2 2 STATE OF SKY ON THE WHOLE UNCHANGED +3 3 CLOUDS GENERALLY FORMING OR DEVELOPING +4 4 VISIBILITY REDUCED BY SMOKE, E.G. VELDT OR FOREST FIRES, INDUSTRIAL SMOKE OR VOLCANIC ASHES +5 5 HAZE +6 6 WIDESPREAD DUST IN SUSPENSION IN THE AIR, NOT RAISED BY WIND AT OR NEAR THE STATION AT THE TIME OF OBSERVATION +7 7 DUST OR SAND RAISED BY WIND AT OR NEAR THE STATION AT THE TIME OF OBSERVATION, BUT NO WELL-DEVELOPED DUST WHIRL(S) OR SAND WHIRL(S), AND NO DUSTSTORM OR SANDSTORM SEEN; OR, IN THE CASE OF SEA STATIONS AND COASTAL STATIONS, BLOWING SPRAY AT THE STATION +8 8 WELL-DEVELOPED DUST WHIRL(S) OR SAND WHIRL(S) SEEN AT OR NEAR THE STATION DURING THE PRECEDING HOUR OR AT THE SAME TIME OF OBSERVATION, BUT NO DUSTSTORM OR SANDSTORM +9 9 DUSTSTORM OR SANDSTORM WITHIN SIGHT AT THE TIME OF OBSERVATION, OR AT THE STATION DURING THE PRECEDING HOUR +10 10 MIST +11 11 PATCHES +12 12 MORE OR LESS CONTINUOUS +13 13 LIGHTNING VISIBLE, NO THUNDER HEARD +14 14 PRECIPITATION WITHIN SIGHT, NOT REACHING THE GROUND OR THE SURFACE OF THE SEA +15 15 PRECIPITATION WITHIN SIGHT, REACHING THE GROUND OR THE SURFACE OF THE SEA, BUT DISTANT, I.E. ESTIMATED TO BE MORE THAN 5 KM FROM THE STATION +16 16 PRECIPITATION WITHIN SIGHT, REACHING THE GROUND OR THE SURFACE OF THE SEA, NEAR TO, BUT NOT AT THE STATION +17 17 THUNDERSTORM, BUT NO PRECIPITATION AT THE TIME OF OBSERVATION +18 18 SQUALLS +19 19 FUNNEL CLOUD(S) +20 20 DRIZZLE (NOT FREEZING) OR SNOW GRAINS +21 21 RAIN (NOT FREEZING) +22 22 SNOW +23 23 RAIN AND SNOW OR ICE PELLETS +24 24 FREEZING DRIZZLE OR FREEZING RAIN +25 25 SHOWER(S) OF RAIN +26 26 SHOWER(S) OF SNOW, OR OF RAIN AND SNOW +27 27 SHOWER(S) OF HAIL*, OR OF RAIN AND HAIL* +28 28 FOG OR ICE FOG +29 29 THUNDERSTORM (WITH OR WITHOUT PRECIPITATION) +30 30 SLIGHT OR MODERATE DUSTSTORM OR SANDSTORM +31 31 SLIGHT OR MODERATE DUSTSTORM OR SANDSTORM +32 32 SLIGHT OR MODERATE DUSTSTORM OR SANDSTORM +33 33 SEVERE DUSTSTORM OR SANDSTORM +34 34 SEVERE DUSTSTORM OR SANDSTORM +35 35 SEVERE DUSTSTORM OR SANDSTORM +36 36 SLIGHT OR MODERATE DRIFTING SNOW +37 37 HEAVY DRIFTING SNOW +38 38 SLIGHT OR MODERATE BLOWING SNOW +39 39 HEAVY BLOWING SNOW +40 40 FOG OR ICE FOG AT A DISTANCE AT THE TIME OF OBSERVATION, BUT NOT AT THE STATION DURING THE PRECEDING HOUR, THE FOG OR ICE FOG EXTENDING TO A LEVEL ABOVE THAT OF THE OBSERVER +41 41 FOG OR ICE FOG IN PATCHES +42 42 FOG OR ICE FOG, SKY VISIBLE +43 43 FOG OR ICE FOG, SKY INVISIBLE +44 44 FOG OR ICE FOG, SKY VISIBLE +45 45 FOG OR ICE FOG, SKY INVISIBLE +46 46 FOG OR ICE FOG, SKY VISIBLE +47 47 FOG OR ICE FOG, SKY INVISIBLE +48 48 FOG, DEPOSITING RIME, SKY VISIBLE +49 49 FOG, DEPOSITING RIME, SKY INVISIBLE +50 50 DRIZZLE, NOT FREEZING, INTERMITTENT +51 51 DRIZZLE, NOT FREEZING, CONTINUOUS +52 52 DRIZZLE, NOT FREEZING, INTERMITTENT +53 53 DRIZZLE, NOT FREEZING, CONTINUOUS +54 54 DRIZZLE, NOT FREEZING, INTERMITTENT +55 55 DRIZZLE, NOT FREEZING, CONTINUOUS +56 56 DRIZZLE, FREEZING, SLIGHT +57 57 DRIZZLE, FREEZING, MODERATE OR HEAVY (DENSE) +58 58 DRIZZLE AND RAIN, SLIGHT +59 59 DRIZZLE AND RAIN, MODERATE OR HEAVY +60 60 RAIN, NOT FREEZING, INTERMITTENT +61 61 RAIN, NOT FREEZING, CONTINUOUS +62 62 RAIN, NOT FREEZING, INTERMITTENT +63 63 RAIN, NOT FREEZING, CONTINUOUS +64 64 RAIN, NOT FREEZING, INTERMITTENT +65 65 RAIN, NOT FREEZING, CONTINUOUS +66 66 RAIN, FREEZING, SLIGHT +67 67 RAIN, FREEZING, MODERATE OR HEAVY +68 68 RAIN OR DRIZZLE AND SNOW, SLIGHT +69 69 RAIN OR DRIZZLE AND SNOW, MODERATE OR HEAVY +70 70 INTERMITTENT FALL OF SNOWFLAKES +71 71 CONTINUOUS FALL OF SNOWFLAKES +72 72 INTERMITTENT FALL OF SNOWFLAKES +73 73 CONTINUOUS FALL OF SNOWFLAKES +74 74 INTERMITTENT FALL OF SNOWFLAKES +75 75 CONTINUOUS FALL OF SNOWFLAKES +76 76 DIAMOND DUST (WITH OR WITHOUT FOG) +77 77 SNOW GRAINS (WITH OR WITHOUT FOG) +78 78 ISOLATED STAR-LIKE SNOW CRYSTALS (WITH OR WITHOUT FOG) +79 79 ICE PELLETS +80 80 RAIN SHOWER(S), SLIGHT +81 81 RAIN SHOWER(S), MODERATE OR HEAVY +82 82 RAIN SHOWER(S), VIOLENT +83 83 SHOWER(S) OF RAIN AND SNOW MIXED, SLIGHT +84 84 SHOWER(S) OF RAIN AND SNOW MIXED, MODERATE OR HEAVY +85 85 SNOW SHOWER(S), SLIGHT +86 86 SNOW SHOWER(S), MODERATE OR HEAVY +87 87 SHOWER(S) OF SNOW PELLETS OR SMALL HAIL, WITH OR WITHOUT RAIN OR RAIN AND SNOW MIXED +88 88 SHOWER(S) OF SNOW PELLETS OR SMALL HAIL, WITH OR WITHOUT RAIN OR RAIN AND SNOW MIXED +89 89 SHOWER(S) OF HAIL, WITH OR WITHOUT RAIN OR RAIN AND SNOW MIXED, NOT ASSOCIATED WITH THUNDER +90 90 SHOWER(S) OF HAIL, WITH OR WITHOUT RAIN OR RAIN AND SNOW MIXED, NOT ASSOCIATED WITH THUNDER +91 91 SLIGHT RAIN AT TIME OF OBSERVATION +92 92 MODERATE OR HEAVY RAIN AT TIME OF OBSERVATION +93 93 SLIGHT SNOW, OR RAIN AND SNOW MIXED OR HAIL* AT TIME OF OBSERVATION +94 94 MODERATE OR HEAVY SNOW, OR RAIN AND SNOW MIXED OR HAIL* AT TIME OF OBSERVATION +95 95 THUNDERSTORM, SLIGHT OR MODERATE, WITHOUT HAIL*, BUT WITH RAIN AND/OR SNOW AT TIME OF OBSERVATION +96 96 THUNDERSTORM, SLIGHT OR MODERATE, WITH HAIL* AT TIME OF OBSERVATION +97 97 THUNDERSTORM, HEAVY, WITHOUT HAIL*, BUT WITH RAIN AND/OR SNOW AT TIME OF OBSERVATION +98 98 THUNDERSTORM COMBINED WITH DUSTSTORM OR SANDSTORM AT TIME OF OBSERVATION +99 99 THUNDERSTORM, HEAVY, WITH HAIL* AT TIME OF OBSERVATION +100 100 NO SIGNIFICANT WEATHER OBSERVED +101 101 CLOUDS GENERALLY DISSOLVING OR BECOMING LESS DEVELOPED DURING THE PAST HOUR +102 102 STATE OF SKY ON THE WHOLE UNCHANGED DURING THE PAST HOUR +103 103 CLOUDS GENERALLY FORMING OR DEVELOPING DURING THE PAST HOUR +104 104 HAZE OR SMOKE, OR DUST IN SUSPENSION IN THE AIR, VISIBILITY EQUAL TO, OR GREATER THAN, 1 KM +105 105 HAZE OR SMOKE, OR DUST IN SUSPENSION IN THE AIR, VISIBILITY LESS THAN 1 KM +110 110 MIST +111 111 DIAMOND DUST +112 112 DISTANT LIGHTNING +118 118 SQUALLS +119 119 RESERVED +120 120 FOG +121 121 PRECIPITATION +122 122 DRIZZLE (NOT FREEZING) OR SNOW GRAINS +123 123 RAIN (NOT FREEZING) +124 124 SNOW +125 125 FREEZING DRIZZLE OR FREEZING RAIN +126 126 THUNDERSTORM (WITH OR WITHOUT PRECIPITATION) +127 127 BLOWING OR DRIFTING SNOW OR SAND +128 128 BLOWING OR DRIFTING SNOW OR SAND, VISIBILITY EQUAL TO, OR GREATER THAN, 1 KM +129 129 BLOWING OR DRIFTING SNOW OR SAND, VISIBILITY LESS THAN 1 KM +130 130 FOG +131 131 FOG OR ICE FOG IN PATCHES +132 132 FOG OR ICE FOG, HAS BECOME THINNER DURING THE PAST HOUR +133 133 FOG OR ICE FOG, NO APPRECIABLE CHANGE DURING THE PAST HOUR +134 134 FOG OR ICE FOG, HAS BEGUN OR BECOME THICKER DURING THE PAST HOUR +135 135 FOG, DEPOSITING RIME +140 140 PRECIPITATION +141 141 PRECIPITATION, SLIGHT OR MODERATE +142 142 PRECIPITATION, HEAVY +143 143 LIQUID PRECIPITATION, SLIGHT OR MODERATE +144 144 LIQUID PRECIPITATION, HEAVY +145 145 SOLID PRECIPITATION, SLIGHT OR MODERATE +146 146 SOLID PRECIPITATION, HEAVY +147 147 FREEZING PRECIPITATION, SLIGHT OR MODERATE +148 148 FREEZING PRECIPITATION, HEAVY +149 149 RESERVED +150 150 DRIZZLE +151 151 DRIZZLE, NOT FREEZING, SLIGHT +152 152 DRIZZLE, NOT FREEZING, MODERATE +153 153 DRIZZLE, NOT FREEZING, HEAVY +154 154 DRIZZLE, FREEZING, SLIGHT +155 155 DRIZZLE, FREEZING, MODERATE +156 156 DRIZZLE, FREEZING, HEAVY +157 157 DRIZZLE AND RAIN, SLIGHT +158 158 DRIZZLE AND RAIN, MODERATE OR HEAVY +159 159 RESERVED +160 160 RAIN +161 161 RAIN, NOT FREEZING, SLIGHT +162 162 RAIN, NOT FREEZING, MODERATE +163 163 RAIN, NOT FREEZING, HEAVY +164 164 RAIN, FREEZING, SLIGHT +165 165 RAIN, FREEZING, MODERATE +166 166 RAIN, FREEZING, HEAVY +167 167 RAIN (OR DRIZZLE) AND SNOW, SLIGHT +168 168 RAIN (OR DRIZZLE) AND SNOW, MODERATE OR HEAVY +169 169 RESERVED +170 170 SNOW +171 171 SNOW, SLIGHT +172 172 SNOW, MODERATE +173 173 SNOW, HEAVY +174 174 ICE PELLETS, SLIGHT +175 175 ICE PELLETS, MODERATE +176 176 ICE PELLETS, HEAVY +177 177 SNOW GRAINS +178 178 ICE CRYSTALS +179 179 RESERVED +180 180 SHOWER(S) OR INTERMITTENT PRECIPITATION +181 181 RAIN SHOWER(S) OR INTERMITTENT RAIN, SLIGHT +182 182 RAIN SHOWER(S) OR INTERMITTENT RAIN, MODERATE +183 183 RAIN SHOWER(S) OR INTERMITTENT RAIN, HEAVY +184 184 RAIN SHOWER(S) OR INTERMITTENT RAIN, VIOLENT +185 185 SNOW SHOWER(S) OR INTERMITTENT SNOW, SLIGHT +186 186 SNOW SHOWER(S) OR INTERMITTENT SNOW, MODERATE +187 187 SNOW SHOWER(S) OR INTERMITTENT SNOW, HEAVY +188 188 RESERVED +189 189 HAIL +190 190 THUNDERSTORM +191 191 THUNDERSTORM, SLIGHT OR MODERATE, WITH NO PRECIPITATION +192 192 THUNDERSTORM, SLIGHT OR MODERATE, WITH RAIN SHOWERS AND/OR SNOW SHOWERS +193 193 THUNDERSTORM, SLIGHT OR MODERATE, WITH HAIL +194 194 THUNDERSTORM, HEAVY, WITH NO PRECIPITATION +195 195 THUNDERSTORM, HEAVY, WITH RAIN SHOWERS AND/OR SNOW SHOWERS +196 196 THUNDERSTORM, HEAVY, WITH HAIL +199 199 TORNADO +204 204 VOLCANIC ASH SUSPENDED IN THE AIR ALOFT +205 205 NOT USED +206 206 THICK DUST HAZE, VISIBILITY LESS THAN 1 KM +207 207 BLOWING SPRAY AT THE STATION +208 208 DRIFTING DUST (SAND) +209 209 WALL OF DUST OR SAND IN DISTANCE (LIKE HABOOB) +210 210 SNOW HAZE +211 211 WHITEOUT +212 212 NOT USED +213 213 LIGHTNING, CLOUD TO SURFACE +217 217 DRY THUNDERSTORM +218 218 NOT USED +219 219 TORNADO CLOUD (DESTRUCTIVE) AT OR WITHIN SIGHT OF THE STATION DURING PRECEDING HOUR OR AT THE TIME OF OBSERVATION +220 220 DEPOSITION OF VOLCANIC ASH +221 221 DEPOSITION OF DUST OR SAND +222 222 DEPOSITION OF DEW +223 223 DEPOSITION OF WET SNOW +224 224 DEPOSITION OF SOFT RIME +225 225 DEPOSITION OF HARD RIME +226 226 DEPOSITION OF HOAR FROST +227 227 DEPOSITION OF GLAZE +228 228 DEPOSITION OF ICE CRUST (ICE SLICK) +229 229 NOT USED +230 230 DUSTSTORM OR SANDSTORM WITH TEMPERATURE BELOW 0 °C +239 239 BLOWING SNOW, IMPOSSIBLE TO DETERMINE WHETHER SNOW IS FALLING OR NOT +240 240 NOT USED +241 241 FOG ON SEA +242 242 FOG IN VALLEYS +243 243 ARCTIC OR ANTARCTIC SEA SMOKE +244 244 STEAM FOG (SEA, LAKE OR RIVER) +245 245 STEAM LOG (LAND) +246 246 FOG OVER ICE OR SNOW COVER +247 247 DENSE FOG, VISIBILITY 60-90 M +248 248 DENSE FOG, VISIBILITY 30-60 M +249 249 DENSE FOG, VISIBILITY LESS THAN 30 M +250 250 DRIZZLE, RATE OF FALL - LESS THAN 0.10 MM H-1 +251 251 DRIZZLE, RATE OF FALL - 0.10-0.19 MM H-1 +252 252 DRIZZLE, RATE OF FALL - 0.20-0.39 MM H-1 +253 253 DRIZZLE, RATE OF FALL - 0.40-0.79 MM H-1 +254 254 DRIZZLE, RATE OF FALL - 0.80-1.59 MM H-1 +255 255 DRIZZLE, RATE OF FALL - 1.60-3.19 MM H-1 +256 256 DRIZZLE, RATE OF FALL - 3.20-6.39 MM H-1 +257 257 DRIZZLE, RATE OF FALL - 6.4 MM H-1 OR MORE +258 258 NOT USED +259 259 DRIZZLE AND SNOW +260 260 RAIN, RATE OF FALL - LESS THAN 1.0 MM H-1 +261 261 RAIN, RATE OF FALL - 1.0-1.9 MM H-1 +262 262 RAIN, RATE OF FALL - 2.0-3.9 MM H-1 +263 263 RAIN, RATE OF FALL - 4.0-7.9 MM H-1 +264 264 RAIN, RATE OF FALL - 8.0-15.9 MM H-1 +265 265 RAIN, RATE OF FALL - 16.0-31.9 MM H-1 +266 266 RAIN, RATE OF FALL - 32.0-63.9 MM H-1 +267 267 RAIN, RATE OF FALL - 64.0 MM H-1 OR MORE +270 270 SNOW, RATE OF FALL - LESS THAN 1.0 CM H-1 +271 271 SNOW, RATE OF FALL - 1.0-1.9 CM H-1 +272 272 SNOW, RATE OF FALL - 2.0-3.9 CM H-1 +273 273 SNOW, RATE OF FALL - 4.0-7.9 CM H-1 +274 274 SNOW, RATE OF FALL - 8.0-15.9 CM H-1 +275 275 SNOW, RATE OF FALL - 16.0-31.9 CM H-1 +276 276 SNOW, RATE OF FALL - 32.0-63.9 CM H-1 +277 277 SNOW, RATE OF FALL - 64.0 CM H-1 OR MORE +278 278 SNOW OR ICE CRYSTAL PRECIPITATION FROM A CLEAR SKY +279 279 WET SNOW, FREEZING ON CONTACT +280 280 PRECIPITATION OF RAIN +281 281 PRECIPITATION OF RAIN, FREEZING +282 282 PRECIPITATION OF RAIN AND SNOW MIXED +283 283 PRECIPITATION OF SNOW +284 284 PRECIPITATION OF SNOW PELLETS OR SMALL HALL +285 285 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL, WITH RAIN +286 286 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL, WITH RAIN AND SNOW MIXED +287 287 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL, WITH SNOW +288 288 PRECIPITATION OF HAIL +289 289 PRECIPITATION OF HAIL, WITH RAIN +290 290 PRECIPITATION OF HALL, WITH RAIN AND SNOW MIXED +291 291 PRECIPITATION OF HAIL, WITH SNOW +292 292 SHOWER(S) OR THUNDERSTORM OVER SEA +293 293 SHOWER(S) OR THUNDERSTORM OVER MOUNTAINS +508 508 NO SIGNIFICANT PHENOMENON TO REPORT, PRESENT AND PAST WEATHER OMITTED +509 509 NO OBSERVATION, DATA NOT AVAILABLE, PRESENT AND PAST WEATHER OMITTED +510 510 PRESENT AND PAST WEATHER MISSING, BUT EXPECTED +511 511 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20004.table b/definitions/bufr/tables/0/wmo/32/codetables/20004.table new file mode 100644 index 000000000..6d6e7dac5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20004.table @@ -0,0 +1,21 @@ +0 0 CLOUD COVERING 1/2 OR LESS OF THE SKY THROUGHOUT THE APPROPRIATE PERIOD +1 1 CLOUD COVERING MORE THAN 1/2 OF THE SKY DURING PART OF THE APPROPRIATE PERIOD AND COVERING 1/2 OR LESS DURING PART OF THE PERIOD +2 2 CLOUD COVERING MORE THAN 1/2 OF THE SKY THROUGHOUT THE APPROPRIATE PERIOD +3 3 SANDSTORM, DUSTSTORM OR BLOWING SNOW +4 4 FOG OR ICE FOG OR THICK HAZE +5 5 DRIZZLE +6 6 RAIN +7 7 SNOW, OR RAIN AND SNOW MIXED +8 8 SHOWER(S) +9 9 THUNDERSTORM(S) WITH OR WITHOUT PRECIPITATION +10 10 NO SIGNIFICANT WEATHER OBSERVED +11 11 VISIBILITY REDUCED (SEE NOTE) +12 12 BLOWING PHENOMENA, VISIBILITY REDUCED +13 13 FOG (SEE NOTE) +14 14 PRECIPITATION (SEE NOTE) +15 15 DRIZZLE +16 16 RAIN +17 17 SNOW OR ICE PELLETS +18 18 SHOWERS OR INTERMITTENT PRECIPITATION +19 19 THUNDERSTORM +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20005.table b/definitions/bufr/tables/0/wmo/32/codetables/20005.table new file mode 100644 index 000000000..6d6e7dac5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20005.table @@ -0,0 +1,21 @@ +0 0 CLOUD COVERING 1/2 OR LESS OF THE SKY THROUGHOUT THE APPROPRIATE PERIOD +1 1 CLOUD COVERING MORE THAN 1/2 OF THE SKY DURING PART OF THE APPROPRIATE PERIOD AND COVERING 1/2 OR LESS DURING PART OF THE PERIOD +2 2 CLOUD COVERING MORE THAN 1/2 OF THE SKY THROUGHOUT THE APPROPRIATE PERIOD +3 3 SANDSTORM, DUSTSTORM OR BLOWING SNOW +4 4 FOG OR ICE FOG OR THICK HAZE +5 5 DRIZZLE +6 6 RAIN +7 7 SNOW, OR RAIN AND SNOW MIXED +8 8 SHOWER(S) +9 9 THUNDERSTORM(S) WITH OR WITHOUT PRECIPITATION +10 10 NO SIGNIFICANT WEATHER OBSERVED +11 11 VISIBILITY REDUCED (SEE NOTE) +12 12 BLOWING PHENOMENA, VISIBILITY REDUCED +13 13 FOG (SEE NOTE) +14 14 PRECIPITATION (SEE NOTE) +15 15 DRIZZLE +16 16 RAIN +17 17 SNOW OR ICE PELLETS +18 18 SHOWERS OR INTERMITTENT PRECIPITATION +19 19 THUNDERSTORM +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20006.table b/definitions/bufr/tables/0/wmo/32/codetables/20006.table new file mode 100644 index 000000000..cc2612116 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20006.table @@ -0,0 +1,5 @@ +0 0 LOW INSTRUMENT FLIGHT RULES - CEILING < 500 FEET AND/OR VISIBILITY < 1 MILE +1 1 INSTRUMENT FLIGHT RULES - CEILING < 1000 FEET AND/OR VISIBILITY < 3 MILES +2 2 MARGINAL VISUAL FLIGHT RULES - 1000 FEET =< CEILING < 3000 FEET AND/OR 3 MILES =< VISIBILITY < 5 MILES +3 3 VISUAL FLIGHT RULES - CEILING >= 3000 FEET AND/OR VISIBILITY >= 5 MILES +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20008.table b/definitions/bufr/tables/0/wmo/32/codetables/20008.table new file mode 100644 index 000000000..966bcc2fa --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20008.table @@ -0,0 +1,19 @@ +0 0 SKY CLEAR +1 1 FEW +2 2 SCATTERED +3 3 BROKEN +4 4 OVERCAST +5 5 RESERVED +6 6 SCATTERED/BROKEN +7 7 BROKEN/OVERCAST +8 8 ISOLATED +9 9 ISOLATED EMBEDDED +10 10 OCCASIONAL +11 11 OCCASIONAL EMBEDDED +12 12 FREQUENT +13 13 DENSE +14 14 LAYERS +15 15 OBSCURED (OBSC) +16 16 EMBEDDED (EMBD) +17 17 FREQUENT EMBEDDED +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20009.table b/definitions/bufr/tables/0/wmo/32/codetables/20009.table new file mode 100644 index 000000000..f0119eb87 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20009.table @@ -0,0 +1,6 @@ +0 0 RESERVED +1 1 NSC NIL SIGNIFICANT CLOUD +2 2 CAVOK +3 3 SKC SKY CLEAR +4 4 NSW NIL SIGNIFICANT WEATHER +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2001.table b/definitions/bufr/tables/0/wmo/32/codetables/2001.table new file mode 100644 index 000000000..470fcccb7 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2001.table @@ -0,0 +1,4 @@ +0 0 AUTOMATIC +1 1 MANNED +2 2 HYBRID: BOTH MANNED AND AUTOMATIC +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20011.table b/definitions/bufr/tables/0/wmo/32/codetables/20011.table new file mode 100644 index 000000000..06c6e106c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20011.table @@ -0,0 +1,16 @@ +0 0 0 +1 1 1 OKTA OR LESS, BUT NOT ZERO +2 2 2 OKTAS +3 3 3 OKTAS +4 4 4 OKTAS +5 5 5 OKTAS +6 6 6 OKTAS +7 7 7 OKTAS OR MORE, BUT NOT 8 OKTAS +8 8 8 OKTAS +9 9 SKY OBSCURED BY FOG AND/OR OTHER METEOROLOGICAL PHENOMENA +10 10 SKY PARTIALLY OBSCURED BY FOG AND/OR OTHER METEOROLOGICAL PHENOMENA +11 11 SCATTERED +12 12 BROKEN +13 13 FEW +14 14 RESERVED +15 15 CLOUD COVER IS INDISCERNIBLE FOR REASONS OTHER THAN FOG OR OTHER METEOROLOGICAL PHENOMENA, OR OBSERVATION IS NOT MADE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20012.table b/definitions/bufr/tables/0/wmo/32/codetables/20012.table new file mode 100644 index 000000000..c778f6077 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20012.table @@ -0,0 +1,55 @@ +0 0 CIRRUS (CI) +1 1 CIRROCUMULUS (CC) +2 2 CIRROSTRATUS (CS) +3 3 ALTOCUMULUS (AC) +4 4 ALTOSTRATUS (AS) +5 5 NIMBOSTRATUS (NS) +6 6 STRATOCUMULUS (SC) +7 7 STRATUS (ST) +8 8 CUMULUS (CU) +9 9 CUMULONIMBUS (CB) +10 10 NO CH CLOUDS +11 11 CIRRUS FIBRATUS, SOMETIMES UNCINUS, NOT PROGRESSIVELY INVADING THE SKY +12 12 CIRRUS SPISSATUS, IN PATCHES OR ENTANGLED SHEAVES, WHICH USUALLY DO NOT INCREASE AND SOMETIMES SEEM TO BE THE REMAINS OF THE UPPER PART OF A CUMULONIMBUS; OR CIRRUS CASTELLANUS OR FLOCCUS +13 13 CIRRUS SPISSATUS CUMULONIMBOGENITUS +14 14 CIRRUS UNCINUS OR FIBRATUS, OR BOTH, PROGRESSIVELY INVADING THE SKY; THEY GENERALLY THICKEN AS A WHOLE +15 15 CIRRUS (OFTEN IN BANDS) AND CIRROSTRATUS, OR CIRROSTRATUS ALONE, PROGRESSIVELY INVADING THE SKY; THEY GENERALLY THICKEN AS A WHOLE, BUT THE CONTINUOUS VEIL DOES NOT REACH 45 DEGREES ABOVE THE HORIZON +16 16 CIRRUS (OFTEN IN BANDS) AND CIRROSTRATUS, OR CIRROSTRATUS ALONE, PROGRESSIVELY INVADING THE SKY; THEY GENERALLY THICKEN AS A WHOLE; THE CONTINUOUS VEIL EXTENDS MORE THAN 45 DEGREES ABOVE THE HORIZON, WITHOUT THE SKY BEING TOTALLY COVERED +17 17 CIRROSTRATUS COVERING THE WHOLE SKY +18 18 CIRROSTRATUS NOT PROGRESSIVELY INVADING THE SKY AND NOT ENTIRELY COVERING IT +19 19 CIRROCUMULUS ALONE, OR CIRROCUMULUS PREDOMINANT AMONG THE CH CLOUDS +20 20 NO CM CLOUDS +21 21 ALTOSTRATUS TRANSLUCIDUS +22 22 ALTOSTRATUS OPACUS OR NIMBOSTRATUS +23 23 ALTOCUMULUS TRANSLUCIDUS AT A SINGLE LEVEL +24 24 PATCHES (OFTEN LENTICULAR) OF ALTOCUMULUS TRANSLUCIDUS, CONTINUALLY CHANGING AND OCCURRING AT ONE OR MORE LEVELS +25 25 ALTOCUMULUS TRANSLUCIDUS IN BANDS, OR ONE OR MORE LAYERS OF ALTOCUMULUS TRANSLUCIDUS OR OPACUS, PROGRESSIVELY INVADING THE SKY; THESE ALTOCUMULUS CLOUDS GENERALLY THICKEN AS A WHOLE +26 26 ALTOCUMULUS CUMULOGENITUS (OR CUMULONIMBOGENITUS) +27 27 ALTOCUMULUS TRANSLUCIDUS OR OPACUS IN TWO OR MORE LAYERS, OR ALTOCUMULUS OPACUS IN A SINGLE LAYER, NOT PROGRESSIVELY INVADING THE SKY, OR ALTOCUMULUS WITH ALTOSTRATUS OR NIMBOSTRATUS +28 28 ALTOCUMULUS CASTELLANUS OR FLOCCUS +29 29 ALTOCUMULUS OF A CHAOTIC SKY, GENERALLY AT SEVERAL LEVELS +30 30 NO CL CLOUDS +31 31 CUMULUS HUMILIS OR CUMULUS FRACTUS OTHER THAN OF BAD WEATHER,* OR BOTH +32 32 CUMULUS MEDIOCRIS OR CONGESTUS, TOWERING CUMULUS (TCU), WITH OR WITHOUT CUMULUS OF SPECIES FRACTUS OR HUMILIS OR STRATOCUMULUS, ALL HAVING THEIR BASES AT THE SAME LEVEL +33 33 CUMULONIMBUS CALVUS, WITH OR WITHOUT CUMULUS, STRATOCUMULUS OR STRATUS +34 34 STRATOCUMULUS CUMULOGENITUS +35 35 STRATOCUMULUS OTHER THAN STRATOCUMULUS CUMULOGENITUS +36 36 STRATUS NEBULOSUS OR STRATUS FRACTUS OTHER THAN OF BAD WEATHER,* OR BOTH +37 37 STRATUS FRACTUS OR CUMULUS FRACTUS OF BAD WEATHER,* OR BOTH (PANNUS), USUALLY BELOW ALTOSTRATUS OR NIMBOSTRATUS +38 38 CUMULUS AND STRATOCUMULUS OTHER THAN STRATOCUMULUS CUMULOGENITUS, WITH BASES AT DIFFERENT LEVELS +39 39 CUMULONIMBUS CAPILLATUS (OFTEN WITH AN ANVIL), WITH OR WITHOUT CUMULONIMBUS CALVUS, CUMULUS, STRATOCUMULUS, STRATUS OR PANNUS +40 40 CH +41 41 CM +42 42 CL +43 43 CLEAR +44 44 LIQUID WATER +45 45 SUPERCOOLED LIQUID WATER +46 46 MIXED PHASE +47 47 OPTICALLY THICK ICE +48 48 OPTICALLY THIN ICE +49 49 MULTILAYERED ICE +59 59 CLOUD NOT VISIBLE OWING TO DARKNESS, FOG, DUSTSTORM, SANDSTORM, OR OTHER ANALOGOUS PHENOMENA +60 60 CH CLOUDS INVISIBLE OWING TO DARKNESS, FOG, BLOWING DUST OR SAND, OR OTHER SIMILAR PHENOMENA, OR BECAUSE OF A CONTINUOUS LAYER OF LOWER CLOUDS +61 61 CM CLOUDS INVISIBLE OWING TO DARKNESS, FOG, BLOWING DUST OR SAND, OR OTHER SIMILAR PHENOMENA, OR BECAUSE OF CONTINUOUS LAYER OF LOWER CLOUDS +62 62 CL CLOUDS INVISIBLE OWING TO DARKNESS, FOG, BLOWING DUST OR SAND, OR OTHER SIMILAR PHENOMENA +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20017.table b/definitions/bufr/tables/0/wmo/32/codetables/20017.table new file mode 100644 index 000000000..5ec10bd41 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20017.table @@ -0,0 +1,11 @@ +0 0 ISOLATED CLOUD FRAGMENTS OF CLOUDS +1 1 CONTINUOUS CLOUD +2 2 BROKEN CLOUD - SMALL BREAKS +3 3 BROKEN CLOUD - LARGE BREAKS +4 4 CONTINUOUS CLOUD +5 5 BROKEN CLOUD - SMALL BREAKS +6 6 BROKEN CLOUD - LARGE BREAKS +7 7 CONTINUOUS OR ALMOST CONTINUOUS WAVES WITH TOWERING CLOUDS ABOVE THE TOP OF THE LAYER +8 8 GROUPS OF WAVES WITH TOWERING CLOUDS ABOVE THE TOP OF THE LAYER +9 9 TWO OR MORE LAYERS AT DIFFERENT LEVELS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20018.table b/definitions/bufr/tables/0/wmo/32/codetables/20018.table new file mode 100644 index 000000000..c0ffc3693 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20018.table @@ -0,0 +1,4 @@ +0 0 INCREASING (U) +1 1 DECREASING (D) +2 2 NO DISTINCT CHANGE (N) +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2002.table b/definitions/bufr/tables/0/wmo/32/codetables/2002.table new file mode 100644 index 000000000..a701e1e40 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2002.table @@ -0,0 +1,3 @@ +1 1 CERTIFIED INSTRUMENTS +2 2 ORIGINALLY MEASURED IN KNOTS +3 3 ORIGINALLY MEASURED IN KM H-1 diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20021.table b/definitions/bufr/tables/0/wmo/32/codetables/20021.table new file mode 100644 index 000000000..747a7591e --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20021.table @@ -0,0 +1,23 @@ +1 1 PRECIPITATION - UNKNOWN TYPE +2 2 LIQUID PRECIPITATION NOT FREEZING +3 3 LIQUID FREEZING PRECIPITATION +4 4 DRIZZLE +5 5 RAIN +6 6 SOLID PRECIPITATION +7 7 SNOW +8 8 SNOW GRAINS +9 9 SNOW PELLETS +10 10 ICE PELLETS +11 11 ICE CRYSTALS +12 12 DIAMOND DUST +13 13 SMALL HAIL +14 14 HAIL +15 15 GLAZE +16 16 RIME +17 17 SOFT RIME +18 18 HARD RIME +19 19 CLEAR ICE +20 20 WET SNOW +21 21 HOAR FROST +22 22 DEW +23 23 WHITE DEW diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20022.table b/definitions/bufr/tables/0/wmo/32/codetables/20022.table new file mode 100644 index 000000000..a551aac0e --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20022.table @@ -0,0 +1,7 @@ +0 0 NO PRECIPITATION +1 1 CONTINUOUS +2 2 INTERMITTENT +3 3 SHOWER +4 4 NOT REACHING GROUND +5 5 DEPOSITION +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20023.table b/definitions/bufr/tables/0/wmo/32/codetables/20023.table new file mode 100644 index 000000000..97670dfbb --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20023.table @@ -0,0 +1,14 @@ +1 1 DUST/SAND WHIRL +2 2 SQUALLS +3 3 SANDSTORM +4 4 DUSTSTORM +5 5 LIGHTNING - CLOUD TO SURFACE +6 6 LIGHTNING - CLOUD TO CLOUD +7 7 LIGHTNING - DISTANT +8 8 THUNDERSTORM +9 9 FUNNEL CLOUD NOT TOUCHING SURFACE +10 10 FUNNEL CLOUD TOUCHING SURFACE +11 11 SPRAY +12 12 WATERSPOUT +13 13 WIND SHEAR +14 14 DUST DEVILS diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20024.table b/definitions/bufr/tables/0/wmo/32/codetables/20024.table new file mode 100644 index 000000000..13aba873e --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20024.table @@ -0,0 +1,8 @@ +0 0 NO PHENOMENA +1 1 LIGHT +2 2 MODERATE +3 3 HEAVY +4 4 VIOLENT +5 5 SEVERE +6 6 VERY SEVERE +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20025.table b/definitions/bufr/tables/0/wmo/32/codetables/20025.table new file mode 100644 index 000000000..4d70e338f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20025.table @@ -0,0 +1,13 @@ +1 1 FOG +2 2 ICE FOG +3 3 STEAM FOG +7 7 MIST +8 8 HAZE +9 9 SMOKE +10 10 VOLCANIC ASH +11 11 DUST +12 12 SAND +13 13 SNOW +14 14 CLOUD +15 15 PRECIPITATION +16 16 IMPOSSIBLE TO DETERMINE WHETHER SNOW IS FALLING OR NOT diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20026.table b/definitions/bufr/tables/0/wmo/32/codetables/20026.table new file mode 100644 index 000000000..285209472 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20026.table @@ -0,0 +1,16 @@ +0 0 NO CHANGE +1 1 SHALLOW +2 2 PATCHES +3 3 PARTIAL +4 4 FREEZING +5 5 LOW DRIFTING +6 6 BLOWING +7 7 INCREASING +8 8 DECREASING +9 9 IN SUSPENSION IN THE AIR +10 10 WALL +11 11 DENSE +12 12 WHITEOUT +13 13 DRIFTING AND BLOWING +14 14 RESERVED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20027.table b/definitions/bufr/tables/0/wmo/32/codetables/20027.table new file mode 100644 index 000000000..c337f16a7 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20027.table @@ -0,0 +1,8 @@ +1 1 AT TIME OF OBSERVATION +2 2 IN PAST HOUR +3 3 IN TIME PERIOD FOR PAST WEATHER W1W2 +4 4 IN TIME PERIOD SPECIFIED +5 5 RESERVED +6 6 BELOW STATION LEVEL +7 7 AT THE STATION +8 8 IN THE VICINITY diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20028.table b/definitions/bufr/tables/0/wmo/32/codetables/20028.table new file mode 100644 index 000000000..6b701a2b6 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20028.table @@ -0,0 +1,4 @@ +0 0 NO CHANGE (NC) +1 1 FORECAST TO WEAKEN (WKN) +2 2 FORECAST TO INTENSIFY (INTSF) +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20029.table b/definitions/bufr/tables/0/wmo/32/codetables/20029.table new file mode 100644 index 000000000..8b46da891 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20029.table @@ -0,0 +1,4 @@ +0 0 NO RAIN +1 1 RAIN +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2003.table b/definitions/bufr/tables/0/wmo/32/codetables/2003.table new file mode 100644 index 000000000..f364d1811 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2003.table @@ -0,0 +1,13 @@ +0 0 PRESSURE INSTRUMENT ASSOCIATED WITH WIND MEASURING EQUIPMENT +1 1 OPTICAL THEODOLITE +2 2 RADIO THEODOLITE +3 3 RADAR +4 4 VLF-OMEGA +5 5 LORAN C +6 6 WIND PROFILER +7 7 SATELLITE NAVIGATION +8 8 RADIO-ACOUSTIC SOUNDING SYSTEM (RASS) +9 9 SODAR +10 10 LIDAR +14 14 PRESSURE INSTRUMENT ASSOCIATED WITH WIND MEASURING EQUIPMENT BUT PRESSURE ELEMENT FAILED DURING ASCENT +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20032.table b/definitions/bufr/tables/0/wmo/32/codetables/20032.table new file mode 100644 index 000000000..fd37c1e76 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20032.table @@ -0,0 +1,6 @@ +0 0 ICE NOT BUILDING UP +1 1 ICE BUILDING UP SLOWLY +2 2 ICE BUILDING UP RAPIDLY +3 3 ICE MELTING OR BREAKING UP SLOWLY +4 4 ICE MELTING OR BREAKING UP RAPIDLY +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20033.table b/definitions/bufr/tables/0/wmo/32/codetables/20033.table new file mode 100644 index 000000000..817873323 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20033.table @@ -0,0 +1,3 @@ +1 1 ICING FROM OCEAN SPRAY +2 2 ICING FROM FOG +3 3 ICING FROM RAIN diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20034.table b/definitions/bufr/tables/0/wmo/32/codetables/20034.table new file mode 100644 index 000000000..668e91671 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20034.table @@ -0,0 +1,12 @@ +0 0 NO SEA ICE IN SIGHT +1 1 SHIP IN OPEN LEAD MORE THAN 1.0 NAUTICAL MILE WIDE, OR SHIP IN FAST ICE WITH BOUNDARY BEYOND LIMIT OF VISIBILITY +2 2 SEA ICE PRESENT IN CONCENTRATIONS LESS THAN 3/10 (3/8), OPEN WATER OR VERY OPEN PACK ICE +3 3 4/10 TO 6/10 (3/8 TO LESS THAN 6/8), OPEN PACK ICE +4 4 7/10 TO 8/10 (6/8 TO LESS THAN 7/8), CLOSE PACK ICE +5 5 9/10 OR MORE, BUT NOT 10/10 (7/8 TO LESS THAN 8/8), VERY CLOSE PACK ICE +6 6 STRIPS AND PATCHES OF PACK ICE WITH OPEN WATER BETWEEN +7 7 STRIPS AND PATCHES OF CLOSE OR VERY CLOSE PACK ICE WITH AREAS OF LESSER CONCENTRATION BETWEEN +8 8 FAST ICE WITH OPEN WATER, VERY OPEN OR OPEN PACK ICE TO SEAWARD OF THE ICE BOUNDARY +9 9 FAST ICE WITH CLOSE OR VERY CLOSE PACK ICE TO SEAWARD OF THE BOUNDARY +14 14 UNABLE TO REPORT, BECAUSE OF DARKNESS, LACK OF VISIBILITY, OR BECAUSE SHIP IS MORE THAN 0.5 NAUTICAL MILE AWAY FROM ICE EDGE +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20035.table b/definitions/bufr/tables/0/wmo/32/codetables/20035.table new file mode 100644 index 000000000..07a4a0284 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20035.table @@ -0,0 +1,12 @@ +0 0 NO ICE OF LAND ORIGIN +1 1 1-5 ICEBERGS, NO GROWLERS OR BERGY BITS +2 2 6-10 ICEBERGS, NO GROWLERS OR BERGY BITS +3 3 11-20 ICEBERGS, NO GROWLERS OR BERGY BITS +4 4 UP TO AND INCLUDING 10 GROWLERS AND BERGY BITS - NO ICEBERGS +5 5 MORE THAN 10 GROWLERS AND BERGY BITS - NO ICEBERGS +6 6 1-5 ICEBERGS, WITH GROWLERS AND BERGY BITS +7 7 6-10 ICEBERGS, WITH GROWLERS AND BERGY BITS +8 8 11-20 ICEBERGS, WITH GROWLERS AND BERGY BITS +9 9 MORE THAN 20 ICEBERGS, WITH GROWLERS AND BERGY BITS - A MAJOR HAZARD TO NAVIGATION +14 14 UNABLE TO REPORT, BECAUSE OF DARKNESS, LACK OF VISIBILITY OR BECAUSE ONLY SEA ICE IS VISIBLE +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20036.table b/definitions/bufr/tables/0/wmo/32/codetables/20036.table new file mode 100644 index 000000000..b4cc874bd --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20036.table @@ -0,0 +1,12 @@ +0 0 SHIP IN OPEN WATER WITH FLOATING ICE IN SIGHT +1 1 SHIP IN EASILY PENETRABLE ICE; CONDITIONS IMPROVING +2 2 SHIP IN EASILY PENETRABLE ICE; CONDITIONS NOT CHANGING +3 3 SHIP IN EASILY PENETRABLE ICE; CONDITIONS WORSENING +4 4 SHIP IN ICE DIFFICULT TO PENETRATE; CONDITIONS IMPROVING +5 5 SHIP IN ICE DIFFICULT TO PENETRATE; CONDITIONS NOT CHANGING +6 6 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING. ICE FORMING AND FLOES FREEZING TOGETHER +7 7 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING. ICE UNDER SLIGHT PRESSURE +8 8 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING. ICE UNDER MODERATE OR SEVERE PRESSURE +9 9 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING. SHIP BESET +30 30 UNABLE TO REPORT, BECAUSE OF DARKNESS OR LACK OF VISIBILITY +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20037.table b/definitions/bufr/tables/0/wmo/32/codetables/20037.table new file mode 100644 index 000000000..474eeaae2 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20037.table @@ -0,0 +1,12 @@ +0 0 NEW ICE ONLY (FRAZIL ICE, GREASE ICE, SLUSH, SHUGA) +1 1 NILAS OR ICE RIND, LESS THAN 10 CM THICK +2 2 YOUNG ICE (GREY ICE, GREY-WHITE ICE), 10-30 CM THICK +3 3 PREDOMINANTLY NEW AND/OR YOUNG ICE WITH SOME FIRST-YEAR ICE +4 4 PREDOMINANTLY THIN FIRST-YEAR ICE WITH SOME NEW AND/OR YOUNG ICE +5 5 ALL THIN FIRST-YEAR ICE (30-70 CM THICK) +6 6 PREDOMINANTLY MEDIUM FIRST-YEAR ICE (70-120 CM THICK) AND THICK FIRST-YEAR ICE (>120 CM THICK) WITH SOME THINNER (YOUNGER) FIRST-YEAR ICE +7 7 ALL MEDIUM AND THICK FIRST-YEAR ICE +8 8 PREDOMINANTLY MEDIUM AND THICK FIRST-YEAR ICE WITH SOME OLD ICE (USUALLY MORE THAN 2 METRES THICK) +9 9 PREDOMINANTLY OLD ICE +30 30 UNABLE TO REPORT, BECAUSE OF DARKNESS, LACK OF VISIBILITY OR BECAUSE ONLY ICE OF LAND ORIGIN IS VISIBLE OR BECAUSE SHIP IS MORE THAN 0.5 NAUTICAL MILE AWAY FROM ICE EDGE +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2004.table b/definitions/bufr/tables/0/wmo/32/codetables/2004.table new file mode 100644 index 000000000..a55de6c58 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2004.table @@ -0,0 +1,11 @@ +0 0 USA OPEN PAN EVAPORIMETER (WITHOUT COVER) +1 1 USA OPEN PAN EVAPORIMETER (MESH COVERED) +2 2 GGI-3000 EVAPORIMETER (SUNKEN) +3 3 20 M2 TANK +4 4 OTHERS +5 5 RICE +6 6 WHEAT +7 7 MAIZE +8 8 SORGHUM +9 9 OTHER CROPS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20040.table b/definitions/bufr/tables/0/wmo/32/codetables/20040.table new file mode 100644 index 000000000..889393bf8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20040.table @@ -0,0 +1,9 @@ +0 0 DRIFT SNOW ENDED BEFORE THE HOUR OF OBSERVATION +1 1 INTENSITY DIMINISHING +2 2 NO CHANGE +3 3 INTENSITY INCREASING +4 4 CONTINUES, APART FROM INTERRUPTION LASTING LESS THAN 30 MINUTES +5 5 GENERAL DRIFT SNOW HAS BECOME DRIFT SNOW NEAR THE GROUND +6 6 DRIFT SNOW NEAR THE GROUND HAS BECOME GENERAL DRIFT SNOW +7 7 DRIFT SNOW HAS STARTED AGAIN AFTER AN INTERRUPTION OF MORE THAN 30 MINUTES +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20041.table b/definitions/bufr/tables/0/wmo/32/codetables/20041.table new file mode 100644 index 000000000..fc571208d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20041.table @@ -0,0 +1,14 @@ +0 0 NO ICING +1 1 LIGHT ICING +2 2 LIGHT ICING IN CLOUD +3 3 LIGHT ICING IN PRECIPITATION +4 4 MODERATE ICING +5 5 MODERATE ICING IN CLOUD +6 6 MODERATE ICING IN PRECIPITATION +7 7 SEVERE ICING +8 8 SEVERE ICING IN CLOUD +9 9 SEVERE ICING IN PRECIPITATION +10 10 TRACE OF ICING +11 11 TRACE OF ICING IN CLOUD +12 12 TRACE OF ICING IN PRECIPITATION +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20042.table b/definitions/bufr/tables/0/wmo/32/codetables/20042.table new file mode 100644 index 000000000..2493af725 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20042.table @@ -0,0 +1,4 @@ +0 0 NO ICING +1 1 ICING PRESENT +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20045.table b/definitions/bufr/tables/0/wmo/32/codetables/20045.table new file mode 100644 index 000000000..91ae63f48 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20045.table @@ -0,0 +1,4 @@ +0 0 NO SLD CONDITIONS PRESENT +1 1 SLD CONDITIONS PRESENT +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20048.table b/definitions/bufr/tables/0/wmo/32/codetables/20048.table new file mode 100644 index 000000000..4a5488266 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20048.table @@ -0,0 +1,5 @@ +0 0 STABILITY +1 1 DIMINUTION +2 2 INTENSIFICATION +3 3 UNKNOWN +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20050.table b/definitions/bufr/tables/0/wmo/32/codetables/20050.table new file mode 100644 index 000000000..3f8654ed5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20050.table @@ -0,0 +1,10 @@ +0 0 RESERVED +1 1 1ST LOW CLOUD +2 2 2ND LOW CLOUD +3 3 3RD LOW CLOUD +4 4 1ST MEDIUM CLOUD +5 5 2ND MEDIUM CLOUD +6 6 3RD MEDIUM CLOUD +7 7 1ST HIGH CLOUD +8 8 2ND HIGH CLOUD +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20055.table b/definitions/bufr/tables/0/wmo/32/codetables/20055.table new file mode 100644 index 000000000..ea06427f6 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20055.table @@ -0,0 +1,12 @@ +0 0 CUMULUS, IF ANY, ARE QUITE SMALL; GENERALLY LESS THAN 2/8 COVERAGE, EXCEPT ON WINDWARD SLOPES OF ELEVATED TERRAIN; AVERAGE WIDTH OF CLOUD IS AT LEAST AS GREAT AS ITS VERTICAL THICKNESS +1 1 CUMULUS OF INTERMEDIATE SIZE WITH CLOUD COVER LESS THAN 5/8; AVERAGE CLOUD WIDTH IS MORE THAN ITS VERTICAL THICKNESS; TOWERS ARE VERTICAL WITH LITTLE OR NO EVIDENCE OF PRECIPITATION, EXCEPT ALONG SLOPES OF ELEVATED TERRAIN; A GENERAL ABSENCE OF MIDDLE AND UPPER CLOUDS +2 2 SWELLING CUMULUS WITH RAPIDLY GROWING TALL TURRETS WHICH DECREASE IN SIZE WITH HEIGHT AND WHOSE TOPS TEND TO SEPARATE FROM THE LONGER CLOUD BODY AND EVAPORATE WITHIN MINUTES OF THE SEPARATION +3 3 SWELLING CUMULUS WITH TOWERS HAVING A PRONOUNCED TILT IN A DOWNWIND DIRECTION; VERTICAL CLOUD THICKNESS IS MORE THAN ONE AND A HALF TIMES THAT OF ITS AVERAGE WIDTH +4 4 SWELLING CUMULUS WITH TOWERS HAVING A PRONOUNCED TILT IN AN UPWIND DIRECTION; VERTICAL CLOUD THICKNESS IS MORE THAN ONE AND A HALF TIMES THAT OF ITS AVERAGE WIDTH +5 5 TALL CUMULUS CONGESTUS WITH VERTICAL THICKNESS MORE THAN TWICE THE AVERAGE WIDTH; NOT ORGANIZED IN CLUSTERS OR LINES; ONE OR MORE LAYERS OF CLOUDS EXTEND OUT FROM THE CLOUD TOWERS, ALTHOUGH NO CONTINUOUS CLOUD LAYERS EXIST +6 6 ISOLATED CUMULONIMBUS OR LARGE CLUSTERS OF CUMULUS TURRETS SEPARATED BY WIDE AREAS IN WHICH CLOUDS ARE ABSENT; CLOUD BASES ARE GENERALLY DARK WITH SHOWERS OBSERVED IN MOST CELLS; SOME SCATTERED MIDDLE AND UPPER CLOUDS MAY BE PRESENT; INDIVIDUAL CUMULUS CELLS ARE ONE TO TWO TIMES HIGHER THAN THEY ARE WIDE +7 7 NUMEROUS CUMULUS EXTENDING THROUGH THE MIDDLE TROPOSPHERE WITH BROKEN TO OVERCAST SHEETS OF MIDDLE CLOUDS AND/OR CIRROSTRATUS; CUMULUS TOWERS DO NOT DECREASE GENERALLY IN SIZE WITH HEIGHT; RAGGED DARK CLOUD BASES WITH SOME SHOWERS PRESENT +8 8 CONTINUOUS DENSE MIDDLE CLOUDS AND/OR CIRROSTRATUS CLOUD SHEETS WITH SOME LARGE ISOLATED CUMULONIMBUS OR CUMULUS CONGESTUS CLOUDS PENETRATING THESE SHEETS; LIGHT RAIN OCCASIONALLY OBSERVED FROM THE ALTOSTRATUS; CUMULONIMBUS BASES RAGGED AND DARK WITH SHOWERS VISIBLE +9 9 CONTINUOUS SHEETS OF MIDDLE CLOUDS AND/OR CIRROSTRATUS WITH CUMULONIMBUS AND CUMULUS CONGESTUS IN ORGANIZED LINES OR CLOUD BANDS; RAIN IS GENERALLY OBSERVED FROM ALTOSTRATUS SHEETS AND HEAVY SHOWERS FROM CUMULONIMBUS; WIND HAS A SQUALLY CHARACTER +10 10 STATE OF SKY UNKNOWN OR NOT DESCRIBED BY ANY OF THE ABOVE +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20056.table b/definitions/bufr/tables/0/wmo/32/codetables/20056.table new file mode 100644 index 000000000..204b220b8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20056.table @@ -0,0 +1,8 @@ +0 0 UNKNOWN +1 1 WATER +2 2 ICE +3 3 MIXED +4 4 CLEAR +5 5 SUPERCOOLED LIQUID WATER +6 6 RESERVED +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20062.table b/definitions/bufr/tables/0/wmo/32/codetables/20062.table new file mode 100644 index 000000000..24d96c46f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20062.table @@ -0,0 +1,21 @@ +0 0 SURFACE OF GROUND DRY (WITHOUT CRACKS AND NO APPRECIABLE AMOUNT OF DUST OR LOOSE SAND) +1 1 SURFACE OF GROUND MOIST +2 2 SURFACE OF GROUND WET (STANDING WATER IN SMALL OR LARGE POOLS ON SURFACE) +3 3 FLOODED +4 4 SURFACE OF GROUND FROZEN +5 5 GLAZE ON GROUND +6 6 LOOSE DRY DUST OR SAND NOT COVERING GROUND COMPLETELY +7 7 THIN COVER OF LOOSE DRY DUST OR SAND COVERING GROUND COMPLETELY +8 8 MODERATE OR THICK COVER OF LOOSE DRY DUST OR SAND COVERING GROUND COMPLETELY +9 9 EXTREMELY DRY WITH CRACKS +10 10 GROUND PREDOMINANTLY COVERED BY ICE +11 11 COMPACT OR WET SNOW (WITH OR WITHOUT ICE) COVERING LESS THAN ONE HALF OF THE GROUND +12 12 COMPACT OR WET SNOW (WITH OR WITHOUT ICE) COVERING AT LEAST ONE HALF OF THE GROUND BUT GROUND NOT COMPLETELY COVERED +13 13 EVEN LAYER OF COMPACT OR WET SNOW COVERING GROUND COMPLETELY +14 14 UNEVEN LAYER OF COMPACT OR WET SNOW COVERING GROUND COMPLETELY +15 15 LOOSE DRY SNOW COVERING LESS THAN ONE HALF OF THE GROUND +16 16 LOOSE DRY SNOW COVERING AT LEAST ONE HALF OF THE GROUND BUT GROUND NOT COMPLETELY COVERED +17 17 EVEN LAYER OF LOOSE DRY SNOW COVERING GROUND COMPLETELY +18 18 UNEVEN LAYER OF LOOSE DRY SNOW COVERING GROUND COMPLETELY +19 19 SNOW COVERING GROUND COMPLETELY; DEEP DRIFTS +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20063.table b/definitions/bufr/tables/0/wmo/32/codetables/20063.table new file mode 100644 index 000000000..90ce1c086 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20063.table @@ -0,0 +1,71 @@ +0 0 RESERVED +1 1 HIGHEST WIND SPEED GUSTS GREATER THAN 11.5 M/S +2 2 HIGHEST MEAN WIND SPEED GREATER THAN 17.5 M/S +7 7 VISIBILITY GREATER THAN 100 000 M +10 10 MIRAGE - NO SPECIFICATION +11 11 MIRAGE - IMAGE OF DISTANT OBJECT RAISED (LOOMING) +13 13 MIRAGE - INVERTED IMAGE OF DISTANT OBJECT +14 14 MIRAGE - COMPLEX, MULTIPLE IMAGES OF DISTANT OBJECT (IMAGES NOT INVERTED) +15 15 MIRAGE - COMPLEX, MULTIPLE IMAGES OF DISTANT OBJECT (SOME IMAGES BEING INVERTED) +16 16 MIRAGE - SUN OR MOON SEEN APPRECIABLY DISTORTED +17 17 MIRAGE - SUN VISIBLE, ALTHOUGH ASTRONOMICALLY BELOW THE HORIZON +18 18 MIRAGE - MOON VISIBLE, ALTHOUGH ASTRONOMICALLY BELOW THE HORIZON +19 19 RESERVED +20 20 DAY DARKNESS, BAD, WORST IN DIRECTION SPECIFIED +21 21 DAY DARKNESS, VERY BAD, WORST IN DIRECTION SPECIFIED +22 22 DAY DARKNESS, BLACK, WORST IN DIRECTION SPECIFIED +31 31 SLIGHT COLORATION OF CLOUDS AT SUNRISE ASSOCIATED WITH A TROPICAL DISTURBANCE +32 32 DEEP-RED COLORATION OF CLOUDS AT SUNRISE ASSOCIATED WITH A TROPICAL DISTURBANCE +33 33 SLIGHT COLORATION OF CLOUDS AT SUNSET ASSOCIATED WITH A TROPICAL DISTURBANCE +34 34 DEEP-RED COLORATION OF CLOUDS AT SUNSET ASSOCIATED WITH A TROPICAL DISTURBANCE +35 35 CONVERGENCE OF CH CLOUDS AT A POINT BELOW 45° FORMING OR INCREASING AND ASSOCIATED WITH A TROPICAL DISTURBANCE +36 36 CONVERGENCE OF CH CLOUDS AT A POINT ABOVE 45° ASSOCIATED WITH A TROPICAL DISTURBANCE +37 37 CONVERGENCE OF CH CLOUDS AT A POINT BELOW 45° DISSOLVING OR DIMINISHING AND ASSOCIATED WITH A TROPICAL DISTURBANCE +38 38 CONVERGENCE OF CH CLOUDS AT A POINT ABOVE 45° ASSOCIATED WITH A TROPICAL DISTURBANCE +39 39 RESERVED +40 40 HOAR FROST ON HORIZONTAL SURFACES +41 41 HOAR FROST ON HORIZONTAL AND VERTICAL SURFACES +42 42 PRECIPITATION CONTAINING SAND OR DESERT DUST +43 43 PRECIPITATION CONTAINING VOLCANIC ASH +50 50 CALM OR LIGHT WIND FOLLOWED BY A SQUALL +51 51 CALM OR LIGHT WIND FOLLOWED BY A SUCCESSION OF SQUALLS +52 52 GUSTY WEATHER FOLLOWED BY A SQUALL +53 53 GUSTY WEATHER FOLLOWED BY A SUCCESSION OF SQUALLS +54 54 SQUALL FOLLOWED BY GUSTY WEATHER +55 55 GENERAL GUSTY WEATHER WITH SQUALL AT INTERVALS +56 56 SQUALL APPROACHING STATION +57 57 LINE SQUALL +58 58 SQUALL WITH DRIFTING OR BLOWING DUST OR SAND +59 59 LINE SQUALL WITH DRIFTING OR BLOWING DUST OR SAND +60 60 TEMPERATURE STEADY +61 61 TEMPERATURE FALLING, WITHOUT GOING BELOW 0°C +62 62 TEMPERATURE RISING, WITHOUT GOING ABOVE 0°C +63 63 TEMPERATURE FALLING TO A VALUE BELOW 0°C +64 64 TEMPERATURE RISING TO A VALUE ABOVE 0°C +65 65 IRREGULAR VARIATION, OSCILLATIONS OF TEMPERATURE PASSING THROUGH 0°C +66 66 IRREGULAR VARIATION, OSCILLATIONS OF TEMPERATURE NOT PASSING THROUGH 0°C +67 67 VARIATION OF TEMPERATURE NOT OBSERVED +68 68 NOT ALLOCATED +69 69 VARIATION OF TEMPERATURE UNKNOWN OWING TO LACK OF THERMOGRAPH +70 70 VISIBILITY HAS NOT VARIED (SUN* VISIBLE) TOWARDS DIRECTION SPECIFIED +71 71 VISIBILITY HAS NOT VARIED (SUN* INVISIBLE) TOWARDS DIRECTION SPECIFIED +72 72 VISIBILITY HAS INCREASED (SUN* VISIBLE) TOWARDS DIRECTION SPECIFIED +73 73 VISIBILITY HAS INCREASED (SUN* INVISIBLE) TOWARDS DIRECTION SPECIFIED +74 74 VISIBILITY HAS DECREASED (SUN* VISIBLE) TOWARDS DIRECTION SPECIFIED +75 75 VISIBILITY HAS DECREASED (SUN* INVISIBLE) TOWARDS DIRECTION SPECIFIED +76 76 FOG COMING FROM DIRECTION SPECIFIED +77 77 FOG HAS LIFTED, WITHOUT DISSIPATING +78 78 FOG HAS DISPERSED WITHOUT REGARD TO DIRECTION +79 79 MOVING PATCHES OR BANKS OF FOG +80 80 BROCKEN SPECTRE +81 81 RAINBOW +82 82 SOLAR OR LUNAR HALO +83 83 PARHELIA OR ANTHELIA +84 84 SUN PILLAR +85 85 CORONA +86 86 TWILIGHT GLOW +87 87 TWILIGHT GLOW ON THE MOUNTAINS (ALPENGLüHEN) +88 88 MIRAGE +89 89 ZODIACAL LIGHT +90 90 ST ELMO'S FIRE +1023 1023 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2007.table b/definitions/bufr/tables/0/wmo/32/codetables/2007.table new file mode 100644 index 000000000..05b4c6bd1 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2007.table @@ -0,0 +1,11 @@ +0 0 RESERVED +1 1 SHAFT ENCODER FLOAT SYSTEM +2 2 ULTRASONIC +3 3 RADAR +4 4 PRESSURE (SINGLE TRANSDUCER) +5 5 PRESSURE (MULTIPLE TRANSDUCER) +6 6 PRESSURE (IN STILLING WELL) +7 7 BUBBLER PRESSURE +8 8 ACOUSTIC (WITH SOUNDING TUBE) +9 9 ACOUSTIC (IN OPEN AIR) +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20071.table b/definitions/bufr/tables/0/wmo/32/codetables/20071.table new file mode 100644 index 000000000..72367bf8b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20071.table @@ -0,0 +1,11 @@ +0 0 NO ASSESSMENT +1 1 LESS THAN 50 KM +2 2 BETWEEN 50 AND 200 KM +3 3 MORE THAN 200 KM +4 4 LESS THAN 50 KM +5 5 BETWEEN 50 AND 200 KM +6 6 MORE THAN 200 KM +7 7 LESS THAN 50 KM +8 8 BETWEEN 50 AND 200 KM +9 9 MORE THAN 200 KM +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2008.table b/definitions/bufr/tables/0/wmo/32/codetables/2008.table new file mode 100644 index 000000000..e669727ec --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2008.table @@ -0,0 +1,7 @@ +0 0 FIXED PLATFORM +1 1 MOBILE OFFSHORE DRILL SHIP +2 2 JACK-UP RIG +3 3 SEMI-SUBMERSIBLE PLATFORM +4 4 FLOATING PRODUCTION STORAGE AND OFFLOADING (FPSO) UNIT +5 5 LIGHT VESSEL +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20085.table b/definitions/bufr/tables/0/wmo/32/codetables/20085.table new file mode 100644 index 000000000..f929e878d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20085.table @@ -0,0 +1,3 @@ +0 0 CLEARED (CLRD//) +1 1 ALL RUNWAYS CLOSED (SNOCLO) +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20086.table b/definitions/bufr/tables/0/wmo/32/codetables/20086.table new file mode 100644 index 000000000..b5433303a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20086.table @@ -0,0 +1,11 @@ +0 0 CLEAR AND DRY +1 1 DAMP +2 2 WET WITH WATER PATCHES +3 3 RIME AND FROST COVERED (DEPTH NORMALLY LESS THAN 1 MM) +4 4 DRY SNOW +5 5 WET SNOW +6 6 SLUSH +7 7 ICE +8 8 COMPACTED OR ROLLED SNOW +9 9 FROZEN RUTS OR RIDGES +15 15 MISSING OR NOT REPORTED (E.G. DUE TO RUNWAY CLEARANCE IN PROGRESS) diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20087.table b/definitions/bufr/tables/0/wmo/32/codetables/20087.table new file mode 100644 index 000000000..ee7971ab6 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20087.table @@ -0,0 +1,6 @@ +0 0 RESERVED +1 1 LESS THAN 10% OF RUNWAY COVERED +2 2 11% TO 25% OF RUNWAY COVERED +5 5 26% TO 50% OF RUNWAY COVERED +9 9 51% TO 100% OF RUNWAY COVERED +15 15 MISSING OR NOT REPORTED (E.G. DUE TO RUNWAY CLEARANCE IN PROGRESS) diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20089.table b/definitions/bufr/tables/0/wmo/32/codetables/20089.table new file mode 100644 index 000000000..f616c622c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20089.table @@ -0,0 +1,11 @@ +0 0 0.00 +1 1 0.01 +89 89 0.89 +90 90 0.90 +91 91 BRAKING ACTION POOR +92 92 BRAKING ACTION MEDIUM TO POOR +93 93 BRAKING ACTION MEDIUM +94 94 BRAKING ACTION MEDIUM TO GOOD +95 95 BRAKING ACTION GOOD +99 99 UNRELIABLE +127 127 MISSING, NOT REPORTED AND/OR RUNWAY NOT OPERATIONAL diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20090.table b/definitions/bufr/tables/0/wmo/32/codetables/20090.table new file mode 100644 index 000000000..d13502ec4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20090.table @@ -0,0 +1,7 @@ +0 0 RESERVED +1 1 NACREOUS CLOUDS +2 2 NOCTILUCENT CLOUDS +3 3 CLOUDS FROM WATERFALLS +4 4 CLOUDS FROM FIRES +5 5 CLOUDS FROM VOLCANIC ERUPTIONS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20101.table b/definitions/bufr/tables/0/wmo/32/codetables/20101.table new file mode 100644 index 000000000..abe89f5fe --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20101.table @@ -0,0 +1,11 @@ +0 0 RESERVED +1 1 SCHISTOCERCA GREGARIA +2 2 LOCUSTA MIGRATORIA +3 3 NOMADACRIS SEPTEMFASCIATA +4 4 OEDALEUS SENEGALENSIS +5 5 ANRACRIDIUM SPP +6 6 OTHER LOCUSTS +7 7 OTHER GRASSHOPPERS +8 8 OTHER CRICKETS +9 9 SPODOPTERA EXEMPTA +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20102.table b/definitions/bufr/tables/0/wmo/32/codetables/20102.table new file mode 100644 index 000000000..6a53039e9 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20102.table @@ -0,0 +1,11 @@ +0 0 GREEN +1 1 GREEN OR BLACK +2 2 BLACK +3 3 YELLOW AND BLACK +4 4 STRAW/GREY +5 5 PINK +6 6 DARK RED/BROWN +7 7 MIXED RED AND YELLOW +8 8 YELLOW +9 9 OTHER +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20103.table b/definitions/bufr/tables/0/wmo/32/codetables/20103.table new file mode 100644 index 000000000..9c4f68920 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20103.table @@ -0,0 +1,11 @@ +0 0 HOPPERS (NYMPHS, LARVAE), STAGE 1 +1 1 HOPPERS (NYMPHS, LARVAE), STAGE 2 OR MIXED 1, 2 INSTARS (STAGES) +2 2 HOPPERS (NYMPHS, LARVAE), STAGE 3 OR MIXED 2, 3 INSTARS +3 3 HOPPERS (NYMPHS, LARVAE), STAGE 4 OR MIXED 3, 4 INSTARS +4 4 HOPPERS (NYMPHS, LARVAE), STAGE 5 OR MIXED 4, 5 INSTARS +5 5 HOPPERS (NYMPHS, LARVAE), STAGE MIXED, ALL OR MANY INSTARS +6 6 FLEDGLINGS (WINGS TOO SOFT FOR SUSTAINED FLIGHT) +7 7 IMMATURE ADULTS +8 8 MIXED MATURITY ADULTS +9 9 MATURE ADULTS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20104.table b/definitions/bufr/tables/0/wmo/32/codetables/20104.table new file mode 100644 index 000000000..15ca8acd4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20104.table @@ -0,0 +1,11 @@ +0 0 HOPPERS ONLY, MAINLY IN BANDS OR CLUSTERS +1 1 WINGED ADULTS IN THE VICINITY MORE THAN 10 KILOMETRES FROM POINT OF OBSERVATION +2 2 LOCUSTS IN FLIGHT, A FEW SEEN AT THE STATION +3 3 LOCUSTS AT THE STATION, MOST OF THEM ON THE GROUND +4 4 LOCUSTS, SOME ON GROUND AND OTHERS IN FLIGHT AT A HEIGHT LESS THAN 10 METRES +5 5 LOCUSTS, SOME ON GROUND AND OTHERS IN FLIGHT AT A HEIGHT GREATER THAN 10 METRES +6 6 LOCUSTS, MOST IN FLIGHT AT A HEIGHT LESS THAN 10 METRES +7 7 LOCUSTS, MOST IN FLIGHT AT A HEIGHT GREATER THAN 10 METRES +8 8 LOCUSTS, ALL OVER INFLICTING SEVERE DAMAGE TO VEGETATION, NO EXTERMINATION OPERATION +9 9 LOCUSTS, ALL OVER INFLICTING SEVERE DAMAGE TO VEGETATION, EXTERMINATION OPERATION IN PROGRESS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20105.table b/definitions/bufr/tables/0/wmo/32/codetables/20105.table new file mode 100644 index 000000000..b7406c09c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20105.table @@ -0,0 +1,12 @@ +0 0 SMALL SWARM LESS THAN 1 KM2 OR ADULTS IN GROUND, TENS OR HUNDREDS OF INDIVIDUALS VISIBLE SIMULTANEOUSLY, DURATION OF PASSAGE LESS THAN 1 HOUR AGO +1 1 SMALL SWARM LESS THAN 1 KM2 OR ADULTS IN GROUND, TENS OR HUNDREDS OF INDIVIDUALS VISIBLE SIMULTANEOUSLY, DURATION OF PASSAGE 1 TO 6 HOURS AGO +2 2 SMALL SWARM LESS THAN 1 KM2 OR ADULTS IN GROUND, TENS OR HUNDREDS OF INDIVIDUALS VISIBLE SIMULTANEOUSLY, DURATION OF PASSAGE OVER 6 HOURS AGO +3 3 MEDIUM SWARM OR SCATTERED ADULTS, SEVERAL VISIBLE SIMULTANEOUSLY, DURATION OF PASSAGE LESS THAN 1 HOUR AGO +4 4 MEDIUM SWARM OR SCATTERED ADULTS, SEVERAL VISIBLE SIMULTANEOUSLY, DURATION OF PASSAGE 1 TO 6 HOURS AGO +5 5 MEDIUM SWARM OR SCATTERED ADULTS, SEVERAL VISIBLE SIMULTANEOUSLY, DURATION OF PASSAGE OVER 6 HOURS AGO +6 6 LARGE SWARM OR ISOLATED ADULTS, SEEN SINGLY, DURATION OF PASSAGE LESS THAN 1 HOUR AGO +7 7 LARGE SWARM OR ISOLATED ADULTS, SEEN SINGLY, DURATION OF PASSAGE 1 TO 6 HOURS AGO +8 8 LARGE SWARM OR ISOLATED ADULTS, SEEN SINGLY, DURATION OF PASSAGE OVER 6 HOURS AGO +9 9 MORE THAN ONE SWARM OF LOCUSTS +10 10 SIZE OF SWARM AND/OR DURATION OF PASSAGE NOT DETERMINED OWING TO DARKNESS OR SIMILAR PHENOMENA +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20106.table b/definitions/bufr/tables/0/wmo/32/codetables/20106.table new file mode 100644 index 000000000..2a8c4a098 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20106.table @@ -0,0 +1,7 @@ +0 0 RESERVED +1 1 THIN DENSITY SWARM (SWARM VISIBLE ONLY WHEN NEAR ENOUGH FOR INDIVIDUAL LOCUSTS TO BE DISCERNED) +2 2 MEDIUM DENSITY SWARM +3 3 DENSE SWARM (OBSCURING NEARBY FEATURES, E.G. TREES) +4 4 ISOLATED HOPPERS SEEN SINGLY +5 5 SCATTERED HOPPERS, SEVERAL VISIBLE SIMULTANEOUSLY +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20107.table b/definitions/bufr/tables/0/wmo/32/codetables/20107.table new file mode 100644 index 000000000..0bea30ad5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20107.table @@ -0,0 +1,11 @@ +0 0 RESERVED +1 1 GENERALLY IN THE DIRECTION NE +2 2 GENERALLY IN THE DIRECTION E +3 3 GENERALLY IN THE DIRECTION SE +4 4 GENERALLY IN THE DIRECTION S +5 5 GENERALLY IN THE DIRECTION SW +6 6 GENERALLY IN THE DIRECTION W +7 7 GENERALLY IN THE DIRECTION NW +8 8 GENERALLY IN THE DIRECTION N +9 9 SPECIFIC DIRECTION INDETERMINABLE +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20108.table b/definitions/bufr/tables/0/wmo/32/codetables/20108.table new file mode 100644 index 000000000..4404614cb --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20108.table @@ -0,0 +1,9 @@ +0 0 BARE GROUND +1 1 DRY, PRESENCE OF FEW AND ISOLATED SHRUBS +2 2 SPARSE VEGETATION (SPROUTING) +3 3 DENSE VEGETATION (SPROUTING) +4 4 SPARSE VEGETATION (GROWING) +5 5 DENSE VEGETATION (GROWING) +6 6 SPARSE VEGETATION IN FLOWER +7 7 DENSE VEGETATION IN FLOWER +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2011.table b/definitions/bufr/tables/0/wmo/32/codetables/2011.table new file mode 100644 index 000000000..4be51a073 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2011.table @@ -0,0 +1,100 @@ +0 0 RESERVED +1 1 NOT VACANT +2 2 NO RADIOSONDE - PASSIVE TARGET (E.G. REFLECTOR) +3 3 NO RADIOSONDE - ACTIVE TARGET (E.G. TRANSPONDER) +4 4 NO RADIOSONDE - PASSIVE TEMPERATURE-HUMIDITY PROFILER +5 5 NO RADIOSONDE - ACTIVE TEMPERATURE-HUMIDITY PROFILER +6 6 NO RADIOSONDE - RADIO-ACOUSTIC SOUNDER +7 7 NOT VACANT +8 8 NO RADIOSONDE -... (RESERVED) +9 9 NO RADIOSONDE - SYSTEM UNKNOWN OR NOT SPECIFIED +10 10 SIPPICAN LMS5 W/CHIP THERMISTOR, DUCT MOUNTED CAPACITANCE RELATIVE HUMIDITY SENSOR AND DERIVED PRESSURE FROM GPS HEIGHT +11 11 SIPPICAN LMS6 W/CHIP THERMISTOR, EXTERNAL BOOM MOUNTED CAPACITANCE RELATIVE HUMIDITY SENSOR, AND DERIVED PRESSURE FROM GPS HEIGHT +12 12 JIN YANG RSG-20A WITH DERIVED PRESSURE FROM GPS HEIGHT/GL-5000P (REPUBLIC OF KOREA) +13 13 VAISALA RS92/MARWIN MW32 (FINLAND) +14 14 VAISALA RS92/DIGICORA MW41 (FINLAND) +15 15 PAZA-12M/RADIOTHEODOLITE-UL (UKRAINE) +16 16 PAZA-22/AVK-1 (UKRAINE) +17 17 GRAW DFM-09 (GERMANY) +18 18 NOT VACANT +19 19 POLUS-MRZ-N1 (RUSSIAN FEDERATION) +20 20 NOT VACANT +21 21 JIN YANG 1524LA LORAN-C/GL5000 (REPUBLIC OF KOREA) +22 22 MEISEI RS-11G GPS RADIOSONDE W/THERMISTOR, CAPACITANCE RELATIVE HUMIDITY SENSOR, AND DERIVED PRESSURE FROM GPS HEIGHT (JAPAN) +23 23 VAISALA RS41/DIGICORA MW41 (FINLAND) +24 24 VAISALA RS41/AUTOSONDE (FINLAND) +25 25 VAISALA RS41/MARWIN MW32 (FINLAND) +26 26 METEOLABOR SRS-C34/ARGUS 37 (SWITZERLAND) +27 27 NOT VACANT +28 28 AVK - AK2-02 (RUSSIAN FEDERATION) +29 29 MARL-A OR VEKTOR-M - AK2-02 (RUSSIAN FEDERATION) +30 30 MEISEI RS-06G (JAPAN) +31 31 TAIYUAN GTS1-1/GFE(L) (CHINA ) +32 32 SHANGHAI GTS1/GFE(L) (CHINA) +33 33 NANJING GTS1-2/GFE(L) (CHINA) +34 34 VACANT +35 35 MEISEI IMS-100 GPS RADIOSONDE W/THERMISTOR SENSOR, CAPACITANCE RELATIVE HUMIDITY SENSOR, AND DERIVED PRESSURE FROM GPS HEIGHT (JAPAN) +36 36 MEISEI IMDS-17 GPS DROPSONDE W/THERMISTOR SENSOR, CAPACITANCE RELATIVE HUMIDITY SENSOR, AND CAPACITANCE PRESSURE SENSOR (JAPAN) +37 37 NOT VACANT +38 38 VIZ LOCATE LORAN-C (UNITED STATES) +39 39 SPRENGER E076 (GERMANY) +40 40 SPRENGER E084 (GERMANY) +41 41 VAISALA RS41 WITH PRESSURE DERIVED FROM GPS HEIGHT/DIGICORA MW41 (FINLAND) +42 42 VAISALA RS41 WITH PRESSURE DERIVED FROM GPS HEIGHT/AUTOSONDE (FINLAND) +43 43 NANJING DAQIAO XGP-3G (CHINA)* +44 44 TIANJIN HUAYUNTIANYI GTS(U)1 (CHINA)* +45 45 BEIJING CHANGFENG CF-06 (CHINA)* +46 46 SHANGHAI CHANGWANG GTS3 (CHINA)* +47 47 NOT VACANT +48 48 PAZA-22M/MARL-A +49 49 NOT VACANT +50 50 METEOLABOR SRS-C50/ARGUS (SWITZERLAND) +51 51 NOT VACANT +52 52 VAISALA RS92-NGP/INTERMET IMS-2000 (UNITED STATES) +53 53 AVK - I-2012 (RUSSIAN FEDERATION) +54 54 GRAW DFM-17 (GERMANY) +55 55 MEISEI RS-01G (JAPAN) +56 56 M2K2 (FRANCE) +57 57 MODEM M2K2-DC (FRANCE) +58 58 AVK-BAR (RUSSIAN FEDERATION) +59 59 MODEM M2K2-R 1680 MHZ RDF RADIOSONDE WITH PRESSURE SENSOR CHIP (FRANCE) +60 60 MARL-A OR VEKTOR-M - I-2012 (RUSSIAN FEDERATION) +61 61 NOT VACANT +62 62 MARL-A OR VEKTOR-M - MRZ-3MK (RUSSIAN FEDERATION) +63 63 MODEM M20 RADIOSONDE W/THERMISTOR SENSOR, CAPACITANCE RELATIVE HUMIDITY SENSOR, AND DERIVED PRESSURE FROM GPS HEIGHT (FRANCE) +64 64 MODEM PILOTSONDE GPS RADIOSONDE (FRANCE) +65 65 VIZ TRANSPONDER RADIOSONDE, MODEL NUMBER 1499-520 (UNITED STATES) +66 66 VAISALA RS80 /AUTOSONDE (FINLAND) +67 67 VAISALA RS80/DIGICORA III (FINLAND) +68 68 AVK-RZM-2 (RUSSIAN FEDERATION) +69 69 MARL-A OR VEKTOR-M-RZM-2 (RUSSIAN FEDERATION) +70 70 VAISALA RS92/STAR (FINLAND) +71 71 VAISALA RS90/LORAN/DIGICORA I, II OR MARWIN (FINLAND) +72 72 VAISALA RS90/PC-CORA (FINLAND) +73 73 VAISALA RS90/AUTOSONDE (FINLAND) +74 74 VAISALA RS90/STAR (FINLAND) +75 75 AVK-MRZ-ARMA (RUSSIAN FEDERATION) +76 76 AVK-RF95-ARMA (RUSSIAN FEDERATION) +77 77 MODEM GPSONDE M10 (FRANCE) +78 78 VAISALA RS90/DIGICORA III (FINLAND) +79 79 VAISALA RS92/DIGICORA I,II OR MARWIN (FINLAND) +80 80 VAISALA RS92/DIGICORA III (FINLAND) +81 81 VAISALA RS92/AUTOSONDE (FINLAND) +82 82 LOCKHEED MARTIN LMS-6 W/CHIP THERMISTOR; EXTERNAL BOOM MOUNTED POLYMER CAPACITIVE RELATIVE HUMIDITY SENSOR; CAPACITIVE PRESSURE SENSOR AND GPS WIND +83 83 VAISALA RS92-D/INTERMET IMS 1500 W/SILICON CAPACITIVE PRESSURE SENSOR, CAPACITIVE WIRE TEMPERATURE SENSOR, TWIN THIN-FILM HEATED POLYMER CAPACITIVE RELATIVE HUMIDITY SENSOR AND RDF WIND +84 84 VACANT +85 85 SIPPICAN MARK IIA WITH CHIP THERMISTOR, CARBON ELEMENT AND DERIVED PRESSURE FROM GPS HEIGHT +86 86 SIPPICAN MARK II WITH CHIP THERMISTOR, PRESSURE AND CARBON ELEMENT +87 87 SIPPICAN MARK IIA WITH CHIP THERMISTOR, PRESSURE AND CARBON ELEMENT +88 88 MARL-A OR VEKTOR-M-MRZ (RUSSIAN FEDERATION) +89 89 MARL-A OR VEKTOR-M-BAR (RUSSIAN FEDERATION) +90 90 RADIOSONDE NOT SPECIFIED OR UNKNOWN +91 91 PRESSURE ONLY RADIOSONDE +92 92 PRESSURE ONLY RADIOSONDE PLUS TRANSPONDER +93 93 PRESSURE ONLY RADIOSONDE PLUS RADAR REFLECTOR +94 94 NO PRESSURE RADIOSONDE PLUS TRANSPONDER +95 95 NO PRESSURE RADIOSONDE PLUS RADAR REFLECTOR +96 96 DESCENDING RADIOSONDE +97 97 IMET-2/IMET-1500 RDF RADIOSONDE WITH PRESSURE SENSOR CHIP (SOUTH AFRICA) +98 98 IMET-2/IMET-1500 GPS RADIOSONDE WITH DERIVED PRESSURE FROM GPS HEIGHT (SOUTH AFRICA) +99 99 IMET-2/IMET-3200 GPS RADIOSONDE WITH DERIVED PRESSURE FROM GPS HEIGHT (SOUTH AFRICA) diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20119.table b/definitions/bufr/tables/0/wmo/32/codetables/20119.table new file mode 100644 index 000000000..4a4b40f87 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20119.table @@ -0,0 +1,4 @@ +0 0 NOT DEFINED +1 1 POSITIVE +2 2 NEGATIVE +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20124.table b/definitions/bufr/tables/0/wmo/32/codetables/20124.table new file mode 100644 index 000000000..f78eacb17 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20124.table @@ -0,0 +1,4 @@ +0 0 NOT DEFINED +1 1 LIGHTNING STROKE +2 2 LIGHTNING FLASH, BY MANUAL OBSERVATION, OR IF EQUIPMENT INSENSITIVE TO STROKE RESOLUTION +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2013.table b/definitions/bufr/tables/0/wmo/32/codetables/2013.table new file mode 100644 index 000000000..91ce6501d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2013.table @@ -0,0 +1,11 @@ +0 0 NO CORRECTION +1 1 CIMO SOLAR CORRECTED AND CIMO INFRARED CORRECTED +2 2 CIMO SOLAR CORRECTED AND INFRARED CORRECTED +3 3 CIMO SOLAR CORRECTED ONLY +4 4 SOLAR AND INFRARED CORRECTED AUTOMATICALLY BY RADIOSONDE SYSTEM +5 5 SOLAR CORRECTED AUTOMATICALLY BY RADIOSONDE SYSTEM +6 6 SOLAR AND INFRARED CORRECTED AS SPECIFIED BY COUNTRY +7 7 SOLAR CORRECTED AS SPECIFIED BY COUNTRY +8 8 SOLAR AND INFRARED CORRECTED AS SPECIFIED BY GRUAN +9 9 SOLAR CORRECTED AS SPECIFIED BY GRUAN +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20136.table b/definitions/bufr/tables/0/wmo/32/codetables/20136.table new file mode 100644 index 000000000..0369f5de7 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20136.table @@ -0,0 +1,44 @@ +0 0 ISOLATED CUMULUS HUMILIS AND/OR CUMULUS MEDIOCRIS OF VERTICAL DEVELOPMENT +1 1 NUMEROUS CUMULUS HUMILIS AND/OR CUMULUS MEDIOCRIS OF VERTICAL DEVELOPMENT +2 2 ISOLATED CUMULUS CONGESTUS OF VERTICAL DEVELOPMENT +3 3 NUMEROUS CUMULUS CONGESTUS OF VERTICAL DEVELOPMENT +4 4 ISOLATED CUMULONIMBUS OF VERTICAL DEVELOPMENT +5 5 NUMEROUS CUMULONIMBUS OF VERTICAL DEVELOPMENT +6 6 ISOLATED CUMULUS AND CUMULONIMBUS OF VERTICAL DEVELOPMENT +7 7 NUMEROUS CUMULUS AND CUMULONIMBUS OF VERTICAL DEVELOPMENT +10 10 RESERVED +11 11 ISOLATED OROGRAPHIC CLOUDS, PILEUS, INCUS, FORMING +12 12 ISOLATED OROGRAPHIC CLOUDS, PILEUS, INCUS, NOT CHANGING +13 13 ISOLATED OROGRAPHIC CLOUDS, PILEUS, INCUS, DISSOLVING +14 14 IRREGULAR BANKS OF OROGRAPHIC CLOUD, FöHN BANK, ETC., FORMING +15 15 IRREGULAR BANKS OF OROGRAPHIC CLOUD, FöHN BANK, ETC., NOT CHANGING +16 16 IRREGULAR BANKS OF OROGRAPHIC CLOUD, FöHN BANK, ETC., DISSOLVING +17 17 COMPACT LAYER OF OROGRAPHIC CLOUD, FöHN BANK, ETC., FORMING +18 18 COMPACT LAYER OF OROGRAPHIC CLOUD, FöHN BANK, ETC., NOT CHANGING +19 19 COMPACT LAYER OF OROGRAPHIC CLOUD, FöHN BANK, ETC., DISSOLVING +20 20 ALL MOUNTAINS OPEN, ONLY SMALL AMOUNTS OF CLOUD PRESENT +21 21 MOUNTAINS PARTLY COVERED WITH DETACHED CLOUDS (NOT MORE THAN HALF THE PEAKS CAN BE SEEN) +22 22 ALL MOUNTAIN SLOPES COVERED, PEAKS AND PASSES FREE +23 23 MOUNTAINS OPEN ON OBSERVER’S SIDE (ONLY SMALL AMOUNTS OF CLOUD PRESENT), BUT A CONTINUOUS WALL OF CLOUD ON THE OTHER SIDE +24 24 CLOUDS LOW ABOVE THE MOUNTAINS, BUT ALL SLOPES AND MOUNTAINS OPEN (ONLY SMALL AMOUNTS OF CLOUD ON THE SLOPES) +25 25 CLOUDS LOW ABOVE THE MOUNTAINS, PEAKS PARTLY COVERED BY PRECIPITATION TRAILS OR CLOUDS +26 26 ALL PEAKS COVERED BUT PASSES OPEN, SLOPES EITHER OPEN OR COVERED +27 27 MOUNTAINS GENERALLY COVERED BUT SOME PEAKS FREE, SLOPES WHOLLY OR PARTIALLY COVERED +28 28 ALL PEAKS, PASSES AND SLOPES COVERED +29 29 MOUNTAINS CANNOT BE SEEN OWING TO DARKNESS, FOG, SNOWSTORM, PRECIPITATION, ETC. +35 35 NON-PERSISTENT CONDENSATION TRAILS +36 36 PERSISTENT CONDENSATION TRAILS COVERING LESS THAN 1/8 OF THE SKY +37 37 PERSISTENT CONDENSATION TRAILS COVERING 1/8 OF THE SKY +38 38 PERSISTENT CONDENSATION TRAILS COVERING 2/8 OF THE SKY +39 39 PERSISTENT CONDENSATION TRAILS COVERING 3/8 OR MORE OF THE SKY +40 40 NO CLOUD OR MIST OBSERVED FROM A HIGHER LEVEL +41 41 MIST, CLEAR ABOVE OBSERVED FROM A HIGHER LEVEL +42 42 FOG PATCHES OBSERVED FROM A HIGHER LEVEL +43 43 LAYER OF SLIGHT FOG OBSERVED FROM A HIGHER LEVEL +44 44 LAYER OF THICK FOG OBSERVED FROM A HIGHER LEVEL +45 45 SOME ISOLATED CLOUDS OBSERVED FROM A HIGHER LEVEL +46 46 ISOLATED CLOUDS AND FOG BELOW OBSERVED FROM A HIGHER LEVEL +47 47 MANY ISOLATED CLOUDS OBSERVED FROM A HIGHER LEVEL +48 48 SEA OF CLOUDS OBSERVED FROM A HIGHER LEVEL +49 49 BAD VISIBILITY OBSCURING THE DOWNWARD VIEW OBSERVED FROM A HIGHER LEVEL +511 511 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20137.table b/definitions/bufr/tables/0/wmo/32/codetables/20137.table new file mode 100644 index 000000000..adda88054 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20137.table @@ -0,0 +1,11 @@ +0 0 NO CHANGE +1 1 CUMULIFICATION +2 2 SLOW ELEVATION +3 3 RAPID ELEVATION +4 4 ELEVATION AND STRATIFICATION +5 5 SLOW LOWERING +6 6 RAPID LOWERING +7 7 STRATIFICATION +8 8 STRATIFICATION AND LOWERING +9 9 RAPID CHANGE +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/20138.table b/definitions/bufr/tables/0/wmo/32/codetables/20138.table new file mode 100644 index 000000000..ed9b315fc --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/20138.table @@ -0,0 +1,9 @@ +0 0 DRY +1 1 MOIST +2 2 WET +3 3 RIME +4 4 SNOW +5 5 ICE +6 6 GLAZE +7 7 NOT DRY +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2014.table b/definitions/bufr/tables/0/wmo/32/codetables/2014.table new file mode 100644 index 000000000..bc5c5fcb8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2014.table @@ -0,0 +1,51 @@ +0 0 NO WIND FINDING +1 1 AUTOMATIC WITH AUXILIARY OPTICAL DIRECTION FINDING +2 2 AUTOMATIC WITH AUXILIARY RADIO DIRECTION FINDING +3 3 AUTOMATIC WITH AUXILIARY RANGING +4 4 NOT USED +5 5 AUTOMATIC WITH MULTIPLE VLF-OMEGA SIGNALS +6 6 AUTOMATIC CROSS CHAIN LORAN-C +7 7 AUTOMATIC WITH AUXILIARY WIND PROFILER +8 8 AUTOMATIC SATELLITE NAVIGATION +19 19 TRACKING TECHNIQUE NOT SPECIFIED +20 20 VESSEL STOPPED +21 21 VESSEL DIVERTED FROM ORIGINAL DESTINATION +22 22 VESSEL'S ARRIVAL DELAYED +23 23 CONTAINER DAMAGED +24 24 POWER FAILURE TO CONTAINER +29 29 OTHER PROBLEMS +30 30 MAJOR POWER PROBLEMS +31 31 UPS INOPERATIVE +32 32 RECEIVER HARDWARE PROBLEMS +33 33 RECEIVER SOFTWARE PROBLEMS +34 34 PROCESSOR HARDWARE PROBLEMS +35 35 PROCESSOR SOFTWARE PROBLEMS +36 36 NAVAID SYSTEM DAMAGED +37 37 SHORTAGE OF LIFTING GAS +38 38 RESERVED +39 39 OTHER PROBLEMS +40 40 MECHANICAL DEFECT +41 41 MATERIAL DEFECT (HAND LAUNCHER) +42 42 POWER FAILURE +43 43 CONTROL FAILURE +44 44 PNEUMATIC/HYDRAULIC FAILURE +45 45 OTHER PROBLEMS +46 46 COMPRESSOR PROBLEMS +47 47 BALLOON PROBLEMS +48 48 BALLOON RELEASE PROBLEMS +49 49 LAUNCHER DAMAGED +50 50 R/S RECEIVER ANTENNA DEFECT +51 51 NAVAID ANTENNA DEFECT +52 52 R/S RECEIVER CABLING (ANTENNA) DEFECT +53 53 NAVAID ANTENNA CABLING DEFECT +59 59 OTHER PROBLEMS +60 60 ASAP COMMUNICATIONS DEFECT +61 61 COMMUNICATIONS FACILITY REJECTED DATA +62 62 NO POWER AT TRANSMITTING ANTENNA +63 63 ANTENNA CABLE BROKEN +64 64 ANTENNA CABLE DEFECT +65 65 MESSAGE TRANSMITTED POWER BELOW NORMAL +69 69 OTHER PROBLEMS +70 70 ALL SYSTEMS IN NORMAL OPERATION +99 99 STATUS OF SYSTEM AND ITS COMPONENTS NOT SPECIFIED +127 127 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2015.table b/definitions/bufr/tables/0/wmo/32/codetables/2015.table new file mode 100644 index 000000000..7b0ccaf86 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2015.table @@ -0,0 +1,7 @@ +0 0 RESERVED +1 1 PRESSURE ONLY RADIOSONDE +2 2 PRESSURE ONLY RADIOSONDE PLUS TRANSPONDER +3 3 PRESSURE ONLY RADIOSONDE PLUS RADAR REFLECTOR +4 4 NO-PRESSURE RADIOSONDE PLUS TRANSPONDER +5 5 NO-PRESSURE RADIOSONDE PLUS RADAR REFLECTOR +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2016.table b/definitions/bufr/tables/0/wmo/32/codetables/2016.table new file mode 100644 index 000000000..4a3022611 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2016.table @@ -0,0 +1,4 @@ +1 1 TRAIN REGULATOR +2 2 LIGHT UNIT +3 3 PARACHUTE +4 4 ROOFTOP RELEASE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2017.table b/definitions/bufr/tables/0/wmo/32/codetables/2017.table new file mode 100644 index 000000000..7fac2e10f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2017.table @@ -0,0 +1,6 @@ +0 0 NO CORRECTIONS +1 1 TIME LAG CORRECTION PROVIDED BY THE MANUFACTURER +2 2 SOLAR RADIATION CORRECTION PROVIDED BY THE MANUFACTURER +3 3 SOLAR RADIATION AND TIME LAG CORRECTION PROVIDED BY THE MANUFACTURER +7 7 GRUAN SOLAR RADIATION AND TIME LAG CORRECTION +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2019.table b/definitions/bufr/tables/0/wmo/32/codetables/2019.table new file mode 100644 index 000000000..2f1e865cd --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2019.table @@ -0,0 +1,346 @@ +10 10 AATSR +11 11 ATSR +12 12 ATSR-2 +13 13 MWR +30 30 ARGOS +40 40 LASER REFLECTORS +41 41 DORIS +42 42 DORIS-NG +47 47 POSEIDON-1 (SSALT1) +48 48 POSEIDON-2 (SSALT2) +49 49 POSEIDON-3 (SSALT3) +50 50 ATSR/M +51 51 HRG +52 52 HRV +53 53 HRVIR +54 54 SCARAB/MV2 +55 55 POLDER +56 56 IIR +60 60 VEGETATION +61 61 WINDII +62 62 ALTIKA +80 80 RADARSAT DTT +81 81 RADARSAT TTC +85 85 SAR (CSA) +90 90 MOPITT +91 91 OSIRIS +92 92 ACE-FTS +97 97 PANCHROMATIC IMAGER +98 98 GPS RECEIVER +102 102 CHAMP GPS SOUNDER +103 103 IGOR +104 104 TRI-G +116 116 CHAMP GRAVITY PACKAGE (ACCELEROMETER+GPS) +117 117 CHAMP MAGNETOMETRY PACKAGE (1 SCALAR+2 VECTOR MAGNETOMETER) +120 120 ENVISAT COMMS +121 121 ERS COMMS +130 130 ALADIN +131 131 ATLID +140 140 AMI/SAR/IMAGE +141 141 AMI/SAR/WAVE +142 142 AMI/SCATTEROMETER +143 143 ASAR +144 144 ASAR +145 145 ASAR +146 146 CPR +147 147 RA-2/MWR +148 148 RA/MWR +150 150 SCATTEROMETER +151 151 SAR-C +152 152 SW +161 161 MIPAS +162 162 MWR-2 +163 163 SOPRANO +170 170 GOME +172 172 GOMOS +174 174 MERIS +175 175 SCIAMACHY +176 176 MIRAS +177 177 SIRAL +178 178 SRAL +179 179 OLCI +180 180 SLSTR +181 181 METEOSAT COMMS +182 182 MSG COMMS +190 190 ASCAT +200 200 GERB +202 202 GRAS +203 203 MHS +205 205 MVIRI +207 207 SEVIRI +208 208 VIRI +220 220 GOME-2 +221 221 IASI +240 240 DCP +245 245 CCD +246 246 HSB +248 248 OBA +250 250 WFI +255 255 IRMSS +260 260 BSS & FSS TRANSPONDERS +261 261 DRT-S&R +262 262 INSAT COMMS +268 268 HR-PAN +269 269 MSMR +270 270 VHRR +271 271 WIFS +275 275 AWIFS +276 276 LISS-I +277 277 LISS-II +278 278 LISS-III +279 279 LISS-IV +284 284 PAN +285 285 MOS +286 286 OCM +287 287 ROSA +288 288 SCAT +289 289 IMG +290 290 MTSAT COMMS +291 291 HIMAWARI COMMS +294 294 JAMI +295 295 IMAGER/MTSAT-2 +296 296 VISSR +297 297 AHI +300 300 GLAS +301 301 LRA +302 302 MBLA +303 303 CALIOP +309 309 CPR (CLOUDSAT) +312 312 NSCAT +313 313 SEAWINDS +314 314 RAPIDSCAT +330 330 ACRIM +334 334 BUV +336 336 ALI +347 347 ASTER +348 348 CERES-2 +351 351 GPSDR +353 353 HIRDLS +354 354 HRDI +356 356 LIS +358 358 PEM +359 359 SEAWIFS +360 360 SUSIM (UARS) +363 363 SBUV/1 +365 365 TMI +366 366 JMR +367 367 AMR +369 369 LIMS +370 370 LRIR +371 371 EPIC +372 372 NISTAR +373 373 PLASMA-MAG +374 374 XPS +375 375 VIRS +376 376 POLDER II +377 377 TIM +379 379 WFC +382 382 CLAES +383 383 HALOE +384 384 ISAMS +385 385 MISR +386 386 MLS +387 387 MLS (EOS-AURA) +389 389 MODIS +393 393 HAIRS +394 394 OMI +395 395 ATMOSPHERIC CORRECTOR +396 396 HYPERION +399 399 SAGE I +400 400 SAGE II +401 401 SAGE III +402 402 SAMS +403 403 SAM-II +404 404 IRIS +405 405 GIFTS +420 420 AIRS +426 426 SOLSTICE +430 430 TES +431 431 TOMS +432 432 OCO +450 450 ADEOS COMMS +451 451 DCS (JAXA) +453 453 GMS COMMS +454 454 JERS-1 COMMS +460 460 RIS +461 461 PR +462 462 SAR +470 470 PALSAR +478 478 AMSR2 +479 479 AMSR-E +480 480 PRISM (ALOS) +481 481 AMSR +482 482 AVNIR +483 483 AVNIR-2 +484 484 GLI +485 485 MESSR +486 486 MSR +487 487 OCTS +488 488 OPS +489 489 VISSR (GMS-5) +490 490 VTIR +510 510 ILAS-I +511 511 ILAS-II +512 512 IMG +514 514 SEM +515 515 SOFIS +516 516 TANSO-FTS +517 517 TANSO-CAI +518 518 DPR +519 519 GMI +530 530 SGNOS-A +531 531 SGNOS-B +532 532 SGNOS-C +533 533 SGNOS-D +540 540 DCS (NOAA) +541 541 GOES COMMS +542 542 LANDSAT COMMS +543 543 NOAA COMMS +544 544 S&R (GOES) +545 545 S&R (NOAA) +546 546 WEFAX +547 547 SEM (GOES) +550 550 SSM +551 551 SSJ/4 +552 552 SSIES-2 +553 553 SSB/X-2 +570 570 AMSU-A +574 574 AMSU-B +580 580 ATOVS (HIRS/3 + AMSU + AVHRR/3) +590 590 AVHRR/2 +591 591 AVHRR/3 +592 592 AVHRR/4 +600 600 ERBE +601 601 ETM+ +604 604 HIRS/1 +605 605 HIRS/2 +606 606 HIRS/3 +607 607 HIRS/4 +615 615 IMAGER +616 616 VIIRS +617 617 ABI +618 618 GLM +620 620 CRIRS/NP +621 621 ATMS +622 622 MSS +623 623 MSU +624 624 SBUV/2 +625 625 SBUV/3 +626 626 SOUNDER +627 627 SSU +628 628 TM +629 629 TOVS (HIRS/2 + MSU + SSU) +630 630 VAS +631 631 SSZ +645 645 SEM +650 650 MVIRSR (10 CHANNEL) +651 651 MVIRSR (3 CHANNEL) +652 652 MVIRSR (5 CHANNEL) +670 670 RLSBO +680 680 MSU-EU +681 681 MSU-UM +682 682 RM-08 +683 683 SU-UMS +684 684 SU-VR +685 685 TRASSER +686 686 SCAT +687 687 ALT +688 688 MWI +700 700 KONDOR-2 +701 701 BRK +710 710 ALISSA +712 712 BALKAN-2 LIDAR +715 715 MK-4 +716 716 MK-4M +730 730 GREBEN +731 731 SAR-10 +732 732 SAR-3 +733 733 SAR-70 +740 740 SLR-3 +745 745 TRAVERS SAR +750 750 174-K +751 751 BTVK +752 752 CHAIKA +753 753 DELTA-2 +755 755 IKAR-D +756 756 IKAR-N +757 757 IKAR-P +760 760 ISP +761 761 KFA-1000 +762 762 KFA-200 +763 763 KFA-3000 +770 770 KLIMAT +771 771 KLIMAT-2 +775 775 MIRAS +776 776 MIVZA +777 777 MIVZA-M +780 780 MR-2000 +781 781 MR-2000M +785 785 MR-900 +786 786 MR-900B +790 790 MSU-E +791 791 MSU-E1 +792 792 MSU-E2 +793 793 MSU-M +794 794 MSU-S +795 795 MSU-SK +796 796 MSU-V +810 810 MTZA +815 815 MZOAS +820 820 R-225 +821 821 R-400 +822 822 R-600 +830 830 RMS +835 835 TV CAMERA +836 836 SILVA +840 840 SROSMO +850 850 BUFS-2 +851 851 BUFS-4 +855 855 ISTOK-1 +856 856 SFM-2 +857 857 DOPI +858 858 KGI-4 +859 859 OZON-M +860 860 RMK-2 +900 900 MAXIE +901 901 OLS +905 905 SSM/I +906 906 SSM/T-1 +907 907 SSM/T-2 +908 908 SSMIS +910 910 SXI +930 930 EHIC +931 931 X-RAY ASTRONOMY PAYLOAD +932 932 IVISSR (FY-2) +933 933 IRAS +934 934 MWAS +935 935 IMWAS +936 936 MWHS +937 937 MVIRS +938 938 MWRI +940 940 MTVZA-OK +941 941 SAPHIR +942 942 MADRAS +943 943 SCAT (ON CFOSAT) +944 944 ALT +945 945 TSIS +946 946 CMIS +947 947 OMPS +948 948 GPSOS +949 949 SESS +950 950 VIRR +951 951 TOM +952 952 OP +953 953 MWHS-2 +954 954 MWTS-2 +955 955 HIRAS +956 956 SBUS +957 957 TOU +958 958 GNOS +959 959 SMR +960 960 +961 961 AGRI +962 962 GIIRS +963 963 LMI +964 964 SEP +2047 2047 diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2020.table b/definitions/bufr/tables/0/wmo/32/codetables/2020.table new file mode 100644 index 000000000..1f70013d3 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2020.table @@ -0,0 +1,32 @@ +0 0 NIMBUS +1 1 VTPR +2 2 TIROS 1 (TIROS, NOAA-6 TO NOAA-13) +3 3 TIROS 2 (NOAA-14 ONWARDS) +10 10 EOS +20 20 GPM-CORE +31 31 DMSP +61 61 EUMETSAT POLAR SYSTEM (EPS) +91 91 ERS +92 92 SENTINEL-3 +121 121 ADEOS +122 122 GCOM +241 241 GOES +261 261 JASON +271 271 GMS +272 272 MTSAT +273 273 HIMAWARI +281 281 COMS +301 301 INSAT +331 331 METEOSAT OPERATIONAL PROGRAMME (MOP) +332 332 METEOSAT TRANSITIONAL PROGRAMME (MTP) +333 333 METEOSAT SECOND GENERATION PROGRAMME (MSG) +351 351 GOMS +380 380 FY-1 +381 381 FY-2 +382 382 FY-3 +383 383 FY-4 +401 401 GPS +402 402 GLONASS +403 403 GALILEO +404 404 BDS (BEIDOU NAVIGATION SATELLITE SYSTEM) +511 511 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2021.table b/definitions/bufr/tables/0/wmo/32/codetables/2021.table new file mode 100644 index 000000000..b95fdc989 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2021.table @@ -0,0 +1,8 @@ +1 1 HIGH-RESOLUTION INFRARED SOUNDER (HIRS) +2 2 MICROWAVE SOUNDING UNIT (MSU) +3 3 STRATOSPHERIC SOUNDING UNIT (SSU) +4 4 AMI (ADVANCED MICROWAVE INSTRUMENT) WIND MODE +5 5 AMI (ADVANCED MICROWAVE INSTRUMENT) WAVE MODE +6 6 AMI (ADVANCED MICROWAVE INSTRUMENT) IMAGE MODE +7 7 RADAR ALTIMETER +8 8 ATSR (ALONG-TRACK SCANNING RADIOMETER) diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2022.table b/definitions/bufr/tables/0/wmo/32/codetables/2022.table new file mode 100644 index 000000000..5068e7fd7 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2022.table @@ -0,0 +1,5 @@ +1 1 PROCESSING TECHNIQUE NOT DEFINED +2 2 AUTOMATED STATISTICAL REGRESSION +3 3 CLEAR PATH +4 4 PARTLY CLOUDY PATH +5 5 CLOUDY PATH diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2023.table b/definitions/bufr/tables/0/wmo/32/codetables/2023.table new file mode 100644 index 000000000..be7eb84e4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2023.table @@ -0,0 +1,11 @@ +0 0 RESERVED +1 1 WIND DERIVED FROM CLOUD MOTION OBSERVED IN THE INFRARED CHANNEL +2 2 WIND DERIVED FROM CLOUD MOTION OBSERVED IN THE VISIBLE CHANNEL +3 3 WIND DERIVED FROM CLOUD MOTION OBSERVED IN THE WATER VAPOUR CHANNEL +4 4 WIND DERIVED FROM MOTION OBSERVED IN A COMBINATION OF SPECTRAL CHANNELS +5 5 WIND DERIVED FROM MOTION OBSERVED IN THE WATER VAPOUR CHANNEL IN CLEAR AIR +6 6 WIND DERIVED FROM MOTION OBSERVED IN THE OZONE CHANNEL +7 7 WIND DERIVED FROM MOTION OBSERVED IN WATER VAPOUR CHANNEL (CLOUD OR CLEAR AIR NOT SPECIFIED) +13 13 ROOT-MEAN-SQUARE +14 14 RESERVED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2024.table b/definitions/bufr/tables/0/wmo/32/codetables/2024.table new file mode 100644 index 000000000..00ec80ef6 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2024.table @@ -0,0 +1,4 @@ +0 0 RESERVED +1 1 TABLE WITH FULL RANGE OF HUMIDITY VARIATION IN LAYER +2 2 REGRESSION TECHNIQUE ON 2 HUMIDITY VALUES IN LAYER +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2025.table b/definitions/bufr/tables/0/wmo/32/codetables/2025.table new file mode 100644 index 000000000..64dc01875 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2025.table @@ -0,0 +1,16 @@ +1 1 RESERVED +2 2 HIRS +3 3 MSU +6 6 HIRS +7 7 MSU +10 10 HIRS (1, 2, 3, 8, 9, 16, 17) +11 11 HIRS (1, 2, 3, 9, 17) +12 12 MSU +15 15 HIRS +16 16 HIRS +17 17 MSU +18 18 SKINTK (OCEAN ONLY) +21 21 HIRS +22 22 SSU +23 23 MSU (3, 4) +24 24 RESERVED diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2030.table b/definitions/bufr/tables/0/wmo/32/codetables/2030.table new file mode 100644 index 000000000..2777bbcd3 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2030.table @@ -0,0 +1,8 @@ +0 0 RESERVED +1 1 ADCP (ACOUSTIC DOPPLER CURRENT PROFILER) +2 2 GEK (GEOMAGNETIC ELECTROKINETOGRAPH) +3 3 SHIP'S SET AND DRIFT DETERMINED BY FIXES 3-6 HOURS APART +4 4 SHIP'S SET AND DRIFT DETERMINED BY FIXES MORE THAN 6 HOURS BUT LESS THAN 12 HOURS APART +5 5 DRIFT OF BUOY +6 6 ADCP (ACOUSTIC DOPPLER CURRENT PROFILER) +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2031.table b/definitions/bufr/tables/0/wmo/32/codetables/2031.table new file mode 100644 index 000000000..c096d370c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2031.table @@ -0,0 +1,21 @@ +0 0 RESERVED +1 1 INSTANTANEOUS +2 2 AVERAGED OVER 3 MIN OR LESS +3 3 AVERAGED OVER MORE THAN 3 MIN, BUT 6 MIN AT THE MOST +4 4 AVERAGED OVER MORE THAN 6 MIN, BUT 12 MIN AT THE MOST +5 5 INSTANTANEOUS +6 6 AVERAGED OVER 3 MIN OR LESS +7 7 AVERAGED OVER MORE THAN 3 MIN, BUT 6 MIN AT THE MOST +8 8 AVERAGED OVER MORE THAN 6 MIN, BUT 12 MIN AT THE MOST +9 9 VECTOR OR DOPPLER CURRENT PROFILING METHOD NOT USED +10 10 RESERVED +11 11 1 HOUR OR LESS +12 12 MORE THAN 1 HOUR BUT 2 HOURS AT THE MOST +13 13 MORE THAN 2 HOURS BUT 4 HOURS AT THE MOST +14 14 MORE THAN 4 HOURS BUT 8 HOURS AT THE MOST +15 15 MORE THAN 8 HOURS BUT 12 HOURS AT THE MOST +16 16 MORE THAN 12 HOURS BUT 18 HOURS AT THE MOST +17 17 MORE THAN 18 HOURS BUT 24 HOURS AT THE MOST +18 18 RESERVED +19 19 DRIFT METHOD NOT USED +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2032.table b/definitions/bufr/tables/0/wmo/32/codetables/2032.table new file mode 100644 index 000000000..7e9310db0 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2032.table @@ -0,0 +1,4 @@ +0 0 VALUES AT SELECTED DEPTHS (DATA POINTS FIXED BY THE INSTRUMENT OR SELECTED BY ANY OTHER METHOD) +1 1 VALUES AT SELECTED DEPTHS (DATA POINTS TAKEN FROM TRACES AT SIGNIFICANT DEPTHS) +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2033.table b/definitions/bufr/tables/0/wmo/32/codetables/2033.table new file mode 100644 index 000000000..8215be095 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2033.table @@ -0,0 +1,5 @@ +0 0 NO SALINITY MEASURED +1 1 IN SITU SENSOR, ACCURACY BETTER THAN 0.02 ‰ +2 2 IN SITU SENSOR, ACCURACY LESS THAN 0.02 ‰ +3 3 SAMPLE ANALYSIS +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2034.table b/definitions/bufr/tables/0/wmo/32/codetables/2034.table new file mode 100644 index 000000000..06cdd52d2 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2034.table @@ -0,0 +1,7 @@ +0 0 UNSPECIFIED DROGUE +1 1 HOLEY SOCK +2 2 TRISTAR +3 3 WINDOW SHADE +4 4 PARACHUTE +5 5 NON-LAGRANGIAN SEA ANCHOR +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2036.table b/definitions/bufr/tables/0/wmo/32/codetables/2036.table new file mode 100644 index 000000000..7782d302a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2036.table @@ -0,0 +1,4 @@ +0 0 DRIFTING BUOY +1 1 FIXED BUOY +2 2 SUBSURFACE FLOAT (MOVING) +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2037.table b/definitions/bufr/tables/0/wmo/32/codetables/2037.table new file mode 100644 index 000000000..729c40e63 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2037.table @@ -0,0 +1,8 @@ +0 0 RESERVED +1 1 MANUAL READING FROM VERTICAL TIDE STAFF +2 2 MANUAL READING FROM SINGLE AUTOMATIC RECORDER AT STATION +3 3 MANUAL READING FROM MULTIPLE AUTOMATIC RECORDERS AT STATION +4 4 AUTOMATIC READING FROM SINGLE AUTOMATIC RECORDER AT STATION WITHOUT LEVEL REFERENCE CHECK +5 5 AUTOMATIC READING FROM SINGLE AUTOMATIC RECORDER AT STATION WITH LEVEL REFERENCE CHECK, OR FROM MULTIPLE AUTOMATIC RECORDERS +6 6 RESERVED +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2038.table b/definitions/bufr/tables/0/wmo/32/codetables/2038.table new file mode 100644 index 000000000..458f14169 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2038.table @@ -0,0 +1,16 @@ +0 0 SHIP INTAKE +1 1 BUCKET +2 2 HULL CONTACT SENSOR +3 3 REVERSING THERMOMETER +4 4 STD/CTD SENSOR +5 5 MECHANICAL BT +6 6 EXPENDABLE BT +7 7 DIGITAL BT +8 8 THERMISTOR CHAIN +9 9 INFRARED SCANNER +10 10 MICROWAVE SCANNER +11 11 INFRARED RADIOMETER +12 12 IN-LINE THERMOSALINOGRAPH +13 13 TOWED BODY +14 14 OTHER +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2039.table b/definitions/bufr/tables/0/wmo/32/codetables/2039.table new file mode 100644 index 000000000..0a94982b5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2039.table @@ -0,0 +1,5 @@ +0 0 MEASURED WET-BULB TEMPERATURE +1 1 ICED BULB MEASURED WET-BULB TEMPERATURE +2 2 COMPUTED WET-BULB TEMPERATURE +3 3 ICED BULB COMPUTED WET-BULB TEMPERATURE +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2040.table b/definitions/bufr/tables/0/wmo/32/codetables/2040.table new file mode 100644 index 000000000..78b291706 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2040.table @@ -0,0 +1,8 @@ +0 0 SHIP'S MOTION REMOVED BY AVERAGING +1 1 SHIP'S MOTION REMOVED BY MOTION COMPENSATION +2 2 SHIP'S MOTION NOT REMOVED +3 3 SHIP'S MOTION REMOVED BY AVERAGING +4 4 SHIP'S MOTION REMOVED BY MOTION COMPENSATION +5 5 SHIP'S MOTION NOT REMOVED +6 6 DOPPLER CURRENT PROFILING METHOD NOT USED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2041.table b/definitions/bufr/tables/0/wmo/32/codetables/2041.table new file mode 100644 index 000000000..ef5bf86b3 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2041.table @@ -0,0 +1,6 @@ +0 0 INFORMATION BASED ON MANUAL ANALYSIS +1 1 INFORMATION BASED ON COMPUTER ANALYSIS +2 2 INFORMATION BASED ON DATA ASSIMILATION +3 3 INFORMATION BASED ON COMPUTER ANALYSIS OR DATA ASSIMILATION MANUALLY MODIFIED +10 10 INFORMATION BASED ON THE NUMERICAL WEATHER PREDICTION +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2042.table b/definitions/bufr/tables/0/wmo/32/codetables/2042.table new file mode 100644 index 000000000..eb2445b83 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2042.table @@ -0,0 +1,4 @@ +0 0 VALUE ORIGINALLY REPORTED IN M/S +1 1 VALUE ORIGINALLY REPORTED IN KNOTS +2 2 NO SEA CURRENT DATA AVAILABLE +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2044.table b/definitions/bufr/tables/0/wmo/32/codetables/2044.table new file mode 100644 index 000000000..0e10ed8e1 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2044.table @@ -0,0 +1,6 @@ +0 0 RESERVED FOR FUTURE USE +1 1 LONGUET-HIGGINS (1964) +2 2 LONGUET-HIGGINS (F3 METHOD) +3 3 MAXIMUM LIKELIHOOD METHOD +4 4 MAXIMUM ENTROPY METHOD +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2045.table b/definitions/bufr/tables/0/wmo/32/codetables/2045.table new file mode 100644 index 000000000..374e4f27e --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2045.table @@ -0,0 +1,5 @@ +0 0 SEA STATION +1 1 AUTOMATIC DATA BUOY +2 2 AIRCRAFT +3 3 SATELLITE +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2046.table b/definitions/bufr/tables/0/wmo/32/codetables/2046.table new file mode 100644 index 000000000..57fb9d6be --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2046.table @@ -0,0 +1,4 @@ +0 0 RESERVED FOR FUTURE USE +1 1 HEAVE SENSOR +2 2 SLOPE SENSOR +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2047.table b/definitions/bufr/tables/0/wmo/32/codetables/2047.table new file mode 100644 index 000000000..821393179 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2047.table @@ -0,0 +1,9 @@ +0 0 RESERVED +1 1 DART II (PMEL) +2 2 DART ETD +3 3 SAIC TSUNAMI BUOY (STB) +4 4 GFZ - POTSDAM +5 5 INCOIS (INDIA) +6 6 INABUOY (INDONESIA) +7 7 ENVIRTECH +127 127 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2048.table b/definitions/bufr/tables/0/wmo/32/codetables/2048.table new file mode 100644 index 000000000..d7cb2ef32 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2048.table @@ -0,0 +1,14 @@ +0 0 HIRS +1 1 MSU +2 2 SSU +3 3 AMSU-A +4 4 AMSU-B +5 5 AVHRR +6 6 SSMI +7 7 NSCAT +8 8 SEAWINDS +9 9 POSEIDON ALTIMETER +10 10 JMR (JASON MICROWAVE RADIOMETER) +11 11 MHS +12 12 ASCAT +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2049.table b/definitions/bufr/tables/0/wmo/32/codetables/2049.table new file mode 100644 index 000000000..ade5cac86 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2049.table @@ -0,0 +1,4 @@ +1 1 PROCESSING TECHNIQUE NOT DEFINED +2 2 SIMULTANEOUS PHYSICAL RETRIEVAL +3 3 CLEAR SOUNDING +4 4 CLOUDY SOUNDING diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2050.table b/definitions/bufr/tables/0/wmo/32/codetables/2050.table new file mode 100644 index 000000000..fbcce617d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2050.table @@ -0,0 +1,19 @@ +1 1 1 +2 2 2 +3 3 3 +4 4 4 +5 5 5 +6 6 6 +7 7 7 +8 8 8 +9 9 9 +10 10 10 +11 11 11 +12 12 12 +13 13 13 +14 14 14 +15 15 15 +16 16 16 +17 17 17 +18 18 18 +19 19 19 diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2051.table b/definitions/bufr/tables/0/wmo/32/codetables/2051.table new file mode 100644 index 000000000..3524ae72d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2051.table @@ -0,0 +1,5 @@ +0 0 RESERVED +1 1 MAXIMUM/MINIMUM THERMOMETERS +2 2 AUTOMATED INSTRUMENTS +3 3 THERMOGRAPH +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2052.table b/definitions/bufr/tables/0/wmo/32/codetables/2052.table new file mode 100644 index 000000000..8b6262caa --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2052.table @@ -0,0 +1,5 @@ +1 1 1 +2 2 2 +3 3 3 +4 4 4 +5 5 5 diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2053.table b/definitions/bufr/tables/0/wmo/32/codetables/2053.table new file mode 100644 index 000000000..03e5e295e --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2053.table @@ -0,0 +1,5 @@ +0 0 OBSERVED BRIGHTNESS TEMPERATURE +1 1 BRIGHTNESS TEMPERATURE WITH BIAS CORRECTION APPLIED +2 2 BRIGHTNESS TEMPERATURE CALCULATED FROM FIRST GUESS +3 3 BRIGHTNESS TEMPERATURE CALCULATED FROM SOUNDING +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2054.table b/definitions/bufr/tables/0/wmo/32/codetables/2054.table new file mode 100644 index 000000000..0995688ba --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2054.table @@ -0,0 +1,6 @@ +0 0 PARAMETER DERIVED USING OBSERVED SOUNDER BRIGHTNESS TEMPERATURES +1 1 PARAMETER DERIVED USING OBSERVED IMAGER BRIGHTNESS TEMPERATURES +2 2 PARAMETER DERIVED USING FIRST GUESS INFORMATION +3 3 PARAMETER DERIVED USING NMC ANALYSIS INFORMATION +4 4 PARAMETER DERIVED USING RADIOSONDE INFORMATION +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2055.table b/definitions/bufr/tables/0/wmo/32/codetables/2055.table new file mode 100644 index 000000000..ce06f0089 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2055.table @@ -0,0 +1,10 @@ +0 0 STATISTICS GENERATED COMPARING RETRIEVAL VERSUS RADIOSONDE +1 1 STATISTICS GENERATED COMPARING RETRIEVAL VERSUS FIRST GUESS +2 2 STATISTICS GENERATED COMPARING RADIOSONDE VERSUS FIRST GUESS +3 3 STATISTICS GENERATED COMPARING OBSERVED VERSUS RETRIEVAL +4 4 STATISTICS GENERATED COMPARING OBSERVED VERSUS FIRST GUESS +5 5 STATISTICS GENERATED COMPARING RADIOSONDE VERSUS IMAGER +6 6 STATISTICS GENERATED COMPARING RADIOSONDE VERSUS SOUNDER +7 7 STATISTICS GENERATED FOR RADIOSONDE +8 8 STATISTICS GENERATED FOR FIRST GUESS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2056.table b/definitions/bufr/tables/0/wmo/32/codetables/2056.table new file mode 100644 index 000000000..86eb98302 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2056.table @@ -0,0 +1,6 @@ +0 0 SUMS OF DIFFERENCES +1 1 SUMS OF SQUARED DIFFERENCES +2 2 SAMPLE SIZE +3 3 MINIMUM DIFFERENCE +4 4 MAXIMUM DIFFERENCE +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2057.table b/definitions/bufr/tables/0/wmo/32/codetables/2057.table new file mode 100644 index 000000000..681e6bd08 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2057.table @@ -0,0 +1,7 @@ +0 0 NESTED GRID MODEL (NGM) +1 1 AVIATION MODEL (AVN) +2 2 MEDIUM RANGE FORECAST (MRF) MODEL +3 3 GLOBAL DATA ASSIMILATION SYSTEM (GDAS) FORECAST MODEL +4 4 PRIOR SOUNDINGS (WITHIN 3 HOURS OF CURRENT TIME) +5 5 CLIMATOLOGY +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2058.table b/definitions/bufr/tables/0/wmo/32/codetables/2058.table new file mode 100644 index 000000000..6c45eda11 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2058.table @@ -0,0 +1,5 @@ +0 0 12 HOUR AND 18 HOUR +1 1 18 HOUR AND 24 HOUR +2 2 6 HOUR AND 12 HOUR +3 3 GREATER THAN 24 HOURS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2059.table b/definitions/bufr/tables/0/wmo/32/codetables/2059.table new file mode 100644 index 000000000..8f089d3c4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2059.table @@ -0,0 +1,5 @@ +0 0 NCEP NESTED GRID MODEL (NGM) ANALYSIS +1 1 NCEP AVIATION MODEL (AVN) ANALYSIS +2 2 NCEP MEDIUM RANGE FORECAST (MRF) MODEL ANALYSIS +3 3 NCEP GLOBAL DATA ASSIMILATION SYSTEM (GDAS) FORECAST MODEL ANALYSIS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2060.table b/definitions/bufr/tables/0/wmo/32/codetables/2060.table new file mode 100644 index 000000000..6f846987b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2060.table @@ -0,0 +1,7 @@ +0 0 CURRENT SURFACE HOURLY REPORTS +1 1 CURRENT SHIP REPORTS +2 2 CURRENT BUOY REPORTS +3 3 ONE HOUR OLD SURFACE HOURLY REPORTS +4 4 ONE HOUR OLD SHIP REPORTS +5 5 ONE HOUR OLD BUOY REPORTS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2061.table b/definitions/bufr/tables/0/wmo/32/codetables/2061.table new file mode 100644 index 000000000..592d51eb4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2061.table @@ -0,0 +1,3 @@ +0 0 INERTIAL NAVIGATION SYSTEM +1 1 OMEGA +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2062.table b/definitions/bufr/tables/0/wmo/32/codetables/2062.table new file mode 100644 index 000000000..2d0f4e202 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2062.table @@ -0,0 +1,7 @@ +0 0 ASDAR +1 1 ASDAR (ACARS ALSO AVAILABLE BUT NOT OPERATIVE) +2 2 ASDAR (ACARS ALSO AVAILABLE AND OPERATIVE) +3 3 ACARS +4 4 ACARS (ASDAR ALSO AVAILABLE BUT NOT OPERATIVE) +5 5 ACARS (ASDAR ALSO AVAILABLE AND OPERATIVE) +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2064.table b/definitions/bufr/tables/0/wmo/32/codetables/2064.table new file mode 100644 index 000000000..741430292 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2064.table @@ -0,0 +1,4 @@ +0 0 GOOD +1 1 BAD +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2066.table b/definitions/bufr/tables/0/wmo/32/codetables/2066.table new file mode 100644 index 000000000..a3865dc68 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2066.table @@ -0,0 +1,9 @@ +0 0 INTERMET IMS 2000 +1 1 INTERMET IMS 1500C +2 2 SHANGHAI GTC1 +3 3 NANJING GTC2 +4 4 NANJING GFE(L)1 +5 5 MARL-A RADAR +6 6 VEKTOR-M RADAR +62 62 OTHER +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2070.table b/definitions/bufr/tables/0/wmo/32/codetables/2070.table new file mode 100644 index 000000000..5a098ea26 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2070.table @@ -0,0 +1,13 @@ +0 0 ACTUAL LOCATION IN SECONDS +1 1 ACTUAL LOCATION IN MINUTES +2 2 ACTUAL LOCATION IN DEGREES +3 3 ACTUAL LOCATION IN DECIDEGREES +4 4 ACTUAL LOCATION IN CENTIDEGREES +5 5 REFERENCED TO CHECKPOINT IN SECONDS +6 6 REFERENCED TO CHECKPOINT IN MINUTES +7 7 REFERENCED TO CHECKPOINT IN DEGREES +8 8 REFERENCED TO CHECKPOINT IN DECIDEGREES +9 9 REFERENCED TO CHECKPOINT IN CENTIDEGREES +10 10 ACTUAL LOCATION IN TENTHS OF A MINUTE +11 11 REFERENCED TO CHECKPOINT IN TENTHS OF A MINUTE +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2080.table b/definitions/bufr/tables/0/wmo/32/codetables/2080.table new file mode 100644 index 000000000..c68a39dd6 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2080.table @@ -0,0 +1,7 @@ +0 0 KAYSAM +1 1 TOTEX +2 2 KKS +3 3 GUANGZHOU SHUANGYI (CHINA) +4 4 CHEMCHINA ZHUZHOU (CHINA) +62 62 OTHER +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2081.table b/definitions/bufr/tables/0/wmo/32/codetables/2081.table new file mode 100644 index 000000000..dfe9551a9 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2081.table @@ -0,0 +1,11 @@ +0 0 GP26 +1 1 GP28 +2 2 GP30 +3 3 HM26 +4 4 HM28 +5 5 HM30 +6 6 SV16 +7 7 TOTEX TA TYPE BALLOONS +8 8 TOTEX TX TYPE BALLOONS +30 30 OTHER +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2083.table b/definitions/bufr/tables/0/wmo/32/codetables/2083.table new file mode 100644 index 000000000..611c5bf64 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2083.table @@ -0,0 +1,7 @@ +0 0 HIGH BAY +1 1 LOW BAY +2 2 BALLOON-INFLATED LAUNCH SYSTEM (BILS) +3 3 ROOF-TOP BILS +4 4 AUTOMATED UNMANNED SOUNDING SYSTEM +14 14 OTHER +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2084.table b/definitions/bufr/tables/0/wmo/32/codetables/2084.table new file mode 100644 index 000000000..be6430ae6 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2084.table @@ -0,0 +1,5 @@ +0 0 HYDROGEN +1 1 HELIUM +2 2 NATURAL GAS +14 14 OTHER +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2095.table b/definitions/bufr/tables/0/wmo/32/codetables/2095.table new file mode 100644 index 000000000..580fe930c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2095.table @@ -0,0 +1,7 @@ +0 0 CAPACITANCE ANEROID +1 1 DERIVED FROM GPS +2 2 RESISTIVE STRAIN GAUGE +3 3 SILICON CAPACITOR +4 4 DERIVED FROM RADAR HEIGHT +30 30 OTHER +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2096.table b/definitions/bufr/tables/0/wmo/32/codetables/2096.table new file mode 100644 index 000000000..9f1b1027c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2096.table @@ -0,0 +1,9 @@ +0 0 ROD THERMISTOR +1 1 BEAD THERMISTOR +2 2 CAPACITANCE BEAD +3 3 CAPACITANCE WIRE +4 4 RESISTIVE SENSOR +5 5 CHIP THERMISTOR +6 6 MERCURY +7 7 ALCOHOL/GLYCOL +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2097.table b/definitions/bufr/tables/0/wmo/32/codetables/2097.table new file mode 100644 index 000000000..309ef642a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2097.table @@ -0,0 +1,26 @@ +0 0 VIZ MARK II CARBON HYGRISTOR +1 1 VIZ B2 HYGRISTOR +2 2 VAISALA A-HUMICAP +3 3 VAISALA H-HUMICAP +4 4 CAPACITANCE SENSOR +5 5 VAISALA RS90 +6 6 SIPPICAN MARK IIA CARBON HYGRISTOR +7 7 TWIN ALTERNATIVELY HEATED HUMICAP CAPACITANCE SENSOR +8 8 HUMICAP CAPACITANCE SENSOR WITH ACTIVE DE-ICING METHOD +9 9 CARBON HYGRISTOR +10 10 PSYCHROMETER +11 11 CAPACITIVE (POLYMER) +12 12 CAPACITIVE (CERAMIC, INCLUDING METAL OXIDE) +13 13 RESISTIVE (GENERIC) +14 14 RESISTIVE (SALT POLYMER) +15 15 RESISTIVE (CONDUCTIVE POLYMER) +16 16 THERMAL CONDUCTIVITY +17 17 GRAVIMETRIC +18 18 PAPER-METAL COIL +19 19 ORDINARY HUMAN HAIR +20 20 ROLLED HAIR (TORSION) +21 21 GOLDBEATER'S SKIN +22 22 CHILLED MIRROR HYGROMETER +23 23 DEW CELL +24 24 OPTICAL ABSORPTION SENSOR +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2099.table b/definitions/bufr/tables/0/wmo/32/codetables/2099.table new file mode 100644 index 000000000..74cb817c9 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2099.table @@ -0,0 +1,5 @@ +0 0 HH POLARIZATION +1 1 VV POLARIZATION +2 2 HV POLARIZATION REAL VALUED COMPONENT +3 3 HV POLARIZATION IMAGINARY VALUED COMPONENT +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2101.table b/definitions/bufr/tables/0/wmo/32/codetables/2101.table new file mode 100644 index 000000000..efdb3ec56 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2101.table @@ -0,0 +1,10 @@ +0 0 CENTRE FRONT-FED PARABOLOID +1 1 OFFSET FRONT-FED PARABOLOID +2 2 CENTRE CASSEGRAIN PARABOLOID +3 3 OFFSET CASSEGRAIN PARABOLOID +4 4 PLANAR ARRAY +5 5 COAXIAL-COLLINEAR ARRAY +6 6 YAGI ELEMENTS ARRAY +7 7 MICROSTRIP +14 14 OTHER +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2103.table b/definitions/bufr/tables/0/wmo/32/codetables/2103.table new file mode 100644 index 000000000..417d2c9a4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2103.table @@ -0,0 +1 @@ +1 1 RADAR ANTENNA IS PROTECTED BY A RADOME diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2104.table b/definitions/bufr/tables/0/wmo/32/codetables/2104.table new file mode 100644 index 000000000..e39a15365 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2104.table @@ -0,0 +1,9 @@ +0 0 HORIZONTAL POLARIZATION +1 1 VERTICAL POLARIZATION +2 2 RIGHT CIRCULAR POLARIZATION +3 3 LEFT CIRCULAR POLARIZATION +4 4 HORIZONTAL AND VERTICAL POLARIZATION +5 5 RIGHT AND LEFT CIRCULAR POLARIZATION +6 6 QUASI-HORIZONTAL POLARIZATION +7 7 QUASI-VERTICAL POLARIZATION +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/21066.table b/definitions/bufr/tables/0/wmo/32/codetables/21066.table new file mode 100644 index 000000000..9bcafea2a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/21066.table @@ -0,0 +1,11 @@ +1 1 PROCESSING EQUIPMENT NOT WORKING +2 2 EQUIPMENT FAILED +3 3 PRF CODE CHANGED DURING IMAGE GENERATION +4 4 SAMPLING WINDOW CHANGED DURING IMAGE GENERATION +5 5 GAIN CHANGED DURING IMAGE GENERATION +6 6 CHIRP REPLICA EXCEEDS SPECIFIED VALUE +7 7 INPUT DATA MEAN AND STANDARD DEVIATION OF IN-PHASE AND QUADRATURE OUT OF RANGE +8 8 DOPPLER CENTROID CONFIDENCE > MMCC VALUE +9 9 DOPPLER CENTROID ABSOLUTE VALUE > PRF/2 +10 10 DOPPLER AMBIGUITY CONFIDENCE < MMCC VALUE +11 11 OUTPUT DATA MEAN AND STANDARD DEVIATION =< MMCC VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/21067.table b/definitions/bufr/tables/0/wmo/32/codetables/21067.table new file mode 100644 index 000000000..a0ed399e4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/21067.table @@ -0,0 +1,12 @@ +1 1 NO FOREBEAM CALCULATION +2 2 NO MIDBEAM CALCULATION +3 3 NO AFTBEAM CALCULATION +4 4 FOREBEAM ARCING DETECTED +5 5 MIDBEAM ARCING DETECTED +6 6 AFTBEAM ARCING DETECTED +7 7 ANY BEAM NOISE CONTENT ABOVE OR EQUAL TO THRESHOLD +8 8 LAND (ANY LAND IN CELL FOOTPRINT) +9 9 AUTONOMOUS AMBIGUITY REMOVAL NOT USED +10 10 METEOROLOGICAL BACKGROUND NOT USED +11 11 MINIMUM RESIDUAL EXCEEDED THRESHOLD +12 12 FRAME CHECKSUM ERROR DETECTED diff --git a/definitions/bufr/tables/0/wmo/32/codetables/21068.table b/definitions/bufr/tables/0/wmo/32/codetables/21068.table new file mode 100644 index 000000000..102171f44 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/21068.table @@ -0,0 +1,7 @@ +1 1 STANDARD DEVIATION OF WIND SPEED OUTSIDE MMCC LIMIT +2 2 STANDARD DEVIATION OF SIGNIFICANT WAVE HEIGHT OUTSIDE MMCC LIMIT +3 3 STANDARD DEVIATION OF ALTITUDE OUTSIDE MMCC LIMIT +4 4 MEAN PEAKINESS OUTSIDE MMCC LIMIT +5 5 FRAME CHECKSUM ERROR DETECTED +6 6 HEIGHT-TIME LOOP TIME CONSTANT CORRECTION NOT PERFORMED +7 7 NOT ENOUGH MEASUREMENTS (N < 10) diff --git a/definitions/bufr/tables/0/wmo/32/codetables/21069.table b/definitions/bufr/tables/0/wmo/32/codetables/21069.table new file mode 100644 index 000000000..320890afa --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/21069.table @@ -0,0 +1,9 @@ +1 1 12.0 µM CHANNEL PRESENT IN SOURCE DATA +2 2 11.0 µM CHANNEL PRESENT IN SOURCE DATA +3 3 3.7 µM CHANNEL PRESENT IN SOURCE DATA +4 4 1.6 µM CHANNEL PRESENT IN SOURCE DATA +5 5 CLOUD IDENTIFICATION USED 1.6 µM HISTOGRAM REFLECTANCE CLOUD TEST +6 6 1.6 µM HISTOGRAM REFLECTANCE CLOUD TEST USED DYNAMIC THRESHOLD +7 7 SUN GLINT DETECTED BY 1.6 µM REFLECTANCE CLOUD TEST +8 8 3.7 µM CHANNEL USED IN SEA-SURFACE TEMPERATURE RETRIEVAL +9 9 SEA-SURFACE TEMPERATURE DERIVATION USED DAYTIME DATA (NIGHT-TIME IF ZERO) diff --git a/definitions/bufr/tables/0/wmo/32/codetables/21070.table b/definitions/bufr/tables/0/wmo/32/codetables/21070.table new file mode 100644 index 000000000..669655f00 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/21070.table @@ -0,0 +1,22 @@ +1 1 CELL 1: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL +2 2 CELL 2: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL +3 3 CELL 3: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL +4 4 CELL 4: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL +5 5 CELL 5: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL +6 6 CELL 6: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL +7 7 CELL 7: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL +8 8 CELL 8: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL +9 9 CELL 9: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL +10 10 CELL 1: DUAL VIEW SST USED 3.7 MICRON CHANNEL +11 11 CELL 2: DUAL VIEW SST USED 3.7 MICRON CHANNEL +12 12 CELL 3: DUAL VIEW SST USED 3.7 MICRON CHANNEL +13 13 CELL 4: DUAL VIEW SST USED 3.7 MICRON CHANNEL +14 14 CELL 5: DUAL VIEW SST USED 3.7 MICRON CHANNEL +15 15 CELL 6: DUAL VIEW SST USED 3.7 MICRON CHANNEL +16 16 CELL 7: DUAL VIEW SST USED 3.7 MICRON CHANNEL +17 17 CELL 8: DUAL VIEW SST USED 3.7 MICRON CHANNEL +18 18 CELL 9: DUAL VIEW SST USED 3.7 MICRON CHANNEL +19 19 NADIR VIEW CONTAINS DAY-TIME DATA (NIGHT IF ZERO) +20 20 FORWARD VIEW CONTAINS DAY-TIME DATA (NIGHT IF ZERO) +21 21 RECORD CONTAINS CONTRIBUTIONS FROM INSTRUMENT SCANS ACQUIRED WHEN ERS PLATFORM NOT IN YAW-STEERING MODE +22 22 RECORD CONTAINS CONTRIBUTIONS FROM INSTRUMENT SCANS FOR WHICH PRODUCT CONFIDENCE DATA SHOW QUALITY IS POOR OR UNKNOWN diff --git a/definitions/bufr/tables/0/wmo/32/codetables/21072.table b/definitions/bufr/tables/0/wmo/32/codetables/21072.table new file mode 100644 index 000000000..99e4b1c29 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/21072.table @@ -0,0 +1,3 @@ +1 1 HEIGHT ERROR CORRECTION APPLIED INSTEAD OF OPEN LOOP CALIBRATION +2 2 MICROWAVE SOUNDER USED FOR TROPOSPHERE CORRECTION +3 3 AGC OUTPUT CORRECTION APPLIED INSTEAD OF OPEN LOOP CALIBRATION diff --git a/definitions/bufr/tables/0/wmo/32/codetables/21073.table b/definitions/bufr/tables/0/wmo/32/codetables/21073.table new file mode 100644 index 000000000..9538fa553 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/21073.table @@ -0,0 +1,8 @@ +1 1 BLANK DATA RECORD +2 2 TEST +3 3 CALIBRATION (CLOSED LOOP) +4 4 BITE +5 5 ACQUISITION ON ICE +6 6 ACQUISITION ON OCEAN +7 7 TRACKING ON ICE +8 8 TRACKING ON OCEAN diff --git a/definitions/bufr/tables/0/wmo/32/codetables/21076.table b/definitions/bufr/tables/0/wmo/32/codetables/21076.table new file mode 100644 index 000000000..bc52ac558 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/21076.table @@ -0,0 +1,4 @@ +0 0 LINEAR +1 1 LOGARITHMIC (BASE E) +2 2 LOGARITHMIC (BASE 10) +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/21109.table b/definitions/bufr/tables/0/wmo/32/codetables/21109.table new file mode 100644 index 000000000..deb577aa0 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/21109.table @@ -0,0 +1,7 @@ +1 1 NOT ENOUGH GOOD SIGMA-0 AVAILABLE FOR WIND RETRIEVAL +2 2 POOR AZIMUTH DIVERSITY AMONG SIGMA-0 FOR WIND RETRIEVAL +8 8 SOME PORTION OF WIND VECTOR CELL IS OVER LAND +9 9 SOME PORTION OF WIND VECTOR CELL IS OVER ICE +10 10 WIND RETRIEVAL NOT PERFORMED FOR WIND VECTOR CELL +11 11 REPORTED WIND SPEED IS GREATER THAN 30 M S-1 +12 12 REPORTED WIND SPEED IS LESS THAN OR EQUAL TO 3 M S-1 diff --git a/definitions/bufr/tables/0/wmo/32/codetables/21115.table b/definitions/bufr/tables/0/wmo/32/codetables/21115.table new file mode 100644 index 000000000..9e90133cd --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/21115.table @@ -0,0 +1,10 @@ +1 1 SIGMA-0 MEASUREMENT IS NOT USABLE +2 2 SIGNAL TO NOISE RATIO IS LOW +3 3 SIGMA-0 IS NEGATIVE +4 4 SIGMA-0 IS OUTSIDE OF ACCEPTABLE RANGE +5 5 SCATTEROMETER PULSE QUALITY IS NOT ACCEPTABLE +6 6 SIGMA-0 CELL LOCATION ALGORITHM DOES NOT CONVERGE +7 7 FREQUENCY SHIFT LIES BEYOND THE RANGE OF THE X FACTOR TABLE +8 8 SPACECRAFT TEMPERATURE IS BEYOND CALIBRATION COEFFICIENT RANGE +9 9 NO APPLICABLE ALTITUDE RECORDS WERE FOUND FOR THIS SIGMA-0 +10 10 INTERPOLATED EPHEMERIS DATA ARE NOT ACCEPTABLE FOR THIS SIGMA-0 diff --git a/definitions/bufr/tables/0/wmo/32/codetables/21116.table b/definitions/bufr/tables/0/wmo/32/codetables/21116.table new file mode 100644 index 000000000..10b5c532c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/21116.table @@ -0,0 +1,16 @@ +1 1 CALIBRATION/MEASUREMENT PULSE FLAG (1) +2 2 CALIBRATION/MEASUREMENT PULSE FLAG (2) +3 3 OUTER ANTENNA BEAM +4 4 SIGMA-0 CELL IS AFT OF SPACECRAFT +5 5 CURRENT MODE (1) +6 6 CURRENT MODE (2) +7 7 EFFECTIVE GATE WIDTH - SLICE RESOLUTION (1) +8 8 EFFECTIVE GATE WIDTH - SLICE RESOLUTION (2) +9 9 EFFECTIVE GATE WIDTH - SLICE RESOLUTION (3) +10 10 LOW RESOLUTION MODE - WHOLE PULSE DATA +11 11 SCATTEROMETER ELECTRONIC SUBSYSTEM B +12 12 ALTERNATE SPIN RATE - 19.8 RPM +13 13 RECEIVER PROTECTION ON +14 14 SLICES PER COMPOSITE FLAG (1) +15 15 SLICES PER COMPOSITE FLAG (2) +16 16 SLICES PER COMPOSITE FLAG (3) diff --git a/definitions/bufr/tables/0/wmo/32/codetables/21119.table b/definitions/bufr/tables/0/wmo/32/codetables/21119.table new file mode 100644 index 000000000..e17e3c04a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/21119.table @@ -0,0 +1,14 @@ +0 0 RESERVED +1 1 SASS +2 2 SASS2 +3 3 NSCAT0 +4 4 NSCAT1 +5 5 NSCAT2 +6 6 QSCAT0 +7 7 QSCAT1 +31 31 CMOD1 +32 32 CMOD2 +33 33 CMOD3 +34 34 CMOD4 +35 35 CMOD5 +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/21144.table b/definitions/bufr/tables/0/wmo/32/codetables/21144.table new file mode 100644 index 000000000..1f082e6d9 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/21144.table @@ -0,0 +1 @@ +1 1 RAIN diff --git a/definitions/bufr/tables/0/wmo/32/codetables/21148.table b/definitions/bufr/tables/0/wmo/32/codetables/21148.table new file mode 100644 index 000000000..11413ed72 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/21148.table @@ -0,0 +1,2 @@ +1 1 NON SHORT SCALE VARIATION +2 2 SHORT SCALE VARIATION diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2115.table b/definitions/bufr/tables/0/wmo/32/codetables/2115.table new file mode 100644 index 000000000..c7e866c7a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2115.table @@ -0,0 +1,7 @@ +0 0 PDB +1 1 RSOIS +2 2 ASOS +3 3 PSYCHROMETER +4 4 F420 +30 30 OTHER +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/21150.table b/definitions/bufr/tables/0/wmo/32/codetables/21150.table new file mode 100644 index 000000000..851004635 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/21150.table @@ -0,0 +1,4 @@ +0 0 DATA FROM SINGLE GROUND STATION (NO CO-LOCATION) +1 1 DATA FROM MULTIPLE GROUND STATION (CO-LOCATED DATA) +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/21155.table b/definitions/bufr/tables/0/wmo/32/codetables/21155.table new file mode 100644 index 000000000..a7837cfa7 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/21155.table @@ -0,0 +1,16 @@ +1 1 NOT ENOUGH GOOD SIGMA-0 AVAILABLE FOR WIND RETRIEVAL +2 2 POOR AZIMUTH DIVERSITY AMONG SIGMA-0 FOR WIND RETRIEVAL +3 3 ANY BEAM NOISE CONTENT ABOVE THRESHOLD +4 4 PRODUCT MONITORING NOT USED +5 5 PRODUCT MONITORING FLAG +6 6 KNMI QUALITY CONTROL FAILS +7 7 VARIATIONAL QUALITY CONTROL FAILS +8 8 SOME PORTION OF WIND VECTOR CELL IS OVER LAND +9 9 SOME PORTION OF WIND VECTOR CELL IS OVER ICE +10 10 WIND RETRIEVAL NOT PERFORMED FOR WIND VECTOR CELL +11 11 REPORTED WIND SPEED IS GREATER THAN 30 M/S +12 12 REPORTED WIND SPEED IS LESS THAN OR EQUAL TO 3 M/S +13 13 RAIN FLAG FOR THE WIND VECTOR CELL IS NOT USABLE +14 14 RAIN FLAG ALGORITHM DETECTS RAIN +15 15 NO METEOROLOGICAL BACKGROUND USED +16 16 DATA ARE REDUNDANT diff --git a/definitions/bufr/tables/0/wmo/32/codetables/21158.table b/definitions/bufr/tables/0/wmo/32/codetables/21158.table new file mode 100644 index 000000000..dd53c5159 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/21158.table @@ -0,0 +1,4 @@ +0 0 ACCEPTABLE +1 1 NOT ACCEPTABLE +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/21159.table b/definitions/bufr/tables/0/wmo/32/codetables/21159.table new file mode 100644 index 000000000..1703f9b8e --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/21159.table @@ -0,0 +1,4 @@ +0 0 GOOD +1 1 USABLE +2 2 BAD +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/21169.table b/definitions/bufr/tables/0/wmo/32/codetables/21169.table new file mode 100644 index 000000000..9b93444ce --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/21169.table @@ -0,0 +1,4 @@ +0 0 NO ICE PRESENT +1 1 ICE PRESENT +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2119.table b/definitions/bufr/tables/0/wmo/32/codetables/2119.table new file mode 100644 index 000000000..0640af68b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2119.table @@ -0,0 +1,8 @@ +0 0 INTERMEDIATE FREQUENCY CALIBRATION MODE (IF CAL) +1 1 BUILT-IN TEST EQUIPMENT DIGITAL (BITE DGT) +2 2 BUILT-IN TEST EQUIPMENT RADIO FREQUENCY (BITE RF) +3 3 PRESET TRACKING (PSET TRK) +4 4 PRESET LOOP OUT +5 5 ACQUISITION +6 6 TRACKING +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2131.table b/definitions/bufr/tables/0/wmo/32/codetables/2131.table new file mode 100644 index 000000000..f4336ef79 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2131.table @@ -0,0 +1 @@ +1 1 STC OPERATIONAL diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2137.table b/definitions/bufr/tables/0/wmo/32/codetables/2137.table new file mode 100644 index 000000000..40d33fdd3 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2137.table @@ -0,0 +1,4 @@ +1 1 3:2 +2 2 4:3 +3 3 5:4 +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2138.table b/definitions/bufr/tables/0/wmo/32/codetables/2138.table new file mode 100644 index 000000000..a574506ad --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2138.table @@ -0,0 +1,3 @@ +1 1 CLOCKWISE ROTATION +2 2 COUNTERCLOCKWISE ROTATION +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2139.table b/definitions/bufr/tables/0/wmo/32/codetables/2139.table new file mode 100644 index 000000000..f6cf80294 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2139.table @@ -0,0 +1,3 @@ +0 0 SIRAL NOMINAL +1 1 SIRAL REDUNDANT +2 2 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2143.table b/definitions/bufr/tables/0/wmo/32/codetables/2143.table new file mode 100644 index 000000000..975d068be --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2143.table @@ -0,0 +1,21 @@ +0 0 RESERVED +1 1 BREWER SPECTROPHOTOMETER +2 2 CAVER TEICHERT +3 3 DOBSON +4 4 DOBSON (JAPAN) +5 5 EHMET +6 6 FECKER TELESCOPE +7 7 HOELPER +8 8 JODMETER +9 9 FILTER OZONOMETER M-83 +10 10 MAST +11 11 OXFORD +12 12 PAETZOLD +13 13 REGENER +14 14 RESERVED FOR FUTURE USE +15 15 VASSY FILTER OZONOMETER +16 16 CARBON IODIDE +17 17 SURFACE OZONE BUBBLER +18 18 FILTER OZONOMETER M-124 +19 19 ECC SONDE +127 127 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2144.table b/definitions/bufr/tables/0/wmo/32/codetables/2144.table new file mode 100644 index 000000000..5b0f37b34 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2144.table @@ -0,0 +1,8 @@ +0 0 DIRECT SUN +1 1 DIRECT SUN, ATTENUATOR #1 +2 2 DIRECT SUN, ATTENUATOR #2 +3 3 FOCUSED MOON +4 4 FOCUSED SUN +5 5 FOCUSED SUN CORRECTED WITH ADJACENT SKY MEASUREMENTS +6 6 ZENITH SKY +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2145.table b/definitions/bufr/tables/0/wmo/32/codetables/2145.table new file mode 100644 index 000000000..1944e69fc --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2145.table @@ -0,0 +1,9 @@ +0 0 WAVELENGTHS AD ORDINARY SETTING +1 1 WAVELENGTHS BD ORDINARY SETTING +2 2 WAVELENGTHS CD ORDINARY SETTING +3 3 WAVELENGTHS CC' ORDINARY SETTING +4 4 WAVELENGTHS AD FOCUSED IMAGE +5 5 WAVELENGTHS BD FOCUSED IMAGE +6 6 WAVELENGTHS CD FOCUSED IMAGE +7 7 WAVELENGTHS CC' FOCUSED IMAGE +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2146.table b/definitions/bufr/tables/0/wmo/32/codetables/2146.table new file mode 100644 index 000000000..871b35709 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2146.table @@ -0,0 +1,11 @@ +0 0 ON DIRECT SUN +1 1 ON DIRECT MOON +2 2 ON BLUE ZENITH SKY +3 3 ON ZENITH CLOUD (UNIFORM STRATIFIED LAYER OF SMALL OPACITY) +4 4 ON ZENITH CLOUD (UNIFORM OR MODERATELY VARIABLE LAYER OF MEDIUM OPACITY) +5 5 ON ZENITH CLOUD (UNIFORM OR MODERATELY VARIABLE LAYER OF LARGE OPACITY) +6 6 ON ZENITH CLOUD (HIGHLY VARIABLE OPACITY, WITH OR WITHOUT PRECIPITATION) +7 7 ON ZENITH CLOUD (FOG) +8 8 ON ZENITH HAZE +9 9 ON DIRECT SUN THROUGH THIN CLOUD, FOG OR HAZE +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2147.table b/definitions/bufr/tables/0/wmo/32/codetables/2147.table new file mode 100644 index 000000000..4ff1c92a9 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2147.table @@ -0,0 +1,11 @@ +0 0 RESERVED +1 1 DIRECT LEASED CIRCUIT +2 2 DIALLED UP CONNECTION +3 3 INTERNET ISP +4 4 DCP VIA SATELLITE (MTSAT, METEOSAT, ETC.) +5 5 VSAT +6 6 GAN,* BGAN** +7 7 THISS TERMINAL +8 8 IRIDIUM SATELLITES +9 9 MOBILE TELEPHONY +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2148.table b/definitions/bufr/tables/0/wmo/32/codetables/2148.table new file mode 100644 index 000000000..7d8ca51e3 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2148.table @@ -0,0 +1,12 @@ +0 0 RESERVED +1 1 ARGOS +2 2 GPS +3 3 GOES DCP +4 4 METEOSAT DCP +5 5 ORBCOMM +6 6 INMARSAT +7 7 IRIDIUM +8 8 IRIDIUM AND GPS +9 9 ARGOS-3 +10 10 ARGOS-4 +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2149.table b/definitions/bufr/tables/0/wmo/32/codetables/2149.table new file mode 100644 index 000000000..04638d229 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2149.table @@ -0,0 +1,38 @@ +0 0 UNSPECIFIED DRIFTING BUOY +1 1 STANDARD LAGRANGIAN DRIFTER (GLOBAL DRIFTER PROGRAMME) +2 2 STANDARD FGGE TYPE DRIFTING BUOY (NON-LAGRANGIAN METEOROLOGICAL DRIFTING BUOY) +3 3 WIND MEASURING FGGE TYPE DRIFTING BUOY (NON-LAGRANGIAN METEOROLOGICAL DRIFTING BUOY) +4 4 ICE DRIFTER +5 5 SVPG STANDARD LAGRANGIAN DRIFTER WITH GPS +6 6 SVP-HR DRIFTER WITH HIGH-RESOLUTION TEMPERATURE OR THERMISTOR STRING +7 7 RESERVED +8 8 UNSPECIFIED SUBSURFACE FLOAT +9 9 SOFAR +10 10 ALACE +11 11 MARVOR +12 12 RAFOS +13 13 PROVOR +14 14 SOLO +15 15 APEX +16 16 UNSPECIFIED MOORED BUOY +17 17 NOMAD +18 18 3-METRE DISCUS +19 19 10-12-METRE DISCUS +20 20 ODAS 30 SERIES +21 21 ATLAS (E.G. TAO AREA) +22 22 TRITON BUOY +23 23 FLEX MOORING (E.G. TIP AREA) +24 24 OMNIDIRECTIONAL WAVERIDER +25 25 DIRECTIONAL WAVERIDER +26 26 SUBSURFACE ARGO FLOAT +27 27 PALACE +28 28 NEMO +29 29 NINJA +30 30 ICE BUOY/FLOAT (POPS OR ITP) +34 34 MOORING OCEANOGRAPHIC +35 35 MOORING METEOROLOGICAL +36 36 MOORING MULTIDISCIPLINARY (OCEANSITES) +37 37 MOORING TIDE GAUGE OR TSUNAMI BUOY +38 38 ICE BEACON +39 39 ICE MASS BALANCE BUOY +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2150.table b/definitions/bufr/tables/0/wmo/32/codetables/2150.table new file mode 100644 index 000000000..8193b575a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2150.table @@ -0,0 +1,55 @@ +0 0 RESERVED +1 1 HIRS 1 +2 2 HIRS 2 +3 3 HIRS 3 +4 4 HIRS 4 +5 5 HIRS 5 +6 6 HIRS 6 +7 7 HIRS 7 +8 8 HIRS 8 +9 9 HIRS 9 +10 10 HIRS 10 +11 11 HIRS 11 +12 12 HIRS 12 +13 13 HIRS 13 +14 14 HIRS 14 +15 15 HIRS 15 +16 16 HIRS 16 +17 17 HIRS 17 +18 18 HIRS 18 +19 19 HIRS 19 +20 20 HIRS 20 +21 21 MSU 1 +22 22 MSU 2 +23 23 MSU 3 +24 24 MSU 4 +25 25 SSU 1 +26 26 SSU 2 +27 27 SSU 3 +28 28 AMSU-A 1 +29 29 AMSU-A 2 +30 30 AMSU-A 3 +31 31 AMSU-A 4 +32 32 AMSU-A 5 +33 33 AMSU-A 6 +34 34 AMSU-A 7 +35 35 AMSU-A 8 +36 36 AMSU-A 9 +37 37 AMSU-A 10 +38 38 AMSU-A 11 +39 39 AMSU-A 12 +40 40 AMSU-A 13 +41 41 AMSU-A 14 +42 42 AMSU-A 15 +43 43 AMSU-B 1 / MHS 1 +44 44 AMSU-B 2 / MHS 2 +45 45 AMSU-B 3 / MHS 3 +46 46 AMSU-B 4 / MHS 4 +47 47 AMSU-B 5 / MHS 5 +48 48 AVHRR 1 +49 49 AVHRR 2 +50 50 AVHRR 3A +51 51 AVHRR 3B +52 52 AVHRR 4 +53 53 AVHRR 5 +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2151.table b/definitions/bufr/tables/0/wmo/32/codetables/2151.table new file mode 100644 index 000000000..45c80df10 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2151.table @@ -0,0 +1,11 @@ +0 0 HIRS +1 1 MSU +2 2 SSU +3 3 AMSU-A1-1 +4 4 AMSU-A1-2 +5 5 AMSU-A2 +6 6 AMSU-B +7 7 AVHRR +8 8 RESERVED +9 9 MHS +2047 2047 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2152.table b/definitions/bufr/tables/0/wmo/32/codetables/2152.table new file mode 100644 index 000000000..880c384cf --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2152.table @@ -0,0 +1,13 @@ +1 1 HIGH-RESOLUTION INFRARED SOUNDER (HIRS) +2 2 MICROWAVE SOUNDING UNIT (MSU) +3 3 STRATOSPHERIC SOUNDING UNIT (SSU) +4 4 AMI WIND MODE +5 5 AMI WAVE MODE +6 6 AMI IMAGE MODE +7 7 RADAR ALTIMETER +8 8 ATSR +9 9 GEOSTATIONARY IMAGER +10 10 GEOSTATIONARY SOUNDER +11 11 GEOSTATIONARY EARTH RADIATION (GERB) +12 12 MULTI-CHANNEL SCANNING RADIOMETER +13 13 POLAR-ORBITING IMAGER diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2158.table b/definitions/bufr/tables/0/wmo/32/codetables/2158.table new file mode 100644 index 000000000..97c4449c5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2158.table @@ -0,0 +1,8 @@ +1 1 MISMATCH IN RED VEC HPA +2 2 MISMATCH IN RED VEC RFSS +3 3 PTR CALIBRATION BAND 320 MHZ (KU) +4 4 PTR CALIBRATION BAND 80 MHZ (KU) +5 5 PTR CALIBRATION BAND 20 MHZ (KU) +6 6 PTR CALIBRATION BAND 160 MHZ (S) +7 7 KU FLIGHT CALIBRATION PARAMETERS AVAILABLE +8 8 S FLIGHT CALIBRATION PARAMETERS AVAILABLE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2159.table b/definitions/bufr/tables/0/wmo/32/codetables/2159.table new file mode 100644 index 000000000..63cb87c78 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2159.table @@ -0,0 +1,7 @@ +1 1 TEMPERATURE INCONSISTENCY +2 2 DATA IS MISSING +3 3 REDUNDANCY CHANNEL +4 4 POWER BUS PROTECTION +5 5 OVERVOLTAGE/OVERLOAD PROTECTION +6 6 RESERVED +7 7 RESERVED diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2160.table b/definitions/bufr/tables/0/wmo/32/codetables/2160.table new file mode 100644 index 000000000..fd7f37274 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2160.table @@ -0,0 +1,11 @@ +0 0 RESERVED +1 1 10 TO LESS THAN 20 MM +2 2 RESERVED +3 3 20 TO LESS THAN 40 MM +4 4 RESERVED +5 5 40 TO LESS THAN 60 MM +6 6 RESERVED +7 7 60 TO LESS THAN 90 MM +8 8 90 TO LESS THAN 110 MM +9 9 110 MM AND GREATER +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2161.table b/definitions/bufr/tables/0/wmo/32/codetables/2161.table new file mode 100644 index 000000000..55b88f4de --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2161.table @@ -0,0 +1,5 @@ +11 11 WIND HEIGHT CALCULATED FROM MEDIAN CLOUD-TOP PRESSURE OF TARGET +12 12 TARGET IS CLOUDY +13 13 LOW-LEVEL INVERSION +14 14 CROSS CORRELATION CONTRIBUTION (CCC) METHOD +15 15 NESTED TRACKING diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2162.table b/definitions/bufr/tables/0/wmo/32/codetables/2162.table new file mode 100644 index 000000000..510f09aa3 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2162.table @@ -0,0 +1,19 @@ +0 0 AUTO EDITOR +1 1 IRW HEIGHT ASSIGNMENT +2 2 WV HEIGHT ASSIGNMENT +3 3 H2O INTERCEPT HEIGHT ASSIGNMENT +4 4 CO2 SLICING HEIGHT ASSIGNMENT +5 5 LOW PIXEL MAX GRADIENT +6 6 HIGHER PIXEL MAX GRADIENT +7 7 PRIMARY HEIGHT ASSIGNMENT +8 8 LAYER THICKNESS ASSIGNMENT +9 9 CUMULATIVE CONTRIBUTION FUNCTION - 10 PER CENT HEIGHT +10 10 CUMULATIVE CONTRIBUTION FUNCTION - 50 PER CENT HEIGHT +11 11 CUMULATIVE CONTRIBUTION FUNCTION - 90 PER CENT HEIGHT +12 12 CUMULATIVE CONTRIBUTION FUNCTION - HEIGHT OF MAXIMUM GRADIENT +13 13 IR/TWO WV CHANNEL RATIONING METHOD +14 14 COMPOSITE HEIGHT ASSIGNMENT +15 15 OPTIMAL ESTIMATION +16 16 INVERSION CORRECTION +17 17 GEOMETRIC HEIGHT ASSIGNMENT +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2163.table b/definitions/bufr/tables/0/wmo/32/codetables/2163.table new file mode 100644 index 000000000..8cac63196 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2163.table @@ -0,0 +1,16 @@ +0 0 AUTO EDITOR +1 1 IRW HEIGHT ASSIGNMENT +2 2 WV HEIGHT ASSIGNMENT +3 3 H2O INTERCEPT HEIGHT ASSIGNMENT +4 4 CO2 SLICING HEIGHT ASSIGNMENT +5 5 LOW PIXEL MAX GRADIENT +6 6 HIGHER PIXEL MAX GRADIENT +7 7 PRIMARY HEIGHT ASSIGNMENT +8 8 LAYER THICKNESS ASSIGNMENT +9 9 CUMULATIVE CONTRIBUTION FUNCTION - 10 PER CENT HEIGHT +10 10 CUMULATIVE CONTRIBUTION FUNCTION - 50 PER CENT HEIGHT +11 11 CUMULATIVE CONTRIBUTION FUNCTION - 90 PER CENT HEIGHT +12 12 CUMULATIVE CONTRIBUTION FUNCTION - HEIGHT OF MAXIMUM GRADIENT +13 13 IR / TWO WV CHANNEL RATIOING METHOD +14 14 COMPOSITE HEIGHT ASSIGNMENT +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2164.table b/definitions/bufr/tables/0/wmo/32/codetables/2164.table new file mode 100644 index 000000000..4bf9aa961 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2164.table @@ -0,0 +1,5 @@ +0 0 LP - NORMS LEAST SQUARE MINIMUM +1 1 EN - EUCLIDEAN NORM WITH RADIANCE CORRELATION +2 2 CC - CROSS CORRELATION +3 3 STEREO MATCHING +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2165.table b/definitions/bufr/tables/0/wmo/32/codetables/2165.table new file mode 100644 index 000000000..628be0e75 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2165.table @@ -0,0 +1,7 @@ +1 1 CLEAR PATH +2 2 PARTLY CLOUDY PATH +3 3 CLOUDY PATH +4 4 APODIZED +5 5 UNAPODIZED +6 6 RECONSTRUCTED +7 7 CLOUD CLEARED diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2166.table b/definitions/bufr/tables/0/wmo/32/codetables/2166.table new file mode 100644 index 000000000..efac38f8d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2166.table @@ -0,0 +1,6 @@ +0 0 TYPE NOT DEFINED +1 1 AUTOMATED STATISTICAL REGRESSION +2 2 CLEAR PATH +3 3 PARTLY CLOUDY PATH +4 4 CLOUDY PATH +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2167.table b/definitions/bufr/tables/0/wmo/32/codetables/2167.table new file mode 100644 index 000000000..acb2f9d9c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2167.table @@ -0,0 +1,4 @@ +0 0 METHOD NOT DEFINED +1 1 1B RAW RADIANCE +2 2 PROCESSED RADIANCE +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2169.table b/definitions/bufr/tables/0/wmo/32/codetables/2169.table new file mode 100644 index 000000000..bd31667d0 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2169.table @@ -0,0 +1,5 @@ +0 0 CUP ROTOR +1 1 PROPELLER ROTOR +2 2 WIND OBSERVATION THROUGH AMBIENT NOISE (WOTAN) +3 3 SONIC +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2170.table b/definitions/bufr/tables/0/wmo/32/codetables/2170.table new file mode 100644 index 000000000..05bab00d7 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2170.table @@ -0,0 +1,5 @@ +0 0 SPECTRASENSORS WVSS-II, VERSION 1 +1 1 SPECTRASENSORS WVSS-II, VERSION 2 +2 2 SPECTRASENSORS WVSS-II, VERSION 3 +62 62 OTHER +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2172.table b/definitions/bufr/tables/0/wmo/32/codetables/2172.table new file mode 100644 index 000000000..3c3641ab6 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2172.table @@ -0,0 +1,4 @@ +0 0 RESERVED +1 1 RETRIEVAL FROM A NADIR SOUNDING +2 2 RETRIEVAL FROM A LIMB SOUNDING +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2175.table b/definitions/bufr/tables/0/wmo/32/codetables/2175.table new file mode 100644 index 000000000..2cf2a3d55 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2175.table @@ -0,0 +1,9 @@ +0 0 MANUAL MEASUREMENT +1 1 TIPPING BUCKET METHOD +2 2 WEIGHING METHOD +3 3 OPTICAL METHOD +4 4 PRESSURE METHOD +5 5 FLOAT METHOD +6 6 DROP COUNTER METHOD +14 14 OTHERS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2176.table b/definitions/bufr/tables/0/wmo/32/codetables/2176.table new file mode 100644 index 000000000..2c27a6f91 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2176.table @@ -0,0 +1,6 @@ +0 0 MANUAL OBSERVATION +1 1 VIDEO CAMERA METHOD +2 2 INFRARED METHOD +3 3 LASER METHOD +14 14 OTHERS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2177.table b/definitions/bufr/tables/0/wmo/32/codetables/2177.table new file mode 100644 index 000000000..e7bb67a7d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2177.table @@ -0,0 +1,6 @@ +0 0 MANUAL OBSERVATION +1 1 ULTRASONIC METHOD +2 2 VIDEO CAMERA METHOD +3 3 LASER METHOD +14 14 OTHERS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2178.table b/definitions/bufr/tables/0/wmo/32/codetables/2178.table new file mode 100644 index 000000000..f4f8b592c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2178.table @@ -0,0 +1,5 @@ +0 0 MANUAL OBSERVATION +1 1 OPTICAL METHOD +2 2 CAPACITIVE METHOD +14 14 OTHERS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2179.table b/definitions/bufr/tables/0/wmo/32/codetables/2179.table new file mode 100644 index 000000000..9e9ba189a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2179.table @@ -0,0 +1,6 @@ +0 0 MANUAL OBSERVATION +1 1 VAISALA ALGORITHM +2 2 ASOS (FAA) ALGORITHM +3 3 AWOS (CANADA) ALGORITHM +14 14 OTHERS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2180.table b/definitions/bufr/tables/0/wmo/32/codetables/2180.table new file mode 100644 index 000000000..0b21b2c26 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2180.table @@ -0,0 +1,8 @@ +0 0 MANUAL OBSERVATION +1 1 OPTICAL SCATTER SYSTEM COMBINED WITH PRECIPITATION OCCURRENCE SENSING SYSTEM +2 2 FORWARD AND/OR BACKSCATTER SYSTEM OF VISIBLE LIGHT +3 3 FORWARD AND/OR BACKSCATTER SYSTEM OF INFRARED LIGHT +4 4 INFRARED LIGHT EMITTING DIODE (IRED) SYSTEM +5 5 DOPPLER RADAR SYSTEM +14 14 OTHERS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2181.table b/definitions/bufr/tables/0/wmo/32/codetables/2181.table new file mode 100644 index 000000000..5096dc48a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2181.table @@ -0,0 +1,5 @@ +1 1 RAIN DETECTOR +2 2 FREEZING RAIN SENSOR +3 3 ICE DETECTION SENSOR +4 4 HAIL AND ICE PELLET SENSOR +20 20 OTHERS diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2182.table b/definitions/bufr/tables/0/wmo/32/codetables/2182.table new file mode 100644 index 000000000..4ffab2652 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2182.table @@ -0,0 +1,7 @@ +0 0 MANUAL MEASUREMENT +1 1 TRANSMISSOMETER SYSTEM (BASE > 25 M) +2 2 TRANSMISSOMETER SYSTEM (BASE < 25 M) +3 3 FORWARD SCATTER SYSTEM +4 4 BACKSCATTER SYSTEM +14 14 OTHERS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2183.table b/definitions/bufr/tables/0/wmo/32/codetables/2183.table new file mode 100644 index 000000000..a804ea1e1 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2183.table @@ -0,0 +1,9 @@ +0 0 MANUAL OBSERVATION +1 1 CEILOMETER SYSTEM +2 2 INFRARED CAMERA SYSTEM +3 3 MICROWAVE VISUAL CAMERA SYSTEM +4 4 SKY IMAGER SYSTEM +5 5 VIDEO TIME-LAPSED CAMERA SYSTEM +6 6 MICROPULSE LIDAR (MPL) SYSTEM +14 14 OTHERS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2184.table b/definitions/bufr/tables/0/wmo/32/codetables/2184.table new file mode 100644 index 000000000..cf5ee84ac --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2184.table @@ -0,0 +1,9 @@ +0 0 MANUAL OBSERVATION +1 1 LIGHTNING IMAGING SENSOR +2 2 ELECTRICAL STORM IDENTIFICATION SENSOR +3 3 MAGNETIC FINDER SENSOR +4 4 LIGHTNING STRIKE SENSOR +5 5 FLASH COUNTER +6 6 ATDNET VLF WAVEFORM CORRELATED SENSOR +14 14 OTHERS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2185.table b/definitions/bufr/tables/0/wmo/32/codetables/2185.table new file mode 100644 index 000000000..45b081051 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2185.table @@ -0,0 +1,7 @@ +0 0 MANUAL MEASUREMENT +1 1 BALANCED FLOATING METHOD +2 2 PRESSURE METHOD +3 3 ULTRASONIC METHOD +4 4 HYDRAULIC METHOD +14 14 OTHERS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2186.table b/definitions/bufr/tables/0/wmo/32/codetables/2186.table new file mode 100644 index 000000000..2a9e71004 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2186.table @@ -0,0 +1,24 @@ +1 1 PRECIPITATION-UNKNOWN TYPE +2 2 LIQUID PRECIPITATION NOT FREEZING +3 3 LIQUID FREEZING PRECIPITATION +4 4 DRIZZLE +5 5 RAIN +6 6 SOLID PRECIPITATION +7 7 SNOW +8 8 SNOW GRAINS +9 9 SNOW PELLETS +10 10 ICE PELLETS +11 11 ICE CRYSTALS +12 12 DIAMOND DUST +13 13 SMALL HAIL +14 14 HAIL +15 15 GLAZE +16 16 RIME +17 17 SOFT RIME +18 18 HARD RIME +19 19 CLEAR ICE +20 20 WET SNOW +21 21 HOAR FROST +22 22 DEW +23 23 WHITE DEW +24 24 CONVECTIVE PRECIPITATION diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2187.table b/definitions/bufr/tables/0/wmo/32/codetables/2187.table new file mode 100644 index 000000000..def3d2feb --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2187.table @@ -0,0 +1,11 @@ +1 1 DUST/SAND WHIRL +2 2 SQUALLS +3 3 SAND STORM +4 4 DUST STORM +5 5 LIGHTNING - CLOUD TO SURFACE +6 6 LIGHTNING - CLOUD TO CLOUD +7 7 LIGHTNING - DISTANT +8 8 THUNDERSTORM +9 9 FUNNEL CLOUD NOT TOUCHING SURFACE +10 10 FUNNEL CLOUD TOUCHING SURFACE +11 11 SPRAY diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2188.table b/definitions/bufr/tables/0/wmo/32/codetables/2188.table new file mode 100644 index 000000000..bb8114ca8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2188.table @@ -0,0 +1,10 @@ +1 1 FOG +2 2 ICE FOG +3 3 STEAM FOG +7 7 MIST +8 8 HAZE +9 9 SMOKE +10 10 VOLCANIC ASH +11 11 DUST +12 12 SAND +13 13 SNOW diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2189.table b/definitions/bufr/tables/0/wmo/32/codetables/2189.table new file mode 100644 index 000000000..61ac9e322 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2189.table @@ -0,0 +1,4 @@ +1 1 MANUAL OBSERVATION +2 2 ALL LIGHTNING STRIKES WITHOUT DISCRIMINATION +3 3 LIGHTNING STRIKES CLOUD TO GROUND ONLY +4 4 ALL LIGHTNING STRIKES WITH DISCRIMINATION BETWEEN CLOUD TO GROUND AND CLOUD TO CLOUD diff --git a/definitions/bufr/tables/0/wmo/32/codetables/2191.table b/definitions/bufr/tables/0/wmo/32/codetables/2191.table new file mode 100644 index 000000000..2e96256c7 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/2191.table @@ -0,0 +1,4 @@ +0 0 GEOPOTENTIAL HEIGHT CALCULATED FROM PRESSURE +1 1 GEOPOTENTIAL HEIGHT CALCULATED FROM GPS HEIGHT +2 2 GEOPOTENTIAL HEIGHT CALCULATED FROM RADAR HEIGHT +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/22056.table b/definitions/bufr/tables/0/wmo/32/codetables/22056.table new file mode 100644 index 000000000..28ddbf4e4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/22056.table @@ -0,0 +1,4 @@ +0 0 UPWARDS PROFILE +1 1 DOWNWARDS PROFILE +2 2 HORIZONTAL +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/22060.table b/definitions/bufr/tables/0/wmo/32/codetables/22060.table new file mode 100644 index 000000000..b73ad3235 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/22060.table @@ -0,0 +1,4 @@ +0 0 DROGUE IS DETACHED +1 1 DROGUE IS ATTACHED +2 2 DROGUE STATUS UNKNOWN +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/22061.table b/definitions/bufr/tables/0/wmo/32/codetables/22061.table new file mode 100644 index 000000000..aa8c62bae --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/22061.table @@ -0,0 +1,11 @@ +0 0 CALM (GLASSY) +1 1 CALM (RIPPLED) +2 2 SMOOTH (WAVELETS) +3 3 SLIGHT +4 4 MODERATE +5 5 ROUGH +6 6 VERY ROUGH +7 7 HIGH +8 8 VERY HIGH +9 9 PHENOMENAL +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/22067.table b/definitions/bufr/tables/0/wmo/32/codetables/22067.table new file mode 100644 index 000000000..0f28d5159 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/22067.table @@ -0,0 +1,109 @@ +1 1 SIPPICAN T-4 +2 2 SIPPICAN T-4 +11 11 SIPPICAN T-5 +21 21 SIPPICAN FAST DEEP +31 31 SIPPICAN T-6 +32 32 SIPPICAN T-6 +41 41 SIPPICAN T-7 +42 42 SIPPICAN T-7 +51 51 SIPPICAN DEEP BLUE +52 52 SIPPICAN DEEP BLUE +61 61 SIPPICAN T-10 +71 71 SIPPICAN T-11 +81 81 SIPPICAN AXBT (300 M PROBES) +201 201 TSK T-4 +202 202 TSK T-4 +211 211 TSK T-6 +212 212 TSK T-6 +221 221 TSK T-7 +222 222 TSK T-7 +231 231 TSK T-5 +241 241 TSK T-10 +251 251 TSK DEEP BLUE +252 252 TSK DEEP BLUE +261 261 TSK AXBT +401 401 SPARTON XBT-1 +411 411 SPARTON XBT-3 +421 421 SPARTON XBT-4 +431 431 SPARTON XBT-5 +441 441 SPARTON XBT-5DB +451 451 SPARTON XBT-6 +461 461 SPARTON XBT-7 +462 462 SPARTON XBT-7 +471 471 SPARTON XBT-7DB +481 481 SPARTON XBT-10 +491 491 SPARTON XBT-20 +501 501 SPARTON XBT-20DB +510 510 SPARTON 536 AXBT +700 700 SIPPICAN XCTD STANDARD +710 710 SIPPICAN XCTD DEEP +720 720 SIPPICAN AXCTD +730 730 SIPPICAN SXCTD +741 741 TSK XCTD/XCTD-1 +742 742 TSK XCTD-2 +743 743 TSK XCTD-2F +744 744 TSK XCTD-3 +745 745 TSK XCTD-4 +751 751 TSK AXCTD +780 780 SEA-BIRD SBE21 SEACAT THERMOSALINOGRAPH +781 781 SEA-BIRD SBE45 MICROTSG THERMOSALINOGRAPH +800 800 MECHANICAL BT +810 810 HYDROCAST +820 820 THERMISTOR CHAIN +825 825 TEMPERATURE (SONIC) AND PRESSURE PROBES +830 830 CTD +831 831 CTD-P-ALACE FLOAT +835 835 PROVOR IV +836 836 PROVOR III +837 837 ARVOR_C, SBE CONDUCTIVITY SENSOR +838 838 ARVOR_D, SBE CONDUCTIVITY SENSOR +839 839 PROVOR-II, SBE CONDUCTIVITY SENSOR +840 840 PROVOR, NO CONDUCTIVITY SENSOR +841 841 PROVOR, SEA-BIRD CONDUCTIVITY SENSOR +842 842 PROVOR, FSI CONDUCTIVITY SENSOR +843 843 POLAR OCEAN PROFILING SYSTEM (POPS), PROVOR, SBE CTD +844 844 PROFILING FLOAT, ARVOR, SEA-BIRD CONDUCTIVITY SENSOR +845 845 WEBB RESEARCH, NO CONDUCTIVITY SENSOR +846 846 WEBB RESEARCH, SEA-BIRD CONDUCTIVITY SENSOR +847 847 WEBB RESEARCH, FSI CONDUCTIVITY SENSOR +848 848 APEX-EM, SBE CONDUCTIVITY SENSOR +849 849 APEX_D, SBE CONDUCTIVITY SENSOR +850 850 SOLO, NO CONDUCTIVITY SENSOR +851 851 SOLO, SEA-BIRD CONDUCTIVITY SENSOR +852 852 SOLO, FSI CONDUCTIVITY SENSOR +853 853 PROFILING FLOAT, SOLO2 (SCRIPPS), SEA-BIRD CONDUCTIVITY SENSOR +854 854 S2A, SBE CONDUCTIVITY SENSOR +855 855 PROFILING FLOAT, NINJA, NO CONDUCTIVITY SENSOR +856 856 PROFILING FLOAT, NINJA, SBE CONDUCTIVITY SENSOR +857 857 PROFILING FLOAT, NINJA, FSI CONDUCTIVITY SENSOR +858 858 PROFILING FLOAT, NINJA, TSK CONDUCTIVITY SENSOR +859 859 PROFILING FLOAT, NEMO, NO CONDUCTIVITY SENSOR +860 860 PROFILING FLOAT, NEMO, SBE CONDUCTIVITY SENSOR +861 861 PROFILING FLOAT, NEMO, FSI CONDUCTIVITY SENSOR +862 862 SOLO_D, SBE CONDUCTIVITY SENSOR +863 863 NAVIS-A, SBE CONDUCTIVITY SENSOR +864 864 NINJA_D, SBE CONDUCTIVITY SENSOR +865 865 NOVA, SBE CONDUCTIVITY SENSOR +866 866 ALAMO, NO CONDUCTIVITY SENSOR +867 867 ALAMO, RBR CONDUCTIVITY SENSOR +868 868 ALAMO, SBE CONDUCTIVITY SENSOR +869 869 RESERVED +870 870 HM2000 +871 871 COPEX +872 872 S2X +873 873 ALTO +874 874 SOLO_D_MRV +900 900 SIPPICAN LMP-5 XBT +901 901 ICE-TETHERED PROFILER (ITP), SBE CTD +902 902 BROOKE OCEAN MOVING VESSEL PROFILER (MVP) +903 903 SEA-BIRD CTD +904 904 AML OCEANOGRAPHIC CTD +905 905 FALMOUTH SCIENTIFIC CTD +906 906 OCEAN SENSORS CTD +907 907 VALEPORT CTD +908 908 OCEANSCIENCE MVP +909 909 IDRONAUT CTD +910 910 SEA-BIRD SBE 38 +995 995 INSTRUMENT ATTACHED TO MARINE MAMMALS +996 996 INSTRUMENT ATTACHED TO ANIMALS OTHER THAN MARINE MAMMALS +1023 1023 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/22068.table b/definitions/bufr/tables/0/wmo/32/codetables/22068.table new file mode 100644 index 000000000..f6ddeb270 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/22068.table @@ -0,0 +1,43 @@ +1 1 SIPPICAN STRIP CHART RECORDER +2 2 SIPPICAN MK2A/SSQ-61 +3 3 SIPPICAN MK-9 +4 4 SIPPICAN AN/BHQ-7/MK8 +5 5 SIPPICAN MK-12 +6 6 SIPPICAN MK-21 +7 7 SIPPICAN MK-8 LINEAR RECORDER +8 8 SIPPICAN MK-10 +10 10 SPARTON SOC BT/SV PROCESSOR MODEL 100 +11 11 LOCKHEED-SANDERS MODEL OL5005 +20 20 ARGOS XBT-ST +21 21 CLS-ARGOS/PROTECNO XBT-ST MODEL-1 +22 22 CLS-ARGOS/PROTECNO XBT-ST MODEL-2 +30 30 BATHY SYSTEMS SA-810 +31 31 SCRIPPS METROBYTE CONTROLLER +32 32 MURAYAMA DENKI Z-60-16 III +33 33 MURAYAMA DENKI Z-60-16 II +34 34 PROTECNO ETSM2 +35 35 NAUTILUS MARINE SERVICE NMS-XBT +40 40 TSK MK-2A +41 41 TSK MK-2S +42 42 TSK MK-30 +43 43 TSK MK-30N +45 45 TSK MK-100 +46 46 TSK MK-130 COMPATIBLE RECORDER FOR BOTH XBT AND XCTD +47 47 TSK MK-130A XCTD RECORDER +48 48 TSK AXBT RECEIVER MK-300 +49 49 TSK MK-150/MK-150N COMPATIBLE RECORDER FOR BOTH XBT AND XCTD +50 50 JMA ASTOS +60 60 ARGOS COMMUNICATIONS, SAMPLING ON UP TRANSIT +61 61 ARGOS COMMUNICATIONS, SAMPLING ON DOWN TRANSIT +62 62 ORBCOMM COMMUNICATIONS, SAMPLING ON UP TRANSIT +63 63 ORBCOMM COMMUNICATIONS, SAMPLING ON DOWN TRANSIT +64 64 IRIDIUM COMMUNICATIONS, SAMPLING ON UP TRANSIT +65 65 IRIDIUM COMMUNICATIONS, SAMPLING ON DOWN TRANSIT +70 70 CSIRO DEVIL-1 XBT ACQUISITION SYSTEM +71 71 CSIRO DEVIL-2 XBT ACQUISITION SYSTEM +72 72 TURO/CSIRO QUOLL XBT ACQUISITION SYSTEM +80 80 APPLIED MICROSYSTEMS LTD., MICRO-SVT&P +81 81 SEA MAMMAL RESEARCH UNIT, UNIV. ST. ANDREWS, UK, UNCORRECTED SALINITY FROM A SEA MAMMAL MOUNTED INSTRUMENT +82 82 SEA MAMMAL RESEARCH UNIT, UNIV. ST. ANDREWS, UK, CORRECTED SALINITY FROM A SEA MAMMAL MOUNTED INSTRUMENT +99 99 UNKNOWN +127 127 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/22120.table b/definitions/bufr/tables/0/wmo/32/codetables/22120.table new file mode 100644 index 000000000..8c747ce66 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/22120.table @@ -0,0 +1,13 @@ +0 0 GOOD DATA +1 1 MAXIMUM (HIGH) WATER LEVEL LIMIT EXCEEDED +2 2 MINIMUM (LOW) WATER LEVEL LIMIT EXCEEDED +3 3 RATE OF CHANGE LIMIT FOR WATER LEVEL EXCEEDED +4 4 FLAT LIMIT FOR WATER LEVEL EXCEEDED +5 5 OBSERVED MINUS PREDICTED WATER LEVEL VALUE LIMIT EXCEEDED +6 6 OBSERVED VALUE FROM PRIMARY WATER LEVEL SENSOR MINUS BACKUP WATER LEVEL SENSOR +7 7 VALUE EXCEEDED SPECIFIED TOLERANCE FROM EXPECTED VALUE +8 8 WATER LEVEL QA PARAMETER (SIGMAS AND/OR OUTLIERS) LIMITS EXCEEDED +9 9 SEA TEMPERATURE OUTSIDE OF EXPECTED RANGE +10 10 MULTIPLE QC CHECKS (ABOVE) FAILED +11 11 NO AUTOMATED WATER LEVEL CHECKS PERFORMED +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/22121.table b/definitions/bufr/tables/0/wmo/32/codetables/22121.table new file mode 100644 index 000000000..7d4dfa821 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/22121.table @@ -0,0 +1,9 @@ +0 0 OPERATIONAL +1 1 POSSIBLE CLOGGING PROBLEM OR OTHERWISE DEGRADED WATER LEVEL DATA +2 2 POSSIBLE DATUM SHIFT +3 3 UNKNOWN STATUS OF WATER LEVEL SENSOR +4 4 SUSPECTED OR KNOWN SEA TEMPERATURE SENSOR PROBLEM +5 5 MULTIPLE POSSIBLE PROBLEMS (ABOVE) +6 6 BAD DATA - DO NOT DISSEMINATE! +7 7 NO MANUAL WATER LEVEL CHECKS PERFORMED +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/22122.table b/definitions/bufr/tables/0/wmo/32/codetables/22122.table new file mode 100644 index 000000000..aa9d5ebbe --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/22122.table @@ -0,0 +1,8 @@ +0 0 GOOD DATA FROM ALL SENSORS +1 1 WIND DIRECTION OUTSIDE OF ALLOWABLE RANGE +2 2 WIND SPEED OUTSIDE OF EXPECTED RANGE +3 3 BAROMETRIC PRESSURE OUTSIDE OF EXPECTED RANGE +4 4 AIR TEMPERATURE OUTSIDE OF EXPECTED RANGE +5 5 MULTIPLE SENSORS FAILED QC CHECKS +6 6 NO AUTOMATED METEOROLOGICAL DATA CHECKS PERFORMED +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/22123.table b/definitions/bufr/tables/0/wmo/32/codetables/22123.table new file mode 100644 index 000000000..acfb61609 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/22123.table @@ -0,0 +1,9 @@ +0 0 OPERATIONAL +1 1 SUSPECTED OR KNOWN PROBLEM WITH WIND SENSOR +2 2 SUSPECTED OR KNOWN PROBLEM WITH BAROMETRIC PRESSURE SENSOR +3 3 SUSPECTED OR KNOWN PROBLEM WITH AIR TEMPERATURE SENSOR +4 4 UNKNOWN STATUS OF ALL SENSORS +5 5 SUSPECTED OR KNOWN PROBLEMS WITH MULTIPLE SENSORS +6 6 BAD DATA - DO NOT DISSEMINATE! +7 7 NO MANUAL METEOROLOGICAL DATA CHECKS PERFORMED +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/22178.table b/definitions/bufr/tables/0/wmo/32/codetables/22178.table new file mode 100644 index 000000000..355848cc5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/22178.table @@ -0,0 +1,12 @@ +0 0 UNKNOWN +1 1 LM-2A DECK-MOUNTED +2 2 LM-3A HAND-HELD +3 3 LM-4A THRU-HULL +10 10 AL-12 TSK AUTOLAUNCHER (UP TO 12 PROBES) +20 20 SIO XBT AUTOLAUNCHER (UP TO 6 PROBES) +30 30 AOML XBT V6 AUTOLAUNCHER (UP TO 6 DEEP BLUE PROBES) +31 31 AOML XBT V8.0 AUTOLAUNCHER (UP TO 8 DEEP BLUE PROBES) +32 32 AOML XBT V8.1 AUTOLAUNCHER (UP TO 8 DEEP BLUE AND FAST DEEP PROBES) +90 90 CSIRO DEVIL AUTOLAUNCHER +100 100 MFSTEP AUTOLAUNCHER (MEDITERRANEAN) +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/23001.table b/definitions/bufr/tables/0/wmo/32/codetables/23001.table new file mode 100644 index 000000000..92ac5deaf --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/23001.table @@ -0,0 +1,5 @@ +0 0 RESERVED +1 1 ARTICLES 1 AND 2 +2 2 ARTICLE 3 +3 3 ARTICLE 5.2 +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/23002.table b/definitions/bufr/tables/0/wmo/32/codetables/23002.table new file mode 100644 index 000000000..12815c6a8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/23002.table @@ -0,0 +1,16 @@ +0 0 RESERVED +1 1 NUCLEAR REACTOR ON GROUND +2 2 NUCLEAR REACTOR AT SEA +3 3 NUCLEAR REACTOR IN SPACE +4 4 NUCLEAR FUEL FACILITY +5 5 RADIOACTIVE WASTE MANAGEMENT FACILITY +6 6 TRANSPORT OF NUCLEAR FUEL OR RADIOACTIVE WASTE +7 7 STORAGE OF NUCLEAR FUEL OR RADIOACTIVE WASTE +8 8 MANUFACTURE OF RADIO-ISOTOPES +9 9 USE OF RADIO-ISOTOPES +10 10 STORAGE OF RADIO-ISOTOPES +11 11 DISPOSAL OF RADIO-ISOTOPES +12 12 TRANSPORT OF RADIO-ISOTOPES +13 13 USE OF RADIO-ISOTOPES FOR POWER GENERATION +30 30 OTHER +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/23003.table b/definitions/bufr/tables/0/wmo/32/codetables/23003.table new file mode 100644 index 000000000..e3e891f9b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/23003.table @@ -0,0 +1,8 @@ +0 0 NO RELEASE +1 1 RELEASE TO ATMOSPHERE +2 2 RELEASE TO WATER +3 3 RELEASE TO BOTH ATMOSPHERE AND WATER +4 4 EXPECTED RELEASE TO ATMOSPHERE +5 5 EXPECTED RELEASE TO WATER +6 6 EXPECTED RELEASE TO BOTH ATMOSPHERE AND WATER +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/23004.table b/definitions/bufr/tables/0/wmo/32/codetables/23004.table new file mode 100644 index 000000000..383731cec --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/23004.table @@ -0,0 +1,6 @@ +0 0 NO COUNTERMEASURES +1 1 EVACUATION +2 2 SHELTERING +3 3 PROPHYLAXIS +4 4 WATER +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/23005.table b/definitions/bufr/tables/0/wmo/32/codetables/23005.table new file mode 100644 index 000000000..c5ff5ae75 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/23005.table @@ -0,0 +1,4 @@ +0 0 INCIDENT STATE DOES NOT UNDERSTAND WHAT HAPPENED +1 1 INCIDENT STATE KNOWS THE CAUSE OF THE INCIDENT +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/23006.table b/definitions/bufr/tables/0/wmo/32/codetables/23006.table new file mode 100644 index 000000000..fe7706af4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/23006.table @@ -0,0 +1,8 @@ +0 0 NO IMPROVEMENT +1 1 UNSTABLE +2 2 NO DETERIORATION +3 3 IMPROVING +4 4 STABLE +5 5 DETERIORATING +6 6 RESERVED +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/23007.table b/definitions/bufr/tables/0/wmo/32/codetables/23007.table new file mode 100644 index 000000000..59fc043a8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/23007.table @@ -0,0 +1,5 @@ +0 0 NO RELEASE +1 1 RELEASE HAS STOPPED +2 2 RELEASE +3 3 RELEASE IS CONTINUING +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/23008.table b/definitions/bufr/tables/0/wmo/32/codetables/23008.table new file mode 100644 index 000000000..4ac5c5837 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/23008.table @@ -0,0 +1,4 @@ +0 0 GASEOUS +1 1 PARTICULATE +2 2 MIXTURE OF GASEOUS AND PARTICULATE +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/23009.table b/definitions/bufr/tables/0/wmo/32/codetables/23009.table new file mode 100644 index 000000000..4ac5c5837 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/23009.table @@ -0,0 +1,4 @@ +0 0 GASEOUS +1 1 PARTICULATE +2 2 MIXTURE OF GASEOUS AND PARTICULATE +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/23016.table b/definitions/bufr/tables/0/wmo/32/codetables/23016.table new file mode 100644 index 000000000..ae84bae45 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/23016.table @@ -0,0 +1,4 @@ +0 0 NO SIGNIFICANT CHEMICAL TOXIC HEALTH EFFECT +1 1 SIGNIFICANT CHEMICAL TOXIC HEALTH EFFECT POSSIBLE +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/23018.table b/definitions/bufr/tables/0/wmo/32/codetables/23018.table new file mode 100644 index 000000000..ccdcc456d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/23018.table @@ -0,0 +1,6 @@ +0 0 RELEASE NO LONGER OCCURRING +1 1 RELEASE STILL OCCURRING +2 2 RELEASE EXPECTED TO INCREASE IN NEXT SIX HOURS +3 3 RELEASE EXPECTED TO REMAIN CONSTANT IN NEXT SIX HOURS +4 4 RELEASE EXPECTED TO DECREASE IN NEXT SIX HOURS +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/23031.table b/definitions/bufr/tables/0/wmo/32/codetables/23031.table new file mode 100644 index 000000000..cf20e26ee --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/23031.table @@ -0,0 +1,4 @@ +0 0 PLUME WILL NOT ENCOUNTER RAIN IN INCIDENT STATE +1 1 PLUME WILL ENCOUNTER RAIN IN INCIDENT STATE +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/23032.table b/definitions/bufr/tables/0/wmo/32/codetables/23032.table new file mode 100644 index 000000000..0f439b70d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/23032.table @@ -0,0 +1,4 @@ +0 0 NO SIGNIFICANT CHANGE EXPECTED WITHIN THE NEXT SIX HOURS +1 1 ANTICIPATED SIGNIFICANT CHANGE EXPECTED WITHIN THE NEXT SIX HOURS +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/24003.table b/definitions/bufr/tables/0/wmo/32/codetables/24003.table new file mode 100644 index 000000000..2daa8104b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/24003.table @@ -0,0 +1,5 @@ +0 0 NOBLE GASES +1 1 IODINES +2 2 CAESIUMS +3 3 TRANSURANICS +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25004.table b/definitions/bufr/tables/0/wmo/32/codetables/25004.table new file mode 100644 index 000000000..dfe451727 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25004.table @@ -0,0 +1,4 @@ +0 0 INCOHERENT +1 1 COHERENT (DOPPLER) +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25005.table b/definitions/bufr/tables/0/wmo/32/codetables/25005.table new file mode 100644 index 000000000..bc693a7bf --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25005.table @@ -0,0 +1,4 @@ +0 0 LOGARITHM - 2.5 DB +1 1 LINEAR +2 2 SPECIAL +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25006.table b/definitions/bufr/tables/0/wmo/32/codetables/25006.table new file mode 100644 index 000000000..bf9d1f52a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25006.table @@ -0,0 +1,5 @@ +0 0 ZH TO R CONVERSION +1 1 (ZH, ZDR) TO (NO, DO) TO R +2 2 (Z (F1), Z (F2)) TO ATTENUATION TO R +6 6 OTHER +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25009.table b/definitions/bufr/tables/0/wmo/32/codetables/25009.table new file mode 100644 index 000000000..bf34fb227 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25009.table @@ -0,0 +1,4 @@ +1 1 NONE +2 2 CALIBRATION TARGET OR SIGNAL +3 3 AGAINST RAINGAUGES +4 4 AGAINST OTHER INSTRUMENTS (DISDROMETER - ATTENUATION) diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25010.table b/definitions/bufr/tables/0/wmo/32/codetables/25010.table new file mode 100644 index 000000000..e88b3ca3c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25010.table @@ -0,0 +1,8 @@ +0 0 NONE +1 1 MAP +2 2 INSERTION OF HIGHER ELEVATION DATA AND MAP +3 3 ANALYSIS OF THE FLUCTUATING LOGARITHM SIGNAL (CLUTTER DETECTION) +4 4 EXTRACTION OF THE FLUCTUATING PART OF LINEAR SIGNAL (CLUTTER SUPPRESSION) +5 5 CLUTTER SUPPRESSION - DOPPLER +6 6 MULTIPARAMETER ANALYSIS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25011.table b/definitions/bufr/tables/0/wmo/32/codetables/25011.table new file mode 100644 index 000000000..f73949830 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25011.table @@ -0,0 +1,4 @@ +0 0 NONE +1 1 MAP OF CORRECTION FACTORS +2 2 INTERPOLATION (AZIMUTH OR ELEVATION) +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25012.table b/definitions/bufr/tables/0/wmo/32/codetables/25012.table new file mode 100644 index 000000000..c869a4ace --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25012.table @@ -0,0 +1,4 @@ +0 0 HARDWARE +1 1 SOFTWARE +2 2 HARDWARE AND SOFTWARE +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25013.table b/definitions/bufr/tables/0/wmo/32/codetables/25013.table new file mode 100644 index 000000000..b91ea71db --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25013.table @@ -0,0 +1 @@ +1 1 BRIGHT-BAND CORRECTION diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25015.table b/definitions/bufr/tables/0/wmo/32/codetables/25015.table new file mode 100644 index 000000000..043e587b6 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25015.table @@ -0,0 +1 @@ +1 1 RADOME ATTENUATION CORRECTION diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25017.table b/definitions/bufr/tables/0/wmo/32/codetables/25017.table new file mode 100644 index 000000000..ed48487e1 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25017.table @@ -0,0 +1 @@ +1 1 PRECIPITATION ATTENUATION CORRECTION diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25020.table b/definitions/bufr/tables/0/wmo/32/codetables/25020.table new file mode 100644 index 000000000..6133da3bf --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25020.table @@ -0,0 +1,4 @@ +0 0 FFT (FAST FOURIER TRANSFORM) +1 1 PPP (PULSE-PAIR PROCESSING) +2 2 VPC (VECTOR-PHASE CHANGE) +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25021.table b/definitions/bufr/tables/0/wmo/32/codetables/25021.table new file mode 100644 index 000000000..314716b3b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25021.table @@ -0,0 +1,5 @@ +1 1 SIMPLE AVERAGE +2 2 CONSENSUS AVERAGE +3 3 MEDIAN CHECK +4 4 VERTICAL CONSISTENCY CHECK +5 5 OTHER diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25022.table b/definitions/bufr/tables/0/wmo/32/codetables/25022.table new file mode 100644 index 000000000..95848784f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25022.table @@ -0,0 +1,8 @@ +1 1 UNPROCESSED +2 2 LAND SUSPECTED +3 3 WIND SPEED TOO LARGE +4 4 ICE DETECTED +5 5 RAIN DETECTED (MICROWAVE RETRIEVALS ONLY) +6 6 CLOUDY DETECTED (INFRA-RED RETRIEVALS ONLY) +7 7 COSMETIC VALUE +8 8 SST OUT OF RANGE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25023.table b/definitions/bufr/tables/0/wmo/32/codetables/25023.table new file mode 100644 index 000000000..e4840dc8c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25023.table @@ -0,0 +1,8 @@ +1 1 DEFAULT CONFIDENCE VALUE HAS BEEN USED +2 2 DEFAULT BIAS AND STANDARD DEVIATION HAVE BEEN USED +3 3 SUN GLINT SUSPECTED +4 4 SEA ICE RETRIEVAL FOR MICROWAVE DATA +5 5 HIGH WIND SPEED RETRIEVAL +6 6 INACCURATE SST DUE TO LOW SST (< 285K) (ONLY APPLIES TO THE TMI INSTRUMENT) +7 7 RELAXED RAIN CONTAMINATION SUSPECTED +8 8 POTENTIAL SIDE LOBE CONTAMINATION diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25024.table b/definitions/bufr/tables/0/wmo/32/codetables/25024.table new file mode 100644 index 000000000..81b26380c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25024.table @@ -0,0 +1,13 @@ +0 0 UNPROCESSED INFRARED RETRIEVAL +1 1 CLOUDY RETRIEVALS +2 2 BAD: DATA THAT ARE PROBABLY CONTAMINATED BY CLOUD +3 3 SUSPECT DATA +4 4 ACCEPTABLE DATA +5 5 EXCELLENT DATA +6 6 COOL SKIN SUSPECTED +10 10 UNPROCESSED MICROWAVE RETRIEVAL +11 11 QUESTIONABLE MICROWAVE RETRIEVAL THAT MAY BE CONTAMINATED +12 12 ACCEPTABLE MICROWAVE RETRIEVAL +13 13 HIGH PROBABILITY OF DIURNAL VARIABILITY +14 14 RESERVED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25029.table b/definitions/bufr/tables/0/wmo/32/codetables/25029.table new file mode 100644 index 000000000..fb00d01ca --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25029.table @@ -0,0 +1,5 @@ +1 1 RESERVED +2 2 CALIBRATION TARGET OR SIGNAL +3 3 AGAINST RAINGAUGES +4 4 AGAINST OTHER INSTRUMENTS (DISDROMETER - ATTENUATION) +5 5 RESERVED diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25030.table b/definitions/bufr/tables/0/wmo/32/codetables/25030.table new file mode 100644 index 000000000..c3235d6e5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25030.table @@ -0,0 +1,4 @@ +0 0 RUNNING MEAN SEA-SURFACE TEMPERATURE NOT USED BECAUSE USAGE CRITERIA NOT MET +1 1 RUNNING MEAN SEA-SURFACE TEMPERATURE NOT USED BECAUSE DATA NOT AVAILABLE +2 2 RUNNING MEAN SEA-SURFACE TEMPERATURE USED AS PREDICTOR +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25031.table b/definitions/bufr/tables/0/wmo/32/codetables/25031.table new file mode 100644 index 000000000..16ff950a1 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25031.table @@ -0,0 +1,6 @@ +0 0 RESERVED +1 1 NO THINNING APPLIED (ALL NATIVE MODEL LEVELS ARE INCLUDED FROM BASE TO TOP OF PSEUDO-SOUNDING) +2 2 NATIVE MODEL LEVELS ARE PRESENT ONLY IF THEY ARE SIGNIFICANT LEVELS AS PER REGULATIONS B/C 25 FOR CONVENTIONAL TEMP SOUNDINGS +3 3 A PREDEFINED SUBSET OF NATIVE MODEL LEVELS IS PRESENT +4 4 NO NATIVE MODEL LEVELS ARE PRESENT. ALL PROFILE LEVELS ARE INTERPOLATED TO A PREDEFINED SET OF PRESSURE COORDINATE LEVELS +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25032.table b/definitions/bufr/tables/0/wmo/32/codetables/25032.table new file mode 100644 index 000000000..9b894f470 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25032.table @@ -0,0 +1,4 @@ +0 0 RESERVED +1 1 DATA FROM LOW MODE +2 2 DATA FROM HIGH MODE +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25033.table b/definitions/bufr/tables/0/wmo/32/codetables/25033.table new file mode 100644 index 000000000..e7141c078 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25033.table @@ -0,0 +1,4 @@ +0 0 WIND PROFILER OPERATING IN SUBMODE A +1 1 WIND PROFILER OPERATING IN SUBMODE B +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25034.table b/definitions/bufr/tables/0/wmo/32/codetables/25034.table new file mode 100644 index 000000000..473338a40 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25034.table @@ -0,0 +1,3 @@ +1 1 TEST A PERFORMED AND FAILED +2 2 TEST B PERFORMED AND FAILED +3 3 TEST RESULTS INCONCLUSIVE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25035.table b/definitions/bufr/tables/0/wmo/32/codetables/25035.table new file mode 100644 index 000000000..a0c8faa59 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25035.table @@ -0,0 +1,8 @@ +0 0 NOT DEFINED +1 1 INDIVIDUAL VOLTAGE DEFLECTION +2 2 CURRENT BASED, ABOVE A THRESHOLD +3 3 VOLTAGE BASED, ABOVE A THRESHOLD +4 4 CONSENSUS OF SENSORS, CURRENT ABOVE A THRESHOLD +5 5 CONSENSUS OF SENSORS, VOLTAGE ABOVE A THRESHOLD +6 6 RESERVED +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25036.table b/definitions/bufr/tables/0/wmo/32/codetables/25036.table new file mode 100644 index 000000000..79ebd8887 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25036.table @@ -0,0 +1,4 @@ +0 0 NETWORK OF SEVERAL DIRECTION-FINDERS OPERATING ON THE SAME INDIVIDUAL ATMOSPHERICS +1 1 NETWORK OF SEVERAL ARRIVAL-TIME STATIONS OPERATING ON THE SAME INDIVIDUAL ATMOSPHERICS +6 6 SINGLE STATION RANGE BEARING TECHNIQUE +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25040.table b/definitions/bufr/tables/0/wmo/32/codetables/25040.table new file mode 100644 index 000000000..3ddf12e20 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25040.table @@ -0,0 +1,10 @@ +0 0 NON-SPECIFIC MODE +1 1 FIRST GUESS DATA +2 2 CLOUD DATA +3 3 AVERAGE VECTOR DATA +4 4 PRIMARY DATA +5 5 GUESS DATA +6 6 VECTOR DATA +7 7 TRACER DATA; THIS IMAGE +8 8 TRACER DATA TO NEXT IMAGE +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25041.table b/definitions/bufr/tables/0/wmo/32/codetables/25041.table new file mode 100644 index 000000000..f388da0c2 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25041.table @@ -0,0 +1,4 @@ +0 0 DIRECTION ORIGINALLY REPORTED IN TRUE DEGREES +1 1 DIRECTION ORIGINALLY REPORTED USING CODE TABLE 0700, FM 13 +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25042.table b/definitions/bufr/tables/0/wmo/32/codetables/25042.table new file mode 100644 index 000000000..f3cf05999 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25042.table @@ -0,0 +1,4 @@ +0 0 SPEED ORIGINALLY REPORTED IN METRES PER SECOND +1 1 SPEED ORIGINALLY REPORTED USING CODE TABLE 4451, FM 13 +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25053.table b/definitions/bufr/tables/0/wmo/32/codetables/25053.table new file mode 100644 index 000000000..af3413851 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25053.table @@ -0,0 +1,6 @@ +1 1 GOOD +2 2 REDUNDANT +3 3 QUESTIONABLE +4 4 BAD +5 5 EXPERIMENTAL +6 6 PRECIPITATING diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25063.table b/definitions/bufr/tables/0/wmo/32/codetables/25063.table new file mode 100644 index 000000000..a8970eaf4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25063.table @@ -0,0 +1,4 @@ +0 0 NOT DEFINED +1 1 MAIN PROCESSOR +2 2 BACKUP PROCESSOR +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25069.table b/definitions/bufr/tables/0/wmo/32/codetables/25069.table new file mode 100644 index 000000000..e627613dd --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25069.table @@ -0,0 +1,7 @@ +1 1 SMOOTHED +2 2 BASELINE ADJUSTED +3 3 NORMALIZED TIME INTERVAL +4 4 OUTLIER CHECKED +5 5 PLAUSIBILITY CHECKED +6 6 CONSISTENCY CHECKED +7 7 INTERPOLATED diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25086.table b/definitions/bufr/tables/0/wmo/32/codetables/25086.table new file mode 100644 index 000000000..294fa6977 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25086.table @@ -0,0 +1,4 @@ +0 0 DEPTHS ARE NOT CORRECTED +1 1 DEPTHS ARE CORRECTED +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25090.table b/definitions/bufr/tables/0/wmo/32/codetables/25090.table new file mode 100644 index 000000000..309fefcc0 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25090.table @@ -0,0 +1,11 @@ +0 0 ORBIT COMPUTED DURING A MANOEUVRE +1 1 ADJUSTED MISSION OPERATIONS ORBIT +2 2 EXTRAPOLATED MISSION OPERATIONS ORBIT +3 3 ADJUSTED (PRELIMINARY/PRECISE) ORBIT +4 4 (PRELIMINARY/PRECISE) ORBIT IS ESTIMATED DURING A MANOEUVRE PERIOD +5 5 (PRELIMINARY/PRECISE) ORBIT IS INTERPOLATED OVER A TRACKING DATA GAP +6 6 (PRELIMINARY/PRECISE) ORBIT IS EXTRAPOLATED FOR A DURATION LESS THAN 1 DAY +7 7 (PRELIMINARY/PRECISE) ORBIT IS EXTRAPOLATED FOR A DURATION THAT RANGES FROM 1 DAY TO 2 DAYS +8 8 (PRELIMINARY/PRECISE) ORBIT IS EXTRAPOLATED FOR A DURATION LARGER THAN 2 DAYS, OR THAT THE ORBIT IS EXTRAPOLATED JUST AFTER A MANOEUVRE +9 9 DORIS* DIODE** NAVIGATOR ORBIT +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25093.table b/definitions/bufr/tables/0/wmo/32/codetables/25093.table new file mode 100644 index 000000000..e547e6c81 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25093.table @@ -0,0 +1,3 @@ +1 1 NO CORRECTION +2 2 VERTICAL VELOCITY CORRECTION +7 7 ALL CORRECTIONS diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25095.table b/definitions/bufr/tables/0/wmo/32/codetables/25095.table new file mode 100644 index 000000000..c446a5045 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25095.table @@ -0,0 +1 @@ +1 1 ALTIMETER OPERATING (0 IF NOMINAL, 1 IF BACKUP) diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25096.table b/definitions/bufr/tables/0/wmo/32/codetables/25096.table new file mode 100644 index 000000000..89dcc3914 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25096.table @@ -0,0 +1,4 @@ +1 1 MODE INDICATOR (0 IF MODE 2, 1 IF MODE 1) +2 2 MODE 1 CALIBRATION SEQUENCE INDICATOR (0 IF NORMAL DATA TAKING EITHER MODE 1 OR 2, 1 IF MODE 1 CALIBRATION SEQUENCE) BITS 3 AND 4 INDICATE ACTIVE 23.8 GHZ CHANNEL(S): +3 3 CHANNEL 2 (0 IF ON, 1 IF OFF) +4 4 CHANNEL 3 (0 IF ON, 1 IF OFF) diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25097.table b/definitions/bufr/tables/0/wmo/32/codetables/25097.table new file mode 100644 index 000000000..d4e1e4646 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25097.table @@ -0,0 +1,11 @@ +0 0 RANGES BETWEEN 0 AND 30 CM +1 1 RANGES BETWEEN 30 AND 60 CM +2 2 RANGES BETWEEN 60 AND 90 CM +3 3 RANGES BETWEEN 90 AND 120 CM +4 4 RANGES BETWEEN 120 AND 150 CM +5 5 RANGES BETWEEN 150 AND 180 CM +6 6 RANGES BETWEEN 180 AND 210 CM +7 7 RANGES BETWEEN 210 AND 240 CM +8 8 RANGES BETWEEN 240 AND 270 CM +9 9 RANGES LARGER THAN 270 CM +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25098.table b/definitions/bufr/tables/0/wmo/32/codetables/25098.table new file mode 100644 index 000000000..9d505a5f4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25098.table @@ -0,0 +1,8 @@ +1 1 KU BAND RANGE +2 2 C BAND RANGE +3 3 KU BAND SWH* +4 4 C BAND SWH* +5 5 KU BAND BACKSCATTER COEFFICIENT +6 6 C BAND BACKSCATTER COEFFICIENT +7 7 OFF NADIR ANGLE FROM KU BAND WAVEFORM PARAMETERS +8 8 OFF NADIR ANGLE FROM PLATFORM diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25099.table b/definitions/bufr/tables/0/wmo/32/codetables/25099.table new file mode 100644 index 000000000..40f35b18c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25099.table @@ -0,0 +1,6 @@ +1 1 KU BAND RANGE INSTRUMENTAL CORRECTION +2 2 C BAND RANGE INSTRUMENTAL CORRECTION +3 3 KU BAND SWH* INSTRUMENTAL CORRECTION +4 4 C BAND SWH* INSTRUMENTAL CORRECTION +5 5 KU BAND BACKSCATTER COEFFICIENT INSTRUMENTAL CORRECTION +6 6 C BAND BACKSCATTER COEFFICIENT INSTRUMENTAL CORRECTION diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25110.table b/definitions/bufr/tables/0/wmo/32/codetables/25110.table new file mode 100644 index 000000000..912e01f54 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25110.table @@ -0,0 +1,6 @@ +1 1 RAW DATA ANALYSIS USED FOR RAW DATA CORRECTION. CORRECTION DONE USING DEFAULT PARAMETERS +2 2 RAW DATA ANALYSIS USED FOR RAW DATA CORRECTION. CORRECTION DONE USING RAW DATA ANALYSIS RESULTS +3 3 ANTENNA ELEVATION PATTERN CORRECTION APPLIED +4 4 NOMINAL CHIRP REPLICA USED +5 5 RECONSTRUCTED CHIRP USED +6 6 SLANT RANGE TO GROUND RANGE CONVERSION APPLIED diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25112.table b/definitions/bufr/tables/0/wmo/32/codetables/25112.table new file mode 100644 index 000000000..a2a4ec9d3 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25112.table @@ -0,0 +1,5 @@ +1 1 BAND SPECIFIC RANGE +2 2 BAND SPECIFIC SIGNIFICANT WAVE HEIGHT +3 3 BAND SPECIFIC BACKSCATTER COEFFICIENT +4 4 OFF NADIR ANGLE FROM BAND SPECIFIC WAVEFORM PARAMETERS +5 5 OFF NADIR ANGLE FROM PLATFORM diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25113.table b/definitions/bufr/tables/0/wmo/32/codetables/25113.table new file mode 100644 index 000000000..ef394b626 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25113.table @@ -0,0 +1,3 @@ +1 1 BAND SPECIFIC RANGE INSTRUMENTAL CORRECTION +2 2 BAND SPECIFIC SIGNIFICANT WAVE HEIGHT INSTRUMENTAL CORRECTION +3 3 BAND SPECIFIC BACKSCATTER COEFFICIENT INSTRUMENTAL CORRECTION diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25120.table b/definitions/bufr/tables/0/wmo/32/codetables/25120.table new file mode 100644 index 000000000..bdb9f96b3 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25120.table @@ -0,0 +1,4 @@ +0 0 PERCENTAGE OF DSRS* FREE OF PROCESSING ERRORS DURING LEVEL 2 PROCESSING IS GREATER THAN THE ACCEPTABLE THRESHOLD +1 1 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL 2 PROCESSING IS LESS THAN THE ACCEPTABLE THRESHOLD +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25122.table b/definitions/bufr/tables/0/wmo/32/codetables/25122.table new file mode 100644 index 000000000..1085ef980 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25122.table @@ -0,0 +1,4 @@ +0 0 HARDWARE CONFIGURATION FOR RF IS A +1 1 HARDWARE CONFIGURATION FOR RF IS B +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25123.table b/definitions/bufr/tables/0/wmo/32/codetables/25123.table new file mode 100644 index 000000000..70f0670e9 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25123.table @@ -0,0 +1,4 @@ +0 0 HARDWARE CONFIGURATION FOR HPA IS A +1 1 HARDWARE CONFIGURATION FOR HPA IS B +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25124.table b/definitions/bufr/tables/0/wmo/32/codetables/25124.table new file mode 100644 index 000000000..dce5b0492 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25124.table @@ -0,0 +1,4 @@ +0 0 PERCENTAGE OF DSRS** FREE OF PROCESSING ERRORS DURING LEVEL 2 PROCESSING IS GREATER THAN THE ACCEPTABLE THRESHOLD +1 1 PERCENTAGE OF DSRS** FREE OF PROCESSING ERRORS DURING LEVEL 2 PROCESSING IS LESS THAN THE ACCEPTABLE THRESHOLD +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25150.table b/definitions/bufr/tables/0/wmo/32/codetables/25150.table new file mode 100644 index 000000000..7b452c327 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25150.table @@ -0,0 +1,3 @@ +1 1 THE DVORAK'S VIS (VISUAL IMAGERY) INTENSITY ANALYSIS +2 2 THE DVORAK'S EIR (ENHANCED INFRARED IMAGERY) INTENSITY ANALYSIS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25174.table b/definitions/bufr/tables/0/wmo/32/codetables/25174.table new file mode 100644 index 000000000..c8a11b6d7 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25174.table @@ -0,0 +1,13 @@ +1 1 PIXEL IS AFFECTED BY RFI EFFECTS +2 2 PIXEL IS LOCATED IN THE HEXAGONAL ALIAS DIRECTION CENTRED ON SUN ALIAS +3 3 PIXEL IS CLOSE TO THE BORDER DELIMITING THE EXTENDED ALIAS FREE ZONE +4 4 PIXEL IS INSIDE THE EXTENDED ALIAS FREE ZONE +5 5 PIXEL IS INSIDE THE EXCLUSIVE OF ALIAS FREE ZONE +6 6 PIXEL IS LOCATED IN A ZONE WHERE A MOON ALIAS WAS RECONSTRUCTED +7 7 PIXEL IS LOCATED IN A ZONE WHERE SUN REFLECTION HAS BEEN DETECTED +8 8 PIXEL IS LOCATED IN A ZONE WHERE SUN ALIAS WAS RECONSTRUCTED +9 9 FLAT TARGET TRANSFORMATION HAS BEEN PERFORMED DURING IMAGE RECONSTRUCTION OF THIS PIXEL +10 10 SCENE HAS BEEN COMBINED WITH AN ADJUSTMENT SCENE IN OPPOSITE POLARIZATION DURING IMAGE RECONSTRUCTION TO ACCOUNT FOR CROSS-POLARIZATION LEAKAGE +11 11 DIRECT MOON CORRECTION HAS BEEN PERFORMED DURING IMAGE RECONSTRUCTION OF THIS PIXEL +12 12 REFLECTED SUN CORRECTION HAS BEEN PERFORMED DURING IMAGE RECONSTRUCTION OF THIS PIXEL +13 13 DIRECT SUN CORRECTION HAS BEEN PERFORMED DURING IMAGE RECONSTRUCTION OF THIS IMAGE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25181.table b/definitions/bufr/tables/0/wmo/32/codetables/25181.table new file mode 100644 index 000000000..2c1eabf7c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25181.table @@ -0,0 +1,3 @@ +0 0 OK +1 1 PERCENTAGE OF L2B RECORDS FREE OF PROCESSING ERRORS IS LESS THAN ACCEPTABLE THRESHOLD +2 2 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25182.table b/definitions/bufr/tables/0/wmo/32/codetables/25182.table new file mode 100644 index 000000000..9827b1dfd --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25182.table @@ -0,0 +1,3 @@ +0 0 OK +1 1 PERCENTAGE OF L1B RECORDS FREE OF PROCESSING ERRORS IS LESS THAN ACCEPTABLE THRESHOLD +2 2 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25184.table b/definitions/bufr/tables/0/wmo/32/codetables/25184.table new file mode 100644 index 000000000..29005c133 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25184.table @@ -0,0 +1,3 @@ +0 0 OK +1 1 PRODUCT AS A DURATION SHORTER THAN THE INPUT PRODUCT +2 2 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25185.table b/definitions/bufr/tables/0/wmo/32/codetables/25185.table new file mode 100644 index 000000000..ac18abae4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25185.table @@ -0,0 +1,2 @@ +0 0 AES 256 +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25187.table b/definitions/bufr/tables/0/wmo/32/codetables/25187.table new file mode 100644 index 000000000..683c09709 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25187.table @@ -0,0 +1,3 @@ +0 0 VALID +1 1 INVALID +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25188.table b/definitions/bufr/tables/0/wmo/32/codetables/25188.table new file mode 100644 index 000000000..b18013f21 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25188.table @@ -0,0 +1,6 @@ +0 0 PRESSURE ADJUSTED TO MEAN SEA LEVEL FOLLOWING WMO-NO. 8 FOR LOW LEVEL (< 50 M) STATIONS +1 1 PRESSURE ADJUSTED TO MEAN SEA LEVEL FOLLOWING WMO-NO. 8 FOR STATIONS BELOW 750 M +2 2 PRESSURE ADJUSTED TO SEA LEVEL FOLLOWING NATIONAL PRACTICE +3 3 PRESSURE ADJUSTED TO LOCAL WATER LEVEL FOLLOWING NATIONAL PRACTICE +4 4 PRESSURE NOT CORRECTED FOR HEIGHT +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25190.table b/definitions/bufr/tables/0/wmo/32/codetables/25190.table new file mode 100644 index 000000000..184eab4ab --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25190.table @@ -0,0 +1,7 @@ +0 0 LOW RESOLUTION MODE (LRM) +1 1 SYNTHETIC APERTURE RADAR (SAR) +2 2 LRM AND SAR (INTERLEAVED) +3 3 RESERVED +4 4 PSEUDO-LRM (PLRM) +5 5 SAR INTERFEROMETRIC MODE (SARIN) +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/25191.table b/definitions/bufr/tables/0/wmo/32/codetables/25191.table new file mode 100644 index 000000000..ea22b6872 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/25191.table @@ -0,0 +1,4 @@ +0 0 OPEN LOOP +1 1 CLOSED LOOP +2 2 OPEN LOOP FIXED GAIN +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/26010.table b/definitions/bufr/tables/0/wmo/32/codetables/26010.table new file mode 100644 index 000000000..f825040f4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/26010.table @@ -0,0 +1,25 @@ +1 1 0100 INCLUDED +2 2 0200 INCLUDED +3 3 0300 INCLUDED +4 4 0400 INCLUDED +5 5 0500 INCLUDED +6 6 0600 INCLUDED +7 7 0700 INCLUDED +8 8 0800 INCLUDED +9 9 0900 INCLUDED +10 10 1000 INCLUDED +11 11 1100 INCLUDED +12 12 1200 INCLUDED +13 13 1300 INCLUDED +14 14 1400 INCLUDED +15 15 1500 INCLUDED +16 16 1600 INCLUDED +17 17 1700 INCLUDED +18 18 1800 INCLUDED +19 19 1900 INCLUDED +20 20 2000 INCLUDED +21 21 2100 INCLUDED +22 22 2200 INCLUDED +23 23 2300 INCLUDED +24 24 2400 INCLUDED +25 25 UNKNOWN MIXTURE OF HOURS diff --git a/definitions/bufr/tables/0/wmo/32/codetables/29001.table b/definitions/bufr/tables/0/wmo/32/codetables/29001.table new file mode 100644 index 000000000..148124391 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/29001.table @@ -0,0 +1,8 @@ +0 0 GNOMONIC PROJECTION +1 1 POLAR STEREOGRAPHIC PROJECTION +2 2 LAMBERT'S CONFORMAL CONIC PROJECTION +3 3 MERCATOR'S PROJECTION +4 4 SCANNING CONE (RADAR)* +5 5 RESERVED +6 6 NO PROJECTION +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/29002.table b/definitions/bufr/tables/0/wmo/32/codetables/29002.table new file mode 100644 index 000000000..1d7efd0c8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/29002.table @@ -0,0 +1,4 @@ +0 0 CARTESIAN +1 1 POLAR +2 2 OTHER +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/3001.table b/definitions/bufr/tables/0/wmo/32/codetables/3001.table new file mode 100644 index 000000000..cfa2c1acf --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/3001.table @@ -0,0 +1,11 @@ +0 0 LAND STATION (SYNOPTIC NETWORK) +1 1 SHALLOW WATER STATION (FIXED TO SEA/LAKE FLOOR) +2 2 SHIP +3 3 RIG/PLATFORM +4 4 MOORED BUOY +5 5 DRIFTING BUOY (OR DRIFTER) +6 6 ICE BUOY +7 7 LAND STATION (LOCAL NETWORK) +8 8 LAND VEHICLE +9 9 AUTONOMOUS MARINE VEHICLE +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/3003.table b/definitions/bufr/tables/0/wmo/32/codetables/3003.table new file mode 100644 index 000000000..cf530237f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/3003.table @@ -0,0 +1,8 @@ +0 0 SCREEN +1 1 SLING/WHIRLING +2 2 UNSCREENED +3 3 RADIATION SHIELD +4 4 ASPIRATED (E.G. ASSMANN) +5 5 OTHER SHELTER +6 6 HANDHELD +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/30031.table b/definitions/bufr/tables/0/wmo/32/codetables/30031.table new file mode 100644 index 000000000..80cce26f1 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/30031.table @@ -0,0 +1,13 @@ +0 0 PPI +1 1 COMPOSITE +2 2 CAPPL +3 3 VERTICAL SECTION +4 4 ALPHANUMERIC DATA +5 5 MAP OF SUBJECT CLUTTER +6 6 MAP +7 7 TEST PICTURE +8 8 COMMENTS +9 9 MAP OF GROUND OCCULTATION +10 10 MAP OF RADAR BEAM HEIGHT +14 14 OTHER +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/30032.table b/definitions/bufr/tables/0/wmo/32/codetables/30032.table new file mode 100644 index 000000000..942cb5d7f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/30032.table @@ -0,0 +1,9 @@ +1 1 MAP +2 2 SATELLITE IR +3 3 SATELLITE VIS +4 4 SATELLITE WV +5 5 SATELLITE MULTISPECTRAL +6 6 SYNOPTIC OBSERVATIONS +7 7 FORECAST PARAMETERS +8 8 LIGHTNING DATA +15 15 OTHER DATA diff --git a/definitions/bufr/tables/0/wmo/32/codetables/3004.table b/definitions/bufr/tables/0/wmo/32/codetables/3004.table new file mode 100644 index 000000000..571e234bf --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/3004.table @@ -0,0 +1,11 @@ +0 0 STEVENSON SCREEN +1 1 MARINE STEVENSON SCREEN +2 2 CYLINDRICAL SECTION PLATE SHIELD +3 3 CONCENTRIC TUBE +4 4 RECTANGULAR SECTION SHIELD +5 5 SQUARE SECTION SHIELD +6 6 TRIANGULAR SECTION SHIELD +7 7 OPEN COVERED LEAN-TO +8 8 OPEN COVERED INVERTED V ROOF +9 9 INTEGRATED (E.G. CHILLED MIRROR) +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/3008.table b/definitions/bufr/tables/0/wmo/32/codetables/3008.table new file mode 100644 index 000000000..e321d5562 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/3008.table @@ -0,0 +1,4 @@ +0 0 NATURAL VENTILATION IN USE +1 1 ARTIFICIAL ASPIRATION IN USE: CONSTANT FLOW AT TIME OF READING +2 2 ARTIFICIAL ASPIRATION IN USE: VARIABLE FLOW AT TIME OF READING +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/3010.table b/definitions/bufr/tables/0/wmo/32/codetables/3010.table new file mode 100644 index 000000000..75746a1c3 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/3010.table @@ -0,0 +1,12 @@ +0 0 RESERVED +1 1 ADCP +2 2 GEK (GEOMAGNETIC ELECTROKINETOGRAPH) +3 3 SHIP'S SET AND DRIFT DETERMINED BY FIXES 3-6 HOURS APART +4 4 SHIP'S SET AND DRIFT DETERMINED BY FIXES MORE THAN 6 HOURS BUT LESS THAN 12 HOURS APART +5 5 DRIFT OF BUOY +6 6 ADCP +7 7 ADCP BOTTOM TRACKING MODE +8 8 ELECTROMAGNETIC SENSOR +9 9 ROTOR AND VANE +10 10 LOWERED ADCP +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/3011.table b/definitions/bufr/tables/0/wmo/32/codetables/3011.table new file mode 100644 index 000000000..748826848 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/3011.table @@ -0,0 +1,4 @@ +0 0 DEPTH CALCULATED USING FALL RATE EQUATION +1 1 DEPTH CALCULATED FROM WATER PRESSURE/EQUATION OF STATE +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/3012.table b/definitions/bufr/tables/0/wmo/32/codetables/3012.table new file mode 100644 index 000000000..35bdeadd5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/3012.table @@ -0,0 +1,3 @@ +0 0 ANDERRAA OXYGEN OPTODE +1 1 WINKLER BOTTLE +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/3016.table b/definitions/bufr/tables/0/wmo/32/codetables/3016.table new file mode 100644 index 000000000..792788f42 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/3016.table @@ -0,0 +1,9 @@ +0 0 FAST LANE BETWEEN THE WHEEL TRACKS +1 1 FAST LANE BETWEEN THE WHEEL TRACKS IN THE OPPOSITE DIRECTION +2 2 FAST LANE IN THE WHEEL TRACKS +3 3 FAST LANE IN THE WHEEL TRACKS IN THE OPPOSITE DIRECTION +4 4 SLOW LANE BETWEEN THE WHEEL TRACKS +5 5 SLOW LANE BETWEEN THE WHEEL TRACKS IN THE OPPOSITE DIRECTION +6 6 SLOW LANE IN THE WHEEL TRACKS +7 7 SLOW LANE IN THE WHEEL TRACKS IN THE OPPOSITE DIRECTION +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/3017.table b/definitions/bufr/tables/0/wmo/32/codetables/3017.table new file mode 100644 index 000000000..e94c0a449 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/3017.table @@ -0,0 +1,5 @@ +1 1 AUTOMATIC +2 2 MANNED +3 3 EVENT TRIGGERED +4 4 LONGER TIME PERIOD THAN THE STANDARD +5 5 RESERVED diff --git a/definitions/bufr/tables/0/wmo/32/codetables/3018.table b/definitions/bufr/tables/0/wmo/32/codetables/3018.table new file mode 100644 index 000000000..b3769ae40 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/3018.table @@ -0,0 +1,22 @@ +0 0 FREE TRACK WITHOUT FURTHER INFORMATION +1 1 FREE TRACK, EMBANKMENT +2 2 FREE TRACK, FLAT RELATIVE TO SURROUNDINGS +3 3 FREE TRACK, WATER BASIN(S) IN VICINITY +4 4 FREE TRACK, FOREST +5 5 FREE TRACK, CLEFT +6 6 FREE TRACK, ON HILLTOP +7 7 FREE TRACK, ON HILLTOP, FOREST +8 8 FREE TRACK, IN VALLEY +9 9 FREE TRACK, IN VALLEY, FOREST +10 10 FREE TRACK, NORTH INCLINATION +11 11 FREE TRACK, NORTH INCLINATION, FOREST +12 12 FREE TRACK, SOUTH INCLINATION +13 13 FREE TRACK, SOUTH INCLINATION, FOREST +20 20 BRIDGE WITHOUT FURTHER INFORMATION +21 21 BRIDGE ACROSS A VALLEY IN AN URBAN AREA +22 22 BRIDGE ACROSS A VALLEY WITH FOREST/MEADOWS/FIELDS +23 23 BRIDGE ACROSS STREET/TRACK +24 24 BRIDGE ACROSS BIG RIVER/CANAL +25 25 BRIDGE ACROSS RIVER/CANAL OF MEDIUM SIZE +26 26 BRIDGE ACROSS A SMALL STREAM/LOADING CANAL +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/3019.table b/definitions/bufr/tables/0/wmo/32/codetables/3019.table new file mode 100644 index 000000000..2f55b0028 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/3019.table @@ -0,0 +1,8 @@ +0 0 ASPHALT +1 1 CONCRETE +2 2 CONCRETE CONSTRUCTION +3 3 STEEL-GIRDER CONSTRUCTION +4 4 BOX GIRDER BRIDGE +5 5 ORTHOTROPIC SLAB +6 6 DRAIN ASPHALT +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/3020.table b/definitions/bufr/tables/0/wmo/32/codetables/3020.table new file mode 100644 index 000000000..9f0feaea7 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/3020.table @@ -0,0 +1,5 @@ +0 0 WOOD +1 1 METAL ALLOY +2 2 PLASTIC/GRP +3 3 REED/GRASS/LEAF +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/3021.table b/definitions/bufr/tables/0/wmo/32/codetables/3021.table new file mode 100644 index 000000000..27e1bfad4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/3021.table @@ -0,0 +1,4 @@ +0 0 UNHEATED +1 1 HEATED +2 2 NOT APPLICABLE +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/3022.table b/definitions/bufr/tables/0/wmo/32/codetables/3022.table new file mode 100644 index 000000000..daf67e27f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/3022.table @@ -0,0 +1,4 @@ +0 0 NATIONAL HYDROMETEOROLOGICAL/WEATHER SERVICE +1 1 OTHER +2 2 STANDARDS INSTITUTE +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/3023.table b/definitions/bufr/tables/0/wmo/32/codetables/3023.table new file mode 100644 index 000000000..9e683c891 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/3023.table @@ -0,0 +1,8 @@ +0 0 SINGLE V-SECTION LOUVERS +1 1 OVERLAPPING LOUVERS +2 2 DOUBLE V-SECTION LOUVERS +3 3 NON-OVERLAPPING LOUVERS +4 4 VENTED, NON-LOUVERED +5 5 NOT APPLICABLE +6 6 RESERVED FOR FUTURE USE +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/3027.table b/definitions/bufr/tables/0/wmo/32/codetables/3027.table new file mode 100644 index 000000000..8280e8602 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/3027.table @@ -0,0 +1,8 @@ +0 0 SOLO (SINGLE RADIOSONDE) +1 1 BLOCK +2 2 BAR +3 3 CROSS +4 4 T-RIG +5 5 DOUBLE T-RIG +6 6 COMPLEX +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/3028.table b/definitions/bufr/tables/0/wmo/32/codetables/3028.table new file mode 100644 index 000000000..9cc805953 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/3028.table @@ -0,0 +1,8 @@ +0 0 MULTI POINT MANUAL SNOW SURVEY +1 1 SINGLE POINT MANUAL SNOW WATER EQUIVALENT MEASUREMENT +2 2 SNOW PILLOW OR SNOW SCALE +3 3 PASSIVE GAMMA +4 4 GNSS/GPS METHODS +5 5 COSMIC RAY ATTENUATION +6 6 TIME DOMAIN REFLECTOMETRY +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/31021.table b/definitions/bufr/tables/0/wmo/32/codetables/31021.table new file mode 100644 index 000000000..fe82f5819 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/31021.table @@ -0,0 +1,9 @@ +0 0 RESERVED +1 1 1-BIT INDICATOR OF QUALITY +2 2 2-BIT INDICATOR OF QUALITY +6 6 4-BIT INDICATOR OF QUALITY CONTROL CLASS ACCORDING TO GTSPP +7 7 PERCENTAGE CONFIDENCE +8 8 0 = NOT SUSPECTED, 1 = SUSPECTED, 2 = RESERVED, 3 = INFORMATION NOT REQUIRED +9 9 0 = DATA PRESENT, GOOD, COLLOCATED, 1 = DATA AVAILABLE BUT OF DEGRADED QUALITY AND NOT USED, 2 = NO SPATIOTEMPORALLY COLLOCATED DATA AVAILABLE, 3-14 = NOT USED (RESERVED), 15 = MISSING VALUE +21 21 1-BIT INDICATOR OF CORRECTION +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/31031.table b/definitions/bufr/tables/0/wmo/32/codetables/31031.table new file mode 100644 index 000000000..1f2742950 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/31031.table @@ -0,0 +1 @@ +1 1 diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33002.table b/definitions/bufr/tables/0/wmo/32/codetables/33002.table new file mode 100644 index 000000000..4177c0577 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33002.table @@ -0,0 +1,4 @@ +0 0 DATA NOT SUSPECT +1 1 DATA SUSPECT +2 2 RESERVED +3 3 QUALITY INFORMATION NOT GIVEN diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33003.table b/definitions/bufr/tables/0/wmo/32/codetables/33003.table new file mode 100644 index 000000000..7577129b0 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33003.table @@ -0,0 +1,5 @@ +0 0 DATA NOT SUSPECT +1 1 DATA SLIGHTLY SUSPECT +2 2 DATA HIGHLY SUSPECT +3 3 DATA CONSIDERED UNFIT FOR USE +7 7 QUALITY INFORMATION NOT GIVEN diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33005.table b/definitions/bufr/tables/0/wmo/32/codetables/33005.table new file mode 100644 index 000000000..8d7569ad2 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33005.table @@ -0,0 +1,23 @@ +1 1 NO AUTOMATED METEOROLOGICAL DATA CHECKS PERFORMED +2 2 PRESSURE DATA SUSPECT +3 3 WIND DATA SUSPECT +4 4 AIR TEMPERATURE DATA SUSPECT +5 5 WET-BULB TEMPERATURE DATA SUSPECT +6 6 HUMIDITY DATA SUSPECT +7 7 GROUND TEMPERATURE DATA SUSPECT +8 8 SOIL TEMPERATURE (DEPTH 1) DATA SUSPECT +9 9 SOIL TEMPERATURE (DEPTH 2) DATA SUSPECT +10 10 SOIL TEMPERATURE (DEPTH 3) DATA SUSPECT +11 11 SOIL TEMPERATURE (DEPTH 4) DATA SUSPECT +12 12 SOIL TEMPERATURE (DEPTH 5) DATA SUSPECT +13 13 CLOUD DATA SUSPECT +14 14 VISIBILITY DATA SUSPECT +15 15 PRESENT WEATHER DATA SUSPECT +16 16 LIGHTNING DATA SUSPECT +17 17 ICE DEPOSIT DATA SUSPECT +18 18 PRECIPITATION DATA SUSPECT +19 19 STATE OF GROUND DATA SUSPECT +20 20 SNOW DATA SUSPECT +21 21 WATER CONTENT DATA SUSPECT +22 22 EVAPORATION/EVAPOTRANSPIRATION DATA SUSPECT +23 23 SUNSHINE DATA SUSPECT diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33006.table b/definitions/bufr/tables/0/wmo/32/codetables/33006.table new file mode 100644 index 000000000..0ea44a50b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33006.table @@ -0,0 +1,5 @@ +0 0 SELF-CHECK OK +1 1 AT LEAST ONE WARNING ACTIVE, NO ALARMS +2 2 AT LEAST ONE ALARM ACTIVE +3 3 SENSOR FAILURE +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33015.table b/definitions/bufr/tables/0/wmo/32/codetables/33015.table new file mode 100644 index 000000000..f585808d0 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33015.table @@ -0,0 +1,16 @@ +0 0 PASSED ALL CHECKS +1 1 MISSING DATA CHECK +2 2 DESCENDING/REASCENDING BALLOON CHECK +3 3 DATA PLAUSIBILITY CHECK (ABOVE LIMITS) +4 4 DATA PLAUSIBILITY CHECK (BELOW LIMITS) +5 5 SUPERADIABATIC LAPSE RATE CHECK +6 6 LIMITING ANGLES CHECK +7 7 ASCENSION RATE CHECK +8 8 EXCESSIVE CHANGE FROM PREVIOUS FLIGHT +9 9 BALLOON OVERHEAD CHECK +10 10 WIND SPEED CHECK +11 11 WIND DIRECTION CHECK +12 12 DEPENDENCY CHECK +13 13 DATA VALID BUT MODIFIED +14 14 DATA OUTLIER CHECK +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33020.table b/definitions/bufr/tables/0/wmo/32/codetables/33020.table new file mode 100644 index 000000000..ba7a4d4ea --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33020.table @@ -0,0 +1,8 @@ +0 0 GOOD +1 1 INCONSISTENT +2 2 DOUBTFUL +3 3 WRONG +4 4 NOT CHECKED +5 5 HAS BEEN CHANGED +6 6 ESTIMATED +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33021.table b/definitions/bufr/tables/0/wmo/32/codetables/33021.table new file mode 100644 index 000000000..e3e67ae8c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33021.table @@ -0,0 +1,4 @@ +0 0 WITHIN LIMITS +1 1 OUTSIDE LIMITS +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33022.table b/definitions/bufr/tables/0/wmo/32/codetables/33022.table new file mode 100644 index 000000000..50ef65feb --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33022.table @@ -0,0 +1,4 @@ +0 0 GOOD (SEVERAL IDENTICAL REPORTS HAVE BEEN RECEIVED) +1 1 DUBIOUS (NO IDENTICAL REPORTS HAVE BEEN RECEIVED) +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33023.table b/definitions/bufr/tables/0/wmo/32/codetables/33023.table new file mode 100644 index 000000000..896c816a9 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33023.table @@ -0,0 +1,4 @@ +0 0 RELIABLE (LOCATION WAS MADE OVER TWO SATELLITE PASSES) +1 1 LATEST KNOWN (NO LOCATION OVER THE CORRESPONDING PASS) +2 2 DUBIOUS (LOCATION MADE OVER ONE PASS ONLY; A SECOND SOLUTION IS POSSIBLE IN 5 PER CENT OF THE CASES) +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33024.table b/definitions/bufr/tables/0/wmo/32/codetables/33024.table new file mode 100644 index 000000000..771e04b81 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33024.table @@ -0,0 +1,10 @@ +0 0 RESERVED +1 1 EXCELLENT - WITHIN 3 METRES +2 2 GOOD - WITHIN 10 METRES +3 3 FAIR - WITHIN 20 METRES +4 4 POOR - MORE THAN 20 METRES +5 5 EXCELLENT - WITHIN 10 FEET +6 6 GOOD - WITHIN 30 FEET +7 7 FAIR - WITHIN 60 FEET +8 8 POOR - MORE THAN 60 FEET +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33025.table b/definitions/bufr/tables/0/wmo/32/codetables/33025.table new file mode 100644 index 000000000..4da695aa0 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33025.table @@ -0,0 +1,5 @@ +0 0 TIME INTERPOLATED, LATITUDE AND LONGITUDE REPORTED +1 1 TIME REPORTED, LATITUDE AND LONGITUDE INTERPOLATED +2 2 TIME, LATITUDE, AND LONGITUDE INTERPOLATED +3 3 TIME, LATITUDE, AND LONGITUDE REPORTED +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33026.table b/definitions/bufr/tables/0/wmo/32/codetables/33026.table new file mode 100644 index 000000000..08c61254b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33026.table @@ -0,0 +1,17 @@ +0 0 NORMAL OPERATIONS - MEASUREMENT MODE +1 1 NORMAL OPERATIONS - NON-MEASUREMENT MODE +2 2 SMALL RH +3 3 HUMIDITY ELEMENT IS WET +4 4 HUMIDITY ELEMENT CONTAMINATED +5 5 HEATER FAIL +6 6 HEATER FAIL AND WET/CONTAMINATED HUMIDITY ELEMENT +7 7 AT LEAST ONE OF THE INPUT PARAMETERS USED IN THE CALCULATION OF MIXING RATIO IS INVALID +8 8 NUMERIC ERROR +9 9 SENSOR NOT INSTALLED +10 10 CALCULATED RH > 100% +11 11 INPUT LASER POWER TOO LOW +12 12 PROBE WV TEMPERATURE OUT OF RANGE +13 13 PROBE WV PRESSURE OUT OF RANGE +14 14 SPECTRAL LINE OUT OF RANGE +15 15 NO LASER OUTPUT +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33027.table b/definitions/bufr/tables/0/wmo/32/codetables/33027.table new file mode 100644 index 000000000..c563af46f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33027.table @@ -0,0 +1,6 @@ +0 0 RADIUS >= 1500 M +1 1 500 M =< RADIUS <1500 M +2 2 250 M =< RADIUS < 500 M +3 3 RADIUS < 250 M +4 4 =< 100 M +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33028.table b/definitions/bufr/tables/0/wmo/32/codetables/33028.table new file mode 100644 index 000000000..84bd666f9 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33028.table @@ -0,0 +1,5 @@ +1 1 NOMINAL +2 2 DEGRADED BY SW ERROR; ANY ERROR REPORTED BY THE ALGORITHMS +3 3 DEGRADED BY INSTRUMENT ERROR +4 4 DEGRADED BY CORRUPTED /MISSING ADF +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33030.table b/definitions/bufr/tables/0/wmo/32/codetables/33030.table new file mode 100644 index 000000000..c9e36c0f4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33030.table @@ -0,0 +1,7 @@ +1 1 DO NOT USE SCAN FOR PRODUCT GENERATION +2 2 TIME SEQUENCE ERROR DETECTED WITH THIS SCAN +3 3 DATA GAP PRECEDES THIS SCAN +4 4 NO CALIBRATION +5 5 NO EARTH LOCATION +6 6 FIRST GOOD TIME FOLLOWING A CLOCK UPDATE +7 7 INSTRUMENT STATUS CHANGED WITH THIS SCAN diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33031.table b/definitions/bufr/tables/0/wmo/32/codetables/33031.table new file mode 100644 index 000000000..c11fd4a09 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33031.table @@ -0,0 +1,21 @@ +1 1 TIME FIELD IS BAD BUT CAN PROBABLY BE INFERRED FROM THE PREVIOUS GOOD TIME +2 2 TIME FIELD IS BAD AND CANNOT BE INFERRED FROM THE PREVIOUS GOOD TIME +3 3 THIS RECORD STARTS A SEQUENCE THAT IS INCONSISTENT WITH PREVIOUS TIMES (I.E. THERE IS A TIME DISCONTINUITY). THIS MAY OR MAY NOT BE ASSOCIATED WITH A SPACECRAFT CLOCK UPDATE (SEE SCAN LINE STATUS FLAGS FOR ATOVS) +4 4 START OF A SEQUENCE THAT APPARENTLY REPEATS SCAN TIMES THAT HAVE BEEN PREVIOUSLY ACCEPTED +5 5 SCAN LINE WAS NOT CALIBRATED BECAUSE OF BAD TIME +6 6 SCAN LINE WAS CALIBRATED USING FEWER THAN THE PREFERRED NUMBER OF SCAN LINES BECAUSE OF PROXIMITY TO START OR END OF DATA OR TO A DATA GAP +7 7 SCAN LINE WAS NOT CALIBRATED BECAUSE OF BAD OR INSUFFICIENT PRT DATA +8 8 SCAN LINE WAS CALIBRATED BUT WITH MARGINAL PRT DATA +9 9 SOME UNCALIBRATED CHANNELS ON THIS SCAN +10 10 UNCALIBRATED DUE TO INSTRUMENT MODE +11 11 QUESTIONABLE CALIBRATION BECAUSE OF ANTENNA POSITION ERROR OF SPACE VIEW +12 12 QUESTIONABLE CALIBRATION BECAUSE OF ANTENNA POSITION ERROR OF BLACK BODY +13 13 NOT EARTH LOCATED BECAUSE OF BAD TIME +14 14 EARTH LOCATION QUESTIONABLE BECAUSE OF QUESTIONABLE TIME CODE (SEE TIME PROBLEM CODE BITS) +15 15 EARTH LOCATION QUESTIONABLE - ONLY MARGINAL AGREEMENT WITH REASONABLENESS CHECK +16 16 EARTH LOCATION QUESTIONABLE - FAILS REASONABLENESS CHECK +17 17 EARTH LOCATION QUESTIONABLE BECAUSE OF ANTENNA POSITION CHECK +18 18 SCAN LINE CALIBRATION COLD BLACK BODY +19 19 SCAN LINE CALIBRATION WARM BLACK BODY +20 20 SCAN LINE CALIBRATION SPACE VIEW +21 21 EARTH VIEW diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33032.table b/definitions/bufr/tables/0/wmo/32/codetables/33032.table new file mode 100644 index 000000000..33307f50a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33032.table @@ -0,0 +1,7 @@ +1 1 NO GOOD BLACKBODY COUNTS FOR SCAN LINE +2 2 NO GOOD SPACE VIEW COUNTS FOR THIS LINE +3 3 NO GOOD PRTS FOR THIS LINE +4 4 SOME BAD BLACKBODY VIEW COUNTS FOR THIS LINE +5 5 SOME BAD SPACE VIEW COUNTS FOR THIS LINE +6 6 SOME BAD PRT TEMPS ON THIS LINE +7 7 QUALITY FOR THIS SCAN IS REDUCED diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33033.table b/definitions/bufr/tables/0/wmo/32/codetables/33033.table new file mode 100644 index 000000000..6fd320510 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33033.table @@ -0,0 +1,3 @@ +1 1 SET IF SECONDARY CALIBRATION USED +22 22 SET IF ALL THE CHANNELS ARE MISSING +23 23 SUSPECT diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33035.table b/definitions/bufr/tables/0/wmo/32/codetables/33035.table new file mode 100644 index 000000000..01996bae4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33035.table @@ -0,0 +1,10 @@ +0 0 AUTOMATIC QUALITY CONTROL PASSED AND NOT MANUALLY CHECKED +1 1 AUTOMATIC QUALITY CONTROL PASSED AND MANUALLY CHECKED AND PASSED +2 2 AUTOMATIC QUALITY CONTROL PASSED AND MANUALLY CHECKED AND DELETED +3 3 AUTOMATIC QUALITY CONTROL FAILED AND MANUALLY NOT CHECKED +4 4 AUTOMATIC QUALITY CONTROL FAILED AND MANUALLY CHECKED AND FAILED +5 5 AUTOMATIC QUALITY CONTROL FAILED AND MANUALLY CHECKED AND RE-INSERTED +6 6 AUTOMATIC QUALITY CONTROL FLAGGED DATA AS QUESTIONABLE AND NOT MANUALLY CHECKED +7 7 AUTOMATIC QUALITY CONTROL FLAGGED DATA AS QUESTIONABLE AND MANUALLY CHECKED AND FAILED +8 8 MANUALLY CHECKED AND FAILED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33037.table b/definitions/bufr/tables/0/wmo/32/codetables/33037.table new file mode 100644 index 000000000..9f26652a5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33037.table @@ -0,0 +1,19 @@ +1 1 U DEPARTURE FROM GUESS +2 2 V DEPARTURE FROM GUESS +3 3 U AND V DEPARTURE FROM GUESS +4 4 U ACCELERATION +5 5 V ACCELERATION +6 6 U AND V ACCELERATION +7 7 POSSIBLE LAND FEATURE +8 8 U ACCELERATION AND POSSIBLE LAND FEATURE +9 9 V ACCELERATION AND POSSIBLE LAND FEATURE +10 10 U AND V ACCELERATION AND POSSIBLE LAND FEATURE +11 11 BAD WIND GUESS +12 12 CORRELATION FAILURE +13 13 SEARCH BOX OFF EDGE OF AREA +14 14 TARGET BOX OFF EDGE OF AREA +15 15 PIXEL BRIGHTNESS OUT OF BOUNDS (NOISY LINE) +16 16 TARGET OUTSIDE OF LATITUDE/LONGITUDE BOX +17 17 TARGET OUTSIDE OF PRESSURE MINIMUM/MAXIMUM +18 18 AUTOEDITOR FLAGGED SLOW VECTOR +19 19 AUTOEDITOR FLAGGED VECTORS diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33038.table b/definitions/bufr/tables/0/wmo/32/codetables/33038.table new file mode 100644 index 000000000..3dc1192e8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33038.table @@ -0,0 +1,9 @@ +1 1 TOTAL ZENITH DELAY QUALITY IS CONSIDERED POOR +2 2 GALILEO SATELLITES USED +3 3 GLONASS SATELLITES USED +4 4 GPS SATELLITES USED +5 5 METEOROLOGICAL DATA APPLIED +6 6 ATMOSPHERIC LOADING CORRECTION APPLIED +7 7 OCEAN TIDE LOADING APPLIED +8 8 CLIMATE QUALITY DATA PROCESSING +9 9 NEAR-REAL TIME DATA PROCESSING diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33039.table b/definitions/bufr/tables/0/wmo/32/codetables/33039.table new file mode 100644 index 000000000..50ff12664 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33039.table @@ -0,0 +1,9 @@ +1 1 NON-NOMINAL QUALITY +2 2 OFFLINE PRODUCT +3 3 ASCENDING OCCULTATION FLAG +4 4 EXCESS PHASE PROCESSING NON-NOMINAL +5 5 BENDING ANGLE PROCESSING NON-NOMINAL +6 6 REFRACTIVITY PROCESSING NON-NOMINAL +7 7 METEOROLOGICAL PROCESSING NON-NOMINAL +14 14 BACKGROUND PROFILE NON-NOMINAL +15 15 BACKGROUND (I.E. NOT RETRIEVED) PROFILE PRESENT diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33041.table b/definitions/bufr/tables/0/wmo/32/codetables/33041.table new file mode 100644 index 000000000..8bbdba90a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33041.table @@ -0,0 +1,4 @@ +0 0 THE FOLLOWING VALUE IS THE TRUE VALUE +1 1 THE FOLLOWING VALUE IS HIGHER THAN THE TRUE VALUE (THE MEASUREMENT HIT THE LOWER LIMIT OF THE INSTRUMENT) +2 2 THE FOLLOWING VALUE IS LOWER THAN THE TRUE VALUE (THE MEASUREMENT HIT THE HIGHER LIMIT OF THE INSTRUMENT) +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33042.table b/definitions/bufr/tables/0/wmo/32/codetables/33042.table new file mode 100644 index 000000000..b75447a4a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33042.table @@ -0,0 +1,5 @@ +0 0 EXCLUSIVE LOWER LIMIT (>) +1 1 INCLUSIVE LOWER LIMIT (>=) +2 2 EXCLUSIVE UPPER LIMIT (<) +3 3 INCLUSIVE UPPER LIMIT (=<) +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33043.table b/definitions/bufr/tables/0/wmo/32/codetables/33043.table new file mode 100644 index 000000000..398d9ab2c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33043.table @@ -0,0 +1,4 @@ +1 1 SEA MDS. NADIR ONLY SST RETRIEVAL USED 3.7 MICRON CHANNEL. LAND MDS RESERVED +2 2 SEA MDS. DUAL VIEW SST RETRIEVAL USED 3.7 MICRON CHANNEL. LAND MDS RESERVED +3 3 NADIR VIEW CONTAINS DAY TIME DATA +4 4 FORWARD VIEW CONTAINS DAY TIME DATA diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33044.table b/definitions/bufr/tables/0/wmo/32/codetables/33044.table new file mode 100644 index 000000000..01746c795 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33044.table @@ -0,0 +1,14 @@ +1 1 INPUT DATA MEAN OUTSIDE NOMINAL RANGE FLAG +2 2 INPUT DATA STANDARD DEVIATION OUTSIDE NOMINAL RANGE FLAG +3 3 NUMBER OF INPUT DATA GAPS > THRESHOLD VALUE +4 4 PERCENTAGE OF MISSING LINES > THRESHOLD VALUE +5 5 DOPPLER CENTROID UNCERTAIN. CONFIDENCE MEASURE < SPECIFIC VALUE +6 6 DOPPLER AMBIGUITY ESTIMATE UNCERTAIN. CONFIDENCE MEASURE < SPECIFIC VALUE +7 7 OUTPUT DATA MEAN OUTSIDE NOMINAL RANGE FLAG +8 8 OUTPUT DATA STANDARD DEVIATION OUTSIDE NOMINAL RANGE FLAG +9 9 CHIRP RECONSTRUCTION FAILED OR IS OF LOW QUALITY FLAG +10 10 DATA SET MISSING +11 11 INVALID DOWNLINK PARAMETERS +12 12 AZIMUTH CUT-OFF ITERATION COUNT. THE AZIMUTH CUT-OFF FIT DID NOT CONVERGE WITHIN A MINIMUM NUMBER OF ITERATIONS +13 13 AZIMUTH CUT-OFF FIT DID NOT CONVERGE WITHIN A MINIMUM NUMBER OF ITERATIONS +14 14 PHASE INFORMATION CONFIDENCE MEASURE. THE IMAGINARY SPECTRAL PEAK IS LESS THAN A MINIMUM THRESHOLD, OR THE ZERO LAG SHIFT IS GREATER THAN A MINIMUM THRESHOLD diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33047.table b/definitions/bufr/tables/0/wmo/32/codetables/33047.table new file mode 100644 index 000000000..f69b56e18 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33047.table @@ -0,0 +1,27 @@ +1 1 ERROR DETECTED AND ATTEMPTS TO RECOVER MADE +2 2 ANOMALY IN ON-BOARD DATA HANDLING (OBDH) VALUE DETECTED +3 3 ANOMALY IN ULTRA STABLE OSCILLATOR PROCESSING (USOP) VALUE DETECTED +4 4 ERRORS DETECTED BY ON-BOARD COMPUTER +5 5 AUTOMATIC GAIN CONTROL (AGC) OUT OF RANGE +6 6 RECEPTION (RX) DELAY FAULT. RX DISTANCE OUT OF RANGE +7 7 WAVE FORM SAMPLES FAULT IDENTIFIER. ERROR +8 8 S BAND ANOMALY/ERROR DETECTED +12 12 BRIGHTNESS TEMPERATURE (CHANNEL 1) OUT OF RANGE +13 13 BRIGHTNESS TEMPERATURE (CHANNEL 2) OUT OF RANGE +14 14 RESERVED +15 15 KU BAND OCEAN RETRACKING ERROR +16 16 S BAND OCEAN RETRACKING ERROR +17 17 KU BAND ICE 1 RETRACKING ERROR +18 18 S BAND ICE 1 RETRACKING ERROR +19 19 KU BAND ICE 2 RETRACKING ERROR +20 20 S BAND ICE 2 RETRACKING ERROR +21 21 KU BAND SEA ICE RETRACKING ERROR +22 22 ARITHMETIC FAULT ERROR +23 23 METEO DATA STATE. NO MAP +24 24 METEO DATA STATE. 1 MAP +25 25 METEO DATA STATE. 2 MAPS DEGRADED +26 26 METEO DATA STATE. 2 MAPS NOMINAL +27 27 ORBIT PROPAGATOR STATUS FOR PROPAGATION MODE, SEVERAL ERRORS +28 28 ORBIT PROPAGATOR STATUS FOR PROPAGATION MODE, WARNING DETECTED +29 29 ORBIT PROPAGATOR STATUS FOR INITIALIZATION MODE, SEVERAL ERRORS +30 30 ORBIT PROPAGATOR STATUS FOR INITIALIZATION MODE, WARNING DETECTED diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33048.table b/definitions/bufr/tables/0/wmo/32/codetables/33048.table new file mode 100644 index 000000000..312ba4071 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33048.table @@ -0,0 +1,4 @@ +0 0 INVERSION SUCCESSFUL +1 1 INVERSION NOT SUCCESSFUL +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33049.table b/definitions/bufr/tables/0/wmo/32/codetables/33049.table new file mode 100644 index 000000000..bdde0619b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33049.table @@ -0,0 +1,4 @@ +0 0 EXTERNAL WIND DIRECTION USED DURING INVERSION +1 1 EXTERNAL WIND DIRECTION NOT USED DURING INVERSION +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33050.table b/definitions/bufr/tables/0/wmo/32/codetables/33050.table new file mode 100644 index 000000000..ee7bb6deb --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33050.table @@ -0,0 +1,9 @@ +0 0 UNQUALIFIED +1 1 CORRECT VALUE (ALL CHECKS PASSED) +2 2 PROBABLY GOOD BUT VALUE INCONSISTENT WITH STATISTICS (DIFFER FROM CLIMATOLOGY) +3 3 PROBABLY BAD (SPIKE, GRADIENT, ETC., IF OTHER TESTS PASSED) +4 4 BAD VALUE, IMPOSSIBLE VALUE (OUT OF SCALE, VERTICAL INSTABILITY, CONSTANT PROFILE) +5 5 VALUE MODIFIED DURING QUALITY CONTROL +8 8 INTERPOLATED VALUE +9 9 GOOD FOR OPERATIONAL USE; CAUTION; CHECK LITERATURE FOR OTHER USES +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33060.table b/definitions/bufr/tables/0/wmo/32/codetables/33060.table new file mode 100644 index 000000000..741430292 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33060.table @@ -0,0 +1,4 @@ +0 0 GOOD +1 1 BAD +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33066.table b/definitions/bufr/tables/0/wmo/32/codetables/33066.table new file mode 100644 index 000000000..533b2a89e --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33066.table @@ -0,0 +1,2 @@ +22 22 CORRELATION SURFACE CONSTRAINT FAILS +23 23 RESERVED diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33070.table b/definitions/bufr/tables/0/wmo/32/codetables/33070.table new file mode 100644 index 000000000..8a0467b65 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33070.table @@ -0,0 +1,14 @@ +0 0 GOOD RETRIEVAL +1 1 BAD AEROSOL INFORMATION FLAG OR NOAA-16 RADIANCE ANOMALY +2 2 SOLAR ZENITH ANGLE GREATER THAN 84 DEGREES +3 3 380 NM RESIDUE GREATER THAN LIMIT +4 4 OZONE INCONSISTENCY +5 5 DIFFERENCE BETWEEN PROFILE OZONE AND STEP 3 TOTAL OZONE EXCEEDS THRESHOLD (SET TO 25 DU) +6 6 STEP 1 OZONE ITERATION DID NOT CONVERGE +7 7 ANY CHANNEL RESIDUE GREATER THAN 16 OR BAD RADIANCE +8 8 INSUFFICIENT PIXELS - NOT PROCESSED +9 9 FIRST GUESS GOOD - OZONE FORECAST DATA USED +10 10 HIGH CLOUD IN PIXEL - NOT PROCESSED +11 11 SUCCESSFUL OZONE RETRIEVAL +12 12 UNSUCCESSFUL OZONE RETRIEVAL +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33071.table b/definitions/bufr/tables/0/wmo/32/codetables/33071.table new file mode 100644 index 000000000..8c9d4ded5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33071.table @@ -0,0 +1,10 @@ +0 0 GOOD RETRIEVAL +1 1 SOLAR ZENITH ANGLE GREATER THAN 84 DEGREES +2 2 DIFFERENCE BETWEEN STEP 3 AND PROFILE TOTAL OZONE GREATER THAN LIMIT (25 DU) +3 3 AVERAGE FINAL RESIDUE FOR WAVELENGTHS USED IN RETRIEVAL GREATER THAN THRESHOLD +4 4 FINAL RESIDUE GREATER THAN 3 TIMES A PRIORI ERROR +5 5 DIFFERENCE BETWEEN RETRIEVED AND A PRIORI GREATER THAN 3 TIMES A PRIORI ERROR +6 6 NON-CONVERGENT SOLUTION +7 7 UPPER LEVEL PROFILE ANOMALY OR STRAY LIGHT ANOMALY +8 8 INITIAL RESIDUE GREATER THAN 18.0 N-VALUE UNITS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33072.table b/definitions/bufr/tables/0/wmo/32/codetables/33072.table new file mode 100644 index 000000000..fcc7f0972 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33072.table @@ -0,0 +1,18 @@ +0 0 GOOD RETRIEVAL +1 1 REFLECTIVITY OUT OF RANGE +2 2 LARGER PIXELS (NUMBER OF CROSS-TRACK PIXELS LESS THAN 32) OR BACKWARD SCANS ERROR +3 3 SOLAR ZENITH ANGLE GREATER THAN 88 DEGREES +4 4 LATITUDE/LONGITUDE OUT OF RANGE +5 5 VIEWING ZENITH ANGLE OR SOLAR ZENITH ANGLE OUT OF RANGE +6 6 STEP-ONE PROCESS FAILED IN GENERAL +7 7 FIRST GUESS OZONE OUT OF RANGE +8 8 TOO MANY ITERATIONS (EXCEED 8) +9 9 STEP-ONE RESIDUE CALCULATION FAILED +10 10 STEP-TWO PROCESS FAILED IN GENERAL +11 11 FIRST GUESS OZONE PROFILE OUT OF RANGE +12 12 STEP-TWO OZONE VALUE OUT OF RANGE +13 13 STEP-TWO RESIDUE CALCULATION FAILED +14 14 STEP-THREE PROCESS FAILED IN GENERAL +15 15 POLARIZATION CORRECTION ACCURACY ALERT +16 16 RADIANCE OR IRRADIANCE LESS OR EQUAL TO ZERO +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33075.table b/definitions/bufr/tables/0/wmo/32/codetables/33075.table new file mode 100644 index 000000000..23edae628 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33075.table @@ -0,0 +1,5 @@ +1 1 GAP IN RAW DATA RECORD (RDR) DATA DETECTED (I.E., MISSING SCAN(S) PRECEDING THE CURRENT SCAN) +2 2 RECORDED TIME IS NOT IN SEQUENCE (I.E., THE SCAN START TIME IS OUT OF SEQUENCE) +3 3 LAMBDA MONITORED CALCULATION CANNOT BE UPDATED +4 4 THE MEASURED TEMPERATURES OF ANY INSTRUMENT COMPONENTS (E.G., BEAM-SPLITTER, SCAN MIRROR, SCAN BAFFLE) ARE OUTSIDE THE ALLOWABLE RANGES +5 5 AT LEAST ONE OF THE MONITORED INSTRUMENT TEMPERATURES HAS DRIFTED MORE THAN A SPECIFIED TOLERANCE VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33076.table b/definitions/bufr/tables/0/wmo/32/codetables/33076.table new file mode 100644 index 000000000..7100c4a0d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33076.table @@ -0,0 +1,2 @@ +1 1 LUNAR INTRUSION ON FIRST DEEP SPACE VIEW +2 2 LUNAR INTRUSION ON SECOND DEEP SPACE VIEW diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33077.table b/definitions/bufr/tables/0/wmo/32/codetables/33077.table new file mode 100644 index 000000000..742c83cb5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33077.table @@ -0,0 +1,12 @@ +1 1 DEGRADED SDR* QUALITY +2 2 INVALID SDR* QUALITY +3 3 INVALID SDR* GEOLOCATION INFORMATION +4 4 DEGRADED RADIOMETRIC CALIBRATION +5 5 INVALID RADIOMETRIC CALIBRATION +6 6 DEGRADED SPECTRAL CALIBRATION +7 7 INVALID SPECTRAL CALIBRATION +8 8 FRINGE COUNT ERROR DETECTED AND CORRECTED +9 9 DAY/NIGHT INDICATOR +10 10 INVALID RDR** DATA +11 11 SIGNIFICANT FRINGE COUNT ERROR DETECTED +12 12 BIT TRIM FAILED diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33078.table b/definitions/bufr/tables/0/wmo/32/codetables/33078.table new file mode 100644 index 000000000..f3a218067 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33078.table @@ -0,0 +1,5 @@ +0 0 NOMINAL - ALTITUDE AND EPHEMERIS DATA AVAILABLE +1 1 MISSING AT MOST A SMALL GAP OF ALTITUDE AND EPHEMERIS DATA +2 2 MISSING MORE THAN A SMALL GAP OF ALTITUDE AND EPHEMERIS DATA, BUT NO MORE THAN A GRANULE BOUNDARY +3 3 MISSING MORE THAN A GRANULE BOUNDARY OF ALTITUDE AND EPHEMERIS DATA +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33079.table b/definitions/bufr/tables/0/wmo/32/codetables/33079.table new file mode 100644 index 000000000..08751431e --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33079.table @@ -0,0 +1,10 @@ +6 6 THE NO. 1-NO. 7 HEALTH CHECKS FAILED +7 7 THE NO. 8-NO. 15 HEALTH CHECKS FAILED +8 8 THE NO. 16-NO. 23 HEALTH CHECKS FAILED +9 9 THE NO. 24-NO. 31 HEALTH CHECKS FAILED +10 10 THE NO. 32-NO. 39 HEALTH CHECKS FAILED +11 11 THE NO. 40-NO. 47 HEALTH CHECKS FAILED +12 12 THE NO. 48-NO. 55 HEALTH CHECKS FAILED +13 13 THE NO. 56-NO. 63 HEALTH CHECKS FAILED +14 14 THE NO. 64-NO. 70 HEALTH CHECKS FAILED +15 15 QUADRATIC CORRECTION APPLIED TO THE RADIOMETRIC TRANSFER FUNCTION FOR NON-LINEARITY CORRECTION diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33080.table b/definitions/bufr/tables/0/wmo/32/codetables/33080.table new file mode 100644 index 000000000..a39dd47ea --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33080.table @@ -0,0 +1,13 @@ +7 7 DIVIDE-BY-ZERO CONDITION OR COMPUTATION LOOP FAILED TO CONVERGE IN THE K/KA AND V (KAV) BAND PRT +8 8 DIVIDE-BY-ZERO CONDITION OR COMPUTATION LOOP FAILED TO CONVERGE IN THE WG BAND PRT +9 9 DIVIDE-BY-ZERO CONDITION OR COMPUTATION LOOP FAILED TO CONVERGE IN THE K/KA, V, W, G BAND RECEIVER SHELF PRT K TEMPERATURE COMPUTATION +10 10 OUT OF RANGE CONDITION FOR THE K/KA AND V BAND PRT +11 11 OUT OF RANGE CONDITION FOR THE WG BAND PRT +12 12 KAV PRT TEMPERATURE INCONSISTENCY +13 13 WG PRT TEMPERATURE INCONSISTENCY +14 14 TIME SEQUENCE ERROR +15 15 DATA GAP - MISSING SCAN(S) PRECEDING THE CURRENT SCAN +16 16 KAV PRT SUFFICIENCY - INSUFFICIENT KAV PRT DATA ARE AVAILABLE +17 17 WG PRT SUFFICIENCY - INSUFFICIENT WG PRT DATA ARE AVAILABLE +18 18 SPACE VIEW ANTENNA POSITION ERROR +19 19 BLACKBODY ANTENNA POSITION ERROR diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33081.table b/definitions/bufr/tables/0/wmo/32/codetables/33081.table new file mode 100644 index 000000000..f8759e0ef --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33081.table @@ -0,0 +1,9 @@ +3 3 MOON IN SPACE VIEW +4 4 GAIN ERROR - THE LOWEST BLACKBODY COUNT IS SMALLER THAN OR EQUAL TO THE HIGHEST SPACE VIEW COUNT IN A SCAN +5 5 CALIBRATION WITH FEWER THAN PREFERRED SAMPLES +6 6 SPACE VIEW DATA SUFFICIENCY CHECK - INSUFFICIENT SPACE VIEW SAMPLES ARE AVAILABLE +7 7 BLACKBODY VIEW DATA SUFFICIENCY CHECK - INSUFFICIENT BLACKBODY VIEW SAMPLES ARE AVAILABLE +8 8 OUT OF RANGE CONDITION FOR THE SPACE VIEW +9 9 OUT OF RANGE CONDITION FOR THE BLACKBODY VIEW +10 10 SPACE VIEW INCONSISTENCY +11 11 BLACKBODY VIEW INCONSISTENCY diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33082.table b/definitions/bufr/tables/0/wmo/32/codetables/33082.table new file mode 100644 index 000000000..467157461 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33082.table @@ -0,0 +1,10 @@ +6 6 WITHIN SOUTH ATLANTIC ANOMALY +7 7 INVALID INPUT DATA (INDICATES THAT ANY OF THE SPACECRAFT EPHEMERIS OR ATTITUDE DATA ARE INVALID) +8 8 BAD POINTING (INDICATES THAT THE SENSOR LOS DOES NOT INTERSECT THE GEOID, IS NEAR THE LIMB, HAS INVALID SENSOR ANGLES OR OTHER SIMILAR CONDITION) +9 9 BAD TERRAIN (INDICATES THAT THE ALGORITHM COULD NOT OBTAIN A VALID TERRAIN VALUE) +10 10 INVALID SOLAR ANGLES +11 11 MISSING AT MOST A SMALL GAP OF ALTITUDE AND EPHEMERIS DATA +12 12 MISSING MORE THAN A SMALL GAP OF ALTITUDE AND EPHEMERIS DATA, BUT NO MORE THAN A GRANULE BOUNDARY +13 13 MISSING MORE THAN A GRANULE BOUNDARY OF ALTITUDE AND EPHEMERIS DATA +14 14 THE NUMBER OF ENCODER PULSE VALUES PER DELTA TIME IS NOT AS EXPECTED +15 15 SOLAR ECLIPSE DURING EARTH VIEW SCAN diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33083.table b/definitions/bufr/tables/0/wmo/32/codetables/33083.table new file mode 100644 index 000000000..6fe63f623 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33083.table @@ -0,0 +1,10 @@ +6 6 PIXEL IS AFFECTED BY RADIO-FREQUENCY INTERFERENCE +7 7 POOR CALIBRATION QUALITY DUE TO BAD SPACE VIEW OFFSETS, OBC * VIEW OFFSETS, ETC. OR USE OF A PREVIOUS CALIBRATION VIEW +8 8 SATURATED PIXEL +9 9 MISSING DATA -DATA REQUIRED FOR CALIBRATION PROCESSING ARE NOT AVAILABLE FOR PROCESSING +10 10 CALIBRATED PIXEL RADIANCE OUT OF RANGE +11 11 CALIBRATED PIXEL REFLECTANCE OR EBBT OUT OF RANGE +12 12 THE MOON HAS CORRUPTED THE SPACE VIEW +13 13 SCAN DATA IS NOT PRESENT (NO VALID DATA) +14 14 QUALITY FOR THIS SCAN-LINE IS REDUCED. THE VALUE IS DETERMINED BY THE COMBINED NUMBER OF STEPS REQUIRED TO FIND A REPLACEMENT FOR THERMISTOR OR CALIBRATION SOURCE DATA +15 15 BAD DETECTOR diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33084.table b/definitions/bufr/tables/0/wmo/32/codetables/33084.table new file mode 100644 index 000000000..accb209c5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33084.table @@ -0,0 +1,10 @@ +6 6 BULK SST OUTSIDE OF VALIDATION RANGE +7 7 SKIN SST OUTSIDE OF VALIDATION RANGE +8 8 SENSOR ZENITH ANGLE > 40 DEGREES (PIXEL IS NOT WITHIN 40 DEGREES OF NADIR AND THEREFORE IS NOT OF HIGH QUALITY) +9 9 DEGRADATION - HORIZONTAL CELL SIZE (HCS) > 1.3 KM (HCS > 1.3 KM, SWATH WIDTH > 1 700 KM, SENSOR ZENITH ANGLE > 50.3 DEGREES) +10 10 EXCLUSION: NO OCEAN IN PIXEL +11 11 DEGRADATION: AEROSOL OPTICAL THICKNESS (AOT) > 0.6 (AOT IN HORIZONTAL CELL > 0.6 ON THE SLANT PATH (AOT @550 NM)) +12 12 EXCLUSION: AOT > 1.0 (AOT IN HORIZONTAL CELL > 1.0 ON THE SLANT PATH (AOT @550 NM)) +13 13 SUN GLINT PRESENT IN PIXEL +14 14 ICE CONCENTRATION THRESHOLD EXCEEDED (SST NOT RETRIEVED DUE TO ICE CONCENTRATION EXCEEDING THRESHOLD IN SYSTEM SPEC) +15 15 THIN CIRRUS DETECTED IN PIXEL diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33085.table b/definitions/bufr/tables/0/wmo/32/codetables/33085.table new file mode 100644 index 000000000..0872a2bb7 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33085.table @@ -0,0 +1,14 @@ +4 4 ANGSTROM EXPONENT IS OUTSIDE OF THE SYSTEM SPECIFICATION RANGE +5 5 EXCLUDED, ANGSTROM EXPONENT FOR AOT* AT 550 NM < 0.15 +6 6 BRIGHT SURFACE IN CELL (IF OVER LAND), OR SHALLOW OR TURBID WATER IN CELL (IF OVER OCEAN) +7 7 LOW SUN, EXCLUDED, SOLAR ZENITH ANGLE > 80 DEGREES +8 8 LOW SUN, DEGRADED, 65 DEGREES < SOLAR ZENITH ANGLE =< 80 DEGREES +9 9 FIRE DETECTED IN CELL +10 10 SNOW/ICE IN CELL +11 11 CLOUD SHADOW IN CELL +12 12 SUN GLINT IN CELL +13 13 BAD SDR** DATA PRESENT IN HORIZONTAL CELL (QUALITY OF AOT/APSP*** DEGRADED OR AOT/APSP NOT RETRIEVED DUE TO BAD SDR DATA IN HORIZONTAL CELL) +14 14 CIRRUS CONTAMINATION IN CELL +15 15 CLOUD ADJACENT TO CELL +16 16 CLOUD CONTAMINATION IN CELL +17 17 AOT IS OUTSIDE OF THE SYSTEM SPECIFICATION RANGE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33086.table b/definitions/bufr/tables/0/wmo/32/codetables/33086.table new file mode 100644 index 000000000..b7cda3212 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33086.table @@ -0,0 +1,5 @@ +0 0 NOT RETRIEVED +1 1 EXCLUDED +2 2 DEGRADED +3 3 HIGH QUALITY +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33087.table b/definitions/bufr/tables/0/wmo/32/codetables/33087.table new file mode 100644 index 000000000..f3000e258 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33087.table @@ -0,0 +1,10 @@ +0 0 LESS THAN OR EQUAL TO 10% +1 1 GREATER THAN 10% BUT LESS THAN OR EQUAL TO 20% +2 2 GREATER THAN 20% BUT LESS THAN OR EQUAL TO 30% +3 3 GREATER THAN 30% BUT LESS THAN OR EQUAL TO 40% +4 4 GREATER THAN 40% BUT LESS THAN OR EQUAL TO 50% +5 5 GREATER THAN 50% BUT LESS THAN OR EQUAL TO 60% +6 6 GREATER THAN 60% BUT LESS THAN OR EQUAL TO 70% +7 7 GREATER THAN 70% BUT LESS THAN OR EQUAL TO 80% +8 8 GREATER THAN 80% +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33088.table b/definitions/bufr/tables/0/wmo/32/codetables/33088.table new file mode 100644 index 000000000..1dfa368f6 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33088.table @@ -0,0 +1,12 @@ +6 6 SURFACE REFLECTIVITY OUT OF RANGE +7 7 RESIDUAL TOO LARGE +8 8 AEROSOL INDEX LIMIT EXCEEDED +9 9 SOLAR ECLIPSE PRESENT (ALL OR PART OF THE IFOV* IS AFFECTED BY A SOLAR ECLIPSE, UMBRA OR PENUMBRA VIEWING) +10 10 SUN GLINT PRESENT WITHIN IFOV +11 11 SNOW OR ICE SURFACE IS WITHIN THE IFOV +12 12 SOLAR ZENITH ANGLE IN EXCLUDED (NIGHT) CONDITION (SOLAR ZENITH ANGLE >= 88 DEGREES) +13 13 SOLAR ZENITH ANGLE IN DEGRADED CONDITION (80 DEGREES =< SOLAR ZENITH ANGLE < 88 DEGREES) +14 14 SO2 INDEX > 6 DU (DEGRADED CONDITION) +15 15 RESIDUES ARE NOT CONSISTENT (INDICATES WHETHER THE RESIDUES FROM THE 22 WAVELENGTHS ARE CONSISTENT) +16 16 O3 TRIPLET SELECTION IS NOT CONSISTENT WITHIN RETRIEVAL (OZONE TRIPLET CONSISTENCY) +17 17 INPUT DATA QUALITY IS NOT GOOD diff --git a/definitions/bufr/tables/0/wmo/32/codetables/33092.table b/definitions/bufr/tables/0/wmo/32/codetables/33092.table new file mode 100644 index 000000000..2a9557582 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/33092.table @@ -0,0 +1,2 @@ +1 1 ALTIMETER OPERATING +2 2 MICROWAVE RADIOMETER (MWR) OPERATING diff --git a/definitions/bufr/tables/0/wmo/32/codetables/35000.table b/definitions/bufr/tables/0/wmo/32/codetables/35000.table new file mode 100644 index 000000000..8c57023e3 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/35000.table @@ -0,0 +1 @@ +1023 1023 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/35001.table b/definitions/bufr/tables/0/wmo/32/codetables/35001.table new file mode 100644 index 000000000..bba0c812e --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/35001.table @@ -0,0 +1,4 @@ +0 0 REAL TIME +1 1 NEAR-REAL TIME +2 2 NON-REAL TIME +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/35030.table b/definitions/bufr/tables/0/wmo/32/codetables/35030.table new file mode 100644 index 000000000..5b83f8b81 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/35030.table @@ -0,0 +1,10 @@ +0 0 NO DISCREPANCIES +1 1 NON-COMPLIANCE WITH STANDARD AND RECOMMENDED PRACTICES AND PROCEDURES INCLUDING THOSE OF MONITORING +2 2 CATALOGUES OF METEOROLOGICAL BULLETINS NOT UPDATED IN A TIMELY MANNER +3 3 INCORRECT ROUTING DIRECTORIES +4 4 LACK OF FLEXIBILITY IN THE ROUTING ARRANGEMENTS +5 5 DEFICIENCIES IN THE OPERATION OF GTS CENTRES AND CIRCUITS +6 6 LOSS OF DATA OR DELAYS IN RELAYING DATA ON THE GTS +7 7 ROUTING OF DATA DIFFERENT FROM THE ROUTING PROVIDED IN THE PLAN +8 8 VARIOUS MALPRACTICES +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/35031.table b/definitions/bufr/tables/0/wmo/32/codetables/35031.table new file mode 100644 index 000000000..bdd705ddd --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/35031.table @@ -0,0 +1,20 @@ +1 1 SUFFICIENT AND ALL OF ACCEPTABLE QUALITY +2 2 SUFFICIENT BUT PARTLY OF ACCEPTABLE QUALITY +3 3 INSUFFICIENT BUT ALL OF ACCEPTABLE QUALITY +4 4 INSUFFICIENT AND OF UNACCEPTABLE QUALITY +5 5 SOME MESSAGES NOT COMPLETE +6 6 SUSPECT OR WRONGLY CODED GROUPS COULD NOT BE INTERPRETED CONFIDENTLY +7 7 GROSS CODING ERRORS +8 8 TRANSMISSION SEQUENTIAL ORDER NOT OBSERVED +9 9 REPORT COMPLETELY GARBLED AND THUS DISCARDED +10 10 DEFICIENCIES IDENTIFIED AND RECTIFIED +11 11 DEFICIENCIES IDENTIFIED BUT NOT RECTIFIED +12 12 DEFICIENCIES NOT IDENTIFIED +13 13 MEASURING ERRORS +14 14 MUTUAL INCONSISTENCY +15 15 TEMPORAL INCONSISTENCY +16 16 FORECAST ERROR +17 17 BIAS +18 18 IMPROVE SYSTEM OF QUALITY CONTROL +19 19 EXPAND TRAINING PROGRAMMES +127 127 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/35032.table b/definitions/bufr/tables/0/wmo/32/codetables/35032.table new file mode 100644 index 000000000..7f53a05f9 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/35032.table @@ -0,0 +1,10 @@ +1 1 DATA GROUPS MISSING DUE TO RADIO FADING +2 2 DATA GROUPS MISSING DUE TO OUTAGE OF CENTRE +3 3 DATA GROUPS MISSING DUE TO OUTAGE OF CIRCUIT +4 4 NON-IMPLEMENTATION OR MAINTENANCE OF REQUIRED RBSN DENSITY +5 5 SHORTAGE OF QUALIFIED STAFF TO MAN STATIONS +6 6 LACK OF CONSUMABLES +7 7 INSTRUMENT FAILURE +8 8 NON-ADHERENCE TO TELECOMMUNICATION PROCEDURES +9 9 SOME OBSERVING PROGRAMMES CEASED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/35033.table b/definitions/bufr/tables/0/wmo/32/codetables/35033.table new file mode 100644 index 000000000..86e9592ef --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/35033.table @@ -0,0 +1,12 @@ +1 1 NO DEFICIENCY +2 2 OBSERVATIONS NOT MADE REGULARLY +3 3 OBSERVATIONS NOT MADE AT RIGHT TIME +4 4 OBSERVATIONS MADE BUT NOT DISSEMINATED +5 5 OBSERVATIONS MADE AND SENT TO INCORRECT USERS +6 6 COLLECTION NOT RECEIVED +7 7 COLLECTION TRANSMITTED LATE +8 8 COLLECTION NOT TRANSMITTED +9 9 DIFFICULTIES IN HF PROPAGATION AND SELECTION OF SUITABLE FREQUENCY +10 10 DIFFICULTIES IN MAINTENANCE OF COMMUNICATION EQUIPMENT AT REMOTE STATIONS +11 11 NO ALTERNATIVE ARRANGEMENT FOR ROUTING METEOROLOGICAL OBSERVATION +123 123 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/35034.table b/definitions/bufr/tables/0/wmo/32/codetables/35034.table new file mode 100644 index 000000000..7297664cf --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/35034.table @@ -0,0 +1,7 @@ +1 1 SLIGHT IMPROVEMENT +2 2 SIGNIFICANT IMPROVEMENT +3 3 MOST SIGNIFICANT IMPROVEMENT +4 4 STEADY +5 5 DECREASING +6 6 EFFORTS REQUIRED TO IMPROVE NIGHT-TIME OBSERVATIONS +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/35035.table b/definitions/bufr/tables/0/wmo/32/codetables/35035.table new file mode 100644 index 000000000..0fce6ddb7 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/35035.table @@ -0,0 +1,20 @@ +0 0 RESERVED +1 1 BALLOON BURST +2 2 BALLOON FORCED DOWN BY ICING +3 3 LEAKING OR FLOATING BALLOON +4 4 WEAK OR FADING SIGNAL +5 5 BATTERY FAILURE +6 6 GROUND EQUIPMENT FAILURE +7 7 SIGNAL INTERFERENCE +8 8 RADIOSONDE FAILURE +9 9 EXCESSIVE MISSING DATA FRAMES +10 10 RESERVED +11 11 EXCESSIVE MISSING TEMPERATURE +12 12 EXCESSIVE MISSING PRESSURE +13 13 USER TERMINATED +14 14 SUDDEN LOSS OF SIGNAL +15 15 TRACKING LOST +16 16 INCREASING PRESSURE +17 17 INVALID AND/OR MISSED DATA TIME LIMITS EXCEEDED +30 30 OTHER +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/40005.table b/definitions/bufr/tables/0/wmo/32/codetables/40005.table new file mode 100644 index 000000000..045a4f1b1 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/40005.table @@ -0,0 +1,5 @@ +1 1 SOIL MOISTURE BETWEEN -20% AND 0% +2 2 SOIL MOISTURE BETWEEN 100% AND 120% +3 3 CORRECTION OF WET BACKSCATTER REFERENCE +4 4 CORRECTION OF DRY BACKSCATTER REFERENCE +5 5 CORRECTION OF VOLUME SCATTERING IN SAND diff --git a/definitions/bufr/tables/0/wmo/32/codetables/40006.table b/definitions/bufr/tables/0/wmo/32/codetables/40006.table new file mode 100644 index 000000000..d53382eff --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/40006.table @@ -0,0 +1,8 @@ +1 1 NOT SOIL +2 2 SENSITIVITY TO SOIL MOISTURE BELOW LIMIT +3 3 AZIMUTHAL NOISE ABOVE LIMIT +4 4 BACKSCATTER FORE-AFT BEAM OUT OF RANGE +5 5 SLOPE MID-FORE BEAM OUT OF RANGE +6 6 SLOPE MID-AFT BEAM OUT OF RANGE +7 7 SOIL MOISTURE BELOW -20% +8 8 SOIL MOISTURE ABOVE 120% diff --git a/definitions/bufr/tables/0/wmo/32/codetables/40011.table b/definitions/bufr/tables/0/wmo/32/codetables/40011.table new file mode 100644 index 000000000..ddc7e8672 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/40011.table @@ -0,0 +1,4 @@ +1 1 MEAN SEA-SURFACE (MSS) INTERPOLATION FLAG +2 2 OCEAN TIDE SOLUTION 1 INTERPOLATION FLAG (0 = 4 POINTS OVER OCEAN, 1 = LESS THAN 4 POINTS) +3 3 OCEAN TIDE SOLUTION 2 INTERPOLATION FLAG (0 = 4 POINTS OVER OCEAN, 1 = LESS THAN 4 POINTS) +4 4 METEOROLOGICAL DATA INTERPOLATION FLAG (0 = 4 POINTS OVER OCEAN, 1 = LESS THAN 4 POINTS) diff --git a/definitions/bufr/tables/0/wmo/32/codetables/40012.table b/definitions/bufr/tables/0/wmo/32/codetables/40012.table new file mode 100644 index 000000000..d8ce14d86 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/40012.table @@ -0,0 +1,3 @@ +1 1 18.7 GHZ BRIGHTNESS TEMPERATURE +2 2 23.8 GHZ BRIGHTNESS TEMPERATURE +3 3 34 GHZ BRIGHTNESS TEMPERATURE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/40013.table b/definitions/bufr/tables/0/wmo/32/codetables/40013.table new file mode 100644 index 000000000..79b991a29 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/40013.table @@ -0,0 +1,5 @@ +0 0 INTERPOLATION WITH NO GAP BETWEEN JMR* DATA +1 1 INTERPOLATION WITH GAPS BETWEEN JMR* DATA +2 2 EXTRAPOLATION OF JMR* DATA +3 3 FAILURE OF EXTRAPOLATION AND INTERPOLATION +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/40020.table b/definitions/bufr/tables/0/wmo/32/codetables/40020.table new file mode 100644 index 000000000..fa1d1f5c5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/40020.table @@ -0,0 +1,16 @@ +1 1 NZPD AND COMPLEX CALIBRATION ERROR +2 2 BAND 3 AFFECTED BY SPIKE +3 3 BAND 3 AFFECTED BY SATURATION +4 4 BAND 2 AFFECTED BY SPIKE +5 5 BAND 1 AFFECTED BY SPIKE +6 6 OVERFLOW/UNDER FLOW +7 7 ON-BOARD PROCESSING ERROR +8 8 SPECTRAL CALIBRATION ERROR +9 9 RADIOMETRIC CALIBRATION ERROR +10 10 MISSING AVHRR DATA +11 11 MISSING IIS DATA +12 12 MISSING SOUNDER DATA +13 13 GQISFLAGQUAL SUMMARY FLAG FOR ALL BANDS +14 14 ON-GROUND PROCESSING ERROR +15 15 INTER-CALIBRATION ERROR IASI/AVHRR +16 16 SPARE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/40023.table b/definitions/bufr/tables/0/wmo/32/codetables/40023.table new file mode 100644 index 000000000..2e4cbfb69 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/40023.table @@ -0,0 +1,4 @@ +1 1 BAND SEQUENCE (0 = 3KU_1C_3KU, 1 = 2KU_1C_2KU) +2 2 C BAND FREQUENCY (0 = 320 MHZ, 1 = 100 MHZ) +3 3 C BAND STATUS (0 = ON, 1 = OFF) +4 4 KU BAND STATUS (0 = ON, 1 = OFF) diff --git a/definitions/bufr/tables/0/wmo/32/codetables/40024.table b/definitions/bufr/tables/0/wmo/32/codetables/40024.table new file mode 100644 index 000000000..c8421e5af --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/40024.table @@ -0,0 +1,5 @@ +0 0 2 MAPS AVAILABLE (6 HOURS APART) +1 1 2 MAPS AVAILABLE (> 6 HOURS APART) +2 2 1 MAP AVAILABLE; DATA EXTRAPOLATED +3 3 NO MAPS USED +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/40025.table b/definitions/bufr/tables/0/wmo/32/codetables/40025.table new file mode 100644 index 000000000..741430292 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/40025.table @@ -0,0 +1,4 @@ +0 0 GOOD +1 1 BAD +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/40028.table b/definitions/bufr/tables/0/wmo/32/codetables/40028.table new file mode 100644 index 000000000..e094f29dc --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/40028.table @@ -0,0 +1,16 @@ +0 0 GOOD DATA +1 1 POSSIBLE SUN GLINT +2 2 POSSIBLE RADIO-FREQUENCY INTERFERENCE +3 3 DEGRADED GEOLOCATION DATA +4 4 DATA CORRECTED FOR WARM LOAD INTRUSION +5 5 SCAN BLANKING ON +6 6 DATA IS MISSING FROM FILE OR UNREADABLE +7 7 UNPHYSICAL BRIGHTNESS TEMPERATURE +8 8 ERROR IN GEOLOCATION DATA +9 9 DATA MISSING IN ONE CHANNEL +10 10 DATA MISSING IN MULTIPLE CHANNELS +11 11 LAT/LON VALUES ARE OUT OF RANGE +12 12 NON-NORMAL STATUS MODES +13 13 DISTANCE TO CORRESPONDING LOW FREQUENCY PIXEL > 7 KM +14 14 RESERVED +15 15 MISSING VALUE (NO QUALITY INFORMATION AVAILABLE) diff --git a/definitions/bufr/tables/0/wmo/32/codetables/40036.table b/definitions/bufr/tables/0/wmo/32/codetables/40036.table new file mode 100644 index 000000000..9a5418e3a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/40036.table @@ -0,0 +1,3 @@ +0 0 CLEAR +1 1 CLOUD +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/40043.table b/definitions/bufr/tables/0/wmo/32/codetables/40043.table new file mode 100644 index 000000000..859484624 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/40043.table @@ -0,0 +1,4 @@ +0 0 THE PLATFORM IS NOT UNDERGOING A MANOEUVRE +1 1 THE PLATFORM IS UNDERGOING A MANOEUVRE, NOMINAL PROCESSING +2 2 THE PLATFORM IS UNDERGOING A MANOEUVRE, NO PROCESSING +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/40045.table b/definitions/bufr/tables/0/wmo/32/codetables/40045.table new file mode 100644 index 000000000..08b600150 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/40045.table @@ -0,0 +1,4 @@ +1 1 CLOUD PRODUCTS RETRIEVED WITH THE CHI-SQUARED METHOD +2 2 CLOUD PRODUCTS RETRIEVED WITH THE CO2-SLICING +3 3 HEIGHT ASSIGNMENT PERFORMED WITH STATISTICAL FIRST GUESS RETRIEVAL +4 4 HEIGHT ASSIGNMENT PERFORMED WITH NWP FORECASTS diff --git a/definitions/bufr/tables/0/wmo/32/codetables/40046.table b/definitions/bufr/tables/0/wmo/32/codetables/40046.table new file mode 100644 index 000000000..31077db10 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/40046.table @@ -0,0 +1,5 @@ +0 0 THE IASI IFOV IS CLEAR +1 1 SMALL CLOUD CONTAMINATION POSSIBLE +2 2 THE IASI IFOV IS PARTIALLY COVERED BY CLOUDS +3 3 HIGH OR FULL CLOUD COVERAGE +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/40047.table b/definitions/bufr/tables/0/wmo/32/codetables/40047.table new file mode 100644 index 000000000..f7f29c7b8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/40047.table @@ -0,0 +1,4 @@ +0 0 THE MEASUREMENTS AND SIDE INFORMATION ARE AVAILABLE AND OF GOOD QUALITY FOR L2 PROCESSING +1 1 THE L1C PRODUCTS ARE OF DEGRADED QUALITY ACCORDING TO L1C FLAGS, NO L2 PROCESSING +2 2 QUALITY CONTROL INDICATES THAT THE L1C DATA ARE OF DEGRADED QUALITY (NOT INDICATED BY THE IASI L1C FLAGS), NO L2 PROCESSING +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/40048.table b/definitions/bufr/tables/0/wmo/32/codetables/40048.table new file mode 100644 index 000000000..ee5d4fe0f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/40048.table @@ -0,0 +1,4 @@ +0 0 THE EXPECTED AMSU MEASUREMENTS ARE AVAILABLE, OF GOOD QUALITY AND COLLOCATED WITH IASI FOR PROCESSING +1 1 AMSU-A DATA ARE AVAILABLE BUT OF DEGRADED QUALITY (ACCORDING TO AMSU L1 FLAGS OR QC TESTS) AND NOT USED FOR PROCESSING +2 2 NO COINCIDENT (TIME AND SPACE) AMSU MEASUREMENTS AVAILABLE FOR PROCESSING +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/40049.table b/definitions/bufr/tables/0/wmo/32/codetables/40049.table new file mode 100644 index 000000000..19d1fe9d8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/40049.table @@ -0,0 +1,12 @@ +4 4 IASI CLOUD OPTICAL THICKNESS INDICATES A CLOUD +5 5 IASI CLOUD OPTICAL THICKNESS COMPUTED +6 6 AVHRR HETEROGENEITY TEST INDICATES A CLOUD +7 7 AVHRR HETEROGENEITY TEST EXECUTED +8 8 IASI-AVHRR ANN CLOUD TEST INDICATES A CLOUD +9 9 IASI-AVHRR ANN CLOUD TEST EXECUTED +10 10 AVHRR INTEGRATED CLOUD FRACTION INDICATES A CLOUD +11 11 AVHRR INTEGRATED CLOUD FRACTION ASSESSED +12 12 AMSU CLOUD TEST INDICATES A CLOUD +13 13 AMSU CLOUD TEST EXECUTED +14 14 IASI WINDOW CLOUD TEST INDICATES A CLOUD +15 15 IASI WINDOW CLOUD TEST EXECUTED diff --git a/definitions/bufr/tables/0/wmo/32/codetables/40050.table b/definitions/bufr/tables/0/wmo/32/codetables/40050.table new file mode 100644 index 000000000..503ab1443 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/40050.table @@ -0,0 +1,3 @@ +5 5 MHS INCLUDED +6 6 AMSU INCLUDED +7 7 IASI INCLUDED diff --git a/definitions/bufr/tables/0/wmo/32/codetables/40051.table b/definitions/bufr/tables/0/wmo/32/codetables/40051.table new file mode 100644 index 000000000..60542bc0f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/40051.table @@ -0,0 +1,8 @@ +0 0 OPTIMAL ESTIMATION METHODS (OEM) NOT ATTEMPTED +1 1 OEM ABORTED BECAUSE FIRST GUESS RESIDUALS TOO HIGH +2 2 THE MINIMIZATION DID NOT CONVERGE, SOUNDING REJECTED +3 3 THE MINIMIZATION DID NOT CONVERGE, SOUNDING ACCEPTED +4 4 THE MINIMIZATION CONVERGED BUT SOUNDING REJECTED +5 5 THE MINIMIZATION CONVERGED, SOUNDING ACCEPTED +6 6 RESERVED +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/40052.table b/definitions/bufr/tables/0/wmo/32/codetables/40052.table new file mode 100644 index 000000000..1f48809c0 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/40052.table @@ -0,0 +1,4 @@ +4 4 SUPERSATURATION CONDITIONS IN THE OEM RETRIEVAL +5 5 SUPERADIABATIC CONDITIONS IN THE OEM RETRIEVAL +6 6 SUPERSATURATION CONDITIONS IN THE FIRST GUESS +7 7 SUPERADIABATIC CONDITIONS IN THE FIRST GUESS diff --git a/definitions/bufr/tables/0/wmo/32/codetables/40054.table b/definitions/bufr/tables/0/wmo/32/codetables/40054.table new file mode 100644 index 000000000..a034bc322 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/40054.table @@ -0,0 +1,12 @@ +1 1 AN ERROR HAS BEEN DETECTED +2 2 MESSAGE FROM L1 +3 3 MESSAGE FROM L2 +4 4 MESSAGE FROM ANCILLARY DATA +5 5 MESSAGE FROM FITTING PROCEDURE +6 6 FILE OPENING +7 7 FILE READING +8 8 QUALITY FLAG +9 9 LEVEL 2 FROM LINEAR REGRESSION(F_QUAL), REPORT A PIXEL WHERE L2 ARE NOT FULLY TRUSTED +10 10 EMPTY FIELD OR DATA +11 11 MISSING SURFACE PRESSURE VALUE +12 12 RADIANCE FILTERING diff --git a/definitions/bufr/tables/0/wmo/32/codetables/40055.table b/definitions/bufr/tables/0/wmo/32/codetables/40055.table new file mode 100644 index 000000000..b1ab38dc6 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/40055.table @@ -0,0 +1,20 @@ +1 1 RADIANCE FILTERING +2 2 POLAR REGIONS +3 3 LOCATION IN THE NIGHT +4 4 NEGATIVE ALTITUDE SURFACE BELOW MEAN SEA LEVEL +5 5 CLOUD COVERED SCENE +6 6 SCENE ABOVE THE SEA +7 7 SCENE ABOVE DESERT +8 8 SKIN TEMPERATURE +9 9 SKIN TEMPERATURE DIFFERENTIAL +10 10 SPECTRAL LINE CONTRAST TOO WEAK +11 11 MAXIMUM NUMBER OF ITERATIONS EXCEEDED +12 12 NEGATIVE PARTIAL COLUMNS +13 13 MATRIX ILL CONDITIONED +14 14 FIT DIVERGED +15 15 ERROR IN GNU SCIENTIFIC LIBRARY (GSL) USAGE +16 16 RESIDUALS “BIASED†+17 17 RESIDUALS “SLOPED†+18 18 RESIDUALS ROOT MEAN SQUARE (RMS) ERROR IS LARGE +19 19 WEIRD AVERAGING KERNELS +20 20 ICE PRESENCE DETECTED diff --git a/definitions/bufr/tables/0/wmo/32/codetables/40056.table b/definitions/bufr/tables/0/wmo/32/codetables/40056.table new file mode 100644 index 000000000..f4a31d340 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/40056.table @@ -0,0 +1,4 @@ +0 0 USE NOT RECOMMENDED +1 1 USE WITH CAUTION +2 2 BEST QUALITY +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/40057.table b/definitions/bufr/tables/0/wmo/32/codetables/40057.table new file mode 100644 index 000000000..c8a50e778 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/40057.table @@ -0,0 +1,30 @@ +1 1 AN ERROR HAS BEEN DETECTED +2 2 MESSAGE FROM L1 +3 3 MESSAGE FROM L2 +4 4 MESSAGE FROM ANCILLARY DATA +5 5 MESSAGE FROM FITTING PROCEDURE +6 6 RESERVED +7 7 BAD L1 OR L2 FLAG RAISED +8 8 LEVEL 2 NOT FULLY TRUSTED +9 9 MISSING TEMPERATURE OR HUMIDITY LEVELS IN THE VERTICAL PROFILE +10 10 MISSING SURFACE PRESSURE VALUE +11 11 RADIANCE FILTERING +12 12 POLAR REGIONS +13 13 LOCATION IN THE NIGHT +14 14 NEGATIVE ALTITUDE +15 15 CLOUD COVERED SCENE +16 16 SCENE ABOVE THE SEA +17 17 SCENE ABOVE DESERT +18 18 MISSING SKIN TEMPERATURE +19 19 RETRIEVED SKIN TEMPERATURE TOO DIFFERENT FROM MODEL +20 20 SPECTRAL LINE CONTRAST TOO WEAK +21 21 MAXIMUM NUMBER OF ITERATIONS EXCEEDS +22 22 NEGATIVE PARTIAL COLUMNS +23 23 MATRIX ILL CONDITIONED +24 24 FIT DIVERGED +25 25 ERROR IN GSL USAGE +26 26 RESIDUALS BIASED +27 27 RESIDUALS SLOPED +28 28 RESIDUALS RMS ERROR IS LARGE +29 29 WEIRD AVERAGING KERNELS +30 30 ICE PRESENCE DETECTED diff --git a/definitions/bufr/tables/0/wmo/32/codetables/40068.table b/definitions/bufr/tables/0/wmo/32/codetables/40068.table new file mode 100644 index 000000000..0b1484e0b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/40068.table @@ -0,0 +1,4 @@ +0 0 VALUES CALCULATED WITH IASI L2 +1 1 PRESSURE AND TEMPERATURE PROFILES MISSING IN IASI L2 DATA; MODEL/FORECAST DATA USED INSTEAD +2 2 BEST QUALITY +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/4059.table b/definitions/bufr/tables/0/wmo/32/codetables/4059.table new file mode 100644 index 000000000..91fc6f4f9 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/4059.table @@ -0,0 +1,5 @@ +1 1 0000 UTC +2 2 0600 UTC +3 3 1200 UTC +4 4 1800 UTC +5 5 OTHER HOURS diff --git a/definitions/bufr/tables/0/wmo/32/codetables/4080.table b/definitions/bufr/tables/0/wmo/32/codetables/4080.table new file mode 100644 index 000000000..84caf2108 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/4080.table @@ -0,0 +1,6 @@ +0 0 SPOT VALUES +1 1 LESS THAN 15 MINUTES +2 2 FROM 15 TO 45 MINUTES +3 3 MORE THAN 45 MINUTES +9 9 DATA NOT AVAILABLE +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/42004.table b/definitions/bufr/tables/0/wmo/32/codetables/42004.table new file mode 100644 index 000000000..15a91da16 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/42004.table @@ -0,0 +1,3 @@ +0 0 WAVE DIRECTION RESOLVED +1 1 180-DEGREE AMBIGUITY NOT RESOLVED +15 15 MISSING diff --git a/definitions/bufr/tables/0/wmo/32/codetables/5069.table b/definitions/bufr/tables/0/wmo/32/codetables/5069.table new file mode 100644 index 000000000..e26774762 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/5069.table @@ -0,0 +1,4 @@ +0 0 MIE +1 1 RAYLEIGH +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8001.table b/definitions/bufr/tables/0/wmo/32/codetables/8001.table new file mode 100644 index 000000000..6210da3b3 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8001.table @@ -0,0 +1,6 @@ +1 1 SURFACE +2 2 STANDARD LEVEL +3 3 TROPOPAUSE LEVEL +4 4 MAXIMUM WIND LEVEL +5 5 SIGNIFICANT LEVEL, TEMPERATURE AND/OR RELATIVE HUMIDITY +6 6 SIGNIFICANT LEVEL, WIND diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8002.table b/definitions/bufr/tables/0/wmo/32/codetables/8002.table new file mode 100644 index 000000000..6ab4fd72d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8002.table @@ -0,0 +1,19 @@ +0 0 OBSERVING RULES FOR BASE OF LOWEST CLOUD AND CLOUD TYPES OF FM 12 SYNOP AND FM 13 SHIP APPLY +1 1 FIRST NON-CUMULONIMBUS SIGNIFICANT LAYER +2 2 SECOND NON-CUMULONIMBUS SIGNIFICANT LAYER +3 3 THIRD NON-CUMULONIMBUS SIGNIFICANT LAYER +4 4 CUMULONIMBUS LAYER +5 5 CEILING +6 6 CLOUDS NOT DETECTED BELOW THE FOLLOWING HEIGHT(S) +7 7 LOW CLOUD +8 8 MIDDLE CLOUD +9 9 HIGH CLOUD +10 10 CLOUD LAYER WITH BASE BELOW AND TOP ABOVE THE STATION +11 11 CLOUD LAYER WITH BASE AND TOP BELOW THE STATION LEVEL +20 20 NO CLOUDS DETECTED BY THE CLOUD DETECTION SYSTEM +21 21 FIRST INSTRUMENT DETECTED CLOUD LAYER +22 22 SECOND INSTRUMENT DETECTED CLOUD LAYER +23 23 THIRD INSTRUMENT DETECTED CLOUD LAYER +24 24 FOURTH INSTRUMENT DETECTED CLOUD LAYER +62 62 VALUE NOT APPLICABLE +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8003.table b/definitions/bufr/tables/0/wmo/32/codetables/8003.table new file mode 100644 index 000000000..373135140 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8003.table @@ -0,0 +1,12 @@ +0 0 SURFACE +1 1 BASE OF SATELLITE SOUNDING +2 2 CLOUD TOP +3 3 TROPOPAUSE +4 4 PRECIPITABLE WATER +5 5 SOUNDING RADIANCES +6 6 MEAN TEMPERATURES +7 7 OZONE +8 8 LOW CLOUD +9 9 MED CLOUD +10 10 HIGH CLOUD +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8004.table b/definitions/bufr/tables/0/wmo/32/codetables/8004.table new file mode 100644 index 000000000..2a8925eeb --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8004.table @@ -0,0 +1,6 @@ +2 2 UNSTEADY (UNS) +3 3 LEVEL FLIGHT, ROUTINE OBSERVATION (LVR) +4 4 LEVEL FLIGHT, HIGHEST WIND ENCOUNTERED (LVW) +5 5 ASCENDING (ASC) +6 6 DESCENDING (DES) +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8005.table b/definitions/bufr/tables/0/wmo/32/codetables/8005.table new file mode 100644 index 000000000..587ea9924 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8005.table @@ -0,0 +1,7 @@ +0 0 RESERVED +1 1 STORM CENTRE +2 2 OUTER LIMIT OR EDGE OF STORM +3 3 LOCATION OF MAXIMUM WIND +4 4 LOCATION OF THE STORM IN THE PERTURBED ANALYSIS +5 5 LOCATION OF THE STORM IN THE ANALYSIS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8006.table b/definitions/bufr/tables/0/wmo/32/codetables/8006.table new file mode 100644 index 000000000..9f56c628d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8006.table @@ -0,0 +1,8 @@ +1 1 SURFACE +2 2 STANDARD LEVEL +3 3 TROPOPAUSE LEVEL +4 4 PROMINENT MAXIMUM LEVEL +5 5 PROMINENT MINIMUM LEVEL +6 6 MINIMUM PRESSURE LEVEL +7 7 RESERVED +8 8 LEVEL OF UNDETERMINED SIGNIFICANCE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8007.table b/definitions/bufr/tables/0/wmo/32/codetables/8007.table new file mode 100644 index 000000000..3e4d2cc3c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8007.table @@ -0,0 +1,5 @@ +0 0 POINT +1 1 LINE +2 2 AREA +3 3 VOLUME +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8008.table b/definitions/bufr/tables/0/wmo/32/codetables/8008.table new file mode 100644 index 000000000..2714b5aa2 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8008.table @@ -0,0 +1,8 @@ +1 1 SURFACE +2 2 STANDARD LEVEL +3 3 TROPOPAUSE LEVEL +4 4 LEVEL OF BETA RADIATION MAXIMUM +5 5 LEVEL OF GAMMA RADIATION MAXIMUM +6 6 MINIMUM PRESSURE LEVEL +7 7 RESERVED +8 8 LEVEL OF UNDETERMINED SIGNIFICANCE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8009.table b/definitions/bufr/tables/0/wmo/32/codetables/8009.table new file mode 100644 index 000000000..b03398230 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8009.table @@ -0,0 +1,16 @@ +0 0 LEVEL FLIGHT, ROUTINE OBSERVATION, UNSTEADY +1 1 LEVEL FLIGHT, HIGHEST WIND ENCOUNTERED, UNSTEADY +2 2 UNSTEADY (UNS) +3 3 LEVEL FLIGHT, ROUTINE OBSERVATION (LVR) +4 4 LEVEL FLIGHT, HIGHEST WIND ENCOUNTERED (LVW) +5 5 ASCENDING (ASC) +6 6 DESCENDING (DES) +7 7 ASCENDING, OBSERVATION INTERVALS SELECTED BY TIME INCREMENTS +8 8 ASCENDING, OBSERVATION INTERVALS SELECTED BY TIME INCREMENTS, UNSTEADY +9 9 ASCENDING, OBSERVATION INTERVALS SELECTED BY PRESSURE INCREMENTS +10 10 ASCENDING, OBSERVATION INTERVALS SELECTED BY PRESSURE INCREMENTS, UNSTEADY +11 11 DESCENDING, OBSERVATION INTERVALS SELECTED BY TIME INCREMENTS +12 12 DESCENDING, OBSERVATION INTERVALS SELECTED BY TIME INCREMENTS, UNSTEADY +13 13 DESCENDING, OBSERVATION INTERVALS SELECTED BY PRESSURE INCREMENTS +14 14 DESCENDING, OBSERVATION INTERVALS SELECTED BY PRESSURE INCREMENTS, UNSTEADY +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8010.table b/definitions/bufr/tables/0/wmo/32/codetables/8010.table new file mode 100644 index 000000000..3c5fe71f3 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8010.table @@ -0,0 +1,14 @@ +0 0 RESERVED +1 1 BARE SOIL +2 2 BARE ROCK +3 3 LAND GRASS COVER +4 4 WATER (LAKE, SEA) +5 5 FLOOD WATER UNDERNEATH +6 6 SNOW +7 7 ICE +8 8 RUNWAY OR ROAD +9 9 SHIP OR PLATFORM DECK IN STEEL +10 10 SHIP OR PLATFORM DECK IN WOOD +11 11 SHIP OR PLATFORM DECK PARTLY COVERED WITH RUBBER MAT +12 12 BUILDING ROOF +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8011.table b/definitions/bufr/tables/0/wmo/32/codetables/8011.table new file mode 100644 index 000000000..e7a822114 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8011.table @@ -0,0 +1,27 @@ +0 0 QUASI-STATIONARY FRONT AT THE SURFACE +1 1 QUASI-STATIONARY FRONT ABOVE THE SURFACE +2 2 WARM FRONT AT THE SURFACE +3 3 WARM FRONT ABOVE THE SURFACE +4 4 COLD FRONT AT THE SURFACE +5 5 COLD FRONT ABOVE THE SURFACE +6 6 OCCLUSION +7 7 INSTABILITY LINE +8 8 INTERTROPICAL FRONT +9 9 CONVERGENCE LINE +10 10 JET STREAM +11 11 CLOUD CLEAR +12 12 CLOUD +13 13 TURBULENCE +14 14 STORM +15 15 AIRFRAME ICING +16 16 PHENOMENON +17 17 VOLCANO +18 18 ATMOSPHERICS +19 19 RESERVED +20 20 SPECIAL CLOUDS +21 21 THUNDERSTORM +22 22 TROPICAL CYCLONE +23 23 MOUNTAIN WAVE +24 24 DUSTSTORM +25 25 SANDSTORM +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8012.table b/definitions/bufr/tables/0/wmo/32/codetables/8012.table new file mode 100644 index 000000000..769bc0bb7 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8012.table @@ -0,0 +1,4 @@ +0 0 LAND +1 1 SEA +2 2 COAST +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8013.table b/definitions/bufr/tables/0/wmo/32/codetables/8013.table new file mode 100644 index 000000000..e18d2959b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8013.table @@ -0,0 +1,4 @@ +0 0 NIGHT +1 1 DAY +2 2 TWILIGHT +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8014.table b/definitions/bufr/tables/0/wmo/32/codetables/8014.table new file mode 100644 index 000000000..e6f2e46b6 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8014.table @@ -0,0 +1,10 @@ +0 0 10-MINUTE MEAN VALUE - NORMAL VALUE +1 1 10-MINUTE MEAN VALUE - ABOVE THE UPPER LIMIT FOR ASSESSMENTS OF RVR (P) +2 2 10-MINUTE MEAN VALUE - BELOW THE LOWER LIMIT FOR ASSESSMENTS OF RVR (M) +3 3 ONE-MINUTE MINIMUM VALUE - NORMAL VALUE +4 4 ONE-MINUTE MINIMUM VALUE - ABOVE THE UPPER LIMIT FOR ASSESSMENTS OF RVR (P) +5 5 ONE-MINUTE MINIMUM VALUE - BELOW THE LOWER LIMIT FOR ASSESSMENTS OF RVR (M) +6 6 ONE-MINUTE MAXIMUM VALUE - NORMAL VALUE +7 7 ONE-MINUTE MAXIMUM VALUE - ABOVE THE UPPER LIMIT FOR ASSESSMENTS OF RVR (P) +8 8 ONE-MINUTE MAXIMUM VALUE - BELOW THE LOWER LIMIT FOR ASSESSMENTS OF RVR (M) +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8015.table b/definitions/bufr/tables/0/wmo/32/codetables/8015.table new file mode 100644 index 000000000..6830b9591 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8015.table @@ -0,0 +1,4 @@ +0 0 SINGLE SENSOR +1 1 PRIMARY SENSOR +2 2 SECONDARY SENSOR (BACKUP) +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8016.table b/definitions/bufr/tables/0/wmo/32/codetables/8016.table new file mode 100644 index 000000000..6b8a1fa66 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8016.table @@ -0,0 +1,5 @@ +0 0 NOSIG +1 1 BECMG +2 2 TEMPO +3 3 FM +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8017.table b/definitions/bufr/tables/0/wmo/32/codetables/8017.table new file mode 100644 index 000000000..b3156f87e --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8017.table @@ -0,0 +1,4 @@ +0 0 FM +1 1 TL +2 2 AT +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8018.table b/definitions/bufr/tables/0/wmo/32/codetables/8018.table new file mode 100644 index 000000000..f91e554ea --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8018.table @@ -0,0 +1,4 @@ +1 1 LAND IS PRESENT +2 2 SURFACE ICE MAP INDICATES ICE IS PRESENT +11 11 ICE MAP DATA NOT AVAILABLE +12 12 ATTENUATION MAP DATA NOT AVAILABLE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8019.table b/definitions/bufr/tables/0/wmo/32/codetables/8019.table new file mode 100644 index 000000000..4ed413301 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8019.table @@ -0,0 +1,8 @@ +0 0 RESERVED +1 1 ATS (AIR TRAFFIC SERVICE) UNIT SERVING FIR (FLIGHT INFORMATION REGION) +2 2 FIR (FLIGHT INFORMATION REGION) +3 3 UIR (UPPER FLIGHT INFORMATION REGION) +4 4 CTA (CONTROL AREA) +5 5 VAAC (VOLCANIC ASH ADVISORY CENTRE) +6 6 MWO (METEOROLOGICAL WATCH OFFICE) ISSUING SIGMET +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8021.table b/definitions/bufr/tables/0/wmo/32/codetables/8021.table new file mode 100644 index 000000000..20fd7936f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8021.table @@ -0,0 +1,32 @@ +0 0 RESERVED +1 1 TIME SERIES +2 2 TIME AVERAGED (SEE NOTE 1) +3 3 ACCUMULATED +4 4 FORECAST +5 5 FORECAST TIME SERIES +6 6 FORECAST TIME AVERAGED +7 7 FORECAST ACCUMULATED +8 8 ENSEMBLE MEAN (SEE NOTE 2) +9 9 ENSEMBLE MEAN TIME SERIES +10 10 ENSEMBLE MEAN TIME AVERAGED +11 11 ENSEMBLE MEAN ACCUMULATED +12 12 ENSEMBLE MEAN FORECAST +13 13 ENSEMBLE MEAN FORECAST TIME SERIES +14 14 ENSEMBLE MEAN FORECAST TIME AVERAGED +15 15 ENSEMBLE MEAN FORECAST ACCUMULATED +16 16 ANALYSIS +17 17 START OF PHENOMENON +18 18 RADIOSONDE LAUNCH TIME +19 19 START OF ORBIT +20 20 END OF ORBIT +21 21 TIME OF ASCENDING NODE +22 22 TIME OF OCCURRENCE OF WIND SHIFT +23 23 MONITORING PERIOD +24 24 AGREED TIME LIMIT FOR REPORT RECEPTION +25 25 NOMINAL REPORTING TIME +26 26 TIME OF LAST KNOWN POSITION +27 27 FIRST GUESS +28 28 START OF SCAN +29 29 END OF SCAN OR TIME OF ENDING +30 30 TIME OF OCCURRENCE +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8023.table b/definitions/bufr/tables/0/wmo/32/codetables/8023.table new file mode 100644 index 000000000..2125e23cf --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8023.table @@ -0,0 +1,14 @@ +2 2 MAXIMUM VALUE +3 3 MINIMUM VALUE +4 4 MEAN VALUE +5 5 MEDIAN VALUE +6 6 MODAL VALUE +7 7 MEAN ABSOLUTE ERROR +8 8 RESERVED +9 9 BEST ESTIMATE OF STANDARD DEVIATION (N-1) +10 10 STANDARD DEVIATION (N) +11 11 HARMONIC MEAN +12 12 ROOT-MEAN-SQUARE VECTOR ERROR +13 13 ROOT-MEAN-SQUARE +32 32 VECTOR MEAN +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8024.table b/definitions/bufr/tables/0/wmo/32/codetables/8024.table new file mode 100644 index 000000000..377858bb1 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8024.table @@ -0,0 +1,12 @@ +2 2 OBSERVED MINUS MAXIMUM +3 3 OBSERVED MINUS MINIMUM +4 4 OBSERVED MINUS MEAN +5 5 OBSERVED MINUS MEDIAN +6 6 OBSERVED MINUS MODE +11 11 OBSERVED MINUS CLIMATOLOGY (ANOMALY) +12 12 OBSERVED MINUS ANALYSED VALUE +13 13 OBSERVED MINUS INITIALIZED ANALYSED VALUE +14 14 OBSERVED MINUS FORECAST VALUE +21 21 OBSERVED MINUS INTERPOLATED VALUE +22 22 OBSERVED MINUS HYDROSTATICALLY CALCULATED VALUE +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8025.table b/definitions/bufr/tables/0/wmo/32/codetables/8025.table new file mode 100644 index 000000000..1d88fa54f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8025.table @@ -0,0 +1,5 @@ +0 0 UNIVERSAL TIME COORDINATED (UTC) MINUS LOCAL STANDARD TIME (LST) +1 1 LOCAL STANDARD TIME +2 2 UNIVERSAL TIME COORDINATED (UTC) MINUS SATELLITE CLOCK +5 5 TIME DIFFERENCE FROM EDGE OF PROCESSING SEGMENT +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8026.table b/definitions/bufr/tables/0/wmo/32/codetables/8026.table new file mode 100644 index 000000000..9bcef7864 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8026.table @@ -0,0 +1,5 @@ +0 0 AVERAGING KERNEL MATRIX +1 1 CORRELATION MATRIX (C) +2 2 LOWER TRIANGULAR CORRELATION MATRIX SQUARE ROOT (L FROM C=LLT) +3 3 INVERSE OF LOWER TRIANGULAR CORRELATION MATRIX SQUARE ROOT (L-1) +63 63 MISSING OR UNDEFINED SIGNIFICANCE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8029.table b/definitions/bufr/tables/0/wmo/32/codetables/8029.table new file mode 100644 index 000000000..d0eae5a57 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8029.table @@ -0,0 +1,16 @@ +0 0 OPEN OCEAN OR SEMI-ENCLOSED SEA +1 1 ENCLOSED SEA OR LAKE +2 2 CONTINENTAL ICE +3 3 LAND +4 4 LOW INLAND (BELOW SEA LEVEL) +5 5 MIX OF LAND AND WATER +6 6 MIX OF LAND AND LOW INLAND +11 11 RIVER +12 12 LAKE +13 13 SEA +14 14 GLACIER +15 15 URBAN LAND +16 16 RURAL LAND +17 17 SUBURBAN LAND +18 18 SEA ICE +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8032.table b/definitions/bufr/tables/0/wmo/32/codetables/8032.table new file mode 100644 index 000000000..712400dd1 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8032.table @@ -0,0 +1,7 @@ +0 0 ROUTINE OPERATION +1 1 EVENT TRIGGERED BY STORM SURGE +2 2 EVENT TRIGGERED BY TSUNAMI +3 3 EVENT TRIGGERED MANUALLY +4 4 INSTALLATION TESTING +5 5 MAINTENANCE TESTING +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8033.table b/definitions/bufr/tables/0/wmo/32/codetables/8033.table new file mode 100644 index 000000000..1c695372b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8033.table @@ -0,0 +1,6 @@ +0 0 RESERVED +1 1 PERCENTAGE CONFIDENCE CALCULATED USING CLOUD FRACTION +2 2 PERCENTAGE CONFIDENCE CALCULATED USING STANDARD DEVIATION OF TEMPERATURE +3 3 PERCENTAGE CONFIDENCE CALCULATED USING PROBABILITY OF CLOUD CONTAMINATION +4 4 PERCENTAGE CONFIDENCE CALCULATED USING NORMALITY OF DISTRIBUTION +127 127 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8034.table b/definitions/bufr/tables/0/wmo/32/codetables/8034.table new file mode 100644 index 000000000..879f27400 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8034.table @@ -0,0 +1,10 @@ +0 0 SECONDARY SAMPLING: AVERAGED +1 1 SECONDARY SAMPLING: DISCRETE +2 2 SECONDARY SAMPLING: MIXED +3 3 NEAR-SURFACE SAMPLING: AVERAGED, PUMPED +4 4 NEAR-SURFACE SAMPLING: AVERAGED, UNPUMPED +5 5 NEAR-SURFACE SAMPLING: DISCRETE, PUMPED +6 6 NEAR-SURFACE SAMPLING: DISCRETE, UNPUMPED +7 7 NEAR-SURFACE SAMPLING: MIXED, PUMPED +8 8 NEAR-SURFACE SAMPLING: MIXED, UNPUMPED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8035.table b/definitions/bufr/tables/0/wmo/32/codetables/8035.table new file mode 100644 index 000000000..3d641fd15 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8035.table @@ -0,0 +1,8 @@ +0 0 GLOBAL +1 1 REGIONAL +2 2 NATIONAL +3 3 SPECIAL +4 4 BILATERAL +5 5 RESERVED +6 6 RESERVED +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8036.table b/definitions/bufr/tables/0/wmo/32/codetables/8036.table new file mode 100644 index 000000000..6436989e6 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8036.table @@ -0,0 +1,8 @@ +0 0 WMO SECRETARIAT +1 1 WMO +2 2 RSMC +3 3 NMC +4 4 RTH +5 5 OBSERVING SITE +6 6 OTHER +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8037.table b/definitions/bufr/tables/0/wmo/32/codetables/8037.table new file mode 100644 index 000000000..38cbe9a53 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8037.table @@ -0,0 +1,4 @@ +0 0 MANUFACTURER’S BASELINE CHECK UNIT +1 1 WEATHER SCREEN +2 2 GRUAN STANDARD HUMIDITY CHAMBER +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8038.table b/definitions/bufr/tables/0/wmo/32/codetables/8038.table new file mode 100644 index 000000000..aa4d7b77b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8038.table @@ -0,0 +1,3 @@ +0 0 VERIFIED INSTRUMENT READING +1 1 REFERENCE INSTRUMENT READING +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8039.table b/definitions/bufr/tables/0/wmo/32/codetables/8039.table new file mode 100644 index 000000000..f4403c63d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8039.table @@ -0,0 +1,8 @@ +0 0 ISSUE TIME OF FORECAST +1 1 TIME OF COMMENCEMENT OF PERIOD OF THE FORECAST +2 2 TIME OF ENDING OF PERIOD OF THE FORECAST +3 3 FORECAST TIME OF MAXIMUM TEMPERATURE +4 4 FORECAST TIME OF MINIMUM TEMPERATURE +5 5 TIME OF BEGINNING OF THE FORECAST CHANGE +6 6 TIME OF ENDING OF THE FORECAST CHANGE +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8040.table b/definitions/bufr/tables/0/wmo/32/codetables/8040.table new file mode 100644 index 000000000..42c5af0e5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8040.table @@ -0,0 +1,49 @@ +0 0 HIGH-RESOLUTION DATA SAMPLE +1 1 WITHIN 20 HPA OF SURFACE +2 2 PRESSURE LESS THAN 10 HPA (I.E., 9, 8, 7, ETC.) WHEN NO OTHER REASON APPLIES +3 3 BASE PRESSURE LEVEL FOR STABILITY INDEX +4 4 BEGIN DOUBTFUL TEMPERATURE, HEIGHT DATA +5 5 BEGIN MISSING DATA (ALL ELEMENTS) +6 6 BEGIN MISSING RELATIVE HUMIDITY DATA +7 7 BEGIN MISSING TEMPERATURE DATA +8 8 HIGHEST LEVEL REACHED BEFORE BALLOON DESCENT BECAUSE OF ICING OR TURBULENCE +9 9 END DOUBTFUL TEMPERATURE, HEIGHT DATA +10 10 END MISSING DATA (ALL ELEMENTS) +11 11 END MISSING RELATIVE HUMIDITY DATA +12 12 END MISSING TEMPERATURE DATA +13 13 ZERO DEGREES CELSIUS CROSSING(S) FOR RADAT +14 14 STANDARD PRESSURE LEVEL +15 15 OPERATOR-ADDED LEVEL +16 16 OPERATOR-DELETED LEVEL +17 17 BALLOON RE-ASCENDED BEYOND PREVIOUS HIGHEST ASCENT LEVEL +18 18 SIGNIFICANT RELATIVE HUMIDITY LEVEL +19 19 RELATIVE HUMIDITY LEVEL SELECTION TERMINATED +20 20 SURFACE LEVEL +21 21 SIGNIFICANT TEMPERATURE LEVEL +22 22 MANDATORY TEMPERATURE LEVEL +23 23 FLIGHT TERMINATION LEVEL +24 24 TROPOPAUSE(S) +25 25 AIRCRAFT REPORT +26 26 INTERPOLATED (GENERATED) LEVEL +27 27 MANDATORY WIND LEVEL +28 28 SIGNIFICANT WIND LEVEL +29 29 MAXIMUM WIND LEVEL +30 30 INCREMENTAL WIND LEVEL (FIXED REGIONAL) +31 31 INCREMENTAL HEIGHT LEVEL (GENERATED) +32 32 WIND TERMINATION LEVEL +33 33 PRESSURE 100 TO 110 HPA, WHEN NO OTHER REASON APPLIES +34 34 FREEZING LEVEL BASE +35 35 FREEZING LEVEL TOP +36 36 FLIGHT LEVEL BASE +37 37 FLIGHT LEVEL TOP +38 38 TOP OF WIND SOUNDING +39 39 BOTTOM OF WIND SOUNDING +40 40 SIGNIFICANT THERMODYNAMIC LEVEL (INVERSION) +41 41 SIGNIFICANT RELATIVE HUMIDITY LEVEL (ACCORDING TO NCDC CRITERIA) +42 42 SIGNIFICANT TEMPERATURE LEVEL (ACCORDING TO NCDC) +43 43 BEGIN MISSING WIND DATA +44 44 END MISSING WIND DATA +60 60 LEVEL OF 80-KNOT ISOTACH ABOVE JET +61 61 LEVEL OF 80-KNOT ISOTACH BELOW JET +62 62 OTHER +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8041.table b/definitions/bufr/tables/0/wmo/32/codetables/8041.table new file mode 100644 index 000000000..1f48fbedc --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8041.table @@ -0,0 +1,15 @@ +0 0 PARENT SITE +1 1 OBSERVATION SITE +2 2 BALLOON MANUFACTURE DATE +3 3 BALLOON LAUNCH POINT +4 4 SURFACE OBSERVATION +5 5 SURFACE OBSERVATION DISPLACEMENT FROM LAUNCH POINT +6 6 FLIGHT LEVEL OBSERVATION +7 7 FLIGHT LEVEL TERMINATION POINT +8 8 IFR CEILING AND VISIBILITY +9 9 MOUNTAIN OBSCURATION +10 10 STRONG SURFACE WIND +11 11 FREEZING LEVEL +12 12 MULTIPLE FREEZING LEVEL +13 13 INSTRUMENT MANUFACTURE DATE +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8042.table b/definitions/bufr/tables/0/wmo/32/codetables/8042.table new file mode 100644 index 000000000..c71709a4c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8042.table @@ -0,0 +1,17 @@ +1 1 SURFACE +2 2 STANDARD LEVEL +3 3 TROPOPAUSE LEVEL +4 4 MAXIMUM WIND LEVEL +5 5 SIGNIFICANT TEMPERATURE LEVEL +6 6 SIGNIFICANT HUMIDITY LEVEL +7 7 SIGNIFICANT WIND LEVEL +8 8 BEGINNING OF MISSING TEMPERATURE DATA +9 9 END OF MISSING TEMPERATURE DATA +10 10 BEGINNING OF MISSING HUMIDITY DATA +11 11 END OF MISSING HUMIDITY DATA +12 12 BEGINNING OF MISSING WIND DATA +13 13 END OF MISSING WIND DATA +14 14 TOP OF WIND SOUNDING +15 15 LEVEL DETERMINED BY REGIONAL DECISION +16 16 FREEZING LEVEL +17 17 PRESSURE LEVEL ORIGINALLY INDICATED BY HEIGHT AS THE VERTICAL COORDINATE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8043.table b/definitions/bufr/tables/0/wmo/32/codetables/8043.table new file mode 100644 index 000000000..249fd0e55 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8043.table @@ -0,0 +1,17 @@ +0 0 OZONE +1 1 WATER VAPOUR +2 2 METHANE +3 3 CARBON DIOXIDE +4 4 CARBON MONOXIDE +5 5 NITROGEN DIOXIDE +6 6 NITROUS OXIDE +7 7 FORMALDEHYDE +8 8 SULPHUR DIOXIDE +25 25 PARTICULATE MATTER < 1.0 MICRONS +26 26 PARTICULATE MATTER < 2.5 MICRONS +27 27 PARTICULATE MATTER < 10 MICRONS +28 28 AEROSOLS (GENERIC) +29 29 SMOKE (GENERIC) +30 30 CRUSTAL MATERIAL (GENERIC DUST) +31 31 VOLCANIC ASH +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8050.table b/definitions/bufr/tables/0/wmo/32/codetables/8050.table new file mode 100644 index 000000000..4b401f1d2 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8050.table @@ -0,0 +1,11 @@ +0 0 RESERVED +1 1 PRESSURE +2 2 TEMPERATURE +3 3 EXTREME TEMPERATURE +4 4 VAPOUR PRESSURE +5 5 PRECIPITATION +6 6 SUNSHINE DURATION +7 7 MAXIMUM TEMPERATURE +8 8 MINIMUM TEMPERATURE +9 9 WIND +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8051.table b/definitions/bufr/tables/0/wmo/32/codetables/8051.table new file mode 100644 index 000000000..5249fe6a2 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8051.table @@ -0,0 +1,7 @@ +1 1 PRESSURE +2 2 TEMPERATURE +3 3 EXTREME TEMPERATURE +4 4 VAPOUR PRESSURE +5 5 PRECIPITATION +6 6 SUNSHINE DURATION +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8052.table b/definitions/bufr/tables/0/wmo/32/codetables/8052.table new file mode 100644 index 000000000..46dcbbe21 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8052.table @@ -0,0 +1,26 @@ +0 0 MEAN WIND SPEED OVER A 10-MINUTE PERIOD OBSERVED OR RECORDED EQUAL TO OR MORE THAN 10 M S-1 OR 20 KNOTS +1 1 MEAN WIND SPEED OVER A 10-MINUTE PERIOD OBSERVED OR RECORDED EQUAL TO OR MORE THAN 20 M S-1 OR 40 KNOTS +2 2 MEAN WIND SPEED OVER A 10-MINUTE PERIOD OBSERVED OR RECORDED EQUAL TO OR MORE THAN 30 M S-1 OR 60 KNOTS +3 3 MAXIMUM TEMPERATURE LESS THAN 273.15 K +4 4 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 298.15 K +5 5 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 303.15 K +6 6 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 308.15 K +7 7 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 313.15 K +8 8 MINIMUM TEMPERATURE LESS THAN 273.15 K +9 9 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 273.15 K +10 10 PRECIPITATION EQUAL TO OR MORE THAN 1.0 KG M-2 +11 11 PRECIPITATION EQUAL TO OR MORE THAN 5.0 KG M-2 +12 12 PRECIPITATION EQUAL TO OR MORE THAN 10.0 KG M-2 +13 13 PRECIPITATION EQUAL TO OR MORE THAN 50.0 KG M-2 +14 14 PRECIPITATION EQUAL TO OR MORE THAN 100.0 KG M-2 +15 15 PRECIPITATION EQUAL TO OR MORE THAN 150.0 KG M-2 +16 16 SNOW DEPTH MORE THAN 0.00 M +17 17 SNOW DEPTH MORE THAN 0.01 M +18 18 SNOW DEPTH MORE THAN 0.10 M +19 19 SNOW DEPTH MORE THAN 0.50 M +20 20 HORIZONTAL VISIBILITY LESS THAN 50 M +21 21 HORIZONTAL VISIBILITY LESS THAN 100 M +22 22 HORIZONTAL VISIBILITY LESS THAN 1000 M +23 23 HAIL +24 24 THUNDERSTORM +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8053.table b/definitions/bufr/tables/0/wmo/32/codetables/8053.table new file mode 100644 index 000000000..cbc11c9a7 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8053.table @@ -0,0 +1,4 @@ +0 0 VALUE OCCURRED ON ONLY ONE DAY IN THE MONTH +1 1 VALUE OCCURRED ON MORE THAN ONE DAY IN THE MONTH +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8054.table b/definitions/bufr/tables/0/wmo/32/codetables/8054.table new file mode 100644 index 000000000..51b908e08 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8054.table @@ -0,0 +1,3 @@ +0 0 WIND SPEED OR GUST IS AS REPORTED +1 1 WIND SPEED IS GREATER THAN THAT REPORTED (P IN METAR/TAF/SPECI) +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8060.table b/definitions/bufr/tables/0/wmo/32/codetables/8060.table new file mode 100644 index 000000000..2865fece5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8060.table @@ -0,0 +1,8 @@ +0 0 RESERVED +1 1 RANGE +2 2 AZIMUTH +3 3 HORIZONTAL +4 4 VERTICAL +5 5 NORTH/SOUTH +6 6 EAST/WEST +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8065.table b/definitions/bufr/tables/0/wmo/32/codetables/8065.table new file mode 100644 index 000000000..69b80ea33 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8065.table @@ -0,0 +1,4 @@ +0 0 NO SUN-GLINT +1 1 SUN-GLINT +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8066.table b/definitions/bufr/tables/0/wmo/32/codetables/8066.table new file mode 100644 index 000000000..fcc0252c9 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8066.table @@ -0,0 +1,4 @@ +0 0 OPAQUE +1 1 SEMI-TRANSPARENT +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8070.table b/definitions/bufr/tables/0/wmo/32/codetables/8070.table new file mode 100644 index 000000000..f58061757 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8070.table @@ -0,0 +1,6 @@ +0 0 RESERVED +1 1 RESERVED +2 2 EARTH LOCATED INSTRUMENT COUNTS, CALIBRATION COEFFICIENTS AND HOUSEKEEPING (LEVEL 1B) +3 3 EARTH LOCATED CALIBRATED RADIANCES (LEVEL 1C) +4 4 MAPPED TO A COMMON FOOTPRINT, EARTH LOCATED CALIBRATED RADIANCES (LEVEL 1D) +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8072.table b/definitions/bufr/tables/0/wmo/32/codetables/8072.table new file mode 100644 index 000000000..7dcd9611b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8072.table @@ -0,0 +1,6 @@ +0 0 MIXED +1 1 CLEAR +2 2 CLOUDY +3 3 PROBABLY CLEAR +4 4 PROBABLY CLOUDY +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8074.table b/definitions/bufr/tables/0/wmo/32/codetables/8074.table new file mode 100644 index 000000000..5778e6552 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8074.table @@ -0,0 +1,4 @@ +0 0 OPEN OCEAN OR SEMI-ENCLOSED SEA +1 1 NON-OCEAN LIKE +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8075.table b/definitions/bufr/tables/0/wmo/32/codetables/8075.table new file mode 100644 index 000000000..5f5e3a24c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8075.table @@ -0,0 +1,4 @@ +0 0 ASCENDING ORBIT +1 1 DESCENDING ORBIT +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8076.table b/definitions/bufr/tables/0/wmo/32/codetables/8076.table new file mode 100644 index 000000000..431496fbc --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8076.table @@ -0,0 +1,9 @@ +0 0 KU +1 1 C +2 2 LONG-WAVE INFRARED +3 3 MEDIUM-WAVE INFRARED +4 4 SHORT-WAVE INFRARED +5 5 M +6 6 I +7 7 DAY/NIGHT +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8077.table b/definitions/bufr/tables/0/wmo/32/codetables/8077.table new file mode 100644 index 000000000..2c7902bd7 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8077.table @@ -0,0 +1,7 @@ +0 0 LAND +1 1 SEA +2 2 COASTAL +3 3 OPEN OCEAN OR SEMI-ENCLOSED SEA +4 4 ENCLOSED SEA OR LAKE +5 5 CONTINENTAL ICE +127 127 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8079.table b/definitions/bufr/tables/0/wmo/32/codetables/8079.table new file mode 100644 index 000000000..735a09c37 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8079.table @@ -0,0 +1,9 @@ +0 0 NORMAL ISSUE +1 1 CORRECTION TO A PREVIOUSLY ISSUED PRODUCT (COR) +2 2 AMENDMENT TO A PREVIOUSLY ISSUED PRODUCT (AMD) +3 3 CORRECTION TO A PREVIOUSLY ISSUED AMENDED PRODUCT (COR AMD) +4 4 CANCELLATION OF A PREVIOUSLY ISSUED PRODUCT (CNL) +5 5 NO PRODUCT AVAILABLE (NIL) +6 6 SPECIAL REPORT (SPECI) +7 7 CORRECTED SPECIAL REPORT (SPECI COR) +15 15 MISSING OR NOT APPLICABLE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8080.table b/definitions/bufr/tables/0/wmo/32/codetables/8080.table new file mode 100644 index 000000000..1a0f3a5e5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8080.table @@ -0,0 +1,14 @@ +0 0 TOTAL WATER PRESSURE PROFILE +1 1 TOTAL WATER TEMPERATURE PROFILE +2 2 TOTAL WATER SALINITY PROFILE +3 3 TOTAL WATER CONDUCTIVITY PROFILE +4 4 TOTAL WATER DEPTH +10 10 WATER PRESSURE AT A LEVEL +11 11 WATER TEMPERATURE AT A LEVEL +12 12 SALINITY AT A LEVEL +13 13 WATER DEPTH AT A LEVEL +14 14 SEA/WATER CURRENT SPEED AT A LEVEL +15 15 SEA/WATER CURRENT DIRECTION AT A LEVEL +16 16 DISSOLVED OXYGEN AT A LEVEL +20 20 POSITION +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8081.table b/definitions/bufr/tables/0/wmo/32/codetables/8081.table new file mode 100644 index 000000000..75d288732 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8081.table @@ -0,0 +1,5 @@ +0 0 SENSOR +1 1 TRANSMITTER +2 2 RECEIVER +3 3 OBSERVING PLATFORM +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8082.table b/definitions/bufr/tables/0/wmo/32/codetables/8082.table new file mode 100644 index 000000000..1f24db866 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8082.table @@ -0,0 +1,3 @@ +0 0 SENSOR HEIGHT IS NOT MODIFIED +1 1 SENSOR HEIGHT IS MODIFIED TO STANDARD LEVEL +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8083.table b/definitions/bufr/tables/0/wmo/32/codetables/8083.table new file mode 100644 index 000000000..174ef3428 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8083.table @@ -0,0 +1,9 @@ +1 1 ADJUSTED TO OR WITH RESPECT TO REPRESENTATIVE HEIGHT OF SENSOR ABOVE LOCAL GROUND (OR DECK OF MARINE PLATFORM) +2 2 ADJUSTED TO OR WITH RESPECT TO REPRESENTATIVE HEIGHT OF SENSOR ABOVE WATER SURFACE +3 3 ADJUSTED WITH RESPECT TO STANDARD SURFACE ROUGHNESS +4 4 ADJUSTED WITH RESPECT TO WIND SPEED +5 5 ADJUSTED WITH RESPECT TO TEMPERATURE +6 6 ADJUSTED WITH RESPECT TO PRESSURE +7 7 ADJUSTED WITH RESPECT TO HUMIDITY +8 8 ADJUSTED WITH RESPECT TO EVAPORATION +9 9 ADJUSTED WITH RESPECT TO WETTING LOSSES diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8085.table b/definitions/bufr/tables/0/wmo/32/codetables/8085.table new file mode 100644 index 000000000..79e1a3d90 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8085.table @@ -0,0 +1,4 @@ +0 0 FORE BEAM +1 1 MID BEAM +2 2 AFT BEAM +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8086.table b/definitions/bufr/tables/0/wmo/32/codetables/8086.table new file mode 100644 index 000000000..a9ecd0351 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8086.table @@ -0,0 +1,11 @@ +1 1 MODEL GROUND SURFACE +2 2 STANDARD LEVEL +3 3 TROPOPAUSE LEVEL +4 4 MAXIMUM WIND LEVEL +5 5 SIGNIFICANT TEMPERATURE LEVEL +6 6 SIGNIFICANT HUMIDITY LEVEL +7 7 SIGNIFICANT WIND LEVEL +8 8 VERTICALLY INTERPOLATED LEVEL (THIS SHOULD BE SET TO 1 FOR POINTS ON THE VERTICAL PROFILE THAT FALL BETWEEN THE MODEL'S NATIVE VERTICAL LEVELS.) +9 9 VIRTUAL STATION HEIGHT +10 10 LEVEL OF BEST FIT +11 11 RESERVED diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8087.table b/definitions/bufr/tables/0/wmo/32/codetables/8087.table new file mode 100644 index 000000000..d556c98de --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8087.table @@ -0,0 +1,5 @@ +0 0 UPPER LEFT +1 1 UPPER RIGHT +2 2 LOWER RIGHT +3 3 LOWER LEFT +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8088.table b/definitions/bufr/tables/0/wmo/32/codetables/8088.table new file mode 100644 index 000000000..d6f51be70 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8088.table @@ -0,0 +1,4 @@ +0 0 TOP VIEW (GEOGRAPHICAL LONGITUDE ON X-AXIS AND LATITUDE ON Y-AXIS) +1 1 NORTH-SOUTH VIEW (TRANSECT WITH GEOGRAPHICAL LONGITUDE ON X-AXIS AND VERTICAL HEIGHT ON Y-AXIS) +2 2 EAST-WEST VIEW (TRANSECT WITH GEOGRAPHICAL LATITUDE ON X-AXIS AND VERTICAL HEIGHT ON Y-AXIS) +63 63 MISSING diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8091.table b/definitions/bufr/tables/0/wmo/32/codetables/8091.table new file mode 100644 index 000000000..3a8c44df1 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8091.table @@ -0,0 +1,11 @@ +0 0 SATELLITE COORDINATES +1 1 OBSERVATION COORDINATES +2 2 START OF OBSERVATION +3 3 END OF OBSERVATION +4 4 HORIZONTAL CENTRE OF GRAVITY OF THE OBSERVATION +5 5 VERTICAL CENTRE OF GRAVITY OF THE OBSERVATION +6 6 TOP OF THE OBSERVATION +7 7 BOTTOM OF THE OBSERVATION +8 8 PROJECTION ORIGIN +9 9 COORDINATES OF TRUE SCALE +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8092.table b/definitions/bufr/tables/0/wmo/32/codetables/8092.table new file mode 100644 index 000000000..db46f8e50 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8092.table @@ -0,0 +1,2 @@ +0 0 STANDARD UNCERTAINTY +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/codetables/8093.table b/definitions/bufr/tables/0/wmo/32/codetables/8093.table new file mode 100644 index 000000000..74f5c3a63 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/codetables/8093.table @@ -0,0 +1,4 @@ +0 0 TOTAL UNCERTAINTY +1 1 SYSTEMATIC COMPONENT OF UNCERTAINTY +2 2 RANDOM COMPONENT OF UNCERTAINTY +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/32/element.table b/definitions/bufr/tables/0/wmo/32/element.table new file mode 100644 index 000000000..26e9f58a6 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/element.table @@ -0,0 +1,1691 @@ +#code|abbreviation|type|name|unit|scale|reference|width|crex_unit|crex_scale|crex_width +000001|tableAEntry|string|TABLE A: ENTRY|CCITT IA5|0|0|24|Character|0|3 +000002|tableALine1|string|TABLE A: DATA CATEGORY DESCRIPTION, LINE 1|CCITT IA5|0|0|256|Character|0|32 +000003|tableALine2|string|TABLE A: DATA CATEGORY DESCRIPTION, LINE 2|CCITT IA5|0|0|256|Character|0|32 +000004|masterTable|string|BUFR/CREX MASTER TABLE|CCITT IA5|0|0|16|Character|0|2 +000005|editionNumber|string|BUFR/CREX EDITION NUMBER|CCITT IA5|0|0|24|Character|0|3 +000006|bufrMasterTableVersionNumber|string|BUFR MASTER TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2 +000007|crexMasterTableVersionNumber|string|CREX MASTER TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2 +000008|bufrLocalTableVersionNumber|string|BUFR LOCAL TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2 +000010|fDescriptorToBeAddedOrDefined|string|F DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|8|Character|0|1 +000011|xDescriptorToBeAddedOrDefined|string|X DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|16|Character|0|2 +000012|yDescriptorToBeAddedOrDefined|string|Y DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|24|Character|0|3 +000013|elementNameLine1|string|ELEMENT NAME, LINE 1|CCITT IA5|0|0|256|Character|0|32 +000014|elementNameLine2|string|ELEMENT NAME, LINE 2|CCITT IA5|0|0|256|Character|0|32 +000015|unitsName|string|UNITS NAME|CCITT IA5|0|0|192|Character|0|24 +000016|unitsScaleSign|string|UNITS SCALE SIGN|CCITT IA5|0|0|8|Character|0|1 +000017|unitsScale|string|UNITS SCALE|CCITT IA5|0|0|24|Character|0|3 +000018|unitsReferenceSign|string|UNITS REFERENCE SIGN|CCITT IA5|0|0|8|Character|0|1 +000019|unitsReferenceValue|string|UNITS REFERENCE VALUE|CCITT IA5|0|0|80|Character|0|10 +000020|elementDataWidth|string|ELEMENT DATA WIDTH|CCITT IA5|0|0|24|Character|0|3 +000024|codeFigure|string|CODE FIGURE|CCITT IA5|0|0|64|Character|0|8 +000025|codeFigureMeaning|string|CODE FIGURE MEANING|CCITT IA5|0|0|496|Character|0|62 +000026|bitNumber|string|BIT NUMBER|CCITT IA5|0|0|48|Character|0|6 +000027|bitNumberMeaning|string|BIT NUMBER MEANING|CCITT IA5|0|0|496|Character|0|62 +000030|descriptorDefiningSequence|string|DESCRIPTOR DEFINING SEQUENCE|CCITT IA5|0|0|48|Character|0|6 +001001|blockNumber|long|WMO BLOCK NUMBER|Numeric|0|0|7|Numeric|0|2 +001002|stationNumber|long|WMO STATION NUMBER|Numeric|0|0|10|Numeric|0|3 +001003|regionNumber|table|WMO REGION NUMBER/GEOGRAPHICAL AREA|CODE TABLE|0|0|3|CODE TABLE|0|1 +001004|wmoRegionSubArea|long|WMO REGION SUB-AREA|Numeric|0|0|3|Numeric|0|1 +001005|buoyOrPlatformIdentifier|long|BUOY/PLATFORM IDENTIFIER|Numeric|0|0|17|Numeric|0|5 +001006|aircraftFlightNumber|string|AIRCRAFT FLIGHT NUMBER|CCITT IA5|0|0|64|Character|0|8 +001007|satelliteIdentifier|table|SATELLITE IDENTIFIER|CODE TABLE|0|0|10|CODE TABLE|0|4 +001008|aircraftRegistrationNumberOrOtherIdentification|string|AIRCRAFT REGISTRATION NUMBER OR OTHER IDENTIFICATION|CCITT IA5|0|0|64|Character|0|8 +001009|commercialAircraftType|string|TYPE OF COMMERCIAL AIRCRAFT|CCITT IA5|0|0|64|Character|0|8 +001010|stationaryBuoyPlatformIdentifierEGCManBuoys|string|STATIONARY BUOY PLATFORM IDENTIFIER; E.G. C-MAN BUOYS|CCITT IA5|0|0|64|Character|0|8 +001011|shipOrMobileLandStationIdentifier|string|SHIP OR MOBILE LAND STATION IDENTIFIER|CCITT IA5|0|0|72|Character|0|9 +001012|directionOfMotionOfMovingObservingPlatform|long|DIRECTION OF MOTION OF MOVING OBSERVING PLATFORM|deg|0|0|9|deg|0|3 +001013|movingObservingPlatformSpeed|long|SPEED OF MOTION OF MOVING OBSERVING PLATFORM|m/s|0|0|10|m/s|0|3 +001014|platformDriftSpeed|double|PLATFORM DRIFT SPEED (HIGH PRECISION)|m/s|2|0|10|m/s|2|4 +001015|stationOrSiteName|string|STATION OR SITE NAME|CCITT IA5|0|0|160|Character|0|20 +001018|shortStationName|string|SHORT STATION OR SITE NAME|CCITT IA5|0|0|40|Character|0|5 +001019|longStationName|string|LONG STATION OR SITE NAME|CCITT IA5|0|0|256|Character|0|32 +001020|wmoRegionSubArea|long|WMO REGION SUB-AREA|Numeric|0|0|4|Numeric|0|2 +001021|synopticFeatureIdentifier|long|SYNOPTIC FEATURE IDENTIFIER|Numeric|0|0|14|Numeric|0|4 +001022|featureName|string|NAME OF FEATURE|CCITT IA5|0|0|224|Character|0|28 +001023|observationSequenceNumber|long|OBSERVATION SEQUENCE NUMBER|Numeric|0|0|9|Numeric|0|3 +001024|windSpeedSource|table|WIND SPEED SOURCE|CODE TABLE|0|0|5|CODE TABLE|0|2 +001025|stormIdentifier|string|STORM IDENTIFIER|CCITT IA5|0|0|24|Character|0|3 +001026|stormName|string|WMO STORM NAME|CCITT IA5|0|0|64|Character|0|8 +001027|longStormName|string|WMO LONG STORM NAME|CCITT IA5|0|0|80|Character|0|10 +001028|aerosolOpticalDepthSource|table|AEROSOL OPTICAL DEPTH (AOD) SOURCE|CODE TABLE|0|0|5|CODE TABLE|0|2 +001029|ssiSource|table|SSI SOURCE|CODE TABLE|0|0|5|CODE TABLE|0|2 +001030|numericalModelIdentifier|string|NUMERICAL MODEL IDENTIFIER|CCITT IA5|0|0|128|Character|0|16 +001031|centre|table|IDENTIFICATION OF ORIGINATING/GENERATING CENTRE|CODE TABLE|0|0|16|CODE TABLE|0|5 +001032|generatingApplication|table|GENERATING APPLICATION|CODE TABLE defined by originating/generating centre|0|0|8|CODE TABLE|0|3 +001033|centre|table|IDENTIFICATION OF ORIGINATING/GENERATING CENTRE|Common CODE TABLE C-1|0|0|8|Common CODE TABLE C-1|0|3 +001034|subCentre|table|IDENTIFICATION OF ORIGINATING/GENERATING SUB-CENTRE|Common CODE TABLE C-12|0|0|8|Common CODE TABLE C-12|0|3 +001035|centre|table|ORIGINATING CENTRE|Common CODE TABLE C-11|0|0|16|Common CODE TABLE C-11|0|5 +001036|agencyInChargeOfOperatingObservingPlatform|table|AGENCY IN CHARGE OF OPERATING THE OBSERVING PLATFORM|CODE TABLE|0|0|20|CODE TABLE|0|7 +001037|sigmetSequenceIdentifier|string|SIGMET SEQUENCE IDENTIFIER|CCITT IA5|0|0|24|Character|0|3 +001038|sourceOfSeaIceFraction|table|SOURCE OF SEA ICE FRACTION|CODE TABLE|0|0|5|CODE TABLE|0|2 +001039|graphicalAreaForecastSequenceIdentifier|string|GRAPHICAL AREA FORECAST (GFA) SEQUENCE IDENTIFIER|CCITT IA5|0|0|40|Character|0|5 +001040|processingCentreIdCode|string|PROCESSING CENTRE ID CODE|CCITT IA5|0|0|48|Character|0|6 +001041|absolutePlatformVelocityFirstComponent|double|ABSOLUTE PLATFORM VELOCITY - FIRST COMPONENT|m/s|5|-1073741824|31|m/s|5|10 +001042|absolutePlatformVelocitySecondComponent|double|ABSOLUTE PLATFORM VELOCITY - SECOND COMPONENT|m/s|5|-1073741824|31|m/s|5|10 +001043|absolutePlatformVelocityThirdComponent|double|ABSOLUTE PLATFORM VELOCITY - THIRD COMPONENT|m/s|5|-1073741824|31|m/s|5|10 +001044|standardGeneratingApplication|table|STANDARD GENERATING APPLICATION|CODE TABLE|0|0|8|CODE TABLE|0|3 +001050|platformTransmitterIdNumber|long|PLATFORM TRANSMITTER ID NUMBER|Numeric|0|0|17|Numeric|0|6 +001051|platformTransmitterIdNumber|string|PLATFORM TRANSMITTER ID NUMBER|CCITT IA5|0|0|96|Character|0|12 +001052|platformTransmitterId|table|PLATFORM TRANSMITTER ID|CODE TABLE|0|0|3|CODE TABLE|0|1 +001053|tsunameterReportSequenceNumber|long|TSUNAMETER REPORT SEQUENCE NUMBER TRIGGERED BY A TSUNAMI EVENT|Numeric|0|0|7|Numeric|0|2 +001060|aircraftReportingPointBeaconIdentifier|string|AIRCRAFT REPORTING POINT (BEACON IDENTIFIER)|CCITT IA5|0|0|64|Character|0|8 +001062|shortIcaoLocationIndicator|string|SHORT ICAO LOCATION INDICATOR|CCITT IA5|0|0|32|Character|0|4 +001063|icaoLocationIndicator|string|ICAO LOCATION INDICATOR|CCITT IA5|0|0|64|Character|0|8 +001064|runwayDesignator|string|RUNWAY DESIGNATOR|CCITT IA5|0|0|32|Character|0|4 +001065|icaoRegionIdentifier|string|ICAO REGION IDENTIFIER|CCITT IA5|0|0|256|Character|0|32 +001075|tideStationIdentification|string|TIDE STATION IDENTIFICATION|CCITT IA5|0|0|40|Character|0|5 +001079|uniqueIdentifierForProfile|string|UNIQUE IDENTIFIER FOR THE PROFILE|CCITT IA5|0|0|64|Character|0|8 +001080|shipLineNumberAccordingToSoop|string|SHIP LINE NUMBER ACCORDING TO SOOP|CCITT IA5|0|0|32|Character|0|4 +001081|radiosondeSerialNumber|string|RADIOSONDE SERIAL NUMBER|CCITT IA5|0|0|160|Character|0|20 +001082|radiosondeAscensionNumber|long|RADIOSONDE ASCENSION NUMBER|Numeric|0|0|14|Numeric|0|4 +001083|radiosondeReleaseNumber|long|RADIOSONDE RELEASE NUMBER|Numeric|0|0|3|Numeric|0|1 +001085|observingPlatformManufacturerModel|string|OBSERVING PLATFORM MANUFACTURER'S MODEL|CCITT IA5|0|0|160|Character|0|20 +001086|observingPlatformManufacturerSerialNumber|string|OBSERVING PLATFORM MANUFACTURER'S SERIAL NUMBER|CCITT IA5|0|0|256|Character|0|32 +001087|marineObservingPlatformIdentifier|long|WMO MARINE OBSERVING PLATFORM EXTENDED IDENTIFIER|Numeric|0|0|23|Numeric|0|7 +001090|techniqueForMakingUpInitialPerturbations|table|TECHNIQUE FOR MAKING UP INITIAL PERTURBATIONS|CODE TABLE|0|0|8|CODE TABLE|0|3 +001091|ensembleMemberNumber|long|ENSEMBLE MEMBER NUMBER|Numeric|0|0|10|Numeric|0|4 +001092|ensembleForecastType|table|TYPE OF ENSEMBLE FORECAST|CODE TABLE|0|0|8|CODE TABLE|0|3 +001093|balloonLotNumber|string|BALLOON LOT NUMBER|CCITT IA5|0|0|96|Character|0|12 +001094|wbanNumber|long|WBAN NUMBER|Numeric|0|0|17|Numeric|0|5 +001095|observerIdentification|string|OBSERVER IDENTIFICATION|CCITT IA5|0|0|32|Character|0|4 +001096|stationAcquisition|string|STATION ACQUISITION|CCITT IA5|0|0|160|Character|0|20 +001099|uniqueProductDefinition|string|UNIQUE PRODUCT DEFINITION|CCITT IA5|0|0|248|Character|0|31 +001101|stateIdentifier|table|STATE IDENTIFIER|CODE TABLE|0|0|10|CODE TABLE|0|3 +001102|nationalStationNumber|long|NATIONAL STATION NUMBER|Numeric|0|0|30|Numeric|0|9 +001103|imoNumber|long|IMO NUMBER. UNIQUE LLOYD'S REGISTER|Numeric|0|0|24|Numeric|0|7 +001104|stateOrFederalStateIdentifier|string|STATE/FEDERAL STATE IDENTIFIER|CCITT IA5|0|0|32|Character|0|4 +001105|highwayDesignator|string|HIGHWAY DESIGNATOR|CCITT IA5|0|0|40|Character|0|5 +001106|locationAlongHighwayAsIndicatedByPositionMarkers|long|LOCATION ALONG HIGHWAY AS INDICATED BY POSITION MARKERS|m|-2|0|14|m|-2|5 +001110|aircraftTailNumber|string|AIRCRAFT TAIL NUMBER|CCITT IA5|0|0|48|Character|0|6 +001111|originationAirport|string|ORIGINATION AIRPORT|CCITT IA5|0|0|24|Character|0|3 +001112|destinationAirport|string|DESTINATION AIRPORT|CCITT IA5|0|0|24|Character|0|3 +001113|templateVersionNumberDefinedByOriginatingCentre|long|TEMPLATE VERSION NUMBER DEFINED BY ORIGINATING CENTRE|Numeric|1|0|9|Numeric|1|3 +001114|encryptedStationIdentifierBase64Encoding|string|ENCRYPTED SHIP OR MOBILE LAND STATION IDENTIFIER (BASE64 ENCODING)|CCITT IA5|0|0|352|Character|0|44 +001115|identifierOfTheCruiseOrMission|string|IDENTIFIER OF THE CRUISE OR MISSION UNDER WHICH THE DATA WERE COLLECTED|CCITT IA5|0|0|160|Character|0|20 +001124|gridPointIdentifier|long|GRID POINT IDENTIFIER|Numeric|0|0|24|Numeric|0|8 +001125|wigosIdentifierSeries|long|WIGOS IDENTIFIER SERIES|Numeric|0|0|4|Numeric|0|2 +001126|wigosIssuerOfIdentifier|long|WIGOS ISSUER OF IDENTIFIER|Numeric|0|0|16|Numeric|0|5 +001127|wigosIssueNumber|long|WIGOS ISSUE NUMBER|Numeric|0|0|16|Numeric|0|5 +001128|wigosLocalIdentifierCharacter|string|WIGOS LOCAL IDENTIFIER (CHARACTER)|CCITT IA5|0|0|128|Character|0|16 +001144|snapshotIdentifier|long|SNAPSHOT IDENTIFIER|Numeric|0|0|31|Numeric|0|10 +001150|coordinateReferenceSystem|table|COORDINATE REFERENCE SYSTEM|CODE TABLE|0|0|16|CODE TABLE|0|5 +001151|fixedMeanSeaLevelReferenceDatum|table|FIXED MEAN SEA-LEVEL REFERENCE DATUM|CODE TABLE|0|0|12|CODE TABLE|0|4 +001152|semiMajorAxisOfRotationEllipsoid|double|SEMI-MAJOR AXIS OF ROTATION ELLIPSOID|m|2|0|31|m|2|11 +001153|semiMinorAxisOfRotationEllipsoid|double|SEMI-MINOR AXIS OF ROTATION ELLIPSOID|m|2|0|31|m|2|11 +002001|stationType|table|TYPE OF STATION|CODE TABLE|0|0|2|CODE TABLE|0|1 +002002|instrumentationForWindMeasurement|flag|TYPE OF INSTRUMENTATION FOR WIND MEASUREMENT|FLAG TABLE|0|0|4|FLAG TABLE|0|2 +002003|measuringEquipmentType|table|TYPE OF MEASURING EQUIPMENT USED|CODE TABLE|0|0|4|CODE TABLE|0|2 +002004|typeOfInstrumentationForEvaporationMeasurement|table|TYPE OF INSTRUMENTATION FOR EVAPORATION MEASUREMENT OR TYPE OF CROP FOR WHICH EVAPOTRANSPIRATION IS REPORTED|CODE TABLE|0|0|4|CODE TABLE|0|2 +002005|temperatureObservationPrecision|double|PRECISION OF TEMPERATURE OBSERVATION|K|2|0|7|K|2|3 +002007|sensorForWaterLevelMeasuringInstrumentType|table|TYPE OF SENSOR FOR WATER LEVEL MEASURING INSTRUMENT|CODE TABLE|0|0|6|CODE TABLE|0|2 +002008|typeOfOffshorePlatform|table|TYPE OF OFFSHORE PLATFORM|CODE TABLE|0|0|4|CODE TABLE|0|2 +002011|radiosondeType|table|RADIOSONDE TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3 +002012|radiosondeComputationalMethod|table|RADIOSONDE COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2 +002013|solarAndInfraredRadiationCorrection|table|SOLAR AND INFRARED RADIATION CORRECTION|CODE TABLE|0|0|4|CODE TABLE|0|2 +002014|trackingTechniqueOrStatusOfSystem|table|TRACKING TECHNIQUE/STATUS OF SYSTEM USED|CODE TABLE|0|0|7|CODE TABLE|0|3 +002015|radiosondeCompleteness|table|RADIOSONDE COMPLETENESS|CODE TABLE|0|0|4|CODE TABLE|0|2 +002016|radiosondeConfiguration|flag|RADIOSONDE CONFIGURATION|FLAG TABLE|0|0|5|FLAG TABLE|0|2 +002017|correctionAlgorithmsForHumidityMeasurements|table|CORRECTION ALGORITHMS FOR HUMIDITY MEASUREMENTS|CODE TABLE|0|0|5|CODE TABLE|0|2 +002019|satelliteInstruments|table|SATELLITE INSTRUMENTS|CODE TABLE|0|0|11|CODE TABLE|0|4 +002020|satelliteClassification|table|SATELLITE CLASSIFICATION|CODE TABLE|0|0|9|CODE TABLE|0|3 +002021|satelliteInstrumentDataUsedInProcessing|flag|SATELLITE INSTRUMENT DATA USED IN PROCESSING|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +002022|satelliteDataProcessingTechnique|flag|SATELLITE DATA-PROCESSING TECHNIQUE USED|FLAG TABLE|0|0|8|FLAG TABLE|0|3 +002023|satelliteDerivedWindComputationMethod|table|SATELLITE-DERIVED WIND COMPUTATION METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2 +002024|meanHumidityComputationalMethod|table|INTEGRATED MEAN HUMIDITY COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2 +002025|satelliteChannelsUsedInComputation|flag|SATELLITE CHANNEL(S) USED IN COMPUTATION|FLAG TABLE|0|0|25|FLAG TABLE|0|9 +002026|crossTrackResolution|double|CROSS-TRACK RESOLUTION|m|2|0|12|m|2|4 +002027|alongTrackResolution|double|ALONG-TRACK RESOLUTION|m|2|0|12|m|2|4 +002028|segmentSizeAtNadirInXDirection|long|SEGMENT SIZE AT NADIR IN X-DIRECTION|m|0|0|18|m|0|6 +002029|segmentSizeAtNadirInYDirection|long|SEGMENT SIZE AT NADIR IN Y-DIRECTION|m|0|0|18|m|0|6 +002030|methodOfCurrentMeasurement|table|METHOD OF CURRENT MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1 +002031|durationAndTimeOfCurrentMeasurement|table|DURATION AND TIME OF CURRENT MEASUREMENT|CODE TABLE|0|0|5|CODE TABLE|0|2 +002032|indicatorForDigitization|table|INDICATOR FOR DIGITIZATION|CODE TABLE|0|0|2|CODE TABLE|0|1 +002033|methodOfSalinityOrDepthMeasurement|table|METHOD OF SALINITY/DEPTH MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1 +002034|drogueType|table|DROGUE TYPE|CODE TABLE|0|0|5|CODE TABLE|0|2 +002035|cableLength|long|CABLE LENGTH|m|0|0|9|m|0|3 +002036|buoyType|table|BUOY TYPE|CODE TABLE|0|0|2|CODE TABLE|0|1 +002037|methodOfTidalObservation|table|METHOD OF TIDAL OBSERVATION|CODE TABLE|0|0|3|CODE TABLE|0|1 +002038|methodOfWaterTemperatureAndOrOrSalinityMeasurement|table|METHOD OF WATER TEMPERATURE AND/OR SALINITY MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2 +002039|methodOfWetBulbTemperatureMeasurement|table|METHOD OF WET-BULB TEMPERATURE MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1 +002040|methodOfRemovingVelocityAndMotionOfPlatformFromCurrent|table|METHOD OF REMOVING VELOCITY AND MOTION OF PLATFORM FROM CURRENT|CODE TABLE|0|0|4|CODE TABLE|0|2 +002041|methodForEstimatingReportsRelatedToSynopticFeatures|table|METHOD FOR ESTIMATING REPORTS RELATED TO SYNOPTIC FEATURES|CODE TABLE|0|0|6|CODE TABLE|0|2 +002042|indicatorForSeaSurfaceCurrentSpeed|table|INDICATOR FOR SEA-SURFACE CURRENT SPEED|CODE TABLE|0|0|2|CODE TABLE|0|1 +002044|indicatorForMethodOfCalculatingSpectralWaveData|table|INDICATOR FOR METHOD OF CALCULATING SPECTRAL WAVE DATA|CODE TABLE|0|0|4|CODE TABLE|0|2 +002045|platformType|table|INDICATOR FOR TYPE OF PLATFORM|CODE TABLE|0|0|4|CODE TABLE|0|2 +002046|waveMeasurementInstrumentation|table|WAVE MEASUREMENT INSTRUMENTATION|CODE TABLE|0|0|4|CODE TABLE|0|2 +002047|deepOceanTsunameterType|table|DEEP-OCEAN TSUNAMETER TYPE|CODE TABLE|0|0|7|CODE TABLE|0|2 +002048|satelliteSensorIndicator|table|SATELLITE SENSOR INDICATOR|CODE TABLE|0|0|4|CODE TABLE|0|2 +002049|geostationarySatelliteDataProcessingTechnique|flag|GEOSTATIONARY SATELLITE DATA-PROCESSING TECHNIQUE USED|FLAG TABLE|0|0|8|FLAG TABLE|0|3 +002050|geostationarySounderSatelliteChannels|flag|GEOSTATIONARY SOUNDER SATELLITE CHANNELS USED|FLAG TABLE|0|0|20|FLAG TABLE|0|7 +002051|indicatorToSpecifyObservingMethodForExtremeTemperatures|table|INDICATOR TO SPECIFY OBSERVING METHOD FOR EXTREME TEMPERATURES|CODE TABLE|0|0|4|CODE TABLE|0|2 +002052|geostationaryImagerSatelliteChannels|flag|GEOSTATIONARY IMAGER SATELLITE CHANNELS USED|FLAG TABLE|0|0|6|FLAG TABLE|0|2 +002053|goesBrightnessTemperatureCharacteristics|table|GOES-I/M BRIGHTNESS TEMPERATURE CHARACTERISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2 +002054|goesSoundingsParameter|table|GOES-I/M SOUNDINGS PARAMETER CHARACTERISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2 +002055|geostationarySoundingsStatisticalParameters|table|GEOSTATIONARY SOUNDINGS STATISTICAL PARAMETERS|CODE TABLE|0|0|4|CODE TABLE|0|2 +002056|geostationarySoundingsAccuracyStatistics|table|GEOSTATIONARY SOUNDINGS ACCURACY STATISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2 +002057|originOfFirstGuessInformationForGoesIOrMSoundings|table|ORIGIN OF FIRST-GUESS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2 +002058|validTimesOfFirstGuessInformationForGoesIOrMSoundings|table|VALID TIMES OF FIRST-GUESS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2 +002059|originOfAnalysisInformationForGoesIOrMSoundings|table|ORIGIN OF ANALYSIS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2 +002060|originOfSurfaceInformationForGoesIOrMSoundings|table|ORIGIN OF SURFACE INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2 +002061|aircraftNavigationalSystem|table|AIRCRAFT NAVIGATIONAL SYSTEM|CODE TABLE|0|0|3|CODE TABLE|0|1 +002062|aircraftDataRelaySystemType|table|TYPE OF AIRCRAFT DATA RELAY SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2 +002063|aircraftRollAngle|double|AIRCRAFT ROLL ANGLE|deg|2|-18000|16|deg|2|5 +002064|aircraftRollAngleQuality|table|AIRCRAFT ROLL ANGLE QUALITY|CODE TABLE|0|0|2|CODE TABLE|0|1 +002065|acarsGroundReceivingStation|string|ACARS GROUND-RECEIVING STATION|CCITT IA5|0|0|40|Character|0|5 +002066|radiosondeGroundReceivingSystem|table|RADIOSONDE GROUND RECEIVING SYSTEM|CODE TABLE|0|0|6|CODE TABLE|0|2 +002067|radiosondeOperatingFrequency|long|RADIOSONDE OPERATING FREQUENCY|Hz|-5|0|15|Hz|-5|5 +002070|originalSpecificationOfLatitudeOrLongitude|table|ORIGINAL SPECIFICATION OF LATITUDE/LONGITUDE|CODE TABLE|0|0|4|CODE TABLE|0|2 +002071|spectrographicWavelength|double|SPECTROGRAPHIC WAVELENGTH|m|13|0|30|m|13|10 +002072|spectrographicWidth|double|SPECTROGRAPHIC WIDTH|m|13|0|30|m|13|10 +002080|balloonManufacturer|table|BALLOON MANUFACTURER|CODE TABLE|0|0|6|CODE TABLE|0|2 +002081|balloonType|table|TYPE OF BALLOON|CODE TABLE|0|0|5|CODE TABLE|0|2 +002082|weightOfBalloon|double|WEIGHT OF BALLOON|kg|3|0|12|kg|3|4 +002083|balloonShelterType|table|TYPE OF BALLOON SHELTER|CODE TABLE|0|0|4|CODE TABLE|0|2 +002084|typeOfGasUsedInBalloon|table|TYPE OF GAS USED IN BALLOON|CODE TABLE|0|0|4|CODE TABLE|0|2 +002085|amountOfGasUsedInBalloon|double|AMOUNT OF GAS USED IN BALLOON|kg|3|0|13|kg|3|4 +002086|balloonFlightTrainLength|double|BALLOON FLIGHT TRAIN LENGTH|m|1|0|10|m|1|4 +002087|parachuteSurfaceArea|double|PARACHUTE SURFACE AREA|m2|4|0|15|m2|4|5 +002088|volumeOfGasUsedInBalloon|double|VOLUME OF GAS USED IN BALLOON|m3|3|0|13|m3|3|4 +002091|entrySensor4Or20Ma|double|ENTRY SENSOR 4/20 MA|A|4|0|10|A|4|3 +002095|pressureSensorType|table|TYPE OF PRESSURE SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2 +002096|temperatureSensorType|table|TYPE OF TEMPERATURE SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2 +002097|humiditySensorType|table|TYPE OF HUMIDITY SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2 +002099|polarization|table|POLARIZATION|CODE TABLE|0|0|3|CODE TABLE|0|1 +002100|radarConstant|double|RADAR CONSTANT|dB|1|0|12|dB|1|4 +002101|antennaType|table|TYPE OF ANTENNA|CODE TABLE|0|0|4|CODE TABLE|0|2 +002102|antennaHeightAboveTowerBase|long|ANTENNA HEIGHT ABOVE TOWER BASE|m|0|0|8|m|0|3 +002103|radome|flag|RADOME|FLAG TABLE|0|0|2|FLAG TABLE|0|1 +002104|antennaPolarization|table|ANTENNA POLARIZATION|CODE TABLE|0|0|4|CODE TABLE|0|2 +002105|maximumAntennaGain|long|MAXIMUM ANTENNA GAIN|dB|0|0|6|dB|0|2 +002106|3DbBeamwidth|double|3-DB BEAMWIDTH|deg|1|0|6|deg|1|2 +002107|sidelobeSuppression|long|SIDELOBE SUPPRESSION|dB|0|0|6|dB|0|2 +002108|crosspolDiscriminationOnAxis|long|CROSSPOL DISCRIMINATION (ON AXIS)|dB|0|0|6|dB|0|2 +002109|antennaSpeedAzimuth|double|ANTENNA SPEED (AZIMUTH)|deg/s|2|0|12|deg/s|2|4 +002110|antennaSpeedElevation|double|ANTENNA SPEED (ELEVATION)|deg/s|2|0|12|deg/s|2|4 +002111|radarIncidenceAngle|double|RADAR INCIDENCE ANGLE|deg|1|0|10|deg|1|4 +002112|radarLookAngle|double|RADAR LOOK ANGLE|deg|1|0|12|deg|1|4 +002113|numberOfAzimuthLooks|long|NUMBER OF AZIMUTH LOOKS|Numeric|0|0|4|Numeric|0|2 +002114|antennaEffectiveSurfaceArea|long|ANTENNA EFFECTIVE SURFACE AREA|m2|0|0|15|m2|0|5 +002115|surfaceObservingEquipmentType|table|TYPE OF SURFACE OBSERVING EQUIPMENT|CODE TABLE|0|0|5|CODE TABLE|0|2 +002116|percentageOf320MhzBandProcessed|long|PERCENTAGE OF 320 MHZ BAND PROCESSED|%|0|0|7|%|0|3 +002117|percentageOf80MhzBandProcessed|long|PERCENTAGE OF 80 MHZ BAND PROCESSED|%|0|0|7|%|0|3 +002118|percentageOf20MhzBandProcessed|long|PERCENTAGE OF 20 MHZ BAND PROCESSED|%|0|0|7|%|0|3 +002119|ra2InstrumentOperations|table|RA-2 INSTRUMENT OPERATIONS|CODE TABLE|0|0|3|CODE TABLE|0|1 +002120|oceanWaveFrequency|double|OCEAN WAVE FREQUENCY|Hz|3|0|10|Hz|3|4 +002121|meanFrequency|long|MEAN FREQUENCY|Hz|-8|0|7|Hz|-8|3 +002122|frequencyAgilityRange|long|FREQUENCY AGILITY RANGE|Hz|-6|-128|8|Hz|-6|3 +002123|peakPower|long|PEAK POWER|W|-4|0|7|W|-4|3 +002124|averagePower|long|AVERAGE POWER|W|-1|0|7|W|-1|3 +002125|pulseRepetitionFrequency|long|PULSE REPETITION FREQUENCY|Hz|-1|0|8|Hz|-1|3 +002126|pulseWidth|double|PULSE WIDTH|s|7|0|6|s|7|2 +002127|receiverIntermediateFrequency|long|RECEIVER INTERMEDIATE FREQUENCY|Hz|-6|0|7|Hz|-6|3 +002128|intermediateFrequencyBandwidth|long|INTERMEDIATE FREQUENCY BANDWIDTH|Hz|-5|0|6|Hz|-5|2 +002129|minimumDetectableSignal|long|MINIMUM DETECTABLE SIGNAL|dB|0|-150|5|dB|0|3 +002130|dynamicRange|long|DYNAMIC RANGE|dB|0|0|7|dB|0|3 +002131|sensitivityTimeControl|flag|SENSITIVITY TIME CONTROL (STC)|FLAG TABLE|0|0|2|FLAG TABLE|0|1 +002132|azimuthPointingAccuracy|double|AZIMUTH POINTING ACCURACY|deg|2|0|6|deg|2|2 +002133|elevationPointingAccuracy|double|ELEVATION POINTING ACCURACY|deg|2|0|6|deg|2|2 +002134|antennaBeamAzimuth|double|ANTENNA BEAM AZIMUTH|deg|2|0|16|deg|2|5 +002135|antennaElevation|double|ANTENNA ELEVATION|deg|2|-9000|15|deg|2|5 +002136|rangeProcessedByRangeAttenuationCorrection|long|RANGE PROCESSED BY RANGE ATTENUATION CORRECTION|m|-3|0|16|m|-3|5 +002137|radarDualPrfRatio|table|RADAR DUAL PRF RATIO|CODE TABLE|0|0|4|CODE TABLE|0|2 +002138|antennaRotationDirection|table|ANTENNA ROTATION DIRECTION|CODE TABLE|0|0|2|CODE TABLE|0|1 +002139|siralInstrumentConfiguration|table|SIRAL INSTRUMENT CONFIGURATION|CODE TABLE|0|0|2|CODE TABLE|0|1 +002140|satelliteRadarBeamAzimuthAngle|long|SATELLITE RADAR BEAM AZIMUTH ANGLE|deg|0|0|9|deg|0|3 +002141|measurementType|string|MEASUREMENT TYPE|CCITT IA5|0|0|24|Character|0|3 +002142|ozoneInstrument|string|OZONE INSTRUMENT SERIAL NUMBER/IDENTIFICATION|CCITT IA5|0|0|32|Character|0|4 +002143|ozoneInstrumentType|table|OZONE INSTRUMENT TYPE|CODE TABLE|0|0|7|CODE TABLE|0|3 +002144|lightSourceTypeForBrewerSpectrophotometer|table|LIGHT SOURCE TYPE FOR BREWER SPECTROPHOTOMETER|CODE TABLE|0|0|4|CODE TABLE|0|2 +002145|wavelengthSettingForDobsonInstruments|table|WAVELENGTH SETTING FOR DOBSON INSTRUMENTS|CODE TABLE|0|0|4|CODE TABLE|0|2 +002146|sourceConditionsForDobsonInstruments|table|SOURCE CONDITIONS FOR DOBSON INSTRUMENTS|CODE TABLE|0|0|4|CODE TABLE|0|2 +002147|methodOfTransmissionToCollectionCentre|table|METHOD OF TRANSMISSION TO COLLECTION CENTRE|CODE TABLE|0|0|6|CODE TABLE|0|2 +002148|dataCollectionLocationSystem|table|DATA COLLECTION AND/OR LOCATION SYSTEM|CODE TABLE|0|0|5|CODE TABLE|0|2 +002149|dataBuoyType|table|TYPE OF DATA BUOY|CODE TABLE|0|0|6|CODE TABLE|0|2 +002150|tovsOrAtovsOrAvhrrInstrumentationChannelNumber|table|TOVS/ATOVS/AVHRR INSTRUMENTATION CHANNEL NUMBER|CODE TABLE|0|0|6|CODE TABLE|0|2 +002151|radiometerIdentifier|table|RADIOMETER IDENTIFIER|CODE TABLE|0|0|11|CODE TABLE|0|4 +002152|satelliteInstrumentUsedInDataProcessing|flag|SATELLITE INSTRUMENT USED IN DATA PROCESSING|FLAG TABLE|0|0|31|FLAG TABLE|0|10 +002153|satelliteChannelCentreFrequency|long|SATELLITE CHANNEL CENTRE FREQUENCY|Hz|-8|0|26|Hz|-8|8 +002154|satelliteChannelBandWidth|long|SATELLITE CHANNEL BAND WIDTH|Hz|-8|0|26|Hz|-8|8 +002155|satelliteChannelWavelength|double|SATELLITE CHANNEL WAVELENGTH|m|9|0|16|m|9|5 +002156|percentageOfValidKuOceanRetrackerMeasurements|long|PERCENTAGE OF VALID KU OCEAN RETRACKER MEASUREMENTS|%|0|0|7|%|0|3 +002157|percentageOfValidSOceanRetrackerMeasurements|long|PERCENTAGE OF VALID S OCEAN RETRACKER MEASUREMENTS|%|0|0|7|%|0|3 +002158|ra2Instrument|flag|RA-2 INSTRUMENT|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +002159|mwrInstrument|flag|MWR INSTRUMENT|FLAG TABLE|0|0|8|FLAG TABLE|0|3 +002160|radarWaveLength|table|WAVELENGTH OF THE RADAR|CODE TABLE|0|0|4|CODE TABLE|0|2 +002161|windProcessingMethod|flag|WIND PROCESSING METHOD|FLAG TABLE|0|0|16|FLAG TABLE|0|6 +002162|extendedHeightAssignmentMethod|table|EXTENDED HEIGHT ASSIGNMENT METHOD|CODE TABLE|0|0|6|CODE TABLE|0|2 +002163|heightAssignmentMethod|table|HEIGHT ASSIGNMENT METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2 +002164|tracerCorrelationMethod|table|TRACER CORRELATION METHOD|CODE TABLE|0|0|3|CODE TABLE|0|1 +002165|radianceTypeFlags|flag|RADIANCE TYPE FLAGS|FLAG TABLE|0|0|15|FLAG TABLE|0|5 +002166|radianceType|table|RADIANCE TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2 +002167|radianceComputationalMethod|table|RADIANCE COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2 +002168|hydrostaticPressureOfLowerEndOfCableThermistorString|long|HYDROSTATIC PRESSURE OF LOWER END OF CABLE (THERMISTOR STRING)|Pa|-3|0|16|kPa|0|5 +002169|anemometerType|table|ANEMOMETER TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2 +002170|aircraftHumiditySensors|table|AIRCRAFT HUMIDITY SENSORS|CODE TABLE|0|0|6|CODE TABLE|0|2 +002171|instrumentSerialNumberForWaterTemperatureProfile|string|INSTRUMENT SERIAL NUMBER FOR WATER TEMPERATURE PROFILE MEASUREMENT|CCITT IA5|0|0|64|Character|0|8 +002172|productTypeForRetrievedAtmosphericGases|table|PRODUCT TYPE FOR RETRIEVED ATMOSPHERIC GASES|CODE TABLE|0|0|8|CODE TABLE|0|3 +002173|squareOfOffNadirAngle|double|SQUARE OF THE OFF-NADIR ANGLE|deg2|4|0|10|deg2|4|4 +002174|meanAcrossTrackPixelNumber|long|MEAN ACROSS TRACK PIXEL NUMBER|Numeric|0|0|9|Numeric|0|3 +002175|methodOfPrecipitationMeasurement|table|METHOD OF PRECIPITATION MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2 +002176|methodOfStateOfGroundMeasurement|table|METHOD OF STATE OF GROUND MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2 +002177|methodOfSnowDepthMeasurement|table|METHOD OF SNOW DEPTH MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2 +002178|methodOfLiquidContentMeasurementOfPrecipitation|table|METHOD OF LIQUID CONTENT MEASUREMENT OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2 +002179|skyConditionAlgorithmType|table|TYPE OF SKY CONDITION ALGORITHM|CODE TABLE|0|0|4|CODE TABLE|0|2 +002180|mainPresentWeatherDetectingSystem|table|MAIN PRESENT WEATHER DETECTING SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2 +002181|supplementaryPresentWeatherSensor|flag|SUPPLEMENTARY PRESENT WEATHER SENSOR|FLAG TABLE|0|0|21|FLAG TABLE|0|7 +002182|visibilityMeasurementSystem|table|VISIBILITY MEASUREMENT SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2 +002183|cloudDetectionSystem|table|CLOUD DETECTION SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2 +002184|lightningDetectionSensorType|table|TYPE OF LIGHTNING DETECTION SENSOR|CODE TABLE|0|0|4|CODE TABLE|0|2 +002185|methodOfEvaporationMeasurement|table|METHOD OF EVAPORATION MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2 +002186|capabilityToDetectPrecipitationPhenomena|flag|CAPABILITY TO DETECT PRECIPITATION PHENOMENA|FLAG TABLE|0|0|30|FLAG TABLE|0|10 +002187|capabilityToDetectOtherWeatherPhenomena|flag|CAPABILITY TO DETECT OTHER WEATHER PHENOMENA|FLAG TABLE|0|0|18|FLAG TABLE|0|6 +002188|capabilityToDetectObscuration|flag|CAPABILITY TO DETECT OBSCURATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7 +002189|capabilityToDiscriminateLightningStrikes|flag|CAPABILITY TO DISCRIMINATE LIGHTNING STRIKES|FLAG TABLE|0|0|12|FLAG TABLE|0|4 +002190|lagrangianDrifterSubmergenceTimeSubmerged|long|LAGRANGIAN DRIFTER SUBMERGENCE (% TIME SUBMERGED)|%|0|0|7|%|0|3 +002191|geopotentialHeightCalculation|table|GEOPOTENTIAL HEIGHT CALCULATION|CODE TABLE|0|0|4|CODE TABLE|0|2 +003001|surfaceStationType|table|SURFACE STATION TYPE|CODE TABLE|0|0|5|CODE TABLE|0|2 +003003|thermometerOrHygrometerHousing|table|THERMOMETER/HYGROMETER HOUSING|CODE TABLE|0|0|4|CODE TABLE|0|2 +003004|typeOfScreenOrShelterOrRadiationShield|table|TYPE OF SCREEN/SHELTER/RADIATION SHIELD|CODE TABLE|0|0|4|CODE TABLE|0|2 +003005|horizontalWidthOfScreenOrShieldX|double|HORIZONTAL WIDTH OF SCREEN OR SHIELD (X)|m|3|0|16|m|3|5 +003006|horizontalDepthOfScreenOrShieldY|double|HORIZONTAL DEPTH OF SCREEN OR SHIELD (Y)|m|3|0|16|m|3|5 +003007|verticalHeightOfScreenOrShieldZ|double|VERTICAL HEIGHT OF SCREEN OR SHIELD (Z)|m|3|0|16|m|3|5 +003008|artificiallyVentilatedScreenOrShield|table|ARTIFICIALLY VENTILATED SCREEN OR SHIELD|CODE TABLE|0|0|3|CODE TABLE|0|1 +003009|amountOfForcedVentilationAtTimeOfReading|double|AMOUNT OF FORCED VENTILATION AT TIME OF READING|m/s|1|0|9|m/s|1|3 +003010|methodOfSeaOrWaterCurrentMeasurement|table|METHOD OF SEA/WATER CURRENT MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2 +003011|methodOfDepthCalculation|table|METHOD OF DEPTH CALCULATION|CODE TABLE|0|0|2|CODE TABLE|0|1 +003012|instrumentTypeOrSensorForDissolvedOxygenMeasurement|table|INSTRUMENT TYPE/SENSOR FOR DISSOLVED OXYGEN MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2 +003016|positionOfRoadSensors|table|POSITION OF ROAD SENSORS|CODE TABLE|0|0|4|CODE TABLE|0|2 +003017|extendedTypeOfStation|flag|EXTENDED TYPE OF STATION|FLAG TABLE|0|0|6|FLAG TABLE|0|2 +003018|typeOfRoad|table|TYPE OF ROAD|CODE TABLE|0|0|5|CODE TABLE|0|2 +003019|typeOfConstruction|table|TYPE OF CONSTRUCTION|CODE TABLE|0|0|4|CODE TABLE|0|2 +003020|materialForThermometerOrHygrometerHousing|table|MATERIAL FOR THERMOMETER/HYGROMETER HOUSING|CODE TABLE|0|0|3|CODE TABLE|0|1 +003021|hygrometerHeating|table|HYGROMETER HEATING|CODE TABLE|0|0|2|CODE TABLE|0|1 +003022|instrumentOwner|table|INSTRUMENT OWNER|CODE TABLE|0|0|3|CODE TABLE|0|1 +003023|configurationOfLouversForThermometerOrHygrometerScreen|table|CONFIGURATION OF LOUVERS FOR THERMOMETER/HYGROMETER SCREEN|CODE TABLE|0|0|3|CODE TABLE|0|1 +003024|psychrometricCoefficient|double|PSYCHROMETRIC COEFFICIENT|K-1|6|0|10|K-1|6|3 +003025|crossTrackEstimationAreaSize|long|CROSS-TRACK ESTIMATION AREA SIZE|m|0|5000|16|m|0|5 +003026|alongTrackEstimationAreaSize|long|ALONG-TRACK ESTIMATION AREA SIZE|m|0|5000|16|m|0|5 +003027|typeOfFlightRig|table|TYPE OF FLIGHT RIG|CODE TABLE|0|0|4|CODE TABLE|0|2 +003028|methodOfSnowWaterEquivalentMeasurement|table|METHOD OF SNOW WATER EQUIVALENT MEASUREMENT|CODE TABLE|0|0|6|CODE TABLE|0|2 +004001|year|long|YEAR|a|0|0|12|a|0|4 +004002|month|long|MONTH|mon|0|0|4|mon|0|2 +004003|day|long|DAY|d|0|0|6|d|0|2 +004004|hour|long|HOUR|h|0|0|5|h|0|2 +004005|minute|long|MINUTE|min|0|0|6|min|0|2 +004006|second|long|SECOND|s|0|0|6|s|0|2 +004007|secondsWithinAMinuteMicrosecond|double|SECONDS WITHIN A MINUTE (MICROSECOND ACCURACY)|s|6|0|26|s|6|8 +004011|timeIncrement|long|TIME INCREMENT|a|0|-1024|11|a|0|4 +004012|timeIncrement|long|TIME INCREMENT|mon|0|-1024|11|mon|0|4 +004013|timeIncrement|long|TIME INCREMENT|d|0|-1024|11|d|0|4 +004014|timeIncrement|long|TIME INCREMENT|h|0|-1024|11|h|0|4 +004015|timeIncrement|long|TIME INCREMENT|min|0|-2048|12|min|0|4 +004016|timeIncrement|long|TIME INCREMENT|s|0|-4096|13|s|0|4 +004017|referenceTimePeriodForAccumulatedOrExtremeData|long|REFERENCE TIME PERIOD FOR ACCUMULATED OR EXTREME DATA|min|0|-1440|12|min|0|4 +004021|timePeriod|long|TIME PERIOD OR DISPLACEMENT|a|0|-1024|11|a|0|4 +004022|timePeriod|long|TIME PERIOD OR DISPLACEMENT|mon|0|-1024|11|mon|0|4 +004023|timePeriod|long|TIME PERIOD OR DISPLACEMENT|d|0|-1024|11|d|0|4 +004024|timePeriod|long|TIME PERIOD OR DISPLACEMENT|h|0|-2048|12|h|0|4 +004025|timePeriod|long|TIME PERIOD OR DISPLACEMENT|min|0|-2048|12|min|0|4 +004026|timePeriod|long|TIME PERIOD OR DISPLACEMENT|s|0|-4096|13|s|0|4 +004031|durationOfTimeRelatingToFollowingValue|long|DURATION OF TIME RELATING TO FOLLOWING VALUE|h|0|0|8|h|0|3 +004032|durationOfTimeRelatingToFollowingValue|long|DURATION OF TIME RELATING TO FOLLOWING VALUE|min|0|0|6|min|0|2 +004041|timeDifferenceUtcLmt|long|TIME DIFFERENCE, UTC - LMT|min|0|-1440|12|min|0|4 +004043|dayOfYear|long|DAY OF THE YEAR|d|0|0|9|d|0|3 +004051|principalTimeOfDailyReadingOfMaximumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MAXIMUM TEMPERATURE|h|0|0|5|h|0|2 +004052|principalTimeOfDailyReadingOfMinimumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MINIMUM TEMPERATURE|h|0|0|5|h|0|2 +004053|numberOfDaysWithPrecipitationEqualToOrMoreThan1Mm|long|NUMBER OF DAYS WITH PRECIPITATION EQUAL TO OR MORE THAN 1 MM|Numeric|0|0|6|Numeric|0|2 +004059|timesOfObservationUsedToComputeReportedMeanValues|flag|TIMES OF OBSERVATION USED TO COMPUTE THE REPORTED MEAN VALUES|FLAG TABLE|0|0|6|FLAG TABLE|0|2 +004065|timeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2 +004066|timeIncrement|long|SHORT TIME INCREMENT|s|0|-128|8|s|0|2 +004073|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2 +004074|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2 +004075|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2 +004080|averagingPeriodForFollowingValue|table|AVERAGING PERIOD FOR FOLLOWING VALUE|CODE TABLE|0|0|4|CODE TABLE|0|2 +004086|timePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5 +005001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7 +005002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4 +005011|latitudeIncrement|double|LATITUDE INCREMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7 +005012|latitudeIncrement|double|LATITUDE INCREMENT (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4 +005015|latitudeDisplacement|double|LATITUDE DISPLACEMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7 +005016|latitudeDisplacement|double|LATITUDE DISPLACEMENT (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4 +005021|bearingOrAzimuth|double|BEARING OR AZIMUTH|deg|2|0|16|deg|2|5 +005022|solarAzimuth|double|SOLAR AZIMUTH|deg|2|0|16|deg|2|5 +005023|sunToSatelliteAzimuthDifference|double|SUN TO SATELLITE AZIMUTH DIFFERENCE|deg|1|-1800|12|deg|1|4 +005030|directionSpectral|long|DIRECTION (SPECTRAL)|deg|0|0|12|deg|0|4 +005031|rowNumber|long|ROW NUMBER|Numeric|0|0|12|Numeric|0|4 +005032|yOffset|double|Y OFFSET|m|2|-1073741824|31|m|2|11 +005033|pixelSizeOnHorizontal1|long|PIXEL SIZE ON HORIZONTAL - 1|m|-1|0|16|m|-1|5 +005034|alongTrackRowNumber|long|ALONG TRACK ROW NUMBER|Numeric|0|0|11|Numeric|0|4 +005035|xDimensionMaximumSize|long|MAXIMUM SIZE OF X-DIMENSION|Numeric|0|0|12|Numeric|0|4 +005036|shipTransectNumberAccordingToSoop|long|SHIP TRANSECT NUMBER ACCORDING TO SOOP|Numeric|0|0|7|Numeric|0|2 +005040|orbitNumber|long|ORBIT NUMBER|Numeric|0|0|24|Numeric|0|8 +005041|scanLineNumber|long|SCAN LINE NUMBER|Numeric|0|0|8|Numeric|0|3 +005042|channelNumber|long|CHANNEL NUMBER|Numeric|0|0|6|Numeric|0|2 +005043|fieldOfViewNumber|long|FIELD OF VIEW NUMBER|Numeric|0|0|8|Numeric|0|3 +005044|satelliteCycleNumber|long|SATELLITE CYCLE NUMBER|Numeric|0|0|11|Numeric|0|4 +005045|fieldOfRegardNumber|long|FIELD OF REGARD NUMBER|Numeric|0|0|8|Numeric|0|3 +005052|channelNumberIncrement|long|CHANNEL NUMBER INCREMENT|Numeric|0|0|5|Numeric|0|2 +005053|fieldOfViewNumberIncrement|long|FIELD OF VIEW NUMBER INCREMENT|Numeric|0|0|5|Numeric|0|2 +005060|yAngularPositionFromCentreOfGravity|double|Y ANGULAR POSITION FROM CENTRE OF GRAVITY|deg|6|-8000000|24|deg|6|8 +005061|zAngularPositionFromCentreOfGravity|double|Z ANGULAR POSITION FROM CENTRE OF GRAVITY|deg|6|-8000000|24|deg|6|8 +005063|spacecraftRoll|double|SPACECRAFT ROLL|deg|2|0|16|deg|2|5 +005064|spacecraftPitch|double|SPACECRAFT PITCH|deg|2|0|16|deg|2|5 +005066|spacecraftYaw|double|SPACECRAFT YAW|deg|2|0|16|deg|2|5 +005067|numberOfScanLines|long|NUMBER OF SCAN LINES|Numeric|0|0|8|Numeric|0|3 +005068|profileNumber|long|PROFILE NUMBER|Numeric|0|0|16|Numeric|0|5 +005069|receiverChannel|table|RECEIVER CHANNEL|CODE TABLE|0|0|2|CODE TABLE|0|1 +005070|observationIdentifier|long|OBSERVATION IDENTIFIER|Numeric|0|0|30|Numeric|0|10 +005071|stripmapIdentifier|long|STRIPMAP IDENTIFIER|Numeric|0|0|16|Numeric|0|5 +005072|numberOfSpectraInRangeDirection|long|NUMBER OF SPECTRA IN RANGE DIRECTION|Numeric|0|0|8|Numeric|0|3 +005073|numberOfSpectraInAzimuthalDirection|long|NUMBER OF SPECTRA IN AZIMUTHAL DIRECTION|Numeric|0|0|8|Numeric|0|3 +005074|indexInRangeDirection|long|INDEX IN RANGE DIRECTION|Numeric|0|0|8|Numeric|0|3 +005075|indexInAzimuthalDirection|long|INDEX IN AZIMUTHAL DIRECTION|Numeric|0|0|8|Numeric|0|3 +006001|longitude|double|LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8 +006002|longitude|double|LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5 +006011|longitudeIncrement|double|LONGITUDE INCREMENT (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8 +006012|longitudeIncrement|double|LONGITUDE INCREMENT (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5 +006015|longitudeDisplacement|double|LONGITUDE DISPLACEMENT (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8 +006016|longitudeDisplacement|double|LONGITUDE DISPLACEMENT (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5 +006021|distance|long|DISTANCE|m|-1|0|13|m|-1|4 +006029|waveNumber|double|WAVE NUMBER|/m|1|0|22|/m|1|7 +006030|waveNumberSpectral|double|WAVE NUMBER (SPECTRAL)|rad/m|5|0|13|rad/m|5|4 +006031|columnNumber|long|COLUMN NUMBER|Numeric|0|0|12|Numeric|0|4 +006032|xOffset|double|X OFFSET|m|2|-1073741824|31|m|2|11 +006033|pixelSizeOnHorizontal2|long|PIXEL SIZE ON HORIZONTAL - 2|m|-1|0|16|m|-1|5 +006034|crossTrackCellNumber|long|CROSS-TRACK CELL NUMBER|Numeric|0|0|7|Numeric|0|3 +006035|yDimensionMaximumSize|long|MAXIMUM SIZE OF Y-DIMENSION|Numeric|0|0|12|Numeric|0|4 +006040|radiusOfConfidence|long|RADIUS OF CONFIDENCE|m|0|0|13|m|0|4 +007001|heightOfStation|long|HEIGHT OF STATION|m|0|-400|15|m|0|5 +007002|height|long|HEIGHT OR ALTITUDE|m|-1|-40|16|m|-1|5 +007003|geopotential|long|GEOPOTENTIAL|m2 s-2|-1|-400|17|m2 s-2|-1|6 +007004|pressure|long|PRESSURE|Pa|-1|0|14|Pa|-1|5 +007005|heightIncrement|long|HEIGHT INCREMENT|m|0|-400|12|m|0|4 +007006|heightAboveStation|long|HEIGHT ABOVE STATION|m|0|0|15|m|0|5 +007007|height|long|HEIGHT|m|0|-1000|17|m|0|6 +007008|geopotential|long|GEOPOTENTIAL|m2 s-2|0|-10000|20|m2 s-2|0|7 +007009|geopotentialHeight|long|GEOPOTENTIAL HEIGHT|gpm|0|-1000|17|gpm|0|5 +007010|flightLevel|long|FLIGHT LEVEL|m|0|-1024|16|ft|-1|5 +007012|gridPointAltitude|double|GRID POINT ALTITUDE|m|2|-50000|20|m|2|7 +007021|elevation|double|ELEVATION|deg|2|-9000|15|deg|2|5 +007022|solarElevation|double|SOLAR ELEVATION|deg|2|-9000|15|deg|2|5 +007024|satelliteZenithAngle|double|SATELLITE ZENITH ANGLE|deg|2|-9000|15|deg|2|5 +007025|solarZenithAngle|double|SOLAR ZENITH ANGLE|deg|2|-9000|15|deg|2|5 +007026|satelliteZenithAngle|double|SATELLITE ZENITH ANGLE|deg|4|-900000|21|deg|4|7 +007030|heightOfStationGroundAboveMeanSeaLevel|double|HEIGHT OF STATION GROUND ABOVE MEAN SEA LEVEL|m|1|-4000|17|m|1|5 +007031|heightOfBarometerAboveMeanSeaLevel|double|HEIGHT OF BAROMETER ABOVE MEAN SEA LEVEL|m|1|-4000|17|m|1|5 +007032|heightOfSensorAboveLocalGroundOrDeckOfMarinePlatform|double|HEIGHT OF SENSOR ABOVE LOCAL GROUND (OR DECK OF MARINE PLATFORM)|m|2|0|16|m|2|5 +007033|heightOfSensorAboveWaterSurface|double|HEIGHT OF SENSOR ABOVE WATER SURFACE|m|1|0|12|m|1|4 +007035|zDimensionMaximumSize|long|MAXIMUM SIZE OF Z-DIMENSION|Numeric|0|0|12|Numeric|0|4 +007036|levelIndexOfZ|long|LEVEL INDEX OF Z|Numeric|0|0|12|Numeric|0|4 +007040|impactParameter|double|IMPACT PARAMETER|m|1|62000000|22|m|1|8 +007061|depthBelowLandSurface|double|DEPTH BELOW LAND SURFACE|m|2|0|14|m|2|5 +007062|depthBelowWaterSurface|double|DEPTH BELOW SEA/WATER SURFACE|m|1|0|17|m|1|6 +007063|depthBelowWaterSurface|double|DEPTH BELOW SEA/WATER SURFACE (CM)|m|2|0|20|m|2|7 +007064|representativeHeightOfSensorAboveStation|long|REPRESENTATIVE HEIGHT OF SENSOR ABOVE STATION|m|0|0|4|m|0|2 +007065|waterPressure|long|WATER PRESSURE|Pa|-3|0|17|Pa|-3|6 +007070|drogueDepth|long|DROGUE DEPTH|m|0|0|10|m|0|4 +007071|height|double|HEIGHT (HIGH RESOLUTION)|m|3|-10000000|26|m|3|8 +008001|verticalSoundingSignificance|flag|VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|7|FLAG TABLE|0|3 +008002|verticalSignificanceSurfaceObservations|table|VERTICAL SIGNIFICANCE (SURFACE OBSERVATIONS)|CODE TABLE|0|0|6|CODE TABLE|0|2 +008003|verticalSignificanceSatelliteObservations|table|VERTICAL SIGNIFICANCE (SATELLITE OBSERVATIONS)|CODE TABLE|0|0|6|CODE TABLE|0|2 +008004|phaseOfAircraftFlight|table|PHASE OF AIRCRAFT FLIGHT|CODE TABLE|0|0|3|CODE TABLE|0|1 +008005|meteorologicalAttributeSignificance|table|METEOROLOGICAL ATTRIBUTE SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2 +008006|ozoneVerticalSoundingSignificance|flag|OZONE VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +008007|dimensionalSignificance|table|DIMENSIONAL SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2 +008008|radiationVerticalSoundingSignificance|flag|RADIATION VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +008009|detailedPhaseOfFlight|table|DETAILED PHASE OF FLIGHT|CODE TABLE|0|0|4|CODE TABLE|0|2 +008010|surfaceQualifierForTemperatureData|table|SURFACE QUALIFIER (TEMPERATURE DATA)|CODE TABLE|0|0|5|CODE TABLE|0|2 +008011|meteorologicalFeature|table|METEOROLOGICAL FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2 +008012|landOrSeaQualifier|table|LAND/SEA QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1 +008013|dayOrNightQualifier|table|DAY/NIGHT QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1 +008014|qualifierForRunwayVisualRange|table|QUALIFIER FOR RUNWAY VISUAL RANGE|CODE TABLE|0|0|4|CODE TABLE|0|2 +008015|significantQualifierForSensor|table|SIGNIFICANT QUALIFIER FOR SENSOR|CODE TABLE|0|0|3|CODE TABLE|0|1 +008016|changeQualifierOfATrendTypeForecastOrAnAerodromeForecast|table|CHANGE QUALIFIER OF A TREND-TYPE FORECAST OR AN AERODROME FORECAST|CODE TABLE|0|0|3|CODE TABLE|0|1 +008017|qualifierOfTimeWhenForecastChangeExpected|table|QUALIFIER OF THE TIME WHEN THE FORECAST CHANGE IS EXPECTED|CODE TABLE|0|0|2|CODE TABLE|0|1 +008018|seawindsLandOrIceSurfaceType|flag|SEAWINDS LAND/ICE SURFACE TYPE|FLAG TABLE|0|0|17|FLAG TABLE|0|6 +008019|qualifierForFollowingCentreIdentifier|table|QUALIFIER FOR FOLLOWING CENTRE IDENTIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2 +008020|totalNumberOfMissingEntitiesWithRespectToAccumulationOrAverage|long|TOTAL NUMBER OF MISSING ENTITIES (WITH RESPECT TO ACCUMULATION OR AVERAGE)|Numeric|0|0|16|Numeric|0|5 +008021|timeSignificance|table|TIME SIGNIFICANCE|CODE TABLE|0|0|5|CODE TABLE|0|2 +008022|totalNumberWithRespectToAccumulationOrAverage|long|TOTAL NUMBER (WITH RESPECT TO ACCUMULATION OR AVERAGE)|Numeric|0|0|16|Numeric|0|5 +008023|firstOrderStatistics|table|FIRST-ORDER STATISTICS|CODE TABLE|0|0|6|CODE TABLE|0|2 +008024|differenceStatistics|table|DIFFERENCE STATISTICS|CODE TABLE|0|0|6|CODE TABLE|0|2 +008025|timeDifferenceQualifier|table|TIME DIFFERENCE QUALIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2 +008026|matrixSignificance|table|MATRIX SIGNIFICANCE|CODE TABLE|0|0|6|CODE TABLE|0|2 +008029|surfaceType|table|SURFACE TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3 +008030|manualOnCodesVolumeI1SectionCCodeTableFromWhichDataAreDerived|long|MANUAL ON CODES (VOLUME I.1, SECTION C) CODE TABLE FROM WHICH DATA ARE DERIVED|Numeric|0|0|13|Numeric|0|4 +008031|dataCategoryCrexTableA|long|DATA CATEGORY - CREX TABLE A|Numeric|0|0|8|Numeric|0|3 +008032|statusOfOperation|table|STATUS OF OPERATION|CODE TABLE|0|0|4|CODE TABLE|0|2 +008033|methodOfDerivationOfPercentageConfidence|table|METHOD OF DERIVATION OF PERCENTAGE CONFIDENCE|CODE TABLE|0|0|7|CODE TABLE|0|3 +008034|temperatureOrSalinityMeasurementQualifier|table|TEMPERATURE/SALINITY MEASUREMENT QUALIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2 +008035|monitoringExerciseType|table|TYPE OF MONITORING EXERCISE|CODE TABLE|0|0|3|CODE TABLE|0|1 +008036|typeOfCentreOrStationPerformingMonitoring|table|TYPE OF CENTRE OR STATION PERFORMING MONITORING|CODE TABLE|0|0|3|CODE TABLE|0|1 +008037|baselineCheckSignificance|table|BASELINE CHECK SIGNIFICANCE|CODE TABLE|0|0|5|CODE TABLE|0|2 +008038|instrumentDataSignificance|table|INSTRUMENT DATA SIGNIFICANCE|CODE TABLE|0|0|8|CODE TABLE|0|3 +008039|timeSignificanceAviationForecast|table|TIME SIGNIFICANCE (AVIATION FORECAST)|CODE TABLE|0|0|6|CODE TABLE|0|2 +008040|flightLevelSignificance|table|FLIGHT LEVEL SIGNIFICANCE|CODE TABLE|0|0|6|CODE TABLE|0|2 +008041|dataSignificance|table|DATA SIGNIFICANCE|CODE TABLE|0|0|5|CODE TABLE|0|2 +008042|extendedVerticalSoundingSignificance|flag|EXTENDED VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|18|FLAG TABLE|0|6 +008043|atmosphericChemical|table|ATMOSPHERIC CHEMICAL OR PHYSICAL CONSTITUENT TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3 +008044|casRegistryNumber|string|CAS REGISTRY NUMBER|CCITT IA5|0|0|88|Character|0|11 +008046|atmosphericChemical|table|ATMOSPHERIC CHEMICAL OR PHYSICAL CONSTITUENT TYPE|Common CODE TABLE C-14|0|0|16|Common CODE TABLE C-14|0|5 +008049|numberOfObservations|long|NUMBER OF OBSERVATIONS|Numeric|0|0|8|Numeric|0|3 +008050|qualifierForNumberOfMissingValuesInCalculationOfStatistic|table|QUALIFIER FOR NUMBER OF MISSING VALUES IN CALCULATION OF STATISTIC|CODE TABLE|0|0|4|CODE TABLE|0|2 +008051|qualifierForNumberOfMissingValuesInCalculationOfStatistic|table|QUALIFIER FOR NUMBER OF MISSING VALUES IN CALCULATION OF STATISTIC|CODE TABLE|0|0|3|CODE TABLE|0|1 +008052|conditionForWhichNumberOfDaysOfOccurrenceFollows|table|CONDITION FOR WHICH NUMBER OF DAYS OF OCCURRENCE FOLLOWS|CODE TABLE|0|0|5|CODE TABLE|0|2 +008053|dayOfOccurrenceQualifier|table|DAY OF OCCURRENCE QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1 +008054|qualifierForWindSpeedOrWindGusts|table|QUALIFIER FOR WIND SPEED OR WIND GUSTS|CODE TABLE|0|0|3|CODE TABLE|0|1 +008060|sampleScanningModeSignificance|table|SAMPLE SCANNING MODE SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2 +008065|sunGlintIndicator|table|SUN-GLINT INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1 +008066|semiTransparencyIndicator|table|SEMI-TRANSPARENCY INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1 +008070|verticalSoundingProductQualifier|table|VERTICAL SOUNDING PRODUCT QUALIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2 +008072|pixelType|table|PIXEL(S) TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1 +008074|altimeterEchoType|table|ALTIMETER ECHO TYPE|CODE TABLE|0|0|2|CODE TABLE|0|1 +008075|orbitQualifier|table|ASCENDING/DESCENDING ORBIT QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1 +008076|band|table|TYPE OF BAND|CODE TABLE|0|0|6|CODE TABLE|0|2 +008077|radiometerSensedSurfaceType|table|RADIOMETER SENSED SURFACE TYPE|CODE TABLE|0|0|7|CODE TABLE|0|3 +008079|productStatus|table|PRODUCT STATUS|CODE TABLE|0|0|4|CODE TABLE|0|2 +008080|qualifierForGtsppQualityFlag|table|QUALIFIER FOR GTSPP QUALITY FLAG|CODE TABLE|0|0|6|CODE TABLE|0|2 +008081|equipmentType|table|TYPE OF EQUIPMENT|CODE TABLE|0|0|6|CODE TABLE|0|2 +008082|modificationOfSensorHeightToAnotherValue|table|MODIFICATION OF SENSOR HEIGHT TO ANOTHER VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1 +008083|nominalValueIndicator|flag|NOMINAL VALUE INDICATOR|FLAG TABLE|0|0|15|FLAG TABLE|0|5 +008085|beamIdentifier|table|BEAM IDENTIFIER|CODE TABLE|0|0|3|CODE TABLE|0|1 +008086|verticalSignificanceForNwp|flag|VERTICAL SIGNIFICANCE FOR NWP|FLAG TABLE|0|0|12|FLAG TABLE|0|4 +008087|cornerPositionOfObservation|table|CORNER POSITION OF OBSERVATION|CODE TABLE|0|0|3|CODE TABLE|0|1 +008088|mapSignificance|table|MAP SIGNIFICANCE|CODE TABLE|0|0|6|CODE TABLE|0|2 +008090|decimalScaleOfFollowingSignificands|long|DECIMAL SCALE OF FOLLOWING SIGNIFICANDS|Numeric|0|-127|8|Numeric|0|3 +008091|coordinatesSignificance|table|COORDINATES SIGNIFICANCE|CODE TABLE|0|0|8|CODE TABLE|0|3 +008092|measurementUncertaintyExpression|table|MEASUREMENT UNCERTAINTY EXPRESSION|CODE TABLE|0|0|5|CODE TABLE|0|2 +008093|measurementUncertaintySignificance|table|MEASUREMENT UNCERTAINTY SIGNIFICANCE|CODE TABLE|0|0|5|CODE TABLE|0|2 +010001|heightOfLandSurface|long|HEIGHT OF LAND SURFACE|m|0|-400|15|m|0|5 +010002|nonCoordinateHeight|long|HEIGHT|m|-1|-40|16|m|-1|5 +010003|nonCoordinateGeopotential|long|GEOPOTENTIAL|m2 s-2|-1|-400|17|m2 s-2|-1|6 +010004|nonCoordinatePressure|long|PRESSURE|Pa|-1|0|14|Pa|-1|5 +010007|nonCoordinateHeight|long|HEIGHT|m|0|-1000|17|m|0|6 +010008|nonCoordinateGeopotential|long|GEOPOTENTIAL|m2 s-2|0|-10000|20|m2 s-2|0|7 +010009|nonCoordinateGeopotentialHeight|long|GEOPOTENTIAL HEIGHT|gpm|0|-1000|17|gpm|0|5 +010010|minimumPressureReducedToMeanSeaLevel|long|MINIMUM PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5 +010011|maximumPressureReducedToMeanSeaLevel|long|MAXIMUM PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5 +010031|DistanceFromEarthCentreInDirectionOfNorthPole|double|IN DIRECTION OF THE NORTH POLE, DISTANCE FROM THE EARTH'S CENTRE|m|2|-1073741824|31|m|2|10 +010032|satelliteDistanceToEarthCentre|double|SATELLITE DISTANCE TO EARTH'S CENTRE|m|1|0|27|m|2|9 +010033|altitudePlatformToEllipsoid|double|ALTITUDE (PLATFORM TO ELLIPSOID)|m|1|0|27|m|2|9 +010034|earthRadius|double|EARTH'S RADIUS|m|1|0|27|m|2|9 +010035|earthLocalRadiusOfCurvature|double|EARTH'S LOCAL RADIUS OF CURVATURE|m|1|62000000|22|m|1|8 +010036|geoidUndulation|double|GEOID UNDULATION|m|2|-15000|15|m|2|6 +010038|maximumHeightOfDeckCargoAboveSummerLoadLine|long|MAXIMUM HEIGHT OF DECK CARGO ABOVE SUMMER LOAD LINE|m|0|0|6|m|0|2 +010039|departureOfReferenceLevelSummerMaximumLoadLineFromActualSeaLevel|long|DEPARTURE OF REFERENCE LEVEL (SUMMER MAXIMUM LOAD LINE) FROM ACTUAL SEA LEVEL|m|0|-32|6|m|0|3 +010040|numberOfRetrievedLayers|long|NUMBER OF RETRIEVED LAYERS|Numeric|0|0|10|Numeric|0|4 +010050|standardDeviationAltitude|double|STANDARD DEVIATION ALTITUDE|m|2|0|16|m|2|5 +010051|pressureReducedToMeanSeaLevel|long|PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5 +010052|altimeterSettingQnh|long|ALTIMETER SETTING (QNH)|Pa|-1|0|14|Pa|-1|5 +010053|globalNavigationSatelliteSystemAltitude|long|GLOBAL NAVIGATION SATELLITE SYSTEM ALTITUDE|m|0|-1000|17|m|0|5 +010060|pressureChange|long|PRESSURE CHANGE|Pa|-1|-1024|11|Pa|-1|4 +010061|3HourPressureChange|long|3-HOUR PRESSURE CHANGE|Pa|-1|-500|10|Pa|-1|4 +010062|24HourPressureChange|long|24-HOUR PRESSURE CHANGE|Pa|-1|-1000|11|Pa|-1|4 +010063|characteristicOfPressureTendency|table|CHARACTERISTIC OF PRESSURE TENDENCY|CODE TABLE|0|0|4|CODE TABLE|0|2 +010064|sigmetCruisingLevel|table|SIGMET CRUISING LEVEL|CODE TABLE|0|0|3|CODE TABLE|0|1 +010070|indicatedAircraftAltitude|long|INDICATED AIRCRAFT ALTITUDE|m|0|-400|16|m|0|5 +010071|verticalResolution|long|VERTICAL RESOLUTION|m|0|0|14|m|0|5 +010079|offNadirAngleOfTheSatelliteFromPlatformData|double|OFF-NADIR ANGLE OF THE SATELLITE FROM PLATFORM DATA|deg|4|0|16|deg|4|5 +010080|viewingZenithAngle|double|VIEWING ZENITH ANGLE|deg|2|-9000|15|deg|2|5 +010081|cogAltitudeAboveReferenceEllipsoid|double|ALTITUDE OF COG ABOVE REFERENCE ELLIPSOID|m|3|0|31|m|3|10 +010082|instantaneousAltitudeRate|double|INSTANTANEOUS ALTITUDE RATE|m/s|3|-65536|17|m/s|3|6 +010083|squaredOffNadirAngleOfSatelliteFromPlatformData|double|SQUARED OFF-NADIR ANGLE OF THE SATELLITE FROM PLATFORM DATA|deg2|2|0|16|deg2|2|5 +010084|squaredOffNadirAngleOfSatelliteFromWaveformData|double|SQUARED OFF-NADIR ANGLE OF THE SATELLITE FROM WAVEFORM DATA|deg2|2|0|16|deg2|2|5 +010085|meanSeaSurfaceHeight|double|MEAN SEA-SURFACE HEIGHT|m|3|-131072|18|m|3|6 +010086|geoidHeight|double|GEOID'S HEIGHT|m|3|-131072|18|m|3|6 +010087|oceanDepthOrLandElevation|double|OCEAN DEPTH/LAND ELEVATION|m|1|-131072|18|m|1|6 +010088|totalGeocentricOceanTideHeightSolution1|double|TOTAL GEOCENTRIC OCEAN TIDE HEIGHT (SOLUTION 1)|m|3|-32768|16|m|3|5 +010089|totalGeocentricOceanTideHeightSolution2|double|TOTAL GEOCENTRIC OCEAN TIDE HEIGHT (SOLUTION 2)|m|3|-32768|16|m|3|5 +010090|longPeriodTideHeight|double|LONG PERIOD TIDE HEIGHT|m|3|-32768|16|m|3|5 +010091|tidalLoadingHeight|double|TIDAL LOADING HEIGHT|m|3|-32768|16|m|3|5 +010092|solidEarthTideHeight|double|SOLID EARTH TIDE HEIGHT|m|3|-32768|16|m|3|5 +010093|geocentricPoleTideHeight|double|GEOCENTRIC POLE TIDE HEIGHT|m|3|-32768|16|m|3|5 +010095|heightOfAtmosphere|long|HEIGHT OF ATMOSPHERE USED|m|0|0|16|m|0|5 +010096|meanDynamicTopography|double|MEAN DYNAMIC TOPOGRAPHY|m|3|-131072|18|m|3|6 +010097|meanSeaSurfaceHeightFromAltimeterOnly|double|MEAN SEA-SURFACE HEIGHT FROM ALTIMETER ONLY|m|3|-131072|18|m|3|6 +010098|loadingTideHeightGeocentricOceanTideSolution1|double|LOADING TIDE HEIGHT GEOCENTRIC OCEAN TIDE SOLUTION 1|m|4|-2000|12|m|4|4 +010099|loadingTideHeightGeocentricOceanTideSolution2|double|LOADING TIDE HEIGHT GEOCENTRIC OCEAN TIDE SOLUTION 2|m|4|-2000|12|m|4|4 +010100|nonEquilibriumLongPeriodTideHeight|double|NON-EQUILIBRIUM LONG PERIOD TIDE HEIGHT|m|4|-2000|12|m|4|4 +010101|squaredOffNadirAngleOfSatelliteFromWaveformData|double|SQUARED OFF-NADIR ANGLE OF THE SATELLITE FROM WAVEFORM DATA|deg2|2|-32768|16|deg2|2|5 +010102|seaSurfaceHeightAnomaly|double|SEA-SURFACE HEIGHT ANOMALY|m|3|-32768|16|m|3|5 +010103|meanDynamicTopographyAccuracy|double|MEAN DYNAMIC TOPOGRAPHY ACCURACY|m|3|-131072|18|m|3|6 +011001|windDirection|long|WIND DIRECTION|deg|0|0|9|deg|0|3 +011002|windSpeed|double|WIND SPEED|m/s|1|0|12|m/s|1|4 +011003|u|double|U-COMPONENT|m/s|1|-4096|13|m/s|1|4 +011004|v|double|V-COMPONENT|m/s|1|-4096|13|m/s|1|4 +011005|w|double|W-COMPONENT|Pa/s|1|-512|10|Pa/s|1|4 +011006|w|double|W-COMPONENT|m/s|2|-4096|13|m/s|2|4 +011007|relativeWindDirectionInDegreesOffBow|long|RELATIVE WIND DIRECTION (IN DEGREES OFF BOW)|deg|0|0|9|deg|0|3 +011008|relativeWindSpeed|double|RELATIVE WIND SPEED|m/s|1|0|12|m/s|1|4 +011010|windDirectionAssociatedWithWindSpeedWhichFollows|long|WIND DIRECTION ASSOCIATED WITH WIND SPEED WHICH FOLLOWS|deg|0|0|9|deg|0|3 +011011|windDirectionAt10M|long|WIND DIRECTION AT 10 M|deg|0|0|9|deg|0|3 +011012|windSpeedAt10M|double|WIND SPEED AT 10 M|m/s|1|0|12|m/s|1|4 +011013|windDirectionAt5M|long|WIND DIRECTION AT 5 M|deg|0|0|9|deg|0|3 +011014|windSpeedAt5M|double|WIND SPEED AT 5 M|m/s|1|0|12|m/s|1|4 +011016|extremeCounterclockwiseWindDirectionOfAVariableWind|long|EXTREME COUNTERCLOCKWISE WIND DIRECTION OF A VARIABLE WIND|deg|0|0|9|deg|0|3 +011017|extremeClockwiseWindDirectionOfAVariableWind|long|EXTREME CLOCKWISE WIND DIRECTION OF A VARIABLE WIND|deg|0|0|9|deg|0|3 +011019|steadinessOfWind|long|STEADINESS OF WIND|%|0|0|7|%|0|3 +011021|relativeVorticity|double|RELATIVE VORTICITY|/s|9|-65536|17|/s|9|6 +011022|divergence|double|DIVERGENCE|/s|9|-65536|17|/s|9|6 +011023|velocityPotential|long|VELOCITY POTENTIAL|m2/s|-2|-65536|17|m2/s|-2|6 +011030|extendedDegreeOfTurbulence|table|EXTENDED DEGREE OF TURBULENCE|CODE TABLE|0|0|6|CODE TABLE|0|2 +011031|degreeOfTurbulence|table|DEGREE OF TURBULENCE|CODE TABLE|0|0|4|CODE TABLE|0|2 +011032|heightOfBaseOfTurbulence|long|HEIGHT OF BASE OF TURBULENCE|m|-1|-40|16|m|-1|5 +011033|heightOfTopOfTurbulence|long|HEIGHT OF TOP OF TURBULENCE|m|-1|-40|16|m|-1|5 +011034|verticalGustVelocity|double|VERTICAL GUST VELOCITY|m/s|1|-1024|11|m/s|1|4 +011035|verticalGustAcceleration|double|VERTICAL GUST ACCELERATION|m s-2|2|-8192|14|m s-2|2|5 +011036|maximumDerivedEquivalentVerticalGustSpeed|double|MAXIMUM DERIVED EQUIVALENT VERTICAL GUST SPEED|m/s|1|0|10|m/s|1|4 +011037|turbulenceIndex|table|TURBULENCE INDEX|CODE TABLE|0|0|6|CODE TABLE|0|2 +011038|timeOfOccurrenceOfPeakEddyDissipationRate|table|TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE|CODE TABLE|0|0|5|CODE TABLE|0|2 +011039|extendedTimeOfOccurrenceOfPeakEddyDissipationRate|table|EXTENDED TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE|CODE TABLE|0|0|6|CODE TABLE|0|2 +011040|maximumWindSpeedMeanWind|double|MAXIMUM WIND SPEED (MEAN WIND)|m/s|1|0|12|m/s|1|4 +011041|maximumWindGustSpeed|double|MAXIMUM WIND GUST SPEED|m/s|1|0|12|m/s|1|4 +011042|maximumWindSpeed10MinuteMeanWind|double|MAXIMUM WIND SPEED (10-MINUTE MEAN WIND)|m/s|1|0|12|m/s|1|4 +011043|maximumWindGustDirection|long|MAXIMUM WIND GUST DIRECTION|deg|0|0|9|deg|0|3 +011044|meanWindDirectionForSurfaceTo1500M|long|MEAN WIND DIRECTION FOR SURFACE - 1 500 M (5 000 FEET)|deg|0|0|9|deg|0|3 +011045|meanWindSpeedForSurfaceTo1500M|double|MEAN WIND SPEED FOR SURFACE - 1 500 M (5 000 FEET)|m/s|1|0|12|m/s|1|4 +011046|maximumInstantaneousWindSpeed|double|MAXIMUM INSTANTANEOUS WIND SPEED|m/s|1|0|12|m/s|1|4 +011047|maximumInstantaneousWindSpeedOver10Minutes|double|MAXIMUM INSTANTANEOUS WIND SPEED OVER 10 MINUTES|m/s|1|0|12|m/s|1|4 +011049|windDirectionStandardDeviation|long|STANDARD DEVIATION OF WIND DIRECTION|deg|0|0|9|deg|0|3 +011050|standardDeviationOfHorizontalWindSpeed|double|STANDARD DEVIATION OF HORIZONTAL WIND SPEED|m/s|1|0|12|m/s|1|4 +011051|standardDeviationOfVerticalWindSpeed|double|STANDARD DEVIATION OF VERTICAL WIND SPEED|m/s|1|0|8|m/s|1|3 +011052|formalUncertaintyInWindSpeed|double|FORMAL UNCERTAINTY IN WIND SPEED|m/s|2|0|13|m/s|2|5 +011053|formalUncertaintyInWindDirection|double|FORMAL UNCERTAINTY IN WIND DIRECTION|deg|2|0|15|deg|2|5 +011054|meanWindDirectionFor1500To3000M|long|MEAN WIND DIRECTION FOR 1 500 - 3 000 M|deg|0|0|9|deg|0|3 +011055|meanWindSpeedFor1500To3000M|double|MEAN WIND SPEED FOR 1 500 - 3 000 M|m/s|1|0|12|m/s|1|4 +011061|absoluteWindShearIn1KmLayerBelow|double|ABSOLUTE WIND SHEAR IN 1 KM LAYER BELOW|m/s|1|0|12|m/s|1|4 +011062|absoluteWindShearIn1KmLayerAbove|double|ABSOLUTE WIND SHEAR IN 1 KM LAYER ABOVE|m/s|1|0|12|m/s|1|4 +011070|designatorOfRunwayAffectedByWindShearIncludingAll|string|DESIGNATOR OF THE RUNWAY AFFECTED BY WIND SHEAR (INCLUDING ALL)|CCITT IA5|0|0|32|Character|0|4 +011071|turbulentVerticalMomentumFlux|double|TURBULENT VERTICAL MOMENTUM FLUX|m2 s-2|3|-128|14|m2 s-2|3|5 +011072|turbulentVerticalBuoyancyFlux|double|TURBULENT VERTICAL BUOYANCY FLUX|K m s-1|3|-128|11|K m s-1|3|4 +011073|turbulentKineticEnergy|double|TURBULENT KINETIC ENERGY|m2 s-2|2|-1024|13|m2 s-2|2|4 +011074|dissipationEnergy|double|DISSIPATION ENERGY|m2 s-2|2|-1024|10|m2 s-2|2|4 +011075|meanTurbulenceIntensityEddyDissipationRate|double|MEAN TURBULENCE INTENSITY (EDDY DISSIPATION RATE)|m2/3 s-1|2|0|8|m2/3 s-1|2|3 +011076|peakTurbulenceIntensityEddyDissipationRate|double|PEAK TURBULENCE INTENSITY (EDDY DISSIPATION RATE)|m2/3 s-1|2|0|8|m2/3 s-1|2|3 +011077|reportingIntervalOrAveragingTimeForEddyDissipationRate|long|REPORTING INTERVAL OR AVERAGING TIME FOR EDDY DISSIPATION RATE|s|0|0|12|s|0|4 +011081|modelWindDirectionAt10M|double|MODEL WIND DIRECTION AT 10 M|deg|2|0|16|deg|2|5 +011082|modelWindSpeedAt10M|double|MODEL WIND SPEED AT 10 M|m/s|2|0|14|m/s|2|4 +011083|windSpeed|long|WIND SPEED|km/h|0|0|9|km/h|0|3 +011084|windSpeed|long|WIND SPEED|kt|0|0|8|kt|0|3 +011085|maximumWindGustSpeed|long|MAXIMUM WIND GUST SPEED|km/h|0|0|9|km/h|0|3 +011086|maximumWindGustSpeed|long|MAXIMUM WIND GUST SPEED|kt|0|0|8|kt|0|3 +011095|u|double|U-COMPONENT OF THE MODEL WIND VECTOR|m/s|1|-4096|13|m/s|1|4 +011096|v|double|V-COMPONENT OF THE MODEL WIND VECTOR|m/s|1|-4096|13|m/s|1|4 +011097|windSpeedFromAltimeter|double|WIND SPEED FROM ALTIMETER|m/s|2|0|12|m/s|2|4 +011098|windSpeedFromRadiometer|double|WIND SPEED FROM RADIOMETER|m/s|2|0|12|m/s|2|4 +011100|aircraftTrueAirspeed|double|AIRCRAFT TRUE AIRSPEED|m/s|1|0|12|m/s|1|4 +011101|aircraftGroundSpeedUComponent|double|AIRCRAFT GROUND SPEED U-COMPONENT|m/s|1|-4096|13|m/s|1|4 +011102|aircraftGroundSpeedVComponent|double|AIRCRAFT GROUND SPEED V-COMPONENT|m/s|1|-4096|13|m/s|1|4 +011103|aircraftGroundSpeedWComponent|double|AIRCRAFT GROUND SPEED W-COMPONENT|m/s|1|-512|10|m/s|1|3 +011104|aircraftTrueHeading|long|TRUE HEADING OF AIRCRAFT, SHIP OR OTHER MOBILE PLATFORM|deg|0|0|9|deg|0|3 +011105|edrAlgorithmVersion|long|EDR ALGORITHM VERSION|Numeric|0|0|6|Numeric|0|2 +011106|runningMinimumConfidence|long|RUNNING MINIMUM CONFIDENCE|Numeric|1|0|4|Numeric|1|2 +011107|maximumNumberBadInputs|long|MAXIMUM NUMBER BAD INPUTS|Numeric|0|0|5|Numeric|0|2 +011108|peakLocation|long|PEAK LOCATION|Numeric|1|0|4|Numeric|1|2 +011109|numberOfGoodEdr|long|NUMBER OF GOOD EDR|Numeric|0|0|4|Numeric|0|2 +011110|uncertaintyInUComponent|double|UNCERTAINTY IN U-COMPONENT|m/s|1|-4096|13|m/s|1|4 +011111|uncertaintyInVComponent|double|UNCERTAINTY IN V-COMPONENT|m/s|1|-4096|13|m/s|1|4 +011112|uncertaintyInWComponent|double|UNCERTAINTY IN W-COMPONENT|m/s|2|-4096|13|m/s|2|4 +011113|trackingCorrelationOfVector|long|TRACKING CORRELATION OF VECTOR|Numeric|3|-1000|12|Numeric|3|4 +012001|airTemperature|double|TEMPERATURE/AIR TEMPERATURE|K|1|0|12|C|1|3 +012002|wetBulbTemperature|double|WET-BULB TEMPERATURE|K|1|0|12|C|1|3 +012003|dewpointTemperature|double|DEWPOINT TEMPERATURE|K|1|0|12|C|1|3 +012004|airTemperatureAt2M|double|AIR TEMPERATURE AT 2 M|K|1|0|12|C|1|3 +012005|wetBulbTemperatureAt2M|double|WET-BULB TEMPERATURE AT 2 M|K|1|0|12|C|1|3 +012006|dewpointTemperatureAt2M|double|DEWPOINT TEMPERATURE AT 2 M|K|1|0|12|C|1|3 +012007|virtualTemperature|double|VIRTUAL TEMPERATURE|K|1|0|12|C|1|3 +012008|uncertaintyInVirtualTemperature|double|UNCERTAINTY IN VIRTUAL TEMPERATURE|K|1|0|12|C|1|4 +012011|maximumTemperatureAtHeightAndOverPeriodSpecified|double|MAXIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|1|0|12|C|1|3 +012012|minimumTemperatureAtHeightAndOverPeriodSpecified|double|MINIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|1|0|12|C|1|3 +012013|groundMinimumTemperaturePast12Hours|double|GROUND MINIMUM TEMPERATURE, PAST 12 HOURS|K|1|0|12|C|1|3 +012014|maximumTemperatureAt2MPast12Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|1|0|12|C|1|3 +012015|minimumTemperatureAt2MPast12Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|1|0|12|C|1|3 +012016|maximumTemperatureAt2MPast24Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|1|0|12|C|1|3 +012017|minimumTemperatureAt2MPast24Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|1|0|12|C|1|3 +012021|maximumTemperatureAt2M|double|MAXIMUM TEMPERATURE AT 2 M|K|2|0|16|C|2|4 +012022|minimumTemperatureAt2M|double|MINIMUM TEMPERATURE AT 2 M|K|2|0|16|C|2|4 +012023|temperature|long|TEMPERATURE|C|0|-99|8|C|0|2 +012024|dewpointTemperature|long|DEWPOINT TEMPERATURE|C|0|-99|8|C|0|2 +012030|soilTemperature|double|SOIL TEMPERATURE|K|1|0|12|C|1|3 +012049|temperatureChangeOverSpecifiedPeriod|long|TEMPERATURE CHANGE OVER SPECIFIED PERIOD|K|0|-30|6|C|0|2 +012051|standardDeviationTemperature|double|STANDARD DEVIATION TEMPERATURE|K|1|0|10|C|1|3 +012052|highestDailyMeanTemperature|double|HIGHEST DAILY MEAN TEMPERATURE|K|1|0|12|C|1|3 +012053|lowestDailyMeanTemperature|double|LOWEST DAILY MEAN TEMPERATURE|K|1|0|12|C|1|3 +012060|awsEnclosureInternalTemperature|double|AWS ENCLOSURE INTERNAL TEMPERATURE|K|1|0|12|C|1|3 +012061|skinTemperature|double|SKIN TEMPERATURE|K|1|0|12|C|1|3 +012062|equivalentBlackBodyTemperature|double|EQUIVALENT BLACK BODY TEMPERATURE|K|1|0|12|C|1|3 +012063|brightnessTemperature|double|BRIGHTNESS TEMPERATURE|K|1|0|12|C|1|3 +012064|instrumentTemperature|double|INSTRUMENT TEMPERATURE|K|1|0|12|K|1|4 +012065|standardDeviationBrightnessTemperature|double|STANDARD DEVIATION BRIGHTNESS TEMPERATURE|K|1|0|12|K|1|4 +012066|antennaTemperature|double|ANTENNA TEMPERATURE|K|2|0|16|C|2|5 +012070|warmLoadTemperature|double|WARM LOAD TEMPERATURE|K|2|0|16|K|2|5 +012071|coldestClusterTemperature|double|COLDEST CLUSTER TEMPERATURE|K|1|0|12|K|1|4 +012072|radiance|double|RADIANCE|W m-2 sr-1|6|0|31|W m-2 sr-1|6|9 +012075|spectralRadiance|long|SPECTRAL RADIANCE|W m-3 sr-1|-3|0|16|W m-3 sr-1|-3|5 +012076|radiance|double|RADIANCE|W m-2 sr-1|3|0|16|W m-2 sr-1|3|5 +012080|brightnessTemperatureRealPart|double|BRIGHTNESS TEMPERATURE REAL PART|K|2|-10000|16|K|2|5 +012081|brightnessTemperatureImaginaryPart|double|BRIGHTNESS TEMPERATURE IMAGINARY PART|K|2|-10000|16|K|2|5 +012082|pixelRadiometricAccuracy|double|PIXEL RADIOMETRIC ACCURACY|K|2|0|12|K|2|4 +012101|airTemperature|double|TEMPERATURE/AIR TEMPERATURE|K|2|0|16|C|2|4 +012102|wetBulbTemperature|double|WET-BULB TEMPERATURE|K|2|0|16|C|2|4 +012103|dewpointTemperature|double|DEWPOINT TEMPERATURE|K|2|0|16|C|2|4 +012104|airTemperatureAt2M|double|AIR TEMPERATURE AT 2 M|K|2|0|16|C|2|4 +012105|webBulbTemperatureAt2M|double|WEB-BULB TEMPERATURE AT 2 M|K|2|0|16|C|2|4 +012106|dewpointTemperatureAt2M|double|DEWPOINT TEMPERATURE AT 2 M|K|2|0|16|C|2|4 +012107|virtualTemperature|double|VIRTUAL TEMPERATURE|K|2|0|16|C|2|4 +012111|maximumTemperatureAtHeightAndOverPeriodSpecified|double|MAXIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|2|0|16|C|2|4 +012112|minimumTemperatureAtHeightAndOverPeriodSpecified|double|MINIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|2|0|16|C|2|4 +012113|groundMinimumTemperaturePast12Hours|double|GROUND MINIMUM TEMPERATURE, PAST 12 HOURS|K|2|0|16|C|2|4 +012114|maximumTemperatureAt2MPast12Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|2|0|16|C|2|4 +012115|minimumTemperatureAt2MPast12Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|2|0|16|C|2|4 +012116|maximumTemperatureAt2MPast24Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|2|0|16|C|2|4 +012117|minimumTemperatureAt2MPast24Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|2|0|16|C|2|4 +012118|maximumTemperatureAtHeightSpecifiedPast24Hours|double|MAXIMUM TEMPERATURE AT HEIGHT SPECIFIED, PAST 24 HOURS|K|2|0|16|C|2|4 +012119|minimumTemperatureAtHeightSpecifiedPast24Hours|double|MINIMUM TEMPERATURE AT HEIGHT SPECIFIED, PAST 24 HOURS|K|2|0|16|C|2|4 +012120|groundTemperature|double|GROUND TEMPERATURE|K|2|0|16|C|2|4 +012121|groundMinimumTemperature|double|GROUND MINIMUM TEMPERATURE|K|2|0|16|C|2|4 +012122|groundMinimumTemperatureOfPrecedingNight|double|GROUND MINIMUM TEMPERATURE OF THE PRECEDING NIGHT|K|2|0|16|C|2|4 +012128|roadSurfaceTemperature|double|ROAD SURFACE TEMPERATURE|K|2|0|16|C|2|5 +012129|roadSubSurfaceTemperature|double|ROAD SUBSURFACE TEMPERATURE|K|2|0|16|C|2|5 +012130|soilTemperature|double|SOIL TEMPERATURE|K|2|0|16|C|2|4 +012131|snowTemperature|double|SNOW TEMPERATURE|K|2|0|16|C|2|4 +012132|iceSurfaceTemperature|double|ICE SURFACE TEMPERATURE|K|2|0|16|C|2|4 +012151|dailyMeanTemperatureStandardDeviation|double|STANDARD DEVIATION OF DAILY MEAN TEMPERATURE|K|2|0|12|C|2|4 +012152|highestDailyMeanTemperature|double|HIGHEST DAILY MEAN TEMPERATURE|K|2|0|16|C|2|4 +012153|lowestDailyMeanTemperature|double|LOWEST DAILY MEAN TEMPERATURE|K|2|0|16|C|2|4 +012158|noiseEquivalentDeltaTemperatureWhileViewingColdTarget|double|NOISE-EQUIVALENT DELTA TEMPERATURE WHILE VIEWING COLD TARGET|K|2|0|12|C|2|4 +012159|noiseEquivalentDeltaTemperatureWhileViewingWarmTarget|double|NOISE-EQUIVALENT DELTA TEMPERATURE WHILE VIEWING WARM TARGET|K|2|0|12|C|2|4 +012161|skinTemperature|double|SKIN TEMPERATURE|K|2|0|16|C|2|4 +012162|equivalentBlackBodyTemperature|double|EQUIVALENT BLACK BODY TEMPERATURE|K|2|0|16|C|2|4 +012163|brightnessTemperature|double|BRIGHTNESS TEMPERATURE|K|2|0|16|C|2|4 +012164|instrumentTemperature|double|INSTRUMENT TEMPERATURE|K|2|0|16|K|2|5 +012165|directSunBrightnessTemperature|long|DIRECT SUN BRIGHTNESS TEMPERATURE|K|0|0|23|K|0|7 +012166|snapshotAccuracy|double|SNAPSHOT ACCURACY|K|1|-4000|13|K|1|4 +012167|radiometricAccuracyPurePolarization|double|RADIOMETRIC ACCURACY (PURE POLARIZATION)|K|1|0|9|K|1|3 +012168|radiometricAccuracyCrossPolarization|double|RADIOMETRIC ACCURACY (CROSS POLARIZATION)|K|1|0|9|K|1|3 +012171|coldestClusterTemperature|double|COLDEST CLUSTER TEMPERATURE|K|2|0|16|K|2|5 +012180|averaged12MicronBtForAllClearPixelsAtNadir|double|AVERAGED 12 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5 +012181|averaged11MicronBtForAllClearPixelsAtNadir|double|AVERAGED 11 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5 +012182|averaged37MicronBtForAllClearPixelsAtNadir|double|AVERAGED 3.7 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5 +012183|averaged12MicronBtForAllClearPixelsForwardView|double|AVERAGED 12 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5 +012184|averaged11MicronBtForAllClearPixelsForwardView|double|AVERAGED 11 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5 +012185|averaged37MicronBtForAllClearPixelsForwardView|double|AVERAGED 3.7 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5 +012186|meanNadirSeaSurfaceTemperature|double|MEAN NADIR SEA-SURFACE TEMPERATURE|K|2|0|16|K|2|5 +012187|meanDualViewSeaSurfaceTemperature|double|MEAN DUAL VIEW SEA-SURFACE TEMPERATURE|K|2|0|16|K|2|5 +012188|interpolated238GhzBrightnessTFromMwr|double|INTERPOLATED 23.8 GHZ BRIGHTNESS T FROM MWR|K|2|0|16|K|2|5 +012189|interpolated365GhzBrightnessTFromMwr|double|INTERPOLATED 36.5 GHZ BRIGHTNESS T FROM MWR|K|2|0|16|K|2|5 +013001|specificHumidity|double|SPECIFIC HUMIDITY|kg/kg|5|0|14|kg/kg|5|5 +013002|mixingRatio|double|MIXING RATIO|kg/kg|5|0|14|kg/kg|5|5 +013003|relativeHumidity|long|RELATIVE HUMIDITY|%|0|0|7|%|0|3 +013004|vapourPressure|long|VAPOUR PRESSURE|Pa|-1|0|10|Pa|-1|4 +013005|vapourDensity|double|VAPOUR DENSITY|kg m-3|3|0|7|kg m-3|3|3 +013006|mixingHeights|long|MIXING HEIGHTS|m|-1|-40|16|m|-1|5 +013007|minimumRelativeHumidity|long|MINIMUM RELATIVE HUMIDITY|%|0|0|7|%|0|3 +013008|maximumRelativeHumidity|long|MAXIMUM RELATIVE HUMIDITY|%|0|0|7|%|0|3 +013009|relativeHumidity|double|RELATIVE HUMIDITY|%|1|-1000|12|%|1|4 +013011|totalPrecipitationOrTotalWaterEquivalent|double|TOTAL PRECIPITATION/TOTAL WATER EQUIVALENT|kg m-2|1|-1|14|kg m-2|1|5 +013012|depthOfFreshSnow|double|DEPTH OF FRESH SNOW|m|2|-2|12|m|2|4 +013013|totalSnowDepth|double|TOTAL SNOW DEPTH|m|2|-2|16|m|2|5 +013014|rainfallOrWaterEquivalentOfSnowAveragedRate|double|RAINFALL/WATER EQUIVALENT OF SNOW (AVERAGED RATE)|kg m-2 s-1|4|0|12|kg m-2 s-1|4|4 +013015|snowfallAveragedRate|double|SNOWFALL (AVERAGED RATE)|m/s|7|0|12|m/s|7|4 +013016|precipitableWater|long|PRECIPITABLE WATER|kg m-2|0|0|7|kg m-2|0|3 +013019|totalPrecipitationPast1Hour|double|TOTAL PRECIPITATION PAST 1 HOUR|kg m-2|1|-1|14|kg m-2|1|4 +013020|totalPrecipitationPast3Hours|double|TOTAL PRECIPITATION PAST 3 HOURS|kg m-2|1|-1|14|kg m-2|1|5 +013021|totalPrecipitationPast6Hours|double|TOTAL PRECIPITATION PAST 6 HOURS|kg m-2|1|-1|14|kg m-2|1|5 +013022|totalPrecipitationPast12Hours|double|TOTAL PRECIPITATION PAST 12 HOURS|kg m-2|1|-1|14|kg m-2|1|5 +013023|totalPrecipitationPast24Hours|double|TOTAL PRECIPITATION PAST 24 HOURS|kg m-2|1|-1|14|kg m-2|1|5 +013031|evapotranspiration|long|EVAPOTRANSPIRATION|kg m-2|0|0|7|kg m-2|0|3 +013032|evaporation|double|EVAPORATION/EVAPOTRANSPIRATION|kg m-2|1|0|8|kg m-2|1|3 +013033|evaporation|double|EVAPORATION/EVAPOTRANSPIRATION|kg m-2|1|0|10|kg m-2|1|4 +013038|superadiabaticIndicator|table|SUPERADIABATIC INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1 +013039|terrainTypeIceOrSnow|table|TERRAIN TYPE (ICE/SNOW)|CODE TABLE|0|0|3|CODE TABLE|0|1 +013040|surfaceFlag|table|SURFACE FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2 +013041|pasquillGiffordStabilityCategory|table|PASQUILL-GIFFORD STABILITY CATEGORY|CODE TABLE|0|0|4|CODE TABLE|0|2 +013042|parcelLiftedIndexTo500Hpa|long|PARCEL LIFTED INDEX (TO 500 HPA)|K|0|-20|6|K|0|2 +013043|bestLiftedIndexTo500Hpa|long|BEST LIFTED INDEX (TO 500 HPA)|K|0|-20|6|K|0|2 +013044|kIndex|long|K INDEX|K|0|-30|8|K|0|3 +013045|koIndex|long|KO INDEX|K|0|-30|8|K|0|3 +013046|maximumBuoyancy|long|MAXIMUM BUOYANCY|K|0|-30|8|K|0|3 +013047|modifiedShowalterStabilityIndex|long|MODIFIED SHOWALTER STABILITY INDEX|K|0|-60|6|C|0|2 +013048|waterFraction|double|WATER FRACTION|%|1|0|10|%|1|4 +013051|frequencyGroupPrecipitation|table|FREQUENCY GROUP, PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2 +013052|highestDailyAmountOfPrecipitation|double|HIGHEST DAILY AMOUNT OF PRECIPITATION|kg m-2|1|-1|14|kg m-2|1|5 +013055|intensityOfPrecipitation|double|INTENSITY OF PRECIPITATION|kg m-2 s-1|4|0|8|mm/h|1|4 +013056|characterAndIntensityOfPrecipitation|table|CHARACTER AND INTENSITY OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2 +013057|timeOfBeginningOrEndOfPrecipitation|table|TIME OF BEGINNING OR END OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2 +013058|sizeOfPrecipitatingElement|double|SIZE OF PRECIPITATING ELEMENT|m|4|0|7|mm|1|3 +013059|numberOfFlashesThunderstorm|long|NUMBER OF FLASHES (THUNDERSTORM)|Numeric|0|0|7|Numeric|0|3 +013060|totalAccumulatedPrecipitation|double|TOTAL ACCUMULATED PRECIPITATION|kg m-2|1|-1|17|kg m-2|1|5 +013071|upstreamWaterLevel|double|UPSTREAM WATER LEVEL|m|2|0|14|m|2|4 +013072|downstreamWaterLevel|double|DOWNSTREAM WATER LEVEL|m|2|0|14|m|2|4 +013073|maximumWaterLevel|double|MAXIMUM WATER LEVEL|m|2|0|14|m|2|4 +013074|groundWaterLevel|double|GROUND WATER LEVEL|m|2|0|18|m|2|6 +013080|waterPh|double|WATER PH|pH unit|1|0|10|pH unit|1|3 +013081|waterConductivity|double|WATER CONDUCTIVITY|S/m|3|0|14|S/m|3|4 +013082|waterTemperature|double|WATER TEMPERATURE|K|1|0|12|K|1|4 +013083|dissolvedOxygen|double|DISSOLVED OXYGEN|kg m-3|6|0|15|kg m-3|6|5 +013084|turbidity|long|TURBIDITY|lm|0|0|14|lm|0|4 +013085|oxidationReductionPotential|double|OXIDATION REDUCTION POTENTIAL (ORP)|V|3|0|14|V|3|4 +013090|radiometerWaterVapourContent|double|RADIOMETER WATER VAPOUR CONTENT|kg m-2|1|0|10|kg m-2|1|4 +013091|radiometerLiquidContent|double|RADIOMETER LIQUID CONTENT|kg m-2|2|0|8|kg m-2|2|3 +013093|cloudOpticalThickness|long|CLOUD OPTICAL THICKNESS|Numeric|0|0|8|Numeric|0|3 +013095|totalColumnWaterVapour|double|TOTAL COLUMN WATER VAPOUR|kg m-2|4|0|19|kg m-2|4|6 +013096|mwrWaterVapourContent|double|MWR WATER VAPOUR CONTENT|kg m-2|2|0|14|kg m-2|2|5 +013097|mwrLiquidWaterContent|double|MWR LIQUID WATER CONTENT|kg m-2|2|0|14|kg m-2|2|5 +013098|integratedWaterVapourDensity|double|INTEGRATED WATER VAPOUR DENSITY|kg m-2|8|0|30|kg m-2|8|10 +013099|log10OfIntegratedCloudParticleDensity|double|LOG10 OF INTEGRATED CLOUD PARTICLE DENSITY|log (m-2)|1|0|7|log (m-2)|1|3 +013100|log10OfIntegratedCloudParticleArea|double|LOG10 OF INTEGRATED CLOUD PARTICLE AREA|log (m2 m-2)|1|-70|7|log (m2 m-2)|1|2 +013101|log10OfIntegratedCloudParticleVolume|double|LOG10 OF INTEGRATED CLOUD PARTICLE VOLUME|log (m3 m-2)|1|-140|7|log (m3 m-2)|1|3 +013109|iceOrLiquidWaterPath|double|ICE/LIQUID WATER PATH|kg m-2|3|0|10|kg m-2|3|4 +013110|massMixingRatio|long|MASS MIXING RATIO|%|0|0|7|%|0|3 +013111|soilMoisture|long|SOIL MOISTURE|g/kg|0|0|10|g/kg|0|4 +013112|objectWetnessDuration|long|OBJECT WETNESS DURATION|s|0|0|17|s|0|5 +013114|rateOfIceAccretion|double|RATE OF ICE ACCRETION|kg m-2 h-1|1|0|11|kg m-2 h-1|1|4 +013115|iceThickness|double|ICE THICKNESS|m|2|0|19|m|2|6 +013116|waterFilmThickness|double|WATER FILM THICKNESS|m|4|0|10|m|3|2 +013117|snowDensityLiquidWaterContent|long|SNOW DENSITY (LIQUID WATER CONTENT)|kg m-3|0|0|10|kg m-3|0|3 +013118|freshSnowDepth|double|DEPTH OF FRESH SNOW (HIGH ACCURACY)|m|3|-2|14|m|3|5 +013155|precipitationIntensityHighAccuracy|double|INTENSITY OF PRECIPITATION (HIGH ACCURACY)|kg m-2 s-1|5|-1|16|mm/h|2|5 +013160|radiometerLiquidContent|double|RADIOMETER LIQUID CONTENT|kg m-2|2|-350|10|kg m-2|2|3 +013162|cloudLiquidWater|double|CLOUD LIQUID WATER|kg m-2|2|0|8|kg m-2|2|3 +013163|snowWaterEquivalent|long|SNOW WATER EQUIVALENT|kg m-2|0|0|16|kg m-2|0|5 +013164|seaIceFreeboard|double|SEA ICE FREEBOARD|m|3|-131072|18|m|3|6 +014001|longWaveRadiationIntegratedOver24Hours|long|LONG-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-65536|17|J m-2|-3|5 +014002|longWaveRadiationIntegratedOverPeriodSpecified|long|LONG-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-65536|17|J m-2|-3|5 +014003|shortWaveRadiationIntegratedOver24Hours|long|SHORT-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-65536|17|J m-2|-3|5 +014004|shortWaveRadiationIntegratedOverPeriodSpecified|long|SHORT-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-65536|17|J m-2|-3|5 +014011|netLongWaveRadiationIntegratedOver24Hours|long|NET LONG-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-65536|17|J m-2|-3|5 +014012|netLongWaveRadiationIntegratedOverPeriodSpecified|long|NET LONG-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-65536|17|J m-2|-3|5 +014013|netShortWaveRadiation24Hours|long|NET SHORT-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-65536|17|J m-2|-3|5 +014014|netShortWaveRadiationIntegratedOverPeriodSpecified|long|NET SHORT-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-65536|17|J m-2|-3|5 +014015|netRadiationIntegratedOver24Hours|long|NET RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|-16384|15|J m-2|-4|5 +014016|netRadiationIntegratedOverPeriodSpecified|long|NET RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|-16384|15|J m-2|-4|5 +014017|instantaneousLongWaveRadiation|long|INSTANTANEOUS LONG-WAVE RADIATION|W m-2|0|-512|10|W m-2|0|4 +014018|instantaneousShortWaveRadiation|long|INSTANTANEOUS SHORT-WAVE RADIATION|W m-2|0|-2048|12|W m-2|0|4 +014019|surfaceAlbedo|long|SURFACE ALBEDO|%|0|0|7|%|0|3 +014020|globalSolarRadiation24Hours|long|GLOBAL SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5 +014021|globalSolarRadiationIntegratedOverPeriodSpecified|long|GLOBAL SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5 +014022|diffuseSolarRadiationIntegratedOver24Hours|long|DIFFUSE SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5 +014023|diffuseSolarRadiationIntegratedOverPeriodSpecified|long|DIFFUSE SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5 +014024|directSolarRadiationIntegratedOver24Hours|long|DIRECT SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5 +014025|directSolarRadiationIntegratedOverPeriodSpecified|long|DIRECT SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5 +014026|cloudTopAlbedo|long|ALBEDO AT THE TOP OF CLOUDS|%|0|0|7|%|0|3 +014027|albedo|long|ALBEDO|%|0|0|7|%|0|3 +014028|globalSolarRadiationIntegratedOverPeriodSpecified|long|GLOBAL SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD SPECIFIED|J m-2|-2|0|20|J m-2|-2|6 +014029|diffuseSolarRadiationIntegratedOverPeriodSpecified|long|DIFFUSE SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD SPECIFIED|J m-2|-2|0|20|J m-2|-2|6 +014030|directSolarRadiationIntegratedOverPeriodSpecified|long|DIRECT SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD SPECIFIED|J m-2|-2|0|20|J m-2|-2|6 +014031|totalSunshine|long|TOTAL SUNSHINE|min|0|0|11|min|0|4 +014032|totalSunshine|long|TOTAL SUNSHINE|h|0|0|10|h|0|4 +014033|totalSunshine|long|TOTAL SUNSHINE|%|0|0|9|%|0|3 +014034|sunshineOverPeriodSpecified|long|SUNSHINE OVER PERIOD SPECIFIED|min|0|0|11|min|0|4 +014035|solarRadiationFlux|double|SOLAR RADIATION FLUX|W m-2|1|0|14|W m-2|1|5 +014042|bidirectionalReflectance|long|BIDIRECTIONAL REFLECTANCE|%|0|0|7|%|0|3 +014043|channelRadiance|double|CHANNEL RADIANCE|W m-2 sr-1 um-1|4|0|23|W m-2 sr-1 um-1|4|7 +014044|channelRadiance|double|CHANNEL RADIANCE|W m-2 sr-1 cm|7|-100000|22|W m-2 sr-1 cm|7|7 +014045|channelRadiance|long|CHANNEL RADIANCE|W m-2 sr-1 cm|0|0|11|W m-2 sr-1 cm|0|4 +014046|scaledRadiance|long|SCALED RADIANCE|W m-2 sr-1 m|0|-5000|16|W m-2 sr-1 m|0|5 +014047|scaledMeanAvhrrRadiance|long|SCALED MEAN AVHRR RADIANCE|W m-2 sr-1 m|0|0|31|W m-2 sr-1 m|0|10 +014048|scaledStandardDeviationAvhrrRadiance|long|SCALED STANDARD DEVIATION AVHRR RADIANCE|W m-2 sr-1 m|0|0|31|W m-2 sr-1 m|0|10 +014050|emissivity|double|EMISSIVITY|%|1|0|10|%|1|4 +014051|directSolarRadiationIntegratedOverLastHour|long|DIRECT SOLAR RADIATION INTEGRATED OVER LAST HOUR|J m-2|-3|0|14|J m-2|-3|4 +014052|globalUpwardSolarRadiationIntegratedOverPeriodSpecified|long|GLOBAL UPWARD SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-2|-1048574|20|J m-2|-2|7 +014053|netRadiationIntegratedOverPeriodSpecified|long|NET RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD SPECIFIED|J m-2|-2|-1048574|21|J m-2|-2|7 +014054|photosyntheticallyActiveRadiationIntegratedOverPeriodSpecified|long|PHOTOSYNTHETICALLY ACTIVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|0|16|J m-2|-3|5 +014055|solarActivityIndex|long|SOLAR ACTIVITY INDEX|Numeric|0|-32768|16|Numeric|0|5 +014056|backgroundLuminance|long|BACKGROUND LUMINANCE|cd m-2|0|0|18|cd m-2|0|6 +014057|soilHeatFlux|long|SOIL HEAT FLUX|J m-2|-2|-1048574|21|J m-2|-2|7 +014072|globalUvIrradiation|long|GLOBAL UV IRRADIATION|J m-2|0|-4000000|23|J m-2|0|7 +015001|totalOzone|long|TOTAL OZONE|DU|0|0|10|DU|0|4 +015002|airMassSlantPathAt22Km|long|AIR MASS (SLANT PATH AT 22 KM)|Numeric|2|0|10|Numeric|2|3 +015003|measuredOzonePartialPressureSounding|double|MEASURED OZONE PARTIAL PRESSURE (SOUNDING)|Pa|4|0|9|nbar|0|3 +015004|ozoneSoundingCorrectionFactor|long|OZONE SOUNDING CORRECTION FACTOR (CF)|Numeric|3|0|11|Numeric|3|4 +015005|ozoneP|long|OZONE P|DU|0|0|10|DU|0|3 +015008|significandOfVolumetricMixingRatio|long|SIGNIFICAND OF VOLUMETRIC MIXING RATIO|Numeric|0|0|10|Numeric|0|4 +015011|log10IntegratedElectronDensity|double|LOG10 OF INTEGRATED ELECTRON DENSITY|log (m-2)|3|14000|13|log (m-2)|3|4 +015012|totalElectronCountPerSquareMetre|long|TOTAL ELECTRON COUNT PER SQUARE METRE|m-2|-16|0|6|m-2|-16|2 +015015|maxImageSpectralComponentBeforeNormalization|long|MAXIMUM IMAGE SPECTRAL COMPONENT BEFORE NORMALIZATION|Numeric|0|0|31|Numeric|0|10 +015020|integratedOzoneDensity|double|INTEGRATED OZONE DENSITY|kg m-2|8|0|21|kg m-2|8|7 +015021|integratedMassDensity|double|INTEGRATED MASS DENSITY|kg m-2|11|0|31|kg m-2|11|10 +015024|opticalDepth|long|OPTICAL DEPTH|Numeric|4|0|24|Numeric|4|8 +015025|pollutantType|table|TYPE OF POLLUTANT|CODE TABLE|0|0|4|CODE TABLE|0|2 +015026|moleFractionOfPollutant|double|CONCENTRATION OF POLLUTANT (MOL MOL-1)|mol/mol|9|0|9|mol/mol|9|3 +015027|massConcentrationOfPollutant|double|CONCENTRATION OF POLLUTANT (KG M-3)|kg m-3|9|0|10|kg m-3|9|4 +015028|moleFractionOfAtmosphericConstituentOrPollutantInDryAir|double|MOLE FRACTION OF ATMOSPHERIC CONSTITUENT/POLLUTANT IN DRY AIR|0/00|5|0|16|0/00|5|5 +015029|extinctionCoefficient|double|EXTINCTION COEFFICIENT|/m|9|0|30|/m|9|10 +015030|aerosolContaminationIndex|long|AEROSOL CONTAMINATION INDEX|Numeric|2|-1000|12|Numeric|2|4 +015031|atmosphericPathDelayInSatelliteSignal|double|ATMOSPHERIC PATH DELAY IN SATELLITE SIGNAL|m|4|10000|15|m|4|5 +015032|estimatedErrorInAtmosphericPathDelay|double|ESTIMATED ERROR IN ATMOSPHERIC PATH DELAY|m|4|0|10|m|4|4 +015033|differenceInPathDelaysForLimbViewsAtExtremesOfScan|double|DIFFERENCE IN PATH DELAYS FOR LIMB VIEWS AT EXTREMES OF SCAN|m|5|-10000|15|m|5|5 +015034|estimatedErrorInPathDelayDifference|double|ESTIMATED ERROR IN PATH DELAY DIFFERENCE|m|5|0|14|m|5|5 +015035|componentOfZenithPathDelayDueToWaterVapour|double|COMPONENT OF ZENITH PATH DELAY DUE TO WATER VAPOUR|m|4|0|14|m|4|5 +015036|atmosphericRefractivity|double|ATMOSPHERIC REFRACTIVITY|N units|3|0|19|N units|3|6 +015037|bendingAngle|double|BENDING ANGLE|rad|8|-100000|23|rad|8|7 +015041|sulphurDioxideIndex|long|SULPHUR DIOXIDE INDEX|Numeric|2|-1200|14|Numeric|2|4 +015042|reflectance|double|REFLECTANCE|%|2|0|14|%|2|5 +015045|sulphurDioxide|double|SULPHUR DIOXIDE|DU|2|-2000|15|DU|2|5 +015046|volcanoContaminationIndex|long|VOLCANO CONTAMINATION INDEX|Numeric|2|-1000|11|Numeric|2|4 +015049|aerosolAngstromWavelengthExponent|long|AEROSOL ANGSTROM WAVELENGTH EXPONENT|Numeric|3|-2000|14|Numeric|3|5 +015051|meteorologicalOpticalRange|long|METEOROLOGICAL OPTICAL RANGE|m|0|0|18|m|0|6 +015052|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan5Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 5 NM|log (m-3)|1|60|6|log (m-3)|1|3 +015053|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan14Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 14 NM|log (m-3)|2|600|9|log (m-3)|2|4 +015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 µM|log (m-3)|2|550|9|log (m-3)|2|4 +015055|nonVolatileAerosolRatio|long|NON VOLATILE AEROSOL RATIO|Numeric|2|0|7|Numeric|2|3 +015062|aerosolOpticalThickness|long|AEROSOL OPTICAL THICKNESS|Numeric|3|-1000|14|Numeric|3|5 +015063|attenuatedBackscatter|double|ATTENUATED BACKSCATTER|m-1 sr-1|8|0|20|m-1 sr-1|8|7 +015064|uncertaintyInAttenuatedBackscatter|double|UNCERTAINTY IN ATTENUATED BACKSCATTER|m-1 sr-1|8|0|20|m-1 sr-1|8|7 +015065|particleBackscatterCoefficient|double|PARTICLE BACKSCATTER COEFFICIENT|m-1 sr-1|8|0|20|m-1 sr-1|8|7 +015066|uncertaintyInParticleBackscatterCoefficient|double|UNCERTAINTY IN PARTICLE BACKSCATTER COEFFICIENT|m-1 sr-1|8|0|20|m-1 sr-1|8|7 +015067|particleExtinctionCoefficient|double|PARTICLE EXTINCTION COEFFICIENT|/m|8|0|20|/m|8|7 +015068|uncertaintyInParticleExtinctionCoefficient|double|UNCERTAINTY IN PARTICLE EXTINCTION COEFFICIENT|/m|8|0|20|/m|8|7 +015069|particleLidarRatio|double|PARTICLE LIDAR RATIO|sr|2|0|14|sr|2|5 +015070|uncertaintyInLidarRatio|double|UNCERTAINTY IN LIDAR RATIO|sr|2|0|14|sr|2|5 +015071|particleDepolarizationRatio|double|PARTICLE DEPOLARIZATION RATIO|%|2|0|14|%|2|5 +015072|uncertaintyInDepolarizationRatio|double|UNCERTAINTY IN DEPOLARIZATION RATIO|%|2|0|14|%|2|5 +019001|synopticFeatureType|table|TYPE OF SYNOPTIC FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2 +019002|effectiveRadiusOfFeature|long|EFFECTIVE RADIUS OF FEATURE|m|-2|0|12|m|-2|4 +019003|windSpeedThreshold|long|WIND SPEED THRESHOLD|m/s|0|0|8|m/s|0|3 +019004|effectiveRadiusWithRespectToWindSpeedsAboveThreshold|long|EFFECTIVE RADIUS WITH RESPECT TO WIND SPEEDS ABOVE THRESHOLD|m|-2|0|12|m|-2|4 +019005|featureDirectionOfMotion|long|DIRECTION OF MOTION OF FEATURE|deg|0|0|9|deg|0|3 +019006|speedOfMotionOfFeature|double|SPEED OF MOTION OF FEATURE|m/s|2|0|14|m/s|2|5 +019007|effectiveRadiusOfFeature|long|EFFECTIVE RADIUS OF FEATURE|m|-3|0|12|m|-3|4 +019008|verticalExtentOfCirculation|table|VERTICAL EXTENT OF CIRCULATION|CODE TABLE|0|0|3|CODE TABLE|0|1 +019009|effectiveRadiusWithRespectToWindSpeedsAboveThresholdLargeStorms|long|EFFECTIVE RADIUS WITH RESPECT TO WIND SPEEDS ABOVE THRESHOLD (LARGE STORMS)|m|-3|0|12|m|-3|4 +019010|methodForTrackingCentreOfSynopticFeature|table|METHOD FOR TRACKING THE CENTRE OF SYNOPTIC FEATURE|CODE TABLE|0|0|4|CODE TABLE|0|2 +019100|timeIntervalToCalculateMovementOfTropicalCyclone|table|TIME INTERVAL TO CALCULATE THE MOVEMENT OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2 +019101|accuracyOfPositionOfCentreOfTropicalCyclone|table|ACCURACY OF THE POSITION OF THE CENTRE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2 +019102|shapeAndDefinitionOfEyeOfTropicalCyclone|table|SHAPE AND DEFINITION OF THE EYE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|3|CODE TABLE|0|1 +019103|diameterOfMajorAxisOfEyeOfTropicalCyclone|table|DIAMETER OF MAJOR AXIS OF THE EYE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2 +019104|changeInCharacterOfEyeDuring30Minutes|table|CHANGE IN CHARACTER OF THE EYE DURING THE 30 MINUTES|CODE TABLE|0|0|4|CODE TABLE|0|2 +019105|distanceBetweenEndOfSpiralBandAndCentre|table|DISTANCE BETWEEN THE END OF SPIRAL BAND AND THE CENTRE|CODE TABLE|0|0|4|CODE TABLE|0|2 +019106|identificationNumberOfTropicalCyclone|long|IDENTIFICATION NUMBER OF TROPICAL CYCLONE|Numeric|0|0|7|Numeric|0|3 +019107|timeIntervalOverWhichMovementOfTropicalCycloneHasBeenCalculated|table|TIME INTERVAL OVER WHICH THE MOVEMENT OF THE TROPICAL CYCLONE HAS BEEN CALCULATED|CODE TABLE|0|0|4|CODE TABLE|0|2 +019108|accuracyOfGeographicalPositionOfTropicalCyclone|table|ACCURACY OF GEOGRAPHICAL POSITION OF THE TROPICAL CYCLONE|CODE TABLE|0|0|3|CODE TABLE|0|1 +019109|meanDiameterOfOvercastCloudOfTropicalCyclone|table|MEAN DIAMETER OF THE OVERCAST CLOUD OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2 +019110|apparent24HourChangeInIntensityOfTropicalCyclone|table|APPARENT 24-HOUR CHANGE IN INTENSITY OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2 +019111|currentIntensityNumberOfTropicalCyclone|long|CURRENT INTENSITY (CI) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3 +019112|dataTropicalNumberOfTropicalCyclone|long|DATA TROPICAL (DT) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3 +019113|cloudPatternTypeOfDtNumber|table|CLOUD PATTERN TYPE OF THE DT-NUMBER|CODE TABLE|0|0|4|CODE TABLE|0|2 +019114|modelExpectedTropicalNumberOfTropicalCyclone|long|MODEL EXPECTED TROPICAL (MET) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3 +019115|trendOfPast24HourChangeDevelopedWeakened|long|TREND OF THE PAST 24-HOUR CHANGE (+: DEVELOPED, -: WEAKENED)|Numeric|1|-30|6|Numeric|1|2 +019116|patternTropicalNumberOfTropicalCyclone|long|PATTERN TROPICAL (PT) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3 +019117|cloudPictureTypeOfPtNumber|table|CLOUD PICTURE TYPE OF THE PT-NUMBER|CODE TABLE|0|0|3|CODE TABLE|0|1 +019118|finalTropicalNumberOfTropicalCyclone|long|FINAL TROPICAL (T) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3 +019119|finalTNumberType|table|TYPE OF THE FINAL T-NUMBER|CODE TABLE|0|0|3|CODE TABLE|0|1 +019150|typhoonInternationalCommonNumberTyphoonCommittee|string|TYPHOON INTERNATIONAL COMMON NUMBER (TYPHOON COMMITTEE)|CCITT IA5|0|0|32|Character|0|4 +020001|horizontalVisibility|long|HORIZONTAL VISIBILITY|m|-1|0|13|m|-1|4 +020002|verticalVisibility|long|VERTICAL VISIBILITY|m|-1|0|7|m|-1|3 +020003|presentWeather|table|PRESENT WEATHER|CODE TABLE|0|0|9|CODE TABLE|0|3 +020004|pastWeather1|table|PAST WEATHER (1)|CODE TABLE|0|0|5|CODE TABLE|0|2 +020005|pastWeather2|table|PAST WEATHER (2)|CODE TABLE|0|0|5|CODE TABLE|0|2 +020006|flightRules|table|FLIGHT RULES|CODE TABLE|0|0|3|CODE TABLE|0|1 +020008|cloudDistributionForAviation|table|CLOUD DISTRIBUTION FOR AVIATION|CODE TABLE|0|0|5|CODE TABLE|0|2 +020009|generalWeatherIndicatorTafOrMetar|table|GENERAL WEATHER INDICATOR (TAF/METAR)|CODE TABLE|0|0|4|CODE TABLE|0|2 +020010|cloudCoverTotal|long|CLOUD COVER (TOTAL)|%|0|0|7|%|0|3 +020011|cloudAmount|table|CLOUD AMOUNT|CODE TABLE|0|0|4|CODE TABLE|0|2 +020012|cloudType|table|CLOUD TYPE|CODE TABLE|0|0|6|CODE TABLE|0|2 +020013|heightOfBaseOfCloud|long|HEIGHT OF BASE OF CLOUD|m|-1|-40|11|m|-1|4 +020014|heightOfTopOfCloud|long|HEIGHT OF TOP OF CLOUD|m|-1|-40|11|m|-1|4 +020015|pressureAtBaseOfCloud|long|PRESSURE AT BASE OF CLOUD|Pa|-1|0|14|Pa|-1|5 +020016|pressureAtTopOfCloud|long|PRESSURE AT TOP OF CLOUD|Pa|-1|0|14|Pa|-1|5 +020017|cloudTopDescription|table|CLOUD TOP DESCRIPTION|CODE TABLE|0|0|4|CODE TABLE|0|2 +020018|tendencyOfRunwayVisualRange|table|TENDENCY OF RUNWAY VISUAL RANGE|CODE TABLE|0|0|2|CODE TABLE|0|1 +020019|significantWeather|string|SIGNIFICANT PRESENT OR FORECAST WEATHER|CCITT IA5|0|0|72|Character|0|9 +020020|significantRecentWeatherPhenomena|string|SIGNIFICANT RECENT WEATHER PHENOMENA|CCITT IA5|0|0|32|Character|0|4 +020021|precipitationType|flag|TYPE OF PRECIPITATION|FLAG TABLE|0|0|30|FLAG TABLE|0|10 +020022|characterOfPrecipitation|table|CHARACTER OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2 +020023|otherWeatherPhenomena|flag|OTHER WEATHER PHENOMENA|FLAG TABLE|0|0|18|FLAG TABLE|0|6 +020024|intensityOfPhenomena|table|INTENSITY OF PHENOMENA|CODE TABLE|0|0|3|CODE TABLE|0|1 +020025|obscuration|flag|OBSCURATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7 +020026|characterOfObscuration|table|CHARACTER OF OBSCURATION|CODE TABLE|0|0|4|CODE TABLE|0|2 +020027|phenomenaOccurrence|flag|PHENOMENA OCCURRENCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +020028|expectedChangeInIntensity|table|EXPECTED CHANGE IN INTENSITY|CODE TABLE|0|0|3|CODE TABLE|0|1 +020029|rainFlag|table|RAIN FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1 +020031|iceDepositThickness|double|ICE DEPOSIT (THICKNESS)|m|2|0|7|m|2|3 +020032|rateOfIceAccretionEstimated|table|RATE OF ICE ACCRETION (ESTIMATED)|CODE TABLE|0|0|3|CODE TABLE|0|1 +020033|causeOfIceAccretion|flag|CAUSE OF ICE ACCRETION|FLAG TABLE|0|0|4|FLAG TABLE|0|2 +020034|seaIceConcentration|table|SEA ICE CONCENTRATION|CODE TABLE|0|0|5|CODE TABLE|0|2 +020035|amountAndTypeOfIce|table|AMOUNT AND TYPE OF ICE|CODE TABLE|0|0|4|CODE TABLE|0|2 +020036|iceSituation|table|ICE SITUATION|CODE TABLE|0|0|5|CODE TABLE|0|2 +020037|iceDevelopment|table|ICE DEVELOPMENT|CODE TABLE|0|0|5|CODE TABLE|0|2 +020038|iceEdgeBearing|long|BEARING OF ICE EDGE|deg|0|0|12|deg|0|3 +020039|iceDistance|long|ICE DISTANCE|m|-1|0|13|m|-1|4 +020040|evolutionOfDriftSnow|table|EVOLUTION OF DRIFT SNOW|CODE TABLE|0|0|4|CODE TABLE|0|2 +020041|airframeIcing|table|AIRFRAME ICING|CODE TABLE|0|0|4|CODE TABLE|0|2 +020042|airframeIcingPresent|table|AIRFRAME ICING PRESENT|CODE TABLE|0|0|2|CODE TABLE|0|1 +020043|peakLiquidWaterContent|double|PEAK LIQUID WATER CONTENT|kg m-3|4|0|7|kg m-3|4|2 +020044|averageLiquidWaterContent|double|AVERAGE LIQUID WATER CONTENT|kg m-3|4|0|7|kg m-3|4|2 +020045|supercooledLargeDropletConditions|table|SUPERCOOLED LARGE DROPLET (SLD) CONDITIONS|CODE TABLE|0|0|2|CODE TABLE|0|1 +020048|evolutionOfFeature|table|EVOLUTION OF FEATURE|CODE TABLE|0|0|4|CODE TABLE|0|2 +020050|cloudIndex|table|CLOUD INDEX|CODE TABLE|0|0|8|CODE TABLE|0|3 +020051|amountOfLowClouds|long|AMOUNT OF LOW CLOUDS|%|0|0|7|%|0|3 +020052|amountOfMiddleClouds|long|AMOUNT OF MIDDLE CLOUDS|%|0|0|7|%|0|3 +020053|amountOfHighClouds|long|AMOUNT OF HIGH CLOUDS|%|0|0|7|%|0|3 +020054|trueDirectionFromWhichAPhenomenonOrCloudsAreMovingOrInWhichTheyAreObserved|long|TRUE DIRECTION FROM WHICH A PHENOMENON OR CLOUDS ARE MOVING OR IN WHICH THEY ARE OBSERVED|deg|0|0|9|deg|0|3 +020055|stateOfSkyInTropics|table|STATE OF SKY IN THE TROPICS|CODE TABLE|0|0|4|CODE TABLE|0|2 +020056|cloudPhase|table|CLOUD PHASE|CODE TABLE|0|0|3|CODE TABLE|0|1 +020058|visibilitySeawardsFromACoastalStation|long|VISIBILITY SEAWARDS FROM A COASTAL STATION|m|-1|0|13|m|-1|4 +020059|minimumHorizontalVisibility|long|MINIMUM HORIZONTAL VISIBILITY|m|-1|0|9|m|-1|3 +020060|prevailingHorizontalVisibility|long|PREVAILING HORIZONTAL VISIBILITY|m|-1|0|10|m|-1|4 +020061|runwayVisualRangeRvr|long|RUNWAY VISUAL RANGE (RVR)|m|0|0|12|m|0|4 +020062|stateOfGround|table|STATE OF THE GROUND (WITH OR WITHOUT SNOW)|CODE TABLE|0|0|5|CODE TABLE|0|2 +020063|specialPhenomena|table|SPECIAL PHENOMENA|CODE TABLE|0|0|10|CODE TABLE|0|4 +020065|snowCover|long|SNOW COVER|%|0|0|7|%|0|3 +020066|maximumDiameterOfHailstones|double|MAXIMUM DIAMETER OF HAILSTONES|m|3|0|8|m|3|3 +020067|diameterOfDeposit|double|DIAMETER OF DEPOSIT|m|3|0|9|m|3|3 +020070|minimumNumberOfAtmospherics|long|MINIMUM NUMBER OF ATMOSPHERICS|Numeric|0|0|7|Numeric|0|3 +020071|accuracyOfFixAndRateOfAtmospherics|table|ACCURACY OF FIX AND RATE OF ATMOSPHERICS|CODE TABLE|0|0|4|CODE TABLE|0|2 +020081|cloudAmountInSegment|long|CLOUD AMOUNT IN SEGMENT|%|0|0|7|%|0|3 +020082|amountSegmentCloudFree|long|AMOUNT SEGMENT CLOUD FREE|%|0|0|7|%|0|3 +020083|amountOfSegmentCoveredByScene|long|AMOUNT OF SEGMENT COVERED BY SCENE|%|0|0|7|%|0|3 +020085|generalConditionOfRunway|table|GENERAL CONDITION OF RUNWAY|CODE TABLE|0|0|4|CODE TABLE|0|1 +020086|runwayDeposits|table|RUNWAY DEPOSITS|CODE TABLE|0|0|4|CODE TABLE|0|1 +020087|runwayContamination|table|RUNWAY CONTAMINATION|CODE TABLE|0|0|4|CODE TABLE|0|1 +020088|depthOfRunwayDeposits|double|DEPTH OF RUNWAY DEPOSITS|m|3|0|12|m|0|4 +020089|runwayFrictionCoefficient|table|RUNWAY FRICTION COEFFICIENT|CODE TABLE|0|0|7|CODE TABLE|0|2 +020090|specialClouds|table|SPECIAL CLOUDS|CODE TABLE|0|0|4|CODE TABLE|0|2 +020091|verticalVisibility|long|VERTICAL VISIBILITY|ft|-2|0|10|ft|-2|3 +020092|heightOfBaseOfCloud|long|HEIGHT OF BASE OF CLOUD|ft|-2|0|10|ft|-2|3 +020093|heightOfInversion|long|HEIGHT OF INVERSION|m|-1|0|8|m|-1|3 +020095|iceProbability|long|ICE PROBABILITY|Numeric|3|0|10|Numeric|3|4 +020096|iceAgeAParameter|double|ICE AGE (A PARAMETER)|dB|2|-4096|13|dB|2|4 +020101|locustAcridianName|table|LOCUST (ACRIDIAN) NAME|CODE TABLE|0|0|4|CODE TABLE|0|2 +020102|locustMaturityColour|table|LOCUST (MATURITY) COLOUR|CODE TABLE|0|0|4|CODE TABLE|0|2 +020103|stageOfDevelopmentOfLocusts|table|STAGE OF DEVELOPMENT OF LOCUSTS|CODE TABLE|0|0|4|CODE TABLE|0|2 +020104|organizationStateOfSwarm|table|ORGANIZATION STATE OF SWARM OR BAND OF LOCUSTS|CODE TABLE|0|0|4|CODE TABLE|0|2 +020105|sizeOfSwarmOrBandOfLocustsAndDurationOfPassageOfSwarm|table|SIZE OF SWARM OR BAND OF LOCUSTS AND DURATION OF PASSAGE OF SWARM|CODE TABLE|0|0|4|CODE TABLE|0|2 +020106|locustPopulationDensity|table|LOCUST POPULATION DENSITY|CODE TABLE|0|0|4|CODE TABLE|0|2 +020107|directionOfMovementsOfLocustSwarm|table|DIRECTION OF MOVEMENTS OF LOCUST SWARM|CODE TABLE|0|0|4|CODE TABLE|0|2 +020108|extentOfVegetation|table|EXTENT OF VEGETATION|CODE TABLE|0|0|4|CODE TABLE|0|2 +020111|xAxisErrorEllipseMajorComponent|long|X-AXIS ERROR ELLIPSE MAJOR COMPONENT|m|-1|0|17|m|-1|6 +020112|yAxisErrorEllipseMinorComponent|long|Y-AXIS ERROR ELLIPSE MINOR COMPONENT|m|-1|0|17|m|-1|6 +020113|zAxisErrorEllipseComponent|long|Z-AXIS ERROR ELLIPSE COMPONENT|m|-1|0|17|m|-1|6 +020114|angleOfXAxisInErrorEllipse|double|ANGLE OF X-AXIS IN ERROR ELLIPSE|deg|2|-18000|16|deg|2|5 +020115|angleOfZAxisInErrorEllipse|double|ANGLE OF Z-AXIS IN ERROR ELLIPSE|deg|2|-18000|16|deg|2|5 +020116|emissionHeightOfCloudStroke|long|EMISSION HEIGHT OF CLOUD STROKE|m|0|0|16|m|0|5 +020117|amplitudeOfLightningStrike|long|AMPLITUDE OF LIGHTNING STRIKE|A|-1|-32000|16|A|-1|5 +020118|lightningDetectionError|long|LIGHTNING DETECTION ERROR|m|0|0|19|m|0|6 +020119|lightningDischargePolarity|table|LIGHTNING DISCHARGE POLARITY|CODE TABLE|0|0|2|CODE TABLE|0|1 +020121|thresholdValueForPolarityDecision|double|THRESHOLD VALUE FOR POLARITY DECISION|V|3|0|16|V|3|5 +020122|thresholdValueForPolarityDecision|long|THRESHOLD VALUE FOR POLARITY DECISION|A|0|0|16|A|0|5 +020123|minimumDirectionThreshold|double|MINIMUM THRESHOLD FOR DETECTION|V/m|3|0|16|V/m|3|5 +020124|lightningStrokeOrFlash|table|LIGHTNING STROKE OR FLASH|CODE TABLE|0|0|2|CODE TABLE|0|1 +020126|lightningRateOfDischarge|long|LIGHTNING RATE OF DISCHARGE|/h|0|0|23|/h|0|7 +020127|lightningDistanceFromStation|long|LIGHTNING - DISTANCE FROM STATION|m|-3|0|8|m|-3|3 +020128|lightningDirectionFromStation|double|LIGHTNING - DIRECTION FROM STATION|deg|1|0|12|deg|1|4 +020129|lightningDensityStrokeFlashOrEvent|double|LIGHTNING DENSITY (STROKE, FLASH OR EVENT)|m-2|6|0|10|m-2|6|4 +020130|cloudHydrometeorConcentration|long|CLOUD HYDROMETEOR CONCENTRATION|Numeric|0|0|10|Numeric|0|3 +020131|effectiveRadiusOfCloudHydrometeors|double|EFFECTIVE RADIUS OF CLOUD HYDROMETEORS|m|5|0|6|m|5|2 +020132|cloudLiquidWaterContent|double|CLOUD LIQUID WATER CONTENT|kg m-3|5|0|11|kg m-3|5|4 +020133|hydrometeorRadius|double|HYDROMETEOR RADIUS|m|5|0|6|m|5|2 +020135|iceMassOnARod|double|ICE MASS (ON A ROD)|kg/m|1|0|10|kg/m|1|3 +020136|supplementaryCloudType|table|SUPPLEMENTARY CLOUD TYPE|CODE TABLE|0|0|9|CODE TABLE|0|3 +020137|evolutionOfClouds|table|EVOLUTION OF CLOUDS|CODE TABLE|0|0|4|CODE TABLE|0|2 +020138|roadSurfaceCondition|table|ROAD SURFACE CONDITION|CODE TABLE|0|0|4|CODE TABLE|0|2 +021001|horizontalReflectivity|long|HORIZONTAL REFLECTIVITY|dB|0|-64|7|dB|0|3 +021002|verticalReflectivity|long|VERTICAL REFLECTIVITY|dB|0|-64|7|dB|0|3 +021003|differentialReflectivity|double|DIFFERENTIAL REFLECTIVITY|dB|1|-5|7|dB|1|3 +021004|differentialReflectivity|double|DIFFERENTIAL REFLECTIVITY|dB|2|-800|11|dB|2|4 +021005|linearDepolarizationRatio|long|LINEAR DEPOLARIZATION RATIO|dB|0|-65|6|dB|0|2 +021006|circularDepolarizationRatio|long|CIRCULAR DEPOLARIZATION RATIO|dB|0|-65|6|dB|0|2 +021011|dopplerMeanVelocityXDirection|long|DOPPLER MEAN VELOCITY IN X-DIRECTION|m/s|0|-128|8|m/s|0|3 +021012|dopplerMeanVelocityYDirection|long|DOPPLER MEAN VELOCITY IN Y-DIRECTION|m/s|0|-128|8|m/s|0|3 +021013|dopplerMeanVelocityZDirection|long|DOPPLER MEAN VELOCITY IN Z-DIRECTION|m/s|0|-128|8|m/s|0|3 +021014|dopplerMeanVelocityRadial|double|DOPPLER MEAN VELOCITY (RADIAL)|m/s|1|-4096|13|m/s|1|4 +021017|dopplerVelocitySpectralWidth|double|DOPPLER VELOCITY SPECTRAL WIDTH|m/s|1|0|8|m/s|1|3 +021018|extendedNyquistVelocity|double|EXTENDED NYQUIST VELOCITY|m/s|1|0|10|m/s|1|4 +021019|highNyquistVelocity|double|HIGH NYQUIST VELOCITY|m/s|1|0|10|m/s|1|3 +021021|echoTops|long|ECHO TOPS|m|-3|0|4|m|-3|2 +021022|rangeBinOffset|double|RANGE BIN OFFSET|m|1|0|14|m|1|5 +021023|rangeBinSize|long|RANGE BIN SIZE|m|0|0|14|m|0|5 +021024|azimuthOffset|double|AZIMUTH OFFSET|deg|1|0|12|deg|1|4 +021025|azimuthalResolution|double|AZIMUTHAL RESOLUTION|deg|1|0|8|deg|1|3 +021028|differentialPhase|double|DIFFERENTIAL PHASE|deg|1|0|12|deg|1|4 +021029|crossPolarizationCorrelationCoefficient|long|CROSS-POLARIZATION CORRELATION COEFFICIENT|Numeric|2|-100|8|Numeric|2|3 +021030|signalToNoiseRatio|long|SIGNAL TO NOISE RATIO|dB|0|-32|8|dB|0|3 +021031|verticallyIntegratedLiquidWaterContent|long|VERTICALLY INTEGRATED LIQUID-WATER CONTENT|kg m-2|0|0|7|kg m-2|0|3 +021036|radarRainfallIntensity|double|RADAR RAINFALL INTENSITY|m/s|7|0|12|m/s|7|4 +021041|brightBandHeight|long|BRIGHT-BAND HEIGHT|m|-2|0|8|m|-2|3 +021051|signalPowerAbove1Mw|long|SIGNAL POWER ABOVE 1 MW|dB|0|-256|8|dB|0|3 +021062|backscatter|double|BACKSCATTER|dB|2|-5000|13|dB|2|4 +021063|radiometricResolutionNoiseValue|double|RADIOMETRIC RESOLUTION (NOISE VALUE)|%|1|0|10|%|1|4 +021064|clutterNoiseEstimate|long|CLUTTER NOISE ESTIMATE|Numeric|0|0|8|Numeric|0|3 +021065|missingPacketCounter|long|MISSING PACKET COUNTER|Numeric|0|-127|8|Numeric|0|3 +021066|waveScatterometerProductConfidenceData|flag|WAVE SCATTEROMETER PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|12|FLAG TABLE|0|4 +021067|windProductConfidenceData|flag|WIND PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|13|FLAG TABLE|0|5 +021068|radarAltimeterProductConfidenceData|flag|RADAR ALTIMETER PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|8|FLAG TABLE|0|3 +021069|sstProductConfidenceData|flag|SST PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|10|FLAG TABLE|0|4 +021070|sstProductConfidenceDataSadist2|flag|SST PRODUCT CONFIDENCE DATA (SADIST-2)|FLAG TABLE|0|0|23|FLAG TABLE|0|6 +021071|peakiness|long|PEAKINESS|Numeric|0|0|16|Numeric|0|5 +021072|satelliteAltimeterCalibrationStatus|flag|SATELLITE ALTIMETER CALIBRATION STATUS|FLAG TABLE|0|0|4|FLAG TABLE|0|2 +021073|satelliteAltimeterInstrumentMode|flag|SATELLITE ALTIMETER INSTRUMENT MODE|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +021075|imageSpectrumIntensity|long|IMAGE SPECTRUM INTENSITY|Numeric|0|0|8|Numeric|0|3 +021076|representationOfIntensities|table|REPRESENTATION OF INTENSITIES|CODE TABLE|0|0|3|CODE TABLE|0|1 +021077|altitudeCorrectionIonosphere|double|ALTITUDE CORRECTION (IONOSPHERE)|m|3|0|14|m|3|5 +021078|altitudeCorrectionDryTroposphere|double|ALTITUDE CORRECTION (DRY TROPOSPHERE)|m|3|0|9|m|3|3 +021079|altitudeCorrectionWetTroposphere|double|ALTITUDE CORRECTION (WET TROPOSPHERE)|m|3|2000|10|m|3|4 +021080|altitudeCorrectionCalibrationConstant|double|ALTITUDE CORRECTION (CALIBRATION CONSTANT)|m|3|0|11|m|3|4 +021081|openLoopCorrectionHeightTimeLoop|double|OPEN LOOP CORRECTION (HEIGHT-TIME LOOP)|m|3|0|10|m|3|4 +021082|openLoopCorrectionAutoGainControl|double|OPEN LOOP CORRECTION (AUTO GAIN CONTROL)|dB|3|-3000|14|dB|3|5 +021083|warmTargetCalibration|long|WARM TARGET CALIBRATION|Numeric|0|0|16|Numeric|0|5 +021084|coldTargetCalibration|long|COLD TARGET CALIBRATION|Numeric|0|0|16|Numeric|0|5 +021085|atsrSeaSurfaceTemperatureAcrossTrackBandNumber|long|ATSR SEA-SURFACE TEMPERATURE ACROSS-TRACK BAND NUMBER|Numeric|0|0|4|Numeric|0|2 +021086|numberOfPixelsInNadirOnlyAverage|long|NUMBER OF PIXELS IN NADIR ONLY, AVERAGE|Numeric|0|0|9|Numeric|0|3 +021087|numberOfPixelsInDualViewAverage|long|NUMBER OF PIXELS IN DUAL VIEW, AVERAGE|Numeric|0|0|9|Numeric|0|3 +021088|wetBackscatter|double|WET BACKSCATTER|dB|2|-5000|13|dB|2|4 +021091|radarSignalDopplerSpectrum0thMoment|long|RADAR SIGNAL DOPPLER SPECTRUM 0TH MOMENT|dB|0|-100|8|dB|0|3 +021092|rassSignalDopplerSpectrum0thMomentReferringToRassSignal|long|RASS SIGNAL DOPPLER SPECTRUM 0TH MOMENT, REFERRING TO RASS SIGNAL|dB|0|-100|8|dB|0|3 +021093|kuBandPeakiness|long|KU BAND PEAKINESS|Numeric|3|0|16|Numeric|3|5 +021094|sBandPeakiness|long|S BAND PEAKINESS|Numeric|3|0|16|Numeric|3|5 +021101|numberOfVectorAmbiguities|long|NUMBER OF VECTOR AMBIGUITIES|Numeric|0|0|3|Numeric|0|1 +021102|indexOfSelectedWindVector|long|INDEX OF SELECTED WIND VECTOR|Numeric|0|0|3|Numeric|0|1 +021103|totalNumberOfSigma0Measurements|long|TOTAL NUMBER OF SIGMA-0 MEASUREMENTS|Numeric|0|0|5|Numeric|0|2 +021104|likelihoodComputedForSolution|long|LIKELIHOOD COMPUTED FOR SOLUTION|Numeric|3|-30000|15|Numeric|3|5 +021105|normalizedRadarCrossSection|double|NORMALIZED RADAR CROSS-SECTION|dB|2|-10000|14|dB|2|5 +021106|kpVarianceCoefficientAlpha|long|KP VARIANCE COEFFICIENT (ALPHA)|Numeric|3|0|14|Numeric|3|5 +021107|kpVarianceCoefficientBeta|long|KP VARIANCE COEFFICIENT (BETA)|Numeric|8|0|16|Numeric|8|5 +021109|seawindsWindVectorCellQuality|flag|SEAWINDS WIND VECTOR CELL QUALITY|FLAG TABLE|0|0|17|FLAG TABLE|0|6 +021110|numberOfInnerBeamSigma0ForwardOfSatellite|long|NUMBER OF INNER-BEAM SIGMA-0 (FORWARD OF SATELLITE)|Numeric|0|0|6|Numeric|0|2 +021111|numberOfOuterBeamSigma0ForwardOfSatellite|long|NUMBER OF OUTER-BEAM SIGMA-0 (FORWARD OF SATELLITE)|Numeric|0|0|6|Numeric|0|2 +021112|numberOfInnerBeamSigma0AftOfSatellite|long|NUMBER OF INNER-BEAM SIGMA-0 (AFT OF SATELLITE)|Numeric|0|0|6|Numeric|0|2 +021113|numberOfOuterBeamSigma0AftOfSatellite|long|NUMBER OF OUTER-BEAM SIGMA-0 (AFT OF SATELLITE)|Numeric|0|0|6|Numeric|0|2 +021114|kpVarianceCoefficientGamma|double|KP VARIANCE COEFFICIENT (GAMMA)|dB|3|-140000|18|dB|3|6 +021115|seawindsSigma0Quality|flag|SEAWINDS SIGMA-0 QUALITY|FLAG TABLE|0|0|17|FLAG TABLE|0|6 +021116|seawindsSigma0Mode|flag|SEAWINDS SIGMA-0 MODE|FLAG TABLE|0|0|17|FLAG TABLE|0|6 +021117|sigma0VarianceQualityControl|long|SIGMA-0 VARIANCE QUALITY CONTROL|Numeric|2|0|16|Numeric|2|5 +021118|attenuationCorrectionOnSigma0|double|ATTENUATION CORRECTION ON SIGMA-0|dB|2|-10000|14|dB|2|5 +021119|windScatterometerGeophysicalModelFunction|table|WIND SCATTEROMETER GEOPHYSICAL MODEL FUNCTION|CODE TABLE|0|0|6|CODE TABLE|0|2 +021120|probabilityOfRain|long|PROBABILITY OF RAIN|Numeric|3|0|10|Numeric|3|4 +021121|seawindsNofRainIndex|long|SEAWINDS NOF* RAIN INDEX|Numeric|0|0|8|Numeric|0|3 +021122|attenuationCorrectionOnSigma0FromTb|double|ATTENUATION CORRECTION ON SIGMA-0 (FROM TB)|dB|2|-10000|14|dB|2|5 +021123|seawindsNormalizedRadarCrossSection|double|SEAWINDS NORMALIZED RADAR CROSS-SECTION|dB|2|-30000|15|dB|2|5 +021128|numberOfValidPointsPerSecondUsedToDerivePreviousParameters|long|NUMBER OF VALID POINTS PER SECOND USED TO DERIVE PREVIOUS PARAMETERS|Numeric|0|0|8|Numeric|0|3 +021130|spectrumTotalEnergy|long|SPECTRUM TOTAL ENERGY|Numeric|6|0|28|Numeric|6|9 +021131|spectrumMaxEnergy|long|SPECTRUM MAX ENERGY|Numeric|6|0|28|Numeric|6|9 +021132|directionOfSpectrumMaxOnHigherResolutionGrid|double|DIRECTION OF SPECTRUM MAX ON HIGHER RESOLUTION GRID|deg|3|0|19|deg|3|6 +021133|wavelengthOfSpectrumMaxOnHigherResolutionGrid|double|WAVELENGTH OF SPECTRUM MAX ON HIGHER RESOLUTION GRID|m|3|0|29|m|3|9 +021134|rangeResolutionOfCressCovarianceSpectrum|double|RANGE RESOLUTION OF CRESS COVARIANCE SPECTRUM|rad/m|3|0|19|rad/m|3|6 +021135|realPartOfCrossSpectraPolarGridNumberOfBins|long|REAL PART OF CROSS SPECTRA POLAR GRID NUMBER OF BINS|Numeric|3|-524288|20|Numeric|3|7 +021136|imaginaryPartOfCrossSpectraPolarGridNumberOfBins|long|IMAGINARY PART OF CROSS SPECTRA POLAR GRID NUMBER OF BINS|Numeric|3|-524288|20|Numeric|3|7 +021137|kuBandCorrectedOceanBackscatterCoefficient|double|KU BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5 +021138|stdKuBandCorrectedOceanBackscatterCoefficient|double|STD KU BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5 +021139|kuBandNetInstrumentalCorrectionForAgc|double|KU BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-2048|12|dB|2|4 +021140|sBandCorrectedOceanBackscatterCoefficient|double|S BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5 +021141|stdSBandCorrectedOceanBackscatterCoefficient|double|STD S BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5 +021142|sBandNetInstrumentalCorrectionForAgc|double|S BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-1024|11|dB|2|4 +021143|kuBandRainAttenuation|double|KU BAND RAIN ATTENUATION|dB|2|-1073741824|31|dB|2|10 +021144|altimeterRainFlag|flag|ALTIMETER RAIN FLAG|FLAG TABLE|0|0|2|FLAG TABLE|0|1 +021145|kuBandAutomaticGainControl|double|KU BAND AUTOMATIC GAIN CONTROL|dB|2|0|13|dB|2|4 +021146|rmsKuBandAutomaticGainControl|double|RMS KU BAND AUTOMATIC GAIN CONTROL|dB|2|0|8|dB|2|3 +021147|numberOfValidPointsForKuBandAutomaticGainControl|long|NUMBER OF VALID POINTS FOR KU BAND AUTOMATIC GAIN CONTROL|Numeric|0|0|5|Numeric|0|2 +021148|trailingEdgeVariationFlag|flag|TRAILING EDGE VARIATION FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +021150|beamCollocation|table|BEAM CO-LOCATION|CODE TABLE|0|0|2|CODE TABLE|0|1 +021151|estimatedErrorInSigma0At40DegreesIncidenceAngle|double|ESTIMATED ERROR IN SIGMA-0 AT 40 DEGREES INCIDENCE ANGLE|dB|2|0|9|dB|2|3 +021152|slopeAt40DegreesIncidenceAngle|double|SLOPE AT 40 DEGREES INCIDENCE ANGLE|dB/deg|2|-80|7|dB/deg|2|2 +021153|estimatedErrorInSlopeAt40DegreesIncidenceAngle|double|ESTIMATED ERROR IN SLOPE AT 40 DEGREES INCIDENCE ANGLE|dB/deg|2|-40|6|dB/deg|2|2 +021154|soilMoistureSensitivity|double|SOIL MOISTURE SENSITIVITY|dB|2|0|12|dB|2|4 +021155|windVectorCellQuality|flag|WIND VECTOR CELL QUALITY|FLAG TABLE|0|0|24|FLAG TABLE|0|8 +021156|backscatterDistance|long|BACKSCATTER DISTANCE|Numeric|1|-4096|13|Numeric|1|4 +021157|lossPerUnitLengthOfAtmosphere|double|LOSS PER UNIT LENGTH OF ATMOSPHERE USED|dB/m|10|0|22|dB/m|10|7 +021158|ascatKpEstimateQuality|table|ASCAT KP ESTIMATE QUALITY|CODE TABLE|0|0|2|CODE TABLE|0|1 +021159|ascatSigma0Usability|table|ASCAT SIGMA-0 USABILITY|CODE TABLE|0|0|2|CODE TABLE|0|1 +021160|ascatUseOfSyntheticData|long|ASCAT USE OF SYNTHETIC DATA|Numeric|3|0|10|Numeric|3|4 +021161|ascatSyntheticDataQuantity|long|ASCAT SYNTHETIC DATA QUANTITY|Numeric|3|0|10|Numeric|3|4 +021162|ascatSatelliteOrbitAndAttitudeQuality|long|ASCAT SATELLITE ORBIT AND ATTITUDE QUALITY|Numeric|3|0|10|Numeric|3|4 +021163|ascatSolarArrayReflectionContamination|long|ASCAT SOLAR ARRAY REFLECTION CONTAMINATION|Numeric|3|0|10|Numeric|3|4 +021164|ascatTelemetryPresenceAndQuality|long|ASCAT TELEMETRY PRESENCE AND QUALITY|Numeric|3|0|10|Numeric|3|4 +021165|ascatExtrapolatedReferenceFunctionPresence|long|ASCAT EXTRAPOLATED REFERENCE FUNCTION PRESENCE|Numeric|3|0|10|Numeric|3|4 +021166|landFraction|long|LAND FRACTION|Numeric|3|0|10|Numeric|3|4 +021169|icePresenceIndicator|table|ICE PRESENCE INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1 +021170|cBandCorrectedOceanBackscatterCoefficient|double|C BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5 +021171|rmsCBandCorrectedOceanBackscatterCoefficient|double|RMS C BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5 +021172|cBandNetInstrumentalCorrectionForAgc|double|C BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-2048|12|dB|2|4 +021173|cBandAutomaticGainControl|double|C BAND AUTOMATIC GAIN CONTROL|dB|2|0|13|dB|2|4 +021174|rmsCBandAutomaticGainControl|double|RMS C BAND AUTOMATIC GAIN CONTROL|dB|2|0|9|dB|2|3 +021175|numberOfValidPointsForCBandAutomaticGainControl|long|NUMBER OF VALID POINTS FOR C BAND AUTOMATIC GAIN CONTROL|Numeric|0|0|10|Numeric|0|4 +021176|highFrequencyVariabilityCorrection|double|HIGH FREQUENCY VARIABILITY CORRECTION|m|3|0|16|m|3|5 +021177|correctedOcogBackscatterCoefficient|double|CORRECTED OCOG* BACKSCATTER COEFFICIENT|dB|2|0|16|dB|2|5 +021178|stdOf20HzOcogBackscatterCoefficient|double|STD OF 20 HZ OCOG BACKSCATTER COEFFICIENT|dB|2|0|16|dB|2|5 +021179|numberOf20HzValidPointsForOcogBackscatterCoefficient|long|NUMBER OF 20 HZ VALID POINTS FOR OCOG BACKSCATTER COEFFICIENT|Numeric|0|0|16|Numeric|0|5 +021180|numberOf20HzValidPointsForOceanBackscatterCoefficient|long|NUMBER OF 20 HZ VALID POINTS FOR OCEAN BACKSCATTER COEFFICIENT|Numeric|0|0|8|Numeric|0|3 +021181|20HzOceanBackscatterCoefficient|double|20 HZ OCEAN BACKSCATTER COEFFICIENT|dB|2|0|16|dB|2|5 +021182|20HzKuBandPeakiness|long|20 HZ KU BAND PEAKINESS|Numeric|3|0|16|Numeric|3|5 +021183|specificBandCorrectedOceanBackscatterCoefficient|double|SPECIFIC BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5 +021184|stdSpecificBandCorrectedOceanBackscatterCoefficient|double|STD SPECIFIC BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5 +021185|specificBandNetInstrumentalCorrectionForAgc|double|SPECIFIC BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-2048|12|dB|2|4 +021186|specificBandAutomaticGainControl|double|SPECIFIC BAND AUTOMATIC GAIN CONTROL|dB|2|0|13|dB|2|4 +021187|rmsSpecificBandAutomaticGainControl|double|RMS SPECIFIC BAND AUTOMATIC GAIN CONTROL|dB|2|0|8|dB|2|3 +021188|numberOfValidPointsForSpecificBandAutomaticGainControl|long|NUMBER OF VALID POINTS FOR SPECIFIC BAND AUTOMATIC GAIN CONTROL|Numeric|0|0|7|Numeric|0|3 +022001|wavesDirection|long|DIRECTION OF WAVES|deg|0|0|9|deg|0|3 +022002|windWavesDirection|long|DIRECTION OF WIND WAVES|deg|0|0|9|deg|0|3 +022003|swellWavesDirection|long|DIRECTION OF SWELL WAVES|deg|0|0|9|deg|0|3 +022004|currentDirection|long|DIRECTION OF CURRENT|deg|0|0|9|deg|0|3 +022005|seaSurfaceCurrentDirection|long|DIRECTION OF SEA-SURFACE CURRENT|deg|0|0|9|deg|0|3 +022011|periodOfWaves|long|PERIOD OF WAVES|s|0|0|6|s|0|2 +022012|periodOfWindWaves|long|PERIOD OF WIND WAVES|s|0|0|6|s|0|2 +022013|periodOfSwellWaves|long|PERIOD OF SWELL WAVES|s|0|0|6|s|0|2 +022021|heightOfWaves|double|HEIGHT OF WAVES|m|1|0|10|m|1|4 +022022|heightOfWindWaves|double|HEIGHT OF WIND WAVES|m|1|0|10|m|1|4 +022023|heightOfSwellWaves|double|HEIGHT OF SWELL WAVES|m|1|0|10|m|1|4 +022025|standardDeviationWaveHeight|double|STANDARD DEVIATION WAVE HEIGHT|m|2|0|10|m|2|4 +022026|standardDeviationOfSignificantWaveHeight|double|STANDARD DEVIATION OF SIGNIFICANT WAVE HEIGHT|m|2|0|10|m|2|4 +022031|speedOfCurrent|double|SPEED OF CURRENT|m/s|2|0|13|m/s|2|4 +022032|speedOfSeaSurfaceCurrent|double|SPEED OF SEA-SURFACE CURRENT|m/s|2|0|13|m/s|2|4 +022035|tidalElevationWithRespectToLocalChartDatum|double|TIDAL ELEVATION WITH RESPECT TO LOCAL CHART DATUM|m|2|0|14|m|2|4 +022036|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|2|0|14|m|2|4 +022037|tidalElevationWithRespectToNationalLandDatum|double|TIDAL ELEVATION WITH RESPECT TO NATIONAL LAND DATUM|m|3|-10000|15|m|3|5 +022038|tidalElevationWithRespectToLocalChartDatum|double|TIDAL ELEVATION WITH RESPECT TO LOCAL CHART DATUM|m|3|-10000|15|m|3|5 +022039|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|3|-5000|13|m|3|4 +022040|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|3|-5000|14|m|3|5 +022041|seaSurfaceTemperature15DayRunningMean|double|SEA-SURFACE TEMPERATURE (15-DAY RUNNING MEAN)|K|1|0|12|K|1|4 +022042|oceanographicWaterTemperature|double|SEA/WATER TEMPERATURE|K|1|0|12|K|1|4 +022043|oceanographicWaterTemperature|double|SEA/WATER TEMPERATURE|K|2|0|15|K|2|5 +022044|soundVelocity|double|SOUND VELOCITY|m/s|1|0|14|m/s|1|5 +022045|oceanographicWaterTemperature|double|SEA/WATER TEMPERATURE|K|3|0|19|K|3|6 +022046|seaIceFraction|long|SEA ICE FRACTION|Numeric|2|0|7|Numeric|2|3 +022049|seaSurfaceTemperature|double|SEA-SURFACE TEMPERATURE|K|2|0|15|K|2|5 +022050|standardDeviationSeaSurfaceTemperature|double|STANDARD DEVIATION SEA-SURFACE TEMPERATURE|K|2|0|8|K|2|3 +022055|floatCycleNumber|long|FLOAT CYCLE NUMBER|Numeric|0|0|10|Numeric|0|3 +022056|directionOfProfile|table|DIRECTION OF PROFILE|CODE TABLE|0|0|2|CODE TABLE|0|1 +022059|seaSurfaceSalinity|double|SEA-SURFACE SALINITY|0/00|2|0|14|0/00|2|5 +022060|lagrangianDrifterDrogueStatus|table|LAGRANGIAN DRIFTER DROGUE STATUS|CODE TABLE|0|0|3|CODE TABLE|0|1 +022061|seaState|table|STATE OF THE SEA|CODE TABLE|0|0|4|CODE TABLE|0|2 +022062|salinity|double|SALINITY|0/00|2|0|14|0/00|2|5 +022063|totalWaterDepth|long|TOTAL WATER DEPTH|m|0|0|14|m|0|5 +022064|salinity|double|SALINITY|0/00|3|0|17|0/00|3|6 +022065|oceanographicWaterPressure|long|WATER PRESSURE|Pa|-3|0|17|Pa|-3|6 +022066|oceanographicWaterConductivity|double|WATER CONDUCTIVITY|S/m|6|0|26|S/m|6|8 +022067|instrumentTypeForWaterTemperatureOrSalinityProfileMeasurement|table|INSTRUMENT TYPE FOR WATER TEMPERATURE/SALINITY PROFILE MEASUREMENT|CODE TABLE|0|0|10|CODE TABLE|0|4 +022068|waterTemperatureProfileRecorderTypes|table|WATER TEMPERATURE PROFILE RECORDER TYPES|CODE TABLE|0|0|7|CODE TABLE|0|3 +022069|spectralWaveDensity|double|SPECTRAL WAVE DENSITY|m2/Hz|3|0|22|m2/Hz|3|7 +022070|significantWaveHeight|double|SIGNIFICANT WAVE HEIGHT|m|2|0|13|m|2|4 +022071|spectralPeakWavePeriod|double|SPECTRAL PEAK WAVE PERIOD|s|1|0|9|s|1|3 +022072|spectralPeakWaveLength|long|SPECTRAL PEAK WAVELENGTH|m|0|0|13|m|0|4 +022073|maximumWaveHeight|double|MAXIMUM WAVE HEIGHT|m|2|0|13|m|2|4 +022074|averageWavePeriod|double|AVERAGE WAVE PERIOD|s|1|0|9|s|1|3 +022075|averageWaveLength|long|AVERAGE WAVELENGTH|m|0|0|13|m|0|4 +022076|directionFromWhichDominantWavesAreComing|long|DIRECTION FROM WHICH DOMINANT WAVES ARE COMING|deg|0|0|9|deg|0|3 +022077|directionalSpreadOfDominantWave|long|DIRECTIONAL SPREAD OF DOMINANT WAVE|deg|0|0|9|deg|0|3 +022078|durationOfWaveRecord|long|DURATION OF WAVE RECORD|s|0|0|12|s|0|4 +022079|lengthOfWaveRecord|long|LENGTH OF WAVE RECORD|m|0|0|16|m|0|5 +022080|wavebandCentralFrequency|double|WAVEBAND CENTRAL FREQUENCY|Hz|3|0|10|Hz|3|4 +022081|wavebandCentralWaveNumber|double|WAVEBAND CENTRAL WAVE NUMBER|/m|5|0|13|/m|5|4 +022082|maximumNonDirectionalSpectralWaveDensity|double|MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE DENSITY|m2 s|2|0|20|m2 s|2|7 +022083|maximumNonDirectionalSpectralWaveNumber|double|MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE NUMBER|m3|2|0|20|m3|2|7 +022084|bandContainingMaximumNonDirectionalSpectralWaveDensity|long|BAND CONTAINING MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE DENSITY|Numeric|0|0|7|Numeric|0|3 +022085|spectralWaveDensityRatio|long|SPECTRAL WAVE DENSITY RATIO|Numeric|0|0|7|Numeric|0|3 +022086|meanDirectionFromWhichWavesAreComing|long|MEAN DIRECTION FROM WHICH WAVES ARE COMING|deg|0|0|9|deg|0|3 +022087|principalDirectionFromWhichWavesAreComing|long|PRINCIPAL DIRECTION FROM WHICH WAVES ARE COMING|deg|0|0|9|deg|0|3 +022088|firstNormalizedPolarCoordinateFromFourierCoefficients|long|FIRST NORMALIZED POLAR COORDINATE FROM FOURIER COEFFICIENTS|Numeric|2|0|7|Numeric|2|3 +022089|secondNormalizedPolarCoordinateFromFourierCoefficients|long|SECOND NORMALIZED POLAR COORDINATE FROM FOURIER COEFFICIENTS|Numeric|2|0|7|Numeric|2|3 +022090|nonDirectionalSpectralEstimateByWaveFrequency|double|NON-DIRECTIONAL SPECTRAL ESTIMATE BY WAVE FREQUENCY|m2 s|2|0|20|m2 s|2|7 +022091|nonDirectionalSpectralEstimateByWaveNumber|double|NON-DIRECTIONAL SPECTRAL ESTIMATE BY WAVE NUMBER|m3|2|0|20|m3|2|7 +022092|directionalSpectralEstimateByWaveFrequency|double|DIRECTIONAL SPECTRAL ESTIMATE BY WAVE FREQUENCY|m2 rad-1 s|2|0|20|m2 rad-1 s|2|7 +022093|directionalSpectralEstimateByWaveNumber|double|DIRECTIONAL SPECTRAL ESTIMATE BY WAVE NUMBER|m4|2|0|20|m4|2|7 +022094|totalNumberOfWaveBands|long|TOTAL NUMBER OF WAVE BANDS|Numeric|0|0|7|Numeric|0|3 +022095|directionalSpreadOfIndividualWaves|long|DIRECTIONAL SPREAD OF INDIVIDUAL WAVES|deg|0|0|8|deg|0|3 +022096|spectralBandWidth|double|SPECTRAL BAND WIDTH|/s|3|0|4|/s|3|2 +022097|meanWavelength731MOfImageSpectrumAtLowWaveNumbers|long|MEAN WAVELENGTH > 731 M OF IMAGE SPECTRUM AT LOW WAVE NUMBERS|m|0|0|14|m|0|5 +022098|wavelengthSpreadWavelength731MAtLowWaveNumbers|long|WAVELENGTH SPREAD (WAVELENGTH > 731 M) AT LOW WAVE NUMBERS|m|0|0|14|m|0|5 +022099|meanDirectionAtLowWaveNumbersWavelength731M|long|MEAN DIRECTION AT LOW WAVE NUMBERS (WAVELENGTH > 731 M)|deg|0|0|9|deg|0|3 +022100|directionSpreadAtLowWaveNumbersWavelength731M|long|DIRECTION SPREAD AT LOW WAVE NUMBERS (WAVELENGTH > 731 M)|deg|0|0|9|deg|0|3 +022101|totalEnergyWavelength731mAtLowWaveNumbers|long|TOTAL ENERGY (WAVELENGTH > 731M) AT LOW WAVE NUMBERS|Numeric|0|0|31|Numeric|0|10 +022102|scaledMaximumNonDirectionalSpectralWaveDensityByFrequency|long|SCALED MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE DENSITY BY FREQUENCY|m2 s|0|0|14|m2 s|0|5 +022103|scaledMaximumNonDirectionalSpectralWaveDensityByWavenumber|long|SCALED MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE DENSITY BY WAVE NUMBER|m3|0|0|14|m3|0|5 +022104|scaledNonDirectionalSpectralWaveDensityByFrequency|long|SCALED NON-DIRECTIONAL SPECTRAL WAVE DENSITY BY FREQUENCY|m2 s|0|0|14|m2 s|0|5 +022105|scaledNonDirectionalSpectralWaveDensityByWavenumber|long|SCALED NON-DIRECTIONAL SPECTRAL WAVE DENSITY BY WAVE NUMBER|m3|0|0|14|m3|0|5 +022106|scaledDirectionalSpectralWaveDensityByFrequency|long|SCALED DIRECTIONAL SPECTRAL WAVE DENSITY BY FREQUENCY|m2 rad-1 s|0|0|14|m2 rad-1 s|0|5 +022107|scaledDirectionalSpectralWaveDensityByWavenumber|long|SCALED DIRECTIONAL SPECTRAL WAVE DENSITY BY WAVE NUMBER|m4|0|0|14|m4|0|5 +022108|spectralWaveDensityRatio|long|SPECTRAL WAVE DENSITY RATIO|%|0|0|7|%|0|3 +022120|tideStationAutomatedWaterLevelCheck|table|TIDE STATION AUTOMATED WATER LEVEL CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2 +022121|tideStationManualWaterLevelCheck|table|TIDE STATION MANUAL WATER LEVEL CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2 +022122|automatedMeteorologicalDataCheck|table|TIDE STATION AUTOMATED METEOROLOGICAL DATA CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2 +022123|tideStationManualMeteorologicalDataCheck|table|TIDE STATION MANUAL METEOROLOGICAL DATA CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2 +022130|numberOfValidPointsForSpecificBand|long|NUMBER OF VALID POINTS FOR SPECIFIC BAND|Numeric|0|0|10|Numeric|0|4 +022131|rmsSpecificBandSignificantWaveHeight|double|RMS SPECIFIC BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5 +022132|numberOfValidPointsForSpecificBandSignificantWaveHeight|long|NUMBER OF VALID POINTS FOR SPECIFIC BAND SIGNIFICANT WAVE HEIGHT|Numeric|0|0|10|Numeric|0|4 +022133|specificBandNetInstrumentCorrectionForSignificantWaveHeight|double|SPECIFIC BAND NET INSTRUMENT CORRECTION FOR SIGNIFICANT WAVE HEIGHT|m|3|-1000|11|m|3|4 +022134|numberOfValidPointsForSpecificBandBackscatter|long|NUMBER OF VALID POINTS FOR SPECIFIC BAND BACKSCATTER|Numeric|0|0|10|Numeric|0|4 +022141|seaSurfaceTemperature15DayRunningMean|double|SEA-SURFACE TEMPERATURE (15-DAY RUNNING MEAN)|K|2|0|15|K|2|5 +022142|squareOfSignificantWaveHeight|double|SQUARE OF SIGNIFICANT WAVE HEIGHT|m2|3|-33554432|26|m2|3|8 +022143|stdOf20HzSwhSquared|double|STD OF 20 HZ SWH SQUARED|m2|3|-8388608|24|m2|3|8 +022144|numberOf20HzValidPointsForSwhSquared|long|NUMBER OF 20 HZ VALID POINTS FOR SWH SQUARED|Numeric|0|0|9|Numeric|0|3 +022145|stdOf20HzOceanRange|double|STD OF 20 HZ OCEAN RANGE|m|3|-33554432|31|m|3|10 +022146|ocogRange|double|OCOG RANGE|m|3|0|31|m|3|10 +022147|stdOf20HzOcogRange|double|STD OF 20 HZ OCOG RANGE|m|3|-8388608|31|m|3|10 +022148|numberOf20HzValidPointsForOceanRange|long|NUMBER OF 20 HZ VALID POINTS FOR OCEAN RANGE|Numeric|0|0|9|Numeric|0|3 +022149|20HzSignificantWaveHeightSquared|double|20 HZ SIGNIFICANT WAVE HEIGHT SQUARED|m2|3|-33554432|26|m2|3|8 +022150|numberOf18HzValidPointsForKuBand|long|NUMBER OF 18 HZ VALID POINTS FOR KU BAND|Numeric|0|0|10|Numeric|0|4 +022151|kuBandOceanRange|double|KU BAND OCEAN RANGE|m|3|0|31|m|3|10 +022152|stdOf18HzKuBandOceanRange|double|STD OF 18 HZ KU BAND OCEAN RANGE|m|3|0|16|m|3|5 +022153|numberOf18HzValidPointsForSBand|long|NUMBER OF 18 HZ VALID POINTS FOR S BAND|Numeric|0|0|10|Numeric|0|4 +022154|sBandOceanRange|double|S BAND OCEAN RANGE|m|3|0|31|m|3|10 +022155|stdOf18HzSBandOceanRange|double|STD OF 18 HZ S BAND OCEAN RANGE|m|3|0|16|m|3|5 +022156|kuBandSignificantWaveHeight|double|KU BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5 +022157|stdOf18HzKuBandOceanRange|double|STD OF 18 HZ KU BAND OCEAN RANGE|m|3|0|16|m|3|5 +022158|sBandSignificantWaveHeight|double|S BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5 +022159|stdOf18HzSBandSignificantWaveHeight|double|STD OF 18 HZ S BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5 +022160|normalizedInverseWaveAge|long|NORMALIZED INVERSE WAVE AGE|Numeric|6|0|21|Numeric|6|7 +022161|waveSpectra|double|WAVE SPECTRA|m4|4|0|27|m4|4|9 +022162|rmsOf20HzKuBandOceanRange|double|RMS OF 20 HZ KU BAND OCEAN RANGE|m|3|0|16|m|3|5 +022163|numberOf20HzValidPointsForKuBand|long|NUMBER OF 20 HZ VALID POINTS FOR KU BAND|Numeric|0|0|10|Numeric|0|4 +022164|rms20HzKuBandSignificantWaveHeight|double|RMS 20 HZ KU BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5 +022165|numberOf20HzValidPointsForKuBandSignificantWaveHeight|long|NUMBER OF 20 HZ VALID POINTS FOR KU BAND SIGNIFICANT WAVE HEIGHT|Numeric|0|0|10|Numeric|0|4 +022166|kuBandNetInstrumentalCorrectionForSignificantWaveHeight|double|KU BAND NET INSTRUMENTAL CORRECTION FOR SIGNIFICANT WAVE HEIGHT|m|3|-1000|11|m|3|4 +022167|numberOfValidPointsForKuBandBackscatter|long|NUMBER OF VALID POINTS FOR KU BAND BACKSCATTER|Numeric|0|0|10|Numeric|0|4 +022168|cBandOceanRange|double|C BAND OCEAN RANGE|m|3|0|31|m|3|10 +022169|rmsOfCBandOceanRange|double|RMS OF C BAND OCEAN RANGE|m|3|0|16|m|3|5 +022170|numberOf20HzValidPointsForCBand|long|NUMBER OF 20 HZ VALID POINTS FOR C BAND|Numeric|0|0|10|Numeric|0|4 +022171|cBandSignificantWaveHeight|double|C BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5 +022172|rms20HzCBandSignificantWaveHeight|double|RMS 20 HZ C BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5 +022173|numberOf20HzValidPointsForCBandSignificantWaveHeight|long|NUMBER OF 20 HZ VALID POINTS FOR C BAND SIGNIFICANT WAVE HEIGHT|Numeric|0|0|10|Numeric|0|4 +022174|cBandNetInstrumentalCorrectionForSignificantWaveHeight|double|C BAND NET INSTRUMENTAL CORRECTION FOR SIGNIFICANT WAVE HEIGHT|m|3|-1000|11|m|3|4 +022175|numberOfValidPointsForCBandBackscatter|long|NUMBER OF VALID POINTS FOR C BAND BACKSCATTER|Numeric|0|0|10|Numeric|0|4 +022177|heightOfXbtOrXctdLauncher|long|HEIGHT OF XBT/XCTD LAUNCHER|m|0|0|6|m|0|3 +022178|xbtOrXctdLauncherType|table|XBT/XCTD LAUNCHER TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3 +022182|waterColumnHeight|double|WATER COLUMN HEIGHT|m|3|0|23|m|3|7 +022184|waterColumnHeightDeviationFromReferenceValue|double|WATER COLUMN HEIGHT DEVIATION FROM THE REFERENCE VALUE|m|3|-2000|12|m|3|4 +022185|bprTransmissionCount|long|BPR TRANSMISSION COUNT|Numeric|0|0|10|Numeric|0|3 +022186|directionFromWhichWavesAreComing|long|DIRECTION FROM WHICH WAVES ARE COMING|deg|0|0|9|deg|0|3 +022187|directionalSpreadOfWaves|long|DIRECTIONAL SPREAD OF WAVE|deg|0|0|9|deg|0|3 +022188|oceanographicDissolvedOxygen|double|DISSOLVED OXYGEN|umol/kg|3|0|19|umol/kg|3|6 +022189|specificBandOceanRange|double|SPECIFIC BAND OCEAN RANGE|m|3|0|31|m|3|10 +022190|specificBandSignificantWaveHeight|double|SPECIFIC BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5 +022191|rmsOfSpecificBandOceanRange|double|RMS OF SPECIFIC BAND OCEAN RANGE|m|4|0|16|m|4|5 +023001|accidentEarlyNotificationArticleApplicable|table|ACCIDENT EARLY NOTIFICATION - ARTICLE APPLICABLE|CODE TABLE|0|0|3|CODE TABLE|0|1 +023002|facilityInvolvedInIncident|table|ACTIVITY OR FACILITY INVOLVED IN INCIDENT|CODE TABLE|0|0|5|CODE TABLE|0|2 +023003|releaseType|table|TYPE OF RELEASE|CODE TABLE|0|0|3|CODE TABLE|0|1 +023004|countermeasuresTakenNearBorder|table|COUNTERMEASURES TAKEN NEAR BORDER|CODE TABLE|0|0|3|CODE TABLE|0|1 +023005|causeOfIncident|table|CAUSE OF INCIDENT|CODE TABLE|0|0|2|CODE TABLE|0|1 +023006|incidentSituation|table|INCIDENT SITUATION|CODE TABLE|0|0|3|CODE TABLE|0|1 +023007|characteristicsOfRelease|table|CHARACTERISTICS OF RELEASE|CODE TABLE|0|0|3|CODE TABLE|0|1 +023008|stateOfCurrentRelease|table|STATE OF CURRENT RELEASE|CODE TABLE|0|0|2|CODE TABLE|0|1 +023009|stateOfExpectedRelease|table|STATE OF EXPECTED RELEASE|CODE TABLE|0|0|2|CODE TABLE|0|1 +023016|possibilityOfSignificantChemicalToxicHealthEffect|table|POSSIBILITY OF SIGNIFICANT CHEMICAL TOXIC HEALTH EFFECT|CODE TABLE|0|0|2|CODE TABLE|0|1 +023017|flowDischargeOfMajorRecipient|double|FLOW DISCHARGE OF MAJOR RECIPIENT|m3/s|6|0|20|m3/s|6|7 +023018|releaseBehaviourOverTime|table|RELEASE BEHAVIOUR OVER TIME|CODE TABLE|0|0|3|CODE TABLE|0|1 +023019|actualReleaseHeight|long|ACTUAL RELEASE HEIGHT|m|0|-15000|17|m|0|6 +023021|effectiveReleaseHeight|long|EFFECTIVE RELEASE HEIGHT|m|0|-15000|17|m|0|6 +023022|distanceOfReleasePointOrSiteOfIncident|long|DISTANCE OF RELEASE POINT OR SITE OF INCIDENT|m|0|0|24|m|0|8 +023023|mainTransportSpeedInAtmosphere|double|MAIN TRANSPORT SPEED IN THE ATMOSPHERE|m/s|1|0|12|m/s|1|4 +023024|mainTransportSpeedInWater|double|MAIN TRANSPORT SPEED IN WATER|m/s|2|0|13|m/s|2|4 +023025|mainTransportSpeedInGroundWater|double|MAIN TRANSPORT SPEED IN GROUND WATER|m/s|2|0|13|m/s|2|4 +023027|mainTransportDirectionInTheAtmosphere|long|MAIN TRANSPORT DIRECTION IN THE ATMOSPHERE|deg|0|0|9|deg|0|3 +023028|mainTransportDirectionInWater|long|MAIN TRANSPORT DIRECTION IN WATER|deg|0|0|9|deg|0|3 +023029|mainTransportDirectionInGroundWater|long|MAIN TRANSPORT DIRECTION IN GROUND WATER|deg|0|0|9|deg|0|3 +023031|possibilityPlume|table|POSSIBILITY THAT PLUME WILL ENCOUNTER PRECIPITATION IN STATE IN WHICH INCIDENT OCCURRED|CODE TABLE|0|0|2|CODE TABLE|0|1 +023032|plumeWillEncounterChangeInWindDirectionAndOrOrSpeedFlag|table|PLUME WILL ENCOUNTER CHANGE IN WIND DIRECTION AND/OR SPEED FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1 +023040|flowDischargeRiver|double|FLOW DISCHARGE - RIVER|m3/s|1|0|22|m3/s|1|7 +023041|flowDischargeWell|double|FLOW DISCHARGE - WELL|m3/s|3|0|16|m3/s|3|5 +024001|estimateOfAmountOfRadioactivityReleasedUpToSpecifiedTime|long|ESTIMATE OF AMOUNT OF RADIOACTIVITY RELEASED UP TO SPECIFIED TIME|Bq|-11|0|28|Bq|-11|9 +024002|estimatedMaximumPotentialRelease|long|ESTIMATED MAXIMUM POTENTIAL RELEASE|Bq|-11|0|28|Bq|-11|9 +024003|compositionOfRelease|table|COMPOSITION OF RELEASE|CODE TABLE|0|0|5|CODE TABLE|0|2 +024004|elementName|string|ELEMENT NAME|CCITT IA5|0|0|16|Character|0|2 +024005|isotopeMass|long|ISOTOPE MASS|Numeric|0|0|9|Numeric|0|3 +024011|dose|double|DOSE|mSv|2|0|32|mSv|2|10 +024012|trajectoryDoseDefinedLocationAndExpectedTimeOfArrival|double|TRAJECTORY DOSE (DEFINED LOCATION AND EXPECTED TIME OF ARRIVAL)|mSv|2|0|32|mSv|2|10 +024013|gammaDoseInAirAlongMainTransportPathDefinedLocationAndTimePeriod|double|GAMMA DOSE IN AIR ALONG THE MAIN TRANSPORT PATH (DEFINED LOCATION AND TIME PERIOD)|mSv|2|0|32|mSv|2|10 +024014|gammaRadiationDoseRate|double|GAMMA RADIATION DOSE RATE|nSv/h|1|0|14|nSv/h|1|4 +024021|airConcentrationOfNamedIsotopeTypeIncludingGrossBeta|double|AIR CONCENTRATION (OF NAMED ISOTOPE TYPE INCLUDING GROSS BETA)|Bq m-3|2|0|32|Bq m-3|2|10 +024022|concentrationInPrecipitationOfNamedIsotopeType|double|CONCENTRATION IN PRECIPITATION (OF NAMED ISOTOPE TYPE)|Bq/l|2|0|32|Bq/l|2|10 +024023|pulseRateOfBetaRadiation|double|PULSE RATE OF BETA RADIATION|/s|1|0|14|/s|1|4 +024024|pulseRateOfGammaRadiation|double|PULSE RATE OF GAMMA RADIATION|/s|1|0|14|/s|1|4 +025001|rangeGateLength|long|RANGE-GATE LENGTH|m|-1|0|6|m|-1|2 +025002|numberOfGatesAveraged|long|NUMBER OF GATES AVERAGED|Numeric|0|0|4|Numeric|0|2 +025003|numberOfIntegratedPulses|long|NUMBER OF INTEGRATED PULSES|Numeric|0|0|8|Numeric|0|3 +025004|echoProcessing|table|ECHO PROCESSING|CODE TABLE|0|0|2|CODE TABLE|0|1 +025005|echoIntegration|table|ECHO INTEGRATION|CODE TABLE|0|0|2|CODE TABLE|0|1 +025006|zToRConversion|table|Z TO R CONVERSION|CODE TABLE|0|0|3|CODE TABLE|0|1 +025007|zToRConversionFactor|long|Z TO R CONVERSION FACTOR|Numeric|0|0|12|Numeric|0|4 +025008|zToRConversionExponent|long|Z TO R CONVERSION EXPONENT|Numeric|2|0|9|Numeric|2|3 +025009|calibrationMethod|flag|CALIBRATION METHOD|FLAG TABLE|0|0|4|FLAG TABLE|0|2 +025010|clutterTreatment|table|CLUTTER TREATMENT|CODE TABLE|0|0|4|CODE TABLE|0|2 +025011|groundOccultationCorrectionScreening|table|GROUND OCCULTATION CORRECTION (SCREENING)|CODE TABLE|0|0|2|CODE TABLE|0|1 +025012|rangeAttenuationCorrection|table|RANGE ATTENUATION CORRECTION|CODE TABLE|0|0|2|CODE TABLE|0|1 +025013|brightBandCorrection|flag|BRIGHT-BAND CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1 +025014|azimuthClutterCutOff|long|AZIMUTH CLUTTER CUT-OFF|Numeric|0|0|12|Numeric|0|4 +025015|radomeAttenuationCorrection|flag|RADOME ATTENUATION CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1 +025016|clearAirAttenuationCorrection|double|CLEAR-AIR ATTENUATION CORRECTION|dB/m|5|0|6|dB/m|5|2 +025017|precipitationAttenuationCorrection|flag|PRECIPITATION ATTENUATION CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1 +025018|aToZLawForAttenuationFactor|long|A TO Z LAW FOR ATTENUATION FACTOR|Numeric|7|0|6|Numeric|7|2 +025019|aToZLawForAttenuationExponent|long|A TO Z LAW FOR ATTENUATION EXPONENT|Numeric|2|0|7|Numeric|2|3 +025020|meanSpeedEstimation|table|MEAN SPEED ESTIMATION|CODE TABLE|0|0|2|CODE TABLE|0|1 +025021|windComputationEnhancement|flag|WIND COMPUTATION ENHANCEMENT|FLAG TABLE|0|0|8|FLAG TABLE|0|3 +025022|ghrsstRejectionFlag|flag|GHRSST* REJECTION FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +025023|ghrsstConfidenceFlag|flag|GHRSST CONFIDENCE FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +025024|ghrsstDataQuality|table|GHRSST DATA QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2 +025025|batteryVoltage|double|BATTERY VOLTAGE|V|1|0|9|V|1|3 +025026|batteryVoltageLargeRange|double|BATTERY VOLTAGE (LARGE RANGE)|V|1|0|12|V|1|4 +025028|operatorOrManufacturerDefinedParameter|long|OPERATOR OR MANUFACTURER DEFINED PARAMETER|Numeric|1|-16384|15|Numeric|1|5 +025029|calibrationMethod|flag|CALIBRATION METHOD|FLAG TABLE|0|0|6|FLAG TABLE|0|2 +025030|runningMeanSeaSurfaceTemperatureUsage|table|RUNNING MEAN SEA-SURFACE TEMPERATURE USAGE|CODE TABLE|0|0|2|CODE TABLE|0|1 +025031|nwpGeneratedVerticalProfileThinningMethod|table|NWP-GENERATED VERTICAL PROFILE THINNING METHOD|CODE TABLE|0|0|3|CODE TABLE|0|1 +025032|windProfilerModeInformation|table|WIND PROFILER MODE INFORMATION|CODE TABLE|0|0|2|CODE TABLE|0|1 +025033|windProfilerSubmodeInformation|table|WIND PROFILER SUBMODE INFORMATION|CODE TABLE|0|0|2|CODE TABLE|0|1 +025034|windProfilerQualityControlTestResults|flag|WIND PROFILER QUALITY CONTROL TEST RESULTS|FLAG TABLE|0|0|4|FLAG TABLE|0|2 +025035|decisionMethodForPolarity|table|DECISION METHOD FOR POLARITY|CODE TABLE|0|0|3|CODE TABLE|0|1 +025036|atmosphericsLocationMethod|table|ATMOSPHERICS LOCATION METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2 +025037|sstBias|double|SST BIAS|K|2|-127|8|K|2|3 +025038|differenceBetweenSstAndAnalysis|double|DIFFERENCE BETWEEN SST AND ANALYSIS|K|1|-127|8|K|1|3 +025040|co2WindProductDerivation|table|CO2 WIND PRODUCT DERIVATION|CODE TABLE|0|0|4|CODE TABLE|0|2 +025041|movingPlatformDirectionReportingMethod|table|MOVING PLATFORM DIRECTION REPORTING METHOD|CODE TABLE|0|0|2|CODE TABLE|0|1 +025042|movingPlatformSpeedReportingMethod|table|MOVING PLATFORM SPEED REPORTING METHOD|CODE TABLE|0|0|2|CODE TABLE|0|1 +025043|waveSamplingIntervalTime|double|WAVE SAMPLING INTERVAL (TIME)|s|4|0|15|s|4|5 +025044|waveSamplingIntervalSpace|double|WAVE SAMPLING INTERVAL (SPACE)|m|2|0|14|m|2|5 +025045|hirsChannelCombination|flag|HIRS CHANNEL COMBINATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7 +025046|msuChannelCombination|flag|MSU CHANNEL COMBINATION|FLAG TABLE|0|0|5|FLAG TABLE|0|2 +025047|ssuChannelCombination|flag|SSU CHANNEL COMBINATION|FLAG TABLE|0|0|4|FLAG TABLE|0|2 +025048|amsuAChannelCombination|flag|AMSU-A CHANNEL COMBINATION|FLAG TABLE|0|0|16|FLAG TABLE|0|6 +025049|amsuBChannelCombination|flag|AMSU-B CHANNEL COMBINATION|FLAG TABLE|0|0|6|FLAG TABLE|0|2 +025050|principalComponentScore|long|PRINCIPAL COMPONENT SCORE|Numeric|4|-131072|18|Numeric|4|6 +025051|avhrrChannelCombination|flag|AVHRR CHANNEL COMBINATION|FLAG TABLE|0|0|7|FLAG TABLE|0|3 +025052|log10OfPrincipalComponentsNormalizedFitToData|long|LOG10 OF PRINCIPAL COMPONENTS NORMALIZED FIT TO DATA|Numeric|4|0|15|Numeric|4|5 +025053|observationQuality|flag|OBSERVATION QUALITY|FLAG TABLE|0|0|12|FLAG TABLE|0|4 +025054|ssmisSubframeIdNumber|long|SSMIS SUBFRAME ID NUMBER|Numeric|0|0|5|Numeric|0|2 +025055|multiplexerHousekeeping|double|MULTIPLEXER HOUSEKEEPING|K|2|0|16|K|2|5 +025060|softwareIdentification|long|SOFTWARE IDENTIFICATION|Numeric|0|0|14|Numeric|0|5 +025061|softwareVersionNumber|string|SOFTWARE IDENTIFICATION AND VERSION NUMBER|CCITT IA5|0|0|96|Character|0|12 +025062|databaseIdentification|long|DATABASE IDENTIFICATION|Numeric|0|0|14|Numeric|0|5 +025063|SystemIdentifier|table|CENTRAL PROCESSOR OR SYSTEM IDENTIFIER|CODE TABLE|0|0|8|CODE TABLE|0|3 +025065|orientationCorrectionAzimuth|double|ORIENTATION CORRECTION (AZIMUTH)|deg|2|-1000|11|deg|2|4 +025066|orientationCorrectionElevation|double|ORIENTATION CORRECTION (ELEVATION)|deg|2|-1000|11|deg|2|4 +025067|radiosondeReleasePointPressureCorrection|long|RADIOSONDE RELEASE POINT PRESSURE CORRECTION|Pa|0|-8000|14|Pa|0|4 +025068|numberOfArchiveRecomputes|long|NUMBER OF ARCHIVE RECOMPUTES|Numeric|0|0|7|Numeric|0|3 +025069|flightLevelPressureCorrections|flag|FLIGHT LEVEL PRESSURE CORRECTIONS|FLAG TABLE|0|0|8|FLAG TABLE|0|3 +025070|majorFrameCount|long|MAJOR FRAME COUNT|Numeric|0|0|4|Numeric|0|2 +025071|frameCount|long|FRAME COUNT|Numeric|0|0|5|Numeric|0|2 +025075|satelliteAntennaCorrectionsVersionNumber|long|SATELLITE ANTENNA CORRECTIONS VERSION NUMBER|Numeric|0|0|5|Numeric|0|2 +025076|log10OfTemperatureRadianceCentralWaveNumberForAtovs|double|LOG10 OF (TEMPERATURE-RADIANCE CENTRAL WAVE NUMBER) FOR ATOVS|log (m-1)|8|0|30|log (m-1)|8|10 +025077|bandwidthCorrectionCoefficient1|long|BANDWIDTH CORRECTION COEFFICIENT 1|Numeric|5|-100000|18|Numeric|5|7 +025078|bandwidthCorrectionCoefficient2|long|BANDWIDTH CORRECTION COEFFICIENT 2|Numeric|5|0|17|Numeric|5|6 +025079|albedoRadianceSolarFilteredIrradianceForAtovs|double|ALBEDO-RADIANCE SOLAR FILTERED IRRADIANCE FOR ATOVS|W m-2|4|0|24|W m-2|4|8 +025080|albedoRadianceEquivalentFilterWidthForAtovs|double|ALBEDO-RADIANCE EQUIVALENT FILTER WIDTH FOR ATOVS|m|10|0|14|m|10|5 +025081|incidenceAngle|double|INCIDENCE ANGLE|deg|3|0|17|deg|3|6 +025082|azimuthAngle|double|AZIMUTH ANGLE|deg|3|0|19|deg|3|6 +025083|faradayRotationalAngle|double|FARADAY ROTATIONAL ANGLE|deg|3|0|19|deg|3|6 +025084|geometricRotationalAngle|double|GEOMETRIC ROTATIONAL ANGLE|deg|5|0|26|deg|5|8 +025085|fractionOfClearPixelsInHirsFov|long|FRACTION OF CLEAR PIXELS IN HIRS FOV|Numeric|0|0|7|Numeric|0|3 +025086|depthCorrectionIndicator|table|DEPTH CORRECTION INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1 +025090|orbitStateFlag|table|ORBIT STATE FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2 +025091|structureConstantOfRefractionIndexCn2|double|STRUCTURE CONSTANT OF THE REFRACTION INDEX (CN2)|dB|3|-18192|13|dB|3|5 +025092|acousticPropagationVelocity|double|ACOUSTIC PROPAGATION VELOCITY|m/s|2|28000|14|m/s|2|5 +025093|rassComputationCorrection|flag|RASS COMPUTATION CORRECTION|FLAG TABLE|0|0|8|FLAG TABLE|0|3 +025095|altimeterStateFlag|flag|ALTIMETER STATE FLAG|FLAG TABLE|0|0|2|FLAG TABLE|0|1 +025096|radiometerStateFlag|flag|RADIOMETER STATE FLAG|FLAG TABLE|0|0|5|FLAG TABLE|0|2 +025097|threeDimensionalErrorEstimateOfNavigatorOrbit|table|THREE-DIMENSIONAL ERROR ESTIMATE OF THE NAVIGATOR ORBIT|CODE TABLE|0|0|4|CODE TABLE|0|2 +025098|altimeterDataQualityFlag|flag|ALTIMETER DATA QUALITY FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +025099|altimeterCorrectionQualityFlag|flag|ALTIMETER CORRECTION QUALITY FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +025100|xbtOrXctdFallRateEquationCoefficientA|long|XBT/XCTD FALL RATE EQUATION COEFFICIENT A|Numeric|5|0|20|Numeric|5|6 +025101|xbtOrXctdFallRateEquationCoefficientB|long|XBT/XCTD FALL RATE EQUATION COEFFICIENT B|Numeric|5|-500000|21|Numeric|5|6 +025102|numberOfMissingLinesExcludingDataGaps|long|NUMBER OF MISSING LINES EXCLUDING DATA GAPS|Numeric|0|0|8|Numeric|0|3 +025103|numberOfDirectionalBins|long|NUMBER OF DIRECTIONAL BINS|Numeric|0|0|8|Numeric|0|3 +025104|numberOfWavelengthBins|long|NUMBER OF WAVELENGTH BINS|Numeric|0|0|8|Numeric|0|3 +025105|firstDirectionalBin|double|FIRST DIRECTIONAL BIN|deg|3|0|19|deg|3|6 +025106|directionalBinStep|double|DIRECTIONAL BIN STEP|deg|3|0|19|deg|3|6 +025107|firstWavelengthBin|double|FIRST WAVELENGTH BIN|m|3|0|29|m|3|9 +025108|lastWavelengthBin|double|LAST WAVELENGTH BIN|m|3|0|29|m|3|9 +025110|imageProcessingSummary|flag|IMAGE PROCESSING SUMMARY|FLAG TABLE|0|0|10|FLAG TABLE|0|4 +025111|numberOfInputDataGaps|long|NUMBER OF INPUT DATA GAPS|Numeric|0|0|8|Numeric|0|3 +025112|bandSpecificAltimeterDataQualityFlag|flag|BAND SPECIFIC ALTIMETER DATA QUALITY FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +025113|bandSpecificAltimeterCorrectionQualityFlag|flag|BAND SPECIFIC ALTIMETER CORRECTION QUALITY FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +025120|ra2L2ProcessingFlag|table|RA2-L2-PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1 +025121|ra2L2ProcessingQuality|long|RA2-L2-PROCESSING QUALITY|%|0|0|7|%|0|3 +025122|hardwareConfigurationForRf|table|HARDWARE CONFIGURATION FOR RF|CODE TABLE|0|0|2|CODE TABLE|0|1 +025123|hardwareConfigurationForHpa|table|HARDWARE CONFIGURATION FOR HPA|CODE TABLE|0|0|2|CODE TABLE|0|1 +025124|mwrL2ProcessingFlag|table|MWR-L2-PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1 +025125|mwrL2ProcessingQuality|long|MWR-L2-PROCESSING QUALITY|%|0|0|7|%|0|3 +025126|modelDryTroposphericCorrection|double|MODEL DRY TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5 +025127|invertedBarometerCorrection|double|INVERTED BAROMETER CORRECTION|m|3|-32768|16|m|3|5 +025128|modelWetTroposphericCorrection|double|MODEL WET TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5 +025129|mwrDerivedWetTroposphericCorrection|double|MWR DERIVED WET TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5 +025130|ra2IonosphericCorrectionOnKuBand|double|RA2 IONOSPHERIC CORRECTION ON KU BAND|m|3|-32768|16|m|3|5 +025131|ionosphericCorrectionFromDorisOnKuBand|double|IONOSPHERIC CORRECTION FROM DORIS ON KU BAND|m|3|-32768|16|m|3|5 +025132|ionosphericCorrectionFromModelOnKuBand|double|IONOSPHERIC CORRECTION FROM MODEL ON KU BAND|m|3|-32768|16|m|3|5 +025133|seaStateBiasCorrectionOnKuBand|double|SEA STATE BIAS CORRECTION ON KU BAND|m|3|-32768|16|m|3|5 +025134|ra2IonosphericCorrectionOnSBand|double|RA2 IONOSPHERIC CORRECTION ON S BAND|m|3|-32768|16|m|3|5 +025135|ionosphericCorrectionFromDorisOnSBand|double|IONOSPHERIC CORRECTION FROM DORIS ON S BAND|m|3|-32768|16|m|3|5 +025136|ionosphericCorrectionFromModelOnSBand|double|IONOSPHERIC CORRECTION FROM MODEL ON S BAND|m|3|-32768|16|m|3|5 +025137|seaStateBiasCorrectionOnSBand|double|SEA STATE BIAS CORRECTION ON S BAND|m|3|-32768|16|m|3|5 +025138|averageSignalToNoiseRatio|long|AVERAGE SIGNAL-TO-NOISE RATIO|Numeric|0|-2048|12|Numeric|0|4 +025140|startChannel|long|START CHANNEL|Numeric|0|0|14|Numeric|0|5 +025141|endChannel|long|END CHANNEL|Numeric|0|0|14|Numeric|0|5 +025142|channelScaleFactor|long|CHANNEL SCALE FACTOR|Numeric|0|0|6|Numeric|0|2 +025143|linearCoefficient|long|LINEAR COEFFICIENT|Numeric|6|-5000000|24|Numeric|6|8 +025148|coefficientOfVariation|long|COEFFICIENT OF VARIATION|Numeric|2|-10000|15|Numeric|2|5 +025149|optimalEstimationCost|long|OPTIMAL ESTIMATION COST|Numeric|0|0|8|Numeric|0|3 +025150|methodOfTropicalCycloneIntensityAnalysisUsingSatelliteData|table|METHOD OF TROPICAL CYCLONE INTENSITY ANALYSIS USING SATELLITE DATA|CODE TABLE|0|0|4|CODE TABLE|0|2 +025160|kuBandNetInstrumentalCorrection|double|KU BAND NET INSTRUMENTAL CORRECTION|m|4|-120000|18|m|4|6 +025161|cBandNetInstrumentalCorrection|double|C BAND NET INSTRUMENTAL CORRECTION|m|4|-120000|18|m|4|6 +025162|seaStateBiasCorrectionOnCBand|double|SEA STATE BIAS CORRECTION ON C BAND|m|4|-6000|13|m|4|4 +025163|altimeterIonosphericCorrectionOnKuBand|double|ALTIMETER IONOSPHERIC CORRECTION ON KU BAND|m|3|-32768|16|m|3|5 +025164|radiometerWetTroposphericCorrection|double|RADIOMETER WET TROPOSPHERIC CORRECTION|m|4|-5000|13|m|4|4 +025165|ionosphericCorrectionFromModelOnSpecificBand|double|IONOSPHERIC CORRECTION FROM MODEL ON SPECIFIC BAND|m|4|-32768|16|m|4|5 +025166|seaStateBiasCorrectionOnSpecificBand|double|SEA STATE BIAS CORRECTION ON SPECIFIC BAND|m|4|-32768|16|m|4|5 +025167|specificBandNetInstrumentalCorrection|double|SPECIFIC BAND NET INSTRUMENTAL CORRECTION|m|4|-120000|18|m|4|6 +025170|samplingIntervalTime|long|SAMPLING INTERVAL (TIME)|s|0|0|10|s|0|4 +025171|sampleAveragingPeriod|long|SAMPLE AVERAGING PERIOD|s|0|0|10|s|0|4 +025172|numberOfSamples|long|NUMBER OF SAMPLES|Numeric|0|0|10|Numeric|0|4 +025174|smosInformationFlag|flag|SMOS INFORMATION FLAG|FLAG TABLE|0|0|14|FLAG TABLE|0|5 +025175|modifiedResidual|long|MODIFIED RESIDUAL|Numeric|2|0|13|Numeric|2|4 +025180|lrmPercent|double|LRM* PER CENT|%|2|0|16|%|2|5 +025181|l2ProcessingFlag|table|L2 PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1 +025182|l1ProcessingFlag|table|L1 PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1 +025183|l1ProcessingQuality|double|L1 PROCESSING QUALITY|%|2|0|14|%|2|5 +025184|l2ProductStatus|table|L2 PRODUCT STATUS|CODE TABLE|0|0|2|CODE TABLE|0|1 +025185|encryptionMethod|table|ENCRYPTION METHOD|CODE TABLE|0|0|8|CODE TABLE|0|3 +025186|encryptionKeyVersion|string|ENCRYPTION KEY VERSION|CCITT IA5|0|0|96|Character|0|12 +025187|confidenceFlag|table|CONFIDENCE FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2 +025188|methodForReducingPressureToSeaLevel|table|METHOD FOR REDUCING PRESSURE TO SEA LEVEL|CODE TABLE|0|0|5|CODE TABLE|0|2 +025189|rangeCutOffWavelength|long|RANGE CUT-OFF WAVELENGTH|m|0|1|9|m|0|3 +025190|altimeterEchoProcessingMode|table|ALTIMETER ECHO PROCESSING MODE|CODE TABLE|0|0|8|CODE TABLE|0|3 +025191|altimeterTrackingMode|table|ALTIMETER TRACKING MODE|CODE TABLE|0|0|8|CODE TABLE|0|3 +026001|principalTimeOfDailyReadingInUtcOfMaximumTemperature|double|PRINCIPAL TIME OF DAILY READING IN UTC OF MAXIMUM TEMPERATURE|h|1|0|12|h|1|3 +026002|principalTimeOfDailyReadingInUtcOfMinimumTemperature|double|PRINCIPAL TIME OF DAILY READING IN UTC OF MINIMUM TEMPERATURE|h|1|0|12|h|1|3 +026003|timeDifference|long|TIME DIFFERENCE|min|0|-1440|12|min|0|4 +026010|hoursIncluded|flag|HOURS INCLUDED|FLAG TABLE|0|0|26|FLAG TABLE|0|9 +026020|durationOfPrecipitation|long|DURATION OF PRECIPITATION|min|0|0|11|min|0|4 +026021|nonCoordinateYear|long|YEAR|a|0|0|12|a|0|4 +026022|nonCoordinateMonth|long|MONTH|mon|0|0|4|mon|0|2 +026023|nonCoordinateDay|long|DAY|d|0|0|6|d|0|2 +026030|measurementIntegrationTime|double|MEASUREMENT INTEGRATION TIME|s|2|0|8|s|2|3 +027001|nonCoordinateLatitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7 +027002|nonCoordinateLatitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4 +027003|alternateLatitude|double|ALTERNATE LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4 +027004|alternateLatitude|double|ALTERNATE LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7 +027010|footprintAxis1|long|FOOTPRINT AXIS 1|m|-1|0|14|m|-1|5 +027020|satelliteLocationCounter|long|SATELLITE LOCATION COUNTER|Numeric|0|0|16|Numeric|0|5 +027021|satelliteSublocationDimension|long|SATELLITE SUBLOCATION DIMENSION|Numeric|0|0|16|Numeric|0|5 +027031|DistanceFromEarthCentreInDirectionOf0DegreesLongitude|double|IN DIRECTION OF 0 DEGREES LONGITUDE, DISTANCE FROM THE EARTH'S CENTRE|m|2|-1073741824|31|m|2|10 +027079|horizontalWidthOfSampledVolume|long|HORIZONTAL WIDTH OF SAMPLED VOLUME|m|0|0|18|m|0|6 +027080|viewingAzimuthAngle|double|VIEWING AZIMUTH ANGLE|deg|2|0|16|deg|0|5 +028001|nonCoordinateLongitude|double|LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8 +028002|nonCoordinateLongitude|double|LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5 +028003|alternateLongitude|double|ALTERNATE LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5 +028004|alternateLongitude|double|ALTERNATE LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8 +028010|footprintAxis2|long|FOOTPRINT AXIS 2|m|-1|0|14|m|-1|5 +028031|DistanceFromEarthCentreInDirection90DegreesEast|double|IN DIRECTION 90 DEGREES EAST, DISTANCE FROM THE EARTH'S CENTRE|m|2|-1073741824|31|m|2|10 +029001|projectionType|table|PROJECTION TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1 +029002|coordinateGridType|table|COORDINATE GRID TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1 +029014|optionalListOfParametersForAnExternalMapProjectionLibrary|string|OPTIONAL LIST OF PARAMETERS FOR AN EXTERNAL MAP PROJECTION LIBRARY|CCITT IA5|0|0|504|Character|0|63 +030001|pixelValue4Bits|long|PIXEL VALUE (4 BITS)|Numeric|0|0|4|Numeric|0|2 +030002|pixelValue8Bits|long|PIXEL VALUE (8 BITS)|Numeric|0|0|8|Numeric|0|3 +030004|pixelValue16Bits|long|PIXEL VALUE (16 BITS)|Numeric|0|0|16|Numeric|0|5 +030010|numberOfGridPoints|long|NUMBER OF GRID POINTS|Numeric|0|0|13|Numeric|0|4 +030021|numberOfPixelsPerRow|long|NUMBER OF PIXELS PER ROW|Numeric|0|0|12|Numeric|0|4 +030022|numberOfPixelsPerColumn|long|NUMBER OF PIXELS PER COLUMN|Numeric|0|0|12|Numeric|0|4 +030031|pictureType|table|PICTURE TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2 +030032|combinationWithOtherData|flag|COMBINATION WITH OTHER DATA|FLAG TABLE|0|0|16|FLAG TABLE|0|6 +030033|numberOfBinsAlongRadial|long|NUMBER OF BINS ALONG THE RADIAL|Numeric|0|0|12|Numeric|0|4 +030034|numberOfAzimuths|long|NUMBER OF AZIMUTHS|Numeric|0|0|12|Numeric|0|4 +031000|shortDelayedDescriptorReplicationFactor|long|SHORT DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|1|NA|0|0 +031001|delayedDescriptorReplicationFactor|long|DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|8|NA|0|0 +031002|extendedDelayedDescriptorReplicationFactor|long|EXTENDED DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|16|NA|0|0 +031011|delayedDescriptorAndDataRepetitionFactor|long|DELAYED DESCRIPTOR AND DATA REPETITION FACTOR|Numeric|0|0|8|NA|0|0 +031012|extendedDelayedDescriptorAndDataRepetitionFactor|long|EXTENDED DELAYED DESCRIPTOR AND DATA REPETITION FACTOR|Numeric|0|0|16|NA|0|0 +031021|associatedFieldSignificance|table|ASSOCIATED FIELD SIGNIFICANCE|CODE TABLE|0|0|6|NA|0|0 +031031|dataPresentIndicator|flag|DATA PRESENT INDICATOR|FLAG TABLE|0|0|1|NA|0|0 +033002|qualityInformation|table|QUALITY INFORMATION|CODE TABLE|0|0|2|CODE TABLE|0|1 +033003|qualityInformation|table|QUALITY INFORMATION|CODE TABLE|0|0|3|CODE TABLE|0|1 +033005|qualityInformationAwsData|flag|QUALITY INFORMATION (AWS DATA)|FLAG TABLE|0|0|30|FLAG TABLE|0|10 +033006|internalMeasurementStatusInformationAws|table|INTERNAL MEASUREMENT STATUS INFORMATION (AWS)|CODE TABLE|0|0|3|CODE TABLE|0|1 +033007|percentConfidence|long|PER CENT CONFIDENCE|%|0|0|7|%|0|3 +033015|dataQualityCheckIndicator|table|DATA QUALITY-CHECK INDICATOR|CODE TABLE|0|0|6|CODE TABLE|0|2 +033020|qualityControlIndicationOfFollowingValue|table|QUALITY CONTROL INDICATION OF FOLLOWING VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1 +033021|qualityOfFollowingValue|table|QUALITY OF FOLLOWING VALUE|CODE TABLE|0|0|2|CODE TABLE|0|1 +033022|qualityOfBuoySatelliteTransmission|table|QUALITY OF BUOY SATELLITE TRANSMISSION|CODE TABLE|0|0|2|CODE TABLE|0|1 +033023|qualityOfBuoyLocation|table|QUALITY OF BUOY LOCATION|CODE TABLE|0|0|2|CODE TABLE|0|1 +033024|stationElevationQualityMarkForMobileStations|table|STATION ELEVATION QUALITY MARK (FOR MOBILE STATIONS)|CODE TABLE|0|0|4|CODE TABLE|0|2 +033025|acarsInterpolatedValuesIndicator|table|ACARS INTERPOLATED VALUES INDICATOR|CODE TABLE|0|0|3|CODE TABLE|0|1 +033026|moistureQuality|table|MOISTURE QUALITY|CODE TABLE|0|0|6|CODE TABLE|0|2 +033027|locationQualityClassRangeOfRadiusOf66Confidence|table|LOCATION QUALITY CLASS (RANGE OF RADIUS OF 66 % CONFIDENCE)|CODE TABLE|0|0|3|CODE TABLE|0|1 +033028|snapshotOverallQuality|table|SNAPSHOT OVERALL QUALITY|CODE TABLE|0|0|3|CODE TABLE|0|1 +033030|scanLineStatusFlagsForAtovs|flag|SCAN LINE STATUS FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8 +033031|scanLineQualityFlagsForAtovs|flag|SCAN LINE QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8 +033032|channelQualityFlagsForAtovs|flag|CHANNEL QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8 +033033|fieldOfViewQualityFlagsForAtovs|flag|FIELD OF VIEW QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8 +033035|qualityControl|table|MANUAL/AUTOMATIC QUALITY CONTROL|CODE TABLE|0|0|4|CODE TABLE|0|2 +033036|nominalConfidenceThreshold|long|NOMINAL CONFIDENCE THRESHOLD|%|0|0|7|%|0|3 +033037|windCorrelationError|flag|WIND CORRELATION ERROR|FLAG TABLE|0|0|20|FLAG TABLE|0|7 +033038|qualityFlagsForGroundBasedGnssData|flag|QUALITY FLAGS FOR GROUND-BASED GNSS DATA|FLAG TABLE|0|0|10|FLAG TABLE|0|4 +033039|radioOccultationDataQualityFlags|flag|QUALITY FLAGS FOR RADIO OCCULTATION DATA|FLAG TABLE|0|0|16|FLAG TABLE|0|6 +033040|confidenceInterval|long|CONFIDENCE INTERVAL|%|0|0|7|%|0|3 +033041|attributeOfFollowingValue|table|ATTRIBUTE OF FOLLOWING VALUE|CODE TABLE|0|0|2|CODE TABLE|0|1 +033042|typeOfLimitRepresentedByFollowingValue|table|TYPE OF LIMIT REPRESENTED BY FOLLOWING VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1 +033043|astConfidence|flag|AST CONFIDENCE|FLAG TABLE|0|0|8|FLAG TABLE|0|3 +033044|asarQualityInformation|flag|ASAR QUALITY INFORMATION|FLAG TABLE|0|0|15|FLAG TABLE|0|5 +033045|probabilityOfFollowingEvent|long|PROBABILITY OF FOLLOWING EVENT|%|0|0|7|%|0|3 +033046|conditionalProbability|long|CONDITIONAL PROBABILITY OF FOLLOWING EVENT WITH RESPECT TO SPECIFIED CONDITIONING EVENT|%|0|0|7|%|0|3 +033047|measurementConfidenceData|flag|MEASUREMENT CONFIDENCE DATA|FLAG TABLE|0|0|31|FLAG TABLE|0|11 +033048|confidenceMeasureOfSarInversion|table|CONFIDENCE MEASURE OF SAR INVERSION|CODE TABLE|0|0|2|CODE TABLE|0|1 +033049|confidenceMeasureOfWindRetrieval|table|CONFIDENCE MEASURE OF WIND RETRIEVAL|CODE TABLE|0|0|2|CODE TABLE|0|1 +033050|globalGtsppQualityFlag|table|GLOBAL GTSPP QUALITY FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2 +033052|sBandOceanRetrackingQuality|flag|S BAND OCEAN RETRACKING QUALITY|FLAG TABLE|0|0|21|FLAG TABLE|0|7 +033053|kuBandOceanRetrackingQuality|flag|KU BAND OCEAN RETRACKING QUALITY|FLAG TABLE|0|0|21|FLAG TABLE|0|7 +033060|gqisFlagQual|table|GQISFLAGQUAL - INDIVIDUAL IASI-SYSTEM QUALITY FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1 +033061|gqisQualIndex|long|GQISQUALINDEX - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE (CONTRIBUTIONS FROM SPECTRAL AND RADIOMETRIC CALIBRATION)|%|0|0|7|%|0|3 +033062|gqisQualIndexLoc|long|GQISQUALINDEXLOC - INDICATOR FOR GEOMETRIC QUALITY INDEX|%|0|0|7|%|0|3 +033063|gqisQualIndexRad|long|GQISQUALINDEXRAD - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE (CONTRIBUTIONS FROM RADIOMETRIC CALIBRATION)|%|0|0|7|%|0|3 +033064|gqisQualIndexSpect|long|GQISQUALINDEXSPECT - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE (CONTRIBUTIONS FROM SPECTRAL CALIBRATION)|%|0|0|7|%|0|3 +033065|gqisSysTecQual|long|GQISSYSTECSONDQUAL - OUTPUT OF SYSTEM TEC (TECHNICAL EXPERTISE CENTRE) QUALITY FUNCTION|Numeric|0|0|24|Numeric|0|8 +033066|amvQualityFlag|flag|AMV QUALITY FLAG|FLAG TABLE|0|0|24|FLAG TABLE|0|8 +033070|totalOzoneQuality|table|TOTAL OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2 +033071|profileOzoneQuality|table|PROFILE OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2 +033072|ozoneError|table|OZONE ERROR|CODE TABLE|0|0|5|CODE TABLE|0|2 +033075|scanLevelQualityFlags|flag|SCAN-LEVEL QUALITY FLAGS|FLAG TABLE|0|0|13|FLAG TABLE|0|5 +033076|calibrationQualityFlags|flag|CALIBRATION QUALITY FLAGS|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +033077|fieldOfViewQualityFlags|flag|FIELD-OF-VIEW QUALITY FLAGS|FLAG TABLE|0|0|19|FLAG TABLE|0|7 +033078|geolocationQuality|table|GEOLOCATION QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2 +033079|granuleLevelQualityFlags|flag|GRANULE LEVEL QUALITY FLAGS|FLAG TABLE|0|0|16|FLAG TABLE|0|6 +033080|scanLevelQualityFlags|flag|SCAN LEVEL QUALITY FLAGS|FLAG TABLE|0|0|20|FLAG TABLE|0|7 +033081|channelDataQualityFlags|flag|CHANNEL DATA QUALITY FLAGS|FLAG TABLE|0|0|12|FLAG TABLE|0|4 +033082|geolocationQualityFlags|flag|GEOLOCATION QUALITY FLAGS|FLAG TABLE|0|0|16|FLAG TABLE|0|6 +033083|radianceDataQualityFlags|flag|RADIANCE DATA QUALITY FLAGS|FLAG TABLE|0|0|16|FLAG TABLE|0|6 +033084|pixelLevelQualityFlags|flag|PIXEL LEVEL QUALITY FLAGS|FLAG TABLE|0|0|16|FLAG TABLE|0|6 +033085|aerosolOpticalThicknessQualityFlags|flag|AEROSOL OPTICAL THICKNESS QUALITY FLAGS|FLAG TABLE|0|0|18|FLAG TABLE|0|6 +033086|qualityOfPixelLevelRetrieval|table|QUALITY OF PIXEL LEVEL RETRIEVAL|CODE TABLE|0|0|3|CODE TABLE|0|1 +033087|extentOfSatelliteWithinSouthAtlanticAnomalyBasedOnClimatologicalData|table|EXTENT OF SATELLITE WITHIN SOUTH ATLANTIC ANOMALY (BASED ON CLIMATOLOGICAL DATA)|CODE TABLE|0|0|4|CODE TABLE|0|1 +033088|ozoneTotalColumnQualityFlag|flag|OZONE TOTAL COLUMN QUALITY FLAG|FLAG TABLE|0|0|18|FLAG TABLE|0|6 +033089|noiseEquivalentDeltaTemperatureNedtQualityIndicatorsForWarmTargetCalibration|double|NOISE EQUIVALENT DELTA TEMPERATURE (NEDT) QUALITY INDICATORS FOR WARM TARGET CALIBRATION|K|2|0|12|K|2|4 +033090|nedtQualityIndicatorsForColdTargetCalibration|double|NEDT QUALITY INDICATORS FOR COLD TARGET CALIBRATION|K|2|0|12|K|2|4 +033091|nedtQualityIndicatorsForOverallCalibration|double|NEDT QUALITY INDICATORS FOR OVERALL CALIBRATION|K|2|0|12|K|2|4 +033092|bandSpecificOceanQualityFlag|flag|BAND SPECIFIC OCEAN QUALITY FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +035000|fmAndRegionalCodeNumber|table|FM AND REGIONAL CODE NUMBER|CODE TABLE|0|0|10|CODE TABLE|0|3 +035001|timeFrameForMonitoring|table|TIME FRAME FOR MONITORING|CODE TABLE|0|0|3|CODE TABLE|0|1 +035011|numberOfReportsActuallyReceived|long|NUMBER OF REPORTS ACTUALLY RECEIVED|Numeric|0|0|14|Numeric|0|4 +035021|bulletinBeingMonitoredTtaaii|string|BULLETIN BEING MONITORED (TTAAII)|CCITT IA5|0|0|48|Character|0|6 +035022|bulletinBeingMonitoredYygggg|string|BULLETIN BEING MONITORED (YYGGGG)|CCITT IA5|0|0|48|Character|0|6 +035023|bulletinBeingMonitoredCccc|string|BULLETIN BEING MONITORED (CCCC)|CCITT IA5|0|0|32|Character|0|4 +035024|bulletinBeingMonitoredBbb|string|BULLETIN BEING MONITORED (BBB)|CCITT IA5|0|0|24|Character|0|3 +035030|discrepanciesInAvailabilityOfExpectedData|table|DISCREPANCIES IN THE AVAILABILITY OF EXPECTED DATA|CODE TABLE|0|0|4|CODE TABLE|0|1 +035031|qualifierOnMonitoringResults|table|QUALIFIER ON MONITORING RESULTS|CODE TABLE|0|0|7|CODE TABLE|0|2 +035032|causeOfMissingData|table|CAUSE OF MISSING DATA|CODE TABLE|0|0|4|CODE TABLE|0|1 +035033|observationAndCollectionDeficiencies|table|OBSERVATION AND COLLECTION DEFICIENCIES|CODE TABLE|0|0|7|CODE TABLE|0|2 +035034|statisticalTrendsForAvailabilityOfDataDuringSurveyPeriods|table|STATISTICAL TRENDS FOR AVAILABILITY OF DATA (DURING THE SURVEY PERIOD(S))|CODE TABLE|0|0|3|CODE TABLE|0|1 +035035|reasonForTermination|table|REASON FOR TERMINATION|CODE TABLE|0|0|5|CODE TABLE|0|2 +040001|surfaceSoilMoisture|double|SURFACE SOIL MOISTURE (MS)|%|1|0|10|%|1|4 +040002|estimatedErrorInSurfaceSoilMoisture|double|ESTIMATED ERROR IN SURFACE SOIL MOISTURE|%|1|0|10|%|1|4 +040003|meanSurfaceSoilMoisture|long|MEAN SURFACE SOIL MOISTURE|Numeric|3|0|10|Numeric|3|4 +040004|rainFallDetection|long|RAIN FALL DETECTION|Numeric|3|0|10|Numeric|3|4 +040005|soilMoistureCorrectionFlag|flag|SOIL MOISTURE CORRECTION FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3 +040006|soilMoistureProcessingFlag|flag|SOIL MOISTURE PROCESSING FLAG|FLAG TABLE|0|0|16|FLAG TABLE|0|6 +040007|soilMoistureQuality|double|SOIL MOISTURE QUALITY|%|1|0|10|%|1|4 +040008|frozenLandSurfaceFraction|double|FROZEN LAND SURFACE FRACTION|%|1|0|10|%|1|4 +040009|inundationAndWetlandFraction|double|INUNDATION AND WETLAND FRACTION|%|1|0|10|%|1|4 +040010|topographicComplexity|double|TOPOGRAPHIC COMPLEXITY|%|1|0|10|%|1|4 +040011|interpolationFlag|flag|INTERPOLATION FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3 +040012|radiometerDataQualityFlag|flag|RADIOMETER DATA QUALITY FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3 +040013|radiometerBrightnessTemperatureInterpretationFlag|table|RADIOMETER BRIGHTNESS TEMPERATURE INTERPRETATION FLAG|CODE TABLE|0|0|3|CODE TABLE|0|1 +040014|highFrequencyFluctuationsOfSeaSurfaceTopographyCorrection|double|HIGH-FREQUENCY FLUCTUATIONS OF THE SEA-SURFACE TOPOGRAPHY CORRECTION|m|4|-3000|13|m|4|4 +040015|normalizedDifferentialVegetationIndex|long|NORMALIZED DIFFERENTIAL VEGETATION INDEX (NDVI)|Numeric|2|-100|8|Numeric|2|3 +040016|residualRmsInBand|long|RESIDUAL RMS IN BAND|Numeric|3|0|14|Numeric|3|5 +040017|nonNormalizedPrincipalComponentScore|long|NON-NORMALIZED PRINCIPAL COMPONENT SCORE|Numeric|0|-1073741824|31|Numeric|0|10 +040018|averageOfImagerMeasurements|double|GIACAVGIMAGIIS - AVERAGE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|W m-2 sr-1 m|6|8 +040019|giacvarimagiisVarianceOfImagerMeasurements|double|GIACVARIMAGIIS - VARIANCE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|W m-2 sr-1 m|6|8 +040020|gqisFlagQualDetailed|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|FLAG TABLE|0|6 +040021|fractionOfWeightedAvhrrPixelInIasiFovCoveredWithSnowOrIce|long|FRACTION OF WEIGHTED AVHRR PIXEL IN IASI FOV COVERED WITH SNOW/ICE|%|0|0|7|%|0|3 +040022|numberOfMissingBadOrFailedAvhrrPixels|long|NUMBER OF MISSING, BAD OR FAILED AVHRR PIXELS|Numeric|0|0|7|Numeric|0|3 +040023|auxiliaryAltimeterStateFlags|flag|AUXILIARY ALTIMETER STATE FLAGS|FLAG TABLE|0|0|5|FLAG TABLE|0|2 +040024|meteorologicalMapAvailability|table|METEOROLOGICAL MAP AVAILABILITY|CODE TABLE|0|0|3|CODE TABLE|0|1 +040025|interpolationFlagForMeanDiurnalTide|table|INTERPOLATION FLAG FOR MEAN DIURNAL TIDE|CODE TABLE|0|0|2|CODE TABLE|0|1 +040026|scoreQuantizationFactor|long|SCORE QUANTIZATION FACTOR|Numeric|2|0|16|Numeric|2|5 +040027|sunGlintAngle|double|SUN GLINT ANGLE|deg|2|-18000|16|deg|2|5 +040028|gmiQualityFlag|table|GMI QUALITY FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2 +040029|horizontalObservationIntegrationLength|long|HORIZONTAL OBSERVATION INTEGRATION LENGTH|m|0|0|26|m|0|8 +040030|horizontalLineOfSightWind|double|HORIZONTAL LINE OF SIGHT WIND|m/s|2|-32767|16|m/s|2|5 +040031|errorEstimateOfHorizontalLineOfSightWind|double|ERROR ESTIMATE OF HORIZONTAL LINE OF SIGHT WIND|m/s|2|0|15|m/s|2|5 +040032|derivativeWindToPressure|double|DERIVATIVE WIND TO PRESSURE|m s-1 Pa-1|3|-100000|18|m s-1 Pa-1|3|6 +040033|derivativeWindToTemperature|double|DERIVATIVE WIND TO TEMPERATURE|m s-1 K-1|3|-100000|18|m s-1 K-1|3|6 +040034|derivativeWindToBackscatterRatio|double|DERIVATIVE WIND TO BACKSCATTER RATIO|m/s|3|-200000|19|m/s|3|6 +040035|satelliteRange|long|SATELLITE RANGE|m|0|380000|18|m|0|6 +040036|lidarL2bClassificationType|table|LIDAR L2B CLASSIFICATION TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2 +040037|backscatterRatio|long|BACKSCATTER RATIO|Numeric|3|500|20|Numeric|3|7 +040038|cloudParticleSize|double|CLOUD PARTICLE SIZE|m|7|0|28|m|7|6 +040039|singleLookComplexImageIntensity|long|SINGLE LOOK COMPLEX IMAGE INTENSITY|Numeric|0|-25|5|Numeric|0|3 +040040|singleLookComplexImageSkewness|long|SINGLE LOOK COMPLEX IMAGE SKEWNESS|Numeric|2|1|13|Numeric|0|4 +040041|singleLookComplexImageKurtosis|long|SINGLE LOOK COMPLEX IMAGE KURTOSIS|Numeric|2|1|13|Numeric|0|4 +040042|singleLookComplexImageVariance|long|SINGLE LOOK COMPLEX IMAGE VARIANCE|Numeric|2|1|13|Numeric|0|4 +040043|satelliteManoeuvreIndicator|table|SATELLITE MANOEUVRE INDICATOR|CODE TABLE|0|0|3|CODE TABLE|0|1 +040044|dustIndex|long|DUST INDEX|Numeric|1|0|8|Numeric|1|3 +040045|cloudFormationAndHeightAssignment|flag|CLOUD FORMATION AND HEIGHT ASSIGNMENT|FLAG TABLE|0|0|5|FLAG TABLE|0|2 +040046|cloudinessSummary|table|CLOUDINESS SUMMARY|CODE TABLE|0|0|3|CODE TABLE|0|1 +040047|validationFlagForIasiOrIasiNgLevel1Product|table|VALIDATION FLAG FOR IASI OR IASI-NG LEVEL 1 PRODUCT|CODE TABLE|0|0|3|CODE TABLE|0|1 +040048|validationFlagOfAmsuALevel1DataFlow|table|VALIDATION FLAG OF AMSU-A LEVEL 1 DATA FLOW|CODE TABLE|0|0|3|CODE TABLE|0|1 +040049|cloudTestsExecutedAndResults|flag|CLOUD TESTS EXECUTED AND RESULTS|FLAG TABLE|0|0|16|FLAG TABLE|0|5 +040050|retrievalInitialisation|flag|RETRIEVAL INITIALISATION|FLAG TABLE|0|0|8|FLAG TABLE|0|3 +040051|convergenceOfTheIterativeRetrieval|table|CONVERGENCE OF THE ITERATIVE RETRIEVAL|CODE TABLE|0|0|3|CODE TABLE|0|1 +040052|indicationOfSuperAdiabaticAndSuperSaturationInFinalRetrieval|flag|INDICATION OF SUPER-ADIABATIC AND SUPER-SATURATION IN FINAL RETRIEVAL|FLAG TABLE|0|0|8|FLAG TABLE|0|3 +040053|numberOfIterationsUsedForRetrieval|long|NUMBER OF ITERATIONS USED FOR RETRIEVAL|Numeric|0|0|8|Numeric|0|3 +040054|potentialProcessingAndInputsErrors|flag|POTENTIAL PROCESSING AND INPUTS ERRORS|FLAG TABLE|0|0|13|FLAG TABLE|0|4 +040055|diagnosticsOnTheRetrieval|flag|DIAGNOSTICS ON THE RETRIEVAL|FLAG TABLE|0|0|21|FLAG TABLE|0|7 +040056|generalRetrievalQuality|table|GENERAL RETRIEVAL QUALITY|CODE TABLE|0|0|3|CODE TABLE|0|1 +040057|iasiLevel2RetrievalFlags|flag|IASI LEVEL 2 RETRIEVAL FLAGS|FLAG TABLE|0|0|31|FLAG TABLE|0|10 +040058|numberOfVectorsDescribingTheCharacterizationMatrices|long|NUMBER OF VECTORS DESCRIBING THE CHARACTERIZATION MATRICES|Numeric|0|0|8|Numeric|0|3 +040059|numberOfLayersActuallyRetrieved|long|NUMBER OF LAYERS ACTUALLY RETRIEVED|Numeric|0|0|8|Numeric|0|3 +040060|numberOfProfilesRetrievedInScanline|long|NUMBER OF PROFILES RETRIEVED IN SCANLINE|Numeric|0|0|8|Numeric|0|3 +040061|airPartialColumnsOnEachRetrievedLayer|double|AIR PARTIAL COLUMNS ON EACH RETRIEVED LAYER|mol cm-2|3|0|16|mol cm-2|3|5 +040062|aPrioriPartialColumnsOnEachRetrievedLayer|double|A-PRIORI PARTIAL COLUMNS ON EACH RETRIEVED LAYER|mol cm-2|10|0|16|mol cm-2|10|5 +040063|scalingVectorMultiplyingTheAPrioriCoVectorInOrderToDefineTheRetrievedCoVector|long|SCALING VECTOR MULTIPLYING THE A PRIORI CO VECTOR IN ORDER TO DEFINE THE RETRIEVED CO VECTOR|Numeric|5|0|26|Numeric|5|8 +040064|mainEigenvaluesOfTheSensitivityMatrix|long|MAIN EIGENVALUES OF THE SENSITIVITY MATRIX|Numeric|6|0|31|Numeric|6|10 +040065|mainEigenvectorsOfTheSensitivityMatrix|long|MAIN EIGENVECTORS OF THE SENSITIVITY MATRIX|Numeric|6|-1000000000|31|Numeric|6|10 +040066|qualityIndicatorForAtmosphericWaterVapour|long|QUALITY INDICATOR FOR ATMOSPHERIC WATER VAPOUR|Numeric|1|0|8|Numeric|1|3 +040067|qualityIndicatorForAtmosphericTemperature|long|QUALITY INDICATOR FOR ATMOSPHERIC TEMPERATURE|Numeric|1|0|8|Numeric|1|3 +040068|generalRetrievalQualityFlagForSo2|table|GENERAL RETRIEVAL QUALITY FLAG FOR SO2|CODE TABLE|0|0|4|CODE TABLE|0|2 +040069|pwlrEstimatedRetrievalErrorForSurfaceAirTemperature|double|PWLR ESTIMATED RETRIEVAL ERROR FOR SURFACE AIR TEMPERATURE|K|4|-1000000|21|K|4|7 +040070|pwlrEstimatedRetrievalErrorOfSurfaceDewpoint|double|PWLR ESTIMATED RETRIEVAL ERROR OF SURFACE DEWPOINT|K|4|-1000000|21|K|4|7 +040071|retrievalErrorCovarianceMatrixForOzoneInPrincipalComponentDomain|long|RETRIEVAL ERROR COVARIANCE MATRIX FOR OZONE IN PRINCIPAL COMPONENT DOMAIN|Numeric|4|-1000000|21|Numeric|4|7 +040072|pwlrEstimatedRetrievalQualityIndicatorOfAtmosphericOzone|long|PWLR ESTIMATED RETRIEVAL QUALITY INDICATOR OF ATMOSPHERIC OZONE|Numeric|1|0|8|Numeric|1|3 +040073|pwlrEstimatedRetrievalErrorOfSurfaceSkinTemperature|double|PWLR ESTIMATED RETRIEVAL ERROR OF SURFACE SKIN TEMPERATURE|K|1|0|8|K|1|3 +041001|pco2|double|PCO2|Pa|3|0|18|Pa|3|6 +041002|fluorescence|double|FLUORESCENCE|kg l-1|12|0|16|kg l-1|12|5 +041003|dissolvedNitrates|double|DISSOLVED NITRATES|umol/kg|3|0|17|umol/kg|3|5 +041005|turbidity|double|TURBIDITY|NTU|2|0|12|NTU|2|4 +042001|dominantSwellWaveDirectionOfSpectralPartition|long|DOMINANT SWELL WAVE DIRECTION OF SPECTRAL PARTITION|deg|0|0|9|deg|0|3 +042002|significantSwellWaveHeightOfSpectralPartition|double|SIGNIFICANT SWELL WAVE HEIGHT OF SPECTRAL PARTITION|m|1|0|9|m|1|3 +042003|dominantSwellWavelengthOfSpectralPartition|double|DOMINANT SWELL WAVELENGTH OF SPECTRAL PARTITION|m|2|100|17|m|2|6 +042004|confidenceOfInversionForEachPartitionOfSwellWaveSpectra|table|CONFIDENCE OF INVERSION FOR EACH PARTITION OF SWELL WAVE SPECTRA|CODE TABLE|0|0|4|CODE TABLE|0|2 +042005|ambiguityRemovalFactorForSwellWavePartition|long|AMBIGUITY REMOVAL FACTOR FOR SWELL WAVE PARTITION|Numeric|5|-100000|18|Numeric|5|6 +042006|waveAge|long|WAVE AGE|Numeric|2|1|8|Numeric|2|3 +042007|shortestOceanWavelengthOnSpectralResolution|double|SHORTEST OCEAN WAVELENGTH ON SPECTRAL RESOLUTION|m|2|0|16|m|2|5 +042008|nonlinearInverseSpectralWidth|double|NONLINEAR INVERSE SPECTRAL WIDTH|m|2|0|16|m|2|5 +042009|binPartitionReference|long|BIN PARTITION REFERENCE|Numeric|0|0|8|Numeric|0|3 +042010|partitionNumber|long|PARTITION NUMBER|Numeric|0|1|4|Numeric|0|2 diff --git a/definitions/bufr/tables/0/wmo/32/sequence.def b/definitions/bufr/tables/0/wmo/32/sequence.def new file mode 100644 index 000000000..7e321c248 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/32/sequence.def @@ -0,0 +1,1066 @@ +"300002" = [ 000002, 000003 ] +"300003" = [ 000010, 000011, 000012 ] +"300004" = [ 300003, 000013, 000014, 000015, 000016, 000017, 000018, 000019, 000020 ] +"300010" = [ 300003, 101000, 031001, 000030 ] +"300015" = [ 000030, 102000, 031002, 000024, 000025 ] +"300016" = [ 000030, 102000, 031001, 000026, 000027 ] +"301001" = [ 001001, 001002 ] +"301002" = [ 001003, 001004, 001005 ] +"301003" = [ 001011, 001012, 001013 ] +"301004" = [ 001001, 001002, 001015, 002001 ] +"301005" = [ 001035, 001034 ] +"301011" = [ 004001, 004002, 004003 ] +"301012" = [ 004004, 004005 ] +"301013" = [ 004004, 004005, 004006 ] +"301014" = [ 102002, 301011, 301012 ] +"301018" = [ 001114, 025185, 025186 ] +"301021" = [ 005001, 006001 ] +"301022" = [ 005001, 006001, 007001 ] +"301023" = [ 005002, 006002 ] +"301024" = [ 005002, 006002, 007001 ] +"301025" = [ 301023, 004003, 301012 ] +"301026" = [ 301021, 004003, 004003, 004004, 004004, 004005, 004005 ] +"301027" = [ 008007, 101000, 031001, 301028, 008007 ] +"301028" = [ 008040, 033042, 007010, 101000, 031002, 301023, 019007, 008040 ] +"301029" = [ 001018, 002001, 301011 ] +"301030" = [ 001018, 002001, 301011, 301024 ] +"301031" = [ 301001, 002001, 301011, 301012, 301022 ] +"301032" = [ 301001, 002001, 301011, 301012, 301024 ] +"301033" = [ 001005, 002001, 301011, 301012, 301021 ] +"301034" = [ 001005, 002001, 301011, 301012, 301023 ] +"301035" = [ 001005, 001012, 001013, 002001, 301011, 301012, 301023 ] +"301036" = [ 301003, 002001, 301011, 301012, 301023 ] +"301037" = [ 301001, 002011, 002012, 301011, 301012, 301022 ] +"301038" = [ 301001, 002011, 002012, 301011, 301012, 301024 ] +"301039" = [ 301003, 002011, 002012, 301011, 301012, 301023 ] +"301040" = [ 301003, 002011, 002012, 301011, 301012, 301024 ] +"301041" = [ 001007, 002021, 002022, 301011, 301012 ] +"301042" = [ 301041, 301021 ] +"301043" = [ 001007, 002023, 301011, 301013, 301021 ] +"301044" = [ 001007, 002024, 301011, 301013, 301021 ] +"301045" = [ 301011, 301012, 201138, 202131, 004006, 201000, 202000, 304030, 304031 ] +"301046" = [ 001007, 001012, 002048, 021119, 025060, 202124, 002026, 002027, 202000, 005040 + ] +"301047" = [ 001007, 025060, 001033, 001034, 001012, 301045, 002021, 301011, 301012, 201138, + 202131, 004006, 201000, 202000, 301023 ] +"301048" = [ 002104, 002121, 002113, 002026, 002027, 002111, 002140, 202127, 001013, 202126, + 007001, 202000, 025010, 021064 ] +"301049" = [ 002111, 002112, 021062, 021063, 021065 ] +"301051" = [ 001006, 002061, 301011, 301012, 301021, 008004 ] +"301055" = [ 001005, 002001, 301011, 301012, 301021, 001012, 001014 ] +"301056" = [ 001087, 001011, 001015, 002008, 002001, 301011, 301012, 301021, 007030, 007031 + ] +"301058" = [ 301011, 301012, 201152, 202135, 004006, 202000, 201000, 301021, 020111, 020112, + 020113, 020114, 020115, 020116, 020117, 020118, 020119, 025035, 020121, 020122, + 020123, 020124, 025175, 020023, 025063, 202136, 201136, 002121, 201000, 202000, + 025061, 002184, 002189, 025036, 101000, 031002, 301059 ] +"301059" = [ 301021, 007030, 007032 ] +"301062" = [ 101000, 031001, 301001 ] +"301065" = [ 001006, 001008, 002001, 002002, 002005, 002062, 002070, 002065 ] +"301066" = [ 301011, 301013, 301023, 007004, 002064, 008004 ] +"301070" = [ 002143, 002142, 002144 ] +"301071" = [ 001007, 001031, 002020, 002028, 002029 ] +"301072" = [ 301071, 301011, 301013, 301021 ] +"301074" = [ 002143, 002142, 002145, 002146 ] +"301075" = [ 301001, 001015, 301024, 008021, 301011, 301012 ] +"301076" = [ 002011, 002143, 002142 ] +"301089" = [ 001101, 001102 ] +"301090" = [ 301004, 301011, 301012, 301021, 007030, 007031 ] +"301091" = [ 002180, 002181, 002182, 002183, 002184, 002179, 002186, 002187, 002188, 002189 + ] +"301092" = [ 001011, 001003, 002001, 301011, 301012, 301021, 007030, 007031, 033024 ] +"301093" = [ 301036, 007030, 007031 ] +"301110" = [ 301001, 001011, 002011, 002014, 002003 ] +"301111" = [ 301001, 001011, 002011, 002013, 002014, 002003 ] +"301112" = [ 001006, 002011, 002013, 002014, 002003 ] +"301113" = [ 008021, 301011, 301013 ] +"301114" = [ 301021, 007030, 007031, 007007, 033024 ] +"301120" = [ 301001, 001094, 002011, 301121 ] +"301121" = [ 008041, 301122, 301021, 007031, 007007 ] +"301122" = [ 301011, 301012, 201135, 202130, 004006, 202000, 201000 ] +"301123" = [ 102002, 008041, 001062, 301001, 001094, 002011, 001018, 001095, 025061, 025068, + 001082, 001083, 001081, 002067, 002066, 002014, 025067, 025065, 025066, 002095, + 002096, 002097, 002016, 002083, 002080, 002081, 001093, 002084, 002085, 002086, + 002082, 008041, 301011 ] +"301125" = [ 001033, 001034, 025060, 001007, 002019, 001012 ] +"301126" = [ 001087, 001015, 002149, 301011, 301012, 301021 ] +"301128" = [ 001081, 001082, 001083, 001095, 002015, 002016, 002017, 002066, 002067, 002080, + 002081, 002082, 002083, 002084, 002085, 002086, 002095, 002096, 002097, 002103, + 002191, 025061, 035035 ] +"301129" = [ 001007, 001031, 002019, 002020 ] +"301130" = [ 301011, 301012, 202131, 201138, 004006, 201000, 202000 ] +"301131" = [ 301021, 007024, 005021, 007025, 005022 ] +"301150" = [ 001125, 001126, 001127, 001128 ] +"302001" = [ 010004, 010051, 010061, 010063 ] +"302002" = [ 010004, 007004, 010003, 010061, 010063 ] +"302003" = [ 011011, 011012, 012004, 012006, 013003, 020001, 020003, 020004, 020005 ] +"302004" = [ 020010, 008002, 020011, 020013, 020012, 020012, 020012 ] +"302005" = [ 008002, 020011, 020012, 020013 ] +"302006" = [ 010004, 010051, 010062, 010063 ] +"302011" = [ 302001, 302003, 302004 ] +"302012" = [ 302002, 302003, 302004 ] +"302013" = [ 302006, 302003, 101000, 031001, 302005 ] +"302021" = [ 022001, 022011, 022021 ] +"302022" = [ 022002, 022012, 022022 ] +"302023" = [ 022003, 022013, 022023 ] +"302024" = [ 302022, 101002, 302023 ] +"302031" = [ 302001, 010062, 007004, 010009 ] +"302032" = [ 007032, 012101, 012103, 013003 ] +"302033" = [ 007032, 020001 ] +"302034" = [ 007032, 013023 ] +"302035" = [ 302032, 302033, 302034, 007032, 302004, 101000, 031001, 302005 ] +"302036" = [ 105000, 031001, 008002, 020011, 020012, 020014, 020017 ] +"302037" = [ 020062, 013013, 012113 ] +"302038" = [ 020003, 004024, 020004, 020005 ] +"302039" = [ 004024, 014031 ] +"302040" = [ 007032, 102002, 004024, 013011 ] +"302041" = [ 007032, 004024, 004024, 012111, 004024, 004024, 012112 ] +"302042" = [ 007032, 002002, 008021, 004025, 011001, 011002, 008021, 103002, 004025, 011043, + 011041 ] +"302043" = [ 302038, 101002, 302039, 302040, 302041, 302042, 007032 ] +"302044" = [ 004024, 002004, 013033 ] +"302045" = [ 004024, 014002, 014004, 014016, 014028, 014029, 014030 ] +"302046" = [ 004024, 004024, 012049 ] +"302047" = [ 102003, 008002, 020054 ] +"302048" = [ 005021, 007021, 020012, 005021, 007021 ] +"302049" = [ 008002, 020011, 020013, 020012, 020012, 020012, 008002 ] +"302050" = [ 008041, 005021, 007005, 202130, 006021, 202000, 008041, 201131, 202129, 002115, + 010004, 002115, 013003, 202000, 201000, 002115, 011001, 011002, 002115, 102002, + 012101, 004024, 002115, 012103, 012102, 101003, 020012, 020011, 020013, 101002, + 020003 ] +"302051" = [ 010004, 010051, 007004, 010003, 012004, 012051, 012016, 012017, 013004, 102004, + 008051, 008020 ] +"302052" = [ 007032, 007033, 012101, 002039, 012102, 012103, 013003 ] +"302053" = [ 007032, 007033, 020001 ] +"302054" = [ 302052, 302053, 007033, 302034, 007032, 302004, 101000, 031001, 302005 ] +"302055" = [ 020031, 020032, 020033, 020034, 020035, 020036, 020037, 020038 ] +"302056" = [ 002038, 007063, 022043, 007063 ] +"302057" = [ 302056, 302021, 302024 ] +"302058" = [ 007032, 007033, 004024, 004024, 012111, 004024, 004024, 012112 ] +"302059" = [ 007032, 007033, 002002, 008021, 004025, 011001, 011002, 008021, 103002, 004025, + 011043, 011041 ] +"302060" = [ 302038, 302040, 302058, 302059 ] +"302062" = [ 025188, 302001, 302093, 101000, 031000, 302053, 007032, 007033, 101000, 031000, + 302004, 101000, 031001, 302005, 008002, 101000, 031000, 302055, 101000, 031000, + 302056, 101000, 031000, 302021, 101000, 031000, 302024 ] +"302063" = [ 302038, 101000, 031000, 302040, 101000, 031000, 302034, 007032, 101000, 031000, + 302058, 101000, 031000, 302064 ] +"302064" = [ 007032, 007033, 002002, 008021, 004025, 011001, 011002, 008021, 103000, 031001, + 004025, 011043, 011041 ] +"302066" = [ 020023, 020024, 020027, 020054, 020023, 020027, 020054, 020025, 020026, 020027, + 020040, 020066, 020027, 020021, 020067, 020027 ] +"302067" = [ 001023, 004025, 002177, 101000, 031001, 020003, 103000, 031001, 005021, 020001, + 005021, 101000, 031000, 302056, 103000, 031000, 033041, 020058, 022061, 101000, + 031000, 302022, 101000, 031001, 302023, 104000, 031001, 020054, 020137, 020012, + 020090, 103000, 031001, 020054, 020137, 020136, 004025, 013012, 004025, 011042, + 104000, 031001, 008021, 004025, 011042, 008021, 115000, 031001, 008021, 004015, + 008021, 004025, 011001, 011002, 008021, 004015, 008021, 004025, 011001, 011002, + 008021, 004025, 004015, 103000, 031001, 004025, 004025, 020003, 110000, 031001, + 004025, 004025, 005021, 005021, 020054, 020024, 020025, 020026, 020027, 020063 + ] +"302069" = [ 007032, 007033, 033041, 020001 ] +"302070" = [ 007032, 007033, 011001, 011002, 011043, 011041, 011016, 011017 ] +"302071" = [ 007032, 007033, 008021, 004025, 011001, 011002, 008021, 103002, 004025, 011043, + 011041, 004025, 011016, 011017 ] +"302072" = [ 007032, 007033, 012101, 012103, 013003 ] +"302073" = [ 020010, 105004, 008002, 020011, 020012, 033041, 020013 ] +"302074" = [ 020003, 004025, 020004, 020005 ] +"302075" = [ 008021, 004025, 013055, 013058, 008021 ] +"302076" = [ 020021, 020022, 026020, 020023, 020024, 020025, 020026 ] +"302077" = [ 007032, 007033, 004025, 012111, 012112, 007032, 004025, 012112 ] +"302078" = [ 002176, 020062, 002177, 013013 ] +"302079" = [ 007032, 002175, 002178, 004025, 013011 ] +"302080" = [ 002185, 004025, 013033 ] +"302081" = [ 004025, 014031 ] +"302082" = [ 004025, 014002, 014004, 014016, 014028, 014029, 014030 ] +"302083" = [ 004025, 008023, 010004, 011001, 011002, 012101, 013003, 008023 ] +"302084" = [ 302031, 302072, 103000, 031000, 101005, 307063, 007061, 101000, 031000, 302069, + 007032, 007033, 105000, 031000, 020031, 020032, 002038, 022043, 302021, 101000, + 031000, 302078, 012113, 101000, 031000, 302004, 105000, 031001, 008002, 020011, + 020012, 033041, 020013, 302036, 101000, 031000, 302047, 008002, 101000, 031000, + 302048 ] +"302085" = [ 105000, 031000, 020003, 103002, 004024, 020004, 020005, 101000, 031000, 302175, + 102000, 031000, 004025, 302076, 102000, 031000, 004025, 013059, 007032, 007033, + 008021, 004025, 011001, 011002, 008021, 103003, 004025, 011043, 011041, 004025, + 011016, 011017, 302077, 007033, 302041, 106000, 031000, 007032, 002175, 002178, + 102005, 004024, 013011, 007032, 103000, 031000, 002185, 101002, 302044, 102000, + 031000, 101002, 302039, 102000, 031000, 101002, 302045, 101000, 031000, 302046, + 101000, 031000, 302083 ] +"302089" = [ 020101, 020102, 020103, 020104, 020105, 020106, 020107, 020108 ] +"302090" = [ 002038, 007063, 022045 ] +"302091" = [ 020001, 004024, 013011 ] +"302092" = [ 011104, 001012, 001013, 010038, 010039, 011007, 011008 ] +"302093" = [ 007032, 007033, 303099, 012101, 103000, 031000, 007032, 007033, 303099, 002039, + 002097, 003024, 003021, 012102, 012103, 013003, 007032, 007033, 303099, 002039, + 002097, 003021, 003024 ] +"302175" = [ 008021, 004025, 013155, 013058, 008021 ] +"303001" = [ 007003, 011001, 011002 ] +"303002" = [ 007004, 011001, 011002 ] +"303003" = [ 007004, 010003, 012001, 012003 ] +"303004" = [ 007004, 010003, 012001, 012003, 011001, 011002 ] +"303011" = [ 007003, 008001, 011001, 011002 ] +"303012" = [ 007004, 008001, 011001, 011002 ] +"303013" = [ 007004, 008001, 010003, 012001, 013003, 011001, 011002 ] +"303014" = [ 007004, 008001, 010003, 012001, 012003, 011001, 011002 ] +"303021" = [ 007004, 007004, 204007, 031021 ] +"303022" = [ 303021, 010003, 204000 ] +"303023" = [ 303021, 012001, 204000 ] +"303024" = [ 303021, 013016, 204000 ] +"303025" = [ 002025, 204007, 031021, 012063, 204000 ] +"303026" = [ 007004, 008003, 204007, 031021, 012001, 204000 ] +"303027" = [ 007004, 204007, 031021, 010003, 204000 ] +"303031" = [ 007004, 008003, 007021, 007022, 008012, 012061 ] +"303032" = [ 020011, 020016 ] +"303033" = [ 020010, 020016 ] +"303040" = [ 008041, 004025, 004026, 301021, 301122, 201131, 202129, 025069, 007004, 013003, + 202000, 201000, 002013, 012101, 010009, 102002, 008040, 035035 ] +"303041" = [ 002152, 002023, 007004, 011001, 011002, 002153, 002154, 012071 ] +"303050" = [ 004086, 008042, 007004, 005015, 006015, 011001, 011002 ] +"303051" = [ 004086, 008042, 007004, 005015, 006015, 011061, 011062 ] +"303052" = [ 004086, 008042, 007009, 005015, 006015, 011001, 011002 ] +"303053" = [ 004086, 008042, 007009, 005015, 006015, 011061, 011062 ] +"303054" = [ 004086, 008042, 007004, 010009, 005015, 006015, 012101, 012103, 011001, 011002 + ] +"303055" = [ 004086, 008042, 007009, 005015, 006015, 012101, 013009, 012103, 011001, 011002 + ] +"303056" = [ 004086, 008042, 207001, 007004, 010009, 207000, 005015, 006015, 012101, 012103, + 011001, 011002 ] +"303099" = [ 003005, 003006, 003007, 002096, 003022, 003003, 003020, 003004, 003023, 003008, + 003009 ] +"304001" = [ 008003, 010004, 012001, 011001, 011002 ] +"304002" = [ 008003, 010004, 011001, 011002 ] +"304003" = [ 008003, 012001 ] +"304004" = [ 008003, 010004, 020010, 012001 ] +"304005" = [ 002024, 007004, 007004, 013003 ] +"304006" = [ 014001, 014001, 014003 ] +"304011" = [ 002163, 002164, 008012, 007024, 002057, 008021, 004001, 004002, 004003, 004004, + 008021, 004024, 110004, 008021, 004004, 004005, 004006, 008021, 004004, 004005, + 004006, 011001, 011002, 103010, 002163, 007004, 012001 ] +"304030" = [ 027031, 028031, 010031 ] +"304031" = [ 001041, 001042, 001043 ] +"304032" = [ 002153, 002154, 020081, 020082, 020012 ] +"304033" = [ 002152, 002166, 002167, 002153, 002154, 012075, 012076, 012063 ] +"304034" = [ 102004, 027001, 028001, 007022, 005043, 020010, 020016, 033003, 010040 ] +"304035" = [ 002153, 002154, 012063, 008001, 012063, 008001, 012063, 008001, 008003, 012063, + 008003, 012063, 008003, 012063, 008003 ] +"304036" = [ 020082, 008012, 020082, 008012, 020081, 008003, 020081, 008003, 020081, 008003, + 020081, 008003 ] +"304037" = [ 002153, 002154, 012063, 008011, 012063, 008011, 012063, 008011, 008003, 012063, + 008003, 012063, 008003, 012063 ] +"304039" = [ 201136, 005042, 201000, 014046 ] +"304040" = [ 025140, 025141, 040026, 040016, 025062, 101000, 031002, 040017 ] +"305001" = [ 011001, 011002, 013060, 013071 ] +"305002" = [ 301012, 012001, 013003, 014051, 013060, 013072, 013080, 013081, 013082, 013083, + 013084 ] +"305003" = [ 301012, 004065, 101000, 031001, 305001 ] +"305004" = [ 301030, 305002, 305003 ] +"305006" = [ 013072, 013082, 013019, 012001, 013073, 013060 ] +"305007" = [ 301029, 301012, 004065, 101000, 031001, 305006 ] +"305008" = [ 305006, 012030 ] +"305009" = [ 301029, 301012, 004065, 101000, 031001, 305008 ] +"305010" = [ 305008, 002091, 002091 ] +"305011" = [ 301029, 301012, 004065, 101000, 031001, 305010 ] +"305016" = [ 014021, 007004, 013003, 011002, 011001, 011041, 011043 ] +"305017" = [ 013080, 013081, 013083, 013085, 013084 ] +"305018" = [ 301029, 301012, 004065, 103000, 031001, 305008, 305016, 305017 ] +"306001" = [ 002032, 102000, 031001, 007062, 022042 ] +"306002" = [ 002031, 022004, 022031 ] +"306003" = [ 002002, 011011, 011012, 012004 ] +"306004" = [ 002032, 002033, 103000, 031001, 007062, 022043, 022062 ] +"306005" = [ 002031, 103000, 031001, 007062, 022004, 022031 ] +"306006" = [ 306003, 306002, 022063 ] +"306007" = [ 001012, 001014, 306008, 004024, 027003, 028003 ] +"306008" = [ 002034, 002035, 002036 ] +"306011" = [ 301021, 001075, 002147, 301011, 301013 ] +"306012" = [ 002007, 008015, 008032, 306029 ] +"306013" = [ 306012, 301011, 301013, 022120, 022121, 004015, 004065, 102000, 031001, 022038, + 022040 ] +"306014" = [ 306012, 301011, 301013, 022120, 022121, 004015, 004065, 101000, 031001, 022038 + ] +"306016" = [ 301011, 301013, 010004, 010051, 302032, 007032, 002002, 008021, 004025, 011001, + 011002, 004025, 011043, 011041, 025026, 012060 ] +"306017" = [ 002032, 008034, 106000, 031002, 007065, 008080, 033050, 022045, 008080, 033050, + 008034 ] +"306018" = [ 002032, 008034, 109000, 031002, 007065, 008080, 033050, 022045, 008080, 033050, + 022064, 008080, 033050, 008034 ] +"306019" = [ 001075, 301011, 301012, 022042, 022120, 022121, 004015, 004065 ] +"306020" = [ 001075, 301011, 301012, 022042, 022120, 022121, 004075, 004065 ] +"306021" = [ 001075, 301011, 301012, 022122, 022123, 012001, 303002 ] +"306022" = [ 001075, 301011, 301012, 022038, 022039 ] +"306023" = [ 001015, 301023, 301011, 301012, 022038, 022039, 022120, 022121 ] +"306024" = [ 306020, 102006, 022038, 022039 ] +"306025" = [ 306019, 102006, 022038, 022039 ] +"306027" = [ 001005, 001052, 002047, 301011, 301013 ] +"306028" = [ 306027, 301011, 301013, 301021 ] +"306029" = [ 025170, 025171, 025172 ] +"306030" = [ 306027, 306029, 111000, 031001, 033002, 301011, 301013, 025025, 025025, 025026, + 022185, 004015, 004065, 101004, 022182 ] +"306031" = [ 306027, 306029, 001053, 033002, 301011, 301013, 301011, 301013, 022185, 022182, + 004016, 004066, 101000, 031001, 022184 ] +"306033" = [ 002033, 007063, 022064 ] +"306034" = [ 002031, 003010, 002040, 022005, 022032 ] +"306035" = [ 112000, 031002, 007062, 008080, 033050, 007065, 008080, 033050, 022043, 008080, + 033050, 022064, 008080, 033050 ] +"306036" = [ 112000, 031002, 007062, 008080, 033050, 007065, 008080, 033050, 022031, 008080, + 033050, 022004, 008080, 033050 ] +"306037" = [ 109000, 031002, 007062, 008080, 033050, 007065, 008080, 033050, 022188, 008080, + 033050 ] +"306038" = [ 010004, 010051, 007033, 012101, 012103, 013003, 007033, 008021, 004025, 011001, + 011002, 008021, 004025, 011041, 004025, 007033, 002005, 007063, 022049 ] +"306039" = [ 022078, 022070, 022073, 022074, 022071, 022076, 022077 ] +"306040" = [ 022078, 022082, 106000, 031001, 022080, 022069, 022086, 022087, 022088, 022089 + ] +"306041" = [ 002032, 102000, 031001, 007062, 022043 ] +"306042" = [ 002169, 007033, 008021, 004025, 011001, 011002 ] +"306043" = [ 041001, 008043, 015028, 008043, 013080, 041005, 041003, 022188, 041002, 106000, + 031000, 004024, 014002, 014002, 014012, 014004, 004024 ] +"307001" = [ 301031, 302011 ] +"307002" = [ 301032, 302011 ] +"307003" = [ 307001, 101000, 031001, 302005 ] +"307004" = [ 307002, 101000, 031001, 302005 ] +"307005" = [ 307001, 101004, 302005 ] +"307006" = [ 307002, 101004, 302005 ] +"307007" = [ 301031, 302012 ] +"307008" = [ 301032, 302012 ] +"307009" = [ 301031, 302013 ] +"307011" = [ 001063, 002001, 301011, 301012, 301024, 007006, 011001, 011016, 011017, 011002, + 011041, 007006, 012001, 012003, 010052, 020009 ] +"307012" = [ 103000, 031001, 008023, 005021, 020001 ] +"307013" = [ 106000, 031001, 001064, 008014, 020061, 008014, 020061, 020018 ] +"307014" = [ 101000, 031001, 020019 ] +"307015" = [ 101000, 031001, 302005, 020002 ] +"307016" = [ 101000, 031001, 020020 ] +"307017" = [ 101000, 031001, 011070 ] +"307018" = [ 008016, 102000, 031001, 008017, 301012, 104000, 031001, 007006, 011001, 011002, + 011041, 020009, 101000, 031001, 020001, 307014 ] +"307020" = [ 307011, 307014, 307016 ] +"307021" = [ 307011, 307012, 307013, 307014, 307015, 307016, 307017, 307018, 307015 ] +"307022" = [ 001015, 301011, 301012, 301022, 008021, 004025, 010004, 012001, 013003, 033038, + 008022, 106025, 002020, 001050, 005021, 007021, 015031, 015032, 008060, 015033, + 015034, 008060, 015033, 015034, 015035, 201131, 202129, 013016, 202000, 201000, + 015011 ] +"307030" = [ 015001, 015002 ] +"307031" = [ 008022, 008023, 015001, 008023, 015001, 008023, 015002 ] +"307041" = [ 301001, 001015, 301024, 301011, 301012, 301070, 307030 ] +"307042" = [ 301001, 001015, 301024, 301011, 301012, 008021, 004025, 301070, 307031 ] +"307043" = [ 301001, 001015, 301024, 301011, 301012, 301074, 307030 ] +"307044" = [ 301001, 001015, 301024, 301011, 301012, 008021, 004025, 301074, 307031 ] +"307045" = [ 001063, 008079, 002001, 301011, 301012, 301023, 007030, 007031, 007032, 011001, + 011016, 011017, 008054, 011083, 011084, 011002, 008054, 011085, 011086, 011041, + 008054, 007032, 012023, 012024, 007032, 010052, 020009 ] +"307046" = [ 020060, 102000, 031001, 005021, 020059 ] +"307047" = [ 105000, 031001, 008002, 020011, 020012, 020013, 020092, 020002, 020091 ] +"307048" = [ 008016, 102000, 031001, 008017, 301012, 112000, 031000, 007032, 011001, 008054, + 011083, 011084, 011002, 008054, 011085, 011086, 011041, 008054, 007032, 020009, + 101000, 031000, 020060, 307014, 307047 ] +"307049" = [ 102000, 031000, 022043, 022021 ] +"307050" = [ 101000, 031000, 020085, 102000, 031001, 001064, 020085, 105000, 031001, 001064, + 020086, 020087, 020088, 020089 ] +"307051" = [ 307045, 307046, 307013, 307014, 307047, 307016, 307017, 307049, 307050, 101000, + 031001, 307048 ] +"307052" = [ 001063, 008039, 301011, 301012, 008079, 008039, 301011, 301012, 008039, 301011, + 301012, 301023, 007030, 007031 ] +"307053" = [ 007032, 011001, 008054, 011083, 011084, 011002, 008054, 011085, 011086, 011041, + 008054, 007032, 020009, 020060, 307014, 307047 ] +"307054" = [ 007032, 008039, 004003, 004004, 008023, 012023, 008039, 004003, 004004, 008023, + 012023, 008023, 007032 ] +"307055" = [ 033045, 008016, 008039, 004003, 301012, 008039, 004003, 301012, 307053 ] +"307056" = [ 307052, 307053, 307054, 101000, 031001, 307055 ] +"307060" = [ 007061, 012030 ] +"307061" = [ 301031, 101005, 307060 ] +"307062" = [ 301032, 101005, 307060 ] +"307063" = [ 007061, 012130 ] +"307071" = [ 301090, 004074, 004023, 008023, 010004, 010051, 007004, 010009, 007032, 012101, + 002051, 004051, 012118, 004052, 012119, 013004, 008023, 012151, 007032, 102005, + 008050, 008020, 014032, 014033, 008050, 008020, 102018, 008052, 008022, 007032, + 008053, 004003, 012152, 008053, 004003, 012153, 008053, 004003, 008023, 012101, + 008053, 004003, 008023, 012101, 008023, 007032, 002002, 008053, 004003, 011046, + 008053, 004003, 004004, 004023, 007032, 013060, 013051, 004053, 008050, 008020, + 102006, 008052, 008022, 008053, 004003, 013052, 007032 ] +"307072" = [ 004001, 004001, 004002, 004003, 004004, 004074, 004022, 008023, 010004, 010051, + 007004, 010009, 007032, 012101, 002051, 004051, 012118, 004052, 012119, 013004, + 012151, 007032, 014032, 008023, 004001, 004001, 004002, 004003, 004004, 004022, + 007032, 008023, 013060, 004053, 008023, 102008, 008050, 008020 ] +"307073" = [ 307071, 307072 ] +"307074" = [ 301001, 004001, 004002, 301021, 007030, 007032, 112000, 031001, 004003, 004004, + 004024, 102003, 008023, 012101, 008023, 004004, 004024, 013060, 013012, 013013 + ] +"307076" = [ 301090, 004074, 004023, 008023, 010004, 010051, 007004, 010009, 007032, 012101, + 002051, 004051, 012118, 004052, 012119, 013004, 008023, 012151, 007032, 102005, + 008050, 008020, 014032, 014033, 008050, 008020, 102018, 008052, 008022, 007032, + 008053, 004003, 012152, 008053, 004003, 012153, 008053, 004003, 008023, 012101, + 008053, 004003, 008023, 012101, 008023, 007032, 002002, 008053, 004003, 011046, + 008053, 004003, 004004, 004074, 004023, 007032, 013060, 013051, 004053, 008050, + 008020, 102006, 008052, 008022, 008053, 004003, 013052, 007032 ] +"307077" = [ 004001, 004001, 004002, 004003, 004004, 004074, 004022, 008023, 010004, 010051, + 007004, 010009, 007032, 012101, 002051, 004051, 012118, 004052, 012119, 013004, + 012151, 007032, 014032, 008023, 004001, 004001, 004002, 004003, 004004, 004074, + 004022, 007032, 008023, 013060, 004053, 008023, 102008, 008050, 008020 ] +"307078" = [ 307076, 307077 ] +"307079" = [ 301090, 302031, 302035, 302036, 101000, 031000, 302047, 008002, 101000, 031000, + 302048, 302037, 102000, 031000, 022061, 020058, 101000, 031000, 302056, 101000, + 031000, 302055, 302043, 302044, 101000, 031001, 302045, 101000, 031000, 302046 + ] +"307080" = [ 301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 302043, 302044, + 101002, 302045, 302046 ] +"307081" = [ 301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012122, 013056, + 013057, 020101, 020102, 020103, 020104, 020105, 020106, 020107, 020108, 302043, + 302044, 101002, 302045, 302046 ] +"307082" = [ 301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012121, 012122, + 302043, 302044, 101002, 302045, 302046 ] +"307083" = [ 301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012122, 302043, + 302044, 101002, 302045, 302046 ] +"307084" = [ 301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 020055, 101000, + 031001, 205001, 302043, 302044, 101002, 302045, 302046 ] +"307086" = [ 301090, 302031, 302035, 302036, 008002, 302037, 302066, 302043, 302044, 101002, + 302045 ] +"307087" = [ 301001, 002001, 301011, 301012, 301023, 007030, 007031, 302001, 010062, 007004, + 010009, 007032, 012101, 012103, 013003, 007032, 020001, 302004, 101000, 031001, + 302005 ] +"307088" = [ 020003, 004024, 020004, 020005, 004024, 002004, 013033, 102002, 004024, 014031, + 102002, 004024, 013011, 007032, 004024, 012111, 004024, 012112, 007032, 002002, + 008021, 004025, 011001, 011002, 008021 ] +"307089" = [ 307087, 307088 ] +"307090" = [ 301092, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 302043, 302044, + 101002, 302045, 302046 ] +"307091" = [ 301089, 301090, 008010, 301091, 302001, 007004, 010009, 302072, 103000, 031000, + 101005, 307063, 007061, 101000, 031000, 302069, 007032, 007033, 105000, 031000, + 020031, 020032, 002038, 022043, 302021, 101000, 031000, 302078, 101000, 031000, + 302073, 101000, 031000, 302074, 101000, 031000, 302175, 102000, 031000, 004025, + 302076, 302071, 302077, 007033, 101000, 031000, 302079, 007032, 101000, 031000, + 302080, 101000, 031000, 302081, 101000, 031000, 302082, 102000, 031000, 004025, + 013059, 101000, 031000, 302083, 033005, 033006 ] +"307092" = [ 301150, 301001, 208040, 001019, 208000, 301011, 301012, 301021, 007030, 001023, + 108000, 031000, 007031, 204018, 031021, 010004, 010051, 007004, 010009, 204000, + 115000, 031001, 007032, 008010, 204018, 031021, 012101, 012103, 202129, 201132, + 013003, 201000, 202000, 013009, 204000, 007032, 008010, 107000, 031001, 007061, + 204018, 031021, 012130, 013111, 204000, 007061, 105000, 031000, 033041, 204018, + 031021, 020001, 204000, 113000, 031000, 204018, 031021, 020010, 204000, 107000, + 031001, 008002, 204018, 031021, 020011, 020013, 204000, 008002, 105000, 031000, + 204018, 031021, 020062, 013013, 204000, 105000, 031000, 004025, 204018, 031021, + 020003, 204000, 105000, 031000, 004025, 204018, 031021, 013011, 204000, 115000, + 031001, 007032, 008021, 004025, 204018, 031021, 011001, 011002, 204000, 008021, + 204018, 031021, 011043, 011041, 204000, 007032, 105000, 031000, 004025, 204018, + 031021, 014031, 204000, 110000, 031000, 004025, 204018, 031021, 014002, 014002, + 014004, 014028, 014029, 014030, 204000, 113000, 031000, 004025, 002071, 002072, + 204018, 031021, 014072, 204000, 002071, 002072, 204018, 031021, 014072, 204000 + ] +"307096" = [ 301090, 301089, 008010, 301091, 302084, 302085, 033005, 033006 ] +"307101" = [ 301089, 001019, 002001, 301011, 301012, 301021, 007030, 007032, 012101, 007032, + 002177, 020062, 013013 ] +"307102" = [ 301089, 001018, 001015, 001104, 001105, 001106, 003017, 003018, 003019, 301011, + 301012, 301021, 007030, 007032, 012101, 012103, 013003, 007032, 020001, 109000, + 031001, 003016, 012128, 102000, 031001, 007061, 012129, 007061, 013116, 020138, + 004025, 020024, 013055, 020021, 013011, 007032, 008021, 004025, 011001, 011002, + 008021, 004025, 011043, 011041, 033005 ] +"307103" = [ 301150, 307101, 013117, 003028, 013163 ] +"307182" = [ 301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012120, 012122, + 302043, 302044, 101002, 302045, 302046 ] +"308001" = [ 301033, 302011, 022042 ] +"308002" = [ 301034, 302011, 022042 ] +"308003" = [ 301035, 302011, 022042 ] +"308004" = [ 301036, 302011, 022042 ] +"308005" = [ 308004, 302024 ] +"308006" = [ 010004, 010061, 010063, 011001, 011002, 012004, 013003, 022042 ] +"308007" = [ 301055, 302011, 007062, 022042 ] +"308009" = [ 301093, 302001, 302054, 008002, 302055, 302057, 302060 ] +"308010" = [ 001011, 113000, 031001, 301011, 301012, 301021, 004080, 022049, 004080, 022059, + 004080, 022005, 002042, 022032, 002042, 004080 ] +"308011" = [ 001011, 002001, 301011, 301012, 301023, 007030, 007031, 004074, 004023, 008023, + 010051, 007032, 007033, 012101, 013004, 007032, 007033, 302056, 008023, 004003, + 004004, 004023, 007032, 013060, 013051, 004053, 007032 ] +"308012" = [ 004001, 004001, 004002, 004003, 004004, 004074, 004022, 008023, 010051, 007032, + 007033, 012101, 013004, 007032, 007033, 302056, 008023, 004001, 004001, 004002, + 004003, 004004, 004022, 007032, 008023, 013060, 004053, 008023 ] +"308013" = [ 308011, 308012 ] +"308014" = [ 101000, 031000, 301018, 003001, 301093, 208032, 001079, 208000, 302062, 302063, + 101000, 031000, 302092, 101000, 031000, 306033, 101000, 031000, 306034, 101000, + 031000, 306043 ] +"308015" = [ 001003, 001020, 001005, 001011, 001007, 001001, 001002, 002044, 002045, 301011, + 301012, 301021, 022063, 022076, 022077, 022094, 025043, 022078, 105002, 002046, + 022070, 022071, 022073, 022074, 127000, 031001, 002046, 008090, 022102, 008090, + 022084, 120000, 031001, 022080, 022108, 022086, 022087, 022088, 022089, 105000, + 031001, 008090, 022104, 008090, 022186, 022187, 105000, 031001, 008090, 022106, + 008090, 022186, 022187 ] +"308016" = [ 001003, 001020, 001005, 001011, 001007, 001001, 001002, 002044, 002045, 301011, + 301012, 301021, 022063, 022076, 022077, 022094, 025044, 022079, 105002, 002046, + 022070, 022072, 022073, 022075, 127000, 031001, 002046, 008090, 022103, 008090, + 022084, 120000, 031001, 022081, 022108, 022086, 022087, 022088, 022089, 105000, + 031001, 008090, 022105, 008090, 022186, 022187, 105000, 031001, 008090, 022107, + 008090, 022186, 022187 ] +"308017" = [ 301056, 302001, 302052, 101000, 031000, 302056, 302064, 302053, 101000, 031000, + 302004, 101000, 031000, 302005, 101000, 031000, 302038, 101000, 031000, 306039 + ] +"308018" = [ 301150, 301093, 302001, 302072, 101000, 031000, 302056, 101000, 031000, 302064 + ] +"308021" = [ 001011, 002001, 301011, 301012, 301023, 007030, 007031, 004074, 004023, 008023, + 010051, 007032, 007033, 012101, 013004, 007032, 007033, 302056, 008023, 004003, + 004004, 004074, 004023, 007032, 013060, 013051, 004053, 007032 ] +"308022" = [ 004001, 004001, 004002, 004003, 004004, 004074, 004022, 008023, 010051, 007032, + 007033, 012101, 013004, 007032, 007033, 302056, 008023, 004001, 004001, 004002, + 004003, 004004, 004074, 004022, 007032, 008023, 013060, 004053, 008023 ] +"308023" = [ 308021, 308022 ] +"309001" = [ 301037, 101000, 031001, 303011 ] +"309002" = [ 301038, 101000, 031001, 303011 ] +"309003" = [ 301037, 101000, 031001, 303012 ] +"309004" = [ 301038, 101000, 031001, 303012 ] +"309005" = [ 301037, 302004, 101000, 031001, 303013 ] +"309006" = [ 301038, 302004, 101000, 031001, 303013 ] +"309007" = [ 301037, 302004, 101000, 031001, 303014 ] +"309008" = [ 301038, 302004, 101000, 031001, 303014 ] +"309011" = [ 301039, 101000, 031001, 303011 ] +"309012" = [ 301039, 101000, 031001, 303012 ] +"309013" = [ 301039, 302004, 101000, 031001, 303013 ] +"309014" = [ 301039, 302004, 101000, 031001, 303014 ] +"309015" = [ 301040, 101000, 031001, 303011 ] +"309016" = [ 301040, 101000, 031001, 303012 ] +"309017" = [ 301040, 302004, 101000, 031001, 303013 ] +"309018" = [ 301040, 302004, 101000, 031001, 303014 ] +"309019" = [ 301031, 002003, 101000, 031001, 303011 ] +"309020" = [ 301031, 002003, 104000, 031001, 007003, 011003, 011004, 011005 ] +"309021" = [ 301001, 005001, 006001, 007030, 301014, 002003, 002121, 112000, 031001, 007007, + 301021, 011003, 011110, 011004, 011111, 033002, 011006, 011112, 033002, 010071, + 027079 ] +"309022" = [ 301001, 005001, 006001, 007030, 301014, 002003, 002121, 110000, 031001, 007007, + 301021, 012007, 012008, 033002, 011006, 011112, 033002, 010071, 027079 ] +"309023" = [ 301001, 005001, 006001, 007030, 301014, 002003, 302004, 302005, 114000, 031001, + 007007, 301021, 101000, 031001, 002121, 015063, 015064, 015065, 015066, 015067, + 015068, 015069, 015070, 015071, 015072, 033002, 010071, 027079 ] +"309030" = [ 015004, 015005, 104000, 031001, 004015, 008006, 007004, 015003 ] +"309031" = [ 015004, 015005, 104000, 031001, 004025, 008006, 007004, 015003 ] +"309040" = [ 301075, 301076, 309030 ] +"309041" = [ 307041, 301075, 301076, 309030 ] +"309042" = [ 307042, 301075, 301076, 309030 ] +"309043" = [ 307043, 301075, 301076, 309030 ] +"309044" = [ 307044, 301075, 301076, 309030 ] +"309045" = [ 301075, 301076, 309031 ] +"309046" = [ 307041, 301075, 301076, 309031 ] +"309047" = [ 307042, 301075, 301076, 309031 ] +"309048" = [ 307043, 301075, 301076, 309031 ] +"309049" = [ 307044, 301075, 301076, 309031 ] +"309050" = [ 301110, 301113, 301114, 101000, 031002, 303050, 101000, 031001, 303051 ] +"309051" = [ 301110, 301113, 301114, 101000, 031002, 303052, 101000, 031001, 303053 ] +"309052" = [ 301111, 301113, 301114, 302049, 022043, 101000, 031002, 303054, 101000, 031001, + 303051 ] +"309053" = [ 301112, 301113, 301114, 101000, 031002, 303054, 101000, 031001, 303051 ] +"309054" = [ 301001, 001011, 301011, 301012, 301021, 007030, 007031, 007007, 004023, 004059, + 115000, 031001, 008001, 008023, 007004, 010009, 012101, 012103, 008023, 011001, + 011002, 008023, 011019, 008050, 008020, 008050, 008020 ] +"309055" = [ 301111, 025061, 001081, 001082, 002067, 002095, 002096, 002097, 002081, 002082, + 002084, 002191, 301113, 301114, 010004, 302032, 007032, 002002, 011001, 011002, + 007032, 020003, 302049, 022043, 101000, 031002, 303055 ] +"309056" = [ 301150, 301111, 301128, 301113, 008091, 301021, 007007, 008091, 101000, 031002, + 303056, 101000, 031001, 303051 ] +"309057" = [ 301150, 301111, 301128, 301113, 301114, 302049, 022043, 101000, 031002, 303056, + 101000, 031001, 303051 ] +"309060" = [ 301123, 301121, 302050, 303040 ] +"309061" = [ 301120, 008041, 301122, 201131, 202129, 025069, 007004, 202000, 201000, 033007, + 033035, 033015, 013009, 033007, 033035, 033015, 002013, 012101, 033007, 033035, + 033015 ] +"309062" = [ 301120, 008041, 301122, 005001, 033035, 033015, 006001, 033035, 033015, 007007, + 033035, 033015, 011003, 033035, 033015, 011004, 033035, 033015, 033007 ] +"309063" = [ 301120, 008041, 301122, 005001, 033035, 033015, 006001, 033035, 033015, 007007, + 033035, 033015, 011003, 033035, 033015, 011004, 033035, 033015, 033007 ] +"309064" = [ 301120, 008041, 301122, 201131, 202129, 104002, 025069, 007004, 033035, 033015, + 013003, 033035, 033015, 202000, 201000, 104002, 002013, 012101, 033035, 033015, + 012103, 033035, 033015, 010009, 033035, 033015 ] +"309065" = [ 301120, 008041, 301122, 005001, 033035, 033015, 006001, 033035, 033015, 007007, + 033035, 033015, 011003, 033035, 033015, 011004, 033035, 033015 ] +"309066" = [ 301120, 008041, 301122, 008040, 201131, 202129, 025069, 007004, 013003, 202000, + 201000, 002013, 012101, 012103, 010009, 010007, 011002, 011001 ] +"309070" = [ 001035, 001032, 001015, 001063, 301001, 301011, 301012, 301021, 207001, 010001, + 207000, 008086, 007030, 025031, 008021, 004014, 010004, 010051, 010009, 020010, + 013095, 128000, 031002, 113000, 031000, 008086, 007004, 011001, 011002, 012101, + 012102, 012103, 010009, 103000, 031000, 011021, 011022, 011005, 104000, 031000, + 008086, 007006, 011001, 011002, 105000, 031000, 008086, 007006, 012101, 012102, + 012103 ] +"309071" = [ 301001, 002014, 002003, 301113, 301114, 301023, 007030, 007007, 103000, 031001, + 007009, 011001, 011002 ] +"310001" = [ 301042, 303031, 303032, 101026, 303025 ] +"310002" = [ 301042, 303031, 303032, 101009, 303023 ] +"310003" = [ 301042, 303031, 303032, 101006, 303023 ] +"310004" = [ 301042, 303031, 303032, 101003, 303024 ] +"310005" = [ 301042, 303031, 303033, 101000, 031001, 303025 ] +"310006" = [ 301042, 303031, 303033, 101000, 031001, 303023 ] +"310007" = [ 301042, 303031, 303033, 101000, 031001, 303024 ] +"310008" = [ 310011, 101019, 310012, 002150, 025079, 025080, 033032, 014045 ] +"310009" = [ 310011, 101015, 310012 ] +"310010" = [ 310011, 101005, 310012 ] +"310011" = [ 008070, 001033, 001034, 008070, 001033, 001034, 001007, 002048, 005040, 025075, + 201133, 005041, 201000, 005043, 025070, 033030, 033031, 004001, 004002, 004003, + 004004, 004005, 202131, 201138, 004006, 201000, 202000, 005001, 006001, 202126, + 007001, 202000, 007024, 005021, 007025, 005022, 033033, 002151, 012064, 002151, + 012064, 002151, 012064, 002151, 012064 ] +"310012" = [ 002150, 025076, 025077, 025078, 033032, 201132, 202129, 012063, 202000, 201000 + ] +"310013" = [ 001007, 005040, 004001, 004002, 004003, 004004, 004005, 004006, 005001, 006001, + 007025, 005043, 025085, 201131, 202129, 002150, 008023, 008072, 014027, 008072, + 014027, 002150, 008023, 008072, 014027, 008072, 014027, 002150, 008023, 008072, + 014027, 008072, 014027, 202000, 201000, 201132, 202129, 002150, 008023, 008072, + 012063, 008072, 012063, 002150, 008023, 008072, 012063, 008072, 012063, 008023, + 008072, 012063, 008072, 012063, 002150, 008023, 008072, 012063, 008072, 012063, + 202000, 201000 ] +"310014" = [ 301072, 303041, 304011 ] +"310015" = [ 301072, 007024, 010002, 303041, 101003, 304032, 002152, 002024, 007004, 007004, + 013003, 101003, 304033 ] +"310016" = [ 301072, 007024, 010002, 303041, 101012, 304032, 002152, 002024, 007004, 007004, + 013003, 101012, 304033 ] +"310018" = [ 001007, 005040, 004001, 004043, 004004, 004005, 004006, 207002, 026030, 207000, + 005002, 006002, 033072, 007025, 005022, 207002, 015001, 207000, 008003, 207001, + 010004, 207000, 008003, 008003, 033042, 207001, 007004, 207000, 207002, 015001, + 207000, 008003, 207002, 020081, 207000, 020065, 008029, 207004, 015030, 207000, + 008075 ] +"310019" = [ 001007, 002019, 301011, 301013, 301023, 007025, 008021, 007025, 008021, 007025, + 008021, 008029, 005040, 008075, 008003, 010004, 008003, 207002, 015001, 207000, + 033070, 015030, 207002, 020081, 207000, 008003, 033042, 007004, 207002, 015001, + 207000, 008003, 113021, 007004, 007004, 207002, 008021, 015005, 008021, 015005, + 033007, 207000, 008026, 101020, 025143, 008026, 008043, 109015, 007004, 008090, + 207006, 015008, 207000, 008090, 207002, 033007, 207000, 008043, 033071, 108008, + 202124, 201107, 002071, 201000, 202000, 207002, 020081, 207000 ] +"310020" = [ 310022, 301011, 301013, 301021, 304034, 310021 ] +"310021" = [ 108000, 031001, 201131, 202129, 007004, 007004, 202000, 201000, 015020, 010002 + ] +"310022" = [ 001007, 002019, 001033, 002172 ] +"310023" = [ 301072, 030021, 030022, 008012, 007024, 007025, 010002, 101012, 304032, 105002, + 002152, 002024, 007004, 007004, 013003, 101012, 304033 ] +"310024" = [ 301072, 030021, 030022, 008012, 007024, 007025, 010002, 101003, 304032, 105002, + 002152, 002024, 007004, 007004, 013003, 101003, 304033 ] +"310025" = [ 001007, 008021, 004001, 004002, 004003, 004004, 004005, 201138, 202131, 004006, + 202000, 201000, 201132, 005041, 201000, 201129, 005043, 201000, 005002, 006002, + 013040, 020029, 104024, 005042, 012163, 021083, 021084, 115003, 004001, 004002, + 004003, 201142, 202131, 004026, 202000, 201000, 005001, 006001, 201138, 202129, + 007001, 202000, 201000, 008021, 004001, 004002, 004003, 004004, 004005, 005040, + 101003, 012070, 025054, 101004, 025055, 008007, 104028, 005002, 006002, 002111, + 005021 ] +"310026" = [ 310022, 025060, 008021, 301011, 301012, 201138, 202131, 004006, 202000, 201000, + 033039, 033007, 304030, 304031, 002020, 001050, 202127, 304030, 202000, 304031, + 201133, 202131, 004016, 202000, 201000, 301021, 304030, 010035, 005021, 010036, + 113000, 031002, 301021, 005021, 108000, 031001, 002121, 007040, 015037, 008023, + 201125, 015037, 201000, 008023, 033007, 108000, 031002, 007007, 015036, 008023, + 201123, 015036, 201000, 008023, 033007, 116000, 031002, 007009, 010004, 012001, + 013001, 008023, 201120, 010004, 201000, 201122, 012001, 201000, 201123, 013001, + 201000, 008023, 033007, 008003, 007009, 010004, 008023, 201120, 010004, 201000, + 008023, 033007 ] +"310027" = [ 301071, 301011, 301013, 301021, 030021, 030022, 010002, 304036, 002152, 002167, + 101011, 304035 ] +"310028" = [ 301071, 301011, 301013, 301021, 030021, 030022, 010002, 304036, 002152, 002167, + 101011, 304037 ] +"310029" = [ 110000, 031001, 201138, 202130, 007004, 007004, 202000, 201000, 015020, 010002, + 012101, 013098 ] +"310030" = [ 310022, 301011, 301013, 301021, 304034, 310029 ] +"310050" = [ 310051, 310052, 101000, 031002, 310053, 101004, 310054, 020010, 310052, 101015, + 310053, 310052, 101005, 310053 ] +"310051" = [ 001007, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001, + 202000, 007025, 005022, 102009, 002151, 012064 ] +"310052" = [ 002019, 301011, 301012, 202131, 201138, 004006, 201000, 202000, 301021, 007024, + 005021, 005043 ] +"310053" = [ 201134, 005042, 201000, 025076, 033032, 012163 ] +"310054" = [ 201134, 005042, 201000, 025076, 033032, 201131, 202129, 102002, 008023, 014027, + 008023, 202000, 201000 ] +"310055" = [ 310051, 310052, 102020, 025076, 025052, 101000, 031002, 025050 ] +"310060" = [ 001007, 001033, 002019, 002020, 301011, 301012, 207003, 004006, 207000, 304030, + 301021, 007024, 005021, 007025, 005022, 008075, 201133, 005041, 201000, 005045, + 005043, 005040, 010001, 201129, 007002, 201000, 202127, 201125, 021166, 201000, + 202000, 008012, 020010, 020014, 002165, 033075, 107003, 008076, 006029, 006029, + 025140, 025141, 033076, 033077, 008076, 033078, 033003, 104000, 031002, 201133, + 005042, 201000, 014044 ] +"310061" = [ 001007, 001033, 001034, 002019, 002020, 301011, 301012, 207003, 004006, 207000, + 005040, 005041, 005043, 033079, 033080, 033078, 301021, 201129, 007002, 201000, + 007024, 005021, 007025, 005022, 025075, 111000, 031002, 005042, 202131, 002153, + 002154, 202000, 002104, 012066, 012163, 012158, 012159, 033081 ] +"310062" = [ 001007, 001033, 001034, 002019, 002020, 301011, 301012, 207003, 004006, 207000, + 005040, 201133, 005041, 005043, 201000, 008076, 033082, 301021, 201129, 007002, + 201000, 007024, 005021, 007025, 005022, 008072, 008029, 105000, 031002, 005042, + 002155, 033083, 014043, 015042 ] +"310063" = [ 001007, 001033, 001034, 002019, 002020, 301011, 301012, 207003, 004006, 207000, + 005040, 201133, 005041, 005043, 201000, 033082, 301021, 201129, 007002, 201000, + 007024, 005021, 007025, 005022, 008075, 008013, 008072, 033084, 007062, 033086, + 022043, 007062, 007062, 033086, 022043 ] +"310064" = [ 001007, 001033, 001034, 002019, 002020, 301011, 301012, 207003, 004006, 207000, + 005040, 201133, 005041, 005043, 201000, 033082, 301021, 201129, 007002, 201000, + 007024, 005021, 007025, 005022, 008075, 008029, 008046, 033085, 033086, 015049, + 033086, 102011, 002155, 015062 ] +"310065" = [ 001007, 001033, 001034, 002019, 002020, 301011, 301012, 207003, 004006, 207000, + 005040, 033082, 301021, 201129, 007002, 201000, 007024, 005021, 007025, 005022, + 008075, 033071, 033070, 020021, 015045, 015046, 008065, 033087, 008003, 010004, + 008003, 207002, 015001, 207000, 105012, 010040, 010004, 207003, 015005, 207000, + 008046, 107019, 010040, 010004, 008090, 207006, 015008, 207000, 008090 ] +"310066" = [ 001007, 001033, 001034, 002019, 002020, 301011, 301012, 207003, 004006, 207000, + 005040, 033082, 301021, 201129, 007002, 201000, 007024, 005021, 007025, 005022, + 008075, 020081, 207004, 015030, 207000, 020065, 015041, 033086, 033087, 033088, + 008003, 207001, 007004, 207000, 008003, 207002, 015001, 207000, 008003, 033042, + 207001, 007004, 207000, 207002, 015001, 207000, 008003, 001032, 207002, 015001, + 207000 ] +"310067" = [ 001033, 001034, 025061, 025062, 001007, 002153, 001012, 201138, 002026, 002027, + 201000, 002028, 002029, 002161, 002164, 002023, 008012, 008013, 001124, 005001, + 006001, 004001, 004002, 004003, 004004, 004005, 004006, 004086, 011001, 011002, + 011003, 011004, 002162, 007004, 012001, 020014, 007024, 001023, 104000, 031001, + 002162, 007004, 012001, 020014, 113000, 031001, 004086, 002020, 001007, 002019, + 005042, 002153, 005040, 007024, 005021, 002162, 007004, 012001, 020014, 119000, + 031001, 004086, 004086, 005001, 006001, 011003, 011004, 011113, 025148, 103000, + 031001, 008023, 011003, 011004, 008023, 103000, 031001, 020111, 020112, 020114, + 001033, 008021, 011095, 011096, 007004, 008021, 011095, 011096, 007004, 008021, + 008086, 011095, 011096, 007004, 008086, 102004, 001032, 033007, 008092, 011003, + 011004, 007004, 008092, 033066, 020081, 020012, 020056, 117000, 031001, 008023, + 020016, 008092, 008003, 012001, 008003, 020016, 008092, 025149, 020016, 020014, + 013093, 013109, 040038, 008011, 014050, 008011, 008023 ] +"310068" = [ 008070, 001033, 001034, 001007, 002019, 012064, 005040, 201136, 005041, 201000, + 005043, 301011, 301012, 201138, 202131, 004006, 202000, 201000, 005001, 006001, + 202126, 007001, 202000, 010007, 007024, 005021, 007025, 005022, 013040, 012101, + 201131, 202129, 011011, 202000, 201000, 201130, 202129, 011012, 202000, 201000, + 020029, 020010, 020014, 013162, 014050 ] +"310069" = [ 005042, 201139, 002155, 201000, 025077, 025078, 033007, 201132, 202129, 012063, + 202000, 201000 ] +"310070" = [ 310068, 101013, 310069 ] +"310071" = [ 310068, 101015, 310069 ] +"310072" = [ 310068, 101026, 310069 ] +"310077" = [ 001033, 001034, 025061, 025062, 001007, 002153, 001012, 201138, 002026, 002027, + 201000, 002028, 002029, 002161, 002164, 002023, 008012, 008013, 001124, 005001, + 006001, 004001, 004002, 004003, 004004, 004005, 004006, 004086, 002162, 007004, + 011001, 011002, 011003, 011004, 012001, 020014, 007024, 001023, 104000, 031001, + 002162, 007004, 012001, 020014, 113000, 031001, 004086, 002020, 001007, 002019, + 005042, 002153, 005040, 007024, 005021, 002162, 007004, 012001, 020014, 119000, + 031001, 004086, 004086, 005001, 006001, 011003, 011004, 011113, 025148, 103000, + 031001, 008023, 011003, 011004, 008023, 103000, 031001, 020111, 020112, 020114, + 001033, 008021, 007004, 011095, 011096, 008021, 007004, 011095, 011096, 008021, + 008086, 007004, 011095, 011096, 008086, 102004, 001044, 033007, 008092, 007004, + 011003, 011004, 008092, 033066, 020081, 020012, 020056, 117000, 031001, 008023, + 020016, 008092, 008003, 012001, 008003, 020016, 008092, 025149, 020016, 020014, + 013093, 013109, 040038, 008011, 014050, 008011, 008023 ] +"311001" = [ 301051, 007002, 012001, 011001, 011002, 011031, 011032, 011033, 020041 ] +"311002" = [ 301065, 301066, 311003, 311004 ] +"311003" = [ 010070, 011001, 011002, 012001, 013002 ] +"311004" = [ 101000, 031000, 011034, 101000, 031000, 011035, 101000, 031000, 011075, 101000, + 031000, 011076, 101000, 031000, 033025, 101000, 031000, 033026 ] +"311005" = [ 001008, 001023, 301021, 301011, 301013, 007010, 008009, 011001, 011002, 011031, + 011036, 012101, 033025 ] +"311006" = [ 007010, 011001, 011002, 002064, 012101, 012103 ] +"311007" = [ 007010, 301021, 011001, 011002, 002064, 012101, 012103 ] +"311008" = [ 001008, 301011, 301013, 301021, 008004, 101000, 031001, 311006 ] +"311009" = [ 001008, 301011, 301013, 301021, 008004, 101000, 031001, 311007 ] +"311010" = [ 001008, 001023, 001006, 001110, 001111, 001112, 204002, 031021, 301011, 301013, + 301021, 007010, 010053, 008009, 011001, 011002, 002064, 011100, 011101, 011102, + 011103, 011104, 012101, 002170, 201144, 202133, 013002, 202000, 201000, 201135, + 202130, 013003, 202000, 201000, 101000, 031000, 012103, 033026, 101000, 031000, + 020042, 103000, 031000, 020043, 020044, 020045, 101000, 031000, 033025, 103000, + 031001, 011075, 011076, 011039, 102000, 031000, 011037, 011077, 103000, 031000, + 011034, 011035, 011036, 204000, 119000, 031001, 301011, 301013, 301021, 007007, + 011105, 204007, 031021, 011076, 011075, 204000, 011106, 011107, 011108, 011109, + 012101, 011001, 201130, 011084, 201000 ] +"311011" = [ 001023, 008004, 301011, 301013, 005002, 006002, 007004, 011001, 011002, 012101, + 106000, 031001, 008046, 201139, 202126, 015026, 202000, 201000, 106000, 031001, + 008046, 201138, 202130, 015026, 202000, 201000, 015052, 015053, 015054, 015055, + 007004, 007004, 013099, 013100, 013101 ] +"312001" = [ 301043, 304001 ] +"312002" = [ 301043, 304002 ] +"312003" = [ 301042, 304003 ] +"312004" = [ 301042, 304004 ] +"312005" = [ 301042, 020014 ] +"312006" = [ 301044, 304005 ] +"312007" = [ 301042, 304006 ] +"312010" = [ 001007, 005040, 002021, 005041, 004001, 004043 ] +"312011" = [ 202131, 201149, 004006, 201000, 202126, 010002, 202000, 005043, 005053 ] +"312012" = [ 202129, 201132, 101019, 012063, 201000, 202000 ] +"312013" = [ 005042, 202129, 201135, 012063, 201000, 202000 ] +"312014" = [ 312010, 312011, 105056, 301023, 005042, 005052, 312012, 312013 ] +"312015" = [ 109011, 301023, 005042, 005052, 202129, 201132, 101004, 012063, 202000, 201000 + ] +"312016" = [ 312010, 312011, 312015 ] +"312017" = [ 109008, 301023, 005042, 005052, 202129, 201132, 101003, 012063, 202000, 201000 + ] +"312018" = [ 312010, 312011, 312017 ] +"312019" = [ 301047, 301048, 015015, 029002, 021076, 106012, 201129, 006030, 201000, 102012, + 005030, 021075, 021066 ] +"312020" = [ 301047, 301048, 015015, 029002, 021076, 104012, 006030, 102012, 005030, 021075, + 021066 ] +"312021" = [ 301047, 101003, 301049, 011012, 011011, 021067 ] +"312022" = [ 301047, 008022, 011012, 011050, 022070, 022026, 312041, 010050, 021068, 021071, + 021072, 021073, 312042, 021062, 015011 ] +"312023" = [ 301047, 103003, 008022, 012061, 022050, 021069, 021085 ] +"312024" = [ 312020, 008060, 008022, 008060, 008022, 025014, 022101, 022097, 022098, 022099, + 022100 ] +"312025" = [ 312019, 008060, 008022, 008060, 008022, 025014, 022101, 022097, 022098, 022099, + 022100 ] +"312026" = [ 301046, 301011, 301013, 301023, 312031, 101004, 312030, 021110, 301023, 321027, + 021111, 301023, 321027, 021112, 301023, 321027, 021113, 301023, 321027 ] +"312027" = [ 301047, 105009, 301023, 007021, 012061, 007021, 012061, 021085, 021070 ] +"312028" = [ 301046, 301011, 301013, 301023, 008025, 201136, 004006, 201000, 312031, 312032, + 101004, 312030, 101002, 312033, 021110, 301023, 321028, 021111, 301023, 321028, + 021112, 301023, 321028, 021113, 301023, 321028 ] +"312030" = [ 201130, 202129, 011012, 202000, 201000, 011052, 201135, 202130, 011011, 202000, + 201000, 011053, 021104 ] +"312031" = [ 005034, 006034, 021109, 011081, 011082, 021101, 021102, 021103 ] +"312032" = [ 021120, 021121, 013055, 021122 ] +"312033" = [ 002104, 008022, 012063, 012065 ] +"312041" = [ 201141, 202130, 007001, 201000, 202000 ] +"312042" = [ 021077, 021078, 021079, 021080, 021081, 021082 ] +"312045" = [ 001007, 002019, 001096, 025061, 005040, 301011, 301013, 301021, 007002, 012180, + 012181, 012182, 012183, 012184, 012185, 002174, 021086, 012186, 021087, 012187, + 033043 ] +"312050" = [ 001007, 002019, 001096, 025061, 005040, 301011, 301013, 301021, 007025, 005022, + 010080, 027080, 008003, 007004, 013093, 008003, 201131, 202129, 007004, 007004, + 202000, 201000, 013095 ] +"312051" = [ 001007, 002019, 001096, 025061, 005040, 008075, 301011, 301013, 301021, 001012, + 201131, 001013, 201000, 010032, 010033, 010034, 007002, 008012, 025110, 025111, + 025102, 002104, 025103, 025104, 025105, 025106, 025107, 025108, 002111, 002121, + 002026, 002027, 021130, 021131, 021132, 021133, 021064, 025014, 021134, 107018, + 005030, 105024, 201130, 006030, 201000, 021135, 021136, 033044 ] +"312052" = [ 001007, 002019, 001096, 025061, 005040, 025120, 025121, 025124, 025125, 025122, + 025123, 301011, 301013, 301021, 007002, 002119, 033047, 010081, 010082, 010083, + 010084, 002116, 002117, 002118, 002156, 002157, 014055, 022150, 022151, 022152, + 022153, 022154, 022155, 022156, 022157, 022158, 022159, 021137, 021138, 021139, + 021140, 021141, 021142, 010085, 010086, 010087, 010088, 010089, 010090, 010091, + 010092, 010093, 011002, 025126, 025127, 025128, 025129, 025130, 025131, 025132, + 025133, 025134, 025135, 025136, 025137, 013096, 013097, 011095, 011096, 012188, + 012189, 002158, 002159, 033052, 033053, 021143, 021144 ] +"312053" = [ 001007, 002019, 001096, 025061, 005040, 008075, 301011, 301013, 301021, 001012, + 201131, 001013, 201000, 010032, 010033, 010034, 007002, 008012, 025110, 025111, + 025102, 002104, 025103, 025104, 025105, 025106, 025107, 025108, 011001, 011002, + 022160, 025138, 201130, 202129, 022021, 202000, 201000, 033048, 033049, 002026, + 002027, 021130, 021131, 021132, 021133, 025014, 106036, 005030, 104024, 201130, + 006030, 201000, 022161, 033044 ] +"312055" = [ 005033, 005040, 006034, 010095, 021157 ] +"312056" = [ 025060, 001032, 011082, 011081, 020095, 020096, 021155, 201133, 021101, 021102, + 201000 ] +"312057" = [ 201130, 202129, 011012, 202000, 201000, 201131, 202129, 011011, 202000, 201000, + 021156, 021104 ] +"312058" = [ 301125, 301011, 301013, 301021, 312055, 021150, 101003, 321030 ] +"312059" = [ 312056, 101000, 031001, 312057 ] +"312060" = [ 025060, 025062, 040001, 040002, 021062, 021151, 021152, 021153, 021154, 021062, + 021088, 040003, 040004, 040005, 040006, 040007, 020065, 040008, 040009, 040010 + ] +"312061" = [ 312058, 312060, 312059 ] +"312070" = [ 001007, 002019, 001144, 001124, 030010, 301011, 301013, 301021, 007012, 015012, + 012165, 012166, 012167, 012168, 027010, 028010, 002099, 013048, 025081, 025082, + 025083, 025084, 012080, 012081, 012082, 025174, 033028 ] +"312071" = [ 001007, 002019, 002139, 001096, 001040, 025061, 005040, 005044, 008075, 008077, + 004001, 004002, 004003, 004004, 004005, 004006, 005001, 006001, 010081, 022156, + 022142, 101020, 022149, 022143, 022144, 021137, 101020, 021181, 021138, 021180, + 021177, 021178, 021179, 010079, 010085, 010086, 010087, 010089, 010090, 010091, + 010092, 010093, 011097, 021093, 101020, 021182, 033053, 022151, 022145, 022148, + 022146, 022147, 025126, 025128, 025127, 021176, 025132, 025133, 025182, 025183, + 025180, 025184, 025181, 033080 ] +"313009" = [ 021001, 101000, 031001, 021001 ] +"313010" = [ 021036, 101000, 031001, 021036 ] +"313031" = [ 006002, 006012, 101000, 031002, 030001 ] +"313032" = [ 005002, 005012, 101000, 031002, 313031 ] +"313041" = [ 006002, 110000, 031001, 104000, 031001, 006012, 101000, 031012, 030001, 006012, + 101000, 031001, 030001 ] +"313042" = [ 005002, 005012, 101000, 031002, 313041 ] +"313043" = [ 006002, 005002, 005012, 112000, 031001, 110000, 031001, 104000, 031001, 006012, + 101000, 031011, 030001, 006012, 101000, 031001, 030001 ] +"315001" = [ 001011, 301011, 301012, 301023, 306001 ] +"315002" = [ 001011, 301011, 301012, 301023, 306004 ] +"315003" = [ 001087, 001085, 001086, 002036, 002148, 002149, 022055, 022056, 022067, 301011, + 301012, 301021, 008080, 033050, 109000, 031002, 007065, 008080, 033050, 022045, + 008080, 033050, 022064, 008080, 033050 ] +"315004" = [ 001079, 001011, 001103, 001087, 001019, 001080, 005036, 001036, 001013, 001012, + 301011, 301012, 301021, 007032, 007033, 002002, 011002, 011001, 007032, 007033, + 012101, 012103, 007032, 007033, 302021, 002031, 002030, 022005, 022032, 022063, + 008080, 033050, 022178, 022177, 022067, 008041, 026021, 026022, 026023, 022068, + 025061, 008041, 008080, 002171, 302090, 002171, 002032, 315005 ] +"315005" = [ 106000, 031002, 007063, 008080, 033050, 022043, 008080, 033050 ] +"315007" = [ 301003, 001019, 001103, 001087, 001036, 001115, 001080, 005036, 301011, 301012, + 301021, 001079, 001023, 022063, 101000, 031000, 302001, 101000, 031000, 302021, + 101000, 031000, 302052, 101000, 031000, 302059, 022067, 002171, 302090, 306033, + 306034, 002171, 022067, 002038, 022067, 022068, 002171, 002033, 002032, 022056, + 003011, 306035, 107000, 031000, 002032, 003010, 002031, 002040, 022056, 003011, + 306036, 104000, 031000, 002032, 003012, 003011, 306037 ] +"315008" = [ 301126, 306038, 101000, 031000, 302091, 101000, 031000, 302082, 101000, 031000, + 306039, 101000, 031000, 306040, 102000, 031000, 002005, 306041, 102000, 031000, + 002005, 306004, 101000, 031000, 306005 ] +"315009" = [ 001087, 001019, 002149, 008021, 301011, 301012, 301021, 208016, 001051, 208000, + 002148, 001012, 001014, 033022, 033023, 033027, 025026, 002034, 022060, 007070, + 002190, 008021, 301011, 301012, 002005, 022043, 002033, 022059, 008029, 013115, + 103000, 031000, 002005, 306004, 002005, 010004, 010051, 102000, 031000, 007033, + 012101, 101000, 031000, 306042, 101000, 031000, 306039 ] +"316001" = [ 301011, 004004, 301023, 001021, 002041, 019001, 010051, 019002, 019003, 019004 + ] +"316002" = [ 008021, 004001, 004002, 004003, 004004, 004005, 001033, 008021, 004001, 004002, + 004003, 004004, 004005, 007002, 007002 ] +"316003" = [ 110000, 031001, 008011, 008007, 104000, 031001, 005002, 006002, 010002, 011002, + 008007, 008011 ] +"316004" = [ 111000, 031001, 008011, 008007, 007002, 007002, 102000, 031001, 005002, 006002, + 011031, 008007, 008011 ] +"316005" = [ 108000, 031001, 008005, 008007, 005002, 006002, 001026, 019001, 008007, 008005 + ] +"316006" = [ 112000, 031001, 008011, 008007, 007002, 007002, 102000, 031001, 005002, 006002, + 020011, 020012, 008007, 008011 ] +"316007" = [ 110000, 031001, 008011, 008007, 104000, 031001, 005002, 006002, 019005, 019006, + 008007, 008011 ] +"316008" = [ 111000, 031001, 008001, 008007, 008023, 103000, 031001, 005002, 006002, 010002, + 008023, 008007, 008001 ] +"316009" = [ 111000, 031001, 008011, 008007, 007002, 007002, 102000, 031001, 005002, 006002, + 020041, 008007, 008011 ] +"316010" = [ 107000, 031001, 008011, 008007, 001022, 005002, 006002, 008007, 008011 ] +"316011" = [ 117000, 031001, 008011, 001022, 008007, 102000, 031001, 005002, 006002, 008021, + 004001, 004002, 004003, 004004, 004005, 020090, 008021, 008007, 008011 ] +"316020" = [ 001033, 001025, 001027, 301011, 301012 ] +"316021" = [ 301023, 002041, 019001, 019007, 019005, 019006, 019008, 008005, 010004, 008005, + 010004, 019007, 008005, 008021, 004075, 011040, 019007, 105004, 005021, 005021, + 102002, 019003, 019004 ] +"316022" = [ 001032, 002041, 019001, 019010, 118000, 031001, 008021, 004014, 008005, 301023, + 019005, 019006, 010004, 011041, 008021, 004075, 011040, 019008, 105004, 005021, + 005021, 102002, 019003, 019004 ] +"316026" = [ 316020, 316021 ] +"316027" = [ 316020, 316022 ] +"316030" = [ 301014, 001037, 010064, 008019, 001062, 008019, 001065, 008019, 001062, 008019 + ] +"316031" = [ 008021, 301011, 301012, 301027, 019005, 019006, 020028, 008021 ] +"316032" = [ 008021, 301011, 301012, 301027, 008021 ] +"316033" = [ 008021, 301011, 301012, 101000, 031001, 301027, 008021 ] +"316034" = [ 008079, 316030, 008011, 001022, 008007, 301023, 008007, 020090, 316031, 101000, + 031000, 316032, 101000, 031001, 316033, 008011, 008079 ] +"316035" = [ 008079, 316030, 008011, 020023, 020021, 020008, 316031, 008011, 008079 ] +"316036" = [ 008079, 316030, 008011, 001027, 316031, 101000, 031000, 316032, 101000, 031001, + 316033, 008011, 008079 ] +"316037" = [ 008079, 316030, 008011, 011031, 316031, 008011, 008079 ] +"316038" = [ 008079, 316030, 008011, 020041, 020021, 316031, 008011, 008079 ] +"316039" = [ 008079, 316030, 008011, 020024, 316031, 008011, 008079 ] +"316040" = [ 316030, 008079, 301014, 001037, 010064, 008079 ] +"316050" = [ 301001, 301011, 301012, 002160, 008005, 005002, 006002, 008005, 019100, 019005, + 019006, 019101, 019102, 019103, 019104, 019105 ] +"316052" = [ 301005, 301011, 301012, 001007, 025150, 122000, 031001, 001027, 019150, 019106, + 008005, 005002, 006002, 008005, 019107, 019005, 019006, 019108, 019109, 019110, + 019111, 019112, 019113, 019114, 019115, 019116, 019117, 019118, 019119 ] +"316060" = [ 301011, 301012, 005002, 006002, 019005, 019006, 005002, 006002, 005002, 006002, + 004074, 020048, 011041, 013055 ] +"316061" = [ 301011, 301012, 005002, 006002, 019005, 019006, 102000, 031001, 005002, 006002, + 102000, 031001, 005002, 006002, 004074, 020048, 011041, 013055 ] +"316071" = [ 301014, 101000, 031002, 316075, 101000, 031002, 316076 ] +"316072" = [ 301014, 101000, 031002, 316077, 101000, 031002, 316078, 101000, 031002, 316079 + ] +"316073" = [ 301014, 101000, 031002, 316080, 101000, 031002, 316081 ] +"316074" = [ 001039, 008021, 301014, 301027, 008021 ] +"316075" = [ 008079, 008041, 316074, 020006, 033042, 020013, 033042, 020001, 020025, 020026, + 008041, 008079 ] +"316076" = [ 008079, 008041, 316074, 020006, 020025, 020026, 008041, 008079 ] +"316077" = [ 008079, 008011, 316074, 011031, 008011, 008079 ] +"316078" = [ 008079, 008041, 316074, 033042, 011012, 008041, 008079 ] +"316079" = [ 008079, 008011, 316074, 020023, 020024, 008011, 008079 ] +"316080" = [ 008079, 008011, 316074, 020041, 008011, 008079 ] +"316081" = [ 008079, 008041, 316074, 008041, 008079 ] +"318001" = [ 301025, 024011 ] +"318003" = [ 301026, 024005, 024004, 024021 ] +"318004" = [ 301025, 004023, 013011, 024005, 024004, 024022 ] +"321001" = [ 002101, 002114, 002105, 002106, 002107, 002121 ] +"321003" = [ 021051, 021014, 021017, 021030 ] +"321004" = [ 301031, 002003, 101000, 031001, 321003 ] +"321005" = [ 025004, 002121, 002122, 002123, 002124, 002125, 002126, 002127, 002128, 002129, + 002130, 002131 ] +"321006" = [ 025001, 025002, 025003, 025005 ] +"321007" = [ 025009, 025010, 025011, 025012, 025013, 025015, 025016, 025017 ] +"321008" = [ 025006, 025007, 025008 ] +"321009" = [ 025018, 025019 ] +"321010" = [ 002101, 007002, 002102, 002103, 002104, 002105, 002106, 002107, 002108, 002109, + 002110, 002132, 002133 ] +"321011" = [ 030031, 030032, 029002 ] +"321012" = [ 101000, 031001, 002135 ] +"321021" = [ 002003, 002101, 201130, 002106, 201000, 201132, 202130, 002121, 202000, 201000, + 201133, 202129, 025001, 202000, 201000 ] +"321022" = [ 007007, 204001, 031021, 011001, 204000, 011002, 204001, 031021, 011006, 204000, + 021030 ] +"321023" = [ 007007, 021091, 021030, 202129, 021014, 201129, 021017, 202000, 201000 ] +"321024" = [ 007007, 204001, 031021, 012007, 011006, 204000, 021030 ] +"321025" = [ 007007, 021091, 021030, 202129, 021014, 201129, 021017, 202000, 201000, 021092, + 021030, 025092, 201129, 202129, 021017, 202000, 201000 ] +"321026" = [ 007007, 204001, 031021, 012007, 025091, 011071, 011072, 011073, 011074, 204000 + ] +"321027" = [ 021118, 202129, 201132, 002112, 201000, 201131, 002111, 201000, 202000, 002104, + 021105, 021106, 021107, 021114, 021115, 021116, 008018, 021117 ] +"321028" = [ 021118, 202129, 201132, 002112, 201000, 201131, 002111, 201000, 202000, 002104, + 021123, 021106, 021107, 021114, 021115, 021116, 008018, 021117 ] +"321030" = [ 008085, 202129, 201131, 002111, 201000, 202000, 002134, 021062, 021063, 021158, + 021159, 021160, 021161, 021162, 021163, 021164, 021165, 021166 ] +"322028" = [ 001007, 002019, 004001, 004002, 004003, 004004, 004005, 004006, 005001, 006001, + 027001, 028001, 027001, 028001, 027001, 028001, 027001, 028001, 010001, 014019, + 007025, 010080, 005023, 020010, 008003, 007004, 014026, 020014, 013093, 105000, + 031001, 007004, 007004, 008043, 008044, 015021 ] +"340001" = [ 001007, 001031, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131, + 201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022, + 005043, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001, + 202000, 033060, 033061, 033062, 033063, 033064, 033065, 101010, 340002, 101087, + 340003, 002019, 025051, 101007, 340004 ] +"340002" = [ 025140, 025141, 025142 ] +"340003" = [ 104100, 201136, 005042, 201000, 014046 ] +"340004" = [ 005060, 005061, 025085, 105006, 005042, 025142, 014047, 025142, 014048 ] +"340005" = [ 001007, 002019, 001096, 025061, 005044, 005040, 001030, 004001, 004002, 004003, + 004004, 004005, 004007, 005001, 006001, 008029, 008074, 008077, 040011, 025097, + 025095, 025098, 025099, 021144, 025096, 040012, 040013, 021169, 022151, 022162, + 022163, 025160, 025133, 022156, 022164, 022165, 022166, 021137, 021138, 022167, + 021139, 021118, 021145, 021146, 021147, 022168, 022169, 022170, 025161, 025162, + 022171, 022172, 022173, 022174, 021170, 021171, 022175, 021172, 021118, 021173, + 021174, 021175, 002153, 012063, 002153, 012063, 002153, 012063, 013090, 013091, + 007002, 011097, 011098, 007002, 011095, 011096, 010096, 010081, 010082, 010083, + 010101, 025132, 025163, 025126, 025128, 025164, 010085, 010097, 010086, 010087, + 010092, 010088, 010089, 010098, 010099, 010090, 010100, 010093, 025127, 040014 + ] +"340007" = [ 001007, 001031, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131, + 201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022, + 005043, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001, + 202000, 103003, 025140, 025141, 033060, 033061, 033062, 033063, 033064, 033065, + 040020, 101010, 340002, 101087, 340003, 002019, 025051, 101007, 340004, 020081, + 008029, 020083, 008029, 040018, 040019, 040021, 040022 ] +"340008" = [ 001007, 001031, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131, + 201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022, + 005043, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001, + 202000, 103003, 025140, 025141, 033060, 033061, 033062, 033063, 033064, 033065, + 040020, 101010, 340002, 104000, 031002, 201136, 005042, 201000, 014046, 108003, + 025140, 025141, 040026, 040016, 025062, 101000, 031002, 040017, 002019, 025051, + 101007, 340004, 020081, 008029, 020083, 008029, 040018, 040019, 040021, 040022 + ] +"340009" = [ 001007, 001031, 002019, 002020, 301011, 301013, 005040, 201136, 005041, 201000, + 025071, 005001, 005001, 006001, 006001, 107064, 106032, 008012, 008013, 008065, + 008072, 013039, 040015 ] +"340010" = [ 001007, 002019, 001096, 025061, 005044, 005040, 001030, 004001, 004002, 004003, + 004004, 004005, 004007, 005001, 006001, 008029, 008074, 008077, 040011, 025097, + 025095, 025098, 025099, 021144, 025096, 040012, 040013, 021169, 040023, 040024, + 040025, 022151, 022162, 022163, 025160, 025133, 022156, 022164, 022165, 022166, + 021137, 021138, 022167, 021139, 021118, 021145, 021146, 021147, 022168, 022169, + 022170, 025161, 025162, 022171, 022172, 022173, 022174, 021170, 021171, 022175, + 021172, 021118, 021173, 021174, 021175, 002153, 012063, 002153, 012063, 002153, + 012063, 013090, 013091, 007002, 011097, 011098, 007002, 011095, 011096, 010096, + 010081, 010082, 010083, 010101, 025132, 025163, 025126, 025128, 025164, 010085, + 010097, 010086, 010087, 010092, 010088, 010089, 010098, 010099, 010090, 010100, + 010093, 025127, 040014, 010102 ] +"340011" = [ 001007, 002019, 001096, 025061, 005044, 005040, 001030, 004001, 004002, 004003, + 004004, 004005, 004007, 005001, 006001, 008029, 008077, 040011, 025097, 025112, + 025113, 021148, 021169, 040024, 040025, 002153, 022189, 022191, 022130, 025167, + 025166, 022190, 022131, 022132, 022133, 021183, 021184, 022134, 021185, 021118, + 021186, 021187, 021188, 002153, 012063, 002153, 012063, 013090, 013160, 007002, + 011097, 007002, 011095, 011096, 010096, 010081, 010082, 010083, 010101, 002153, + 025165, 025126, 025128, 025164, 010085, 010086, 010087, 010092, 010088, 010089, + 010098, 010099, 010090, 010100, 010093, 025127, 040014, 010102 ] +"340012" = [ 001007, 002019, 008091, 005001, 006001, 007002, 005063, 005064, 005066, 005041, + 005067, 301011, 301012, 004007, 008091, 005001, 006001, 107000, 031001, 005042, + 002153, 002104, 040028, 007024, 040027, 012063 ] +"340013" = [ 001007, 002019, 001033, 001034, 004001, 004002, 004003, 004004, 004005, 004007, + 005068, 005070, 005069, 040036, 008091, 005001, 006001, 004016, 008091, 005001, + 006001, 004016, 008091, 005001, 006001, 004016, 008091, 007071, 005021, 007021, + 040035, 008091, 007071, 005021, 007021, 040035, 008091, 007071, 005021, 007021, + 040035, 040029, 040030, 040031, 025187, 010004, 012001, 040037, 040032, 040033, + 040034 ] +"340015" = [ 001007, 002019, 301011, 301012, 004007, 201133, 005041, 201000, 201130, 005043, + 201000, 207001, 005002, 006002, 207000, 040027, 013040, 021120, 207003, 102003, + 002186, 013155, 207000, 033003 ] +"340016" = [ 301129, 301130, 301131, 202134, 007001, 202000, 101000, 031002, 340002, 101000, + 031002, 304039, 101000, 031002, 304040 ] +"340017" = [ 001007, 002019, 005044, 001096, 005040, 001040, 025061, 025182, 025183, 025181, + 025184, 301011, 301013, 004007, 301021, 005063, 005064, 005066, 010081, 010082, + 008075, 025090, 008029, 201137, 202129, 006021, 202000, 201000, 010087, 025096, + 040012, 008077, 104002, 002153, 012063, 012065, 040013, 007002, 011098, 013090, + 013091, 025164, 025095, 040023, 025113, 008074, 025190, 021144, 025191, 021143, + 013055, 021169, 010101, 015012, 007002, 011097, 040024, 007002, 025126, 025128, + 040011, 007002, 011095, 011096, 010088, 010089, 010090, 010092, 010093, 010098, + 010099, 010100, 025127, 040014, 010085, 010086, 010096, 010103, 010102, 022080, + 008076, 022189, 022191, 022130, 025165, 025166, 025167, 021183, 021184, 022134, + 021122, 022190, 022131, 022132, 022133, 021186, 021187, 021188, 021185, 025112, + 025113, 033092, 008076, 022189, 022191, 022130, 025165, 025166, 025167, 021183, + 021184, 022134, 021122, 022190, 022131, 022132, 022133, 021186, 021187, 021188, + 021185, 025112, 025113, 033092, 025190, 011097, 013090, 013091, 021143, 021184, + 025128, 025163, 025164, 010102, 022189, 022191, 022130, 025166, 021183, 021184, + 022134, 022190, 022131, 022132, 025112, 025113, 033092, 008049, 022080, 134021, + 301011, 301013, 004007, 301021, 010081, 010082, 008029, 201137, 202129, 006021, + 202000, 201000, 025191, 021071, 010085, 040011, 010102, 022189, 022146, 025165, + 025167, 021183, 022190, 022133, 021177, 021185, 013164, 202126, 022046, 202000, + 013117, 013013, 025112, 033092 ] From 44405553239f8ee912675120d8a6c3a41db93b31 Mon Sep 17 00:00:00 2001 From: Marijana Crepulja Date: Mon, 20 May 2019 12:16:31 +0100 Subject: [PATCH 241/414] ECC-927: Update element.table --- definitions/bufr/tables/0/wmo/32/element.table | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/definitions/bufr/tables/0/wmo/32/element.table b/definitions/bufr/tables/0/wmo/32/element.table index 26e9f58a6..a0b1ef0bc 100644 --- a/definitions/bufr/tables/0/wmo/32/element.table +++ b/definitions/bufr/tables/0/wmo/32/element.table @@ -869,7 +869,7 @@ 015051|meteorologicalOpticalRange|long|METEOROLOGICAL OPTICAL RANGE|m|0|0|18|m|0|6 015052|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan5Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 5 NM|log (m-3)|1|60|6|log (m-3)|1|3 015053|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan14Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 14 NM|log (m-3)|2|600|9|log (m-3)|2|4 -015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 µM|log (m-3)|2|550|9|log (m-3)|2|4 +015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 uM|log (m-3)|2|550|9|log (m-3)|2|4 015055|nonVolatileAerosolRatio|long|NON VOLATILE AEROSOL RATIO|Numeric|2|0|7|Numeric|2|3 015062|aerosolOpticalThickness|long|AEROSOL OPTICAL THICKNESS|Numeric|3|-1000|14|Numeric|3|5 015063|attenuatedBackscatter|double|ATTENUATED BACKSCATTER|m-1 sr-1|8|0|20|m-1 sr-1|8|7 From ecad0931596a378fe39a9834268f377dc6a2007c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 20 May 2019 12:17:45 +0100 Subject: [PATCH 242/414] ECC-837: BUFR Tables: non-ASCII characters --- definitions/bufr/tables/0/wmo/32/element.table | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/definitions/bufr/tables/0/wmo/32/element.table b/definitions/bufr/tables/0/wmo/32/element.table index 26e9f58a6..a0b1ef0bc 100644 --- a/definitions/bufr/tables/0/wmo/32/element.table +++ b/definitions/bufr/tables/0/wmo/32/element.table @@ -869,7 +869,7 @@ 015051|meteorologicalOpticalRange|long|METEOROLOGICAL OPTICAL RANGE|m|0|0|18|m|0|6 015052|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan5Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 5 NM|log (m-3)|1|60|6|log (m-3)|1|3 015053|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan14Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 14 NM|log (m-3)|2|600|9|log (m-3)|2|4 -015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 µM|log (m-3)|2|550|9|log (m-3)|2|4 +015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 uM|log (m-3)|2|550|9|log (m-3)|2|4 015055|nonVolatileAerosolRatio|long|NON VOLATILE AEROSOL RATIO|Numeric|2|0|7|Numeric|2|3 015062|aerosolOpticalThickness|long|AEROSOL OPTICAL THICKNESS|Numeric|3|-1000|14|Numeric|3|5 015063|attenuatedBackscatter|double|ATTENUATED BACKSCATTER|m-1 sr-1|8|0|20|m-1 sr-1|8|7 From 51035451f4861d09bc2cf748dcd18717fb5c1543 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 20 May 2019 13:49:49 +0100 Subject: [PATCH 243/414] ECC-927: latest version --- definitions/bufr/boot.def | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/definitions/bufr/boot.def b/definitions/bufr/boot.def index 5a94054c5..a34a4b30c 100644 --- a/definitions/bufr/boot.def +++ b/definitions/bufr/boot.def @@ -13,7 +13,7 @@ transient setToMissingIfOutOfRange=0 : hidden; # This gets updated twice a year by WMO. # See http://www.wmo.int/pages/prog/www/WMOCodes/WMO306_vI2/LatestVERSION/LatestVERSION.html -constant masterTablesVersionNumberLatest = 31; +constant masterTablesVersionNumberLatest = 32; #negative value=not used transient inputDelayedDescriptorReplicationFactor={-1} : hidden; From 4a9685fe5702bc2080f629153a76150ee36a5fb3 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 20 May 2019 17:08:54 +0100 Subject: [PATCH 244/414] Update version --- .appveyor.yml | 2 +- VERSION.cmake | 2 +- version.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index 5a6c12a4e..9620bf6b5 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -2,7 +2,7 @@ # general configuration # #---------------------------------# -version: 2.12.5-{build}-{branch} +version: 2.12.6-{build}-{branch} branches: only: diff --git a/VERSION.cmake b/VERSION.cmake index 70738fade..68f607862 100644 --- a/VERSION.cmake +++ b/VERSION.cmake @@ -1 +1 @@ -set( ${PROJECT_NAME}_VERSION_STR "2.12.5" ) +set( ${PROJECT_NAME}_VERSION_STR "2.12.6" ) diff --git a/version.sh b/version.sh index 8aad5b2fe..95bd2da35 100644 --- a/version.sh +++ b/version.sh @@ -15,7 +15,7 @@ PACKAGE_NAME='eccodes' # Package version ECCODES_MAJOR_VERSION=2 ECCODES_MINOR_VERSION=12 -ECCODES_REVISION_VERSION=5 +ECCODES_REVISION_VERSION=6 ECCODES_CURRENT=1 ECCODES_REVISION=0 From 77eee7f61ec90511e7a77dd9da5f5721f0ddb55c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 20 May 2019 17:09:30 +0100 Subject: [PATCH 245/414] ECC-928: Create a new MARS type Gridded Analysis Input --- definitions/mars/type.table | 1 + src/grib_accessor_class_g2_mars_labeling.c | 21 +++++++++++---------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/definitions/mars/type.table b/definitions/mars/type.table index 38d9fdc28..70d76903c 100644 --- a/definitions/mars/type.table +++ b/definitions/mars/type.table @@ -67,3 +67,4 @@ 87 ssd Simulated satellite data 88 gsd Gridded satellite data 89 ga GFAS analysis +90 gai Gridded analysis input diff --git a/src/grib_accessor_class_g2_mars_labeling.c b/src/grib_accessor_class_g2_mars_labeling.c index 12cd4a8cf..08b4e55d7 100644 --- a/src/grib_accessor_class_g2_mars_labeling.c +++ b/src/grib_accessor_class_g2_mars_labeling.c @@ -244,25 +244,26 @@ static int extra_set(grib_accessor* a,long val) case 1: /* type */ switch (val) { - case 0: /* Unknown (0) */ + case 0: /* Unknown (0) */ typeOfProcessedData=255; typeOfGeneratingProcess=255; break; - case 1: /* First guess (fg) */ - case 3: /* Initialised analysis (ia) */ + case 1: /* First guess (fg) */ + case 3: /* Initialised analysis (ia) */ typeOfProcessedData=0; typeOfGeneratingProcess=1; break; - case 2: /* Analysis (an) */ - case 4: /* Oi analysis (oi) */ - case 5: /* 3d variational analysis (3v) */ - case 6: /* 4d variational analysis (4v) */ - case 7: /* 3d variational gradients (3g) */ - case 8: /* 4d variational gradients (4g) */ + case 2: /* Analysis (an) */ + case 4: /* Oi analysis (oi) */ + case 5: /* 3d variational analysis (3v) */ + case 6: /* 4d variational analysis (4v) */ + case 7: /* 3d variational gradients (3g) */ + case 8: /* 4d variational gradients (4g) */ + case 90: /* Gridded analysis input (gai) */ typeOfProcessedData=0; typeOfGeneratingProcess=0; break; - case 9: /* Forecast (fc) */ + case 9: /* Forecast (fc) */ typeOfProcessedData=1; typeOfGeneratingProcess=2; break; From a2203fd6a8f5c9670a07be998e9942a2d6c6785b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 20 May 2019 17:29:19 +0100 Subject: [PATCH 246/414] ECC-928: Add MARS config files --- definitions/mars/grib.lwda.gai.def | 2 ++ definitions/mars/grib.oper.gai.def | 1 + 2 files changed, 3 insertions(+) create mode 100644 definitions/mars/grib.lwda.gai.def create mode 120000 definitions/mars/grib.oper.gai.def diff --git a/definitions/mars/grib.lwda.gai.def b/definitions/mars/grib.lwda.gai.def new file mode 100644 index 000000000..66e453379 --- /dev/null +++ b/definitions/mars/grib.lwda.gai.def @@ -0,0 +1,2 @@ +alias mars.anoffset=offsetToEndOf4DvarWindow; + diff --git a/definitions/mars/grib.oper.gai.def b/definitions/mars/grib.oper.gai.def new file mode 120000 index 000000000..a720ff713 --- /dev/null +++ b/definitions/mars/grib.oper.gai.def @@ -0,0 +1 @@ +base.def \ No newline at end of file From 3cf9964849616df98406db2ccc46220adad0e012 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 20 May 2019 18:05:42 +0100 Subject: [PATCH 247/414] Set length after unpack of md5 --- src/grib_accessor_class_md5.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/grib_accessor_class_md5.c b/src/grib_accessor_class_md5.c index 857fc3349..662d1f836 100644 --- a/src/grib_accessor_class_md5.c +++ b/src/grib_accessor_class_md5.c @@ -239,6 +239,7 @@ static int unpack_string(grib_accessor*a , char* v, size_t *len) grib_md5_add(&md5c,mess,mess_len); grib_md5_end(&md5c,v); grib_context_free(a->context,mess); + *len = strlen(v)+1; return ret; } From bf1b7f4f6f4691469f4f1ecbe656976b24b74a07 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 21 May 2019 14:33:00 +0100 Subject: [PATCH 248/414] ECC-929: grib_dump -O output: grib1 section 3 inconsistent --- data/bitmap.diff | 2 +- definitions/grib1/boot.def | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/bitmap.diff b/data/bitmap.diff index 950e1bda1..a1b7615a0 100644 --- a/data/bitmap.diff +++ b/data/bitmap.diff @@ -83,7 +83,7 @@ 1.0800000000e+02, 1.0000000000e+02, 9.6000000000e+01, 9.0000000000e+01, 9.0000000000e+01, 8.0000000000e+01, 7.5000000000e+01, 7.2000000000e+01, 6.4000000000e+01, 6.0000000000e+01, 5.0000000000e+01, 4.5000000000e+01, 4.0000000000e+01, 3.6000000000e+01, 2.7000000000e+01, 2.0000000000e+01 } # unsigned pl -====================== SECTION3 ( length=772, padding=0 ) ====================== +====================== SECTION_3 ( length=772, padding=0 ) ====================== 1-3 section3Length = 772 4 numberOfUnusedBitsAtEndOfSection3 = 14 5-6 tableReference = 0 diff --git a/definitions/grib1/boot.def b/definitions/grib1/boot.def index 5824f390c..09a57a17b 100644 --- a/definitions/grib1/boot.def +++ b/definitions/grib1/boot.def @@ -73,7 +73,7 @@ if (!headersOnly) { transient missingValue = 9999 : dump; if(bitmapPresent) { - template section3 "grib1/section.3.def"; + template section_3 "grib1/section.3.def"; } else { constant tableReference = 0; } From ec2676aca8524ba755fe7a93feafe91f802ee8cc Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 22 May 2019 16:37:28 +0100 Subject: [PATCH 249/414] Examples: fix argument --- examples/python/grib_keys_iterator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/python/grib_keys_iterator.py b/examples/python/grib_keys_iterator.py index 8033ec504..c79d4e455 100644 --- a/examples/python/grib_keys_iterator.py +++ b/examples/python/grib_keys_iterator.py @@ -38,7 +38,7 @@ def example(): # codes_skip_function(iterid) while codes_keys_iterator_next(iterid): - keyname = codes_keys_iterator_get_name(gid) + keyname = codes_keys_iterator_get_name(iterid) keyval = codes_get_string(gid, keyname) print("%s = %s" % (keyname, keyval)) From 35eaf1475f558c852b8fee0cc940df907582e9e4 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 22 May 2019 18:00:20 +0100 Subject: [PATCH 250/414] Add internal functions (for the new Python3 cffi interface) --- src/grib_api.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/grib_api.h b/src/grib_api.h index f5009b399..fcf0bdba1 100644 --- a/src/grib_api.h +++ b/src/grib_api.h @@ -1361,6 +1361,7 @@ void *wmo_read_any_from_file_malloc(FILE* f,int headers_only,size_t *size,off_t void *wmo_read_gts_from_file_malloc(FILE* f,int headers_only,size_t *size,off_t *offset,int* err); void *wmo_read_bufr_from_file_malloc(FILE* f,int headers_only,size_t *size,off_t *offset,int* err); void *wmo_read_grib_from_file_malloc(FILE* f,int headers_only,size_t *size,off_t *offset,int* err); +int grib_read_any_from_file(grib_context *ctx, FILE *f, void *buffer, size_t *len); int grib_get_message_offset ( grib_handle* h,off_t* offset); int grib_get_message_size ( grib_handle* h,size_t* size); @@ -1552,6 +1553,7 @@ grib_handle *grib_util_set_spec2(grib_handle *h, size_t data_values_count, int *err); +int parse_keyval_string(const char *grib_tool, char *arg, int values_required, int default_type, grib_values values[], int *count); /* --------------------------------------- */ typedef void (*codes_assertion_failed_proc)(const char* message); From 28c2b2ac20710f1953ab2a9ac13f3fb7f33750b4 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 23 May 2019 10:30:05 +0100 Subject: [PATCH 251/414] Examples: Python3: Fix division --- examples/python/grib_print_data.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/python/grib_print_data.py b/examples/python/grib_print_data.py index c6209de4c..d68faf65f 100644 --- a/examples/python/grib_print_data.py +++ b/examples/python/grib_print_data.py @@ -35,7 +35,7 @@ def example(): # Example of accessing specific elements from data values # Get first, middle and last elements - indexes = [0, num_vals/2, num_vals-1] + indexes = [0, int(num_vals/2), num_vals-1] elems = codes_get_double_elements(gid, 'values', indexes) codes_release(gid) From 338b971dc3088aee5a0b9047ae9e5e835339cba0 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 23 May 2019 10:53:06 +0100 Subject: [PATCH 252/414] Add internal functions (for the new Python3 cffi interface) --- src/grib_api.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/grib_api.h b/src/grib_api.h index fcf0bdba1..cd0a10bd8 100644 --- a/src/grib_api.h +++ b/src/grib_api.h @@ -1554,6 +1554,7 @@ grib_handle *grib_util_set_spec2(grib_handle *h, int *err); int parse_keyval_string(const char *grib_tool, char *arg, int values_required, int default_type, grib_values values[], int *count); +grib_handle *grib_new_from_file(grib_context *c, FILE *f, int headers_only, int *error); /* --------------------------------------- */ typedef void (*codes_assertion_failed_proc)(const char* message); From 271889d66dabae99859593d137348a1412b3d9a0 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 27 May 2019 21:16:41 +0100 Subject: [PATCH 253/414] ECC-924: Latest fixes from MeteoFrance --- samples/lambert_bf_grib2.tmpl | Bin 1874 -> 1874 bytes ..._accessor_class_data_g2bifourier_packing.c | 30 ++++++++++++------ tests/grib_lam_bf.c | 8 ++--- 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/samples/lambert_bf_grib2.tmpl b/samples/lambert_bf_grib2.tmpl index 5c75880e0d0e741ca65dea6bb21be1bb47864efc..8e53b6a633109fdc707e939fe967673fb4f5cb9d 100644 GIT binary patch delta 19 bcmcb_cZqL;4P(Sc+j3^citruncation_bif = (long *)grib_context_malloc(gh->context, sizeof(long)*(1+bt->bif_j)); bt->jtruncation_bif = (long *)grib_context_malloc(gh->context, sizeof(long)*(1+bt->bif_i)); +#define RECTANGLE 77 +#define ELLIPSE 88 +#define DIAMOND 99 + switch (bt->biFourierTruncationType) { - case 77: diamond (bt->bif_i, bt->bif_j, bt->itruncation_bif, bt->jtruncation_bif); break; - case 88: rectangle (bt->bif_i, bt->bif_j, bt->itruncation_bif, bt->jtruncation_bif); break; - case 99: ellipse (bt->bif_i, bt->bif_j, bt->itruncation_bif, bt->jtruncation_bif); break; + case RECTANGLE: rectangle (bt->bif_i, bt->bif_j, bt->itruncation_bif, bt->jtruncation_bif); break; + case ELLIPSE : ellipse (bt->bif_i, bt->bif_j, bt->itruncation_bif, bt->jtruncation_bif); break; + case DIAMOND : diamond (bt->bif_i, bt->bif_j, bt->itruncation_bif, bt->jtruncation_bif); break; default: ret = GRIB_INVALID_KEY_VALUE; goto cleanup; } switch (bt->biFourierSubTruncationType) { - case 77: diamond (bt->sub_i, bt->sub_j, bt->itruncation_sub, bt->jtruncation_sub); break; - case 88: rectangle (bt->sub_i, bt->sub_j, bt->itruncation_sub, bt->jtruncation_sub); break; - case 99: ellipse (bt->sub_i, bt->sub_j, bt->itruncation_sub, bt->jtruncation_sub); break; + case RECTANGLE: rectangle (bt->sub_i, bt->sub_j, bt->itruncation_sub, bt->jtruncation_sub); break; + case ELLIPSE : ellipse (bt->sub_i, bt->sub_j, bt->itruncation_sub, bt->jtruncation_sub); break; + case DIAMOND : diamond (bt->sub_i, bt->sub_j, bt->itruncation_sub, bt->jtruncation_sub); break; default: ret = GRIB_INVALID_KEY_VALUE; goto cleanup; diff --git a/tests/grib_lam_bf.c b/tests/grib_lam_bf.c index c14010f2c..9ebb2cde5 100644 --- a/tests/grib_lam_bf.c +++ b/tests/grib_lam_bf.c @@ -689,15 +689,15 @@ int main (int argc, char *argv[]) trunc_t trunc[2]; /* Elliptic truncation with diamond subtruncation */ - trunc[0].trunc = 99; - trunc[0].subtrunc = 77; + trunc[0].trunc = 88; + trunc[0].subtrunc = 99; trunc[0].len = ILCHAM; trunc[0].values = (double *) values; trunc[0].name = "ellipse_diamond"; /* Rectangle truncation with rectangle subtruncation */ - trunc[1].trunc = 88; - trunc[1].subtrunc = 88; + trunc[1].trunc = 77; + trunc[1].subtrunc = 77; trunc[1].len = 4 * (NSMAX + 1) * (NMSMAX + 1); trunc[1].values = (double *) malloc (sizeof (double) * trunc[1].len); trunc[1].name = "rectangle_rectangle"; From 124553ccf26e966780ea4a29a931d5dba78cf7dc Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 28 May 2019 11:10:42 +0100 Subject: [PATCH 254/414] ECC-924: clean up indentation etc --- ..._accessor_class_data_g2bifourier_packing.c | 777 +++++++++--------- 1 file changed, 379 insertions(+), 398 deletions(-) diff --git a/src/grib_accessor_class_data_g2bifourier_packing.c b/src/grib_accessor_class_data_g2bifourier_packing.c index f8f8413f3..bd5c5fc38 100644 --- a/src/grib_accessor_class_data_g2bifourier_packing.c +++ b/src/grib_accessor_class_data_g2bifourier_packing.c @@ -220,89 +220,87 @@ static int value_count(grib_accessor* a,long* numberOfValues) static void ellipse (long ni, long nj, long itrunc[], long jtrunc[]) { - const double zeps = 1.E-10; - const double zauxil=0.; - int i, j; - double zi, zj; + const double zeps = 1.E-10; + const double zauxil=0.; + int i, j; + double zi, zj; -/* - * 1. Computing meridional limit wavenumbers along zonal wavenumbers - */ + /* + * 1. Computing meridional limit wavenumbers along zonal wavenumbers + */ - for (j = 1; j < nj; j++) + for (j = 1; j < nj; j++) { - zi = (double)ni / (double)nj * sqrt (MAX (zauxil, (double)(nj * nj - j * j))); - itrunc[j] = (int)(zi + zeps); - } - - if (nj == 0) - { - itrunc[0] = ni; - } - else - { - itrunc[0] = ni; - itrunc[nj] = 0; + zi = (double)ni / (double)nj * sqrt (MAX (zauxil, (double)(nj * nj - j * j))); + itrunc[j] = (int)(zi + zeps); } -/* - * 2. Computing zonal limit wavenumbers along meridional wavenumbers - */ - - for (i = 1; i < ni; i++) + if (nj == 0) { - zj = (double)nj / (double)ni * sqrt (MAX (zauxil, (double)(ni * ni - i * i))); - jtrunc[i] = (int)(zj + zeps); + itrunc[0] = ni; } - - if (ni == 0) + else { - jtrunc[0] = nj; - } - else - { - jtrunc[0] = nj; - jtrunc[ni] = 0; + itrunc[0] = ni; + itrunc[nj] = 0; } + /* + * 2. Computing zonal limit wavenumbers along meridional wavenumbers + */ + for (i = 1; i < ni; i++) + { + zj = (double)nj / (double)ni * sqrt (MAX (zauxil, (double)(ni * ni - i * i))); + jtrunc[i] = (int)(zj + zeps); + } + + if (ni == 0) + { + jtrunc[0] = nj; + } + else + { + jtrunc[0] = nj; + jtrunc[ni] = 0; + } } static void rectangle (long ni, long nj, long itrunc[], long jtrunc[]) { - int i, j; + int i, j; -/* - * 1. Computing meridional limit wavenumbers along zonal wavenumbers - */ + /* + * 1. Computing meridional limit wavenumbers along zonal wavenumbers + */ - for (j = 0; j <= nj; j++) - itrunc[j] = ni; + for (j = 0; j <= nj; j++) + itrunc[j] = ni; -/* - * 2. Computing zonal limit wavenumbers along meridional wavenumbers - */ + /* + * 2. Computing zonal limit wavenumbers along meridional wavenumbers + */ - for (i = 0; i <= ni; i++) - jtrunc[i] = nj; + for (i = 0; i <= ni; i++) + jtrunc[i] = nj; } static void diamond (long ni, long nj, long itrunc[], long jtrunc[]) { - int i, j; + int i, j; - if (nj == 0) - itrunc[0] = -1; - else - for (j = 0; j <= nj; j++) - itrunc[j] = ni - (j * ni) / nj; + if (nj == 0) + itrunc[0] = -1; + else + for (j = 0; j <= nj; j++) + itrunc[j] = ni - (j * ni) / nj; - if (ni == 0) - jtrunc[0] = -1; - else - for (i = 0; i <= ni; i++) - jtrunc[i] = nj - (i * nj) / ni; + if (ni == 0) + jtrunc[0] = -1; + else + for (i = 0; i <= ni; i++) + jtrunc[i] = nj - (i * nj) / ni; } @@ -310,44 +308,44 @@ static void diamond (long ni, long nj, long itrunc[], long jtrunc[]) #define for_ij() \ - for (j = 0; j <= bt->bif_j; j++) \ - for (i = 0; i <= bt->itruncation_bif[j]; i++) + for (j = 0; j <= bt->bif_j; j++) \ + for (i = 0; i <= bt->itruncation_bif[j]; i++) #define calc_insub() \ -do { \ - insub = (i <= bt->sub_i) && (j <= bt->sub_j); \ - if (insub) \ - { \ - int insubi = (i <= bt->itruncation_sub[j]); \ - int insubj = (j <= bt->jtruncation_sub[i]); \ - insub = insubi && insubj; \ - } \ - if (bt->keepaxes) \ - insub = insub || (i == 0) || (j == 0); \ -} while (0) + do { \ + insub = (i <= bt->sub_i) && (j <= bt->sub_j); \ + if (insub) \ + { \ + int insubi = (i <= bt->itruncation_sub[j]); \ + int insubj = (j <= bt->jtruncation_sub[i]); \ + insub = insubi && insubj; \ + } \ + if (bt->keepaxes) \ + insub = insub || (i == 0) || (j == 0); \ + } while (0) typedef struct bif_trunc_t { - long bits_per_value; - long decimal_scale_factor; - long binary_scale_factor; - long ieee_floats; - long laplacianOperatorIsSet; - double laplacianOperator; - double reference_value; - long sub_i, sub_j, bif_i, bif_j; - long biFourierTruncationType; - long biFourierSubTruncationType; - long keepaxes; - long maketemplate; - decode_float_proc decode_float; - encode_float_proc encode_float; - int bytes; - long * itruncation_bif; - long * jtruncation_bif; - long * itruncation_sub; - long * jtruncation_sub; - size_t n_vals_bif, n_vals_sub; + long bits_per_value; + long decimal_scale_factor; + long binary_scale_factor; + long ieee_floats; + long laplacianOperatorIsSet; + double laplacianOperator; + double reference_value; + long sub_i, sub_j, bif_i, bif_j; + long biFourierTruncationType; + long biFourierSubTruncationType; + long keepaxes; + long maketemplate; + decode_float_proc decode_float; + encode_float_proc encode_float; + int bytes; + long * itruncation_bif; + long * jtruncation_bif; + long * itruncation_sub; + long * jtruncation_sub; + size_t n_vals_bif, n_vals_sub; } bif_trunc_t; /* @@ -355,291 +353,283 @@ typedef struct bif_trunc_t */ static size_t size_bif (bif_trunc_t * bt) { - size_t n_vals = 0; - int j; - for (j = 0; j <= bt->bif_j; j++) - n_vals += 4 * (bt->itruncation_bif[j] + 1); - return n_vals; + size_t n_vals = 0; + int j; + for (j = 0; j <= bt->bif_j; j++) + n_vals += 4 * (bt->itruncation_bif[j] + 1); + return n_vals; } - /* * Number of unpacked coefficients */ static size_t size_sub (bif_trunc_t * bt) { - size_t n_vals = 0; - int i, j; - for_ij () + size_t n_vals = 0; + int i, j; + for_ij () { - int insub; - - calc_insub (); + int insub; - if (insub) - n_vals += 4; + calc_insub (); + + if (insub) + n_vals += 4; } - return n_vals; + return n_vals; } -static -double laplam (bif_trunc_t * bt, const double val[]) +static double laplam (bif_trunc_t * bt, const double val[]) { -/* - * For bi-Fourier spectral fields, the Laplacian operator is a multiplication by (i*i+j*j) - */ + /* + * For bi-Fourier spectral fields, the Laplacian operator is a multiplication by (i*i+j*j) + */ - const double zeps = 1E-15; - double * znorm = NULL, * zw = NULL; - int kmax = 1 + bt->bif_i * bt->bif_i + bt->bif_j * bt->bif_j, lmax; - int * itab1 = NULL, * itab2 = NULL; - int i, j, k, l, isp; - double zxmw, zymw, zwsum, zx, zy, zsum1, zsum2, zbeta1, zp; + const double zeps = 1E-15; + double * znorm = NULL, * zw = NULL; + int kmax = 1 + bt->bif_i * bt->bif_i + bt->bif_j * bt->bif_j, lmax; + int * itab1 = NULL, * itab2 = NULL; + int i, j, k, l, isp; + double zxmw, zymw, zwsum, zx, zy, zsum1, zsum2, zbeta1, zp; - itab1 = (int *)malloc (sizeof (int) * kmax); - itab2 = (int *)malloc (sizeof (int) * ((1 + bt->bif_i) * (1 + bt->bif_j))); + itab1 = (int *)malloc (sizeof (int) * kmax); + itab2 = (int *)malloc (sizeof (int) * ((1 + bt->bif_i) * (1 + bt->bif_j))); - for (k = 0; k < kmax; k++) - itab1[k] = 0; + for (k = 0; k < kmax; k++) + itab1[k] = 0; -/* - * Keep record of the possible values of i**2+j**2 outside the non-packed truncation - */ - for_ij () - { - int insub; - - calc_insub (); - - if (! insub) - { - int k = i*i+j*j; - itab1[k] = 1; - } - } - - l = 0; - for (k = 0; k < kmax; k++) - if (itab1[k]) - { - itab2[l] = k; - itab1[k] = l; - l++; - } - lmax = l; - - -/* - * Now, itab2 contains all possible values of i*i+j*j, and itab1 contains - * the rank of all i*i+j*j - */ - - znorm = (double *)malloc (sizeof (double) * lmax); - zw = (double *)malloc (sizeof (double) * lmax); - -/* - * Compute norms of input field, gathered by values of i**2+j**2; we have to - * go through the unpacked truncation again - */ - - for (l = 0; l < lmax; l++) - znorm[l] = 0.; - - isp = 0; - for_ij () - { - int insub; - - calc_insub (); - - if (insub) - { - isp += 4; - } - else - { - int m, l = itab1[i*i+j*j]; - for (m = 0; m < 4; m++, isp++) - znorm[l] = MAX (znorm[l], fabs (val[isp])); - } - } - -/* - * Compute weights, fix very small norms to avoid problems with log function - */ - - for (l = 0; l < lmax; l++) + /* + * Keep record of the possible values of i**2+j**2 outside the non-packed truncation + */ + for_ij () { - zw[l] = (double)lmax / (double)(l + 1); - if (znorm[l] < zeps) + int insub; + + calc_insub (); + + if (! insub) { - znorm[l] = zeps; - zw[l] = 100. * zeps; + int k = i*i+j*j; + itab1[k] = 1; } } -/* - * Sum weights - */ + l = 0; + for (k = 0; k < kmax; k++) + if (itab1[k]) + { + itab2[l] = k; + itab1[k] = l; + l++; + } + lmax = l; - zxmw = 0.; - zymw = 0.; - zwsum = 0.; - - for (l = 0; l < lmax; l++) + /* + * Now, itab2 contains all possible values of i*i+j*j, and itab1 contains + * the rank of all i*i+j*j + */ + znorm = (double *)malloc (sizeof (double) * lmax); + zw = (double *)malloc (sizeof (double) * lmax); + + /* + * Compute norms of input field, gathered by values of i**2+j**2; we have to + * go through the unpacked truncation again + */ + for (l = 0; l < lmax; l++) + znorm[l] = 0.; + + isp = 0; + for_ij () { - zx = log (itab2[l]); - zy = log (znorm[l]); - zxmw += zx * zw[l]; - zymw += zy * zw[l]; - zwsum += zw[l]; + int insub; + + calc_insub (); + + if (insub) + { + isp += 4; + } + else + { + int m, l = itab1[i*i+j*j]; + for (m = 0; m < 4; m++, isp++) + znorm[l] = MAX (znorm[l], fabs (val[isp])); + } } -/* - * Least square regression - */ - - zxmw = zxmw / zwsum; - zymw = zymw / zwsum; - zsum1 = 0.; - zsum2 = 0.; - - for (l = 0; l < lmax; l++) + /* + * Compute weights, fix very small norms to avoid problems with log function + */ + for (l = 0; l < lmax; l++) { - zx = log (itab2[l]); - zy = log (znorm[l]); - zsum1 += zw[l] * (zy - zymw) * (zx - zxmw); - zsum2 += zw[l] * (zx - zxmw) * (zx - zxmw); + zw[l] = (double)lmax / (double)(l + 1); + if (znorm[l] < zeps) + { + znorm[l] = zeps; + zw[l] = 100. * zeps; + } } - zbeta1 = zsum1 / zsum2; - zp = -zbeta1; - zp = MAX (-9.999, MIN (9.999, zp)); + /* + * Sum weights + */ + zxmw = 0.; + zymw = 0.; + zwsum = 0.; - free (itab1); - free (itab2); + for (l = 0; l < lmax; l++) + { + zx = log (itab2[l]); + zy = log (znorm[l]); + zxmw += zx * zw[l]; + zymw += zy * zw[l]; + zwsum += zw[l]; + } - free (znorm); - free (zw); + /* + * Least square regression + */ + zxmw = zxmw / zwsum; + zymw = zymw / zwsum; + zsum1 = 0.; + zsum2 = 0.; -/*zp = ((long)(zp * 1000.)) / 1000.; FAPULA rounds Laplacian power to 1/1000th*/ + for (l = 0; l < lmax; l++) + { + zx = log (itab2[l]); + zy = log (znorm[l]); + zsum1 += zw[l] * (zy - zymw) * (zx - zxmw); + zsum2 += zw[l] * (zx - zxmw) * (zx - zxmw); + } - return zp; + zbeta1 = zsum1 / zsum2; + zp = -zbeta1; + zp = MAX (-9.999, MIN (9.999, zp)); + + free (itab1); + free (itab2); + + free (znorm); + free (zw); + + /*zp = ((long)(zp * 1000.)) / 1000.; FAPULA rounds Laplacian power to 1/1000th*/ + + return zp; } static void free_bif_trunc (bif_trunc_t * bt, grib_accessor * a) { - grib_handle* gh = grib_handle_of_accessor(a); - if (bt == NULL) - return; - if (bt->itruncation_bif != NULL) free (bt->itruncation_bif); - if (bt->jtruncation_bif != NULL) free (bt->jtruncation_bif); - if (bt->itruncation_sub != NULL) free (bt->itruncation_sub); - if (bt->jtruncation_sub != NULL) free (bt->jtruncation_sub); - memset (bt, 0, sizeof (bif_trunc_t)); - grib_context_free (gh->context, bt); + grib_handle* gh = grib_handle_of_accessor(a); + if (bt == NULL) + return; + if (bt->itruncation_bif != NULL) free (bt->itruncation_bif); + if (bt->jtruncation_bif != NULL) free (bt->jtruncation_bif); + if (bt->itruncation_sub != NULL) free (bt->itruncation_sub); + if (bt->jtruncation_sub != NULL) free (bt->jtruncation_sub); + memset (bt, 0, sizeof (bif_trunc_t)); + grib_context_free (gh->context, bt); } static bif_trunc_t * new_bif_trunc (grib_accessor * a, grib_accessor_data_g2bifourier_packing * self) { - int ret; - grib_handle* gh = grib_handle_of_accessor(a); - bif_trunc_t * bt = (bif_trunc_t *)grib_context_malloc (gh->context, sizeof (bif_trunc_t)); + int ret; + grib_handle* gh = grib_handle_of_accessor(a); + bif_trunc_t * bt = (bif_trunc_t *)grib_context_malloc (gh->context, sizeof (bif_trunc_t)); - memset (bt, 0, sizeof (bif_trunc_t)); + memset (bt, 0, sizeof (bif_trunc_t)); - if ((ret = grib_get_double_internal (gh, self->reference_value, &bt->reference_value)) != GRIB_SUCCESS) - goto cleanup; - if ((ret = grib_get_long_internal (gh, self->bits_per_value, &bt->bits_per_value)) != GRIB_SUCCESS) - goto cleanup; - if ((ret = grib_get_long_internal (gh, self->binary_scale_factor, &bt->binary_scale_factor)) != GRIB_SUCCESS) - goto cleanup; - if ((ret = grib_get_long_internal (gh, self->decimal_scale_factor, &bt->decimal_scale_factor)) != GRIB_SUCCESS) - goto cleanup; - if ((ret = grib_get_long_internal (gh, self->ieee_floats, &bt->ieee_floats)) != GRIB_SUCCESS) - goto cleanup; - if ((ret = grib_get_long_internal (gh, self->laplacianOperatorIsSet, &bt->laplacianOperatorIsSet)) != GRIB_SUCCESS) - goto cleanup; - if ((ret = grib_get_double_internal (gh, self->laplacianOperator, &bt->laplacianOperator)) != GRIB_SUCCESS) - goto cleanup; - if ((ret = grib_get_long_internal (gh, self->sub_i, &bt->sub_i)) != GRIB_SUCCESS) - goto cleanup; - if ((ret = grib_get_long_internal (gh, self->sub_j, &bt->sub_j)) != GRIB_SUCCESS) - goto cleanup; - if ((ret = grib_get_long_internal (gh, self->bif_i, &bt->bif_i)) != GRIB_SUCCESS) - goto cleanup; - if ((ret = grib_get_long_internal (gh, self->bif_j, &bt->bif_j)) != GRIB_SUCCESS) - goto cleanup; - if ((ret = grib_get_long_internal (gh, self->biFourierTruncationType, &bt->biFourierTruncationType)) != GRIB_SUCCESS) - goto cleanup; - if ((ret = grib_get_long_internal (gh, self->biFourierSubTruncationType, &bt->biFourierSubTruncationType)) != GRIB_SUCCESS) - goto cleanup; - if ((ret = grib_get_long_internal (gh, self->biFourierDoNotPackAxes, &bt->keepaxes)) != GRIB_SUCCESS) - goto cleanup; - if ((ret = grib_get_long_internal (gh, self->biFourierMakeTemplate, &bt->maketemplate)) != GRIB_SUCCESS) - goto cleanup; + if ((ret = grib_get_double_internal (gh, self->reference_value, &bt->reference_value)) != GRIB_SUCCESS) + goto cleanup; + if ((ret = grib_get_long_internal (gh, self->bits_per_value, &bt->bits_per_value)) != GRIB_SUCCESS) + goto cleanup; + if ((ret = grib_get_long_internal (gh, self->binary_scale_factor, &bt->binary_scale_factor)) != GRIB_SUCCESS) + goto cleanup; + if ((ret = grib_get_long_internal (gh, self->decimal_scale_factor, &bt->decimal_scale_factor)) != GRIB_SUCCESS) + goto cleanup; + if ((ret = grib_get_long_internal (gh, self->ieee_floats, &bt->ieee_floats)) != GRIB_SUCCESS) + goto cleanup; + if ((ret = grib_get_long_internal (gh, self->laplacianOperatorIsSet, &bt->laplacianOperatorIsSet)) != GRIB_SUCCESS) + goto cleanup; + if ((ret = grib_get_double_internal (gh, self->laplacianOperator, &bt->laplacianOperator)) != GRIB_SUCCESS) + goto cleanup; + if ((ret = grib_get_long_internal (gh, self->sub_i, &bt->sub_i)) != GRIB_SUCCESS) + goto cleanup; + if ((ret = grib_get_long_internal (gh, self->sub_j, &bt->sub_j)) != GRIB_SUCCESS) + goto cleanup; + if ((ret = grib_get_long_internal (gh, self->bif_i, &bt->bif_i)) != GRIB_SUCCESS) + goto cleanup; + if ((ret = grib_get_long_internal (gh, self->bif_j, &bt->bif_j)) != GRIB_SUCCESS) + goto cleanup; + if ((ret = grib_get_long_internal (gh, self->biFourierTruncationType, &bt->biFourierTruncationType)) != GRIB_SUCCESS) + goto cleanup; + if ((ret = grib_get_long_internal (gh, self->biFourierSubTruncationType, &bt->biFourierSubTruncationType)) != GRIB_SUCCESS) + goto cleanup; + if ((ret = grib_get_long_internal (gh, self->biFourierDoNotPackAxes, &bt->keepaxes)) != GRIB_SUCCESS) + goto cleanup; + if ((ret = grib_get_long_internal (gh, self->biFourierMakeTemplate, &bt->maketemplate)) != GRIB_SUCCESS) + goto cleanup; - switch (bt->ieee_floats) + switch (bt->ieee_floats) { - case 0: + case 0: bt->decode_float = grib_long_to_ibm; bt->encode_float = grib_ibm_to_long; bt->bytes = 4; - break; - case 1: + break; + case 1: bt->decode_float = grib_long_to_ieee; bt->encode_float = grib_ieee_to_long; bt->bytes = 4; - break; - case 2: + break; + case 2: bt->decode_float = grib_long_to_ieee64; bt->encode_float = grib_ieee64_to_long; bt->bytes = 8; - break; - default: + break; + default: ret = GRIB_NOT_IMPLEMENTED; goto cleanup; - } + } - bt->itruncation_sub = (long *)grib_context_malloc(gh->context, sizeof(long)*(1+bt->sub_j)); - bt->jtruncation_sub = (long *)grib_context_malloc(gh->context, sizeof(long)*(1+bt->sub_i)); - bt->itruncation_bif = (long *)grib_context_malloc(gh->context, sizeof(long)*(1+bt->bif_j)); - bt->jtruncation_bif = (long *)grib_context_malloc(gh->context, sizeof(long)*(1+bt->bif_i)); + bt->itruncation_sub = (long *)grib_context_malloc(gh->context, sizeof(long)*(1+bt->sub_j)); + bt->jtruncation_sub = (long *)grib_context_malloc(gh->context, sizeof(long)*(1+bt->sub_i)); + bt->itruncation_bif = (long *)grib_context_malloc(gh->context, sizeof(long)*(1+bt->bif_j)); + bt->jtruncation_bif = (long *)grib_context_malloc(gh->context, sizeof(long)*(1+bt->bif_i)); #define RECTANGLE 77 #define ELLIPSE 88 #define DIAMOND 99 - switch (bt->biFourierTruncationType) + switch (bt->biFourierTruncationType) { - case RECTANGLE: rectangle (bt->bif_i, bt->bif_j, bt->itruncation_bif, bt->jtruncation_bif); break; - case ELLIPSE : ellipse (bt->bif_i, bt->bif_j, bt->itruncation_bif, bt->jtruncation_bif); break; - case DIAMOND : diamond (bt->bif_i, bt->bif_j, bt->itruncation_bif, bt->jtruncation_bif); break; - default: + case RECTANGLE: rectangle (bt->bif_i, bt->bif_j, bt->itruncation_bif, bt->jtruncation_bif); break; + case ELLIPSE : ellipse (bt->bif_i, bt->bif_j, bt->itruncation_bif, bt->jtruncation_bif); break; + case DIAMOND : diamond (bt->bif_i, bt->bif_j, bt->itruncation_bif, bt->jtruncation_bif); break; + default: ret = GRIB_INVALID_KEY_VALUE; goto cleanup; } - switch (bt->biFourierSubTruncationType) + switch (bt->biFourierSubTruncationType) { - case RECTANGLE: rectangle (bt->sub_i, bt->sub_j, bt->itruncation_sub, bt->jtruncation_sub); break; - case ELLIPSE : ellipse (bt->sub_i, bt->sub_j, bt->itruncation_sub, bt->jtruncation_sub); break; - case DIAMOND : diamond (bt->sub_i, bt->sub_j, bt->itruncation_sub, bt->jtruncation_sub); break; - default: + case RECTANGLE: rectangle (bt->sub_i, bt->sub_j, bt->itruncation_sub, bt->jtruncation_sub); break; + case ELLIPSE : ellipse (bt->sub_i, bt->sub_j, bt->itruncation_sub, bt->jtruncation_sub); break; + case DIAMOND : diamond (bt->sub_i, bt->sub_j, bt->itruncation_sub, bt->jtruncation_sub); break; + default: ret = GRIB_INVALID_KEY_VALUE; goto cleanup; } - bt->n_vals_bif = size_bif (bt); - bt->n_vals_sub = size_sub (bt); + bt->n_vals_bif = size_bif (bt); + bt->n_vals_sub = size_sub (bt); - return bt; + return bt; cleanup: - free_bif_trunc (bt, a); + free_bif_trunc (bt, a); - return NULL; + return NULL; } static int unpack_double(grib_accessor* a, double* val, size_t *len) @@ -669,30 +659,30 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len) int i, j, k; if ((ret = grib_value_count (a, &count)) != GRIB_SUCCESS) - goto cleanup; + goto cleanup; bt = new_bif_trunc (a, self); if (bt == NULL) - { + { ret = GRIB_INTERNAL_ERROR; goto cleanup; - } + } if (bt->n_vals_bif != count) - { + { ret = GRIB_INTERNAL_ERROR; goto cleanup; - } + } if ((ret = grib_get_long_internal (gh, self->offsetdata, &offsetdata)) != GRIB_SUCCESS) - goto cleanup; + goto cleanup; if (*len < bt->n_vals_bif) - { + { *len = (long)bt->n_vals_bif; ret = GRIB_ARRAY_TOO_SMALL; goto cleanup; - } + } self->dirty = 0; @@ -702,14 +692,12 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len) s = grib_power (bt->binary_scale_factor, 2); d = grib_power (-bt->decimal_scale_factor, 10); -/* - * Decode data - */ - + /* + * Decode data + */ hres = buf; lres = buf; - packed_offset = grib_byte_offset (a) + bt->bytes * bt->n_vals_sub; lpos = 8 * (packed_offset - offsetdata); @@ -717,28 +705,27 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len) isp = 0; for_ij () - { + { int insub; calc_insub (); if (insub) - for (k = 0; k < 4; k++) + for (k = 0; k < 4; k++) { - val[isp+k] = bt->decode_float (grib_decode_unsigned_long (hres, &hpos, 8 * bt->bytes)); + val[isp+k] = bt->decode_float (grib_decode_unsigned_long (hres, &hpos, 8 * bt->bytes)); } else - for (k = 0; k < 4; k++) + for (k = 0; k < 4; k++) { - double S = scals (i, j); - long dec_val = grib_decode_unsigned_long (lres, &lpos, bt->bits_per_value); - val[isp+k] = (double)(((dec_val * s) + bt->reference_value) * d)/ S; + double S = scals (i, j); + long dec_val = grib_decode_unsigned_long (lres, &lpos, bt->bits_per_value); + val[isp+k] = (double)(((dec_val * s) + bt->reference_value) * d)/ S; } isp += 4; - } + } - Assert (*len >= isp); *len = isp; @@ -773,109 +760,105 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len) int minmax_set; double d = 0., s = 0.; - if (*len == 0) - { + if (*len == 0) + { ret = GRIB_NO_VALUES; goto cleanup; - } + } bt = new_bif_trunc (a, self); if (bt == NULL) - { + { long makeTemplate = 0; if ((ret = grib_get_long_internal (gh, self->biFourierMakeTemplate, &makeTemplate)) != GRIB_SUCCESS) - goto cleanup; + goto cleanup; if (! makeTemplate) - { + { ret = GRIB_INTERNAL_ERROR; goto cleanup; - } + } else - { + { printf ("Assuming we are creating a template\n"); ret = GRIB_SUCCESS; goto cleanup; - } - } + } + } self->dirty = 1; if (*len != bt->n_vals_bif) - { + { grib_context_log(gh->context,GRIB_LOG_ERROR,"BIFOURIER_PACKING : wrong number of values, expected %d - got %d", bt->n_vals_bif, *len); ret = GRIB_INTERNAL_ERROR; goto cleanup; - } - + } - if (! bt->laplacianOperatorIsSet) - { + if (! bt->laplacianOperatorIsSet) + { bt->laplacianOperator = laplam (bt, val); - if ((ret = grib_set_double_internal (gh, self->laplacianOperator, bt->laplacianOperator)) != GRIB_SUCCESS) - goto cleanup; + if ((ret = grib_set_double_internal (gh, self->laplacianOperator, bt->laplacianOperator)) != GRIB_SUCCESS) + goto cleanup; grib_get_double_internal (gh, self->laplacianOperator, &bt->laplacianOperator); + } - } - -/* - * Scan all values that will be truncated and find their minimum and maximum - */ - + /* + * Scan all values that will be truncated and find their minimum and maximum + */ minmax_set = 0; isp = 0; for_ij () - { + { int insub; - + calc_insub (); if (! insub) - { + { for (k = 0; k < 4; k++) - { + { double current_val = val[isp+k] * scals (i, j); if (! minmax_set) - { + { min = current_val; max = current_val; minmax_set++; - } + } if (current_val < min) min = current_val; if (current_val > max) max = current_val; - } - } + } + } isp += 4; - } + } if (bt->n_vals_bif != bt->n_vals_sub) - { + { ret = grib_optimize_decimal_factor (a, self->reference_value, - max, min, bt->bits_per_value, 0, 1, - &bt->decimal_scale_factor, - &bt->binary_scale_factor, - &bt->reference_value); + max, min, bt->bits_per_value, 0, 1, + &bt->decimal_scale_factor, + &bt->binary_scale_factor, + &bt->reference_value); if (ret != GRIB_SUCCESS) - goto cleanup; - + goto cleanup; + s = grib_power (-bt->binary_scale_factor, 2); d = grib_power (+bt->decimal_scale_factor, 10); - } - else - { - bt->decimal_scale_factor = 0; - bt->binary_scale_factor = 0; - bt->reference_value = 0.; - } - -/* - * Encode values - */ + } + else + { + bt->decimal_scale_factor = 0; + bt->binary_scale_factor = 0; + bt->reference_value = 0.; + } + /* + * Encode values + */ hsize = bt->bytes * bt->n_vals_sub; lsize = ((bt->n_vals_bif - bt->n_vals_sub) * bt->bits_per_value) / 8; @@ -892,76 +875,74 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len) isp = 0; for_ij () - { + { double current_val; int insub; calc_insub (); - if (insub) - for (k = 0; k < 4; k++) + for (k = 0; k < 4; k++) { - current_val = val[isp+k]; - grib_encode_unsigned_long (hres, bt->encode_float (current_val) , &hpos, 8 * bt->bytes); + current_val = val[isp+k]; + grib_encode_unsigned_long (hres, bt->encode_float (current_val) , &hpos, 8 * bt->bytes); } else - for (k = 0; k < 4; k++) + for (k = 0; k < 4; k++) { - double S = scals (i, j); - current_val = (((((val[isp+k] * d) * S) - bt->reference_value) * s) + 0.5); + double S = scals (i, j); + current_val = (((((val[isp+k] * d) * S) - bt->reference_value) * s) + 0.5); - if (current_val < 0) - grib_context_log (gh->context, GRIB_LOG_ERROR, "BIFOURIER_PACKING : negative coput before packing (%g)", current_val); + if (current_val < 0) + grib_context_log (gh->context, GRIB_LOG_ERROR, "BIFOURIER_PACKING : negative coput before packing (%g)", current_val); - if (bt->bits_per_value % 8) - grib_encode_unsigned_longb (lres, current_val, &lpos, bt->bits_per_value); - else - grib_encode_unsigned_long (lres, current_val, &lpos, bt->bits_per_value); + if (bt->bits_per_value % 8) + grib_encode_unsigned_longb (lres, current_val, &lpos, bt->bits_per_value); + else + grib_encode_unsigned_long (lres, current_val, &lpos, bt->bits_per_value); } isp += 4; - - } + } if (((hpos / 8) != hsize) && ((lpos / 8) != lsize)) - { + { grib_context_log (gh->context, GRIB_LOG_ERROR, "BIFOURIER_PACKING : Mismatch in packing between high resolution and low resolution part"); ret = GRIB_INTERNAL_ERROR; goto cleanup; - } + } buflen = ((hpos + lpos)/8); if ((ret = grib_set_double_internal (gh, self->reference_value, bt->reference_value)) != GRIB_SUCCESS) - goto cleanup; + goto cleanup; { - /* Make sure we can decode it again */ - double ref = 1e-100; - grib_get_double_internal (gh,self->reference_value,&ref); - Assert (ref == bt->reference_value); + /* Make sure we can decode it again */ + double ref = 1e-100; + grib_get_double_internal (gh,self->reference_value,&ref); + Assert (ref == bt->reference_value); } if ((ret = grib_set_long_internal (gh, self->binary_scale_factor, bt->binary_scale_factor)) != GRIB_SUCCESS) - goto cleanup; + goto cleanup; if ((ret = grib_set_long_internal (gh, self->decimal_scale_factor, bt->decimal_scale_factor)) != GRIB_SUCCESS) - goto cleanup; + goto cleanup; grib_buffer_replace (a, buf, buflen, 1, 1); if ((ret = grib_set_long_internal (gh, self->totalNumberOfValuesInUnpackedSubset, bt->n_vals_sub)) != GRIB_SUCCESS) - goto cleanup; + goto cleanup; if ((ret = grib_set_long_internal (gh, self->number_of_values, bt->n_vals_bif)) != GRIB_SUCCESS) - goto cleanup; + goto cleanup; cleanup: free_bif_trunc (bt, a); if (buf != NULL) - grib_context_free (gh->context, buf); + grib_context_free (gh->context, buf); return ret; } From afad1aaf7968298283be210ac712a10b601fca57 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 28 May 2019 13:09:35 +0100 Subject: [PATCH 255/414] ECC-879: Add WMO GRIB2 definition to S2S ocean parameters (151163/151175) --- definitions/grib2/cfName.def | 53 +++++++++++-------- definitions/grib2/cfVarName.def | 21 ++++++++ .../grib2/localConcepts/ecmf/cfVarName.def | 12 ----- definitions/grib2/localConcepts/ecmf/name.def | 12 ----- .../grib2/localConcepts/ecmf/paramId.def | 12 ----- .../grib2/localConcepts/ecmf/shortName.def | 12 ----- .../grib2/localConcepts/ecmf/units.def | 12 ----- definitions/grib2/name.def | 21 ++++++++ definitions/grib2/paramId.def | 21 ++++++++ definitions/grib2/shortName.def | 21 ++++++++ definitions/grib2/units.def | 21 ++++++++ 11 files changed, 136 insertions(+), 82 deletions(-) diff --git a/definitions/grib2/cfName.def b/definitions/grib2/cfName.def index c08cd67c7..101e31911 100644 --- a/definitions/grib2/cfName.def +++ b/definitions/grib2/cfName.def @@ -4,56 +4,56 @@ discipline = 0 ; parameterNumber = 4 ; parameterCategory = 3 ; - } +} #Temperature 'air_temperature' = { discipline = 0 ; parameterNumber = 0 ; parameterCategory = 0 ; - } +} #u-component of wind 'eastward_wind' = { discipline = 0 ; parameterNumber = 2 ; parameterCategory = 2 ; - } +} #v-component of wind 'northward_wind' = { discipline = 0 ; parameterNumber = 3 ; parameterCategory = 2 ; - } +} #Specific humidity 'specific_humidity' = { discipline = 0 ; parameterNumber = 0 ; parameterCategory = 1 ; - } +} #Surface pressure 'surface_air_pressure' = { discipline = 0 ; parameterNumber = 0 ; typeOfFirstFixedSurface = 1 ; parameterCategory = 3 ; - } +} #Vertical velocity (geometric) 'lagrangian_tendency_of_air_pressure' = { discipline = 0 ; parameterNumber = 8 ; parameterCategory = 2 ; - } +} #Relative vorticity 'atmosphere_relative_vorticity' = { discipline = 0 ; parameterNumber = 12 ; parameterCategory = 2 ; - } +} #Boundary layer dissipation 'kinetic_energy_dissipation_in_atmosphere_boundary_layer' = { discipline = 0 ; parameterNumber = 20 ; parameterCategory = 2 ; - } +} #Surface sensible heat flux 'surface_upward_sensible_heat_flux' = { discipline = 0 ; @@ -61,7 +61,7 @@ typeOfFirstFixedSurface = 1 ; parameterCategory = 0 ; typeOfStatisticalProcessing = 1 ; - } +} #Surface latent heat flux 'surface_upward_latent_heat_flux' = { discipline = 0 ; @@ -69,45 +69,45 @@ typeOfFirstFixedSurface = 1 ; parameterCategory = 0 ; typeOfStatisticalProcessing = 1 ; - } +} #Mean sea level pressure 'air_pressure_at_mean_sea_level' = { discipline = 0 ; parameterNumber = 0 ; typeOfFirstFixedSurface = 101 ; parameterCategory = 3 ; - } +} #Relative divergence 'divergence_of_wind' = { discipline = 0 ; parameterNumber = 13 ; parameterCategory = 2 ; - } +} #Geopotential height 'geopotential_height' = { discipline = 0 ; parameterNumber = 5 ; parameterCategory = 3 ; - } +} #Relative humidity 'relative_humidity' = { discipline = 0 ; parameterNumber = 1 ; parameterCategory = 1 ; - } +} #Land-sea mask 'land_binary_mask' = { discipline = 2 ; parameterNumber = 0 ; typeOfFirstFixedSurface = 1 ; parameterCategory = 0 ; - } +} #Surface roughness 'surface_roughness_length' = { discipline = 2 ; parameterNumber = 1 ; parameterCategory = 0 ; - } +} #Surface solar radiation 'surface_net_upward_longwave_flux' = { discipline = 0 ; @@ -115,7 +115,7 @@ typeOfFirstFixedSurface = 1 ; parameterCategory = 4 ; typeOfStatisticalProcessing = 1 ; - } +} #Surface net thermal radiation 'surface_net_upward_longwave_flux' = { discipline = 0 ; @@ -123,7 +123,7 @@ typeOfFirstFixedSurface = 1 ; parameterCategory = 5 ; typeOfStatisticalProcessing = 1 ; - } +} #Top net thermal radiation 'toa_outgoing_longwave_flux' = { discipline = 0 ; @@ -139,7 +139,7 @@ parameterNumber = 7 ; typeOfStatisticalProcessing = 1 ; typeOfFirstFixedSurface = 1 ; - } +} #Surface net solar radiation 'surface_net_downward_shortwave_flux' = { discipline = 0 ; @@ -147,13 +147,13 @@ parameterNumber = 9 ; typeOfStatisticalProcessing = 1 ; typeOfFirstFixedSurface = 1 ; - } +} #Eastward turbulent surface stress 'surface_downward_eastward_stress' = { discipline = 0 ; parameterCategory = 2 ; parameterNumber = 38 ; - } +} #Northward turbulent surface stress 'surface_downward_northward_stress' = { discipline = 0 ; @@ -166,3 +166,12 @@ parameterCategory = 2 ; parameterNumber = 0 ; } +#Depth of 20C isotherm +'depth_of_isosurface_of_sea_water_potential_temperature' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfFirstFixedSurface = 29315 ; +} diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index a288d9508..2e45eb706 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -1355,6 +1355,27 @@ parameterCategory = 0 ; parameterNumber = 15 ; } +#Depth of 20C isotherm +'t20d' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfFirstFixedSurface = 29315 ; + } +#Average salinity in the upper 300m +'sav300' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfSecondFixedSurface = 160 ; + typeOfFirstFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + } #Surface runoff 'sro' = { discipline = 2 ; diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index 7a74878f0..d71807fa9 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -16740,12 +16740,6 @@ parameterCategory = 151 ; parameterNumber = 162 ; } -#Depth of 20C isotherm -'t20d' = { - discipline = 192 ; - parameterCategory = 151 ; - parameterNumber = 163 ; - } #Average potential temperature in the upper 300m 'tav300' = { discipline = 192 ; @@ -16812,12 +16806,6 @@ parameterCategory = 151 ; parameterNumber = 174 ; } -#Average salinity in the upper 300m -'sav300' = { - discipline = 192 ; - parameterCategory = 151 ; - parameterNumber = 175 ; - } #Layer Thickness at scalar points 'ldp' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index c73b5b2c5..5852bb9a1 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -16740,12 +16740,6 @@ parameterCategory = 151 ; parameterNumber = 162 ; } -#Depth of 20C isotherm -'Depth of 20C isotherm' = { - discipline = 192 ; - parameterCategory = 151 ; - parameterNumber = 163 ; - } #Average potential temperature in the upper 300m 'Average potential temperature in the upper 300m' = { discipline = 192 ; @@ -16812,12 +16806,6 @@ parameterCategory = 151 ; parameterNumber = 174 ; } -#Average salinity in the upper 300m -'Average salinity in the upper 300m' = { - discipline = 192 ; - parameterCategory = 151 ; - parameterNumber = 175 ; - } #Layer Thickness at scalar points 'Layer Thickness at scalar points' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index 03468235e..fc263f151 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -16740,12 +16740,6 @@ parameterCategory = 151 ; parameterNumber = 162 ; } -#Depth of 20C isotherm -'151163' = { - discipline = 192 ; - parameterCategory = 151 ; - parameterNumber = 163 ; - } #Average potential temperature in the upper 300m '151164' = { discipline = 192 ; @@ -16812,12 +16806,6 @@ parameterCategory = 151 ; parameterNumber = 174 ; } -#Average salinity in the upper 300m -'151175' = { - discipline = 192 ; - parameterCategory = 151 ; - parameterNumber = 175 ; - } #Layer Thickness at scalar points '151176' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index 6200e67a6..46b875dce 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -16740,12 +16740,6 @@ parameterCategory = 151 ; parameterNumber = 162 ; } -#Depth of 20C isotherm -'t20d' = { - discipline = 192 ; - parameterCategory = 151 ; - parameterNumber = 163 ; - } #Average potential temperature in the upper 300m 'tav300' = { discipline = 192 ; @@ -16812,12 +16806,6 @@ parameterCategory = 151 ; parameterNumber = 174 ; } -#Average salinity in the upper 300m -'sav300' = { - discipline = 192 ; - parameterCategory = 151 ; - parameterNumber = 175 ; - } #Layer Thickness at scalar points 'ldp' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index 280a252d4..b4a7d042d 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -16740,12 +16740,6 @@ parameterCategory = 151 ; parameterNumber = 162 ; } -#Depth of 20C isotherm -'m' = { - discipline = 192 ; - parameterCategory = 151 ; - parameterNumber = 163 ; - } #Average potential temperature in the upper 300m 'degrees C' = { discipline = 192 ; @@ -16812,12 +16806,6 @@ parameterCategory = 151 ; parameterNumber = 174 ; } -#Average salinity in the upper 300m -'psu' = { - discipline = 192 ; - parameterCategory = 151 ; - parameterNumber = 175 ; - } #Layer Thickness at scalar points 'm' = { discipline = 192 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index ff8c5fe87..27dbb8a2b 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -1355,6 +1355,27 @@ parameterCategory = 0 ; parameterNumber = 15 ; } +#Depth of 20C isotherm +'Depth of 20C isotherm' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + scaledValueOfFirstFixedSurface = 29315 ; + scaleFactorOfFirstFixedSurface = 2 ; + } +#Average salinity in the upper 300m +'Average salinity in the upper 300m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfSecondFixedSurface = 160 ; + typeOfFirstFixedSurface = 160 ; + scaledValueOfSecondFixedSurface = 300 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaleFactorOfSecondFixedSurface = 0 ; + } #Surface runoff 'Surface runoff' = { discipline = 2 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index d0a0c31a2..36a360ac1 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -1355,6 +1355,27 @@ parameterCategory = 0 ; parameterNumber = 15 ; } +#Depth of 20C isotherm +'151163' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfFirstFixedSurface = 29315 ; + } +#Average salinity in the upper 300m +'151175' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfSecondFixedSurface = 160 ; + typeOfFirstFixedSurface = 160 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + } #Surface runoff '174008' = { discipline = 2 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 799f066af..733e9ee3e 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -1355,6 +1355,27 @@ parameterCategory = 0 ; parameterNumber = 15 ; } +#Depth of 20C isotherm +'t20d' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + scaleFactorOfFirstFixedSurface = 2 ; + scaledValueOfFirstFixedSurface = 29315 ; + } +#Average salinity in the upper 300m +'sav300' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfSecondFixedSurface = 160 ; + typeOfFirstFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + } #Surface runoff 'sro' = { discipline = 2 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 1c0ad2d0c..f348477e3 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -1355,6 +1355,27 @@ parameterCategory = 0 ; parameterNumber = 15 ; } +#Depth of 20C isotherm +'m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfFirstFixedSurface = 20 ; + scaledValueOfFirstFixedSurface = 29315 ; + scaleFactorOfFirstFixedSurface = 2 ; + } +#Average salinity in the upper 300m +'psu' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + typeOfSecondFixedSurface = 160 ; + typeOfFirstFixedSurface = 160 ; + scaledValueOfSecondFixedSurface = 300 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaleFactorOfSecondFixedSurface = 0 ; + } #Surface runoff 'kg m**-2' = { discipline = 2 ; From 10b96260e03f288805e8b311526b007fc363fbde Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 28 May 2019 13:48:57 +0100 Subject: [PATCH 256/414] ECC-879: Add WMO GRIB2 definition to S2S ocean parameters (151225) --- definitions/grib2/cfVarName.def | 11 +++++++++++ definitions/grib2/name.def | 11 +++++++++++ definitions/grib2/paramId.def | 11 +++++++++++ definitions/grib2/shortName.def | 11 +++++++++++ definitions/grib2/units.def | 11 +++++++++++ 5 files changed, 55 insertions(+) diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index 2e45eb706..929718dc8 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -427,6 +427,16 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } +#Ocean mixed layer thickness defined by sigma theta 0.01 kg/m3 +'mlotst010' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + scaledValueOfFirstFixedSurface = 1 ; + scaleFactorOfFirstFixedSurface = 2 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + } #Ammonium aerosol mass mixing ratio 'aermr18' = { discipline = 0 ; @@ -1360,6 +1370,7 @@ discipline = 10 ; parameterCategory = 4 ; parameterNumber = 14 ; + typeOfSecondFixedSurface = 255 ; typeOfFirstFixedSurface = 20 ; scaleFactorOfFirstFixedSurface = 2 ; scaledValueOfFirstFixedSurface = 29315 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index 27dbb8a2b..60199693c 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -427,6 +427,16 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } +#Ocean mixed layer thickness defined by sigma theta 0.01 kg/m3 +'Ocean mixed layer thickness defined by sigma theta 0.01 kg/m3' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + scaledValueOfFirstFixedSurface = 1 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaleFactorOfFirstFixedSurface = 2 ; + } #Ammonium aerosol mass mixing ratio 'Ammonium aerosol mass mixing ratio' = { discipline = 0 ; @@ -1361,6 +1371,7 @@ parameterCategory = 4 ; parameterNumber = 14 ; typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; scaledValueOfFirstFixedSurface = 29315 ; scaleFactorOfFirstFixedSurface = 2 ; } diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 36a360ac1..814e09f22 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -427,6 +427,16 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } +#Ocean mixed layer thickness defined by sigma theta 0.01 kg/m3 +'151225' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfSecondFixedSurface = 255 ; + scaleFactorOfFirstFixedSurface = 2 ; + typeOfFirstFixedSurface = 169 ; + scaledValueOfFirstFixedSurface = 1 ; + } #Ammonium aerosol mass mixing ratio '210249' = { discipline = 0 ; @@ -1361,6 +1371,7 @@ parameterCategory = 4 ; parameterNumber = 14 ; typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; scaleFactorOfFirstFixedSurface = 2 ; scaledValueOfFirstFixedSurface = 29315 ; } diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 733e9ee3e..afa566561 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -427,6 +427,16 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } +#Ocean mixed layer thickness defined by sigma theta 0.01 kg/m3 +'mlotst010' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 1 ; + scaleFactorOfFirstFixedSurface = 2 ; + typeOfFirstFixedSurface = 169 ; + } #Ammonium aerosol mass mixing ratio 'aermr18' = { discipline = 0 ; @@ -1360,6 +1370,7 @@ discipline = 10 ; parameterCategory = 4 ; parameterNumber = 14 ; + typeOfSecondFixedSurface = 255 ; typeOfFirstFixedSurface = 20 ; scaleFactorOfFirstFixedSurface = 2 ; scaledValueOfFirstFixedSurface = 29315 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index f348477e3..3d4353717 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -427,6 +427,16 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } +#Ocean mixed layer thickness defined by sigma theta 0.01 kg/m3 +'m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + scaledValueOfFirstFixedSurface = 1 ; + typeOfFirstFixedSurface = 169 ; + typeOfSecondFixedSurface = 255 ; + scaleFactorOfFirstFixedSurface = 2 ; + } #Ammonium aerosol mass mixing ratio 'kg kg**-1' = { discipline = 0 ; @@ -1361,6 +1371,7 @@ parameterCategory = 4 ; parameterNumber = 14 ; typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; scaledValueOfFirstFixedSurface = 29315 ; scaleFactorOfFirstFixedSurface = 2 ; } From e605915cd2685bbe56adf89e7f1937ae3d58e01a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 28 May 2019 13:54:56 +0100 Subject: [PATCH 257/414] Improve parameter check script error message --- definitions/check_grib_defs.pl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/definitions/check_grib_defs.pl b/definitions/check_grib_defs.pl index 48dc64193..e346f973f 100755 --- a/definitions/check_grib_defs.pl +++ b/definitions/check_grib_defs.pl @@ -194,7 +194,8 @@ sub process { exists($map2{'scaleFactorOfSecondFixedSurface'}) || exists($map2{'scaledValueOfSecondFixedSurface'})) ) { - print "File: $filename, line: $lineNum: TypeOfSurface problem (GRIB-229): Please check: $desc\n"; + print "File: $filename, line: $lineNum: TypeOfSurface issue: Please check: \"$desc\" ($concept)\n"; + print " Make sure the 'typeOfSecondFixedSurface' key comes BEFORE all the scale keys\n"; #print "DUMP,\t", Data::Dumper->Dump([\%map2], [" "]); $error = 1; } From 2a47e1bfdd077c59a7277b5ad138a844a656f831 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 28 May 2019 14:41:02 +0100 Subject: [PATCH 258/414] ECC-879: Fix cfName of ocean param --- definitions/grib2/cfName.def | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/definitions/grib2/cfName.def b/definitions/grib2/cfName.def index 101e31911..4993eeb93 100644 --- a/definitions/grib2/cfName.def +++ b/definitions/grib2/cfName.def @@ -172,6 +172,17 @@ parameterCategory = 4 ; parameterNumber = 14 ; typeOfFirstFixedSurface = 20 ; + typeOfSecondFixedSurface = 255 ; scaleFactorOfFirstFixedSurface = 2 ; scaledValueOfFirstFixedSurface = 29315 ; } +#Ocean mixed layer thickness defined by sigma theta 0.01 kg/m3 +'ocean_mixed_layer_thickness_defined_by_sigma_theta' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 14 ; + typeOfSecondFixedSurface = 255 ; + scaleFactorOfFirstFixedSurface = 2 ; + typeOfFirstFixedSurface = 169 ; + scaledValueOfFirstFixedSurface = 1 ; +} From 1b074e8b221f084f738bbe70ff42a6b154017dd5 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 28 May 2019 18:41:45 +0100 Subject: [PATCH 259/414] ECC-930: GRIB: Reduce size of reduced lat/lon sample files by removing bitmap section --- samples/reduced_ll_sfc_grib1.tmpl | Bin 40288 -> 1110 bytes samples/reduced_ll_sfc_grib2.tmpl | Bin 40352 -> 1181 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/samples/reduced_ll_sfc_grib1.tmpl b/samples/reduced_ll_sfc_grib1.tmpl index c9781f761d62b09074076b483f7a5ff1b1c16216..d62c4fb7c37f1fec63650f043432ea5f7a67fc37 100644 GIT binary patch delta 42 ucmaE`i|HDNfP0Xq69Y>aBLjm;Pg2SMhK&N|Ec^^S91IMO0t`T44g>)DkqK)6 literal 40288 zcmeIyQDmKW7{~Gd^E}xW5i!+vv5T;(s$Rrd#ny{+v7L)8tD1_)MOAxD#KbO+shEmd zkExm?Dk`?fD(0AqiHJESqK=A)iKvK(h=|xCrg9NoO)irCPD0nancdCzeH`BNI`8}b z|DWggoDVxb%BAn}mQq{klN$%s-+EGdE#7EMy3&wRI-$?Yhnd%%$Ye5a*DlsIq_@(+ zf&F3E@9FE8x3AxOrGG^iK7IL?e{(*P%4sZ3q)M7jkJDUQNK0uoZKSRAG(Agumh4q) zv}4w6Eq2<@S;pS6tmUlTKDJJ~VtMPfUMpCi^;^;I+JN1+VS8X@8?yH+Y|J`?d*Pr{I??+wKM?*Blu{arT zMoXNEGjT3jBNJ_LA+qsa(I2;>7+=Mm z_&Q245QA|)hT@wTi3c$n-$yxqh_U!F#$zHTMwX9l+Rn?km{jfG-BQ_7~*QnLji`tHVs=t4Gbnnq~YEL|RcI_>-x2+t$xweAE z!__QkUA5KCX`M4#Z*A3&wEijWqoVyxYG32p--Z{Bv<=>`0w5lIx)Rz|Z=cM}7q<+;$o$srE&(+5r z^>a&oT~~jX)#rKjdq#bqQvWBFgNMq)sB$r+e3X=vqVjT6xhW_=J<8El<*7rtYFECp z%Gr74?W}UwqWm3K4(r`*U%A{>KDU+AHRW|txt&#hrb>P{lBqx4;^BmQ~ci-Wtv?jY~t#;Ykt;155wl3?ojNP+7dtih1#Bw%lqn5V`E7+7x+pI0v zlC9dhZP=!Lv~72<@G9T$wI266KkD_~=%+m4NpJEC-r{Y3#oN8pQ=ax4e$#tAlmPggEMO z1jkU11{}vJBya{voJBJ(;1XKVhRe8yc66Wr};hRUqcutltOLaf9_-V_lb7-+9(~n)RM! z-N#w~G3MYo^N?jO2AGdt<|Mk z-L{#_P3Ci*IbC92XPMh6=68ZQ9%Y_$%=IAi-N&3~nD;K`KE?dEvkzL?4^8Zg1pA|b zeR7!nQp>)nWdDS)#a?>Ho?2mV&9TS6$Eb^azRS)H9`GUjh~5OB2mh=oi(V-qoW2!Z z+#QehmX}^4Uw)=<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb z1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ! z5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^ zNI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndv YAOQ(TKmrnwfCPRNfkFtOY|lxKPYA@V>i_@% From 937984c1df83aa3a267f73343e679c992ecb93c6 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 29 May 2019 12:19:50 +0100 Subject: [PATCH 260/414] FindSZip.cmake moved from ecbuild --- cmake/FindSZip.cmake | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 cmake/FindSZip.cmake diff --git a/cmake/FindSZip.cmake b/cmake/FindSZip.cmake new file mode 100644 index 000000000..a8dc84780 --- /dev/null +++ b/cmake/FindSZip.cmake @@ -0,0 +1,30 @@ +# (C) Copyright 2011- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# In applying this licence, ECMWF does not waive the privileges and immunities +# granted to it by virtue of its status as an intergovernmental organisation nor +# does it submit to any jurisdiction. + +# - Try to find SZip +# Once done this will define +# SZIP_FOUND - System has SZip +# SZIP_INCLUDE_DIRS - The SZip include directories +# SZIP_LIBRARIES - The libraries needed to use SZip + +if( DEFINED SZIP_PATH ) + find_path( SZIP_INCLUDE_DIR szlib.h PATHS ${SZIP_PATH}/include PATH_SUFFIXES szip NO_DEFAULT_PATH ) + find_library( SZIP_LIBRARY NAMES szip sz PATHS ${SZIP_PATH}/lib PATH_SUFFIXES szip NO_DEFAULT_PATH ) +endif() + +find_path( SZIP_INCLUDE_DIR szlib.h PATH_SUFFIXES szip ) +find_library( SZIP_LIBRARY NAMES szip sz PATH_SUFFIXES szip ) + +set( SZIP_LIBRARIES ${SZIP_LIBRARY} ) +set( SZIP_INCLUDE_DIRS ${SZIP_INCLUDE_DIR} ) + +include(FindPackageHandleStandardArgs) + +find_package_handle_standard_args(SZip DEFAULT_MSG SZIP_LIBRARY SZIP_INCLUDE_DIR) + +mark_as_advanced(SZIP_INCLUDE_DIR SZIP_LIBRARY ) From d26e3dc00fe908a31745799e4feff0b30c902020 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 29 May 2019 13:12:09 +0100 Subject: [PATCH 261/414] ECC-928: Remove lwda for type=gai --- definitions/mars/grib.lwda.gai.def | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 definitions/mars/grib.lwda.gai.def diff --git a/definitions/mars/grib.lwda.gai.def b/definitions/mars/grib.lwda.gai.def deleted file mode 100644 index 66e453379..000000000 --- a/definitions/mars/grib.lwda.gai.def +++ /dev/null @@ -1,2 +0,0 @@ -alias mars.anoffset=offsetToEndOf4DvarWindow; - From 6f5c14b50406215f5689155c33fa72e1a4d79858 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 29 May 2019 16:12:03 +0100 Subject: [PATCH 262/414] Examples: variable name --- examples/F90/bufr_read_header.f90 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/F90/bufr_read_header.f90 b/examples/F90/bufr_read_header.f90 index c14cddd3f..2415a2b20 100644 --- a/examples/F90/bufr_read_header.f90 +++ b/examples/F90/bufr_read_header.f90 @@ -23,7 +23,7 @@ integer :: count=0 integer(kind=4) :: dataCategory,dataSubCategory,typicalDate integer(kind=4) :: centre,subcentre integer(kind=4) :: masterversion,localversion -integer(kind=4) :: numberofsubsets +integer(kind=4) :: numberOfSubsets call codes_open_file(ifile,'../../data/bufr/syno_multi.bufr','r') @@ -57,8 +57,8 @@ integer(kind=4) :: numberofsubsets call codes_get(ibufr,'localTablesVersionNumber',localversion) write(*,*) ' localTablesVersionNumber:',localversion - call codes_get(ibufr,'numberOfSubsets',numberofsubsets) - write(*,*) ' numberOfSubsets:',numberofsubsets + call codes_get(ibufr,'numberOfSubsets',numberOfSubsets) + write(*,*) ' numberOfSubsets:',numberOfSubsets ! Release the bufr message call codes_release(ibufr) From 55abfc40e13b5dcb26c8d0f086c77a71ac084b6b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 29 May 2019 16:24:42 +0100 Subject: [PATCH 263/414] ECC-931: bufr_dump -p: print the key 'subsetNumber' --- src/grib_dumper_class_bufr_simple.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/grib_dumper_class_bufr_simple.c b/src/grib_dumper_class_bufr_simple.c index d55594fcf..4828d9bc6 100644 --- a/src/grib_dumper_class_bufr_simple.c +++ b/src/grib_dumper_class_bufr_simple.c @@ -26,6 +26,7 @@ MEMBERS = long end MEMBERS = long isLeaf MEMBERS = long isAttribute + MEMBERS = long numberOfSubsets MEMBERS = grib_string_list* keys END_CLASS_DEF @@ -64,6 +65,7 @@ typedef struct grib_dumper_bufr_simple { long end; long isLeaf; long isAttribute; + long numberOfSubsets; grib_string_list* keys; } grib_dumper_bufr_simple; @@ -120,6 +122,7 @@ static int init(grib_dumper* d) self->empty=1; self->isLeaf=0; self->isAttribute=0; + self->numberOfSubsets=0; self->keys=(grib_string_list*)grib_context_malloc_clear(c,sizeof(grib_string_list)); return GRIB_SUCCESS; @@ -303,7 +306,16 @@ static void dump_long(grib_dumper* d, grib_accessor* a, const char* comment) if (self->isLeaf==0) { char* prefix; int dofree=0; - + + /* Note: the "subsetNumber" key is only there for UNCOMPRESSED BUFR messages */ + if (self->numberOfSubsets > 1 && strcmp(a->name,"subsetNumber")==0) { + err = grib_unpack_long(a,&value,&size); + DebugAssert(!err); + fprintf(self->dumper.out,"%s=%ld\n",a->name,value); + DebugAssert( !grib_is_missing_long(a,value) ); + return; + } + r=compute_bufr_key_rank(h,self->keys,a->name); if (r!=0) { prefix=(char*)grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10)); @@ -672,9 +684,13 @@ static void dump_section(grib_dumper* d, grib_accessor* a, grib_block_of_accesso !grib_inline_strcmp(a->name,"GRIB") || !grib_inline_strcmp(a->name,"META") ) { + int err = 0; grib_handle* h=grib_handle_of_accessor(a); self->begin=1; self->empty=1; + + err = grib_get_long(h, "numberOfSubsets", &(self->numberOfSubsets)); + DebugAssert(!err); _dump_long_array(h,self->dumper.out,"dataPresentIndicator"); _dump_long_array(h,self->dumper.out,"delayedDescriptorReplicationFactor"); _dump_long_array(h,self->dumper.out,"shortDelayedDescriptorReplicationFactor"); From 1eb67abca6ed2b0758f516065c710e021a0daeb4 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 29 May 2019 18:04:42 +0100 Subject: [PATCH 264/414] ECC-932: bufr_dump: Add option to print expanded descriptors along with their keys and units --- tools/bufr_dump.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/tools/bufr_dump.c b/tools/bufr_dump.c index 7ed605e02..df49b7790 100644 --- a/tools/bufr_dump.c +++ b/tools/bufr_dump.c @@ -62,6 +62,7 @@ const char* grib_tool_description="Dump the content of a BUFR file in different const char* grib_tool_name="bufr_dump"; const char* grib_tool_usage="[options] bufr_file bufr_file ..."; static int json=0; +static int dump_descriptors=0; static char* json_option=0; static int first_handle=1; static grib_dumper* dumper=0; @@ -157,8 +158,11 @@ int grib_tool_init(grib_runtime_options* options) if (grib_options_on("H")) options->dump_flags |= GRIB_DUMP_FLAG_HEXADECIMAL; - if (grib_options_on("d") && !grib_options_on("u")) + if (grib_options_on("d") && !grib_options_on("u")) { options->dump_flags |= GRIB_DUMP_FLAG_ALL_DATA; + dump_descriptors = 1; + json=0; + } /* Turn off GRIB multi-field support mode. Not relevant for BUFR */ grib_multi_support_off(grib_context_get_default()); @@ -358,6 +362,60 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) } } grib_dump_content(h,stdout,options->dump_mode,options->dump_flags,0); + } else if (dump_descriptors) { + size_t size_desc=0, size_names=0, size_abbrevs=0, i=0; + size_t size_proper=0; + long* array_descriptors = NULL; + char** array_names = NULL; + char** array_abbrevs = NULL; + char* the_key = "expandedDescriptors"; + + GRIB_CHECK_NOLINE( grib_get_size(h, the_key, &size_desc), 0); + array_descriptors = (long*)malloc(size_desc*sizeof(long)); + if (!array_descriptors) { + fprintf(stderr, "%s: Memory allocation error", the_key); + exit(GRIB_OUT_OF_MEMORY); + } + GRIB_CHECK_NOLINE( grib_get_long_array(h, the_key, array_descriptors, &size_desc), 0); + size_proper = size_desc; + for(i=0; i Date: Wed, 29 May 2019 18:22:35 +0100 Subject: [PATCH 265/414] ECC-932: fix 999999 descriptors --- tools/bufr_dump.c | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/tools/bufr_dump.c b/tools/bufr_dump.c index df49b7790..0ce42f806 100644 --- a/tools/bufr_dump.c +++ b/tools/bufr_dump.c @@ -363,7 +363,7 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) } grib_dump_content(h,stdout,options->dump_mode,options->dump_flags,0); } else if (dump_descriptors) { - size_t size_desc=0, size_names=0, size_abbrevs=0, i=0; + size_t size_desc=0, size_names=0, size_abbrevs=0, i=0, j=0; size_t size_proper=0; long* array_descriptors = NULL; char** array_names = NULL; @@ -378,6 +378,9 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) } GRIB_CHECK_NOLINE( grib_get_long_array(h, the_key, array_descriptors, &size_desc), 0); size_proper = size_desc; + /* Unfortunately we have to exclude the pesky 999999 descriptors as they don't + * equivalents in the name and abbreviation arrays! + */ for(i=0; i Date: Thu, 30 May 2019 14:40:17 +0100 Subject: [PATCH 266/414] ECC-932: disable -u option --- tools/bufr_dump.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/tools/bufr_dump.c b/tools/bufr_dump.c index 0ce42f806..fbc44844e 100644 --- a/tools/bufr_dump.c +++ b/tools/bufr_dump.c @@ -40,8 +40,8 @@ grib_option grib_options[]={ {"O",0,"Octet mode. WMO documentation style dump.\n",0,1,0}, {"p",0,"Plain dump.\n",0,1,0}, /* {"D",0,0,0,1,0}, */ /* See ECC-215 */ - {"d",0,"Print all data values.\n",1,1,0}, - {"u",0,"Print only some values.\n",0,1,0}, + {"d",0,"Dump the descriptors.\n",1,1,0}, + /*{"u",0,"Print only some values.\n",0,1,0},*/ /* {"C",0,0,0,1,0}, */ {"t",0,0,0,1,0}, {"f",0,0,0,1,0}, @@ -368,6 +368,7 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) long* array_descriptors = NULL; char** array_names = NULL; char** array_abbrevs = NULL; + char** array_units = NULL; char* the_key = "expandedDescriptors"; GRIB_CHECK_NOLINE( grib_get_size(h, the_key, &size_desc), 0); @@ -385,6 +386,7 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) if(array_descriptors[i]==999999) size_proper--; } + /* The string arrays for keys and names should be in sync */ the_key = "expandedAbbreviations"; GRIB_CHECK_NOLINE( grib_get_size(h, the_key, &size_abbrevs), 0); array_abbrevs = (char**)malloc(size_abbrevs * sizeof(char*)); @@ -393,7 +395,7 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) exit(GRIB_OUT_OF_MEMORY); } GRIB_CHECK_NOLINE( grib_get_string_array(h, the_key, array_abbrevs, &size_abbrevs), 0); - DebugAssert(size_proper==size_abbrevs); + Assert(size_proper==size_abbrevs); the_key = "expandedNames"; GRIB_CHECK_NOLINE( grib_get_size(h, the_key, &size_names), 0); @@ -403,7 +405,7 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) exit(GRIB_OUT_OF_MEMORY); } GRIB_CHECK_NOLINE( grib_get_string_array(h, the_key, array_names, &size_names), 0); - DebugAssert(size_proper==size_names); + Assert(size_proper==size_names); i=0; j=0; From db3cb1948c23ffee92fa5bee154878f45b77ac62 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 30 May 2019 15:01:09 +0100 Subject: [PATCH 267/414] ECC-932: Add units --- tools/bufr_dump.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/tools/bufr_dump.c b/tools/bufr_dump.c index fbc44844e..ac066e3a4 100644 --- a/tools/bufr_dump.c +++ b/tools/bufr_dump.c @@ -38,7 +38,7 @@ grib_option grib_options[]={ {"S",0,0,1,0,0}, {"O",0,"Octet mode. WMO documentation style dump.\n",0,1,0}, - {"p",0,"Plain dump.\n",0,1,0}, + {"p",0,"Plain dump (key=value format).\n",0,1,0}, /* {"D",0,0,0,1,0}, */ /* See ECC-215 */ {"d",0,"Dump the descriptors.\n",1,1,0}, /*{"u",0,"Print only some values.\n",0,1,0},*/ @@ -363,8 +363,8 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) } grib_dump_content(h,stdout,options->dump_mode,options->dump_flags,0); } else if (dump_descriptors) { - size_t size_desc=0, size_names=0, size_abbrevs=0, i=0, j=0; - size_t size_proper=0; + size_t size_desc=0, size_names=0, size_abbrevs=0, size_units=0; + size_t i=0, j=0, size_proper=0; long* array_descriptors = NULL; char** array_names = NULL; char** array_abbrevs = NULL; @@ -386,7 +386,7 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) if(array_descriptors[i]==999999) size_proper--; } - /* The string arrays for keys and names should be in sync */ + /* The string arrays for keys, names and units should have the same length*/ the_key = "expandedAbbreviations"; GRIB_CHECK_NOLINE( grib_get_size(h, the_key, &size_abbrevs), 0); array_abbrevs = (char**)malloc(size_abbrevs * sizeof(char*)); @@ -407,19 +407,31 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) GRIB_CHECK_NOLINE( grib_get_string_array(h, the_key, array_names, &size_names), 0); Assert(size_proper==size_names); + the_key = "expandedUnits"; + GRIB_CHECK_NOLINE( grib_get_size(h, the_key, &size_units), 0); + array_units = (char**)malloc(size_units * sizeof(char*)); + if (!array_units) { + fprintf(stderr, "%s: Memory allocation error", the_key); + exit(GRIB_OUT_OF_MEMORY); + } + GRIB_CHECK_NOLINE( grib_get_string_array(h, the_key, array_units, &size_units), 0); + Assert(size_proper==size_units); + i=0; j=0; while(i Date: Thu, 30 May 2019 15:21:59 +0100 Subject: [PATCH 268/414] ECC-932: Fix default for -d --- tools/bufr_dump.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/bufr_dump.c b/tools/bufr_dump.c index ac066e3a4..3e2a78953 100644 --- a/tools/bufr_dump.c +++ b/tools/bufr_dump.c @@ -40,7 +40,7 @@ grib_option grib_options[]={ {"O",0,"Octet mode. WMO documentation style dump.\n",0,1,0}, {"p",0,"Plain dump (key=value format).\n",0,1,0}, /* {"D",0,0,0,1,0}, */ /* See ECC-215 */ - {"d",0,"Dump the descriptors.\n",1,1,0}, + {"d",0,"Dump the descriptors.\n",0,1,0}, /*{"u",0,"Print only some values.\n",0,1,0},*/ /* {"C",0,0,0,1,0}, */ {"t",0,0,0,1,0}, From 60586514ad81d988b4626a08ae50176b0cea2343 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 30 May 2019 18:49:17 +0100 Subject: [PATCH 269/414] ECC-932: Add tests --- tests/CMakeLists.txt | 1 + tests/bufr_dump_descriptors.sh | 41 ++++++++++++++++++++++++++++++++++ tests/bufr_dump_samples.sh | 1 + 3 files changed, 43 insertions(+) create mode 100755 tests/bufr_dump_descriptors.sh diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 8f4e8bf41..36bbae279 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -67,6 +67,7 @@ list( APPEND tests_data_reqd grib_double_cmp grib_change_packing bufr_dump_data + bufr_dump_descriptors bufr_dump_decode_filter bufr_dump_encode_filter bufrdc_desc_ref diff --git a/tests/bufr_dump_descriptors.sh b/tests/bufr_dump_descriptors.sh new file mode 100755 index 000000000..5d4752cc2 --- /dev/null +++ b/tests/bufr_dump_descriptors.sh @@ -0,0 +1,41 @@ +#!/bin/sh +# Copyright 2005-2019 ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.sh + +#Define a common label for all the tmp files +label="bufr_dump_descriptors_test" + +#Create log file +fLog=${label}".log" +rm -f $fLog +touch $fLog + +#Define tmp bufr files +fJsonTmp=${label}".txt.tmp" + +if [ $HAVE_MEMFS -eq 1 ]; then + unset ECCODES_DEFINITION_PATH + unset ECCODES_SAMPLES_PATH +fi + +#============================================== +# Test downloaded data files +#============================================== +bufr_files=`cat ${data_dir}/bufr/bufr_data_files.txt` +REDIRECT=/dev/null + +for file in ${bufr_files} +do + ${tools_dir}/bufr_dump -d ${data_dir}/bufr/$file >/dev/null +done + + +rm -f $fLog diff --git a/tests/bufr_dump_samples.sh b/tests/bufr_dump_samples.sh index 2e66b5faf..3a620fdad 100755 --- a/tests/bufr_dump_samples.sh +++ b/tests/bufr_dump_samples.sh @@ -24,6 +24,7 @@ fJsonTmp=${label}".json.tmp" # Test sample BUFR files for file in $ECCODES_SAMPLES_PATH/BUFR*.tmpl; do ${tools_dir}/bufr_dump -O $file >/dev/null + ${tools_dir}/bufr_dump -d $file >/dev/null done rm -f $fLog From 57e556b0fbd551a73dc633f3e70e356451fce75a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 30 May 2019 19:13:17 +0100 Subject: [PATCH 270/414] ECC-932: clean up --- tools/bufr_dump.c | 178 +++++++++++++++++++++++++--------------------- 1 file changed, 95 insertions(+), 83 deletions(-) diff --git a/tools/bufr_dump.c b/tools/bufr_dump.c index 3e2a78953..18bd03c31 100644 --- a/tools/bufr_dump.c +++ b/tools/bufr_dump.c @@ -261,6 +261,87 @@ static void print_header(grib_runtime_options* options) } } +static void bufr_dump_descriptors(grib_handle* h) +{ + size_t size_desc=0, size_names=0, size_abbrevs=0, size_units=0; + size_t i=0, j=0, size_proper=0; + long* array_descriptors = NULL; + char** array_names = NULL; + char** array_abbrevs = NULL; + char** array_units = NULL; + char* the_key = "expandedDescriptors"; + + GRIB_CHECK_NOLINE( grib_get_size(h, the_key, &size_desc), 0); + array_descriptors = (long*)malloc(size_desc*sizeof(long)); + if (!array_descriptors) { + fprintf(stderr, "%s: Memory allocation error", the_key); + exit(GRIB_OUT_OF_MEMORY); + } + GRIB_CHECK_NOLINE( grib_get_long_array(h, the_key, array_descriptors, &size_desc), 0); + size_proper = size_desc; + /* Exclude the pesky 999999 descriptors as they don't + * have equivalents in the name, abbreviation and units arrays! + */ + for(i=0; iskip) { if (options->set_values_count != 0) @@ -279,7 +360,8 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) for (i=0;iprint_keys_count;i++) grib_set_flag(h,options->print_keys[i].name,GRIB_ACCESSOR_FLAG_DUMP); - if (json) { + if (json) + { /* ECC-233: print comma as separator between messages */ if (!first_handle && options->handle_count>1) { fprintf(stdout,",\n"); @@ -345,7 +427,9 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) if (!strcmp(options->dump_mode,"default")) { printf("}\n"); } - } else if (grib_options_on("O")) { + } + else if (grib_options_on("O")) + { char tmp[1024]; sprintf(tmp,"MESSAGE %d ( length=%ld )",options->handle_count,length); if (!grib_options_on("C")) @@ -362,86 +446,14 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) } } grib_dump_content(h,stdout,options->dump_mode,options->dump_flags,0); - } else if (dump_descriptors) { - size_t size_desc=0, size_names=0, size_abbrevs=0, size_units=0; - size_t i=0, j=0, size_proper=0; - long* array_descriptors = NULL; - char** array_names = NULL; - char** array_abbrevs = NULL; - char** array_units = NULL; - char* the_key = "expandedDescriptors"; - - GRIB_CHECK_NOLINE( grib_get_size(h, the_key, &size_desc), 0); - array_descriptors = (long*)malloc(size_desc*sizeof(long)); - if (!array_descriptors) { - fprintf(stderr, "%s: Memory allocation error", the_key); - exit(GRIB_OUT_OF_MEMORY); - } - GRIB_CHECK_NOLINE( grib_get_long_array(h, the_key, array_descriptors, &size_desc), 0); - size_proper = size_desc; - /* Unfortunately we have to exclude the pesky 999999 descriptors as they don't - * equivalents in the name and abbreviation arrays! - */ - for(i=0; i Date: Fri, 31 May 2019 12:53:17 +0100 Subject: [PATCH 271/414] ECC-933: Update parameters 172142, 172143, 172228 --- definitions/grib1/2.98.172.table | 6 +++--- definitions/grib1/localConcepts/ecmf/cfVarName.def | 8 ++++---- definitions/grib1/localConcepts/ecmf/name.def | 12 ++++++------ definitions/grib1/localConcepts/ecmf/paramId.def | 6 +++--- definitions/grib1/localConcepts/ecmf/shortName.def | 8 ++++---- definitions/grib1/localConcepts/ecmf/units.def | 6 +++--- definitions/grib2/localConcepts/ecmf/cfVarName.def | 8 ++++---- definitions/grib2/localConcepts/ecmf/name.def | 12 ++++++------ definitions/grib2/localConcepts/ecmf/paramId.def | 6 +++--- definitions/grib2/localConcepts/ecmf/shortName.def | 8 ++++---- definitions/grib2/localConcepts/ecmf/units.def | 6 +++--- 11 files changed, 43 insertions(+), 43 deletions(-) diff --git a/definitions/grib1/2.98.172.table b/definitions/grib1/2.98.172.table index 4366d03e4..37a3c2f15 100644 --- a/definitions/grib1/2.98.172.table +++ b/definitions/grib1/2.98.172.table @@ -5,8 +5,8 @@ 45 45 - Snowmelt (m of water s**-1) 48 48 - Magnitude of turbulent surface stress (N m**-2) 50 50 - Large-scale precipitation fraction (~) -142 142 - Stratiform precipitation (Large-scale precipitation) (m s**-1) -143 143 CPRATE Convective precipitation (m s**-1) +142 142 MLSPRT Mean large-scale precipitation rate (m s**-1) +143 143 CPRATE Mean convective precipitation rate (m s**-1) 144 144 - Snowfall (convective + stratiform) (m of water equivalent s**-1) 145 145 BLDRATE Boundary layer dissipation (W m**-2) 146 146 - Surface sensible heat flux (W m**-2) @@ -33,7 +33,7 @@ 210 210 - Surface net solar radiation, clear sky (W m**-2) 211 211 - Surface net thermal radiation, clear sky (W m**-2) 212 212 SOIRA Solar insolation rate of accumulation (W m**-2) -228 228 TPRATE Total precipitation (m s**-1) +228 228 TPRATE Mean total precipitation rate (m s**-1) 239 239 - Convective snowfall (m of water equivalent s**-1) 240 240 - Large scale snowfall (m of water equivalent s**-1) 255 255 - Indicates a missing value diff --git a/definitions/grib1/localConcepts/ecmf/cfVarName.def b/definitions/grib1/localConcepts/ecmf/cfVarName.def index fb9b6598c..e83fa6b8f 100644 --- a/definitions/grib1/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib1/localConcepts/ecmf/cfVarName.def @@ -14634,12 +14634,12 @@ table2Version = 172 ; indicatorOfParameter = 50 ; } -#Stratiform precipitation (Large-scale precipitation) -'p142.172' = { +#Mean large-scale precipitation rate +'mlsprt' = { table2Version = 172 ; indicatorOfParameter = 142 ; } -#Convective precipitation +#Mean convective precipitation rate 'cprate' = { table2Version = 172 ; indicatorOfParameter = 143 ; @@ -14774,7 +14774,7 @@ table2Version = 172 ; indicatorOfParameter = 212 ; } -#Total precipitation +#Mean total precipitation rate 'tprate' = { table2Version = 172 ; indicatorOfParameter = 228 ; diff --git a/definitions/grib1/localConcepts/ecmf/name.def b/definitions/grib1/localConcepts/ecmf/name.def index e9758d19d..275de73d2 100644 --- a/definitions/grib1/localConcepts/ecmf/name.def +++ b/definitions/grib1/localConcepts/ecmf/name.def @@ -14634,13 +14634,13 @@ table2Version = 172 ; indicatorOfParameter = 50 ; } -#Stratiform precipitation (Large-scale precipitation) -'Stratiform precipitation (Large-scale precipitation)' = { +#Mean large-scale precipitation rate +'Mean large-scale precipitation rate' = { table2Version = 172 ; indicatorOfParameter = 142 ; } -#Convective precipitation -'Convective precipitation' = { +#Mean convective precipitation rate +'Mean convective precipitation rate' = { table2Version = 172 ; indicatorOfParameter = 143 ; } @@ -14774,8 +14774,8 @@ table2Version = 172 ; indicatorOfParameter = 212 ; } -#Total precipitation -'Total precipitation' = { +#Mean total precipitation rate +'Mean total precipitation rate' = { table2Version = 172 ; indicatorOfParameter = 228 ; } diff --git a/definitions/grib1/localConcepts/ecmf/paramId.def b/definitions/grib1/localConcepts/ecmf/paramId.def index 302108103..5501d85f7 100644 --- a/definitions/grib1/localConcepts/ecmf/paramId.def +++ b/definitions/grib1/localConcepts/ecmf/paramId.def @@ -14634,12 +14634,12 @@ table2Version = 172 ; indicatorOfParameter = 50 ; } -#Stratiform precipitation (Large-scale precipitation) +#Mean large-scale precipitation rate '172142' = { table2Version = 172 ; indicatorOfParameter = 142 ; } -#Convective precipitation +#Mean convective precipitation rate '172143' = { table2Version = 172 ; indicatorOfParameter = 143 ; @@ -14774,7 +14774,7 @@ table2Version = 172 ; indicatorOfParameter = 212 ; } -#Total precipitation +#Mean total precipitation rate '172228' = { table2Version = 172 ; indicatorOfParameter = 228 ; diff --git a/definitions/grib1/localConcepts/ecmf/shortName.def b/definitions/grib1/localConcepts/ecmf/shortName.def index bb90896c8..f91795872 100644 --- a/definitions/grib1/localConcepts/ecmf/shortName.def +++ b/definitions/grib1/localConcepts/ecmf/shortName.def @@ -14634,12 +14634,12 @@ table2Version = 172 ; indicatorOfParameter = 50 ; } -#Stratiform precipitation (Large-scale precipitation) -'~' = { +#Mean large-scale precipitation rate +'mlsprt' = { table2Version = 172 ; indicatorOfParameter = 142 ; } -#Convective precipitation +#Mean convective precipitation rate 'cprate' = { table2Version = 172 ; indicatorOfParameter = 143 ; @@ -14774,7 +14774,7 @@ table2Version = 172 ; indicatorOfParameter = 212 ; } -#Total precipitation +#Mean total precipitation rate 'tprate' = { table2Version = 172 ; indicatorOfParameter = 228 ; diff --git a/definitions/grib1/localConcepts/ecmf/units.def b/definitions/grib1/localConcepts/ecmf/units.def index c80282764..8c9197dfd 100644 --- a/definitions/grib1/localConcepts/ecmf/units.def +++ b/definitions/grib1/localConcepts/ecmf/units.def @@ -14634,12 +14634,12 @@ table2Version = 172 ; indicatorOfParameter = 50 ; } -#Stratiform precipitation (Large-scale precipitation) +#Mean large-scale precipitation rate 'm s**-1' = { table2Version = 172 ; indicatorOfParameter = 142 ; } -#Convective precipitation +#Mean convective precipitation rate 'm s**-1' = { table2Version = 172 ; indicatorOfParameter = 143 ; @@ -14774,7 +14774,7 @@ table2Version = 172 ; indicatorOfParameter = 212 ; } -#Total precipitation +#Mean total precipitation rate 'm s**-1' = { table2Version = 172 ; indicatorOfParameter = 228 ; diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index d71807fa9..b9274da5a 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -18900,13 +18900,13 @@ parameterCategory = 172 ; parameterNumber = 50 ; } -#Stratiform precipitation (Large-scale precipitation) -'p142.172' = { +#Mean large-scale precipitation rate +'mlsprt' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 142 ; } -#Convective precipitation +#Mean convective precipitation rate 'cprate' = { discipline = 192 ; parameterCategory = 172 ; @@ -19068,7 +19068,7 @@ parameterCategory = 172 ; parameterNumber = 212 ; } -#Total precipitation +#Mean total precipitation rate 'tprate' = { discipline = 192 ; parameterCategory = 172 ; diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index 5852bb9a1..a5b2429f8 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -18900,14 +18900,14 @@ parameterCategory = 172 ; parameterNumber = 50 ; } -#Stratiform precipitation (Large-scale precipitation) -'Stratiform precipitation (Large-scale precipitation)' = { +#Mean large-scale precipitation rate +'Mean large-scale precipitation rate' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 142 ; } -#Convective precipitation -'Convective precipitation' = { +#Mean convective precipitation rate +'Mean convective precipitation rate' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 143 ; @@ -19068,8 +19068,8 @@ parameterCategory = 172 ; parameterNumber = 212 ; } -#Total precipitation -'Total precipitation' = { +#Mean total precipitation rate +'Mean total precipitation rate' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 228 ; diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index fc263f151..f00f54d2d 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -18900,13 +18900,13 @@ parameterCategory = 172 ; parameterNumber = 50 ; } -#Stratiform precipitation (Large-scale precipitation) +#Mean large-scale precipitation rate '172142' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 142 ; } -#Convective precipitation +#Mean convective precipitation rate '172143' = { discipline = 192 ; parameterCategory = 172 ; @@ -19068,7 +19068,7 @@ parameterCategory = 172 ; parameterNumber = 212 ; } -#Total precipitation +#Mean total precipitation rate '172228' = { discipline = 192 ; parameterCategory = 172 ; diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index 46b875dce..1c14981e4 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -18900,13 +18900,13 @@ parameterCategory = 172 ; parameterNumber = 50 ; } -#Stratiform precipitation (Large-scale precipitation) -'~' = { +#Mean large-scale precipitation rate +'mlsprt' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 142 ; } -#Convective precipitation +#Mean convective precipitation rate 'cprate' = { discipline = 192 ; parameterCategory = 172 ; @@ -19068,7 +19068,7 @@ parameterCategory = 172 ; parameterNumber = 212 ; } -#Total precipitation +#Mean total precipitation rate 'tprate' = { discipline = 192 ; parameterCategory = 172 ; diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index b4a7d042d..2614f9aa4 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -18900,13 +18900,13 @@ parameterCategory = 172 ; parameterNumber = 50 ; } -#Stratiform precipitation (Large-scale precipitation) +#Mean large-scale precipitation rate 'm s**-1' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 142 ; } -#Convective precipitation +#Mean convective precipitation rate 'm s**-1' = { discipline = 192 ; parameterCategory = 172 ; @@ -19068,7 +19068,7 @@ parameterCategory = 172 ; parameterNumber = 212 ; } -#Total precipitation +#Mean total precipitation rate 'm s**-1' = { discipline = 192 ; parameterCategory = 172 ; From 5ef77540feed19d3d434f015f2f90fce6825f624 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 31 May 2019 16:08:48 +0100 Subject: [PATCH 272/414] grib_util_set_spec: initial support for lambert_azimuthal_equal_area --- src/eccodes.h | 18 ++++++++++-------- src/grib_api.h | 7 ++++--- src/grib_util.c | 30 ++++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 11 deletions(-) diff --git a/src/eccodes.h b/src/eccodes.h index 09055ba93..a0d5ed9ba 100644 --- a/src/eccodes.h +++ b/src/eccodes.h @@ -1216,14 +1216,16 @@ int codes_points_get_values(codes_handle* h, codes_points* points, double* val); /* --------------------------------------- */ -#define CODES_UTIL_GRID_SPEC_REGULAR_LL GRIB_UTIL_GRID_SPEC_REGULAR_LL -#define CODES_UTIL_GRID_SPEC_ROTATED_LL GRIB_UTIL_GRID_SPEC_ROTATED_LL -#define CODES_UTIL_GRID_SPEC_REGULAR_GG GRIB_UTIL_GRID_SPEC_REGULAR_GG -#define CODES_UTIL_GRID_SPEC_ROTATED_GG GRIB_UTIL_GRID_SPEC_ROTATED_GG -#define CODES_UTIL_GRID_SPEC_REDUCED_GG GRIB_UTIL_GRID_SPEC_REDUCED_GG -#define CODES_UTIL_GRID_SPEC_SH GRIB_UTIL_GRID_SPEC_SH -#define CODES_UTIL_GRID_SPEC_REDUCED_LL GRIB_UTIL_GRID_SPEC_REDUCED_LL -#define CODES_UTIL_GRID_SPEC_POLAR_STEREOGRAPHIC GRIB_UTIL_GRID_SPEC_POLAR_STEREOGRAPHIC +#define CODES_UTIL_GRID_SPEC_REGULAR_LL GRIB_UTIL_GRID_SPEC_REGULAR_LL +#define CODES_UTIL_GRID_SPEC_ROTATED_LL GRIB_UTIL_GRID_SPEC_ROTATED_LL +#define CODES_UTIL_GRID_SPEC_REGULAR_GG GRIB_UTIL_GRID_SPEC_REGULAR_GG +#define CODES_UTIL_GRID_SPEC_ROTATED_GG GRIB_UTIL_GRID_SPEC_ROTATED_GG +#define CODES_UTIL_GRID_SPEC_REDUCED_GG GRIB_UTIL_GRID_SPEC_REDUCED_GG +#define CODES_UTIL_GRID_SPEC_SH GRIB_UTIL_GRID_SPEC_SH +#define CODES_UTIL_GRID_SPEC_REDUCED_LL GRIB_UTIL_GRID_SPEC_REDUCED_LL +#define CODES_UTIL_GRID_SPEC_POLAR_STEREOGRAPHIC GRIB_UTIL_GRID_SPEC_POLAR_STEREOGRAPHIC +#define CODES_UTIL_GRID_SPEC_LAMBERT_AZIMUTHAL_EQUAL_AREA GRIB_UTIL_GRID_SPEC_LAMBERT_AZIMUTHAL_EQUAL_AREA +#define CODES_UTIL_GRID_SPEC_LAMBERT_CONFORMAL GRIB_UTIL_GRID_SPEC_LAMBERT_CONFORMAL #define CODES_UTIL_PACKING_TYPE_SPECTRAL_COMPLEX GRIB_UTIL_PACKING_TYPE_SPECTRAL_COMPLEX diff --git a/src/grib_api.h b/src/grib_api.h index cd0a10bd8..4e9377d03 100644 --- a/src/grib_api.h +++ b/src/grib_api.h @@ -1392,9 +1392,10 @@ int grib_points_get_values(grib_handle* h, grib_points* points, double* val); #define GRIB_UTIL_GRID_SPEC_SH 6 #define GRIB_UTIL_GRID_SPEC_REDUCED_LL 7 -#define GRIB_UTIL_GRID_SPEC_POLAR_STEREOGRAPHIC 8 - -#define GRIB_UTIL_GRID_SPEC_REDUCED_ROTATED_GG 9 +#define GRIB_UTIL_GRID_SPEC_POLAR_STEREOGRAPHIC 8 +#define GRIB_UTIL_GRID_SPEC_REDUCED_ROTATED_GG 9 +#define GRIB_UTIL_GRID_SPEC_LAMBERT_AZIMUTHAL_EQUAL_AREA 10 +#define GRIB_UTIL_GRID_SPEC_LAMBERT_CONFORMAL 11 typedef struct grib_util_grid_spec { diff --git a/src/grib_util.c b/src/grib_util.c index 07fb94c5a..eda1d3a84 100644 --- a/src/grib_util.c +++ b/src/grib_util.c @@ -743,6 +743,12 @@ static const char* get_grid_type_name(const int spec_grid_type) if (spec_grid_type == GRIB_UTIL_GRID_SPEC_REDUCED_ROTATED_GG) return "reduced_rotated_gg"; + if (spec_grid_type == GRIB_UTIL_GRID_SPEC_LAMBERT_AZIMUTHAL_EQUAL_AREA) + return "lambert_azimuthal_equal_area"; + + if (spec_grid_type == GRIB_UTIL_GRID_SPEC_LAMBERT_CONFORMAL) + return "lambert"; + return NULL; } @@ -1057,6 +1063,13 @@ grib_handle* grib_util_set_spec2(grib_handle* h, sprintf(name, "%s_pl_grib%ld", grid_type, editionNumber); } break; + case GRIB_UTIL_GRID_SPEC_LAMBERT_AZIMUTHAL_EQUAL_AREA: + if (editionNumber==1) { + fprintf(stderr,"GRIB_UTIL_SET_SPEC: grid type='%s' not available in GRIB edition 1.\n", grid_type); + goto cleanup; + } + sprintf(name, "GRIB%ld", editionNumber); + break; default : sprintf(name, "%s_pl_grib%ld", grid_type, editionNumber); } @@ -1174,6 +1187,23 @@ grib_handle* grib_util_set_spec2(grib_handle* h, break; + case GRIB_UTIL_GRID_SPEC_LAMBERT_AZIMUTHAL_EQUAL_AREA: + COPY_SPEC_LONG (bitmapPresent); + if (spec->missingValue) COPY_SPEC_DOUBLE(missingValue); + + COPY_SPEC_DOUBLE(longitudeOfFirstGridPointInDegrees); + COPY_SPEC_DOUBLE(latitudeOfFirstGridPointInDegrees); + COPY_SPEC_LONG(Ni); /* same as Nx */ + COPY_SPEC_LONG(Nj); /* same as Ny */ + /* TODO + * pass in extra keys e.g. Dx, Dy, standardParallel and centralLongitude + */ + break; + case GRIB_UTIL_GRID_SPEC_LAMBERT_CONFORMAL: + *err = GRIB_NOT_IMPLEMENTED; + goto cleanup; + break; + case GRIB_UTIL_GRID_SPEC_REDUCED_GG: case GRIB_UTIL_GRID_SPEC_REDUCED_ROTATED_GG: From 01c1cba4838ee3f9282ef875107d3ca5a8561f5b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 31 May 2019 19:00:24 +0100 Subject: [PATCH 273/414] Use binary mode read --- tools/grib_tools.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/grib_tools.c b/tools/grib_tools.c index e7d27746f..b30fa4bd9 100644 --- a/tools/grib_tools.c +++ b/tools/grib_tools.c @@ -295,7 +295,7 @@ static int grib_tool_without_orderby(grib_runtime_options* options) if (strcmp(infile->name,"-")==0) infile->file = stdin; else - infile->file = fopen(infile->name,"r"); + infile->file = fopen(infile->name,"rb"); if(!infile->file) { perror(infile->name); exit(1); From 6aaef308880dbe616d1a947068b7da5a6558aa98 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 1 Jun 2019 11:51:45 +0100 Subject: [PATCH 274/414] ECC-240: bufr_dump should be able to dump a given subset --- tools/bufr_dump.c | 74 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 72 insertions(+), 2 deletions(-) diff --git a/tools/bufr_dump.c b/tools/bufr_dump.c index 18bd03c31..41d83fafd 100644 --- a/tools/bufr_dump.c +++ b/tools/bufr_dump.c @@ -36,11 +36,11 @@ grib_option grib_options[]={ "\n\t\tDefault mode is filter.\n", 0,1,"filter"}, - {"S",0,0,1,0,0}, + /*{"S",0,0,1,0,0},*/ {"O",0,"Octet mode. WMO documentation style dump.\n",0,1,0}, {"p",0,"Plain dump (key=value format).\n",0,1,0}, /* {"D",0,0,0,1,0}, */ /* See ECC-215 */ - {"d",0,"Dump the descriptors.\n",0,1,0}, + {"d",0,"Dump the expanded descriptors.\n",0,1,0}, /*{"u",0,"Print only some values.\n",0,1,0},*/ /* {"C",0,0,0,1,0}, */ {"t",0,0,0,1,0}, @@ -54,6 +54,7 @@ grib_option grib_options[]={ {"7",0,0,0,1,0}, {"V",0,0,0,1,0}, {"q",0,0,1,0,0}, + {"S:","subset_number","\n\t\tDump the given subset\n",0,1,0}, {"X:",0,0,0,1,0} /* {"x",0,0,0,1,0} */ }; @@ -342,10 +343,32 @@ static void bufr_dump_descriptors(grib_handle* h) free(array_units); } +/*static*/ int check_subset_number(const char* user_input, long numberOfSubsets, long* subsetNumber) +{ + long val=0; + char *endptr; + errno = 0; /* To distinguish success/failure after call */ + val = strtol(user_input, &endptr, 10); + if ((errno == ERANGE && (val == LONG_MAX || val == LONG_MIN)) || (errno != 0 && val == 0)) { + perror("strtol"); + return GRIB_INVALID_ARGUMENT; + } + if (endptr == user_input) { + return GRIB_INVALID_ARGUMENT; + } + + if (val < 1 || val > numberOfSubsets) { + return GRIB_INVALID_ARGUMENT; + } + *subsetNumber = val; + return GRIB_SUCCESS; +} + int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) { long length=0; int i,err=0; + long subsetNumber=0; grib_accessor* a=NULL; grib_accessors_list* al=NULL; if (grib_get_long(h,"totalLength",&length) != GRIB_SUCCESS) @@ -360,6 +383,53 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) for (i=0;iprint_keys_count;i++) grib_set_flag(h,options->print_keys[i].name,GRIB_ACCESSOR_FLAG_DUMP); + if (grib_options_on("S:")) { + long val=0, numberOfSubsets=0; + char *endptr, *str; + errno = 0; /* To distinguish success/failure after call */ + str = grib_options_get_option("S:"); + val = strtol(str, &endptr, 10); + if ((errno == ERANGE && (val == LONG_MAX || val == LONG_MIN)) || (errno != 0 && val == 0)) { + perror("strtol"); + exit(1); + } + if (endptr == str) { + fprintf(stderr, "ERROR: -S option: No digits were found. Please specify a positive integer.\n"); + exit(1); + } + subsetNumber = val; + err = grib_get_long(h,"numberOfSubsets",&numberOfSubsets); + if (err) { + fprintf(stderr, "ERROR: Failed to get numberOfSubsets\n"); + exit(1); + } + if (subsetNumber < 1 || subsetNumber > numberOfSubsets) { + fprintf(stderr, "ERROR: -S option: Please specify a subset number > 0 and < %ld\n", numberOfSubsets+1); + exit(1); + } + + if (subsetNumber) { + grib_handle* new_handle = 0; + grib_handle *h2; + size_t size = 0; + const void *buffer = NULL; + + /*Clone, unpack and extract that particular subset*/ + h2 = grib_handle_clone(h); + Assert(h2); + GRIB_CHECK_NOLINE(grib_set_long(h2,"unpack", 1), 0); + GRIB_CHECK_NOLINE(grib_set_long(h2,"extractSubset", subsetNumber), 0); + GRIB_CHECK_NOLINE(grib_set_long(h2,"doExtractSubsets",1), 0); + + /*Put result into buffer then form new handle from it*/ + GRIB_CHECK_NOLINE(grib_get_message(h2, &buffer, &size),0); + new_handle = grib_handle_new_from_message(0, buffer, size); + Assert(new_handle); + /*TODO: possible leak!*/ + h = new_handle; + } + } + if (json) { /* ECC-233: print comma as separator between messages */ From 313175b018e99302dec7cff9bbe0efa3adb7d3ae Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 1 Jun 2019 12:11:37 +0100 Subject: [PATCH 275/414] ECC-240: bufr_dump should be able to dump a given subset --- tools/bufr_dump.c | 36 +++++++++++------------------------- 1 file changed, 11 insertions(+), 25 deletions(-) diff --git a/tools/bufr_dump.c b/tools/bufr_dump.c index 41d83fafd..740433f96 100644 --- a/tools/bufr_dump.c +++ b/tools/bufr_dump.c @@ -368,7 +368,6 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) { long length=0; int i,err=0; - long subsetNumber=0; grib_accessor* a=NULL; grib_accessors_list* al=NULL; if (grib_get_long(h,"totalLength",&length) != GRIB_SUCCESS) @@ -384,49 +383,36 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) grib_set_flag(h,options->print_keys[i].name,GRIB_ACCESSOR_FLAG_DUMP); if (grib_options_on("S:")) { - long val=0, numberOfSubsets=0; - char *endptr, *str; - errno = 0; /* To distinguish success/failure after call */ - str = grib_options_get_option("S:"); - val = strtol(str, &endptr, 10); - if ((errno == ERANGE && (val == LONG_MAX || val == LONG_MIN)) || (errno != 0 && val == 0)) { - perror("strtol"); - exit(1); - } - if (endptr == str) { - fprintf(stderr, "ERROR: -S option: No digits were found. Please specify a positive integer.\n"); - exit(1); - } - subsetNumber = val; + long numberOfSubsets=0, subsetNumber=0; + char *str = grib_options_get_option("S:"); err = grib_get_long(h,"numberOfSubsets",&numberOfSubsets); if (err) { - fprintf(stderr, "ERROR: Failed to get numberOfSubsets\n"); - exit(1); - } - if (subsetNumber < 1 || subsetNumber > numberOfSubsets) { - fprintf(stderr, "ERROR: -S option: Please specify a subset number > 0 and < %ld\n", numberOfSubsets+1); + fprintf(stderr, "ERROR: Failed to get numberOfSubsets.\n"); exit(1); } - if (subsetNumber) { + if (check_subset_number(str, numberOfSubsets, &subsetNumber) == GRIB_SUCCESS) { grib_handle* new_handle = 0; grib_handle *h2; size_t size = 0; const void *buffer = NULL; - /*Clone, unpack and extract that particular subset*/ + /* Clone, unpack and extract that particular subset */ h2 = grib_handle_clone(h); Assert(h2); GRIB_CHECK_NOLINE(grib_set_long(h2,"unpack", 1), 0); GRIB_CHECK_NOLINE(grib_set_long(h2,"extractSubset", subsetNumber), 0); GRIB_CHECK_NOLINE(grib_set_long(h2,"doExtractSubsets",1), 0); - /*Put result into buffer then form new handle from it*/ + /* Put result into buffer then form new handle from it */ GRIB_CHECK_NOLINE(grib_get_message(h2, &buffer, &size),0); new_handle = grib_handle_new_from_message(0, buffer, size); Assert(new_handle); - /*TODO: possible leak!*/ - h = new_handle; + /* Replace handle with the new one which has only one subset */ + h = new_handle; /*TODO: possible leak!*/ + } else { + fprintf(stderr, "ERROR: -S option: Please specify a subset number > 0 and < %ld\n", numberOfSubsets+1); + exit(1); } } From 3f93d1df1f1804fdf7b86662b164f1f3c7506055 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 1 Jun 2019 13:01:54 +0100 Subject: [PATCH 276/414] ECC-240: Add test --- tests/CMakeLists.txt | 1 + tests/bufr_dump_subset.sh | 68 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100755 tests/bufr_dump_subset.sh diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 36bbae279..12bb102ac 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -68,6 +68,7 @@ list( APPEND tests_data_reqd grib_change_packing bufr_dump_data bufr_dump_descriptors + bufr_dump_subset bufr_dump_decode_filter bufr_dump_encode_filter bufrdc_desc_ref diff --git a/tests/bufr_dump_subset.sh b/tests/bufr_dump_subset.sh new file mode 100755 index 000000000..60b59c206 --- /dev/null +++ b/tests/bufr_dump_subset.sh @@ -0,0 +1,68 @@ +#!/bin/sh +# Copyright 2005-2019 ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.sh + +#Define a common label for all the tmp files +label="bufr_dump_subset_test" + +#Create log file +fLog=${label}".log" +rm -f $fLog + +#Define tmp bufr files +temp1=${label}".temp1.txt" +temp2=${label}".temp2.txt" + +if [ $HAVE_MEMFS -eq 1 ]; then + unset ECCODES_DEFINITION_PATH + unset ECCODES_SAMPLES_PATH +fi + +test_expected_failure() +{ + bfile=$1 + barg=$2 + set +e + ${tools_dir}/bufr_dump -p -S $barg $bfile + status=$? + set -e + [ $status -ne 0 ] +} + +# This has 128 subsets +input=${data_dir}/bufr/aaen_55.bufr +test_expected_failure $input nan +test_expected_failure $input -1 +test_expected_failure $input 0 +test_expected_failure $input 1000 + +# Dump of BUFR with one subset should be the same as original +input=${data_dir}/bufr/amda_144.bufr +${tools_dir}/bufr_dump -S1 $input > $temp1 +${tools_dir}/bufr_dump $input > $temp2 +diff $temp1 $temp2 + +input=${data_dir}/bufr/synop_multi_subset.bufr +${tools_dir}/bufr_dump -p -S1 $input | grep 'stationOrSiteName="TROMSO-HOLT"' +${tools_dir}/bufr_dump -p -S12 $input| grep 'stationOrSiteName="SANDE-GALLEBERG"' + +#============================================== +# Test all downloaded BUFR files +#============================================== +bufr_files=`cat ${data_dir}/bufr/bufr_data_files.txt` +for file in ${bufr_files} +do + # Every file has at least one subset + ${tools_dir}/bufr_dump -S1 ${data_dir}/bufr/$file >/dev/null +done + + +rm -f $temp1 $temp2 From 841c3d3a644b5afb19b91205a0ffaa310a128830 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 1 Jun 2019 13:11:07 +0100 Subject: [PATCH 277/414] ECC-240: Don't clone etc unless there are several subsets --- tools/bufr_dump.c | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/tools/bufr_dump.c b/tools/bufr_dump.c index 740433f96..95cb5d9f8 100644 --- a/tools/bufr_dump.c +++ b/tools/bufr_dump.c @@ -392,24 +392,26 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) } if (check_subset_number(str, numberOfSubsets, &subsetNumber) == GRIB_SUCCESS) { - grib_handle* new_handle = 0; - grib_handle *h2; - size_t size = 0; - const void *buffer = NULL; + if (numberOfSubsets > 1) { + grib_handle* new_handle = 0; + grib_handle *h2; + size_t size = 0; + const void *buffer = NULL; - /* Clone, unpack and extract that particular subset */ - h2 = grib_handle_clone(h); - Assert(h2); - GRIB_CHECK_NOLINE(grib_set_long(h2,"unpack", 1), 0); - GRIB_CHECK_NOLINE(grib_set_long(h2,"extractSubset", subsetNumber), 0); - GRIB_CHECK_NOLINE(grib_set_long(h2,"doExtractSubsets",1), 0); + /* Clone, unpack and extract that particular subset */ + h2 = grib_handle_clone(h); + Assert(h2); + GRIB_CHECK_NOLINE(grib_set_long(h2,"unpack", 1), 0); + GRIB_CHECK_NOLINE(grib_set_long(h2,"extractSubset", subsetNumber), 0); + GRIB_CHECK_NOLINE(grib_set_long(h2,"doExtractSubsets",1), 0); - /* Put result into buffer then form new handle from it */ - GRIB_CHECK_NOLINE(grib_get_message(h2, &buffer, &size),0); - new_handle = grib_handle_new_from_message(0, buffer, size); - Assert(new_handle); - /* Replace handle with the new one which has only one subset */ - h = new_handle; /*TODO: possible leak!*/ + /* Put result into buffer then form new handle from it */ + GRIB_CHECK_NOLINE(grib_get_message(h2, &buffer, &size),0); + new_handle = grib_handle_new_from_message(0, buffer, size); + Assert(new_handle); + /* Replace handle with the new one which has only one subset */ + h = new_handle; /*TODO: possible leak!*/ + } } else { fprintf(stderr, "ERROR: -S option: Please specify a subset number > 0 and < %ld\n", numberOfSubsets+1); exit(1); From 11b8f972951d138e686b04021381b403d78046de Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 3 Jun 2019 12:15:23 +0100 Subject: [PATCH 278/414] grib_util_set_spec: lambert_azimuthal_equal_area --- src/grib_util.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/grib_util.c b/src/grib_util.c index eda1d3a84..e7a80b3b9 100644 --- a/src/grib_util.c +++ b/src/grib_util.c @@ -1198,6 +1198,17 @@ grib_handle* grib_util_set_spec2(grib_handle* h, /* TODO * pass in extra keys e.g. Dx, Dy, standardParallel and centralLongitude */ + + /* + COPY_SPEC_LONG(DxInMetres); + COPY_SPEC_LONG(DyInMetres); + + COPY_SPEC_LONG(xDirectionGridLengthInMillimetres); + COPY_SPEC_LONG(yDirectionGridLengthInMillimetres); + COPY_SPEC_LONG(standardParallelInMicrodegrees); + COPY_SPEC_LONG(centralLongitudeInMicrodegrees); + */ + break; case GRIB_UTIL_GRID_SPEC_LAMBERT_CONFORMAL: *err = GRIB_NOT_IMPLEMENTED; From 7227794bfc2d5e601771eca2bf5811d3ec8316bb Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 3 Jun 2019 13:45:33 +0100 Subject: [PATCH 279/414] ECC-240: refactor --- tools/bufr_dump.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/bufr_dump.c b/tools/bufr_dump.c index 95cb5d9f8..becac8bcf 100644 --- a/tools/bufr_dump.c +++ b/tools/bufr_dump.c @@ -343,7 +343,7 @@ static void bufr_dump_descriptors(grib_handle* h) free(array_units); } -/*static*/ int check_subset_number(const char* user_input, long numberOfSubsets, long* subsetNumber) +static int check_subset_number(const char* user_input, long numberOfSubsets, long* subsetNumber) { long val=0; char *endptr; From 02250462995a2b8a9525263364417af9e19bee0d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 3 Jun 2019 16:09:24 +0100 Subject: [PATCH 280/414] ECC-934: GRIB: Remove local ECMWF encodings --- definitions/grib2/cfVarName.def | 2 +- definitions/grib2/localConcepts/ecmf/cfVarName.def | 12 ------------ definitions/grib2/localConcepts/ecmf/name.def | 12 ------------ definitions/grib2/localConcepts/ecmf/paramId.def | 12 ------------ definitions/grib2/localConcepts/ecmf/shortName.def | 12 ------------ definitions/grib2/localConcepts/ecmf/units.def | 12 ------------ definitions/grib2/name.def | 4 ++-- definitions/grib2/paramId.def | 2 +- definitions/grib2/shortName.def | 2 +- definitions/grib2/units.def | 2 +- 10 files changed, 6 insertions(+), 66 deletions(-) diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index 929718dc8..c055ebd17 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -2030,7 +2030,7 @@ parameterCategory = 1 ; parameterNumber = 59 ; } -#Water equivalent of accumulated snow depth +#Water equivalent of accumulated snow depth (deprecated) 'sdwe' = { discipline = 0 ; parameterCategory = 1 ; diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index b9274da5a..1e9c28427 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -17022,12 +17022,6 @@ parameterCategory = 160 ; parameterNumber = 140 ; } -#Snow depth -'sdrea' = { - discipline = 192 ; - parameterCategory = 160 ; - parameterNumber = 141 ; - } #Large-scale precipitation 'lsprea' = { discipline = 192 ; @@ -19716,12 +19710,6 @@ parameterCategory = 180 ; parameterNumber = 179 ; } -#Snow depth -'sdsien' = { - discipline = 192 ; - parameterCategory = 190 ; - parameterNumber = 141 ; - } #Field capacity 'cap' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index a5b2429f8..7c803d7a1 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -17022,12 +17022,6 @@ parameterCategory = 160 ; parameterNumber = 140 ; } -#Snow depth -'Snow depth' = { - discipline = 192 ; - parameterCategory = 160 ; - parameterNumber = 141 ; - } #Large-scale precipitation 'Large-scale precipitation' = { discipline = 192 ; @@ -19716,12 +19710,6 @@ parameterCategory = 180 ; parameterNumber = 179 ; } -#Snow depth -'Snow depth' = { - discipline = 192 ; - parameterCategory = 190 ; - parameterNumber = 141 ; - } #Field capacity 'Field capacity' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index f00f54d2d..5d4a5eb47 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -17022,12 +17022,6 @@ parameterCategory = 160 ; parameterNumber = 140 ; } -#Snow depth -'160141' = { - discipline = 192 ; - parameterCategory = 160 ; - parameterNumber = 141 ; - } #Large-scale precipitation '160142' = { discipline = 192 ; @@ -19716,12 +19710,6 @@ parameterCategory = 180 ; parameterNumber = 179 ; } -#Snow depth -'190141' = { - discipline = 192 ; - parameterCategory = 190 ; - parameterNumber = 141 ; - } #Field capacity '190170' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index 1c14981e4..c45131dd7 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -17022,12 +17022,6 @@ parameterCategory = 160 ; parameterNumber = 140 ; } -#Snow depth -'sdrea' = { - discipline = 192 ; - parameterCategory = 160 ; - parameterNumber = 141 ; - } #Large-scale precipitation 'lsprea' = { discipline = 192 ; @@ -19716,12 +19710,6 @@ parameterCategory = 180 ; parameterNumber = 179 ; } -#Snow depth -'sdsien' = { - discipline = 192 ; - parameterCategory = 190 ; - parameterNumber = 141 ; - } #Field capacity 'cap' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index 2614f9aa4..e8bcf332e 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -17022,12 +17022,6 @@ parameterCategory = 160 ; parameterNumber = 140 ; } -#Snow depth -'kg m**-2' = { - discipline = 192 ; - parameterCategory = 160 ; - parameterNumber = 141 ; - } #Large-scale precipitation 'kg m**-2 s**-1' = { discipline = 192 ; @@ -19716,12 +19710,6 @@ parameterCategory = 180 ; parameterNumber = 179 ; } -#Snow depth -'kg m**-2' = { - discipline = 192 ; - parameterCategory = 190 ; - parameterNumber = 141 ; - } #Field capacity '(0 - 1)' = { discipline = 192 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index 60199693c..f356a7641 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -2030,8 +2030,8 @@ parameterCategory = 1 ; parameterNumber = 59 ; } -#Water equivalent of accumulated snow depth -'Water equivalent of accumulated snow depth' = { +#Water equivalent of accumulated snow depth (deprecated) +'Water equivalent of accumulated snow depth (deprecated)' = { discipline = 0 ; parameterCategory = 1 ; parameterNumber = 13 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 814e09f22..0f452b169 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -2030,7 +2030,7 @@ parameterCategory = 1 ; parameterNumber = 59 ; } -#Water equivalent of accumulated snow depth +#Water equivalent of accumulated snow depth (deprecated) '260056' = { discipline = 0 ; parameterCategory = 1 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index afa566561..99cfeb4d8 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -2030,7 +2030,7 @@ parameterCategory = 1 ; parameterNumber = 59 ; } -#Water equivalent of accumulated snow depth +#Water equivalent of accumulated snow depth (deprecated) 'sdwe' = { discipline = 0 ; parameterCategory = 1 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 3d4353717..e711a30fe 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -2030,7 +2030,7 @@ parameterCategory = 1 ; parameterNumber = 59 ; } -#Water equivalent of accumulated snow depth +#Water equivalent of accumulated snow depth (deprecated) 'kg m**-2' = { discipline = 0 ; parameterCategory = 1 ; From 7d707e6f8dc8363ad58c3e0eec72ceec160d9751 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 4 Jun 2019 16:46:19 +0100 Subject: [PATCH 281/414] Definitions cleanup --- definitions/grib1/local.214.244.def | 288 +++++------ definitions/grib2/tigge_parameter.def | 705 +++++++++++++------------- 2 files changed, 490 insertions(+), 503 deletions(-) diff --git a/definitions/grib1/local.214.244.def b/definitions/grib1/local.214.244.def index 6c5181aa6..62f758f33 100644 --- a/definitions/grib1/local.214.244.def +++ b/definitions/grib1/local.214.244.def @@ -11,149 +11,141 @@ #! #! Last update: 20070223 #! -#!Description Octet Code Ksec1 Count -#!----------- ----- ---- ----- ----- +#!Description +#!----------- #! #! #! Compatibility with MARS #! -#localDefinitionNumber 41 I1 37 - -#Class 42 I1 38 - -#Type 43 I1 39 - -#Stream 44 I2 40 - -#experimentVersionNumber 46 A4 41 - -#Number. 50 I1 42 - -#Total. 51 I1 43 - +#localDefinitionNumber +#Class +#Type +#Stream +#experimentVersionNumber +#Number +#Total #! -#! **_EXPERIMENT_** +#************_EXPERIMENT_************ +#Experiment_Identifier_1 +#Experiment_Identifier_2 +#Sub-Experiment_Identifier_1 +#Sub-Experiment_Identifier_2 #! -#************_EXPERIMENT_************ 52 A4 44 - -#Experiment_Identifier_1 56 A4 45 - -#Experiment_Identifier_2 60 A4 46 - -#Sub-Experiment_Identifier_1 64 A4 47 - -#Sub-Experiment_Identifier_2 68 A4 48 - -#! -#! **_PRODUCT_** -#! -#************_PRODUCT_*************** 72 A4 49 - -#Original_CodeTable_2_Version_Number 76 I1 50 - -#Original_Parameter_Iden_(CodeTable2) 77 I1 51 - -#Original_Parameter_Identifier_1 78 A4 52 - -#Original_Parameter_Identifier_2 82 A4 53 - -#Product_Identifier_1 86 A4 54 - -#Product_Identifier_2 90 A4 55 - +#************_PRODUCT_*************** +#Original_CodeTable_2_Version_Number +#Original_Parameter_Iden_(CodeTable2) +#Original_Parameter_Identifier_1 +#Original_Parameter_Identifier_2 +#Product_Identifier_1 +#Product_Identifier_2 #! #! Thresholds and Distributions #! -#Threshold_[Distribution]_(0=n,1=yes) 94 I2 56 - -#Threshold_[Distribution]_Units 96 A4 57 - -#At_least__[Distribut._Proportion_Of] 100 I4 58 - -#Less_Than_[To_Overall_Distribution] 104 I4 59 - +#Threshold_[Distribution]_(0=n,1=yes) +#Threshold_[Distribution]_Units +#At_least__[Distribut._Proportion_Of] +#Less_Than_[To_Overall_Distribution] #! -#zeroForFutureProducts 108 PAD 60 40 +#zeroForFutureProducts #! -#! **_ENSEMBLE_** -#! -#************_ENSEMBLE_************** 148 A4 100 - -#Number_Combination_Ensembles_(1=no) 152 I2 101 - -#Show_Combination_E._[2]_(0=no,1=yes) 154 I1 102 - -#Show_Combination_E._[3]_(0=no,1=yes) 155 I1 103 - -#Show_Combination_E._[4]_(0=no,1=yes) 156 I1 104 - -#zeroForFutureCombinations 157 PAD 105 7 -#Total_Number_Members_Used 164 I2 112 - -#Total_Number_Members_Possible 166 I2 113 - -#Total_Number_Members_Missing 168 I2 114 - -#Ensemble_Combination_Number 170 I2 115 - -#Ensemble_Identifier_1 172 A4 116 - -#Ensemble_Identifier_2 176 A4 117 - -#Local_Number_Members_Used 180 I2 118 - -#Local_Number_Members_Possible 182 I2 119 - -#Local_Number_Members_Missing 184 I2 120 - +#************_ENSEMBLE_************** +#Number_Combination_Ensembles_(1=no) +#Show_Combination_E._[2]_(0=no,1=yes) +#Show_Combination_E._[3]_(0=no,1=yes) +#Show_Combination_E._[4]_(0=no,1=yes) +#zeroForFutureCombinations +#Total_Number_Members_Used +#Total_Number_Members_Possible +#Total_Number_Members_Missing +#Ensemble_Combination_Number +#Ensemble_Identifier_1 +#Ensemble_Identifier_2 +#Local_Number_Members_Used +#Local_Number_Members_Possible +#Local_Number_Members_Missing #! #listMembersUsed - LIST - Local_Number_Members_Used -#Used_Model_LBC - A4 - - +#Used_Model_LBC #endlistMembersUsed - ENDLIST - listMembersUsed #! #listMembersMissing - LIST - Local_Number_Members_Missing -#Missing_Model_LBC - A4 - - +#Missing_Model_LBC #endlistMembersMissing - ENDLIST - listMembersMissing #! #! More than one Combination #! #listEnsembleCombination2 - LIST - Show_Combination_E._[2]_(0=no,1=yes) -#Ensemble_Combinat._Number_(0=no)_[2] - I2 - - -#Ensemble_Identifier_1_[2] - A4 - - -#Ensemble_Identifier_2_[2] - A4 - - -#Local_Number_Members_Used_[2] - I2 - - -#Local_Number_Members_Possible_[2] - I2 - - -#Local_Number_Members_Missing_[2] - I2 - - -#Date_[2] - D3 - - -#Hour_[2] - I1 - - -#Minute_[2] - I1 - - -#Time_Range_One_[2] - I2 - - -#Time_Range_Two_[2] - I2 - - +#Ensemble_Combinat._Number_(0=no)_[2] +#Ensemble_Identifier_1_[2] +#Ensemble_Identifier_2_[2] +#Local_Number_Members_Used_[2] +#Local_Number_Members_Possible_[2] +#Local_Number_Members_Missing_[2] +#Date_[2] +#Hour_[2] +#Minute_[2] +#Time_Range_One_[2] +#Time_Range_Two_[2] #endlistEnsembleCombination2 - ENDLIST - listEnsembleCombination2 #! #listMembersUsed_[2] - LIST - Local_Number_Members_Used_[2] -#Used_Model_LBC_[2] - A4 - - +#Used_Model_LBC_[2] #endlistMembersUsed_[2] - ENDLIST - listMembersUsed_[2] #! #listMembersMissing_[2] - LIST - Local_Number_Members_Missing_[2] -#Missing_Model_LBC_[2] - A4 - - +#Missing_Model_LBC_[2] #endlistMembersMissing_[2] - ENDLIST - listMembersMissing_[2] #! #listEnsembleCombination3 - LIST - Show_Combination_E._[3]_(0=no,1=yes) -#Ensemble_Combinat._Number_(0=no)_[3] - I2 - - -#Ensemble_Identifier_1_[3] - A4 - - -#Ensemble_Identifier_1_[3] - A4 - - -#Local_Number_Members_Used_[3] - I2 - - -#Local_Number_Members_Possible_[3] - I2 - - -#Local_Number_Members_Missing_[3] - I2 - - -#Date_[3] - D3 - - -#Hour_[3] - I1 - - -#Minute_[3] - I1 - - -#Time_Range_One_[3] - I2 - - -#Time_Range_Two_[3] - I2 - - +#Ensemble_Combinat._Number_(0=no)_[3] +#Ensemble_Identifier_1_[3] +#Ensemble_Identifier_1_[3] +#Local_Number_Members_Used_[3] +#Local_Number_Members_Possible_[3] +#Local_Number_Members_Missing_[3] +#Date_[3] +#Hour_[3] +#Minute_[3] +#Time_Range_One_[3] +#Time_Range_Two_[3] #endlistEnsembleCombination3 - ENDLIST - listEnsembleCombination3 #! #listMembersUsed_[3] - LIST - Local_Number_Members_Used_[3] -#Used_Model_LBC_[3] - A4 - - +#Used_Model_LBC_[3] - A4 #endlistMembersUsed_[3] - ENDLIST - listMembersUsed_[3] #! #listMembersMissing_[3] - LIST - Local_Number_Members_Missing_[3] -#Missing_Model_LBC_[3] - A4 - - +#Missing_Model_LBC_[3] - A4 #endlistMembersMissing_[3] - ENDLIST - listMembersMissing_[3] #! #listEnsembleCombination4 - LIST - Show_Combination_E._[4]_(0=no,1=yes) -#Ensemble_Combinat._Number_(0=no)_[4] - I2 - - -#Ensemble_Identifier_1_[4] - A4 - - -#Ensemble_Identifier_2_[4] - A4 - - -#Local_Number_Members_Used_[4] - I2 - - -#Local_Number_Members_Possible_[4] - I2 - - -#Local_Number_Members_Missing_[4] - I2 - - -#Date_[4] - D3 - - -#Hour_[4] - I1 - - -#Minute_[4] - I1 - - -#Time_Range_One_[4] - I2 - - -#Time_Range_Two_[4] - I2 - - +#Ensemble_Combinat._Number_(0=no)_[4] +#Ensemble_Identifier_1_[4] +#Ensemble_Identifier_2_[4] +#Local_Number_Members_Used_[4] +#Local_Number_Members_Possible_[4] +#Local_Number_Members_Missing_[4] +#Date_[4] +#Hour_[4] +#Minute_[4] +#Time_Range_One_[4] +#Time_Range_Two_[4] #endlistEnsembleCombination4 - ENDLIST - listEnsembleCombination4 #! #listMembersUsed_[4] - LIST - Local_Number_Members_Used_[4] -#Used_Model_LBC_[4] - A4 - - +#Used_Model_LBC_[4] #endlistMembersUsed_[4] - ENDLIST - listMembersUsed_[4] #! #listMembersMissing_[4] - LIST - Local_Number_Members_Missing_[4] -#Missing_Model_LBC_[4] - A4 - - +#Missing_Model_LBC_[4] #endlistMembersMissing_[4] - ENDLIST - listMembersMissing_[4] #! #! EXTRA INFORMATION like 191 -#! -#*********_EXTRA_DATA_*************** - A4 - - -#Extra_Data_FreeFormat_(0=none) - I2 - - +#*********_EXTRA_DATA_*************** +#Extra_Data_FreeFormat_(0=none) #Data_Descriptor_Bytes - BYTES - Extra_Data_FreeFormat_(0=none) -#padToAMultipleOf80Bytes - PADFROM n/a 80 +#padToAMultipleOf80Bytes - PADFROM n/a #! -# template mars_labeling "grib1/mars_labeling.def"; @@ -163,17 +155,15 @@ alias number = perturbationNumber; unsigned[1] numberOfForecastsInEnsemble : dump; # -# **_EXPERIMENT_** +# EXPERIMENT # - ascii[4] '************_EXPERIMENT_************' ; ascii[8] 'Experiment_Identifier' ; ascii[8] 'Sub-Experiment_Identifier' ; # -# **_PRODUCT_** +# PRODUCT # - ascii[4] '************_PRODUCT_***************' ; unsigned[1] Original_CodeTable_2_Version_Number : dump ; unsigned[1] Original_Parameter_Iden_CodeTable2 : dump; @@ -181,7 +171,6 @@ ascii[8] 'Original_Parameter_Identifier' ; ascii[8] 'Product_Identifier' ; # Thresholds and Distributions - unsigned[2] Threshold_Or_Distribution_0_no_1_yes : dump ; ascii[4] 'Threshold_Or_Distribution_Units' ; unsigned[4] At_least__Or_Distribut_Proportion_Of : dump ; @@ -207,11 +196,11 @@ unsigned[2] Local_Number_Members_Possible : dump ; unsigned[2] Local_Number_Members_Missing : dump ; listMembersUsed list(Local_Number_Members_Used){ -ascii[4] 'Used_Model_LBC' ; + ascii[4] 'Used_Model_LBC' ; } listMembersMissing list(Local_Number_Members_Missing){ -ascii[4] 'Missing_Model_LBC' ; + ascii[4] 'Missing_Model_LBC' ; } # @@ -219,75 +208,74 @@ ascii[4] 'Missing_Model_LBC' ; # if (Show_Combination_Ensem_E2_0_no_1_yes == 1){ -unsigned[2] Ensemble_Combinat_Number_0_none_E2 : dump ; -ascii[8] 'Ensemble_Identifier_E2' ; -unsigned[2] Local_Number_Members_Used_E2 : dump ; -unsigned[2] Local_Number_Members_Possible_E2 : dump ; -unsigned[2] Local_Number_Members_Missing_E2 : dump ; -unsigned[3] Date_E2 : dump; -unsigned[1] Hour_E2 : dump; -unsigned[1] Minute_E2 : dump; -unsigned[2] Time_Range_One_E2 : dump ; -unsigned[2] Time_Range_Two_E2 : dump; + unsigned[2] Ensemble_Combinat_Number_0_none_E2 : dump ; + ascii[8] 'Ensemble_Identifier_E2' ; + unsigned[2] Local_Number_Members_Used_E2 : dump ; + unsigned[2] Local_Number_Members_Possible_E2 : dump ; + unsigned[2] Local_Number_Members_Missing_E2 : dump ; + unsigned[3] Date_E2 : dump; + unsigned[1] Hour_E2 : dump; + unsigned[1] Minute_E2 : dump; + unsigned[2] Time_Range_One_E2 : dump ; + unsigned[2] Time_Range_Two_E2 : dump; -listMembersUsed2 list(Local_Number_Members_Used_E2){ -ascii[4] 'Used_Model_LBC_E2' ; -} + listMembersUsed2 list(Local_Number_Members_Used_E2){ + ascii[4] 'Used_Model_LBC_E2' ; + } -listMembersMissing2 list(Local_Number_Members_Missing_E2){ -ascii[4] 'Missing_Model_LBC_E2' ; -} + listMembersMissing2 list(Local_Number_Members_Missing_E2){ + ascii[4] 'Missing_Model_LBC_E2' ; + } } if (Show_Combination_Ensem_E3_0_no_1_yes == 1){ -unsigned[2] Ensemble_Combinat_Number_0_none_E3 : dump ; -ascii[8] 'Ensemble_Identifier_E3' ; -unsigned[2] Local_Number_Members_Used_E3 : dump; -unsigned[2] Local_Number_Members_Possible_E3 : dump; -unsigned[2] Local_Number_Members_Missing_E3 : dump; -unsigned[3] Date_E3 : dump; -unsigned[1] Hour_E3 : dump; -unsigned[1] Minute_E3 : dump; -unsigned[2] Time_Range_One_E3 : dump; -unsigned[2] Time_Range_Two_E3 : dump; + unsigned[2] Ensemble_Combinat_Number_0_none_E3 : dump ; + ascii[8] 'Ensemble_Identifier_E3' ; + unsigned[2] Local_Number_Members_Used_E3 : dump; + unsigned[2] Local_Number_Members_Possible_E3 : dump; + unsigned[2] Local_Number_Members_Missing_E3 : dump; + unsigned[3] Date_E3 : dump; + unsigned[1] Hour_E3 : dump; + unsigned[1] Minute_E3 : dump; + unsigned[2] Time_Range_One_E3 : dump; + unsigned[2] Time_Range_Two_E3 : dump; -listMembersUsed3 list(Local_Number_Members_Used_E3){ -ascii[4] 'Used_Model_LBC_E3' ; -} + listMembersUsed3 list(Local_Number_Members_Used_E3){ + ascii[4] 'Used_Model_LBC_E3' ; + } -listMembersMissing3 list(Local_Number_Members_Missing_E3){ -ascii[4] 'Missing_Model_LBC_E3' ; -} + listMembersMissing3 list(Local_Number_Members_Missing_E3){ + ascii[4] 'Missing_Model_LBC_E3' ; + } } if (Show_Combination_Ensem_E4_0_no_1_yes == 1){ -unsigned[2] Ensemble_Combinat_Number_0_none_E4 : dump ; -ascii[8] 'Ensemble_Identifier_E4' ; -unsigned[2] Local_Number_Members_Used_E4 : dump; -unsigned[2] Local_Number_Members_Possible_E4 : dump; -unsigned[2] Local_Number_Members_Missing_E4 : dump; -unsigned[3] Date_E4 : dump; -unsigned[1] Hour_E4 : dump; -unsigned[1] Minute_E4 : dump; -unsigned[2] Time_Range_One_E4 : dump ; -unsigned[2] Time_Range_Two_E4 : dump; + unsigned[2] Ensemble_Combinat_Number_0_none_E4 : dump ; + ascii[8] 'Ensemble_Identifier_E4' ; + unsigned[2] Local_Number_Members_Used_E4 : dump; + unsigned[2] Local_Number_Members_Possible_E4 : dump; + unsigned[2] Local_Number_Members_Missing_E4 : dump; + unsigned[3] Date_E4 : dump; + unsigned[1] Hour_E4 : dump; + unsigned[1] Minute_E4 : dump; + unsigned[2] Time_Range_One_E4 : dump ; + unsigned[2] Time_Range_Two_E4 : dump; -listMembersUsed4 list(Local_Number_Members_Used_E4){ -ascii[4] 'Used_Model_LBC_E4' ; -} + listMembersUsed4 list(Local_Number_Members_Used_E4){ + ascii[4] 'Used_Model_LBC_E4' ; + } -listMembersMissing4 list(Local_Number_Members_Missing_E4){ -ascii[4] 'Missing_Model_LBC_E4' ; -} + listMembersMissing4 list(Local_Number_Members_Missing_E4){ + ascii[4] 'Missing_Model_LBC_E4' ; + } } # # EXTRA INFORMATION like 191 # - ascii[4] '*********_EXTRA_DATA_***************' ; unsigned[2] Extra_Data_FreeFormat_0_none : dump; position offsetFreeFormData; unsigned[1] freeFormData[Extra_Data_FreeFormat_0_none] : dump; -# + padtomultiple padding_loc244_3(offsetSection1,80); diff --git a/definitions/grib2/tigge_parameter.def b/definitions/grib2/tigge_parameter.def index c7ae282a7..3ded0bb12 100644 --- a/definitions/grib2/tigge_parameter.def +++ b/definitions/grib2/tigge_parameter.def @@ -1,396 +1,395 @@ # Automatically generated by ./tigge_def.pl, do not edit -# 10_meter_u_velocity - '165' = { - discipline = 0; - parameterCategory = 2; - parameterNumber = 2; - scaleFactorOfFirstFixedSurface = 0; - scaledValueOfFirstFixedSurface = 10; - typeOfFirstFixedSurface = 103; - } +# 10_meter_u_velocity +'165' = { + discipline = 0; + parameterCategory = 2; + parameterNumber = 2; + scaleFactorOfFirstFixedSurface = 0; + scaledValueOfFirstFixedSurface = 10; + typeOfFirstFixedSurface = 103; +} -# 10_meter_v_velocity - '166' = { - discipline = 0; - parameterCategory = 2; - parameterNumber = 3; - scaleFactorOfFirstFixedSurface = 0; - scaledValueOfFirstFixedSurface = 10; - typeOfFirstFixedSurface = 103; - } +# 10_meter_v_velocity +'166' = { + discipline = 0; + parameterCategory = 2; + parameterNumber = 3; + scaleFactorOfFirstFixedSurface = 0; + scaledValueOfFirstFixedSurface = 10; + typeOfFirstFixedSurface = 103; +} -# 10_metre_wind_gust_of_at_least_15_m/s - '131070' = { - discipline = 0; - parameterCategory = 2; - parameterNumber = 22; - productDefinitionTemplateNumber = 9; - scaleFactorOfFirstFixedSurface = 0; - scaledValueOfFirstFixedSurface = 10; - scaledValueOfLowerLimit = 15; - typeOfFirstFixedSurface = 103; - typeOfStatisticalProcessing = 2; - } +# 10_metre_wind_gust_of_at_least_15_m/s +'131070' = { + discipline = 0; + parameterCategory = 2; + parameterNumber = 22; + productDefinitionTemplateNumber = 9; + scaleFactorOfFirstFixedSurface = 0; + scaledValueOfFirstFixedSurface = 10; + scaledValueOfLowerLimit = 15; + typeOfFirstFixedSurface = 103; + typeOfStatisticalProcessing = 2; +} -# 10_metre_wind_gust_of_at_least_25_m/s - '131071' = { - discipline = 0; - parameterCategory = 2; - parameterNumber = 22; - productDefinitionTemplateNumber = 9; - scaleFactorOfFirstFixedSurface = 0; - scaledValueOfFirstFixedSurface = 10; - scaledValueOfLowerLimit = 25; - typeOfFirstFixedSurface = 103; - typeOfStatisticalProcessing = 2; - } +# 10_metre_wind_gust_of_at_least_25_m/s +'131071' = { + discipline = 0; + parameterCategory = 2; + parameterNumber = 22; + productDefinitionTemplateNumber = 9; + scaleFactorOfFirstFixedSurface = 0; + scaledValueOfFirstFixedSurface = 10; + scaledValueOfLowerLimit = 25; + typeOfFirstFixedSurface = 103; + typeOfStatisticalProcessing = 2; +} -# convective_available_potential_energy - '59' = { - discipline = 0; - parameterCategory = 7; - parameterNumber = 6; - typeOfFirstFixedSurface = 1; - typeOfSecondFixedSurface = 8; - } +# convective_available_potential_energy +'59' = { + discipline = 0; + parameterCategory = 7; + parameterNumber = 6; + typeOfFirstFixedSurface = 1; + typeOfSecondFixedSurface = 8; +} -# convective_inhibition - '228001' = { - discipline = 0; - parameterCategory = 7; - parameterNumber = 7; - typeOfFirstFixedSurface = 1; - typeOfSecondFixedSurface = 8; - } +# convective_inhibition +'228001' = { + discipline = 0; + parameterCategory = 7; + parameterNumber = 7; + typeOfFirstFixedSurface = 1; + typeOfSecondFixedSurface = 8; +} -# field_capacity - '228170' = { - discipline = 2; - parameterCategory = 3; - parameterNumber = 12; - scaleFactorOfFirstFixedSurface = 0; - scaleFactorOfSecondFixedSurface = 1; - scaledValueOfFirstFixedSurface = 0; - scaledValueOfSecondFixedSurface = 2; - typeOfFirstFixedSurface = 106; - typeOfSecondFixedSurface = 106; - } +# field_capacity +'228170' = { + discipline = 2; + parameterCategory = 3; + parameterNumber = 12; + scaleFactorOfFirstFixedSurface = 0; + scaleFactorOfSecondFixedSurface = 1; + scaledValueOfFirstFixedSurface = 0; + scaledValueOfSecondFixedSurface = 2; + typeOfFirstFixedSurface = 106; + typeOfSecondFixedSurface = 106; +} -# geopotential_height - '156' = { - discipline = 0; - parameterCategory = 3; - parameterNumber = 5; - typeOfFirstFixedSurface = 100; - } +# geopotential_height +'156' = { + discipline = 0; + parameterCategory = 3; + parameterNumber = 5; + typeOfFirstFixedSurface = 100; +} -# land_sea_mask - '172' = { - discipline = 2; - parameterCategory = 0; - parameterNumber = 0; - typeOfFirstFixedSurface = 1; - } +# land_sea_mask +'172' = { + discipline = 2; + parameterCategory = 0; + parameterNumber = 0; + typeOfFirstFixedSurface = 1; +} -# maximum_wind_gust - '49' = { - discipline = 0; - parameterCategory = 2; - parameterNumber = 22; - scaleFactorOfFirstFixedSurface = 0; - scaledValueOfFirstFixedSurface = 10; - typeOfFirstFixedSurface = 103; - typeOfStatisticalProcessing = 2; - } +# maximum_wind_gust +'49' = { + discipline = 0; + parameterCategory = 2; + parameterNumber = 22; + scaleFactorOfFirstFixedSurface = 0; + scaledValueOfFirstFixedSurface = 10; + typeOfFirstFixedSurface = 103; + typeOfStatisticalProcessing = 2; +} -# mean_sea_level_pressure - '151' = { - discipline = 0; - parameterCategory = 3; - parameterNumber = 0; - typeOfFirstFixedSurface = 101; - } +# mean_sea_level_pressure +'151' = { + discipline = 0; + parameterCategory = 3; + parameterNumber = 0; + typeOfFirstFixedSurface = 101; +} -# orography - '228002' = { - discipline = 0; - parameterCategory = 3; - parameterNumber = 5; - typeOfFirstFixedSurface = 1; - } +# orography +'228002' = { + discipline = 0; + parameterCategory = 3; + parameterNumber = 5; + typeOfFirstFixedSurface = 1; +} -# potential_temperature - '3' = { - discipline = 0; - parameterCategory = 0; - parameterNumber = 2; - scaleFactorOfFirstFixedSurface = 6; - scaledValueOfFirstFixedSurface = 2; - typeOfFirstFixedSurface = 109; - } +# potential_temperature +'3' = { + discipline = 0; + parameterCategory = 0; + parameterNumber = 2; + scaleFactorOfFirstFixedSurface = 6; + scaledValueOfFirstFixedSurface = 2; + typeOfFirstFixedSurface = 109; +} -# potential_vorticity - '60' = { - discipline = 0; - parameterCategory = 2; - parameterNumber = 14; - scaleFactorOfFirstFixedSurface = 0; - scaledValueOfFirstFixedSurface = 320; - typeOfFirstFixedSurface = 107; - } +# potential_vorticity +'60' = { + discipline = 0; + parameterCategory = 2; + parameterNumber = 14; + scaleFactorOfFirstFixedSurface = 0; + scaledValueOfFirstFixedSurface = 320; + typeOfFirstFixedSurface = 107; +} -# sea_surface_temperature_anomaly - '171034' = { - discipline = 0; - parameterCategory = 0; - parameterNumber = 9; - typeOfFirstFixedSurface = 1; - } +# sea_surface_temperature_anomaly +'171034' = { + discipline = 0; + parameterCategory = 0; + parameterNumber = 9; + typeOfFirstFixedSurface = 1; +} -# skin_temperature - '235' = { - discipline = 0; - parameterCategory = 0; - parameterNumber = 17; - typeOfFirstFixedSurface = 1; - } +# skin_temperature +'235' = { + discipline = 0; + parameterCategory = 0; + parameterNumber = 17; + typeOfFirstFixedSurface = 1; +} -# snow_depth_water_equivalent - '228141' = { - discipline = 0; - parameterCategory = 1; - parameterNumber = 60; - typeOfFirstFixedSurface = 1; - } +# snow_depth_water_equivalent +'228141' = { + discipline = 0; + parameterCategory = 1; + parameterNumber = 60; + typeOfFirstFixedSurface = 1; +} -# snow_fall_water_equivalent - '228144' = { - discipline = 0; - parameterCategory = 1; - parameterNumber = 53; - typeOfFirstFixedSurface = 1; - typeOfStatisticalProcessing = 1; - } +# snow_fall_water_equivalent +'228144' = { + discipline = 0; + parameterCategory = 1; + parameterNumber = 53; + typeOfFirstFixedSurface = 1; + typeOfStatisticalProcessing = 1; +} -# soil_moisture - '228039' = { - discipline = 2; - parameterCategory = 0; - parameterNumber = 22; - scaleFactorOfFirstFixedSurface = 0; - scaleFactorOfSecondFixedSurface = 1; - scaledValueOfFirstFixedSurface = 0; - scaledValueOfSecondFixedSurface = 2; - typeOfFirstFixedSurface = 106; - typeOfSecondFixedSurface = 106; - } +# soil_moisture +'228039' = { + discipline = 2; + parameterCategory = 0; + parameterNumber = 22; + scaleFactorOfFirstFixedSurface = 0; + scaleFactorOfSecondFixedSurface = 1; + scaledValueOfFirstFixedSurface = 0; + scaledValueOfSecondFixedSurface = 2; + typeOfFirstFixedSurface = 106; + typeOfSecondFixedSurface = 106; +} -# soil_temperature - '228139' = { - discipline = 2; - parameterCategory = 0; - parameterNumber = 2; - scaleFactorOfFirstFixedSurface = 0; - scaleFactorOfSecondFixedSurface = 1; - scaledValueOfFirstFixedSurface = 0; - scaledValueOfSecondFixedSurface = 2; - typeOfFirstFixedSurface = 106; - typeOfSecondFixedSurface = 106; - } +# soil_temperature +'228139' = { + discipline = 2; + parameterCategory = 0; + parameterNumber = 2; + scaleFactorOfFirstFixedSurface = 0; + scaleFactorOfSecondFixedSurface = 1; + scaledValueOfFirstFixedSurface = 0; + scaledValueOfSecondFixedSurface = 2; + typeOfFirstFixedSurface = 106; + typeOfSecondFixedSurface = 106; +} -# specific_humidity - '133' = { - discipline = 0; - parameterCategory = 1; - parameterNumber = 0; - typeOfFirstFixedSurface = 100; - } +# specific_humidity +'133' = { + discipline = 0; + parameterCategory = 1; + parameterNumber = 0; + typeOfFirstFixedSurface = 100; +} -# sunshine_duration - '189' = { - discipline = 0; - parameterCategory = 6; - parameterNumber = 24; - typeOfFirstFixedSurface = 1; - typeOfStatisticalProcessing = 1; - } +# sunshine_duration +'189' = { + discipline = 0; + parameterCategory = 6; + parameterNumber = 24; + typeOfFirstFixedSurface = 1; + typeOfStatisticalProcessing = 1; +} -# surface_air_dew_point_temperature - '168' = { - discipline = 0; - parameterCategory = 0; - parameterNumber = 6; - typeOfFirstFixedSurface = 103; - } +# surface_air_dew_point_temperature +'168' = { + discipline = 0; + parameterCategory = 0; + parameterNumber = 6; + typeOfFirstFixedSurface = 103; +} -# surface_air_maximum_temperature - '121' = { - discipline = 0; - parameterCategory = 0; - parameterNumber = 0; - typeOfFirstFixedSurface = 103; - typeOfStatisticalProcessing = 2; - } +# surface_air_maximum_temperature +'121' = { + discipline = 0; + parameterCategory = 0; + parameterNumber = 0; + typeOfFirstFixedSurface = 103; + typeOfStatisticalProcessing = 2; +} -# surface_air_minimum_temperature - '122' = { - discipline = 0; - parameterCategory = 0; - parameterNumber = 0; - typeOfFirstFixedSurface = 103; - typeOfStatisticalProcessing = 3; - } +# surface_air_minimum_temperature +'122' = { + discipline = 0; + parameterCategory = 0; + parameterNumber = 0; + typeOfFirstFixedSurface = 103; + typeOfStatisticalProcessing = 3; +} -# surface_air_temperature - '167' = { - discipline = 0; - parameterCategory = 0; - parameterNumber = 0; - typeOfFirstFixedSurface = 103; - } +# surface_air_temperature +'167' = { + discipline = 0; + parameterCategory = 0; + parameterNumber = 0; + typeOfFirstFixedSurface = 103; +} -# surface_pressure - '134' = { - discipline = 0; - parameterCategory = 3; - parameterNumber = 0; - typeOfFirstFixedSurface = 1; - } +# surface_pressure +'134' = { + discipline = 0; + parameterCategory = 3; + parameterNumber = 0; + typeOfFirstFixedSurface = 1; +} -# temperature - '130' = { - discipline = 0; - parameterCategory = 0; - parameterNumber = 0; - typeOfFirstFixedSurface = 100; - } +# temperature +'130' = { + discipline = 0; + parameterCategory = 0; + parameterNumber = 0; + typeOfFirstFixedSurface = 100; +} -# time_integrated_outgoing_long_wave_radiation - '179' = { - discipline = 0; - parameterCategory = 5; - parameterNumber = 5; - typeOfFirstFixedSurface = 8; - typeOfStatisticalProcessing = 1; - } +# time_integrated_outgoing_long_wave_radiation +'179' = { + discipline = 0; + parameterCategory = 5; + parameterNumber = 5; + typeOfFirstFixedSurface = 8; + typeOfStatisticalProcessing = 1; +} -# time_integrated_surface_latent_heat_flux - '147' = { - discipline = 0; - parameterCategory = 0; - parameterNumber = 10; - typeOfFirstFixedSurface = 1; - typeOfStatisticalProcessing = 1; - } +# time_integrated_surface_latent_heat_flux +'147' = { + discipline = 0; + parameterCategory = 0; + parameterNumber = 10; + typeOfFirstFixedSurface = 1; + typeOfStatisticalProcessing = 1; +} -# time_integrated_surface_net_solar_radiation - '176' = { - discipline = 0; - parameterCategory = 4; - parameterNumber = 9; - typeOfFirstFixedSurface = 1; - typeOfStatisticalProcessing = 1; - } +# time_integrated_surface_net_solar_radiation +'176' = { + discipline = 0; + parameterCategory = 4; + parameterNumber = 9; + typeOfFirstFixedSurface = 1; + typeOfStatisticalProcessing = 1; +} -# time_integrated_surface_net_thermal_radiation - '177' = { - discipline = 0; - parameterCategory = 5; - parameterNumber = 5; - typeOfFirstFixedSurface = 1; - typeOfStatisticalProcessing = 1; - } +# time_integrated_surface_net_thermal_radiation +'177' = { + discipline = 0; + parameterCategory = 5; + parameterNumber = 5; + typeOfFirstFixedSurface = 1; + typeOfStatisticalProcessing = 1; +} -# time_integrated_surface_sensible_heat_flux - '146' = { - discipline = 0; - parameterCategory = 0; - parameterNumber = 11; - typeOfFirstFixedSurface = 1; - typeOfStatisticalProcessing = 1; - } +# time_integrated_surface_sensible_heat_flux +'146' = { + discipline = 0; + parameterCategory = 0; + parameterNumber = 11; + typeOfFirstFixedSurface = 1; + typeOfStatisticalProcessing = 1; +} -# total_cloud_cover - '228164' = { - discipline = 0; - parameterCategory = 6; - parameterNumber = 1; - typeOfFirstFixedSurface = 1; - typeOfSecondFixedSurface = 8; - } +# total_cloud_cover +'228164' = { + discipline = 0; + parameterCategory = 6; + parameterNumber = 1; + typeOfFirstFixedSurface = 1; + typeOfSecondFixedSurface = 8; +} -# total_column_water - '136' = { - discipline = 0; - parameterCategory = 1; - parameterNumber = 51; - typeOfFirstFixedSurface = 1; - typeOfSecondFixedSurface = 8; - } +# total_column_water +'136' = { + discipline = 0; + parameterCategory = 1; + parameterNumber = 51; + typeOfFirstFixedSurface = 1; + typeOfSecondFixedSurface = 8; +} -# total_precipitation - '228228' = { - discipline = 0; - parameterCategory = 1; - parameterNumber = 52; - typeOfFirstFixedSurface = 1; - typeOfStatisticalProcessing = 1; - } +# total_precipitation +'228228' = { + discipline = 0; + parameterCategory = 1; + parameterNumber = 52; + typeOfFirstFixedSurface = 1; + typeOfStatisticalProcessing = 1; +} -# total_precipitation_of_at_least_10_mm - '131062' = { - discipline = 0; - parameterCategory = 1; - parameterNumber = 52; - productDefinitionTemplateNumber = 9; - scaledValueOfLowerLimit = 10; - typeOfFirstFixedSurface = 1; - typeOfStatisticalProcessing = 1; - } +# total_precipitation_of_at_least_10_mm +'131062' = { + discipline = 0; + parameterCategory = 1; + parameterNumber = 52; + productDefinitionTemplateNumber = 9; + scaledValueOfLowerLimit = 10; + typeOfFirstFixedSurface = 1; + typeOfStatisticalProcessing = 1; +} -# total_precipitation_of_at_least_20_mm - '131063' = { - discipline = 0; - parameterCategory = 1; - parameterNumber = 52; - productDefinitionTemplateNumber = 9; - scaledValueOfLowerLimit = 20; - typeOfFirstFixedSurface = 1; - typeOfStatisticalProcessing = 1; - } +# total_precipitation_of_at_least_20_mm +'131063' = { + discipline = 0; + parameterCategory = 1; + parameterNumber = 52; + productDefinitionTemplateNumber = 9; + scaledValueOfLowerLimit = 20; + typeOfFirstFixedSurface = 1; + typeOfStatisticalProcessing = 1; +} -# u_velocity - '131' = { - discipline = 0; - parameterCategory = 2; - parameterNumber = 2; - } +# u_velocity +'131' = { + discipline = 0; + parameterCategory = 2; + parameterNumber = 2; +} -# unknown - 'default' = { - discipline = 0; - parameterCategory = 0; - parameterNumber = 0; - } +# unknown +'default' = { + discipline = 0; + parameterCategory = 0; + parameterNumber = 0; +} -# v_velocity - '132' = { - discipline = 0; - parameterCategory = 2; - parameterNumber = 3; - } - -# wilting_point - '228171' = { - discipline = 2; - parameterCategory = 0; - parameterNumber = 26; - scaleFactorOfFirstFixedSurface = 0; - scaleFactorOfSecondFixedSurface = 1; - scaledValueOfFirstFixedSurface = 0; - scaledValueOfSecondFixedSurface = 2; - typeOfFirstFixedSurface = 106; - typeOfSecondFixedSurface = 106; - } +# v_velocity +'132' = { + discipline = 0; + parameterCategory = 2; + parameterNumber = 3; +} +# wilting_point +'228171' = { + discipline = 2; + parameterCategory = 0; + parameterNumber = 26; + scaleFactorOfFirstFixedSurface = 0; + scaleFactorOfSecondFixedSurface = 1; + scaledValueOfFirstFixedSurface = 0; + scaledValueOfSecondFixedSurface = 2; + typeOfFirstFixedSurface = 106; + typeOfSecondFixedSurface = 106; +} From 9e67f97ec5af1c5540ed959d11d22be33a481eb0 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 5 Jun 2019 12:02:16 +0100 Subject: [PATCH 282/414] grib_util_set_spec: lambert conformal --- definitions/grib1/grid_definition_lambert.def | 5 +- definitions/grib2/template.3.30.def | 4 +- src/grib_util.c | 55 ++++++++++++------- 3 files changed, 40 insertions(+), 24 deletions(-) diff --git a/definitions/grib1/grid_definition_lambert.def b/definitions/grib1/grid_definition_lambert.def index 779fab5d1..3fc91a792 100644 --- a/definitions/grib1/grid_definition_lambert.def +++ b/definitions/grib1/grid_definition_lambert.def @@ -35,15 +35,14 @@ meta geography.LoVInDegrees alias orientationOfTheGrid = LoV; alias orientationOfTheGridInDegrees = LoVInDegrees; -# Dx - X-direction grid length +# Dx - X-direction grid length (in units of metres) unsigned[3] DxInMetres : dump; alias xDirectionGridLength=DxInMetres; alias geography.DxInMetres=DxInMetres ; alias Dx = DxInMetres; alias Di = DxInMetres; - -# Dy - Y-direction grid length +# Dy - Y-direction grid length (in units of metres) unsigned[3] DyInMetres : dump; alias yDirectionGridLength=DyInMetres; alias geography.DyInMetres=DyInMetres; diff --git a/definitions/grib2/template.3.30.def b/definitions/grib2/template.3.30.def index f9033b1f9..9a67688f4 100644 --- a/definitions/grib2/template.3.30.def +++ b/definitions/grib2/template.3.30.def @@ -40,13 +40,13 @@ meta geography.LaDInDegrees scale(LaD,one,grib2divider,truncateDegrees) : dump; unsigned[4] LoV : edition_specific; meta geography.LoVInDegrees scale(LoV,one,grib2divider,truncateDegrees) : dump; -# Dx - X-direction grid length +# Dx - X-direction grid length (in units of millimetres) unsigned[4] Dx : edition_specific ; alias xDirectionGridLength=Dx; alias Di = Dx; meta geography.DxInMetres scale(Dx,one,thousand) : dump; -# Dy - Y-direction grid length +# Dy - Y-direction grid length (in units of millimetres) unsigned[4] Dy : edition_specific ; alias yDirectionGridLength=Dy ; alias Dj = Dy; diff --git a/src/grib_util.c b/src/grib_util.c index e7a80b3b9..1abd054a2 100644 --- a/src/grib_util.c +++ b/src/grib_util.c @@ -1054,24 +1054,27 @@ grib_handle* grib_util_set_spec2(grib_handle* h, size_t n = sizeof(levtype); Assert(grib_get_string(h,"levelType",levtype,&n) == 0); switch (spec->grid_type) { - case GRIB_UTIL_GRID_SPEC_REDUCED_GG: - case GRIB_UTIL_GRID_SPEC_REDUCED_ROTATED_GG: - /* Choose a sample with the right Gaussian number and edition */ - sprintf(name, "%s_pl_%ld_grib%ld", grid_type,spec->N, editionNumber); - if (spec->pl && spec->pl_size) { - /* GRIB-834: pl is given so can use any of the reduced_gg_pl samples */ + case GRIB_UTIL_GRID_SPEC_REDUCED_GG: + case GRIB_UTIL_GRID_SPEC_REDUCED_ROTATED_GG: + /* Choose a sample with the right Gaussian number and edition */ + sprintf(name, "%s_pl_%ld_grib%ld", grid_type,spec->N, editionNumber); + if (spec->pl && spec->pl_size) { + /* GRIB-834: pl is given so can use any of the reduced_gg_pl samples */ + sprintf(name, "%s_pl_grib%ld", grid_type, editionNumber); + } + break; + case GRIB_UTIL_GRID_SPEC_LAMBERT_AZIMUTHAL_EQUAL_AREA: + if (editionNumber==1) { + fprintf(stderr,"GRIB_UTIL_SET_SPEC: grid type='%s' not available in GRIB edition 1.\n", grid_type); + goto cleanup; + } + sprintf(name, "GRIB%ld", editionNumber); + break; + case GRIB_UTIL_GRID_SPEC_LAMBERT_CONFORMAL: + sprintf(name, "GRIB%ld", editionNumber); + break; + default : sprintf(name, "%s_pl_grib%ld", grid_type, editionNumber); - } - break; - case GRIB_UTIL_GRID_SPEC_LAMBERT_AZIMUTHAL_EQUAL_AREA: - if (editionNumber==1) { - fprintf(stderr,"GRIB_UTIL_SET_SPEC: grid type='%s' not available in GRIB edition 1.\n", grid_type); - goto cleanup; - } - sprintf(name, "GRIB%ld", editionNumber); - break; - default : - sprintf(name, "%s_pl_grib%ld", grid_type, editionNumber); } if (spec->pl && spec->grid_name) { @@ -1211,8 +1214,22 @@ grib_handle* grib_util_set_spec2(grib_handle* h, break; case GRIB_UTIL_GRID_SPEC_LAMBERT_CONFORMAL: - *err = GRIB_NOT_IMPLEMENTED; - goto cleanup; + COPY_SPEC_LONG (bitmapPresent); + if (spec->missingValue) COPY_SPEC_DOUBLE(missingValue); + COPY_SPEC_DOUBLE(longitudeOfFirstGridPointInDegrees); + COPY_SPEC_DOUBLE(latitudeOfFirstGridPointInDegrees); + COPY_SPEC_LONG(Ni); /* same as Nx */ + COPY_SPEC_LONG(Nj); /* same as Ny */ + + /* + * Note: DxInMetres and DyInMetres + * should be 'double' and not integer. WMO GRIB2 uses millimetres! + * TODO: + * Add other keys like Latin1, LoV etc + + *err = GRIB_NOT_IMPLEMENTED; + goto cleanup; + */ break; case GRIB_UTIL_GRID_SPEC_REDUCED_GG: From 4613a340d73750330b5e00baa6695812a7fe0a4f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 6 Jun 2019 12:41:51 +0100 Subject: [PATCH 283/414] Python examples: Pass in the BUFR file to iterate on --- examples/python/bufr_keys_iterator.py | 5 ++--- examples/python/bufr_keys_iterator.sh | 14 ++++++-------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/examples/python/bufr_keys_iterator.py b/examples/python/bufr_keys_iterator.py index 21dc68563..1ddbabafb 100644 --- a/examples/python/bufr_keys_iterator.py +++ b/examples/python/bufr_keys_iterator.py @@ -21,11 +21,10 @@ import sys from eccodes import * -INPUT = '../../data/bufr/syno_1.bufr' VERBOSE = 1 # verbose error reporting -def example(): +def example(INPUT): # open bufr file f = open(INPUT, 'rb') @@ -67,7 +66,7 @@ def example(): def main(): try: - example() + example(sys.argv[1]) except CodesInternalError as err: if VERBOSE: traceback.print_exc(file=sys.stderr) diff --git a/examples/python/bufr_keys_iterator.sh b/examples/python/bufr_keys_iterator.sh index e968fe7ff..9340c25df 100755 --- a/examples/python/bufr_keys_iterator.sh +++ b/examples/python/bufr_keys_iterator.sh @@ -10,24 +10,22 @@ . ./include.sh -#Define a common label for all the tmp files +# Define a common label for all the tmp files label="bufr_keys_iterator_test_p" -#Define tmp file +# Define tmp file fTmp=${label}".tmp.txt" rm -f $fTmp REDIRECT=/dev/null -#The bufr file to use +# The bufr file to use f=${data_dir}/bufr/syno_1.bufr +$PYTHON $examples_src/bufr_keys_iterator.py $f 2> $REDIRECT > $fTmp -#The input ($f) is hardcoded in the example!!! -$PYTHON $examples_src/bufr_keys_iterator.py 2> $REDIRECT > $fTmp - -#TODO: check the output +# Check the output grep -q '#6#cloudType->percentConfidence' $fTmp grep -q '#2#verticalSignificanceSurfaceObservations->percentConfidence' $fTmp -#Clean up +# Clean up rm -f $fTmp From 6857446f7d87ed7203ca19829bc9256e37de9c5a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 6 Jun 2019 15:56:09 +0100 Subject: [PATCH 284/414] ECC-937: BUFR keys iterator memory leak --- src/bufr_keys_iterator.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/bufr_keys_iterator.c b/src/bufr_keys_iterator.c index 178d69d7e..acd211c89 100644 --- a/src/bufr_keys_iterator.c +++ b/src/bufr_keys_iterator.c @@ -149,6 +149,8 @@ int codes_bufr_keys_iterator_next(bufr_keys_iterator* kiter) /* ECC-734: de-allocate last key name stored */ grib_context_free(kiter->handle->context, kiter->key_name); kiter->key_name = NULL; + grib_context_free(kiter->handle->context, kiter->prefix); + kiter->prefix = NULL; if(kiter->at_start) { From 88db347a21459ccc8586110a95b5c12e71130533 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 6 Jun 2019 16:30:06 +0100 Subject: [PATCH 285/414] ECC-937: Revert. More testing needed --- src/bufr_keys_iterator.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/bufr_keys_iterator.c b/src/bufr_keys_iterator.c index acd211c89..ea3f6166b 100644 --- a/src/bufr_keys_iterator.c +++ b/src/bufr_keys_iterator.c @@ -149,8 +149,10 @@ int codes_bufr_keys_iterator_next(bufr_keys_iterator* kiter) /* ECC-734: de-allocate last key name stored */ grib_context_free(kiter->handle->context, kiter->key_name); kiter->key_name = NULL; + /* See ECC-937 grib_context_free(kiter->handle->context, kiter->prefix); kiter->prefix = NULL; + */ if(kiter->at_start) { From 8616c07c5339e978a88ba59db7d359459940e01d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 6 Jun 2019 16:55:03 +0100 Subject: [PATCH 286/414] ECC-938: BUFR keys iterator: key 'ident' from ECMWF local header is not included --- examples/C/bufr_keys_iterator.sh | 11 +++++------ examples/python/bufr_keys_iterator.sh | 1 + examples/python/high_level_api.py | 2 +- src/bufr_keys_iterator.c | 26 ++++++++++++++++++++++++-- 4 files changed, 31 insertions(+), 9 deletions(-) diff --git a/examples/C/bufr_keys_iterator.sh b/examples/C/bufr_keys_iterator.sh index 246f7e954..8ad46f42e 100755 --- a/examples/C/bufr_keys_iterator.sh +++ b/examples/C/bufr_keys_iterator.sh @@ -12,23 +12,22 @@ set -x . ./include.sh -#Define a common label for all the tmp files +# Define a common label for all the tmp files label="bufr_keys_iterator_test_c" -#Define tmp file +# Define tmp file fTmp=${label}".tmp.txt" rm -f $fTmp REDIRECT=/dev/null f=${data_dir}/bufr/syno_1.bufr - -#Dump the keys ${examples_dir}/c_bufr_keys_iterator $f 2> $REDIRECT > $fTmp -#TODO: check the output +# Check the output +grep -q 'ident=91334' $fTmp grep -q '#5#cloudAmount->percentConfidence=70' $fTmp grep -q 'unexpandedDescriptors=(array of 10)' $fTmp -#Clean up +# Clean up rm -f $fTmp diff --git a/examples/python/bufr_keys_iterator.sh b/examples/python/bufr_keys_iterator.sh index 9340c25df..ff537b70f 100755 --- a/examples/python/bufr_keys_iterator.sh +++ b/examples/python/bufr_keys_iterator.sh @@ -24,6 +24,7 @@ f=${data_dir}/bufr/syno_1.bufr $PYTHON $examples_src/bufr_keys_iterator.py $f 2> $REDIRECT > $fTmp # Check the output +grep -q 'ident' $fTmp grep -q '#6#cloudType->percentConfidence' $fTmp grep -q '#2#verticalSignificanceSurfaceObservations->percentConfidence' $fTmp diff --git a/examples/python/high_level_api.py b/examples/python/high_level_api.py index 8ccc3fe34..0f1c4a196 100644 --- a/examples/python/high_level_api.py +++ b/examples/python/high_level_api.py @@ -360,7 +360,7 @@ class TestBufrMessage(unittest.TestCase): msg = BufrMessage(bufr_file) msg.unpack() msg_keys = list(msg.keys()) - self.assertEqual(len(msg_keys), 200) + self.assertEqual(len(msg_keys), 201) for key in KNOWN_BUFR_KEYS: assert key in msg_keys # Size of message in bytes diff --git a/src/bufr_keys_iterator.c b/src/bufr_keys_iterator.c index ea3f6166b..7bb7d03cb 100644 --- a/src/bufr_keys_iterator.c +++ b/src/bufr_keys_iterator.c @@ -82,13 +82,31 @@ int codes_bufr_keys_iterator_rewind(bufr_keys_iterator* ki) return GRIB_SUCCESS; } +static int is_ident_key(bufr_keys_iterator* kiter) +{ + if (kiter->current->sub_section) + return 0; + + if (GRIB_ACCESSOR_FLAG_HIDDEN == kiter->current->flags && + strcmp(kiter->current->name, "keyMore")==0 && + grib_is_defined(kiter->handle, "ls.ident")) + { + return 1; + } + return 0; +} + static int skip(bufr_keys_iterator* kiter) { if(kiter->current->sub_section) return 1; - if(kiter->current->flags & kiter->accessor_flags_skip) + if(kiter->current->flags & kiter->accessor_flags_skip) { + /* The "ident" key deserves special treatment */ + if (is_ident_key(kiter)) + return 0; return 1; + } if(kiter->accessor_flags_only == (kiter->current->flags & kiter->accessor_flags_only)) { mark_seen(kiter,kiter->current->name); @@ -206,7 +224,11 @@ char* codes_bufr_keys_iterator_get_name(bufr_keys_iterator* kiter) r=(int*)grib_trie_get(kiter->seen,kiter->current->name); sprintf(ret,"#%d#%s",*r,kiter->current->name); } else { - strcpy(ret,kiter->current->name); + if (is_ident_key(kiter)) { + strcpy(ret, "ident"); + } else { + strcpy(ret,kiter->current->name); + } } } From 6a0171599e5113493f4a6b33c4adef70cf38032d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 6 Jun 2019 22:08:57 +0100 Subject: [PATCH 287/414] ECC-937: BUFR keys iterator memory leak (fixed) --- src/bufr_keys_iterator.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/bufr_keys_iterator.c b/src/bufr_keys_iterator.c index 7bb7d03cb..781a90cde 100644 --- a/src/bufr_keys_iterator.c +++ b/src/bufr_keys_iterator.c @@ -146,6 +146,7 @@ static int next_attribute(bufr_keys_iterator* kiter) char* prefix=0; if (!kiter->prefix) return 0; if (!kiter->attributes[i_curr_attribute]) { + grib_context_free(kiter->current->context,kiter->prefix); kiter->prefix=0; return 0; } @@ -167,10 +168,6 @@ int codes_bufr_keys_iterator_next(bufr_keys_iterator* kiter) /* ECC-734: de-allocate last key name stored */ grib_context_free(kiter->handle->context, kiter->key_name); kiter->key_name = NULL; - /* See ECC-937 - grib_context_free(kiter->handle->context, kiter->prefix); - kiter->prefix = NULL; - */ if(kiter->at_start) { From dedbac347185a37758b87ea21f32ccb643c441f5 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 7 Jun 2019 14:13:13 +0100 Subject: [PATCH 288/414] ECC-939: BUFR decoding: masterTablesVersionNumber=2 types are incorrect (Part 1) --- definitions/bufr/tables/0/wmo/2/element.table | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/definitions/bufr/tables/0/wmo/2/element.table b/definitions/bufr/tables/0/wmo/2/element.table index 1221a3217..578d3a5e0 100644 --- a/definitions/bufr/tables/0/wmo/2/element.table +++ b/definitions/bufr/tables/0/wmo/2/element.table @@ -1,39 +1,39 @@ #code|abbreviation|type|name|unit|scale|reference|width|crex_unit|crex_scale|crex_width -000001|tableAEntry|long|TABLE A: ENTRY|CCITT IA5|0|0|24|NA|0|0 -000002|tableALine1|long|TABLE A: DATA CATEGORY DESCRIPTION, LINE 1|CCITT IA5|0|0|256|NA|0|0 -000003|tableALine2|long|TABLE A: DATA CATEGORY DESCRIPTION, LINE 2|CCITT IA5|0|0|256|NA|0|0 -000005|editionNumber|long|BUFR EDITION NUMBER|CCITT IA5|0|0|24|NA|0|0 -000010|fDescriptorToBeAddedOrDefined|long|F DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|8|NA|0|0 -000011|xDescriptorToBeAddedOrDefined|long|X DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|16|NA|0|0 -000012|yDescriptorToBeAddedOrDefined|long|Y DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|24|NA|0|0 -000013|elementNameLine1|long|ELEMENT NAME, LINE 1|CCITT IA5|0|0|256|NA|0|0 -000014|elementNameLine2|long|ELEMENT NAME, LINE 2|CCITT IA5|0|0|256|NA|0|0 -000015|unitsName|long|UNITS NAME|CCITT IA5|0|0|192|NA|0|0 -000016|unitsScaleSign|long|UNITS SCALE SIGN|CCITT IA5|0|0|8|NA|0|0 -000017|unitsScale|long|UNITS SCALE|CCITT IA5|0|0|24|NA|0|0 -000018|unitsReferenceSign|long|UNITS REFERENCE SIGN|CCITT IA5|0|0|8|NA|0|0 -000019|unitsReferenceValue|long|UNITS REFERENCE VALUE|CCITT IA5|0|0|80|NA|0|0 -000020|elementDataWidth|long|ELEMENT DATA WIDTH|CCITT IA5|0|0|24|NA|0|0 -000030|descriptorDefiningSequence|long|DESCRIPTOR DEFINING SEQUENCE|CCITT IA5|0|0|48|NA|0|0 +000001|tableAEntry|string|TABLE A: ENTRY|CCITT IA5|0|0|24|NA|0|0 +000002|tableALine1|string|TABLE A: DATA CATEGORY DESCRIPTION, LINE 1|CCITT IA5|0|0|256|NA|0|0 +000003|tableALine2|string|TABLE A: DATA CATEGORY DESCRIPTION, LINE 2|CCITT IA5|0|0|256|NA|0|0 +000005|editionNumber|string|BUFR EDITION NUMBER|CCITT IA5|0|0|24|NA|0|0 +000010|fDescriptorToBeAddedOrDefined|string|F DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|8|NA|0|0 +000011|xDescriptorToBeAddedOrDefined|string|X DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|16|NA|0|0 +000012|yDescriptorToBeAddedOrDefined|string|Y DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|24|NA|0|0 +000013|elementNameLine1|string|ELEMENT NAME, LINE 1|CCITT IA5|0|0|256|NA|0|0 +000014|elementNameLine2|string|ELEMENT NAME, LINE 2|CCITT IA5|0|0|256|NA|0|0 +000015|unitsName|string|UNITS NAME|CCITT IA5|0|0|192|NA|0|0 +000016|unitsScaleSign|string|UNITS SCALE SIGN|CCITT IA5|0|0|8|NA|0|0 +000017|unitsScale|string|UNITS SCALE|CCITT IA5|0|0|24|NA|0|0 +000018|unitsReferenceSign|string|UNITS REFERENCE SIGN|CCITT IA5|0|0|8|NA|0|0 +000019|unitsReferenceValue|string|UNITS REFERENCE VALUE|CCITT IA5|0|0|80|NA|0|0 +000020|elementDataWidth|string|ELEMENT DATA WIDTH|CCITT IA5|0|0|24|NA|0|0 +000030|descriptorDefiningSequence|string|DESCRIPTOR DEFINING SEQUENCE|CCITT IA5|0|0|48|NA|0|0 001001|blockNumber|long|WMO BLOCK NUMBER|Numeric|0|0|7|NA|0|0 001002|stationNumber|long|WMO STATION NUMBER|Numeric|0|0|10|NA|0|0 001003|regionNumber|long|WMO REGION NUMBER/GEOGRAPHICAL AREA|Numeric|0|0|3|NA|0|0 001004|wmoRegionSubArea|long|WMO REGION SUB-AREA|Numeric|0|0|3|NA|0|0 001005|buoyOrPlatformIdentifier|long|BUOY/PLATFORM IDENTIFIER|Numeric|0|0|17|NA|0|0 -001006|aircraftFlightNumber|long|AIRCRAFT IDENTIFIER|CCITT IA5|0|0|64|NA|0|0 +001006|aircraftFlightNumber|string|AIRCRAFT IDENTIFIER|CCITT IA5|0|0|64|NA|0|0 001007|satelliteIdentifier|long|SATELLITE IDENTIFIER|CODE TABLE|0|0|10|NA|0|0 -001008|aircraftRegistrationNumberOrOtherIdentification|long|AIRCRAFT REGISTRATION NUMBER|CCITT IA5|0|0|64|NA|0|0 -001011|shipOrMobileLandStationIdentifier|long|SHIP'S CALL SIGN|CCITT IA5|0|0|72|NA|0|0 +001008|aircraftRegistrationNumberOrOtherIdentification|string|AIRCRAFT REGISTRATION NUMBER|CCITT IA5|0|0|64|NA|0|0 +001011|shipOrMobileLandStationIdentifier|string|SHIP'S CALL SIGN|CCITT IA5|0|0|72|NA|0|0 001012|directionOfMotionOfMovingObservingPlatform|long|DIRECTION OF MOTION OF MOVING OBSERVING PLATFORM|deg|0|0|9|NA|0|0 001013|movingObservingPlatformSpeed|long|SPEED OF MOTION OF MOVING OBSERVING PLATFORM|m/s|0|0|10|NA|0|0 001014|platformDriftSpeed|long|PLATFORM DRIFT SPEED(HIGH PRECISION|m/s|2|0|10|NA|0|0 001021|synopticFeatureIdentifier|long|SYNOPTIC FEATURE IDENTIFIER|Numeric|0|0|14|NA|0|0 -001022|featureName|long|VULCANO NAME|CCITT IA5|0|0|160|NA|0|0 -001025|stormIdentifier|long|STORM IDENTIFIER|CCITT IA5|0|0|24|NA|0|0 -001026|stormName|long|WMO STORM NAME|CCITT IA5|0|0|64|NA|0|0 +001022|featureName|string|VULCANO NAME|CCITT IA5|0|0|160|NA|0|0 +001025|stormIdentifier|string|STORM IDENTIFIER|CCITT IA5|0|0|24|NA|0|0 +001026|stormName|string|WMO STORM NAME|CCITT IA5|0|0|64|NA|0|0 001031|centre|long|GENERATING CENTRE|CODE TABLE|0|0|16|NA|0|0 001032|generatingApplication|long|GENERATING APPLICATION|CODE TABLE|0|0|8|NA|0|0 -001063|icaoLocationIndicator|long|ICAO LOCATION INDICATOR|CCITT IA5|0|0|64|NA|0|0 +001063|icaoLocationIndicator|string|ICAO LOCATION INDICATOR|CCITT IA5|0|0|64|NA|0|0 002001|stationType|long|TYPE OF STATION|CODE TABLE|0|0|2|NA|0|0 002002|instrumentationForWindMeasurement|long|TYPE OF INSTRUMENTATION FOR WIND MEASUREMENT|FLAG TABLE|0|0|4|NA|0|0 002003|measuringEquipmentType|long|TYPE OF MEASURING EQUIPMENT USED|CODE TABLE|0|0|4|NA|0|0 From 931efc2631ffc6a7c0ff2f66786eebfd55072de6 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 7 Jun 2019 14:14:01 +0100 Subject: [PATCH 289/414] Improve error detection (related to ECC-939) --- src/grib_accessor_class_bufr_data_array.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/grib_accessor_class_bufr_data_array.c b/src/grib_accessor_class_bufr_data_array.c index 7d476fd32..29d2c5f9e 100644 --- a/src/grib_accessor_class_bufr_data_array.c +++ b/src/grib_accessor_class_bufr_data_array.c @@ -1037,8 +1037,8 @@ static int decode_element(grib_context* c,grib_accessor_bufr_data_array* self,in err=check_end_data(c, self, number_of_bits); /*advance bitsToEnd*/ return err; } - grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: -%ld- \tcode=%6.6ld width=%ld scale=%ld ref=%ld (pos=%ld -> %ld)", - i, bd->code, bd->width, bd->scale, bd->reference, + grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: -%ld- \tcode=%6.6ld width=%ld scale=%ld ref=%ld type=%ld (pos=%ld -> %ld)", + i, bd->code, bd->width, bd->scale, bd->reference, bd->type, (long)*pos, (long)(*pos-a->offset*8)); if (bd->type==BUFR_DESCRIPTOR_TYPE_STRING) { /* string */ @@ -1073,6 +1073,10 @@ static int decode_element(grib_context* c,grib_accessor_bufr_data_array* self,in grib_context_log(c, GRIB_LOG_DEBUG,"Operator 203YYY: For code %6.6ld, changed ref val: %ld", bd->code, bd->reference); } + if (bd->width > 64) { + grib_context_log(c, GRIB_LOG_ERROR,"Descriptor %6.6ld has bit width %ld!", bd->code,bd->width); + return GRIB_DECODING_ERROR; + } if (self->compressedData) { dar=decode_double_array(c,data,pos,bd,self->canBeMissing[i],self,&err); grib_vdarray_push(c,self->numericValues,dar); From 38eee91dde8c6c275bb369913c52b8ac61345749 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 7 Jun 2019 14:15:58 +0100 Subject: [PATCH 290/414] ECC-939: BUFR decoding: masterTablesVersionNumber=2 types are incorrect (Part 2) --- definitions/bufr/tables/0/wmo/2/element.table | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/definitions/bufr/tables/0/wmo/2/element.table b/definitions/bufr/tables/0/wmo/2/element.table index 578d3a5e0..5bfa23d54 100644 --- a/definitions/bufr/tables/0/wmo/2/element.table +++ b/definitions/bufr/tables/0/wmo/2/element.table @@ -63,7 +63,7 @@ 002062|aircraftDataRelaySystemType|long|TYPE OF AIRCRAFT DATA RELAY SYSTEM|CODE TABLE|0|0|4|NA|0|0 002063|aircraftRollAngle|long|AIRCRAFT ROLL ANGLE|deg|2|-18000|16|NA|0|0 002064|aircraftRollAngleQuality|long|AIRCRAFT ROLL ANGLE QUALITY|CODE TABLE|0|0|2|NA|0|0 -002065|acarsGroundReceivingStation|long|ACARS GROUND RECEIVING STATION|CCITT IA5|0|0|40|NA|0|0 +002065|acarsGroundReceivingStation|string|ACARS GROUND RECEIVING STATION|CCITT IA5|0|0|40|NA|0|0 002070|originalSpecificationOfLatitudeOrLongitude|long|ORIGINAL SPECIFICATION OF LATITUDE/LONGITUDE|CODE TABLE|0|0|4|NA|0|0 002101|antennaType|long|TYPE OF ANTENNA|CODE TABLE|0|0|4|NA|0|0 002102|antennaHeightAboveTowerBase|long|ANTENNA HEIGHT ABOVE TOWER BASE|m|0|0|8|NA|0|0 From 184897d4f5c6b39ccf44791dc0ff85fdffd1b3d2 Mon Sep 17 00:00:00 2001 From: Sandor Kertesz Date: Fri, 7 Jun 2019 15:23:47 +0100 Subject: [PATCH 291/414] BUFR decoding: masterTablesVersionNumber=2 types are incorrect ECC-939 --- definitions/bufr/tables/0/wmo/2/element.table | 446 +++++++++--------- 1 file changed, 223 insertions(+), 223 deletions(-) diff --git a/definitions/bufr/tables/0/wmo/2/element.table b/definitions/bufr/tables/0/wmo/2/element.table index 5bfa23d54..5fa2512e7 100644 --- a/definitions/bufr/tables/0/wmo/2/element.table +++ b/definitions/bufr/tables/0/wmo/2/element.table @@ -21,62 +21,62 @@ 001004|wmoRegionSubArea|long|WMO REGION SUB-AREA|Numeric|0|0|3|NA|0|0 001005|buoyOrPlatformIdentifier|long|BUOY/PLATFORM IDENTIFIER|Numeric|0|0|17|NA|0|0 001006|aircraftFlightNumber|string|AIRCRAFT IDENTIFIER|CCITT IA5|0|0|64|NA|0|0 -001007|satelliteIdentifier|long|SATELLITE IDENTIFIER|CODE TABLE|0|0|10|NA|0|0 +001007|satelliteIdentifier|table|SATELLITE IDENTIFIER|CODE TABLE|0|0|10|NA|0|0 001008|aircraftRegistrationNumberOrOtherIdentification|string|AIRCRAFT REGISTRATION NUMBER|CCITT IA5|0|0|64|NA|0|0 001011|shipOrMobileLandStationIdentifier|string|SHIP'S CALL SIGN|CCITT IA5|0|0|72|NA|0|0 001012|directionOfMotionOfMovingObservingPlatform|long|DIRECTION OF MOTION OF MOVING OBSERVING PLATFORM|deg|0|0|9|NA|0|0 001013|movingObservingPlatformSpeed|long|SPEED OF MOTION OF MOVING OBSERVING PLATFORM|m/s|0|0|10|NA|0|0 -001014|platformDriftSpeed|long|PLATFORM DRIFT SPEED(HIGH PRECISION|m/s|2|0|10|NA|0|0 +001014|platformDriftSpeed|double|PLATFORM DRIFT SPEED(HIGH PRECISION|m/s|2|0|10|NA|0|0 001021|synopticFeatureIdentifier|long|SYNOPTIC FEATURE IDENTIFIER|Numeric|0|0|14|NA|0|0 001022|featureName|string|VULCANO NAME|CCITT IA5|0|0|160|NA|0|0 001025|stormIdentifier|string|STORM IDENTIFIER|CCITT IA5|0|0|24|NA|0|0 001026|stormName|string|WMO STORM NAME|CCITT IA5|0|0|64|NA|0|0 -001031|centre|long|GENERATING CENTRE|CODE TABLE|0|0|16|NA|0|0 -001032|generatingApplication|long|GENERATING APPLICATION|CODE TABLE|0|0|8|NA|0|0 +001031|centre|table|GENERATING CENTRE|CODE TABLE|0|0|16|NA|0|0 +001032|generatingApplication|table|GENERATING APPLICATION|CODE TABLE|0|0|8|NA|0|0 001063|icaoLocationIndicator|string|ICAO LOCATION INDICATOR|CCITT IA5|0|0|64|NA|0|0 -002001|stationType|long|TYPE OF STATION|CODE TABLE|0|0|2|NA|0|0 -002002|instrumentationForWindMeasurement|long|TYPE OF INSTRUMENTATION FOR WIND MEASUREMENT|FLAG TABLE|0|0|4|NA|0|0 -002003|measuringEquipmentType|long|TYPE OF MEASURING EQUIPMENT USED|CODE TABLE|0|0|4|NA|0|0 -002004|typeOfInstrumentationForEvaporationMeasurement|long|TYPE OF INSTRUMENTATION FOR EVAPORATION MEASUEMENT OR TYPE OF CR|CODE TABLE|0|0|4|NA|0|0 -002005|temperatureObservationPrecision|long|PRECISION OF TEMPERATURE OBSERVATION|K|2|0|7|NA|0|0 -002011|radiosondeType|long|RADIOSONDE TYPE|CODE TABLE|0|0|8|NA|0|0 -002012|radiosondeComputationalMethod|long|RADIOSONDE COMPUTATIONAL METHOD|CODE TABLE|0|0|4|NA|0|0 -002013|solarAndInfraredRadiationCorrection|long|SOLAR AND INFRARED RADIATION CORRECTION|CODE TABLE|0|0|4|NA|0|0 -002014|trackingTechniqueOrStatusOfSystem|long|TRACKING TECHNIQUE/STATUS OF SYSTEM|CODE TABLE|0|0|7|NA|0|0 -002015|radiosondeCompleteness|long|RADIOSONDE COMPLETNESS|CODE TABLE|0|0|4|NA|0|0 -002021|satelliteInstrumentDataUsedInProcessing|long|SATELLITE INSTRUMENT DATA USED IN PROCESSING|FLAG TABLE|0|0|9|NA|0|0 -002022|satelliteDataProcessingTechnique|long|SATELLITE DATA PROCESSING TECHNIQUE USED|FLAG TABLE|0|0|8|NA|0|0 -002023|satelliteDerivedWindComputationMethod|long|CLOUD MOTION COMPUTATIONAL METHOD|CODE TABLE|0|0|4|NA|0|0 -002024|meanHumidityComputationalMethod|long|INTEGRATED MEAN HUMIDITY COMPUTATIONAL METHOD|CODE TABLE|0|0|4|NA|0|0 -002025|satelliteChannelsUsedInComputation|long|SATELLITE CHANNEL(S) USED IN COMPUTATION|FLAG TABLE|0|0|25|NA|0|0 -002026|crossTrackResolution|long|CROSS TRACK RESOLUTION|m|2|0|12|NA|0|0 -002027|alongTrackResolution|long|ALONG TRACK RESOLUTION|m|2|0|12|NA|0|0 -002030|methodOfCurrentMeasurement|long|METHOD OF CURRENT MEASUREMENT|CODE TABLE|0|0|3|NA|0|0 -002031|durationAndTimeOfCurrentMeasurement|long|DURATION AND TIME OF CURRENT MEASUREMENT|CODE TABLE|0|0|5|NA|0|0 -002032|indicatorForDigitization|long|INDICATOR FOR DIGITIZATION|CODE TABLE|0|0|2|NA|0|0 -002033|methodOfSalinityOrDepthMeasurement|long|METHOD OF SALINITY/DEPTH MEASUREMENT|CODE TABLE|0|0|3|NA|0|0 -002034|drogueType|long|DROGUE TYPE|CODE TABLE|0|0|5|NA|0|0 +002001|stationType|table|TYPE OF STATION|CODE TABLE|0|0|2|NA|0|0 +002002|instrumentationForWindMeasurement|flag|TYPE OF INSTRUMENTATION FOR WIND MEASUREMENT|FLAG TABLE|0|0|4|NA|0|0 +002003|measuringEquipmentType|table|TYPE OF MEASURING EQUIPMENT USED|CODE TABLE|0|0|4|NA|0|0 +002004|typeOfInstrumentationForEvaporationMeasurement|table|TYPE OF INSTRUMENTATION FOR EVAPORATION MEASUEMENT OR TYPE OF CR|CODE TABLE|0|0|4|NA|0|0 +002005|temperatureObservationPrecision|double|PRECISION OF TEMPERATURE OBSERVATION|K|2|0|7|NA|0|0 +002011|radiosondeType|table|RADIOSONDE TYPE|CODE TABLE|0|0|8|NA|0|0 +002012|radiosondeComputationalMethod|table|RADIOSONDE COMPUTATIONAL METHOD|CODE TABLE|0|0|4|NA|0|0 +002013|solarAndInfraredRadiationCorrection|table|SOLAR AND INFRARED RADIATION CORRECTION|CODE TABLE|0|0|4|NA|0|0 +002014|trackingTechniqueOrStatusOfSystem|table|TRACKING TECHNIQUE/STATUS OF SYSTEM|CODE TABLE|0|0|7|NA|0|0 +002015|radiosondeCompleteness|table|RADIOSONDE COMPLETNESS|CODE TABLE|0|0|4|NA|0|0 +002021|satelliteInstrumentDataUsedInProcessing|flag|SATELLITE INSTRUMENT DATA USED IN PROCESSING|FLAG TABLE|0|0|9|NA|0|0 +002022|satelliteDataProcessingTechnique|flag|SATELLITE DATA PROCESSING TECHNIQUE USED|FLAG TABLE|0|0|8|NA|0|0 +002023|satelliteDerivedWindComputationMethod|table|CLOUD MOTION COMPUTATIONAL METHOD|CODE TABLE|0|0|4|NA|0|0 +002024|meanHumidityComputationalMethod|table|INTEGRATED MEAN HUMIDITY COMPUTATIONAL METHOD|CODE TABLE|0|0|4|NA|0|0 +002025|satelliteChannelsUsedInComputation|flag|SATELLITE CHANNEL(S) USED IN COMPUTATION|FLAG TABLE|0|0|25|NA|0|0 +002026|crossTrackResolution|double|CROSS TRACK RESOLUTION|m|2|0|12|NA|0|0 +002027|alongTrackResolution|double|ALONG TRACK RESOLUTION|m|2|0|12|NA|0|0 +002030|methodOfCurrentMeasurement|table|METHOD OF CURRENT MEASUREMENT|CODE TABLE|0|0|3|NA|0|0 +002031|durationAndTimeOfCurrentMeasurement|table|DURATION AND TIME OF CURRENT MEASUREMENT|CODE TABLE|0|0|5|NA|0|0 +002032|indicatorForDigitization|table|INDICATOR FOR DIGITIZATION|CODE TABLE|0|0|2|NA|0|0 +002033|methodOfSalinityOrDepthMeasurement|table|METHOD OF SALINITY/DEPTH MEASUREMENT|CODE TABLE|0|0|3|NA|0|0 +002034|drogueType|table|DROGUE TYPE|CODE TABLE|0|0|5|NA|0|0 002035|cableLength|long|CABLE LENGTH|m|0|0|9|NA|0|0 -002036|buoyType|long|BUOY TYPE|CODE TABLE|0|0|2|NA|0|0 -002041|methodForEstimatingReportsRelatedToSynopticFeatures|long|METHOD FOR ESTIMATING REPORTS RELATED TO SYNOPTIC FEATURES|CODE TABLE|0|0|6|NA|0|0 -002061|aircraftNavigationalSystem|long|AIRCRAFT NAVIGATIONAL SYSTEM|CODE TABLE|0|0|3|NA|0|0 -002062|aircraftDataRelaySystemType|long|TYPE OF AIRCRAFT DATA RELAY SYSTEM|CODE TABLE|0|0|4|NA|0|0 -002063|aircraftRollAngle|long|AIRCRAFT ROLL ANGLE|deg|2|-18000|16|NA|0|0 -002064|aircraftRollAngleQuality|long|AIRCRAFT ROLL ANGLE QUALITY|CODE TABLE|0|0|2|NA|0|0 +002036|buoyType|table|BUOY TYPE|CODE TABLE|0|0|2|NA|0|0 +002041|methodForEstimatingReportsRelatedToSynopticFeatures|table|METHOD FOR ESTIMATING REPORTS RELATED TO SYNOPTIC FEATURES|CODE TABLE|0|0|6|NA|0|0 +002061|aircraftNavigationalSystem|table|AIRCRAFT NAVIGATIONAL SYSTEM|CODE TABLE|0|0|3|NA|0|0 +002062|aircraftDataRelaySystemType|table|TYPE OF AIRCRAFT DATA RELAY SYSTEM|CODE TABLE|0|0|4|NA|0|0 +002063|aircraftRollAngle|double|AIRCRAFT ROLL ANGLE|deg|2|-18000|16|NA|0|0 +002064|aircraftRollAngleQuality|table|AIRCRAFT ROLL ANGLE QUALITY|CODE TABLE|0|0|2|NA|0|0 002065|acarsGroundReceivingStation|string|ACARS GROUND RECEIVING STATION|CCITT IA5|0|0|40|NA|0|0 -002070|originalSpecificationOfLatitudeOrLongitude|long|ORIGINAL SPECIFICATION OF LATITUDE/LONGITUDE|CODE TABLE|0|0|4|NA|0|0 -002101|antennaType|long|TYPE OF ANTENNA|CODE TABLE|0|0|4|NA|0|0 +002070|originalSpecificationOfLatitudeOrLongitude|table|ORIGINAL SPECIFICATION OF LATITUDE/LONGITUDE|CODE TABLE|0|0|4|NA|0|0 +002101|antennaType|table|TYPE OF ANTENNA|CODE TABLE|0|0|4|NA|0|0 002102|antennaHeightAboveTowerBase|long|ANTENNA HEIGHT ABOVE TOWER BASE|m|0|0|8|NA|0|0 -002103|radome|long|RADOME|FLAG TABLE|0|0|2|NA|0|0 -002104|antennaPolarization|long|ANTENNA POLARISATION|CODE TABLE|0|0|4|NA|0|0 +002103|radome|flag|RADOME|FLAG TABLE|0|0|2|NA|0|0 +002104|antennaPolarization|table|ANTENNA POLARISATION|CODE TABLE|0|0|4|NA|0|0 002105|maximumAntennaGain|long|MAXIMUM ANTENNA GAIN|dB|0|0|6|NA|0|0 -002106|3DbBeamwidth|long|3-dB BEAMWIDTH|deg|1|0|6|NA|0|0 +002106|3DbBeamwidth|double|3-dB BEAMWIDTH|deg|1|0|6|NA|0|0 002107|sidelobeSuppression|long|SIDELOBE SUPPRESION|dB|0|0|6|NA|0|0 002108|crosspolDiscriminationOnAxis|long|CROSSPOL DISCRIMINATION(ON AXIS)|dB|0|0|6|NA|0|0 -002109|antennaSpeedAzimuth|long|ANTENNA SPEED(AZIMUTH)|deg/s|2|0|12|NA|0|0 -002110|antennaSpeedElevation|long|ANTENNA SPEED(ELEVATION)|deg/s|2|0|12|NA|0|0 -002111|radarIncidenceAngle|long|RADAR INCIDENCE ANGLE|deg|1|0|10|NA|0|0 -002112|radarLookAngle|long|RADAR LOOK ANGLE|deg|1|0|12|NA|0|0 +002109|antennaSpeedAzimuth|double|ANTENNA SPEED(AZIMUTH)|deg/s|2|0|12|NA|0|0 +002110|antennaSpeedElevation|double|ANTENNA SPEED(ELEVATION)|deg/s|2|0|12|NA|0|0 +002111|radarIncidenceAngle|double|RADAR INCIDENCE ANGLE|deg|1|0|10|NA|0|0 +002112|radarLookAngle|double|RADAR LOOK ANGLE|deg|1|0|12|NA|0|0 002113|numberOfAzimuthLooks|long|NUMBER OF AZIMUTH LOOKS|Numeric|0|0|4|NA|0|0 002114|antennaEffectiveSurfaceArea|long|ANTENNA EFFECTIVE SRFACE AREA|m2|0|0|15|NA|0|0 002121|meanFrequency|long|MEAN FREQUENCY|Hz|-8|0|7|NA|0|0 @@ -84,16 +84,16 @@ 002123|peakPower|long|PEAK POWER|W|-4|0|7|NA|0|0 002124|averagePower|long|AVERAGE POWER|W|-1|0|7|NA|0|0 002125|pulseRepetitionFrequency|long|PULSE REPETITION FREQUENCY|Hz|-1|0|8|NA|0|0 -002126|pulseWidth|long|PULSE WIDTH|s|7|0|6|NA|0|0 +002126|pulseWidth|double|PULSE WIDTH|s|7|0|6|NA|0|0 002127|receiverIntermediateFrequency|long|RECEIVER INTERMEDIATE FREQUENCY|Hz|-6|0|7|NA|0|0 002128|intermediateFrequencyBandwidth|long|INTERMEDIATE FREQUENCY BANDWIDTH|Hz|-5|0|6|NA|0|0 002129|minimumDetectableSignal|long|MINIMUM DETECTABLE SIGNAL|dB|0|-150|5|NA|0|0 002130|dynamicRange|long|DYNAMIC RANGE|dB|0|0|7|NA|0|0 -002131|sensitivityTimeControl|long|SENSITIVITY TIME CONTROL|FLAG TABLE|0|0|2|NA|0|0 -002132|azimuthPointingAccuracy|long|AZIMUTH POINTING ACCURACY|deg|2|0|6|NA|0|0 -002133|elevationPointingAccuracy|long|ELEVATION POINTING ACCURACY|deg|2|0|6|NA|0|0 -002134|antennaBeamAzimuth|long|ANTENNA BEAM AZIMUTH|deg|2|0|16|NA|0|0 -002135|antennaElevation|long|ANTENNA ELEVATION|deg|2|-9000|15|NA|0|0 +002131|sensitivityTimeControl|flag|SENSITIVITY TIME CONTROL|FLAG TABLE|0|0|2|NA|0|0 +002132|azimuthPointingAccuracy|double|AZIMUTH POINTING ACCURACY|deg|2|0|6|NA|0|0 +002133|elevationPointingAccuracy|double|ELEVATION POINTING ACCURACY|deg|2|0|6|NA|0|0 +002134|antennaBeamAzimuth|double|ANTENNA BEAM AZIMUTH|deg|2|0|16|NA|0|0 +002135|antennaElevation|double|ANTENNA ELEVATION|deg|2|-9000|15|NA|0|0 004001|year|long|YEAR|a|0|0|12|NA|0|0 004002|month|long|MONTH|mon|0|0|4|NA|0|0 004003|day|long|DAY|d|0|0|6|NA|0|0 @@ -113,12 +113,12 @@ 004025|timePeriod|long|TIME PERIOD OR DISPLACEMENT|min|0|-2048|12|NA|0|0 004026|timePeriod|long|TIME PERIOD OR DISPLACEMENT|s|0|-4096|13|NA|0|0 004043|dayOfYear|long|DAY OF THE YEAR|d|0|0|9|NA|0|0 -005001|latitude|long|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|NA|0|0 -005002|latitude|long|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|NA|0|0 -005011|latitudeIncrement|long|LATITUDE INCREMENT (HIGH ACCURACY)|deg|5|-9000000|25|NA|0|0 -005012|latitudeIncrement|long|LATITUDE INCREMENT (COARSE ACCURACY)|deg|2|-9000|15|NA|0|0 -005021|bearingOrAzimuth|long|BEARING OR AZIMUTH|deg|2|0|16|NA|0|0 -005022|solarAzimuth|long|SOLAR AZIMUTH|deg|2|0|16|NA|0|0 +005001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|NA|0|0 +005002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|NA|0|0 +005011|latitudeIncrement|double|LATITUDE INCREMENT (HIGH ACCURACY)|deg|5|-9000000|25|NA|0|0 +005012|latitudeIncrement|double|LATITUDE INCREMENT (COARSE ACCURACY)|deg|2|-9000|15|NA|0|0 +005021|bearingOrAzimuth|double|BEARING OR AZIMUTH|deg|2|0|16|NA|0|0 +005022|solarAzimuth|double|SOLAR AZIMUTH|deg|2|0|16|NA|0|0 005031|rowNumber|long|ROW NUMBER|Numeric|0|0|12|NA|0|0 005033|pixelSizeOnHorizontal1|long|PIXEL SIZE ON HORIZONTAL-1|m|-1|0|16|NA|0|0 005040|orbitNumber|long|ORBIT NUMBER|Numeric|0|0|24|NA|0|0 @@ -127,10 +127,10 @@ 005043|fieldOfViewNumber|long|FIELD OF VIEW NUMBER|Numeric|0|0|8|NA|0|0 005052|channelNumberIncrement|long|CHANNEL NUMBER INCREMENT|Numeric|0|0|5|NA|0|0 005053|fieldOfViewNumberIncrement|long|FIELD OF VIEW NUMBER INCREMENT|Numeric|0|0|5|NA|0|0 -006001|longitude|long|LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|NA|0|0 -006002|longitude|long|LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|NA|0|0 -006011|longitudeIncrement|long|LONGITUDE INCREMENT (HIGH ACCURACY)|deg|5|-18000000|26|NA|0|0 -006012|longitudeIncrement|long|LONGITUDE INCREMENT (COARSE ACCURACY)|deg|2|-18000|16|NA|0|0 +006001|longitude|double|LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|NA|0|0 +006002|longitude|double|LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|NA|0|0 +006011|longitudeIncrement|double|LONGITUDE INCREMENT (HIGH ACCURACY)|deg|5|-18000000|26|NA|0|0 +006012|longitudeIncrement|double|LONGITUDE INCREMENT (COARSE ACCURACY)|deg|2|-18000|16|NA|0|0 006021|distance|long|DISTANCE|m|-1|0|13|NA|0|0 006031|columnNumber|long|COLUMN NUMBER|Numeric|0|0|12|NA|0|0 006033|pixelSizeOnHorizontal2|long|PIXEL SIZE ON HORIZONTAL-2|m|-1|0|16|NA|0|0 @@ -141,104 +141,104 @@ 007005|heightIncrement|long|HEIGHT INCREMENT|m|0|-400|12|NA|0|0 007006|heightAboveStation|long|HEIGHT ABOVE STATION|m|0|0|15|NA|0|0 007010|flightLevel|long|FLIGHT LEVEL|m|0|-1024|16|NA|0|0 -007021|elevation|long|ELEVATION|deg|2|-9000|15|NA|0|0 -007022|solarElevation|long|SOLAR ELEVATION|deg|2|-9000|15|NA|0|0 -007061|depthBelowLandSurface|long|DEPTH BELOW LAND SURFACE|m|2|0|14|NA|0|0 -007062|depthBelowWaterSurface|long|DEPTH BELOW SEA SURFACE|m|1|0|17|NA|0|0 -007190|heightIncrement|long|HEIGHT INCREMENT|m|1|-1024|12|NA|0|0 -008001|verticalSoundingSignificance|long|VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|7|NA|0|0 -008002|verticalSignificanceSurfaceObservations|long|VERTICAL SIGNIFICANCE (SURFACE OBSERVATIONS)|CODE TABLE|0|0|6|NA|0|0 -008003|verticalSignificanceSatelliteObservations|long|VERTICAL SIGNIFICANCE (SATELLITE OBSERVATIONS)|CODE TABLE|0|0|6|NA|0|0 -008004|phaseOfAircraftFlight|long|PHASE OF AIRCRAFT FLIGHT|CODE TABLE|0|0|3|NA|0|0 -008005|meteorologicalAttributeSignificance|long|SURFACE SYNOPTIC FEATURE SIGNIFICANCE|CODE TABLE|0|0|4|NA|0|0 -008007|dimensionalSignificance|long|DIMENSIONAL SIGNIFICANCE|CODE TABLE|0|0|4|NA|0|0 -008011|meteorologicalFeature|long|HORIZONTAL SIGNIFICANCE|CODE TABLE|0|0|6|NA|0|0 -008012|landOrSeaQualifier|long|LAND/SEA QUALIFIER|CODE TABLE|0|0|2|NA|0|0 -008021|timeSignificance|long|TIME SIGNIFICANCE|CODE TABLE|0|0|5|NA|0|0 +007021|elevation|double|ELEVATION|deg|2|-9000|15|NA|0|0 +007022|solarElevation|double|SOLAR ELEVATION|deg|2|-9000|15|NA|0|0 +007061|depthBelowLandSurface|double|DEPTH BELOW LAND SURFACE|m|2|0|14|NA|0|0 +007062|depthBelowWaterSurface|double|DEPTH BELOW SEA SURFACE|m|1|0|17|NA|0|0 +007190|heightIncrement|double|HEIGHT INCREMENT|m|1|-1024|12|NA|0|0 +008001|verticalSoundingSignificance|flag|VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|7|NA|0|0 +008002|verticalSignificanceSurfaceObservations|table|VERTICAL SIGNIFICANCE (SURFACE OBSERVATIONS)|CODE TABLE|0|0|6|NA|0|0 +008003|verticalSignificanceSatelliteObservations|table|VERTICAL SIGNIFICANCE (SATELLITE OBSERVATIONS)|CODE TABLE|0|0|6|NA|0|0 +008004|phaseOfAircraftFlight|table|PHASE OF AIRCRAFT FLIGHT|CODE TABLE|0|0|3|NA|0|0 +008005|meteorologicalAttributeSignificance|table|SURFACE SYNOPTIC FEATURE SIGNIFICANCE|CODE TABLE|0|0|4|NA|0|0 +008007|dimensionalSignificance|table|DIMENSIONAL SIGNIFICANCE|CODE TABLE|0|0|4|NA|0|0 +008011|meteorologicalFeature|table|HORIZONTAL SIGNIFICANCE|CODE TABLE|0|0|6|NA|0|0 +008012|landOrSeaQualifier|table|LAND/SEA QUALIFIER|CODE TABLE|0|0|2|NA|0|0 +008021|timeSignificance|table|TIME SIGNIFICANCE|CODE TABLE|0|0|5|NA|0|0 008022|totalNumberWithRespectToAccumulationOrAverage|long|TOTAL NUMBER(WITH RESPECT TO ACCUMULATION OR AVERAGE)|Numeric|0|0|16|NA|0|0 -008023|firstOrderStatistics|long|FIRST ORDER STATISTICS|CODE TABLE|0|0|6|NA|0|0 -008024|differenceStatistics|long|DIFFERENCE STATISTICS|CODE TABLE|0|0|6|NA|0|0 +008023|firstOrderStatistics|table|FIRST ORDER STATISTICS|CODE TABLE|0|0|6|NA|0|0 +008024|differenceStatistics|table|DIFFERENCE STATISTICS|CODE TABLE|0|0|6|NA|0|0 010001|heightOfLandSurface|long|HEIGHT OF LAND SURFACE|m|0|-400|15|NA|0|0 010002|nonCoordinateHeight|long|HEIGHT|m|-1|-40|16|NA|0|0 010003|nonCoordinateGeopotential|long|GEOPOTENTIAL|m2 s-2|-1|-400|17|NA|0|0 010004|nonCoordinatePressure|long|PRESSURE|Pa|-1|0|14|NA|0|0 -010050|standardDeviationAltitude|long|STANDARD DEVIATION ALTITUDE|m|2|0|16|NA|0|0 +010050|standardDeviationAltitude|double|STANDARD DEVIATION ALTITUDE|m|2|0|16|NA|0|0 010051|pressureReducedToMeanSeaLevel|long|PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|NA|0|0 010052|altimeterSettingQnh|long|ALTIMETER SETTING (QNH)|Pa|-1|0|14|NA|0|0 010060|pressureChange|long|PRESSURE CHANGE|Pa|-1|-1024|11|NA|0|0 010061|3HourPressureChange|long|3 HOUR PRESSURE CHANGE|Pa|-1|-500|10|NA|0|0 010062|24HourPressureChange|long|24 HOUR PRESSURE CHANGE|Pa|-1|-1000|11|NA|0|0 -010063|characteristicOfPressureTendency|long|CHARACTERISTIC OF PRESSURE TENDENCY|CODE TABLE|0|0|4|NA|0|0 -010082|instantaneousAltitudeRate|long|INSTANTANEOUS ALTITUDE RATE|m/s|3|-65536|17|NA|0|0 +010063|characteristicOfPressureTendency|table|CHARACTERISTIC OF PRESSURE TENDENCY|CODE TABLE|0|0|4|NA|0|0 +010082|instantaneousAltitudeRate|double|INSTANTANEOUS ALTITUDE RATE|m/s|3|-65536|17|NA|0|0 011001|windDirection|long|WIND DIRECTION|deg|0|0|9|NA|0|0 -011002|windSpeed|long|WIND SPEED|m/s|1|0|12|NA|0|0 -011003|u|long|U-COMPONENT|m/s|1|-4096|13|NA|0|0 -011004|v|long|V-COMPONENT|m/s|1|-4096|13|NA|0|0 -011005|w|long|W-COMPONENT|Pa/s|1|-512|10|NA|0|0 -011006|w|long|W-COMPONENT|m/s|2|-4096|13|NA|0|0 +011002|windSpeed|double|WIND SPEED|m/s|1|0|12|NA|0|0 +011003|u|double|U-COMPONENT|m/s|1|-4096|13|NA|0|0 +011004|v|double|V-COMPONENT|m/s|1|-4096|13|NA|0|0 +011005|w|double|W-COMPONENT|Pa/s|1|-512|10|NA|0|0 +011006|w|double|W-COMPONENT|m/s|2|-4096|13|NA|0|0 011011|windDirectionAt10M|long|WIND DIRECTION AT 10 M|deg|0|0|9|NA|0|0 -011012|windSpeedAt10M|long|WIND SPEED AT 10 M|m/s|1|0|12|NA|0|0 +011012|windSpeedAt10M|double|WIND SPEED AT 10 M|m/s|1|0|12|NA|0|0 011013|windDirectionAt5M|long|WIND DIRECTION AT 5 M|deg|0|0|9|NA|0|0 -011014|windSpeedAt5M|long|WIND SPEED AT 5 M|m/s|1|0|12|NA|0|0 -011021|relativeVorticity|long|RELATIVE VORTICITY|/s|9|-65536|17|NA|0|0 -011022|divergence|long|DIVERGENCE|/s|9|-65536|17|NA|0|0 +011014|windSpeedAt5M|double|WIND SPEED AT 5 M|m/s|1|0|12|NA|0|0 +011021|relativeVorticity|double|RELATIVE VORTICITY|/s|9|-65536|17|NA|0|0 +011022|divergence|double|DIVERGENCE|/s|9|-65536|17|NA|0|0 011023|velocityPotential|long|VELOCITY POTENTIAL|m2/s|-2|-65536|17|NA|0|0 -011031|degreeOfTurbulence|long|DEGREE OF TURBULENCE|CODE TABLE|0|0|4|NA|0|0 +011031|degreeOfTurbulence|table|DEGREE OF TURBULENCE|CODE TABLE|0|0|4|NA|0|0 011032|heightOfBaseOfTurbulence|long|HEIGHT OF BASE OF TURBULENCE|m|-1|-40|16|NA|0|0 011033|heightOfTopOfTurbulence|long|HEIGHT OF TOP OF TURBULENCE|m|-1|-40|16|NA|0|0 -011034|verticalGustVelocity|long|VERTICAL GUST VELOCITY|m/s|1|-1024|11|NA|0|0 -011035|verticalGustAcceleration|long|VERTICAL GUST ACCELERATION|m s-2|2|-8192|14|NA|0|0 -011036|maximumDerivedEquivalentVerticalGustSpeed|long|MAXIMUM DERIVED EQUIVALENT VERTICAL GUST|m/s|1|0|10|NA|0|0 -011037|turbulenceIndex|long|TURBULENT INDEX|CODE TABLE|0|0|6|NA|0|0 -011038|timeOfOccurrenceOfPeakEddyDissipationRate|long|TIME OF OCCURANCE OF PEAK EDDY DISSIPATION RATE|CODE TABLE|0|0|5|NA|0|0 -011039|extendedTimeOfOccurrenceOfPeakEddyDissipationRate|long|EXTENDED TIME OF OCCURENCE OF PEAK EDDY DISSIPATION RATE|CODE TABLE|0|0|6|NA|0|0 -011040|maximumWindSpeedMeanWind|long|MAXIMUM WIND SPEED (MEAN WIND)|m/s|1|0|12|NA|0|0 -011041|maximumWindGustSpeed|long|MAXIMUM WIND SPEED (GUSTS)|m/s|1|0|12|NA|0|0 -011042|maximumWindSpeed10MinuteMeanWind|long|MAXIMUM WIND SPEED (10 MIN MEAN WIND)|m/s|1|0|12|NA|0|0 +011034|verticalGustVelocity|double|VERTICAL GUST VELOCITY|m/s|1|-1024|11|NA|0|0 +011035|verticalGustAcceleration|double|VERTICAL GUST ACCELERATION|m s-2|2|-8192|14|NA|0|0 +011036|maximumDerivedEquivalentVerticalGustSpeed|double|MAXIMUM DERIVED EQUIVALENT VERTICAL GUST|m/s|1|0|10|NA|0|0 +011037|turbulenceIndex|table|TURBULENT INDEX|CODE TABLE|0|0|6|NA|0|0 +011038|timeOfOccurrenceOfPeakEddyDissipationRate|table|TIME OF OCCURANCE OF PEAK EDDY DISSIPATION RATE|CODE TABLE|0|0|5|NA|0|0 +011039|extendedTimeOfOccurrenceOfPeakEddyDissipationRate|table|EXTENDED TIME OF OCCURENCE OF PEAK EDDY DISSIPATION RATE|CODE TABLE|0|0|6|NA|0|0 +011040|maximumWindSpeedMeanWind|double|MAXIMUM WIND SPEED (MEAN WIND)|m/s|1|0|12|NA|0|0 +011041|maximumWindGustSpeed|double|MAXIMUM WIND SPEED (GUSTS)|m/s|1|0|12|NA|0|0 +011042|maximumWindSpeed10MinuteMeanWind|double|MAXIMUM WIND SPEED (10 MIN MEAN WIND)|m/s|1|0|12|NA|0|0 011049|windDirectionStandardDeviation|long|STANDARD DEVIATION WIND DIRECTION|deg|0|0|9|NA|0|0 -011050|standardDeviationOfHorizontalWindSpeed|long|STANDARD DEVIATION WIND SPEED|m/s|1|0|12|NA|0|0 -011051|standardDeviationOfVerticalWindSpeed|long|STANDARD DEVIATION W COMPONENT|m/s|1|0|8|NA|0|0 -011061|absoluteWindShearIn1KmLayerBelow|long|ABSOLUTE WIND SHEAR IN 1 KM LAYER BELOW|m/s|1|0|12|NA|0|0 -011062|absoluteWindShearIn1KmLayerAbove|long|ABSOLUTE WIND SHEAR IN 1 KM LAYER ABOVE|m/s|1|0|12|NA|0|0 -012001|airTemperature|long|TEMPERATURE/DRY BULB TEMPERATURE|K|1|0|12|NA|0|0 -012002|wetBulbTemperature|long|WET BULB TEMPERATURE|K|1|0|12|NA|0|0 -012003|dewpointTemperature|long|DEW POINT TEMPERATURE|K|1|0|12|NA|0|0 -012004|airTemperatureAt2M|long|DRY BULB TEMPERATURE AT 2M|K|1|0|12|NA|0|0 -012005|wetBulbTemperatureAt2M|long|WET BULB TEMPERATURE AT 2M|K|1|0|12|NA|0|0 -012006|dewpointTemperatureAt2M|long|DEW POINT TEMPERATURE AT 2M|K|1|0|12|NA|0|0 -012007|virtualTemperature|long|VIRTUAL TEMPERATURE|K|1|0|12|NA|0|0 -012011|maximumTemperatureAtHeightAndOverPeriodSpecified|long|MAXIMUM TEMPERATURE,AT HEIGHT AND OVER PERIOD SPECIFIED|K|1|0|12|NA|0|0 -012012|minimumTemperatureAtHeightAndOverPeriodSpecified|long|MINIMUM TEMPERATURE,AT HEIGHT AND OVER PERIOD SPECIFIED|K|1|0|12|NA|0|0 -012013|groundMinimumTemperaturePast12Hours|long|GROUND MINIMUM TEMPERATURE PAST 12 HOURS|K|1|0|12|NA|0|0 -012014|maximumTemperatureAt2MPast12Hours|long|MAXIMUM TEMPERATURE AT 2M, PAST 12 HOURS|K|1|0|12|NA|0|0 -012015|minimumTemperatureAt2MPast12Hours|long|MINIMUM TEMPERATURE AT 2M, PAST 12 HOURS|K|1|0|12|NA|0|0 -012016|maximumTemperatureAt2MPast24Hours|long|MAXIMUM TEMPERATURE AT 2M, PAST 24 HOURS|K|1|0|12|NA|0|0 -012017|minimumTemperatureAt2MPast24Hours|long|MINIMUM TEMPERATURE AT 2M, PAST 24 HOURS|K|1|0|12|NA|0|0 -012030|soilTemperature|long|SOIL TEMPERATURE|K|1|0|12|NA|0|0 -012061|skinTemperature|long|SKIN TEMPERATURE|K|1|0|12|NA|0|0 -012062|equivalentBlackBodyTemperature|long|EQUIVALENT BLACK BODY TEMPERATURE|K|1|0|12|NA|0|0 -012063|brightnessTemperature|long|BRIGHTNESS TEMPERATURE|K|1|0|12|NA|0|0 -013001|specificHumidity|long|SPECIFIC HUMIDITY|kg/kg|5|0|14|NA|0|0 -013002|mixingRatio|long|MIXING RATIO|kg/kg|5|0|14|NA|0|0 +011050|standardDeviationOfHorizontalWindSpeed|double|STANDARD DEVIATION WIND SPEED|m/s|1|0|12|NA|0|0 +011051|standardDeviationOfVerticalWindSpeed|double|STANDARD DEVIATION W COMPONENT|m/s|1|0|8|NA|0|0 +011061|absoluteWindShearIn1KmLayerBelow|double|ABSOLUTE WIND SHEAR IN 1 KM LAYER BELOW|m/s|1|0|12|NA|0|0 +011062|absoluteWindShearIn1KmLayerAbove|double|ABSOLUTE WIND SHEAR IN 1 KM LAYER ABOVE|m/s|1|0|12|NA|0|0 +012001|airTemperature|double|TEMPERATURE/DRY BULB TEMPERATURE|K|1|0|12|NA|0|0 +012002|wetBulbTemperature|double|WET BULB TEMPERATURE|K|1|0|12|NA|0|0 +012003|dewpointTemperature|double|DEW POINT TEMPERATURE|K|1|0|12|NA|0|0 +012004|airTemperatureAt2M|double|DRY BULB TEMPERATURE AT 2M|K|1|0|12|NA|0|0 +012005|wetBulbTemperatureAt2M|double|WET BULB TEMPERATURE AT 2M|K|1|0|12|NA|0|0 +012006|dewpointTemperatureAt2M|double|DEW POINT TEMPERATURE AT 2M|K|1|0|12|NA|0|0 +012007|virtualTemperature|double|VIRTUAL TEMPERATURE|K|1|0|12|NA|0|0 +012011|maximumTemperatureAtHeightAndOverPeriodSpecified|double|MAXIMUM TEMPERATURE,AT HEIGHT AND OVER PERIOD SPECIFIED|K|1|0|12|NA|0|0 +012012|minimumTemperatureAtHeightAndOverPeriodSpecified|double|MINIMUM TEMPERATURE,AT HEIGHT AND OVER PERIOD SPECIFIED|K|1|0|12|NA|0|0 +012013|groundMinimumTemperaturePast12Hours|double|GROUND MINIMUM TEMPERATURE PAST 12 HOURS|K|1|0|12|NA|0|0 +012014|maximumTemperatureAt2MPast12Hours|double|MAXIMUM TEMPERATURE AT 2M, PAST 12 HOURS|K|1|0|12|NA|0|0 +012015|minimumTemperatureAt2MPast12Hours|double|MINIMUM TEMPERATURE AT 2M, PAST 12 HOURS|K|1|0|12|NA|0|0 +012016|maximumTemperatureAt2MPast24Hours|double|MAXIMUM TEMPERATURE AT 2M, PAST 24 HOURS|K|1|0|12|NA|0|0 +012017|minimumTemperatureAt2MPast24Hours|double|MINIMUM TEMPERATURE AT 2M, PAST 24 HOURS|K|1|0|12|NA|0|0 +012030|soilTemperature|double|SOIL TEMPERATURE|K|1|0|12|NA|0|0 +012061|skinTemperature|double|SKIN TEMPERATURE|K|1|0|12|NA|0|0 +012062|equivalentBlackBodyTemperature|double|EQUIVALENT BLACK BODY TEMPERATURE|K|1|0|12|NA|0|0 +012063|brightnessTemperature|double|BRIGHTNESS TEMPERATURE|K|1|0|12|NA|0|0 +013001|specificHumidity|double|SPECIFIC HUMIDITY|kg/kg|5|0|14|NA|0|0 +013002|mixingRatio|double|MIXING RATIO|kg/kg|5|0|14|NA|0|0 013003|relativeHumidity|long|RELATIVE HUMIDITY|%|0|0|7|NA|0|0 013004|vapourPressure|long|VAPOUR PRESSURE|Pa|-1|0|10|NA|0|0 -013005|vapourDensity|long|VAPOUR DENSITY|kg m-3|3|0|7|NA|0|0 +013005|vapourDensity|double|VAPOUR DENSITY|kg m-3|3|0|7|NA|0|0 013006|mixingHeights|long|MIXING HEIGHT|m|-1|-40|16|NA|0|0 -013009|relativeHumidity|long|RELATIVE HUMIDITY|%|1|-1000|12|NA|0|0 -013011|totalPrecipitationOrTotalWaterEquivalent|long|TOTAL PRECIPITATION/TOTAL WATER EQUIVALENT|kg m-2|1|-1|14|NA|0|0 -013012|depthOfFreshSnow|long|DEPTH OF FRESH SNOW|m|2|-2|12|NA|0|0 -013013|totalSnowDepth|long|TOTAL SNOW DEPTH|m|2|-2|16|NA|0|0 -013014|rainfallOrWaterEquivalentOfSnowAveragedRate|long|RAINFALL/WATER EQUIVALENT OF SNOW (AVERAGE RATE)|kg m-2 s-1|4|0|12|NA|0|0 -013015|snowfallAveragedRate|long|SNOWFALL (AVERAGE RATE)|m/s|7|0|12|NA|0|0 +013009|relativeHumidity|double|RELATIVE HUMIDITY|%|1|-1000|12|NA|0|0 +013011|totalPrecipitationOrTotalWaterEquivalent|double|TOTAL PRECIPITATION/TOTAL WATER EQUIVALENT|kg m-2|1|-1|14|NA|0|0 +013012|depthOfFreshSnow|double|DEPTH OF FRESH SNOW|m|2|-2|12|NA|0|0 +013013|totalSnowDepth|double|TOTAL SNOW DEPTH|m|2|-2|16|NA|0|0 +013014|rainfallOrWaterEquivalentOfSnowAveragedRate|double|RAINFALL/WATER EQUIVALENT OF SNOW (AVERAGE RATE)|kg m-2 s-1|4|0|12|NA|0|0 +013015|snowfallAveragedRate|double|SNOWFALL (AVERAGE RATE)|m/s|7|0|12|NA|0|0 013016|precipitableWater|long|PRECIPITABLE WATER|kg m-2|0|0|7|NA|0|0 -013019|totalPrecipitationPast1Hour|long|TOTAL PRECIPITATION PAST 1 HOUR|kg m-2|1|-1|14|NA|0|0 -013020|totalPrecipitationPast3Hours|long|TOTAL PRECIPITATION PAST 3 HOURS|kg m-2|1|-1|14|NA|0|0 -013021|totalPrecipitationPast6Hours|long|TOTAL PRECIPITATION PAST 6 HOURS|kg m-2|1|-1|14|NA|0|0 -013022|totalPrecipitationPast12Hours|long|TOTAL PRECIPITATION PAST 12 HOURS|kg m-2|1|-1|14|NA|0|0 -013023|totalPrecipitationPast24Hours|long|TOTAL PRECIPITATION PAST 24 HOURS|kg m-2|1|-1|14|NA|0|0 +013019|totalPrecipitationPast1Hour|double|TOTAL PRECIPITATION PAST 1 HOUR|kg m-2|1|-1|14|NA|0|0 +013020|totalPrecipitationPast3Hours|double|TOTAL PRECIPITATION PAST 3 HOURS|kg m-2|1|-1|14|NA|0|0 +013021|totalPrecipitationPast6Hours|double|TOTAL PRECIPITATION PAST 6 HOURS|kg m-2|1|-1|14|NA|0|0 +013022|totalPrecipitationPast12Hours|double|TOTAL PRECIPITATION PAST 12 HOURS|kg m-2|1|-1|14|NA|0|0 +013023|totalPrecipitationPast24Hours|double|TOTAL PRECIPITATION PAST 24 HOURS|kg m-2|1|-1|14|NA|0|0 013031|evapotranspiration|long|EVAPOTRANSPIRATION|kg m-2|0|0|7|NA|0|0 -013032|evaporation|long|EVAPORATION/EVAPOTRANSPIRATION|kg m-2|1|0|8|NA|0|0 -013041|pasquillGiffordStabilityCategory|long|PASQUILL-GILLFORD STABILITY CATEGORY|CODE TABLE|0|0|4|NA|0|0 +013032|evaporation|double|EVAPORATION/EVAPOTRANSPIRATION|kg m-2|1|0|8|NA|0|0 +013041|pasquillGiffordStabilityCategory|table|PASQUILL-GILLFORD STABILITY CATEGORY|CODE TABLE|0|0|4|NA|0|0 014001|longWaveRadiationIntegratedOver24Hours|long|LONG-WAVE RADIATION,INTEGRATED OVER 24 HOURS|J m-2|-3|-2048|12|NA|0|0 014002|longWaveRadiationIntegratedOverPeriodSpecified|long|LONG-WAVE RADIATION,INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-2048|12|NA|0|0 014003|shortWaveRadiationIntegratedOver24Hours|long|SHORT-WAVE RADIATION,INTEGRATED OVER 24 HOURS|J m-2|-3|-2048|12|NA|0|0 @@ -260,56 +260,56 @@ 014031|totalSunshine|long|TOTAL SUNSHINE|min|0|0|11|NA|0|0 014032|totalSunshine|long|TOTAL SUNSHINE|h|0|0|10|NA|0|0 015001|totalOzone|long|OZON|DU|0|0|10|NA|0|0 -019001|synopticFeatureType|long|TYPE OF SYNOPTIC FEATURE|CODE TABLE|0|0|6|NA|0|0 +019001|synopticFeatureType|table|TYPE OF SYNOPTIC FEATURE|CODE TABLE|0|0|6|NA|0|0 019002|effectiveRadiusOfFeature|long|EFFECTIVE RADIUS OF FEATURE|m|-2|0|12|NA|0|0 019003|windSpeedThreshold|long|WIND SPEED THRESHOLD|m/s|0|0|8|NA|0|0 019004|effectiveRadiusWithRespectToWindSpeedsAboveThreshold|long|EFFECTIVE RADIUS WITH RESPECT TO WIND SPEEDS ABOVE THRESHOLD|m|-2|0|12|NA|0|0 019005|featureDirectionOfMotion|long|DIRECTION OF MOTION OF FEATURE|deg|0|0|9|NA|0|0 -019006|speedOfMotionOfFeature|long|SPEED OF MOTION OF FEATURE|m/s|2|0|14|NA|0|0 +019006|speedOfMotionOfFeature|double|SPEED OF MOTION OF FEATURE|m/s|2|0|14|NA|0|0 019007|effectiveRadiusOfFeature|long|EFFECTIVE RADIUS OF FEATURE|m|-3|0|12|NA|0|0 -019008|verticalExtentOfCirculation|long|VERTICAL EXTENT OF CIRCULATION|CODE TABLE|0|0|3|NA|0|0 +019008|verticalExtentOfCirculation|table|VERTICAL EXTENT OF CIRCULATION|CODE TABLE|0|0|3|NA|0|0 019009|effectiveRadiusWithRespectToWindSpeedsAboveThresholdLargeStorms|long|EFFECTIVE RADIUS WITH RESPECT TOWIND SPEEDS ABOVE TRESHOLD|m|-3|0|12|NA|0|0 020001|horizontalVisibility|long|HORIZONTAL VISIBILITY|m|-1|0|13|NA|0|0 020002|verticalVisibility|long|VERTICAL VISIBILITY|m|-1|0|7|NA|0|0 -020003|presentWeather|long|PRESENT WEATHER|CODE TABLE|0|0|9|NA|0|0 -020004|pastWeather1|long|PAST WEATHER (1)|CODE TABLE|0|0|5|NA|0|0 -020005|pastWeather2|long|PAST WEATHER (2)|CODE TABLE|0|0|5|NA|0|0 +020003|presentWeather|table|PRESENT WEATHER|CODE TABLE|0|0|9|NA|0|0 +020004|pastWeather1|table|PAST WEATHER (1)|CODE TABLE|0|0|5|NA|0|0 +020005|pastWeather2|table|PAST WEATHER (2)|CODE TABLE|0|0|5|NA|0|0 020010|cloudCoverTotal|long|CLOUD COVER (TOTAL)|%|0|0|7|NA|0|0 -020011|cloudAmount|long|CLOUD AMOUNT|CODE TABLE|0|0|4|NA|0|0 -020012|cloudType|long|CLOUD TYPE|CODE TABLE|0|0|6|NA|0|0 +020011|cloudAmount|table|CLOUD AMOUNT|CODE TABLE|0|0|4|NA|0|0 +020012|cloudType|table|CLOUD TYPE|CODE TABLE|0|0|6|NA|0|0 020013|heightOfBaseOfCloud|long|HEIGHT OF BASE OF CLOUD|m|-1|-40|11|NA|0|0 020014|heightOfTopOfCloud|long|HEIGHT OF TOP OF CLOUD|m|-1|-40|11|NA|0|0 020016|pressureAtTopOfCloud|long|PRESSURE AT THE TOP OF CLOUD|Pa|-1|0|14|NA|0|0 -020017|cloudTopDescription|long|CLOUD TOP DESCRIPTION|CODE TABLE|0|0|4|NA|0|0 -020031|iceDepositThickness|long|ICE DEPOSIT (THICKNESS)|m|2|0|7|NA|0|0 -020032|rateOfIceAccretionEstimated|long|RATE OF ICE ACCRETION|CODE TABLE|0|0|3|NA|0|0 -020033|causeOfIceAccretion|long|CAUSE OF ICE ACCRETION|FLAG TABLE|0|0|4|NA|0|0 -020034|seaIceConcentration|long|SEA ICE CONCETRATION|CODE TABLE|0|0|5|NA|0|0 -020035|amountAndTypeOfIce|long|AMOUNT AND TYPE OF ICE|CODE TABLE|0|0|4|NA|0|0 -020036|iceSituation|long|ICE SITUATION|CODE TABLE|0|0|5|NA|0|0 -020037|iceDevelopment|long|ICE DEVELOPMENT|CODE TABLE|0|0|5|NA|0|0 +020017|cloudTopDescription|table|CLOUD TOP DESCRIPTION|CODE TABLE|0|0|4|NA|0|0 +020031|iceDepositThickness|double|ICE DEPOSIT (THICKNESS)|m|2|0|7|NA|0|0 +020032|rateOfIceAccretionEstimated|table|RATE OF ICE ACCRETION|CODE TABLE|0|0|3|NA|0|0 +020033|causeOfIceAccretion|flag|CAUSE OF ICE ACCRETION|FLAG TABLE|0|0|4|NA|0|0 +020034|seaIceConcentration|table|SEA ICE CONCETRATION|CODE TABLE|0|0|5|NA|0|0 +020035|amountAndTypeOfIce|table|AMOUNT AND TYPE OF ICE|CODE TABLE|0|0|4|NA|0|0 +020036|iceSituation|table|ICE SITUATION|CODE TABLE|0|0|5|NA|0|0 +020037|iceDevelopment|table|ICE DEVELOPMENT|CODE TABLE|0|0|5|NA|0|0 020038|iceEdgeBearing|long|BEARING OF THE ICE EDGE|deg|0|0|12|NA|0|0 020039|iceDistance|long|ICE DISTANCE|m|-1|0|13|NA|0|0 -020041|airframeIcing|long|AIRFRAME ICING|CODE TABLE|0|0|4|NA|0|0 +020041|airframeIcing|table|AIRFRAME ICING|CODE TABLE|0|0|4|NA|0|0 020051|amountOfLowClouds|long|AMOUNT OF LOW CLOUDS|%|0|0|7|NA|0|0 020052|amountOfMiddleClouds|long|AMOUNT OF MIDDLE CLOUDS|%|0|0|7|NA|0|0 020053|amountOfHighClouds|long|AMOUNT OF HIGH CLOUDS|%|0|0|7|NA|0|0 020061|runwayVisualRangeRvr|long|RUNWAY VISUAL RANGE (RVR)|m|0|0|12|NA|0|0 -020062|stateOfGround|long|STATE OF GROUND (WITH OR WITHOUT SNOW)|CODE TABLE|0|0|5|NA|0|0 -020063|specialPhenomena|long|SPECIAL PHENOMENA|CODE TABLE|0|0|10|NA|0|0 +020062|stateOfGround|table|STATE OF GROUND (WITH OR WITHOUT SNOW)|CODE TABLE|0|0|5|NA|0|0 +020063|specialPhenomena|table|SPECIAL PHENOMENA|CODE TABLE|0|0|10|NA|0|0 021001|horizontalReflectivity|long|HORIZONTAL REFLECTIVITY|dB|0|-64|7|NA|0|0 021002|verticalReflectivity|long|VERTICAL REFLECTIVITY|dB|0|-64|7|NA|0|0 -021003|differentialReflectivity|long|DIFFERENTIAL REFLECTIVITY|dB|1|-5|7|NA|0|0 +021003|differentialReflectivity|double|DIFFERENTIAL REFLECTIVITY|dB|1|-5|7|NA|0|0 021005|linearDepolarizationRatio|long|LINEAR DEPOLARISATION RATIO|dB|0|-65|6|NA|0|0 021006|circularDepolarizationRatio|long|CIRCULAR DEPOLARIZATION RATIO|dB|0|-65|6|NA|0|0 021011|dopplerMeanVelocityXDirection|long|DOPPLER MEAN VELOCITY IN X-DIRECTION|m/s|0|-128|8|NA|0|0 021012|dopplerMeanVelocityYDirection|long|DOPPLER MEAN VELOCITY IN Y-DIRECTION|m/s|0|-128|8|NA|0|0 021013|dopplerMeanVelocityZDirection|long|DOPPLER MEAN VELOCITY IN Z-DIRECTION(VZ)|m/s|0|-128|8|NA|0|0 -021014|dopplerMeanVelocityRadial|long|DOPPLER MEAN VELOCITY RADIAL|m/s|1|-4096|13|NA|0|0 -021017|dopplerVelocitySpectralWidth|long|DOPPLER VELOCITY SPECTRAL WIDTH|m/s|1|-4096|8|NA|0|0 +021014|dopplerMeanVelocityRadial|double|DOPPLER MEAN VELOCITY RADIAL|m/s|1|-4096|13|NA|0|0 +021017|dopplerVelocitySpectralWidth|double|DOPPLER VELOCITY SPECTRAL WIDTH|m/s|1|-4096|8|NA|0|0 021021|echoTops|long|ECHO TOPS|m|-3|0|4|NA|0|0 021031|verticallyIntegratedLiquidWaterContent|long|VERTICALLY INTEGRATED LIQUID-WATER CONTENT|kg m-2|0|0|7|NA|0|0 -021036|radarRainfallIntensity|long|RADAR RAINFALL INTENSITY|m/s|7|0|12|NA|0|0 +021036|radarRainfallIntensity|double|RADAR RAINFALL INTENSITY|m/s|7|0|12|NA|0|0 021041|brightBandHeight|long|BRIGHT-BAND HEIGHT|m|-2|0|8|NA|0|0 021051|signalPowerAbove1Mw|long|SIGNAL POWER ABOVE 1 mW|dB|0|-256|8|NA|0|0 022001|wavesDirection|long|DIRECTION OF WAVES|deg|0|0|9|NA|0|0 @@ -319,98 +319,98 @@ 022011|periodOfWaves|long|PERIOD OF WAVES|s|0|0|6|NA|0|0 022012|periodOfWindWaves|long|PERIOD OF WIND WAVES|s|0|0|6|NA|0|0 022013|periodOfSwellWaves|long|PERIOD OF SWELL WAVES|s|0|0|6|NA|0|0 -022021|heightOfWaves|long|HEIGHT OF WAVES|m|1|0|10|NA|0|0 -022022|heightOfWindWaves|long|HEIGHT OF WIND WAVES|m|1|0|10|NA|0|0 -022023|heightOfSwellWaves|long|HEIGHT OF SWELL WAVES|m|1|0|10|NA|0|0 -022025|standardDeviationWaveHeight|long|STANDARD DEVIATION WAVE HEIGHT|m|2|0|10|NA|0|0 -022031|speedOfCurrent|long|SPEED OF CURRENT|m/s|2|0|13|NA|0|0 -022042|oceanographicWaterTemperature|long|SEA TEMPERATURE|K|1|0|12|NA|0|0 -022043|oceanographicWaterTemperature|long|SEA TEMPERATURE|K|2|0|15|NA|0|0 -022044|soundVelocity|long|SOUND VELOCITY|m/s|1|0|14|NA|0|0 -022050|standardDeviationSeaSurfaceTemperature|long|STANDARD DEVIATION SEA SURFACE TEMPERATURE|K|2|0|8|NA|0|0 -022061|seaState|long|STATE OF SEA|CODE TABLE|0|0|4|NA|0|0 -022062|salinity|long|SALINITY|%|3|0|14|NA|0|0 +022021|heightOfWaves|double|HEIGHT OF WAVES|m|1|0|10|NA|0|0 +022022|heightOfWindWaves|double|HEIGHT OF WIND WAVES|m|1|0|10|NA|0|0 +022023|heightOfSwellWaves|double|HEIGHT OF SWELL WAVES|m|1|0|10|NA|0|0 +022025|standardDeviationWaveHeight|double|STANDARD DEVIATION WAVE HEIGHT|m|2|0|10|NA|0|0 +022031|speedOfCurrent|double|SPEED OF CURRENT|m/s|2|0|13|NA|0|0 +022042|oceanographicWaterTemperature|double|SEA TEMPERATURE|K|1|0|12|NA|0|0 +022043|oceanographicWaterTemperature|double|SEA TEMPERATURE|K|2|0|15|NA|0|0 +022044|soundVelocity|double|SOUND VELOCITY|m/s|1|0|14|NA|0|0 +022050|standardDeviationSeaSurfaceTemperature|double|STANDARD DEVIATION SEA SURFACE TEMPERATURE|K|2|0|8|NA|0|0 +022061|seaState|table|STATE OF SEA|CODE TABLE|0|0|4|NA|0|0 +022062|salinity|double|SALINITY|%|3|0|14|NA|0|0 022063|totalWaterDepth|long|TOTAL WATER DEPTH|m|0|0|14|NA|0|0 -022191|spectralDensity|long|SPECTRAL DENSITY|m2 rad-1 s|2|0|20|NA|0|0 -023001|accidentEarlyNotificationArticleApplicable|long|ACCIDENT EARLY NOTIFICATION-ARTICLE APPLICABLE|CODE TABLE|0|0|3|NA|0|0 -023002|facilityInvolvedInIncident|long|ACTIVITY OR FACILITY INVOLVED ININCIDENT|CODE TABLE|0|0|5|NA|0|0 -023003|releaseType|long|TYPE OF RELEASE|CODE TABLE|0|0|3|NA|0|0 -023004|countermeasuresTakenNearBorder|long|COUNTERMEASURES TAKEN NEAR BORDER|CODE TABLE|0|0|3|NA|0|0 -023005|causeOfIncident|long|COUSE OF INCIDENT|CODE TABLE|0|0|2|NA|0|0 -023006|incidentSituation|long|INCIDENT SITUATION|CODE TABLE|0|0|3|NA|0|0 -023007|characteristicsOfRelease|long|CHARACTERISTICS OF RELEASE|CODE TABLE|0|0|3|NA|0|0 -023008|stateOfCurrentRelease|long|STATE OF CURRENT RELEASE|CODE TABLE|0|0|2|NA|0|0 -023009|stateOfExpectedRelease|long|STATE OF EXPECTED RELEASE|CODE TABLE|0|0|2|NA|0|0 -023016|possibilityOfSignificantChemicalToxicHealthEffect|long|POSSIBILITY OF SIGNIFICANT CHEMICAL TOXIC HEALTH EFFECT|CODE TABLE|0|0|2|NA|0|0 -023017|flowDischargeOfMajorRecipient|long|FLOW DISCHARGE OF MAJOR RECEPIENT|m3/s|6|0|20|NA|0|0 -023018|releaseBehaviourOverTime|long|RELEASE BEHAVIOUR OVER TIME|CODE TABLE|0|0|3|NA|0|0 +022191|spectralDensity|double|SPECTRAL DENSITY|m2 rad-1 s|2|0|20|NA|0|0 +023001|accidentEarlyNotificationArticleApplicable|table|ACCIDENT EARLY NOTIFICATION-ARTICLE APPLICABLE|CODE TABLE|0|0|3|NA|0|0 +023002|facilityInvolvedInIncident|table|ACTIVITY OR FACILITY INVOLVED ININCIDENT|CODE TABLE|0|0|5|NA|0|0 +023003|releaseType|table|TYPE OF RELEASE|CODE TABLE|0|0|3|NA|0|0 +023004|countermeasuresTakenNearBorder|table|COUNTERMEASURES TAKEN NEAR BORDER|CODE TABLE|0|0|3|NA|0|0 +023005|causeOfIncident|table|COUSE OF INCIDENT|CODE TABLE|0|0|2|NA|0|0 +023006|incidentSituation|table|INCIDENT SITUATION|CODE TABLE|0|0|3|NA|0|0 +023007|characteristicsOfRelease|table|CHARACTERISTICS OF RELEASE|CODE TABLE|0|0|3|NA|0|0 +023008|stateOfCurrentRelease|table|STATE OF CURRENT RELEASE|CODE TABLE|0|0|2|NA|0|0 +023009|stateOfExpectedRelease|table|STATE OF EXPECTED RELEASE|CODE TABLE|0|0|2|NA|0|0 +023016|possibilityOfSignificantChemicalToxicHealthEffect|table|POSSIBILITY OF SIGNIFICANT CHEMICAL TOXIC HEALTH EFFECT|CODE TABLE|0|0|2|NA|0|0 +023017|flowDischargeOfMajorRecipient|double|FLOW DISCHARGE OF MAJOR RECEPIENT|m3/s|6|0|20|NA|0|0 +023018|releaseBehaviourOverTime|table|RELEASE BEHAVIOUR OVER TIME|CODE TABLE|0|0|3|NA|0|0 023019|actualReleaseHeight|long|ACTUAL RELEASE HEIGHT|m|0|-15000|17|NA|0|0 023021|effectiveReleaseHeight|long|EFFECTIVE RELEASE HEIGHT|m|0|-15000|17|NA|0|0 023022|distanceOfReleasePointOrSiteOfIncident|long|DISTANCE OF RELEASE POINT OR SITE OF INCIDENT|m|0|0|24|NA|0|0 -023023|mainTransportSpeedInAtmosphere|long|MAIN TRANSPORT SPEED IN THE ATMOSPHERE|m/s|1|0|12|NA|0|0 -023024|mainTransportSpeedInWater|long|MAIN TRANSPORT SPEED WATER|m/s|2|0|13|NA|0|0 -023025|mainTransportSpeedInGroundWater|long|MAIN TRANSPORT SPEED IN GROUND WATER|m/s|2|0|13|NA|0|0 +023023|mainTransportSpeedInAtmosphere|double|MAIN TRANSPORT SPEED IN THE ATMOSPHERE|m/s|1|0|12|NA|0|0 +023024|mainTransportSpeedInWater|double|MAIN TRANSPORT SPEED WATER|m/s|2|0|13|NA|0|0 +023025|mainTransportSpeedInGroundWater|double|MAIN TRANSPORT SPEED IN GROUND WATER|m/s|2|0|13|NA|0|0 023027|mainTransportDirectionInTheAtmosphere|long|MAIN TRANSPORT DIRECTION IN THE ATMOSPHERE|deg|0|0|9|NA|0|0 023028|mainTransportDirectionInWater|long|MAIN TRANSPORT DIRECTION IN WATER|deg|0|0|9|NA|0|0 023029|mainTransportDirectionInGroundWater|long|MAIN TRANSPORT DIRECTION IN GROUND WATER|deg|0|0|9|NA|0|0 -023031|possibilityPlume|long|POSSIBILITY THAT PLUME WILL ENCOUNTER PRECIPITATION IN STATE IN|CODE TABLE|0|0|2|NA|0|0 -023032|plumeWillEncounterChangeInWindDirectionAndOrOrSpeedFlag|long|PLUME WILL ENCOUNTER CHANGE IN WIND DIRECTION AND/OR SPEED FLAG|CODE TABLE|0|0|2|NA|0|0 +023031|possibilityPlume|table|POSSIBILITY THAT PLUME WILL ENCOUNTER PRECIPITATION IN STATE IN|CODE TABLE|0|0|2|NA|0|0 +023032|plumeWillEncounterChangeInWindDirectionAndOrOrSpeedFlag|table|PLUME WILL ENCOUNTER CHANGE IN WIND DIRECTION AND/OR SPEED FLAG|CODE TABLE|0|0|2|NA|0|0 024001|estimateOfAmountOfRadioactivityReleasedUpToSpecifiedTime|long|ESTIMATE OF AMOUNT OF RADIOACTIVITY RELEASED UP TO SPECIFIED TIM|Bq|-11|0|28|NA|0|0 024002|estimatedMaximumPotentialRelease|long|ESTIMATED MAXIMUM POTENTIAL RELEASE|Bq|-11|0|28|NA|0|0 -024003|compositionOfRelease|long|COMPOSITION OF RELEASE|CODE TABLE|0|0|5|NA|0|0 -024004|elementName|long|ELEMENT NAME|CCITT IA5|0|0|16|NA|0|0 +024003|compositionOfRelease|table|COMPOSITION OF RELEASE|CODE TABLE|0|0|5|NA|0|0 +024004|elementName|string|ELEMENT NAME|CCITT IA5|0|0|16|NA|0|0 024005|isotopeMass|long|ISOTOPE MASS|Numeric|0|0|9|NA|0|0 -024011|dose|long|DOSE|mSv|2|0|32|NA|0|0 -024012|trajectoryDoseDefinedLocationAndExpectedTimeOfArrival|long|TRAJECTORY DOSE (DEFINED LOCATION AND EXPECTED TIME)|mSv|2|0|32|NA|0|0 -024013|gammaDoseInAirAlongMainTransportPathDefinedLocationAndTimePeriod|long|GAMMA DOSE IN AIR ALONG THE MAINTRANSPORT PATH(DEFINED LOCATION|mSv|2|0|32|NA|0|0 -024021|airConcentrationOfNamedIsotopeTypeIncludingGrossBeta|long|AIR CONCENTRATION(OF NAMED ISOTOPE TYPE INCLUDING GROSS BETA|Bq m-3|2|0|32|NA|0|0 -024022|concentrationInPrecipitationOfNamedIsotopeType|long|CONCENTRATION IN PRECIPITATION ( OF NAMED ISOTOPE TYPE)|Bq/l|2|0|32|NA|0|0 +024011|dose|double|DOSE|mSv|2|0|32|NA|0|0 +024012|trajectoryDoseDefinedLocationAndExpectedTimeOfArrival|double|TRAJECTORY DOSE (DEFINED LOCATION AND EXPECTED TIME)|mSv|2|0|32|NA|0|0 +024013|gammaDoseInAirAlongMainTransportPathDefinedLocationAndTimePeriod|double|GAMMA DOSE IN AIR ALONG THE MAINTRANSPORT PATH(DEFINED LOCATION|mSv|2|0|32|NA|0|0 +024021|airConcentrationOfNamedIsotopeTypeIncludingGrossBeta|double|AIR CONCENTRATION(OF NAMED ISOTOPE TYPE INCLUDING GROSS BETA|Bq m-3|2|0|32|NA|0|0 +024022|concentrationInPrecipitationOfNamedIsotopeType|double|CONCENTRATION IN PRECIPITATION ( OF NAMED ISOTOPE TYPE)|Bq/l|2|0|32|NA|0|0 025001|rangeGateLength|long|RANGE-GATE LENGTH|m|-1|0|6|NA|0|0 025002|numberOfGatesAveraged|long|NUMBER OF GATES AVERAGED|Numeric|0|0|4|NA|0|0 025003|numberOfIntegratedPulses|long|NUMBER OF INTEGRATED PULSES|Numeric|0|0|8|NA|0|0 -025004|echoProcessing|long|ECHO PROCESSING|CODE TABLE|0|0|2|NA|0|0 -025005|echoIntegration|long|ECHO INTEGRATION|CODE TABLE|0|0|2|NA|0|0 -025006|zToRConversion|long|Z TO R CONVERSION|CODE TABLE|0|0|3|NA|0|0 +025004|echoProcessing|table|ECHO PROCESSING|CODE TABLE|0|0|2|NA|0|0 +025005|echoIntegration|table|ECHO INTEGRATION|CODE TABLE|0|0|2|NA|0|0 +025006|zToRConversion|table|Z TO R CONVERSION|CODE TABLE|0|0|3|NA|0|0 025007|zToRConversionFactor|long|Z TO R CONVERSION FACTOR|Numeric|0|0|12|NA|0|0 025008|zToRConversionExponent|long|Z TO R CONVERSION EXPONENT|Numeric|2|0|9|NA|0|0 -025009|calibrationMethod|long|CALIBRATION METHOD|FLAG TABLE|0|0|4|NA|0|0 -025010|clutterTreatment|long|CLUTTER TREATMENT|CODE TABLE|0|0|4|NA|0|0 -025011|groundOccultationCorrectionScreening|long|GROUND ACCULTATION CORRECTION(SCREENING)|CODE TABLE|0|0|2|NA|0|0 -025012|rangeAttenuationCorrection|long|RANGE ATTENUATION CORRECTION|CODE TABLE|0|0|2|NA|0|0 -025013|brightBandCorrection|long|BRIGHT-BAND CORRECTION|FLAG TABLE|0|0|2|NA|0|0 +025009|calibrationMethod|flag|CALIBRATION METHOD|FLAG TABLE|0|0|4|NA|0|0 +025010|clutterTreatment|table|CLUTTER TREATMENT|CODE TABLE|0|0|4|NA|0|0 +025011|groundOccultationCorrectionScreening|table|GROUND ACCULTATION CORRECTION(SCREENING)|CODE TABLE|0|0|2|NA|0|0 +025012|rangeAttenuationCorrection|table|RANGE ATTENUATION CORRECTION|CODE TABLE|0|0|2|NA|0|0 +025013|brightBandCorrection|flag|BRIGHT-BAND CORRECTION|FLAG TABLE|0|0|2|NA|0|0 025014|azimuthClutterCutOff|long|AZIMUTH CLUTTER CUT-OFF|Numeric|0|0|12|NA|0|0 -025015|radomeAttenuationCorrection|long|RADOM ATTENUATION CORRECTION|FLAG TABLE|0|0|2|NA|0|0 -025016|clearAirAttenuationCorrection|long|CLEAR-AIR ATTENUATION CORRECTION|dB/m|5|0|6|NA|0|0 -025017|precipitationAttenuationCorrection|long|PRECIPITATION ATTENUATION CORRECTION|FLAG TABLE|0|0|2|NA|0|0 +025015|radomeAttenuationCorrection|flag|RADOM ATTENUATION CORRECTION|FLAG TABLE|0|0|2|NA|0|0 +025016|clearAirAttenuationCorrection|double|CLEAR-AIR ATTENUATION CORRECTION|dB/m|5|0|6|NA|0|0 +025017|precipitationAttenuationCorrection|flag|PRECIPITATION ATTENUATION CORRECTION|FLAG TABLE|0|0|2|NA|0|0 025018|aToZLawForAttenuationFactor|long|A TO Z LAW FOR ATTENUATION FACTOR|Numeric|7|0|6|NA|0|0 025019|aToZLawForAttenuationExponent|long|A TO Z LAW FOR ATTENUATION EXPONENT|Numeric|2|0|7|NA|0|0 -025020|meanSpeedEstimation|long|MEAN SPEED ESTIMATION|CODE TABLE|0|0|2|NA|0|0 -025021|windComputationEnhancement|long|WIND COMPUTATION EHANCEMENT|FLAG TABLE|0|0|8|NA|0|0 +025020|meanSpeedEstimation|table|MEAN SPEED ESTIMATION|CODE TABLE|0|0|2|NA|0|0 +025021|windComputationEnhancement|flag|WIND COMPUTATION EHANCEMENT|FLAG TABLE|0|0|8|NA|0|0 025030|signalToNoiseRatio|long|SIGNAL TO NOISE RATIO|dB|0|-32|8|NA|0|0 -025032|windProfilerModeInformation|long|WIND PROFILER MODE INFORMATION|CODE TABLE|0|0|2|NA|0|0 -025033|windProfilerSubmodeInformation|long|NOAA WIND PROFILER SUBMODE INFORMATION|CODE TABLE|0|0|2|NA|0|0 -025034|windProfilerQualityControlTestResults|long|NOAA WIND PROFILER QUALITY CONTROL TEST RESULTS|FLAG TABLE|0|0|4|NA|0|0 -027001|nonCoordinateLatitude|long|LATITUDE(HIGH ACCURACY)|deg|5|-9000000|25|NA|0|0 -027002|nonCoordinateLatitude|long|LATITUDE(COARSE ACCURACY)|deg|2|-9000|15|NA|0|0 -027003|alternateLatitude|long|ALTERNATE LATITUDE|deg|2|-9000|15|NA|0|0 +025032|windProfilerModeInformation|table|WIND PROFILER MODE INFORMATION|CODE TABLE|0|0|2|NA|0|0 +025033|windProfilerSubmodeInformation|table|NOAA WIND PROFILER SUBMODE INFORMATION|CODE TABLE|0|0|2|NA|0|0 +025034|windProfilerQualityControlTestResults|flag|NOAA WIND PROFILER QUALITY CONTROL TEST RESULTS|FLAG TABLE|0|0|4|NA|0|0 +027001|nonCoordinateLatitude|double|LATITUDE(HIGH ACCURACY)|deg|5|-9000000|25|NA|0|0 +027002|nonCoordinateLatitude|double|LATITUDE(COARSE ACCURACY)|deg|2|-9000|15|NA|0|0 +027003|alternateLatitude|double|ALTERNATE LATITUDE|deg|2|-9000|15|NA|0|0 027020|satelliteLocationCounter|long|SATELLITE LOCATION COUNTER|Numeric|0|0|16|NA|0|0 -028001|nonCoordinateLongitude|long|LONGITUDE(HIGH ACCURACY)|deg|5|-18000000|26|NA|0|0 -028002|nonCoordinateLongitude|long|LONGITUDE(COARSE ACCURACY)|deg|2|-18000|16|NA|0|0 -028003|alternateLongitude|long|ALTERNATE LONGITUDE|deg|2|-18000|16|NA|0|0 -029001|projectionType|long|PROJECTION TYPE|CODE TABLE|0|0|3|NA|0|0 -029002|coordinateGridType|long|CO-ORDINATE GRID TYPE|CODE TABLE|0|0|2|NA|0|0 +028001|nonCoordinateLongitude|double|LONGITUDE(HIGH ACCURACY)|deg|5|-18000000|26|NA|0|0 +028002|nonCoordinateLongitude|double|LONGITUDE(COARSE ACCURACY)|deg|2|-18000|16|NA|0|0 +028003|alternateLongitude|double|ALTERNATE LONGITUDE|deg|2|-18000|16|NA|0|0 +029001|projectionType|table|PROJECTION TYPE|CODE TABLE|0|0|3|NA|0|0 +029002|coordinateGridType|table|CO-ORDINATE GRID TYPE|CODE TABLE|0|0|2|NA|0|0 030001|pixelValue4Bits|long|PIXEL VALUE(4 BITS)|Numeric|0|0|4|NA|0|0 030021|numberOfPixelsPerRow|long|NUMBER OF PIXELS PER ROW|Numeric|0|0|12|NA|0|0 030022|numberOfPixelsPerColumn|long|NUMBER OF PIXELS PER COLUMN|Numeric|0|0|12|NA|0|0 -030031|pictureType|long|PICTURE TYPE|CODE TABLE|0|0|4|NA|0|0 -030032|combinationWithOtherData|long|COMBINATION WITH OTHER DATA|FLAG TABLE|0|0|16|NA|0|0 +030031|pictureType|table|PICTURE TYPE|CODE TABLE|0|0|4|NA|0|0 +030032|combinationWithOtherData|flag|COMBINATION WITH OTHER DATA|FLAG TABLE|0|0|16|NA|0|0 031001|delayedDescriptorReplicationFactor|long|DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|8|NA|0|0 031002|extendedDelayedDescriptorReplicationFactor|long|EXTENDED DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|16|NA|0|0 031011|delayedDescriptorAndDataRepetitionFactor|long|DELAYED DESCRIPTOR AND DATA REPETITION FACTOR|Numeric|0|0|8|NA|0|0 031012|extendedDelayedDescriptorAndDataRepetitionFactor|long|EXTENDED DELAYED DESCRIPTOR AND DATA REPETITION FACTOR|Numeric|0|0|16|NA|0|0 -031021|associatedFieldSignificance|long|ASSOCIATED FIELD SIGNIFICANCE|CODE TABLE|0|0|6|NA|0|0 -031031|dataPresentIndicator|long|DATA PRESENT INDICATOR|FLAG TABLE|0|0|1|NA|0|0 -033002|qualityInformation|long|QUALITY INFORMATION TABLE|CODE TABLE|0|0|2|NA|0|0 -033003|qualityInformation|long|QUALITY INFORMATION TABLE|CODE TABLE|0|0|3|NA|0|0 +031021|associatedFieldSignificance|table|ASSOCIATED FIELD SIGNIFICANCE|CODE TABLE|0|0|6|NA|0|0 +031031|dataPresentIndicator|flag|DATA PRESENT INDICATOR|FLAG TABLE|0|0|1|NA|0|0 +033002|qualityInformation|table|QUALITY INFORMATION TABLE|CODE TABLE|0|0|2|NA|0|0 +033003|qualityInformation|table|QUALITY INFORMATION TABLE|CODE TABLE|0|0|3|NA|0|0 033007|percentConfidence|long|% CONFIDENCE|%|0|0|7|NA|0|0 -033191|ecmwfWamQcIndicator|long|ECMWF WAM QC INDICATOR|CODE TABLE|0|0|2|NA|0|0 +033191|ecmwfWamQcIndicator|table|ECMWF WAM QC INDICATOR|CODE TABLE|0|0|2|NA|0|0 From be9d0f5179684d07bc1fd28b2d021d7692eb617d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 11 Jun 2019 17:13:49 +0100 Subject: [PATCH 292/414] Don't hide output from test --- examples/python/grib_nearest.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/examples/python/grib_nearest.sh b/examples/python/grib_nearest.sh index 51a60348f..a7c93e368 100755 --- a/examples/python/grib_nearest.sh +++ b/examples/python/grib_nearest.sh @@ -2,5 +2,4 @@ . ./include.sh -REDIRECT=/dev/null -$PYTHON $examples_src/grib_nearest.py 2> $REDIRECT > $REDIRECT +$PYTHON $examples_src/grib_nearest.py From fc103215f83b9d8811fca901a41ca1df0e8ac53a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 11 Jun 2019 17:15:06 +0100 Subject: [PATCH 293/414] Python3 support with CFFI --- CMakeLists.txt | 8 ++++++-- INSTALL | 3 +++ README.md | 5 +++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f27432618..5d0a4cc5a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -381,9 +381,9 @@ add_subdirectory( memfs ) add_subdirectory( src ) add_subdirectory( tools ) add_subdirectory( fortran ) + if (PYTHON_VERSION_MAJOR GREATER 2) - ecbuild_warn("Please note: Support for Python3 is currently experimental.") - add_subdirectory( python3 ) + #add_subdirectory( python3 ) set( ECCODES_PYTHON_DIR "python3" ) else() add_subdirectory( python ) @@ -468,3 +468,7 @@ ecbuild_info(" +--------------------------+") ecbuild_info(" | ecCodes version ${ECCODES_VERSION} |") ecbuild_info(" +--------------------------+") ecbuild_info("") + +if (HAVE_PYTHON AND PYTHON_VERSION_MAJOR GREATER 2) + ecbuild_info("Please note: For Python3 bindings:\n\tFirst install ecCodes and then install from PyPI with::\n\tpip install eccodes-python\n") +endif() diff --git a/INSTALL b/INSTALL index e4bcecd46..acf3b45f2 100644 --- a/INSTALL +++ b/INSTALL @@ -33,6 +33,9 @@ However it requires that cmake be installed on your system. > ctest > make install +To add the Python3 bindings, use pip install from PyPI as follows: + > pip install --install-option="--prefix=/path/to/where/you/install/eccodes" eccodes-python + You can also pass options to the cmake command above. Some typical examples are: -DENABLE_EXTRA_TESTS=ON Enable extended regression testing diff --git a/README.md b/README.md index f9c38508a..2f75ac977 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,11 @@ INSTALLATION make install ``` +To add the Python3 bindings, use pip install from PyPI as follows: + ``` + pip install --install-option="--prefix=/path/to/where/you/install/eccodes" eccodes-python + ``` + For more details, please see: https://software.ecmwf.int/wiki/display/ECC/ecCodes+installation From 2133aa19dde98ba06d04c43512b02900fa4b5d5e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 11 Jun 2019 18:19:20 +0100 Subject: [PATCH 294/414] ECC-815: Separate the Python bindings to a different package --- CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5d0a4cc5a..b6dce6183 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -109,6 +109,11 @@ ecbuild_add_option( FEATURE PYTHON DEFAULT ON REQUIRED_PACKAGES "Python VERSION 2.6 NO_LIBS" NumPy ) +# For Python2 we build our own bindings (using SWIG) in the build directory +# but for Python3 one has to add the eccodes-python from pip AFTER the install +if( PYTHON_VERSION_MAJOR EQUAL 3 ) + set( HAVE_PYTHON 0 ) +endif() ecbuild_add_option( FEATURE FORTRAN DESCRIPTION "Build the ecCodes Fortran interface" From dc407073591546f1e0afb2ba36f8bf8a079b0f37 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 12 Jun 2019 15:47:22 +0100 Subject: [PATCH 295/414] Python tests: metar output --- examples/python/metar_get_keys.py | 3 ++- examples/python/metar_get_keys.sh | 18 ++++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/examples/python/metar_get_keys.py b/examples/python/metar_get_keys.py index bd24b4d7e..66646e2f9 100644 --- a/examples/python/metar_get_keys.py +++ b/examples/python/metar_get_keys.py @@ -28,7 +28,8 @@ def print_keys(msg_id): 'elevation', 'temperature', 'dewPointTemperature', 'qnh'] for key in keys: try: - print(' %s: %s' % (key, codes_get(msg_id, key))) + if codes_is_defined(msg_id, key): + print(' %s: %s' % (key, codes_get(msg_id, key))) except CodesInternalError as err: print('Error with key="%s" : %s' % (key, err.msg)) diff --git a/examples/python/metar_get_keys.sh b/examples/python/metar_get_keys.sh index 3aa76c19d..23a7e1ebe 100755 --- a/examples/python/metar_get_keys.sh +++ b/examples/python/metar_get_keys.sh @@ -16,14 +16,20 @@ label="metar_get_keys_test_p" #Define tmp file fTmp=${label}.tmp.txt -rm -f $fTmp | true +rm -f $fTmp REDIRECT=/dev/null -#Write the key values into a file -$PYTHON $examples_src/metar_get_keys.py 2> $REDIRECT > $fTmp +# Write the key values into a file +$PYTHON $examples_src/metar_get_keys.py 2> $REDIRECT > $fTmp -#TODO: check the results +# Check the results +grep -q "message: 157" $fTmp +count=`grep -c latitude $fTmp` +[ $count -eq 126 ] +count=`grep -c dewPointTemperature $fTmp` +[ $count -eq 133 ] -#Clean up -rm -f $fTmp | true + +# Clean up +rm -f $fTmp From fb6e279f31e82c6eb9b7df21083c98eb7b22f3d0 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 12 Jun 2019 18:38:12 +0100 Subject: [PATCH 296/414] Python3 messages for installation --- CMakeLists.txt | 11 +++++++++-- INSTALL | 2 ++ README.md | 4 ++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b6dce6183..61bca2b86 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -474,6 +474,13 @@ ecbuild_info(" | ecCodes version ${ECCODES_VERSION} |") ecbuild_info(" +--------------------------+") ecbuild_info("") -if (HAVE_PYTHON AND PYTHON_VERSION_MAJOR GREATER 2) - ecbuild_info("Please note: For Python3 bindings:\n\tFirst install ecCodes and then install from PyPI with::\n\tpip install eccodes-python\n") +if (PYTHON_FOUND AND PYTHON_VERSION_MAJOR EQUAL 3) + ecbuild_info(" +--------------------------------------+") + ecbuild_info(" | Please note: |") + ecbuild_info(" | For Python3 support, first install |") + ecbuild_info(" | ecCodes and then install the Python |") + ecbuild_info(" | bindings from PyPI with: |") + ecbuild_info(" | $ pip install eccodes-python |") + ecbuild_info(" +--------------------------------------+") + ecbuild_info("") endif() diff --git a/INSTALL b/INSTALL index acf3b45f2..6162c7992 100644 --- a/INSTALL +++ b/INSTALL @@ -34,6 +34,8 @@ However it requires that cmake be installed on your system. > make install To add the Python3 bindings, use pip install from PyPI as follows: + > pip install eccodes-python + or > pip install --install-option="--prefix=/path/to/where/you/install/eccodes" eccodes-python You can also pass options to the cmake command above. Some typical examples are: diff --git a/README.md b/README.md index 2f75ac977..848589730 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,10 @@ INSTALLATION ``` To add the Python3 bindings, use pip install from PyPI as follows: + ``` + pip install eccodes-python + ``` + or ``` pip install --install-option="--prefix=/path/to/where/you/install/eccodes" eccodes-python ``` From ae74e6541373a3cb9e54fe359a9dad224b4a9b39 Mon Sep 17 00:00:00 2001 From: Richard Mladek Date: Thu, 13 Jun 2019 15:52:58 +0100 Subject: [PATCH 297/414] First test change --- tigge/tigge_check.h | 1 + 1 file changed, 1 insertion(+) diff --git a/tigge/tigge_check.h b/tigge/tigge_check.h index 5b5f61c9c..375403077 100644 --- a/tigge/tigge_check.h +++ b/tigge/tigge_check.h @@ -9,6 +9,7 @@ */ /*todo limits for all radiative fluxes*/ +/*test ONLY!*/ parameter parameters[] = { { From 46a260d56b90aee63cc206f3105932adfd978776 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 14 Jun 2019 14:31:07 +0100 Subject: [PATCH 298/414] Bump up version --- .appveyor.yml | 2 +- VERSION.cmake | 2 +- version.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index c521562e2..082eea05d 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -2,7 +2,7 @@ # general configuration # #---------------------------------# -version: 2.13.0-{build}-{branch} +version: 2.14.0-{build}-{branch} branches: only: diff --git a/VERSION.cmake b/VERSION.cmake index 5b14eeea9..7a613a4b5 100644 --- a/VERSION.cmake +++ b/VERSION.cmake @@ -1 +1 @@ -set( ${PROJECT_NAME}_VERSION_STR "2.13.0" ) +set( ${PROJECT_NAME}_VERSION_STR "2.14.0" ) diff --git a/version.sh b/version.sh index 3df9c0fb8..bc2104d7d 100644 --- a/version.sh +++ b/version.sh @@ -14,7 +14,7 @@ PACKAGE_NAME='eccodes' # Package version ECCODES_MAJOR_VERSION=2 -ECCODES_MINOR_VERSION=13 +ECCODES_MINOR_VERSION=14 ECCODES_REVISION_VERSION=0 ECCODES_CURRENT=1 From 367c7c826d0975780974384a644a29405a205ecc Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 14 Jun 2019 14:31:37 +0100 Subject: [PATCH 299/414] ECC-136: grib_compare ignores difference in indicatorOfTypeOfLevel --- tools/grib_compare.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tools/grib_compare.c b/tools/grib_compare.c index 20cbdac1f..f22a379a4 100644 --- a/tools/grib_compare.c +++ b/tools/grib_compare.c @@ -738,6 +738,25 @@ static int compare_values(grib_runtime_options* options,grib_handle* h1,grib_han err1 = GRIB_VALUE_MISMATCH; save_error(c,name); } + else + { + /* ECC-136: string reps are the same, but integer values may not be */ + /* Note: Do not do this during edition-independent compare! */ + if (!listFromCommandLine) { + long v1, v2; + if (grib_get_long(h1,name,&v1) == GRIB_SUCCESS && + grib_get_long(h2,name,&v2) == GRIB_SUCCESS) + { + if (v1 != v2) + { + printInfo(h1); + save_error(c,name); + err1 = GRIB_VALUE_MISMATCH; + printf("long [%s]: [%ld] != [%ld]\n", name,v1,v2); + } + } + } + } } grib_context_free(h1->context,sval1); From efc14d5b15fe347b29280828a967d6d3c2b087f1 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 14 Jun 2019 14:50:17 +0100 Subject: [PATCH 300/414] ECC-136: Added test --- tests/CMakeLists.txt | 1 + tests/grib_ecc-136.sh | 51 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100755 tests/grib_ecc-136.sh diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 12bb102ac..6accedb9a 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -53,6 +53,7 @@ list( APPEND tests_no_data_reqd md5 grib_uerra grib_2nd_order_numValues + grib_ecc-136 julian bufr_dump_samples bufr_json_samples diff --git a/tests/grib_ecc-136.sh b/tests/grib_ecc-136.sh new file mode 100755 index 000000000..57f648594 --- /dev/null +++ b/tests/grib_ecc-136.sh @@ -0,0 +1,51 @@ +#!/bin/sh +# Copyright 2005-2019 ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.sh +set -u +# --------------------------------------------------------- +# This is the test for the JIRA issue ECC-136. +# grib_compare ignores difference in indicatorOfTypeOfLevel +# --------------------------------------------------------- +label="grib_ecc-136-test" +temp1=temp1.${label} +temp2=temp2.${label} +sample1=$ECCODES_SAMPLES_PATH/GRIB1.tmpl +sample2=$ECCODES_SAMPLES_PATH/GRIB2.tmpl + + +# GRIB1: Both 2 and 3 have string rep of "sfc" +# ----------------------------------------------- +${tools_dir}/grib_set -s indicatorOfTypeOfLevel=2 $sample1 $temp1 +${tools_dir}/grib_set -s indicatorOfTypeOfLevel=3 $sample1 $temp2 + +# This should fail +set +e +${tools_dir}/grib_compare $temp1 $temp2 +status=$? +set -e +[ $status -eq 1 ] + + +# GRIB2: Both 1 and 103 have string rep of "sfc" +# ----------------------------------------------- +${tools_dir}/grib_set -s typeOfFirstFixedSurface=1 $sample2 $temp1 +${tools_dir}/grib_set -s typeOfFirstFixedSurface=103 $sample2 $temp2 + +# This should fail +set +e +${tools_dir}/grib_compare $temp1 $temp2 +status=$? +set -e +[ $status -eq 1 ] + + +# Clean up +rm -f $temp1 $temp2 From 4fd1dc6eaad0088aad9e363eb93702920f3c21da Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 17 Jun 2019 11:04:53 +0100 Subject: [PATCH 301/414] Python3 messages for installation --- CMakeLists.txt | 11 +++++++++-- INSTALL | 2 ++ README.md | 4 ++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b6dce6183..61bca2b86 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -474,6 +474,13 @@ ecbuild_info(" | ecCodes version ${ECCODES_VERSION} |") ecbuild_info(" +--------------------------+") ecbuild_info("") -if (HAVE_PYTHON AND PYTHON_VERSION_MAJOR GREATER 2) - ecbuild_info("Please note: For Python3 bindings:\n\tFirst install ecCodes and then install from PyPI with::\n\tpip install eccodes-python\n") +if (PYTHON_FOUND AND PYTHON_VERSION_MAJOR EQUAL 3) + ecbuild_info(" +--------------------------------------+") + ecbuild_info(" | Please note: |") + ecbuild_info(" | For Python3 support, first install |") + ecbuild_info(" | ecCodes and then install the Python |") + ecbuild_info(" | bindings from PyPI with: |") + ecbuild_info(" | $ pip install eccodes-python |") + ecbuild_info(" +--------------------------------------+") + ecbuild_info("") endif() diff --git a/INSTALL b/INSTALL index acf3b45f2..6162c7992 100644 --- a/INSTALL +++ b/INSTALL @@ -34,6 +34,8 @@ However it requires that cmake be installed on your system. > make install To add the Python3 bindings, use pip install from PyPI as follows: + > pip install eccodes-python + or > pip install --install-option="--prefix=/path/to/where/you/install/eccodes" eccodes-python You can also pass options to the cmake command above. Some typical examples are: diff --git a/README.md b/README.md index 2f75ac977..848589730 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,10 @@ INSTALLATION ``` To add the Python3 bindings, use pip install from PyPI as follows: + ``` + pip install eccodes-python + ``` + or ``` pip install --install-option="--prefix=/path/to/where/you/install/eccodes" eccodes-python ``` From 8dcb3511335d85a657590bd14019dddc21c65c6a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 17 Jun 2019 17:07:53 +0100 Subject: [PATCH 302/414] ECC-240: fix strict mode --- tools/bufr_dump.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/bufr_dump.c b/tools/bufr_dump.c index becac8bcf..9e9af431f 100644 --- a/tools/bufr_dump.c +++ b/tools/bufr_dump.c @@ -102,6 +102,7 @@ int grib_tool_init(grib_runtime_options* options) int opt=grib_options_on("C")+grib_options_on("O"); options->dump_mode = "default"; + options->strict=1; /* Must set here as bufr_dump has its own -S option */ if (opt > 1) { printf("%s: simultaneous j/C/O options not allowed\n",grib_tool_name); From e0a345162c7238ded77741b418c630a908eb0db6 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 17 Jun 2019 17:08:36 +0100 Subject: [PATCH 303/414] ECC-240: add test for bufr_dump -w (strict mode) --- tests/bufr_dump_subset.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/bufr_dump_subset.sh b/tests/bufr_dump_subset.sh index 60b59c206..bf89215bb 100755 --- a/tests/bufr_dump_subset.sh +++ b/tests/bufr_dump_subset.sh @@ -64,5 +64,10 @@ do ${tools_dir}/bufr_dump -S1 ${data_dir}/bufr/$file >/dev/null done +# Check strict option with 'where' clause +input=${data_dir}/bufr/tropical_cyclone.bufr +ce=`${tools_dir}/bufr_dump -p -w count=3 $input | grep -c 'edition='` +[ $ce -eq 1 ] +# Clean up rm -f $temp1 $temp2 From d52ca2a52b3cfa12605143ec17e9c9009cfdb5a0 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 17 Jun 2019 17:09:10 +0100 Subject: [PATCH 304/414] ECC-543: Feature request: -w for grib_histogram --- tools/grib_histogram.c | 282 ++++++++++++++++++++++++----------------- 1 file changed, 164 insertions(+), 118 deletions(-) diff --git a/tools/grib_histogram.c b/tools/grib_histogram.c index cb0c6295f..2bf00beb5 100644 --- a/tools/grib_histogram.c +++ b/tools/grib_histogram.c @@ -8,136 +8,182 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "grib_api.h" +#include "grib_tools.h" -static void usage(const char *prog) +grib_option grib_options[] = { +/* {id, args, help}, on, command_line, value*/ + {"V",0,0,0,1,0}, + {"p:", 0, 0, 0, 1, 0}, /* print keys */ + {"S",0,0,1,0,0}, /* needed for skip */ + {"w:",0,0,0,1,0} /* 'where' clause */ +}; +int grib_options_count = sizeof(grib_options)/sizeof(grib_option); + +const char *grib_tool_description = "Histogram of GRIB files"; +const char *grib_tool_name = "grib_histogram"; +const char *grib_tool_usage = "[options] grib_file grib_file ..."; + +int main (int argc, char *argv[]) { - fprintf(stderr,"%s: in1 [in2 ... ] out\n",prog); - exit(1); + return grib_tool (argc, argv); } -int main(int argc, char *argv[]) +int grib_tool_before_getopt (grib_runtime_options * options) { - int i,j; - FILE *in; - int e; - grib_handle *h; - double* values = NULL; - size_t size; + return 0; +} + +int grib_tool_init (grib_runtime_options * options) +{ + return 0; +} + +int grib_tool_new_filename_action (grib_runtime_options * options, const char *file) +{ + return 0; +} + +int grib_tool_new_file_action (grib_runtime_options * options, grib_tools_file * file) +{ + exit_if_input_is_directory (grib_tool_name, file->name); + return 0; +} + +/* + A new handle is available from the current input file and can be processed here. + The handle available in this function is in the set of messages satisfying the constraint + of the -w option. They are not to be skipped. +*/ +int grib_tool_new_handle_action (grib_runtime_options * options, grib_handle * h) +{ + int i, j, err = 0; size_t last_size = 0; - double min,max; + long missingValuesPresent; + double delta; + + double *values = NULL; + size_t size; + double min, max; long count = 10; long intervals[10]; const char *names[1024]; int name_count = 0; - if(argc < 2) usage(argv[0]); - - for(i = 1; i < argc; i++) - { - if(argv[i][0] == '-') { - names[name_count++] = argv[i]+1; - continue; - } - - in = fopen(argv[i],"r"); - if(!in) { - perror(argv[i]); - exit(1); - } - - while( (h = grib_handle_new_from_file(NULL,in,&e)) != NULL ) - { - long missingValuesPresent; - double delta; - GRIB_CHECK(grib_get_long(h,"missingValuesPresent",&missingValuesPresent),argv[i]); - - GRIB_CHECK(grib_get_size(h,"values",&size),argv[i]); - - if(size > last_size) - { - if(values) free(values); - values = (double*)malloc(size*sizeof(double)); - last_size = size; - if (!values) { - fprintf(stderr, "Failed to allocate memory for values (%lu bytes)\n", size*sizeof(double)); - exit(1); - } - } - - GRIB_CHECK(grib_get_double_array(h,"values",values,&size),argv[i]); - - for(j = 0; j < count; j++) - intervals[j] = 0; - - if(missingValuesPresent) - { - double missing; - GRIB_CHECK(grib_get_double(h,"missingValue",&missing),argv[i]); - - min = max = missing; - - for(j = 0; j < size ; j++) - { - if((min == missing) || ((values[j] != missing) && (min>values[j]))) min = values[j]; - if((max == missing) || ((values[j] != missing) && (maxvalues[j]) min = values[j]; - if(maxrequested_print_keys_count; i++) { + names[name_count++] = options->requested_print_keys[i].name; } + if (!options->skip) { + if (options->set_values_count != 0) + err = grib_set_values (h, options->set_values, options->set_values_count); + + if (err != GRIB_SUCCESS && options->fail) + exit (err); + } + + GRIB_CHECK (grib_get_long (h, "missingValuesPresent", &missingValuesPresent), 0); + + GRIB_CHECK (grib_get_size (h, "values", &size), 0); + + if (size > last_size) { + if (values) + free (values); + values = (double *) malloc (size * sizeof (double)); + last_size = size; + if (!values) { + fprintf (stderr, "Failed to allocate memory for values (%lu bytes)\n", size * sizeof (double)); + exit (1); + } + } + + GRIB_CHECK (grib_get_double_array (h, "values", values, &size), 0); + + for (j = 0; j < count; j++) + intervals[j] = 0; + + if (missingValuesPresent) { + double missing; + GRIB_CHECK (grib_get_double (h, "missingValue", &missing), 0); + + min = max = missing; + + for (j = 0; j < size; j++) { + if ((min == missing) || ((values[j] != missing) && (min > values[j]))) + min = values[j]; + if ((max == missing) || ((values[j] != missing) && (max < values[j]))) + max = values[j]; + } + + delta = max - min; + if (delta == 0) + delta = 1; + + for (j = 0; j < size; j++) { + if (values[j] != missing) { + int x = (values[j] - min) / delta * count; + if (x == count) + x = x - 1; /*handle the absolute maximum */ + intervals[x]++; + } + } + } else { + min = max = values[0]; + for (j = 1; j < size; j++) { + if (min > values[j]) + min = values[j]; + if (max < values[j]) + max = values[j]; + } + + delta = max - min; + if (delta == 0) + delta = 1; + + for (j = 0; j < size; j++) { + int x = (values[j] - min) / delta * count; + if (x == count) + x = x - 1; /*handle the absolute maximum */ + intervals[x]++; + } + } + + for (j = 0; j < name_count; j++) { + char v[1024]; + size_t s = sizeof (v); + GRIB_CHECK (grib_get_string (h, names[j], v, &s), names[j]); + printf (" %s", v); + } + + printf ("\nmin=%g max=%g size=%ld\n", min, max, (long) size); + for (j = 0; j < count; j++) + printf (" %g:%g", j * (max - min) / count + min, (j + 1) * (max - min) / count + min); + printf ("\n"); + + for (j = 0; j < count; j++) + printf (" %ld", intervals[j]); + printf ("\n"); + + return 0; +} + +int grib_tool_skip_handle (grib_runtime_options * options, grib_handle * h) +{ + grib_handle_delete (h); + return 0; +} + +void grib_tool_print_key_values (grib_runtime_options * options, grib_handle * h) +{ + grib_print_key_values (options, h); +} + +int grib_tool_finalise_action (grib_runtime_options * options) +{ + return 0; +} + +int grib_no_handle_action (grib_runtime_options * options, int err) +{ + fprintf (dump_file, "\t\t\"ERROR: unreadable message\"\n"); return 0; } From 73707afcb4bae3529a437295f08be01ea4bf7db0 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 17 Jun 2019 17:13:56 +0100 Subject: [PATCH 305/414] ECC-240: fix strict mode and add test --- tests/bufr_dump_subset.sh | 5 +++++ tools/bufr_dump.c | 1 + 2 files changed, 6 insertions(+) diff --git a/tests/bufr_dump_subset.sh b/tests/bufr_dump_subset.sh index 60b59c206..bf89215bb 100755 --- a/tests/bufr_dump_subset.sh +++ b/tests/bufr_dump_subset.sh @@ -64,5 +64,10 @@ do ${tools_dir}/bufr_dump -S1 ${data_dir}/bufr/$file >/dev/null done +# Check strict option with 'where' clause +input=${data_dir}/bufr/tropical_cyclone.bufr +ce=`${tools_dir}/bufr_dump -p -w count=3 $input | grep -c 'edition='` +[ $ce -eq 1 ] +# Clean up rm -f $temp1 $temp2 diff --git a/tools/bufr_dump.c b/tools/bufr_dump.c index becac8bcf..9e9af431f 100644 --- a/tools/bufr_dump.c +++ b/tools/bufr_dump.c @@ -102,6 +102,7 @@ int grib_tool_init(grib_runtime_options* options) int opt=grib_options_on("C")+grib_options_on("O"); options->dump_mode = "default"; + options->strict=1; /* Must set here as bufr_dump has its own -S option */ if (opt > 1) { printf("%s: simultaneous j/C/O options not allowed\n",grib_tool_name); From 97062d3a934c15da6f12cde2302e89bc564e6d6f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 18 Jun 2019 17:05:48 +0100 Subject: [PATCH 306/414] Exclude the python3 dir (deprecated SWIG) --- CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 61bca2b86..aa8536560 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -388,6 +388,8 @@ add_subdirectory( tools ) add_subdirectory( fortran ) if (PYTHON_VERSION_MAJOR GREATER 2) + # Python3 is no longer built with SWIG but is a separate + # package. User should do: pip install eccodes-python #add_subdirectory( python3 ) set( ECCODES_PYTHON_DIR "python3" ) else() @@ -406,7 +408,7 @@ ecbuild_dont_pack( DIRS concepts tests.ecmwf doxygen confluence examples.dev templates parameters java perl config m4 rpms gaussian_experimental gribex examples/F77 examples/extra examples/deprecated bamboo fortran/fortranCtypes tigge/tools - share/eccodes .settings + share/eccodes .settings python3 ) #ecbuild_dont_pack( DIRS data/bufr DONT_PACK_REGEX "*.bufr" ) #ecbuild_dont_pack( DIRS data/tigge DONT_PACK_REGEX "*.grib" ) From c361a83b86f3777344820b14c9c7a67b0dadef4d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 18 Jun 2019 17:07:00 +0100 Subject: [PATCH 307/414] Exclude the python3 dir (deprecated SWIG) --- CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 61bca2b86..aa8536560 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -388,6 +388,8 @@ add_subdirectory( tools ) add_subdirectory( fortran ) if (PYTHON_VERSION_MAJOR GREATER 2) + # Python3 is no longer built with SWIG but is a separate + # package. User should do: pip install eccodes-python #add_subdirectory( python3 ) set( ECCODES_PYTHON_DIR "python3" ) else() @@ -406,7 +408,7 @@ ecbuild_dont_pack( DIRS concepts tests.ecmwf doxygen confluence examples.dev templates parameters java perl config m4 rpms gaussian_experimental gribex examples/F77 examples/extra examples/deprecated bamboo fortran/fortranCtypes tigge/tools - share/eccodes .settings + share/eccodes .settings python3 ) #ecbuild_dont_pack( DIRS data/bufr DONT_PACK_REGEX "*.bufr" ) #ecbuild_dont_pack( DIRS data/tigge DONT_PACK_REGEX "*.grib" ) From 85f78478b49e335dfcf114b96190a2755af03e9c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 19 Jun 2019 16:39:46 +0100 Subject: [PATCH 308/414] Python3 messages for installation --- CMakeLists.txt | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index aa8536560..26b95389e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -476,13 +476,11 @@ ecbuild_info(" | ecCodes version ${ECCODES_VERSION} |") ecbuild_info(" +--------------------------+") ecbuild_info("") -if (PYTHON_FOUND AND PYTHON_VERSION_MAJOR EQUAL 3) - ecbuild_info(" +--------------------------------------+") - ecbuild_info(" | Please note: |") - ecbuild_info(" | For Python3 support, first install |") - ecbuild_info(" | ecCodes and then install the Python |") - ecbuild_info(" | bindings from PyPI with: |") - ecbuild_info(" | $ pip install eccodes-python |") - ecbuild_info(" +--------------------------------------+") - ecbuild_info("") -endif() +ecbuild_info(" +--------------------------------------+") +ecbuild_info(" | Please note: |") +ecbuild_info(" | For Python3 support, first install |") +ecbuild_info(" | ecCodes and then install the Python |") +ecbuild_info(" | bindings from PyPI with: |") +ecbuild_info(" | $ pip install eccodes-python |") +ecbuild_info(" +--------------------------------------+") +ecbuild_info("") From 8ee3b9334b4d7cbbfafe2e16c2bd8b0c0e1a80c8 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 19 Jun 2019 16:40:49 +0100 Subject: [PATCH 309/414] Python3 messages for installation --- CMakeLists.txt | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index aa8536560..26b95389e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -476,13 +476,11 @@ ecbuild_info(" | ecCodes version ${ECCODES_VERSION} |") ecbuild_info(" +--------------------------+") ecbuild_info("") -if (PYTHON_FOUND AND PYTHON_VERSION_MAJOR EQUAL 3) - ecbuild_info(" +--------------------------------------+") - ecbuild_info(" | Please note: |") - ecbuild_info(" | For Python3 support, first install |") - ecbuild_info(" | ecCodes and then install the Python |") - ecbuild_info(" | bindings from PyPI with: |") - ecbuild_info(" | $ pip install eccodes-python |") - ecbuild_info(" +--------------------------------------+") - ecbuild_info("") -endif() +ecbuild_info(" +--------------------------------------+") +ecbuild_info(" | Please note: |") +ecbuild_info(" | For Python3 support, first install |") +ecbuild_info(" | ecCodes and then install the Python |") +ecbuild_info(" | bindings from PyPI with: |") +ecbuild_info(" | $ pip install eccodes-python |") +ecbuild_info(" +--------------------------------------+") +ecbuild_info("") From df98ca9f7b0c1d10287d27dd1c8c4a9ac12bdfdb Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 19 Jun 2019 16:45:46 +0100 Subject: [PATCH 310/414] ECC-941: Crash: simple packed GRIB with invalid data section size/bits per value --- src/grib_accessor_class_data_simple_packing.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/grib_accessor_class_data_simple_packing.c b/src/grib_accessor_class_data_simple_packing.c index dc5e04c8e..12f847443 100644 --- a/src/grib_accessor_class_data_simple_packing.c +++ b/src/grib_accessor_class_data_simple_packing.c @@ -387,7 +387,19 @@ static int _unpack_double(grib_accessor* a, double* val, size_t *len,unsigned c buf += grib_byte_offset(a); /*Assert(((bits_per_value*n_vals)/8) < (1<<29));*/ /* See GRIB-787 */ - + { + long dataSectionLength = 0; + err = grib_get_long(gh,self->seclen, &dataSectionLength); + if (!err) { + const long valuesSize = (bits_per_value*n_vals)/8; /*in bytes*/ + if (valuesSize > dataSectionLength) { + grib_context_log(a->context, GRIB_LOG_ERROR, + "Data section size mismatch: expected=%ld, section length=%ld (num values=%ld, bits per value=%ld)", + valuesSize, dataSectionLength, n_vals, bits_per_value); + return GRIB_DECODING_ERROR; + } + } + } grib_context_log(a->context, GRIB_LOG_DEBUG, "unpack_double: calling outline function : bpv %d, rv : %g, sf : %d, dsf : %d ", bits_per_value,reference_value,binary_scale_factor, decimal_scale_factor); From 6e5403ba08a2bf73a22ec1f9cde6ac9ae91ace7a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 19 Jun 2019 18:15:54 +0100 Subject: [PATCH 311/414] Check result of ftell() --- tools/codes_split_file.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tools/codes_split_file.c b/tools/codes_split_file.c index 8659b9b7f..807d13505 100644 --- a/tools/codes_split_file.c +++ b/tools/codes_split_file.c @@ -30,7 +30,8 @@ static int split_file(FILE* in, const char* filename, const int nchunks, unsigne { void* mesg=NULL; FILE* out; - size_t size=0,read_size=0,insize=0,chunk_size; + off_t insize=0; + size_t size=0,read_size=0,chunk_size; off_t offset=0; int err=GRIB_SUCCESS; int i; @@ -44,6 +45,8 @@ static int split_file(FILE* in, const char* filename, const int nchunks, unsigne fseeko(in, 0, SEEK_END); insize = ftello(in); + if (insize==-1) + return 1; fseeko(in, 0, SEEK_SET); assert(nchunks > 0); chunk_size=insize/nchunks; From e882e41d821f24fe68fa75fc5791b73b9a019bab Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 19 Jun 2019 18:34:10 +0100 Subject: [PATCH 312/414] ECC-941: REVERT --- src/grib_accessor_class_data_simple_packing.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/grib_accessor_class_data_simple_packing.c b/src/grib_accessor_class_data_simple_packing.c index 12f847443..a65ad8656 100644 --- a/src/grib_accessor_class_data_simple_packing.c +++ b/src/grib_accessor_class_data_simple_packing.c @@ -387,6 +387,8 @@ static int _unpack_double(grib_accessor* a, double* val, size_t *len,unsigned c buf += grib_byte_offset(a); /*Assert(((bits_per_value*n_vals)/8) < (1<<29));*/ /* See GRIB-787 */ +#if 0 + /* See ECC-941: This is not the right place to do this. Fails ctest eccodes_t_grib_2nd_order_numValues */ { long dataSectionLength = 0; err = grib_get_long(gh,self->seclen, &dataSectionLength); @@ -400,6 +402,7 @@ static int _unpack_double(grib_accessor* a, double* val, size_t *len,unsigned c } } } +#endif grib_context_log(a->context, GRIB_LOG_DEBUG, "unpack_double: calling outline function : bpv %d, rv : %g, sf : %d, dsf : %d ", bits_per_value,reference_value,binary_scale_factor, decimal_scale_factor); From 4bb7b7febce777f1b578eaa472f28b769600120f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 1 Jul 2019 21:52:27 +0100 Subject: [PATCH 313/414] Python message --- examples/python/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/python/CMakeLists.txt b/examples/python/CMakeLists.txt index ffd8eb187..0a6b6a0cd 100644 --- a/examples/python/CMakeLists.txt +++ b/examples/python/CMakeLists.txt @@ -70,7 +70,7 @@ list( APPEND tests_extra # The high level python test requires new features in the unittest # which are only there for python 2.7 onwards if( HAVE_PYTHON AND PYTHON_VERSION_STRING VERSION_GREATER "2.7" ) - ecbuild_info("Python examples: Adding test for High-level Pythonic Interface") + #ecbuild_info("Python examples: Adding test for High-level Pythonic Interface") list( APPEND tests_extra high_level_api ) list( APPEND tests_extra grib_set_keys ) # Uses OrderedDict endif() From 32a91942362bbe1ea26bb9f84175c8926d941dbf Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 1 Jul 2019 22:16:02 +0100 Subject: [PATCH 314/414] ECC-735: gts_ls memory fault (second case) --- src/grib_io.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/grib_io.c b/src/grib_io.c index 5515f3555..30adcbd2a 100644 --- a/src/grib_io.c +++ b/src/grib_io.c @@ -904,7 +904,7 @@ static int read_any_gts(reader *r) unsigned long magic = 0; unsigned long start = 0x010d0d0a; /* SOH CR CR LF */ unsigned long theEnd = 0x0d0d0a03; /* CR CR LF ETX */ - unsigned char tmp[128]={0,}; /* See ECC-735 */ + unsigned char tmp[1024]={0,}; /* See ECC-735 */ size_t message_size=0; size_t already_read=0; int i=0; From 25ccd23a219127f20534998f18deed963dec83e5 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 1 Jul 2019 22:21:52 +0100 Subject: [PATCH 315/414] ECC-735: gts_ls memory fault (second case) --- src/grib_io.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/grib_io.c b/src/grib_io.c index 5515f3555..30adcbd2a 100644 --- a/src/grib_io.c +++ b/src/grib_io.c @@ -904,7 +904,7 @@ static int read_any_gts(reader *r) unsigned long magic = 0; unsigned long start = 0x010d0d0a; /* SOH CR CR LF */ unsigned long theEnd = 0x0d0d0a03; /* CR CR LF ETX */ - unsigned char tmp[128]={0,}; /* See ECC-735 */ + unsigned char tmp[1024]={0,}; /* See ECC-735 */ size_t message_size=0; size_t already_read=0; int i=0; From 669b8c9017b1021de63b9c870f6098027117ad96 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 2 Jul 2019 15:48:06 +0100 Subject: [PATCH 316/414] ECC-891: new level type (o2d) for S2S ocean parameters --- definitions/grib2/products_s2s.def | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/definitions/grib2/products_s2s.def b/definitions/grib2/products_s2s.def index e909fe3cc..f2c35cab6 100644 --- a/definitions/grib2/products_s2s.def +++ b/definitions/grib2/products_s2s.def @@ -97,3 +97,22 @@ if (isHindcast == 1) { alias mars.date = modelVersionDate; alias mars.time = modelVersionTime; } + +# ECC-839 +concept is_ocean_param(zero) { + '1' = { paramId = 151219; } + '1' = { paramId = 151163; } + '1' = { paramId = 151127; } + '1' = { paramId = 151175; } + '1' = { paramId = 151131; } + '1' = { paramId = 151132; } + '1' = { paramId = 151145; } + '1' = { paramId = 151225; } + '1' = { paramId = 174098; } + '0' = { dummy=1; } +} +if (is_ocean_param) { + constant oceanLevName = 'o2d'; + alias mars.levtype = oceanLevName; + unalias mars.levelist; +} From 49159ae869cad94ffca3843c1148da965dcfaad0 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 2 Jul 2019 16:20:47 +0100 Subject: [PATCH 317/414] ECC-943: Add WMO definition to S2S ocean parameter Sea surface practical salinity 151219 --- definitions/grib2/cfVarName.def | 10 ++++++++++ definitions/grib2/name.def | 10 ++++++++++ definitions/grib2/paramId.def | 10 ++++++++++ definitions/grib2/shortName.def | 10 ++++++++++ definitions/grib2/units.def | 10 ++++++++++ 5 files changed, 50 insertions(+) diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index c055ebd17..a28afab73 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -427,6 +427,16 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } +#Sea surface salinity +'sos' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + } #Ocean mixed layer thickness defined by sigma theta 0.01 kg/m3 'mlotst010' = { discipline = 10 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index f356a7641..fac993357 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -427,6 +427,16 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } +#Sea surface salinity +'Sea surface salinity' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + } #Ocean mixed layer thickness defined by sigma theta 0.01 kg/m3 'Ocean mixed layer thickness defined by sigma theta 0.01 kg/m3' = { discipline = 10 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 0f452b169..dc2483fc9 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -427,6 +427,16 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } +#Sea surface salinity +'151219' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + } #Ocean mixed layer thickness defined by sigma theta 0.01 kg/m3 '151225' = { discipline = 10 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 99cfeb4d8..3f447aef3 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -427,6 +427,16 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } +#Sea surface salinity +'sos' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + } #Ocean mixed layer thickness defined by sigma theta 0.01 kg/m3 'mlotst010' = { discipline = 10 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index e711a30fe..4a8d90831 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -427,6 +427,16 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } +#Sea surface salinity +'psu' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + } #Ocean mixed layer thickness defined by sigma theta 0.01 kg/m3 'm' = { discipline = 10 ; From 6bcb16b4a48c914763425817217bf621bed8457b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 2 Jul 2019 17:18:16 +0100 Subject: [PATCH 318/414] ECC-877: Change name and shortName --- definitions/grib2/cfVarName.def | 4 ++-- definitions/grib2/name.def | 4 ++-- definitions/grib2/paramId.def | 2 +- definitions/grib2/shortName.def | 4 ++-- definitions/grib2/units.def | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index a28afab73..c821ecb76 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -415,8 +415,8 @@ scaleFactorOfLowerLimit = 0 ; productDefinitionTemplateNumber = 9 ; } -#Mean sea water temperature in the upper 300 m -'mswt300m' = { +#Mean sea water potential temperature in the upper 300 m +'mswpt300m' = { discipline = 10 ; parameterCategory = 4 ; parameterNumber = 15 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index fac993357..97df1c343 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -415,8 +415,8 @@ probabilityType = 0 ; typeOfStatisticalProcessing = 10 ; } -#Mean sea water temperature in the upper 300 m -'Mean sea water temperature in the upper 300 m' = { +#Mean sea water potential temperature in the upper 300 m +'Mean sea water potential temperature in the upper 300 m' = { discipline = 10 ; parameterCategory = 4 ; parameterNumber = 15 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index dc2483fc9..e29db97ca 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -415,7 +415,7 @@ probabilityType = 0 ; scaleFactorOfLowerLimit = 0 ; } -#Mean sea water temperature in the upper 300 m +#Mean sea water potential temperature in the upper 300 m '151127' = { discipline = 10 ; parameterCategory = 4 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 3f447aef3..c23371233 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -415,8 +415,8 @@ scaleFactorOfLowerLimit = 0 ; productDefinitionTemplateNumber = 9 ; } -#Mean sea water temperature in the upper 300 m -'mswt300m' = { +#Mean sea water potential temperature in the upper 300 m +'mswpt300m' = { discipline = 10 ; parameterCategory = 4 ; parameterNumber = 15 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 4a8d90831..564ee1517 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -415,7 +415,7 @@ probabilityType = 0 ; typeOfStatisticalProcessing = 10 ; } -#Mean sea water temperature in the upper 300 m +#Mean sea water potential temperature in the upper 300 m 'K' = { discipline = 10 ; parameterCategory = 4 ; From e530047aa7d1c3369013b64611459d78a17e0e8f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 2 Jul 2019 17:59:05 +0100 Subject: [PATCH 319/414] ECC-943: Rename --- definitions/grib2/cfVarName.def | 2 +- definitions/grib2/name.def | 4 ++-- definitions/grib2/paramId.def | 2 +- definitions/grib2/shortName.def | 2 +- definitions/grib2/units.def | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index c821ecb76..7f97cda28 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -427,7 +427,7 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } -#Sea surface salinity +#Sea surface practical salinity 'sos' = { discipline = 10 ; parameterCategory = 3 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index 97df1c343..00ed847fd 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -427,8 +427,8 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } -#Sea surface salinity -'Sea surface salinity' = { +#Sea surface practical salinity +'Sea surface practical salinity' = { discipline = 10 ; parameterCategory = 3 ; parameterNumber = 3 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index e29db97ca..c7aa7d4fb 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -427,7 +427,7 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } -#Sea surface salinity +#Sea surface practical salinity '151219' = { discipline = 10 ; parameterCategory = 3 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index c23371233..7926bc05d 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -427,7 +427,7 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } -#Sea surface salinity +#Sea surface practical salinity 'sos' = { discipline = 10 ; parameterCategory = 3 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 564ee1517..f19342417 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -427,7 +427,7 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } -#Sea surface salinity +#Sea surface practical salinity 'psu' = { discipline = 10 ; parameterCategory = 3 ; From c1cd23afb95a767cf11e1a2dea4d77591bb05cd9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 3 Jul 2019 12:52:34 +0100 Subject: [PATCH 320/414] Suppress message when changing packing type from ieee to simple --- src/grib_accessor_class_data_raw_packing.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/grib_accessor_class_data_raw_packing.c b/src/grib_accessor_class_data_raw_packing.c index da88af29c..dcb5e2027 100644 --- a/src/grib_accessor_class_data_raw_packing.c +++ b/src/grib_accessor_class_data_raw_packing.c @@ -174,7 +174,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len) int code = GRIB_SUCCESS; - if((code = grib_get_long_internal(grib_handle_of_accessor(a),self->precision,&precision)) + if((code = grib_get_long(grib_handle_of_accessor(a),self->precision,&precision)) != GRIB_SUCCESS) return code; From 388dc6baa0db5a3d8cd2e693ffa6331d4afad11a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 3 Jul 2019 13:04:32 +0100 Subject: [PATCH 321/414] ECC-943: add cf name --- definitions/grib2/cfName.def | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/definitions/grib2/cfName.def b/definitions/grib2/cfName.def index 4993eeb93..4f7317055 100644 --- a/definitions/grib2/cfName.def +++ b/definitions/grib2/cfName.def @@ -186,3 +186,13 @@ typeOfFirstFixedSurface = 169 ; scaledValueOfFirstFixedSurface = 1 ; } +#Sea surface practical salinity +'sea_surface_salinity' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; +} From 2bfd1281e1248f476cb80e4930065b98258aa811 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 3 Jul 2019 13:05:51 +0100 Subject: [PATCH 322/414] ECC-943: add cf name --- definitions/grib2/cfName.def | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/definitions/grib2/cfName.def b/definitions/grib2/cfName.def index 4993eeb93..4f7317055 100644 --- a/definitions/grib2/cfName.def +++ b/definitions/grib2/cfName.def @@ -186,3 +186,13 @@ typeOfFirstFixedSurface = 169 ; scaledValueOfFirstFixedSurface = 1 ; } +#Sea surface practical salinity +'sea_surface_salinity' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 255 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; +} From 5fcc5a51f732f83fe715e85d307a587e44e80503 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 3 Jul 2019 15:01:46 +0100 Subject: [PATCH 323/414] ECC-945: Error converting GRIB1 to GRIB2: total precipitation --- definitions/grib1/localConcepts/ecmf/stepTypeForConversion.def | 1 + 1 file changed, 1 insertion(+) diff --git a/definitions/grib1/localConcepts/ecmf/stepTypeForConversion.def b/definitions/grib1/localConcepts/ecmf/stepTypeForConversion.def index bdf37f265..28115c3aa 100644 --- a/definitions/grib1/localConcepts/ecmf/stepTypeForConversion.def +++ b/definitions/grib1/localConcepts/ecmf/stepTypeForConversion.def @@ -5,6 +5,7 @@ # ECC-457: ECMWF Total Precipitation "accum" = {timeRangeIndicator=0;indicatorOfParameter=228;gribTablesVersionNo=128;centre=98;} "accum" = {timeRangeIndicator=1;indicatorOfParameter=228;gribTablesVersionNo=128;centre=98;} +"accum" = {timeRangeIndicator=10;indicatorOfParameter=228;gribTablesVersionNo=128;centre=98;} # sshf "accum" = {indicatorOfParameter=146;gribTablesVersionNo=128;centre=98;} From 5da1806e37c7fd2a2377d5a5a5b6a556c3e4e0a1 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 5 Jul 2019 12:45:50 +0100 Subject: [PATCH 324/414] ECC-948: MARS: Amend type 'sfo' --- definitions/mars/type.table | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/definitions/mars/type.table b/definitions/mars/type.table index 70d76903c..c9dd876fa 100644 --- a/definitions/mars/type.table +++ b/definitions/mars/type.table @@ -56,7 +56,7 @@ 70 or Ocean reanalysis 71 fx Flux forcing 72 fu Fill-up -73 sfo Simulation forced with observations +73 sfo Simulations with forcing 80 fcmean Forecast mean 81 fcmax Forecast maximum 82 fcmin Forecast minimum From 64b9f3f49b80a755e51913785b30fc5a111616e5 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 5 Jul 2019 13:21:54 +0100 Subject: [PATCH 325/414] ECC-947: MARS: add new streams WFAS and WFCL (GLOFAS) matching the existing EFAS and EFCL (EFAS) --- definitions/mars/grib.wfas.cf.def | 7 +++++++ definitions/mars/grib.wfas.fc.def | 7 +++++++ definitions/mars/grib.wfas.fu.def | 15 +++++++++++++++ definitions/mars/grib.wfas.pf.def | 8 ++++++++ definitions/mars/grib.wfas.sfo.def | 15 +++++++++++++++ definitions/mars/grib.wfcl.cf.def | 10 ++++++++++ definitions/mars/grib.wfcl.fc.def | 10 ++++++++++ definitions/mars/grib.wfcl.pf.def | 13 +++++++++++++ definitions/mars/grib.wfcl.sfo.def | 14 ++++++++++++++ definitions/mars/stream.table | 3 ++- 10 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 definitions/mars/grib.wfas.cf.def create mode 100644 definitions/mars/grib.wfas.fc.def create mode 100644 definitions/mars/grib.wfas.fu.def create mode 100644 definitions/mars/grib.wfas.pf.def create mode 100644 definitions/mars/grib.wfas.sfo.def create mode 100644 definitions/mars/grib.wfcl.cf.def create mode 100644 definitions/mars/grib.wfcl.fc.def create mode 100644 definitions/mars/grib.wfcl.pf.def create mode 100644 definitions/mars/grib.wfcl.sfo.def diff --git a/definitions/mars/grib.wfas.cf.def b/definitions/mars/grib.wfas.cf.def new file mode 100644 index 000000000..95c6f47af --- /dev/null +++ b/definitions/mars/grib.wfas.cf.def @@ -0,0 +1,7 @@ +# GLOFAS + +alias mars.origin = inputOriginatingCentre; + +# We need this because 'efas_post_proc' is defined later +meta efas_model sprintf("%s", efas_post_proc) : no_copy; +alias mars.model = efas_model; diff --git a/definitions/mars/grib.wfas.fc.def b/definitions/mars/grib.wfas.fc.def new file mode 100644 index 000000000..95c6f47af --- /dev/null +++ b/definitions/mars/grib.wfas.fc.def @@ -0,0 +1,7 @@ +# GLOFAS + +alias mars.origin = inputOriginatingCentre; + +# We need this because 'efas_post_proc' is defined later +meta efas_model sprintf("%s", efas_post_proc) : no_copy; +alias mars.model = efas_model; diff --git a/definitions/mars/grib.wfas.fu.def b/definitions/mars/grib.wfas.fu.def new file mode 100644 index 000000000..6ebed133f --- /dev/null +++ b/definitions/mars/grib.wfas.fu.def @@ -0,0 +1,15 @@ +# GLOFAS + +# ECC-701 +alias mars.step = endStep; + +alias mars.date = dateOfForecast; +alias mars.time = timeOfForecast; + +alias mars.origin = inputOriginatingCentre; + +alias mars.anoffset=anoffset; + +# We need this because 'efas_post_proc' is defined later +meta efas_model sprintf("%s", efas_post_proc) : no_copy; +alias mars.model = efas_model; diff --git a/definitions/mars/grib.wfas.pf.def b/definitions/mars/grib.wfas.pf.def new file mode 100644 index 000000000..9a8ede38f --- /dev/null +++ b/definitions/mars/grib.wfas.pf.def @@ -0,0 +1,8 @@ +# GLOFAS +alias mars.origin = inputOriginatingCentre; + +alias mars.number = perturbationNumber; + +# We need this because 'efas_post_proc' is defined later +meta efas_model sprintf("%s", efas_post_proc) : no_copy; +alias mars.model = efas_model; diff --git a/definitions/mars/grib.wfas.sfo.def b/definitions/mars/grib.wfas.sfo.def new file mode 100644 index 000000000..6ebed133f --- /dev/null +++ b/definitions/mars/grib.wfas.sfo.def @@ -0,0 +1,15 @@ +# GLOFAS + +# ECC-701 +alias mars.step = endStep; + +alias mars.date = dateOfForecast; +alias mars.time = timeOfForecast; + +alias mars.origin = inputOriginatingCentre; + +alias mars.anoffset=anoffset; + +# We need this because 'efas_post_proc' is defined later +meta efas_model sprintf("%s", efas_post_proc) : no_copy; +alias mars.model = efas_model; diff --git a/definitions/mars/grib.wfcl.cf.def b/definitions/mars/grib.wfcl.cf.def new file mode 100644 index 000000000..9693247bb --- /dev/null +++ b/definitions/mars/grib.wfcl.cf.def @@ -0,0 +1,10 @@ +# GLOFAS climatology +alias mars.origin = inputOriginatingCentre; + +# We need this because 'efas_post_proc' is defined later +meta efas_model sprintf("%s", efas_post_proc) : no_copy; +alias mars.model = efas_model; + +alias mars.date = dateOfModelVersion; +alias mars.time = dataTime; +alias mars.hdate = dataDate; diff --git a/definitions/mars/grib.wfcl.fc.def b/definitions/mars/grib.wfcl.fc.def new file mode 100644 index 000000000..9693247bb --- /dev/null +++ b/definitions/mars/grib.wfcl.fc.def @@ -0,0 +1,10 @@ +# GLOFAS climatology +alias mars.origin = inputOriginatingCentre; + +# We need this because 'efas_post_proc' is defined later +meta efas_model sprintf("%s", efas_post_proc) : no_copy; +alias mars.model = efas_model; + +alias mars.date = dateOfModelVersion; +alias mars.time = dataTime; +alias mars.hdate = dataDate; diff --git a/definitions/mars/grib.wfcl.pf.def b/definitions/mars/grib.wfcl.pf.def new file mode 100644 index 000000000..3fe7a09a4 --- /dev/null +++ b/definitions/mars/grib.wfcl.pf.def @@ -0,0 +1,13 @@ +# GLOFAS climatology + +alias mars.origin = inputOriginatingCentre; + +alias mars.number = perturbationNumber; + +# We need this because 'efas_post_proc' is defined later +meta efas_model sprintf("%s", efas_post_proc) : no_copy; +alias mars.model = efas_model; + +alias mars.date = dateOfModelVersion; +alias mars.time = dataTime; +alias mars.hdate = dataDate; diff --git a/definitions/mars/grib.wfcl.sfo.def b/definitions/mars/grib.wfcl.sfo.def new file mode 100644 index 000000000..97b2019ee --- /dev/null +++ b/definitions/mars/grib.wfcl.sfo.def @@ -0,0 +1,14 @@ +# GLOFAS climatology + +# ECC-701 +alias mars.step = endStep; + +alias mars.date = dateOfModelVersion; +alias mars.time = dataTime; +alias mars.hdate = dataDate; + +alias mars.origin = inputOriginatingCentre; + +# We need this because 'efas_post_proc' is defined later +meta efas_model sprintf("%s", efas_post_proc) : no_copy; +alias mars.model = efas_model; diff --git a/definitions/mars/stream.table b/definitions/mars/stream.table index 678218e08..af22214b5 100644 --- a/definitions/mars/stream.table +++ b/definitions/mars/stream.table @@ -34,7 +34,8 @@ 1057 efas European Flood Awareness System (EFAS) 1058 efse European Flood Awareness System (EFAS) seasonal forecasts 1059 efcl European Flood Awareness System (EFAS) climatology -1060 wfas Global flood awareness system +1060 wfas Global flood awareness system (GLOFAS) +1061 wfcl Global flood awareness system (GLOFAS) climatology 1070 msdc Monthly standard deviation and covariance 1071 moda Monthly means of daily means 1072 monr Monthly means using G. Boer's step function From 8cf7d527819eff2e537fa1ce57692cc73747415f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 5 Jul 2019 18:31:17 +0100 Subject: [PATCH 326/414] Fix clang warning (-Wsometimes-uninitialized) --- src/grib_accessor_class_data_g2bifourier_packing.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/grib_accessor_class_data_g2bifourier_packing.c b/src/grib_accessor_class_data_g2bifourier_packing.c index bd5c5fc38..a9e59560d 100644 --- a/src/grib_accessor_class_data_g2bifourier_packing.c +++ b/src/grib_accessor_class_data_g2bifourier_packing.c @@ -647,7 +647,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len) int isp; - bif_trunc_t * bt; + bif_trunc_t * bt = NULL; long count = 0; @@ -749,7 +749,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len) long hpos = 0; long lpos = 0; int isp; - bif_trunc_t * bt; + bif_trunc_t * bt = NULL; double max = 0; double min = 0; From b21328f71587c935c43e661d9fe21b548af4b367 Mon Sep 17 00:00:00 2001 From: Richard Mladek Date: Tue, 9 Jul 2019 13:24:13 +0100 Subject: [PATCH 327/414] CERRA params update --- tigge/tigge_check.h | 461 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 461 insertions(+) diff --git a/tigge/tigge_check.h b/tigge/tigge_check.h index 375403077..2847e49a7 100644 --- a/tigge/tigge_check.h +++ b/tigge/tigge_check.h @@ -3410,6 +3410,467 @@ uerra, eswi-enfo:total_cloud_cover_sfc maximum value 96.4844 is not in [100,100] }, {&point_in_time, &has_bitmap}, }, +/* + carra / cerra +*/ + { + "specific_rain_water_content_ml", + -1e+8, + 1e+8, + -1e+8, + 1e+8, + { + {"paramId", GRIB_TYPE_LONG, 75}, + + {"discipline", GRIB_TYPE_LONG, 0}, + {"parameterCategory", GRIB_TYPE_LONG, 1}, + {"parameterNumber", GRIB_TYPE_LONG, 85}, + {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 105}, + {"scaleFactorOfFirstFixedSurface", GRIB_TYPE_LONG, 0}, + {NULL, }, + }, + {&point_in_time, &given_level}, /* check model levels?? */ + }, + + { + "specific_snow_water_content_ml", + -1e+8, + 1e+8, + -1e+8, + 1e+8, + { + {"paramId", GRIB_TYPE_LONG, 76}, + + {"discipline", GRIB_TYPE_LONG, 0}, + {"parameterCategory", GRIB_TYPE_LONG, 1}, + {"parameterNumber", GRIB_TYPE_LONG, 86}, + {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 105}, + {"scaleFactorOfFirstFixedSurface", GRIB_TYPE_LONG, 0}, + {NULL, }, + }, + {&point_in_time, &given_level}, /* check model levels?? */ + }, + + { + "graupel_ml", + -1e+8, + 1e+8, + -1e+8, + 1e+8, + { + {"paramId", GRIB_TYPE_LONG, 260028}, + + {"discipline", GRIB_TYPE_LONG, 0}, + {"parameterCategory", GRIB_TYPE_LONG, 1}, + {"parameterNumber", GRIB_TYPE_LONG, 32}, + {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 105}, + {"scaleFactorOfFirstFixedSurface", GRIB_TYPE_LONG, 0}, + {NULL, }, + }, + {&point_in_time, &given_level}, /* check model levels?? */ + }, + + { + "turbulent_kinetic_energy_ml", + -1e+8, + 1e+8, + -1e+8, + 1e+8, + { + {"paramId", GRIB_TYPE_LONG, 260155}, + + {"discipline", GRIB_TYPE_LONG, 0}, + {"parameterCategory", GRIB_TYPE_LONG, 19}, + {"parameterNumber", GRIB_TYPE_LONG, 11}, + {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 105}, + {"scaleFactorOfFirstFixedSurface", GRIB_TYPE_LONG, 0}, + {NULL, }, + }, + {&point_in_time, &given_level}, /* check model levels?? */ + }, + + { + "specific_rain_water_content_pl", + -1e+8, + 1e+8, + -1e+8, + 1e+8, + { + {"paramId", GRIB_TYPE_LONG, 75}, + + {"discipline", GRIB_TYPE_LONG, 0}, + {"parameterCategory", GRIB_TYPE_LONG, 1}, + {"parameterNumber", GRIB_TYPE_LONG, 85}, + {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 100}, + {NULL, }, + }, + {&point_in_time, &given_level, &pressure_level}, + }, + + { + "specific_snow_water_content_pl", + -1e+8, + 1e+8, + -1e+8, + 1e+8, + { + {"paramId", GRIB_TYPE_LONG, 76}, + + {"discipline", GRIB_TYPE_LONG, 0}, + {"parameterCategory", GRIB_TYPE_LONG, 1}, + {"parameterNumber", GRIB_TYPE_LONG, 86}, + {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 100}, + {NULL, }, + }, + {&point_in_time, &given_level, &pressure_level}, + }, + + { + "graupel_pl", + -1e+8, + 1e+8, + -1e+8, + 1e+8, + { + {"paramId", GRIB_TYPE_LONG, 260028}, + + {"discipline", GRIB_TYPE_LONG, 0}, + {"parameterCategory", GRIB_TYPE_LONG, 1}, + {"parameterNumber", GRIB_TYPE_LONG, 32}, + {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 100}, + {NULL, }, + }, + {&point_in_time, &given_level, &pressure_level}, + }, + + { + "pseudo-adiabatic_potential_temperature_pl", + -1e+8, + 1e+8, + -1e+8, + 1e+8, + { + {"paramId", GRIB_TYPE_LONG, 3014}, + + {"discipline", GRIB_TYPE_LONG, 0}, + {"parameterCategory", GRIB_TYPE_LONG, 0}, + {"parameterNumber", GRIB_TYPE_LONG, 3}, + {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 100}, + {NULL, }, + }, + {&point_in_time, &given_level, &pressure_level}, + }, + + { + "geometric_vertical_velocity_pl", + -1e+8, + 1e+8, + -1e+8, + 1e+8, + { + {"paramId", GRIB_TYPE_LONG, 260238}, + + {"discipline", GRIB_TYPE_LONG, 0}, + {"parameterCategory", GRIB_TYPE_LONG, 2}, + {"parameterNumber", GRIB_TYPE_LONG, 9}, + {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 100}, + {NULL, }, + }, + {&point_in_time, &given_level, &pressure_level}, + }, + + { + "potential_vorticity_pl", + -1e+8, + 1e+8, + -1e+8, + 1e+8, + { + {"paramId", GRIB_TYPE_LONG, 60}, + + {"discipline", GRIB_TYPE_LONG, 0}, + {"parameterCategory", GRIB_TYPE_LONG, 2}, + {"parameterNumber", GRIB_TYPE_LONG, 14}, + {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 100}, + {NULL, }, + }, + {&point_in_time, &given_level, &pressure_level}, + }, + + { + "visibility_sfc", + -1e+8, + 1e+8, + -1e+8, + 1e+8, + { + {"paramId", GRIB_TYPE_LONG, 3020}, + + {"discipline", GRIB_TYPE_LONG, 0}, + {"parameterCategory", GRIB_TYPE_LONG, 19}, + {"parameterNumber", GRIB_TYPE_LONG, 0}, + {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1}, + {NULL, }, + }, + {&point_in_time, &predefined_level}, + }, + + { + "cloud_base_sfc", + -1e+8, + 1e+8, + -1e+8, + 1e+8, + { + {"paramId", GRIB_TYPE_LONG, 260107}, + + {"discipline", GRIB_TYPE_LONG, 0}, + {"parameterCategory", GRIB_TYPE_LONG, 6}, + {"parameterNumber", GRIB_TYPE_LONG, 11}, + {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1}, + {NULL, }, + }, + {&point_in_time, &predefined_level}, + }, + + { + "cloud_top_sfc", + -1e+8, + 1e+8, + -1e+8, + 1e+8, + { + {"paramId", GRIB_TYPE_LONG, 260108}, + + {"discipline", GRIB_TYPE_LONG, 0}, + {"parameterCategory", GRIB_TYPE_LONG, 6}, + {"parameterNumber", GRIB_TYPE_LONG, 12}, + {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1}, + {NULL, }, + }, + {&point_in_time, &predefined_level}, + }, + + { + "sea_ice_cover_sfc", + -1e+8, + 1e+8, + -1e+8, + 1e+8, + { + {"paramId", GRIB_TYPE_LONG, 31}, + + {"discipline", GRIB_TYPE_LONG, 10}, + {"parameterCategory", GRIB_TYPE_LONG, 2}, + {"parameterNumber", GRIB_TYPE_LONG, 0}, + + {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1}, + {NULL, }, + }, + {&point_in_time, &predefined_level, &has_bitmap}, + }, + + { + "sea_surface_temperature_sfc", + -1e+8, + 1e+8, + -1e+8, + 1e+8, + { + {"paramId", GRIB_TYPE_LONG, 34}, + + {"discipline", GRIB_TYPE_LONG, 10}, + {"parameterCategory", GRIB_TYPE_LONG, 3}, + {"parameterNumber", GRIB_TYPE_LONG, 0}, + + {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1}, + {NULL, }, + }, + {&point_in_time, &predefined_level, &has_bitmap}, + }, + + { + "precipitation_type_sfc", + -1e+8, + 1e+8, + -1e+8, + 1e+8, + { + {"paramId", GRIB_TYPE_LONG, 260015}, + + {"discipline", GRIB_TYPE_LONG, 0}, + {"parameterCategory", GRIB_TYPE_LONG, 1}, + {"parameterNumber", GRIB_TYPE_LONG, 19}, + + {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 1}, + + {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1}, + {NULL, }, + }, + {&point_in_time, &predefined_level}, + }, + + { + "specific_rain_water_content_hl", + -1e+8, + 1e+8, + -1e+8, + 1e+8, + { + {"paramId", GRIB_TYPE_LONG, 75}, + + {"discipline", GRIB_TYPE_LONG, 0}, + {"parameterCategory", GRIB_TYPE_LONG, 1}, + {"parameterNumber", GRIB_TYPE_LONG, 85}, + {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 103}, + {"scaleFactorOfFirstFixedSurface", GRIB_TYPE_LONG, 0}, + {NULL, }, + }, + {&point_in_time, &given_level, &height_level}, + }, + + { + "specific_snow_water_content_hl", + -1e+8, + 1e+8, + -1e+8, + 1e+8, + { + {"paramId", GRIB_TYPE_LONG, 76}, + + {"discipline", GRIB_TYPE_LONG, 0}, + {"parameterCategory", GRIB_TYPE_LONG, 1}, + {"parameterNumber", GRIB_TYPE_LONG, 86}, + {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 103}, + {"scaleFactorOfFirstFixedSurface", GRIB_TYPE_LONG, 0}, + {NULL, }, + }, + {&point_in_time, &given_level, &height_level}, + }, + + { + "turbulent_kinetic_energy_hl", + -1e+8, + 1e+8, + -1e+8, + 1e+8, + { + {"paramId", GRIB_TYPE_LONG, 260155}, + + {"discipline", GRIB_TYPE_LONG, 0}, + {"parameterCategory", GRIB_TYPE_LONG, 19}, + {"parameterNumber", GRIB_TYPE_LONG, 11}, + {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 103}, + {"scaleFactorOfFirstFixedSurface", GRIB_TYPE_LONG, 0}, + {NULL, }, + }, + {&point_in_time, &given_level, &height_level}, + }, +/* + cerra +*/ + + { + "momentum_flux_u_component_sfc", + -1e+8, + 1e+8, + -1e+8, + 1e+8, + { + {"paramId", GRIB_TYPE_LONG, 260062}, + + {"discipline", GRIB_TYPE_LONG, 0}, + {"parameterCategory", GRIB_TYPE_LONG, 2}, + {"parameterNumber", GRIB_TYPE_LONG, 17}, + + {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 1}, + + {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1}, + {NULL, }, + }, + {&from_start, &predefined_level}, + }, + + { + "momentum_flux_v_component_sfc", + -1e+8, + 1e+8, + -1e+8, + 1e+8, + { + {"paramId", GRIB_TYPE_LONG, 260063}, + + {"discipline", GRIB_TYPE_LONG, 0}, + {"parameterCategory", GRIB_TYPE_LONG, 2}, + {"parameterNumber", GRIB_TYPE_LONG, 18}, + + {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 1}, + + {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1}, + {NULL, }, + }, + {&from_start, &predefined_level}, + }, + + { + "time_integrated_surface_clear-sky_net_solar_radiation", + -0.1, + 1e+08, + 0, + 1e+09, + { + {"paramId", GRIB_TYPE_LONG, 210}, + + {"discipline", GRIB_TYPE_LONG, 0}, + {"parameterCategory", GRIB_TYPE_LONG, 4}, + {"parameterNumber", GRIB_TYPE_LONG, 11}, + + {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 1}, + + {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1}, + {NULL, }, + }, + {&from_start, &predefined_level}, + }, + + { + "time_integrated_surface_clear-sky_net_thermal_radiation", + -0.1, + 1e+08, + 0, + 1e+09, + { + {"paramId", GRIB_TYPE_LONG, 211}, + + {"discipline", GRIB_TYPE_LONG, 0}, + {"parameterCategory", GRIB_TYPE_LONG, 5}, + {"parameterNumber", GRIB_TYPE_LONG, 6}, + + {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 1}, + + {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1}, + {NULL, }, + }, + {&from_start, &predefined_level}, + }, + + { + "turbulent_kinetic_energy_pl", + -1e+8, + 1e+8, + -1e+8, + 1e+8, + { + {"paramId", GRIB_TYPE_LONG, 260155}, + + {"discipline", GRIB_TYPE_LONG, 0}, + {"parameterCategory", GRIB_TYPE_LONG, 19}, + {"parameterNumber", GRIB_TYPE_LONG, 11}, + {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 100}, + {NULL, }, + }, + {&point_in_time, &given_level, &pressure_level}, + }, }; From b2ad45b9f0a6839eba2ec685283825cd6bdb568b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 9 Jul 2019 13:52:35 +0100 Subject: [PATCH 328/414] ECC-949: grib_merge fails to merge grib1 tiles --- tools/grib_merge.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/tools/grib_merge.c b/tools/grib_merge.c index 376291cb4..0fa6b78fb 100644 --- a/tools/grib_merge.c +++ b/tools/grib_merge.c @@ -145,24 +145,24 @@ static grib_handle* merge(grib_handle* h1,grib_handle* h2) len2=sizeof(s2)/sizeof(*s2); err=grib_get_string(h2,"gridType",s2,&len2); if (strcmp(s2,"regular_ll")) { - grib_context_log(h1->context,GRIB_LOG_WARNING,"gridType=%s not supported",s2); + grib_context_log(h1->context,GRIB_LOG_ERROR,"gridType=%s not supported",s2); return NULL; } len1=sizeof(s1)/sizeof(*s1); err=grib_get_string(h1,"gridType",s1,&len1); if (strcmp(s1,"regular_ll")) { - grib_context_log(h1->context,GRIB_LOG_WARNING,"gridType=%s not supported",s1); + grib_context_log(h1->context,GRIB_LOG_ERROR,"gridType=%s not supported",s1); return NULL; } if (!grib_key_equal(h1,h2,"iDirectionIncrementInDegrees",GRIB_TYPE_DOUBLE,&err) ) { - grib_context_log(h1->context,GRIB_LOG_WARNING, + grib_context_log(h1->context,GRIB_LOG_ERROR, "unable to merge: different iDirectionIncrementInDegrees"); return NULL; } if (!grib_key_equal(h1,h2,"jDirectionIncrementInDegrees",GRIB_TYPE_DOUBLE,&err) ) { - grib_context_log(h1->context,GRIB_LOG_WARNING, + grib_context_log(h1->context,GRIB_LOG_ERROR, "unable to merge: different jDirectionIncrementInDegrees"); return NULL; } @@ -171,7 +171,7 @@ static grib_handle* merge(grib_handle* h1,grib_handle* h2) grib_get_long(h2,"latitudeOfFirstGridPoint",&l2); grib_get_long(h2,"jDirectionIncrement",&idj); if ( (l1-l2) % idj ) { - grib_context_log(h1->context,GRIB_LOG_WARNING, "unable to merge: incompatible grid"); + grib_context_log(h1->context,GRIB_LOG_ERROR, "unable to merge: incompatible grid"); return NULL; } @@ -179,7 +179,7 @@ static grib_handle* merge(grib_handle* h1,grib_handle* h2) grib_get_long(h2,"longitudeOfFirstGridPoint",&l2); grib_get_long(h2,"iDirectionIncrement",&idi); if ( (l1-l2) % idi ) { - grib_context_log(h1->context,GRIB_LOG_WARNING, "unable to merge: incompatible grid"); + grib_context_log(h1->context,GRIB_LOG_ERROR, "unable to merge: incompatible grid"); return NULL; } @@ -214,14 +214,22 @@ static grib_handle* merge(grib_handle* h1,grib_handle* h2) grib_get_double(h1,"longitudeOfFirstGridPointInDegrees",&lonFirst1); grib_get_double(h2,"longitudeOfFirstGridPointInDegrees",&lonFirst2); - latFirst = latFirst1>latFirst2 ? latFirst1 : latFirst2; - lonFirst = lonFirst1latFirst2 ? latFirst1 : latFirst2; + lonFirst = lonFirst1lonLast2 ? lonLast1 : lonLast2; From 7583251d7d5ab59e9962f1a972efebc3069a36e8 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 11 Jul 2019 11:10:11 +0100 Subject: [PATCH 329/414] lambert_azimuthal_equal_area: return error code when grib1 --- src/grib_util.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/grib_util.c b/src/grib_util.c index 1abd054a2..4d44b77a6 100644 --- a/src/grib_util.c +++ b/src/grib_util.c @@ -1066,6 +1066,7 @@ grib_handle* grib_util_set_spec2(grib_handle* h, case GRIB_UTIL_GRID_SPEC_LAMBERT_AZIMUTHAL_EQUAL_AREA: if (editionNumber==1) { fprintf(stderr,"GRIB_UTIL_SET_SPEC: grid type='%s' not available in GRIB edition 1.\n", grid_type); + *err = GRIB_WRONG_GRID; goto cleanup; } sprintf(name, "GRIB%ld", editionNumber); From 18bb170ae465d8a79f4e6567e381fdadf8052468 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 15 Jul 2019 10:43:24 +0100 Subject: [PATCH 330/414] Fix comments --- definitions/grib2/products_s2s.def | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/definitions/grib2/products_s2s.def b/definitions/grib2/products_s2s.def index f2c35cab6..3e7806b24 100644 --- a/definitions/grib2/products_s2s.def +++ b/definitions/grib2/products_s2s.def @@ -98,7 +98,7 @@ if (isHindcast == 1) { alias mars.time = modelVersionTime; } -# ECC-839 +# ECC-891 concept is_ocean_param(zero) { '1' = { paramId = 151219; } '1' = { paramId = 151163; } From 3e5e7b0c7df875024b3087754a28969009267a8a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 15 Jul 2019 16:03:25 +0100 Subject: [PATCH 331/414] ECC-954: GRIB: Add fire related parameters for CEMS-Fire --- definitions/grib2/cfVarName.def | 42 +++++++++++++++++++++++++++++++++ definitions/grib2/name.def | 42 +++++++++++++++++++++++++++++++++ definitions/grib2/paramId.def | 42 +++++++++++++++++++++++++++++++++ definitions/grib2/shortName.def | 42 +++++++++++++++++++++++++++++++++ definitions/grib2/units.def | 42 +++++++++++++++++++++++++++++++++ 5 files changed, 210 insertions(+) diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index 7f97cda28..4636f33cc 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -1279,6 +1279,48 @@ parameterCategory = 0 ; parameterNumber = 9 ; } +#Forest fire weather index +'fwinx' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 5 ; + } +#Fine fuel moisture code +'ffmcode' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 6 ; + } +#Duff moisture code +'dufmcode' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 7 ; + } +#Drought code +'drtcode' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 8 ; + } +#Initial fire spread index +'infsinx' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 9 ; + } +#Fire buildup index +'fbupinx' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 10 ; + } +#Fire daily severity rating +'fdsrte' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 11 ; + } #Cloudy radiance (with respect to wave number) 'p260550' = { discipline = 3 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index 00ed847fd..f95ca3294 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -1279,6 +1279,48 @@ parameterCategory = 0 ; parameterNumber = 9 ; } +#Forest fire weather index +'Forest fire weather index' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 5 ; + } +#Fine fuel moisture code +'Fine fuel moisture code' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 6 ; + } +#Duff moisture code +'Duff moisture code' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 7 ; + } +#Drought code +'Drought code' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 8 ; + } +#Initial fire spread index +'Initial fire spread index' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 9 ; + } +#Fire buildup index +'Fire buildup index' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 10 ; + } +#Fire daily severity rating +'Fire daily severity rating' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 11 ; + } #Cloudy radiance (with respect to wave number) 'Cloudy radiance (with respect to wave number)' = { discipline = 3 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index c7aa7d4fb..846e3afce 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -1279,6 +1279,48 @@ parameterCategory = 0 ; parameterNumber = 9 ; } +#Forest fire weather index +'260540' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 5 ; + } +#Fine fuel moisture code +'260541' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 6 ; + } +#Duff moisture code +'260542' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 7 ; + } +#Drought code +'260543' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 8 ; + } +#Initial fire spread index +'260544' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 9 ; + } +#Fire buildup index +'260545' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 10 ; + } +#Fire daily severity rating +'260546' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 11 ; + } #Cloudy radiance (with respect to wave number) '260550' = { discipline = 3 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 7926bc05d..19fd95ac7 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -1279,6 +1279,48 @@ parameterCategory = 0 ; parameterNumber = 9 ; } +#Forest fire weather index +'fwinx' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 5 ; + } +#Fine fuel moisture code +'ffmcode' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 6 ; + } +#Duff moisture code +'dufmcode' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 7 ; + } +#Drought code +'drtcode' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 8 ; + } +#Initial fire spread index +'infsinx' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 9 ; + } +#Fire buildup index +'fbupinx' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 10 ; + } +#Fire daily severity rating +'fdsrte' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 11 ; + } #Cloudy radiance (with respect to wave number) '~' = { discipline = 3 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index f19342417..e956f5b19 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -1279,6 +1279,48 @@ parameterCategory = 0 ; parameterNumber = 9 ; } +#Forest fire weather index +'Numeric' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 5 ; + } +#Fine fuel moisture code +'Numeric' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 6 ; + } +#Duff moisture code +'Numeric' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 7 ; + } +#Drought code +'Numeric' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 8 ; + } +#Initial fire spread index +'Numeric' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 9 ; + } +#Fire buildup index +'Numeric' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 10 ; + } +#Fire daily severity rating +'Numeric' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 11 ; + } #Cloudy radiance (with respect to wave number) 'W m**-1 sr**-1' = { discipline = 3 ; From 24589cbf8897a5a341d7b0a31cc84ccebd373ad2 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 16 Jul 2019 15:03:09 +0100 Subject: [PATCH 332/414] Improve message when PNG/CCSDS not enabled --- src/grib_accessor_class_data_ccsds_packing.c | 6 ++++-- src/grib_accessor_class_data_png_packing.c | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/grib_accessor_class_data_ccsds_packing.c b/src/grib_accessor_class_data_ccsds_packing.c index 05d2f4241..472bf1b75 100644 --- a/src/grib_accessor_class_data_ccsds_packing.c +++ b/src/grib_accessor_class_data_ccsds_packing.c @@ -525,14 +525,16 @@ cleanup: static int unpack_double(grib_accessor* a, double* val, size_t *len) { grib_context_log(a->context, GRIB_LOG_ERROR, - "grib_accessor_data_ccsds_packing: ccsds support not enabled."); + "grib_accessor_data_ccsds_packing: CCSDS support not enabled. " + "Please rebuild with -DENABLE_AEC=ON"); return GRIB_NOT_IMPLEMENTED; } static int pack_double(grib_accessor* a, const double* val, size_t *len) { grib_context_log(a->context, GRIB_LOG_ERROR, - "grib_accessor_data_ccsds_packing: ccsds support not enabled."); + "grib_accessor_data_ccsds_packing: CCSDS support not enabled. " + "Please rebuild with -DENABLE_AEC=ON"); return GRIB_NOT_IMPLEMENTED; } diff --git a/src/grib_accessor_class_data_png_packing.c b/src/grib_accessor_class_data_png_packing.c index a7ebfbaa3..ff4ab16e2 100644 --- a/src/grib_accessor_class_data_png_packing.c +++ b/src/grib_accessor_class_data_png_packing.c @@ -663,14 +663,16 @@ cleanup: static int unpack_double(grib_accessor* a, double* val, size_t *len) { grib_context_log(a->context, GRIB_LOG_ERROR, - "grib_accessor_data_png_packing: PNG support not enabled."); + "grib_accessor_data_png_packing: PNG support not enabled. " + "Please rebuild with -DENABLE_PNG=ON"); return GRIB_NOT_IMPLEMENTED; } static int pack_double(grib_accessor* a, const double* val, size_t *len) { grib_context_log(a->context, GRIB_LOG_ERROR, - "grib_accessor_data_png_packing: PNG support not enabled."); + "grib_accessor_data_png_packing: PNG support not enabled. " + "Please rebuild with -DENABLE_PNG=ON"); return GRIB_NOT_IMPLEMENTED; } From 0fb7c82aef9f0d5a9d383cd47eadd534d89d893f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 17 Jul 2019 16:30:52 +0100 Subject: [PATCH 333/414] Reduce number of calls to grib_context_log for DEBUG --- src/grib_accessor_class.c | 22 ++++++++++--------- src/grib_accessor_class_bufr_elements_table.c | 2 +- src/grib_accessor_class_long.c | 2 +- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/grib_accessor_class.c b/src/grib_accessor_class.c index f938e96dd..a926b9dae 100644 --- a/src/grib_accessor_class.c +++ b/src/grib_accessor_class.c @@ -200,14 +200,16 @@ grib_accessor* grib_accessor_factory(grib_section* p, grib_action* creator, } } - if(p->owner) - grib_context_log(p->h->context, GRIB_LOG_DEBUG, - "Creating (%s)%s of %s at offset %d [len=%d]", - p->owner->name ,a->name ,creator->op, a->offset,len,p->block); - else - grib_context_log(p->h->context, GRIB_LOG_DEBUG, - "Creating root %s of %s at offset %d [len=%d]", - a->name ,creator->op, a->offset,len,p->block); + if (p->h->context->debug == 1) { + if(p->owner) + grib_context_log(p->h->context, GRIB_LOG_DEBUG, + "Creating (%s)%s of %s at offset %d [len=%d]", + p->owner->name ,a->name ,creator->op, a->offset,len,p->block); + else + grib_context_log(p->h->context, GRIB_LOG_DEBUG, + "Creating root %s of %s at offset %d [len=%d]", + a->name ,creator->op, a->offset,len,p->block); + } return a; } @@ -282,7 +284,7 @@ int grib_section_adjust_sizes(grib_section* s,int update,int depth) /* grib_section_adjust_sizes(grib_get_sub_section(a),update,depth+1); */ err = grib_section_adjust_sizes(a->sub_section,update,depth+1); if (err) return err; - grib_context_log(a->context,GRIB_LOG_DEBUG,"grib_section_adjust_sizes: %s %ld [len=%ld] (depth=%d)",a->name,(long)a->offset,(long)a->length,depth); + /*grib_context_log(a->context,GRIB_LOG_DEBUG,"grib_section_adjust_sizes: %s %ld [len=%ld] (depth=%d)",a->name,(long)a->offset,(long)a->length,depth);*/ l = a->length; @@ -331,7 +333,7 @@ int grib_section_adjust_sizes(grib_section* s,int update,int depth) } if(s->owner) { - grib_context_log(s->owner->context,GRIB_LOG_DEBUG,"grib_section_adjust_sizes: updating owner (%s->length old=%ld new=%ld)",s->owner->name,(long)s->owner->length,(long)length); + /*grib_context_log(s->owner->context,GRIB_LOG_DEBUG,"grib_section_adjust_sizes: updating owner (%s->length old=%ld new=%ld)",s->owner->name,(long)s->owner->length,(long)length);*/ s->owner->length = length; } s->length = length; diff --git a/src/grib_accessor_class_bufr_elements_table.c b/src/grib_accessor_class_bufr_elements_table.c index 4a2b3176d..0176abb64 100644 --- a/src/grib_accessor_class_bufr_elements_table.c +++ b/src/grib_accessor_class_bufr_elements_table.c @@ -239,7 +239,7 @@ static grib_trie* load_bufr_elements_table(grib_accessor* a, int* err) dictionary=(grib_trie*)grib_trie_get(c->lists,dictName); if (dictionary) { - grib_context_log(c,GRIB_LOG_DEBUG,"using dictionary %s from cache",self->dictionary); + /*grib_context_log(c,GRIB_LOG_DEBUG,"using dictionary %s from cache",self->dictionary);*/ goto the_end; } else { grib_context_log(c,GRIB_LOG_DEBUG,"using dictionary %s from file %s",self->dictionary,filename); diff --git a/src/grib_accessor_class_long.c b/src/grib_accessor_class_long.c index 00d3da2f7..6faefbd20 100644 --- a/src/grib_accessor_class_long.c +++ b/src/grib_accessor_class_long.c @@ -166,7 +166,7 @@ static int unpack_string(grib_accessor*a , char* v, size_t *len) *len = l; return GRIB_BUFFER_TOO_SMALL; } - grib_context_log(a->context,GRIB_LOG_DEBUG, "grib_accessor_long: Casting long %s to string ", a->name); + /*grib_context_log(a->context,GRIB_LOG_DEBUG, "grib_accessor_long: Casting long %s to string ", a->name);*/ *len = l; From b08f88da5afa8c5cd88ee376dde05226dfc81ee1 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 19 Jul 2019 15:40:07 +0100 Subject: [PATCH 334/414] Remove the line pragmas which confused debugger --- src/make_hash_keys.ksh | 3 ++- tests/list_all_keys.ksh | 1 + tests/make_hash.ksh | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/make_hash_keys.ksh b/src/make_hash_keys.ksh index 0b1fbb937..f7912d630 100755 --- a/src/make_hash_keys.ksh +++ b/src/make_hash_keys.ksh @@ -3,6 +3,7 @@ set -xe cd ../tests +echo "List all keys..." ./list_all_keys.ksh cd ../src @@ -11,7 +12,7 @@ cd ../src gperf -l -C -I -t -G -H hash_keys -N grib_keys_hash_get -m 3 ../tests/keys |\ sed '/__attribute__ ((__gnu_inline__))/d' |\ - sed s/__inline//g | sed s/inline//g > grib_hash_keys.c + sed s/__inline//g | sed s/inline//g | sed -e '/^#line /d' > grib_hash_keys.c cat grib_itrie_keys.c >> grib_hash_keys.c diff --git a/tests/list_all_keys.ksh b/tests/list_all_keys.ksh index 9e6ff626e..9b94f5a53 100755 --- a/tests/list_all_keys.ksh +++ b/tests/list_all_keys.ksh @@ -22,6 +22,7 @@ fi set +x touch tmp$$ +echo "Go through all files in $ECCODES_DEFINITION_PATH ..." for file in `find $ECCODES_DEFINITION_PATH -name '*.def' -print` do ${GRIB_LIST_KEYS} $file >> tmp$$ diff --git a/tests/make_hash.ksh b/tests/make_hash.ksh index e982fe654..f8d4e8169 100755 --- a/tests/make_hash.ksh +++ b/tests/make_hash.ksh @@ -1,10 +1,10 @@ #!/usr/bin/ksh -set -x +set -ex ./list_all_keys.ksh gperf -I -t -G -H hash_keys -N grib_keys_hash_get -m 3 keys > ../src/grib_hash_keys.c -cat ../src/grib_itrie_keys.c >> ../src/grib_hash_keys.c +cat ../src/grib_itrie_keys.c | sed -e '/^#line /d' >> ../src/grib_hash_keys.c From 3c6b5c667c5b25c3de31488756e2e4f92075b475 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 19 Jul 2019 15:40:53 +0100 Subject: [PATCH 335/414] Update list of keys and hash --- tests/keys | 2699 ++++++++++++++++++++++++++-------------------------- 1 file changed, 1350 insertions(+), 1349 deletions(-) diff --git a/tests/keys b/tests/keys index 51286d343..6e6091872 100644 --- a/tests/keys +++ b/tests/keys @@ -999,1352 +999,1353 @@ is_aerosol_optical,993 is_chemical,994 is_chemical_distfn,995 is_efas,996 -is_rotated_grid,997 -is_s2s,998 -is_tigge,999 -is_uerra,1000 -isectionNumber2,1001 -isectionNumber3,1002 -isectionNumber4,1003 -isotopeIdentificationNumber,1004 -iteration,1005 -iterationNumber,1006 -iteratorDisableUnrotate,1007 -jDirectionIncrement,1008 -jDirectionIncrementGiven,1009 -jDirectionIncrementGridLength,1010 -jDirectionIncrementInDegrees,1011 -jIncrement,1012 -jPointsAreConsecutive,1013 -jScansPositively,1014 -julianDay,1015 -julianForecastDay,1016 -keyData,1017 -keyMore,1018 -keySat,1019 -kindOfProduct,1020 -kurt,1021 -kurtosis,1022 -lBB,1023 -landtype,1024 -laplacianOperator,1025 -laplacianOperatorIsSet,1026 -laplacianScalingFactor,1027 -laplacianScalingFactorUnset,1028 -lastMonthUsedToBuildClimateMonth1,1029 -lastMonthUsedToBuildClimateMonth2,1030 -latLonValues,1031 -latitude,1032 -latitudeFirstInDegrees,1033 -latitudeLastInDegrees,1034 -latitudeLongitudeValues,1035 -latitudeOfCenterPoint,1036 -latitudeOfCenterPointInDegrees,1037 -latitudeOfCentralPointInClusterDomain,1038 -latitudeOfFirstGridPoint,1039 -latitudeOfFirstGridPointInDegrees,1040 -latitudeOfIcosahedronPole,1041 -latitudeOfLastGridPoint,1042 -latitudeOfLastGridPointInDegrees,1043 -latitudeOfNorthWestCornerOfArea,1044 -latitudeOfReferencePoint,1045 -latitudeOfReferencePointInDegrees,1046 -latitudeOfSouthEastCornerOfArea,1047 -latitudeOfSouthernPole,1048 -latitudeOfSouthernPoleInDegrees,1049 -latitudeOfStretchingPole,1050 -latitudeOfStretchingPoleInDegrees,1051 -latitudeOfSubSatellitePoint,1052 -latitudeOfSubSatellitePointInDegrees,1053 -latitudeOfTangencyPoint,1054 -latitudeOfThePoleOfStretching,1055 -latitudeOfThePolePoint,1056 -latitudeOfThePolePointInDegrees,1057 -latitudeOfTheSouthernPoleOfProjection,1058 -latitudeSexagesimal,1059 -latitudeWhereDxAndDyAreSpecified,1060 -latitudeWhereDxAndDyAreSpecifiedInDegrees,1061 -latitudes,1062 -latitudesList,1063 -latitudinalDirectionGridLength,1064 -lcwfvSuiteName,1065 -leadtime,1066 -legBaseDate,1067 -legBaseTime,1068 -legNumber,1069 -legacyGaussSubarea,1070 -lengthDescriptors,1071 -lengthIncrementForTheGroupLengths,1072 -lengthOf4DvarWindow,1073 -lengthOfHeaders,1074 -lengthOfIndexTemplate,1075 -lengthOfMessage,1076 -lengthOfOriginatorLocalTemplate,1077 -lengthOfProjectLocalTemplate,1078 -lengthOfTimeRange,1079 -lev,1080 -levTypeName,1081 -level,1082 -levelIndicator,1083 -levelType,1084 -levelist,1085 -levels,1086 -levtype,1087 -libraryVersion,1088 -listMembersMissing,1089 -listMembersMissing2,1090 -listMembersMissing3,1091 -listMembersMissing4,1092 -listMembersUsed,1093 -listMembersUsed2,1094 -listMembersUsed3,1095 -listMembersUsed4,1096 -listOfContributingSpectralBands,1097 -listOfDistributionFunctionParameter,1098 -listOfEnsembleForecastNumbers,1099 -listOfModelIdentifiers,1100 -listOfParametersUsedForClustering,1101 -listOfScaledFrequencies,1102 -local,1103 -localDateTime,1104 -localDay,1105 -localDecimalScaleFactor,1106 -localDefNumberOne,1107 -localDefNumberTwo,1108 -localDefinition,1109 -localDefinitionNumber,1110 -localDir,1111 -localExtensionPadding,1112 -localFlag,1113 -localFlagLatestVersion,1114 -localHour,1115 -localLatitude,1116 -localLatitude1,1117 -localLatitude2,1118 -localLongitude,1119 -localLongitude1,1120 -localLongitude2,1121 -localMinute,1122 -localMonth,1123 -localNumberOfObservations,1124 -localSecond,1125 -localSection,1126 -localSectionPresent,1127 -localTablesVersion,1128 -localTablesVersionNumber,1129 -localUsePresent,1130 -localYear,1131 -local_padding,1132 -local_use,1133 -logTransform,1134 -longitude,1135 -longitudeFirstInDegrees,1136 -longitudeLastInDegrees,1137 -longitudeOfCenterPoint,1138 -longitudeOfCenterPointInDegrees,1139 -longitudeOfCentralPointInClusterDomain,1140 -longitudeOfFirstDiamondCenterLine,1141 -longitudeOfFirstDiamondCenterLineInDegrees,1142 -longitudeOfFirstGridPoint,1143 -longitudeOfFirstGridPointInDegrees,1144 -longitudeOfIcosahedronPole,1145 -longitudeOfLastGridPoint,1146 -longitudeOfLastGridPointInDegrees,1147 -longitudeOfNorthWestCornerOfArea,1148 -longitudeOfReferencePoint,1149 -longitudeOfReferencePointInDegrees,1150 -longitudeOfSouthEastCornerOfArea,1151 -longitudeOfSouthernPole,1152 -longitudeOfSouthernPoleInDegrees,1153 -longitudeOfStretchingPole,1154 -longitudeOfStretchingPoleInDegrees,1155 -longitudeOfSubSatellitePoint,1156 -longitudeOfSubSatellitePointInDegrees,1157 -longitudeOfTangencyPoint,1158 -longitudeOfThePoleOfStretching,1159 -longitudeOfThePolePoint,1160 -longitudeOfThePolePointInDegrees,1161 -longitudeOfTheSouthernPoleOfProjection,1162 -longitudeSexagesimal,1163 -longitudes,1164 -longitudesList,1165 -longitudinalDirectionGridLength,1166 -lowerLimit,1167 -lowerRange,1168 -lowerThreshold,1169 -lowerThresholdValue,1170 -ls_labeling,1171 -lsdate_bug,1172 -m,1173 -mAngleMultiplier,1174 -mBasicAngle,1175 -mars,1176 -marsClass,1177 -marsClass1,1178 -marsClass2,1179 -marsDir,1180 -marsDomain,1181 -marsEndStep,1182 -marsExperimentOffset,1183 -marsExpver,1184 -marsForecastMonth,1185 -marsGrid,1186 -marsIdent,1187 -marsKeywords,1188 -marsKeywords1,1189 -marsLamModel,1190 -marsLatitude,1191 -marsLevel,1192 -marsLevelist,1193 -marsLongitude,1194 -marsModel,1195 -marsParam,1196 -marsQuantile,1197 -marsRange,1198 -marsStartStep,1199 -marsStep,1200 -marsStream,1201 -marsStream1,1202 -marsStream2,1203 -marsType,1204 -marsType1,1205 -marsType2,1206 -mars_labeling,1207 -mask,1208 -masterDir,1209 -masterTableNumber,1210 -masterTablesVersionNumber,1211 -masterTablesVersionNumberLatest,1212 -matchAerosolBinNumber,1213 -matchAerosolPacking,1214 -matchLandType,1215 -matchSort,1216 -matchTimeRepres,1217 -matrixBitmapsPresent,1218 -matrixOfValues,1219 -max,1220 -maximum,1221 -md5Data,1222 -md5DataSection,1223 -md5GridSection,1224 -md5Headers,1225 -md5Product,1226 -md5Section1,1227 -md5Section10,1228 -md5Section2,1229 -md5Section3,1230 -md5Section4,1231 -md5Section5,1232 -md5Section6,1233 -md5Section7,1234 -md5Section8,1235 -md5Section9,1236 -md5Structure,1237 -md5TimeDomainSection,1238 -meanRVR1,1239 -meanRVR2,1240 -meanRVR3,1241 -meanRVR4,1242 -meanSize,1243 -meanValueRVR1,1244 -meanValueRVR2,1245 -meanValueRVR3,1246 -meanValueRVR4,1247 -meaningOfVerticalCoordinate,1248 -memberNumber,1249 -messageLength,1250 -metadata,1251 -method,1252 -methodNumber,1253 -million,1254 -min,1255 -minimum,1256 -minute,1257 -minuteOfAnalysis,1258 -minuteOfEndOfOverallTimeInterval,1259 -minuteOfForecast,1260 -minuteOfModelVersion,1261 -minuteOfReference,1262 -minutesAfterDataCutoff,1263 -minutesAfterReferenceTimeOfDataCutoff,1264 -missingDataFlag,1265 -missingValue,1266 -missingValueManagement,1267 -missingValueManagementUsed,1268 -missingValuesPresent,1269 -mixedCoordinateDefinition,1270 -mixedCoordinateFieldFlag,1271 -modeNumber,1272 -model,1273 -modelErrorType,1274 -modelIdentifier,1275 -modelName,1276 -modelVersionDate,1277 -modelVersionTime,1278 -molarMass,1279 -month,1280 -monthOfAnalysis,1281 -monthOfEndOfOverallTimeInterval,1282 -monthOfForecast,1283 -monthOfModelVersion,1284 -monthOfReference,1285 -monthlyVerificationDate,1286 -monthlyVerificationMonth,1287 -monthlyVerificationTime,1288 -monthlyVerificationYear,1289 -multiplicationFactorForLatLong,1290 -mybits,1291 -n,1292 -n2,1293 -n3,1294 -na,1295 -name,1296 -nameECMF,1297 -nameOfFirstFixedSurface,1298 -nameOfSecondFixedSurface,1299 -names,1300 -nd,1301 -neitherPresent,1302 -newSubtype,1303 -nlev,1304 -nnn,1305 -normAtFinalTime,1306 -normAtInitialTime,1307 -normal,1308 -northLatitudeOfCluster,1309 -northLatitudeOfDomainOfTubing,1310 -northWestLatitudeOfLPOArea,1311 -northWestLatitudeOfVerficationArea,1312 -northWestLongitudeOfLPOArea,1313 -northWestLongitudeOfVerficationArea,1314 -northernLatitudeOfClusterDomain,1315 -northernLatitudeOfDomain,1316 -nosigPresent,1317 -notDecoded,1318 -nt,1319 -number,1320 -numberInHorizontalCoordinates,1321 -numberInMixedCoordinateDefinition,1322 -numberInTheAuxiliaryArray,1323 -numberInTheGridCoordinateList,1324 -numberIncludedInAverage,1325 -numberMissingFromAveragesOrAccumulations,1326 -numberOfAnalysis,1327 -numberOfBits,1328 -numberOfBitsContainingEachPackedValue,1329 -numberOfBitsForScaledGroupLengths,1330 -numberOfBitsUsedForTheGroupWidths,1331 -numberOfBitsUsedForTheScaledGroupLengths,1332 -numberOfBytesInLocalDefinition,1333 -numberOfBytesOfFreeFormatData,1334 -numberOfBytesPerInteger,1335 -numberOfCategories,1336 -numberOfCharacters,1337 -numberOfChars,1338 -numberOfClusterHighResolution,1339 -numberOfClusterLowResolution,1340 -numberOfClusters,1341 -numberOfCodedValues,1342 -numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction,1343 -numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction,1344 -numberOfColumns,1345 -numberOfComponents,1346 -numberOfContributingSpectralBands,1347 -numberOfControlForecastTube,1348 -numberOfCoordinatesValues,1349 -numberOfDataBinsAlongRadials,1350 -numberOfDataMatrices,1351 -numberOfDataPoints,1352 -numberOfDataPointsExpected,1353 -numberOfDataValues,1354 -numberOfDaysInClimateSamplingWindow,1355 -numberOfDiamonds,1356 -numberOfDirections,1357 -numberOfDistinctSection3s,1358 -numberOfDistinctSection4s,1359 -numberOfDistinctSection5s,1360 -numberOfDistinctSection6s,1361 -numberOfDistinctSection7s,1362 -numberOfDistinctSection8s,1363 -numberOfDistinctSection9s,1364 -numberOfDistributionFunctionParameters,1365 -numberOfEffectiveValues,1366 -numberOfFloats,1367 -numberOfForcasts,1368 -numberOfForecastsInCluster,1369 -numberOfForecastsInEnsemble,1370 -numberOfForecastsInTheCluster,1371 -numberOfForecastsInTube,1372 -numberOfFrequencies,1373 -numberOfGridInReference,1374 -numberOfGridUsed,1375 -numberOfGroups,1376 -numberOfGroupsOfDataValues,1377 -numberOfHorizontalPoints,1378 -numberOfIntegers,1379 -numberOfInts,1380 -numberOfIterations,1381 -numberOfLocalDefinitions,1382 -numberOfLogicals,1383 -numberOfMembersInCluster,1384 -numberOfMembersInEnsemble,1385 -numberOfMissing,1386 -numberOfMissingInStatisticalProcess,1387 -numberOfMissingValues,1388 -numberOfModeOfDistribution,1389 -numberOfModels,1390 -numberOfOctectsForNumberOfPoints,1391 -numberOfOctetsExtraDescriptors,1392 -numberOfOperationalForecastTube,1393 -numberOfPackedValues,1394 -numberOfParallelsBetweenAPoleAndTheEquator,1395 -numberOfParametersUsedForClustering,1396 -numberOfPartitions,1397 -numberOfPoints,1398 -numberOfPointsAlongAMeridian,1399 -numberOfPointsAlongAParallel,1400 -numberOfPointsAlongFirstAxis,1401 -numberOfPointsAlongSecondAxis,1402 -numberOfPointsAlongTheXAxis,1403 -numberOfPointsAlongTheYAxis,1404 -numberOfPointsAlongXAxis,1405 -numberOfPointsAlongXAxisInCouplingArea,1406 -numberOfPointsAlongYAxis,1407 -numberOfPointsAlongYAxisInCouplingArea,1408 -numberOfPointsInDomain,1409 -numberOfPointsUsed,1410 -numberOfPressureLevelsUsedForClustering,1411 -numberOfRadarSitesUsed,1412 -numberOfRadials,1413 -numberOfReforecastYearsInModelClimate,1414 -numberOfRemaininChars,1415 -numberOfRepresentativeMember,1416 -numberOfReservedBytes,1417 -numberOfRows,1418 -numberOfSecondOrderPackedValues,1419 -numberOfSection,1420 -numberOfSingularVectorsComputed,1421 -numberOfSingularVectorsEvolved,1422 -numberOfStepsUsedForClustering,1423 -numberOfSubsets,1424 -numberOfTensOfThousandsOfYearsOfOffset,1425 -numberOfTimeRange,1426 -numberOfTimeSteps,1427 -numberOfUnexpandedDescriptors,1428 -numberOfUnusedBitsAtEndOfSection3,1429 -numberOfUsedSpatialTiles,1430 -numberOfUsedTileAttributes,1431 -numberOfUsefulPointsAlongXAxis,1432 -numberOfUsefulPointsAlongYAxis,1433 -numberOfVGridUsed,1434 -numberOfValues,1435 -numberOfVerticalCoordinateValues,1436 -numberOfVerticalGridDescriptors,1437 -numberOfVerticalPoints,1438 -numberingOrderOfDiamonds,1439 -numericValues,1440 -observablePropertyTemplate,1441 -observablePropertyTemplateNumber,1442 -observationDiagnostic,1443 -observationGeneratingProcessIdentifier,1444 -observationType,1445 -observedData,1446 -obstype,1447 -oceanAtmosphereCoupling,1448 -oceanStream,1449 -octetAtWichPackedDataBegins,1450 -offset,1451 -offsetAfterBitmap,1452 -offsetAfterCentreLocalSection,1453 -offsetAfterData,1454 -offsetAfterLocalSection,1455 -offsetAfterPadding,1456 -offsetBBitmap,1457 -offsetBSection5,1458 -offsetBSection6,1459 -offsetBSection9,1460 -offsetBeforeBitmap,1461 -offsetBeforeData,1462 -offsetBeforePL,1463 -offsetBeforePV,1464 -offsetDescriptors,1465 -offsetEndSection4,1466 -offsetFreeFormData,1467 -offsetFromOriginToInnerBound,1468 -offsetFromReferenceOfFirstTime,1469 -offsetICEFieldsUsed,1470 -offsetSection0,1471 -offsetSection1,1472 -offsetSection10,1473 -offsetSection11,1474 -offsetSection2,1475 -offsetSection3,1476 -offsetSection4,1477 -offsetSection5,1478 -offsetSection6,1479 -offsetSection7,1480 -offsetSection8,1481 -offsetSection9,1482 -offsetToEndOf4DvarWindow,1483 -offsetValuesBy,1484 -oldSubtype,1485 -one,1486 -oneConstant,1487 -oneMillionConstant,1488 -oneMinuteMeanMaximumRVR1,1489 -oneMinuteMeanMaximumRVR2,1490 -oneMinuteMeanMaximumRVR3,1491 -oneMinuteMeanMaximumRVR4,1492 -oneMinuteMeanMinimumRVR1,1493 -oneMinuteMeanMinimumRVR2,1494 -oneMinuteMeanMinimumRVR3,1495 -oneMinuteMeanMinimumRVR4,1496 -oneThousand,1497 -oper,1498 -operStream,1499 -operatingMode,1500 -operationalForecastCluster,1501 -optimisationTime,1502 -optimizeScaleFactor,1503 -optionalData,1504 -opttime,1505 -orderOfSPD,1506 -orderOfSpatialDifferencing,1507 -orientationOfTheGrid,1508 -orientationOfTheGridInDegrees,1509 -origin,1510 -originalParameterNumber,1511 -originalParameterTableNumber,1512 -originalSubCentreIdentifier,1513 -originatingCentre,1514 -originatingCentreOfAnalysis,1515 -originatorLocalTemplate,1516 -originatorLocalTemplateNumber,1517 -overlayTemplate,1518 -overlayTemplateNumber,1519 -pack,1520 -packedValues,1521 -packingError,1522 -packingType,1523 -padding,1524 -padding_grid1_1,1525 -padding_grid1_2,1526 -padding_grid3_1,1527 -padding_grid4_1,1528 -padding_grid50_1,1529 -padding_grid5_1,1530 -padding_grid90_1,1531 -padding_loc10_1,1532 -padding_loc13_1,1533 -padding_loc13_2,1534 -padding_loc13_3,1535 -padding_loc13_4,1536 -padding_loc13_5,1537 -padding_loc14_1,1538 -padding_loc14_2,1539 -padding_loc15_1,1540 -padding_loc16_1,1541 -padding_loc17_2,1542 -padding_loc18_1,1543 -padding_loc18_2,1544 -padding_loc190_1,1545 -padding_loc191_1,1546 -padding_loc191_2,1547 -padding_loc191_3,1548 -padding_loc192_1,1549 -padding_loc19_2,1550 -padding_loc20_1,1551 -padding_loc21_1,1552 -padding_loc23_1,1553 -padding_loc244_1,1554 -padding_loc244_2,1555 -padding_loc244_3,1556 -padding_loc245_1,1557 -padding_loc245_2,1558 -padding_loc26_1,1559 -padding_loc27_1,1560 -padding_loc27_2,1561 -padding_loc28_1,1562 -padding_loc29_1,1563 -padding_loc29_2,1564 -padding_loc29_3,1565 -padding_loc2_1,1566 -padding_loc2_2,1567 -padding_loc30_1,1568 -padding_loc30_2,1569 -padding_loc37_1,1570 -padding_loc37_2,1571 -padding_loc38_1,1572 -padding_loc3_1,1573 -padding_loc4_2,1574 -padding_loc50_1,1575 -padding_loc5_1,1576 -padding_loc6_1,1577 -padding_loc7_1,1578 -padding_loc9_1,1579 -padding_loc9_2,1580 -padding_local11_1,1581 -padding_local1_1,1582 -padding_local1_31,1583 -padding_local40_1,1584 -padding_local_35,1585 -padding_local_7_1,1586 -padding_sec1_loc,1587 -padding_sec2_1,1588 -padding_sec2_2,1589 -padding_sec2_3,1590 -padding_sec3_1,1591 -padding_sec4_1,1592 -paleontologicalOffset,1593 -param,1594 -paramId,1595 -paramIdECMF,1596 -parameter,1597 -parameterCategory,1598 -parameterCode,1599 -parameterDiscipline,1600 -parameterIndicator,1601 -parameterName,1602 -parameterNumber,1603 -parameterUnits,1604 -parameters,1605 -parametersVersion,1606 -partitionItems,1607 -partitionNumber,1608 -partitionTable,1609 -partitions,1610 -pastTendencyRVR1,1611 -pastTendencyRVR2,1612 -pastTendencyRVR3,1613 -pastTendencyRVR4,1614 -patch_precip_fp,1615 -pentagonalResolutionParameterJ,1616 -pentagonalResolutionParameterK,1617 -pentagonalResolutionParameterM,1618 -percentileValue,1619 -periodOfTime,1620 -periodOfTimeIntervals,1621 -perturbationNumber,1622 -perturbedType,1623 -phase,1624 -physicalFlag1,1625 -physicalFlag2,1626 -physicalMeaningOfVerticalCoordinate,1627 -pl,1628 -platform,1629 -plusOneinOrdersOfSPD,1630 -points,1631 -postAuxiliary,1632 -postAuxiliaryArrayPresent,1633 -powerOfTenUsedToScaleClimateWeight,1634 -preBitmapValues,1635 -preProcessingParameter,1636 -precision,1637 -precisionOfTheUnpackedSubset,1638 -predefined_grid,1639 -predefined_grid_values,1640 -present,1641 -presentTrend1,1642 -presentTrend2,1643 -presentTrend3,1644 -presentTrend4,1645 -presentWeather1Present,1646 -presentWeather1PresentTrend1,1647 -presentWeather1PresentTrend2,1648 -presentWeather1PresentTrend3,1649 -presentWeather1PresentTrend4,1650 -presentWeather2Present,1651 -presentWeather2PresentTrend1,1652 -presentWeather2PresentTrend2,1653 -presentWeather2PresentTrend3,1654 -presentWeather2PresentTrend4,1655 -presentWeather3Present,1656 -presentWeather3PresentTrend1,1657 -presentWeather3PresentTrend2,1658 -presentWeather3PresentTrend3,1659 -presentWeather3PresentTrend4,1660 -pressureLevel,1661 -pressureUnits,1662 -primaryBitmap,1663 -primaryMissingValue,1664 -primaryMissingValueSubstitute,1665 -probContinous,1666 -probPoint,1667 -probProductDefinition,1668 -probabilityType,1669 -probabilityTypeName,1670 -process,1671 -produceLargeConstantFields,1672 -product,1673 -productDefinition,1674 -productDefinitionTemplateNumber,1675 -productDefinitionTemplateNumberInternal,1676 -productIdentifier,1677 -productType,1678 -productionStatusOfProcessedData,1679 -projectLocalTemplate,1680 -projectLocalTemplateNumber,1681 -projectionCenterFlag,1682 -projectionCentreFlag,1683 -pv,1684 -pvlLocation,1685 -qfe,1686 -qfePresent,1687 -qfeUnits,1688 -qnh,1689 -qnhAPresent,1690 -qnhPresent,1691 -qnhUnits,1692 -qualityControl,1693 -qualityControlIndicator,1694 -qualityValueAssociatedWithParameter,1695 -quantile,1696 -radialAngularSpacing,1697 -radials,1698 -radius,1699 -radiusInMetres,1700 -radiusOfCentralCluster,1701 -radiusOfClusterDomain,1702 -radiusOfTheEarth,1703 -range,1704 -rangeBinSpacing,1705 -rdbDateTime,1706 -rdbSubtype,1707 -rdbType,1708 -rdb_key,1709 -rdbtime,1710 -rdbtimeDate,1711 -rdbtimeDay,1712 -rdbtimeHour,1713 -rdbtimeMinute,1714 -rdbtimeMonth,1715 -rdbtimeSecond,1716 -rdbtimeTime,1717 -rdbtimeYear,1718 -realPart,1719 -realPartOf00,1720 -recDateTime,1721 -recentWeather,1722 -recentWeatherTry,1723 -rectime,1724 -rectimeDay,1725 -rectimeHour,1726 -rectimeMinute,1727 -rectimeSecond,1728 -reducedGrid,1729 -refdate,1730 -reference,1731 -referenceDate,1732 -referenceForGroupLengths,1733 -referenceForGroupWidths,1734 -referenceOfLengths,1735 -referenceOfWidths,1736 -referenceReflectivityForEchoTop,1737 -referenceSampleInterval,1738 -referenceStep,1739 -referenceValue,1740 -referenceValueError,1741 -reflectivityCalibrationConstant,1742 -remarkPresent,1743 -reportType,1744 -representationMode,1745 -representationType,1746 -representativeMember,1747 -reserved,1748 -reserved1,1749 -reserved2,1750 -reserved3,1751 -reservedNeedNotBePresent,1752 -reservedOctet,1753 -reservedSection2,1754 -reservedSection3,1755 -reservedSection4,1756 -resolutionAndComponentFlags,1757 -resolutionAndComponentFlags1,1758 -resolutionAndComponentFlags2,1759 -resolutionAndComponentFlags3,1760 -resolutionAndComponentFlags4,1761 -resolutionAndComponentFlags6,1762 -resolutionAndComponentFlags7,1763 -resolutionAndComponentFlags8,1764 -rootGroupObjectHeaderAddress,1765 -rootGroupSymbolTableEntry,1766 -rootTablesDir,1767 -roundedMarsLatitude,1768 -roundedMarsLevelist,1769 -roundedMarsLongitude,1770 -runwayBrakingActionState1,1771 -runwayBrakingActionState2,1772 -runwayBrakingActionState3,1773 -runwayBrakingActionState4,1774 -runwayDepositCodeState1,1775 -runwayDepositCodeState2,1776 -runwayDepositCodeState3,1777 -runwayDepositCodeState4,1778 -runwayDepositState1,1779 -runwayDepositState2,1780 -runwayDepositState3,1781 -runwayDepositState4,1782 -runwayDepthOfDepositCodeState1,1783 -runwayDepthOfDepositCodeState2,1784 -runwayDepthOfDepositCodeState3,1785 -runwayDepthOfDepositCodeState4,1786 -runwayDepthOfDepositState1,1787 -runwayDepthOfDepositState2,1788 -runwayDepthOfDepositState3,1789 -runwayDepthOfDepositState4,1790 -runwayDesignatorRVR1,1791 -runwayDesignatorRVR2,1792 -runwayDesignatorRVR3,1793 -runwayDesignatorRVR4,1794 -runwayDesignatorState1,1795 -runwayDesignatorState2,1796 -runwayDesignatorState3,1797 -runwayDesignatorState4,1798 -runwayExtentOfContaminationCodeState1,1799 -runwayExtentOfContaminationCodeState2,1800 -runwayExtentOfContaminationCodeState3,1801 -runwayExtentOfContaminationCodeState4,1802 -runwayExtentOfContaminationState1,1803 -runwayExtentOfContaminationState2,1804 -runwayExtentOfContaminationState3,1805 -runwayExtentOfContaminationState4,1806 -runwayFrictionCodeValueState1,1807 -runwayFrictionCodeValueState2,1808 -runwayFrictionCodeValueState3,1809 -runwayFrictionCodeValueState4,1810 -runwayFrictionCoefficientCodeState1,1811 -runwayFrictionCoefficientCodeState2,1812 -runwayFrictionCoefficientCodeState3,1813 -runwayFrictionCoefficientCodeState4,1814 -runwayFrictionCoefficientState1,1815 -runwayFrictionCoefficientState2,1816 -runwayFrictionCoefficientState3,1817 -runwayFrictionCoefficientState4,1818 -runwaySideCodeState1,1819 -runwaySideCodeState2,1820 -runwaySideCodeState3,1821 -runwaySideCodeState4,1822 -runwayState,1823 -sampleSizeOfModelClimate,1824 -satelliteID,1825 -satelliteIdentifier,1826 -satelliteNumber,1827 -satelliteSeries,1828 -scaleFactorAtReferencePoint,1829 -scaleFactorOfCentralWaveNumber,1830 -scaleFactorOfDistanceFromEnsembleMean,1831 -scaleFactorOfDistributionFunctionParameter,1832 -scaleFactorOfEarthMajorAxis,1833 -scaleFactorOfEarthMinorAxis,1834 -scaleFactorOfFirstFixedSurface,1835 -scaleFactorOfFirstSize,1836 -scaleFactorOfFirstWavelength,1837 -scaleFactorOfLengthOfSemiMajorAxis,1838 -scaleFactorOfLengthOfSemiMinorAxis,1839 -scaleFactorOfLowerLimit,1840 -scaleFactorOfMajorAxisOfOblateSpheroidEarth,1841 -scaleFactorOfMinorAxisOfOblateSpheroidEarth,1842 -scaleFactorOfPrimeMeridianOffset,1843 -scaleFactorOfRadiusOfSphericalEarth,1844 -scaleFactorOfSecondFixedSurface,1845 -scaleFactorOfSecondSize,1846 -scaleFactorOfSecondWavelength,1847 -scaleFactorOfStandardDeviation,1848 -scaleFactorOfStandardDeviationInTheCluster,1849 -scaleFactorOfUpperLimit,1850 -scaleValuesBy,1851 -scaledDirections,1852 -scaledFrequencies,1853 -scaledValueOfCentralWaveNumber,1854 -scaledValueOfDistanceFromEnsembleMean,1855 -scaledValueOfDistributionFunctionParameter,1856 -scaledValueOfEarthMajorAxis,1857 -scaledValueOfEarthMinorAxis,1858 -scaledValueOfFirstFixedSurface,1859 -scaledValueOfFirstSize,1860 -scaledValueOfFirstWavelength,1861 -scaledValueOfLengthOfSemiMajorAxis,1862 -scaledValueOfLengthOfSemiMinorAxis,1863 -scaledValueOfLowerLimit,1864 -scaledValueOfMajorAxisOfOblateSpheroidEarth,1865 -scaledValueOfMinorAxisOfOblateSpheroidEarth,1866 -scaledValueOfPrimeMeridianOffset,1867 -scaledValueOfRadiusOfSphericalEarth,1868 -scaledValueOfSecondFixedSurface,1869 -scaledValueOfSecondSize,1870 -scaledValueOfSecondWavelength,1871 -scaledValueOfStandardDeviation,1872 -scaledValueOfStandardDeviationInTheCluster,1873 -scaledValueOfUpperLimit,1874 -scalingFactorForFrequencies,1875 -scanPosition,1876 -scanningMode,1877 -scanningMode4,1878 -scanningMode5,1879 -scanningMode6,1880 -scanningMode7,1881 -scanningMode8,1882 -scanningModeForOneDiamond,1883 -sd,1884 -second,1885 -secondDimension,1886 -secondDimensionCoordinateValueDefinition,1887 -secondDimensionPhysicalSignificance,1888 -secondLatitude,1889 -secondLatitudeInDegrees,1890 -secondOfEndOfOverallTimeInterval,1891 -secondOfForecast,1892 -secondOfModelVersion,1893 -secondOrderFlags,1894 -secondOrderOfDifferentWidth,1895 -secondOrderValuesDifferentWidths,1896 -secondaryBitMap,1897 -secondaryBitmap,1898 -secondaryBitmapPresent,1899 -secondaryBitmaps,1900 -secondaryBitmapsCount,1901 -secondaryBitmapsSize,1902 -secondaryMissingValue,1903 -secondaryMissingValueSubstitute,1904 -secondsOfAnalysis,1905 -secondsOfReference,1906 -section,1907 -section0Length,1908 -section0Pointer,1909 -section1,1910 -section10Length,1911 -section10Pointer,1912 -section11Length,1913 -section11Pointer,1914 -section1Flags,1915 -section1Length,1916 -section1Padding,1917 -section1Pointer,1918 -section2Length,1919 -section2Padding,1920 -section2Pointer,1921 -section2Present,1922 -section2Used,1923 -section3,1924 -section3Flags,1925 -section3Length,1926 -section3Padding,1927 -section3Pointer,1928 -section3UniqueIdentifier,1929 -section4,1930 -section4Length,1931 -section4Padding,1932 -section4Pointer,1933 -section4UniqueIdentifier,1934 -section5,1935 -section5Length,1936 -section5Pointer,1937 -section5UniqueIdentifier,1938 -section6,1939 -section6Length,1940 -section6Pointer,1941 -section6UniqueIdentifier,1942 -section7,1943 -section7Length,1944 -section7Pointer,1945 -section7UniqueIdentifier,1946 -section8,1947 -section8Length,1948 -section8Pointer,1949 -section8UniqueIdentifier,1950 -section9Length,1951 -section9Pointer,1952 -section9UniqueIdentifier,1953 -sectionLengthLimitForEnsembles,1954 -sectionLengthLimitForProbability,1955 -sectionNumber,1956 -sectionPosition,1957 -section_01,1958 -section_02,1959 -section_03,1960 -section_04,1961 -section_05,1962 -section_06,1963 -section_07,1964 -section_08,1965 -section_09,1966 -section_1,1967 -section_10,1968 -section_11,1969 -section_2,1970 -section_3,1971 -section_4,1972 -section_5,1973 -section_6,1974 -section_7,1975 -section_8,1976 -selectStepTemplateInstant,1977 -selectStepTemplateInterval,1978 -sensitiveAreaDomain,1979 -sequences,1980 -setBitsPerValue,1981 -setCalendarId,1982 -setDecimalPrecision,1983 -setLocalDefinition,1984 -setToMissingIfOutOfRange,1985 -sfc_levtype,1986 -shapeOfTheEarth,1987 -shapeOfVerificationArea,1988 -shortName,1989 -shortNameECMF,1990 -short_name,1991 -signature,1992 -significanceOfReferenceDateAndTime,1993 -significanceOfReferenceTime,1994 -simpleThinningMissingRadius,1995 -simpleThinningSkip,1996 -simpleThinningStart,1997 -siteElevation,1998 -siteId,1999 -siteLatitude,2000 -siteLongitude,2001 -sizeOfLength,2002 -sizeOfOffsets,2003 -sizeOfPostAuxiliaryArray,2004 -sizeOfPostAuxiliaryArrayPlusOne,2005 -skew,2006 -skewness,2007 -skipExtraKeyAttributes,2008 -sort,2009 -sourceOfGridDefinition,2010 -southEastLatitudeOfLPOArea,2011 -southEastLatitudeOfVerficationArea,2012 -southEastLongitudeOfLPOArea,2013 -southEastLongitudeOfVerficationArea,2014 -southLatitudeOfCluster,2015 -southLatitudeOfDomainOfTubing,2016 -southPoleOnProjectionPlane,2017 -southernLatitudeOfClusterDomain,2018 -southernLatitudeOfDomain,2019 -sp1,2020 -sp2,2021 -sp3,2022 -spaceUnitFlag,2023 -spacingOfBinsAlongRadials,2024 -spare,2025 -spare2,2026 -spatialProcessing,2027 -spatialSmoothingOfProduct,2028 -spectralDataRepresentationMode,2029 -spectralDataRepresentationType,2030 -spectralMode,2031 -spectralType,2032 -sphericalHarmonics,2033 -standardDeviation,2034 -standardParallel,2035 -standardParallelInDegrees,2036 -standardParallelInMicrodegrees,2037 -startOfHeaders,2038 -startOfMessage,2039 -startOfRange,2040 -startStep,2041 -startStepInHours,2042 -startTimeStep,2043 -startingAzimuth,2044 -statisticalProcess,2045 -statisticalProcessesList,2046 -statistics,2047 -status,2048 -step,2049 -stepForClustering,2050 -stepInHours,2051 -stepRange,2052 -stepRangeInHours,2053 -stepType,2054 -stepTypeForConversion,2055 -stepTypeInternal,2056 -stepUnits,2057 -stepZero,2058 -stream,2059 -streamOfAnalysis,2060 -stretchingFactor,2061 -stretchingFactorScaled,2062 -stringValues,2063 -subCentre,2064 -subDefinitions1,2065 -subDefinitions2,2066 -subLocalDefinition1,2067 -subLocalDefinition2,2068 -subLocalDefinitionLength1,2069 -subLocalDefinitionLength2,2070 -subLocalDefinitionNumber1,2071 -subLocalDefinitionNumber2,2072 -subSetJ,2073 -subSetK,2074 -subSetM,2075 -subcentreOfAnalysis,2076 -subdivisionsOfBasicAngle,2077 -suiteName,2078 -superblockExtensionAddress,2079 -swapScanningLat,2080 -swapScanningLon,2081 -swapScanningX,2082 -swapScanningY,2083 -system,2084 -systemNumber,2085 -t,2086 -table2Version,2087 -tableCode,2088 -tableNumber,2089 -tableReference,2090 -tablesLocalDir,2091 -tablesMasterDir,2092 -tablesVersion,2093 -tablesVersionLatest,2094 -targetCompressionRatio,2095 -td,2096 -tempPressureUnits,2097 -temperature,2098 -temperatureAndDewpointPresent,2099 -templatesLocalDir,2100 -templatesMasterDir,2101 -theHindcastMarsStream,2102 -theMessage,2103 -thisExperimentVersionNumber,2104 -thisMarsClass,2105 -thisMarsStream,2106 -thisMarsType,2107 -thousand,2108 -three,2109 -threshold,2110 -thresholdIndicator,2111 -tiggeCentre,2112 -tiggeLAMName,2113 -tiggeLocalVersion,2114 -tiggeModel,2115 -tiggeSection,2116 -tiggeSuiteID,2117 -tigge_name,2118 -tigge_short_name,2119 -tileClassification,2120 -tileIndex,2121 -time,2122 -timeCoordinateDefinition,2123 -timeDomainTemplate,2124 -timeDomainTemplateNumber,2125 -timeIncrement,2126 -timeIncrementBetweenSuccessiveFields,2127 -timeOfAnalysis,2128 -timeOfForecast,2129 -timeOfModelVersion,2130 -timeOfReference,2131 -timeRangeIndicator,2132 -timeRangeIndicatorFromStepRange,2133 -timeUnitFlag,2134 -timerepres,2135 -topLevel,2136 -total,2137 -totalAerosolBinsNumbers,2138 -totalInitialConditions,2139 -totalLength,2140 -totalNumber,2141 -totalNumberOfClusters,2142 -totalNumberOfDataValuesMissingInStatisticalProcess,2143 -totalNumberOfDirections,2144 -totalNumberOfForecastProbabilities,2145 -totalNumberOfFrequencies,2146 -totalNumberOfGridPoints,2147 -totalNumberOfIterations,2148 -totalNumberOfRepetitions,2149 -totalNumberOfTileAttributePairs,2150 -totalNumberOfTubes,2151 -totalNumberOfValuesInUnpackedSubset,2152 -totalNumberOfdimensions,2153 -treatmentOfMissingData,2154 -true,2155 -trueLengthOfLastGroup,2156 -truncateDegrees,2157 -truncateLaplacian,2158 -tsectionNumber3,2159 -tsectionNumber4,2160 -tsectionNumber5,2161 -tubeDomain,2162 -tubeNumber,2163 -two,2164 -twoOrdersOfSPD,2165 -type,2166 -typeOfAnalysis,2167 -typeOfAuxiliaryInformation,2168 -typeOfCalendar,2169 -typeOfCompressionUsed,2170 -typeOfDistributionFunction,2171 -typeOfEnsembleForecast,2172 -typeOfEnsembleMember,2173 -typeOfFirstFixedSurface,2174 -typeOfGeneratingProcess,2175 -typeOfGrid,2176 -typeOfHorizontalLine,2177 -typeOfIntervalForFirstAndSecondSize,2178 -typeOfIntervalForFirstAndSecondWavelength,2179 -typeOfLevel,2180 -typeOfLevelECMF,2181 -typeOfOriginalFieldValues,2182 -typeOfPacking,2183 -typeOfPostProcessing,2184 -typeOfPreProcessing,2185 -typeOfProcessedData,2186 -typeOfSSTFieldUsed,2187 -typeOfSecondFixedSurface,2188 -typeOfSizeInterval,2189 -typeOfStatisticalPostProcessingOfEnsembleMembers,2190 -typeOfStatisticalProcessing,2191 -typeOfTimeIncrement,2192 -typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing,2193 -typeOfWavelengthInterval,2194 -typicalCentury,2195 -typicalDate,2196 -typicalDateTime,2197 -typicalDay,2198 -typicalHour,2199 -typicalMinute,2200 -typicalMonth,2201 -typicalSecond,2202 -typicalTime,2203 -typicalYear,2204 -typicalYear2,2205 -typicalYearOfCentury,2206 -uco,2207 -ucs,2208 -unexpandedDescriptors,2209 -unexpandedDescriptorsEncoded,2210 -unitOfOffsetFromReferenceTime,2211 -unitOfTime,2212 -unitOfTimeIncrement,2213 -unitOfTimeRange,2214 -units,2215 -unitsBias,2216 -unitsConversionOffset,2217 -unitsConversionScaleFactor,2218 -unitsDecimalScaleFactor,2219 -unitsECMF,2220 -unitsFactor,2221 -unitsOfFirstFixedSurface,2222 -unitsOfSecondFixedSurface,2223 -unknown,2224 -unpack,2225 -unpackedError,2226 -unpackedSubsetPrecision,2227 -unpackedValues,2228 -unsignedIntegers,2229 -unusedBitsInBitmap,2230 -updateSequenceNumber,2231 -upperLimit,2232 -upperRange,2233 -upperThreshold,2234 -upperThresholdValue,2235 -userDateEnd,2236 -userDateStart,2237 -userDateTimeEnd,2238 -userDateTimeStart,2239 -userTimeEnd,2240 -userTimeStart,2241 -uuidOfHGrid,2242 -uuidOfVGrid,2243 -uvRelativeToGrid,2244 -validityDate,2245 -validityTime,2246 -values,2247 -variationOfVisibility,2248 -variationOfVisibilityDirection,2249 -variationOfVisibilityDirectionAngle,2250 -variationOfVisibilityDirectionTrend1,2251 -variationOfVisibilityDirectionTrend2,2252 -variationOfVisibilityDirectionTrend3,2253 -variationOfVisibilityDirectionTrend4,2254 -variationOfVisibilityTrend1,2255 -variationOfVisibilityTrend2,2256 -variationOfVisibilityTrend3,2257 -variationOfVisibilityTrend4,2258 -varno,2259 -verificationDate,2260 -verificationMonth,2261 -verificationYear,2262 -verifyingMonth,2263 -version,2264 -versionNumOfFilesFreeSpaceStorage,2265 -versionNumOfRootGroupSymbolTableEntry,2266 -versionNumOfSharedHeaderMessageFormat,2267 -versionNumberOfExperimentalSuite,2268 -versionNumberOfGribLocalTables,2269 -versionNumberOfSuperblock,2270 -versionOfModelClimate,2271 -verticalCoordinate,2272 -verticalCoordinateDefinition,2273 -verticalDomainTemplate,2274 -verticalDomainTemplateNumber,2275 -verticalVisibility,2276 -verticalVisibilityCoded,2277 -visibility,2278 -visibilityInKilometresTrend1,2279 -visibilityInKilometresTrend2,2280 -visibilityInKilometresTrend3,2281 -visibilityInKilometresTrend4,2282 -visibilityTrend1,2283 -visibilityTrend2,2284 -visibilityTrend3,2285 -visibilityTrend4,2286 -waveDomain,2287 -weightAppliedToClimateMonth1,2288 -westLongitudeOfCluster,2289 -westLongitudeOfDomainOfTubing,2290 -westernLongitudeOfClusterDomain,2291 -westernLongitudeOfDomain,2292 -widthOfFirstOrderValues,2293 -widthOfLengths,2294 -widthOfSPD,2295 -widthOfWidths,2296 -windDirection,2297 -windDirectionTrend1,2298 -windDirectionTrend2,2299 -windDirectionTrend3,2300 -windDirectionTrend4,2301 -windGust,2302 -windGustTrend1,2303 -windGustTrend2,2304 -windGustTrend3,2305 -windGustTrend4,2306 -windPresent,2307 -windSpeed,2308 -windSpeedTrend1,2309 -windSpeedTrend2,2310 -windSpeedTrend3,2311 -windSpeedTrend4,2312 -windUnits,2313 -windUnitsTrend1,2314 -windUnitsTrend2,2315 -windUnitsTrend3,2316 -windUnitsTrend4,2317 -windVariableDirection,2318 -windVariableDirectionTrend1,2319 -windVariableDirectionTrend2,2320 -windVariableDirectionTrend3,2321 -windVariableDirectionTrend4,2322 -wrongPadding,2323 -xCoordinateOfOriginOfSectorImage,2324 -xCoordinateOfSubSatellitePoint,2325 -xDirectionGridLength,2326 -xDirectionGridLengthInMetres,2327 -xDirectionGridLengthInMillimetres,2328 -xFirst,2329 -xLast,2330 -yCoordinateOfOriginOfSectorImage,2331 -yCoordinateOfSubSatellitePoint,2332 -yDirectionGridLength,2333 -yDirectionGridLengthInMetres,2334 -yDirectionGridLengthInMillimetres,2335 -yFirst,2336 -yLast,2337 -year,2338 -yearOfAnalysis,2339 -yearOfCentury,2340 -yearOfEndOfOverallTimeInterval,2341 -yearOfForecast,2342 -yearOfModelVersion,2343 -yearOfReference,2344 -zero,2345 +is_ocean_param,997 +is_rotated_grid,998 +is_s2s,999 +is_tigge,1000 +is_uerra,1001 +isectionNumber2,1002 +isectionNumber3,1003 +isectionNumber4,1004 +isotopeIdentificationNumber,1005 +iteration,1006 +iterationNumber,1007 +iteratorDisableUnrotate,1008 +jDirectionIncrement,1009 +jDirectionIncrementGiven,1010 +jDirectionIncrementGridLength,1011 +jDirectionIncrementInDegrees,1012 +jIncrement,1013 +jPointsAreConsecutive,1014 +jScansPositively,1015 +julianDay,1016 +julianForecastDay,1017 +keyData,1018 +keyMore,1019 +keySat,1020 +kindOfProduct,1021 +kurt,1022 +kurtosis,1023 +lBB,1024 +landtype,1025 +laplacianOperator,1026 +laplacianOperatorIsSet,1027 +laplacianScalingFactor,1028 +laplacianScalingFactorUnset,1029 +lastMonthUsedToBuildClimateMonth1,1030 +lastMonthUsedToBuildClimateMonth2,1031 +latLonValues,1032 +latitude,1033 +latitudeFirstInDegrees,1034 +latitudeLastInDegrees,1035 +latitudeLongitudeValues,1036 +latitudeOfCenterPoint,1037 +latitudeOfCenterPointInDegrees,1038 +latitudeOfCentralPointInClusterDomain,1039 +latitudeOfFirstGridPoint,1040 +latitudeOfFirstGridPointInDegrees,1041 +latitudeOfIcosahedronPole,1042 +latitudeOfLastGridPoint,1043 +latitudeOfLastGridPointInDegrees,1044 +latitudeOfNorthWestCornerOfArea,1045 +latitudeOfReferencePoint,1046 +latitudeOfReferencePointInDegrees,1047 +latitudeOfSouthEastCornerOfArea,1048 +latitudeOfSouthernPole,1049 +latitudeOfSouthernPoleInDegrees,1050 +latitudeOfStretchingPole,1051 +latitudeOfStretchingPoleInDegrees,1052 +latitudeOfSubSatellitePoint,1053 +latitudeOfSubSatellitePointInDegrees,1054 +latitudeOfTangencyPoint,1055 +latitudeOfThePoleOfStretching,1056 +latitudeOfThePolePoint,1057 +latitudeOfThePolePointInDegrees,1058 +latitudeOfTheSouthernPoleOfProjection,1059 +latitudeSexagesimal,1060 +latitudeWhereDxAndDyAreSpecified,1061 +latitudeWhereDxAndDyAreSpecifiedInDegrees,1062 +latitudes,1063 +latitudesList,1064 +latitudinalDirectionGridLength,1065 +lcwfvSuiteName,1066 +leadtime,1067 +legBaseDate,1068 +legBaseTime,1069 +legNumber,1070 +legacyGaussSubarea,1071 +lengthDescriptors,1072 +lengthIncrementForTheGroupLengths,1073 +lengthOf4DvarWindow,1074 +lengthOfHeaders,1075 +lengthOfIndexTemplate,1076 +lengthOfMessage,1077 +lengthOfOriginatorLocalTemplate,1078 +lengthOfProjectLocalTemplate,1079 +lengthOfTimeRange,1080 +lev,1081 +levTypeName,1082 +level,1083 +levelIndicator,1084 +levelType,1085 +levelist,1086 +levels,1087 +levtype,1088 +libraryVersion,1089 +listMembersMissing,1090 +listMembersMissing2,1091 +listMembersMissing3,1092 +listMembersMissing4,1093 +listMembersUsed,1094 +listMembersUsed2,1095 +listMembersUsed3,1096 +listMembersUsed4,1097 +listOfContributingSpectralBands,1098 +listOfDistributionFunctionParameter,1099 +listOfEnsembleForecastNumbers,1100 +listOfModelIdentifiers,1101 +listOfParametersUsedForClustering,1102 +listOfScaledFrequencies,1103 +local,1104 +localDateTime,1105 +localDay,1106 +localDecimalScaleFactor,1107 +localDefNumberOne,1108 +localDefNumberTwo,1109 +localDefinition,1110 +localDefinitionNumber,1111 +localDir,1112 +localExtensionPadding,1113 +localFlag,1114 +localFlagLatestVersion,1115 +localHour,1116 +localLatitude,1117 +localLatitude1,1118 +localLatitude2,1119 +localLongitude,1120 +localLongitude1,1121 +localLongitude2,1122 +localMinute,1123 +localMonth,1124 +localNumberOfObservations,1125 +localSecond,1126 +localSection,1127 +localSectionPresent,1128 +localTablesVersion,1129 +localTablesVersionNumber,1130 +localUsePresent,1131 +localYear,1132 +local_padding,1133 +local_use,1134 +logTransform,1135 +longitude,1136 +longitudeFirstInDegrees,1137 +longitudeLastInDegrees,1138 +longitudeOfCenterPoint,1139 +longitudeOfCenterPointInDegrees,1140 +longitudeOfCentralPointInClusterDomain,1141 +longitudeOfFirstDiamondCenterLine,1142 +longitudeOfFirstDiamondCenterLineInDegrees,1143 +longitudeOfFirstGridPoint,1144 +longitudeOfFirstGridPointInDegrees,1145 +longitudeOfIcosahedronPole,1146 +longitudeOfLastGridPoint,1147 +longitudeOfLastGridPointInDegrees,1148 +longitudeOfNorthWestCornerOfArea,1149 +longitudeOfReferencePoint,1150 +longitudeOfReferencePointInDegrees,1151 +longitudeOfSouthEastCornerOfArea,1152 +longitudeOfSouthernPole,1153 +longitudeOfSouthernPoleInDegrees,1154 +longitudeOfStretchingPole,1155 +longitudeOfStretchingPoleInDegrees,1156 +longitudeOfSubSatellitePoint,1157 +longitudeOfSubSatellitePointInDegrees,1158 +longitudeOfTangencyPoint,1159 +longitudeOfThePoleOfStretching,1160 +longitudeOfThePolePoint,1161 +longitudeOfThePolePointInDegrees,1162 +longitudeOfTheSouthernPoleOfProjection,1163 +longitudeSexagesimal,1164 +longitudes,1165 +longitudesList,1166 +longitudinalDirectionGridLength,1167 +lowerLimit,1168 +lowerRange,1169 +lowerThreshold,1170 +lowerThresholdValue,1171 +ls_labeling,1172 +lsdate_bug,1173 +m,1174 +mAngleMultiplier,1175 +mBasicAngle,1176 +mars,1177 +marsClass,1178 +marsClass1,1179 +marsClass2,1180 +marsDir,1181 +marsDomain,1182 +marsEndStep,1183 +marsExperimentOffset,1184 +marsExpver,1185 +marsForecastMonth,1186 +marsGrid,1187 +marsIdent,1188 +marsKeywords,1189 +marsKeywords1,1190 +marsLamModel,1191 +marsLatitude,1192 +marsLevel,1193 +marsLevelist,1194 +marsLongitude,1195 +marsModel,1196 +marsParam,1197 +marsQuantile,1198 +marsRange,1199 +marsStartStep,1200 +marsStep,1201 +marsStream,1202 +marsStream1,1203 +marsStream2,1204 +marsType,1205 +marsType1,1206 +marsType2,1207 +mars_labeling,1208 +mask,1209 +masterDir,1210 +masterTableNumber,1211 +masterTablesVersionNumber,1212 +masterTablesVersionNumberLatest,1213 +matchAerosolBinNumber,1214 +matchAerosolPacking,1215 +matchLandType,1216 +matchSort,1217 +matchTimeRepres,1218 +matrixBitmapsPresent,1219 +matrixOfValues,1220 +max,1221 +maximum,1222 +md5Data,1223 +md5DataSection,1224 +md5GridSection,1225 +md5Headers,1226 +md5Product,1227 +md5Section1,1228 +md5Section10,1229 +md5Section2,1230 +md5Section3,1231 +md5Section4,1232 +md5Section5,1233 +md5Section6,1234 +md5Section7,1235 +md5Section8,1236 +md5Section9,1237 +md5Structure,1238 +md5TimeDomainSection,1239 +meanRVR1,1240 +meanRVR2,1241 +meanRVR3,1242 +meanRVR4,1243 +meanSize,1244 +meanValueRVR1,1245 +meanValueRVR2,1246 +meanValueRVR3,1247 +meanValueRVR4,1248 +meaningOfVerticalCoordinate,1249 +memberNumber,1250 +messageLength,1251 +metadata,1252 +method,1253 +methodNumber,1254 +million,1255 +min,1256 +minimum,1257 +minute,1258 +minuteOfAnalysis,1259 +minuteOfEndOfOverallTimeInterval,1260 +minuteOfForecast,1261 +minuteOfModelVersion,1262 +minuteOfReference,1263 +minutesAfterDataCutoff,1264 +minutesAfterReferenceTimeOfDataCutoff,1265 +missingDataFlag,1266 +missingValue,1267 +missingValueManagement,1268 +missingValueManagementUsed,1269 +missingValuesPresent,1270 +mixedCoordinateDefinition,1271 +mixedCoordinateFieldFlag,1272 +modeNumber,1273 +model,1274 +modelErrorType,1275 +modelIdentifier,1276 +modelName,1277 +modelVersionDate,1278 +modelVersionTime,1279 +molarMass,1280 +month,1281 +monthOfAnalysis,1282 +monthOfEndOfOverallTimeInterval,1283 +monthOfForecast,1284 +monthOfModelVersion,1285 +monthOfReference,1286 +monthlyVerificationDate,1287 +monthlyVerificationMonth,1288 +monthlyVerificationTime,1289 +monthlyVerificationYear,1290 +multiplicationFactorForLatLong,1291 +mybits,1292 +n,1293 +n2,1294 +n3,1295 +na,1296 +name,1297 +nameECMF,1298 +nameOfFirstFixedSurface,1299 +nameOfSecondFixedSurface,1300 +names,1301 +nd,1302 +neitherPresent,1303 +newSubtype,1304 +nlev,1305 +nnn,1306 +normAtFinalTime,1307 +normAtInitialTime,1308 +normal,1309 +northLatitudeOfCluster,1310 +northLatitudeOfDomainOfTubing,1311 +northWestLatitudeOfLPOArea,1312 +northWestLatitudeOfVerficationArea,1313 +northWestLongitudeOfLPOArea,1314 +northWestLongitudeOfVerficationArea,1315 +northernLatitudeOfClusterDomain,1316 +northernLatitudeOfDomain,1317 +nosigPresent,1318 +notDecoded,1319 +nt,1320 +number,1321 +numberInHorizontalCoordinates,1322 +numberInMixedCoordinateDefinition,1323 +numberInTheAuxiliaryArray,1324 +numberInTheGridCoordinateList,1325 +numberIncludedInAverage,1326 +numberMissingFromAveragesOrAccumulations,1327 +numberOfAnalysis,1328 +numberOfBits,1329 +numberOfBitsContainingEachPackedValue,1330 +numberOfBitsForScaledGroupLengths,1331 +numberOfBitsUsedForTheGroupWidths,1332 +numberOfBitsUsedForTheScaledGroupLengths,1333 +numberOfBytesInLocalDefinition,1334 +numberOfBytesOfFreeFormatData,1335 +numberOfBytesPerInteger,1336 +numberOfCategories,1337 +numberOfCharacters,1338 +numberOfChars,1339 +numberOfClusterHighResolution,1340 +numberOfClusterLowResolution,1341 +numberOfClusters,1342 +numberOfCodedValues,1343 +numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction,1344 +numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction,1345 +numberOfColumns,1346 +numberOfComponents,1347 +numberOfContributingSpectralBands,1348 +numberOfControlForecastTube,1349 +numberOfCoordinatesValues,1350 +numberOfDataBinsAlongRadials,1351 +numberOfDataMatrices,1352 +numberOfDataPoints,1353 +numberOfDataPointsExpected,1354 +numberOfDataValues,1355 +numberOfDaysInClimateSamplingWindow,1356 +numberOfDiamonds,1357 +numberOfDirections,1358 +numberOfDistinctSection3s,1359 +numberOfDistinctSection4s,1360 +numberOfDistinctSection5s,1361 +numberOfDistinctSection6s,1362 +numberOfDistinctSection7s,1363 +numberOfDistinctSection8s,1364 +numberOfDistinctSection9s,1365 +numberOfDistributionFunctionParameters,1366 +numberOfEffectiveValues,1367 +numberOfFloats,1368 +numberOfForcasts,1369 +numberOfForecastsInCluster,1370 +numberOfForecastsInEnsemble,1371 +numberOfForecastsInTheCluster,1372 +numberOfForecastsInTube,1373 +numberOfFrequencies,1374 +numberOfGridInReference,1375 +numberOfGridUsed,1376 +numberOfGroups,1377 +numberOfGroupsOfDataValues,1378 +numberOfHorizontalPoints,1379 +numberOfIntegers,1380 +numberOfInts,1381 +numberOfIterations,1382 +numberOfLocalDefinitions,1383 +numberOfLogicals,1384 +numberOfMembersInCluster,1385 +numberOfMembersInEnsemble,1386 +numberOfMissing,1387 +numberOfMissingInStatisticalProcess,1388 +numberOfMissingValues,1389 +numberOfModeOfDistribution,1390 +numberOfModels,1391 +numberOfOctectsForNumberOfPoints,1392 +numberOfOctetsExtraDescriptors,1393 +numberOfOperationalForecastTube,1394 +numberOfPackedValues,1395 +numberOfParallelsBetweenAPoleAndTheEquator,1396 +numberOfParametersUsedForClustering,1397 +numberOfPartitions,1398 +numberOfPoints,1399 +numberOfPointsAlongAMeridian,1400 +numberOfPointsAlongAParallel,1401 +numberOfPointsAlongFirstAxis,1402 +numberOfPointsAlongSecondAxis,1403 +numberOfPointsAlongTheXAxis,1404 +numberOfPointsAlongTheYAxis,1405 +numberOfPointsAlongXAxis,1406 +numberOfPointsAlongXAxisInCouplingArea,1407 +numberOfPointsAlongYAxis,1408 +numberOfPointsAlongYAxisInCouplingArea,1409 +numberOfPointsInDomain,1410 +numberOfPointsUsed,1411 +numberOfPressureLevelsUsedForClustering,1412 +numberOfRadarSitesUsed,1413 +numberOfRadials,1414 +numberOfReforecastYearsInModelClimate,1415 +numberOfRemaininChars,1416 +numberOfRepresentativeMember,1417 +numberOfReservedBytes,1418 +numberOfRows,1419 +numberOfSecondOrderPackedValues,1420 +numberOfSection,1421 +numberOfSingularVectorsComputed,1422 +numberOfSingularVectorsEvolved,1423 +numberOfStepsUsedForClustering,1424 +numberOfSubsets,1425 +numberOfTensOfThousandsOfYearsOfOffset,1426 +numberOfTimeRange,1427 +numberOfTimeSteps,1428 +numberOfUnexpandedDescriptors,1429 +numberOfUnusedBitsAtEndOfSection3,1430 +numberOfUsedSpatialTiles,1431 +numberOfUsedTileAttributes,1432 +numberOfUsefulPointsAlongXAxis,1433 +numberOfUsefulPointsAlongYAxis,1434 +numberOfVGridUsed,1435 +numberOfValues,1436 +numberOfVerticalCoordinateValues,1437 +numberOfVerticalGridDescriptors,1438 +numberOfVerticalPoints,1439 +numberingOrderOfDiamonds,1440 +numericValues,1441 +observablePropertyTemplate,1442 +observablePropertyTemplateNumber,1443 +observationDiagnostic,1444 +observationGeneratingProcessIdentifier,1445 +observationType,1446 +observedData,1447 +obstype,1448 +oceanAtmosphereCoupling,1449 +oceanLevName,1450 +oceanStream,1451 +octetAtWichPackedDataBegins,1452 +offset,1453 +offsetAfterBitmap,1454 +offsetAfterCentreLocalSection,1455 +offsetAfterData,1456 +offsetAfterLocalSection,1457 +offsetAfterPadding,1458 +offsetBBitmap,1459 +offsetBSection5,1460 +offsetBSection6,1461 +offsetBSection9,1462 +offsetBeforeBitmap,1463 +offsetBeforeData,1464 +offsetBeforePL,1465 +offsetBeforePV,1466 +offsetDescriptors,1467 +offsetEndSection4,1468 +offsetFreeFormData,1469 +offsetFromOriginToInnerBound,1470 +offsetFromReferenceOfFirstTime,1471 +offsetICEFieldsUsed,1472 +offsetSection0,1473 +offsetSection1,1474 +offsetSection10,1475 +offsetSection11,1476 +offsetSection2,1477 +offsetSection3,1478 +offsetSection4,1479 +offsetSection5,1480 +offsetSection6,1481 +offsetSection7,1482 +offsetSection8,1483 +offsetSection9,1484 +offsetToEndOf4DvarWindow,1485 +offsetValuesBy,1486 +oldSubtype,1487 +one,1488 +oneConstant,1489 +oneMillionConstant,1490 +oneMinuteMeanMaximumRVR1,1491 +oneMinuteMeanMaximumRVR2,1492 +oneMinuteMeanMaximumRVR3,1493 +oneMinuteMeanMaximumRVR4,1494 +oneMinuteMeanMinimumRVR1,1495 +oneMinuteMeanMinimumRVR2,1496 +oneMinuteMeanMinimumRVR3,1497 +oneMinuteMeanMinimumRVR4,1498 +oneThousand,1499 +oper,1500 +operStream,1501 +operatingMode,1502 +operationalForecastCluster,1503 +optimisationTime,1504 +optimizeScaleFactor,1505 +optionalData,1506 +opttime,1507 +orderOfSPD,1508 +orderOfSpatialDifferencing,1509 +orientationOfTheGrid,1510 +orientationOfTheGridInDegrees,1511 +origin,1512 +originalParameterNumber,1513 +originalParameterTableNumber,1514 +originalSubCentreIdentifier,1515 +originatingCentre,1516 +originatingCentreOfAnalysis,1517 +originatorLocalTemplate,1518 +originatorLocalTemplateNumber,1519 +overlayTemplate,1520 +overlayTemplateNumber,1521 +pack,1522 +packedValues,1523 +packingError,1524 +packingType,1525 +padding,1526 +padding_grid1_1,1527 +padding_grid1_2,1528 +padding_grid3_1,1529 +padding_grid4_1,1530 +padding_grid50_1,1531 +padding_grid5_1,1532 +padding_grid90_1,1533 +padding_loc10_1,1534 +padding_loc13_1,1535 +padding_loc13_2,1536 +padding_loc13_3,1537 +padding_loc13_4,1538 +padding_loc13_5,1539 +padding_loc14_1,1540 +padding_loc14_2,1541 +padding_loc15_1,1542 +padding_loc16_1,1543 +padding_loc17_2,1544 +padding_loc18_1,1545 +padding_loc18_2,1546 +padding_loc190_1,1547 +padding_loc191_1,1548 +padding_loc191_2,1549 +padding_loc191_3,1550 +padding_loc192_1,1551 +padding_loc19_2,1552 +padding_loc20_1,1553 +padding_loc21_1,1554 +padding_loc23_1,1555 +padding_loc244_1,1556 +padding_loc244_2,1557 +padding_loc244_3,1558 +padding_loc245_1,1559 +padding_loc245_2,1560 +padding_loc26_1,1561 +padding_loc27_1,1562 +padding_loc27_2,1563 +padding_loc28_1,1564 +padding_loc29_1,1565 +padding_loc29_2,1566 +padding_loc29_3,1567 +padding_loc2_1,1568 +padding_loc2_2,1569 +padding_loc30_1,1570 +padding_loc30_2,1571 +padding_loc37_1,1572 +padding_loc37_2,1573 +padding_loc38_1,1574 +padding_loc3_1,1575 +padding_loc4_2,1576 +padding_loc50_1,1577 +padding_loc5_1,1578 +padding_loc6_1,1579 +padding_loc7_1,1580 +padding_loc9_1,1581 +padding_loc9_2,1582 +padding_local11_1,1583 +padding_local1_1,1584 +padding_local1_31,1585 +padding_local40_1,1586 +padding_local_35,1587 +padding_local_7_1,1588 +padding_sec1_loc,1589 +padding_sec2_1,1590 +padding_sec2_2,1591 +padding_sec2_3,1592 +padding_sec3_1,1593 +padding_sec4_1,1594 +paleontologicalOffset,1595 +param,1596 +paramId,1597 +paramIdECMF,1598 +parameter,1599 +parameterCategory,1600 +parameterCode,1601 +parameterDiscipline,1602 +parameterIndicator,1603 +parameterName,1604 +parameterNumber,1605 +parameterUnits,1606 +parameters,1607 +parametersVersion,1608 +partitionItems,1609 +partitionNumber,1610 +partitionTable,1611 +partitions,1612 +pastTendencyRVR1,1613 +pastTendencyRVR2,1614 +pastTendencyRVR3,1615 +pastTendencyRVR4,1616 +patch_precip_fp,1617 +pentagonalResolutionParameterJ,1618 +pentagonalResolutionParameterK,1619 +pentagonalResolutionParameterM,1620 +percentileValue,1621 +periodOfTime,1622 +periodOfTimeIntervals,1623 +perturbationNumber,1624 +perturbedType,1625 +phase,1626 +physicalFlag1,1627 +physicalFlag2,1628 +physicalMeaningOfVerticalCoordinate,1629 +pl,1630 +platform,1631 +plusOneinOrdersOfSPD,1632 +points,1633 +postAuxiliary,1634 +postAuxiliaryArrayPresent,1635 +powerOfTenUsedToScaleClimateWeight,1636 +preBitmapValues,1637 +preProcessingParameter,1638 +precision,1639 +precisionOfTheUnpackedSubset,1640 +predefined_grid,1641 +predefined_grid_values,1642 +present,1643 +presentTrend1,1644 +presentTrend2,1645 +presentTrend3,1646 +presentTrend4,1647 +presentWeather1Present,1648 +presentWeather1PresentTrend1,1649 +presentWeather1PresentTrend2,1650 +presentWeather1PresentTrend3,1651 +presentWeather1PresentTrend4,1652 +presentWeather2Present,1653 +presentWeather2PresentTrend1,1654 +presentWeather2PresentTrend2,1655 +presentWeather2PresentTrend3,1656 +presentWeather2PresentTrend4,1657 +presentWeather3Present,1658 +presentWeather3PresentTrend1,1659 +presentWeather3PresentTrend2,1660 +presentWeather3PresentTrend3,1661 +presentWeather3PresentTrend4,1662 +pressureLevel,1663 +pressureUnits,1664 +primaryBitmap,1665 +primaryMissingValue,1666 +primaryMissingValueSubstitute,1667 +probContinous,1668 +probPoint,1669 +probProductDefinition,1670 +probabilityType,1671 +probabilityTypeName,1672 +process,1673 +produceLargeConstantFields,1674 +product,1675 +productDefinition,1676 +productDefinitionTemplateNumber,1677 +productDefinitionTemplateNumberInternal,1678 +productIdentifier,1679 +productType,1680 +productionStatusOfProcessedData,1681 +projectLocalTemplate,1682 +projectLocalTemplateNumber,1683 +projectionCenterFlag,1684 +projectionCentreFlag,1685 +pv,1686 +pvlLocation,1687 +qfe,1688 +qfePresent,1689 +qfeUnits,1690 +qnh,1691 +qnhAPresent,1692 +qnhPresent,1693 +qnhUnits,1694 +qualityControl,1695 +qualityControlIndicator,1696 +qualityValueAssociatedWithParameter,1697 +quantile,1698 +radialAngularSpacing,1699 +radials,1700 +radius,1701 +radiusInMetres,1702 +radiusOfCentralCluster,1703 +radiusOfClusterDomain,1704 +radiusOfTheEarth,1705 +range,1706 +rangeBinSpacing,1707 +rdbDateTime,1708 +rdbSubtype,1709 +rdbType,1710 +rdb_key,1711 +rdbtime,1712 +rdbtimeDate,1713 +rdbtimeDay,1714 +rdbtimeHour,1715 +rdbtimeMinute,1716 +rdbtimeMonth,1717 +rdbtimeSecond,1718 +rdbtimeTime,1719 +rdbtimeYear,1720 +realPart,1721 +realPartOf00,1722 +recDateTime,1723 +recentWeather,1724 +recentWeatherTry,1725 +rectime,1726 +rectimeDay,1727 +rectimeHour,1728 +rectimeMinute,1729 +rectimeSecond,1730 +reducedGrid,1731 +refdate,1732 +reference,1733 +referenceDate,1734 +referenceForGroupLengths,1735 +referenceForGroupWidths,1736 +referenceOfLengths,1737 +referenceOfWidths,1738 +referenceReflectivityForEchoTop,1739 +referenceSampleInterval,1740 +referenceStep,1741 +referenceValue,1742 +referenceValueError,1743 +reflectivityCalibrationConstant,1744 +remarkPresent,1745 +reportType,1746 +representationMode,1747 +representationType,1748 +representativeMember,1749 +reserved,1750 +reserved1,1751 +reserved2,1752 +reserved3,1753 +reservedNeedNotBePresent,1754 +reservedOctet,1755 +reservedSection2,1756 +reservedSection3,1757 +reservedSection4,1758 +resolutionAndComponentFlags,1759 +resolutionAndComponentFlags1,1760 +resolutionAndComponentFlags2,1761 +resolutionAndComponentFlags3,1762 +resolutionAndComponentFlags4,1763 +resolutionAndComponentFlags6,1764 +resolutionAndComponentFlags7,1765 +resolutionAndComponentFlags8,1766 +rootGroupObjectHeaderAddress,1767 +rootGroupSymbolTableEntry,1768 +rootTablesDir,1769 +roundedMarsLatitude,1770 +roundedMarsLevelist,1771 +roundedMarsLongitude,1772 +runwayBrakingActionState1,1773 +runwayBrakingActionState2,1774 +runwayBrakingActionState3,1775 +runwayBrakingActionState4,1776 +runwayDepositCodeState1,1777 +runwayDepositCodeState2,1778 +runwayDepositCodeState3,1779 +runwayDepositCodeState4,1780 +runwayDepositState1,1781 +runwayDepositState2,1782 +runwayDepositState3,1783 +runwayDepositState4,1784 +runwayDepthOfDepositCodeState1,1785 +runwayDepthOfDepositCodeState2,1786 +runwayDepthOfDepositCodeState3,1787 +runwayDepthOfDepositCodeState4,1788 +runwayDepthOfDepositState1,1789 +runwayDepthOfDepositState2,1790 +runwayDepthOfDepositState3,1791 +runwayDepthOfDepositState4,1792 +runwayDesignatorRVR1,1793 +runwayDesignatorRVR2,1794 +runwayDesignatorRVR3,1795 +runwayDesignatorRVR4,1796 +runwayDesignatorState1,1797 +runwayDesignatorState2,1798 +runwayDesignatorState3,1799 +runwayDesignatorState4,1800 +runwayExtentOfContaminationCodeState1,1801 +runwayExtentOfContaminationCodeState2,1802 +runwayExtentOfContaminationCodeState3,1803 +runwayExtentOfContaminationCodeState4,1804 +runwayExtentOfContaminationState1,1805 +runwayExtentOfContaminationState2,1806 +runwayExtentOfContaminationState3,1807 +runwayExtentOfContaminationState4,1808 +runwayFrictionCodeValueState1,1809 +runwayFrictionCodeValueState2,1810 +runwayFrictionCodeValueState3,1811 +runwayFrictionCodeValueState4,1812 +runwayFrictionCoefficientCodeState1,1813 +runwayFrictionCoefficientCodeState2,1814 +runwayFrictionCoefficientCodeState3,1815 +runwayFrictionCoefficientCodeState4,1816 +runwayFrictionCoefficientState1,1817 +runwayFrictionCoefficientState2,1818 +runwayFrictionCoefficientState3,1819 +runwayFrictionCoefficientState4,1820 +runwaySideCodeState1,1821 +runwaySideCodeState2,1822 +runwaySideCodeState3,1823 +runwaySideCodeState4,1824 +runwayState,1825 +sampleSizeOfModelClimate,1826 +satelliteID,1827 +satelliteIdentifier,1828 +satelliteNumber,1829 +satelliteSeries,1830 +scaleFactorAtReferencePoint,1831 +scaleFactorOfCentralWaveNumber,1832 +scaleFactorOfDistanceFromEnsembleMean,1833 +scaleFactorOfDistributionFunctionParameter,1834 +scaleFactorOfEarthMajorAxis,1835 +scaleFactorOfEarthMinorAxis,1836 +scaleFactorOfFirstFixedSurface,1837 +scaleFactorOfFirstSize,1838 +scaleFactorOfFirstWavelength,1839 +scaleFactorOfLengthOfSemiMajorAxis,1840 +scaleFactorOfLengthOfSemiMinorAxis,1841 +scaleFactorOfLowerLimit,1842 +scaleFactorOfMajorAxisOfOblateSpheroidEarth,1843 +scaleFactorOfMinorAxisOfOblateSpheroidEarth,1844 +scaleFactorOfPrimeMeridianOffset,1845 +scaleFactorOfRadiusOfSphericalEarth,1846 +scaleFactorOfSecondFixedSurface,1847 +scaleFactorOfSecondSize,1848 +scaleFactorOfSecondWavelength,1849 +scaleFactorOfStandardDeviation,1850 +scaleFactorOfStandardDeviationInTheCluster,1851 +scaleFactorOfUpperLimit,1852 +scaleValuesBy,1853 +scaledDirections,1854 +scaledFrequencies,1855 +scaledValueOfCentralWaveNumber,1856 +scaledValueOfDistanceFromEnsembleMean,1857 +scaledValueOfDistributionFunctionParameter,1858 +scaledValueOfEarthMajorAxis,1859 +scaledValueOfEarthMinorAxis,1860 +scaledValueOfFirstFixedSurface,1861 +scaledValueOfFirstSize,1862 +scaledValueOfFirstWavelength,1863 +scaledValueOfLengthOfSemiMajorAxis,1864 +scaledValueOfLengthOfSemiMinorAxis,1865 +scaledValueOfLowerLimit,1866 +scaledValueOfMajorAxisOfOblateSpheroidEarth,1867 +scaledValueOfMinorAxisOfOblateSpheroidEarth,1868 +scaledValueOfPrimeMeridianOffset,1869 +scaledValueOfRadiusOfSphericalEarth,1870 +scaledValueOfSecondFixedSurface,1871 +scaledValueOfSecondSize,1872 +scaledValueOfSecondWavelength,1873 +scaledValueOfStandardDeviation,1874 +scaledValueOfStandardDeviationInTheCluster,1875 +scaledValueOfUpperLimit,1876 +scalingFactorForFrequencies,1877 +scanPosition,1878 +scanningMode,1879 +scanningMode4,1880 +scanningMode5,1881 +scanningMode6,1882 +scanningMode7,1883 +scanningMode8,1884 +scanningModeForOneDiamond,1885 +sd,1886 +second,1887 +secondDimension,1888 +secondDimensionCoordinateValueDefinition,1889 +secondDimensionPhysicalSignificance,1890 +secondLatitude,1891 +secondLatitudeInDegrees,1892 +secondOfEndOfOverallTimeInterval,1893 +secondOfForecast,1894 +secondOfModelVersion,1895 +secondOrderFlags,1896 +secondOrderOfDifferentWidth,1897 +secondOrderValuesDifferentWidths,1898 +secondaryBitMap,1899 +secondaryBitmap,1900 +secondaryBitmapPresent,1901 +secondaryBitmaps,1902 +secondaryBitmapsCount,1903 +secondaryBitmapsSize,1904 +secondaryMissingValue,1905 +secondaryMissingValueSubstitute,1906 +secondsOfAnalysis,1907 +secondsOfReference,1908 +section,1909 +section0Length,1910 +section0Pointer,1911 +section1,1912 +section10Length,1913 +section10Pointer,1914 +section11Length,1915 +section11Pointer,1916 +section1Flags,1917 +section1Length,1918 +section1Padding,1919 +section1Pointer,1920 +section2Length,1921 +section2Padding,1922 +section2Pointer,1923 +section2Present,1924 +section2Used,1925 +section3Flags,1926 +section3Length,1927 +section3Padding,1928 +section3Pointer,1929 +section3UniqueIdentifier,1930 +section4,1931 +section4Length,1932 +section4Padding,1933 +section4Pointer,1934 +section4UniqueIdentifier,1935 +section5,1936 +section5Length,1937 +section5Pointer,1938 +section5UniqueIdentifier,1939 +section6,1940 +section6Length,1941 +section6Pointer,1942 +section6UniqueIdentifier,1943 +section7,1944 +section7Length,1945 +section7Pointer,1946 +section7UniqueIdentifier,1947 +section8,1948 +section8Length,1949 +section8Pointer,1950 +section8UniqueIdentifier,1951 +section9Length,1952 +section9Pointer,1953 +section9UniqueIdentifier,1954 +sectionLengthLimitForEnsembles,1955 +sectionLengthLimitForProbability,1956 +sectionNumber,1957 +sectionPosition,1958 +section_01,1959 +section_02,1960 +section_03,1961 +section_04,1962 +section_05,1963 +section_06,1964 +section_07,1965 +section_08,1966 +section_09,1967 +section_1,1968 +section_10,1969 +section_11,1970 +section_2,1971 +section_3,1972 +section_4,1973 +section_5,1974 +section_6,1975 +section_7,1976 +section_8,1977 +selectStepTemplateInstant,1978 +selectStepTemplateInterval,1979 +sensitiveAreaDomain,1980 +sequences,1981 +setBitsPerValue,1982 +setCalendarId,1983 +setDecimalPrecision,1984 +setLocalDefinition,1985 +setToMissingIfOutOfRange,1986 +sfc_levtype,1987 +shapeOfTheEarth,1988 +shapeOfVerificationArea,1989 +shortName,1990 +shortNameECMF,1991 +short_name,1992 +signature,1993 +significanceOfReferenceDateAndTime,1994 +significanceOfReferenceTime,1995 +simpleThinningMissingRadius,1996 +simpleThinningSkip,1997 +simpleThinningStart,1998 +siteElevation,1999 +siteId,2000 +siteLatitude,2001 +siteLongitude,2002 +sizeOfLength,2003 +sizeOfOffsets,2004 +sizeOfPostAuxiliaryArray,2005 +sizeOfPostAuxiliaryArrayPlusOne,2006 +skew,2007 +skewness,2008 +skipExtraKeyAttributes,2009 +sort,2010 +sourceOfGridDefinition,2011 +southEastLatitudeOfLPOArea,2012 +southEastLatitudeOfVerficationArea,2013 +southEastLongitudeOfLPOArea,2014 +southEastLongitudeOfVerficationArea,2015 +southLatitudeOfCluster,2016 +southLatitudeOfDomainOfTubing,2017 +southPoleOnProjectionPlane,2018 +southernLatitudeOfClusterDomain,2019 +southernLatitudeOfDomain,2020 +sp1,2021 +sp2,2022 +sp3,2023 +spaceUnitFlag,2024 +spacingOfBinsAlongRadials,2025 +spare,2026 +spare2,2027 +spatialProcessing,2028 +spatialSmoothingOfProduct,2029 +spectralDataRepresentationMode,2030 +spectralDataRepresentationType,2031 +spectralMode,2032 +spectralType,2033 +sphericalHarmonics,2034 +standardDeviation,2035 +standardParallel,2036 +standardParallelInDegrees,2037 +standardParallelInMicrodegrees,2038 +startOfHeaders,2039 +startOfMessage,2040 +startOfRange,2041 +startStep,2042 +startStepInHours,2043 +startTimeStep,2044 +startingAzimuth,2045 +statisticalProcess,2046 +statisticalProcessesList,2047 +statistics,2048 +status,2049 +step,2050 +stepForClustering,2051 +stepInHours,2052 +stepRange,2053 +stepRangeInHours,2054 +stepType,2055 +stepTypeForConversion,2056 +stepTypeInternal,2057 +stepUnits,2058 +stepZero,2059 +stream,2060 +streamOfAnalysis,2061 +stretchingFactor,2062 +stretchingFactorScaled,2063 +stringValues,2064 +subCentre,2065 +subDefinitions1,2066 +subDefinitions2,2067 +subLocalDefinition1,2068 +subLocalDefinition2,2069 +subLocalDefinitionLength1,2070 +subLocalDefinitionLength2,2071 +subLocalDefinitionNumber1,2072 +subLocalDefinitionNumber2,2073 +subSetJ,2074 +subSetK,2075 +subSetM,2076 +subcentreOfAnalysis,2077 +subdivisionsOfBasicAngle,2078 +suiteName,2079 +superblockExtensionAddress,2080 +swapScanningLat,2081 +swapScanningLon,2082 +swapScanningX,2083 +swapScanningY,2084 +system,2085 +systemNumber,2086 +t,2087 +table2Version,2088 +tableCode,2089 +tableNumber,2090 +tableReference,2091 +tablesLocalDir,2092 +tablesMasterDir,2093 +tablesVersion,2094 +tablesVersionLatest,2095 +targetCompressionRatio,2096 +td,2097 +tempPressureUnits,2098 +temperature,2099 +temperatureAndDewpointPresent,2100 +templatesLocalDir,2101 +templatesMasterDir,2102 +theHindcastMarsStream,2103 +theMessage,2104 +thisExperimentVersionNumber,2105 +thisMarsClass,2106 +thisMarsStream,2107 +thisMarsType,2108 +thousand,2109 +three,2110 +threshold,2111 +thresholdIndicator,2112 +tiggeCentre,2113 +tiggeLAMName,2114 +tiggeLocalVersion,2115 +tiggeModel,2116 +tiggeSection,2117 +tiggeSuiteID,2118 +tigge_name,2119 +tigge_short_name,2120 +tileClassification,2121 +tileIndex,2122 +time,2123 +timeCoordinateDefinition,2124 +timeDomainTemplate,2125 +timeDomainTemplateNumber,2126 +timeIncrement,2127 +timeIncrementBetweenSuccessiveFields,2128 +timeOfAnalysis,2129 +timeOfForecast,2130 +timeOfModelVersion,2131 +timeOfReference,2132 +timeRangeIndicator,2133 +timeRangeIndicatorFromStepRange,2134 +timeUnitFlag,2135 +timerepres,2136 +topLevel,2137 +total,2138 +totalAerosolBinsNumbers,2139 +totalInitialConditions,2140 +totalLength,2141 +totalNumber,2142 +totalNumberOfClusters,2143 +totalNumberOfDataValuesMissingInStatisticalProcess,2144 +totalNumberOfDirections,2145 +totalNumberOfForecastProbabilities,2146 +totalNumberOfFrequencies,2147 +totalNumberOfGridPoints,2148 +totalNumberOfIterations,2149 +totalNumberOfRepetitions,2150 +totalNumberOfTileAttributePairs,2151 +totalNumberOfTubes,2152 +totalNumberOfValuesInUnpackedSubset,2153 +totalNumberOfdimensions,2154 +treatmentOfMissingData,2155 +true,2156 +trueLengthOfLastGroup,2157 +truncateDegrees,2158 +truncateLaplacian,2159 +tsectionNumber3,2160 +tsectionNumber4,2161 +tsectionNumber5,2162 +tubeDomain,2163 +tubeNumber,2164 +two,2165 +twoOrdersOfSPD,2166 +type,2167 +typeOfAnalysis,2168 +typeOfAuxiliaryInformation,2169 +typeOfCalendar,2170 +typeOfCompressionUsed,2171 +typeOfDistributionFunction,2172 +typeOfEnsembleForecast,2173 +typeOfEnsembleMember,2174 +typeOfFirstFixedSurface,2175 +typeOfGeneratingProcess,2176 +typeOfGrid,2177 +typeOfHorizontalLine,2178 +typeOfIntervalForFirstAndSecondSize,2179 +typeOfIntervalForFirstAndSecondWavelength,2180 +typeOfLevel,2181 +typeOfLevelECMF,2182 +typeOfOriginalFieldValues,2183 +typeOfPacking,2184 +typeOfPostProcessing,2185 +typeOfPreProcessing,2186 +typeOfProcessedData,2187 +typeOfSSTFieldUsed,2188 +typeOfSecondFixedSurface,2189 +typeOfSizeInterval,2190 +typeOfStatisticalPostProcessingOfEnsembleMembers,2191 +typeOfStatisticalProcessing,2192 +typeOfTimeIncrement,2193 +typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing,2194 +typeOfWavelengthInterval,2195 +typicalCentury,2196 +typicalDate,2197 +typicalDateTime,2198 +typicalDay,2199 +typicalHour,2200 +typicalMinute,2201 +typicalMonth,2202 +typicalSecond,2203 +typicalTime,2204 +typicalYear,2205 +typicalYear2,2206 +typicalYearOfCentury,2207 +uco,2208 +ucs,2209 +unexpandedDescriptors,2210 +unexpandedDescriptorsEncoded,2211 +unitOfOffsetFromReferenceTime,2212 +unitOfTime,2213 +unitOfTimeIncrement,2214 +unitOfTimeRange,2215 +units,2216 +unitsBias,2217 +unitsConversionOffset,2218 +unitsConversionScaleFactor,2219 +unitsDecimalScaleFactor,2220 +unitsECMF,2221 +unitsFactor,2222 +unitsOfFirstFixedSurface,2223 +unitsOfSecondFixedSurface,2224 +unknown,2225 +unpack,2226 +unpackedError,2227 +unpackedSubsetPrecision,2228 +unpackedValues,2229 +unsignedIntegers,2230 +unusedBitsInBitmap,2231 +updateSequenceNumber,2232 +upperLimit,2233 +upperRange,2234 +upperThreshold,2235 +upperThresholdValue,2236 +userDateEnd,2237 +userDateStart,2238 +userDateTimeEnd,2239 +userDateTimeStart,2240 +userTimeEnd,2241 +userTimeStart,2242 +uuidOfHGrid,2243 +uuidOfVGrid,2244 +uvRelativeToGrid,2245 +validityDate,2246 +validityTime,2247 +values,2248 +variationOfVisibility,2249 +variationOfVisibilityDirection,2250 +variationOfVisibilityDirectionAngle,2251 +variationOfVisibilityDirectionTrend1,2252 +variationOfVisibilityDirectionTrend2,2253 +variationOfVisibilityDirectionTrend3,2254 +variationOfVisibilityDirectionTrend4,2255 +variationOfVisibilityTrend1,2256 +variationOfVisibilityTrend2,2257 +variationOfVisibilityTrend3,2258 +variationOfVisibilityTrend4,2259 +varno,2260 +verificationDate,2261 +verificationMonth,2262 +verificationYear,2263 +verifyingMonth,2264 +version,2265 +versionNumOfFilesFreeSpaceStorage,2266 +versionNumOfRootGroupSymbolTableEntry,2267 +versionNumOfSharedHeaderMessageFormat,2268 +versionNumberOfExperimentalSuite,2269 +versionNumberOfGribLocalTables,2270 +versionNumberOfSuperblock,2271 +versionOfModelClimate,2272 +verticalCoordinate,2273 +verticalCoordinateDefinition,2274 +verticalDomainTemplate,2275 +verticalDomainTemplateNumber,2276 +verticalVisibility,2277 +verticalVisibilityCoded,2278 +visibility,2279 +visibilityInKilometresTrend1,2280 +visibilityInKilometresTrend2,2281 +visibilityInKilometresTrend3,2282 +visibilityInKilometresTrend4,2283 +visibilityTrend1,2284 +visibilityTrend2,2285 +visibilityTrend3,2286 +visibilityTrend4,2287 +waveDomain,2288 +weightAppliedToClimateMonth1,2289 +westLongitudeOfCluster,2290 +westLongitudeOfDomainOfTubing,2291 +westernLongitudeOfClusterDomain,2292 +westernLongitudeOfDomain,2293 +widthOfFirstOrderValues,2294 +widthOfLengths,2295 +widthOfSPD,2296 +widthOfWidths,2297 +windDirection,2298 +windDirectionTrend1,2299 +windDirectionTrend2,2300 +windDirectionTrend3,2301 +windDirectionTrend4,2302 +windGust,2303 +windGustTrend1,2304 +windGustTrend2,2305 +windGustTrend3,2306 +windGustTrend4,2307 +windPresent,2308 +windSpeed,2309 +windSpeedTrend1,2310 +windSpeedTrend2,2311 +windSpeedTrend3,2312 +windSpeedTrend4,2313 +windUnits,2314 +windUnitsTrend1,2315 +windUnitsTrend2,2316 +windUnitsTrend3,2317 +windUnitsTrend4,2318 +windVariableDirection,2319 +windVariableDirectionTrend1,2320 +windVariableDirectionTrend2,2321 +windVariableDirectionTrend3,2322 +windVariableDirectionTrend4,2323 +wrongPadding,2324 +xCoordinateOfOriginOfSectorImage,2325 +xCoordinateOfSubSatellitePoint,2326 +xDirectionGridLength,2327 +xDirectionGridLengthInMetres,2328 +xDirectionGridLengthInMillimetres,2329 +xFirst,2330 +xLast,2331 +yCoordinateOfOriginOfSectorImage,2332 +yCoordinateOfSubSatellitePoint,2333 +yDirectionGridLength,2334 +yDirectionGridLengthInMetres,2335 +yDirectionGridLengthInMillimetres,2336 +yFirst,2337 +yLast,2338 +year,2339 +yearOfAnalysis,2340 +yearOfCentury,2341 +yearOfEndOfOverallTimeInterval,2342 +yearOfForecast,2343 +yearOfModelVersion,2344 +yearOfReference,2345 +zero,2346 From 91249430dce902dd21d8b9c7455964a83d7d237e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 19 Jul 2019 15:41:06 +0100 Subject: [PATCH 336/414] Update list of keys and hash and remove #line pragmas --- src/grib_hash_keys.c | 6493 +++++++++++++----------------------------- 1 file changed, 2029 insertions(+), 4464 deletions(-) diff --git a/src/grib_hash_keys.c b/src/grib_hash_keys.c index 0d698dce4..e9e8ad85f 100644 --- a/src/grib_hash_keys.c +++ b/src/grib_hash_keys.c @@ -29,19 +29,17 @@ error "gperf generated tables don't work with this execution character set. Please report a bug to ." #endif -#line 1 "../tests/keys" #include "grib_api_internal.h" -#line 4 "../tests/keys" struct grib_keys_hash { char* name; int id;}; #include -#define TOTAL_KEYWORDS 2345 +#define TOTAL_KEYWORDS 2346 #define MIN_WORD_LENGTH 1 #define MAX_WORD_LENGTH 74 #define MIN_HASH_VALUE 3 -#define MAX_HASH_VALUE 30506 -/* maximum key range = 30504, duplicates = 0 */ +#define MAX_HASH_VALUE 29990 +/* maximum key range = 29988, duplicates = 0 */ #ifdef __GNUC__ @@ -51,36 +49,38 @@ struct grib_keys_hash { char* name; int id;}; #endif #endif static unsigned int -hash_keys (const char *str, unsigned int len) +hash_keys (str, len) + register const char *str; + register unsigned int len; { static const unsigned short asso_values[] = { - 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, - 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, - 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, - 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, - 30507, 30507, 1, 30507, 30507, 1, 30507, 30507, 61, 1915, - 1983, 2282, 2412, 1777, 2535, 2422, 664, 95, 4, 1, - 2, 1, 30507, 30507, 30507, 1712, 3978, 1713, 109, 865, - 381, 751, 3460, 1981, 1946, 1685, 434, 1555, 345, 176, + 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, + 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, + 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, + 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, + 29991, 29991, 1, 29991, 29991, 1, 29991, 29991, 61, 1915, + 1983, 2282, 2412, 1777, 2535, 2422, 778, 95, 4, 1, + 2, 1, 29991, 29991, 29991, 1712, 3978, 1713, 109, 865, + 381, 751, 3460, 1981, 2091, 1169, 434, 1555, 345, 176, 997, 184, 418, 150, 86, 4560, 595, 2054, 446, 3296, - 424, 1, 1, 30507, 1, 1795, 30507, 5, 26, 59, + 424, 1, 1, 29991, 1, 1795, 29991, 5, 26, 59, 1, 2, 334, 130, 73, 10, 1800, 2391, 78, 7, 1, 20, 29, 574, 1, 8, 4, 61, 174, 564, - 124, 22, 614, 95, 897, 4, 30507, 30507, 30507, 30507, - 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, - 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, - 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, - 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, - 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, - 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, - 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, - 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, - 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, - 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, - 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, - 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, - 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507, 30507 + 124, 22, 614, 95, 897, 4, 29991, 29991, 29991, 29991, + 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, + 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, + 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, + 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, + 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, + 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, + 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, + 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, + 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, + 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, + 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, + 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, + 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991, 29991 }; register int hval = len; @@ -248,12 +248,12 @@ static const unsigned char lengthtable[] = 0, 9, 0, 0, 0, 20, 0, 0, 0, 22, 22, 0, 13, 14, 0, 13, 0, 0, 0, 0, 3, 0, 0, 12, 10, 0, 17, 15, 27, 0, 0, 0, 0, 0, 20, 0, 15, 0, 0, 0, 12, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 11, 14, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 31, 37, 23, 0, 0, 0, 0, 0, 0, 10, 32, 0, 0, 0, - 0, 10, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, + 8, 10, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 13, 0, 0, 0, 0, 14, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 0, 12, 0, 0, 0, 2, 31, 14, 0, @@ -267,10 +267,10 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 19, 0, 0, 19, 16, 0, 0, 0, 25, 0, 0, 0, 0, 0, 8, 0, 17, 14, 0, 0, 0, 11, 21, 0, 0, 0, 15, 27, 19, 0, - 16, 14, 0, 0, 25, 0, 14, 0, 0, 14, 14, 0, 8, 0, + 16, 14, 0, 0, 25, 0, 14, 0, 0, 14, 14, 0, 0, 0, 0, 16, 12, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 17, 44, 0, 0, 23, 0, 0, 27, 0, 0, 22, 0, 0, 0, 0, - 0, 0, 11, 17, 0, 12, 0, 0, 0, 26, 27, 0, 0, 0, + 0, 2, 11, 17, 0, 12, 0, 0, 0, 26, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 30, 0, 15, 19, 18, 0, 28, 0, 0, 30, 24, 0, 0, 15, 0, 0, 16, 0, 0, 0, 15, 0, 0, 0, 0, 0, 23, 0, 0, @@ -284,12 +284,12 @@ static const unsigned char lengthtable[] = 0, 21, 0, 24, 16, 0, 26, 27, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 15, 0, 0, 0, 14, 3, 0, 20, 0, 0, 26, 0, 0, 0, 16, 0, 0, 24, 0, 0, 0, 23, 0, 20, - 19, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 10, 0, 0, + 19, 0, 8, 0, 0, 0, 20, 0, 0, 0, 0, 10, 0, 0, 28, 13, 0, 0, 0, 21, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 15, 0, 0, 15, 0, 12, 0, 0, 0, 0, 0, 16, 18, 0, 18, 0, 0, 0, 0, 0, 0, 0, 16, 0, 21, 0, 0, 0, 0, 14, 0, - 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 8, 18, + 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 31, 0, 0, 0, 0, 13, 21, 0, 0, 16, 0, 0, 9, 0, 0, 0, 18, 0, 0, 0, 15, 0, 0, 0, 30, 0, 0, 0, 15, 23, 0, 0, 0, 21, 0, 0, 10, 0, 0, 0, @@ -306,7 +306,7 @@ static const unsigned char lengthtable[] = 29, 0, 0, 0, 0, 12, 0, 10, 0, 30, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 42, 13, 0, 0, 11, 0, 11, 0, 0, 22, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, - 0, 0, 10, 0, 12, 13, 0, 0, 0, 0, 0, 14, 0, 2, + 0, 0, 10, 0, 12, 13, 0, 0, 0, 0, 0, 14, 0, 0, 0, 13, 0, 0, 0, 0, 0, 1, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 18, 17, 0, 0, 6, 22, 0, 0, 0, 0, 14, 10, 0, 0, 9, 0, 0, 28, 0, 0, 14, @@ -316,7 +316,7 @@ static const unsigned char lengthtable[] = 0, 44, 0, 16, 0, 0, 31, 0, 0, 18, 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 10, 8, 0, 0, 0, 0, 23, 0, 23, 21, 0, 0, 0, 0, 0, 0, - 0, 0, 24, 9, 0, 0, 0, 0, 9, 0, 22, 0, 12, 0, + 0, 0, 24, 9, 0, 0, 0, 0, 9, 12, 22, 0, 12, 0, 0, 0, 13, 24, 0, 9, 0, 0, 0, 11, 15, 11, 0, 0, 11, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 10, 18, 0, 20, 0, 0, 11, 0, 25, 0, @@ -325,17 +325,17 @@ static const unsigned char lengthtable[] = 0, 6, 21, 9, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 6, 30, 0, 12, 0, 21, 0, 0, 19, 3, 0, 0, 0, 42, 19, 0, 24, - 0, 0, 0, 0, 0, 0, 39, 0, 2, 19, 10, 0, 0, 15, + 0, 0, 0, 0, 0, 0, 39, 0, 0, 19, 10, 0, 0, 15, 0, 2, 0, 0, 0, 0, 0, 0, 6, 31, 0, 21, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 42, 0, 10, 0, 0, 0, 0, 18, 8, 21, 0, 0, 22, 18, 0, 0, 27, 0, 0, 0, 0, 0, 19, 27, 0, 0, 0, 0, 0, 0, 0, 0, 17, 15, 16, 14, 0, 18, 34, 0, 19, 0, 0, 0, 0, 0, 13, 0, 0, 27, 28, 0, 0, 13, 20, 0, 0, 12, 0, 0, 9, 0, - 0, 14, 10, 2, 16, 28, 0, 0, 0, 21, 16, 3, 22, 20, + 0, 1, 10, 2, 16, 28, 0, 0, 0, 21, 16, 3, 22, 20, 0, 0, 11, 0, 13, 0, 0, 0, 37, 0, 0, 0, 0, 0, 22, 0, 16, 0, 25, 0, 24, 0, 0, 0, 0, 0, 0, 0, - 0, 27, 0, 0, 0, 0, 17, 15, 18, 23, 0, 35, 0, 0, + 0, 27, 0, 0, 0, 0, 17, 15, 18, 23, 0, 35, 0, 2, 0, 0, 0, 0, 0, 0, 0, 28, 26, 0, 0, 0, 0, 0, 0, 20, 0, 20, 15, 0, 0, 0, 12, 0, 19, 25, 14, 0, 0, 16, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, @@ -343,131 +343,131 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 20, 13, 0, 4, 10, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 13, 19, 12, 0, 0, 0, 0, 13, 0, 0, 22, 0, 30, 0, - 0, 12, 14, 0, 15, 16, 0, 0, 9, 0, 13, 0, 14, 28, + 0, 12, 14, 0, 15, 16, 28, 0, 9, 0, 13, 0, 14, 28, 16, 0, 12, 0, 34, 0, 22, 0, 0, 0, 9, 0, 30, 8, 0, 0, 0, 0, 0, 0, 21, 0, 22, 0, 0, 0, 24, 0, 0, 0, 0, 10, 0, 12, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 0, 15, 0, 0, 0, 31, 42, 0, 0, - 0, 3, 16, 0, 0, 0, 22, 0, 0, 0, 0, 0, 17, 0, + 0, 3, 16, 0, 0, 14, 22, 0, 0, 0, 0, 0, 17, 0, 11, 16, 0, 0, 17, 0, 0, 0, 6, 0, 29, 3, 0, 32, - 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, + 0, 11, 0, 0, 0, 0, 7, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 17, 0, 9, 0, 0, 0, 0, 31, 0, 0, 0, 0, 9, 0, - 0, 15, 0, 0, 0, 13, 0, 12, 0, 0, 20, 0, 0, 23, + 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 20, 0, 0, 23, 22, 0, 0, 18, 0, 0, 0, 0, 11, 0, 24, 30, 0, 0, 23, 0, 13, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 35, 0, 0, 0, 0, 35, 0, 21, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 26, 0, 13, 0, 0, 26, 0, 15, 0, - 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 16, 21, 0, 0, - 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 39, 40, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 21, 0, 0, + 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 22, 25, 24, 0, 0, 0, 0, 23, 14, 14, 0, 0, 13, 18, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, + 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 29, 0, 3, 20, 0, 28, 11, 0, 0, 0, 0, 0, 18, 31, 0, 0, 0, 0, 0, 0, 14, 11, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 12, 0, 0, 0, 0, 14, 13, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, - 0, 0, 0, 0, 24, 18, 0, 0, 0, 10, 0, 0, 0, 15, + 0, 0, 0, 0, 24, 18, 0, 11, 0, 10, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 31, 0, 12, 0, 0, 0, 0, 11, 0, 25, 22, 0, 30, 0, 7, 0, 23, 0, 0, 0, 0, 0, 0, 0, 15, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, + 0, 0, 0, 39, 40, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 22, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 15, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 13, 20, 0, 25, + 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 13, 20, 0, 0, 0, 0, 10, 0, 0, 28, 0, 0, 0, 0, 0, 0, 13, 20, 15, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 23, 0, 0, 0, 0, 24, 0, 0, 0, 0, 30, 15, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 22, 0, 0, 0, 0, 0, - 13, 0, 22, 37, 8, 0, 0, 0, 38, 0, 0, 0, 0, 18, - 0, 15, 24, 0, 28, 0, 0, 0, 0, 29, 0, 0, 0, 0, + 13, 0, 22, 37, 8, 0, 0, 0, 0, 0, 0, 0, 0, 18, + 0, 15, 24, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 0, 0, 26, 7, 0, 17, 16, 0, - 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, + 0, 25, 0, 24, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 16, 0, 0, 0, 20, 0, 0, 0, 0, 16, 18, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 23, 14, 0, 18, 20, 0, 14, 0, 26, 0, 0, 0, 0, 29, 0, 22, 0, 0, 0, 23, 1, 0, 0, 24, 0, 0, 18, 0, 0, 0, 0, 13, 25, 0, 0, 0, 0, 0, 0, 0, 26, 23, 0, 0, 0, - 30, 0, 23, 14, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, + 30, 0, 23, 14, 0, 0, 23, 0, 0, 0, 19, 20, 0, 38, 19, 0, 0, 25, 0, 0, 0, 11, 0, 20, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 14, 24, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 26, 18, 0, 0, - 0, 0, 17, 14, 0, 19, 0, 0, 0, 0, 0, 0, 22, 0, + 0, 0, 17, 0, 0, 19, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 18, 0, - 24, 0, 9, 0, 15, 17, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 15, 17, 0, 0, 0, 0, 0, 0, 0, 0, 23, 16, 19, 0, 22, 29, 0, 0, 24, 0, 0, 0, 0, 0, 16, 21, 21, 0, 22, 0, 0, 0, 18, 22, 0, 0, 0, 0, 0, 0, 0, 27, 0, 23, 0, 14, 20, 0, 0, 27, 0, 0, - 0, 24, 0, 0, 0, 21, 0, 0, 10, 0, 36, 0, 0, 14, + 0, 24, 0, 0, 0, 21, 0, 0, 0, 0, 36, 0, 0, 14, 0, 13, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 14, 0, 0, 19, 14, 28, 0, 0, 19, 0, 0, - 0, 0, 13, 0, 0, 16, 2, 25, 0, 0, 21, 0, 0, 27, + 0, 0, 0, 0, 0, 16, 2, 25, 0, 0, 21, 0, 0, 27, 0, 32, 12, 0, 0, 0, 0, 0, 31, 0, 2, 0, 0, 0, - 0, 22, 0, 0, 24, 0, 31, 0, 7, 0, 0, 1, 0, 0, + 0, 22, 0, 0, 24, 0, 31, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 18, 0, 0, 0, 18, 0, 12, 0, 0, 0, 0, 0, 0, 35, 0, 0, 23, 0, 0, 0, 0, 0, 0, 17, 0, - 0, 0, 0, 0, 0, 31, 28, 0, 0, 0, 0, 11, 19, 14, + 0, 0, 0, 0, 0, 31, 28, 14, 0, 0, 0, 11, 19, 14, 0, 0, 0, 18, 16, 0, 0, 14, 0, 24, 14, 0, 0, 32, 0, 0, 0, 14, 0, 32, 21, 0, 0, 0, 0, 27, 26, 17, - 0, 0, 22, 15, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 22, 15, 0, 0, 9, 0, 0, 0, 17, 0, 0, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 0, 13, 0, 0, - 0, 0, 0, 0, 0, 28, 13, 12, 0, 0, 20, 0, 0, 21, + 0, 0, 0, 0, 0, 28, 13, 12, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 22, 0, 30, 0, 0, 24, 0, 0, 0, 0, 0, 0, + 0, 0, 22, 0, 30, 0, 0, 24, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 4, 23, 0, 0, 0, 0, 0, 27, 0, 12, 0, 0, 0, 0, 0, 25, 0, 35, 0, 0, 0, 9, 0, - 0, 0, 40, 0, 24, 22, 0, 20, 0, 17, 0, 12, 0, 0, + 0, 0, 40, 0, 24, 22, 13, 20, 0, 17, 0, 12, 0, 0, 23, 0, 14, 0, 0, 0, 0, 26, 23, 0, 10, 0, 0, 11, - 25, 0, 0, 0, 0, 0, 0, 22, 0, 34, 0, 0, 23, 15, - 20, 18, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 18, 0, - 0, 24, 7, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 15, - 0, 0, 34, 0, 0, 15, 20, 22, 0, 0, 0, 15, 0, 21, - 0, 0, 0, 0, 23, 13, 0, 23, 0, 17, 0, 11, 8, 0, + 25, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 23, 15, + 0, 18, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, + 0, 24, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, + 0, 20, 34, 0, 0, 0, 20, 22, 0, 0, 0, 15, 0, 21, + 0, 0, 0, 0, 0, 13, 0, 23, 0, 17, 0, 11, 8, 0, 25, 15, 0, 0, 18, 0, 0, 28, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 10, 0, 0, 23, 0, 0, 0, 0, 11, 0, 0, 0, 10, 19, 0, 0, 0, 0, 0, 14, 2, 0, 0, 17, 0, 0, 0, 29, 0, 0, 0, 16, 0, - 0, 0, 0, 0, 0, 0, 0, 16, 19, 0, 0, 20, 0, 0, - 0, 17, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 18, 0, - 0, 0, 19, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 50, 0, 0, 2, 0, 0, 15, 17, 0, 0, - 0, 0, 0, 24, 0, 0, 0, 0, 15, 0, 0, 0, 9, 0, + 0, 0, 0, 0, 0, 0, 0, 16, 19, 0, 0, 20, 22, 0, + 0, 17, 0, 0, 0, 20, 0, 0, 15, 0, 0, 0, 18, 0, + 0, 15, 19, 0, 0, 23, 0, 15, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 18, 50, 0, 0, 2, 0, 0, 15, 17, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 9, 0, 0, 0, 21, 0, 0, 0, 24, 0, 34, 73, 74, 10, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 11, - 0, 30, 0, 22, 6, 0, 0, 0, 0, 19, 0, 0, 0, 12, - 22, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 30, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 14, 0, 11, + 0, 30, 24, 22, 6, 0, 0, 0, 0, 19, 0, 0, 0, 12, + 22, 0, 0, 0, 0, 0, 0, 0, 0, 24, 14, 0, 0, 0, + 0, 0, 0, 0, 0, 15, 14, 0, 0, 0, 30, 0, 0, 0, 0, 0, 35, 0, 0, 30, 3, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 16, 16, 0, - 0, 1, 0, 0, 0, 16, 0, 0, 22, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 16, 0, 0, 22, 0, 0, 0, 0, 0, 24, 21, 15, 15, 4, 0, 0, 0, 32, 0, 25, 0, 18, 18, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, - 6, 0, 28, 0, 0, 0, 0, 0, 8, 0, 0, 0, 10, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 30, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 10, 2, 11, 32, 11, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 3, 41, 0, 26, 0, 2, 11, 30, 0, 0, 0, 0, 0, 0, 0, 12, 0, 32, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 24, 9, 0, 0, 7, 0, - 0, 0, 3, 0, 18, 0, 30, 0, 25, 0, 0, 0, 19, 6, + 0, 0, 3, 0, 18, 0, 0, 0, 25, 0, 0, 0, 19, 6, 0, 0, 0, 0, 11, 0, 0, 0, 31, 0, 10, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 25, 0, 0, 27, 0, 0, 22, 0, - 0, 26, 22, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 15, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 29, 0, + 0, 0, 0, 0, 28, 0, 25, 0, 0, 27, 0, 0, 22, 0, + 0, 26, 22, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 6, 26, 0, 0, 0, 0, 33, 9, 0, 0, 0, 23, 0, 0, 0, 21, 13, 0, 0, 0, 20, 0, 0, 21, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 12, 0, 2, 9, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 23, 0, 7, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 13, 0, 0, 15, - 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 0, 33, 8, 0, 0, 38, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 16, 1, 0, 0, + 0, 15, 0, 0, 0, 33, 8, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 14, 26, 0, 0, 0, 0, 0, - 0, 0, 29, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 29, 29, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 23, 0, 12, 15, 0, 0, 11, 0, 11, 0, 28, 0, 15, 0, 0, 17, 0, 0, 25, 7, 0, 0, 0, 0, 3, 0, 4, 0, 17, 0, 2, 0, 0, 0, 14, 0, @@ -475,89 +475,89 @@ static const unsigned char lengthtable[] = 29, 16, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 2, 0, 17, 29, 0, 0, 15, 0, 0, 34, 0, 0, 0, 0, 34, 0, 0, 11, 0, 0, 0, 18, 0, 0, 0, 0, 0, - 24, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 0, 15, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, - 0, 0, 0, 0, 0, 0, 16, 0, 0, 15, 11, 0, 0, 0, + 0, 0, 16, 0, 0, 0, 16, 0, 0, 15, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 0, 4, 13, 0, 0, 2, 0, 0, 0, 0, 0, 15, 0, 0, 3, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 30, 0, 10, 0, - 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 28, 0, 0, 30, + 0, 0, 7, 0, 0, 12, 0, 0, 0, 0, 28, 0, 0, 30, 0, 22, 24, 0, 0, 0, 0, 0, 0, 37, 0, 29, 0, 22, 0, 0, 11, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 11, 29, 0, 0, 0, 0, 0, 0, 0, 0, 23, + 0, 0, 0, 0, 29, 0, 0, 0, 25, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 8, 0, 0, 0, 0, 0, 0, 20, 0, 11, 0, 0, 0, 0, 0, 0, - 26, 35, 0, 0, 31, 0, 11, 0, 0, 0, 0, 0, 7, 0, + 26, 35, 0, 0, 31, 0, 11, 22, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 17, 29, 0, - 0, 0, 25, 0, 18, 30, 0, 25, 0, 0, 0, 0, 16, 0, + 0, 0, 25, 18, 18, 30, 0, 25, 0, 0, 0, 0, 16, 0, 29, 14, 0, 2, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 19, 0, 0, 29, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 34, - 0, 0, 0, 0, 34, 0, 0, 13, 0, 0, 0, 16, 0, 0, + 0, 0, 31, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 34, + 0, 0, 28, 0, 34, 0, 0, 13, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 33, 42, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 21, 0, 0, 11, 0, 0, 13, - 8, 0, 24, 0, 30, 0, 0, 13, 0, 0, 0, 25, 0, 15, + 28, 0, 24, 0, 30, 0, 0, 13, 0, 0, 0, 25, 0, 15, 0, 0, 0, 0, 0, 0, 0, 25, 0, 12, 0, 0, 0, 0, 0, 0, 0, 20, 0, 23, 22, 27, 34, 0, 0, 0, 0, 30, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 26, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 32, 0, 13, 0, 0, 0, 0, 0, 35, 0, 0, 0, 9, 0, 31, 0, 27, 13, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 19, 15, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 12, 0, 13, 0, 0, 13, 12, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 16, 14, 0, 0, 0, 0, 0, 12, 23, 0, 0, 29, 0, 0, 0, 14, 0, 0, 0, 18, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 25, 0, 20, 26, 0, 0, 14, 4, 0, 0, 0, 27, 14, 0, + 25, 0, 20, 26, 0, 0, 0, 4, 0, 0, 0, 27, 14, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 0, 0, 29, 6, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 29, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 8, 24, 0, 0, 0, 0, 0, 0, 36, 18, 0, 0, 0, 0, 0, 14, 0, 0, 8, 0, 0, 0, 0, 22, - 0, 6, 13, 0, 0, 0, 0, 0, 15, 0, 19, 16, 0, 0, + 0, 6, 13, 0, 0, 0, 0, 0, 0, 0, 19, 16, 0, 0, 8, 17, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, - 0, 31, 0, 0, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, + 0, 31, 0, 0, 0, 28, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 24, 0, 9, 0, 0, 0, 0, 14, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 28, 0, 11, 0, 11, 18, 0, 0, 19, + 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 18, 0, 0, 19, 0, 0, 0, 0, 21, 0, 0, 0, 14, 23, 11, 19, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 31, 25, 0, 0, 0, 31, - 0, 0, 0, 0, 0, 22, 0, 0, 16, 3, 0, 0, 0, 18, - 0, 0, 0, 0, 0, 5, 0, 14, 0, 0, 0, 0, 0, 0, - 15, 18, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 3, 0, 0, 0, 18, + 0, 0, 0, 0, 0, 5, 0, 14, 0, 0, 15, 0, 0, 0, + 15, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 31, 0, 15, 19, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, - 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 17, - 0, 0, 0, 0, 0, 0, 37, 19, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 15, 0, 33, 9, 0, 0, 0, - 0, 22, 8, 0, 0, 0, 15, 28, 0, 12, 0, 0, 28, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 24, 0, 17, + 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 9, 0, 0, 0, + 0, 22, 8, 0, 0, 0, 15, 28, 0, 12, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 0, - 0, 0, 0, 37, 0, 29, 0, 0, 31, 0, 0, 0, 0, 34, + 0, 0, 0, 37, 0, 0, 0, 0, 31, 0, 0, 0, 0, 34, 0, 0, 0, 0, 18, 0, 0, 29, 0, 0, 12, 15, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 22, - 0, 0, 0, 0, 0, 28, 29, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 15, 0, 0, 0, 0, 0, 15, 0, 0, 0, 33, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 32, 22, + 28, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 15, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 28, 10, 35, 8, 33, 28, 0, 0, 34, 0, 0, - 16, 0, 0, 0, 0, 29, 0, 0, 0, 0, 14, 0, 22, 0, + 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 14, 37, 22, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, - 0, 0, 0, 0, 12, 30, 0, 0, 0, 0, 19, 15, 0, 0, + 33, 0, 0, 0, 12, 0, 0, 0, 0, 0, 19, 15, 0, 0, 0, 0, 0, 0, 31, 31, 0, 26, 0, 0, 13, 0, 0, 0, - 0, 29, 0, 0, 0, 13, 12, 28, 18, 0, 0, 0, 14, 0, - 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 29, 0, 0, 0, 13, 12, 28, 18, 0, 29, 0, 14, 0, + 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 27, 0, 0, 0, 14, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 13, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 13, - 0, 0, 8, 14, 0, 0, 0, 0, 0, 0, 0, 23, 16, 0, + 0, 0, 8, 14, 33, 0, 0, 0, 0, 0, 0, 23, 16, 0, 0, 0, 0, 0, 0, 34, 0, 0, 20, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, - 0, 0, 9, 0, 0, 0, 0, 32, 31, 0, 0, 25, 0, 32, + 0, 0, 9, 0, 0, 0, 0, 32, 31, 0, 30, 25, 0, 32, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, - 0, 0, 14, 28, 0, 0, 18, 35, 0, 21, 0, 0, 14, 0, + 0, 0, 14, 0, 0, 0, 18, 35, 0, 21, 0, 0, 14, 0, 0, 25, 18, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -566,7 +566,7 @@ static const unsigned char lengthtable[] = 18, 10, 0, 14, 0, 31, 0, 28, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 17, 0, 0, 0, 0, 0, 0, 0, 28, 25, 0, 0, 0, 0, 0, 14, - 0, 0, 0, 18, 14, 0, 0, 28, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 18, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 36, 0, 0, 0, 0, 34, 0, 15, 16, 0, 0, 0, @@ -576,26 +576,26 @@ static const unsigned char lengthtable[] = 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 27, 29, 0, 0, 0, 0, 0, 24, 0, 11, 0, 0, 0, 9, 0, 43, 0, 0, 0, 0, 0, 0, 31, 7, 0, 0, 0, 0, 0, - 0, 0, 0, 19, 0, 0, 11, 0, 0, 0, 32, 0, 0, 0, + 0, 0, 0, 19, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 27, 36, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, 16, 0, 0, 0, 0, 0, 10, 0, 11, 0, 0, 0, 0, 28, 0, 10, 0, 0, 27, 0, 0, 0, 0, 27, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 14, 0, 14, 0, 0, - 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 36, 0, 0, 26, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 26, 22, 0, 0, 14, 0, 24, 0, 0, 0, 18, 0, 32, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 9, 0, 0, 0, 14, 0, - 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 38, 15, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 20, 0, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 0, 0, 0, 0, 2, 13, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, - 0, 14, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 18, + 0, 14, 0, 0, 0, 0, 18, 0, 0, 0, 0, 24, 0, 18, 0, 17, 0, 0, 25, 0, 0, 0, 0, 18, 27, 0, 0, 0, 0, 0, 0, 0, 0, 30, 14, 0, 0, 0, 0, 19, 8, 0, - 0, 0, 0, 43, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 43, 0, 0, 0, 3, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 33, 17, 0, 0, 0, 0, 32, 0, 0, 0, 0, 33, 0, 0, 0, 37, 0, 37, 0, 0, 22, 15, 0, 17, 29, 0, 38, 0, 0, 0, 0, 24, 0, 0, 0, 0, 11, 0, @@ -617,16 +617,16 @@ static const unsigned char lengthtable[] = 0, 0, 0, 19, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 11, 0, 27, 0, 30, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 15, 0, 0, - 0, 0, 24, 0, 0, 24, 0, 0, 17, 0, 0, 0, 0, 0, + 30, 0, 24, 0, 0, 24, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 17, 23, 0, 7, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 13, 0, 0, 0, 0, 15, 0, 0, 0, 11, 0, - 0, 25, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 17, 0, + 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 37, 0, 33, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 29, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 9, 0, 0, 22, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 24, 0, 0, 17, 0, 15, 0, 0, 35, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 26, 0, 0, @@ -635,29 +635,29 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 37, 0, 0, 0, 35, 0, 30, 28, 0, 0, 0, 0, 18, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, - 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 35, 0, 0, 0, 0, 30, 0, 0, 0, 6, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, - 24, 0, 11, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, + 24, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 20, 30, 0, 0, 0, 0, 14, 0, 6, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 14, 30, 0, 0, 0, 0, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 9, 0, + 0, 0, 0, 0, 0, 0, 0, 35, 26, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 7, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 15, 0, 21, 0, + 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 21, 0, 0, 11, 15, 0, 10, 0, 0, 0, 12, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 10, 0, 0, 32, + 41, 0, 0, 0, 11, 0, 0, 0, 0, 0, 10, 0, 0, 32, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 21, 0, 0, 11, 0, 0, 0, 0, 0, 0, 28, 0, 0, 16, 0, 12, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 19, - 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, + 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 16, 0, 15, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 23, 0, 35, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 29, 0, 0, 0, 0, 0, @@ -666,28 +666,28 @@ static const unsigned char lengthtable[] = 0, 14, 0, 0, 0, 0, 9, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 15, 0, 0, 0, + 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, - 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, - 0, 0, 2, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 15, 0, 0, 15, 0, 0, 31, 0, 0, 0, 15, 0, 19, 0, 0, 0, 35, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 14, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 3, 30, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 17, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 16, + 0, 17, 0, 0, 0, 27, 0, 24, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -703,9 +703,9 @@ static const unsigned char lengthtable[] = 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 38, 0, 4, 19, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 27, @@ -732,7 +732,7 @@ static const unsigned char lengthtable[] = 23, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 27, 0, 0, 0, 0, 28, 0, - 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 33, 26, 0, 0, + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 29, 11, 0, 0, @@ -742,8 +742,8 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 14, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, - 0, 0, 13, 0, 0, 0, 0, 26, 0, 0, 22, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 13, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, + 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 14, 36, 0, 0, 0, 0, 0, 0, 0, 0, @@ -770,7 +770,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 15, 0, 0, 0, - 0, 0, 15, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 20, 0, 0, 36, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -778,27 +778,27 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 0, 27, 0, 0, 0, 0, 15, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 25, 0, 0, 38, 0, 0, 25, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 13, 0, 0, 0, 0, 26, 0, 0, 17, 0, 0, 29, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 15, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 32, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 25, 0, 0, 0, 0, 16, 0, 0, 0, 35, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 31, 0, 0, 0, 16, 0, 0, 0, 0, 17, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, - 17, 16, 0, 0, 9, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 17, 16, 23, 0, 9, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 13, 0, @@ -819,7 +819,7 @@ static const unsigned char lengthtable[] = 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 22, 0, 0, - 25, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -827,7 +827,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 17, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, + 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -835,7 +835,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 16, 0, 0, 0, 0, 0, - 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 25, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 25, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 28, 0, 0, 22, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -898,21 +898,21 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 24, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 40, + 0, 0, 0, 15, 0, 0, 0, 0, 14, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, @@ -949,7 +949,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 17, 0, 0, 34, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -957,8 +957,8 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 15, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -966,7 +966,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 17, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1008,7 +1008,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1016,12 +1016,12 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1029,7 +1029,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, - 0, 0, 0, 0, 0, 36, 0, 0, 0, 15, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 36, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1557,7 +1557,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1630,7 +1630,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1725,6 +1724,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1797,7 +1797,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1828,6 +1827,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1880,6 +1880,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1901,7 +1902,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1953,7 +1953,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2202,6 +2201,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2265,7 +2265,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2308,6341 +2307,4100 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31 + 0, 0, 31 }; static const struct grib_keys_hash wordlist[] = { {""}, {""}, {""}, -#line 1297 "../tests/keys" - {"n",1292}, + {"n",1293}, {""}, -#line 1306 "../tests/keys" - {"nd",1301}, -#line 709 "../tests/keys" + {"nd",1302}, {"ed",704}, -#line 1310 "../tests/keys" - {"nnn",1305}, -#line 2101 "../tests/keys" - {"td",2096}, -#line 2091 "../tests/keys" - {"t",2086}, + {"nnn",1306}, + {"td",2097}, + {"t",2087}, {""}, -#line 1324 "../tests/keys" - {"nt",1319}, -#line 1889 "../tests/keys" - {"sd",1884}, -#line 1300 "../tests/keys" - {"na",1295}, + {"nt",1320}, + {"sd",1886}, + {"na",1296}, {""}, -#line 1178 "../tests/keys" - {"m",1173}, + {"m",1174}, {""}, {""}, -#line 634 "../tests/keys" {"date",629}, {""}, {""}, -#line 1301 "../tests/keys" - {"name",1296}, -#line 1260 "../tests/keys" - {"min",1255}, + {"name",1297}, + {"min",1256}, {""}, -#line 616 "../tests/keys" {"data",611}, {""}, {""}, -#line 943 "../tests/keys" {"ident",938}, -#line 1491 "../tests/keys" - {"one",1486}, -#line 2127 "../tests/keys" - {"time",2122}, + {"one",1488}, + {"time",2123}, {""}, -#line 762 "../tests/keys" {"error",757}, {""}, -#line 1181 "../tests/keys" - {"mars",1176}, + {"mars",1177}, {""}, -#line 2343 "../tests/keys" - {"year",2338}, -#line 1305 "../tests/keys" - {"names",1300}, + {"year",2339}, + {"names",1301}, {""}, -#line 328 "../tests/keys" {"band",323}, {""}, -#line 2064 "../tests/keys" - {"stream",2059}, -#line 2014 "../tests/keys" - {"sort",2009}, + {"stream",2060}, + {"sort",2010}, {""}, -#line 752 "../tests/keys" {"enorm",747}, {""}, {""}, -#line 1256 "../tests/keys" - {"metadata",1251}, -#line 699 "../tests/keys" + {"metadata",1252}, {"dy",694}, {""}, {""}, -#line 757 "../tests/keys" {"eps",752}, -#line 692 "../tests/keys" {"domain",687}, -#line 2030 "../tests/keys" - {"spare",2025}, -#line 645 "../tests/keys" + {"spare",2026}, {"day",640}, {""}, {""}, -#line 710 "../tests/keys" {"edition",705}, -#line 1503 "../tests/keys" - {"oper",1498}, -#line 1646 "../tests/keys" - {"present",1641}, -#line 1599 "../tests/keys" - {"param",1594}, -#line 1715 "../tests/keys" - {"rdbtime",1710}, + {"oper",1500}, + {"present",1643}, + {"param",1596}, + {"rdbtime",1712}, {""}, {""}, -#line 2171 "../tests/keys" - {"type",2166}, -#line 2089 "../tests/keys" - {"system",2084}, + {"type",2167}, + {"system",2085}, {""}, -#line 1602 "../tests/keys" - {"parameter",1597}, -#line 1010 "../tests/keys" - {"iteration",1005}, + {"parameter",1599}, + {"iteration",1006}, {""}, -#line 316 "../tests/keys" {"assertion",311}, -#line 675 "../tests/keys" {"dimension",670}, {""}, {""}, {""}, -#line 2160 "../tests/keys" - {"true",2155}, -#line 383 "../tests/keys" + {"true",2156}, {"cat",378}, -#line 2054 "../tests/keys" - {"step",2049}, -#line 401 "../tests/keys" + {"step",2050}, {"centre",396}, {""}, {""}, {""}, {""}, -#line 1610 "../tests/keys" - {"parameters",1605}, + {"parameters",1607}, {""}, -#line 2140 "../tests/keys" - {"timerepres",2135}, -#line 1510 "../tests/keys" - {"opttime",1505}, -#line 1636 "../tests/keys" - {"points",1631}, + {"timerepres",2136}, + {"opttime",1507}, + {"points",1633}, {""}, -#line 594 "../tests/keys" {"core",589}, -#line 2114 "../tests/keys" - {"three",2109}, + {"three",2110}, {""}, -#line 1296 "../tests/keys" - {"mybits",1291}, -#line 916 "../tests/keys" + {"mybits",1292}, {"hdate",911}, -#line 1262 "../tests/keys" - {"minute",1257}, -#line 1729 "../tests/keys" - {"rectime",1724}, + {"minute",1258}, + {"rectime",1726}, {""}, {""}, -#line 2220 "../tests/keys" - {"units",2215}, -#line 1890 "../tests/keys" - {"second",1885}, + {"units",2216}, + {"second",1887}, {""}, -#line 1704 "../tests/keys" - {"radius",1699}, -#line 568 "../tests/keys" + {"radius",1701}, {"const",563}, {""}, {""}, -#line 2053 "../tests/keys" - {"status",2048}, -#line 1325 "../tests/keys" - {"number",1320}, + {"status",2049}, + {"number",1321}, {""}, {""}, {""}, {""}, -#line 1615 "../tests/keys" - {"partitions",1610}, + {"partitions",1612}, {""}, -#line 1912 "../tests/keys" - {"section",1907}, -#line 968 "../tests/keys" + {"section",1909}, {"instrument",963}, -#line 1257 "../tests/keys" - {"method",1252}, + {"method",1253}, {""}, -#line 366 "../tests/keys" {"bitmap",361}, -#line 1261 "../tests/keys" - {"minimum",1256}, -#line 678 "../tests/keys" + {"minimum",1257}, {"direction",673}, -#line 1071 "../tests/keys" - {"leadtime",1066}, -#line 1452 "../tests/keys" - {"obstype",1447}, + {"leadtime",1067}, + {"obstype",1448}, {""}, {""}, -#line 1703 "../tests/keys" - {"radials",1698}, -#line 1629 "../tests/keys" - {"phase",1624}, -#line 694 "../tests/keys" + {"radials",1700}, + {"phase",1626}, {"dummy",689}, {""}, -#line 643 "../tests/keys" {"dateTime",638}, {""}, {""}, -#line 631 "../tests/keys" {"dataTime",626}, -#line 35 "../tests/keys" {"Di",30}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2052 "../tests/keys" - {"statistics",2047}, -#line 2213 "../tests/keys" - {"ucs",2208}, + {"statistics",2048}, + {"ucs",2209}, {""}, -#line 43 "../tests/keys" {"Dstart",38}, -#line 1676 "../tests/keys" - {"process",1671}, -#line 420 "../tests/keys" + {"process",1673}, {"char",415}, {""}, -#line 619 "../tests/keys" {"dataDate",614}, -#line 1709 "../tests/keys" - {"range",1704}, -#line 894 "../tests/keys" + {"range",1706}, {"grid",889}, -#line 935 "../tests/keys" {"hundred",930}, -#line 1185 "../tests/keys" - {"marsDir",1180}, -#line 1642 "../tests/keys" - {"precision",1637}, + {"marsDir",1181}, + {"precision",1639}, {""}, -#line 1029 "../tests/keys" - {"landtype",1024}, + {"landtype",1025}, {""}, -#line 608 "../tests/keys" {"count",603}, -#line 47 "../tests/keys" {"Dy",42}, {""}, -#line 1214 "../tests/keys" - {"masterDir",1209}, + {"masterDir",1210}, {""}, {""}, -#line 927 "../tests/keys" {"hour",922}, {""}, {""}, -#line 2212 "../tests/keys" - {"uco",2207}, -#line 632 "../tests/keys" + {"uco",2208}, {"dataType",627}, {""}, {""}, {""}, {""}, {""}, -#line 1209 "../tests/keys" - {"marsType",1204}, -#line 423 "../tests/keys" + {"marsType",1205}, {"class",418}, {""}, {""}, {""}, -#line 1037 "../tests/keys" - {"latitude",1032}, -#line 1713 "../tests/keys" - {"rdbType",1708}, + {"latitude",1033}, + {"rdbType",1710}, {""}, {""}, -#line 1515 "../tests/keys" - {"origin",1510}, + {"origin",1512}, {""}, {""}, -#line 2113 "../tests/keys" - {"thousand",2108}, -#line 1285 "../tests/keys" - {"month",1280}, -#line 1186 "../tests/keys" - {"marsDomain",1181}, -#line 566 "../tests/keys" + {"thousand",2109}, + {"month",1281}, + {"marsDomain",1182}, {"consensus",561}, -#line 1678 "../tests/keys" - {"product",1673}, -#line 1633 "../tests/keys" - {"pl",1628}, -#line 599 "../tests/keys" + {"product",1675}, + {"pl",1630}, {"correction",594}, {""}, -#line 1067 "../tests/keys" - {"latitudes",1062}, -#line 1278 "../tests/keys" - {"model",1273}, -#line 2059 "../tests/keys" - {"stepType",2054}, -#line 996 "../tests/keys" + {"latitudes",1063}, + {"model",1274}, + {"stepType",2055}, {"isSens",991}, -#line 2142 "../tests/keys" - {"total",2137}, + {"total",2138}, {""}, -#line 1313 "../tests/keys" - {"normal",1308}, -#line 612 "../tests/keys" + {"normal",1309}, {"country",607}, {""}, {""}, -#line 1753 "../tests/keys" - {"reserved",1748}, -#line 629 "../tests/keys" + {"reserved",1750}, {"dataStream",624}, -#line 2103 "../tests/keys" - {"temperature",2098}, + {"temperature",2099}, {""}, {""}, {""}, {""}, -#line 1206 "../tests/keys" - {"marsStream",1201}, -#line 1749 "../tests/keys" - {"reportType",1744}, + {"marsStream",1202}, + {"reportType",1746}, {""}, {""}, {""}, -#line 1259 "../tests/keys" - {"million",1254}, + {"million",1255}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1717 "../tests/keys" - {"rdbtimeDay",1712}, -#line 684 "../tests/keys" + {"rdbtimeDay",1714}, {"discipline",679}, {""}, -#line 697 "../tests/keys" {"dummyc",692}, {""}, -#line 2269 "../tests/keys" - {"version",2264}, -#line 744 "../tests/keys" + {"version",2265}, {"endStep",739}, -#line 2264 "../tests/keys" - {"varno",2259}, + {"varno",2260}, {""}, -#line 715 "../tests/keys" {"eight",710}, {""}, -#line 1323 "../tests/keys" - {"notDecoded",1318}, -#line 548 "../tests/keys" + {"notDecoded",1319}, {"codeType",543}, {""}, -#line 1997 "../tests/keys" - {"signature",1992}, -#line 716 "../tests/keys" + {"signature",1993}, {"elementsTable",711}, -#line 1226 "../tests/keys" - {"maximum",1221}, + {"maximum",1222}, {""}, {""}, -#line 1504 "../tests/keys" - {"operStream",1499}, + {"operStream",1501}, {""}, -#line 1722 "../tests/keys" - {"rdbtimeTime",1717}, + {"rdbtimeTime",1719}, {""}, {""}, -#line 1205 "../tests/keys" - {"marsStep",1200}, + {"marsStep",1201}, {""}, -#line 2046 "../tests/keys" - {"startStep",2041}, + {"startStep",2042}, {""}, {""}, {""}, {""}, {""}, -#line 698 "../tests/keys" {"dx",693}, {""}, -#line 1730 "../tests/keys" - {"rectimeDay",1725}, + {"rectimeDay",1727}, {""}, -#line 1716 "../tests/keys" - {"rdbtimeDate",1711}, -#line 2167 "../tests/keys" - {"tubeDomain",2162}, + {"rdbtimeDate",1713}, + {"tubeDomain",2163}, {""}, {""}, -#line 384 "../tests/keys" {"categories",379}, -#line 237 "../tests/keys" {"TT",232}, -#line 872 "../tests/keys" {"g",867}, {""}, -#line 1225 "../tests/keys" - {"max",1220}, + {"max",1221}, {""}, {""}, -#line 718 "../tests/keys" {"eleven",713}, {""}, {""}, -#line 1614 "../tests/keys" - {"partitionTable",1609}, -#line 2115 "../tests/keys" - {"threshold",2110}, + {"partitionTable",1611}, + {"threshold",2111}, {""}, -#line 2039 "../tests/keys" - {"standardDeviation",2034}, + {"standardDeviation",2035}, {""}, {""}, {""}, {""}, -#line 784 "../tests/keys" {"extraDim",779}, {""}, -#line 921 "../tests/keys" {"hideThis",916}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 903 "../tests/keys" {"gridType",898}, {""}, {""}, {""}, {""}, -#line 1454 "../tests/keys" - {"oceanStream",1449}, + {"oceanStream",1451}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 418 "../tests/keys" {"channel",413}, -#line 560 "../tests/keys" {"conceptDir",555}, -#line 717 "../tests/keys" {"elevation",712}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 746 "../tests/keys" {"endTimeStep",741}, -#line 1529 "../tests/keys" - {"padding",1524}, + {"padding",1526}, {""}, {""}, -#line 671 "../tests/keys" {"diagnostic",666}, -#line 1140 "../tests/keys" - {"longitude",1135}, + {"longitude",1136}, {""}, -#line 1092 "../tests/keys" - {"levtype",1087}, + {"levtype",1088}, {""}, {""}, -#line 1108 "../tests/keys" - {"local",1103}, + {"local",1104}, {""}, {""}, {""}, {""}, -#line 320 "../tests/keys" {"average",315}, {""}, {""}, {""}, {""}, -#line 1169 "../tests/keys" - {"longitudes",1164}, -#line 1712 "../tests/keys" - {"rdbSubtype",1707}, + {"longitudes",1165}, + {"rdbSubtype",1709}, {""}, -#line 1221 "../tests/keys" - {"matchSort",1216}, -#line 1711 "../tests/keys" - {"rdbDateTime",1706}, + {"matchSort",1217}, + {"rdbDateTime",1708}, {""}, -#line 782 "../tests/keys" {"expver",777}, {""}, {""}, -#line 2252 "../tests/keys" - {"values",2247}, + {"values",2248}, {""}, {""}, {""}, {""}, -#line 319 "../tests/keys" {"auxiliary",314}, {""}, -#line 199 "../tests/keys" {"Nr",194}, {""}, {""}, {""}, {""}, -#line 623 "../tests/keys" {"dataOrigin",618}, {""}, -#line 1091 "../tests/keys" - {"levels",1086}, -#line 298 "../tests/keys" + {"levels",1087}, {"aerosolType",293}, -#line 1735 "../tests/keys" - {"refdate",1730}, -#line 44 "../tests/keys" + {"refdate",1732}, {"Dx",39}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 197 "../tests/keys" {"Ni",192}, -#line 1090 "../tests/keys" - {"levelist",1085}, -#line 1116 "../tests/keys" - {"localDir",1111}, + {"levelist",1086}, + {"localDir",1112}, {""}, -#line 1726 "../tests/keys" - {"recDateTime",1721}, + {"recDateTime",1723}, {""}, {""}, {""}, -#line 2203 "../tests/keys" - {"typicalDay",2198}, + {"typicalDay",2199}, {""}, -#line 755 "../tests/keys" {"ensembleSize",750}, {""}, -#line 1689 "../tests/keys" - {"pv",1684}, + {"pv",1686}, {""}, {""}, {""}, -#line 775 "../tests/keys" {"expandedTypes",770}, -#line 2283 "../tests/keys" - {"visibility",2278}, + {"visibility",2279}, {""}, -#line 947 "../tests/keys" {"identifier",942}, {""}, -#line 235 "../tests/keys" {"TS",230}, -#line 2037 "../tests/keys" - {"spectralType",2032}, + {"spectralType",2033}, {""}, -#line 205 "../tests/keys" {"Ny",200}, -#line 884 "../tests/keys" {"gg",879}, -#line 1202 "../tests/keys" - {"marsQuantile",1197}, + {"marsQuantile",1198}, {""}, {""}, -#line 2208 "../tests/keys" - {"typicalTime",2203}, + {"typicalTime",2204}, {""}, -#line 1683 "../tests/keys" - {"productType",1678}, -#line 193 "../tests/keys" + {"productType",1680}, {"Nb",188}, {""}, {""}, {""}, {""}, -#line 628 "../tests/keys" {"dataSelection",623}, -#line 1490 "../tests/keys" - {"oldSubtype",1485}, -#line 1110 "../tests/keys" - {"localDay",1105}, + {"oldSubtype",1487}, + {"localDay",1106}, {""}, {""}, {""}, {""}, -#line 2201 "../tests/keys" - {"typicalDate",2196}, + {"typicalDate",2197}, {""}, {""}, -#line 2246 "../tests/keys" - {"userTimeStart",2241}, -#line 1736 "../tests/keys" - {"reference",1731}, + {"userTimeStart",2242}, + {"reference",1733}, {""}, -#line 1087 "../tests/keys" - {"level",1082}, + {"level",1083}, {""}, -#line 1502 "../tests/keys" - {"oneThousand",1497}, + {"oneThousand",1499}, {""}, -#line 885 "../tests/keys" {"global",880}, {""}, {""}, {""}, {""}, -#line 611 "../tests/keys" {"countTotal",606}, {""}, {""}, -#line 2242 "../tests/keys" - {"userDateStart",2237}, -#line 837 "../tests/keys" + {"userDateStart",2238}, {"file",832}, -#line 1085 "../tests/keys" - {"lev",1080}, + {"lev",1081}, {""}, -#line 1309 "../tests/keys" - {"nlev",1304}, -#line 830 "../tests/keys" + {"nlev",1305}, {"false",825}, -#line 994 "../tests/keys" {"isSatellite",989}, -#line 2341 "../tests/keys" - {"yFirst",2336}, + {"yFirst",2337}, {""}, {""}, {""}, {""}, {""}, -#line 324 "../tests/keys" {"avg",319}, {""}, {""}, -#line 402 "../tests/keys" {"centreDescription",397}, -#line 385 "../tests/keys" {"categoryType",380}, {""}, -#line 1607 "../tests/keys" - {"parameterName",1602}, + {"parameterName",1604}, {""}, -#line 993 "../tests/keys" {"isOctahedral",988}, -#line 195 "../tests/keys" {"Ncy",190}, {""}, -#line 203 "../tests/keys" {"Nuy",198}, {""}, -#line 2083 "../tests/keys" - {"suiteName",2078}, + {"suiteName",2079}, {""}, {""}, {""}, {""}, -#line 116 "../tests/keys" {"Latin",111}, -#line 1523 "../tests/keys" - {"overlayTemplate",1518}, + {"overlayTemplate",1520}, {""}, {""}, {""}, -#line 834 "../tests/keys" {"fcperiod",829}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1994 "../tests/keys" - {"shortName",1989}, + {"shortName",1990}, {""}, -#line 1281 "../tests/keys" - {"modelName",1276}, + {"modelName",1277}, {""}, -#line 154 "../tests/keys" {"Ly",149}, {""}, -#line 2342 "../tests/keys" - {"yLast",2337}, -#line 1277 "../tests/keys" - {"modeNumber",1272}, -#line 1089 "../tests/keys" - {"levelType",1084}, + {"yLast",2338}, + {"modeNumber",1273}, + {"levelType",1085}, {""}, {""}, {""}, -#line 271 "../tests/keys" {"Xo",266}, {""}, {""}, {""}, {""}, -#line 1634 "../tests/keys" - {"platform",1629}, + {"platform",1631}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 111 "../tests/keys" {"Lap",106}, {""}, -#line 236 "../tests/keys" {"TScalc",231}, {""}, {""}, {""}, -#line 272 "../tests/keys" {"Xp",267}, {""}, -#line 956 "../tests/keys" {"indicatorOfParameter",951}, {""}, {""}, -#line 901 "../tests/keys" {"gridName",896}, {""}, {""}, {""}, {""}, -#line 2251 "../tests/keys" - {"validityTime",2246}, + {"validityTime",2247}, {""}, -#line 2063 "../tests/keys" - {"stepZero",2058}, -#line 189 "../tests/keys" + {"stepZero",2059}, {"NT",184}, -#line 192 "../tests/keys" {"Nassigned",187}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 948 "../tests/keys" {"ieeeFloats",943}, {""}, {""}, -#line 1605 "../tests/keys" - {"parameterDiscipline",1600}, + {"parameterDiscipline",1602}, {""}, -#line 425 "../tests/keys" {"clearTables",420}, -#line 714 "../tests/keys" {"efiOrder",709}, -#line 2050 "../tests/keys" - {"statisticalProcess",2045}, -#line 2334 "../tests/keys" - {"xFirst",2329}, + {"statisticalProcess",2046}, + {"xFirst",2330}, {""}, -#line 123 "../tests/keys" {"Lcy",118}, {""}, -#line 150 "../tests/keys" {"Luy",145}, {""}, -#line 615 "../tests/keys" {"daLoop",610}, {""}, -#line 2168 "../tests/keys" - {"tubeNumber",2163}, + {"tubeNumber",2164}, {""}, -#line 751 "../tests/keys" {"energyNorm",746}, {""}, {""}, -#line 711 "../tests/keys" {"editionNumber",706}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2051 "../tests/keys" - {"statisticalProcessesList",2046}, + {"statisticalProcessesList",2047}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 852 "../tests/keys" {"flags",847}, {""}, -#line 1109 "../tests/keys" - {"localDateTime",1104}, + {"localDateTime",1105}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 836 "../tests/keys" {"fgTime",831}, -#line 833 "../tests/keys" {"fcmonth",828}, {""}, {""}, -#line 300 "../tests/keys" {"aerosolpacking",295}, {""}, {""}, -#line 2335 "../tests/keys" - {"xLast",2330}, + {"xLast",2331}, {""}, {""}, {""}, -#line 1203 "../tests/keys" - {"marsRange",1198}, -#line 391 "../tests/keys" + {"marsRange",1199}, {"ccsdsRsi",386}, -#line 373 "../tests/keys" {"boustrophedonic",368}, {""}, -#line 835 "../tests/keys" {"fgDate",830}, {""}, {""}, -#line 204 "../tests/keys" {"Nx",199}, {""}, {""}, {""}, -#line 1170 "../tests/keys" - {"longitudesList",1165}, + {"longitudesList",1166}, {""}, -#line 2237 "../tests/keys" - {"upperLimit",2232}, -#line 304 "../tests/keys" + {"upperLimit",2233}, {"angleDivisor",299}, {""}, {""}, {""}, {""}, -#line 1961 "../tests/keys" - {"sectionNumber",1956}, + {"sectionNumber",1957}, {""}, {""}, -#line 2057 "../tests/keys" - {"stepRange",2052}, -#line 2169 "../tests/keys" - {"two",2164}, -#line 2224 "../tests/keys" - {"unitsDecimalScaleFactor",2219}, + {"stepRange",2053}, + {"two",2165}, + {"unitsDecimalScaleFactor",2220}, {""}, -#line 1130 "../tests/keys" - {"localSecond",1125}, + {"localSecond",1126}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2146 "../tests/keys" - {"totalNumber",2141}, -#line 2226 "../tests/keys" - {"unitsFactor",2221}, + {"totalNumber",2142}, + {"unitsFactor",2222}, {""}, -#line 2244 "../tests/keys" - {"userDateTimeStart",2239}, -#line 2094 "../tests/keys" - {"tableNumber",2089}, + {"userDateTimeStart",2240}, + {"tableNumber",2090}, {""}, -#line 1254 "../tests/keys" - {"memberNumber",1249}, + {"memberNumber",1250}, {""}, {""}, {""}, {""}, {""}, -#line 2090 "../tests/keys" - {"systemNumber",2085}, + {"systemNumber",2086}, {""}, -#line 864 "../tests/keys" {"forecastperiod",859}, {""}, {""}, {""}, {""}, {""}, -#line 863 "../tests/keys" {"forecastTime",858}, -#line 770 "../tests/keys" {"expandedNames",765}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 194 "../tests/keys" {"Ncx",189}, {""}, -#line 202 "../tests/keys" {"Nux",197}, {""}, {""}, -#line 108 "../tests/keys" {"LaD",103}, -#line 2350 "../tests/keys" - {"zero",2345}, -#line 1074 "../tests/keys" - {"legNumber",1069}, + {"zero",2346}, + {"legNumber",1070}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1030 "../tests/keys" - {"laplacianOperator",1025}, -#line 672 "../tests/keys" + {"laplacianOperator",1026}, {"diagnosticNumber",667}, -#line 1524 "../tests/keys" - {"overlayTemplateNumber",1519}, -#line 547 "../tests/keys" + {"overlayTemplateNumber",1521}, {"codeFigure",542}, {""}, -#line 847 "../tests/keys" {"flag",842}, {""}, {""}, -#line 152 "../tests/keys" {"Lx",147}, {""}, {""}, {""}, {""}, {""}, -#line 2238 "../tests/keys" - {"upperRange",2233}, -#line 172 "../tests/keys" + {"upperRange",2234}, {"N",167}, -#line 991 "../tests/keys" {"isFillup",986}, -#line 1258 "../tests/keys" - {"methodNumber",1253}, -#line 2163 "../tests/keys" - {"truncateLaplacian",2158}, + {"methodNumber",1254}, + {"truncateLaplacian",2159}, {""}, {""}, -#line 862 "../tests/keys" {"forecastSteps",857}, {""}, {""}, {""}, {""}, {""}, -#line 2217 "../tests/keys" - {"unitOfTime",2212}, -#line 815 "../tests/keys" + {"unitOfTime",2213}, {"extractSubset",810}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1456 "../tests/keys" - {"offset",1451}, -#line 785 "../tests/keys" + {"offset",1453}, {"extraDimensionPresent",780}, {""}, {""}, -#line 540 "../tests/keys" {"clusterNumber",535}, {""}, {""}, {""}, -#line 311 "../tests/keys" {"anoffset",306}, {""}, -#line 419 "../tests/keys" {"channelNumber",414}, {""}, -#line 1694 "../tests/keys" - {"qnh",1689}, + {"qnh",1691}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1076 "../tests/keys" - {"lengthDescriptors",1071}, + {"lengthDescriptors",1072}, {""}, -#line 1985 "../tests/keys" - {"sequences",1980}, + {"sequences",1981}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 622 "../tests/keys" {"dataLength",617}, {""}, -#line 121 "../tests/keys" {"Lcx",116}, -#line 1701 "../tests/keys" - {"quantile",1696}, -#line 148 "../tests/keys" + {"quantile",1698}, {"Lux",143}, -#line 620 "../tests/keys" {"dataFlag",615}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 390 "../tests/keys" {"ccsdsFlags",385}, -#line 1196 "../tests/keys" - {"marsLatitude",1191}, + {"marsLatitude",1192}, {""}, -#line 1988 "../tests/keys" - {"setDecimalPrecision",1983}, -#line 2005 "../tests/keys" - {"siteLatitude",2000}, -#line 408 "../tests/keys" + {"setDecimalPrecision",1984}, + {"siteLatitude",2001}, {"cfName",403}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1111 "../tests/keys" - {"localDecimalScaleFactor",1106}, + {"localDecimalScaleFactor",1107}, {""}, -#line 2313 "../tests/keys" - {"windSpeed",2308}, + {"windSpeed",2309}, {""}, -#line 1608 "../tests/keys" - {"parameterNumber",1603}, -#line 1011 "../tests/keys" - {"iterationNumber",1006}, -#line 839 "../tests/keys" + {"parameterNumber",1605}, + {"iterationNumber",1007}, {"firstDimension",834}, {""}, -#line 676 "../tests/keys" {"dimensionNumber",671}, {""}, {""}, {""}, {""}, {""}, -#line 633 "../tests/keys" {"dataValues",628}, {""}, {""}, -#line 1625 "../tests/keys" - {"periodOfTime",1620}, + {"periodOfTime",1622}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1139 "../tests/keys" - {"logTransform",1134}, -#line 1191 "../tests/keys" - {"marsGrid",1186}, + {"logTransform",1135}, + {"marsGrid",1187}, {""}, {""}, {""}, -#line 553 "../tests/keys" {"coefsSecond",548}, -#line 1197 "../tests/keys" - {"marsLevel",1192}, + {"marsLevel",1193}, {""}, -#line 1613 "../tests/keys" - {"partitionNumber",1608}, -#line 1248 "../tests/keys" - {"meanSize",1243}, -#line 372 "../tests/keys" + {"partitionNumber",1610}, + {"meanSize",1244}, {"bottomLevel",367}, {""}, {""}, {""}, {""}, -#line 881 "../tests/keys" {"generatingProcessTemplate",876}, {""}, {""}, {""}, {""}, -#line 1666 "../tests/keys" - {"pressureLevel",1661}, + {"pressureLevel",1663}, {""}, {""}, {""}, {""}, {""}, -#line 723 "../tests/keys" {"endDescriptors",718}, {""}, {""}, {""}, -#line 1444 "../tests/keys" - {"numberingOrderOfDiamonds",1439}, -#line 2098 "../tests/keys" - {"tablesVersion",2093}, -#line 679 "../tests/keys" + {"numberingOrderOfDiamonds",1440}, + {"tablesVersion",2094}, {"directionNumber",674}, {""}, {""}, {""}, {""}, -#line 2141 "../tests/keys" - {"topLevel",2136}, + {"topLevel",2137}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1086 "../tests/keys" - {"levTypeName",1081}, + {"levTypeName",1082}, {""}, {""}, {""}, {""}, -#line 552 "../tests/keys" {"coefsFirst",547}, -#line 1031 "../tests/keys" - {"laplacianOperatorIsSet",1026}, + {"laplacianOperatorIsSet",1027}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1721 "../tests/keys" - {"rdbtimeSecond",1716}, + {"rdbtimeSecond",1718}, {""}, {""}, -#line 2302 "../tests/keys" - {"windDirection",2297}, + {"windDirection",2298}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1509 "../tests/keys" - {"optionalData",1504}, + {"optionalData",1506}, {""}, -#line 644 "../tests/keys" {"datumSize",639}, {""}, {""}, {""}, {""}, -#line 781 "../tests/keys" {"expoffset",776}, {""}, -#line 613 "../tests/keys" {"crcrlf",608}, -#line 1308 "../tests/keys" - {"newSubtype",1303}, + {"newSubtype",1304}, {""}, {""}, {""}, {""}, -#line 1446 "../tests/keys" - {"observablePropertyTemplate",1441}, + {"observablePropertyTemplate",1442}, {""}, -#line 1068 "../tests/keys" - {"latitudesList",1063}, + {"latitudesList",1064}, {""}, {""}, {""}, {""}, {""}, -#line 1733 "../tests/keys" - {"rectimeSecond",1728}, + {"rectimeSecond",1730}, {""}, {""}, {""}, {""}, -#line 1199 "../tests/keys" - {"marsLongitude",1194}, -#line 969 "../tests/keys" + {"marsLongitude",1195}, {"instrumentIdentifier",964}, {""}, -#line 2006 "../tests/keys" - {"siteLongitude",2001}, + {"siteLongitude",2002}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1828 "../tests/keys" - {"runwayState",1823}, + {"runwayState",1825}, {""}, -#line 421 "../tests/keys" {"charValues",416}, {""}, -#line 1832 "../tests/keys" - {"satelliteNumber",1827}, -#line 2292 "../tests/keys" - {"waveDomain",2287}, + {"satelliteNumber",1829}, + {"waveDomain",2288}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1691 "../tests/keys" - {"qfe",1686}, + {"qfe",1688}, {""}, -#line 557 "../tests/keys" {"compressedData",552}, {""}, {""}, {""}, {""}, -#line 953 "../tests/keys" {"indexTemplate",948}, -#line 1750 "../tests/keys" - {"representationMode",1745}, + {"representationMode",1747}, {""}, {""}, {""}, {""}, -#line 657 "../tests/keys" {"defaultName",652}, {""}, -#line 1451 "../tests/keys" - {"observedData",1446}, + {"observedData",1447}, {""}, {""}, -#line 990 "../tests/keys" {"isEps",985}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1012 "../tests/keys" - {"iteratorDisableUnrotate",1007}, + {"iteratorDisableUnrotate",1008}, {""}, {""}, {""}, {""}, {""}, -#line 1362 "../tests/keys" - {"numberOfDirections",1357}, + {"numberOfDirections",1358}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1121 "../tests/keys" - {"localLatitude",1116}, + {"localLatitude",1117}, {""}, {""}, {""}, -#line 1215 "../tests/keys" - {"masterTableNumber",1210}, -#line 1118 "../tests/keys" - {"localFlag",1113}, + {"masterTableNumber",1211}, + {"localFlag",1114}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 976 "../tests/keys" {"internalVersion",971}, {""}, {""}, {""}, -#line 2048 "../tests/keys" - {"startTimeStep",2043}, + {"startTimeStep",2044}, {""}, {""}, {""}, {""}, -#line 299 "../tests/keys" {"aerosolbinnumber",294}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1432 "../tests/keys" - {"numberOfTimeSteps",1427}, + {"numberOfTimeSteps",1428}, {""}, {""}, {""}, -#line 84 "../tests/keys" {"GTSstr",79}, -#line 2207 "../tests/keys" - {"typicalSecond",2202}, + {"typicalSecond",2203}, {""}, {""}, {""}, {""}, {""}, -#line 1891 "../tests/keys" - {"secondDimension",1886}, -#line 196 "../tests/keys" + {"secondDimension",1888}, {"Nf",191}, {""}, -#line 551 "../tests/keys" {"codedValues",546}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1093 "../tests/keys" - {"libraryVersion",1088}, + {"libraryVersion",1089}, {""}, -#line 1734 "../tests/keys" - {"reducedGrid",1729}, + {"reducedGrid",1731}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1989 "../tests/keys" - {"setLocalDefinition",1984}, + {"setLocalDefinition",1985}, {""}, -#line 1204 "../tests/keys" - {"marsStartStep",1199}, + {"marsStartStep",1200}, {""}, -#line 1445 "../tests/keys" - {"numericValues",1440}, + {"numericValues",1441}, {""}, {""}, {""}, -#line 1361 "../tests/keys" - {"numberOfDiamonds",1356}, + {"numberOfDiamonds",1357}, {""}, {""}, -#line 1201 "../tests/keys" - {"marsParam",1196}, -#line 1131 "../tests/keys" - {"localSection",1126}, -#line 975 "../tests/keys" + {"marsParam",1197}, + {"localSection",1127}, {"integerValues",970}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1271 "../tests/keys" - {"missingValue",1266}, + {"missingValue",1267}, {""}, -#line 36 "../tests/keys" {"DiGiven",31}, {""}, {""}, -#line 677 "../tests/keys" {"dimensionType",672}, -#line 2250 "../tests/keys" - {"validityDate",2245}, -#line 788 "../tests/keys" + {"validityDate",2246}, {"extraValues",783}, {""}, {""}, -#line 541 "../tests/keys" {"clusterSize",536}, -#line 1833 "../tests/keys" - {"satelliteSeries",1828}, + {"satelliteSeries",1830}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 743 "../tests/keys" {"endOfRange",738}, -#line 759 "../tests/keys" {"epsPoint",754}, -#line 1758 "../tests/keys" - {"reservedOctet",1753}, -#line 842 "../tests/keys" + {"reservedOctet",1755}, {"firstLatitude",837}, {""}, -#line 868 "../tests/keys" {"frequency",863}, {""}, -#line 2121 "../tests/keys" - {"tiggeSection",2116}, + {"tiggeSection",2117}, {""}, {""}, -#line 1187 "../tests/keys" - {"marsEndStep",1182}, + {"marsEndStep",1183}, {""}, -#line 1772 "../tests/keys" - {"rootTablesDir",1767}, -#line 1737 "../tests/keys" - {"referenceDate",1732}, + {"rootTablesDir",1769}, + {"referenceDate",1734}, {""}, {""}, {""}, -#line 1745 "../tests/keys" - {"referenceValue",1740}, + {"referenceValue",1742}, {""}, {""}, {""}, -#line 1372 "../tests/keys" - {"numberOfFloats",1367}, + {"numberOfFloats",1368}, {""}, -#line 1724 "../tests/keys" - {"realPart",1719}, + {"realPart",1721}, {""}, {""}, {""}, -#line 593 "../tests/keys" {"coordinatesPresent",588}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1672 "../tests/keys" - {"probPoint",1667}, + {"probPoint",1669}, {""}, {""}, {""}, -#line 1168 "../tests/keys" - {"longitudeSexagesimal",1163}, + {"longitudeSexagesimal",1164}, {""}, {""}, {""}, -#line 2279 "../tests/keys" - {"verticalDomainTemplate",2274}, -#line 1143 "../tests/keys" - {"longitudeOfCenterPoint",1138}, + {"verticalDomainTemplate",2275}, + {"longitudeOfCenterPoint",1139}, {""}, -#line 72 "../tests/keys" {"FirstLatitude",67}, -#line 1476 "../tests/keys" - {"offsetSection0",1471}, + {"offsetSection0",1473}, {""}, -#line 1628 "../tests/keys" - {"perturbedType",1623}, + {"perturbedType",1625}, {""}, {""}, {""}, {""}, -#line 83 "../tests/keys" {"GTS",78}, {""}, {""}, -#line 886 "../tests/keys" {"globalDomain",881}, -#line 1172 "../tests/keys" - {"lowerLimit",1167}, + {"lowerLimit",1168}, {""}, -#line 1470 "../tests/keys" - {"offsetDescriptors",1465}, -#line 918 "../tests/keys" + {"offsetDescriptors",1467}, {"heightLevelName",913}, -#line 880 "../tests/keys" {"generatingProcessIdentifier",875}, {""}, {""}, {""}, {""}, {""}, -#line 1752 "../tests/keys" - {"representativeMember",1747}, + {"representativeMember",1749}, {""}, -#line 669 "../tests/keys" {"derivedForecast",664}, {""}, {""}, {""}, -#line 2068 "../tests/keys" - {"stringValues",2063}, + {"stringValues",2064}, + {""}, {""}, + {"oceanLevName",1450}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 187 "../tests/keys" + {""}, {"NR",182}, {""}, -#line 2245 "../tests/keys" - {"userTimeEnd",2240}, + {"userTimeEnd",2241}, {""}, {""}, {""}, -#line 309 "../tests/keys" {"angleSubdivisions",304}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 648 "../tests/keys" {"dayOfForecast",643}, {""}, {""}, -#line 2241 "../tests/keys" - {"userDateEnd",2236}, -#line 1487 "../tests/keys" - {"offsetSection9",1482}, + {"userDateEnd",2237}, + {"offsetSection9",1484}, {""}, {""}, {""}, -#line 853 "../tests/keys" {"floatVal",848}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 185 "../tests/keys" {"NL",180}, {""}, {""}, -#line 882 "../tests/keys" {"generatingProcessTemplateNumber",877}, -#line 879 "../tests/keys" {"generatingProcessIdentificationNumber",874}, -#line 374 "../tests/keys" {"boustrophedonicOrdering",369}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1189 "../tests/keys" - {"marsExpver",1184}, -#line 1447 "../tests/keys" - {"observablePropertyTemplateNumber",1442}, - {""}, {""}, {""}, {""}, -#line 1173 "../tests/keys" - {"lowerRange",1168}, + {"marsExpver",1185}, + {"observablePropertyTemplateNumber",1443}, + {""}, {""}, {""}, + {"dataKeys",616}, + {"lowerRange",1169}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1041 "../tests/keys" - {"latitudeOfCenterPoint",1036}, + {"latitudeOfCenterPoint",1037}, {""}, {""}, {""}, {""}, -#line 2003 "../tests/keys" - {"siteElevation",1998}, + {"siteElevation",1999}, {""}, {""}, {""}, {""}, -#line 1894 "../tests/keys" - {"secondLatitude",1889}, + {"secondLatitude",1891}, {""}, {""}, -#line 827 "../tests/keys" {"faFieldName",822}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1744 "../tests/keys" - {"referenceStep",1739}, + {"referenceStep",1741}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 917 "../tests/keys" {"headersOnly",912}, -#line 110 "../tests/keys" {"LaR",105}, {""}, -#line 378 "../tests/keys" {"bufrTemplate",373}, {""}, {""}, {""}, -#line 269 "../tests/keys" {"XR",264}, -#line 1171 "../tests/keys" - {"longitudinalDirectionGridLength",1166}, -#line 896 "../tests/keys" + {"longitudinalDirectionGridLength",1167}, {"gridDefinition",891}, {""}, -#line 2185 "../tests/keys" - {"typeOfLevel",2180}, + {"typeOfLevel",2181}, {""}, {""}, -#line 636 "../tests/keys" {"dateOfForecast",631}, {""}, -#line 129 "../tests/keys" {"LoR",124}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2195 "../tests/keys" - {"typeOfStatisticalPostProcessingOfEnsembleMembers",2190}, -#line 2134 "../tests/keys" - {"timeOfForecast",2129}, + {"typeOfStatisticalPostProcessingOfEnsembleMembers",2191}, + {"timeOfForecast",2130}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2347 "../tests/keys" - {"yearOfForecast",2342}, + {"yearOfForecast",2343}, {""}, {""}, -#line 1679 "../tests/keys" - {"productDefinition",1674}, + {"productDefinition",1676}, {""}, {""}, {""}, {""}, -#line 1743 "../tests/keys" - {"referenceSampleInterval",1738}, + {"referenceSampleInterval",1740}, {""}, {""}, {""}, {""}, {""}, -#line 818 "../tests/keys" {"extractSubsetList",813}, -#line 954 "../tests/keys" {"indexTemplateNumber",949}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2181 "../tests/keys" - {"typeOfGrid",2176}, -#line 1222 "../tests/keys" - {"matchTimeRepres",1217}, + {"typeOfGrid",2177}, + {"matchTimeRepres",1218}, {""}, {""}, -#line 2243 "../tests/keys" - {"userDateTimeEnd",2238}, + {"userDateTimeEnd",2239}, {""}, {""}, {""}, -#line 1188 "../tests/keys" - {"marsExperimentOffset",1183}, + {"marsExperimentOffset",1184}, {""}, {""}, -#line 624 "../tests/keys" {"dataRepresentation",619}, {""}, {""}, -#line 312 "../tests/keys" {"anoffsetFirst",307}, {""}, {""}, {""}, {""}, -#line 936 "../tests/keys" {"iDirectionIncrement",931}, -#line 559 "../tests/keys" {"computeStatistics",554}, -#line 1064 "../tests/keys" - {"latitudeSexagesimal",1059}, -#line 1307 "../tests/keys" - {"neitherPresent",1302}, -#line 410 "../tests/keys" + {"latitudeSexagesimal",1060}, + {"neitherPresent",1303}, {"cfVarName",405}, -#line 558 "../tests/keys" {"computeLaplacianOperator",553}, {""}, {""}, -#line 225 "../tests/keys" {"SPD",220}, {""}, -#line 2040 "../tests/keys" - {"standardParallel",2035}, + {"standardParallel",2036}, {""}, {""}, -#line 2281 "../tests/keys" - {"verticalVisibility",2276}, + {"verticalVisibility",2277}, {""}, -#line 854 "../tests/keys" {"floatValues",849}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 949 "../tests/keys" {"ifsParam",944}, {""}, -#line 1440 "../tests/keys" - {"numberOfValues",1435}, -#line 1114 "../tests/keys" - {"localDefinition",1109}, + {"numberOfValues",1436}, + {"localDefinition",1110}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 226 "../tests/keys" {"SecondLatitude",221}, {""}, {""}, {""}, {""}, -#line 769 "../tests/keys" {"expandedDescriptors",764}, {""}, {""}, -#line 561 "../tests/keys" {"conceptsLocalDirAll",556}, -#line 1857 "../tests/keys" - {"scaledDirections",1852}, + {"scaledDirections",1854}, {""}, {""}, {""}, -#line 756 "../tests/keys" {"ensembleStandardDeviation",751}, {""}, {""}, {""}, {""}, {""}, -#line 2307 "../tests/keys" - {"windGust",2302}, + {"windGust",2303}, {""}, -#line 686 "../tests/keys" {"distinctLatitudes",681}, -#line 403 "../tests/keys" {"centreForLocal",398}, {""}, {""}, {""}, -#line 1690 "../tests/keys" - {"pvlLocation",1685}, -#line 2214 "../tests/keys" - {"unexpandedDescriptors",2209}, + {"pvlLocation",1687}, + {"unexpandedDescriptors",2210}, {""}, {""}, {""}, -#line 303 "../tests/keys" {"analysisOffsets",298}, -#line 1518 "../tests/keys" - {"originalSubCentreIdentifier",1513}, -#line 2081 "../tests/keys" - {"subcentreOfAnalysis",2076}, + {"originalSubCentreIdentifier",1515}, + {"subcentreOfAnalysis",2077}, {""}, -#line 661 "../tests/keys" {"defaultStepUnits",656}, -#line 907 "../tests/keys" {"groupSplitting",902}, {""}, {""}, -#line 2041 "../tests/keys" - {"standardParallelInDegrees",2036}, + {"standardParallelInDegrees",2037}, {""}, -#line 930 "../tests/keys" {"hourOfForecast",925}, {""}, {""}, -#line 1224 "../tests/keys" - {"matrixOfValues",1219}, -#line 2096 "../tests/keys" - {"tablesLocalDir",2091}, - {""}, -#line 1952 "../tests/keys" - {"section8",1947}, - {""}, {""}, -#line 1507 "../tests/keys" - {"optimisationTime",1502}, -#line 867 "../tests/keys" + {"matrixOfValues",1220}, + {"tablesLocalDir",2092}, + {""}, {""}, {""}, {""}, + {"optimisationTime",1504}, {"freeFormData",862}, {""}, {""}, {""}, {""}, -#line 666 "../tests/keys" {"deleteExtraLocalSection",661}, {""}, {""}, {""}, {""}, {""}, -#line 1267 "../tests/keys" - {"minuteOfReference",1262}, -#line 967 "../tests/keys" + {"minuteOfReference",1263}, {"inputShortDelayedDescriptorReplicationFactor",962}, {""}, {""}, -#line 2158 "../tests/keys" - {"totalNumberOfdimensions",2153}, + {"totalNumberOfdimensions",2154}, {""}, {""}, -#line 2196 "../tests/keys" - {"typeOfStatisticalProcessing",2191}, + {"typeOfStatisticalProcessing",2192}, {""}, {""}, -#line 627 "../tests/keys" {"dataRepresentationType",622}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 828 "../tests/keys" + {""}, {""}, {""}, {""}, {""}, + {"KS",96}, {"faLevelName",823}, -#line 1858 "../tests/keys" - {"scaledFrequencies",1853}, + {"scaledFrequencies",1855}, {""}, -#line 1198 "../tests/keys" - {"marsLevelist",1193}, + {"marsLevelist",1194}, {""}, {""}, {""}, -#line 960 "../tests/keys" {"indicatorOfUnitOfTimeRange",955}, -#line 2000 "../tests/keys" - {"simpleThinningMissingRadius",1995}, + {"simpleThinningMissingRadius",1996}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 659 "../tests/keys" {"defaultSequence",654}, {""}, -#line 1042 "../tests/keys" - {"latitudeOfCenterPointInDegrees",1037}, + {"latitudeOfCenterPointInDegrees",1038}, {""}, -#line 640 "../tests/keys" {"dateOfReference",635}, -#line 1378 "../tests/keys" - {"numberOfFrequencies",1373}, -#line 2156 "../tests/keys" - {"totalNumberOfTubes",2151}, + {"numberOfFrequencies",1374}, + {"totalNumberOfTubes",2152}, {""}, -#line 2215 "../tests/keys" - {"unexpandedDescriptorsEncoded",2210}, + {"unexpandedDescriptorsEncoded",2211}, {""}, {""}, -#line 2035 "../tests/keys" - {"spectralDataRepresentationType",2030}, -#line 787 "../tests/keys" + {"spectralDataRepresentationType",2031}, {"extraLocalSectionPresent",782}, {""}, {""}, -#line 2136 "../tests/keys" - {"timeOfReference",2131}, + {"timeOfReference",2132}, {""}, {""}, -#line 2265 "../tests/keys" - {"verificationDate",2260}, + {"verificationDate",2261}, {""}, {""}, {""}, -#line 2349 "../tests/keys" - {"yearOfReference",2344}, + {"yearOfReference",2345}, {""}, {""}, {""}, {""}, {""}, -#line 363 "../tests/keys" {"biFourierTruncationType",358}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1398 "../tests/keys" - {"numberOfOperationalForecastTube",1393}, + {"numberOfOperationalForecastTube",1394}, {""}, {""}, -#line 191 "../tests/keys" {"NV",186}, -#line 625 "../tests/keys" {"dataRepresentationTemplate",620}, {""}, {""}, {""}, -#line 1124 "../tests/keys" - {"localLongitude",1119}, + {"localLongitude",1120}, {""}, -#line 1381 "../tests/keys" - {"numberOfGroups",1376}, -#line 572 "../tests/keys" + {"numberOfGroups",1377}, {"controlForecastCluster",567}, {""}, {""}, -#line 1036 "../tests/keys" - {"latLonValues",1031}, + {"latLonValues",1032}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 972 "../tests/keys" {"integerScaleFactor",967}, {""}, {""}, {""}, -#line 1321 "../tests/keys" - {"northernLatitudeOfDomain",1316}, + {"northernLatitudeOfDomain",1317}, {""}, {""}, {""}, -#line 786 "../tests/keys" {"extraLocalSectionNumber",781}, -#line 923 "../tests/keys" {"horizontalCoordinateSupplement",918}, {""}, {""}, -#line 653 "../tests/keys" {"decimalScaleFactor",648}, {""}, {""}, {""}, -#line 1893 "../tests/keys" - {"secondDimensionPhysicalSignificance",1888}, + {"secondDimensionPhysicalSignificance",1890}, {""}, {""}, -#line 2280 "../tests/keys" - {"verticalDomainTemplateNumber",2275}, + {"verticalDomainTemplateNumber",2276}, {""}, {""}, {""}, {""}, -#line 1288 "../tests/keys" - {"monthOfForecast",1283}, + {"monthOfForecast",1284}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1429 "../tests/keys" - {"numberOfSubsets",1424}, + {"numberOfSubsets",1425}, {""}, {""}, -#line 908 "../tests/keys" {"groupSplittingMethodUsed",903}, {""}, {""}, -#line 945 "../tests/keys" {"identificationOfOriginatingGeneratingCentre",940}, -#line 2149 "../tests/keys" - {"totalNumberOfDirections",2144}, -#line 2095 "../tests/keys" - {"tableReference",2090}, -#line 1220 "../tests/keys" - {"matchLandType",1215}, + {"totalNumberOfDirections",2145}, + {"tableReference",2091}, + {"matchLandType",1216}, {""}, {""}, -#line 1107 "../tests/keys" - {"listOfScaledFrequencies",1102}, + {"listOfScaledFrequencies",1103}, {""}, -#line 963 "../tests/keys" {"inputExtendedDelayedDescriptorReplicationFactor",958}, -#line 1115 "../tests/keys" - {"localDefinitionNumber",1110}, -#line 313 "../tests/keys" + {"localDefinitionNumber",1111}, {"anoffsetFrequency",308}, -#line 428 "../tests/keys" {"climatologicalRegime",423}, {""}, -#line 858 "../tests/keys" {"forecastPeriod",853}, {""}, {""}, {""}, {""}, -#line 658 "../tests/keys" {"defaultParameter",653}, {""}, {""}, {""}, {""}, {""}, -#line 1516 "../tests/keys" - {"originalParameterNumber",1511}, + {"originalParameterNumber",1513}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1422 "../tests/keys" - {"numberOfReservedBytes",1417}, + {"numberOfReservedBytes",1418}, {""}, -#line 2024 "../tests/keys" - {"southernLatitudeOfDomain",2019}, -#line 1282 "../tests/keys" - {"modelVersionDate",1277}, + {"southernLatitudeOfDomain",2020}, + {"modelVersionDate",1278}, {""}, -#line 2176 "../tests/keys" - {"typeOfDistributionFunction",2171}, -#line 1253 "../tests/keys" - {"meaningOfVerticalCoordinate",1248}, + {"typeOfDistributionFunction",2172}, + {"meaningOfVerticalCoordinate",1249}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1293 "../tests/keys" - {"monthlyVerificationTime",1288}, + {"monthlyVerificationTime",1289}, {""}, -#line 932 "../tests/keys" {"hourOfReference",927}, {""}, {""}, {""}, -#line 1070 "../tests/keys" - {"lcwfvSuiteName",1065}, -#line 130 "../tests/keys" + {"lcwfvSuiteName",1066}, {"LoV",125}, {""}, -#line 368 "../tests/keys" {"bitmapSectionPresent",363}, {""}, {""}, -#line 362 "../tests/keys" {"biFourierSubTruncationType",357}, {""}, {""}, {""}, -#line 543 "../tests/keys" {"clusteringMethod",538}, {""}, {""}, -#line 1387 "../tests/keys" - {"numberOfLocalDefinitions",1382}, + {"numberOfLocalDefinitions",1383}, {""}, {""}, {""}, -#line 1291 "../tests/keys" - {"monthlyVerificationDate",1286}, + {"monthlyVerificationDate",1287}, {""}, -#line 944 "../tests/keys" {"identificationNumber",939}, -#line 1508 "../tests/keys" - {"optimizeScaleFactor",1503}, - {""}, {""}, {""}, {""}, {""}, -#line 1513 "../tests/keys" - {"orientationOfTheGrid",1508}, + {"optimizeScaleFactor",1505}, + {""}, + {"section8",1948}, + {""}, {""}, {""}, + {"orientationOfTheGrid",1510}, {""}, {""}, {""}, {""}, -#line 1696 "../tests/keys" - {"qnhPresent",1691}, + {"qnhPresent",1693}, {""}, {""}, -#line 977 "../tests/keys" {"internationalDataSubCategory",972}, -#line 614 "../tests/keys" {"createNewData",609}, {""}, {""}, {""}, -#line 1420 "../tests/keys" - {"numberOfRemaininChars",1415}, + {"numberOfRemaininChars",1416}, {""}, {""}, {""}, {""}, {""}, -#line 690 "../tests/keys" {"doExtractSubsets",685}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1284 "../tests/keys" - {"molarMass",1279}, -#line 1425 "../tests/keys" - {"numberOfSection",1420}, + {"molarMass",1280}, + {"numberOfSection",1421}, {""}, {""}, -#line 323 "../tests/keys" {"averagingPeriod",318}, {""}, -#line 1881 "../tests/keys" - {"scanPosition",1876}, + {"scanPosition",1878}, {""}, {""}, {""}, {""}, {""}, -#line 542 "../tests/keys" {"clusteringDomain",537}, -#line 1911 "../tests/keys" - {"secondsOfReference",1906}, + {"secondsOfReference",1908}, {""}, -#line 1627 "../tests/keys" - {"perturbationNumber",1622}, + {"perturbationNumber",1624}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1290 "../tests/keys" - {"monthOfReference",1285}, + {"monthOfReference",1286}, {""}, -#line 2323 "../tests/keys" - {"windVariableDirection",2318}, + {"windVariableDirection",2319}, {""}, {""}, {""}, {""}, -#line 555 "../tests/keys" {"complexPacking",550}, {""}, {""}, {""}, {""}, -#line 1373 "../tests/keys" - {"numberOfForcasts",1368}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 621 "../tests/keys" - {"dataKeys",616}, -#line 761 "../tests/keys" + {"numberOfForcasts",1369}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"epsStatisticsPoint",756}, {""}, {""}, -#line 1680 "../tests/keys" - {"productDefinitionTemplateNumber",1675}, + {"productDefinitionTemplateNumber",1677}, {""}, {""}, {""}, {""}, -#line 367 "../tests/keys" {"bitmapPresent",362}, -#line 1117 "../tests/keys" - {"localExtensionPadding",1112}, + {"localExtensionPadding",1113}, {""}, {""}, -#line 855 "../tests/keys" {"forecastLeadTime",850}, {""}, {""}, -#line 1200 "../tests/keys" - {"marsModel",1195}, + {"marsModel",1196}, {""}, {""}, {""}, -#line 406 "../tests/keys" {"centuryOfReference",401}, {""}, {""}, {""}, -#line 869 "../tests/keys" {"frequencyNumber",864}, {""}, {""}, {""}, -#line 922 "../tests/keys" {"horizontalCoordinateDefinition",917}, {""}, {""}, {""}, -#line 306 "../tests/keys" {"angleOfRotation",301}, -#line 1739 "../tests/keys" - {"referenceForGroupWidths",1734}, + {"referenceForGroupWidths",1736}, {""}, {""}, {""}, -#line 2060 "../tests/keys" - {"stepTypeForConversion",2055}, + {"stepTypeForConversion",2056}, {""}, {""}, -#line 987 "../tests/keys" {"isConstant",982}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 832 "../tests/keys" {"falseNorthing",827}, {""}, {""}, {""}, {""}, {""}, -#line 2108 "../tests/keys" - {"theMessage",2103}, + {"theMessage",2104}, {""}, {""}, {""}, -#line 1159 "../tests/keys" - {"longitudeOfStretchingPole",1154}, -#line 2197 "../tests/keys" - {"typeOfTimeIncrement",2192}, + {"longitudeOfStretchingPole",1155}, + {"typeOfTimeIncrement",2193}, {""}, {""}, -#line 2122 "../tests/keys" - {"tiggeSuiteID",2117}, + {"tiggeSuiteID",2118}, {""}, {""}, {""}, -#line 18 "../tests/keys" {"Adelta",13}, {""}, -#line 1216 "../tests/keys" - {"masterTablesVersionNumber",1211}, + {"masterTablesVersionNumber",1212}, {""}, {""}, -#line 1962 "../tests/keys" - {"sectionPosition",1957}, + {"sectionPosition",1958}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2218 "../tests/keys" - {"unitOfTimeIncrement",2213}, + {"unitOfTimeIncrement",2214}, {""}, {""}, {""}, -#line 2069 "../tests/keys" - {"subCentre",2064}, -#line 820 "../tests/keys" + {"subCentre",2065}, {"extractedDateTimeNumberOfSubsets",815}, {""}, {""}, -#line 2270 "../tests/keys" - {"versionNumOfFilesFreeSpaceStorage",2265}, + {"versionNumOfFilesFreeSpaceStorage",2266}, {""}, -#line 2178 "../tests/keys" - {"typeOfEnsembleMember",2173}, -#line 2099 "../tests/keys" - {"tablesVersionLatest",2094}, -#line 1681 "../tests/keys" - {"productDefinitionTemplateNumberInternal",1676}, -#line 375 "../tests/keys" + {"typeOfEnsembleMember",2174}, + {"tablesVersionLatest",2095}, + {"productDefinitionTemplateNumberInternal",1678}, {"bufrDataEncoded",370}, {""}, {""}, -#line 981 "../tests/keys" {"isAuto",976}, {""}, -#line 412 "../tests/keys" {"changeDecimalPrecision",407}, {""}, {""}, {""}, -#line 1738 "../tests/keys" - {"referenceForGroupLengths",1733}, + {"referenceForGroupLengths",1735}, {""}, -#line 181 "../tests/keys" {"NG",176}, -#line 1182 "../tests/keys" - {"marsClass",1177}, + {"marsClass",1178}, {""}, {""}, {""}, -#line 1423 "../tests/keys" - {"numberOfRows",1418}, + {"numberOfRows",1419}, {""}, -#line 2154 "../tests/keys" - {"totalNumberOfRepetitions",2149}, -#line 159 "../tests/keys" + {"totalNumberOfRepetitions",2150}, {"MS",154}, -#line 417 "../tests/keys" {"changingPrecision",412}, -#line 315 "../tests/keys" {"applicationIdentifier",310}, {""}, {""}, -#line 2093 "../tests/keys" - {"tableCode",2088}, + {"tableCode",2089}, {""}, {""}, {""}, {""}, -#line 2112 "../tests/keys" - {"thisMarsType",2107}, -#line 1112 "../tests/keys" - {"localDefNumberOne",1107}, + {"thisMarsType",2108}, + {"localDefNumberOne",1108}, {""}, {""}, {""}, {""}, {""}, -#line 1382 "../tests/keys" - {"numberOfGroupsOfDataValues",1377}, + {"numberOfGroupsOfDataValues",1378}, {""}, {""}, -#line 1069 "../tests/keys" - {"latitudinalDirectionGridLength",1064}, + {"latitudinalDirectionGridLength",1065}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2109 "../tests/keys" - {"thisExperimentVersionNumber",2104}, + {"thisExperimentVersionNumber",2105}, {""}, {""}, -#line 626 "../tests/keys" {"dataRepresentationTemplateNumber",621}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1005 "../tests/keys" - {"is_uerra",1000}, + {"is_uerra",1001}, {""}, {""}, {""}, -#line 689 "../tests/keys" {"doExtractDateTime",684}, -#line 314 "../tests/keys" {"anoffsetLast",309}, {""}, {""}, -#line 724 "../tests/keys" {"endGridDefinition",719}, -#line 1505 "../tests/keys" - {"operatingMode",1500}, + {"operatingMode",1502}, {""}, {""}, {""}, -#line 1418 "../tests/keys" - {"numberOfRadials",1413}, -#line 1511 "../tests/keys" - {"orderOfSPD",1506}, + {"numberOfRadials",1414}, + {"orderOfSPD",1508}, {""}, {""}, -#line 231 "../tests/keys" {"Sub-Experiment_Identifier",226}, -#line 861 "../tests/keys" {"forecastProbabilityNumber",856}, {""}, -#line 703 "../tests/keys" {"earthMinorAxis",698}, -#line 1604 "../tests/keys" - {"parameterCode",1599}, + {"parameterCode",1601}, {""}, -#line 655 "../tests/keys" {"defaultFaLevelName",650}, -#line 1227 "../tests/keys" - {"md5Data",1222}, -#line 654 "../tests/keys" + {"md5Data",1223}, {"defaultFaFieldName",649}, {""}, {""}, {""}, -#line 753 "../tests/keys" {"ensembleForecastNumbers",748}, {""}, {""}, -#line 1996 "../tests/keys" - {"short_name",1991}, + {"short_name",1992}, {""}, {""}, {""}, -#line 1514 "../tests/keys" - {"orientationOfTheGridInDegrees",1509}, + {"orientationOfTheGridInDegrees",1511}, {""}, {""}, {""}, {""}, -#line 369 "../tests/keys" {"bitsPerValue",364}, {""}, -#line 1692 "../tests/keys" - {"qfePresent",1687}, + {"qfePresent",1689}, {""}, -#line 1853 "../tests/keys" - {"scaleFactorOfStandardDeviation",1848}, + {"scaleFactorOfStandardDeviation",1850}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2150 "../tests/keys" - {"totalNumberOfForecastProbabilities",2145}, + {"totalNumberOfForecastProbabilities",2146}, {""}, {""}, {""}, {""}, -#line 1854 "../tests/keys" - {"scaleFactorOfStandardDeviationInTheCluster",1849}, -#line 617 "../tests/keys" + {"scaleFactorOfStandardDeviationInTheCluster",1851}, {"dataAccessors",612}, {""}, {""}, -#line 1127 "../tests/keys" - {"localMinute",1122}, + {"localMinute",1123}, {""}, -#line 329 "../tests/keys" {"baseAddress",324}, {""}, {""}, -#line 1443 "../tests/keys" - {"numberOfVerticalPoints",1438}, + {"numberOfVerticalPoints",1439}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 287 "../tests/keys" {"_T",282}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1128 "../tests/keys" - {"localMonth",1123}, + {"localMonth",1124}, {""}, -#line 2036 "../tests/keys" - {"spectralMode",2031}, -#line 1671 "../tests/keys" - {"probContinous",1666}, + {"spectralMode",2032}, + {"probContinous",1668}, {""}, {""}, {""}, {""}, {""}, -#line 2111 "../tests/keys" - {"thisMarsStream",2106}, - {""}, -#line 101 "../tests/keys" - {"KS",96}, - {""}, -#line 1856 "../tests/keys" - {"scaleValuesBy",1851}, + {"thisMarsStream",2107}, + {""}, {""}, {""}, + {"scaleValuesBy",1853}, {""}, {""}, {""}, {""}, {""}, -#line 209 "../tests/keys" {"P",204}, -#line 961 "../tests/keys" {"inputDataPresentIndicator",956}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1882 "../tests/keys" - {"scanningMode",1877}, + {"scanningMode",1879}, {""}, -#line 662 "../tests/keys" {"defaultTypeOfLevel",657}, -#line 637 "../tests/keys" {"dateOfForecastRun",632}, {""}, {""}, -#line 2004 "../tests/keys" - {"siteId",1999}, -#line 2159 "../tests/keys" - {"treatmentOfMissingData",2154}, + {"siteId",2000}, + {"treatmentOfMissingData",2155}, {""}, {""}, {""}, {""}, -#line 650 "../tests/keys" {"dayOfReference",645}, -#line 2120 "../tests/keys" - {"tiggeModel",2115}, + {"tiggeModel",2116}, {""}, {""}, -#line 1192 "../tests/keys" - {"marsIdent",1187}, + {"marsIdent",1188}, {""}, {""}, -#line 1517 "../tests/keys" - {"originalParameterTableNumber",1512}, + {"originalParameterTableNumber",1514}, {""}, {""}, -#line 567 "../tests/keys" {"consensusCount",562}, -#line 1914 "../tests/keys" - {"section0Pointer",1909}, + {"section0Pointer",1911}, {""}, -#line 914 "../tests/keys" {"gts_header",909}, -#line 1892 "../tests/keys" - {"secondDimensionCoordinateValueDefinition",1887}, + {"secondDimensionCoordinateValueDefinition",1889}, {""}, -#line 997 "../tests/keys" {"is_aerosol",992}, {""}, -#line 1600 "../tests/keys" - {"paramId",1595}, -#line 2151 "../tests/keys" - {"totalNumberOfFrequencies",2146}, -#line 73 "../tests/keys" + {"paramId",1597}, + {"totalNumberOfFrequencies",2147}, {"GDSPresent",68}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 539 "../tests/keys" {"clusterMember9",534}, {""}, {""}, -#line 1283 "../tests/keys" - {"modelVersionTime",1278}, + {"modelVersionTime",1279}, {""}, {""}, -#line 1075 "../tests/keys" - {"legacyGaussSubarea",1070}, -#line 1957 "../tests/keys" - {"section9Pointer",1952}, + {"legacyGaussSubarea",1071}, + {"section9Pointer",1953}, {""}, -#line 1359 "../tests/keys" - {"numberOfDataValues",1354}, -#line 1841 "../tests/keys" - {"scaleFactorOfFirstSize",1836}, + {"numberOfDataValues",1355}, + {"scaleFactorOfFirstSize",1838}, {""}, {""}, {""}, -#line 546 "../tests/keys" {"cnmc_isac",541}, {""}, -#line 317 "../tests/keys" {"atmosphericChemicalOrPhysicalConstituentType",312}, {""}, -#line 860 "../tests/keys" {"forecastPeriodTo",855}, {""}, {""}, -#line 1442 "../tests/keys" - {"numberOfVerticalGridDescriptors",1437}, + {"numberOfVerticalGridDescriptors",1438}, {""}, {""}, -#line 1751 "../tests/keys" - {"representationType",1746}, -#line 940 "../tests/keys" + {"representationType",1748}, {"iIncrement",935}, -#line 2117 "../tests/keys" - {"tiggeCentre",2112}, + {"tiggeCentre",2113}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1370 "../tests/keys" - {"numberOfDistributionFunctionParameters",1365}, + {"numberOfDistributionFunctionParameters",1366}, {""}, {""}, -#line 2123 "../tests/keys" - {"tigge_name",2118}, -#line 1004 "../tests/keys" - {"is_tigge",999}, + {"tigge_name",2119}, + {"is_tigge",1000}, {""}, {""}, {""}, {""}, -#line 1371 "../tests/keys" - {"numberOfEffectiveValues",1366}, + {"numberOfEffectiveValues",1367}, {""}, -#line 1851 "../tests/keys" - {"scaleFactorOfSecondSize",1846}, -#line 60 "../tests/keys" + {"scaleFactorOfSecondSize",1848}, {"Experiment_Identifier",55}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 937 "../tests/keys" {"iDirectionIncrementGiven",932}, -#line 1138 "../tests/keys" - {"local_use",1133}, + {"local_use",1134}, {""}, {""}, {""}, {""}, -#line 1020 "../tests/keys" - {"julianDay",1015}, + {"julianDay",1016}, + {"marsKeywords",1189}, + {"targetCompressionRatio",2096}, {""}, -#line 2100 "../tests/keys" - {"targetCompressionRatio",2095}, - {""}, -#line 758 "../tests/keys" {"epsContinous",753}, {""}, {""}, {""}, -#line 765 "../tests/keys" {"expandedCodes",760}, -#line 1757 "../tests/keys" - {"reservedNeedNotBePresent",1752}, + {"reservedNeedNotBePresent",1754}, {""}, -#line 595 "../tests/keys" {"corr1Data",590}, {""}, {""}, {""}, -#line 999 "../tests/keys" {"is_chemical",994}, -#line 2097 "../tests/keys" - {"tablesMasterDir",2092}, -#line 1241 "../tests/keys" - {"md5Section9",1236}, + {"tablesMasterDir",2093}, + {"md5Section9",1237}, {""}, {""}, -#line 2248 "../tests/keys" - {"uuidOfVGrid",2243}, -#line 962 "../tests/keys" + {"uuidOfVGrid",2244}, {"inputDelayedDescriptorReplicationFactor",957}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 305 "../tests/keys" {"angleMultiplier",300}, {""}, {""}, {""}, {""}, {""}, -#line 1971 "../tests/keys" - {"section_09",1966}, -#line 2277 "../tests/keys" - {"verticalCoordinate",2272}, + {"section_09",1967}, + {"verticalCoordinate",2273}, {""}, -#line 2236 "../tests/keys" - {"updateSequenceNumber",2231}, + {"updateSequenceNumber",2232}, {""}, {""}, -#line 2312 "../tests/keys" - {"windPresent",2307}, + {"windPresent",2308}, {""}, -#line 2228 "../tests/keys" - {"unitsOfSecondFixedSurface",2223}, + {"unitsOfSecondFixedSurface",2224}, {""}, {""}, {""}, {""}, -#line 545 "../tests/keys" {"cnmc_cmcc",540}, {""}, -#line 1637 "../tests/keys" - {"postAuxiliary",1632}, + {"postAuxiliary",1634}, {""}, -#line 1001 "../tests/keys" {"is_efas",996}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 288 "../tests/keys" {"_TS",283}, -#line 989 "../tests/keys" {"isEPS",984}, {""}, {""}, {""}, {""}, {""}, -#line 652 "../tests/keys" {"decimalPrecision",647}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 233 "../tests/keys" {"TAFstr",228}, -#line 764 "../tests/keys" {"expandedAbbreviations",759}, -#line 596 "../tests/keys" {"corr2Data",591}, {""}, -#line 876 "../tests/keys" {"gaussianGridName",871}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1113 "../tests/keys" - {"localDefNumberTwo",1108}, -#line 28 "../tests/keys" + {"localDefNumberTwo",1109}, {"CDFstr",23}, -#line 1877 "../tests/keys" - {"scaledValueOfStandardDeviation",1872}, + {"scaledValueOfStandardDeviation",1874}, {""}, -#line 1195 "../tests/keys" - {"marsLamModel",1190}, + {"marsLamModel",1191}, {""}, -#line 356 "../tests/keys" {"biFourierMakeTemplate",351}, {""}, {""}, -#line 1774 "../tests/keys" - {"roundedMarsLevelist",1769}, -#line 175 "../tests/keys" + {"roundedMarsLevelist",1771}, {"NAT",170}, {""}, {""}, {""}, -#line 1878 "../tests/keys" - {"scaledValueOfStandardDeviationInTheCluster",1873}, -#line 1984 "../tests/keys" - {"sensitiveAreaDomain",1979}, + {"scaledValueOfStandardDeviationInTheCluster",1875}, + {"sensitiveAreaDomain",1980}, {""}, -#line 925 "../tests/keys" {"horizontalDomainTemplate",920}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 840 "../tests/keys" {"firstDimensionCoordinateValueDefinition",835}, - {""}, -#line 99 "../tests/keys" - {"JS",94}, -#line 1132 "../tests/keys" - {"localSectionPresent",1127}, -#line 1177 "../tests/keys" - {"lsdate_bug",1172}, {""}, {""}, -#line 603 "../tests/keys" + {"localSectionPresent",1128}, + {"lsdate_bug",1173}, + {""}, {""}, {"correction2Part",598}, {""}, -#line 74 "../tests/keys" {"GG",69}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 875 "../tests/keys" {"g2grid",870}, -#line 1217 "../tests/keys" - {"masterTablesVersionNumberLatest",1212}, + {"masterTablesVersionNumberLatest",1213}, {""}, -#line 592 "../tests/keys" {"coordinateIndexNumber",587}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1242 "../tests/keys" - {"md5Structure",1237}, + {"md5Structure",1238}, {""}, {""}, -#line 1837 "../tests/keys" - {"scaleFactorOfDistributionFunctionParameter",1832}, + {"scaleFactorOfDistributionFunctionParameter",1834}, {""}, -#line 913 "../tests/keys" {"gts_ddhh00",908}, {""}, {""}, {""}, {""}, -#line 1402 "../tests/keys" - {"numberOfPartitions",1397}, -#line 668 "../tests/keys" + {"numberOfPartitions",1398}, {"deletePV",663}, -#line 771 "../tests/keys" {"expandedOriginalCodes",766}, {""}, {""}, -#line 774 "../tests/keys" {"expandedOriginalWidths",769}, -#line 2125 "../tests/keys" - {"tileClassification",2120}, + {"tileClassification",2121}, {""}, {""}, -#line 1999 "../tests/keys" - {"significanceOfReferenceTime",1994}, + {"significanceOfReferenceTime",1995}, {""}, {""}, {""}, {""}, {""}, -#line 550 "../tests/keys" {"codedNumberOfGroups",545}, -#line 1834 "../tests/keys" - {"scaleFactorAtReferencePoint",1829}, + {"scaleFactorAtReferencePoint",1831}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2032 "../tests/keys" - {"spatialProcessing",2027}, -#line 1644 "../tests/keys" - {"predefined_grid",1639}, -#line 310 "../tests/keys" + {"spatialProcessing",2028}, + {"predefined_grid",1641}, {"angularPrecision",305}, -#line 1403 "../tests/keys" - {"numberOfPoints",1398}, + {"numberOfPoints",1399}, {""}, -#line 1493 "../tests/keys" - {"oneMillionConstant",1488}, -#line 1998 "../tests/keys" - {"significanceOfReferenceDateAndTime",1993}, + {"oneMillionConstant",1490}, + {"significanceOfReferenceDateAndTime",1994}, {""}, -#line 670 "../tests/keys" {"dewPointTemperature",665}, {""}, {""}, {""}, {""}, {""}, -#line 1719 "../tests/keys" - {"rdbtimeMinute",1714}, + {"rdbtimeMinute",1716}, {""}, {""}, -#line 308 "../tests/keys" {"angleOfRotationOfProjection",303}, -#line 2278 "../tests/keys" - {"verticalCoordinateDefinition",2273}, + {"verticalCoordinateDefinition",2274}, {""}, {""}, -#line 1987 "../tests/keys" - {"setCalendarId",1982}, -#line 1274 "../tests/keys" - {"missingValuesPresent",1269}, + {"setCalendarId",1983}, + {"missingValuesPresent",1270}, {""}, {""}, -#line 1322 "../tests/keys" - {"nosigPresent",1317}, + {"nosigPresent",1318}, {""}, {""}, -#line 2126 "../tests/keys" - {"tileIndex",2121}, + {"tileIndex",2122}, {""}, {""}, -#line 1486 "../tests/keys" - {"offsetSection8",1481}, -#line 712 "../tests/keys" + {"K",95}, {"efas_model",707}, -#line 186 "../tests/keys" {"NP",181}, -#line 1265 "../tests/keys" - {"minuteOfForecast",1260}, -#line 899 "../tests/keys" + {"minuteOfForecast",1261}, {"gridDefinitionTemplateNumber",894}, {""}, {""}, {""}, -#line 667 "../tests/keys" {"deleteLocalDefinition",662}, -#line 1897 "../tests/keys" - {"secondOfForecast",1892}, -#line 20 "../tests/keys" + {"secondOfForecast",1894}, {"Azi",15}, -#line 1865 "../tests/keys" - {"scaledValueOfFirstSize",1860}, -#line 2189 "../tests/keys" - {"typeOfPostProcessing",2184}, + {"scaledValueOfFirstSize",1862}, + {"typeOfPostProcessing",2185}, {""}, {""}, -#line 1492 "../tests/keys" - {"oneConstant",1487}, + {"oneConstant",1489}, {""}, -#line 1732 "../tests/keys" - {"rectimeMinute",1727}, + {"rectimeMinute",1729}, {""}, {""}, {""}, -#line 2271 "../tests/keys" - {"versionNumOfRootGroupSymbolTableEntry",2266}, + {"versionNumOfRootGroupSymbolTableEntry",2267}, {""}, {""}, {""}, {""}, {""}, -#line 773 "../tests/keys" {"expandedOriginalScales",768}, {""}, -#line 660 "../tests/keys" {"defaultShortName",655}, {""}, -#line 1369 "../tests/keys" - {"numberOfDistinctSection9s",1364}, + {"numberOfDistinctSection9s",1365}, {""}, -#line 307 "../tests/keys" {"angleOfRotationInDegrees",302}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 754 "../tests/keys" {"ensembleForecastNumbersList",749}, {""}, {""}, {""}, {""}, -#line 902 "../tests/keys" {"gridPointPosition",897}, -#line 1280 "../tests/keys" - {"modelIdentifier",1275}, -#line 2129 "../tests/keys" - {"timeDomainTemplate",2124}, -#line 1875 "../tests/keys" - {"scaledValueOfSecondSize",1870}, + {"modelIdentifier",1276}, + {"timeDomainTemplate",2125}, + {"scaledValueOfSecondSize",1872}, {""}, -#line 1849 "../tests/keys" - {"scaleFactorOfRadiusOfSphericalEarth",1844}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1083 "../tests/keys" - {"lengthOfProjectLocalTemplate",1078}, -#line 2022 "../tests/keys" - {"southPoleOnProjectionPlane",2017}, + {"scaleFactorOfRadiusOfSphericalEarth",1846}, + {""}, + {"JS",94}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"lengthOfProjectLocalTemplate",1079}, + {"southPoleOnProjectionPlane",2018}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 295 "../tests/keys" {"addExtraLocalSection",290}, {""}, -#line 1399 "../tests/keys" - {"numberOfPackedValues",1394}, -#line 1098 "../tests/keys" - {"listMembersUsed",1093}, + {"numberOfPackedValues",1395}, + {"listMembersUsed",1094}, {""}, {""}, {""}, -#line 988 "../tests/keys" {"isCorrection",983}, {""}, -#line 1831 "../tests/keys" - {"satelliteIdentifier",1826}, -#line 1129 "../tests/keys" - {"localNumberOfObservations",1124}, -#line 2044 "../tests/keys" - {"startOfMessage",2039}, + {"satelliteIdentifier",1828}, + {"localNumberOfObservations",1125}, + {"startOfMessage",2040}, {""}, {""}, -#line 2066 "../tests/keys" - {"stretchingFactor",2061}, + {"stretchingFactor",2062}, {""}, -#line 887 "../tests/keys" {"grib1divider",882}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2166 "../tests/keys" - {"tsectionNumber5",2161}, + {"tsectionNumber5",2162}, {""}, -#line 2152 "../tests/keys" - {"totalNumberOfGridPoints",2147}, -#line 829 "../tests/keys" + {"totalNumberOfGridPoints",2148}, {"faModelName",824}, {""}, -#line 871 "../tests/keys" {"functionCode",866}, {""}, {""}, -#line 1880 "../tests/keys" - {"scalingFactorForFrequencies",1875}, -#line 998 "../tests/keys" + {"scalingFactorForFrequencies",1877}, {"is_aerosol_optical",993}, {""}, -#line 296 "../tests/keys" {"additionalFlagPresent",291}, {""}, -#line 682 "../tests/keys" {"dirty_statistics",677}, -#line 1377 "../tests/keys" - {"numberOfForecastsInTube",1372}, + {"numberOfForecastsInTube",1373}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 212 "../tests/keys" {"PLPresent",207}, {""}, {""}, -#line 1702 "../tests/keys" - {"radialAngularSpacing",1697}, -#line 427 "../tests/keys" + {"radialAngularSpacing",1699}, {"climateDateTo",422}, {""}, -#line 1026 "../tests/keys" - {"kurt",1021}, -#line 909 "../tests/keys" + {"kurt",1022}, {"groupWidth",904}, {""}, {""}, {""}, {""}, {""}, -#line 318 "../tests/keys" {"attributeOfTile",313}, {""}, {""}, {""}, {""}, {""}, -#line 2205 "../tests/keys" - {"typicalMinute",2200}, -#line 1669 "../tests/keys" - {"primaryMissingValue",1664}, -#line 371 "../tests/keys" + {"typicalMinute",2201}, + {"primaryMissingValue",1666}, {"boot_edition",366}, {""}, {""}, {""}, {""}, -#line 1343 "../tests/keys" - {"numberOfChars",1338}, + {"numberOfChars",1339}, {""}, {""}, -#line 1645 "../tests/keys" - {"predefined_grid_values",1640}, + {"predefined_grid_values",1642}, {""}, -#line 978 "../tests/keys" {"interpretationOfNumberOfPoints",973}, {""}, {""}, -#line 890 "../tests/keys" {"grib2divider",885}, -#line 1395 "../tests/keys" - {"numberOfModels",1390}, + {"numberOfModels",1391}, {""}, -#line 2202 "../tests/keys" - {"typicalDateTime",2197}, -#line 941 "../tests/keys" + {"typicalDateTime",2198}, {"iScansNegatively",936}, - {""}, {""}, -#line 597 "../tests/keys" + {"rootGroupObjectHeaderAddress",1767}, + {""}, {"corr3Data",592}, {""}, -#line 2345 "../tests/keys" - {"yearOfCentury",2340}, + {"yearOfCentury",2341}, {""}, -#line 895 "../tests/keys" {"gridCoordinate",890}, -#line 407 "../tests/keys" {"centuryOfReferenceTimeOfData",402}, -#line 2065 "../tests/keys" - {"streamOfAnalysis",2060}, + {"streamOfAnalysis",2061}, {""}, -#line 742 "../tests/keys" {"endOfProduct",737}, {""}, -#line 1639 "../tests/keys" - {"powerOfTenUsedToScaleClimateWeight",1634}, + {"powerOfTenUsedToScaleClimateWeight",1636}, {""}, -#line 2067 "../tests/keys" - {"stretchingFactorScaled",2062}, + {"stretchingFactorScaled",2063}, {""}, {""}, {""}, -#line 289 "../tests/keys" {"_anoffset",284}, {""}, -#line 857 "../tests/keys" {"forecastOrSingularVectorNumber",852}, -#line 1027 "../tests/keys" - {"kurtosis",1022}, + {"kurtosis",1023}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2175 "../tests/keys" - {"typeOfCompressionUsed",2170}, + {"typeOfCompressionUsed",2171}, {""}, -#line 1053 "../tests/keys" - {"latitudeOfSouthernPole",1048}, + {"latitudeOfSouthernPole",1049}, {""}, {""}, {""}, -#line 1055 "../tests/keys" - {"latitudeOfStretchingPole",1050}, + {"latitudeOfStretchingPole",1051}, {""}, {""}, {""}, {""}, -#line 2300 "../tests/keys" - {"widthOfSPD",2295}, + {"widthOfSPD",2296}, {""}, -#line 783 "../tests/keys" {"extendedFlag",778}, -#line 37 "../tests/keys" {"DiInDegrees",32}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1022 "../tests/keys" - {"keyData",1017}, + {"keyData",1018}, {""}, -#line 48 "../tests/keys" {"DyInDegrees",43}, {""}, -#line 995 "../tests/keys" {"isSatelliteType",990}, {""}, {""}, {""}, -#line 1850 "../tests/keys" - {"scaleFactorOfSecondFixedSurface",1845}, -#line 1861 "../tests/keys" - {"scaledValueOfDistributionFunctionParameter",1856}, + {"scaleFactorOfSecondFixedSurface",1847}, + {"scaledValueOfDistributionFunctionParameter",1858}, {""}, {""}, {""}, -#line 232 "../tests/keys" {"TAF",227}, -#line 1263 "../tests/keys" - {"minuteOfAnalysis",1258}, - {""}, {""}, {""}, -#line 681 "../tests/keys" + {"minuteOfAnalysis",1259}, + {""}, {""}, + {"offsetSection8",1483}, {"directionScalingFactor",676}, {""}, {""}, {""}, {""}, {""}, -#line 1603 "../tests/keys" - {"parameterCategory",1598}, + {"parameterCategory",1600}, {""}, -#line 910 "../tests/keys" {"groupWidths",905}, -#line 1332 "../tests/keys" - {"numberOfAnalysis",1327}, + {"numberOfAnalysis",1328}, {""}, {""}, -#line 1519 "../tests/keys" - {"originatingCentre",1514}, + {"originatingCentre",1516}, {""}, {""}, {""}, -#line 1024 "../tests/keys" - {"keySat",1019}, + {"keySat",1020}, {""}, -#line 900 "../tests/keys" {"gridDescriptionSectionPresent",895}, -#line 27 "../tests/keys" {"CDF",22}, {""}, -#line 1441 "../tests/keys" - {"numberOfVerticalCoordinateValues",1436}, + {"numberOfVerticalCoordinateValues",1437}, {""}, -#line 1991 "../tests/keys" - {"sfc_levtype",1986}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1773 "../tests/keys" - {"roundedMarsLatitude",1768}, + {"sfc_levtype",1987}, + {""}, {""}, {""}, {""}, + {"subSetK",2075}, + {""}, {""}, {""}, {""}, + {"roundedMarsLatitude",1770}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2155 "../tests/keys" - {"totalNumberOfTileAttributePairs",2150}, + {"totalNumberOfTileAttributePairs",2151}, {""}, {""}, -#line 364 "../tests/keys" {"binaryScaleFactor",359}, {""}, -#line 214 "../tests/keys" {"PVPresent",209}, {""}, {""}, {""}, {""}, -#line 1684 "../tests/keys" - {"productionStatusOfProcessedData",1679}, + {"productionStatusOfProcessedData",1681}, {""}, {""}, {""}, {""}, -#line 598 "../tests/keys" {"corr4Data",593}, - {""}, {""}, -#line 1954 "../tests/keys" - {"section8Pointer",1949}, - {""}, {""}, {""}, -#line 646 "../tests/keys" + {""}, {""}, {""}, {""}, {""}, {""}, {"dayOfAnalysis",641}, - {""}, -#line 1193 "../tests/keys" - {"marsKeywords",1188}, - {""}, {""}, -#line 1243 "../tests/keys" - {"md5TimeDomainSection",1238}, - {""}, {""}, -#line 919 "../tests/keys" - {"heightOrPressureOfLevel",914}, -#line 1272 "../tests/keys" - {"missingValueManagement",1267}, - {""}, {""}, -#line 2194 "../tests/keys" - {"typeOfSizeInterval",2189}, {""}, {""}, {""}, {""}, -#line 45 "../tests/keys" + {"md5TimeDomainSection",1239}, + {""}, {""}, + {"heightOrPressureOfLevel",914}, + {"missingValueManagement",1268}, + {""}, {""}, + {"typeOfSizeInterval",2190}, + {""}, {""}, {""}, {""}, {"DxInDegrees",40}, {""}, -#line 814 "../tests/keys" {"extractDateTimeYearStart",809}, -#line 926 "../tests/keys" {"horizontalDomainTemplateNumber",921}, {""}, {""}, -#line 1521 "../tests/keys" - {"originatorLocalTemplate",1516}, + {"originatorLocalTemplate",1518}, {""}, -#line 2008 "../tests/keys" - {"sizeOfOffsets",2003}, + {"sizeOfOffsets",2004}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2200 "../tests/keys" - {"typicalCentury",2195}, + {"typicalCentury",2196}, {""}, {""}, {""}, -#line 1873 "../tests/keys" - {"scaledValueOfRadiusOfSphericalEarth",1868}, + {"scaledValueOfRadiusOfSphericalEarth",1870}, {""}, {""}, {""}, {""}, -#line 1103 "../tests/keys" - {"listOfDistributionFunctionParameter",1098}, + {"listOfDistributionFunctionParameter",1099}, {""}, -#line 1598 "../tests/keys" - {"paleontologicalOffset",1593}, + {"paleontologicalOffset",1595}, {""}, {""}, {""}, {""}, -#line 647 "../tests/keys" {"dayOfEndOfOverallTimeInterval",642}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 772 "../tests/keys" {"expandedOriginalReferences",767}, {""}, -#line 740 "../tests/keys" {"endOfInterval",735}, {""}, {""}, -#line 1150 "../tests/keys" - {"longitudeOfIcosahedronPole",1145}, + {"longitudeOfIcosahedronPole",1146}, {""}, -#line 2162 "../tests/keys" - {"truncateDegrees",2157}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1240 "../tests/keys" - {"md5Section8",1235}, - {""}, {""}, {""}, {""}, -#line 398 "../tests/keys" - {"centralLongitude",393}, -#line 2222 "../tests/keys" - {"unitsConversionOffset",2217}, - {""}, {""}, -#line 1836 "../tests/keys" - {"scaleFactorOfDistanceFromEnsembleMean",1831}, + {"truncateDegrees",2158}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1670 "../tests/keys" - {"primaryMissingValueSubstitute",1665}, - {""}, -#line 973 "../tests/keys" - {"integerScalingFactorAppliedToDirections",968}, -#line 974 "../tests/keys" - {"integerScalingFactorAppliedToFrequencies",969}, -#line 1032 "../tests/keys" - {"laplacianScalingFactor",1027}, -#line 1328 "../tests/keys" - {"numberInTheAuxiliaryArray",1323}, -#line 708 "../tests/keys" + {""}, {""}, + {"centralLongitude",393}, + {"unitsConversionOffset",2218}, + {""}, {""}, + {"scaleFactorOfDistanceFromEnsembleMean",1833}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"primaryMissingValueSubstitute",1667}, + {""}, {""}, {""}, + {"laplacianScalingFactor",1028}, + {"numberInTheAuxiliaryArray",1324}, {"easternLongitudeOfDomain",703}, {""}, {""}, {""}, {""}, -#line 2298 "../tests/keys" - {"widthOfFirstOrderValues",2293}, -#line 980 "../tests/keys" + {"widthOfFirstOrderValues",2294}, {"isAccumulation",975}, -#line 1612 "../tests/keys" - {"partitionItems",1607}, + {"partitionItems",1609}, {""}, {""}, -#line 2131 "../tests/keys" - {"timeIncrement",2126}, -#line 1342 "../tests/keys" - {"numberOfCharacters",1337}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 2191 "../tests/keys" - {"typeOfProcessedData",2186}, + {"timeIncrement",2127}, + {"numberOfCharacters",1338}, + {""}, {""}, {""}, + {"section8Pointer",1950}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"typeOfProcessedData",2187}, {""}, {""}, {""}, -#line 938 "../tests/keys" {"iDirectionIncrementGridLength",933}, {""}, -#line 97 "../tests/keys" {"ITN",92}, -#line 1687 "../tests/keys" - {"projectionCenterFlag",1682}, + {"projectionCenterFlag",1684}, {""}, -#line 819 "../tests/keys" {"extractedAreaNumberOfSubsets",814}, -#line 332 "../tests/keys" {"baseTimeEPS",327}, {""}, {""}, {""}, {""}, {""}, -#line 1386 "../tests/keys" - {"numberOfIterations",1381}, -#line 1742 "../tests/keys" - {"referenceReflectivityForEchoTop",1737}, + {"numberOfIterations",1382}, + {"referenceReflectivityForEchoTop",1739}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2239 "../tests/keys" - {"upperThreshold",2234}, -#line 330 "../tests/keys" + {"upperThreshold",2235}, {"baseDateEPS",325}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2170 "../tests/keys" - {"twoOrdersOfSPD",2165}, + {"twoOrdersOfSPD",2166}, {""}, {""}, {""}, {""}, -#line 891 "../tests/keys" {"grib3divider",886}, {""}, {""}, {""}, {""}, -#line 1228 "../tests/keys" - {"md5DataSection",1223}, -#line 2092 "../tests/keys" - {"table2Version",2087}, + {"md5DataSection",1224}, + {"table2Version",2088}, {""}, {""}, {""}, -#line 2130 "../tests/keys" - {"timeDomainTemplateNumber",2125}, + {"timeDomainTemplateNumber",2126}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 565 "../tests/keys" {"conceptsMasterMarsDir",560}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 794 "../tests/keys" {"extractAreaWestLongitude",789}, -#line 2106 "../tests/keys" - {"templatesMasterDir",2101}, - {""}, {""}, {""}, -#line 673 "../tests/keys" + {"templatesMasterDir",2102}, + {""}, + {"md5Section8",1236}, + {""}, {"diffInDays",668}, {""}, {""}, {""}, -#line 2049 "../tests/keys" - {"startingAzimuth",2044}, + {"startingAzimuth",2045}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2161 "../tests/keys" - {"trueLengthOfLastGroup",2156}, + {"trueLengthOfLastGroup",2157}, {""}, {""}, -#line 1874 "../tests/keys" - {"scaledValueOfSecondFixedSurface",1869}, + {"scaledValueOfSecondFixedSurface",1871}, {""}, -#line 2045 "../tests/keys" - {"startOfRange",2040}, + {"startOfRange",2041}, {""}, {""}, {""}, {""}, -#line 1528 "../tests/keys" - {"packingType",1523}, + {"packingType",1525}, {""}, -#line 399 "../tests/keys" {"centralLongitudeInDegrees",394}, -#line 964 "../tests/keys" {"inputOriginatingCentre",959}, {""}, -#line 1840 "../tests/keys" - {"scaleFactorOfFirstFixedSurface",1835}, + {"scaleFactorOfFirstFixedSurface",1837}, {""}, -#line 40 "../tests/keys" {"DjGiven",35}, {""}, -#line 563 "../tests/keys" {"conceptsLocalMarsDirAll",558}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1081 "../tests/keys" - {"lengthOfMessage",1076}, -#line 571 "../tests/keys" + {"lengthOfMessage",1077}, {"constituentType",566}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 618 "../tests/keys" + {""}, {""}, {""}, {""}, {""}, {""}, + {"integerScalingFactorAppliedToDirections",968}, + {"integerScalingFactorAppliedToFrequencies",969}, + {""}, {""}, {""}, {""}, {""}, {""}, {"dataCategory",613}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 601 "../tests/keys" {"correction1Part",596}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1268 "../tests/keys" - {"minutesAfterDataCutoff",1263}, + {"minutesAfterDataCutoff",1264}, {""}, -#line 607 "../tests/keys" {"correction4Part",602}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1357 "../tests/keys" - {"numberOfDataPoints",1352}, + {"numberOfDataPoints",1353}, {""}, -#line 387 "../tests/keys" {"ccccIdentifiers",382}, {""}, {""}, {""}, {""}, {""}, -#line 2061 "../tests/keys" - {"stepTypeInternal",2056}, + {"stepTypeInternal",2057}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1212 "../tests/keys" - {"mars_labeling",1207}, + {"mars_labeling",1208}, {""}, {""}, {""}, {""}, {""}, -#line 700 "../tests/keys" {"earthIsOblate",695}, -#line 1688 "../tests/keys" - {"projectionCentreFlag",1683}, - {""}, -#line 1368 "../tests/keys" - {"numberOfDistinctSection8s",1363}, + {"projectionCentreFlag",1685}, + {""}, {""}, {""}, {""}, + {"md5Product",1227}, {""}, {""}, -#line 1231 "../tests/keys" - {"md5Product",1226}, - {""}, {""}, -#line 924 "../tests/keys" {"horizontalDimensionProcessed",919}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 688 "../tests/keys" {"doExtractArea",683}, -#line 1635 "../tests/keys" - {"plusOneinOrdersOfSPD",1630}, -#line 426 "../tests/keys" + {"plusOneinOrdersOfSPD",1632}, {"climateDateFrom",421}, {""}, {""}, {""}, {""}, {""}, -#line 380 "../tests/keys" {"calendarIdPresent",375}, {""}, {""}, {""}, {""}, -#line 1845 "../tests/keys" - {"scaleFactorOfLowerLimit",1840}, + {"scaleFactorOfLowerLimit",1842}, {""}, {""}, {""}, {""}, -#line 1304 "../tests/keys" - {"nameOfSecondFixedSurface",1299}, + {"nameOfSecondFixedSurface",1300}, {""}, {""}, {""}, {""}, -#line 2034 "../tests/keys" - {"spectralDataRepresentationMode",2029}, -#line 1450 "../tests/keys" - {"observationType",1445}, + {"spectralDataRepresentationMode",2030}, + {"observationType",1446}, {""}, -#line 2268 "../tests/keys" - {"verifyingMonth",2263}, + {"verifyingMonth",2264}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1088 "../tests/keys" - {"levelIndicator",1083}, + {"levelIndicator",1084}, {""}, {""}, -#line 760 "../tests/keys" {"epsStatisticsContinous",755}, {""}, {""}, {""}, {""}, {""}, -#line 1137 "../tests/keys" - {"local_padding",1132}, + {"local_padding",1133}, {""}, -#line 1641 "../tests/keys" - {"preProcessingParameter",1636}, -#line 1860 "../tests/keys" - {"scaledValueOfDistanceFromEnsembleMean",1855}, -#line 2012 "../tests/keys" - {"skewness",2007}, - {""}, {""}, {""}, -#line 1449 "../tests/keys" - {"observationGeneratingProcessIdentifier",1444}, - {""}, {""}, {""}, {""}, -#line 1351 "../tests/keys" - {"numberOfComponents",1346}, + {"preProcessingParameter",1638}, + {"scaledValueOfDistanceFromEnsembleMean",1857}, + {"skewness",2008}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfComponents",1347}, {""}, -#line 605 "../tests/keys" {"correction3Part",600}, -#line 2193 "../tests/keys" - {"typeOfSecondFixedSurface",2188}, - {""}, -#line 1770 "../tests/keys" - {"rootGroupObjectHeaderAddress",1765}, - {""}, {""}, {""}, {""}, -#line 2216 "../tests/keys" - {"unitOfOffsetFromReferenceTime",2211}, + {"typeOfSecondFixedSurface",2189}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"unitOfOffsetFromReferenceTime",2212}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2042 "../tests/keys" - {"standardParallelInMicrodegrees",2037}, + {"standardParallelInMicrodegrees",2038}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 109 "../tests/keys" {"LaDInDegrees",104}, {""}, -#line 1830 "../tests/keys" - {"satelliteID",1825}, + {"satelliteID",1827}, {""}, {""}, -#line 2223 "../tests/keys" - {"unitsConversionScaleFactor",2218}, -#line 2229 "../tests/keys" - {"unknown",2224}, + {"unitsConversionScaleFactor",2219}, + {"unknown",2225}, {""}, -#line 1431 "../tests/keys" - {"numberOfTimeRange",1426}, -#line 942 "../tests/keys" + {"numberOfTimeRange",1427}, {"iScansPositively",937}, - {""}, {""}, {""}, {""}, -#line 865 "../tests/keys" + {""}, {""}, + {"numberOfDistinctSection8s",1364}, + {""}, {"formatVersionMajorNumber",860}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1626 "../tests/keys" - {"periodOfTimeIntervals",1621}, + {"periodOfTimeIntervals",1623}, {""}, {""}, {""}, -#line 691 "../tests/keys" {"doSimpleThinning",686}, {""}, {""}, {""}, -#line 1356 "../tests/keys" - {"numberOfDataMatrices",1351}, + {"numberOfDataMatrices",1352}, {""}, {""}, {""}, {""}, -#line 1346 "../tests/keys" - {"numberOfClusters",1341}, -#line 656 "../tests/keys" + {"numberOfClusters",1342}, {"defaultFaModelName",651}, {""}, {""}, {""}, -#line 1350 "../tests/keys" - {"numberOfColumns",1345}, + {"numberOfColumns",1346}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2174 "../tests/keys" - {"typeOfCalendar",2169}, -#line 2282 "../tests/keys" - {"verticalVisibilityCoded",2277}, -#line 556 "../tests/keys" + {"typeOfCalendar",2170}, + {"verticalVisibilityCoded",2278}, {"componentIndex",551}, {""}, -#line 971 "../tests/keys" {"integerPointValues",966}, -#line 811 "../tests/keys" {"extractDateTimeStart",806}, {""}, -#line 970 "../tests/keys" {"instrumentType",965}, {""}, -#line 2173 "../tests/keys" - {"typeOfAuxiliaryInformation",2168}, + {"typeOfAuxiliaryInformation",2169}, {""}, {""}, {""}, {""}, -#line 1522 "../tests/keys" - {"originatorLocalTemplateNumber",1517}, + {"originatorLocalTemplateNumber",1519}, {""}, -#line 957 "../tests/keys" {"indicatorOfTypeOfLevel",952}, {""}, {""}, {""}, -#line 946 "../tests/keys" {"identificationOfProject",941}, -#line 156 "../tests/keys" {"M",151}, {""}, {""}, -#line 808 "../tests/keys" {"extractDateTimeSecondEnd",803}, {""}, {""}, -#line 687 "../tests/keys" {"distinctLongitudes",682}, {""}, {""}, {""}, {""}, -#line 1255 "../tests/keys" - {"messageLength",1250}, -#line 1354 "../tests/keys" - {"numberOfCoordinatesValues",1349}, + {"messageLength",1251}, + {"numberOfCoordinatesValues",1350}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 810 "../tests/keys" {"extractDateTimeSecondStart",805}, -#line 2232 "../tests/keys" - {"unpackedSubsetPrecision",2227}, + {"unpackedSubsetPrecision",2228}, {""}, {""}, {""}, -#line 1864 "../tests/keys" - {"scaledValueOfFirstFixedSurface",1859}, + {"scaledValueOfFirstFixedSurface",1861}, {""}, -#line 1141 "../tests/keys" - {"longitudeFirstInDegrees",1136}, -#line 1913 "../tests/keys" - {"section0Length",1908}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1746 "../tests/keys" - {"referenceValueError",1741}, -#line 1685 "../tests/keys" - {"projectLocalTemplate",1680}, + {"longitudeFirstInDegrees",1137}, + {"section0Length",1910}, {""}, {""}, -#line 1013 "../tests/keys" - {"jDirectionIncrement",1008}, - {""}, {""}, -#line 1888 "../tests/keys" - {"scanningModeForOneDiamond",1883}, + {"latitudeOfLastGridPoint",1043}, {""}, {""}, {""}, -#line 2145 "../tests/keys" - {"totalLength",2140}, + {"referenceValueError",1743}, + {"projectLocalTemplate",1682}, {""}, -#line 1266 "../tests/keys" - {"minuteOfModelVersion",1261}, + {"observationGeneratingProcessIdentifier",1445}, + {"jDirectionIncrement",1009}, + {""}, {""}, + {"scanningModeForOneDiamond",1885}, + {""}, {""}, {""}, + {"totalLength",2141}, + {""}, + {"minuteOfModelVersion",1262}, {""}, {""}, {""}, {""}, {""}, -#line 1898 "../tests/keys" - {"secondOfModelVersion",1893}, + {"secondOfModelVersion",1895}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1956 "../tests/keys" - {"section9Length",1951}, -#line 1829 "../tests/keys" - {"sampleSizeOfModelClimate",1824}, + {"section9Length",1952}, + {"sampleSizeOfModelClimate",1826}, {""}, {""}, {""}, {""}, {""}, -#line 1460 "../tests/keys" - {"offsetAfterLocalSection",1455}, + {"offsetAfterLocalSection",1457}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1686 "../tests/keys" - {"projectLocalTemplateNumber",1681}, -#line 2001 "../tests/keys" - {"simpleThinningSkip",1996}, + {"projectLocalTemplateNumber",1683}, + {"simpleThinningSkip",1997}, {""}, {""}, {""}, {""}, -#line 327 "../tests/keys" {"backgroundProcess",322}, -#line 538 "../tests/keys" - {"clusterMember8",533}, - {""}, -#line 1347 "../tests/keys" - {"numberOfCodedValues",1342}, + {""}, {""}, + {"numberOfCodedValues",1343}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1314 "../tests/keys" - {"northLatitudeOfCluster",1309}, + {"northLatitudeOfCluster",1310}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2240 "../tests/keys" - {"upperThresholdValue",2235}, + {"upperThresholdValue",2236}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1388 "../tests/keys" - {"numberOfLogicals",1383}, -#line 1000 "../tests/keys" + {"numberOfLogicals",1384}, {"is_chemical_distfn",995}, {""}, -#line 2227 "../tests/keys" - {"unitsOfFirstFixedSurface",2222}, - {""}, -#line 1981 "../tests/keys" - {"section_8",1976}, - {""}, -#line 1674 "../tests/keys" - {"probabilityType",1669}, -#line 1084 "../tests/keys" - {"lengthOfTimeRange",1079}, + {"unitsOfFirstFixedSurface",2223}, + {""}, {""}, {""}, + {"probabilityType",1671}, + {"lengthOfTimeRange",1080}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1869 "../tests/keys" - {"scaledValueOfLowerLimit",1864}, -#line 1917 "../tests/keys" - {"section10Pointer",1912}, -#line 1289 "../tests/keys" - {"monthOfModelVersion",1284}, + {"scaledValueOfLowerLimit",1866}, + {"section10Pointer",1914}, + {"monthOfModelVersion",1285}, {""}, -#line 1105 "../tests/keys" - {"listOfModelIdentifiers",1100}, -#line 359 "../tests/keys" + {"listOfModelIdentifiers",1101}, {"biFourierResolutionParameterN",354}, {""}, {""}, -#line 1292 "../tests/keys" - {"monthlyVerificationMonth",1287}, + {"monthlyVerificationMonth",1288}, {""}, {""}, {""}, {""}, {""}, -#line 583 "../tests/keys" {"coordinate2Start",578}, -#line 2147 "../tests/keys" - {"totalNumberOfClusters",2142}, -#line 1080 "../tests/keys" - {"lengthOfIndexTemplate",1075}, + {"totalNumberOfClusters",2143}, + {"lengthOfIndexTemplate",1076}, {""}, -#line 705 "../tests/keys" {"eastLongitudeOfCluster",700}, {""}, {""}, {""}, -#line 1461 "../tests/keys" - {"offsetAfterPadding",1456}, -#line 2020 "../tests/keys" - {"southLatitudeOfCluster",2015}, + {"offsetAfterPadding",1458}, + {"southLatitudeOfCluster",2016}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1762 "../tests/keys" - {"resolutionAndComponentFlags",1757}, + {"resolutionAndComponentFlags",1759}, {""}, -#line 1040 "../tests/keys" - {"latitudeLongitudeValues",1035}, + {"latitudeLongitudeValues",1036}, {""}, -#line 325 "../tests/keys" {"azimuthalWidth",320}, -#line 292 "../tests/keys" {"accumulationInterval",287}, {""}, {""}, -#line 1057 "../tests/keys" - {"latitudeOfSubSatellitePoint",1052}, + {"latitudeOfSubSatellitePoint",1053}, {""}, {""}, {""}, -#line 2297 "../tests/keys" - {"westernLongitudeOfDomain",2292}, + {"westernLongitudeOfDomain",2293}, {""}, {""}, {""}, -#line 2276 "../tests/keys" - {"versionOfModelClimate",2271}, + {"versionOfModelClimate",2272}, + {""}, {""}, {""}, {""}, + {"latitudeOfSubSatellitePointInDegrees",1054}, {""}, {""}, -#line 1970 "../tests/keys" - {"section_08",1965}, + {"qualityControl",1695}, {""}, -#line 1058 "../tests/keys" - {"latitudeOfSubSatellitePointInDegrees",1053}, - {""}, {""}, -#line 1698 "../tests/keys" - {"qualityControl",1693}, - {""}, -#line 856 "../tests/keys" {"forecastMonth",851}, {""}, -#line 227 "../tests/keys" {"SecondOfModelVersion",222}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2180 "../tests/keys" - {"typeOfGeneratingProcess",2175}, + {"typeOfGeneratingProcess",2176}, {""}, {""}, -#line 1174 "../tests/keys" - {"lowerThreshold",1169}, + {"lowerThreshold",1170}, {""}, {""}, -#line 1219 "../tests/keys" - {"matchAerosolPacking",1214}, -#line 2233 "../tests/keys" - {"unpackedValues",2228}, -#line 1421 "../tests/keys" - {"numberOfRepresentativeMember",1416}, + {"matchAerosolPacking",1215}, + {"unpackedValues",2229}, + {"numberOfRepresentativeMember",1417}, {""}, {""}, -#line 874 "../tests/keys" {"g1conceptsMasterDir",869}, - {""}, {""}, {""}, {""}, -#line 1887 "../tests/keys" - {"scanningMode8",1882}, - {""}, {""}, -#line 2234 "../tests/keys" - {"unsignedIntegers",2229}, -#line 282 "../tests/keys" + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"unsignedIntegers",2230}, {"Yo",277}, -#line 1390 "../tests/keys" - {"numberOfMembersInEnsemble",1385}, + {"numberOfMembersInEnsemble",1386}, {""}, {""}, -#line 355 "../tests/keys" {"biFourierCoefficients",350}, {""}, {""}, -#line 1375 "../tests/keys" - {"numberOfForecastsInEnsemble",1370}, + {"numberOfForecastsInEnsemble",1371}, {""}, -#line 2336 "../tests/keys" - {"yCoordinateOfOriginOfSectorImage",2331}, -#line 1385 "../tests/keys" - {"numberOfInts",1380}, + {"yCoordinateOfOriginOfSectorImage",2332}, + {"numberOfInts",1381}, {""}, {""}, {""}, {""}, {""}, -#line 1320 "../tests/keys" - {"northernLatitudeOfClusterDomain",1315}, + {"northernLatitudeOfClusterDomain",1316}, {""}, -#line 283 "../tests/keys" {"Yp",278}, {""}, {""}, {""}, {""}, -#line 812 "../tests/keys" {"extractDateTimeYearEnd",807}, {""}, {""}, -#line 1389 "../tests/keys" - {"numberOfMembersInCluster",1384}, + {"numberOfMembersInCluster",1385}, {""}, -#line 1144 "../tests/keys" - {"longitudeOfCenterPointInDegrees",1139}, + {"longitudeOfCenterPointInDegrees",1140}, {""}, -#line 2080 "../tests/keys" - {"subSetM",2075}, - {""}, {""}, -#line 100 "../tests/keys" - {"K",95}, + {"subSetM",2076}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1275 "../tests/keys" - {"mixedCoordinateDefinition",1270}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"mixedCoordinateDefinition",1271}, {""}, -#line 1341 "../tests/keys" - {"numberOfCategories",1336}, + {"numberOfCategories",1337}, {""}, {""}, {""}, -#line 1606 "../tests/keys" - {"parameterIndicator",1601}, + {"parameterIndicator",1603}, {""}, -#line 906 "../tests/keys" {"groupLengths",901}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2019 "../tests/keys" - {"southEastLongitudeOfVerficationArea",2014}, + {"southEastLongitudeOfVerficationArea",2015}, {""}, {""}, -#line 797 "../tests/keys" {"extractDateTimeDayStart",792}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2266 "../tests/keys" - {"verificationMonth",2261}, + {"verificationMonth",2262}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2023 "../tests/keys" - {"southernLatitudeOfClusterDomain",2018}, -#line 850 "../tests/keys" + {"southernLatitudeOfClusterDomain",2019}, {"flagForNormalOrStaggeredGrid",845}, - {""}, {""}, {""}, {""}, -#line 1723 "../tests/keys" - {"rdbtimeYear",1718}, -#line 1675 "../tests/keys" - {"probabilityTypeName",1670}, -#line 635 "../tests/keys" + {"clusterMember8",533}, + {""}, {""}, {""}, + {"rdbtimeYear",1720}, + {"probabilityTypeName",1672}, {"dateOfAnalysis",630}, {""}, {""}, {""}, -#line 952 "../tests/keys" {"incrementOfLengths",947}, -#line 2124 "../tests/keys" - {"tigge_short_name",2119}, + {"tigge_short_name",2120}, {""}, {""}, -#line 1229 "../tests/keys" - {"md5GridSection",1224}, + {"md5GridSection",1225}, {""}, -#line 816 "../tests/keys" {"extractSubsetIntervalEnd",811}, -#line 2133 "../tests/keys" - {"timeOfAnalysis",2128}, + {"timeOfAnalysis",2129}, {""}, {""}, -#line 1153 "../tests/keys" - {"longitudeOfNorthWestCornerOfArea",1148}, + {"longitudeOfNorthWestCornerOfArea",1149}, {""}, {""}, {""}, -#line 2344 "../tests/keys" - {"yearOfAnalysis",2339}, + {"yearOfAnalysis",2340}, {""}, -#line 2329 "../tests/keys" - {"xCoordinateOfOriginOfSectorImage",2324}, -#line 898 "../tests/keys" + {"xCoordinateOfOriginOfSectorImage",2325}, {"gridDefinitionSection",893}, {""}, {""}, {""}, {""}, -#line 1900 "../tests/keys" - {"secondOrderOfDifferentWidth",1895}, -#line 817 "../tests/keys" + {"secondOrderOfDifferentWidth",1897}, {"extractSubsetIntervalStart",812}, -#line 1190 "../tests/keys" - {"marsForecastMonth",1185}, + {"marsForecastMonth",1186}, {""}, {""}, -#line 544 "../tests/keys" {"clutterFilterIndicator",539}, -#line 1916 "../tests/keys" - {"section10Length",1911}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1611 "../tests/keys" - {"parametersVersion",1606}, - {""}, {""}, {""}, {""}, {""}, -#line 2172 "../tests/keys" - {"typeOfAnalysis",2167}, + {"section10Length",1913}, + {""}, {""}, + {"section_8",1977}, {""}, {""}, {""}, -#line 1927 "../tests/keys" - {"section2Present",1922}, + {"parametersVersion",1608}, + {""}, {""}, {""}, {""}, {""}, + {"typeOfAnalysis",2168}, + {""}, {""}, {""}, + {"section2Present",1924}, {""}, {""}, {""}, {""}, -#line 1995 "../tests/keys" - {"shortNameECMF",1990}, + {"shortNameECMF",1991}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 939 "../tests/keys" {"iDirectionIncrementInDegrees",934}, -#line 2231 "../tests/keys" - {"unpackedError",2226}, -#line 1526 "../tests/keys" - {"packedValues",1521}, - {""}, {""}, -#line 2338 "../tests/keys" - {"yDirectionGridLength",2333}, - {""}, {""}, -#line 1673 "../tests/keys" - {"probProductDefinition",1668}, + {"unpackedError",2227}, + {"packedValues",1523}, + {""}, {""}, {""}, {""}, {""}, + {"probProductDefinition",1670}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 870 "../tests/keys" {"frequencyScalingFactor",865}, {""}, -#line 1164 "../tests/keys" - {"longitudeOfThePoleOfStretching",1159}, + {"longitudeOfThePoleOfStretching",1160}, {""}, {""}, -#line 889 "../tests/keys" {"grib2LocalSectionPresent",884}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 2011 "../tests/keys" - {"skew",2006}, -#line 1895 "../tests/keys" - {"secondLatitudeInDegrees",1890}, + {""}, {""}, {""}, {""}, + {"section_08",1966}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"skew",2007}, + {"secondLatitudeInDegrees",1892}, {""}, {""}, {""}, {""}, {""}, -#line 959 "../tests/keys" {"indicatorOfUnitForTimeRange",954}, {""}, -#line 131 "../tests/keys" {"LoVInDegrees",126}, {""}, {""}, {""}, {""}, {""}, -#line 950 "../tests/keys" {"ijDirectionIncrementGiven",945}, {""}, -#line 361 "../tests/keys" {"biFourierResolutionSubSetParameterN",356}, {""}, {""}, {""}, -#line 1136 "../tests/keys" - {"localYear",1131}, + {"localYear",1132}, {""}, {""}, {""}, -#line 1331 "../tests/keys" - {"numberMissingFromAveragesOrAccumulations",1326}, + {"numberMissingFromAveragesOrAccumulations",1327}, {""}, -#line 802 "../tests/keys" {"extractDateTimeMinuteEnd",797}, -#line 1038 "../tests/keys" - {"latitudeFirstInDegrees",1033}, - {""}, -#line 562 "../tests/keys" + {"latitudeFirstInDegrees",1034}, + {"scanningMode8",1884}, {"conceptsLocalDirECMF",557}, {""}, -#line 1741 "../tests/keys" - {"referenceOfWidths",1736}, + {"referenceOfWidths",1738}, {""}, -#line 1527 "../tests/keys" - {"packingError",1522}, + {"packingError",1524}, {""}, {""}, -#line 805 "../tests/keys" {"extractDateTimeMonthEnd",800}, {""}, -#line 928 "../tests/keys" {"hourOfAnalysis",923}, {""}, {""}, {""}, {""}, -#line 804 "../tests/keys" {"extractDateTimeMinuteStart",799}, -#line 888 "../tests/keys" {"grib2LocalSectionNumber",883}, {""}, -#line 992 "../tests/keys" {"isHindcast",987}, {""}, {""}, -#line 2209 "../tests/keys" - {"typicalYear",2204}, -#line 807 "../tests/keys" + {"typicalYear",2205}, {"extractDateTimeMonthStart",802}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 2177 "../tests/keys" - {"typeOfEnsembleForecast",2172}, - {""}, -#line 2017 "../tests/keys" - {"southEastLatitudeOfVerficationArea",2012}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"southEastLatitudeOfVerficationArea",2013}, {""}, {""}, -#line 2153 "../tests/keys" - {"totalNumberOfIterations",2148}, -#line 1459 "../tests/keys" - {"offsetAfterData",1454}, -#line 2331 "../tests/keys" - {"xDirectionGridLength",2326}, -#line 2116 "../tests/keys" - {"thresholdIndicator",2111}, + {"totalNumberOfIterations",2149}, + {"offsetAfterData",1456}, + {""}, + {"thresholdIndicator",2112}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 821 "../tests/keys" {"extremeClockwiseWindDirection",816}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 685 "../tests/keys" {"distanceFromTubeToEnsembleMean",680}, - {""}, {""}, -#line 859 "../tests/keys" - {"forecastPeriodFrom",854}, - {""}, {""}, -#line 866 "../tests/keys" - {"formatVersionMinorNumber",861}, -#line 2079 "../tests/keys" - {"subSetK",2074}, {""}, {""}, {""}, {""}, {""}, -#line 1049 "../tests/keys" - {"latitudeOfNorthWestCornerOfArea",1044}, - {""}, {""}, {""}, {""}, -#line 2165 "../tests/keys" - {"tsectionNumber4",2160}, - {""}, {""}, -#line 841 "../tests/keys" + {"formatVersionMinorNumber",861}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"latitudeOfNorthWestCornerOfArea",1045}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"yDirectionGridLength",2334}, {"firstDimensionPhysicalSignificance",836}, - {""}, {""}, -#line 1008 "../tests/keys" - {"isectionNumber4",1003}, -#line 680 "../tests/keys" - {"directionOfVariation",675}, -#line 2015 "../tests/keys" - {"sourceOfGridDefinition",2010}, {""}, {""}, {""}, -#line 1624 "../tests/keys" - {"percentileValue",1619}, + {"directionOfVariation",675}, + {"sourceOfGridDefinition",2011}, + {""}, {""}, {""}, + {"percentileValue",1621}, {""}, -#line 1707 "../tests/keys" - {"radiusOfClusterDomain",1702}, - {""}, {""}, {""}, {""}, -#line 1047 "../tests/keys" - {"latitudeOfLastGridPoint",1042}, -#line 2110 "../tests/keys" - {"thisMarsClass",2105}, + {"radiusOfClusterDomain",1704}, + {""}, {""}, {""}, {""}, {""}, + {"thisMarsClass",2106}, {""}, -#line 777 "../tests/keys" {"experimentVersionNumber",772}, {""}, -#line 1910 "../tests/keys" - {"secondsOfAnalysis",1905}, + {"secondsOfAnalysis",1907}, {""}, -#line 1718 "../tests/keys" - {"rdbtimeHour",1713}, -#line 1940 "../tests/keys" - {"section5",1935}, + {"rdbtimeHour",1715}, + {"section5",1936}, {""}, -#line 1148 "../tests/keys" - {"longitudeOfFirstGridPoint",1143}, -#line 291 "../tests/keys" + {"longitudeOfFirstGridPoint",1144}, {"_numberOfValues",286}, {""}, {""}, -#line 1094 "../tests/keys" - {"listMembersMissing",1089}, + {"listMembersMissing",1090}, {""}, {""}, -#line 1345 "../tests/keys" - {"numberOfClusterLowResolution",1340}, + {"numberOfClusterLowResolution",1341}, {""}, -#line 2086 "../tests/keys" - {"swapScanningLon",2081}, + {"swapScanningLon",2082}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1142 "../tests/keys" - {"longitudeLastInDegrees",1137}, + {"longitudeLastInDegrees",1138}, {""}, {""}, {""}, {""}, -#line 38 "../tests/keys" {"DiInMetres",33}, {""}, {""}, -#line 1993 "../tests/keys" - {"shapeOfVerificationArea",1988}, + {"shapeOfVerificationArea",1989}, {""}, {""}, {""}, {""}, -#line 1731 "../tests/keys" - {"rectimeHour",1726}, + {"rectimeHour",1728}, {""}, {""}, {""}, -#line 49 "../tests/keys" {"DyInMetres",44}, -#line 2190 "../tests/keys" - {"typeOfPreProcessing",2185}, + {"typeOfPreProcessing",2186}, {""}, {""}, {""}, {""}, {""}, -#line 701 "../tests/keys" {"earthMajorAxis",696}, -#line 39 "../tests/keys" {"Dj",34}, {""}, {""}, -#line 405 "../tests/keys" {"centuryOfAnalysis",400}, {""}, {""}, {""}, -#line 1458 "../tests/keys" - {"offsetAfterCentreLocalSection",1453}, + {"offsetAfterCentreLocalSection",1455}, {""}, {""}, {""}, -#line 738 "../tests/keys" {"endOfFileAddress",733}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1384 "../tests/keys" - {"numberOfIntegers",1379}, -#line 2002 "../tests/keys" - {"simpleThinningStart",1997}, + {"numberOfIntegers",1380}, + {"simpleThinningStart",1998}, {""}, {""}, -#line 878 "../tests/keys" {"generalExtended2ordr",873}, - {""}, {""}, {""}, -#line 1682 "../tests/keys" - {"productIdentifier",1677}, + {"typeOfEnsembleForecast",2173}, {""}, {""}, -#line 1953 "../tests/keys" - {"section8Length",1948}, + {"productIdentifier",1679}, {""}, {""}, {""}, -#line 1942 "../tests/keys" - {"section5Pointer",1937}, - {""}, {""}, {""}, -#line 1740 "../tests/keys" - {"referenceOfLengths",1735}, - {""}, {""}, {""}, -#line 1175 "../tests/keys" - {"lowerThresholdValue",1170}, + {"xDirectionGridLength",2327}, {""}, {""}, -#line 1165 "../tests/keys" - {"longitudeOfThePolePoint",1160}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2055 "../tests/keys" - {"stepForClustering",2050}, + {"section5Pointer",1938}, {""}, {""}, {""}, -#line 2148 "../tests/keys" - {"totalNumberOfDataValuesMissingInStatisticalProcess",2143}, + {"referenceOfLengths",1737}, + {""}, {""}, + {"tsectionNumber4",2161}, + {"lowerThresholdValue",1171}, + {""}, {""}, + {"longitudeOfThePolePoint",1161}, + {""}, + {"isectionNumber4",1004}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"stepForClustering",2051}, + {""}, {""}, + {"forecastPeriodFrom",854}, + {"totalNumberOfDataValuesMissingInStatisticalProcess",2144}, {""}, {""}, -#line 177 "../tests/keys" {"NC",172}, {""}, {""}, -#line 1002 "../tests/keys" - {"is_rotated_grid",997}, -#line 529 "../tests/keys" + {"is_rotated_grid",998}, {"clusterIdentifier",524}, - {""}, {""}, {""}, {""}, {""}, -#line 1151 "../tests/keys" - {"longitudeOfLastGridPoint",1146}, - {""}, {""}, {""}, {""}, -#line 2085 "../tests/keys" - {"swapScanningLat",2080}, - {""}, {""}, {""}, -#line 1120 "../tests/keys" - {"localHour",1115}, - {""}, {""}, {""}, -#line 2253 "../tests/keys" - {"variationOfVisibility",2248}, - {""}, {""}, {""}, -#line 1410 "../tests/keys" - {"numberOfPointsAlongXAxis",1405}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1160 "../tests/keys" - {"longitudeOfStretchingPoleInDegrees",1155}, -#line 1348 "../tests/keys" - {"numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction",1343}, -#line 1349 "../tests/keys" - {"numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction",1344}, -#line 46 "../tests/keys" + {"swapScanningLat",2081}, + {""}, {""}, {""}, + {"localHour",1116}, + {""}, {""}, {""}, + {"variationOfVisibility",2249}, + {""}, {""}, {""}, + {"numberOfPointsAlongXAxis",1406}, + {""}, + {"longitudeOfStretchingPoleInDegrees",1156}, + {"numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction",1344}, + {"numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction",1345}, {"DxInMetres",41}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 893 "../tests/keys" {"gribTablesVersionNo",888}, - {""}, {""}, {""}, -#line 2204 "../tests/keys" - {"typicalHour",2199}, {""}, -#line 1397 "../tests/keys" - {"numberOfOctetsExtraDescriptors",1392}, + {"is_ocean_param",997}, {""}, -#line 2294 "../tests/keys" - {"westLongitudeOfCluster",2289}, -#line 1003 "../tests/keys" - {"is_s2s",998}, + {"typicalHour",2200}, + {""}, + {"numberOfOctetsExtraDescriptors",1393}, + {"extractDateTimeHourStart",796}, + {"westLongitudeOfCluster",2290}, + {"is_s2s",999}, {""}, {""}, {""}, {""}, -#line 609 "../tests/keys" {"countOfGroupLengths",604}, {""}, {""}, {""}, -#line 831 "../tests/keys" {"falseEasting",826}, -#line 843 "../tests/keys" {"firstLatitudeInDegrees",838}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2082 "../tests/keys" - {"subdivisionsOfBasicAngle",2077}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1286 "../tests/keys" - {"monthOfAnalysis",1281}, - {""}, {""}, {""}, {""}, -#line 2254 "../tests/keys" - {"variationOfVisibilityDirection",2249}, - {""}, {""}, {""}, {""}, {""}, -#line 2255 "../tests/keys" - {"variationOfVisibilityDirectionAngle",2250}, - {""}, {""}, -#line 2337 "../tests/keys" - {"yCoordinateOfSubSatellitePoint",2332}, -#line 2025 "../tests/keys" - {"sp1",2020}, - {""}, -#line 1017 "../tests/keys" - {"jIncrement",1012}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1923 "../tests/keys" - {"section1Pointer",1918}, - {""}, {""}, {""}, {""}, -#line 2249 "../tests/keys" - {"uvRelativeToGrid",2244}, -#line 1179 "../tests/keys" - {"mAngleMultiplier",1174}, - {""}, {""}, -#line 98 "../tests/keys" - {"J",93}, + {"subdivisionsOfBasicAngle",2078}, + {"groupLeafNodeK",900}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"monthOfAnalysis",1282}, + {"section8Length",1949}, {""}, {""}, {""}, -#line 580 "../tests/keys" + {"variationOfVisibilityDirection",2250}, + {""}, {""}, {""}, {""}, {""}, + {"variationOfVisibilityDirectionAngle",2251}, + {""}, {""}, + {"yCoordinateOfSubSatellitePoint",2333}, + {"sp1",2021}, + {""}, + {"jIncrement",1013}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"section1Pointer",1920}, + {""}, {""}, {""}, {""}, + {"uvRelativeToGrid",2245}, + {"mAngleMultiplier",1175}, + {""}, {""}, {""}, {""}, {""}, {""}, {"coordinate1Start",575}, {""}, {""}, -#line 1706 "../tests/keys" - {"radiusOfCentralCluster",1701}, + {"radiusOfCentralCluster",1703}, {""}, {""}, {""}, {""}, {""}, -#line 1014 "../tests/keys" - {"jDirectionIncrementGiven",1009}, -#line 1908 "../tests/keys" - {"secondaryMissingValue",1903}, -#line 424 "../tests/keys" + {"jDirectionIncrementGiven",1010}, + {"secondaryMissingValue",1905}, {"classOfAnalysis",419}, -#line 630 "../tests/keys" {"dataSubCategory",625}, -#line 234 "../tests/keys" {"TIDE",229}, {""}, {""}, {""}, -#line 1156 "../tests/keys" - {"longitudeOfSouthEastCornerOfArea",1151}, + {"longitudeOfSouthEastCornerOfArea",1152}, {""}, -#line 2033 "../tests/keys" - {"spatialSmoothingOfProduct",2028}, + {"spatialSmoothingOfProduct",2029}, {""}, -#line 2137 "../tests/keys" - {"timeRangeIndicator",2132}, -#line 2038 "../tests/keys" - {"sphericalHarmonics",2033}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1959 "../tests/keys" - {"sectionLengthLimitForEnsembles",1954}, - {""}, {""}, -#line 695 "../tests/keys" - {"dummy1",690}, - {""}, -#line 1769 "../tests/keys" - {"resolutionAndComponentFlags8",1764}, - {""}, {""}, {""}, {""}, {""}, -#line 1915 "../tests/keys" - {"section1",1910}, - {""}, {""}, {""}, -#line 1973 "../tests/keys" - {"section_10",1968}, -#line 198 "../tests/keys" - {"Nj",193}, -#line 602 "../tests/keys" - {"correction2",597}, -#line 1065 "../tests/keys" - {"latitudeWhereDxAndDyAreSpecified",1060}, -#line 1695 "../tests/keys" - {"qnhAPresent",1690}, - {""}, -#line 1926 "../tests/keys" - {"section2Pointer",1921}, + {"timeRangeIndicator",2133}, + {"sphericalHarmonics",2034}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1208 "../tests/keys" - {"marsStream2",1203}, + {"longitudeOfLastGridPoint",1147}, {""}, {""}, -#line 262 "../tests/keys" - {"WMO",257}, -#line 1066 "../tests/keys" - {"latitudeWhereDxAndDyAreSpecifiedInDegrees",1061}, - {""}, -#line 1358 "../tests/keys" - {"numberOfDataPointsExpected",1353}, - {""}, -#line 1298 "../tests/keys" - {"n2",1293}, -#line 290 "../tests/keys" - {"_leg_number",285}, -#line 2330 "../tests/keys" - {"xCoordinateOfSubSatellitePoint",2325}, + {"sectionLengthLimitForEnsembles",1955}, + {""}, {""}, + {"dummy1",690}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"section1",1912}, + {""}, {""}, {""}, + {"section_10",1969}, + {"Nj",193}, + {"correction2",597}, + {"latitudeWhereDxAndDyAreSpecified",1061}, + {"qnhAPresent",1692}, + {""}, + {"section2Pointer",1923}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"marsStream2",1204}, + {""}, {""}, + {"WMO",257}, + {"latitudeWhereDxAndDyAreSpecifiedInDegrees",1062}, + {""}, + {"numberOfDataPointsExpected",1354}, + {""}, + {"n2",1294}, + {"_leg_number",285}, + {"xCoordinateOfSubSatellitePoint",2326}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 741 "../tests/keys" {"endOfMessage",736}, {""}, -#line 1960 "../tests/keys" - {"sectionLengthLimitForProbability",1955}, + {"sectionLengthLimitForProbability",1956}, {""}, -#line 589 "../tests/keys" {"coordinate4OfLastGridPoint",584}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1279 "../tests/keys" - {"modelErrorType",1274}, + {"modelErrorType",1275}, {""}, {""}, {""}, -#line 683 "../tests/keys" {"disableGrib1LocalSection",678}, -#line 1210 "../tests/keys" - {"marsType1",1205}, + {"marsType1",1206}, {""}, {""}, -#line 1023 "../tests/keys" - {"keyMore",1018}, + {"keyMore",1019}, {""}, {""}, {""}, -#line 2026 "../tests/keys" - {"sp2",2021}, + {"sp2",2022}, {""}, -#line 767 "../tests/keys" {"expandedCrex_units",762}, - {""}, -#line 1295 "../tests/keys" - {"multiplicationFactorForLatLong",1290}, - {""}, -#line 1046 "../tests/keys" - {"latitudeOfIcosahedronPole",1041}, {""}, {""}, {""}, -#line 766 "../tests/keys" + {"latitudeOfIcosahedronPole",1042}, + {""}, {""}, {""}, {"expandedCrex_scales",761}, -#line 2031 "../tests/keys" - {"spare2",2026}, + {"spare2",2027}, {""}, {""}, {""}, {""}, -#line 1176 "../tests/keys" - {"ls_labeling",1171}, + {"ls_labeling",1172}, {""}, {""}, {""}, -#line 1909 "../tests/keys" - {"secondaryMissingValueSubstitute",1904}, + {"secondaryMissingValueSubstitute",1906}, {""}, -#line 155 "../tests/keys" {"LyInMetres",150}, {""}, -#line 1754 "../tests/keys" - {"reserved1",1749}, + {"reserved1",1751}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1312 "../tests/keys" - {"normAtInitialTime",1307}, + {"normAtInitialTime",1308}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1365 "../tests/keys" - {"numberOfDistinctSection5s",1360}, + {""}, + {"resolutionAndComponentFlags8",1766}, + {""}, + {"numberOfDistinctSection5s",1361}, {""}, {""}, -#line 1009 "../tests/keys" - {"isotopeIdentificationNumber",1004}, + {"isotopeIdentificationNumber",1005}, {""}, {""}, -#line 704 "../tests/keys" {"earthMinorAxisInMetres",699}, {""}, {""}, -#line 297 "../tests/keys" {"addressOfFileFreeSpaceInfo",292}, -#line 2144 "../tests/keys" - {"totalInitialConditions",2139}, + {"totalInitialConditions",2140}, {""}, {""}, {""}, -#line 2299 "../tests/keys" - {"widthOfLengths",2294}, + {"widthOfLengths",2295}, {""}, {""}, {""}, -#line 696 "../tests/keys" {"dummy2",691}, - {""}, {""}, -#line 2317 "../tests/keys" - {"windSpeedTrend4",2312}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1748 "../tests/keys" - {"remarkPresent",1743}, - {""}, {""}, -#line 1104 "../tests/keys" - {"listOfEnsembleForecastNumbers",1099}, - {""}, {""}, {""}, {""}, -#line 1374 "../tests/keys" - {"numberOfForecastsInCluster",1369}, {""}, {""}, {""}, -#line 30 "../tests/keys" + {"remarkPresent",1745}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfForecastsInCluster",1370}, + {""}, {""}, {""}, {"DELETE",25}, -#line 586 "../tests/keys" {"coordinate3OfLastGridPoint",581}, {""}, {""}, {""}, {""}, -#line 1106 "../tests/keys" - {"listOfParametersUsedForClustering",1101}, -#line 2221 "../tests/keys" - {"unitsBias",2216}, + {"listOfParametersUsedForClustering",1102}, + {"unitsBias",2217}, {""}, {""}, {""}, -#line 1303 "../tests/keys" - {"nameOfFirstFixedSurface",1298}, + {"nameOfFirstFixedSurface",1299}, {""}, {""}, {""}, -#line 795 "../tests/keys" {"extractDateTimeDayEnd",790}, -#line 2087 "../tests/keys" - {"swapScanningX",2082}, + {"swapScanningX",2083}, {""}, {""}, {""}, -#line 2182 "../tests/keys" - {"typeOfHorizontalLine",2177}, + {"typeOfHorizontalLine",2178}, {""}, {""}, -#line 570 "../tests/keys" {"constantFieldHalfByte",565}, -#line 1082 "../tests/keys" - {"lengthOfOriginatorLocalTemplate",1077}, + {"lengthOfOriginatorLocalTemplate",1078}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 153 "../tests/keys" {"LxInMetres",148}, {""}, -#line 720 "../tests/keys" {"endDayTrend2",715}, {""}, -#line 278 "../tests/keys" {"YR",273}, -#line 1211 "../tests/keys" - {"marsType2",1206}, + {"marsType2",1207}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2179 "../tests/keys" - {"typeOfFirstFixedSurface",2174}, - {""}, -#line 2078 "../tests/keys" - {"subSetJ",2073}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"typeOfFirstFixedSurface",2175}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1755 "../tests/keys" - {"reserved2",1750}, + {"multiplicationFactorForLatLong",1291}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1668 "../tests/keys" - {"primaryBitmap",1663}, + {"reserved2",1752}, + {""}, + {"primaryBitmap",1665}, {""}, {""}, -#line 365 "../tests/keys" {"bitMapIndicator",360}, {""}, {""}, {""}, {""}, {""}, -#line 173 "../tests/keys" {"N1",168}, {""}, {""}, {""}, {""}, -#line 846 "../tests/keys" {"firstOrderValues",841}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1352 "../tests/keys" - {"numberOfContributingSpectralBands",1347}, -#line 763 "../tests/keys" + {"J",93}, + {""}, {""}, {""}, + {"windSpeedTrend4",2313}, + {""}, {""}, {""}, + {"numberOfContributingSpectralBands",1348}, {"expandBy",758}, {""}, {""}, -#line 334 "../tests/keys" {"basicAngleOfTheInitialProductionDomain",329}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 386 "../tests/keys" {"cavokOrVisibility",381}, {""}, {""}, {""}, -#line 713 "../tests/keys" {"efas_post_proc",708}, -#line 1506 "../tests/keys" - {"operationalForecastCluster",1501}, + {"operationalForecastCluster",1503}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1315 "../tests/keys" - {"northLatitudeOfDomainOfTubing",1310}, - {""}, {""}, -#line 2043 "../tests/keys" - {"startOfHeaders",2038}, + {"northLatitudeOfDomainOfTubing",1311}, + {"listOfEnsembleForecastNumbers",1100}, + {""}, + {"startOfHeaders",2039}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2328 "../tests/keys" - {"wrongPadding",2323}, + {"wrongPadding",2324}, {""}, -#line 1379 "../tests/keys" - {"numberOfGridInReference",1374}, + {"numberOfGridInReference",1375}, {""}, -#line 514 "../tests/keys" {"cloudsTitle2",509}, -#line 1933 "../tests/keys" - {"section3Pointer",1928}, + {"section3Pointer",1929}, {""}, {""}, -#line 124 "../tests/keys" {"LcyInMetres",119}, {""}, -#line 151 "../tests/keys" {"LuyInMetres",146}, {""}, -#line 1842 "../tests/keys" - {"scaleFactorOfFirstWavelength",1837}, + {"scaleFactorOfFirstWavelength",1839}, {""}, -#line 1311 "../tests/keys" - {"normAtFinalTime",1306}, + {"normAtFinalTime",1307}, {""}, {""}, -#line 883 "../tests/keys" {"getNumberOfValues",878}, {""}, {""}, -#line 1771 "../tests/keys" - {"rootGroupSymbolTableEntry",1766}, -#line 1714 "../tests/keys" - {"rdb_key",1709}, + {"rootGroupSymbolTableEntry",1768}, + {"rdb_key",1711}, {""}, {""}, {""}, {""}, -#line 105 "../tests/keys" {"La1",100}, {""}, -#line 112 "../tests/keys" {"Lar1",107}, {""}, -#line 2119 "../tests/keys" - {"tiggeLocalVersion",2114}, + {"tiggeLocalVersion",2115}, {""}, -#line 265 "../tests/keys" {"X1",260}, {""}, {""}, {""}, -#line 1705 "../tests/keys" - {"radiusInMetres",1700}, + {"radiusInMetres",1702}, {""}, {""}, {""}, {""}, -#line 126 "../tests/keys" {"Lo1",121}, {""}, -#line 144 "../tests/keys" {"Lor1",139}, -#line 117 "../tests/keys" {"Latin1",112}, {""}, -#line 706 "../tests/keys" {"eastLongitudeOfDomainOfTubing",701}, {""}, {""}, {""}, {""}, -#line 2021 "../tests/keys" - {"southLatitudeOfDomainOfTubing",2016}, -#line 1852 "../tests/keys" - {"scaleFactorOfSecondWavelength",1847}, -#line 665 "../tests/keys" + {"southLatitudeOfDomainOfTubing",2017}, + {"scaleFactorOfSecondWavelength",1849}, {"deleteCalendarId",660}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1920 "../tests/keys" - {"section1Flags",1915}, + {"section1Flags",1917}, {""}, {""}, {""}, {""}, -#line 174 "../tests/keys" {"N2",169}, {""}, -#line 1457 "../tests/keys" - {"offsetAfterBitmap",1452}, -#line 1376 "../tests/keys" - {"numberOfForecastsInTheCluster",1371}, + {"offsetAfterBitmap",1454}, + {"numberOfForecastsInTheCluster",1372}, {""}, {""}, -#line 1620 "../tests/keys" - {"patch_precip_fp",1615}, + {"patch_precip_fp",1617}, {""}, {""}, -#line 1843 "../tests/keys" - {"scaleFactorOfLengthOfSemiMajorAxis",1838}, + {"scaleFactorOfLengthOfSemiMajorAxis",1840}, {""}, {""}, {""}, {""}, -#line 1844 "../tests/keys" - {"scaleFactorOfLengthOfSemiMinorAxis",1839}, + {"scaleFactorOfLengthOfSemiMinorAxis",1841}, {""}, {""}, -#line 41 "../tests/keys" {"DjInDegrees",36}, {""}, {""}, {""}, -#line 663 "../tests/keys" {"default_step_units",658}, - {""}, {""}, {""}, {""}, {""}, -#line 801 "../tests/keys" - {"extractDateTimeHourStart",796}, - {""}, {""}, -#line 2187 "../tests/keys" - {"typeOfOriginalFieldValues",2182}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 122 "../tests/keys" {"LcxInMetres",117}, {""}, -#line 149 "../tests/keys" {"LuxInMetres",144}, {""}, -#line 2070 "../tests/keys" - {"subDefinitions1",2065}, + {"subDefinitions1",2066}, {""}, {""}, {""}, {""}, {""}, -#line 188 "../tests/keys" {"NRj",183}, {""}, {""}, {""}, {""}, -#line 411 "../tests/keys" {"cfVarNameECMF",406}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1938 "../tests/keys" - {"section4Pointer",1933}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 651 "../tests/keys" + {"section4Pointer",1934}, + {""}, {""}, + {"startStepInHours",2043}, + {""}, {""}, {""}, {"dayOfTheYearDate",646}, {""}, {""}, -#line 1950 "../tests/keys" - {"section7Pointer",1945}, -#line 1073 "../tests/keys" - {"legBaseTime",1068}, + {"section7Pointer",1946}, + {"legBaseTime",1069}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1072 "../tests/keys" - {"legBaseDate",1067}, -#line 107 "../tests/keys" + {"legBaseDate",1068}, {"La2",102}, {""}, -#line 114 "../tests/keys" {"Lar2",109}, -#line 1025 "../tests/keys" - {"kindOfProduct",1020}, + {"kindOfProduct",1021}, {""}, {""}, -#line 267 "../tests/keys" {"X2",262}, {""}, {""}, {""}, {""}, {""}, -#line 1992 "../tests/keys" - {"shapeOfTheEarth",1987}, + {"shapeOfTheEarth",1988}, {""}, {""}, -#line 128 "../tests/keys" {"Lo2",123}, {""}, -#line 146 "../tests/keys" {"Lor2",141}, -#line 119 "../tests/keys" {"Latin2",114}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1835 "../tests/keys" - {"scaleFactorOfCentralWaveNumber",1830}, + {"scaleFactorOfCentralWaveNumber",1832}, {""}, -#line 270 "../tests/keys" {"XRInMetres",265}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 2118 "../tests/keys" - {"tiggeLAMName",2113}, - {""}, {""}, {""}, {""}, -#line 1161 "../tests/keys" - {"longitudeOfSubSatellitePoint",1156}, + {""}, {""}, {""}, + {"subSetJ",2074}, + {""}, {""}, + {"tiggeLAMName",2114}, + {""}, {""}, {""}, {""}, + {"longitudeOfSubSatellitePoint",1157}, {""}, {""}, -#line 400 "../tests/keys" {"centralLongitudeInMicrodegrees",395}, {""}, -#line 1414 "../tests/keys" - {"numberOfPointsInDomain",1409}, -#line 2009 "../tests/keys" - {"sizeOfPostAuxiliaryArray",2004}, + {"numberOfPointsInDomain",1410}, + {"sizeOfPostAuxiliaryArray",2005}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1162 "../tests/keys" - {"longitudeOfSubSatellitePointInDegrees",1157}, + {"longitudeOfSubSatellitePointInDegrees",1158}, {""}, -#line 358 "../tests/keys" {"biFourierResolutionParameterM",353}, {""}, -#line 966 "../tests/keys" {"inputProcessIdentifier",961}, {""}, {""}, -#line 1239 "../tests/keys" - {"md5Section7",1234}, -#line 1848 "../tests/keys" - {"scaleFactorOfPrimeMeridianOffset",1843}, + {"md5Section7",1235}, + {"scaleFactorOfPrimeMeridianOffset",1845}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1237 "../tests/keys" - {"md5Section5",1232}, -#line 693 "../tests/keys" + {""}, {""}, {""}, {""}, {""}, {"driverInformationBlockAddress",688}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1059 "../tests/keys" - {"latitudeOfTangencyPoint",1054}, + {""}, {""}, {""}, + {"typeOfOriginalFieldValues",2183}, + {""}, {""}, {""}, {""}, + {"latitudeOfTangencyPoint",1055}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1946 "../tests/keys" - {"section6Pointer",1941}, + {"section6Pointer",1942}, {""}, -#line 915 "../tests/keys" {"halfByte",910}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1775 "../tests/keys" - {"roundedMarsLongitude",1770}, + {"roundedMarsLongitude",1772}, {""}, -#line 600 "../tests/keys" {"correction1",595}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1677 "../tests/keys" - {"produceLargeConstantFields",1672}, -#line 1319 "../tests/keys" - {"northWestLongitudeOfVerficationArea",1314}, + {"produceLargeConstantFields",1674}, + {"northWestLongitudeOfVerficationArea",1315}, {""}, {""}, -#line 707 "../tests/keys" {"easternLongitudeOfClusterDomain",702}, {""}, -#line 1207 "../tests/keys" - {"marsStream1",1202}, - {""}, {""}, {""}, {""}, {""}, -#line 180 "../tests/keys" + {"marsStream1",1203}, + {"extractDateTimeHourEnd",794}, + {""}, {""}, {""}, {""}, {"NEAREST",175}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1866 "../tests/keys" - {"scaledValueOfFirstWavelength",1861}, + {"scaledValueOfFirstWavelength",1863}, {""}, {""}, {""}, {""}, {""}, -#line 2105 "../tests/keys" - {"templatesLocalDir",2100}, -#line 1015 "../tests/keys" - {"jDirectionIncrementGridLength",1010}, + {"templatesLocalDir",2101}, + {"jDirectionIncrementGridLength",1011}, {""}, {""}, {""}, -#line 1982 "../tests/keys" - {"selectStepTemplateInstant",1977}, - {""}, -#line 577 "../tests/keys" + {"selectStepTemplateInstant",1978}, + {"groupInternalNodeK",899}, {"coordAveragingTims",572}, -#line 2346 "../tests/keys" - {"yearOfEndOfOverallTimeInterval",2341}, + {"yearOfEndOfOverallTimeInterval",2342}, {""}, -#line 1363 "../tests/keys" - {"numberOfDistinctSection3s",1358}, + {"numberOfDistinctSection3s",1359}, {""}, {""}, {""}, {""}, -#line 2267 "../tests/keys" - {"verificationYear",2262}, + {"verificationYear",2263}, {""}, -#line 892 "../tests/keys" {"gribMasterTablesVersionNumber",887}, -#line 1483 "../tests/keys" - {"offsetSection5",1478}, + {"offsetSection5",1480}, {""}, -#line 1299 "../tests/keys" - {"n3",1294}, + {"n3",1295}, {""}, {""}, {""}, -#line 1133 "../tests/keys" - {"localTablesVersion",1128}, + {"localTablesVersion",1129}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 768 "../tests/keys" {"expandedCrex_widths",763}, {""}, {""}, -#line 1876 "../tests/keys" - {"scaledValueOfSecondWavelength",1871}, + {"scaledValueOfSecondWavelength",1873}, {""}, -#line 1427 "../tests/keys" - {"numberOfSingularVectorsEvolved",1422}, + {"numberOfSingularVectorsEvolved",1423}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1287 "../tests/keys" - {"monthOfEndOfOverallTimeInterval",1282}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2027 "../tests/keys" - {"sp3",2022}, -#line 1867 "../tests/keys" - {"scaledValueOfLengthOfSemiMajorAxis",1862}, - {""}, {""}, {""}, {""}, -#line 1868 "../tests/keys" - {"scaledValueOfLengthOfSemiMinorAxis",1863}, + {"monthOfEndOfOverallTimeInterval",1283}, {""}, {""}, -#line 1727 "../tests/keys" - {"recentWeather",1722}, + {"md5Section5",1233}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"sp3",2023}, + {"scaledValueOfLengthOfSemiMajorAxis",1864}, + {""}, {""}, + {"visibilityInKilometresTrend1",2280}, + {""}, + {"scaledValueOfLengthOfSemiMinorAxis",1865}, + {""}, {""}, + {"recentWeather",1724}, {""}, {""}, {""}, -#line 376 "../tests/keys" {"bufrHeaderCentre",371}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1330 "../tests/keys" - {"numberIncludedInAverage",1325}, + {"numberIncludedInAverage",1326}, {""}, {""}, {""}, {""}, -#line 1056 "../tests/keys" - {"latitudeOfStretchingPoleInDegrees",1051}, -#line 1400 "../tests/keys" - {"numberOfParallelsBetweenAPoleAndTheEquator",1395}, + {"latitudeOfStretchingPoleInDegrees",1052}, + {"numberOfParallelsBetweenAPoleAndTheEquator",1396}, {""}, {""}, {""}, -#line 2062 "../tests/keys" - {"stepUnits",2057}, + {"stepUnits",2058}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 321 "../tests/keys" {"averaging1Flag",316}, {""}, {""}, {""}, {""}, -#line 158 "../tests/keys" {"METARstr",153}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1720 "../tests/keys" - {"rdbtimeMonth",1715}, + {"rdbtimeMonth",1717}, {""}, -#line 1448 "../tests/keys" - {"observationDiagnostic",1443}, + {"observationDiagnostic",1444}, {""}, {""}, -#line 1238 "../tests/keys" - {"md5Section6",1233}, + {"md5Section6",1234}, {""}, {""}, -#line 1930 "../tests/keys" - {"section3Flags",1925}, -#line 1929 "../tests/keys" - {"section3",1924}, + {"section3Flags",1926}, + {"visibilityInKilometresTrend2",2281}, {""}, -#line 792 "../tests/keys" {"extractAreaNorthLatitude",787}, {""}, -#line 929 "../tests/keys" {"hourOfEndOfOverallTimeInterval",924}, {""}, {""}, -#line 1647 "../tests/keys" - {"presentTrend1",1642}, + {"presentTrend1",1644}, {""}, {""}, {""}, -#line 1364 "../tests/keys" - {"numberOfDistinctSection4s",1359}, + {"numberOfDistinctSection4s",1360}, {""}, -#line 2314 "../tests/keys" - {"windSpeedTrend1",2309}, + {"windSpeedTrend1",2310}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1367 "../tests/keys" - {"numberOfDistinctSection7s",1362}, + {"numberOfDistinctSection7s",1363}, {""}, -#line 719 "../tests/keys" {"endDayTrend1",714}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 160 "../tests/keys" {"MinuteOfModelVersion",155}, {""}, -#line 1157 "../tests/keys" - {"longitudeOfSouthernPole",1152}, -#line 381 "../tests/keys" + {"longitudeOfSouthernPole",1153}, {"calendarIdentification",376}, -#line 55 "../tests/keys" {"Ensemble_Combination_Number",50}, -#line 1317 "../tests/keys" - {"northWestLatitudeOfVerficationArea",1312}, + {"northWestLatitudeOfVerficationArea",1313}, {""}, {""}, {""}, {""}, -#line 1859 "../tests/keys" - {"scaledValueOfCentralWaveNumber",1854}, + {"scaledValueOfCentralWaveNumber",1856}, {""}, {""}, {""}, -#line 322 "../tests/keys" {"averaging2Flag",317}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2016 "../tests/keys" - {"southEastLatitudeOfLPOArea",2011}, + {"southEastLatitudeOfLPOArea",2012}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfClusterHighResolution",1340}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2007 "../tests/keys" - {"sizeOfLength",2002}, -#line 1872 "../tests/keys" - {"scaledValueOfPrimeMeridianOffset",1867}, {""}, -#line 113 "../tests/keys" + {"sizeOfLength",2003}, + {"scaledValueOfPrimeMeridianOffset",1869}, + {""}, {"Lar1InDegrees",108}, {""}, {""}, {""}, {""}, {""}, -#line 360 "../tests/keys" {"biFourierResolutionSubSetParameterM",355}, {""}, {""}, {""}, -#line 1756 "../tests/keys" - {"reserved3",1751}, + {"reserved3",1753}, {""}, -#line 1054 "../tests/keys" - {"latitudeOfSouthernPoleInDegrees",1049}, + {"latitudeOfSouthernPoleInDegrees",1050}, {""}, -#line 1520 "../tests/keys" - {"originatingCentreOfAnalysis",1515}, -#line 145 "../tests/keys" + {"originatingCentreOfAnalysis",1517}, {"Lor1InDegrees",140}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"stepRangeInHours",2054}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1122 "../tests/keys" - {"localLatitude1",1117}, -#line 171 "../tests/keys" + {""}, {""}, + {"localLatitude1",1118}, {"MonthOfModelVersion",166}, -#line 1903 "../tests/keys" - {"secondaryBitmap",1898}, + {"secondaryBitmap",1900}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1213 "../tests/keys" - {"mask",1208}, + {"mask",1209}, {""}, {""}, {""}, -#line 1366 "../tests/keys" - {"numberOfDistinctSection6s",1361}, + {"numberOfDistinctSection6s",1362}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 509 "../tests/keys" {"cloudsTitle1",504}, {""}, -#line 1648 "../tests/keys" - {"presentTrend2",1643}, + {"presentTrend2",1645}, {""}, {""}, -#line 115 "../tests/keys" {"Lar2InDegrees",110}, -#line 2206 "../tests/keys" - {"typicalMonth",2201}, + {"typicalMonth",2202}, {""}, {""}, {""}, {""}, {""}, -#line 210 "../tests/keys" {"P1",205}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 147 "../tests/keys" {"Lor2InDegrees",142}, {""}, {""}, -#line 1019 "../tests/keys" - {"jScansPositively",1014}, -#line 1477 "../tests/keys" - {"offsetSection1",1472}, + {"jScansPositively",1015}, + {"offsetSection1",1474}, {""}, {""}, {""}, {""}, {""}, -#line 106 "../tests/keys" {"La1InDegrees",101}, -#line 1294 "../tests/keys" - {"monthlyVerificationYear",1289}, + {"monthlyVerificationYear",1290}, {""}, {""}, -#line 2295 "../tests/keys" - {"westLongitudeOfDomainOfTubing",2290}, + {"westLongitudeOfDomainOfTubing",2291}, {""}, {""}, {""}, -#line 1941 "../tests/keys" - {"section5Length",1936}, + {"section5Length",1937}, {""}, {""}, {""}, -#line 515 "../tests/keys" {"cloudsTitle2Trend1",510}, {""}, {""}, -#line 127 "../tests/keys" {"Lo1InDegrees",122}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 897 "../tests/keys" {"gridDefinitionDescription",892}, {""}, -#line 933 "../tests/keys" {"hoursAfterDataCutoff",928}, -#line 1983 "../tests/keys" - {"selectStepTemplateInterval",1978}, - {""}, {""}, -#line 905 "../tests/keys" - {"groupLeafNodeK",900}, -#line 1525 "../tests/keys" - {"pack",1520}, + {"selectStepTemplateInterval",1979}, {""}, {""}, {""}, -#line 2018 "../tests/keys" - {"southEastLongitudeOfLPOArea",2013}, -#line 335 "../tests/keys" + {"pack",1522}, + {""}, {""}, {""}, + {"southEastLongitudeOfLPOArea",2014}, {"beginDayTrend1",330}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1270 "../tests/keys" - {"missingDataFlag",1265}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 2047 "../tests/keys" - {"startStepInHours",2042}, - {""}, {""}, {""}, {""}, {""}, -#line 2104 "../tests/keys" - {"temperatureAndDewpointPresent",2099}, -#line 103 "../tests/keys" + {"missingDataFlag",1266}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"temperatureAndDewpointPresent",2100}, {"LLCOSP",98}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2138 "../tests/keys" - {"timeRangeIndicatorFromStepRange",2133}, -#line 1302 "../tests/keys" - {"nameECMF",1297}, -#line 1276 "../tests/keys" - {"mixedCoordinateFieldFlag",1271}, + {"timeRangeIndicatorFromStepRange",2134}, + {"nameECMF",1298}, + {"mixedCoordinateFieldFlag",1272}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 382 "../tests/keys" {"calendarIdentificationTemplateNumber",377}, -#line 516 "../tests/keys" {"cloudsTitle2Trend2",511}, {""}, {""}, {""}, {""}, {""}, -#line 1123 "../tests/keys" - {"localLatitude2",1118}, + {"localLatitude2",1119}, {""}, {""}, -#line 1935 "../tests/keys" - {"section4",1930}, + {"section4",1931}, {""}, {""}, {""}, {""}, -#line 1904 "../tests/keys" - {"secondaryBitmapPresent",1899}, + {"secondaryBitmapPresent",1901}, {""}, -#line 2230 "../tests/keys" - {"unpack",2225}, -#line 2188 "../tests/keys" - {"typeOfPacking",2183}, - {""}, {""}, {""}, {""}, {""}, -#line 733 "../tests/keys" - {"endMinuteTrend4",728}, - {""}, -#line 2072 "../tests/keys" - {"subLocalDefinition1",2067}, -#line 1905 "../tests/keys" - {"secondaryBitmaps",1900}, + {"unpack",2226}, + {"typeOfPacking",2184}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"subLocalDefinition1",2068}, + {"secondaryBitmaps",1902}, {""}, {""}, -#line 1948 "../tests/keys" - {"section7",1943}, -#line 200 "../tests/keys" + {"section7",1944}, {"NrInRadiusOfEarth",195}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 211 "../tests/keys" {"P2",206}, {""}, {""}, {""}, {""}, {""}, -#line 1820 "../tests/keys" - {"runwayFrictionCoefficientState1",1815}, - {""}, {""}, {""}, {""}, {""}, -#line 1480 "../tests/keys" - {"offsetSection2",1475}, + {"runwayFrictionCoefficientState1",1817}, {""}, {""}, {""}, -#line 1079 "../tests/keys" - {"lengthOfHeaders",1074}, - {""}, {""}, {""}, -#line 1899 "../tests/keys" - {"secondOrderFlags",1894}, -#line 1134 "../tests/keys" - {"localTablesVersionNumber",1129}, + {"visibilityInKilometresTrend3",2282}, {""}, -#line 2225 "../tests/keys" - {"unitsECMF",2220}, + {"offsetSection2",1477}, + {""}, {""}, {""}, + {"lengthOfHeaders",1075}, + {""}, {""}, {""}, + {"secondOrderFlags",1896}, + {"localTablesVersionNumber",1130}, + {""}, + {"unitsECMF",2221}, {""}, {""}, {""}, {""}, -#line 1921 "../tests/keys" - {"section1Length",1916}, + {"section1Length",1918}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2339 "../tests/keys" - {"yDirectionGridLengthInMetres",2334}, - {""}, -#line 604 "../tests/keys" + {""}, {""}, {"correction3",599}, {""}, -#line 2247 "../tests/keys" - {"uuidOfHGrid",2242}, -#line 641 "../tests/keys" + {"uuidOfHGrid",2243}, {"dateOfSSTFieldUsed",636}, {""}, {""}, -#line 56 "../tests/keys" {"Ensemble_Identifier",51}, {""}, {""}, {""}, {""}, -#line 1906 "../tests/keys" - {"secondaryBitmapsCount",1901}, + {"secondaryBitmapsCount",1903}, {""}, {""}, {""}, -#line 336 "../tests/keys" {"beginDayTrend2",331}, -#line 1453 "../tests/keys" - {"oceanAtmosphereCoupling",1448}, -#line 606 "../tests/keys" + {"oceanAtmosphereCoupling",1449}, {"correction4",601}, -#line 2303 "../tests/keys" - {"windDirectionTrend1",2298}, + {"windDirectionTrend1",2299}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 838 "../tests/keys" {"fileConsistencyFlags",833}, {""}, -#line 958 "../tests/keys" {"indicatorOfUnitForTimeIncrement",953}, -#line 920 "../tests/keys" {"heightPressureEtcOfLevels",915}, {""}, {""}, {""}, -#line 1821 "../tests/keys" - {"runwayFrictionCoefficientState2",1816}, - {""}, {""}, {""}, {""}, {""}, -#line 799 "../tests/keys" - {"extractDateTimeHourEnd",794}, - {""}, {""}, -#line 1759 "../tests/keys" - {"reservedSection2",1754}, -#line 22 "../tests/keys" + {"runwayFrictionCoefficientState2",1818}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"reservedSection2",1756}, {"BOX",17}, {""}, {""}, {""}, -#line 2192 "../tests/keys" - {"typeOfSSTFieldUsed",2187}, + {"typeOfSSTFieldUsed",2188}, {""}, {""}, {""}, {""}, {""}, -#line 157 "../tests/keys" {"METAR",152}, {""}, -#line 1924 "../tests/keys" - {"section2Length",1919}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 1391 "../tests/keys" - {"numberOfMissing",1386}, -#line 904 "../tests/keys" - {"groupInternalNodeK",899}, + {"section2Length",1921}, {""}, {""}, -#line 1404 "../tests/keys" - {"numberOfPointsAlongAMeridian",1399}, + {"endMinuteTrend4",728}, + {""}, {""}, {""}, + {"numberOfMissing",1387}, + {""}, {""}, {""}, + {"numberOfPointsAlongAMeridian",1400}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 190 "../tests/keys" {"NUT",185}, {""}, {""}, {""}, {""}, -#line 2296 "../tests/keys" - {"westernLongitudeOfClusterDomain",2291}, + {"westernLongitudeOfClusterDomain",2292}, {""}, -#line 1006 "../tests/keys" - {"isectionNumber2",1001}, -#line 2073 "../tests/keys" - {"subLocalDefinition2",2068}, -#line 849 "../tests/keys" + {"isectionNumber2",1002}, + {"subLocalDefinition2",2069}, {"flagForIrregularGridCoordinateList",844}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1919 "../tests/keys" - {"section11Pointer",1914}, + {"section11Pointer",1916}, {""}, -#line 2332 "../tests/keys" - {"xDirectionGridLengthInMetres",2327}, + {"visibilityInKilometresTrend4",2283}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1638 "../tests/keys" - {"postAuxiliaryArrayPresent",1633}, - {""}, {""}, -#line 2284 "../tests/keys" - {"visibilityInKilometresTrend1",2279}, + {"postAuxiliaryArrayPresent",1635}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 873 "../tests/keys" + {""}, {""}, {""}, {""}, {""}, {""}, {"g1conceptsLocalDirAll",868}, -#line 11 "../tests/keys" {"AA",6}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 793 "../tests/keys" + {"yDirectionGridLengthInMetres",2335}, {"extractAreaSouthLatitude",788}, {""}, -#line 1471 "../tests/keys" - {"offsetEndSection4",1466}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 326 "../tests/keys" - {"backgroundGeneratingProcessIdentifier",321}, -#line 2304 "../tests/keys" - {"windDirectionTrend2",2299}, + {"offsetEndSection4",1468}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"windDirectionTrend2",2300}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 404 "../tests/keys" {"centreForTable2",399}, - {""}, -#line 2340 "../tests/keys" - {"yDirectionGridLengthInMillimetres",2335}, -#line 2318 "../tests/keys" - {"windUnits",2313}, - {""}, {""}, {""}, {""}, -#line 1800 "../tests/keys" - {"runwayDesignatorState1",1795}, -#line 1944 "../tests/keys" - {"section6",1939}, - {""}, {""}, {""}, -#line 2071 "../tests/keys" - {"subDefinitions2",2066}, -#line 1763 "../tests/keys" - {"resolutionAndComponentFlags1",1758}, - {""}, -#line 721 "../tests/keys" - {"endDayTrend3",716}, {""}, {""}, -#line 2285 "../tests/keys" - {"visibilityInKilometresTrend2",2280}, + {"windUnits",2314}, + {""}, {""}, {""}, {""}, + {"runwayDesignatorState1",1797}, + {"section6",1940}, + {""}, {""}, {""}, + {"subDefinitions2",2067}, + {"resolutionAndComponentFlags1",1760}, {""}, -#line 1784 "../tests/keys" - {"runwayDepositState1",1779}, + {"endDayTrend3",716}, + {""}, {""}, {""}, {""}, + {"runwayDepositState1",1781}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 264 "../tests/keys" {"WRAPstr",259}, {""}, {""}, {""}, -#line 722 "../tests/keys" {"endDayTrend4",717}, {""}, {""}, {""}, {""}, -#line 1043 "../tests/keys" - {"latitudeOfCentralPointInClusterDomain",1038}, - {""}, -#line 1329 "../tests/keys" - {"numberInTheGridCoordinateList",1324}, - {""}, {""}, -#line 1426 "../tests/keys" - {"numberOfSingularVectorsComputed",1421}, + {"latitudeOfCentralPointInClusterDomain",1039}, + {""}, {""}, {""}, {""}, + {"numberOfSingularVectorsComputed",1422}, {""}, {""}, {""}, {""}, -#line 844 "../tests/keys" {"firstMonthUsedToBuildClimateMonth1",839}, {""}, {""}, {""}, {""}, -#line 517 "../tests/keys" {"cloudsTitle2Trend3",512}, {""}, {""}, -#line 1812 "../tests/keys" - {"runwayFrictionCodeValueState1",1807}, + {"runwayFrictionCodeValueState1",1809}, {""}, {""}, -#line 25 "../tests/keys" {"BufrTemplate",20}, -#line 1125 "../tests/keys" - {"localLongitude1",1120}, + {"localLongitude1",1121}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1697 "../tests/keys" - {"qnhUnits",1692}, - {""}, -#line 1801 "../tests/keys" - {"runwayDesignatorState2",1796}, - {""}, {""}, {""}, {""}, {""}, -#line 1764 "../tests/keys" - {"resolutionAndComponentFlags2",1759}, -#line 1344 "../tests/keys" - {"numberOfClusterHighResolution",1339}, + {"qnhUnits",1694}, + {"latitudeOfLastGridPointInDegrees",1044}, + {"runwayDesignatorState2",1798}, + {"xDirectionGridLengthInMetres",2328}, + {""}, {""}, {""}, {""}, + {"resolutionAndComponentFlags2",1761}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 2164 "../tests/keys" - {"tsectionNumber3",2159}, - {""}, {""}, {""}, {""}, {""}, -#line 1007 "../tests/keys" - {"isectionNumber3",1002}, - {""}, {""}, {""}, -#line 2333 "../tests/keys" - {"xDirectionGridLengthInMillimetres",2328}, - {""}, {""}, {""}, -#line 1016 "../tests/keys" - {"jDirectionIncrementInDegrees",1011}, -#line 1230 "../tests/keys" - {"md5Headers",1225}, -#line 1360 "../tests/keys" - {"numberOfDaysInClimateSamplingWindow",1355}, -#line 1244 "../tests/keys" - {"meanRVR1",1239}, -#line 1077 "../tests/keys" - {"lengthIncrementForTheGroupLengths",1072}, -#line 1405 "../tests/keys" - {"numberOfPointsAlongAParallel",1400}, {""}, {""}, -#line 845 "../tests/keys" + {"tsectionNumber3",2160}, + {""}, {""}, {""}, {""}, {""}, + {"isectionNumber3",1003}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"jDirectionIncrementInDegrees",1012}, + {"md5Headers",1226}, + {"numberOfDaysInClimateSamplingWindow",1356}, + {"meanRVR1",1240}, + {"lengthIncrementForTheGroupLengths",1073}, + {"numberOfPointsAlongAParallel",1401}, + {""}, {""}, {"firstMonthUsedToBuildClimateMonth2",840}, - {""}, {""}, -#line 2058 "../tests/keys" - {"stepRangeInHours",2053}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"runwayFrictionCodeValueState2",1810}, {""}, {""}, {""}, {""}, -#line 1813 "../tests/keys" - {"runwayFrictionCodeValueState2",1808}, - {""}, {""}, {""}, {""}, -#line 1609 "../tests/keys" - {"parameterUnits",1604}, - {""}, -#line 1119 "../tests/keys" - {"localFlagLatestVersion",1114}, + {"parameterUnits",1606}, + {"backgroundGeneratingProcessIdentifier",321}, + {"localFlagLatestVersion",1115}, {""}, {""}, -#line 519 "../tests/keys" {"cloudsTitle3",514}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1918 "../tests/keys" - {"section11Length",1913}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 524 "../tests/keys" + {"section11Length",1915}, + {""}, {""}, {""}, {""}, + {"yDirectionGridLengthInMillimetres",2336}, + {""}, {""}, {""}, {"cloudsTitle4",519}, -#line 2274 "../tests/keys" - {"versionNumberOfGribLocalTables",2269}, - {""}, {""}, {""}, {""}, -#line 1785 "../tests/keys" - {"runwayDepositState2",1780}, -#line 1640 "../tests/keys" - {"preBitmapValues",1635}, + {""}, {""}, {""}, {""}, {""}, + {"runwayDepositState2",1782}, + {"preBitmapValues",1637}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1822 "../tests/keys" - {"runwayFrictionCoefficientState3",1817}, -#line 1424 "../tests/keys" - {"numberOfSecondOrderPackedValues",1419}, + {"runwayFrictionCoefficientState3",1819}, + {"numberOfSecondOrderPackedValues",1420}, {""}, -#line 1512 "../tests/keys" - {"orderOfSpatialDifferencing",1507}, + {"orderOfSpatialDifferencing",1509}, {""}, {""}, -#line 1667 "../tests/keys" - {"pressureUnits",1662}, + {"pressureUnits",1664}, {""}, {""}, {""}, {""}, -#line 1407 "../tests/keys" - {"numberOfPointsAlongSecondAxis",1402}, + {"numberOfPointsAlongSecondAxis",1403}, {""}, {""}, {""}, -#line 2028 "../tests/keys" - {"spaceUnitFlag",2023}, -#line 1333 "../tests/keys" - {"numberOfBits",1328}, -#line 848 "../tests/keys" + {"spaceUnitFlag",2024}, + {"numberOfBits",1329}, {"flagForAnyFurtherInformation",843}, -#line 518 "../tests/keys" {"cloudsTitle2Trend4",513}, - {""}, {""}, {""}, -#line 1931 "../tests/keys" - {"section3Length",1926}, + {""}, + {"numberInTheGridCoordinateList",1325}, + {""}, + {"section3Length",1927}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2076 "../tests/keys" - {"subLocalDefinitionNumber1",2071}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 581 "../tests/keys" + {"subLocalDefinitionNumber1",2072}, + {""}, {""}, {""}, {""}, {""}, + {"indexedStorageInternalNodeK",950}, + {""}, {""}, {""}, {"coordinate2End",576}, {""}, {""}, {""}, -#line 1146 "../tests/keys" - {"longitudeOfFirstDiamondCenterLine",1141}, + {"longitudeOfFirstDiamondCenterLine",1142}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1147 "../tests/keys" - {"longitudeOfFirstDiamondCenterLineInDegrees",1142}, -#line 776 "../tests/keys" + {"longitudeOfFirstDiamondCenterLineInDegrees",1143}, {"expandedUnits",771}, {""}, {""}, -#line 1478 "../tests/keys" - {"offsetSection10",1473}, + {"offsetSection10",1475}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2219 "../tests/keys" - {"unitOfTimeRange",2214}, + {"unitOfTimeRange",2215}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1649 "../tests/keys" - {"presentTrend3",1644}, + {"presentTrend3",1646}, {""}, {""}, -#line 1245 "../tests/keys" - {"meanRVR2",1240}, -#line 535 "../tests/keys" + {"meanRVR2",1241}, {"clusterMember5",530}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1699 "../tests/keys" - {"qualityControlIndicator",1694}, -#line 1467 "../tests/keys" - {"offsetBeforeData",1462}, + {"xDirectionGridLengthInMillimetres",2329}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"qualityControlIndicator",1696}, + {"offsetBeforeData",1464}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 851 "../tests/keys" {"flagShowingPostAuxiliaryArrayInUse",846}, {""}, {""}, -#line 1223 "../tests/keys" - {"matrixBitmapsPresent",1218}, + {"matrixBitmapsPresent",1219}, {""}, {""}, {""}, {""}, {""}, -#line 215 "../tests/keys" {"P_INST",210}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 549 "../tests/keys" {"codedNumberOfFirstOrderPackedValues",544}, {""}, {""}, -#line 1978 "../tests/keys" - {"section_5",1973}, + {"section_5",1974}, {""}, {""}, {""}, {""}, -#line 1264 "../tests/keys" - {"minuteOfEndOfOverallTimeInterval",1259}, -#line 1823 "../tests/keys" - {"runwayFrictionCoefficientState4",1818}, - {""}, {""}, -#line 2074 "../tests/keys" - {"subLocalDefinitionLength1",2069}, + {"minuteOfEndOfOverallTimeInterval",1260}, + {"runwayFrictionCoefficientState4",1820}, {""}, -#line 1896 "../tests/keys" - {"secondOfEndOfOverallTimeInterval",1891}, + {"versionNumberOfGribLocalTables",2270}, + {"subLocalDefinitionLength1",2070}, + {""}, + {"secondOfEndOfOverallTimeInterval",1893}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 42 "../tests/keys" {"DjInMetres",37}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1936 "../tests/keys" - {"section4Length",1931}, -#line 2286 "../tests/keys" - {"visibilityInKilometresTrend3",2281}, - {""}, {""}, -#line 510 "../tests/keys" + {"section4Length",1932}, + {""}, {""}, {""}, {"cloudsTitle1Trend1",505}, -#line 1392 "../tests/keys" - {"numberOfMissingInStatisticalProcess",1387}, + {"numberOfMissingInStatisticalProcess",1388}, {""}, -#line 1018 "../tests/keys" - {"jPointsAreConsecutive",1013}, + {"jPointsAreConsecutive",1014}, {""}, {""}, -#line 1949 "../tests/keys" - {"section7Length",1944}, + {"section7Length",1945}, {""}, {""}, -#line 2077 "../tests/keys" - {"subLocalDefinitionNumber2",2072}, -#line 525 "../tests/keys" + {"subLocalDefinitionNumber2",2073}, {"cloudsTitle4Trend1",520}, {""}, {""}, {""}, {""}, -#line 1693 "../tests/keys" - {"qfeUnits",1688}, + {"qfeUnits",1690}, {""}, {""}, {""}, {""}, {""}, -#line 2315 "../tests/keys" - {"windSpeedTrend2",2310}, + {"windSpeedTrend2",2311}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1967 "../tests/keys" - {"section_05",1962}, + {"section_05",1963}, {""}, {""}, {""}, {""}, {""}, -#line 1269 "../tests/keys" - {"minutesAfterReferenceTimeOfDataCutoff",1264}, + {"minutesAfterReferenceTimeOfDataCutoff",1265}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1802 "../tests/keys" - {"runwayDesignatorState3",1797}, + {"runwayDesignatorState3",1799}, {""}, {""}, {""}, {""}, {""}, -#line 1765 "../tests/keys" - {"resolutionAndComponentFlags3",1760}, + {"resolutionAndComponentFlags3",1762}, {""}, {""}, {""}, {""}, {""}, -#line 1884 "../tests/keys" - {"scanningMode5",1879}, -#line 588 "../tests/keys" + {"scanningMode5",1881}, {"coordinate4OfFirstGridPoint",583}, -#line 511 "../tests/keys" {"cloudsTitle1Trend2",506}, {""}, {""}, -#line 1154 "../tests/keys" - {"longitudeOfReferencePoint",1149}, -#line 730 "../tests/keys" + {"longitudeOfReferencePoint",1150}, {"endMinuteTrend1",725}, -#line 1907 "../tests/keys" - {"secondaryBitmapsSize",1902}, + {"secondaryBitmapsSize",1904}, {""}, -#line 2324 "../tests/keys" - {"windVariableDirectionTrend1",2319}, + {"windVariableDirectionTrend1",2320}, {""}, {""}, -#line 526 "../tests/keys" {"cloudsTitle4Trend2",521}, -#line 912 "../tests/keys" {"gts_TTAAii",907}, {""}, -#line 1481 "../tests/keys" - {"offsetSection3",1476}, + {"offsetSection3",1478}, {""}, -#line 2010 "../tests/keys" - {"sizeOfPostAuxiliaryArrayPlusOne",2005}, + {"sizeOfPostAuxiliaryArrayPlusOne",2006}, {""}, -#line 1406 "../tests/keys" - {"numberOfPointsAlongFirstAxis",1401}, + {"numberOfPointsAlongFirstAxis",1402}, {""}, {""}, -#line 213 "../tests/keys" {"PUnset",208}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1814 "../tests/keys" - {"runwayFrictionCodeValueState3",1809}, + {"runwayFrictionCodeValueState3",1811}, {""}, -#line 649 "../tests/keys" {"dayOfModelVersion",644}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1355 "../tests/keys" - {"numberOfDataBinsAlongRadials",1350}, -#line 2075 "../tests/keys" - {"subLocalDefinitionLength2",2070}, + {"numberOfDataBinsAlongRadials",1351}, + {"subLocalDefinitionLength2",2071}, {""}, {""}, {""}, {""}, {""}, -#line 1945 "../tests/keys" - {"section6Length",1940}, + {"section6Length",1941}, {""}, {""}, {""}, -#line 520 "../tests/keys" {"cloudsTitle3Trend1",515}, -#line 337 "../tests/keys" {"beginDayTrend3",332}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2287 "../tests/keys" - {"visibilityInKilometresTrend4",2282}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 409 "../tests/keys" {"cfNameECMF",404}, -#line 8 "../tests/keys" {"************_PRODUCT_***************",3}, {""}, {""}, {""}, {""}, -#line 1149 "../tests/keys" - {"longitudeOfFirstGridPointInDegrees",1144}, + {"longitudeOfFirstGridPointInDegrees",1145}, {""}, -#line 1465 "../tests/keys" - {"offsetBSection9",1460}, -#line 642 "../tests/keys" + {"offsetBSection9",1462}, {"dateSSTFieldUsed",637}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1183 "../tests/keys" - {"marsClass1",1178}, -#line 585 "../tests/keys" + {"marsClass1",1179}, {"coordinate3OfFirstGridPoint",580}, {""}, {""}, -#line 1650 "../tests/keys" - {"presentTrend4",1645}, -#line 1803 "../tests/keys" - {"runwayDesignatorState4",1798}, + {"presentTrend4",1647}, + {"runwayDesignatorState4",1800}, {""}, {""}, {""}, {""}, {""}, -#line 1766 "../tests/keys" - {"resolutionAndComponentFlags4",1761}, -#line 521 "../tests/keys" + {"resolutionAndComponentFlags4",1763}, {"cloudsTitle3Trend2",516}, {""}, {""}, {""}, {""}, {""}, -#line 1436 "../tests/keys" - {"numberOfUsedTileAttributes",1431}, + {"numberOfUsedTileAttributes",1432}, {""}, {""}, -#line 1768 "../tests/keys" - {"resolutionAndComponentFlags7",1763}, + {"resolutionAndComponentFlags7",1765}, {""}, {""}, -#line 530 "../tests/keys" {"clusterMember1",525}, {""}, {""}, {""}, -#line 2316 "../tests/keys" - {"windSpeedTrend3",2311}, + {"windSpeedTrend3",2312}, {""}, {""}, {""}, -#line 2325 "../tests/keys" - {"windVariableDirectionTrend2",2320}, -#line 34 "../tests/keys" + {"windVariableDirectionTrend2",2321}, {"DayOfModelVersion",29}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1433 "../tests/keys" - {"numberOfUnexpandedDescriptors",1428}, + {"numberOfUnexpandedDescriptors",1429}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1489 "../tests/keys" - {"offsetValuesBy",1484}, -#line 1408 "../tests/keys" - {"numberOfPointsAlongTheXAxis",1403}, -#line 1815 "../tests/keys" - {"runwayFrictionCodeValueState4",1810}, + {"offsetValuesBy",1486}, + {"numberOfPointsAlongTheXAxis",1404}, + {"runwayFrictionCodeValueState4",1812}, {""}, {""}, {""}, {""}, {""}, -#line 2199 "../tests/keys" - {"typeOfWavelengthInterval",2194}, + {"typeOfWavelengthInterval",2195}, {""}, -#line 494 "../tests/keys" {"cloudsCode2",489}, {""}, {""}, {""}, -#line 1972 "../tests/keys" - {"section_1",1967}, + {"section_1",1968}, {""}, -#line 1846 "../tests/keys" - {"scaleFactorOfMajorAxisOfOblateSpheroidEarth",1841}, + {"scaleFactorOfMajorAxisOfOblateSpheroidEarth",1843}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1747 "../tests/keys" - {"reflectivityCalibrationConstant",1742}, -#line 86 "../tests/keys" + {"reflectivityCalibrationConstant",1744}, {"HDF5str",81}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2305 "../tests/keys" - {"windDirectionTrend3",2300}, + {"windDirectionTrend3",2301}, {""}, {""}, -#line 2056 "../tests/keys" - {"stepInHours",2051}, - {""}, {""}, {""}, -#line 1048 "../tests/keys" - {"latitudeOfLastGridPointInDegrees",1043}, + {"stepInHours",2052}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1415 "../tests/keys" - {"numberOfPointsUsed",1410}, -#line 1353 "../tests/keys" - {"numberOfControlForecastTube",1348}, -#line 2256 "../tests/keys" - {"variationOfVisibilityDirectionTrend1",2251}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfPointsUsed",1411}, + {"numberOfControlForecastTube",1349}, + {"variationOfVisibilityDirectionTrend1",2252}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 745 "../tests/keys" {"endStepInHours",740}, {""}, {""}, {""}, -#line 294 "../tests/keys" {"addEmptySection2",289}, {""}, {""}, -#line 1728 "../tests/keys" - {"recentWeatherTry",1723}, + {"recentWeatherTry",1725}, {""}, {""}, {""}, {""}, {""}, -#line 1963 "../tests/keys" - {"section_01",1958}, + {"section_01",1959}, {""}, -#line 1234 "../tests/keys" - {"md5Section2",1229}, + {"md5Section2",1230}, {""}, {""}, {""}, {""}, -#line 1767 "../tests/keys" - {"resolutionAndComponentFlags6",1762}, + {"resolutionAndComponentFlags6",1764}, {""}, -#line 1184 "../tests/keys" - {"marsClass2",1179}, + {"marsClass2",1180}, {""}, {""}, -#line 1838 "../tests/keys" - {"scaleFactorOfEarthMajorAxis",1833}, + {"scaleFactorOfEarthMajorAxis",1835}, {""}, {""}, {""}, {""}, -#line 1839 "../tests/keys" - {"scaleFactorOfEarthMinorAxis",1834}, -#line 379 "../tests/keys" + {"scaleFactorOfEarthMinorAxis",1836}, {"bufrdcExpandedDescriptors",374}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1922 "../tests/keys" - {"section1Padding",1917}, + {"section1Padding",1919}, {""}, {""}, {""}, {""}, -#line 532 "../tests/keys" {"clusterMember2",527}, {""}, -#line 1482 "../tests/keys" - {"offsetSection4",1477}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1044 "../tests/keys" - {"latitudeOfFirstGridPoint",1039}, + {"offsetSection4",1479}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2257 "../tests/keys" - {"variationOfVisibilityDirectionTrend2",2252}, + {"variationOfVisibilityDirectionTrend2",2253}, {""}, {""}, -#line 1316 "../tests/keys" - {"northWestLatitudeOfLPOArea",1311}, -#line 702 "../tests/keys" + {"northWestLatitudeOfLPOArea",1312}, {"earthMajorAxisInMetres",697}, {""}, {""}, -#line 1485 "../tests/keys" - {"offsetSection7",1480}, + {"offsetSection7",1482}, {""}, -#line 789 "../tests/keys" {"extractAreaEastLongitude",784}, {""}, {""}, {""}, -#line 512 "../tests/keys" {"cloudsTitle1Trend3",507}, {""}, -#line 1166 "../tests/keys" - {"longitudeOfThePolePointInDegrees",1161}, + {"longitudeOfThePolePointInDegrees",1162}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 527 "../tests/keys" {"cloudsTitle4Trend3",522}, {""}, {""}, -#line 1975 "../tests/keys" - {"section_2",1970}, + {"section_2",1971}, {""}, {""}, {""}, -#line 338 "../tests/keys" {"beginDayTrend4",333}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1152 "../tests/keys" - {"longitudeOfLastGridPointInDegrees",1147}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 178 "../tests/keys" {"NC1",173}, {""}, {""}, {""}, -#line 1145 "../tests/keys" - {"longitudeOfCentralPointInClusterDomain",1140}, -#line 1925 "../tests/keys" - {"section2Padding",1920}, + {"longitudeOfCentralPointInClusterDomain",1141}, + {"section2Padding",1922}, {""}, {""}, {""}, {""}, -#line 780 "../tests/keys" {"experimentVersionNumberOfAnalysis",775}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1786 "../tests/keys" - {"runwayDepositState3",1781}, + {"runwayDepositState3",1783}, {""}, {""}, {""}, {""}, {""}, -#line 422 "../tests/keys" {"checkInternalVersion",417}, {""}, -#line 1964 "../tests/keys" - {"section_02",1959}, + {"section_02",1960}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 93 "../tests/keys" {"II",88}, - {""}, {""}, {""}, {""}, -#line 798 "../tests/keys" + {"marsKeywords1",1190}, + {""}, {""}, {""}, {"extractDateTimeEnd",793}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2128 "../tests/keys" - {"timeCoordinateDefinition",2123}, + {"timeCoordinateDefinition",2124}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 590 "../tests/keys" {"coordinateFlag1",585}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 739 "../tests/keys" {"endOfHeadersMarker",734}, {""}, {""}, {""}, {""}, {""}, -#line 2308 "../tests/keys" - {"windGustTrend1",2303}, + {"windGustTrend1",2304}, {""}, {""}, {""}, {""}, -#line 522 "../tests/keys" {"cloudsTitle3Trend3",517}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 513 "../tests/keys" + {""}, {""}, {""}, {""}, + {"latitudeOfFirstGridPoint",1040}, + {""}, {"cloudsTitle1Trend4",508}, {""}, -#line 343 "../tests/keys" {"beginMinuteTrend1",338}, {""}, {""}, -#line 256 "../tests/keys" {"Total_Number_Members_Used",251}, {""}, {""}, {""}, {""}, -#line 528 "../tests/keys" {"cloudsTitle4Trend4",523}, -#line 1318 "../tests/keys" - {"northWestLongitudeOfLPOArea",1313}, + {"northWestLongitudeOfLPOArea",1314}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 965 "../tests/keys" {"inputOverriddenReferenceValues",960}, -#line 578 "../tests/keys" {"coordinate1End",573}, {""}, {""}, {""}, {""}, -#line 2306 "../tests/keys" - {"windDirectionTrend4",2301}, -#line 1246 "../tests/keys" - {"meanRVR3",1241}, + {"windDirectionTrend4",2302}, + {"meanRVR3",1242}, {""}, {""}, {""}, {""}, -#line 1870 "../tests/keys" - {"scaledValueOfMajorAxisOfOblateSpheroidEarth",1865}, + {"scaledValueOfMajorAxisOfOblateSpheroidEarth",1867}, {""}, {""}, {""}, -#line 179 "../tests/keys" {"NC2",174}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1327 "../tests/keys" - {"numberInMixedCoordinateDefinition",1322}, -#line 564 "../tests/keys" + {""}, {""}, {""}, {""}, + {"longitudeOfLastGridPointInDegrees",1148}, + {""}, {""}, {""}, {""}, {""}, + {"numberInMixedCoordinateDefinition",1323}, {"conceptsMasterDir",559}, {""}, {""}, {""}, {""}, -#line 1396 "../tests/keys" - {"numberOfOctectsForNumberOfPoints",1391}, + {"numberOfOctectsForNumberOfPoints",1392}, {""}, {""}, {""}, {""}, -#line 1808 "../tests/keys" - {"runwayExtentOfContaminationState1",1803}, + {"runwayExtentOfContaminationState1",1805}, {""}, {""}, {""}, -#line 1804 "../tests/keys" - {"runwayExtentOfContaminationCodeState1",1799}, + {"runwayExtentOfContaminationCodeState1",1801}, {""}, -#line 1063 "../tests/keys" - {"latitudeOfTheSouthernPoleOfProjection",1058}, + {"latitudeOfTheSouthernPoleOfProjection",1059}, {""}, {""}, -#line 796 "../tests/keys" {"extractDateTimeDayRank",791}, -#line 1126 "../tests/keys" - {"localLongitude2",1121}, + {"localLongitude2",1122}, {""}, -#line 344 "../tests/keys" {"beginMinuteTrend2",339}, -#line 255 "../tests/keys" {"Total_Number_Members_Possible",250}, {""}, -#line 1167 "../tests/keys" - {"longitudeOfTheSouthernPoleOfProjection",1162}, + {"longitudeOfTheSouthernPoleOfProjection",1163}, {""}, {""}, {""}, {""}, -#line 1163 "../tests/keys" - {"longitudeOfTangencyPoint",1158}, + {"longitudeOfTangencyPoint",1159}, {""}, {""}, {""}, {""}, -#line 1180 "../tests/keys" - {"mBasicAngle",1175}, + {"mBasicAngle",1176}, {""}, {""}, {""}, {""}, {""}, -#line 639 "../tests/keys" {"dateOfModelVersion",634}, -#line 1484 "../tests/keys" - {"offsetSection6",1479}, + {"offsetSection6",1481}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2135 "../tests/keys" - {"timeOfModelVersion",2130}, + {"timeOfModelVersion",2131}, {""}, {""}, {""}, -#line 1862 "../tests/keys" - {"scaledValueOfEarthMajorAxis",1857}, + {"scaledValueOfEarthMajorAxis",1859}, {""}, {""}, -#line 2348 "../tests/keys" - {"yearOfModelVersion",2343}, + {"yearOfModelVersion",2344}, {""}, -#line 1863 "../tests/keys" - {"scaledValueOfEarthMinorAxis",1858}, + {"scaledValueOfEarthMinorAxis",1860}, {""}, {""}, {""}, {""}, -#line 1760 "../tests/keys" - {"reservedSection3",1755}, + {"reservedSection3",1757}, {""}, {""}, {""}, {""}, -#line 2143 "../tests/keys" - {"totalAerosolBinsNumbers",2138}, + {"totalAerosolBinsNumbers",2139}, {""}, {""}, {""}, -#line 523 "../tests/keys" {"cloudsTitle3Trend4",518}, -#line 2309 "../tests/keys" - {"windGustTrend2",2304}, + {"windGustTrend2",2305}, {""}, -#line 1809 "../tests/keys" - {"runwayExtentOfContaminationState2",1804}, + {"runwayExtentOfContaminationState2",1806}, {""}, {""}, {""}, -#line 1805 "../tests/keys" - {"runwayExtentOfContaminationCodeState2",1800}, -#line 1761 "../tests/keys" - {"reservedSection4",1756}, + {"runwayExtentOfContaminationCodeState2",1802}, + {"reservedSection4",1758}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1218 "../tests/keys" - {"matchAerosolBinNumber",1213}, + {"matchAerosolBinNumber",1214}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2258 "../tests/keys" - {"variationOfVisibilityDirectionTrend3",2253}, + {"variationOfVisibilityDirectionTrend3",2254}, {""}, {""}, {""}, {""}, {""}, -#line 429 "../tests/keys" {"cloudsAbbreviation1",424}, -#line 254 "../tests/keys" {"Total_Number_Members_Missing",249}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 96 "../tests/keys" {"ITERATOR",91}, {""}, {""}, {""}, -#line 1099 "../tests/keys" - {"listMembersUsed2",1094}, + {"listMembersUsed2",1095}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 263 "../tests/keys" {"WRAP",258}, {""}, {""}, {""}, {""}, {""}, -#line 1787 "../tests/keys" - {"runwayDepositState4",1782}, -#line 1788 "../tests/keys" - {"runwayDepthOfDepositCodeState1",1783}, + {"runwayDepositState4",1784}, + {"runwayDepthOfDepositCodeState1",1785}, {""}, {""}, {""}, {""}, {""}, -#line 1932 "../tests/keys" - {"section3Padding",1927}, + {"section3Padding",1928}, {""}, {""}, {""}, {""}, {""}, -#line 1135 "../tests/keys" - {"localUsePresent",1130}, + {"localUsePresent",1131}, {""}, -#line 1061 "../tests/keys" - {"latitudeOfThePolePoint",1056}, + {"latitudeOfThePolePoint",1057}, {""}, {""}, -#line 1021 "../tests/keys" - {"julianForecastDay",1016}, + {"julianForecastDay",1017}, {""}, {""}, {""}, {""}, -#line 2301 "../tests/keys" - {"widthOfWidths",2296}, + {"widthOfWidths",2297}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 931 "../tests/keys" {"hourOfModelVersion",926}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 734 "../tests/keys" {"endMonthTrend1",729}, -#line 1591 "../tests/keys" - {"padding_local_7_1",1586}, + {"padding_local_7_1",1588}, {""}, {""}, -#line 1725 "../tests/keys" - {"realPartOf00",1720}, + {"realPartOf00",1722}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1901 "../tests/keys" - {"secondOrderValuesDifferentWidths",1896}, + {"secondOrderValuesDifferentWidths",1898}, {""}, {""}, {""}, -#line 531 "../tests/keys" {"clusterMember10",526}, -#line 1789 "../tests/keys" - {"runwayDepthOfDepositCodeState2",1784}, + {"runwayDepthOfDepositCodeState2",1786}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2273 "../tests/keys" - {"versionNumberOfExperimentalSuite",2268}, + {"versionNumberOfExperimentalSuite",2269}, {""}, -#line 168 "../tests/keys" {"Model_Additional_Information",163}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2259 "../tests/keys" - {"variationOfVisibilityDirectionTrend4",2254}, -#line 1247 "../tests/keys" - {"meanRVR4",1242}, + {"variationOfVisibilityDirectionTrend4",2255}, + {"meanRVR4",1243}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 434 "../tests/keys" {"cloudsAbbreviation2",429}, {""}, {""}, {""}, -#line 1380 "../tests/keys" - {"numberOfGridUsed",1375}, + {"numberOfGridUsed",1376}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 489 "../tests/keys" {"cloudsCode1",484}, {""}, -#line 2326 "../tests/keys" - {"windVariableDirectionTrend3",2321}, + {"windVariableDirectionTrend3",2322}, {""}, -#line 1428 "../tests/keys" - {"numberOfStepsUsedForClustering",1423}, + {"numberOfStepsUsedForClustering",1424}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1847 "../tests/keys" - {"scaleFactorOfMinorAxisOfOblateSpheroidEarth",1842}, + {"scaleFactorOfMinorAxisOfOblateSpheroidEarth",1844}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2289 "../tests/keys" - {"visibilityTrend2",2284}, + {"visibilityTrend2",2285}, {""}, {""}, {""}, {""}, {""}, -#line 1937 "../tests/keys" - {"section4Padding",1932}, - {""}, {""}, {""}, {""}, -#line 1435 "../tests/keys" - {"numberOfUsedSpatialTiles",1430}, + {"section4Padding",1933}, + {""}, {""}, + {"pentagonalResolutionParameterK",1619}, + {""}, + {"numberOfUsedSpatialTiles",1431}, {""}, {""}, -#line 397 "../tests/keys" {"centralClusterDefinition",392}, {""}, {""}, -#line 333 "../tests/keys" {"baseTimeOfThisLeg",328}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1902 "../tests/keys" - {"secondaryBitMap",1897}, + {"secondaryBitMap",1899}, {""}, {""}, {""}, -#line 331 "../tests/keys" {"baseDateOfThisLeg",326}, -#line 1340 "../tests/keys" - {"numberOfBytesPerInteger",1335}, + {"numberOfBytesPerInteger",1336}, {""}, -#line 729 "../tests/keys" {"endMark",724}, {""}, {""}, {""}, {""}, {""}, -#line 345 "../tests/keys" {"beginMinuteTrend3",340}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1232 "../tests/keys" - {"md5Section1",1227}, + {"md5Section1",1228}, {""}, {""}, -#line 735 "../tests/keys" {"endMonthTrend2",730}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2107 "../tests/keys" - {"theHindcastMarsStream",2102}, + {"theHindcastMarsStream",2103}, {""}, {""}, -#line 1630 "../tests/keys" - {"physicalFlag1",1625}, + {"physicalFlag1",1627}, {""}, {""}, {""}, {""}, -#line 731 "../tests/keys" {"endMinuteTrend2",726}, {""}, {""}, {""}, -#line 674 "../tests/keys" {"diffInHours",669}, {""}, {""}, -#line 140 "../tests/keys" {"Local_Number_Members_Used",135}, - {""}, {""}, {""}, {""}, {""}, -#line 955 "../tests/keys" - {"indexedStorageInternalNodeK",950}, - {""}, {""}, {""}, {""}, -#line 2102 "../tests/keys" - {"tempPressureUnits",2097}, - {""}, {""}, {""}, -#line 2272 "../tests/keys" - {"versionNumOfSharedHeaderMessageFormat",2267}, - {""}, -#line 1810 "../tests/keys" - {"runwayExtentOfContaminationState3",1805}, - {""}, {""}, {""}, -#line 1806 "../tests/keys" - {"runwayExtentOfContaminationCodeState3",1801}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 533 "../tests/keys" + {"tempPressureUnits",2098}, + {""}, {""}, {""}, + {"versionNumOfSharedHeaderMessageFormat",2268}, + {""}, + {"runwayExtentOfContaminationState3",1807}, + {""}, {""}, {""}, + {"runwayExtentOfContaminationCodeState3",1803}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {"clusterMember3",528}, {""}, -#line 664 "../tests/keys" {"definitionFilesVersion",659}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1194 "../tests/keys" - {"marsKeywords1",1189}, - {""}, {""}, -#line 136 "../tests/keys" + {""}, {""}, {""}, {""}, {"Local_Number_Members_Possible",131}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1976 "../tests/keys" - {"section_3",1971}, + {"section_3",1972}, {""}, {""}, -#line 1417 "../tests/keys" - {"numberOfRadarSitesUsed",1412}, + {"numberOfRadarSitesUsed",1413}, {""}, {""}, {""}, {""}, {""}, -#line 1855 "../tests/keys" - {"scaleFactorOfUpperLimit",1850}, + {"scaleFactorOfUpperLimit",1852}, {""}, {""}, {""}, {""}, {""}, -#line 1383 "../tests/keys" - {"numberOfHorizontalPoints",1378}, + {"numberOfHorizontalPoints",1379}, {""}, {""}, -#line 346 "../tests/keys" {"beginMinuteTrend4",341}, {""}, -#line 573 "../tests/keys" {"coordAveraging0",568}, {""}, {""}, -#line 2157 "../tests/keys" - {"totalNumberOfValuesInUnpackedSubset",2152}, + {"totalNumberOfValuesInUnpackedSubset",2153}, {""}, {""}, {""}, {""}, -#line 582 "../tests/keys" {"coordinate2Flag",577}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1394 "../tests/keys" - {"numberOfModeOfDistribution",1389}, + {"numberOfModeOfDistribution",1390}, {""}, {""}, -#line 169 "../tests/keys" {"Model_Identifier",164}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1631 "../tests/keys" - {"physicalFlag2",1626}, + {"physicalFlag2",1628}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1965 "../tests/keys" - {"section_03",1960}, + {"section_03",1961}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1811 "../tests/keys" - {"runwayExtentOfContaminationState4",1806}, + {"runwayExtentOfContaminationState4",1808}, {""}, {""}, {""}, -#line 1807 "../tests/keys" - {"runwayExtentOfContaminationCodeState4",1802}, + {"runwayExtentOfContaminationCodeState4",1804}, {""}, {""}, {""}, -#line 1816 "../tests/keys" - {"runwayFrictionCoefficientCodeState1",1811}, + {"runwayFrictionCoefficientCodeState1",1813}, {""}, -#line 1790 "../tests/keys" - {"runwayDepthOfDepositCodeState3",1785}, -#line 132 "../tests/keys" + {"runwayDepthOfDepositCodeState3",1787}, {"Local_Number_Members_Missing",127}, {""}, {""}, {""}, {""}, -#line 1472 "../tests/keys" - {"offsetFreeFormData",1467}, -#line 2327 "../tests/keys" - {"windVariableDirectionTrend4",2322}, + {"offsetFreeFormData",1469}, + {"windVariableDirectionTrend4",2323}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 732 "../tests/keys" {"endMinuteTrend3",727}, - {""}, {""}, {""}, -#line 2183 "../tests/keys" - {"typeOfIntervalForFirstAndSecondSize",2178}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1871 "../tests/keys" - {"scaledValueOfMinorAxisOfOblateSpheroidEarth",1866}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"scaledValueOfMinorAxisOfOblateSpheroidEarth",1868}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1479 "../tests/keys" - {"offsetSection11",1474}, + {"offsetSection11",1476}, {""}, {""}, -#line 1817 "../tests/keys" - {"runwayFrictionCoefficientCodeState2",1812}, + {"runwayFrictionCoefficientCodeState2",1814}, {""}, {""}, {""}, {""}, -#line 951 "../tests/keys" {"implementationDateOfModelCycle",946}, {""}, {""}, {""}, -#line 219 "../tests/keys" {"RENAME",214}, -#line 1958 "../tests/keys" - {"section9UniqueIdentifier",1953}, + {"section9UniqueIdentifier",1954}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1474 "../tests/keys" - {"offsetFromReferenceOfFirstTime",1469}, + {"offsetFromReferenceOfFirstTime",1471}, {""}, {""}, {""}, -#line 1412 "../tests/keys" - {"numberOfPointsAlongYAxis",1407}, + {"numberOfPointsAlongYAxis",1408}, {""}, -#line 554 "../tests/keys" {"commonBlock",549}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 2184 "../tests/keys" - {"typeOfIntervalForFirstAndSecondWavelength",2179}, - {""}, {""}, {""}, {""}, -#line 638 "../tests/keys" + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {"dateOfIceFieldUsed",633}, {""}, {""}, {""}, -#line 246 "../tests/keys" {"Threshold_Or_Distribution_0_no_1_yes",241}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2198 "../tests/keys" - {"typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing",2193}, + {"typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing",2194}, {""}, {""}, -#line 2211 "../tests/keys" - {"typicalYearOfCentury",2206}, -#line 1791 "../tests/keys" - {"runwayDepthOfDepositCodeState4",1786}, + {"typicalYearOfCentury",2207}, + {"runwayDepthOfDepositCodeState4",1788}, {""}, {""}, {""}, {""}, -#line 534 "../tests/keys" {"clusterMember4",529}, {""}, -#line 217 "../tests/keys" {"P_TAVG",212}, -#line 273 "../tests/keys" {"XpInGridLengths",268}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 537 "../tests/keys" {"clusterMember7",532}, {""}, -#line 2310 "../tests/keys" - {"windGustTrend3",2305}, -#line 1623 "../tests/keys" - {"pentagonalResolutionParameterM",1618}, + {"windGustTrend3",2306}, + {"pentagonalResolutionParameterM",1620}, {""}, {""}, {""}, {""}, -#line 982 "../tests/keys" {"isCavok",977}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 293 "../tests/keys" + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"typeOfIntervalForFirstAndSecondSize",2179}, {"accuracyMultipliedByFactor",288}, {""}, {""}, {""}, -#line 1977 "../tests/keys" - {"section_4",1972}, + {"section_4",1973}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1980 "../tests/keys" - {"section_7",1975}, -#line 31 "../tests/keys" + {"section_7",1976}, {"Date_E2",26}, -#line 1617 "../tests/keys" - {"pastTendencyRVR2",1612}, + {"pastTendencyRVR2",1614}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1879 "../tests/keys" - {"scaledValueOfUpperLimit",1874}, + {"scaledValueOfUpperLimit",1876}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1780 "../tests/keys" - {"runwayDepositCodeState1",1775}, - {""}, {""}, -#line 354 "../tests/keys" - {"beginYearTrend4",349}, - {""}, -#line 413 "../tests/keys" + {"runwayDepositCodeState1",1777}, + {""}, {""}, {""}, {""}, {"changeIndicatorTrend1",408}, {""}, {""}, -#line 499 "../tests/keys" {"cloudsCode3",494}, -#line 591 "../tests/keys" {"coordinateFlag2",586}, {""}, -#line 1966 "../tests/keys" - {"section_04",1961}, + {"section_04",1962}, + {""}, {""}, {""}, + {"md5Section10",1229}, + {""}, {""}, {""}, {""}, {""}, + {"typeOfIntervalForFirstAndSecondWavelength",2180}, {""}, {""}, {""}, -#line 1233 "../tests/keys" - {"md5Section10",1228}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 504 "../tests/keys" {"cloudsCode4",499}, {""}, {""}, {""}, {""}, {""}, -#line 1969 "../tests/keys" - {"section_07",1964}, + {"section_07",1965}, {""}, {""}, -#line 1158 "../tests/keys" - {"longitudeOfSouthernPoleInDegrees",1153}, + {"longitudeOfSouthernPoleInDegrees",1154}, {""}, {""}, {""}, -#line 1455 "../tests/keys" - {"octetAtWichPackedDataBegins",1450}, + {"octetAtWichPackedDataBegins",1452}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1883 "../tests/keys" - {"scanningMode4",1878}, + {"scanningMode4",1880}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1622 "../tests/keys" - {"pentagonalResolutionParameterK",1617}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"scanningMode7",1883}, {""}, {""}, {""}, {""}, {""}, -#line 1886 "../tests/keys" - {"scanningMode7",1881}, - {""}, {""}, {""}, {""}, {""}, -#line 414 "../tests/keys" {"changeIndicatorTrend2",409}, {""}, {""}, -#line 1235 "../tests/keys" - {"md5Section3",1230}, + {"md5Section3",1231}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2293 "../tests/keys" - {"weightAppliedToClimateMonth1",2288}, + {"weightAppliedToClimateMonth1",2289}, {""}, {""}, -#line 1536 "../tests/keys" - {"padding_grid90_1",1531}, + {"padding_grid90_1",1533}, {""}, -#line 1928 "../tests/keys" - {"section2Used",1923}, + {"section2Used",1925}, {""}, {""}, {""}, {""}, -#line 1236 "../tests/keys" - {"md5Section4",1231}, + {"md5Section4",1232}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2288 "../tests/keys" - {"visibilityTrend1",2283}, -#line 439 "../tests/keys" + {"visibilityTrend1",2284}, {"cloudsAbbreviation3",434}, {""}, {""}, -#line 1039 "../tests/keys" - {"latitudeLastInDegrees",1034}, + {"latitudeLastInDegrees",1035}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1708 "../tests/keys" - {"radiusOfTheEarth",1703}, - {""}, {""}, {""}, {""}, -#line 1475 "../tests/keys" - {"offsetICEFieldsUsed",1470}, + {"radiusOfTheEarth",1705}, + {""}, + {"beginYearTrend4",349}, + {""}, {""}, + {"offsetICEFieldsUsed",1472}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 118 "../tests/keys" {"Latin1InDegrees",113}, {""}, {""}, {""}, {""}, -#line 1781 "../tests/keys" - {"runwayDepositCodeState2",1776}, + {"runwayDepositCodeState2",1778}, {""}, -#line 1818 "../tests/keys" - {"runwayFrictionCoefficientCodeState3",1813}, + {"runwayFrictionCoefficientCodeState3",1815}, {""}, -#line 1050 "../tests/keys" - {"latitudeOfReferencePoint",1045}, + {"latitudeOfReferencePoint",1046}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 536 "../tests/keys" {"clusterMember6",531}, -#line 1060 "../tests/keys" - {"latitudeOfThePoleOfStretching",1055}, + {"latitudeOfThePoleOfStretching",1056}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 50 "../tests/keys" {"ECMWF",45}, {""}, {""}, {""}, -#line 377 "../tests/keys" {"bufrHeaderSubCentre",372}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 736 "../tests/keys" {"endMonthTrend3",731}, {""}, {""}, -#line 2311 "../tests/keys" - {"windGustTrend4",2306}, + {"windGustTrend4",2307}, {""}, {""}, {""}, {""}, -#line 1979 "../tests/keys" - {"section_6",1974}, + {"section_6",1975}, {""}, {""}, {""}, -#line 120 "../tests/keys" {"Latin2InDegrees",115}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2139 "../tests/keys" - {"timeUnitFlag",2134}, + {"timeUnitFlag",2135}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1592 "../tests/keys" - {"padding_sec1_loc",1587}, - {""}, {""}, {""}, {""}, {""}, -#line 342 "../tests/keys" - {"beginHourTrend4",337}, - {""}, {""}, {""}, {""}, -#line 1651 "../tests/keys" - {"presentWeather1Present",1646}, + {"padding_sec1_loc",1589}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"ceilingAndVisibilityOK",387}, + {""}, {""}, {""}, + {"presentWeather1Present",1648}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1968 "../tests/keys" - {"section_06",1963}, + {"section_06",1964}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1468 "../tests/keys" - {"offsetBeforePL",1463}, + {"offsetBeforePL",1465}, {""}, -#line 1819 "../tests/keys" - {"runwayFrictionCoefficientCodeState4",1814}, + {"runwayFrictionCoefficientCodeState4",1816}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1102 "../tests/keys" - {"listOfContributingSpectralBands",1097}, + {"listOfContributingSpectralBands",1098}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1885 "../tests/keys" - {"scanningMode6",1880}, -#line 201 "../tests/keys" + {"scanningMode6",1882}, {"Number_Combination_Ensembles_1_none",196}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1700 "../tests/keys" - {"qualityValueAssociatedWithParameter",1695}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1621 "../tests/keys" - {"pentagonalResolutionParameterJ",1616}, + {"qualityValueAssociatedWithParameter",1697}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 1078 "../tests/keys" - {"lengthOf4DvarWindow",1073}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"lengthOf4DvarWindow",1074}, {""}, {""}, -#line 274 "../tests/keys" {"Y1",269}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 579 "../tests/keys" {"coordinate1Flag",574}, - {""}, {""}, {""}, {""}, {""}, -#line 1052 "../tests/keys" - {"latitudeOfSouthEastCornerOfArea",1047}, + {""}, {""}, + {"beginHourTrend4",337}, + {""}, {""}, + {"latitudeOfSouthEastCornerOfArea",1048}, {""}, {""}, {""}, -#line 587 "../tests/keys" {"coordinate4Flag",582}, {""}, -#line 444 "../tests/keys" {"cloudsAbbreviation4",439}, {""}, {""}, {""}, -#line 1632 "../tests/keys" - {"physicalMeaningOfVerticalCoordinate",1627}, + {"physicalMeaningOfVerticalCoordinate",1629}, {""}, {""}, {""}, -#line 415 "../tests/keys" {"changeIndicatorTrend3",410}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1335 "../tests/keys" - {"numberOfBitsForScaledGroupLengths",1330}, + {"numberOfBitsForScaledGroupLengths",1331}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1710 "../tests/keys" - {"rangeBinSpacing",1705}, + {"rangeBinSpacing",1707}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1955 "../tests/keys" - {"section8UniqueIdentifier",1950}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1273 "../tests/keys" - {"missingValueManagementUsed",1268}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1100 "../tests/keys" - {"listMembersUsed3",1095}, -#line 737 "../tests/keys" + {"missingValueManagementUsed",1269}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"listMembersUsed3",1096}, {"endMonthTrend4",732}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1101 "../tests/keys" - {"listMembersUsed4",1096}, + {"listMembersUsed4",1097}, {""}, {""}, -#line 224 "../tests/keys" {"SOH",219}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 584 "../tests/keys" + {"pentagonalResolutionParameterJ",1618}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"coordinate3Flag",579}, {""}, {""}, {""}, {""}, {""}, -#line 276 "../tests/keys" {"Y2",271}, {""}, {""}, -#line 182 "../tests/keys" {"NH",177}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 416 "../tests/keys" {"changeIndicatorTrend4",411}, -#line 279 "../tests/keys" {"YRInMetres",274}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1439 "../tests/keys" - {"numberOfVGridUsed",1434}, + {"numberOfVGridUsed",1435}, {""}, {""}, {""}, -#line 1033 "../tests/keys" - {"laplacianScalingFactorUnset",1028}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1616 "../tests/keys" - {"pastTendencyRVR1",1611}, + {"laplacianScalingFactorUnset",1029}, + {""}, + {"section8UniqueIdentifier",1951}, + {""}, {""}, {""}, {""}, {""}, + {"pastTendencyRVR1",1613}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2210 "../tests/keys" - {"typicalYear2",2205}, + {"typicalYear2",2206}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 32 "../tests/keys" {"Date_E3",27}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1469 "../tests/keys" - {"offsetBeforePV",1464}, + {"offsetBeforePV",1466}, {""}, {""}, {""}, {""}, -#line 2290 "../tests/keys" - {"visibilityTrend3",2285}, + {"visibilityTrend3",2286}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2291 "../tests/keys" - {"visibilityTrend4",2286}, + {"visibilityTrend4",2287}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 351 "../tests/keys" {"beginYearTrend1",346}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1463 "../tests/keys" - {"offsetBSection5",1458}, + {"offsetBSection5",1460}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2132 "../tests/keys" - {"timeIncrementBetweenSuccessiveFields",2127}, + {"timeIncrementBetweenSuccessiveFields",2128}, {""}, {""}, {""}, {""}, {""}, -#line 1416 "../tests/keys" - {"numberOfPressureLevelsUsedForClustering",1411}, + {"numberOfPressureLevelsUsedForClustering",1412}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 218 "../tests/keys" {"Product_Identifier",213}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 778 "../tests/keys" {"experimentVersionNumber1",773}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1796 "../tests/keys" - {"runwayDesignatorRVR1",1791}, + {"runwayDesignatorRVR1",1793}, {""}, {""}, -#line 1411 "../tests/keys" - {"numberOfPointsAlongXAxisInCouplingArea",1406}, + {"numberOfPointsAlongXAxisInCouplingArea",1407}, {""}, -#line 85 "../tests/keys" {"HDF5",80}, -#line 1095 "../tests/keys" - {"listMembersMissing2",1090}, + {"listMembersMissing2",1091}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1782 "../tests/keys" - {"runwayDepositCodeState3",1777}, + {"runwayDepositCodeState3",1779}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 979 "../tests/keys" {"intervalBetweenTimes",974}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 392 "../tests/keys" - {"ceilingAndVisibilityOK",387}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1155 "../tests/keys" - {"longitudeOfReferencePointInDegrees",1150}, + {""}, {""}, + {"longitudeOfReferencePointInDegrees",1151}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"skipExtraKeyAttributes",2009}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 1990 "../tests/keys" - {"setToMissingIfOutOfRange",1985}, -#line 286 "../tests/keys" + {""}, {""}, + {"setToMissingIfOutOfRange",1986}, {"ZLMULT",281}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 33 "../tests/keys" {"Date_E4",28}, {""}, {""}, {""}, -#line 2260 "../tests/keys" - {"variationOfVisibilityTrend1",2255}, + {"variationOfVisibilityTrend1",2256}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 610 "../tests/keys" {"countOfICEFieldsUsed",605}, {""}, {""}, -#line 779 "../tests/keys" {"experimentVersionNumber2",774}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1797 "../tests/keys" - {"runwayDesignatorRVR2",1792}, -#line 339 "../tests/keys" + {"runwayDesignatorRVR2",1794}, {"beginHourTrend1",334}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 29 "../tests/keys" {"CLNOMA",24}, -#line 1974 "../tests/keys" - {"section_11",1969}, + {"section_11",1970}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1824 "../tests/keys" - {"runwaySideCodeState1",1819}, + {"runwaySideCodeState1",1821}, {""}, -#line 1661 "../tests/keys" - {"presentWeather3Present",1656}, + {"presentWeather3Present",1658}, {""}, {""}, {""}, {""}, -#line 2029 "../tests/keys" - {"spacingOfBinsAlongRadials",2024}, + {"spacingOfBinsAlongRadials",2025}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 813 "../tests/keys" {"extractDateTimeYearRank",808}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 257 "../tests/keys" {"UseEcmfConventions",252}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 574 "../tests/keys" {"coordAveraging1",569}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2261 "../tests/keys" - {"variationOfVisibilityTrend2",2256}, + {"variationOfVisibilityTrend2",2257}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1783 "../tests/keys" - {"runwayDepositCodeState4",1778}, + {"runwayDepositCodeState4",1780}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1656 "../tests/keys" - {"presentWeather2Present",1651}, + {"presentWeather2Present",1653}, {""}, -#line 348 "../tests/keys" {"beginMonthTrend2",343}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1825 "../tests/keys" - {"runwaySideCodeState2",1820}, + {"runwaySideCodeState2",1822}, {""}, {""}, -#line 1618 "../tests/keys" - {"pastTendencyRVR3",1613}, + {"pastTendencyRVR3",1615}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1619 "../tests/keys" - {"pastTendencyRVR4",1614}, + {"pastTendencyRVR4",1616}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1437 "../tests/keys" - {"numberOfUsefulPointsAlongXAxis",1432}, + {"numberOfUsefulPointsAlongXAxis",1433}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 495 "../tests/keys" {"cloudsCode2Trend1",490}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 393 "../tests/keys" {"ceilingAndVisibilityOKTrend1",388}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1338 "../tests/keys" - {"numberOfBytesInLocalDefinition",1333}, + {"numberOfBytesInLocalDefinition",1334}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 790 "../tests/keys" {"extractAreaLatitudeRank",785}, {""}, {""}, {""}, -#line 809 "../tests/keys" {"extractDateTimeSecondRank",804}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 496 "../tests/keys" {"cloudsCode2Trend2",491}, {""}, {""}, -#line 357 "../tests/keys" {"biFourierPackingModeForAxes",352}, {""}, {""}, {""}, {""}, -#line 394 "../tests/keys" {"ceilingAndVisibilityOKTrend2",389}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 747 "../tests/keys" {"endYearTrend1",742}, - {""}, {""}, {""}, -#line 1045 "../tests/keys" - {"latitudeOfFirstGridPointInDegrees",1040}, -#line 1792 "../tests/keys" - {"runwayDepthOfDepositState1",1787}, + {""}, {""}, {""}, {""}, + {"runwayDepthOfDepositState1",1789}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 388 "../tests/keys" {"ccsdsBlockSize",383}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 243 "../tests/keys" {"TYPE_OF",238}, {""}, {""}, {""}, {""}, {""}, -#line 569 "../tests/keys" {"constantAntennaElevationAngle",564}, -#line 454 "../tests/keys" {"cloudsBase2",449}, {""}, {""}, {""}, {""}, {""}, -#line 206 "../tests/keys" {"Original_CodeTable_2_Version_Number",201}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 208 "../tests/keys" {"Original_Parameter_Identifier",203}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1584 "../tests/keys" - {"padding_loc9_1",1579}, + {"padding_loc9_1",1581}, {""}, -#line 1583 "../tests/keys" - {"padding_loc7_1",1578}, + {"padding_loc7_1",1580}, {""}, {""}, {""}, {""}, -#line 301 "../tests/keys" {"alternativeRowScanning",296}, {""}, {""}, {""}, {""}, {""}, -#line 244 "../tests/keys" {"TYPE_OR",239}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1419 "../tests/keys" - {"numberOfReforecastYearsInModelClimate",1414}, + {"numberOfReforecastYearsInModelClimate",1415}, {""}, {""}, {""}, {""}, -#line 748 "../tests/keys" {"endYearTrend2",743}, {""}, {""}, {""}, {""}, -#line 1793 "../tests/keys" - {"runwayDepthOfDepositState2",1788}, - {""}, {""}, -#line 2013 "../tests/keys" - {"skipExtraKeyAttributes",2008}, + {"runwayDepthOfDepositState2",1790}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"latitudeOfFirstGridPointInDegrees",1041}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1096 "../tests/keys" - {"listMembersMissing3",1091}, -#line 1464 "../tests/keys" - {"offsetBSection6",1459}, + {""}, {""}, {""}, {""}, + {"listMembersMissing3",1092}, + {"offsetBSection6",1461}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1586 "../tests/keys" - {"padding_local11_1",1581}, + {"padding_local11_1",1583}, {""}, {""}, {""}, {""}, -#line 1582 "../tests/keys" - {"padding_loc6_1",1577}, -#line 6 "../tests/keys" + {"padding_loc6_1",1579}, {"************_ENSEMBLE_**************",1}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 430 "../tests/keys" {"cloudsAbbreviation1Trend1",425}, {""}, {""}, -#line 2275 "../tests/keys" - {"versionNumberOfSuperblock",2270}, + {"versionNumberOfSuperblock",2271}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2084 "../tests/keys" - {"superblockExtensionAddress",2079}, + {"superblockExtensionAddress",2080}, {""}, {""}, {""}, -#line 1585 "../tests/keys" - {"padding_loc9_2",1580}, -#line 725 "../tests/keys" + {"padding_loc9_2",1582}, {"endHourTrend1",720}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 241 "../tests/keys" {"TYPE_FF",236}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 497 "../tests/keys" {"cloudsCode2Trend3",492}, -#line 352 "../tests/keys" {"beginYearTrend2",347}, {""}, -#line 435 "../tests/keys" {"cloudsAbbreviation2Trend1",430}, {""}, {""}, {""}, {""}, -#line 395 "../tests/keys" {"ceilingAndVisibilityOKTrend3",390}, {""}, -#line 1798 "../tests/keys" - {"runwayDesignatorRVR3",1793}, + {"runwayDesignatorRVR3",1795}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 161 "../tests/keys" {"Minute_E2",156}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 7 "../tests/keys" {"************_EXPERIMENT_************",2}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 431 "../tests/keys" {"cloudsAbbreviation1Trend2",426}, {""}, {""}, {""}, {""}, -#line 176 "../tests/keys" {"NB",171}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1393 "../tests/keys" - {"numberOfMissingValues",1388}, + {"numberOfMissingValues",1389}, {""}, {""}, -#line 1943 "../tests/keys" - {"section5UniqueIdentifier",1938}, + {"section5UniqueIdentifier",1939}, {""}, {""}, {""}, -#line 726 "../tests/keys" {"endHourTrend2",721}, -#line 242 "../tests/keys" {"TYPE_FX",237}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 803 "../tests/keys" {"extractDateTimeMinuteRank",798}, {""}, {""}, -#line 2262 "../tests/keys" - {"variationOfVisibilityTrend3",2257}, + {"variationOfVisibilityTrend3",2258}, {""}, {""}, -#line 806 "../tests/keys" {"extractDateTimeMonthRank",801}, {""}, {""}, {""}, -#line 347 "../tests/keys" {"beginMonthTrend1",342}, -#line 498 "../tests/keys" {"cloudsCode2Trend4",493}, {""}, -#line 823 "../tests/keys" {"extremeValuesRVR1",818}, {""}, {""}, {""}, {""}, {""}, -#line 396 "../tests/keys" {"ceilingAndVisibilityOKTrend4",391}, -#line 436 "../tests/keys" {"cloudsAbbreviation2Trend2",431}, -#line 1097 "../tests/keys" - {"listMembersMissing4",1092}, + {"listMembersMissing4",1093}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1473 "../tests/keys" - {"offsetFromOriginToInnerBound",1468}, + {"offsetFromOriginToInnerBound",1470}, {""}, {""}, -#line 51 "../tests/keys" {"ECMWF_s",46}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 475 "../tests/keys" {"cloudsBaseCoded2Trend1",470}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1826 "../tests/keys" - {"runwaySideCodeState3",1821}, + {"runwaySideCodeState3",1823}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 133 "../tests/keys" {"Local_Number_Members_Missing_E2",128}, -#line 353 "../tests/keys" {"beginYearTrend3",348}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 302 "../tests/keys" {"altitudeOfTheCameraFromTheEarthSCenterMeasuredInUnitsOfTheEarth",297}, -#line 248 "../tests/keys" {"Time_Range_One_E2",243}, {""}, {""}, {""}, {""}, -#line 824 "../tests/keys" {"extremeValuesRVR2",819}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 285 "../tests/keys" {"ZLBASE",280}, {""}, {""}, {""}, {""}, -#line 1062 "../tests/keys" - {"latitudeOfThePolePointInDegrees",1057}, + {"latitudeOfThePolePointInDegrees",1058}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 137 "../tests/keys" {"Local_Number_Members_Possible_E2",132}, {""}, {""}, {""}, {""}, -#line 474 "../tests/keys" {"cloudsBaseCoded2",469}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 476 "../tests/keys" {"cloudsBaseCoded2Trend2",471}, {""}, {""}, -#line 340 "../tests/keys" {"beginHourTrend2",335}, - {""}, {""}, {""}, {""}, {""}, -#line 2322 "../tests/keys" - {"windUnitsTrend4",2317}, - {""}, {""}, {""}, {""}, -#line 1986 "../tests/keys" - {"setBitsPerValue",1981}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"setBitsPerValue",1982}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 490 "../tests/keys" {"cloudsCode1Trend1",485}, {""}, -#line 1799 "../tests/keys" - {"runwayDesignatorRVR4",1794}, + {"runwayDesignatorRVR4",1796}, {""}, {""}, -#line 9 "../tests/keys" {"*********_EXTRA_DATA_***************",4}, {""}, {""}, {""}, {""}, -#line 505 "../tests/keys" {"cloudsCode4Trend1",500}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 934 "../tests/keys" {"hoursAfterReferenceTimeOfDataCutoff",929}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 440 "../tests/keys" {"cloudsAbbreviation3Trend1",435}, {""}, {""}, {""}, {""}, {""}, -#line 1601 "../tests/keys" - {"paramIdECMF",1596}, + {"paramIdECMF",1598}, {""}, -#line 575 "../tests/keys" {"coordAveraging2",570}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1534 "../tests/keys" - {"padding_grid50_1",1529}, + {"padding_grid50_1",1531}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 449 "../tests/keys" {"cloudsBase1",444}, {""}, {""}, {""}, {""}, -#line 491 "../tests/keys" {"cloudsCode1Trend2",486}, {""}, {""}, {""}, {""}, {""}, -#line 26 "../tests/keys" {"CCCC",21}, {""}, {""}, {""}, -#line 506 "../tests/keys" {"cloudsCode4Trend2",501}, {""}, -#line 1409 "../tests/keys" - {"numberOfPointsAlongTheYAxis",1404}, + {"numberOfPointsAlongTheYAxis",1405}, {""}, {""}, {""}, {""}, -#line 266 "../tests/keys" {"X1InGridLengths",261}, + {""}, {""}, {""}, {""}, {""}, + {"windUnitsTrend4",2318}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 2263 "../tests/keys" - {"variationOfVisibilityTrend4",2258}, + {""}, {""}, {""}, {""}, + {"variationOfVisibilityTrend4",2259}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 500 "../tests/keys" {"cloudsCode3Trend1",495}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1580 "../tests/keys" - {"padding_loc50_1",1575}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 125 "../tests/keys" + {""}, {""}, {""}, {""}, {"Less_Than_Or_To_Overall_Distribution",120}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 268 "../tests/keys" {"X2InGridLengths",263}, {""}, {""}, {""}, -#line 341 "../tests/keys" {"beginHourTrend3",336}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 445 "../tests/keys" {"cloudsAbbreviation4Trend1",440}, {""}, {""}, -#line 1430 "../tests/keys" - {"numberOfTensOfThousandsOfYearsOfOffset",1425}, + {"numberOfTensOfThousandsOfYearsOfOffset",1426}, {""}, {""}, -#line 441 "../tests/keys" {"cloudsAbbreviation3Trend2",436}, -#line 1827 "../tests/keys" - {"runwaySideCodeState4",1822}, + {"runwaySideCodeState4",1824}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 94 "../tests/keys" {"INBITS",89}, -#line 749 "../tests/keys" {"endYearTrend3",744}, {""}, {""}, {""}, {""}, -#line 1794 "../tests/keys" - {"runwayDepthOfDepositState3",1789}, + {"runwayDepthOfDepositState3",1791}, {""}, {""}, -#line 501 "../tests/keys" {"cloudsCode3Trend2",496}, {""}, {""}, -#line 1326 "../tests/keys" - {"numberInHorizontalCoordinates",1321}, + {"numberInHorizontalCoordinates",1322}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1581 "../tests/keys" - {"padding_loc5_1",1576}, {""}, {""}, {""}, {""}, -#line 134 "../tests/keys" {"Local_Number_Members_Missing_E3",129}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 249 "../tests/keys" {"Time_Range_One_E3",244}, {""}, -#line 576 "../tests/keys" {"coordAveraging3",571}, {""}, {""}, -#line 825 "../tests/keys" {"extremeValuesRVR3",820}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 138 "../tests/keys" + {"padding_loc50_1",1577}, + {""}, {""}, {"Local_Number_Members_Possible_E3",133}, {""}, {""}, {""}, -#line 70 "../tests/keys" {"FMULTE",65}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 477 "../tests/keys" {"cloudsBaseCoded2Trend3",472}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1462 "../tests/keys" - {"offsetBBitmap",1457}, + {"offsetBBitmap",1459}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 57 "../tests/keys" {"Ensemble_Identifier_E2",52}, {""}, {""}, {""}, -#line 446 "../tests/keys" {"cloudsAbbreviation4Trend2",441}, {""}, {""}, {""}, {""}, -#line 1587 "../tests/keys" - {"padding_local1_1",1582}, + {"padding_local1_1",1584}, {""}, {""}, {""}, -#line 1401 "../tests/keys" - {"numberOfParametersUsedForClustering",1396}, -#line 245 "../tests/keys" + {"numberOfParametersUsedForClustering",1397}, {"TYPE_PF",240}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1934 "../tests/keys" - {"section3UniqueIdentifier",1929}, + {"section3UniqueIdentifier",1930}, + {""}, + {"padding_loc5_1",1578}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 61 "../tests/keys" + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"Extra_Data_FreeFormat_0_none",56}, {""}, {""}, {""}, -#line 135 "../tests/keys" {"Local_Number_Members_Missing_E4",130}, {""}, {""}, {""}, -#line 349 "../tests/keys" {"beginMonthTrend3",344}, {""}, {""}, {""}, {""}, -#line 250 "../tests/keys" {"Time_Range_One_E4",245}, {""}, {""}, {""}, {""}, -#line 826 "../tests/keys" {"extremeValuesRVR4",821}, {""}, {""}, {""}, {""}, {""}, -#line 492 "../tests/keys" {"cloudsCode1Trend3",487}, -#line 350 "../tests/keys" {"beginMonthTrend4",345}, - {""}, {""}, -#line 162 "../tests/keys" + {"extractDateTimeHourRank",795}, + {""}, {"Minute_E3",157}, {""}, {""}, {""}, {""}, {""}, -#line 507 "../tests/keys" {"cloudsCode4Trend3",502}, {""}, {""}, {""}, {""}, {""}, -#line 139 "../tests/keys" {"Local_Number_Members_Possible_E4",134}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 478 "../tests/keys" {"cloudsBaseCoded2Trend4",473}, {""}, {""}, {""}, -#line 432 "../tests/keys" {"cloudsAbbreviation1Trend3",427}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 822 "../tests/keys" {"extremeCounterClockwiseWindDirection",817}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 727 "../tests/keys" {"endHourTrend3",722}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1588 "../tests/keys" - {"padding_local1_31",1583}, + {"padding_local1_31",1585}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 750 "../tests/keys" {"endYearTrend4",745}, {""}, {""}, {""}, {""}, -#line 1795 "../tests/keys" - {"runwayDepthOfDepositState4",1790}, + {"runwayDepthOfDepositState4",1792}, {""}, {""}, {""}, {""}, {""}, -#line 1939 "../tests/keys" - {"section4UniqueIdentifier",1934}, + {"section4UniqueIdentifier",1935}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 983 "../tests/keys" {"isCavokTrend1",978}, {""}, -#line 1951 "../tests/keys" - {"section7UniqueIdentifier",1946}, + {"section7UniqueIdentifier",1947}, {""}, {""}, {""}, {""}, -#line 437 "../tests/keys" {"cloudsAbbreviation2Trend3",432}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 220 "../tests/keys" {"RVR1_1",215}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 502 "../tests/keys" {"cloudsCode3Trend3",497}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 493 "../tests/keys" {"cloudsCode1Trend4",488}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 508 "../tests/keys" {"cloudsCode4Trend4",503}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 469 "../tests/keys" {"cloudsBaseCoded1",464}, {""}, {""}, {""}, {""}, {""}, -#line 1051 "../tests/keys" - {"latitudeOfReferencePointInDegrees",1046}, + {"latitudeOfReferencePointInDegrees",1047}, {""}, {""}, -#line 470 "../tests/keys" {"cloudsBaseCoded1Trend1",465}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1652 "../tests/keys" - {"presentWeather1PresentTrend1",1647}, + {"presentWeather1PresentTrend1",1649}, {""}, {""}, -#line 485 "../tests/keys" {"cloudsBaseCoded4Trend1",480}, {""}, {""}, {""}, {""}, -#line 221 "../tests/keys" {"RVR2_1",216}, {""}, {""}, -#line 459 "../tests/keys" {"cloudsBase3",454}, {""}, {""}, {""}, {""}, {""}, -#line 1643 "../tests/keys" - {"precisionOfTheUnpackedSubset",1638}, + {"precisionOfTheUnpackedSubset",1640}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 464 "../tests/keys" {"cloudsBase4",459}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1947 "../tests/keys" - {"section6UniqueIdentifier",1942}, + {"section6UniqueIdentifier",1943}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2319 "../tests/keys" - {"windUnitsTrend1",2314}, + {"windUnitsTrend1",2315}, {""}, -#line 58 "../tests/keys" {"Ensemble_Identifier_E3",53}, {""}, {""}, -#line 984 "../tests/keys" {"isCavokTrend2",979}, {""}, {""}, {""}, {""}, -#line 471 "../tests/keys" {"cloudsBaseCoded1Trend2",466}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1653 "../tests/keys" - {"presentWeather1PresentTrend2",1648}, + {"presentWeather1PresentTrend2",1650}, {""}, {""}, -#line 486 "../tests/keys" {"cloudsBaseCoded4Trend2",481}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 503 "../tests/keys" {"cloudsCode3Trend4",498}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 163 "../tests/keys" {"Minute_E4",158}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 389 "../tests/keys" {"ccsdsCompressionOptionsMask",384}, {""}, -#line 480 "../tests/keys" {"cloudsBaseCoded3Trend1",475}, {""}, {""}, -#line 433 "../tests/keys" {"cloudsAbbreviation1Trend4",428}, -#line 1590 "../tests/keys" - {"padding_local_35",1585}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 728 "../tests/keys" + {""}, {"endHourTrend4",723}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 59 "../tests/keys" {"Ensemble_Identifier_E4",54}, -#line 481 "../tests/keys" {"cloudsBaseCoded3Trend2",476}, -#line 66 "../tests/keys" {"ExtremeValuesRVR1",61}, {""}, -#line 438 "../tests/keys" {"cloudsAbbreviation2Trend4",433}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 442 "../tests/keys" {"cloudsAbbreviation3Trend3",437}, {""}, -#line 1589 "../tests/keys" - {"padding_local40_1",1584}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1494 "../tests/keys" - {"oneMinuteMeanMaximumRVR1",1489}, + {"padding_local40_1",1586}, + {""}, {""}, {""}, {""}, {""}, + {"padding_local_35",1587}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"oneMinuteMeanMaximumRVR1",1491}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 79 "../tests/keys" {"GRIBEditionNumber",74}, -#line 67 "../tests/keys" {"ExtremeValuesRVR2",62}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2235 "../tests/keys" - {"unusedBitsInBitmap",2230}, + {"unusedBitsInBitmap",2231}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 222 "../tests/keys" {"RVR3_1",217}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1466 "../tests/keys" - {"offsetBeforeBitmap",1461}, + {"offsetBeforeBitmap",1463}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 281 "../tests/keys" {"YearOfModelVersion",276}, {""}, -#line 1550 "../tests/keys" - {"padding_loc190_1",1545}, - {""}, {""}, {""}, {""}, {""}, -#line 800 "../tests/keys" - {"extractDateTimeHourRank",795}, + {"padding_loc190_1",1547}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 791 "../tests/keys" + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"extractAreaLongitudeRank",786}, {""}, -#line 447 "../tests/keys" {"cloudsAbbreviation4Trend3",442}, {""}, {""}, {""}, -#line 472 "../tests/keys" {"cloudsBaseCoded1Trend3",467}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1654 "../tests/keys" - {"presentWeather1PresentTrend3",1649}, + {"presentWeather1PresentTrend3",1651}, {""}, {""}, -#line 487 "../tests/keys" {"cloudsBaseCoded4Trend3",482}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1495 "../tests/keys" - {"oneMinuteMeanMaximumRVR2",1490}, + {"oneMinuteMeanMaximumRVR2",1492}, {""}, {""}, {""}, -#line 92 "../tests/keys" {"ICPLSIZE",87}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 238 "../tests/keys" {"TYPE_AN",233}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 223 "../tests/keys" {"RVR4_1",218}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 479 "../tests/keys" {"cloudsBaseCoded3",474}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 482 "../tests/keys" {"cloudsBaseCoded3Trend3",477}, -#line 239 "../tests/keys" {"TYPE_CF",234}, {""}, -#line 443 "../tests/keys" {"cloudsAbbreviation3Trend4",438}, {""}, {""}, {""}, -#line 473 "../tests/keys" {"cloudsBaseCoded1Trend4",468}, -#line 484 "../tests/keys" {"cloudsBaseCoded4",479}, {""}, {""}, {""}, {""}, {""}, -#line 1655 "../tests/keys" - {"presentWeather1PresentTrend4",1650}, + {"presentWeather1PresentTrend4",1652}, {""}, {""}, -#line 488 "../tests/keys" {"cloudsBaseCoded4Trend4",483}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 284 "../tests/keys" {"YpInGridLengths",279}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1034 "../tests/keys" - {"lastMonthUsedToBuildClimateMonth1",1029}, + {"lastMonthUsedToBuildClimateMonth1",1030}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 68 "../tests/keys" {"ExtremeValuesRVR3",63}, -#line 1535 "../tests/keys" - {"padding_grid5_1",1530}, + {"padding_grid5_1",1532}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 87 "../tests/keys" {"HourOfModelVersion",82}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1035 "../tests/keys" - {"lastMonthUsedToBuildClimateMonth2",1030}, + {"lastMonthUsedToBuildClimateMonth2",1031}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 483 "../tests/keys" {"cloudsBaseCoded3Trend4",478}, {""}, {""}, -#line 448 "../tests/keys" {"cloudsAbbreviation4Trend4",443}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1334 "../tests/keys" - {"numberOfBitsContainingEachPackedValue",1329}, -#line 1662 "../tests/keys" - {"presentWeather3PresentTrend1",1657}, + {"numberOfBitsContainingEachPackedValue",1330}, + {"presentWeather3PresentTrend1",1659}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 985 "../tests/keys" {"isCavokTrend3",980}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 69 "../tests/keys" {"ExtremeValuesRVR4",64}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1530 "../tests/keys" - {"padding_grid1_1",1525}, + {"padding_grid1_1",1527}, {""}, {""}, {""}, -#line 1593 "../tests/keys" - {"padding_sec2_1",1588}, + {"padding_sec2_1",1590}, {""}, {""}, -#line 216 "../tests/keys" {"P_TACC",211}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1556 "../tests/keys" - {"padding_loc20_1",1551}, + {"padding_loc20_1",1553}, {""}, {""}, {""}, {""}, {""}, -#line 1663 "../tests/keys" - {"presentWeather3PresentTrend2",1658}, + {"presentWeather3PresentTrend2",1660}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1339 "../tests/keys" - {"numberOfBytesOfFreeFormatData",1334}, + {"numberOfBytesOfFreeFormatData",1335}, {""}, -#line 24 "../tests/keys" {"BUFR",19}, {""}, {""}, -#line 1498 "../tests/keys" - {"oneMinuteMeanMinimumRVR1",1493}, + {"oneMinuteMeanMinimumRVR1",1495}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1568 "../tests/keys" - {"padding_loc29_1",1563}, + {"padding_loc29_1",1565}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1657 "../tests/keys" - {"presentWeather2PresentTrend1",1652}, + {"presentWeather2PresentTrend1",1654}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2088 "../tests/keys" - {"swapScanningY",2083}, + {"swapScanningY",2084}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1571 "../tests/keys" - {"padding_loc2_1",1566}, + {"padding_loc2_1",1568}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 91 "../tests/keys" {"ICEFieldsUsed",86}, {""}, -#line 1658 "../tests/keys" - {"presentWeather2PresentTrend2",1653}, + {"presentWeather2PresentTrend2",1655}, {""}, {""}, {""}, {""}, -#line 1594 "../tests/keys" - {"padding_sec2_2",1589}, + {"padding_sec2_2",1591}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 280 "../tests/keys" {"YY",275}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1499 "../tests/keys" - {"oneMinuteMeanMinimumRVR2",1494}, + {"oneMinuteMeanMinimumRVR2",1496}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2320 "../tests/keys" - {"windUnitsTrend2",2315}, + {"windUnitsTrend2",2316}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 986 "../tests/keys" {"isCavokTrend4",981}, {""}, {""}, {""}, {""}, -#line 1572 "../tests/keys" - {"padding_loc2_2",1567}, + {"padding_loc2_2",1569}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8650,340 +6408,262 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1496 "../tests/keys" - {"oneMinuteMeanMaximumRVR3",1491}, + {"oneMinuteMeanMaximumRVR3",1493}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1664 "../tests/keys" - {"presentWeather3PresentTrend3",1659}, + {"presentWeather3PresentTrend3",1661}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 104 "../tests/keys" {"LSTCUM",99}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1532 "../tests/keys" - {"padding_grid3_1",1527}, + {"padding_grid3_1",1529}, {""}, {""}, {""}, {""}, -#line 2321 "../tests/keys" - {"windUnitsTrend3",2316}, + {"windUnitsTrend3",2317}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 455 "../tests/keys" {"cloudsBase2Trend1",450}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 71 "../tests/keys" {"FMULTM",66}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 23 "../tests/keys" {"BUDG",18}, {""}, {""}, {""}, {""}, {""}, -#line 877 "../tests/keys" {"genVertHeightCoords",872}, {""}, {""}, -#line 1659 "../tests/keys" - {"presentWeather2PresentTrend3",1654}, + {"presentWeather2PresentTrend3",1656}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 62 "../tests/keys" {"ExtremeValuesInMaximumRVR1",57}, {""}, {""}, {""}, -#line 88 "../tests/keys" {"Hour_E2",83}, {""}, {""}, {""}, -#line 1665 "../tests/keys" - {"presentWeather3PresentTrend4",1660}, + {"presentWeather3PresentTrend4",1662}, {""}, {""}, {""}, {""}, {""}, -#line 456 "../tests/keys" {"cloudsBase2Trend2",451}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1533 "../tests/keys" - {"padding_grid4_1",1528}, + {"padding_grid4_1",1530}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 2186 "../tests/keys" - {"typeOfLevelECMF",2181}, - {""}, {""}, -#line 1497 "../tests/keys" - {"oneMinuteMeanMaximumRVR4",1492}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1660 "../tests/keys" - {"presentWeather2PresentTrend4",1655}, + {"oneMinuteMeanMaximumRVR4",1494}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"presentWeather2PresentTrend4",1657}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 63 "../tests/keys" {"ExtremeValuesInMaximumRVR2",58}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1567 "../tests/keys" - {"padding_loc28_1",1562}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1413 "../tests/keys" - {"numberOfPointsAlongYAxisInCouplingArea",1408}, + {"numberOfPointsAlongYAxisInCouplingArea",1409}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1597 "../tests/keys" - {"padding_sec4_1",1592}, + {"padding_sec4_1",1594}, {""}, -#line 1537 "../tests/keys" - {"padding_loc10_1",1532}, + {"padding_loc10_1",1534}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"typeOfLevelECMF",2182}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 1595 "../tests/keys" - {"padding_sec2_3",1590}, + {""}, + {"padding_loc28_1",1564}, {""}, {""}, {""}, {""}, -#line 1337 "../tests/keys" - {"numberOfBitsUsedForTheScaledGroupLengths",1332}, + {"padding_sec2_3",1592}, + {""}, {""}, {""}, {""}, + {"numberOfBitsUsedForTheScaledGroupLengths",1333}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 457 "../tests/keys" {"cloudsBase2Trend3",452}, {""}, {""}, {""}, {""}, {""}, -#line 1596 "../tests/keys" - {"padding_sec3_1",1591}, + {"padding_sec3_1",1593}, {""}, {""}, {""}, {""}, {""}, -#line 1500 "../tests/keys" - {"oneMinuteMeanMinimumRVR3",1495}, + {"oneMinuteMeanMinimumRVR3",1497}, {""}, {""}, {""}, {""}, {""}, -#line 1573 "../tests/keys" - {"padding_loc30_1",1568}, + {"padding_loc30_1",1570}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 911 "../tests/keys" {"gts_CCCC",906}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1531 "../tests/keys" - {"padding_grid1_2",1526}, + {"padding_grid1_2",1528}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1578 "../tests/keys" - {"padding_loc3_1",1573}, + {"padding_loc3_1",1575}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1579 "../tests/keys" - {"padding_loc4_2",1574}, + {"padding_loc4_2",1576}, {""}, {""}, -#line 1569 "../tests/keys" - {"padding_loc29_2",1564}, + {"padding_loc29_2",1566}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 458 "../tests/keys" {"cloudsBase2Trend4",453}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1434 "../tests/keys" - {"numberOfUnusedBitsAtEndOfSection3",1429}, + {"numberOfUnusedBitsAtEndOfSection3",1430}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 251 "../tests/keys" {"Time_Range_Two_E2",246}, {""}, {""}, -#line 52 "../tests/keys" {"Ensemble_Combinat_Number_0_none_E2",47}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1552 "../tests/keys" - {"padding_loc191_2",1547}, + {"padding_loc191_2",1549}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1438 "../tests/keys" - {"numberOfUsefulPointsAlongYAxis",1433}, + {"numberOfUsefulPointsAlongYAxis",1434}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 370 "../tests/keys" {"bitsPerValueAndRepack",365}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 450 "../tests/keys" {"cloudsBase1Trend1",445}, {""}, {""}, {""}, -#line 1501 "../tests/keys" - {"oneMinuteMeanMinimumRVR4",1496}, + {"oneMinuteMeanMinimumRVR4",1498}, {""}, {""}, {""}, -#line 164 "../tests/keys" {"Missing_Model_LBC",159}, {""}, -#line 465 "../tests/keys" {"cloudsBase4Trend1",460}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 89 "../tests/keys" {"Hour_E3",84}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1542 "../tests/keys" - {"padding_loc13_5",1537}, + {"padding_loc13_5",1539}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1570 "../tests/keys" - {"padding_loc29_3",1565}, + {"padding_loc29_3",1567}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 451 "../tests/keys" {"cloudsBase1Trend2",446}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 466 "../tests/keys" {"cloudsBase4Trend2",461}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 240 "../tests/keys" {"TYPE_FC",235}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 460 "../tests/keys" {"cloudsBase3Trend1",455}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 76 "../tests/keys" {"GRIBEXSection1Problem",71}, -#line 64 "../tests/keys" {"ExtremeValuesInMaximumRVR3",59}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 252 "../tests/keys" {"Time_Range_Two_E3",247}, {""}, {""}, -#line 53 "../tests/keys" {"Ensemble_Combinat_Number_0_none_E3",48}, {""}, -#line 461 "../tests/keys" {"cloudsBase3Trend2",456}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 1548 "../tests/keys" - {"padding_loc18_1",1543}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 1336 "../tests/keys" - {"numberOfBitsUsedForTheGroupWidths",1331}, -#line 90 "../tests/keys" + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfBitsUsedForTheGroupWidths",1332}, {"Hour_E4",85}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 141 "../tests/keys" {"Local_Number_Members_Used_E2",136}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 253 "../tests/keys" {"Time_Range_Two_E4",248}, {""}, {""}, -#line 54 "../tests/keys" {"Ensemble_Combinat_Number_0_none_E4",49}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1577 "../tests/keys" - {"padding_loc38_1",1572}, + {"padding_loc18_1",1545}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 75 "../tests/keys" {"GRIB",70}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 452 "../tests/keys" {"cloudsBase1Trend3",447}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 467 "../tests/keys" {"cloudsBase4Trend3",462}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 247 "../tests/keys" {"Threshold_Or_Distribution_Units",242}, {""}, {""}, -#line 65 "../tests/keys" {"ExtremeValuesInMaximumRVR4",60}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1551 "../tests/keys" - {"padding_loc191_1",1546}, + {"padding_loc38_1",1574}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_loc191_1",1548}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1555 "../tests/keys" - {"padding_loc19_2",1550}, + {"padding_loc19_2",1552}, {""}, {""}, -#line 462 "../tests/keys" {"cloudsBase3Trend3",457}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 453 "../tests/keys" {"cloudsBase1Trend4",448}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 468 "../tests/keys" {"cloudsBase4Trend4",463}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1554 "../tests/keys" - {"padding_loc192_1",1549}, + {"padding_loc192_1",1551}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1574 "../tests/keys" - {"padding_loc30_2",1569}, + {"padding_loc30_2",1571}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 142 "../tests/keys" {"Local_Number_Members_Used_E3",137}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 463 "../tests/keys" {"cloudsBase3Trend4",458}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8992,19 +6672,16 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 275 "../tests/keys" {"Y1InGridLengths",270}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 143 "../tests/keys" {"Local_Number_Members_Used_E4",138}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 277 "../tests/keys" {"Y2InGridLengths",272}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9017,8 +6694,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1557 "../tests/keys" - {"padding_loc21_1",1552}, + {"padding_loc21_1",1554}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9029,14 +6705,13 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1488 "../tests/keys" - {"offsetToEndOf4DvarWindow",1483}, + {"offsetToEndOf4DvarWindow",1485}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1553 "../tests/keys" - {"padding_loc191_3",1548}, + {"padding_loc191_3",1550}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9046,9 +6721,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1549 "../tests/keys" - {"padding_loc18_2",1544}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9060,27 +6732,24 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 102 "../tests/keys" {"LBC_Initial_Conditions",97}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"padding_loc18_2",1546}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_loc23_1",1555}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1558 "../tests/keys" - {"padding_loc23_1",1553}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1541 "../tests/keys" - {"padding_loc13_4",1536}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 1028 "../tests/keys" - {"lBB",1023}, + {""}, {""}, {""}, {""}, + {"lBB",1024}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9090,16 +6759,14 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1545 "../tests/keys" - {"padding_loc15_1",1540}, - {""}, {""}, {""}, {""}, {""}, -#line 228 "../tests/keys" + {"padding_loc15_1",1542}, + {""}, {""}, + {"padding_loc13_4",1538}, + {""}, {""}, {"Show_Combination_Ensem_E2_0_no_1_yes",223}, {""}, {""}, {""}, -#line 1565 "../tests/keys" - {"padding_loc27_1",1560}, + {"padding_loc27_1",1562}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 10 "../tests/keys" {"7777",5}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9111,12 +6778,10 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1563 "../tests/keys" - {"padding_loc245_2",1558}, + {"padding_loc245_2",1560}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1564 "../tests/keys" - {"padding_loc26_1",1559}, + {"padding_loc26_1",1561}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9138,7 +6803,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 229 "../tests/keys" {"Show_Combination_Ensem_E3_0_no_1_yes",224}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9155,7 +6819,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 230 "../tests/keys" {"Show_Combination_Ensem_E4_0_no_1_yes",225}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9165,8 +6828,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1538 "../tests/keys" - {"padding_loc13_1",1533}, + {"padding_loc13_1",1535}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9182,15 +6844,13 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1543 "../tests/keys" - {"padding_loc14_1",1538}, + {"padding_loc14_1",1540}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1562 "../tests/keys" - {"padding_loc245_1",1557}, + {"padding_loc245_1",1559}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9199,18 +6859,14 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1560 "../tests/keys" - {"padding_loc244_2",1555}, + {"padding_loc244_2",1557}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1546 "../tests/keys" - {"padding_loc16_1",1541}, + {"padding_loc16_1",1543}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1575 "../tests/keys" - {"padding_loc37_1",1570}, + {"padding_loc37_1",1572}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1249 "../tests/keys" - {"meanValueRVR1",1244}, + {"meanValueRVR1",1245}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9218,10 +6874,8 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1566 "../tests/keys" - {"padding_loc27_2",1561}, + {"padding_loc27_2",1563}, {""}, -#line 170 "../tests/keys" {"Model_LBC_Member_Identifier",165}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9232,9 +6886,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1250 "../tests/keys" - {"meanValueRVR2",1245}, -#line 19 "../tests/keys" + {"meanValueRVR2",1246}, {"At_least__Or_Distribut_Proportion_Of",14}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9255,7 +6907,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 207 "../tests/keys" {"Original_Parameter_Iden_CodeTable2",202}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9283,15 +6934,12 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1559 "../tests/keys" - {"padding_loc244_1",1554}, + {"padding_loc244_1",1556}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1539 "../tests/keys" - {"padding_loc13_2",1534}, + {"padding_loc13_2",1536}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 95 "../tests/keys" {"INGRIB",90}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9306,23 +6954,18 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1544 "../tests/keys" - {"padding_loc14_2",1539}, + {"padding_loc14_2",1541}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1547 "../tests/keys" - {"padding_loc17_2",1542}, + {"padding_loc17_2",1544}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 78 "../tests/keys" {"GRIBEX_boustrophedonic",73}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1251 "../tests/keys" - {"meanValueRVR3",1246}, + {"meanValueRVR3",1247}, {""}, {""}, {""}, {""}, -#line 1540 "../tests/keys" - {"padding_loc13_3",1535}, + {"padding_loc13_3",1537}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9332,8 +6975,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1576 "../tests/keys" - {"padding_loc37_2",1571}, + {"padding_loc37_2",1573}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9354,16 +6996,13 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1252 "../tests/keys" - {"meanValueRVR4",1247}, + {"meanValueRVR4",1248}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 165 "../tests/keys" {"Missing_Model_LBC_E2",160}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1561 "../tests/keys" - {"padding_loc244_3",1556}, + {"padding_loc244_3",1558}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9401,8 +7040,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1776 "../tests/keys" - {"runwayBrakingActionState1",1771}, + {"runwayBrakingActionState1",1773}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9418,8 +7056,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1777 "../tests/keys" - {"runwayBrakingActionState2",1772}, + {"runwayBrakingActionState2",1774}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9433,7 +7070,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 166 "../tests/keys" {"Missing_Model_LBC_E3",161}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9463,11 +7099,9 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 184 "../tests/keys" {"NINT_RITZ_EXP",179}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 167 "../tests/keys" {"Missing_Model_LBC_E4",162}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9494,11 +7128,9 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1778 "../tests/keys" - {"runwayBrakingActionState3",1773}, + {"runwayBrakingActionState3",1775}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 183 "../tests/keys" {"NINT_LOG10_RITZ",178}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9527,8 +7159,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 1779 "../tests/keys" - {"runwayBrakingActionState4",1774}, + {"runwayBrakingActionState4",1776}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9539,7 +7170,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 77 "../tests/keys" {"GRIBEXShBugPresent",72}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9578,7 +7208,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 258 "../tests/keys" {"Used_Model_LBC",253}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9611,7 +7240,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 21 "../tests/keys" {"BBB",16}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9641,7 +7269,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 81 "../tests/keys" {"GRIB_LATITUDE",76}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9732,7 +7359,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 82 "../tests/keys" {"GRIB_LONGITUDE",77}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9840,7 +7466,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 80 "../tests/keys" {"GRIB_DEPTH",75}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -10012,7 +7637,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 259 "../tests/keys" {"Used_Model_LBC_E2",254}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -10020,35 +7644,35 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 260 "../tests/keys" + {"AEC_PAD_RSI_OPTION_MASK",11}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"Used_Model_LBC_E3",255}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -10065,7 +7689,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 261 "../tests/keys" {"Used_Model_LBC_E4",256}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -10140,270 +7763,152 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 16 "../tests/keys" - {"AEC_PAD_RSI_OPTION_MASK",11}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 17 "../tests/keys" {"AEC_RESTRICTED_OPTION_MASK",12}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -10566,7 +8071,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 13 "../tests/keys" {"AEC_DATA_MSB_OPTION_MASK",8}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -10650,7 +8154,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 12 "../tests/keys" {"AEC_DATA_3BYTE_OPTION_MASK",7}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -11135,8 +8638,23 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 15 "../tests/keys" + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"AEC_DATA_SIGNED_OPTION_MASK",10}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -11260,13 +8778,60 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 14 "../tests/keys" + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"AEC_DATA_PREPROCESS_OPTION_MASK",9} }; +#ifdef __GNUC__ + +#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ +#endif +#endif const struct grib_keys_hash * -grib_keys_hash_get (const char *str, unsigned int len) +grib_keys_hash_get (str, len) + register const char *str; + register unsigned int len; { if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) { From 8ecc5346dcf55114f65a1200d81c281ed7dc1628 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 19 Jul 2019 17:36:38 +0100 Subject: [PATCH 337/414] ECC-941: Crash: simple packed GRIB with invalid data section size/bits per value --- src/grib_accessor_class_data_simple_packing.c | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/grib_accessor_class_data_simple_packing.c b/src/grib_accessor_class_data_simple_packing.c index a65ad8656..a9a8f0d0e 100644 --- a/src/grib_accessor_class_data_simple_packing.c +++ b/src/grib_accessor_class_data_simple_packing.c @@ -315,6 +315,7 @@ static int _unpack_double(grib_accessor* a, double* val, size_t *len,unsigned c long binary_scale_factor; long bits_per_value; long decimal_scale_factor; + long offsetBeforeData; double s = 0; double d = 0; double units_factor=1.0; @@ -384,25 +385,26 @@ static int _unpack_double(grib_accessor* a, double* val, size_t *len,unsigned c "grib_accessor_data_simple_packing: unpack_double : creating %s, %d values", a->name, n_vals); - buf += grib_byte_offset(a); + offsetBeforeData = grib_byte_offset(a); + buf += offsetBeforeData; /*Assert(((bits_per_value*n_vals)/8) < (1<<29));*/ /* See GRIB-787 */ -#if 0 - /* See ECC-941: This is not the right place to do this. Fails ctest eccodes_t_grib_2nd_order_numValues */ + + /* ECC-941 */ { - long dataSectionLength = 0; - err = grib_get_long(gh,self->seclen, &dataSectionLength); - if (!err) { + long offsetAfterData = 0; + err = grib_get_long(gh, "offsetAfterData", &offsetAfterData); + if (!err && offsetAfterData > offsetBeforeData) { const long valuesSize = (bits_per_value*n_vals)/8; /*in bytes*/ - if (valuesSize > dataSectionLength) { + if (offsetBeforeData + valuesSize > offsetAfterData) { grib_context_log(a->context, GRIB_LOG_ERROR, - "Data section size mismatch: expected=%ld, section length=%ld (num values=%ld, bits per value=%ld)", - valuesSize, dataSectionLength, n_vals, bits_per_value); + "Data section size mismatch: offset before data=%ld, offset after data=%ld (num values=%ld, bits per value=%ld)", + offsetBeforeData, offsetAfterData, n_vals, bits_per_value); return GRIB_DECODING_ERROR; } } } -#endif + grib_context_log(a->context, GRIB_LOG_DEBUG, "unpack_double: calling outline function : bpv %d, rv : %g, sf : %d, dsf : %d ", bits_per_value,reference_value,binary_scale_factor, decimal_scale_factor); From b5c06c0257da9a13f61460db6f76a4c381ca5868 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 22 Jul 2019 11:15:42 +0100 Subject: [PATCH 338/414] Rename example --- examples/C/CMakeLists.txt | 4 ++-- examples/C/Makefile.am | 6 +++--- examples/C/{sections_copy.c => grib_sections_copy.c} | 0 examples/C/{sections_copy.sh => grib_sections_copy.sh} | 8 ++++---- 4 files changed, 9 insertions(+), 9 deletions(-) rename examples/C/{sections_copy.c => grib_sections_copy.c} (100%) rename examples/C/{sections_copy.sh => grib_sections_copy.sh} (80%) diff --git a/examples/C/CMakeLists.txt b/examples/C/CMakeLists.txt index 711c16f5c..83a97fea4 100644 --- a/examples/C/CMakeLists.txt +++ b/examples/C/CMakeLists.txt @@ -29,7 +29,7 @@ list( APPEND test_bins grib_set_pv grib_list grib_get_data - sections_copy + grib_sections_copy grib_iterator_bitmap large_grib1 grib_clone @@ -65,7 +65,7 @@ list( APPEND tests_basic grib_multi grib_set_data large_grib1 - sections_copy + grib_sections_copy get_product_kind_samples ) list( APPEND tests_extra diff --git a/examples/C/Makefile.am b/examples/C/Makefile.am index 64f411630..57933cf49 100644 --- a/examples/C/Makefile.am +++ b/examples/C/Makefile.am @@ -12,7 +12,7 @@ TESTS = grib_iterator.sh \ grib_list.sh \ large_grib1.sh \ grib_get_data.sh \ - sections_copy.sh \ + grib_sections_copy.sh \ set_missing.sh \ grib_clone.sh \ grib_set_pv.sh \ @@ -50,7 +50,7 @@ noinst_PROGRAMS = c_grib_nearest \ c_grib_precision \ c_grib_set_pv \ c_grib_list \ - c_sections_copy \ + c_grib_sections_copy \ c_large_grib1 \ c_grib_get_data \ c_grib_iterator_bitmap \ @@ -95,7 +95,7 @@ c_grib_iterator_bitmap_SOURCES = grib_iterator_bitmap.c c_grib_set_pv_SOURCES = grib_set_pv.c c_grib_nearest_multiple_SOURCES = grib_nearest_multiple.c c_grib_list_SOURCES = grib_list.c -c_sections_copy_SOURCES = sections_copy.c +c_grib_sections_copy_SOURCES = grib_sections_copy.c c_large_grib1_SOURCES = large_grib1.c c_grib_precision_SOURCES = grib_precision.c c_grib_get_data_SOURCES = grib_get_data.c diff --git a/examples/C/sections_copy.c b/examples/C/grib_sections_copy.c similarity index 100% rename from examples/C/sections_copy.c rename to examples/C/grib_sections_copy.c diff --git a/examples/C/sections_copy.sh b/examples/C/grib_sections_copy.sh similarity index 80% rename from examples/C/sections_copy.sh rename to examples/C/grib_sections_copy.sh index a76549241..b98660041 100755 --- a/examples/C/sections_copy.sh +++ b/examples/C/grib_sections_copy.sh @@ -15,7 +15,7 @@ OUTPUT=temp.sections.grib ################## # Copy the GRID section from REGUL_GRID_FILE -${examples_dir}/c_sections_copy $REGUL_GRID_FILE $GAUSS_GRID_FILE g $OUTPUT >/dev/null +${examples_dir}/c_grib_sections_copy $REGUL_GRID_FILE $GAUSS_GRID_FILE g $OUTPUT >/dev/null # Now the output should have a regular grid # but its date should be the same as the Gaussian grid sample @@ -25,7 +25,7 @@ grid_tmpl=`${tools_dir}/grib_get -p gridType,date $OUTPUT` ################## # Copy the GRID section from GAUSS_GRID_FILE -${examples_dir}/c_sections_copy $GAUSS_GRID_FILE $REGUL_GRID_FILE g $OUTPUT >/dev/null +${examples_dir}/c_grib_sections_copy $GAUSS_GRID_FILE $REGUL_GRID_FILE g $OUTPUT >/dev/null # Now the output should have a gaussian grid # but its date should be the same as the regular grid @@ -35,7 +35,7 @@ grid_tmpl=`${tools_dir}/grib_get -p gridType,date $OUTPUT` ################## # Copy both the PRODUCT and GRID sections from REGUL_GRID_FILE -${examples_dir}/c_sections_copy $REGUL_GRID_FILE $GAUSS_GRID_FILE gp $OUTPUT >/dev/null +${examples_dir}/c_grib_sections_copy $REGUL_GRID_FILE $GAUSS_GRID_FILE gp $OUTPUT >/dev/null # Now the output should have a regular grid # and its date should be the same as the regular latlon @@ -45,7 +45,7 @@ grid_tmpl=`${tools_dir}/grib_get -p gridType,date $OUTPUT` ################## # Copy all sections from REGUL_GRID_FILE (use commas) -${examples_dir}/c_sections_copy $REGUL_GRID_FILE $GAUSS_GRID_FILE p,l,g,d,b $OUTPUT >/dev/null +${examples_dir}/c_grib_sections_copy $REGUL_GRID_FILE $GAUSS_GRID_FILE p,l,g,d,b $OUTPUT >/dev/null # Now the output should be identical to the regular grib ${tools_dir}/grib_compare $REGUL_GRID_FILE $OUTPUT From e21d100b315362d283a9fbff0c7363798b51e54d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 22 Jul 2019 13:07:22 +0100 Subject: [PATCH 339/414] Merge in safe changes from feature/ECC-604-thread_performance branch --- src/grib_accessor_class_count_file.c | 13 +++++------ src/grib_accessor_class_count_total.c | 11 ++++----- ...rib_accessor_class_data_jpeg2000_packing.c | 8 +++---- src/grib_api_prototypes.h | 2 ++ src/grib_context.c | 23 +++++++++++++++++-- 5 files changed, 38 insertions(+), 19 deletions(-) diff --git a/src/grib_accessor_class_count_file.c b/src/grib_accessor_class_count_file.c index 9ef4084b9..c06dd1220 100644 --- a/src/grib_accessor_class_count_file.c +++ b/src/grib_accessor_class_count_file.c @@ -133,14 +133,13 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* c) { - a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; - a->length=0; + a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; + a->length=0; } -static int unpack_long(grib_accessor* a, long* val, size_t *len) +static int unpack_long(grib_accessor* a, long* val, size_t *len) { - *val = a->context->handle_file_count; - *len =1; - return 0; + *val = grib_context_get_handle_file_count(a->context); + *len =1; + return 0; } - diff --git a/src/grib_accessor_class_count_total.c b/src/grib_accessor_class_count_total.c index bd99c4b1c..5569ad123 100644 --- a/src/grib_accessor_class_count_total.c +++ b/src/grib_accessor_class_count_total.c @@ -135,14 +135,13 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* c) { - a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; - a->length=0; + a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; + a->length=0; } static int unpack_long(grib_accessor* a, long* val, size_t *len) { - *val = a->context->handle_total_count; - *len =1; - return 0; + *val = grib_context_get_handle_total_count(a->context); + *len =1; + return 0; } - diff --git a/src/grib_accessor_class_data_jpeg2000_packing.c b/src/grib_accessor_class_data_jpeg2000_packing.c index 04d50fd99..40a786e7e 100644 --- a/src/grib_accessor_class_data_jpeg2000_packing.c +++ b/src/grib_accessor_class_data_jpeg2000_packing.c @@ -215,11 +215,11 @@ static void init(grib_accessor* a,const long v, grib_arguments* args) } self->dump_jpg = codes_getenv("ECCODES_GRIB_DUMP_JPG_FILE"); - - if(first) { - if(self->dump_jpg) + if(self->dump_jpg) { + if (first) { printf("GRIB JPEG dumping to %s\n",self->dump_jpg); - first = 0; + first = 0; + } } } diff --git a/src/grib_api_prototypes.h b/src/grib_api_prototypes.h index 8f5291eed..de77c39be 100644 --- a/src/grib_api_prototypes.h +++ b/src/grib_api_prototypes.h @@ -997,6 +997,8 @@ void grib_context_set_buffer_memory_proc(grib_context *c, grib_malloc_proc m, gr void grib_context_set_data_accessing_proc(grib_context *c, grib_data_read_proc read, grib_data_write_proc write, grib_data_tell_proc tell); void grib_context_log(const grib_context *c, int level, const char *fmt, ...); void grib_context_print(const grib_context *c, void *descriptor, const char *fmt, ...); +int grib_context_get_handle_file_count(grib_context *c); +int grib_context_get_handle_total_count(grib_context *c); void grib_context_set_handle_file_count(grib_context *c, int new_count); void grib_context_set_handle_total_count(grib_context *c, int new_count); void grib_context_increment_handle_file_count(grib_context *c); diff --git a/src/grib_context.c b/src/grib_context.c index aada39c26..d8c473d75 100644 --- a/src/grib_context.c +++ b/src/grib_context.c @@ -943,6 +943,27 @@ void grib_context_print(const grib_context *c, void* descriptor,const char* fmt, c->print(c,descriptor,msg); } +int grib_context_get_handle_file_count(grib_context *c) +{ + int r = 0; + if (!c) c=grib_context_get_default(); + GRIB_MUTEX_INIT_ONCE(&once,&init); + GRIB_MUTEX_LOCK(&mutex_c); + r = c->handle_file_count; + GRIB_MUTEX_UNLOCK(&mutex_c); + return r; +} +int grib_context_get_handle_total_count(grib_context *c) +{ + int r = 0; + if (!c) c=grib_context_get_default(); + GRIB_MUTEX_INIT_ONCE(&once,&init); + GRIB_MUTEX_LOCK(&mutex_c); + r=c->handle_total_count; + GRIB_MUTEX_UNLOCK(&mutex_c); + return r; +} + void grib_context_set_handle_file_count(grib_context *c, int new_count) { if (!c) c=grib_context_get_default(); @@ -951,7 +972,6 @@ void grib_context_set_handle_file_count(grib_context *c, int new_count) c->handle_file_count = new_count; GRIB_MUTEX_UNLOCK(&mutex_c); } - void grib_context_set_handle_total_count(grib_context *c, int new_count) { if (!c) c=grib_context_get_default(); @@ -969,7 +989,6 @@ void grib_context_increment_handle_file_count(grib_context *c) c->handle_file_count++; GRIB_MUTEX_UNLOCK(&mutex_c); } - void grib_context_increment_handle_total_count(grib_context *c) { if (!c) c=grib_context_get_default(); From c0b62bd036ec1b9fa454082c6ee67cf3173e7fa9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 24 Jul 2019 12:53:35 +0100 Subject: [PATCH 340/414] Fix compiler warning --- src/grib_dumper_class_bufr_simple.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/grib_dumper_class_bufr_simple.c b/src/grib_dumper_class_bufr_simple.c index 4828d9bc6..aa84ee358 100644 --- a/src/grib_dumper_class_bufr_simple.c +++ b/src/grib_dumper_class_bufr_simple.c @@ -690,7 +690,7 @@ static void dump_section(grib_dumper* d, grib_accessor* a, grib_block_of_accesso self->empty=1; err = grib_get_long(h, "numberOfSubsets", &(self->numberOfSubsets)); - DebugAssert(!err); + Assert(!err); _dump_long_array(h,self->dumper.out,"dataPresentIndicator"); _dump_long_array(h,self->dumper.out,"delayedDescriptorReplicationFactor"); _dump_long_array(h,self->dumper.out,"shortDelayedDescriptorReplicationFactor"); From 662fc587bc76fd7b97efecf2a3c8decba36d6dd0 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 24 Jul 2019 15:35:33 +0100 Subject: [PATCH 341/414] Performance: reduce number of calls to init --- src/action.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/action.c b/src/action.c index 7d5256acd..48ee94e2d 100644 --- a/src/action.c +++ b/src/action.c @@ -47,11 +47,15 @@ static void init_mutex() static void init(grib_action_class *c) { + if (!c) return; + GRIB_MUTEX_INIT_ONCE(&once,&init_mutex); GRIB_MUTEX_LOCK(&mutex1); - if(c && !c->inited) + if(!c->inited) { - init(c->super ? *(c->super) : NULL); + if (c->super) { + init( *(c->super) ); + } c->init_class(c); c->inited = 1; } From 1ca2f676e30a5437f2a15360981a2a048779356a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 24 Jul 2019 18:19:36 +0100 Subject: [PATCH 342/414] ECC-958: grib_compare: show bit values for codeflag keys --- tools/grib_compare.c | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/tools/grib_compare.c b/tools/grib_compare.c index f22a379a4..b86229d86 100644 --- a/tools/grib_compare.c +++ b/tools/grib_compare.c @@ -572,6 +572,24 @@ static void save_error(grib_context* c,const char* key) } } +static int test_bit(long a, long b) {return a&(1<cclass->name, "codeflag")==0) { + long i; + const long bytelen = a->length*8; + for(i=0; icontext,lval1); grib_context_free(h2->context,lval2); From 3d3227a08670334732db4e79d52b4ff23fb8ce01 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 25 Jul 2019 11:36:48 +0100 Subject: [PATCH 343/414] SUP-2894: check if Perl Test::More module is available --- tests/grib_check_param_concepts.sh | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/tests/grib_check_param_concepts.sh b/tests/grib_check_param_concepts.sh index d84ced85a..7f4a8906c 100755 --- a/tests/grib_check_param_concepts.sh +++ b/tests/grib_check_param_concepts.sh @@ -16,9 +16,15 @@ REDIRECT=/dev/null # name.def paramId.def shortName.def units.def cfVarName.def # -# Perhaps we should check whether the Test::More Perl module is available? -#perl -MTest::More -e 'print $Test::More::VERSION ."\n";' - +# Check whether the Test::More Perl module is available +set +e +perl -e 'use Test::More;' +status=$? +set -e +if [ $status -ne 0 ]; then + echo "Perl Test::More not installed. Test will be skipped" + exit 0 +fi CHECK_DEFS=$ECCODES_DEFINITION_PATH/check_grib_defs.pl From d9879974bbccd5602ade7c01850f81bfe0e41269 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 26 Jul 2019 13:12:59 +0100 Subject: [PATCH 344/414] ECC-707: optimisation. Make one call per handle (not for every key) --- tools/grib_tools.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/grib_tools.c b/tools/grib_tools.c index b30fa4bd9..e5670444c 100644 --- a/tools/grib_tools.c +++ b/tools/grib_tools.c @@ -884,9 +884,12 @@ void grib_print_key_values(grib_runtime_options* options, grib_handle* h) int written_to_dump = 0; /* boolean */ grib_accessor* acc = NULL; size_t num_vals = 0; + int fix_lsdate = 0; if (!options->verbose) return; + fix_lsdate = (fix_for_lsdate_needed(h) && options->name_space && strcmp(options->name_space,"ls")==0); + for (i=0;iprint_keys_count;i++) { size_t len=MAX_STRING_LEN; ret=GRIB_SUCCESS; @@ -924,8 +927,6 @@ void grib_print_key_values(grib_runtime_options* options, grib_handle* h) } } else { /* Other products e.g. GRIB */ - const int fix_lsdate = (fix_for_lsdate_needed(h) && options->name_space && strcmp(options->name_space,"ls")==0); - if (grib_is_missing(h,options->print_keys[i].name,&ret) && ret==GRIB_SUCCESS) { sprintf(value,"MISSING"); } From 7de26c396a9263258382f4e9a1cc0f179516ecbb Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 26 Jul 2019 15:19:51 +0100 Subject: [PATCH 345/414] ECC-960: grib_util_set_spec: Interpolation fails on GRIB message with no levelType key --- src/grib_util.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/grib_util.c b/src/grib_util.c index 4d44b77a6..ffb4b4e88 100644 --- a/src/grib_util.c +++ b/src/grib_util.c @@ -1050,9 +1050,6 @@ grib_handle* grib_util_set_spec2(grib_handle* h, /* The "pl" is given from the template, but "section_copy" will take care of setting the right headers */ { - char levtype[80]; - size_t n = sizeof(levtype); - Assert(grib_get_string(h,"levelType",levtype,&n) == 0); switch (spec->grid_type) { case GRIB_UTIL_GRID_SPEC_REDUCED_GG: case GRIB_UTIL_GRID_SPEC_REDUCED_ROTATED_GG: From 49921b06f9b5d3f30e912efdcd4629566c9eaeb2 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 29 Jul 2019 15:45:52 +0100 Subject: [PATCH 346/414] Testing: fix case when several numbers per line --- tests/number_compare.pl | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/tests/number_compare.pl b/tests/number_compare.pl index 00b397db5..ccd7bf395 100755 --- a/tests/number_compare.pl +++ b/tests/number_compare.pl @@ -27,7 +27,7 @@ if (scalar @ARGV < 2) { } # Tolerance is optional my $tolerance = 1e-9; -my $result = GetOptions ( +my $res = GetOptions ( "t=s" => \$tolerance ); @@ -54,11 +54,26 @@ my $delta = $tolerance; if (not cmp($fileA, $fileB, sub { my $arg1 = munge $_[0]; my $arg2 = munge $_[1]; - #print "Line $line_num: Comparing $arg1 with $arg2 ...\n"; - my $result = (abs($arg1 - $arg2) > $delta); - if ($result) { - print "Line $line_num differs: [$arg1] <=> [$arg2]\n"; - print "Absolute error = ". abs($arg1 - $arg2) . "\n"; + # $arg1 is a line from $fileA, $arg2 is a line from $fileB + my $result = 0; + my @data1 = split(/\s/, $arg1); + my @data2 = split(/\s/, $arg2); + my $data1_length = @data1; + my $data2_length = @data2; + if ($data1_length != $data2_length) { + print "Line $line_num lengths differs: [$arg1] <=> [$arg2]\n"; + return 1; + } + foreach my $idx (0 .. $#data1) { + my $d1 = $data1[$idx]; + my $d2 = $data2[$idx]; + #print "Line $line_num: Comparing |$d1| with |$d2| ...\n"; + $result = (abs($d1 - $d2) > $delta); + if ($result) { + print "Line $line_num differs: [$d1] <=> [$d2]\n"; + print "Absolute error = ". abs($d1 - $d2) . "\n"; + return $result; # Failed + } } ++$line_num; return $result; From 947bfa7b821fb771d8ea51b659de86f31781c4b8 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 29 Jul 2019 15:46:07 +0100 Subject: [PATCH 347/414] Testing: Do not suppress output of diff --- tests/bufrdc_ref.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/bufrdc_ref.sh b/tests/bufrdc_ref.sh index dcb75416e..c73e39cc2 100755 --- a/tests/bufrdc_ref.sh +++ b/tests/bufrdc_ref.sh @@ -39,7 +39,7 @@ do if [ -f "$ref_num" ]; then # Cannot use plain diff. We need to compare FLOAT NUMBERS with a tolerance - perl number_compare.pl $ref_num $res_num >$REDIRECT 2> $REDIRECT + perl number_compare.pl $ref_num $res_num # >$REDIRECT 2> $REDIRECT #numdiff $ref_num $res_num >$REDIRECT 2> $REDIRECT fi From f8a5392bd805baaffbd6d768b0cbcda6da668399 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 29 Jul 2019 17:21:56 +0100 Subject: [PATCH 348/414] ECC-961: grib_dump -p functionality --- tools/grib_dump.c | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/tools/grib_dump.c b/tools/grib_dump.c index acb2b2c2e..0b7c09cbf 100644 --- a/tools/grib_dump.c +++ b/tools/grib_dump.c @@ -33,6 +33,8 @@ grib_option grib_options[]={ {"7",0,0,0,1,0}, {"V",0,0,0,1,0}, {"q",0,0,1,0,0}, + {"p:","key1,key2,...", + "\n\t\tDeclaration of keys to dump. Only those keys are dumped (not the whole message).\n",0,1,0}, {"X:",0,0,0,1,0}, {"x",0,0,0,1,0} }; @@ -42,6 +44,7 @@ const char* grib_tool_name="grib_dump"; const char* grib_tool_usage="[options] grib_file grib_file ..."; static int json=0; static int first_handle=1; +static int dump_keys=0; int grib_options_count=sizeof(grib_options)/sizeof(grib_option); @@ -112,6 +115,8 @@ int grib_tool_init(grib_runtime_options* options) if ( grib_options_on("d") || grib_options_on("j") ) options->dump_flags |= GRIB_DUMP_FLAG_ALL_DATA; + dump_keys=grib_options_on("p:"); + return 0; } @@ -173,8 +178,24 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) if( err != GRIB_SUCCESS && options->fail) exit(err); } - for (i=0;iprint_keys_count;i++) - grib_set_flag(h,options->print_keys[i].name,GRIB_ACCESSOR_FLAG_DUMP); + for (i=0;iprint_keys_count;i++) { + const char* key_name = options->print_keys[i].name; + grib_accessor* a = NULL; + err = grib_set_flag(h, key_name, GRIB_ACCESSOR_FLAG_DUMP); + if (err) { + grib_context_log(h->context,GRIB_LOG_ERROR, "%s: %s", key_name, grib_get_error_message(err)); + exit(err); + } + a=grib_find_accessor(h, key_name); + if (a) { + grib_dumper *dumper; + dumper = grib_dumper_factory(options->dump_mode?options->dump_mode:"serialize",h,stdout,options->dump_flags,NULL); + grib_accessor_dump(a, dumper); + grib_dumper_delete(dumper); + } + } + if (dump_keys && options->print_keys_count > 0) + return 0; if(json) { if (!first_handle && options->handle_count>1) { @@ -218,7 +239,10 @@ void grib_tool_print_key_values(grib_runtime_options* options,grib_handle* h) int grib_tool_finalise_action(grib_runtime_options* options) { - if (json) fprintf(stdout,"\n]}\n"); + if (json) { + if (!dump_keys) fprintf(stdout,"\n]}\n"); + else fprintf(stdout,"\n"); + } return 0; } From cae9f093fe2ebd3e94d252690ba029c7ea197fa3 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 30 Jul 2019 12:06:58 +0100 Subject: [PATCH 349/414] ECC-962: grib_to_netcdf: Set date to 'hdate' for hindcast fields --- tools/grib_to_netcdf.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/tools/grib_to_netcdf.c b/tools/grib_to_netcdf.c index fd6b53804..fa4e9da5b 100644 --- a/tools/grib_to_netcdf.c +++ b/tools/grib_to_netcdf.c @@ -1989,14 +1989,11 @@ static void validation_time(request *r) if(ndate) { const char* p = get_value(r, "date", 0); - const char* marsClass = get_value(r, "class", 0); - if (eq_string(marsClass, "s2")) { - /* S2S Data. See GRIB-699 and GRIB-762 */ - const char* hdate = get_value(r, "hdate", 0); - grib_context_log(ctx, GRIB_LOG_DEBUG, "grib_to_netcdf: S2S Data"); - if (hdate) { - p = hdate; /* This is a hindcast */ - } + const char* hdate = get_value(r, "hdate", 0); + /* All hindcast Data. See GRIB-699, GRIB-762 and ECC-962 */ + if (hdate) { + grib_context_log(ctx, GRIB_LOG_DEBUG, "grib_to_netcdf: Hindcast data hdate=%s", hdate); + p = hdate; /* Don't use 'date'. Use the hindcast date instead */ } if(is_number(p)) date = atol(p); From 247c456f3ddf7be0636355fabfdc821250b67230 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 30 Jul 2019 12:14:34 +0100 Subject: [PATCH 350/414] Thread-safety: disable statics unless DEBUG mode --- src/grib_loader_from_handle.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/grib_loader_from_handle.c b/src/grib_loader_from_handle.c index 83fa154b7..a1ed4e610 100644 --- a/src/grib_loader_from_handle.c +++ b/src/grib_loader_from_handle.c @@ -73,8 +73,10 @@ int grib_init_accessor_from_handle(grib_loader* loader,grib_accessor* ga,grib_ar unsigned char* uval = NULL; long* lval = NULL; double* dval = NULL; +#ifdef DEBUG static int first = 1; static const char* missing = 0; +#endif const char* name = NULL; int k = 0; grib_handle *g; @@ -137,24 +139,25 @@ int grib_init_accessor_from_handle(grib_loader* loader,grib_accessor* ga,grib_ar if(ret != GRIB_SUCCESS) { name = ga->name; - +#ifdef DEBUG if(first) { missing = codes_getenv("ECCODES_PRINT_MISSING"); first = 0; } - +#endif grib_context_log(h->context,GRIB_LOG_DEBUG, "Copying [%s] failed: %s", name,grib_get_error_message(ret)); - +#ifdef DEBUG if(missing) { + Assert(0); fprintf(stdout,"REPARSE: no value for %s",name); if(default_value) fprintf(stdout," (default value)"); fprintf(stdout,"\n"); } - +#endif return GRIB_SUCCESS; } From e1cc9b37a3c8abdcb340d4822d76bc3cfbc6839a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 30 Jul 2019 12:16:21 +0100 Subject: [PATCH 351/414] Remove Assert --- src/grib_loader_from_handle.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/grib_loader_from_handle.c b/src/grib_loader_from_handle.c index a1ed4e610..ae27d5793 100644 --- a/src/grib_loader_from_handle.c +++ b/src/grib_loader_from_handle.c @@ -151,7 +151,6 @@ int grib_init_accessor_from_handle(grib_loader* loader,grib_accessor* ga,grib_ar #ifdef DEBUG if(missing) { - Assert(0); fprintf(stdout,"REPARSE: no value for %s",name); if(default_value) fprintf(stdout," (default value)"); From 42c723f8df0ecbc386c5dedf5bf1727e03f9ecd7 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 30 Jul 2019 15:47:27 +0100 Subject: [PATCH 352/414] ECC-961: Refactoring --- src/grib_api_prototypes.h | 7 ++++--- src/grib_dumper_class.c | 24 ++++++++++++++++++------ tools/grib_dump.c | 36 ++++++++++++++++++++---------------- 3 files changed, 42 insertions(+), 25 deletions(-) diff --git a/src/grib_api_prototypes.h b/src/grib_api_prototypes.h index de77c39be..208004772 100644 --- a/src/grib_api_prototypes.h +++ b/src/grib_api_prototypes.h @@ -954,9 +954,10 @@ grib_dumper *grib_dumper_factory(const char *op, grib_handle *h, FILE *out, unsi void grib_dump_accessors_block(grib_dumper *dumper, grib_block_of_accessors *block); void grib_dump_accessors_list(grib_dumper *dumper, grib_accessors_list *al); int grib_print(grib_handle *h, const char *name, grib_dumper *d); -void grib_dump_content(grib_handle *h, FILE *f, const char *mode, unsigned long option_flags, void *data); -grib_dumper *grib_dump_content_with_dumper(grib_handle *h, grib_dumper *dumper, FILE *f, const char *mode, unsigned long option_flags, void *data); -void codes_dump_bufr_flat(grib_accessors_list *al, grib_handle *h, FILE *f, const char *mode, unsigned long option_flags, void *data); +void grib_dump_content(grib_handle *h, FILE *f, const char *mode, unsigned long flags, void *data); +void grib_dump_keys(grib_handle* h, FILE* f, const char* mode, unsigned long flags, void *data, const char **keys, size_t num_keys); +grib_dumper *grib_dump_content_with_dumper(grib_handle *h, grib_dumper *dumper, FILE *f, const char *mode, unsigned long flags, void *data); +void codes_dump_bufr_flat(grib_accessors_list *al, grib_handle *h, FILE *f, const char *mode, unsigned long flags, void *data); /* grib_context.c */ size_t grib_context_read(const grib_context *c, void *ptr, size_t size, void *stream); diff --git a/src/grib_dumper_class.c b/src/grib_dumper_class.c index 4540773df..02ca5b346 100644 --- a/src/grib_dumper_class.c +++ b/src/grib_dumper_class.c @@ -80,24 +80,36 @@ int grib_print(grib_handle* h, const char* name, grib_dumper *d ){ return GRIB_NOT_FOUND; } -void grib_dump_content(grib_handle* h, FILE* f,const char* mode,unsigned long option_flags,void *data) +void grib_dump_content(grib_handle* h, FILE* f,const char* mode,unsigned long flags,void *data) { grib_dumper *dumper; - dumper = grib_dumper_factory(mode?mode:"serialize",h,f,option_flags,data); + dumper = grib_dumper_factory(mode?mode:"serialize", h, f, flags, data); grib_dump_header(dumper,h); grib_dump_accessors_block(dumper,h->root->block); grib_dump_footer(dumper,h); grib_dumper_delete(dumper); } -grib_dumper* grib_dump_content_with_dumper(grib_handle* h, grib_dumper* dumper, FILE* f,const char* mode,unsigned long option_flags,void *data) +void grib_dump_keys(grib_handle* h, FILE* f, const char* mode, unsigned long flags, void *data, const char **keys, size_t num_keys) +{ + size_t i; + grib_accessor* acc = NULL; + grib_dumper* dumper = grib_dumper_factory(mode?mode:"serialize", h, f, flags, data); + for(i=0; icount; count++; } - dumper = grib_dumper_factory(mode?mode:"serialize",h,f,option_flags,data); + dumper = grib_dumper_factory(mode?mode:"serialize", h, f, flags, data); if (!dumper) return NULL; dumper->count=count; @@ -107,11 +119,11 @@ grib_dumper* grib_dump_content_with_dumper(grib_handle* h, grib_dumper* dumper, return dumper; } -void codes_dump_bufr_flat(grib_accessors_list* al,grib_handle* h, FILE* f,const char* mode,unsigned long option_flags,void *data) +void codes_dump_bufr_flat(grib_accessors_list* al,grib_handle* h, FILE* f,const char* mode,unsigned long flags,void *data) { grib_dumper* dumper = NULL; Assert(h->product_kind == PRODUCT_BUFR); - dumper = grib_dumper_factory(mode?mode:"serialize",h,f,option_flags,data); + dumper = grib_dumper_factory(mode?mode:"serialize", h, f, flags, data); grib_dump_header(dumper,h); grib_dump_accessors_list(dumper,al); grib_dump_footer(dumper,h); diff --git a/tools/grib_dump.c b/tools/grib_dump.c index 0b7c09cbf..dc69c8bba 100644 --- a/tools/grib_dump.c +++ b/tools/grib_dump.c @@ -169,6 +169,7 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) { long length=0; int i,err=0; + grib_context* c = h->context; if (grib_get_long(h,"totalLength",&length) != GRIB_SUCCESS) length=-9999; @@ -178,24 +179,27 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) if( err != GRIB_SUCCESS && options->fail) exit(err); } - for (i=0;iprint_keys_count;i++) { - const char* key_name = options->print_keys[i].name; - grib_accessor* a = NULL; - err = grib_set_flag(h, key_name, GRIB_ACCESSOR_FLAG_DUMP); - if (err) { - grib_context_log(h->context,GRIB_LOG_ERROR, "%s: %s", key_name, grib_get_error_message(err)); - exit(err); - } - a=grib_find_accessor(h, key_name); - if (a) { - grib_dumper *dumper; - dumper = grib_dumper_factory(options->dump_mode?options->dump_mode:"serialize",h,stdout,options->dump_flags,NULL); - grib_accessor_dump(a, dumper); - grib_dumper_delete(dumper); + /* ECC-961 */ + if (dump_keys && options->print_keys_count > 0) { + int errors = 0; /* true if at least one error */ + const int key_count_total = options->print_keys_count; + int key_count_valid = 0; /* Some requested keys may be invalid */ + const char** key_names=(const char**)grib_context_malloc_clear(c, sizeof(char*)*key_count_total); + for (i=0;iprint_keys[i].name; + err = grib_set_flag(h, key_name, GRIB_ACCESSOR_FLAG_DUMP); + if (err) { + grib_context_log(c,GRIB_LOG_ERROR, "%s: %s", key_name, grib_get_error_message(err)); + errors = 1; + } else { + key_names[key_count_valid]=key_name; + key_count_valid++; + } } + grib_dump_keys(h, stdout, options->dump_mode, options->dump_flags, 0, key_names, key_count_valid); + grib_context_free(c, key_names); + return errors; } - if (dump_keys && options->print_keys_count > 0) - return 0; if(json) { if (!first_handle && options->handle_count>1) { From 5a5c68e0aa812975658bd40e1a8f40670d83bfb9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 31 Jul 2019 12:36:49 +0100 Subject: [PATCH 353/414] Added new function codes_check_message_header_footer --- src/eccodes.h | 1 + src/grib_handle.c | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/eccodes.h b/src/eccodes.h index a0d5ed9ba..cf24b3e09 100644 --- a/src/eccodes.h +++ b/src/eccodes.h @@ -1209,6 +1209,7 @@ void codes_get_reduced_row_p(long pl, double lon_first, double lon_last, long *n int codes_get_message_offset(codes_handle* h,off_t* offset); int codes_get_message_size(codes_handle* h,size_t* size); int codes_get_product_kind(codes_handle* h, ProductKind* product_kind); +int codes_check_message_header_footer(const unsigned char* bytes, size_t length, ProductKind product); codes_box* codes_box_new(codes_handle* h,int* error); codes_points* codes_box_get_points(codes_box *box,double north, double west,double south,double east, int *err); diff --git a/src/grib_handle.c b/src/grib_handle.c index 00dd44474..50e3c6743 100644 --- a/src/grib_handle.c +++ b/src/grib_handle.c @@ -1295,6 +1295,28 @@ int codes_get_product_kind(grib_handle* h, ProductKind* product_kind) return GRIB_NULL_HANDLE; } +int codes_check_message_header_footer(const unsigned char* bytes, size_t length, ProductKind product) +{ + Assert(bytes); + Assert(product == PRODUCT_GRIB || product == PRODUCT_BUFR); /* Others not yet implemented */ + if (product == PRODUCT_GRIB) { + if (bytes[0] != 'G' || bytes[1] != 'R' || bytes[2] != 'I' || bytes[3] != 'B') + return GRIB_INVALID_MESSAGE; + } + else if (product == PRODUCT_BUFR) { + if (bytes[0] != 'B' || bytes[1] != 'U' || bytes[2] != 'F' || bytes[3] != 'R') + return GRIB_INVALID_MESSAGE; + } + else { + return GRIB_NOT_IMPLEMENTED; + } + + if (bytes[length-4] != '7' || bytes[length-3] != '7' || bytes[length-2] != '7' || bytes[length-1] != '7') { + return GRIB_7777_NOT_FOUND; + } + return GRIB_SUCCESS; +} + int grib_get_message_size ( grib_handle* h,size_t* size ) { long totalLength=0; From 35d7533d71f4488c6af6c7546c1658d3f029f4a6 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 31 Jul 2019 12:45:15 +0100 Subject: [PATCH 354/414] Tests for header/footer check --- examples/C/bufr_clone.c | 4 +- examples/C/bufr_clone.sh | 32 +++--- tests/bufr_ecc-517.c | 196 +++++++++++++++++++------------------ tests/grib_util_set_spec.c | 2 + 4 files changed, 125 insertions(+), 109 deletions(-) diff --git a/examples/C/bufr_clone.c b/examples/C/bufr_clone.c index 582fd8e87..e354700fa 100644 --- a/examples/C/bufr_clone.c +++ b/examples/C/bufr_clone.c @@ -75,9 +75,9 @@ int main(int argc, char *argv[]) } /* This is the place where you may wish to modify the clone - E.g. we change the bufrHeaderCentre */ + E.g. we change the typicalDay key */ - CODES_CHECK(codes_set_long(clone_handle, "bufrHeaderCentre", 222),0); + CODES_CHECK(codes_set_long(clone_handle, "typicalDay", 20+i),0); /* get the coded message in a buffer */ CODES_CHECK(codes_get_message(clone_handle, &buffer, &size),0); diff --git a/examples/C/bufr_clone.sh b/examples/C/bufr_clone.sh index 8b1520e49..88554effa 100755 --- a/examples/C/bufr_clone.sh +++ b/examples/C/bufr_clone.sh @@ -9,32 +9,36 @@ . ./include.sh -#Define a common label for all the tmp files +# Define a common label for all the tmp files label="bufr_clone_test_c" -#Prepare tmp file -fBufrTmp=${label}.cloned.bufr -rm -f $fBufrTmp | true +fBufrTmp1=${label}.cloned1.bufr +fBufrTmp2=${label}.cloned2.bufr +rm -f $fBufrTmp1 $fBufrTmp2 -#We clone this bufr file +# We clone this bufr file f=${data_dir}/bufr/syno_1.bufr REDIRECT=/dev/null -#Clone the bufr messages -${examples_dir}/c_bufr_clone $f $fBufrTmp >$REDIRECT 2> $REDIRECT +# Clone the bufr message and change something +${examples_dir}/c_bufr_clone $f $fBufrTmp1 -#Compare clone to the original +# There should be 3 messages in the new file +count=`${tools_dir}/bufr_count $fBufrTmp1` +[ $count -eq 3 ] + +# Compare the first message to the original. It should be different +${tools_dir}/bufr_copy -w count=1 $fBufrTmp1 $fBufrTmp2 set +e -${tools_dir}/bufr_compare $f $fBufrTmp >$REDIRECT 2> $REDIRECT +${tools_dir}/bufr_compare $f $fBufrTmp2 -#Check if clone is different +# bufr_compare should have returned 1 if [ $? -eq 0 ]; then - echo "cloning produced identical files " >&2 + echo "Error: Clones messages should be different!" >&2 exit 1 fi - set -e -#Clean up -rm -f ${fBufrTmp} | true +# Clean up +rm -f $fBufrTmp1 $fBufrTmp2 diff --git a/tests/bufr_ecc-517.c b/tests/bufr_ecc-517.c index f27d46e6b..4d0d7d6a8 100644 --- a/tests/bufr_ecc-517.c +++ b/tests/bufr_ecc-517.c @@ -10,105 +10,115 @@ #include "eccodes.h" #include -int main(int argc, char** argv) +int main (int argc, char **argv) { - size_t size=0; - const void* buffer = NULL; - FILE* fout = NULL; - codes_handle* h = NULL; - long* ivalues = NULL; - char** svalues = NULL; - double* rvalues = NULL; - const char* sampleName = "BUFR3_local"; - char* outfilename = NULL; + size_t size = 0; + const void *buffer = NULL; + FILE *fout = NULL; + codes_handle *h = NULL; + long *ivalues = NULL; + char **svalues = NULL; + double *rvalues = NULL; + const char *sampleName = "BUFR3_local"; + char *outfilename = NULL; - assert(argc == 2); - outfilename = argv[1]; + assert (argc == 2); + outfilename = argv[1]; - h = codes_bufr_handle_new_from_samples(NULL, sampleName); - assert(h); + h = codes_bufr_handle_new_from_samples (NULL, sampleName); + assert (h); - ivalues = (long*)malloc(1*sizeof(long)); - if (!ivalues) { fprintf(stderr, "Failed to allocate memory (ivalues).\n"); return 1; } - size = 1;ivalues[0]=1; - CODES_CHECK(codes_set_long_array(h, "inputDelayedDescriptorReplicationFactor", ivalues, size), 0); - - ivalues = (long*)malloc(1*sizeof(long)); - size = 1;ivalues[0]=486; - CODES_CHECK(codes_set_long_array(h, "inputExtendedDelayedDescriptorReplicationFactor", ivalues, size), 0); - - CODES_CHECK(codes_set_long(h, "edition", 3), 0); - CODES_CHECK(codes_set_long(h, "masterTableNumber", 0), 0); - CODES_CHECK(codes_set_long(h, "bufrHeaderSubCentre", 0), 0); - CODES_CHECK(codes_set_long(h, "bufrHeaderCentre", 98), 0); - CODES_CHECK(codes_set_long(h, "updateSequenceNumber", 0), 0); - CODES_CHECK(codes_set_long(h, "dataCategory", 2), 0); - CODES_CHECK(codes_set_long(h, "dataSubCategory", 109), 0); - CODES_CHECK(codes_set_long(h, "masterTablesVersionNumber", 13), 0); - CODES_CHECK(codes_set_long(h, "localTablesVersionNumber", 1), 0); - CODES_CHECK(codes_set_long(h, "typicalYearOfCentury", 17), 0); - CODES_CHECK(codes_set_long(h, "typicalMonth", 8), 0); - CODES_CHECK(codes_set_long(h, "typicalDay", 6), 0); - CODES_CHECK(codes_set_long(h, "typicalHour", 11), 0); - CODES_CHECK(codes_set_long(h, "typicalMinute", 15), 0); - CODES_CHECK(codes_set_long(h, "rdbType", 5), 0); - CODES_CHECK(codes_set_long(h, "oldSubtype", 109), 0); - CODES_CHECK(codes_set_long(h, "rdbtimeDay", 7), 0); - CODES_CHECK(codes_set_long(h, "rdbtimeHour", 11), 0); - CODES_CHECK(codes_set_long(h, "rdbtimeMinute", 13), 0); - CODES_CHECK(codes_set_long(h, "rdbtimeSecond", 46), 0); - CODES_CHECK(codes_set_long(h, "rectimeDay", 7), 0); - CODES_CHECK(codes_set_long(h, "rectimeHour", 11), 0); - CODES_CHECK(codes_set_long(h, "rectimeMinute", 13), 0); - CODES_CHECK(codes_set_long(h, "rectimeSecond", 46), 0); - CODES_CHECK(codes_set_long(h, "correction1", 0), 0); - CODES_CHECK(codes_set_long(h, "correction1Part", 0), 0); - CODES_CHECK(codes_set_long(h, "correction2", 0), 0); - CODES_CHECK(codes_set_long(h, "correction2Part", 0), 0); - CODES_CHECK(codes_set_long(h, "correction3", 0), 0); - CODES_CHECK(codes_set_long(h, "correction3Part", 0), 0); - CODES_CHECK(codes_set_long(h, "correction4", 0), 0); - CODES_CHECK(codes_set_long(h, "correction4Part", 0), 0); - CODES_CHECK(codes_set_long(h, "qualityControl", 70), 0); - CODES_CHECK(codes_set_long(h, "newSubtype", 0), 0); - CODES_CHECK(codes_set_long(h, "numberOfSubsets", 1), 0); - CODES_CHECK(codes_set_double(h, "localLatitude", 5.450296999999999770e+01), 0); - CODES_CHECK(codes_set_double(h, "localLongitude", -6.343119999999999870e+00), 0); - CODES_CHECK(codes_set_long(h, "observedData", 1), 0); - CODES_CHECK(codes_set_long(h, "compressedData", 0), 0); - free(ivalues); ivalues = NULL; + ivalues = (long *) malloc (1 * sizeof (long)); + if (!ivalues) { + fprintf (stderr, "Failed to allocate memory (ivalues).\n"); + return 1; + } + size = 1; + ivalues[0] = 1; + CODES_CHECK (codes_set_long_array (h, "inputDelayedDescriptorReplicationFactor", ivalues, size), 0); - ivalues = (long*)malloc(9*sizeof(long)); - if (!ivalues) { fprintf(stderr, "Failed to allocate memory (ivalues).\n"); return 1; } - size = 4; - ivalues[0]= 309052; - ivalues[1]= 5001; - ivalues[2]= 6001; - ivalues[3]= 7001; - CODES_CHECK(codes_set_long_array(h, "unexpandedDescriptors", ivalues, size), 0); + ivalues = (long *) malloc (1 * sizeof (long)); + size = 1; + ivalues[0] = 486; + CODES_CHECK (codes_set_long_array (h, "inputExtendedDelayedDescriptorReplicationFactor", ivalues, size), 0); - /* Encode the keys back in the data section */ - CODES_CHECK(codes_set_long(h, "pack", 1), 0); + CODES_CHECK (codes_set_long (h, "edition", 3), 0); + CODES_CHECK (codes_set_long (h, "masterTableNumber", 0), 0); + CODES_CHECK (codes_set_long (h, "bufrHeaderSubCentre", 0), 0); + CODES_CHECK (codes_set_long (h, "bufrHeaderCentre", 98), 0); + CODES_CHECK (codes_set_long (h, "updateSequenceNumber", 0), 0); + CODES_CHECK (codes_set_long (h, "dataCategory", 2), 0); + CODES_CHECK (codes_set_long (h, "dataSubCategory", 109), 0); + CODES_CHECK (codes_set_long (h, "masterTablesVersionNumber", 13), 0); + CODES_CHECK (codes_set_long (h, "localTablesVersionNumber", 1), 0); + CODES_CHECK (codes_set_long (h, "typicalYearOfCentury", 17), 0); + CODES_CHECK (codes_set_long (h, "typicalMonth", 8), 0); + CODES_CHECK (codes_set_long (h, "typicalDay", 6), 0); + CODES_CHECK (codes_set_long (h, "typicalHour", 11), 0); + CODES_CHECK (codes_set_long (h, "typicalMinute", 15), 0); + CODES_CHECK (codes_set_long (h, "rdbType", 5), 0); + CODES_CHECK (codes_set_long (h, "oldSubtype", 109), 0); + CODES_CHECK (codes_set_long (h, "rdbtimeDay", 7), 0); + CODES_CHECK (codes_set_long (h, "rdbtimeHour", 11), 0); + CODES_CHECK (codes_set_long (h, "rdbtimeMinute", 13), 0); + CODES_CHECK (codes_set_long (h, "rdbtimeSecond", 46), 0); + CODES_CHECK (codes_set_long (h, "rectimeDay", 7), 0); + CODES_CHECK (codes_set_long (h, "rectimeHour", 11), 0); + CODES_CHECK (codes_set_long (h, "rectimeMinute", 13), 0); + CODES_CHECK (codes_set_long (h, "rectimeSecond", 46), 0); + CODES_CHECK (codes_set_long (h, "correction1", 0), 0); + CODES_CHECK (codes_set_long (h, "correction1Part", 0), 0); + CODES_CHECK (codes_set_long (h, "correction2", 0), 0); + CODES_CHECK (codes_set_long (h, "correction2Part", 0), 0); + CODES_CHECK (codes_set_long (h, "correction3", 0), 0); + CODES_CHECK (codes_set_long (h, "correction3Part", 0), 0); + CODES_CHECK (codes_set_long (h, "correction4", 0), 0); + CODES_CHECK (codes_set_long (h, "correction4Part", 0), 0); + CODES_CHECK (codes_set_long (h, "qualityControl", 70), 0); + CODES_CHECK (codes_set_long (h, "newSubtype", 0), 0); + CODES_CHECK (codes_set_long (h, "numberOfSubsets", 1), 0); + CODES_CHECK (codes_set_double (h, "localLatitude", 5.450296999999999770e+01), 0); + CODES_CHECK (codes_set_double (h, "localLongitude", -6.343119999999999870e+00), 0); + CODES_CHECK (codes_set_long (h, "observedData", 1), 0); + CODES_CHECK (codes_set_long (h, "compressedData", 0), 0); + free (ivalues); + ivalues = NULL; - fout = fopen(outfilename, "wb"); - if (!fout) { - fprintf(stderr, "Failed to open (create) output file.\n"); - return 1; - } - CODES_CHECK(codes_get_message(h,&buffer,&size),0); - if (fwrite(buffer,1,size,fout) != size) { - fprintf(stderr, "Failed to write data.\n"); - return 1; - } - if (fclose(fout)!=0) { - fprintf(stderr, "Failed to close file handle.\n"); - return 1; - } - - codes_handle_delete(h); - free(ivalues); ivalues = NULL; - free(rvalues); rvalues = NULL; - free(svalues); svalues = NULL; + ivalues = (long *) malloc (9 * sizeof (long)); + if (!ivalues) { + fprintf (stderr, "Failed to allocate memory (ivalues).\n"); + return 1; + } + size = 4; + ivalues[0] = 309052; + ivalues[1] = 5001; + ivalues[2] = 6001; + ivalues[3] = 7001; + CODES_CHECK (codes_set_long_array (h, "unexpandedDescriptors", ivalues, size), 0); - return 0; + /* Encode the keys back in the data section */ + CODES_CHECK (codes_set_long (h, "pack", 1), 0); + + fout = fopen (outfilename, "wb"); + if (!fout) { + fprintf (stderr, "Failed to open (create) output file.\n"); + return 1; + } + CODES_CHECK (codes_get_message (h, &buffer, &size), 0); + CODES_CHECK (codes_check_message_header_footer (buffer, size, PRODUCT_BUFR), 0); + if (fwrite (buffer, 1, size, fout) != size) { + fprintf (stderr, "Failed to write data.\n"); + return 1; + } + if (fclose (fout) != 0) { + fprintf (stderr, "Failed to close file handle.\n"); + return 1; + } + + codes_handle_delete (h); + free (ivalues); + free (rvalues); + free (svalues); + + return 0; } diff --git a/tests/grib_util_set_spec.c b/tests/grib_util_set_spec.c index 022792634..cb5546515 100644 --- a/tests/grib_util_set_spec.c +++ b/tests/grib_util_set_spec.c @@ -225,6 +225,7 @@ static void test_regular_ll(int remove_local_def, int edition, const char* packi /* Write out the message to the output file */ CODES_CHECK(codes_get_message(finalh, &buffer, &size),0); + CODES_CHECK(codes_check_message_header_footer(buffer,size,PRODUCT_GRIB),0); if(fwrite(buffer,1,size,out) != size) { assert(0); } @@ -313,6 +314,7 @@ static void test_grid_complex_spatial_differencing(int remove_local_def, int edi /* Write out the message to the output file */ CODES_CHECK(codes_get_message(finalh, &buffer, &size),0); + CODES_CHECK(codes_check_message_header_footer(buffer,size,PRODUCT_GRIB),0); if(fwrite(buffer,1,size,out) != size) { assert(0); } From 071b2051453a390e339ba4c5b20b5a55a6174d43 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 31 Jul 2019 14:10:30 +0100 Subject: [PATCH 355/414] Tests for header/footer check --- tests/grib_util_set_spec.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/grib_util_set_spec.c b/tests/grib_util_set_spec.c index cb5546515..33d64bbac 100644 --- a/tests/grib_util_set_spec.c +++ b/tests/grib_util_set_spec.c @@ -123,6 +123,7 @@ static void test_reduced_gg(int remove_local_def, int edition, const char* packi /* Write out the message to the output file */ CODES_CHECK(grib_get_message(finalh, &buffer, &size),0); + CODES_CHECK(codes_check_message_header_footer(buffer,size,PRODUCT_GRIB),0); if(fwrite(buffer,1,size,out) != size) { assert(0); } From 637039fa753e941368e0aeac8012cd8dacf55028 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 31 Jul 2019 15:55:22 +0100 Subject: [PATCH 356/414] Change data type of codes_check_message_header_footer --- src/eccodes.h | 2 +- src/grib_handle.c | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/eccodes.h b/src/eccodes.h index cf24b3e09..ae3e11f9f 100644 --- a/src/eccodes.h +++ b/src/eccodes.h @@ -1209,7 +1209,7 @@ void codes_get_reduced_row_p(long pl, double lon_first, double lon_last, long *n int codes_get_message_offset(codes_handle* h,off_t* offset); int codes_get_message_size(codes_handle* h,size_t* size); int codes_get_product_kind(codes_handle* h, ProductKind* product_kind); -int codes_check_message_header_footer(const unsigned char* bytes, size_t length, ProductKind product); +int codes_check_message_header_footer(const void* bytes, size_t length, ProductKind product); codes_box* codes_box_new(codes_handle* h,int* error); codes_points* codes_box_get_points(codes_box *box,double north, double west,double south,double east, int *err); diff --git a/src/grib_handle.c b/src/grib_handle.c index 50e3c6743..a05658e94 100644 --- a/src/grib_handle.c +++ b/src/grib_handle.c @@ -1295,23 +1295,24 @@ int codes_get_product_kind(grib_handle* h, ProductKind* product_kind) return GRIB_NULL_HANDLE; } -int codes_check_message_header_footer(const unsigned char* bytes, size_t length, ProductKind product) +int codes_check_message_header_footer(const void* bytes, size_t length, ProductKind product) { - Assert(bytes); + const char *p = ((const char*)bytes); + Assert(p); Assert(product == PRODUCT_GRIB || product == PRODUCT_BUFR); /* Others not yet implemented */ if (product == PRODUCT_GRIB) { - if (bytes[0] != 'G' || bytes[1] != 'R' || bytes[2] != 'I' || bytes[3] != 'B') + if (p[0] != 'G' || p[1] != 'R' || p[2] != 'I' || p[3] != 'B') return GRIB_INVALID_MESSAGE; } else if (product == PRODUCT_BUFR) { - if (bytes[0] != 'B' || bytes[1] != 'U' || bytes[2] != 'F' || bytes[3] != 'R') + if (p[0] != 'B' || p[1] != 'U' || p[2] != 'F' || p[3] != 'R') return GRIB_INVALID_MESSAGE; } else { return GRIB_NOT_IMPLEMENTED; } - if (bytes[length-4] != '7' || bytes[length-3] != '7' || bytes[length-2] != '7' || bytes[length-1] != '7') { + if (p[length-4] != '7' || p[length-3] != '7' || p[length-2] != '7' || p[length-1] != '7') { return GRIB_7777_NOT_FOUND; } return GRIB_SUCCESS; From 3fc3ec85bb276da2ff5b22d41ab15910ab2e2057 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 31 Jul 2019 16:07:19 +0100 Subject: [PATCH 357/414] Split codes_check_message_header_footer --- src/eccodes.h | 3 ++- src/grib_handle.c | 11 ++++++++++- tests/bufr_ecc-517.c | 3 ++- tests/grib_util_set_spec.c | 7 ++++--- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/eccodes.h b/src/eccodes.h index ae3e11f9f..40c4c564e 100644 --- a/src/eccodes.h +++ b/src/eccodes.h @@ -1209,7 +1209,8 @@ void codes_get_reduced_row_p(long pl, double lon_first, double lon_last, long *n int codes_get_message_offset(codes_handle* h,off_t* offset); int codes_get_message_size(codes_handle* h,size_t* size); int codes_get_product_kind(codes_handle* h, ProductKind* product_kind); -int codes_check_message_header_footer(const void* bytes, size_t length, ProductKind product); +int codes_check_message_header(const void* bytes, size_t length, ProductKind product); +int codes_check_message_footer(const void* bytes, size_t length, ProductKind product); codes_box* codes_box_new(codes_handle* h,int* error); codes_points* codes_box_get_points(codes_box *box,double north, double west,double south,double east, int *err); diff --git a/src/grib_handle.c b/src/grib_handle.c index a05658e94..adf54e7a0 100644 --- a/src/grib_handle.c +++ b/src/grib_handle.c @@ -1295,11 +1295,12 @@ int codes_get_product_kind(grib_handle* h, ProductKind* product_kind) return GRIB_NULL_HANDLE; } -int codes_check_message_header_footer(const void* bytes, size_t length, ProductKind product) +int codes_check_message_header(const void* bytes, size_t length, ProductKind product) { const char *p = ((const char*)bytes); Assert(p); Assert(product == PRODUCT_GRIB || product == PRODUCT_BUFR); /* Others not yet implemented */ + Assert(length > 4); if (product == PRODUCT_GRIB) { if (p[0] != 'G' || p[1] != 'R' || p[2] != 'I' || p[3] != 'B') return GRIB_INVALID_MESSAGE; @@ -1312,6 +1313,14 @@ int codes_check_message_header_footer(const void* bytes, size_t length, ProductK return GRIB_NOT_IMPLEMENTED; } + return GRIB_SUCCESS; +} +int codes_check_message_footer(const void* bytes, size_t length, ProductKind product) +{ + const char *p = ((const char*)bytes); + Assert(p); + Assert(product == PRODUCT_GRIB || product == PRODUCT_BUFR); /* Others not yet implemented */ + if (p[length-4] != '7' || p[length-3] != '7' || p[length-2] != '7' || p[length-1] != '7') { return GRIB_7777_NOT_FOUND; } diff --git a/tests/bufr_ecc-517.c b/tests/bufr_ecc-517.c index 4d0d7d6a8..34ea62ea8 100644 --- a/tests/bufr_ecc-517.c +++ b/tests/bufr_ecc-517.c @@ -105,7 +105,8 @@ int main (int argc, char **argv) return 1; } CODES_CHECK (codes_get_message (h, &buffer, &size), 0); - CODES_CHECK (codes_check_message_header_footer (buffer, size, PRODUCT_BUFR), 0); + CODES_CHECK (codes_check_message_header(buffer, size, PRODUCT_BUFR), 0); + CODES_CHECK (codes_check_message_footer(buffer, size, PRODUCT_BUFR), 0); if (fwrite (buffer, 1, size, fout) != size) { fprintf (stderr, "Failed to write data.\n"); return 1; diff --git a/tests/grib_util_set_spec.c b/tests/grib_util_set_spec.c index 33d64bbac..6bf315070 100644 --- a/tests/grib_util_set_spec.c +++ b/tests/grib_util_set_spec.c @@ -123,7 +123,8 @@ static void test_reduced_gg(int remove_local_def, int edition, const char* packi /* Write out the message to the output file */ CODES_CHECK(grib_get_message(finalh, &buffer, &size),0); - CODES_CHECK(codes_check_message_header_footer(buffer,size,PRODUCT_GRIB),0); + CODES_CHECK(codes_check_message_header(buffer,size,PRODUCT_GRIB),0); + CODES_CHECK(codes_check_message_footer(buffer,size,PRODUCT_GRIB),0); if(fwrite(buffer,1,size,out) != size) { assert(0); } @@ -226,7 +227,8 @@ static void test_regular_ll(int remove_local_def, int edition, const char* packi /* Write out the message to the output file */ CODES_CHECK(codes_get_message(finalh, &buffer, &size),0); - CODES_CHECK(codes_check_message_header_footer(buffer,size,PRODUCT_GRIB),0); + CODES_CHECK(codes_check_message_header(buffer,size,PRODUCT_GRIB),0); + CODES_CHECK(codes_check_message_footer(buffer,size,PRODUCT_GRIB),0); if(fwrite(buffer,1,size,out) != size) { assert(0); } @@ -315,7 +317,6 @@ static void test_grid_complex_spatial_differencing(int remove_local_def, int edi /* Write out the message to the output file */ CODES_CHECK(codes_get_message(finalh, &buffer, &size),0); - CODES_CHECK(codes_check_message_header_footer(buffer,size,PRODUCT_GRIB),0); if(fwrite(buffer,1,size,out) != size) { assert(0); } From 056e93e3d6157d683406ae6300454d32bd4c2754 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 1 Aug 2019 11:33:48 +0100 Subject: [PATCH 358/414] ECC-963: Update parameters shortnames/names --- definitions/grib1/2.98.172.table | 26 ++++----- definitions/grib1/2.98.173.table | 2 +- .../grib1/localConcepts/ecmf/cfVarName.def | 56 +++++++++---------- definitions/grib1/localConcepts/ecmf/name.def | 56 +++++++++---------- .../grib1/localConcepts/ecmf/paramId.def | 28 +++++----- .../grib1/localConcepts/ecmf/shortName.def | 56 +++++++++---------- .../grib1/localConcepts/ecmf/units.def | 28 +++++----- .../grib2/localConcepts/ecmf/cfVarName.def | 56 +++++++++---------- definitions/grib2/localConcepts/ecmf/name.def | 56 +++++++++---------- .../grib2/localConcepts/ecmf/paramId.def | 28 +++++----- .../grib2/localConcepts/ecmf/shortName.def | 56 +++++++++---------- .../grib2/localConcepts/ecmf/units.def | 28 +++++----- 12 files changed, 238 insertions(+), 238 deletions(-) diff --git a/definitions/grib1/2.98.172.table b/definitions/grib1/2.98.172.table index 37a3c2f15..5d8f8653c 100644 --- a/definitions/grib1/2.98.172.table +++ b/definitions/grib1/2.98.172.table @@ -4,22 +4,22 @@ 44 44 ESRATE Snow evaporation (m of water s**-1) 45 45 - Snowmelt (m of water s**-1) 48 48 - Magnitude of turbulent surface stress (N m**-2) -50 50 - Large-scale precipitation fraction (~) +50 50 MLSPFR Mean large-scale precipitation fraction (~) 142 142 MLSPRT Mean large-scale precipitation rate (m s**-1) 143 143 CPRATE Mean convective precipitation rate (m s**-1) 144 144 - Snowfall (convective + stratiform) (m of water equivalent s**-1) 145 145 BLDRATE Boundary layer dissipation (W m**-2) -146 146 - Surface sensible heat flux (W m**-2) -147 147 - Surface latent heat flux (W m**-2) -149 149 - Surface net radiation (W m**-2) -153 153 - Short-wave heating rate (K s**-1) -154 154 - Long-wave heating rate (K s**-1) -169 169 - Surface solar radiation downwards (W m**-2) -175 175 - Surface thermal radiation downwards (W m**-2) -176 176 - Surface solar radiation (W m**-2) -177 177 - Surface thermal radiation (W m**-2) -178 178 - Top solar radiation (W m**-2) -179 179 - Top thermal radiation (W m**-2) +146 146 MSSHFL Mean surface sensible heat flux (W m**-2) +147 147 MSLHFL Mean surface latent heat flux (W m**-2) +149 149 MSNRF Mean surface net radiation flux (W m**-2) +153 153 MSWHR Mean short-wave heating rate (K s**-1) +154 154 MLWHR Mean long-wave heating rate (K s**-1) +169 169 MSDSRF Mean surface downward solar radiation flux (W m**-2) +175 175 MSDTRF Mean surface downward thermal radiation flux (W m**-2) +176 176 MSNSRF Mean surface net solar radiation flux (W m**-2) +177 177 MSNTRF Mean surface net thermal radiation flux (W m**-2) +178 178 MTNSRF Mean top net solar radiation flux (W m**-2) +179 179 MTNTRF Mean top net thermal radiation flux (W m**-2) 180 180 EWSSRA East-West surface stress rate of accumulation (N m**-2) 181 181 NSSSRA North-South surface stress rate of accumulation (N m**-2) 182 182 ERATE Evaporation (m of water s**-1) @@ -27,7 +27,7 @@ 195 195 - Longitudinal component of gravity wave stress (N m**-2) 196 196 - Meridional component of gravity wave stress (N m**-2) 197 197 GWDRATE Gravity wave dissipation (W m**-2) -205 205 - Runoff (m s**-1) +205 205 MRORT Mean runoff rate (m s**-1) 208 208 - Top net solar radiation, clear sky (W m**-2) 209 209 - Top net thermal radiation, clear sky (W m**-2) 210 210 - Surface net solar radiation, clear sky (W m**-2) diff --git a/definitions/grib1/2.98.173.table b/definitions/grib1/2.98.173.table index 3e5342965..e16e9a700 100644 --- a/definitions/grib1/2.98.173.table +++ b/definitions/grib1/2.98.173.table @@ -6,7 +6,7 @@ 48 48 - Magnitude of turbulent surface stress anomaly (N m**-2) 50 50 - Large-scale precipitation fraction anomaly (~) 142 142 LSPARA Stratiform precipitation (Large-scale precipitation) anomalous rate of accumulation (m s**-1) -143 143 - Convective precipitation anomaly (m s**-1) +143 143 MCPRA Mean convective precipitation rate anomaly (m s**-1) 144 144 SFARA Snowfall (convective + stratiform) anomalous rate of accumulation (m of water equivalent s**-1) 145 145 - Boundary layer dissipation anomaly (J m**-2) 146 146 SSHFARA Surface sensible heat flux anomalous rate of accumulation (J m**-2) diff --git a/definitions/grib1/localConcepts/ecmf/cfVarName.def b/definitions/grib1/localConcepts/ecmf/cfVarName.def index e83fa6b8f..70819a846 100644 --- a/definitions/grib1/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib1/localConcepts/ecmf/cfVarName.def @@ -14629,8 +14629,8 @@ table2Version = 172 ; indicatorOfParameter = 48 ; } -#Large-scale precipitation fraction -'p50.172' = { +#Mean large-scale precipitation fraction +'mlspfr' = { table2Version = 172 ; indicatorOfParameter = 50 ; } @@ -14654,58 +14654,58 @@ table2Version = 172 ; indicatorOfParameter = 145 ; } -#Surface sensible heat flux -'p146.172' = { +#Mean surface sensible heat flux +'msshfl' = { table2Version = 172 ; indicatorOfParameter = 146 ; } -#Surface latent heat flux -'p147.172' = { +#Mean surface latent heat flux +'mslhfl' = { table2Version = 172 ; indicatorOfParameter = 147 ; } -#Surface net radiation -'p149.172' = { +#Mean surface net radiation flux +'msnrf' = { table2Version = 172 ; indicatorOfParameter = 149 ; } -#Short-wave heating rate -'p153.172' = { +#Mean short-wave heating rate +'mswhr' = { table2Version = 172 ; indicatorOfParameter = 153 ; } -#Long-wave heating rate -'p154.172' = { +#Mean long-wave heating rate +'mlwhr' = { table2Version = 172 ; indicatorOfParameter = 154 ; } -#Surface solar radiation downwards -'p169.172' = { +#Mean surface downward solar radiation flux +'msdsrf' = { table2Version = 172 ; indicatorOfParameter = 169 ; } -#Surface thermal radiation downwards -'p175.172' = { +#Mean surface downward thermal radiation flux +'msdtrf' = { table2Version = 172 ; indicatorOfParameter = 175 ; } -#Surface solar radiation -'p176.172' = { +#Mean surface net solar radiation flux +'msnsrf' = { table2Version = 172 ; indicatorOfParameter = 176 ; } -#Surface thermal radiation -'p177.172' = { +#Mean surface net thermal radiation flux +'msntrf' = { table2Version = 172 ; indicatorOfParameter = 177 ; } -#Top solar radiation -'p178.172' = { +#Mean top net solar radiation flux +'mtnsrf' = { table2Version = 172 ; indicatorOfParameter = 178 ; } -#Top thermal radiation -'p179.172' = { +#Mean top net thermal radiation flux +'mtntrf' = { table2Version = 172 ; indicatorOfParameter = 179 ; } @@ -14744,8 +14744,8 @@ table2Version = 172 ; indicatorOfParameter = 197 ; } -#Runoff -'p205.172' = { +#Mean runoff rate +'mrort' = { table2Version = 172 ; indicatorOfParameter = 205 ; } @@ -14819,8 +14819,8 @@ table2Version = 173 ; indicatorOfParameter = 142 ; } -#Convective precipitation anomaly -'p143.173' = { +#Mean convective precipitation rate anomaly +'mcpra' = { table2Version = 173 ; indicatorOfParameter = 143 ; } diff --git a/definitions/grib1/localConcepts/ecmf/name.def b/definitions/grib1/localConcepts/ecmf/name.def index 275de73d2..8bb75fe63 100644 --- a/definitions/grib1/localConcepts/ecmf/name.def +++ b/definitions/grib1/localConcepts/ecmf/name.def @@ -14629,8 +14629,8 @@ table2Version = 172 ; indicatorOfParameter = 48 ; } -#Large-scale precipitation fraction -'Large-scale precipitation fraction' = { +#Mean large-scale precipitation fraction +'Mean large-scale precipitation fraction' = { table2Version = 172 ; indicatorOfParameter = 50 ; } @@ -14654,58 +14654,58 @@ table2Version = 172 ; indicatorOfParameter = 145 ; } -#Surface sensible heat flux -'Surface sensible heat flux' = { +#Mean surface sensible heat flux +'Mean surface sensible heat flux' = { table2Version = 172 ; indicatorOfParameter = 146 ; } -#Surface latent heat flux -'Surface latent heat flux' = { +#Mean surface latent heat flux +'Mean surface latent heat flux' = { table2Version = 172 ; indicatorOfParameter = 147 ; } -#Surface net radiation -'Surface net radiation' = { +#Mean surface net radiation flux +'Mean surface net radiation flux' = { table2Version = 172 ; indicatorOfParameter = 149 ; } -#Short-wave heating rate -'Short-wave heating rate' = { +#Mean short-wave heating rate +'Mean short-wave heating rate' = { table2Version = 172 ; indicatorOfParameter = 153 ; } -#Long-wave heating rate -'Long-wave heating rate' = { +#Mean long-wave heating rate +'Mean long-wave heating rate' = { table2Version = 172 ; indicatorOfParameter = 154 ; } -#Surface solar radiation downwards -'Surface solar radiation downwards' = { +#Mean surface downward solar radiation flux +'Mean surface downward solar radiation flux' = { table2Version = 172 ; indicatorOfParameter = 169 ; } -#Surface thermal radiation downwards -'Surface thermal radiation downwards' = { +#Mean surface downward thermal radiation flux +'Mean surface downward thermal radiation flux' = { table2Version = 172 ; indicatorOfParameter = 175 ; } -#Surface solar radiation -'Surface solar radiation' = { +#Mean surface net solar radiation flux +'Mean surface net solar radiation flux' = { table2Version = 172 ; indicatorOfParameter = 176 ; } -#Surface thermal radiation -'Surface thermal radiation' = { +#Mean surface net thermal radiation flux +'Mean surface net thermal radiation flux' = { table2Version = 172 ; indicatorOfParameter = 177 ; } -#Top solar radiation -'Top solar radiation' = { +#Mean top net solar radiation flux +'Mean top net solar radiation flux' = { table2Version = 172 ; indicatorOfParameter = 178 ; } -#Top thermal radiation -'Top thermal radiation' = { +#Mean top net thermal radiation flux +'Mean top net thermal radiation flux' = { table2Version = 172 ; indicatorOfParameter = 179 ; } @@ -14744,8 +14744,8 @@ table2Version = 172 ; indicatorOfParameter = 197 ; } -#Runoff -'Runoff' = { +#Mean runoff rate +'Mean runoff rate' = { table2Version = 172 ; indicatorOfParameter = 205 ; } @@ -14819,8 +14819,8 @@ table2Version = 173 ; indicatorOfParameter = 142 ; } -#Convective precipitation anomaly -'Convective precipitation anomaly' = { +#Mean convective precipitation rate anomaly +'Mean convective precipitation rate anomaly' = { table2Version = 173 ; indicatorOfParameter = 143 ; } diff --git a/definitions/grib1/localConcepts/ecmf/paramId.def b/definitions/grib1/localConcepts/ecmf/paramId.def index 5501d85f7..e7e57b9be 100644 --- a/definitions/grib1/localConcepts/ecmf/paramId.def +++ b/definitions/grib1/localConcepts/ecmf/paramId.def @@ -14629,7 +14629,7 @@ table2Version = 172 ; indicatorOfParameter = 48 ; } -#Large-scale precipitation fraction +#Mean large-scale precipitation fraction '172050' = { table2Version = 172 ; indicatorOfParameter = 50 ; @@ -14654,57 +14654,57 @@ table2Version = 172 ; indicatorOfParameter = 145 ; } -#Surface sensible heat flux +#Mean surface sensible heat flux '172146' = { table2Version = 172 ; indicatorOfParameter = 146 ; } -#Surface latent heat flux +#Mean surface latent heat flux '172147' = { table2Version = 172 ; indicatorOfParameter = 147 ; } -#Surface net radiation +#Mean surface net radiation flux '172149' = { table2Version = 172 ; indicatorOfParameter = 149 ; } -#Short-wave heating rate +#Mean short-wave heating rate '172153' = { table2Version = 172 ; indicatorOfParameter = 153 ; } -#Long-wave heating rate +#Mean long-wave heating rate '172154' = { table2Version = 172 ; indicatorOfParameter = 154 ; } -#Surface solar radiation downwards +#Mean surface downward solar radiation flux '172169' = { table2Version = 172 ; indicatorOfParameter = 169 ; } -#Surface thermal radiation downwards +#Mean surface downward thermal radiation flux '172175' = { table2Version = 172 ; indicatorOfParameter = 175 ; } -#Surface solar radiation +#Mean surface net solar radiation flux '172176' = { table2Version = 172 ; indicatorOfParameter = 176 ; } -#Surface thermal radiation +#Mean surface net thermal radiation flux '172177' = { table2Version = 172 ; indicatorOfParameter = 177 ; } -#Top solar radiation +#Mean top net solar radiation flux '172178' = { table2Version = 172 ; indicatorOfParameter = 178 ; } -#Top thermal radiation +#Mean top net thermal radiation flux '172179' = { table2Version = 172 ; indicatorOfParameter = 179 ; @@ -14744,7 +14744,7 @@ table2Version = 172 ; indicatorOfParameter = 197 ; } -#Runoff +#Mean runoff rate '172205' = { table2Version = 172 ; indicatorOfParameter = 205 ; @@ -14819,7 +14819,7 @@ table2Version = 173 ; indicatorOfParameter = 142 ; } -#Convective precipitation anomaly +#Mean convective precipitation rate anomaly '173143' = { table2Version = 173 ; indicatorOfParameter = 143 ; diff --git a/definitions/grib1/localConcepts/ecmf/shortName.def b/definitions/grib1/localConcepts/ecmf/shortName.def index f91795872..4d0f70675 100644 --- a/definitions/grib1/localConcepts/ecmf/shortName.def +++ b/definitions/grib1/localConcepts/ecmf/shortName.def @@ -14629,8 +14629,8 @@ table2Version = 172 ; indicatorOfParameter = 48 ; } -#Large-scale precipitation fraction -'~' = { +#Mean large-scale precipitation fraction +'mlspfr' = { table2Version = 172 ; indicatorOfParameter = 50 ; } @@ -14654,58 +14654,58 @@ table2Version = 172 ; indicatorOfParameter = 145 ; } -#Surface sensible heat flux -'~' = { +#Mean surface sensible heat flux +'msshfl' = { table2Version = 172 ; indicatorOfParameter = 146 ; } -#Surface latent heat flux -'~' = { +#Mean surface latent heat flux +'mslhfl' = { table2Version = 172 ; indicatorOfParameter = 147 ; } -#Surface net radiation -'~' = { +#Mean surface net radiation flux +'msnrf' = { table2Version = 172 ; indicatorOfParameter = 149 ; } -#Short-wave heating rate -'~' = { +#Mean short-wave heating rate +'mswhr' = { table2Version = 172 ; indicatorOfParameter = 153 ; } -#Long-wave heating rate -'~' = { +#Mean long-wave heating rate +'mlwhr' = { table2Version = 172 ; indicatorOfParameter = 154 ; } -#Surface solar radiation downwards -'~' = { +#Mean surface downward solar radiation flux +'msdsrf' = { table2Version = 172 ; indicatorOfParameter = 169 ; } -#Surface thermal radiation downwards -'~' = { +#Mean surface downward thermal radiation flux +'msdtrf' = { table2Version = 172 ; indicatorOfParameter = 175 ; } -#Surface solar radiation -'~' = { +#Mean surface net solar radiation flux +'msnsrf' = { table2Version = 172 ; indicatorOfParameter = 176 ; } -#Surface thermal radiation -'~' = { +#Mean surface net thermal radiation flux +'msntrf' = { table2Version = 172 ; indicatorOfParameter = 177 ; } -#Top solar radiation -'~' = { +#Mean top net solar radiation flux +'mtnsrf' = { table2Version = 172 ; indicatorOfParameter = 178 ; } -#Top thermal radiation -'~' = { +#Mean top net thermal radiation flux +'mtntrf' = { table2Version = 172 ; indicatorOfParameter = 179 ; } @@ -14744,8 +14744,8 @@ table2Version = 172 ; indicatorOfParameter = 197 ; } -#Runoff -'~' = { +#Mean runoff rate +'mrort' = { table2Version = 172 ; indicatorOfParameter = 205 ; } @@ -14819,8 +14819,8 @@ table2Version = 173 ; indicatorOfParameter = 142 ; } -#Convective precipitation anomaly -'~' = { +#Mean convective precipitation rate anomaly +'mcpra' = { table2Version = 173 ; indicatorOfParameter = 143 ; } diff --git a/definitions/grib1/localConcepts/ecmf/units.def b/definitions/grib1/localConcepts/ecmf/units.def index 8c9197dfd..1c8093d7b 100644 --- a/definitions/grib1/localConcepts/ecmf/units.def +++ b/definitions/grib1/localConcepts/ecmf/units.def @@ -14629,7 +14629,7 @@ table2Version = 172 ; indicatorOfParameter = 48 ; } -#Large-scale precipitation fraction +#Mean large-scale precipitation fraction '~' = { table2Version = 172 ; indicatorOfParameter = 50 ; @@ -14654,57 +14654,57 @@ table2Version = 172 ; indicatorOfParameter = 145 ; } -#Surface sensible heat flux +#Mean surface sensible heat flux 'W m**-2' = { table2Version = 172 ; indicatorOfParameter = 146 ; } -#Surface latent heat flux +#Mean surface latent heat flux 'W m**-2' = { table2Version = 172 ; indicatorOfParameter = 147 ; } -#Surface net radiation +#Mean surface net radiation flux 'W m**-2' = { table2Version = 172 ; indicatorOfParameter = 149 ; } -#Short-wave heating rate +#Mean short-wave heating rate 'K s**-1' = { table2Version = 172 ; indicatorOfParameter = 153 ; } -#Long-wave heating rate +#Mean long-wave heating rate 'K s**-1' = { table2Version = 172 ; indicatorOfParameter = 154 ; } -#Surface solar radiation downwards +#Mean surface downward solar radiation flux 'W m**-2' = { table2Version = 172 ; indicatorOfParameter = 169 ; } -#Surface thermal radiation downwards +#Mean surface downward thermal radiation flux 'W m**-2' = { table2Version = 172 ; indicatorOfParameter = 175 ; } -#Surface solar radiation +#Mean surface net solar radiation flux 'W m**-2' = { table2Version = 172 ; indicatorOfParameter = 176 ; } -#Surface thermal radiation +#Mean surface net thermal radiation flux 'W m**-2' = { table2Version = 172 ; indicatorOfParameter = 177 ; } -#Top solar radiation +#Mean top net solar radiation flux 'W m**-2' = { table2Version = 172 ; indicatorOfParameter = 178 ; } -#Top thermal radiation +#Mean top net thermal radiation flux 'W m**-2' = { table2Version = 172 ; indicatorOfParameter = 179 ; @@ -14744,7 +14744,7 @@ table2Version = 172 ; indicatorOfParameter = 197 ; } -#Runoff +#Mean runoff rate 'm s**-1' = { table2Version = 172 ; indicatorOfParameter = 205 ; @@ -14819,7 +14819,7 @@ table2Version = 173 ; indicatorOfParameter = 142 ; } -#Convective precipitation anomaly +#Mean convective precipitation rate anomaly 'm s**-1' = { table2Version = 173 ; indicatorOfParameter = 143 ; diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index 1e9c28427..1beb1a3f7 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -18888,8 +18888,8 @@ parameterCategory = 172 ; parameterNumber = 48 ; } -#Large-scale precipitation fraction -'p50.172' = { +#Mean large-scale precipitation fraction +'mlspfr' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 50 ; @@ -18918,68 +18918,68 @@ parameterCategory = 172 ; parameterNumber = 145 ; } -#Surface sensible heat flux -'p146.172' = { +#Mean surface sensible heat flux +'msshfl' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 146 ; } -#Surface latent heat flux -'p147.172' = { +#Mean surface latent heat flux +'mslhfl' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 147 ; } -#Surface net radiation -'p149.172' = { +#Mean surface net radiation flux +'msnrf' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 149 ; } -#Short-wave heating rate -'p153.172' = { +#Mean short-wave heating rate +'mswhr' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 153 ; } -#Long-wave heating rate -'p154.172' = { +#Mean long-wave heating rate +'mlwhr' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 154 ; } -#Surface solar radiation downwards -'p169.172' = { +#Mean surface downward solar radiation flux +'msdsrf' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 169 ; } -#Surface thermal radiation downwards -'p175.172' = { +#Mean surface downward thermal radiation flux +'msdtrf' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 175 ; } -#Surface solar radiation -'p176.172' = { +#Mean surface net solar radiation flux +'msnsrf' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 176 ; } -#Surface thermal radiation -'p177.172' = { +#Mean surface net thermal radiation flux +'msntrf' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 177 ; } -#Top solar radiation -'p178.172' = { +#Mean top net solar radiation flux +'mtnsrf' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 178 ; } -#Top thermal radiation -'p179.172' = { +#Mean top net thermal radiation flux +'mtntrf' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 179 ; @@ -19026,8 +19026,8 @@ parameterCategory = 172 ; parameterNumber = 197 ; } -#Runoff -'p205.172' = { +#Mean runoff rate +'mrort' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 205 ; @@ -19116,8 +19116,8 @@ parameterCategory = 173 ; parameterNumber = 142 ; } -#Convective precipitation anomaly -'p143.173' = { +#Mean convective precipitation rate anomaly +'mcpra' = { discipline = 192 ; parameterCategory = 173 ; parameterNumber = 143 ; diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index 7c803d7a1..d75472401 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -18888,8 +18888,8 @@ parameterCategory = 172 ; parameterNumber = 48 ; } -#Large-scale precipitation fraction -'Large-scale precipitation fraction' = { +#Mean large-scale precipitation fraction +'Mean large-scale precipitation fraction' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 50 ; @@ -18918,68 +18918,68 @@ parameterCategory = 172 ; parameterNumber = 145 ; } -#Surface sensible heat flux -'Surface sensible heat flux' = { +#Mean surface sensible heat flux +'Mean surface sensible heat flux' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 146 ; } -#Surface latent heat flux -'Surface latent heat flux' = { +#Mean surface latent heat flux +'Mean surface latent heat flux' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 147 ; } -#Surface net radiation -'Surface net radiation' = { +#Mean surface net radiation flux +'Mean surface net radiation flux' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 149 ; } -#Short-wave heating rate -'Short-wave heating rate' = { +#Mean short-wave heating rate +'Mean short-wave heating rate' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 153 ; } -#Long-wave heating rate -'Long-wave heating rate' = { +#Mean long-wave heating rate +'Mean long-wave heating rate' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 154 ; } -#Surface solar radiation downwards -'Surface solar radiation downwards' = { +#Mean surface downward solar radiation flux +'Mean surface downward solar radiation flux' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 169 ; } -#Surface thermal radiation downwards -'Surface thermal radiation downwards' = { +#Mean surface downward thermal radiation flux +'Mean surface downward thermal radiation flux' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 175 ; } -#Surface solar radiation -'Surface solar radiation' = { +#Mean surface net solar radiation flux +'Mean surface net solar radiation flux' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 176 ; } -#Surface thermal radiation -'Surface thermal radiation' = { +#Mean surface net thermal radiation flux +'Mean surface net thermal radiation flux' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 177 ; } -#Top solar radiation -'Top solar radiation' = { +#Mean top net solar radiation flux +'Mean top net solar radiation flux' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 178 ; } -#Top thermal radiation -'Top thermal radiation' = { +#Mean top net thermal radiation flux +'Mean top net thermal radiation flux' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 179 ; @@ -19026,8 +19026,8 @@ parameterCategory = 172 ; parameterNumber = 197 ; } -#Runoff -'Runoff' = { +#Mean runoff rate +'Mean runoff rate' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 205 ; @@ -19116,8 +19116,8 @@ parameterCategory = 173 ; parameterNumber = 142 ; } -#Convective precipitation anomaly -'Convective precipitation anomaly' = { +#Mean convective precipitation rate anomaly +'Mean convective precipitation rate anomaly' = { discipline = 192 ; parameterCategory = 173 ; parameterNumber = 143 ; diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index 5d4a5eb47..043e71747 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -18888,7 +18888,7 @@ parameterCategory = 172 ; parameterNumber = 48 ; } -#Large-scale precipitation fraction +#Mean large-scale precipitation fraction '172050' = { discipline = 192 ; parameterCategory = 172 ; @@ -18918,67 +18918,67 @@ parameterCategory = 172 ; parameterNumber = 145 ; } -#Surface sensible heat flux +#Mean surface sensible heat flux '172146' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 146 ; } -#Surface latent heat flux +#Mean surface latent heat flux '172147' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 147 ; } -#Surface net radiation +#Mean surface net radiation flux '172149' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 149 ; } -#Short-wave heating rate +#Mean short-wave heating rate '172153' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 153 ; } -#Long-wave heating rate +#Mean long-wave heating rate '172154' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 154 ; } -#Surface solar radiation downwards +#Mean surface downward solar radiation flux '172169' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 169 ; } -#Surface thermal radiation downwards +#Mean surface downward thermal radiation flux '172175' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 175 ; } -#Surface solar radiation +#Mean surface net solar radiation flux '172176' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 176 ; } -#Surface thermal radiation +#Mean surface net thermal radiation flux '172177' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 177 ; } -#Top solar radiation +#Mean top net solar radiation flux '172178' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 178 ; } -#Top thermal radiation +#Mean top net thermal radiation flux '172179' = { discipline = 192 ; parameterCategory = 172 ; @@ -19026,7 +19026,7 @@ parameterCategory = 172 ; parameterNumber = 197 ; } -#Runoff +#Mean runoff rate '172205' = { discipline = 192 ; parameterCategory = 172 ; @@ -19116,7 +19116,7 @@ parameterCategory = 173 ; parameterNumber = 142 ; } -#Convective precipitation anomaly +#Mean convective precipitation rate anomaly '173143' = { discipline = 192 ; parameterCategory = 173 ; diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index c45131dd7..da5c0b741 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -18888,8 +18888,8 @@ parameterCategory = 172 ; parameterNumber = 48 ; } -#Large-scale precipitation fraction -'~' = { +#Mean large-scale precipitation fraction +'mlspfr' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 50 ; @@ -18918,68 +18918,68 @@ parameterCategory = 172 ; parameterNumber = 145 ; } -#Surface sensible heat flux -'~' = { +#Mean surface sensible heat flux +'msshfl' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 146 ; } -#Surface latent heat flux -'~' = { +#Mean surface latent heat flux +'mslhfl' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 147 ; } -#Surface net radiation -'~' = { +#Mean surface net radiation flux +'msnrf' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 149 ; } -#Short-wave heating rate -'~' = { +#Mean short-wave heating rate +'mswhr' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 153 ; } -#Long-wave heating rate -'~' = { +#Mean long-wave heating rate +'mlwhr' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 154 ; } -#Surface solar radiation downwards -'~' = { +#Mean surface downward solar radiation flux +'msdsrf' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 169 ; } -#Surface thermal radiation downwards -'~' = { +#Mean surface downward thermal radiation flux +'msdtrf' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 175 ; } -#Surface solar radiation -'~' = { +#Mean surface net solar radiation flux +'msnsrf' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 176 ; } -#Surface thermal radiation -'~' = { +#Mean surface net thermal radiation flux +'msntrf' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 177 ; } -#Top solar radiation -'~' = { +#Mean top net solar radiation flux +'mtnsrf' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 178 ; } -#Top thermal radiation -'~' = { +#Mean top net thermal radiation flux +'mtntrf' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 179 ; @@ -19026,8 +19026,8 @@ parameterCategory = 172 ; parameterNumber = 197 ; } -#Runoff -'~' = { +#Mean runoff rate +'mrort' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 205 ; @@ -19116,8 +19116,8 @@ parameterCategory = 173 ; parameterNumber = 142 ; } -#Convective precipitation anomaly -'~' = { +#Mean convective precipitation rate anomaly +'mcpra' = { discipline = 192 ; parameterCategory = 173 ; parameterNumber = 143 ; diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index e8bcf332e..3ffe24ed1 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -18888,7 +18888,7 @@ parameterCategory = 172 ; parameterNumber = 48 ; } -#Large-scale precipitation fraction +#Mean large-scale precipitation fraction '~' = { discipline = 192 ; parameterCategory = 172 ; @@ -18918,67 +18918,67 @@ parameterCategory = 172 ; parameterNumber = 145 ; } -#Surface sensible heat flux +#Mean surface sensible heat flux 'W m**-2' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 146 ; } -#Surface latent heat flux +#Mean surface latent heat flux 'W m**-2' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 147 ; } -#Surface net radiation +#Mean surface net radiation flux 'W m**-2' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 149 ; } -#Short-wave heating rate +#Mean short-wave heating rate 'K s**-1' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 153 ; } -#Long-wave heating rate +#Mean long-wave heating rate 'K s**-1' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 154 ; } -#Surface solar radiation downwards +#Mean surface downward solar radiation flux 'W m**-2' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 169 ; } -#Surface thermal radiation downwards +#Mean surface downward thermal radiation flux 'W m**-2' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 175 ; } -#Surface solar radiation +#Mean surface net solar radiation flux 'W m**-2' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 176 ; } -#Surface thermal radiation +#Mean surface net thermal radiation flux 'W m**-2' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 177 ; } -#Top solar radiation +#Mean top net solar radiation flux 'W m**-2' = { discipline = 192 ; parameterCategory = 172 ; parameterNumber = 178 ; } -#Top thermal radiation +#Mean top net thermal radiation flux 'W m**-2' = { discipline = 192 ; parameterCategory = 172 ; @@ -19026,7 +19026,7 @@ parameterCategory = 172 ; parameterNumber = 197 ; } -#Runoff +#Mean runoff rate 'm s**-1' = { discipline = 192 ; parameterCategory = 172 ; @@ -19116,7 +19116,7 @@ parameterCategory = 173 ; parameterNumber = 142 ; } -#Convective precipitation anomaly +#Mean convective precipitation rate anomaly 'm s**-1' = { discipline = 192 ; parameterCategory = 173 ; From 659bd81f37999fa9f4e55c7e8b3e738d652479f9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 1 Aug 2019 12:21:42 +0100 Subject: [PATCH 359/414] ECC-964: update parameter 171207 with correct shortname --- definitions/grib1/2.98.171.table | 2 +- definitions/grib1/localConcepts/ecmf/shortName.def | 2 +- definitions/grib2/localConcepts/ecmf/cfVarName.def | 2 +- definitions/grib2/localConcepts/ecmf/shortName.def | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/definitions/grib1/2.98.171.table b/definitions/grib1/2.98.171.table index 18666a4f5..39cf33bfe 100644 --- a/definitions/grib1/2.98.171.table +++ b/definitions/grib1/2.98.171.table @@ -137,7 +137,7 @@ 204 204 - Precipitation analysis weights 205 205 - Runoff (m) 206 206 - Total column ozone (kg m**-2) -207 207 - 10 metre wind speed (m s**-1) +207 207 10SIA 10 metre wind speed (m s**-1) 208 208 - Top net solar radiation, clear sky (W m**-2 s) 209 209 - Top net thermal radiation, clear sky (W m**-2 s) 210 210 - Surface net solar radiation, clear sky (W m**-2 s) diff --git a/definitions/grib1/localConcepts/ecmf/shortName.def b/definitions/grib1/localConcepts/ecmf/shortName.def index 4d0f70675..92c1dd09e 100644 --- a/definitions/grib1/localConcepts/ecmf/shortName.def +++ b/definitions/grib1/localConcepts/ecmf/shortName.def @@ -14375,7 +14375,7 @@ indicatorOfParameter = 206 ; } #10 metre wind speed anomaly -'10ua' = { +'10sia' = { table2Version = 171 ; indicatorOfParameter = 207 ; } diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index 1beb1a3f7..9cbe41085 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -18583,7 +18583,7 @@ parameterNumber = 206 ; } #10 metre wind speed anomaly -'ua10' = { +'sia10' = { discipline = 192 ; parameterCategory = 171 ; parameterNumber = 207 ; diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index da5c0b741..49501d40d 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -18583,7 +18583,7 @@ parameterNumber = 206 ; } #10 metre wind speed anomaly -'10ua' = { +'10sia' = { discipline = 192 ; parameterCategory = 171 ; parameterNumber = 207 ; From 07b6db318607ae91f609c319ef890cbf32eb9392 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 1 Aug 2019 14:27:57 +0100 Subject: [PATCH 360/414] Remove test due to C++ compilation problems --- tests/Makefile.am | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/Makefile.am b/tests/Makefile.am index 6c164100b..c7b6d36fb 100755 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -61,7 +61,6 @@ TESTS = definitions.sh \ grib_jpeg.sh \ grib_ccsds.sh \ md5.sh \ - grib_util_set_spec.sh \ grib_neg_fctime.sh \ bufr_ecc-197.sh \ bufr_ecc-286.sh \ @@ -76,7 +75,7 @@ download_data: noinst_PROGRAMS = packing_check gauss_sub read_any grib_double_cmp packing pack_unpack \ multi_from_message julian read_index index gribex_perf\ jpeg_perf grib_ccsds_perf so_perf png_perf bpv_limit laplacian \ - unit_tests grib_util_set_spec + unit_tests multi_from_message_SOURCES = multi_from_message.c laplacian_SOURCES = laplacian.c @@ -95,7 +94,6 @@ png_perf_SOURCES = png_perf.c grib_ccsds_perf_SOURCES = grib_ccsds_perf.c gribex_perf_SOURCES = gribex_perf.c gauss_sub_SOURCES = gauss_sub.c -grib_util_set_spec_SOURCES = grib_util_set_spec.c LDADD = $(top_builddir)/src/libeccodes.la $(EMOS_LIB) From ce46e85a3d83ecad7d448593828c771266536a69 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 1 Aug 2019 14:28:10 +0100 Subject: [PATCH 361/414] Fix signatures --- src/grib_hash_keys.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/grib_hash_keys.c b/src/grib_hash_keys.c index e9e8ad85f..007220eff 100644 --- a/src/grib_hash_keys.c +++ b/src/grib_hash_keys.c @@ -49,9 +49,7 @@ struct grib_keys_hash { char* name; int id;}; #endif #endif static unsigned int -hash_keys (str, len) - register const char *str; - register unsigned int len; +hash_keys (const char *str, unsigned int len) { static const unsigned short asso_values[] = { @@ -8829,9 +8827,7 @@ static const struct grib_keys_hash wordlist[] = #endif #endif const struct grib_keys_hash * -grib_keys_hash_get (str, len) - register const char *str; - register unsigned int len; +grib_keys_hash_get (const char *str, unsigned int len) { if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) { From 0b81237bb7973e58bf65002f862d6b4427b1ea06 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 1 Aug 2019 16:14:19 +0100 Subject: [PATCH 362/414] ECC-965: BUFR decoding performance: tune initial sizes of dynamic arrays (Part 1) --- src/grib_accessor_class_bufr_data_array.c | 182 +++++++++++----------- src/grib_vdarray.c | 6 +- 2 files changed, 99 insertions(+), 89 deletions(-) diff --git a/src/grib_accessor_class_bufr_data_array.c b/src/grib_accessor_class_bufr_data_array.c index 29d2c5f9e..5bb32e28d 100644 --- a/src/grib_accessor_class_bufr_data_array.c +++ b/src/grib_accessor_class_bufr_data_array.c @@ -368,7 +368,7 @@ static void tableB_override_dump(grib_accessor_bufr_data_array *self) ++i; } } -*/ + */ #define DYN_ARRAY_SIZE_INIT 1000 /* Initial size for grib_iarray_new and grib_darray_new */ #define DYN_ARRAY_SIZE_INCR 1000 /* Increment size for grib_iarray_new and grib_darray_new */ @@ -436,7 +436,9 @@ static int check_end_data(grib_context* c,grib_accessor_bufr_data_array* self,in static void self_clear(grib_context* c,grib_accessor_bufr_data_array* self) { grib_context_free(c,self->canBeMissing); + //printf("zzzz grib_vdarray_delete_content self->numericValues...start\n"); grib_vdarray_delete_content(c,self->numericValues); + //printf("zzzz grib_vdarray_delete_content self->numericValues...end\n"); grib_vdarray_delete(c,self->numericValues); if(self->stringValues) { grib_vsarray_delete_content(c,self->stringValues); @@ -559,33 +561,33 @@ static int decode_string_array(grib_context* c, unsigned char* data, long* pos, sval=(char*)grib_context_malloc_clear(c,modifiedWidth/8+1); CHECK_END_DATA_RETURN(c, self, modifiedWidth, *err); if (*err) { - grib_sarray_push(c,sa,sval); - grib_vsarray_push(c,self->stringValues,sa); - return ret; + grib_sarray_push(c,sa,sval); + grib_vsarray_push(c,self->stringValues,sa); + return ret; } grib_decode_string(data,pos,modifiedWidth/8,sval); CHECK_END_DATA_RETURN(c, self, 6, *err); if (*err) { - grib_sarray_push(c,sa,sval); - grib_vsarray_push(c,self->stringValues,sa); - return ret; + grib_sarray_push(c,sa,sval); + grib_vsarray_push(c,self->stringValues,sa); + return ret; } width=grib_decode_unsigned_long(data,pos,6); if (width) { CHECK_END_DATA_RETURN(c, self, width*8*self->numberOfSubsets, *err); - if (*err) { - grib_sarray_push(c,sa,sval); - grib_vsarray_push(c,self->stringValues,sa); - return ret; - } - grib_context_free(c,sval); - for (j=0;jnumberOfSubsets;j++) { - sval=(char*)grib_context_malloc_clear(c,width+1); - grib_decode_string(data,pos,width,sval); - grib_sarray_push(c,sa,sval); - } + if (*err) { + grib_sarray_push(c,sa,sval); + grib_vsarray_push(c,self->stringValues,sa); + return ret; + } + grib_context_free(c,sval); + for (j=0;jnumberOfSubsets;j++) { + sval=(char*)grib_context_malloc_clear(c,width+1); + grib_decode_string(data,pos,width,sval); + grib_sarray_push(c,sa,sval); + } } else { - grib_sarray_push(c,sa,sval); + grib_sarray_push(c,sa,sval); } grib_vsarray_push(c,self->stringValues,sa); return ret; @@ -609,29 +611,29 @@ static grib_darray* decode_double_array(grib_context* c,unsigned char* data,long CHECK_END_DATA_RETURN(c, self, modifiedWidth+6, NULL); if (*err) { - dval=GRIB_MISSING_DOUBLE; - lval=0; - grib_context_log(c, GRIB_LOG_DEBUG," modifiedWidth=%ld lval=%ld dval=%g", modifiedWidth,lval,dval); - ret=grib_darray_new(c,DYN_ARRAY_SIZE_INIT,DYN_ARRAY_SIZE_INCR); - grib_darray_push(c,ret,dval); - *err=0; - return ret; + dval=GRIB_MISSING_DOUBLE; + lval=0; + grib_context_log(c, GRIB_LOG_DEBUG," modifiedWidth=%ld lval=%ld dval=%g", modifiedWidth,lval,dval); + ret=grib_darray_new(c,DYN_ARRAY_SIZE_INIT,DYN_ARRAY_SIZE_INCR); + grib_darray_push(c,ret,dval); + *err=0; + return ret; } lval=grib_decode_unsigned_long(data,pos,modifiedWidth); localReference=(long)lval+modifiedReference; localWidth=grib_decode_unsigned_long(data,pos,6); grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tlocalWidth=%ld",localWidth); - ret=grib_darray_new(c,DYN_ARRAY_SIZE_INIT,DYN_ARRAY_SIZE_INCR); + ret=grib_darray_new(c,self->numberOfSubsets,50); if (localWidth) { CHECK_END_DATA_RETURN(c, self, localWidth*self->numberOfSubsets, NULL); if (*err) { - dval=GRIB_MISSING_DOUBLE; - lval=0; - grib_context_log(c, GRIB_LOG_DEBUG," modifiedWidth=%ld lval=%ld dval=%g", modifiedWidth,lval,dval); - ret=grib_darray_new(c,DYN_ARRAY_SIZE_INIT,DYN_ARRAY_SIZE_INCR); - grib_darray_push(c,ret,dval); - *err=0; - return ret; + dval=GRIB_MISSING_DOUBLE; + lval=0; + grib_context_log(c, GRIB_LOG_DEBUG," modifiedWidth=%ld lval=%ld dval=%g", modifiedWidth,lval,dval); + ret=grib_darray_new(c,DYN_ARRAY_SIZE_INIT,DYN_ARRAY_SIZE_INCR); + grib_darray_push(c,ret,dval); + *err=0; + return ret; } for (j=0;jnumberOfSubsets;j++) { lval=grib_decode_unsigned_long(data,pos,localWidth); @@ -671,10 +673,10 @@ static int encode_string_array(grib_context* c,grib_buffer* buff,long* pos, bufr if (n<=0) return GRIB_NO_VALUES; if (grib_sarray_used_size(stringValues)==1) { - n=1; - ival=0; + n=1; + ival=0; } else { - ival=self->iss_list->v[0]; + ival=self->iss_list->v[0]; } if (n>grib_sarray_used_size(stringValues)) @@ -708,7 +710,7 @@ static void set_missing_long_to_double(grib_darray* dvalues) /* ECC-750: The 'factor' argument is 10^-scale */ static int descriptor_get_min_max(bufr_descriptor* bd, long width, long reference, double factor, - double* minAllowed, double* maxAllowed) + double* minAllowed, double* maxAllowed) { /* Maximum value is allowed to be the largest number (all bits 1) which means it's MISSING */ unsigned long max1 = (1UL << width) - 1; /* Highest value for number with 'width' bits */ @@ -768,11 +770,11 @@ static int encode_double_array(grib_context* c,grib_buffer* buff,long* pos, bufr if (*v > maxAllowed || *v < minAllowed) { if (dont_fail_if_out_of_range) { grib_context_log(c, GRIB_LOG_ERROR, "encode_double_array: %s. Value (%g) out of range (minAllowed=%g, maxAllowed=%g)." - " Setting it to missing value\n", bd->shortName, *v, minAllowed, maxAllowed); + " Setting it to missing value\n", bd->shortName, *v, minAllowed, maxAllowed); grib_set_bits_on(buff->data,pos,modifiedWidth); } else { grib_context_log(c, GRIB_LOG_ERROR, "encode_double_array: %s. Value (%g) out of range (minAllowed=%g, maxAllowed=%g).", - bd->shortName, *v, minAllowed, maxAllowed); + bd->shortName, *v, minAllowed, maxAllowed); return GRIB_OUT_OF_RANGE; /* ECC-611 */ } } else { @@ -790,8 +792,8 @@ static int encode_double_array(grib_context* c,grib_buffer* buff,long* pos, bufr val0=dvalues->v[self->iss_list->v[0]]; is_constant=1; for (i=0;iv[self->iss_list->v[i]]; - if (val0 != values[i]) is_constant=0; + values[i]=dvalues->v[self->iss_list->v[i]]; + if (val0 != values[i]) is_constant=0; } v=values; @@ -822,8 +824,8 @@ static int encode_double_array(grib_context* c,grib_buffer* buff,long* pos, bufr /* Turn out-of-range values into 'missing' */ if (*v!=GRIB_MISSING_DOUBLE && (*v < minAllowed || *v > maxAllowed)) { grib_context_log(c, GRIB_LOG_ERROR, "encode_double_array: %s. Value at index %ld (%g) out of range (minAllowed=%g, maxAllowed=%g)." - " Setting it to missing value\n", - bd->shortName, (long)ii, *v, minAllowed, maxAllowed); + " Setting it to missing value\n", + bd->shortName, (long)ii, *v, minAllowed, maxAllowed); *v = GRIB_MISSING_DOUBLE; } ii++; @@ -850,12 +852,12 @@ static int encode_double_array(grib_context* c,grib_buffer* buff,long* pos, bufr } if (max>maxAllowed && max!=GRIB_MISSING_DOUBLE) { grib_context_log(c, GRIB_LOG_ERROR, "encode_double_array: %s. Maximum value (value[%lu]=%g) out of range (maxAllowed=%g).", - bd->shortName, index_of_max, max, maxAllowed, index_of_max); + bd->shortName, index_of_max, max, maxAllowed, index_of_max); return GRIB_OUT_OF_RANGE; } if (minshortName, index_of_min, min, minAllowed); + bd->shortName, index_of_min, min, minAllowed); return GRIB_OUT_OF_RANGE; } @@ -931,13 +933,13 @@ static int encode_double_value(grib_context* c,grib_buffer* buff,long* pos,bufr_ else if (value>maxAllowed || valueshortName, value, minAllowed, maxAllowed); + " Setting it to missing value\n", + bd->shortName, value, minAllowed, maxAllowed); value = GRIB_MISSING_DOUBLE; /* Ignore the bad value and instead use 'missing' */ grib_set_bits_on(buff->data,pos,modifiedWidth); } else { grib_context_log(c, GRIB_LOG_ERROR, "encode_double_value: %s. Value (%g) out of range (minAllowed=%g, maxAllowed=%g).", - bd->shortName, value, minAllowed, maxAllowed); + bd->shortName, value, minAllowed, maxAllowed); return GRIB_OUT_OF_RANGE; } } @@ -1079,6 +1081,7 @@ static int decode_element(grib_context* c,grib_accessor_bufr_data_array* self,in } if (self->compressedData) { dar=decode_double_array(c,data,pos,bd,self->canBeMissing[i],self,&err); + //printf("zzzz placing dar=%p into numericValues\n", (void*)dar); grib_vdarray_push(c,self->numericValues,dar); } else { /* Uncompressed */ @@ -1109,28 +1112,28 @@ static int decode_replication(grib_context* c,grib_accessor_bufr_data_array* sel grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tdelayed replication localReference width=%ld", descriptors[i]->width); CHECK_END_DATA_RETURN(c, self, descriptors[i]->width+6, *err); if (*err) { - *numberOfRepetitions=0; + *numberOfRepetitions=0; } else { - localReference=grib_decode_unsigned_long(data,pos,descriptors[i]->width)+descriptors[i]->reference; - grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tdelayed replication localWidth width=6"); - width=grib_decode_unsigned_long(data,pos,6); - if (width) { - grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tdelayed replication is NOT constant for compressed data!"); - /* delayed replication number is not constant. NOT IMPLEMENTED */ - return GRIB_NOT_IMPLEMENTED; - } else { - *numberOfRepetitions=localReference*descriptors[i]->factor; - grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tdelayed replication value=%ld",*numberOfRepetitions); - } + localReference=grib_decode_unsigned_long(data,pos,descriptors[i]->width)+descriptors[i]->reference; + grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tdelayed replication localWidth width=6"); + width=grib_decode_unsigned_long(data,pos,6); + if (width) { + grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tdelayed replication is NOT constant for compressed data!"); + /* delayed replication number is not constant. NOT IMPLEMENTED */ + return GRIB_NOT_IMPLEMENTED; + } else { + *numberOfRepetitions=localReference*descriptors[i]->factor; + grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tdelayed replication value=%ld",*numberOfRepetitions); + } } } else { CHECK_END_DATA_RETURN(c, self, descriptors[i]->width, *err); if (*err) { - *numberOfRepetitions=0; + *numberOfRepetitions=0; } else { - *numberOfRepetitions=grib_decode_unsigned_long(data,pos,descriptors[i]->width)+ - descriptors[i]->reference*descriptors[i]->factor; - grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tdelayed replication value=%ld",*numberOfRepetitions); + *numberOfRepetitions=grib_decode_unsigned_long(data,pos,descriptors[i]->width)+ + descriptors[i]->reference*descriptors[i]->factor; + grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tdelayed replication value=%ld",*numberOfRepetitions); } } if (self->compressedData) { @@ -1364,7 +1367,7 @@ static int encode_element(grib_context* c,grib_accessor_bufr_data_array* self,in err=encode_double_value(c,buff,pos,bd,self,self->numericValues->v[subsetIndex]->v[elementIndex]); if (err) { grib_context_log(c,GRIB_LOG_ERROR,"Cannot encode %s=%g (subset=%d)", /*subsetIndex starts from 0*/ - bd->shortName, self->numericValues->v[subsetIndex]->v[elementIndex], subsetIndex+1); + bd->shortName, self->numericValues->v[subsetIndex]->v[elementIndex], subsetIndex+1); } } } @@ -1957,9 +1960,9 @@ static GRIB_INLINE int significanceQualifierIndex(int X,int Y) } static GRIB_INLINE void reset_deeper_qualifiers( - grib_accessor* significanceQualifierGroup[], - const int* const significanceQualifierDepth, - int numElements, int depth) + grib_accessor* significanceQualifierGroup[], + const int* const significanceQualifierDepth, + int numElements, int depth) { int i; for (i=0;iaccessor,"index"); - grib_unpack_long(anindex,index,&l); + long index[1]; + grib_accessor* anindex=grib_accessor_get_attribute(al->accessor,"index"); + grib_unpack_long(anindex,index,&l); #endif - return 1; - } + return 1; + } } return 0; } @@ -2132,7 +2135,7 @@ static void print_bitmap_debug_info(grib_context* c, bitmap_s* bitmap, grib_acce } static int bitmap_init(grib_context* c, bitmap_s* bitmap, - grib_accessors_list* bitmapStart, int bitmapSize, grib_accessors_list* lastAccessorInList) + grib_accessors_list* bitmapStart, int bitmapSize, grib_accessors_list* lastAccessorInList) { int ret=0,i; bitmap->cursor=bitmapStart->next; @@ -2305,7 +2308,7 @@ static int create_keys(grib_accessor* a,long onlySubset,long startSubset,long en } elementFromBitmap=NULL; if (descriptor->F==0 && IS_QUALIFIER(descriptor->X) && - self->unpackMode==CODES_BUFR_UNPACK_STRUCTURE) { + self->unpackMode==CODES_BUFR_UNPACK_STRUCTURE) { int sidx=significanceQualifierIndex(descriptor->X,descriptor->Y); groupNumber++; @@ -2315,7 +2318,7 @@ static int create_keys(grib_accessor* a,long onlySubset,long startSubset,long en if (depth < max_depth) { /* If depth >= max_depth, then no entry will be deeper so no need for call */ reset_deeper_qualifiers(significanceQualifierGroup,significanceQualifierDepth, - number_of_qualifiers,depth); + number_of_qualifiers,depth); } } else { /* if (forceGroupClosure) { */ @@ -2362,7 +2365,7 @@ static int create_keys(grib_accessor* a,long onlySubset,long startSubset,long en groupSection=bitmapGroup[bitmapIndex]->parent; depth=bitmapDepth[bitmapIndex]; reset_deeper_qualifiers(significanceQualifierGroup,significanceQualifierDepth, - number_of_qualifiers,depth); + number_of_qualifiers,depth); /* TODO: This branch is not reached in our tests! */ reset_deeper_qualifiers(bitmapGroup,bitmapDepth,MAX_NUMBER_OF_BITMAPS,depth); } else { @@ -2470,7 +2473,7 @@ static int create_keys(grib_accessor* a,long onlySubset,long startSubset,long en case 31021: associatedFieldSignificanceAccessor=elementAccessor; break; - /*case 33007:*/ + /*case 33007:*/ /* ECC-690: See later */ /* break; */ default: @@ -2553,7 +2556,7 @@ static int set_to_missing_if_out_of_range(grib_handle* h) /* First check if the transient key is set */ long setToMissingIfOutOfRange=0; if (grib_get_long(h, "setToMissingIfOutOfRange", &setToMissingIfOutOfRange)==GRIB_SUCCESS && - setToMissingIfOutOfRange != 0) + setToMissingIfOutOfRange != 0) { return 1; } @@ -2658,14 +2661,17 @@ static int process_elements(grib_accessor* a,int flag,long onlySubset,long start descriptors=self->expanded->v; if (do_clean==1 && self->numericValues) { + //printf("zzzz grib_vdarray_delete_content self->numericValues...start\n"); grib_vdarray_delete_content(c,self->numericValues); + //printf("zzzz grib_vdarray_delete_content self->numericValues...end\n"); grib_vdarray_delete(c,self->numericValues); grib_vsarray_delete_content(c,self->stringValues); grib_vsarray_delete(c,self->stringValues); } if (flag!=PROCESS_ENCODE) { - self->numericValues=grib_vdarray_new(c,100,100); + self->numericValues=grib_vdarray_new(c,1000,500); + //printf("xxxx self->numericValues=%p\n", (void*)self->numericValues); self->stringValues=grib_vsarray_new(c,10,10); if (self->elementsDescriptorsIndex) grib_viarray_delete(c,self->elementsDescriptorsIndex); @@ -2767,10 +2773,10 @@ static int process_elements(grib_accessor* a,int flag,long onlySubset,long start while (ip>=0 && n[ip]==0) { nn[ip]--; if (nn[ip]<=0) { - numberOfNestedRepetitions--; + numberOfNestedRepetitions--; } else { - n[ip]=numberOfElementsToRepeat[ip]; - i=startRepetition[ip]; + n[ip]=numberOfElementsToRepeat[ip]; + i=startRepetition[ip]; } ip--; } diff --git a/src/grib_vdarray.c b/src/grib_vdarray.c index 50f16034c..b430a8b6a 100644 --- a/src/grib_vdarray.c +++ b/src/grib_vdarray.c @@ -74,7 +74,10 @@ grib_vdarray* grib_vdarray_push(grib_context* c,grib_vdarray* v,grib_darray* val size_t start_incsize=100; if (!v) v=grib_vdarray_new(c,start_size,start_incsize); - if (v->n >= v->size) v=grib_vdarray_resize(c,v); + if (v->n >= v->size) { + //printf("yyyy resize array %p (v->n=%ld v->size=%ld)\n", (void*)v, v->n, v->size); + v=grib_vdarray_resize(c,v); + } v->v[v->n]=val; v->n++; return v; @@ -94,6 +97,7 @@ void grib_vdarray_delete_content(grib_context* c,grib_vdarray* v) if (!v || !v->v) return; if (!c) grib_context_get_default(); for (i=0;in;i++) { + //printf("zzzz grib_darray_delete %p\n", (void*)v->v[i]); grib_darray_delete(c,v->v[i]); v->v[i]=0; } From f26d628e64e61ca97b8c0a91fcc3f2c10afc0a78 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 1 Aug 2019 17:34:57 +0100 Subject: [PATCH 363/414] ECC-965: increase increment size --- src/grib_accessor_class_bufr_data_array.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/grib_accessor_class_bufr_data_array.c b/src/grib_accessor_class_bufr_data_array.c index 5bb32e28d..9b548a510 100644 --- a/src/grib_accessor_class_bufr_data_array.c +++ b/src/grib_accessor_class_bufr_data_array.c @@ -2670,7 +2670,7 @@ static int process_elements(grib_accessor* a,int flag,long onlySubset,long start } if (flag!=PROCESS_ENCODE) { - self->numericValues=grib_vdarray_new(c,1000,500); + self->numericValues=grib_vdarray_new(c,1000,1000); //printf("xxxx self->numericValues=%p\n", (void*)self->numericValues); self->stringValues=grib_vsarray_new(c,10,10); From 87737ae5cd79cac4d34440045874e8b4c22145a9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 1 Aug 2019 17:42:14 +0100 Subject: [PATCH 364/414] Indentation --- src/grib_darray.c | 122 +++++++++++++++++++++++----------------------- src/grib_iarray.c | 17 +++---- 2 files changed, 69 insertions(+), 70 deletions(-) diff --git a/src/grib_darray.c b/src/grib_darray.c index 5dfe35f60..21f09023d 100644 --- a/src/grib_darray.c +++ b/src/grib_darray.c @@ -30,91 +30,91 @@ void grib_darray_print(const char* title, const grib_darray* darray) grib_darray* grib_darray_new_from_array(grib_context* c,double* a,size_t size) { - size_t i; - grib_darray* v; + size_t i; + grib_darray* v; - if (!c) c=grib_context_get_default(); + if (!c) c=grib_context_get_default(); - v=grib_darray_new(c,size,100); - for (i=0;iv[i]=a[i]; - v->n=size; - v->context=c; - return v; + v=grib_darray_new(c,size,100); + for (i=0;iv[i]=a[i]; + v->n=size; + v->context=c; + return v; } grib_darray* grib_darray_new(grib_context* c,size_t size,size_t incsize) { - grib_darray* v=NULL; - if (!c) c=grib_context_get_default(); - v=(grib_darray*)grib_context_malloc_clear(c,sizeof(grib_darray)); - if (!v) { - grib_context_log(c,GRIB_LOG_ERROR, - "grib_darray_new unable to allocate %d bytes\n",sizeof(grib_darray)); - return NULL; - } - v->size=size; - v->n=0; - v->incsize=incsize; - v->v=(double*)grib_context_malloc_clear(c,sizeof(double)*size); - if (!v->v) { - grib_context_log(c,GRIB_LOG_ERROR, - "grib_darray_new unable to allocate %d bytes\n",sizeof(double)*size); - return NULL; - } - return v; + grib_darray* v=NULL; + if (!c) c=grib_context_get_default(); + v=(grib_darray*)grib_context_malloc_clear(c,sizeof(grib_darray)); + if (!v) { + grib_context_log(c,GRIB_LOG_ERROR, + "grib_darray_new unable to allocate %d bytes\n",sizeof(grib_darray)); + return NULL; + } + v->size=size; + v->n=0; + v->incsize=incsize; + v->v=(double*)grib_context_malloc_clear(c,sizeof(double)*size); + if (!v->v) { + grib_context_log(c,GRIB_LOG_ERROR, + "grib_darray_new unable to allocate %d bytes\n",sizeof(double)*size); + return NULL; + } + return v; } grib_darray* grib_darray_resize(grib_context* c,grib_darray* v) { - int newsize=v->incsize+v->size; + int newsize=v->incsize+v->size; - if (!c) c=grib_context_get_default(); + if (!c) c=grib_context_get_default(); - v->v = (double*)grib_context_realloc(c,v->v,newsize*sizeof(double)); - v->size=newsize; - if (!v->v) { - grib_context_log(c,GRIB_LOG_ERROR, - "grib_darray_resize unable to allocate %d bytes\n",sizeof(double)*newsize); - return NULL; - } - return v; + v->v = (double*)grib_context_realloc(c,v->v,newsize*sizeof(double)); + v->size=newsize; + if (!v->v) { + grib_context_log(c,GRIB_LOG_ERROR, + "grib_darray_resize unable to allocate %d bytes\n",sizeof(double)*newsize); + return NULL; + } + return v; } grib_darray* grib_darray_push(grib_context* c,grib_darray* v,double val) { - size_t start_size=100; - size_t start_incsize=100; - if (!v) v=grib_darray_new(c,start_size,start_incsize); + size_t start_size=100; + size_t start_incsize=100; + if (!v) v=grib_darray_new(c,start_size,start_incsize); - if (v->n >= v->size) v=grib_darray_resize(c,v); - v->v[v->n]=val; - v->n++; - return v; + if (v->n >= v->size) v=grib_darray_resize(c,v); + v->v[v->n]=val; + v->n++; + return v; } void grib_darray_delete(grib_context* c,grib_darray* v) { - if (!v) return; - if (!c) grib_context_get_default(); - if (v->v) grib_context_free(c,v->v); - grib_context_free(c,v); + if (!v) return; + if (!c) grib_context_get_default(); + if (v->v) grib_context_free(c,v->v); + grib_context_free(c,v); } double* grib_darray_get_array(grib_context* c,grib_darray* v) { - double* ret; - int i; - if (!v) return NULL; - ret=(double*)grib_context_malloc_clear(c,sizeof(double)*v->n); - for (i=0;in;i++) ret[i]=v->v[i]; - return ret; + double* ret; + int i; + if (!v) return NULL; + ret=(double*)grib_context_malloc_clear(c,sizeof(double)*v->n); + for (i=0;in;i++) ret[i]=v->v[i]; + return ret; } int grib_darray_is_constant(grib_darray* v,double eps) { - int i; - double val; - if (v->n == 1) return 1; + int i; + double val; + if (v->n == 1) return 1; - val=v->v[0]; - for (i=1;in;i++) { - if (fabs(val-v->v[i]) > eps) return 0; - } - return 1; + val=v->v[0]; + for (i=1;in;i++) { + if (fabs(val-v->v[i]) > eps) return 0; + } + return 1; } size_t grib_darray_used_size(grib_darray* v) { return v->n;} diff --git a/src/grib_iarray.c b/src/grib_iarray.c index 4e4e38b3c..09f798f09 100644 --- a/src/grib_iarray.c +++ b/src/grib_iarray.c @@ -227,14 +227,13 @@ long* grib_iarray_get_array(grib_iarray* v) size_t grib_iarray_used_size(grib_iarray* v) {return v==NULL ? 0 : v->n;} int grib_iarray_is_constant(grib_iarray* v) { - int i; - long val; - if (v->n == 1) return 1; + int i; + long val; + if (v->n == 1) return 1; - val=v->v[0]; - for (i=1;in;i++) { - if (val!=v->v[i]) return 0; - } - return 1; + val=v->v[0]; + for (i=1;in;i++) { + if (val!=v->v[i]) return 0; + } + return 1; } - From aa6ff711a963c0eec8c49e7d708fdd9cde841859 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 1 Aug 2019 17:44:00 +0100 Subject: [PATCH 365/414] ECC-965: clean up --- src/grib_accessor_class_bufr_data_array.c | 6 ------ src/grib_vdarray.c | 6 +----- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/src/grib_accessor_class_bufr_data_array.c b/src/grib_accessor_class_bufr_data_array.c index 9b548a510..fd86ad198 100644 --- a/src/grib_accessor_class_bufr_data_array.c +++ b/src/grib_accessor_class_bufr_data_array.c @@ -436,9 +436,7 @@ static int check_end_data(grib_context* c,grib_accessor_bufr_data_array* self,in static void self_clear(grib_context* c,grib_accessor_bufr_data_array* self) { grib_context_free(c,self->canBeMissing); - //printf("zzzz grib_vdarray_delete_content self->numericValues...start\n"); grib_vdarray_delete_content(c,self->numericValues); - //printf("zzzz grib_vdarray_delete_content self->numericValues...end\n"); grib_vdarray_delete(c,self->numericValues); if(self->stringValues) { grib_vsarray_delete_content(c,self->stringValues); @@ -1081,7 +1079,6 @@ static int decode_element(grib_context* c,grib_accessor_bufr_data_array* self,in } if (self->compressedData) { dar=decode_double_array(c,data,pos,bd,self->canBeMissing[i],self,&err); - //printf("zzzz placing dar=%p into numericValues\n", (void*)dar); grib_vdarray_push(c,self->numericValues,dar); } else { /* Uncompressed */ @@ -2661,9 +2658,7 @@ static int process_elements(grib_accessor* a,int flag,long onlySubset,long start descriptors=self->expanded->v; if (do_clean==1 && self->numericValues) { - //printf("zzzz grib_vdarray_delete_content self->numericValues...start\n"); grib_vdarray_delete_content(c,self->numericValues); - //printf("zzzz grib_vdarray_delete_content self->numericValues...end\n"); grib_vdarray_delete(c,self->numericValues); grib_vsarray_delete_content(c,self->stringValues); grib_vsarray_delete(c,self->stringValues); @@ -2671,7 +2666,6 @@ static int process_elements(grib_accessor* a,int flag,long onlySubset,long start if (flag!=PROCESS_ENCODE) { self->numericValues=grib_vdarray_new(c,1000,1000); - //printf("xxxx self->numericValues=%p\n", (void*)self->numericValues); self->stringValues=grib_vsarray_new(c,10,10); if (self->elementsDescriptorsIndex) grib_viarray_delete(c,self->elementsDescriptorsIndex); diff --git a/src/grib_vdarray.c b/src/grib_vdarray.c index b430a8b6a..50f16034c 100644 --- a/src/grib_vdarray.c +++ b/src/grib_vdarray.c @@ -74,10 +74,7 @@ grib_vdarray* grib_vdarray_push(grib_context* c,grib_vdarray* v,grib_darray* val size_t start_incsize=100; if (!v) v=grib_vdarray_new(c,start_size,start_incsize); - if (v->n >= v->size) { - //printf("yyyy resize array %p (v->n=%ld v->size=%ld)\n", (void*)v, v->n, v->size); - v=grib_vdarray_resize(c,v); - } + if (v->n >= v->size) v=grib_vdarray_resize(c,v); v->v[v->n]=val; v->n++; return v; @@ -97,7 +94,6 @@ void grib_vdarray_delete_content(grib_context* c,grib_vdarray* v) if (!v || !v->v) return; if (!c) grib_context_get_default(); for (i=0;in;i++) { - //printf("zzzz grib_darray_delete %p\n", (void*)v->v[i]); grib_darray_delete(c,v->v[i]); v->v[i]=0; } From 799ed369193838b5d8cd6edc822aea9069445014 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 1 Aug 2019 17:44:21 +0100 Subject: [PATCH 366/414] Indentation --- src/grib_accessor_class_bufr_data_array.c | 172 +++++++++++----------- 1 file changed, 86 insertions(+), 86 deletions(-) diff --git a/src/grib_accessor_class_bufr_data_array.c b/src/grib_accessor_class_bufr_data_array.c index 29d2c5f9e..e6d762cb3 100644 --- a/src/grib_accessor_class_bufr_data_array.c +++ b/src/grib_accessor_class_bufr_data_array.c @@ -368,7 +368,7 @@ static void tableB_override_dump(grib_accessor_bufr_data_array *self) ++i; } } -*/ + */ #define DYN_ARRAY_SIZE_INIT 1000 /* Initial size for grib_iarray_new and grib_darray_new */ #define DYN_ARRAY_SIZE_INCR 1000 /* Increment size for grib_iarray_new and grib_darray_new */ @@ -559,33 +559,33 @@ static int decode_string_array(grib_context* c, unsigned char* data, long* pos, sval=(char*)grib_context_malloc_clear(c,modifiedWidth/8+1); CHECK_END_DATA_RETURN(c, self, modifiedWidth, *err); if (*err) { - grib_sarray_push(c,sa,sval); - grib_vsarray_push(c,self->stringValues,sa); - return ret; + grib_sarray_push(c,sa,sval); + grib_vsarray_push(c,self->stringValues,sa); + return ret; } grib_decode_string(data,pos,modifiedWidth/8,sval); CHECK_END_DATA_RETURN(c, self, 6, *err); if (*err) { - grib_sarray_push(c,sa,sval); - grib_vsarray_push(c,self->stringValues,sa); - return ret; + grib_sarray_push(c,sa,sval); + grib_vsarray_push(c,self->stringValues,sa); + return ret; } width=grib_decode_unsigned_long(data,pos,6); if (width) { CHECK_END_DATA_RETURN(c, self, width*8*self->numberOfSubsets, *err); - if (*err) { - grib_sarray_push(c,sa,sval); - grib_vsarray_push(c,self->stringValues,sa); - return ret; - } - grib_context_free(c,sval); - for (j=0;jnumberOfSubsets;j++) { - sval=(char*)grib_context_malloc_clear(c,width+1); - grib_decode_string(data,pos,width,sval); - grib_sarray_push(c,sa,sval); - } + if (*err) { + grib_sarray_push(c,sa,sval); + grib_vsarray_push(c,self->stringValues,sa); + return ret; + } + grib_context_free(c,sval); + for (j=0;jnumberOfSubsets;j++) { + sval=(char*)grib_context_malloc_clear(c,width+1); + grib_decode_string(data,pos,width,sval); + grib_sarray_push(c,sa,sval); + } } else { - grib_sarray_push(c,sa,sval); + grib_sarray_push(c,sa,sval); } grib_vsarray_push(c,self->stringValues,sa); return ret; @@ -609,13 +609,13 @@ static grib_darray* decode_double_array(grib_context* c,unsigned char* data,long CHECK_END_DATA_RETURN(c, self, modifiedWidth+6, NULL); if (*err) { - dval=GRIB_MISSING_DOUBLE; - lval=0; - grib_context_log(c, GRIB_LOG_DEBUG," modifiedWidth=%ld lval=%ld dval=%g", modifiedWidth,lval,dval); - ret=grib_darray_new(c,DYN_ARRAY_SIZE_INIT,DYN_ARRAY_SIZE_INCR); - grib_darray_push(c,ret,dval); - *err=0; - return ret; + dval=GRIB_MISSING_DOUBLE; + lval=0; + grib_context_log(c, GRIB_LOG_DEBUG," modifiedWidth=%ld lval=%ld dval=%g", modifiedWidth,lval,dval); + ret=grib_darray_new(c,DYN_ARRAY_SIZE_INIT,DYN_ARRAY_SIZE_INCR); + grib_darray_push(c,ret,dval); + *err=0; + return ret; } lval=grib_decode_unsigned_long(data,pos,modifiedWidth); localReference=(long)lval+modifiedReference; @@ -625,13 +625,13 @@ static grib_darray* decode_double_array(grib_context* c,unsigned char* data,long if (localWidth) { CHECK_END_DATA_RETURN(c, self, localWidth*self->numberOfSubsets, NULL); if (*err) { - dval=GRIB_MISSING_DOUBLE; - lval=0; - grib_context_log(c, GRIB_LOG_DEBUG," modifiedWidth=%ld lval=%ld dval=%g", modifiedWidth,lval,dval); - ret=grib_darray_new(c,DYN_ARRAY_SIZE_INIT,DYN_ARRAY_SIZE_INCR); - grib_darray_push(c,ret,dval); - *err=0; - return ret; + dval=GRIB_MISSING_DOUBLE; + lval=0; + grib_context_log(c, GRIB_LOG_DEBUG," modifiedWidth=%ld lval=%ld dval=%g", modifiedWidth,lval,dval); + ret=grib_darray_new(c,DYN_ARRAY_SIZE_INIT,DYN_ARRAY_SIZE_INCR); + grib_darray_push(c,ret,dval); + *err=0; + return ret; } for (j=0;jnumberOfSubsets;j++) { lval=grib_decode_unsigned_long(data,pos,localWidth); @@ -671,10 +671,10 @@ static int encode_string_array(grib_context* c,grib_buffer* buff,long* pos, bufr if (n<=0) return GRIB_NO_VALUES; if (grib_sarray_used_size(stringValues)==1) { - n=1; - ival=0; + n=1; + ival=0; } else { - ival=self->iss_list->v[0]; + ival=self->iss_list->v[0]; } if (n>grib_sarray_used_size(stringValues)) @@ -708,7 +708,7 @@ static void set_missing_long_to_double(grib_darray* dvalues) /* ECC-750: The 'factor' argument is 10^-scale */ static int descriptor_get_min_max(bufr_descriptor* bd, long width, long reference, double factor, - double* minAllowed, double* maxAllowed) + double* minAllowed, double* maxAllowed) { /* Maximum value is allowed to be the largest number (all bits 1) which means it's MISSING */ unsigned long max1 = (1UL << width) - 1; /* Highest value for number with 'width' bits */ @@ -768,11 +768,11 @@ static int encode_double_array(grib_context* c,grib_buffer* buff,long* pos, bufr if (*v > maxAllowed || *v < minAllowed) { if (dont_fail_if_out_of_range) { grib_context_log(c, GRIB_LOG_ERROR, "encode_double_array: %s. Value (%g) out of range (minAllowed=%g, maxAllowed=%g)." - " Setting it to missing value\n", bd->shortName, *v, minAllowed, maxAllowed); + " Setting it to missing value\n", bd->shortName, *v, minAllowed, maxAllowed); grib_set_bits_on(buff->data,pos,modifiedWidth); } else { grib_context_log(c, GRIB_LOG_ERROR, "encode_double_array: %s. Value (%g) out of range (minAllowed=%g, maxAllowed=%g).", - bd->shortName, *v, minAllowed, maxAllowed); + bd->shortName, *v, minAllowed, maxAllowed); return GRIB_OUT_OF_RANGE; /* ECC-611 */ } } else { @@ -790,8 +790,8 @@ static int encode_double_array(grib_context* c,grib_buffer* buff,long* pos, bufr val0=dvalues->v[self->iss_list->v[0]]; is_constant=1; for (i=0;iv[self->iss_list->v[i]]; - if (val0 != values[i]) is_constant=0; + values[i]=dvalues->v[self->iss_list->v[i]]; + if (val0 != values[i]) is_constant=0; } v=values; @@ -822,8 +822,8 @@ static int encode_double_array(grib_context* c,grib_buffer* buff,long* pos, bufr /* Turn out-of-range values into 'missing' */ if (*v!=GRIB_MISSING_DOUBLE && (*v < minAllowed || *v > maxAllowed)) { grib_context_log(c, GRIB_LOG_ERROR, "encode_double_array: %s. Value at index %ld (%g) out of range (minAllowed=%g, maxAllowed=%g)." - " Setting it to missing value\n", - bd->shortName, (long)ii, *v, minAllowed, maxAllowed); + " Setting it to missing value\n", + bd->shortName, (long)ii, *v, minAllowed, maxAllowed); *v = GRIB_MISSING_DOUBLE; } ii++; @@ -850,12 +850,12 @@ static int encode_double_array(grib_context* c,grib_buffer* buff,long* pos, bufr } if (max>maxAllowed && max!=GRIB_MISSING_DOUBLE) { grib_context_log(c, GRIB_LOG_ERROR, "encode_double_array: %s. Maximum value (value[%lu]=%g) out of range (maxAllowed=%g).", - bd->shortName, index_of_max, max, maxAllowed, index_of_max); + bd->shortName, index_of_max, max, maxAllowed, index_of_max); return GRIB_OUT_OF_RANGE; } if (minshortName, index_of_min, min, minAllowed); + bd->shortName, index_of_min, min, minAllowed); return GRIB_OUT_OF_RANGE; } @@ -931,13 +931,13 @@ static int encode_double_value(grib_context* c,grib_buffer* buff,long* pos,bufr_ else if (value>maxAllowed || valueshortName, value, minAllowed, maxAllowed); + " Setting it to missing value\n", + bd->shortName, value, minAllowed, maxAllowed); value = GRIB_MISSING_DOUBLE; /* Ignore the bad value and instead use 'missing' */ grib_set_bits_on(buff->data,pos,modifiedWidth); } else { grib_context_log(c, GRIB_LOG_ERROR, "encode_double_value: %s. Value (%g) out of range (minAllowed=%g, maxAllowed=%g).", - bd->shortName, value, minAllowed, maxAllowed); + bd->shortName, value, minAllowed, maxAllowed); return GRIB_OUT_OF_RANGE; } } @@ -1109,28 +1109,28 @@ static int decode_replication(grib_context* c,grib_accessor_bufr_data_array* sel grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tdelayed replication localReference width=%ld", descriptors[i]->width); CHECK_END_DATA_RETURN(c, self, descriptors[i]->width+6, *err); if (*err) { - *numberOfRepetitions=0; + *numberOfRepetitions=0; } else { - localReference=grib_decode_unsigned_long(data,pos,descriptors[i]->width)+descriptors[i]->reference; - grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tdelayed replication localWidth width=6"); - width=grib_decode_unsigned_long(data,pos,6); - if (width) { - grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tdelayed replication is NOT constant for compressed data!"); - /* delayed replication number is not constant. NOT IMPLEMENTED */ - return GRIB_NOT_IMPLEMENTED; - } else { - *numberOfRepetitions=localReference*descriptors[i]->factor; - grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tdelayed replication value=%ld",*numberOfRepetitions); - } + localReference=grib_decode_unsigned_long(data,pos,descriptors[i]->width)+descriptors[i]->reference; + grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tdelayed replication localWidth width=6"); + width=grib_decode_unsigned_long(data,pos,6); + if (width) { + grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tdelayed replication is NOT constant for compressed data!"); + /* delayed replication number is not constant. NOT IMPLEMENTED */ + return GRIB_NOT_IMPLEMENTED; + } else { + *numberOfRepetitions=localReference*descriptors[i]->factor; + grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tdelayed replication value=%ld",*numberOfRepetitions); + } } } else { CHECK_END_DATA_RETURN(c, self, descriptors[i]->width, *err); if (*err) { - *numberOfRepetitions=0; + *numberOfRepetitions=0; } else { - *numberOfRepetitions=grib_decode_unsigned_long(data,pos,descriptors[i]->width)+ - descriptors[i]->reference*descriptors[i]->factor; - grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tdelayed replication value=%ld",*numberOfRepetitions); + *numberOfRepetitions=grib_decode_unsigned_long(data,pos,descriptors[i]->width)+ + descriptors[i]->reference*descriptors[i]->factor; + grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tdelayed replication value=%ld",*numberOfRepetitions); } } if (self->compressedData) { @@ -1364,7 +1364,7 @@ static int encode_element(grib_context* c,grib_accessor_bufr_data_array* self,in err=encode_double_value(c,buff,pos,bd,self,self->numericValues->v[subsetIndex]->v[elementIndex]); if (err) { grib_context_log(c,GRIB_LOG_ERROR,"Cannot encode %s=%g (subset=%d)", /*subsetIndex starts from 0*/ - bd->shortName, self->numericValues->v[subsetIndex]->v[elementIndex], subsetIndex+1); + bd->shortName, self->numericValues->v[subsetIndex]->v[elementIndex], subsetIndex+1); } } } @@ -1957,9 +1957,9 @@ static GRIB_INLINE int significanceQualifierIndex(int X,int Y) } static GRIB_INLINE void reset_deeper_qualifiers( - grib_accessor* significanceQualifierGroup[], - const int* const significanceQualifierDepth, - int numElements, int depth) + grib_accessor* significanceQualifierGroup[], + const int* const significanceQualifierDepth, + int numElements, int depth) { int i; for (i=0;iaccessor,"index"); - grib_unpack_long(anindex,index,&l); + long index[1]; + grib_accessor* anindex=grib_accessor_get_attribute(al->accessor,"index"); + grib_unpack_long(anindex,index,&l); #endif - return 1; - } + return 1; + } } return 0; } @@ -2132,7 +2132,7 @@ static void print_bitmap_debug_info(grib_context* c, bitmap_s* bitmap, grib_acce } static int bitmap_init(grib_context* c, bitmap_s* bitmap, - grib_accessors_list* bitmapStart, int bitmapSize, grib_accessors_list* lastAccessorInList) + grib_accessors_list* bitmapStart, int bitmapSize, grib_accessors_list* lastAccessorInList) { int ret=0,i; bitmap->cursor=bitmapStart->next; @@ -2305,7 +2305,7 @@ static int create_keys(grib_accessor* a,long onlySubset,long startSubset,long en } elementFromBitmap=NULL; if (descriptor->F==0 && IS_QUALIFIER(descriptor->X) && - self->unpackMode==CODES_BUFR_UNPACK_STRUCTURE) { + self->unpackMode==CODES_BUFR_UNPACK_STRUCTURE) { int sidx=significanceQualifierIndex(descriptor->X,descriptor->Y); groupNumber++; @@ -2315,7 +2315,7 @@ static int create_keys(grib_accessor* a,long onlySubset,long startSubset,long en if (depth < max_depth) { /* If depth >= max_depth, then no entry will be deeper so no need for call */ reset_deeper_qualifiers(significanceQualifierGroup,significanceQualifierDepth, - number_of_qualifiers,depth); + number_of_qualifiers,depth); } } else { /* if (forceGroupClosure) { */ @@ -2362,7 +2362,7 @@ static int create_keys(grib_accessor* a,long onlySubset,long startSubset,long en groupSection=bitmapGroup[bitmapIndex]->parent; depth=bitmapDepth[bitmapIndex]; reset_deeper_qualifiers(significanceQualifierGroup,significanceQualifierDepth, - number_of_qualifiers,depth); + number_of_qualifiers,depth); /* TODO: This branch is not reached in our tests! */ reset_deeper_qualifiers(bitmapGroup,bitmapDepth,MAX_NUMBER_OF_BITMAPS,depth); } else { @@ -2470,7 +2470,7 @@ static int create_keys(grib_accessor* a,long onlySubset,long startSubset,long en case 31021: associatedFieldSignificanceAccessor=elementAccessor; break; - /*case 33007:*/ + /*case 33007:*/ /* ECC-690: See later */ /* break; */ default: @@ -2553,7 +2553,7 @@ static int set_to_missing_if_out_of_range(grib_handle* h) /* First check if the transient key is set */ long setToMissingIfOutOfRange=0; if (grib_get_long(h, "setToMissingIfOutOfRange", &setToMissingIfOutOfRange)==GRIB_SUCCESS && - setToMissingIfOutOfRange != 0) + setToMissingIfOutOfRange != 0) { return 1; } @@ -2767,10 +2767,10 @@ static int process_elements(grib_accessor* a,int flag,long onlySubset,long start while (ip>=0 && n[ip]==0) { nn[ip]--; if (nn[ip]<=0) { - numberOfNestedRepetitions--; + numberOfNestedRepetitions--; } else { - n[ip]=numberOfElementsToRepeat[ip]; - i=startRepetition[ip]; + n[ip]=numberOfElementsToRepeat[ip]; + i=startRepetition[ip]; } ip--; } From 546f40114661387f08e051fe9e41df866cc1d8a7 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 1 Aug 2019 17:58:38 +0100 Subject: [PATCH 367/414] Rename test --- tests/CMakeLists.txt | 2 +- tests/Makefile.am | 2 +- tests/{list.sh => grib_list.sh} | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename tests/{list.sh => grib_list.sh} (100%) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 6accedb9a..2943795ce 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -148,7 +148,7 @@ list( APPEND tests_data_reqd grib_level index grib_bitmap - list + grib_list grib_second_order multi_from_message grib_change_scanning diff --git a/tests/Makefile.am b/tests/Makefile.am index c7b6d36fb..5067feb41 100755 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -44,7 +44,7 @@ TESTS = definitions.sh \ grib_level.sh \ index.sh \ grib_bitmap.sh \ - list.sh \ + grib_list.sh \ grib_second_order.sh \ multi_from_message.sh \ grib_change_scanning.sh \ diff --git a/tests/list.sh b/tests/grib_list.sh similarity index 100% rename from tests/list.sh rename to tests/grib_list.sh From 573bda90ce609727683c20238326a4f330788a5a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 1 Aug 2019 18:34:07 +0100 Subject: [PATCH 368/414] Rename test --- tests/CMakeLists.txt | 2 +- tests/{decimalPrecision.sh => grib_decimalPrecision.sh} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename tests/{decimalPrecision.sh => grib_decimalPrecision.sh} (100%) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 2943795ce..4b14db64f 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -135,7 +135,7 @@ list( APPEND tests_data_reqd grib_octahedral grib_global grib_concept - decimalPrecision + grib_decimalPrecision grib_bitsPerValue get_fail grib_missing diff --git a/tests/decimalPrecision.sh b/tests/grib_decimalPrecision.sh similarity index 100% rename from tests/decimalPrecision.sh rename to tests/grib_decimalPrecision.sh From 43bcf59ac4b892a6efbfcdecd7fa292b0f84ca39 Mon Sep 17 00:00:00 2001 From: Willem Deconinck Date: Fri, 2 Aug 2019 10:04:53 +0100 Subject: [PATCH 369/414] Fix compatibility with ecbuild 3.1 --- CMakeLists.txt | 2 -- fortran/CMakeLists.txt | 9 +++++++++ src/CMakeLists.txt | 17 ++++++++--------- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 26b95389e..c5848ba79 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -337,8 +337,6 @@ configure_file( eccodes_config.h.in eccodes_config.h ) add_definitions( -DHAVE_ECCODES_CONFIG_H ) -install( FILES ${CMAKE_CURRENT_BINARY_DIR}/eccodes_config.h DESTINATION ${INSTALL_INCLUDE_DIR} ) - if( CMAKE_COMPILER_IS_GNUCC ) ecbuild_add_c_flags("-pedantic") endif() diff --git a/fortran/CMakeLists.txt b/fortran/CMakeLists.txt index 119f09c2c..c0099c342 100644 --- a/fortran/CMakeLists.txt +++ b/fortran/CMakeLists.txt @@ -44,6 +44,15 @@ if( HAVE_FORTRAN ) SOURCES grib_fortran.c grib_f90.f90 eccodes_f90.f90 grib_kinds.h GENERATED grib_f90.f90 eccodes_f90.f90 LIBS eccodes ) + if( DEFINED ecbuild_VERSION AND NOT ${ecbuild_VERSION} VERSION_LESS 3.1 ) + # Installed module directory is not in the PUBLIC INCLUDES! + target_include_directories( eccodes_f90 PUBLIC $ ) + + # NOTE: When eccodes accepts ecbuild 3.0 as minimum requirement, + # this should instead be written inside the ecbuild_add_library macro with: + # PUBLIC_INCLUDES $ + endif() + add_custom_command( TARGET eccodes_f90 POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/include COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_Fortran_MODULE_DIRECTORY}/${CMAKE_CFG_INTDIR}/eccodes.mod ${CMAKE_BINARY_DIR}/include diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 5c85c9c48..7d43d4995 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -434,14 +434,13 @@ endif() ecbuild_add_library(TARGET eccodes SOURCES grib_api_version.c # griby.c gribl.c - ${grib_api_srcs} + ${grib_api_srcs} GENERATED grib_api_version.c LIBS ${ECCODES_EXTRA_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${CMATH_LIBRARIES} - TEMPLATES ${grib_api_extra_srcs}) - - -install( FILES grib_api.h eccodes.h eccodes_windef.h DESTINATION ${INSTALL_INCLUDE_DIR} ) -install( FILES ${CMAKE_CURRENT_BINARY_DIR}/eccodes_version.h DESTINATION ${INSTALL_INCLUDE_DIR} ) - - - + TEMPLATES ${grib_api_extra_srcs} + INSTALL_HEADERS_LIST + grib_api.h + eccodes.h + eccodes_windef.h + ${CMAKE_CURRENT_BINARY_DIR}/eccodes_version.h + ${PROJECT_BINARY_DIR}/eccodes_config.h ) From e17f0ec194f8e1b23d2dfc6b93c56f62f1650706 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 2 Aug 2019 11:07:57 +0100 Subject: [PATCH 370/414] Testing: reinstate the GRIB bits per value test --- tests/CMakeLists.txt | 2 + tests/bpv_limit.c | 172 ++++++++++++++++++++----------------------- tests/bpv_limit.sh | 9 ++- 3 files changed, 87 insertions(+), 96 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 4b14db64f..4ca0701c6 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -10,6 +10,7 @@ execute_process( COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_S # Build the executables used by test scripts ################################################ list( APPEND test_bins + bpv_limit grib_double_cmp read_any julian @@ -65,6 +66,7 @@ list( APPEND tests_no_data_reqd ) # These tests do require data downloads list( APPEND tests_data_reqd + bpv_limit grib_double_cmp grib_change_packing bufr_dump_data diff --git a/tests/bpv_limit.c b/tests/bpv_limit.c index 50a1769d2..9bf2e4eb1 100644 --- a/tests/bpv_limit.c +++ b/tests/bpv_limit.c @@ -9,121 +9,107 @@ */ /* - * ===================================================================================== - * - * Filename: bpv_limit.c - * - * Description: test setting the number of bpv before decoding and then encoding; - * setting the wrong number of bpv should result in an exception - * - * Version: 1.0 - * Created: 30/03/10 16:07:51 - * Revision: none - * Compiler: gcc - * - * Author: Cristian Codorean (mow), mow@ecmwf.int - * Company: ECMWF - * - * ===================================================================================== + * Description: test setting the number of bits per value before decoding and then encoding; + * setting the wrong number of bpv should result in an error */ -#include -#include +#include #include "grib_api.h" -void usage(char* prog) { - printf("usage: %s filein\n",prog); - exit(1); +static double compare_double_absolute(double a,double b,double tolerance) +{ + double ret=0; + double d=fabs(a-b); + if (d > tolerance) { + ret=d; + } + return ret; } +static void usage(const char* prog) { + fprintf(stderr, "usage: %s input\n",prog); + exit(1); +} + +static int check_error_code(int err) +{ + if (err == GRIB_INVALID_BPV || err == GRIB_DECODING_ERROR) + return GRIB_SUCCESS; + return GRIB_INVALID_ARGUMENT; +} int main(int argc, char** argv) { - int err = 0; - size_t values_len=0; - double *values = NULL; - char error_msg[100] ; - - size_t slong = sizeof(long) * 8 ; + int err = 0, i; + size_t values_len=0; + double *values = NULL; + char error_msg[100] ; + const double tolerance = 1e-5; + size_t slong = sizeof(long) * 8 ; + grib_handle *h; + char* filename ; - int i; + if (argc<2) usage(argv[0]); + filename=argv[1]; - FILE* in = NULL; - char* filename ; + for (i=0;i<255;i++) { + FILE* in = fopen(filename,"r"); assert(in); + h = grib_handle_new_from_file(0,in,&err); assert(h); - grib_handle *h = NULL; + /* get the size of the values array*/ + GRIB_CHECK(grib_get_size(h,"values",&values_len),0); - if (argc<2) usage(argv[0]); - filename=argv[1]; + values = (double*)malloc(values_len*sizeof(double)); - in = fopen(filename,"r"); - if(!in) { - printf("ERROR: unable to open file %s\n",filename); - return 1; - } + err = grib_get_double_array(h,"values",values,&values_len); + if (compare_double_absolute(values[0], 2.7900000000e+02, tolerance) != 0) + printf("oops i=%d values[0]=%g\n", i,values[0]); + if (compare_double_absolute(values[1], 2.7996093750e+02, tolerance) != 0) + printf("oops i=%d values[1]=%g\n", i,values[1]); - /* create new handle from a message in a file*/ - h = grib_handle_new_from_file(0,in,&err); - if (h == NULL) { - printf("Error: unable to create handle from file %s\n",filename); - } + GRIB_CHECK(grib_set_long(h,"bitsPerValue",i),0); - for (i=0;i<255;i++) { + err = grib_set_double_array(h,"values",values,values_len); - /* get the size of the values array*/ - GRIB_CHECK(grib_get_size(h,"values",&values_len),0); + free(values); + values = 0; - values = (double*)malloc(values_len*sizeof(double)); + /* + * check if encoding of the data fails when the number of bpv + * is not supported; bpv allowed on decoding is bpv < size of long + */ - err = grib_get_double_array(h,"values",values,&values_len); + if (i < slong && err == 0) { + /* do nothing */ + } else if (i >= slong && check_error_code(err)==GRIB_SUCCESS) { + /* do nothing */ + } else { + sprintf(error_msg,"Error decoding when bpv=%d. Error message:%s",i,grib_get_error_message(err)); + perror(error_msg); + exit(1); + } - GRIB_CHECK(grib_set_long(h,"bitsPerValue",i),0); + values = (double*)malloc(values_len*sizeof(double)); + err = grib_get_double_array(h,"values",values,&values_len); - err = grib_set_double_array(h,"values",values,values_len); + /* + * check if decoding of the data fails when the number of bpv + * is not supported; bpv allowed on decoding is bpv <= size of long + */ - free(values); - values = 0; + if (i < slong && err == 0) { + /* do nothing */ + } else if (i >= slong && check_error_code(err)==GRIB_SUCCESS) { + /* do nothing */ + } else { + sprintf(error_msg,"Error decoding when bpv=%d. Error message:%s",i,grib_get_error_message(err)); + perror(error_msg); + exit(1); + } - /* - * check if encoding of the data fails when the number of bpv - * is not supported; bpv allowed on decoding is bpv < size of long - */ - - if (i < slong && err == 0) { - /* do nothing */ - } else if (i >= slong && err == GRIB_INVALID_BPV) { - /* do nothing */ - } else { - sprintf(error_msg,"Error decoding when bpv=%d. Error message:%s",i,grib_get_error_message(err)); - perror(error_msg); - exit(1); + free(values); values = 0; + grib_handle_delete(h); h = 0; + fclose(in); } - values = (double*)malloc(values_len*sizeof(double)); - err = grib_get_double_array(h,"values",values,&values_len); - - /* - * check if decoding of the data fails when the number of bpv - * is not supported; bpv allowed on decoding is bpv <= size of long - */ - - if (i <= slong && err == 0) { - /* do nothing */ - } else if (i > slong && err == GRIB_INVALID_BPV) { - /* do nothing */ - } else { - sprintf(error_msg,"Error decoding when bpv=%d. Error message:%s",i,grib_get_error_message(err)); - perror(error_msg); - exit(1); - } - - free(values); - values = 0; - } - - grib_handle_delete(h); - h=0; - - fclose(in); - - return 0; + return 0; } diff --git a/tests/bpv_limit.sh b/tests/bpv_limit.sh index 205ead64d..2e27c8c2b 100755 --- a/tests/bpv_limit.sh +++ b/tests/bpv_limit.sh @@ -17,6 +17,9 @@ REDIRECT=/dev/null -for file in ${data_dir}/regular_latlon_surface.grib?; do - ./bpv_limit $file 2> $REDIRECT > $REDIRECT -done +./bpv_limit ${data_dir}/regular_latlon_surface.grib2 + +# TODO: grib1 does not work yet. bpv=64 but decode does not fail as expected +#for file in ${data_dir}/regular_latlon_surface.grib?; do +# ./bpv_limit $file +#done From b5d6236316880036a43a249d22a6153bd84410b7 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 5 Aug 2019 11:32:11 +0100 Subject: [PATCH 371/414] Debug messages should go to stderr not stdout --- src/grib_accessor_class_bufr_data_array.c | 4 +- ...ib_accessor_class_data_g1complex_packing.c | 147 +++++++++--------- ...rib_accessor_class_data_jpeg2000_packing.c | 6 +- ...accessor_class_number_of_points_gaussian.c | 2 +- src/grib_geography.c | 4 +- src/grib_handle.c | 4 +- src/grib_iterator_class_gaussian_reduced.c | 6 +- src/grib_templates.c | 4 +- src/grib_util.c | 36 ++--- src/grib_value.c | 32 ++-- 10 files changed, 121 insertions(+), 124 deletions(-) diff --git a/src/grib_accessor_class_bufr_data_array.c b/src/grib_accessor_class_bufr_data_array.c index fd86ad198..37ba5a394 100644 --- a/src/grib_accessor_class_bufr_data_array.c +++ b/src/grib_accessor_class_bufr_data_array.c @@ -2108,7 +2108,7 @@ static int is_bitmap_start_descriptor(grib_accessors_list* al, int* err) static void print_bitmap_debug_info(grib_context* c, bitmap_s* bitmap, grib_accessors_list* bitmapStart, int bitmapSize) { int i = 0, ret = 0; - printf("ECCODES DEBUG: bitmap_init: bitmapSize=%d\n", bitmapSize); + fprintf(stderr, "ECCODES DEBUG: bitmap_init: bitmapSize=%d\n", bitmapSize); bitmap->cursor=bitmapStart->next; bitmap->referredElement=bitmapStart; @@ -2125,7 +2125,7 @@ static void print_bitmap_debug_info(grib_context* c, bitmap_s* bitmap, grib_acce for (i=1;ireferredElement) { - printf("ECCODES DEBUG:\t bitmap_init: i=%d |%s|\n", i,bitmap->referredElement->accessor->name); + fprintf(stderr, "ECCODES DEBUG:\t bitmap_init: i=%d |%s|\n", i,bitmap->referredElement->accessor->name); bitmap->referredElement=bitmap->referredElement->prev; } } diff --git a/src/grib_accessor_class_data_g1complex_packing.c b/src/grib_accessor_class_data_g1complex_packing.c index d73f57664..e68a407c6 100644 --- a/src/grib_accessor_class_data_g1complex_packing.c +++ b/src/grib_accessor_class_data_g1complex_packing.c @@ -169,98 +169,95 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long v, grib_arguments* args) { - grib_accessor_data_g1complex_packing *self =(grib_accessor_data_g1complex_packing*)a; - self->half_byte = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->N = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->packingType = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->ieee_packing = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->precision = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->edition=1; - a->flags |= GRIB_ACCESSOR_FLAG_DATA; - } - + grib_accessor_data_g1complex_packing *self =(grib_accessor_data_g1complex_packing*)a; + self->half_byte = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); + self->N = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); + self->packingType = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); + self->ieee_packing = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); + self->precision = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); + self->edition=1; + a->flags |= GRIB_ACCESSOR_FLAG_DATA; +} static int pack_double(grib_accessor* a, const double* val, size_t *len) { - grib_accessor_data_g1complex_packing* self = - (grib_accessor_data_g1complex_packing*)a; - int ret = GRIB_SUCCESS; - long seclen=0; - long sub_j= 0; - long sub_k= 0; - long sub_m= 0; - long n= 0; - long half_byte= 0; - long bits_per_value =0; - size_t buflen =0; - grib_context* c=a->context; - grib_handle* h=grib_handle_of_accessor(a); - char* ieee_packing_s=NULL; - char* packingType_s=NULL; - char* precision_s=NULL; + grib_accessor_data_g1complex_packing* self = + (grib_accessor_data_g1complex_packing*)a; + int ret = GRIB_SUCCESS; + long seclen=0; + long sub_j= 0; + long sub_k= 0; + long sub_m= 0; + long n= 0; + long half_byte= 0; + long bits_per_value =0; + size_t buflen =0; + grib_context* c=a->context; + grib_handle* h=grib_handle_of_accessor(a); + char* ieee_packing_s=NULL; + char* packingType_s=NULL; + char* precision_s=NULL; - grib_accessor_class* super = *(a->cclass->super); + grib_accessor_class* super = *(a->cclass->super); + if (*len ==0) return GRIB_NO_VALUES; - if (*len ==0) return GRIB_NO_VALUES; + if (c->ieee_packing && self->ieee_packing) { + long precision=c->ieee_packing==32 ? 1 : 2; + size_t lenstr=strlen(self->ieee_packing); - if (c->ieee_packing && self->ieee_packing) { - long precision=c->ieee_packing==32 ? 1 : 2; - size_t lenstr=strlen(self->ieee_packing); - - packingType_s=grib_context_strdup(c,self->packingType); - ieee_packing_s=grib_context_strdup(c,self->ieee_packing); - precision_s=grib_context_strdup(c,self->precision); - - grib_set_string(h,packingType_s,ieee_packing_s,&lenstr); - grib_set_long(h,precision_s,precision); - - grib_context_free(c,packingType_s); - grib_context_free(c,ieee_packing_s); - grib_context_free(c,precision_s); - return grib_set_double_array(h,"values",val,*len); - } + packingType_s=grib_context_strdup(c,self->packingType); + ieee_packing_s=grib_context_strdup(c,self->ieee_packing); + precision_s=grib_context_strdup(c,self->precision); - if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_j,&sub_j)) != GRIB_SUCCESS) - return ret; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_k,&sub_k)) != GRIB_SUCCESS) - return ret; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_m,&sub_m)) != GRIB_SUCCESS) - return ret; + grib_set_string(h,packingType_s,ieee_packing_s,&lenstr); + grib_set_long(h,precision_s,precision); - self->dirty=1; + grib_context_free(c,packingType_s); + grib_context_free(c,ieee_packing_s); + grib_context_free(c,precision_s); + return grib_set_double_array(h,"values",val,*len); + } - Assert ((sub_j== sub_k) && (sub_m== sub_j)); + if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_j,&sub_j)) != GRIB_SUCCESS) + return ret; + if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_k,&sub_k)) != GRIB_SUCCESS) + return ret; + if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_m,&sub_m)) != GRIB_SUCCESS) + return ret; - ret = super->pack_double(a,val,len); + self->dirty=1; - if(ret == GRIB_SUCCESS){ + Assert ((sub_j== sub_k) && (sub_m== sub_j)); + + ret = super->pack_double(a,val,len); + + if(ret == GRIB_SUCCESS){ n = a->offset + 4*((sub_k+1)*(sub_k+2)); #if 1 - /* Octet number starts from beginning of message but shouldn't */ - if((ret = grib_set_long_internal(grib_handle_of_accessor(a),self->N,n)) != GRIB_SUCCESS) - return ret; + /* Octet number starts from beginning of message but shouldn't */ + if((ret = grib_set_long_internal(grib_handle_of_accessor(a),self->N,n)) != GRIB_SUCCESS) + return ret; #else - ret = grib_get_long_internal(grib_handle_of_accessor(a),self->offsetsection,&offsetsection); - if(ret != GRIB_SUCCESS) return ret; - if((ret = grib_set_long_internal(grib_handle_of_accessor(a),self->N,n-offsetsection)) - != GRIB_SUCCESS) return ret; + ret = grib_get_long_internal(grib_handle_of_accessor(a),self->offsetsection,&offsetsection); + if(ret != GRIB_SUCCESS) return ret; + if((ret = grib_set_long_internal(grib_handle_of_accessor(a),self->N,n-offsetsection)) + != GRIB_SUCCESS) return ret; #endif - ret = grib_get_long_internal(grib_handle_of_accessor(a),self->bits_per_value,&bits_per_value); - if(ret != GRIB_SUCCESS) return ret; + ret = grib_get_long_internal(grib_handle_of_accessor(a),self->bits_per_value,&bits_per_value); + if(ret != GRIB_SUCCESS) return ret; - ret = grib_get_long_internal(grib_handle_of_accessor(a),self->seclen,&seclen); - if(ret != GRIB_SUCCESS) return ret; + ret = grib_get_long_internal(grib_handle_of_accessor(a),self->seclen,&seclen); + if(ret != GRIB_SUCCESS) return ret; - buflen = 32*(sub_k+1)*(sub_k+2)+(*len-(sub_k+1)*(sub_k+2))*bits_per_value+18*8; - half_byte = seclen*8-buflen; - if (a->context->debug==-1) { - printf("ECCODES DEBUG: half_byte=%ld\n",half_byte); - } + buflen = 32*(sub_k+1)*(sub_k+2)+(*len-(sub_k+1)*(sub_k+2))*bits_per_value+18*8; + half_byte = seclen*8-buflen; + if (a->context->debug==-1) { + fprintf(stderr, "ECCODES DEBUG: half_byte=%ld\n",half_byte); + } - ret = grib_set_long_internal(grib_handle_of_accessor(a),self->half_byte, half_byte); - if(ret != GRIB_SUCCESS) return ret; - } - return ret; + ret = grib_set_long_internal(grib_handle_of_accessor(a),self->half_byte, half_byte); + if(ret != GRIB_SUCCESS) return ret; + } + return ret; } - diff --git a/src/grib_accessor_class_data_jpeg2000_packing.c b/src/grib_accessor_class_data_jpeg2000_packing.c index 40a786e7e..787c89a77 100644 --- a/src/grib_accessor_class_data_jpeg2000_packing.c +++ b/src/grib_accessor_class_data_jpeg2000_packing.c @@ -204,11 +204,11 @@ static void init(grib_accessor* a,const long v, grib_arguments* args) if (a->context->debug==-1) { switch (self->jpeg_lib) { case 0: - printf("ECCODES DEBUG jpeg2000_packing: jpeg_lib not set!\n"); break; + fprintf(stderr, "ECCODES DEBUG jpeg2000_packing: jpeg_lib not set!\n"); break; case JASPER_LIB: - printf("ECCODES DEBUG jpeg2000_packing: using JASPER_LIB\n"); break; + fprintf(stderr, "ECCODES DEBUG jpeg2000_packing: using JASPER_LIB\n"); break; case OPENJPEG_LIB: - printf("ECCODES DEBUG jpeg2000_packing: using OPENJPEG_LIB\n"); break; + fprintf(stderr, "ECCODES DEBUG jpeg2000_packing: using OPENJPEG_LIB\n"); break; default: Assert(0); break; } diff --git a/src/grib_accessor_class_number_of_points_gaussian.c b/src/grib_accessor_class_number_of_points_gaussian.c index 20bdcadbd..f2195a45e 100644 --- a/src/grib_accessor_class_number_of_points_gaussian.c +++ b/src/grib_accessor_class_number_of_points_gaussian.c @@ -565,7 +565,7 @@ static int unpack_long_with_legacy_support(grib_accessor* a, long* val, size_t * if (get_number_of_data_values(h, &numDataValues) == GRIB_SUCCESS) { if (*val != numDataValues) { if (h->context->debug) - printf("ECCODES DEBUG number_of_points_gaussian: LEGACY MODE activated. " + fprintf(stderr, "ECCODES DEBUG number_of_points_gaussian: LEGACY MODE activated. " "Count(=%ld) changed to num values(=%ld)\n",*val,(long)numDataValues); *val = numDataValues; } diff --git a/src/grib_geography.c b/src/grib_geography.c index 7fffce81e..84155de05 100644 --- a/src/grib_geography.c +++ b/src/grib_geography.c @@ -146,8 +146,8 @@ int is_gaussian_global( { grib_context* c=grib_context_get_default(); if (c->debug) { - printf("ECCODES DEBUG is_gaussian_global: lat1=%f, lat2=%f, glat0=%f, d=%f\n", lat1, lat2, latitudes[0], d); - printf("ECCODES DEBUG is_gaussian_global: lon1=%f, lon2=%f, glon2=%f, delta=%f\n", lon1, lon2, lon2_global, delta); + fprintf(stderr,"ECCODES DEBUG is_gaussian_global: lat1=%f, lat2=%f, glat0=%f, d=%f\n", lat1, lat2, latitudes[0], d); + fprintf(stderr,"ECCODES DEBUG is_gaussian_global: lon1=%f, lon2=%f, glon2=%f, delta=%f\n", lon1, lon2, lon2_global, delta); } } */ diff --git a/src/grib_handle.c b/src/grib_handle.c index adf54e7a0..4364b8c8b 100644 --- a/src/grib_handle.c +++ b/src/grib_handle.c @@ -261,7 +261,7 @@ grib_handle* grib_handle_new_from_samples( grib_context* c, const char* name ) if(g) return g; */ if (c->debug) { - printf("ECCODES DEBUG: grib_handle_new_from_samples '%s'\n", name); + fprintf(stderr, "ECCODES DEBUG: grib_handle_new_from_samples '%s'\n", name); } g = grib_external_template( c,name ); @@ -284,7 +284,7 @@ grib_handle* codes_bufr_handle_new_from_samples ( grib_context* c, const char* n if(g) return g; */ if (c->debug) { - printf("ECCODES DEBUG: grib_handle_new_from_samples '%s'\n", name); + fprintf(stderr, "ECCODES DEBUG: grib_handle_new_from_samples '%s'\n", name); } g=bufr_external_template ( c,name ); diff --git a/src/grib_iterator_class_gaussian_reduced.c b/src/grib_iterator_class_gaussian_reduced.c index e1b12b630..f986f7471 100644 --- a/src/grib_iterator_class_gaussian_reduced.c +++ b/src/grib_iterator_class_gaussian_reduced.c @@ -167,7 +167,7 @@ static int iterate_reduced_gaussian_subarea_legacy(grib_iterator* iter, grib_han if (h->context->debug) { const size_t np = count_subarea_points(h, get_reduced_row, pl, plsize, lon_first, lon_last); - printf("ECCODES DEBUG grib_iterator_class_gaussian_reduced: Legacy sub-area num points=%ld\n", (long)np); + fprintf(stderr,"ECCODES DEBUG grib_iterator_class_gaussian_reduced: Legacy sub-area num points=%ld\n", (long)np); } /*find starting latitude */ @@ -219,7 +219,7 @@ static int iterate_reduced_gaussian_subarea_algorithm2(grib_iterator* iter, grib if (h->context->debug) { const size_t np = count_subarea_points(h, get_reduced_row, pl, plsize, lon_first, lon_last); - printf("ECCODES DEBUG grib_iterator_class_gaussian_reduced: sub-area num points=%ld\n", (long)np); + fprintf(stderr, "ECCODES DEBUG grib_iterator_class_gaussian_reduced: sub-area num points=%ld\n", (long)np); } /* Find starting latitude */ @@ -368,7 +368,7 @@ static int init(grib_iterator* iter, grib_handle* h, grib_arguments* args) iter->e=0; if (h->context->debug) { const size_t np = count_global_points(pl, plsize); - printf("ECCODES DEBUG grib_iterator_class_gaussian_reduced: global num points=%ld\n", (long)np); + fprintf(stderr, "ECCODES DEBUG grib_iterator_class_gaussian_reduced: global num points=%ld\n", (long)np); } for (j=0;jdebug==-1) { - printf("ECCODES DEBUG: try_template path='%s'\n", path); + fprintf(stderr, "ECCODES DEBUG: try_template path='%s'\n", path); } if(codes_access(path,F_OK) == 0) @@ -79,7 +79,7 @@ static grib_handle* try_bufr_template(grib_context* c,const char* dir,const char sprintf(path,"%s/%s.tmpl",dir,name); if (c->debug==-1) { - printf("ECCODES DEBUG: try_template path='%s'\n", path); + fprintf(stderr, "ECCODES DEBUG: try_template path='%s'\n", path); } if(codes_access(path,F_OK) == 0) diff --git a/src/grib_util.c b/src/grib_util.c index ffb4b4e88..532bf268f 100644 --- a/src/grib_util.c +++ b/src/grib_util.c @@ -345,22 +345,22 @@ static void print_values(grib_context* c, const grib_util_grid_spec2* spec, size_t i=0; int isConstant = 1; double v = 0, minVal=DBL_MAX, maxVal=-DBL_MAX; - printf("ECCODES DEBUG grib_util grib_set_values: setting %lu key/value pairs\n",(unsigned long)count); + fprintf(stderr, "ECCODES DEBUG grib_util grib_set_values: setting %lu key/value pairs\n",(unsigned long)count); for(i=0; i %s = %ld;\n" + case GRIB_TYPE_LONG: fprintf(stderr, "ECCODES DEBUG grib_util: => %s = %ld;\n" ,keyval_pairs[i].name,(long)keyval_pairs[i].long_value); break; - case GRIB_TYPE_DOUBLE: printf("ECCODES DEBUG grib_util: => %s = %.16e;\n" + case GRIB_TYPE_DOUBLE: fprintf(stderr, "ECCODES DEBUG grib_util: => %s = %.16e;\n" ,keyval_pairs[i].name,keyval_pairs[i].double_value); break; - case GRIB_TYPE_STRING: printf("ECCODES DEBUG grib_util: => %s = \"%s\";\n" + case GRIB_TYPE_STRING: fprintf(stderr, "ECCODES DEBUG grib_util: => %s = \"%s\";\n" ,keyval_pairs[i].name,keyval_pairs[i].string_value); break; } } - printf("ECCODES DEBUG grib_util: data_values_count=%lu;\n", (unsigned long)data_values_count); + fprintf(stderr, "ECCODES DEBUG grib_util: data_values_count=%lu;\n", (unsigned long)data_values_count); for (i=0; imissingValue) { @@ -380,9 +380,9 @@ static void print_values(grib_context* c, const grib_util_grid_spec2* spec, if (v > maxVal) maxVal=v; } } - printf("ECCODES DEBUG grib_util: data_values are CONSTANT? %d\t(min=%.16e, max=%.16e)\n", + fprintf(stderr, "ECCODES DEBUG grib_util: data_values are CONSTANT? %d\t(min=%.16e, max=%.16e)\n", isConstant, minVal, maxVal); - if (c->gribex_mode_on) printf("ECCODES DEBUG grib_util: GRIBEX mode is turned on!\n"); + if (c->gribex_mode_on) fprintf(stderr, "ECCODES DEBUG grib_util: GRIBEX mode is turned on!\n"); #if 0 if (spec->bitmapPresent) { @@ -523,7 +523,7 @@ static int expand_bounding_box(grib_handle* h, grib_values *values, const size_t if (is_angle && !angle_can_be_encoded(h, values[i].double_value)) { new_angle = adjust_angle(values[i].double_value, roundingPolicy, angle_subdivisions); if (h->context->debug) { - printf("ECCODES DEBUG grib_util EXPAND_BOUNDING_BOX %s: old=%.15e new=%.15e (%s)\n", + fprintf(stderr, "ECCODES DEBUG grib_util EXPAND_BOUNDING_BOX %s: old=%.15e new=%.15e (%s)\n", values[i].name, values[i].double_value, new_angle, (roundingPolicy==eROUND_ANGLE_UP?"Up":"Down")); } @@ -887,9 +887,9 @@ grib_handle* grib_util_set_spec2(grib_handle* h, grib_get_long(h,"bitsPerValue",&input_bits_per_value); grib_get_long(h,"decimalScaleFactor",&input_decimal_scale_factor); if (h->context->debug==-1) { - printf("ECCODES DEBUG grib_util: input_packing_type = %s\n",input_packing_type); - printf("ECCODES DEBUG grib_util: input_bits_per_value = %ld\n",input_bits_per_value); - printf("ECCODES DEBUG grib_util: input_decimal_scale_factor = %ld\n",input_decimal_scale_factor); + fprintf(stderr, "ECCODES DEBUG grib_util: input_packing_type = %s\n",input_packing_type); + fprintf(stderr, "ECCODES DEBUG grib_util: input_bits_per_value = %ld\n",input_bits_per_value); + fprintf(stderr, "ECCODES DEBUG grib_util: input_decimal_scale_factor = %ld\n",input_decimal_scale_factor); } /*if ( (*err=check_values(data_values, data_values_count))!=GRIB_SUCCESS ) { @@ -983,9 +983,9 @@ grib_handle* grib_util_set_spec2(grib_handle* h, } if (h->context->debug==-1) { int j=0; - printf("ECCODES DEBUG grib_util: grib_set_double_array\n"); - for (j=0;j<20;j++) printf("ECCODES DEBUG grib_util %g\n",data_values[j]); - printf("ECCODES DEBUG grib_util: data_values_count=%d \n",(int)data_values_count); + fprintf(stderr, "ECCODES DEBUG grib_util: grib_set_double_array\n"); + for (j=0;j<20;j++) fprintf(stderr, "ECCODES DEBUG grib_util %g\n",data_values[j]); + fprintf(stderr, "ECCODES DEBUG grib_util: data_values_count=%d \n",(int)data_values_count); } if((*err = grib_set_double_array(h,"values",data_values,data_values_count)) != 0) @@ -993,7 +993,7 @@ grib_handle* grib_util_set_spec2(grib_handle* h, goto cleanup; } if (h->context->debug==-1) - printf("ECCODES DEBUG grib_util: done grib_set_double_array \n"); + fprintf(stderr, "ECCODES DEBUG grib_util: done grib_set_double_array \n"); /* convert to second_order if not constant field */ @@ -1460,8 +1460,8 @@ grib_handle* grib_util_set_spec2(grib_handle* h, } if (h->context->debug==-1) { - printf("ECCODES DEBUG grib_util: global_grid = %d\n", global_grid); - printf("ECCODES DEBUG grib_util: expandBoundingBox = %d\n", expandBoundingBox); + fprintf(stderr, "ECCODES DEBUG grib_util: global_grid = %d\n", global_grid); + fprintf(stderr, "ECCODES DEBUG grib_util: expandBoundingBox = %d\n", expandBoundingBox); print_values(h->context,spec,data_values,data_values_count,values,count); } @@ -1631,7 +1631,7 @@ grib_handle* grib_util_set_spec2(grib_handle* h, } #endif if (h->context->debug==-1) - printf("ECCODES DEBUG: grib_util_set_spec end\n"); + fprintf(stderr, "ECCODES DEBUG: grib_util_set_spec end\n"); return outh; diff --git a/src/grib_value.c b/src/grib_value.c index 1d826440f..a6655c786 100644 --- a/src/grib_value.c +++ b/src/grib_value.c @@ -66,7 +66,7 @@ int grib_set_long_internal(grib_handle* h, const char* name, long val) a = grib_find_accessor(h, name); if (h->context->debug) - printf("ECCODES DEBUG grib_set_long_internal %s=%ld\n",name,(long)val); + fprintf(stderr, "ECCODES DEBUG grib_set_long_internal %s=%ld\n",name,(long)val); if(a){ ret = grib_pack_long(a, &val, &l); @@ -92,7 +92,7 @@ int grib_set_long(grib_handle* h, const char* name, long val) a = grib_find_accessor(h, name); if (h->context->debug) - printf("ECCODES DEBUG grib_set_long %s=%ld\n",name,(long)val); + fprintf(stderr, "ECCODES DEBUG grib_set_long %s=%ld\n",name,(long)val); if(a){ if(a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) @@ -116,7 +116,7 @@ int grib_set_double_internal(grib_handle* h, const char* name, double val) a = grib_find_accessor(h, name); if (h->context->debug) - printf("ECCODES DEBUG grib_set_double_internal %s=%g\n",name,val); + fprintf(stderr, "ECCODES DEBUG grib_set_double_internal %s=%g\n",name,val); if(a){ ret = grib_pack_double(a, &val, &l); @@ -309,7 +309,7 @@ int grib_set_double(grib_handle* h, const char* name, double val) a = grib_find_accessor(h, name); if (h->context->debug) - printf("ECCODES DEBUG grib_set_double %s=%g\n",name,val); + fprintf(stderr, "ECCODES DEBUG grib_set_double %s=%g\n",name,val); if(a){ @@ -334,7 +334,7 @@ int grib_set_string_internal(grib_handle* h, const char* name, a = grib_find_accessor(h, name); if (h->context->debug) - printf("ECCODES DEBUG grib_set_string_internal %s=%s\n",name,val); + fprintf(stderr, "ECCODES DEBUG grib_set_string_internal %s=%s\n",name,val); if(a){ ret = grib_pack_string(a, val, length); @@ -366,7 +366,7 @@ int grib_set_string(grib_handle* h, const char* name, const char* val, size_t *l grib_get_long(h,"bitsPerValue",&bitsPerValue); if (bitsPerValue==0) { if (h->context->debug) { - printf("ECCODES DEBUG grib_set_string packingType: Constant field cannot be encoded in second order. Packing not changed\n"); + fprintf(stderr, "ECCODES DEBUG grib_set_string packingType: Constant field cannot be encoded in second order. Packing not changed\n"); } return 0; } @@ -375,7 +375,7 @@ int grib_set_string(grib_handle* h, const char* name, const char* val, size_t *l ret = grib_get_size(h, "codedValues", &numCodedVals); if (ret == GRIB_SUCCESS && numCodedVals < 3) { if (h->context->debug) { - printf("ECCODES DEBUG grib_set_string packingType: not enough coded values for second order. Packing not changed\n"); + fprintf(stderr, "ECCODES DEBUG grib_set_string packingType: not enough coded values for second order. Packing not changed\n"); } return 0; } @@ -384,7 +384,7 @@ int grib_set_string(grib_handle* h, const char* name, const char* val, size_t *l a = grib_find_accessor(h, name); if (h->context->debug) - printf("ECCODES DEBUG grib_set_string %s=|%s|\n",name,val); + fprintf(stderr, "ECCODES DEBUG grib_set_string %s=|%s|\n",name,val); if(a) { @@ -408,7 +408,7 @@ int grib_set_string_array(grib_handle* h, const char* name, const char** val, si a = grib_find_accessor(h, name); if (h->context->debug) { - printf("ECCODES DEBUG grib_set_string_array key=%s %ld values\n",name,(long)length); + fprintf(stderr, "ECCODES DEBUG grib_set_string_array key=%s %ld values\n",name,(long)length); } if(a) @@ -521,7 +521,7 @@ int grib_set_missing(grib_handle* h, const char* name) return GRIB_READ_ONLY; if(a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) { - if (h->context->debug) printf("ECCODES DEBUG grib_set_missing %s\n",name); + if (h->context->debug) fprintf(stderr, "ECCODES DEBUG grib_set_missing %s\n",name); ret=grib_pack_missing(a); if(ret == GRIB_SUCCESS) @@ -672,7 +672,7 @@ int grib_set_double_array_internal(grib_handle* h, const char* name, const doubl int ret=0; if (h->context->debug) - printf("ECCODES DEBUG grib_set_double_array_internal key=%s %ld values\n",name,(long)length); + fprintf(stderr, "ECCODES DEBUG grib_set_double_array_internal key=%s %ld values\n",name,(long)length); if (length==0) { grib_accessor* a = grib_find_accessor(h, name); @@ -684,7 +684,7 @@ int grib_set_double_array_internal(grib_handle* h, const char* name, const doubl if (ret!=GRIB_SUCCESS) grib_context_log(h->context,GRIB_LOG_ERROR,"unable to set double array %s (%s)", name,grib_get_error_message(ret)); - /*if (h->context->debug) printf("ECCODES DEBUG grib_set_double_array_internal key=%s --DONE\n",name);*/ + /*if (h->context->debug) fprintf(stderr,"ECCODES DEBUG grib_set_double_array_internal key=%s --DONE\n",name);*/ return ret; } @@ -694,7 +694,7 @@ static int __grib_set_double_array(grib_handle* h, const char* name, const doubl int constant,i; if (h->context->debug) - printf("ECCODES DEBUG grib_set_double_array key=%s %ld values\n",name,(long)length); + fprintf(stderr, "ECCODES DEBUG grib_set_double_array key=%s %ld values\n",name,(long)length); if (length==0) { grib_accessor* a = grib_find_accessor(h, name); @@ -736,12 +736,12 @@ static int __grib_set_double_array(grib_handle* h, const char* name, const doubl ) { slen=11; /*length of 'grid_simple' */ if (h->context->debug) { - printf("ECCODES DEBUG __grib_set_double_array: Cannot use second order packing for constant fields. Using simple packing\n"); + fprintf(stderr, "ECCODES DEBUG __grib_set_double_array: Cannot use second order packing for constant fields. Using simple packing\n"); } ret = grib_set_string(h,"packingType","grid_simple",&slen); if (ret != GRIB_SUCCESS) { if (h->context->debug) { - printf("ECCODES DEBUG __grib_set_double_array: could not switch to simple packing!\n"); + fprintf(stderr, "ECCODES DEBUG __grib_set_double_array: could not switch to simple packing!\n"); } } } @@ -801,7 +801,7 @@ static int _grib_set_long_array(grib_handle* h, const char* name, const long* va if (!a) return GRIB_NOT_FOUND ; if (h->context->debug) { - printf("ECCODES DEBUG _grib_set_long_array key=%s %ld values\n",name,(long)length); + fprintf(stderr, "ECCODES DEBUG _grib_set_long_array key=%s %ld values\n",name,(long)length); } if (name[0]=='/' || name[0]=='#' ) { From 7fd2b5e91e37f06beefc990cea0eb516a1b7b002 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 5 Aug 2019 11:32:41 +0100 Subject: [PATCH 372/414] Debug messages --- tools/grib_to_netcdf.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tools/grib_to_netcdf.c b/tools/grib_to_netcdf.c index fa4e9da5b..8a3d14f7e 100644 --- a/tools/grib_to_netcdf.c +++ b/tools/grib_to_netcdf.c @@ -1798,8 +1798,7 @@ static hypercube *new_simple_hypercube_from_mars_request(const request *r) /*===========================================================================================*/ -/* Todo: - - BUILD A TEST SUITE !! +/* TODO: - Print usage in log file - consider FCMONTH and Climatology - Build logic to create validationtime when only one of DATE or TIME or STEP have multiple values: @@ -2046,7 +2045,7 @@ static void validation_time(request *r) } } v = julian * 24.0 + fcmonthdays * 24.0 + time / 100.0 + step * 1.0; - grib_context_log(ctx, GRIB_LOG_DEBUG, "grib_to_netcdf: date=%ld, julian=%ld, fcmonthdays=%ld, time=%ld, step=%g, validation=%ld", date, julian, fcmonthdays, time, step, v); + grib_context_log(ctx, GRIB_LOG_DEBUG, "grib_to_netcdf: date=%ld, julian=%ld, fcmonthdays=%ld, time=%ld, step=%g, validation=%.3f", date, julian, fcmonthdays, time, step, v); set_value(r, "_validation", "%lf", v); set_value(r, "_juliandate", "%ld", julian); From 4b65c47cdc11173f2a9fea68a9b8a1a5c39a76cc Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 5 Aug 2019 13:05:41 +0100 Subject: [PATCH 373/414] Rename tests --- tests/CMakeLists.txt | 4 ++-- ..._from_message.c => grib_multi_from_message.c} | 0 ...rom_message.sh => grib_multi_from_message.sh} | 16 +++++----------- 3 files changed, 7 insertions(+), 13 deletions(-) rename tests/{multi_from_message.c => grib_multi_from_message.c} (100%) rename tests/{multi_from_message.sh => grib_multi_from_message.sh} (73%) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 4ca0701c6..8da2e475c 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -15,7 +15,7 @@ list( APPEND test_bins read_any julian index - multi_from_message + grib_multi_from_message read_index unit_tests bufr_keys_iter @@ -152,7 +152,7 @@ list( APPEND tests_data_reqd grib_bitmap grib_list grib_second_order - multi_from_message + grib_multi_from_message grib_change_scanning grib_statistics grib_tigge diff --git a/tests/multi_from_message.c b/tests/grib_multi_from_message.c similarity index 100% rename from tests/multi_from_message.c rename to tests/grib_multi_from_message.c diff --git a/tests/multi_from_message.sh b/tests/grib_multi_from_message.sh similarity index 73% rename from tests/multi_from_message.sh rename to tests/grib_multi_from_message.sh index 873af94d0..263886083 100755 --- a/tests/multi_from_message.sh +++ b/tests/grib_multi_from_message.sh @@ -11,25 +11,19 @@ . ./include.sh -out1=${data_dir}/multi1.out -out2=${data_dir}/multi2.out +label='grib_multi_from_message' +out1=${data_dir}/temp.$label.1.out +out2=${data_dir}/temp.$label.2.out for infile in ${data_dir}/multi.grib2 ${data_dir}/reduced_gaussian_model_level.grib1 do - #if [ ! -f ${infile} ] - #then - # echo no data to test - # exit 0 - #fi - - $EXEC ${test_dir}/multi_from_message -m $infile > $out1 + $EXEC ${test_dir}/grib_multi_from_message -m $infile > $out1 ${tools_dir}/grib_get -p count,shortName,level $infile > $out2 diff $out1 $out2 - $EXEC ${test_dir}/multi_from_message $infile > $out1 + $EXEC ${test_dir}/grib_multi_from_message $infile > $out1 ${tools_dir}/grib_get -M -p count,shortName,level $infile > $out2 diff $out1 $out2 rm -f $out1 $out2 - done From a5f5a77f5125429966b9eab69ca62f278c4623da Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 5 Aug 2019 16:23:06 +0100 Subject: [PATCH 374/414] Print user-friendly type for keys --- src/grib_dumper_class_default.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/grib_dumper_class_default.c b/src/grib_dumper_class_default.c index 36fed9693..44a8b0233 100644 --- a/src/grib_dumper_class_default.c +++ b/src/grib_dumper_class_default.c @@ -155,7 +155,7 @@ static void dump_long(grib_dumper* d,grib_accessor* a,const char* comment) if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0){ fprintf(self->dumper.out," "); - fprintf(self->dumper.out,"# type %s \n",a->creator->op); + fprintf(self->dumper.out,"# type %s (int)\n",a->creator->op); } if (size>1) { @@ -290,7 +290,7 @@ static void dump_double(grib_dumper* d,grib_accessor* a,const char* comment) if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0) { fprintf(self->dumper.out," "); - fprintf(self->dumper.out,"# type %s \n",a->creator->op); + fprintf(self->dumper.out,"# type %s (double)\n",a->creator->op); } aliases(d,a); @@ -353,7 +353,7 @@ static void dump_string_array(grib_dumper* d,grib_accessor* a,const char* commen if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0) { fprintf(self->dumper.out," "); - fprintf(self->dumper.out,"# type %s \n",a->creator->op); + fprintf(self->dumper.out,"# type %s (str)\n",a->creator->op); } aliases(d,a); @@ -417,7 +417,7 @@ static void dump_string(grib_dumper* d,grib_accessor* a,const char* comment) if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0) { fprintf(self->dumper.out," "); - fprintf(self->dumper.out,"# type %s \n",a->creator->op); + fprintf(self->dumper.out,"# type %s (str)\n",a->creator->op); } aliases(d,a); @@ -541,13 +541,19 @@ static void dump_values(grib_dumper* d,grib_accessor* a) dump_double(d,a,NULL); return ; } + buf = (double*)grib_context_malloc(d->handle->context,size * sizeof(double)); print_offset(self->dumper.out,d,a); if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0) { + char type_name[32]=""; + const long native_type = grib_accessor_get_native_type(a); + if (native_type == GRIB_TYPE_LONG) strcpy(type_name, "(int)"); + else if (native_type == GRIB_TYPE_DOUBLE) strcpy(type_name, "(double)"); + else if (native_type == GRIB_TYPE_STRING) strcpy(type_name, "(str)"); fprintf(self->dumper.out," "); - fprintf(self->dumper.out,"# type %s \n",a->creator->op); + fprintf(self->dumper.out,"# type %s %s\n",a->creator->op, type_name); } aliases(d,a); From 9cfdcf506eea5965c4ecba8bbe9b9e63badf19a3 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 6 Aug 2019 14:47:30 +0100 Subject: [PATCH 375/414] Definitions: Add comment re units --- definitions/grib2/template.3.shape_of_the_earth.def | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/definitions/grib2/template.3.shape_of_the_earth.def b/definitions/grib2/template.3.shape_of_the_earth.def index 56c664440..bf906f796 100755 --- a/definitions/grib2/template.3.shape_of_the_earth.def +++ b/definitions/grib2/template.3.shape_of_the_earth.def @@ -5,7 +5,7 @@ codetable[1] shapeOfTheEarth ('3.2.table',masterDir,localDir) : dump; # Scale factor of radius of spherical earth unsigned[1] scaleFactorOfRadiusOfSphericalEarth = missing() : can_be_missing, edition_specific; -# Scaled value of radius of spherical earth +# Scaled value of radius of spherical earth (in metres) unsigned[4] scaledValueOfRadiusOfSphericalEarth = missing(): can_be_missing, edition_specific; # Scale factor of major axis of oblate spheroid earth From 4a725d1ee9f9662fcd4470f2826e6e7f3d810b73 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 6 Aug 2019 16:46:12 +0100 Subject: [PATCH 376/414] Indentation --- src/action_class_section.c | 16 +- src/grib_accessor_class_ascii.c | 225 +++++++++--------- ...accessor_class_g1end_of_interval_monthly.c | 153 ++++++------ src/grib_accessor_class_section.c | 109 ++++----- 4 files changed, 251 insertions(+), 252 deletions(-) diff --git a/src/action_class_section.c b/src/action_class_section.c index 7fb102a80..56a28dcc0 100644 --- a/src/action_class_section.c +++ b/src/action_class_section.c @@ -79,14 +79,14 @@ static void init_class(grib_action_class* c) /* new GCC compiler v4.5.0 complains function is defined but not used*/ static void check_sections(grib_section *s,grib_handle* h) { - grib_accessor *a = s?s->block->first:NULL; - if(s) Assert(s->h == h); - while(a) - { - Assert(grib_handle_of_accessor(a) == h); - check_sections(a->sub_section,h); - a = a->next; - } + grib_accessor *a = s?s->block->first:NULL; + if(s) Assert(s->h == h); + while(a) + { + Assert(grib_handle_of_accessor(a) == h); + check_sections(a->sub_section,h); + a = a->next; + } } #endif diff --git a/src/grib_accessor_class_ascii.c b/src/grib_accessor_class_ascii.c index fe09b6c23..386004548 100644 --- a/src/grib_accessor_class_ascii.c +++ b/src/grib_accessor_class_ascii.c @@ -137,156 +137,159 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a, const long len , grib_arguments* arg ) { - a->length = len; - Assert(a->length>=0); + a->length = len; + Assert(a->length>=0); } -static int value_count(grib_accessor* a,long* count){ - *count=1; - return 0; +static int value_count(grib_accessor* a,long* count) +{ + *count=1; + return 0; } -static size_t string_length(grib_accessor* a){ - return a->length; +static size_t string_length(grib_accessor* a) +{ + return a->length; } static void dump(grib_accessor* a, grib_dumper* dumper) { - grib_dump_string(dumper,a,NULL); + grib_dump_string(dumper,a,NULL); } -static int get_native_type(grib_accessor* a){ - return GRIB_TYPE_STRING; +static int get_native_type(grib_accessor* a) +{ + return GRIB_TYPE_STRING; } static int unpack_string(grib_accessor* a, char* val, size_t *len) { - int i = 0; - grib_handle* hand = grib_handle_of_accessor(a); + int i = 0; + grib_handle* hand = grib_handle_of_accessor(a); - if(len[0] < (a->length+1)) - { - grib_context_log(a->context, GRIB_LOG_ERROR, "unpack_string: Wrong size (%d) for %s it contains %d values ", len[0], a->name , a->length+1 ); - len[0] = 0; - return GRIB_ARRAY_TOO_SMALL; - } + if(len[0] < (a->length+1)) + { + grib_context_log(a->context, GRIB_LOG_ERROR, "unpack_string: Wrong size (%d) for %s it contains %d values ", len[0], a->name , a->length+1 ); + len[0] = 0; + return GRIB_ARRAY_TOO_SMALL; + } - for ( i = 0; i < a->length; i++) - val[i] = hand->buffer->data[a->offset+i]; - val[i] = 0; - len[0] = i; - return GRIB_SUCCESS; + for ( i = 0; i < a->length; i++) + val[i] = hand->buffer->data[a->offset+i]; + val[i] = 0; + len[0] = i; + return GRIB_SUCCESS; } static int pack_string(grib_accessor* a, const char* val, size_t *len) { - int i = 0; - grib_handle* hand = grib_handle_of_accessor(a); - if(len[0] > (a->length)+1) - { - grib_context_log(a->context, GRIB_LOG_ERROR, "pack_string: Wrong size (%d) for %s it contains %d values ", len[0], a->name , a->length+1 ); - len[0] = 0; - return GRIB_BUFFER_TOO_SMALL; - } + int i = 0; + grib_handle* hand = grib_handle_of_accessor(a); + if(len[0] > (a->length)+1) + { + grib_context_log(a->context, GRIB_LOG_ERROR, "pack_string: Wrong size (%d) for %s it contains %d values ", len[0], a->name , a->length+1 ); + len[0] = 0; + return GRIB_BUFFER_TOO_SMALL; + } - for ( i = 0; i < a->length; i++) - { - if( i < len[0] ) - hand->buffer->data[a->offset+i] = val[i]; - else - hand->buffer->data[a->offset+i] = 0; - } + for ( i = 0; i < a->length; i++) + { + if( i < len[0] ) + hand->buffer->data[a->offset+i] = val[i]; + else + hand->buffer->data[a->offset+i] = 0; + } - return GRIB_SUCCESS; + return GRIB_SUCCESS; } -static int pack_long(grib_accessor* a, const long* v, size_t *len){ - grib_context_log(a->context,GRIB_LOG_ERROR, " Should not pack %s as long", a->name); - return GRIB_NOT_IMPLEMENTED; +static int pack_long(grib_accessor* a, const long* v, size_t *len) +{ + grib_context_log(a->context,GRIB_LOG_ERROR, " Should not pack %s as long", a->name); + return GRIB_NOT_IMPLEMENTED; } -static int pack_double(grib_accessor* a, const double*v, size_t *len){ - grib_context_log(a->context,GRIB_LOG_ERROR, " Should not pack %s as double", a->name); - return GRIB_NOT_IMPLEMENTED; +static int pack_double(grib_accessor* a, const double*v, size_t *len) +{ + grib_context_log(a->context,GRIB_LOG_ERROR, " Should not pack %s as double", a->name); + return GRIB_NOT_IMPLEMENTED; } +static int unpack_long (grib_accessor* a, long* v, size_t *len) +{ + char val[1024]={0,}; + size_t l = sizeof(val); + size_t i =0; + char *last = NULL; + int err=grib_unpack_string (a , val, &l); -static int unpack_long (grib_accessor* a, long* v, size_t *len){ + if (err) return err; - char val[1024]={0,}; - size_t l = sizeof(val); - size_t i =0; - char *last = NULL; - int err=grib_unpack_string (a , val, &l); + i=0; + while ( val[i]==' ' && val[i]!=0 && icontext,GRIB_LOG_DEBUG, " Casting string %s to long", a->name); - return GRIB_SUCCESS; - -} - -static int unpack_double (grib_accessor* a, double*v, size_t *len){ - char val[1024]; - size_t l = sizeof(val); - char *last = NULL; - grib_unpack_string (a , val, &l); - - *v = strtod(val,&last); - - if(*last == 0) - { grib_context_log(a->context,GRIB_LOG_DEBUG, " Casting string %s to long", a->name); return GRIB_SUCCESS; - } - - return GRIB_NOT_IMPLEMENTED; } +static int unpack_double (grib_accessor* a, double*v, size_t *len) +{ + char val[1024]; + size_t l = sizeof(val); + char *last = NULL; + grib_unpack_string (a , val, &l); -static int compare(grib_accessor* a,grib_accessor* b) { - int retval=0; - char *aval=0; - char *bval=0; - int err=0; + *v = strtod(val,&last); - size_t alen = 0; - size_t blen = 0; - long count=0; + if(*last == 0) + { + grib_context_log(a->context,GRIB_LOG_DEBUG, " Casting string %s to long", a->name); + return GRIB_SUCCESS; + } - err=grib_value_count(a,&count); - if (err) return err; - alen=count; - - err=grib_value_count(b,&count); - if (err) return err; - blen=count; - - if (alen != blen) return GRIB_COUNT_MISMATCH; - - aval=(char*)grib_context_malloc(a->context,alen*sizeof(char)); - bval=(char*)grib_context_malloc(b->context,blen*sizeof(char)); - - grib_unpack_string(a,aval,&alen); - grib_unpack_string(b,bval,&blen); - - retval = GRIB_SUCCESS; - if (strcmp(aval,bval)) retval = GRIB_STRING_VALUE_MISMATCH; - - grib_context_free(a->context,aval); - grib_context_free(b->context,bval); - - return retval; + return GRIB_NOT_IMPLEMENTED; } +static int compare(grib_accessor* a,grib_accessor* b) +{ + int retval=0; + char *aval=0; + char *bval=0; + int err=0; + + size_t alen = 0; + size_t blen = 0; + long count=0; + + err=grib_value_count(a,&count); + if (err) return err; + alen=count; + + err=grib_value_count(b,&count); + if (err) return err; + blen=count; + + if (alen != blen) return GRIB_COUNT_MISMATCH; + + aval=(char*)grib_context_malloc(a->context,alen*sizeof(char)); + bval=(char*)grib_context_malloc(b->context,blen*sizeof(char)); + + grib_unpack_string(a,aval,&alen); + grib_unpack_string(b,bval,&blen); + + retval = GRIB_SUCCESS; + if (strcmp(aval,bval)) retval = GRIB_STRING_VALUE_MISMATCH; + + grib_context_free(a->context,aval); + grib_context_free(b->context,bval); + + return retval; +} diff --git a/src/grib_accessor_class_g1end_of_interval_monthly.c b/src/grib_accessor_class_g1end_of_interval_monthly.c index a3f2f58f7..5d888fde8 100644 --- a/src/grib_accessor_class_g1end_of_interval_monthly.c +++ b/src/grib_accessor_class_g1end_of_interval_monthly.c @@ -137,114 +137,115 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* c) { - grib_accessor_g1end_of_interval_monthly* self = (grib_accessor_g1end_of_interval_monthly*)a; - int n = 0; + grib_accessor_g1end_of_interval_monthly* self = (grib_accessor_g1end_of_interval_monthly*)a; + int n = 0; - self->verifyingMonth = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; - a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION; - a->flags |= GRIB_ACCESSOR_FLAG_HIDDEN; + self->verifyingMonth = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; + a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION; + a->flags |= GRIB_ACCESSOR_FLAG_HIDDEN; - self->number_of_elements=6; - self->v=(double*)grib_context_malloc(a->context, - sizeof(double)*self->number_of_elements); + self->number_of_elements=6; + self->v=(double*)grib_context_malloc(a->context, + sizeof(double)*self->number_of_elements); - a->length=0; - a->dirty=1; + a->length=0; + a->dirty=1; } static int unpack_double (grib_accessor* a, double* val, size_t *len) { - grib_accessor_g1end_of_interval_monthly* self = (grib_accessor_g1end_of_interval_monthly*)a; - int ret = 0; - char verifyingMonth[7]={0,}; - size_t slen=7; - long year=0,month=0,date=0; - long mdays[]={31,28,31,30,31,30,31,31,30,31,30,31}; - long days=0; + grib_accessor_g1end_of_interval_monthly* self = (grib_accessor_g1end_of_interval_monthly*)a; + int ret = 0; + char verifyingMonth[7]={0,}; + size_t slen=7; + long year=0,month=0,date=0; + long mdays[]={31,28,31,30,31,30,31,31,30,31,30,31}; + long days=0; - if (!a->dirty) return GRIB_SUCCESS; + if (!a->dirty) return GRIB_SUCCESS; - if((ret=grib_get_string(grib_handle_of_accessor(a),self->verifyingMonth,verifyingMonth,&slen)) - != GRIB_SUCCESS) return ret; + if((ret=grib_get_string(grib_handle_of_accessor(a),self->verifyingMonth,verifyingMonth,&slen)) + != GRIB_SUCCESS) return ret; - date=atoi(verifyingMonth); - year=date/100; - month=date-year*100; - if ( month == 2 ) { - days=28; - if (year%400 == 0 || ( year%4 == 0 && year%100 != 0) ) days=29; - } else days=mdays[month-1]; + date=atoi(verifyingMonth); + year=date/100; + month=date-year*100; + if ( month == 2 ) { + days=28; + if (year%400 == 0 || ( year%4 == 0 && year%100 != 0) ) days=29; + } else days=mdays[month-1]; - self->v[0]=year; - self->v[1]=month; - - self->v[2]=days; - self->v[3]=24; - self->v[4]=00; - self->v[5]=00; + self->v[0]=year; + self->v[1]=month; - a->dirty=0; + self->v[2]=days; + self->v[3]=24; + self->v[4]=00; + self->v[5]=00; - val[0]=self->v[0]; - val[1]=self->v[1]; - val[2]=self->v[2]; - val[3]=self->v[3]; - val[4]=self->v[4]; - val[5]=self->v[5]; + a->dirty=0; - return ret; + val[0]=self->v[0]; + val[1]=self->v[1]; + val[2]=self->v[2]; + val[3]=self->v[3]; + val[4]=self->v[4]; + val[5]=self->v[5]; + + return ret; } static int value_count(grib_accessor* a,long *count) { - grib_accessor_g1end_of_interval_monthly* self = (grib_accessor_g1end_of_interval_monthly*)a; - *count=self->number_of_elements; - return 0; + grib_accessor_g1end_of_interval_monthly* self = (grib_accessor_g1end_of_interval_monthly*)a; + *count=self->number_of_elements; + return 0; } static void destroy(grib_context* c,grib_accessor* a) { - grib_accessor_g1end_of_interval_monthly* self = (grib_accessor_g1end_of_interval_monthly*)a; - grib_context_free(c,self->v); + grib_accessor_g1end_of_interval_monthly* self = (grib_accessor_g1end_of_interval_monthly*)a; + grib_context_free(c,self->v); } -static int compare(grib_accessor* a, grib_accessor* b) { - int retval = GRIB_SUCCESS; - double *aval=0; - double *bval=0; +static int compare(grib_accessor* a, grib_accessor* b) +{ + int retval = GRIB_SUCCESS; + double *aval=0; + double *bval=0; - long count=0; - size_t alen = 0; - size_t blen = 0; - int err=0; + long count=0; + size_t alen = 0; + size_t blen = 0; + int err=0; - err=grib_value_count(a,&count); - if (err) return err; - alen=count; + err=grib_value_count(a,&count); + if (err) return err; + alen=count; - err=grib_value_count(b,&count); - if (err) return err; - blen=count; + err=grib_value_count(b,&count); + if (err) return err; + blen=count; - if (alen != blen) return GRIB_COUNT_MISMATCH; + if (alen != blen) return GRIB_COUNT_MISMATCH; - aval=(double*)grib_context_malloc(a->context,alen*sizeof(double)); - bval=(double*)grib_context_malloc(b->context,blen*sizeof(double)); + aval=(double*)grib_context_malloc(a->context,alen*sizeof(double)); + bval=(double*)grib_context_malloc(b->context,blen*sizeof(double)); - b->dirty=1; - a->dirty=1; + b->dirty=1; + a->dirty=1; - grib_unpack_double(a,aval,&alen); - grib_unpack_double(b,bval,&blen); + grib_unpack_double(a,aval,&alen); + grib_unpack_double(b,bval,&blen); - while (alen != 0) { - if (*bval != *aval) retval = GRIB_DOUBLE_VALUE_MISMATCH; - alen--; - } + while (alen != 0) { + if (*bval != *aval) retval = GRIB_DOUBLE_VALUE_MISMATCH; + alen--; + } - grib_context_free(a->context,aval); - grib_context_free(b->context,bval); + grib_context_free(a->context,aval); + grib_context_free(b->context,bval); - return retval; + return retval; } diff --git a/src/grib_accessor_class_section.c b/src/grib_accessor_class_section.c index bd5476e35..ae855cd5a 100644 --- a/src/grib_accessor_class_section.c +++ b/src/grib_accessor_class_section.c @@ -132,96 +132,91 @@ static void init_class(grib_accessor_class* c) /* END_CLASS_IMP */ - - - static void init(grib_accessor* a, const long len , grib_arguments* arg ) { - a->sub_section = grib_section_create(grib_handle_of_accessor(a),a); - a->length = 0; - a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; + a->sub_section = grib_section_create(grib_handle_of_accessor(a),a); + a->length = 0; + a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; } static void dump(grib_accessor* a, grib_dumper* dumper) { - grib_dump_section(dumper,a,a->sub_section->block); + grib_dump_section(dumper,a,a->sub_section->block); } static long byte_count(grib_accessor* a) { - if( !a->length || grib_handle_of_accessor(a)->loader ) - { - if(a->name[1]=='_') return 0; + if( !a->length || grib_handle_of_accessor(a)->loader ) + { + if(a->name[1]=='_') return 0; - /* printf("adjusting sizes SECTION %s is %ld %ld\n",a->name,(long)a->offset,(long)a->length); */ - grib_section_adjust_sizes(a->sub_section,grib_handle_of_accessor(a)->loader != NULL,0); - /* printf(" SECTION %s is %ld %ld\n",a->name,(long)a->offset,(long)a->length); */ - } + /* printf("adjusting sizes SECTION %s is %ld %ld\n",a->name,(long)a->offset,(long)a->length); */ + grib_section_adjust_sizes(a->sub_section,grib_handle_of_accessor(a)->loader != NULL,0); + /* printf(" SECTION %s is %ld %ld\n",a->name,(long)a->offset,(long)a->length); */ + } - - /* printf("SECTION %s is %ld %d\n",a->name,a->length,a->sub_section->aclength != NULL); */ - - return a->length; + /* printf("SECTION %s is %ld %d\n",a->name,a->length,a->sub_section->aclength != NULL); */ + return a->length; } static long next_offset(grib_accessor* a) { - return a->offset + byte_count(a); + return a->offset + byte_count(a); } static void destroy(grib_context* ct, grib_accessor* a) { - grib_section_delete(ct,a->sub_section); + grib_section_delete(ct,a->sub_section); } -static int get_native_type(grib_accessor* a){ - return GRIB_TYPE_SECTION; +static int get_native_type(grib_accessor* a) +{ + return GRIB_TYPE_SECTION; } -static grib_section* sub_section(grib_accessor* a){ - /* grib_accessor_section* self = (grib_accessor_section*)a; */ - return a->sub_section; +static grib_section* sub_section(grib_accessor* a) +{ + /* grib_accessor_section* self = (grib_accessor_section*)a; */ + return a->sub_section; } - static void update_size(grib_accessor* a,size_t length) { + size_t size = 1; + long len = length; + Assert(length <= 0x7fffffff); + if(a->sub_section->aclength) + { + int e=grib_pack_long(a->sub_section->aclength,&len,&size); + Assert( e == GRIB_SUCCESS); + printf("update_length %s %ld %ld\n",a->sub_section->aclength->name, + (long)a->sub_section->aclength->offset, + (long)a->sub_section->aclength->length - size_t size = 1; - long len = length; - Assert(length <= 0x7fffffff); - if(a->sub_section->aclength) - { - int e=grib_pack_long(a->sub_section->aclength,&len,&size); - Assert( e == GRIB_SUCCESS); - printf("update_length %s %ld %ld\n",a->sub_section->aclength->name, - (long)a->sub_section->aclength->offset, - (long)a->sub_section->aclength->length + ); + } - ); - } + a->sub_section->length = a->length = length; + a->sub_section->padding = 0; - a->sub_section->length = a->length = length; - a->sub_section->padding = 0; + printf("update_size %s %ld\n",a->name,a->length); - printf("update_size %s %ld\n",a->name,a->length); - - Assert(a->length>=0); + Assert(a->length>=0); } -static grib_accessor* next(grib_accessor* a,int explore) { - grib_accessor* next=NULL; - if (explore) { - next=a->sub_section->block->first; - if (!next) next=a->next; - } else { - next=a->next; - } - if (!next) { - if (a->parent->owner) - next=a->parent->owner->cclass->next(a->parent->owner,0); - } - return next; +static grib_accessor* next(grib_accessor* a,int explore) +{ + grib_accessor* next=NULL; + if (explore) { + next=a->sub_section->block->first; + if (!next) next=a->next; + } else { + next=a->next; + } + if (!next) { + if (a->parent->owner) + next=a->parent->owner->cclass->next(a->parent->owner,0); + } + return next; } - From 741e62d23458db4b4e1c791dd83048556b51b96b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 6 Aug 2019 16:57:32 +0100 Subject: [PATCH 377/414] ECC-966: Crash: setting shapeOfTheEarth=1 but scale factor missing --- ...sor_class_from_scale_factor_scaled_value.c | 73 ++++++++++--------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/src/grib_accessor_class_from_scale_factor_scaled_value.c b/src/grib_accessor_class_from_scale_factor_scaled_value.c index 49d2b5004..484c4a60e 100644 --- a/src/grib_accessor_class_from_scale_factor_scaled_value.c +++ b/src/grib_accessor_class_from_scale_factor_scaled_value.c @@ -139,56 +139,63 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* c) { - grib_accessor_from_scale_factor_scaled_value* self = (grib_accessor_from_scale_factor_scaled_value*)a; - int n = 0; + grib_accessor_from_scale_factor_scaled_value* self = (grib_accessor_from_scale_factor_scaled_value*)a; + int n = 0; + grib_handle* hand = grib_handle_of_accessor(a); - self->scaleFactor = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->scaledValue = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->scaleFactor = grib_arguments_get_name(hand,c,n++); + self->scaledValue = grib_arguments_get_name(hand,c,n++); - a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; + a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; } static int unpack_double(grib_accessor* a, double* val, size_t *len) { - grib_accessor_from_scale_factor_scaled_value* self = (grib_accessor_from_scale_factor_scaled_value*)a; - int ret = 0; - long scaleFactor=0; - long scaledValue=0; + grib_accessor_from_scale_factor_scaled_value* self = (grib_accessor_from_scale_factor_scaled_value*)a; + int ret = 0; + long scaleFactor=0; + long scaledValue=0; + grib_handle* hand = grib_handle_of_accessor(a); - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->scaleFactor,&scaleFactor)) != GRIB_SUCCESS) - return ret; + if((ret = grib_get_long_internal(hand, self->scaleFactor,&scaleFactor)) != GRIB_SUCCESS) + return ret; + /* ECC-966: If scale factor is missing, print error and treat it as zero (as a fallback) */ + if (grib_is_missing(hand, self->scaleFactor, &ret) && ret == GRIB_SUCCESS) { + grib_context_log(a->context, GRIB_LOG_ERROR, + "unpack_double for %s: %s is missing! Setting it to zero", a->name, self->scaleFactor); + scaleFactor = 0; + } - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->scaledValue,&scaledValue)) != GRIB_SUCCESS) - return ret; + if((ret = grib_get_long_internal(hand, self->scaledValue,&scaledValue)) != GRIB_SUCCESS) + return ret; - *val=scaledValue; + *val=scaledValue; - /* The formula is: - * real_value = scaled_value / pow(10, scale_factor) - */ - while (scaleFactor <0) {*val*=10;scaleFactor++;} - while (scaleFactor >0) {*val/=10;scaleFactor--;} + /* The formula is: + * real_value = scaled_value / pow(10, scale_factor) + */ + while (scaleFactor <0) {*val*=10;scaleFactor++;} + while (scaleFactor >0) {*val/=10;scaleFactor--;} - if (ret == GRIB_SUCCESS) *len = 1; + if (ret == GRIB_SUCCESS) *len = 1; - return ret; + return ret; } static int is_missing(grib_accessor* a) { - grib_accessor_from_scale_factor_scaled_value* self = (grib_accessor_from_scale_factor_scaled_value*)a; - int ret = 0; - long scaleFactor=0; - long scaledValue=0; + grib_accessor_from_scale_factor_scaled_value* self = (grib_accessor_from_scale_factor_scaled_value*)a; + int ret = 0; + long scaleFactor=0; + long scaledValue=0; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->scaleFactor,&scaleFactor)) - != GRIB_SUCCESS) - return ret; + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->scaleFactor,&scaleFactor)) + != GRIB_SUCCESS) + return ret; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->scaledValue,&scaledValue)) - != GRIB_SUCCESS) - return ret; + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->scaledValue,&scaledValue)) + != GRIB_SUCCESS) + return ret; - return ((scaleFactor == GRIB_MISSING_LONG) | (scaledValue == GRIB_MISSING_LONG)); + return ((scaleFactor == GRIB_MISSING_LONG) | (scaledValue == GRIB_MISSING_LONG)); } - From 42ae896ff96aa56014ee2d2655cc89c400b6a717 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 7 Aug 2019 18:03:40 +0100 Subject: [PATCH 378/414] ECC-967: fallback option --- definitions/grib2/section.1.def | 3 +++ 1 file changed, 3 insertions(+) diff --git a/definitions/grib2/section.1.def b/definitions/grib2/section.1.def index 7f9e54c4a..17121603a 100644 --- a/definitions/grib2/section.1.def +++ b/definitions/grib2/section.1.def @@ -26,6 +26,9 @@ codetable[1] tablesVersion 'grib2/tables/1.0.table' = tablesVersionLatest : edit alias gribMasterTablesVersionNumber=tablesVersion; transient masterDir="grib2/tables/[tablesVersion]"; +if (tablesVersion > tablesVersionLatest) { + transient masterDir="grib2/tables/[tablesVersionLatest]"; +} when (tablesVersion!=255) { set masterDir="grib2/tables/[tablesVersion]"; } else { From e5dae19b739d4db38a2e8fd3c184060f4f112242 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 7 Aug 2019 18:32:18 +0100 Subject: [PATCH 379/414] ECC-967: test --- tests/CMakeLists.txt | 1 + tests/grib_ecc-967.sh | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100755 tests/grib_ecc-967.sh diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 8da2e475c..b8b53c183 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -55,6 +55,7 @@ list( APPEND tests_no_data_reqd grib_uerra grib_2nd_order_numValues grib_ecc-136 + grib_ecc-967 julian bufr_dump_samples bufr_json_samples diff --git a/tests/grib_ecc-967.sh b/tests/grib_ecc-967.sh new file mode 100755 index 000000000..bccf1327c --- /dev/null +++ b/tests/grib_ecc-967.sh @@ -0,0 +1,29 @@ +#!/bin/sh +# Copyright 2005-2019 ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.sh +set -u +# --------------------------------------------------------- +# This is the test for the JIRA issue ECC-967. +# GRIB2: Fallback if tables version > latest installed version +# --------------------------------------------------------- +label="grib_ecc-967-test" +temp=temp.${label}.grib + +# Pick a master tables version number way to big! +# But one day we will actually get to it. +input=$ECCODES_SAMPLES_PATH/reduced_gg_pl_160_grib2.tmpl +${tools_dir}/grib_set -s tablesVersion=253 $input $temp +grib_check_key_equals $temp 'typeOfFirstFixedSurface:i' '100' +grib_check_key_equals $temp 'typeOfFirstFixedSurface:s' 'pl' +grib_check_key_equals $temp 'mars.levtype' 'pl' + +# Clean up +rm -f $temp From fea41048bd0163fcf03e6090c25de969918d6dd0 Mon Sep 17 00:00:00 2001 From: wqu-bom Date: Thu, 8 Aug 2019 12:13:37 +1000 Subject: [PATCH 380/414] Improvement on file spliting Allow an input file to be split into each individual message (if nchunk=-1) --- tools/codes_split_file.c | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/tools/codes_split_file.c b/tools/codes_split_file.c index 807d13505..91d770626 100644 --- a/tools/codes_split_file.c +++ b/tools/codes_split_file.c @@ -12,6 +12,8 @@ * Description: * Split an input file (GRIB, BUFR etc) into chunks of roughly the same size. * The output files are named input_01, input_02 etc. This is much faster than grib_copy/bufr_copy + * + * 2019-07-26 W.Qu Allow an input file to be split into each individual message (if nchunk=-1) * */ @@ -19,10 +21,11 @@ #include static int verbose = 0; -static const char* OUTPUT_FILENAME_FORMAT = "%s_%02d"; /* x_01, x_02 etc */ +static const char* OUTPUT_FILENAME_FORMAT = "%s_%03d"; /* x_001, x_002 etc */ static void usage(const char* prog) { printf("Usage: %s [-v] nchunks infile\n",prog); + printf("nchunks=-1, split infile into individual grib/bufr message\n"); exit(1); } @@ -30,8 +33,7 @@ static int split_file(FILE* in, const char* filename, const int nchunks, unsigne { void* mesg=NULL; FILE* out; - off_t insize=0; - size_t size=0,read_size=0,chunk_size; + size_t size=0,read_size=0,insize=0,chunk_size, msg_size=0, num_msg=0; off_t offset=0; int err=GRIB_SUCCESS; int i; @@ -45,11 +47,13 @@ static int split_file(FILE* in, const char* filename, const int nchunks, unsigne fseeko(in, 0, SEEK_END); insize = ftello(in); - if (insize==-1) - return 1; fseeko(in, 0, SEEK_SET); - assert(nchunks > 0); - chunk_size=insize/nchunks; + if(nchunks == -1){ + chunk_size = size; + }else{ + assert(nchunks > 0); + chunk_size=insize/nchunks; + } i=1; sprintf(ofilename, OUTPUT_FILENAME_FORMAT, filename, i); @@ -62,8 +66,10 @@ static int split_file(FILE* in, const char* filename, const int nchunks, unsigne while ( err!=GRIB_END_OF_FILE ) { mesg=wmo_read_any_from_file_malloc(in, 0, &size, &offset, &err); - if (mesg!=NULL && err==0) { - if (fwrite(mesg,1,size,out)!=size) { + num_msg++; + /*printf("=1=%d\t%d\t%d\n",*count,size,insize);*/ + if ( mesg!=NULL && err==0 ) { + if (fwrite(mesg,1,size,out)!=size ) { perror(ofilename); free(ofilename); fclose(out); @@ -71,11 +77,13 @@ static int split_file(FILE* in, const char* filename, const int nchunks, unsigne } grib_context_free(c,mesg); read_size+=size; - if (read_size>chunk_size) { - if (verbose) printf("Wrote output file %s\n", ofilename); + msg_size+=size; + if (read_size>chunk_size && msg_size < insize) { + if (verbose) printf("Wrote output file %s (%d msgs)\n", ofilename, num_msg); fclose(out); i++; /* Start writing to the next file */ + /*printf("=2=%d\t%d\n",*count,msg_size);*/ sprintf(ofilename, OUTPUT_FILENAME_FORMAT, filename, i); out=fopen(ofilename,"w"); if (!out) { @@ -84,11 +92,12 @@ static int split_file(FILE* in, const char* filename, const int nchunks, unsigne return GRIB_IO_PROBLEM; } read_size=0; + num_msg=0; } (*count)++; } } - if (verbose) printf("Wrote output file %s\n", ofilename); + if (verbose) printf("Wrote output file %s (%d msgs)\n", ofilename,num_msg-1); fclose(out); free(ofilename); @@ -117,8 +126,8 @@ int main(int argc,char* argv[]) /* add some error checking */ nchunks=atoi(argv[i]); - if (nchunks<1) { - fprintf(stderr,"ERROR: Invalid number %d. Please specify a positive integer.\n", nchunks); + if (nchunks<1 && nchunks!=-1) { + fprintf(stderr,"ERROR: Invalid number %d. Please specify a positive integer. or -1 for spliting each message\n", nchunks); return 1; } From 36332fd5dfa053d61128e80f5790667c6c0459b9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 8 Aug 2019 16:37:40 +0100 Subject: [PATCH 381/414] lambert_azimuthal_equal_area: print more user-friendly error message if oblate spheroid --- src/grib_iterator_class_lambert_azimuthal_equal_area.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/grib_iterator_class_lambert_azimuthal_equal_area.c b/src/grib_iterator_class_lambert_azimuthal_equal_area.c index 3b7365b78..e999ec2f0 100644 --- a/src/grib_iterator_class_lambert_azimuthal_equal_area.c +++ b/src/grib_iterator_class_lambert_azimuthal_equal_area.c @@ -136,8 +136,13 @@ static int init(grib_iterator* iter,grib_handle* h,grib_arguments* args) double epsilon=1.0e-20; double d2r=acos(0.0)/90.0; - if((ret = grib_get_double_internal(h, sradius,&radius)) != GRIB_SUCCESS) + if((ret = grib_get_double_internal(h, sradius,&radius)) != GRIB_SUCCESS) { + /* Check if it's an oblate spheroid */ + long oblate=0; + if (grib_get_long(h,"earthIsOblate",&oblate)==GRIB_SUCCESS && oblate==1) + grib_context_log(h->context,GRIB_LOG_ERROR,"Lambert Azimuthal Equal Area only supported for spherical earth."); return ret; + } if((ret = grib_get_long_internal(h, snx,&nx)) != GRIB_SUCCESS) return ret; if((ret = grib_get_long_internal(h, sny,&ny)) != GRIB_SUCCESS) From 1f8abaa7fa781552611bb449d5d4cd94b949d838 Mon Sep 17 00:00:00 2001 From: wqu-bom Date: Fri, 9 Aug 2019 11:48:16 +1000 Subject: [PATCH 382/414] Added test for nchunk=-1 Added the third test for nchunk=-1. OUTPUT_FILENAME_FORMAT changed to 3 digits, which led to file name changes in this script. --- tests/codes_split_file.sh | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/tests/codes_split_file.sh b/tests/codes_split_file.sh index 4af647070..0698c3218 100755 --- a/tests/codes_split_file.sh +++ b/tests/codes_split_file.sh @@ -25,9 +25,9 @@ cp ${data_dir}/mixed.grib ./ input=mixed.grib ${tools_dir}/codes_split_file 3 $input # There should now be 3 new files. Make sure they are valid -${tools_dir}/grib_ls mixed.grib_01 -${tools_dir}/grib_ls mixed.grib_02 -${tools_dir}/grib_ls mixed.grib_03 +${tools_dir}/grib_ls mixed.grib_001 +${tools_dir}/grib_ls mixed.grib_002 +${tools_dir}/grib_ls mixed.grib_003 total=`${tools_dir}/codes_count mixed.grib_*` [ $total -eq 14 ] @@ -44,7 +44,19 @@ ${tools_dir}/codes_split_file 10 $input total=`${tools_dir}/codes_count tigge_ecmwf.grib2_[0-9]*` [ $total -eq 248 ] -cat tigge_ecmwf.grib2_0[1-9] tigge_ecmwf.grib2_10 > $temp +cat tigge_ecmwf.grib2_[0-9][0-9][0-9] > $temp +${tools_dir}/grib_compare $input $temp + + +# Test 3: nchunk=-1 File with 248 messages +# ----------------------------- +cp ${data_dir}/tigge_ecmwf.grib2 ./ +input=tigge_ecmwf.grib2 +${tools_dir}/codes_split_file -1 $input +total=`${tools_dir}/codes_count tigge_ecmwf.grib2_[0-9]*` +[ $total -eq 248 ] + +cat tigge_ecmwf.grib2_[0-9][0-9][0-9] > $temp ${tools_dir}/grib_compare $input $temp From 4a0c6abd9f96361ac996c3b6a04db50008362abb Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 9 Aug 2019 10:56:34 +0100 Subject: [PATCH 383/414] Daniel Tipping suggestion: Switch the osx_image to xcode10.2 to fix the MacOS build --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 8a5dc0fd0..3234d4be0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,7 +21,7 @@ matrix: - libnetcdf-dev - os: osx - osx_image: xcode10.1 + osx_image: xcode10.2 addons: homebrew: packages: From 95fd9fb67cf197ce597c6ffd85c3aed191e40c19 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 9 Aug 2019 15:50:04 +0100 Subject: [PATCH 384/414] Accessor check for chemical/aerosol keys --- src/grib_accessor_class_g2_eps.c | 19 ++++---- src/grib_accessor_class_local_definition.c | 56 +++++++++++----------- 2 files changed, 39 insertions(+), 36 deletions(-) diff --git a/src/grib_accessor_class_g2_eps.c b/src/grib_accessor_class_g2_eps.c index ae996591a..979285bf7 100644 --- a/src/grib_accessor_class_g2_eps.c +++ b/src/grib_accessor_class_g2_eps.c @@ -175,6 +175,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len) static int pack_long(grib_accessor* a, const long* val, size_t *len) { grib_accessor_g2_eps* self = (grib_accessor_g2_eps*)a; + grib_handle* hand=grib_handle_of_accessor(a); long productDefinitionTemplateNumber=-1; long productDefinitionTemplateNumberNew=-1; long type=-1; @@ -187,16 +188,16 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len) int isInstant=0; long derivedForecast=-1; - if (grib_get_long(grib_handle_of_accessor(a), self->productDefinitionTemplateNumber,&productDefinitionTemplateNumber)!=GRIB_SUCCESS) + if (grib_get_long(hand, self->productDefinitionTemplateNumber,&productDefinitionTemplateNumber)!=GRIB_SUCCESS) return GRIB_SUCCESS; - grib_get_long(grib_handle_of_accessor(a), self->type,&type); - grib_get_long(grib_handle_of_accessor(a), self->stream,&stream); - grib_get_string(grib_handle_of_accessor(a), self->stepType,stepType,&slen); + grib_get_long(hand, self->type,&type); + grib_get_long(hand, self->stream,&stream); + grib_get_string(hand, self->stepType,stepType,&slen); if (!strcmp(stepType,"instant")) isInstant=1; - grib_get_long(grib_handle_of_accessor(a), "is_chemical",&chemical); - grib_get_long(grib_handle_of_accessor(a), "is_aerosol",&aerosol); - if (chemical && aerosol) { + grib_get_long(hand, "is_chemical",&chemical); + grib_get_long(hand, "is_aerosol",&aerosol); + if (chemical==1 && aerosol==1) { grib_context_log(a->context,GRIB_LOG_ERROR,"Parameter cannot be both chemical and aerosol!"); return GRIB_ENCODING_ERROR; } @@ -269,9 +270,9 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len) } if (productDefinitionTemplateNumber != productDefinitionTemplateNumberNew) { - grib_set_long(grib_handle_of_accessor(a), self->productDefinitionTemplateNumber,productDefinitionTemplateNumberNew); + grib_set_long(hand, self->productDefinitionTemplateNumber,productDefinitionTemplateNumberNew); if (derivedForecast>=0) - grib_set_long(grib_handle_of_accessor(a), self->derivedForecast,derivedForecast); + grib_set_long(hand, self->derivedForecast,derivedForecast); } return 0; diff --git a/src/grib_accessor_class_local_definition.c b/src/grib_accessor_class_local_definition.c index 098c33070..952683fae 100644 --- a/src/grib_accessor_class_local_definition.c +++ b/src/grib_accessor_class_local_definition.c @@ -156,17 +156,18 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* c) { grib_accessor_local_definition* self = (grib_accessor_local_definition*)a; + grib_handle* hand=grib_handle_of_accessor(a); int n = 0; - self->grib2LocalSectionNumber = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->productDefinitionTemplateNumber = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->productDefinitionTemplateNumberInternal = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->type = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->stream = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->the_class = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->eps = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->stepType = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->derivedForecast = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->grib2LocalSectionNumber = grib_arguments_get_name(hand,c,n++); + self->productDefinitionTemplateNumber = grib_arguments_get_name(hand,c,n++); + self->productDefinitionTemplateNumberInternal = grib_arguments_get_name(hand,c,n++); + self->type = grib_arguments_get_name(hand,c,n++); + self->stream = grib_arguments_get_name(hand,c,n++); + self->the_class = grib_arguments_get_name(hand,c,n++); + self->eps = grib_arguments_get_name(hand,c,n++); + self->stepType = grib_arguments_get_name(hand,c,n++); + self->derivedForecast = grib_arguments_get_name(hand,c,n++); } static int unpack_long(grib_accessor* a, long* val, size_t *len) @@ -179,6 +180,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len) static int pack_long(grib_accessor* a, const long* val, size_t *len) { grib_accessor_local_definition* self = (grib_accessor_local_definition*)a; + grib_handle* hand=grib_handle_of_accessor(a); long productDefinitionTemplateNumber=-1; long productDefinitionTemplateNumberInternal=-1; long productDefinitionTemplateNumberNew=-1; @@ -199,25 +201,25 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len) long derivedForecast=-1; long editionNumber = 0; - if (grib_get_long(grib_handle_of_accessor(a), "editionNumber", &editionNumber)==GRIB_SUCCESS) { + if (grib_get_long(hand, "editionNumber", &editionNumber)==GRIB_SUCCESS) { Assert(editionNumber != 1); } - if (grib_get_long(grib_handle_of_accessor(a), self->productDefinitionTemplateNumber,&productDefinitionTemplateNumber)!=GRIB_SUCCESS) + if (grib_get_long(hand, self->productDefinitionTemplateNumber,&productDefinitionTemplateNumber)!=GRIB_SUCCESS) tooEarly=1; - grib_get_long(grib_handle_of_accessor(a), self->productDefinitionTemplateNumberInternal,&productDefinitionTemplateNumberInternal); - grib_get_long(grib_handle_of_accessor(a), self->type,&type); - grib_get_long(grib_handle_of_accessor(a), self->stream,&stream); - grib_get_long(grib_handle_of_accessor(a), self->the_class,&the_class); - grib_get_long(grib_handle_of_accessor(a), self->eps,&eps); - grib_get_string(grib_handle_of_accessor(a), self->stepType,stepType,&slen); + grib_get_long(hand, self->productDefinitionTemplateNumberInternal,&productDefinitionTemplateNumberInternal); + grib_get_long(hand, self->type,&type); + grib_get_long(hand, self->stream,&stream); + grib_get_long(hand, self->the_class,&the_class); + grib_get_long(hand, self->eps,&eps); + grib_get_string(hand, self->stepType,stepType,&slen); if (!strcmp(stepType,"instant")) isInstant=1; - grib_get_long(grib_handle_of_accessor(a), self->grib2LocalSectionNumber,&grib2LocalSectionNumber); - grib_get_long(grib_handle_of_accessor(a), "is_chemical",&chemical); - grib_get_long(grib_handle_of_accessor(a), "is_chemical_distfn",&chemical_distfn); - grib_get_long(grib_handle_of_accessor(a), "is_aerosol",&aerosol); - grib_get_long(grib_handle_of_accessor(a), "is_aerosol_optical",&aerosol_optical); - if (chemical && aerosol) { + grib_get_long(hand, self->grib2LocalSectionNumber,&grib2LocalSectionNumber); + grib_get_long(hand, "is_chemical",&chemical); + grib_get_long(hand, "is_chemical_distfn",&chemical_distfn); + grib_get_long(hand, "is_aerosol",&aerosol); + grib_get_long(hand, "is_aerosol_optical",&aerosol_optical); + if (chemical==1 && aerosol==1) { grib_context_log(a->context,GRIB_LOG_ERROR,"Parameter cannot be both chemical and aerosol!"); return GRIB_ENCODING_ERROR; } @@ -383,14 +385,14 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len) if (productDefinitionTemplateNumber != productDefinitionTemplateNumberNew) { if (tooEarly) - grib_set_long(grib_handle_of_accessor(a), self->productDefinitionTemplateNumberInternal,productDefinitionTemplateNumberNew); + grib_set_long(hand, self->productDefinitionTemplateNumberInternal,productDefinitionTemplateNumberNew); else - grib_set_long(grib_handle_of_accessor(a), self->productDefinitionTemplateNumber,productDefinitionTemplateNumberNew); + grib_set_long(hand, self->productDefinitionTemplateNumber,productDefinitionTemplateNumberNew); } if (derivedForecast>=0) - grib_set_long(grib_handle_of_accessor(a), self->derivedForecast,derivedForecast); + grib_set_long(hand, self->derivedForecast,derivedForecast); - grib_set_long(grib_handle_of_accessor(a), self->grib2LocalSectionNumber,*val); + grib_set_long(hand, self->grib2LocalSectionNumber,*val); return 0; } From 37c9bdf84e648ab74a20ae9640c900c2a4cf74b8 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 9 Aug 2019 16:15:05 +0100 Subject: [PATCH 385/414] Remove unused struct data member --- src/grib_api_internal.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/grib_api_internal.h b/src/grib_api_internal.h index 285a67e8e..4f80a5fec 100644 --- a/src/grib_api_internal.h +++ b/src/grib_api_internal.h @@ -1445,7 +1445,7 @@ struct grib_codetable { }; typedef struct grib_smart_table_entry { - int code; + /*int code;*/ char* abbreviation; char* column[MAX_SMART_TABLE_COLUMNS]; } grib_smart_table_entry; From 2bbd77027269165b1fc0c2e41919ec826fbc13f0 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 9 Aug 2019 16:35:59 +0100 Subject: [PATCH 386/414] Python3 install: Use pip3 rather than pip --- CMakeLists.txt | 6 +++--- INSTALL | 6 +++--- README.md | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c5848ba79..e3878778b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -110,7 +110,7 @@ ecbuild_add_option( FEATURE PYTHON REQUIRED_PACKAGES "Python VERSION 2.6 NO_LIBS" NumPy ) # For Python2 we build our own bindings (using SWIG) in the build directory -# but for Python3 one has to add the eccodes-python from pip AFTER the install +# but for Python3 one has to add the eccodes-python from pip3 AFTER the install if( PYTHON_VERSION_MAJOR EQUAL 3 ) set( HAVE_PYTHON 0 ) endif() @@ -387,7 +387,7 @@ add_subdirectory( fortran ) if (PYTHON_VERSION_MAJOR GREATER 2) # Python3 is no longer built with SWIG but is a separate - # package. User should do: pip install eccodes-python + # package. User should do: pip3 install eccodes-python #add_subdirectory( python3 ) set( ECCODES_PYTHON_DIR "python3" ) else() @@ -479,6 +479,6 @@ ecbuild_info(" | Please note: |") ecbuild_info(" | For Python3 support, first install |") ecbuild_info(" | ecCodes and then install the Python |") ecbuild_info(" | bindings from PyPI with: |") -ecbuild_info(" | $ pip install eccodes-python |") +ecbuild_info(" | $ pip3 install eccodes-python |") ecbuild_info(" +--------------------------------------+") ecbuild_info("") diff --git a/INSTALL b/INSTALL index 6162c7992..299775237 100644 --- a/INSTALL +++ b/INSTALL @@ -33,10 +33,10 @@ However it requires that cmake be installed on your system. > ctest > make install -To add the Python3 bindings, use pip install from PyPI as follows: - > pip install eccodes-python +To add the Python3 bindings, use pip3 install from PyPI as follows: + > pip3 install eccodes-python or - > pip install --install-option="--prefix=/path/to/where/you/install/eccodes" eccodes-python + > pip3 install --install-option="--prefix=/path/to/where/you/install/eccodes" eccodes-python You can also pass options to the cmake command above. Some typical examples are: diff --git a/README.md b/README.md index 4e9e9ac9e..d84fc865b 100644 --- a/README.md +++ b/README.md @@ -53,13 +53,13 @@ INSTALLATION make install ``` -To add the Python3 bindings, use pip install from PyPI as follows: +To add the Python3 bindings, use pip3 install from PyPI as follows: ``` - pip install eccodes-python + pip3 install eccodes-python ``` or ``` - pip install --install-option="--prefix=/path/to/where/you/install/eccodes" eccodes-python + pip3 install --install-option="--prefix=/path/to/where/you/install/eccodes" eccodes-python ``` From 4dd138f3e0f5bee069b3a4e43365cf0ae9884fa6 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 9 Aug 2019 16:45:22 +0100 Subject: [PATCH 387/414] Reduce calls to grib_handle_of_accessor --- src/grib_accessor_class_g2grid.c | 52 +++++++++++++------------ src/grib_accessor_class_validity_date.c | 32 ++++++++------- src/grib_accessor_class_validity_time.c | 28 ++++++------- 3 files changed, 59 insertions(+), 53 deletions(-) diff --git a/src/grib_accessor_class_g2grid.c b/src/grib_accessor_class_g2grid.c index ff1e9fc27..cca4bb776 100644 --- a/src/grib_accessor_class_g2grid.c +++ b/src/grib_accessor_class_g2grid.c @@ -156,16 +156,17 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* c) { grib_accessor_g2grid* self = (grib_accessor_g2grid*)a; + grib_handle* hand = grib_handle_of_accessor(a); int n = 0; - self->latitude_first = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->longitude_first = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->latitude_last = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->longitude_last = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->i_increment = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->j_increment = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->basic_angle = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->sub_division = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->latitude_first = grib_arguments_get_name(hand,c,n++); + self->longitude_first = grib_arguments_get_name(hand,c,n++); + self->latitude_last = grib_arguments_get_name(hand,c,n++); + self->longitude_last = grib_arguments_get_name(hand,c,n++); + self->i_increment = grib_arguments_get_name(hand,c,n++); + self->j_increment = grib_arguments_get_name(hand,c,n++); + self->basic_angle = grib_arguments_get_name(hand,c,n++); + self->sub_division = grib_arguments_get_name(hand,c,n++); a->flags |= GRIB_ACCESSOR_FLAG_EDITION_SPECIFIC | @@ -181,6 +182,7 @@ static int value_count(grib_accessor* a,long* count) static int unpack_double(grib_accessor* a, double* val, size_t *len) { grib_accessor_g2grid* self = (grib_accessor_g2grid*)a; + grib_handle* hand = grib_handle_of_accessor(a); int ret = 0; long basic_angle = 0; @@ -194,10 +196,10 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len) return ret; } - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->basic_angle,&basic_angle)) != GRIB_SUCCESS) + if((ret = grib_get_long_internal(hand, self->basic_angle,&basic_angle)) != GRIB_SUCCESS) return ret; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->sub_division,&sub_division)) != GRIB_SUCCESS) + if((ret = grib_get_long_internal(hand, self->sub_division,&sub_division)) != GRIB_SUCCESS) return ret; @@ -208,27 +210,27 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len) basic_angle = 1; n = 0; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->latitude_first,&v[n++])) != GRIB_SUCCESS) + if((ret = grib_get_long_internal(hand, self->latitude_first,&v[n++])) != GRIB_SUCCESS) return ret; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->longitude_first,&v[n++])) != GRIB_SUCCESS) + if((ret = grib_get_long_internal(hand, self->longitude_first,&v[n++])) != GRIB_SUCCESS) return ret; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->latitude_last,&v[n++])) != GRIB_SUCCESS) + if((ret = grib_get_long_internal(hand, self->latitude_last,&v[n++])) != GRIB_SUCCESS) return ret; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->longitude_last,&v[n++])) != GRIB_SUCCESS) + if((ret = grib_get_long_internal(hand, self->longitude_last,&v[n++])) != GRIB_SUCCESS) return ret; if(!self->i_increment) v[n++] = GRIB_MISSING_LONG; else - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->i_increment,&v[n++])) != GRIB_SUCCESS) + if((ret = grib_get_long_internal(hand, self->i_increment,&v[n++])) != GRIB_SUCCESS) return ret; if(!self->j_increment) v[n++] = GRIB_MISSING_LONG; else if(self->j_increment) - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->j_increment,&v[n++])) != GRIB_SUCCESS) + if((ret = grib_get_long_internal(hand, self->j_increment,&v[n++])) != GRIB_SUCCESS) return ret; for(i = 0 ; i < n ; i++) @@ -314,6 +316,7 @@ static int trial(const double* val,long v[6],long* basic_angle,long* sub_divisio static int pack_double(grib_accessor* a, const double* val, size_t *len) { grib_accessor_g2grid* self = (grib_accessor_g2grid*)a; + grib_handle* hand = grib_handle_of_accessor(a); int ret; long v[6]; int n; @@ -334,7 +337,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len) } else if(trial(val,v,&basic_angle,&sub_division)) { - } else { @@ -351,33 +353,33 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len) sub_division = GRIB_MISSING_LONG; } - if((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->basic_angle,basic_angle)) != GRIB_SUCCESS) + if((ret = grib_set_long_internal(hand, self->basic_angle,basic_angle)) != GRIB_SUCCESS) return ret; - if((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->sub_division,sub_division)) != GRIB_SUCCESS) + if((ret = grib_set_long_internal(hand, self->sub_division,sub_division)) != GRIB_SUCCESS) return ret; n = 0; - if((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->latitude_first,v[n++])) != GRIB_SUCCESS) + if((ret = grib_set_long_internal(hand, self->latitude_first,v[n++])) != GRIB_SUCCESS) return ret; - if((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->longitude_first,v[n++])) != GRIB_SUCCESS) + if((ret = grib_set_long_internal(hand, self->longitude_first,v[n++])) != GRIB_SUCCESS) return ret; - if((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->latitude_last,v[n++])) != GRIB_SUCCESS) + if((ret = grib_set_long_internal(hand, self->latitude_last,v[n++])) != GRIB_SUCCESS) return ret; - if((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->longitude_last,v[n++])) != GRIB_SUCCESS) + if((ret = grib_set_long_internal(hand, self->longitude_last,v[n++])) != GRIB_SUCCESS) return ret; if(!self->i_increment) n++; else - if((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->i_increment,v[n++])) != GRIB_SUCCESS) + if((ret = grib_set_long_internal(hand, self->i_increment,v[n++])) != GRIB_SUCCESS) return ret; if(!self->j_increment) n++; else - if((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->j_increment,v[n++])) != GRIB_SUCCESS) + if((ret = grib_set_long_internal(hand, self->j_increment,v[n++])) != GRIB_SUCCESS) return ret; return GRIB_SUCCESS; diff --git a/src/grib_accessor_class_validity_date.c b/src/grib_accessor_class_validity_date.c index 697fe8c3e..a900594c7 100644 --- a/src/grib_accessor_class_validity_date.c +++ b/src/grib_accessor_class_validity_date.c @@ -178,15 +178,16 @@ static long convert_to_minutes(long step, long stepUnits) static void init(grib_accessor* a,const long l, grib_arguments* c) { grib_accessor_validity_date* self = (grib_accessor_validity_date*)a; + grib_handle* hand = grib_handle_of_accessor(a); int n = 0; - self->date = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->time = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->step = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->stepUnits = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->year = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->month = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->day = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->date = grib_arguments_get_name(hand,c,n++); + self->time = grib_arguments_get_name(hand,c,n++); + self->step = grib_arguments_get_name(hand,c,n++); + self->stepUnits = grib_arguments_get_name(hand,c,n++); + self->year = grib_arguments_get_name(hand,c,n++); + self->month = grib_arguments_get_name(hand,c,n++); + self->day = grib_arguments_get_name(hand,c,n++); a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; } @@ -199,6 +200,7 @@ static void dump(grib_accessor* a, grib_dumper* dumper) static int unpack_long(grib_accessor* a, long* val, size_t *len) { grib_accessor_validity_date* self = (grib_accessor_validity_date*)a; + grib_handle* hand = grib_handle_of_accessor(a); int ret=0; long date = 0; long time = 0; @@ -208,22 +210,22 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len) if (self->year) { long year,month,day; - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->year,&year))!=GRIB_SUCCESS) return ret; - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->month,&month))!=GRIB_SUCCESS) return ret; - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->day,&day))!=GRIB_SUCCESS) return ret; + if ((ret=grib_get_long_internal(hand, self->year,&year))!=GRIB_SUCCESS) return ret; + if ((ret=grib_get_long_internal(hand, self->month,&month))!=GRIB_SUCCESS) return ret; + if ((ret=grib_get_long_internal(hand, self->day,&day))!=GRIB_SUCCESS) return ret; *val=year*10000+month*100+day; return GRIB_SUCCESS; } - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->date,&date))!=GRIB_SUCCESS) return ret; - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->time,&time))!=GRIB_SUCCESS) return ret; - if ((ret=grib_get_long(grib_handle_of_accessor(a), self->step,&step))!=GRIB_SUCCESS) { - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), "endStep",&step))!=GRIB_SUCCESS) { + if ((ret=grib_get_long_internal(hand, self->date,&date))!=GRIB_SUCCESS) return ret; + if ((ret=grib_get_long_internal(hand, self->time,&time))!=GRIB_SUCCESS) return ret; + if ((ret=grib_get_long(hand, self->step,&step))!=GRIB_SUCCESS) { + if ((ret=grib_get_long_internal(hand, "endStep",&step))!=GRIB_SUCCESS) { return ret; /* See ECC-817 */ } } if (self->stepUnits) { - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->stepUnits,&stepUnits))!=GRIB_SUCCESS) return ret; + if ((ret=grib_get_long_internal(hand, self->stepUnits,&stepUnits))!=GRIB_SUCCESS) return ret; step_mins = convert_to_minutes(step, stepUnits); } diff --git a/src/grib_accessor_class_validity_time.c b/src/grib_accessor_class_validity_time.c index 0636cd058..f38416bd2 100644 --- a/src/grib_accessor_class_validity_time.c +++ b/src/grib_accessor_class_validity_time.c @@ -176,14 +176,15 @@ static long convert_to_minutes(long step, long stepUnits) static void init(grib_accessor* a,const long l, grib_arguments* c) { grib_accessor_validity_time* self = (grib_accessor_validity_time*)a; + grib_handle* hand = grib_handle_of_accessor(a); int n = 0; - self->date = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->time = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->step = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->stepUnits = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->hours = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->minutes = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->date = grib_arguments_get_name(hand,c,n++); + self->time = grib_arguments_get_name(hand,c,n++); + self->step = grib_arguments_get_name(hand,c,n++); + self->stepUnits = grib_arguments_get_name(hand,c,n++); + self->hours = grib_arguments_get_name(hand,c,n++); + self->minutes = grib_arguments_get_name(hand,c,n++); a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; } @@ -196,6 +197,7 @@ static void dump(grib_accessor* a, grib_dumper* dumper) static int unpack_long(grib_accessor* a, long* val, size_t *len) { grib_accessor_validity_time* self = (grib_accessor_validity_time*)a; + grib_handle* hand = grib_handle_of_accessor(a); int ret=0; long date = 0; long time = 0; @@ -204,22 +206,22 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len) long hours = 0, minutes=0, step_mins=0, tmp, tmp_hrs, tmp_mins; if (self->hours) { - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->hours,&hours))!=GRIB_SUCCESS) return ret; - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->minutes,&minutes))!=GRIB_SUCCESS) return ret; + if ((ret=grib_get_long_internal(hand, self->hours,&hours))!=GRIB_SUCCESS) return ret; + if ((ret=grib_get_long_internal(hand, self->minutes,&minutes))!=GRIB_SUCCESS) return ret; *val=hours*100+minutes; return GRIB_SUCCESS; } - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->date,&date))!=GRIB_SUCCESS) return ret; - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->time,&time))!=GRIB_SUCCESS) return ret; - if ((ret=grib_get_long(grib_handle_of_accessor(a), self->step,&step))!=GRIB_SUCCESS) { - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), "endStep",&step))!=GRIB_SUCCESS) { + if ((ret=grib_get_long_internal(hand, self->date,&date))!=GRIB_SUCCESS) return ret; + if ((ret=grib_get_long_internal(hand, self->time,&time))!=GRIB_SUCCESS) return ret; + if ((ret=grib_get_long(hand, self->step,&step))!=GRIB_SUCCESS) { + if ((ret=grib_get_long_internal(hand, "endStep",&step))!=GRIB_SUCCESS) { return ret; /* See ECC-817 */ } } /* Seconds will always be zero. So convert to minutes */ if (self->stepUnits) { - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->stepUnits,&stepUnits))!=GRIB_SUCCESS) return ret; + if ((ret=grib_get_long_internal(hand, self->stepUnits,&stepUnits))!=GRIB_SUCCESS) return ret; step_mins = convert_to_minutes(step, stepUnits); } From 9be7d194cda303619d427636cea40115dba5f144 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 9 Aug 2019 17:08:59 +0100 Subject: [PATCH 388/414] Refactoring: move the grib_context functions out of grib_handle --- src/grib_api_prototypes.h | 14 ++++++------- src/grib_context.c | 42 +++++++++++++++++++++++++++++++++++++-- src/grib_handle.c | 42 --------------------------------------- 3 files changed, 47 insertions(+), 51 deletions(-) diff --git a/src/grib_api_prototypes.h b/src/grib_api_prototypes.h index 208004772..f7a0386e9 100644 --- a/src/grib_api_prototypes.h +++ b/src/grib_api_prototypes.h @@ -1008,6 +1008,13 @@ bufr_descriptors_array* grib_context_expanded_descriptors_list_get(grib_context* void grib_context_expanded_descriptors_list_push(grib_context* c,const char* key,bufr_descriptors_array* expanded,bufr_descriptors_array* unexpanded); void codes_set_codes_assertion_failed_proc(codes_assertion_failed_proc proc); void codes_assertion_failed(const char *message, const char *file, int line); +int grib_get_gribex_mode(grib_context* c); +void grib_gribex_mode_on(grib_context* c); +void grib_gribex_mode_off(grib_context* c); +void grib_gts_header_on(grib_context* c); +void grib_gts_header_off(grib_context* c); +void grib_multi_support_on(grib_context* c); +void grib_multi_support_off(grib_context* c); /* grib_date.c */ int grib_julian_to_datetime(double jd, long *year, long *month, long *day, long *hour, long *minute, long *second); @@ -1093,14 +1100,7 @@ grib_handle *grib_handle_new(grib_context *c); grib_action *grib_action_from_filter(const char *filter); int grib_handle_apply_action(grib_handle *h, grib_action *a); int grib_handle_prepare_action(grib_handle *h, grib_action *a); -void grib_multi_support_on(grib_context *c); -void grib_multi_support_off(grib_context *c); void grib_multi_support_reset_file(grib_context *c, FILE *f); -void grib_gts_header_on(grib_context *c); -void grib_gts_header_off(grib_context *c); -int grib_get_gribex_mode(grib_context *c); -void grib_gribex_mode_on(grib_context *c); -void grib_gribex_mode_off(grib_context *c); void grib_multi_support_reset(grib_context *c); /* grib_header_compute.c */ diff --git a/src/grib_context.c b/src/grib_context.c index d8c473d75..247d41682 100644 --- a/src/grib_context.c +++ b/src/grib_context.c @@ -375,8 +375,8 @@ grib_context* grib_context_get_default() #endif write_on_fail = codes_getenv("ECCODES_GRIB_WRITE_ON_FAIL"); - bufrdc_mode = codes_getenv("ECCODES_BUFRDC_MODE_ON"); - bufr_set_to_missing_if_out_of_range = codes_getenv("ECCODES_BUFR_SET_TO_MISSING_IF_OUT_OF_RANGE"); + bufrdc_mode = getenv("ECCODES_BUFRDC_MODE_ON"); + bufr_set_to_missing_if_out_of_range = getenv("ECCODES_BUFR_SET_TO_MISSING_IF_OUT_OF_RANGE"); large_constant_fields = codes_getenv("ECCODES_GRIB_LARGE_CONSTANT_FIELDS"); no_abort = codes_getenv("ECCODES_NO_ABORT"); debug = codes_getenv("ECCODES_DEBUG"); @@ -1089,3 +1089,41 @@ void codes_assertion_failed(const char* message, const char* file, int line) assertion(buffer); } } + +int grib_get_gribex_mode(grib_context* c) +{ + if ( !c ) c=grib_context_get_default(); + return c->gribex_mode_on; +} +void grib_gribex_mode_on(grib_context* c) +{ + if ( !c ) c=grib_context_get_default(); + c->gribex_mode_on=1; +} +void grib_gribex_mode_off(grib_context* c) +{ + if ( !c ) c=grib_context_get_default(); + c->gribex_mode_on=0; +} + +void grib_gts_header_on(grib_context* c) +{ + if ( !c ) c=grib_context_get_default(); + c->gts_header_on=1; +} +void grib_gts_header_off(grib_context* c) +{ + if ( !c ) c=grib_context_get_default(); + c->gts_header_on=0; +} + +void grib_multi_support_on(grib_context* c) +{ + if ( !c ) c=grib_context_get_default(); + c->multi_support_on=1; +} +void grib_multi_support_off(grib_context* c) +{ + if ( !c ) c=grib_context_get_default(); + c->multi_support_on=0; +} diff --git a/src/grib_handle.c b/src/grib_handle.c index 4364b8c8b..d351cde5a 100644 --- a/src/grib_handle.c +++ b/src/grib_handle.c @@ -1531,18 +1531,6 @@ static void grib2_build_message ( grib_context* context,unsigned char* sections[ *len=msglen; } -void grib_multi_support_on ( grib_context* c ) -{ - if ( !c ) c=grib_context_get_default(); - c->multi_support_on=1; -} - -void grib_multi_support_off ( grib_context* c ) -{ - if ( !c ) c=grib_context_get_default(); - c->multi_support_on=0; -} - /* For multi support mode: Reset all file handles equal to f. See GRIB-249 */ void grib_multi_support_reset_file(grib_context* c, FILE* f) { @@ -1557,36 +1545,6 @@ void grib_multi_support_reset_file(grib_context* c, FILE* f) } } -void grib_gts_header_on ( grib_context* c ) -{ - if ( !c ) c=grib_context_get_default(); - c->gts_header_on=1; -} - -void grib_gts_header_off ( grib_context* c ) -{ - if ( !c ) c=grib_context_get_default(); - c->gts_header_on=0; -} - -int grib_get_gribex_mode ( grib_context* c) -{ - if ( !c ) c=grib_context_get_default(); - return c->gribex_mode_on; -} - -void grib_gribex_mode_on ( grib_context* c ) -{ - if ( !c ) c=grib_context_get_default(); - c->gribex_mode_on=1; -} - -void grib_gribex_mode_off ( grib_context* c ) -{ - if ( !c ) c=grib_context_get_default(); - c->gribex_mode_on=0; -} - static grib_multi_support* grib_get_multi_support ( grib_context* c, FILE* f ) { int i=0; From c3f10308de009cdf772884d6423f8cfb44effda7 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 9 Aug 2019 17:30:13 +0100 Subject: [PATCH 389/414] Update prototypes --- src/grib_api_prototypes.h | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/grib_api_prototypes.h b/src/grib_api_prototypes.h index f7a0386e9..79d13e078 100644 --- a/src/grib_api_prototypes.h +++ b/src/grib_api_prototypes.h @@ -808,8 +808,8 @@ long accessor_raw_get_offset(grib_accessor *a); /* grib_gaussian_reduced.c */ void grib_get_reduced_row_wrapper(grib_handle *h, long pl, double lon_first, double lon_last, long *npoints, long *ilon_first, long *ilon_last); -void grib_get_reduced_row(long pl, double lon_first, double lon_last, long *npoints, long *ilon_first, long *ilon_last); void grib_get_reduced_row_legacy(long pl, double lon_first, double lon_last, long *npoints, long *ilon_first, long *ilon_last); +void grib_get_reduced_row(long pl, double lon_first, double lon_last, long *npoints, long *ilon_first, long *ilon_last); void grib_get_reduced_row_p(long pl, double lon_first, double lon_last, long *npoints, double *olon_first, double *olon_last); /* grib_accessor_class_abstract_vector.c */ @@ -943,6 +943,8 @@ void grib_dump_footer(grib_dumper *d, grib_handle *h); /* grib_dumper_class_bufr_decode_python.c */ +/* grib_dumper_class_bufr_simple.c */ + /* grib_dumper_class_json.c */ /* grib_dumper_class_grib_encode_C.c */ @@ -1093,6 +1095,9 @@ int grib_get_partial_message(grib_handle *h, const void **msg, size_t *len, int int grib_get_partial_message_copy(grib_handle *h, void *message, size_t *len, int start_section); int grib_get_message_copy(grib_handle *h, void *message, size_t *len); int grib_get_message_offset(grib_handle *h, off_t *offset); +int codes_get_product_kind(grib_handle *h, ProductKind *product_kind); +int codes_check_message_header(const void *bytes, size_t length, ProductKind product); +int codes_check_message_footer(const void *bytes, size_t length, ProductKind product); int grib_get_message_size(grib_handle *h, size_t *size); int grib_get_message(grib_handle *h, const void **msg, size_t *size); int grib_get_message_headers(grib_handle *h, const void **msg, size_t *size); @@ -1401,6 +1406,8 @@ grib_nearest *grib_nearest_factory(grib_handle *h, grib_arguments *args); /* grib_nearest_class_lambert_conformal.c */ +/* grib_nearest_class_polar_stereographic.c */ + /* grib_iterator_class_polar_stereographic.c */ /* grib_iterator_class_lambert_azimuthal_equal_area.c */ @@ -1523,6 +1530,8 @@ const char *grib_unop_double_proc_name(grib_unop_double_proc proc); FILE *codes_fopen(const char *name, const char *mode); int codes_access(const char *name, int mode); +/* grib_accessor_class_data_g2bifourier_packing.c */ + /* grib_optimize_decimal_factor.c */ int grib_optimize_decimal_factor(grib_accessor *a, const char *reference_value, const double pmax, const double pmin, const int knbit, const int compat_gribex, const int compat_32bit, long *kdec, long *kbin, double *ref); From 3e53285b9e29a996e28855d58b519a6e609adc4c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 12 Aug 2019 16:00:15 +0100 Subject: [PATCH 390/414] Clang compiler warnings and const correctness --- src/grib_accessor.c | 20 ++++++------- tools/bufr_compare.c | 64 +++++++++++++++++++--------------------- tools/bufr_get.c | 1 - tools/grib_compare.c | 54 ++++++++++++++++----------------- tools/grib_get.c | 8 ++--- tools/grib_index_build.c | 8 ++--- tools/grib_ls.c | 9 +++--- tools/grib_options.c | 8 ++--- tools/grib_tools.c | 22 +++++++------- 9 files changed, 94 insertions(+), 100 deletions(-) diff --git a/src/grib_accessor.c b/src/grib_accessor.c index 01d11fc46..023390bfd 100644 --- a/src/grib_accessor.c +++ b/src/grib_accessor.c @@ -647,12 +647,12 @@ const char* grib_get_type_name(int type) { switch(type) { - case GRIB_TYPE_LONG: return "long"; break; - case GRIB_TYPE_STRING: return "string"; break; - case GRIB_TYPE_BYTES: return "bytes"; break; - case GRIB_TYPE_DOUBLE: return "double"; break; - case GRIB_TYPE_LABEL: return "label"; break; - case GRIB_TYPE_SECTION: return "section"; break; + case GRIB_TYPE_LONG: return "long"; + case GRIB_TYPE_STRING: return "string"; + case GRIB_TYPE_BYTES: return "bytes"; + case GRIB_TYPE_DOUBLE: return "double"; + case GRIB_TYPE_LABEL: return "label"; + case GRIB_TYPE_SECTION: return "section"; } return "unknown"; } @@ -756,14 +756,14 @@ int grib_accessor_has_attributes(grib_accessor* a) return a->attributes[0] ? 1 : 0 ; } -grib_accessor* grib_accessor_get_attribute(grib_accessor* a,const char* name) +grib_accessor* grib_accessor_get_attribute(grib_accessor* a, const char* name) { int index=0; - char* p=0; + const char* p=0; char* basename=NULL; - char* attribute_name=NULL; + const char* attribute_name=NULL; grib_accessor* acc=NULL; - p=(char*)name; + p=name; while ( *(p+1) != '\0' && ( *p != '-' || *(p+1)!= '>' ) ) p++; if (*(p+1) == '\0') { return _grib_accessor_get_attribute(a,name,&index); diff --git a/tools/bufr_compare.c b/tools/bufr_compare.c index 1f177022c..87b8054fc 100644 --- a/tools/bufr_compare.c +++ b/tools/bufr_compare.c @@ -19,8 +19,8 @@ GRIB_INLINE static int grib_inline_strcmp(const char* a,const char* b) GRIB_INLINE static int grib_inline_rstrcmp(const char* a,const char* b) { - char* p=(char*)a; - char* q=(char*)b; + const char* p=a; + const char* q=b; while (*p != 0) p++; while (*q != 0) q++; q--;p--; @@ -38,15 +38,14 @@ struct grib_error { grib_error* next; }; -grib_error* error_summary; - -compare_double_proc compare_double; -double global_tolerance=0; -int packingCompare=0; -grib_string_list* blacklist=0; -grib_string_list* keys_list = NULL; /* Used to determine rank of key */ -int isLeafKey = 0; /* 0 if key is top-level, 1 if key has no children attributes */ -int compareAbsolute=1; +static grib_error* error_summary; +static compare_double_proc compare_double; +static double global_tolerance=0; +static int packingCompare=0; +static grib_string_list* blacklist=0; +static grib_string_list* keys_list = NULL; /* Used to determine rank of key */ +static int isLeafKey = 0; /* 0 if key is top-level, 1 if key has no children attributes */ +static int compareAbsolute=1; static int compare_handles(grib_handle* handle1, grib_handle* handle2, grib_runtime_options* options); static int compare_values(grib_runtime_options* options, grib_handle* handle1, grib_handle *handle2, const char *name, int type); @@ -55,27 +54,27 @@ static int compare_attributes(grib_handle* handle1, grib_handle* handle2, grib_r static int compare_attribute(grib_handle* handle1, grib_handle* handle2, grib_runtime_options* options, grib_accessor* a, const char* prefix, int* err); -int error=0; -int count=0; -int lastPrint=0; -int force=0; +static int error=0; +static int count=0; +static int lastPrint=0; +static int force=0; /* ECC-651: Boolean 'two_way' set to 1 when '-2' option used */ -int two_way=0; +static int two_way=0; /* Boolean 'handles_swapped' relevant in 'two_way' mode: * 0 means: h1 is first file, h2 is second file * 1 means: h1 is second file, h2 is first file */ -int handles_swapped=0; +static int handles_swapped=0; -double maxAbsoluteError = 1e-19; -int onlyListed=1; -int headerMode=0; -int morein1=0; -int morein2=0; -int listFromCommandLine; -int verbose=0; -int tolerance_factor=1; +static double maxAbsoluteError = 1e-19; +static int onlyListed=1; +static int headerMode=0; +static int morein1=0; +static int morein2=0; +static int listFromCommandLine; +static int verbose=0; +static int tolerance_factor=1; static int write_error=0; /* Create the list of keys (global variable keys_list) */ @@ -218,10 +217,10 @@ grib_option grib_options[]={ {"v",0,0,0,1,0} }; -grib_handle* global_handle=NULL; -int counter=0; -int start=-1; -int end=-1; +static grib_handle* global_handle=NULL; +static int counter=0; +static int start=-1; +static int end=-1; const char* grib_tool_description= "Compare BUFR messages contained in two files." @@ -628,8 +627,8 @@ static char* double_as_string(grib_context* c, double v) /* Return the part of the key name without the '#rank#' part */ static char* get_keyname_without_rank(const char* name) { - char* p=(char*)name; - char* pEnd=p; + const char* p=name; + char* pEnd; char* ret=NULL; if (*p=='#') { @@ -1122,7 +1121,6 @@ static int compare_values(grib_runtime_options* options, grib_handle* handle1, g save_error(c,name); printf("Cannot compare [%s], unsupported type %d\n",name,type1); return GRIB_UNABLE_TO_COMPARE_ACCESSORS; - break; } return GRIB_SUCCESS; @@ -1292,7 +1290,7 @@ static int compare_handles(grib_handle* handle1, grib_handle* handle2, grib_runt if ( listFromCommandLine && onlyListed ) { for (i=0; i< options->compare_count; i++) { - if (blacklisted((char*)options->compare[i].name)) continue; + if (blacklisted(options->compare[i].name)) continue; if (options->compare[i].type == GRIB_NAMESPACE) { iter=grib_keys_iterator_new(handle1,0,options->compare[i].name); if (!iter) { diff --git a/tools/bufr_get.c b/tools/bufr_get.c index c1543fa6e..a2ff00a19 100644 --- a/tools/bufr_get.c +++ b/tools/bufr_get.c @@ -42,7 +42,6 @@ const char* grib_tool_name="bufr_get"; const char* grib_tool_usage="[options] file file ..."; int grib_options_count=sizeof(grib_options)/sizeof(grib_option); -grib_nearest* n=NULL; int main(int argc, char *argv[]) { diff --git a/tools/grib_compare.c b/tools/grib_compare.c index b86229d86..0686d7566 100644 --- a/tools/grib_compare.c +++ b/tools/grib_compare.c @@ -19,8 +19,8 @@ GRIB_INLINE static int grib_inline_strcmp(const char* a,const char* b) GRIB_INLINE static int grib_inline_rstrcmp(const char* a,const char* b) { - char* p=(char*)a; - char* q=(char*)b; + const char* p=a; + const char* q=b; while (*p != 0) p++; while (*q != 0) q++; q--;p--; @@ -38,37 +38,36 @@ struct grib_error { grib_error* next; }; -grib_error* error_summary; - -compare_double_proc compare_double; -double global_tolerance=0; -int packingCompare=0; -grib_string_list* blacklist=0; -int compareAbsolute=1; +static grib_error* error_summary; +static compare_double_proc compare_double; +static double global_tolerance=0; +static int packingCompare=0; +static grib_string_list* blacklist=0; +static int compareAbsolute=1; static int compare_handles(grib_handle* h1,grib_handle* h2,grib_runtime_options* options); static int compare_values(grib_runtime_options* options,grib_handle* h1,grib_handle *h2,const char *name,int type); -int error=0; -int count=0; -int lastPrint=0; -int force=0; +static int error=0; +static int count=0; +static int lastPrint=0; +static int force=0; /* ECC-651: Boolean 'two_way' set to 1 when '-2' option used */ -int two_way=0; +static int two_way=0; /* Boolean 'handles_swapped' relevant in 'two_way' mode: * 0 means: h1 is first file, h2 is second file * 1 means: h1 is second file, h2 is first file */ -int handles_swapped=0; +static int handles_swapped=0; -double maxAbsoluteError = 1e-19; -int onlyListed=1; -int headerMode=0; -int morein1=0; -int morein2=0; -int listFromCommandLine; -int verbose=0; -double tolerance_factor=1; +static double maxAbsoluteError = 1e-19; +static int onlyListed=1; +static int headerMode=0; +static int morein1=0; +static int morein2=0; +static int listFromCommandLine; +static int verbose=0; +static double tolerance_factor=1; /* Returns 0 when the values are considered the same */ static double compare_double_absolute(double *a,double *b,double tolerance) @@ -150,10 +149,10 @@ grib_option grib_options[]={ {"v",0,0,0,1,0} }; -grib_handle* global_handle=NULL; -int global_counter=0; -int theStart=-1; -int theEnd=-1; +static grib_handle* global_handle=NULL; +static int global_counter=0; +static int theStart=-1; +static int theEnd=-1; const char* grib_tool_description= "Compare GRIB messages contained in two files." @@ -1074,7 +1073,6 @@ static int compare_values(grib_runtime_options* options,grib_handle* h1,grib_han save_error(c,name); printf("Cannot compare [%s], unsupported type %d\n",name,type1); return GRIB_UNABLE_TO_COMPARE_ACCESSORS; - break; } return GRIB_SUCCESS; diff --git a/tools/grib_get.c b/tools/grib_get.c index c1cb080a5..200078fd0 100644 --- a/tools/grib_get.c +++ b/tools/grib_get.c @@ -46,10 +46,10 @@ const char* grib_tool_name="grib_get"; const char* grib_tool_usage="[options] grib_file grib_file ..."; int grib_options_count=sizeof(grib_options)/sizeof(grib_option); -double lat=0; -double lon=0; -int mode=0; -grib_nearest* nearest=NULL; +static double lat=0; +static double lon=0; +static int mode=0; +static grib_nearest* nearest=NULL; int main(int argc, char *argv[]) { diff --git a/tools/grib_index_build.c b/tools/grib_index_build.c index 711d505aa..5cc416f42 100644 --- a/tools/grib_index_build.c +++ b/tools/grib_index_build.c @@ -18,9 +18,9 @@ const char* grib_tool_description="Build an index file for a set of input GRIB files."; const char* grib_tool_name="grib_index_build"; const char* grib_tool_usage="[options] grib_file grib_file ... "; -grib_index* idx=NULL; -char* keys; -char* default_keys = "mars"; +static grib_index* idx=NULL; +static char* keys; +static char* default_keys = "mars"; grib_option grib_options[]={ /* {id, args, help}, on, command_line, value */ @@ -39,7 +39,7 @@ grib_option grib_options[]={ } }; -int compress_index; +static int compress_index; int grib_options_count=sizeof(grib_options)/sizeof(grib_option); diff --git a/tools/grib_ls.c b/tools/grib_ls.c index b9d615715..0cfd9e129 100644 --- a/tools/grib_ls.c +++ b/tools/grib_ls.c @@ -49,12 +49,11 @@ const char* grib_tool_usage="[options] grib_file grib_file ..."; static char* new_handle=""; int grib_options_count=sizeof(grib_options)/sizeof(grib_option); -double lat=0; -double lon=0; -int mode=0; +static double lat=0; +static double lon=0; +static int mode=0; static int json_latlon=0; - -grib_nearest* nearest=NULL; +static grib_nearest* nearest=NULL; int main(int argc, char *argv[]) { diff --git a/tools/grib_options.c b/tools/grib_options.c index 9019a362e..bd470e913 100644 --- a/tools/grib_options.c +++ b/tools/grib_options.c @@ -21,11 +21,11 @@ extern int optind; #include "wingetopt.h" #endif -const char* names[]={"parameter","vertical","geography","data","mars","local"}; -int names_count=6; +static const char* names[]={"parameter","vertical","geography","data","mars","local"}; +static int names_count=6; /* id,args,help */ -grib_options_help grib_options_help_list[] ={ +static grib_options_help grib_options_help_list[] ={ {"a",0,"Dump aliases.\n"}, {"b:","key,key,...", "\n\t\tAll the keys in this list are skipped in the comparison. Bit-by-bit compare on.\n"}, @@ -111,7 +111,7 @@ grib_options_help grib_options_help_list[] ={ }; -int grib_options_help_count=sizeof(grib_options_help_list)/sizeof(grib_options_help); +static int grib_options_help_count=sizeof(grib_options_help_list)/sizeof(grib_options_help); void usage(void) diff --git a/tools/grib_tools.c b/tools/grib_tools.c index e5670444c..0af0b46e6 100644 --- a/tools/grib_tools.c +++ b/tools/grib_tools.c @@ -46,7 +46,7 @@ static int scan(grib_context* c,grib_runtime_options* options,const char* dir); FILE* dump_file; -grib_runtime_options global_options={ +static grib_runtime_options global_options={ 0, /* verbose */ 0, /* fail */ 0, /* skip */ @@ -196,7 +196,7 @@ static int grib_tool_with_orderby(grib_runtime_options* options) grib_handle* h=NULL; grib_tools_file* infile=options->infile; char** filenames; - size_t files_count=0; + int files_count=0; grib_fieldset* set=NULL; int i=0; grib_context* c=grib_context_get_default(); @@ -270,7 +270,7 @@ static int grib_tool_with_orderby(grib_runtime_options* options) return 0; } -char iobuf[1024*1024]; +static char iobuf[1024*1024]; static int grib_tool_without_orderby(grib_runtime_options* options) { @@ -669,8 +669,8 @@ static void grib_tools_set_print_keys(grib_runtime_options* options, grib_handle for (i=0;irequested_print_keys_count;i++) { options->print_keys[options->print_keys_count].name=options->requested_print_keys[i].name; - if (strlen(options->requested_print_keys[i].name)>options->default_print_width) - options->default_print_width=strlen(options->requested_print_keys[i].name); + if (strlen(options->requested_print_keys[i].name) > options->default_print_width) + options->default_print_width = (int)strlen(options->requested_print_keys[i].name); options->print_keys[options->print_keys_count].type=options->requested_print_keys[i].type; options->print_keys_count++; } @@ -693,7 +693,7 @@ static void grib_tools_set_print_keys(grib_runtime_options* options, grib_handle } options->print_keys[options->print_keys_count].name=strdup(name); if (strlen(name)>options->default_print_width) - options->default_print_width=strlen(name); + options->default_print_width=(int)strlen(name); options->print_keys[options->print_keys_count].type=GRIB_TYPE_STRING; options->print_keys_count++; } @@ -701,14 +701,14 @@ static void grib_tools_set_print_keys(grib_runtime_options* options, grib_handle grib_keys_iterator_delete(kiter); if (options->print_keys_count==0 && options->latlon == 0 ) { int j=0,k=0,ns_count=0; - char* all_namespace_vals[1024] = {NULL,}; /* sorted array containing all namespaces */ + const char* all_namespace_vals[1024] = {NULL,}; /* sorted array containing all namespaces */ printf("ERROR: namespace \"%s\" does not contain any key.\n",ns); printf("Here are the available namespaces in this message:\n"); for (i=0; iaccessors[i]; if (anAccessor) { for (j=0; jall_name_spaces[j]; + const char* a_namespace = anAccessor->all_name_spaces[j]; if (a_namespace) { all_namespace_vals[k++] = a_namespace; ns_count++; @@ -974,7 +974,7 @@ void grib_print_key_values(grib_runtime_options* options, grib_handle* h) } } - strlenvalue = strlen(value); + strlenvalue = (int)strlen(value); width = strlenvalue < options->default_print_width ? options->default_print_width + 2 : @@ -999,7 +999,7 @@ void grib_print_key_values(grib_runtime_options* options, grib_handle* h) written_to_dump=1; } else if (options->latlon_mode==1) { sprintf(value,options->format,options->values[options->latlon_idx]); - strlenvalue = strlen(value); + strlenvalue = (int)strlen(value); width = strlenvalue < options->default_print_width ? options->default_print_width + 2 : strlenvalue + 2; @@ -1035,7 +1035,7 @@ void grib_print_key_values(grib_runtime_options* options, grib_handle* h) } sprintf(value,options->format,v); - strlenvalue = strlen(value); + strlenvalue = (int)strlen(value); width = strlenvalue < options->default_print_width ? options->default_print_width + 2 : strlenvalue + 2; From 9a1e580ff523d93868edeb096dcc4acd4930a7ce Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 13 Aug 2019 15:44:02 +0100 Subject: [PATCH 391/414] Compiler warnings --- src/grib_query.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/grib_query.c b/src/grib_query.c index 963a535a9..58876ba91 100644 --- a/src/grib_query.c +++ b/src/grib_query.c @@ -202,11 +202,10 @@ static char* get_condition(const char* name,codes_condition* condition) return str; } -static grib_accessor* _search_by_rank(grib_accessor* a,const char* name,int rank) { - grib_accessor* ret=NULL; +static grib_accessor* _search_by_rank(grib_accessor* a,const char* name,int rank) +{ grib_trie_with_rank* t=accessor_bufr_data_array_get_dataAccessorsTrie(a); - - ret=(grib_accessor*)grib_trie_with_rank_get(t,name,rank); + grib_accessor* ret=(grib_accessor*)grib_trie_with_rank_get(t,name,rank); return ret; } @@ -233,10 +232,9 @@ static grib_accessor* search_by_rank(grib_handle* h, const char* name,int rank,c if (data) { return _search_by_rank(data,name,rank); } else { - grib_accessor* ret=NULL; int rank2; char* str=get_rank(h->context, name, &rank2); - ret=_search_and_cache(h,str,the_namespace); + grib_accessor* ret=_search_and_cache(h,str,the_namespace); grib_context_free(h->context,str); return ret; } @@ -267,11 +265,10 @@ static int condition_true(grib_accessor* a,codes_condition* condition) { static void search_from_accessors_list(grib_accessors_list* al,grib_accessors_list* end,const char* name,grib_accessors_list* result) { - char* accessor_name=NULL; char attribute_name[200]={0,}; grib_accessor* accessor_result=0; - accessor_name=grib_split_name_attribute(al->accessor->context,name,attribute_name); + char* accessor_name=grib_split_name_attribute(al->accessor->context,name,attribute_name); while (al && al!=end && al->accessor) { if (grib_inline_strcmp(al->accessor->name,accessor_name)==0) { @@ -413,8 +410,7 @@ static grib_accessor* _grib_find_accessor(grib_handle* h, const char* name) if ( p ) { int i=0,len=0; char name_space[MAX_NAMESPACE_LEN]; - char* basename=NULL; - basename=p+1; + char* basename=p+1; p--; i=0; len=p-name+1; @@ -460,11 +456,10 @@ grib_accessor* grib_find_accessor(grib_handle* h, const char* name) aret = _grib_find_accessor(h, name); /* ECC-144: Performance */ } else { - char* accessor_name=NULL; char attribute_name[512]={0,}; grib_accessor* a=NULL; - accessor_name=grib_split_name_attribute(h->context,name,attribute_name); + char* accessor_name=grib_split_name_attribute(h->context,name,attribute_name); a=_grib_find_accessor(h,accessor_name); From 46537aa076a25800e3ced9e8a4b8c404f1381c54 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 14 Aug 2019 13:24:29 +0100 Subject: [PATCH 392/414] ECC-973: Assertion: BUFR encoding error should return exit code not assert --- src/grib_accessor_class_bufr_data_array.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/grib_accessor_class_bufr_data_array.c b/src/grib_accessor_class_bufr_data_array.c index 37ba5a394..741bd50c3 100644 --- a/src/grib_accessor_class_bufr_data_array.c +++ b/src/grib_accessor_class_bufr_data_array.c @@ -1264,7 +1264,9 @@ static int encode_new_replication(grib_context* c,grib_accessor_bufr_data_array* case 31000: if (self->nInputShortReplications>=0) { if (self->iInputShortReplications>=self->nInputShortReplications) { - grib_context_log(c,GRIB_LOG_FATAL,"array inputShortDelayedDescriptorReplicationFactor dimension too small"); + grib_context_log(c,GRIB_LOG_ERROR,"array inputShortDelayedDescriptorReplicationFactor: dimension mismatch (nInputShortReplications=%d)", + self->nInputShortReplications); + return GRIB_ARRAY_TOO_SMALL; } repetitions=self->inputShortReplications[self->iInputShortReplications]; self->iInputShortReplications++; @@ -1273,7 +1275,9 @@ static int encode_new_replication(grib_context* c,grib_accessor_bufr_data_array* case 31001: if (self->nInputReplications>=0) { if (self->iInputReplications>=self->nInputReplications) { - grib_context_log(c,GRIB_LOG_FATAL,"array inputDelayedDescriptorReplicationFactor dimension too small"); + grib_context_log(c,GRIB_LOG_ERROR,"array inputDelayedDescriptorReplicationFactor: dimension mismatch (nInputReplications=%d)", + self->nInputReplications); + return GRIB_ARRAY_TOO_SMALL; } repetitions=self->inputReplications[self->iInputReplications]; self->iInputReplications++; @@ -1282,7 +1286,9 @@ static int encode_new_replication(grib_context* c,grib_accessor_bufr_data_array* case 31002: if (self->nInputExtendedReplications>=0) { if (self->iInputExtendedReplications>=self->nInputExtendedReplications) { - grib_context_log(c,GRIB_LOG_FATAL,"array inputExtendedDelayedDescriptorReplicationFactor dimension too small"); + grib_context_log(c,GRIB_LOG_ERROR,"array inputExtendedDelayedDescriptorReplicationFactor: dimension mismatch (nInputExtendedReplications=%d)", + self->nInputExtendedReplications); + return GRIB_ARRAY_TOO_SMALL; } repetitions=self->inputExtendedReplications[self->iInputExtendedReplications]; self->iInputExtendedReplications++; From bf466a3e5175eef435c68aab9ff53aa134ac74a8 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 14 Aug 2019 18:04:25 +0100 Subject: [PATCH 393/414] ECC-974: Valgrind error: GRIB2: setting gridType=regular_gg on reduced gaussian grid --- src/action_class_when.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/action_class_when.c b/src/action_class_when.c index 420620cbe..1938b85f3 100644 --- a/src/action_class_when.c +++ b/src/action_class_when.c @@ -158,8 +158,13 @@ static int notify_change(grib_action* a, grib_accessor* observer,grib_accessor* grib_action *b = NULL; int ret = GRIB_SUCCESS; long lres; + /* ECC-974: observed->parent will change as a result of the execute + * so must store the handle once here (in 'hand') rather than call + * grib_handle_of_accessor(observed) later + */ + grib_handle* hand=grib_handle_of_accessor(observed); - if ((ret = grib_expression_evaluate_long(grib_handle_of_accessor(observed), self->expression,&lres)) + if ((ret = grib_expression_evaluate_long(hand, self->expression,&lres)) != GRIB_SUCCESS) return ret; #ifdef DEBUG if(self->loop) @@ -179,7 +184,7 @@ static int notify_change(grib_action* a, grib_accessor* observer,grib_accessor* b=self->block_false; while(b) { - ret = grib_action_execute(b,grib_handle_of_accessor(observed)); + ret = grib_action_execute(b,hand); if(ret != GRIB_SUCCESS) { self->loop = 0; return ret; From 63efd35879f67a324517ca0dabfaf791f6e62eee Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 15 Aug 2019 13:06:50 +0100 Subject: [PATCH 394/414] BUFR encoding: provide more help when arrays mismatch --- src/grib_accessor_class_bufr_data_element.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/grib_accessor_class_bufr_data_element.c b/src/grib_accessor_class_bufr_data_element.c index d7fa033c8..c67598b08 100644 --- a/src/grib_accessor_class_bufr_data_element.c +++ b/src/grib_accessor_class_bufr_data_element.c @@ -319,7 +319,7 @@ static int pack_string_array(grib_accessor*a , const char** v, size_t *len) if (self->compressedData) { idx=((int)self->numericValues->v[self->index]->v[0]/1000-1)/self->numberOfSubsets; if (*len!=1 && *len!=self->numberOfSubsets) { - grib_context_log(c,GRIB_LOG_ERROR,"Number of values mismatch for %s: are %ld should be %ld", + grib_context_log(c,GRIB_LOG_ERROR,"Number of values mismatch for '%s': %ld strings provided but expected %ld (=number of subsets)", self->descriptors->v[self->elementsDescriptorsIndex->v[0]->v[idx]]->shortName,*len,self->numberOfSubsets); return GRIB_ARRAY_TOO_SMALL; } @@ -482,7 +482,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len) if (self->compressedData) { count=*len; if (count!=1 && count!=self->numberOfSubsets) { - grib_context_log(c,GRIB_LOG_ERROR,"Number of values mismatch for %s: are %ld should be %ld", + grib_context_log(c,GRIB_LOG_ERROR,"Number of values mismatch for '%s': %ld doubles provided but expected %ld (=number of subsets)", self->descriptors->v[self->elementsDescriptorsIndex->v[0]->v[self->index]]->shortName,count,self->numberOfSubsets); return GRIB_ARRAY_TOO_SMALL; } @@ -511,7 +511,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len) if (self->compressedData) { count=*len; if (count!=1 && count!=self->numberOfSubsets) { - grib_context_log(c,GRIB_LOG_ERROR,"Number of values mismatch for %s: are %ld should be %ld", + grib_context_log(c,GRIB_LOG_ERROR,"Number of values mismatch for '%s': %ld integers provided but expected %ld (=number of subsets)", self->descriptors->v[self->elementsDescriptorsIndex->v[0]->v[self->index]]->shortName,count,self->numberOfSubsets); return GRIB_ARRAY_TOO_SMALL; } From 09650b9c3831228a09efe3a95626623918d489a0 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 15 Aug 2019 15:58:52 +0100 Subject: [PATCH 395/414] ECC-975: Add new error code: 'Functionality not enabled' --- fortran/eccodes_constants.h | 1 + fortran/grib_api_constants.h | 1 + python/grib_errors.h | 2 + python/gribapi/errors.py | 3 ++ python/swig_wrap_numpy.c | 1 + python/swig_wrap_numpy.py | 1 + src/eccodes.h | 2 + src/grib_accessor_class_data_ccsds_packing.c | 4 +- ...rib_accessor_class_data_jpeg2000_packing.c | 4 +- src/grib_accessor_class_data_png_packing.c | 4 +- src/grib_api.h | 2 + src/grib_errors.c | 39 ++++++++++--------- src/grib_errors.txt | 29 +++++++------- src/grib_jasper_encoding.c | 4 +- src/grib_openjpeg_encoding.c | 4 +- 15 files changed, 58 insertions(+), 43 deletions(-) diff --git a/fortran/eccodes_constants.h b/fortran/eccodes_constants.h index 8a14e93de..512718826 100644 --- a/fortran/eccodes_constants.h +++ b/fortran/eccodes_constants.h @@ -1,3 +1,4 @@ + integer, parameter,public :: CODES_FUNCTIONALITY_NOT_ENABLED = -67 integer, parameter,public :: CODES_WRONG_BITMAP_SIZE = -66 integer, parameter,public :: CODES_OUT_OF_RANGE = -65 integer, parameter,public :: CODES_UNSUPPORTED_EDITION = -64 diff --git a/fortran/grib_api_constants.h b/fortran/grib_api_constants.h index 72a457e8d..1ad7238ba 100644 --- a/fortran/grib_api_constants.h +++ b/fortran/grib_api_constants.h @@ -1,3 +1,4 @@ + integer, parameter,public :: GRIB_FUNCTIONALITY_NOT_ENABLED = -67 integer, parameter,public :: GRIB_WRONG_BITMAP_SIZE = -66 integer, parameter,public :: GRIB_OUT_OF_RANGE = -65 integer, parameter,public :: GRIB_UNSUPPORTED_EDITION = -64 diff --git a/python/grib_errors.h b/python/grib_errors.h index 2b35a261b..c6aabf3c0 100644 --- a/python/grib_errors.h +++ b/python/grib_errors.h @@ -139,5 +139,7 @@ Error codes returned by the grib_api functions. #define GRIB_OUT_OF_RANGE -65 /** Size of bitmap is incorrect */ #define GRIB_WRONG_BITMAP_SIZE -66 +/** Functionality not enabled */ +#define GRIB_FUNCTIONALITY_NOT_ENABLED -67 /*! @}*/ #endif diff --git a/python/gribapi/errors.py b/python/gribapi/errors.py index 4bf949787..1e51b4b17 100644 --- a/python/gribapi/errors.py +++ b/python/gribapi/errors.py @@ -25,6 +25,8 @@ class GribInternalError(Exception): return self.msg +class FunctionalityNotEnabledError(GribInternalError): + """Functionality not enabled.""" class WrongBitmapSizeError(GribInternalError): """Size of bitmap is incorrect.""" class OutOfRangeError(GribInternalError): @@ -159,6 +161,7 @@ class EndOfFileError(GribInternalError): """End of resource reached.""" ERROR_MAP = { + -67 : FunctionalityNotEnabledError, -66 : WrongBitmapSizeError, -65 : OutOfRangeError, -64 : UnsupportedEditionError, diff --git a/python/swig_wrap_numpy.c b/python/swig_wrap_numpy.c index dd5d0510e..00f2e24ea 100644 --- a/python/swig_wrap_numpy.c +++ b/python/swig_wrap_numpy.c @@ -9873,6 +9873,7 @@ SWIG_init(void) { SWIG_Python_SetConstant(d, "GRIB_UNSUPPORTED_EDITION",SWIG_From_int((int)(-64))); SWIG_Python_SetConstant(d, "GRIB_OUT_OF_RANGE",SWIG_From_int((int)(-65))); SWIG_Python_SetConstant(d, "GRIB_WRONG_BITMAP_SIZE",SWIG_From_int((int)(-66))); + SWIG_Python_SetConstant(d, "GRIB_FUNCTIONALITY_NOT_ENABLED",SWIG_From_int((int)(-67))); import_array(); diff --git a/python/swig_wrap_numpy.py b/python/swig_wrap_numpy.py index 411433758..252024eec 100644 --- a/python/swig_wrap_numpy.py +++ b/python/swig_wrap_numpy.py @@ -141,6 +141,7 @@ GRIB_ATTRIBUTE_NOT_FOUND = _gribapi_swig.GRIB_ATTRIBUTE_NOT_FOUND GRIB_UNSUPPORTED_EDITION = _gribapi_swig.GRIB_UNSUPPORTED_EDITION GRIB_OUT_OF_RANGE = _gribapi_swig.GRIB_OUT_OF_RANGE GRIB_WRONG_BITMAP_SIZE = _gribapi_swig.GRIB_WRONG_BITMAP_SIZE +GRIB_FUNCTIONALITY_NOT_ENABLED = _gribapi_swig.GRIB_FUNCTIONALITY_NOT_ENABLED class intp(_object): __swig_setmethods__ = {} __setattr__ = lambda self, name, value: _swig_setattr(self, intp, name, value) diff --git a/src/eccodes.h b/src/eccodes.h index 40c4c564e..a1e75ad99 100644 --- a/src/eccodes.h +++ b/src/eccodes.h @@ -1402,5 +1402,7 @@ Error codes returned by the eccodes functions. #define CODES_OUT_OF_RANGE GRIB_OUT_OF_RANGE /** Size of bitmap is incorrect */ #define CODES_WRONG_BITMAP_SIZE GRIB_WRONG_BITMAP_SIZE +/** Functionality not enabled */ +#define CODES_FUNCTIONALITY_NOT_ENABLED GRIB_FUNCTIONALITY_NOT_ENABLED /*! @}*/ #endif diff --git a/src/grib_accessor_class_data_ccsds_packing.c b/src/grib_accessor_class_data_ccsds_packing.c index 472bf1b75..2df0b5f6c 100644 --- a/src/grib_accessor_class_data_ccsds_packing.c +++ b/src/grib_accessor_class_data_ccsds_packing.c @@ -527,7 +527,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len) grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_data_ccsds_packing: CCSDS support not enabled. " "Please rebuild with -DENABLE_AEC=ON"); - return GRIB_NOT_IMPLEMENTED; + return GRIB_FUNCTIONALITY_NOT_ENABLED; } static int pack_double(grib_accessor* a, const double* val, size_t *len) @@ -535,7 +535,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len) grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_data_ccsds_packing: CCSDS support not enabled. " "Please rebuild with -DENABLE_AEC=ON"); - return GRIB_NOT_IMPLEMENTED; + return GRIB_FUNCTIONALITY_NOT_ENABLED; } #endif diff --git a/src/grib_accessor_class_data_jpeg2000_packing.c b/src/grib_accessor_class_data_jpeg2000_packing.c index 787c89a77..6cfe30c0b 100644 --- a/src/grib_accessor_class_data_jpeg2000_packing.c +++ b/src/grib_accessor_class_data_jpeg2000_packing.c @@ -556,13 +556,13 @@ cleanup: static int unpack_double(grib_accessor* a, double* val, size_t *len) { grib_context_log(a->context, GRIB_LOG_ERROR, "JPEG support not enabled."); - return GRIB_NOT_IMPLEMENTED; + return GRIB_FUNCTIONALITY_NOT_ENABLED; } static int pack_double(grib_accessor* a, const double* val, size_t *len) { grib_context_log(a->context, GRIB_LOG_ERROR, "JPEG support not enabled."); - return GRIB_NOT_IMPLEMENTED; + return GRIB_FUNCTIONALITY_NOT_ENABLED; } #endif diff --git a/src/grib_accessor_class_data_png_packing.c b/src/grib_accessor_class_data_png_packing.c index ff4ab16e2..6c9a01e6a 100644 --- a/src/grib_accessor_class_data_png_packing.c +++ b/src/grib_accessor_class_data_png_packing.c @@ -665,7 +665,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len) grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_data_png_packing: PNG support not enabled. " "Please rebuild with -DENABLE_PNG=ON"); - return GRIB_NOT_IMPLEMENTED; + return GRIB_FUNCTIONALITY_NOT_ENABLED; } static int pack_double(grib_accessor* a, const double* val, size_t *len) @@ -673,7 +673,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len) grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_data_png_packing: PNG support not enabled. " "Please rebuild with -DENABLE_PNG=ON"); - return GRIB_NOT_IMPLEMENTED; + return GRIB_FUNCTIONALITY_NOT_ENABLED; } #endif diff --git a/src/grib_api.h b/src/grib_api.h index 4e9377d03..7e4571da4 100644 --- a/src/grib_api.h +++ b/src/grib_api.h @@ -1706,5 +1706,7 @@ Error codes returned by the grib_api functions. #define GRIB_OUT_OF_RANGE -65 /** Size of bitmap is incorrect */ #define GRIB_WRONG_BITMAP_SIZE -66 +/** Functionality not enabled */ +#define GRIB_FUNCTIONALITY_NOT_ENABLED -67 /*! @}*/ #endif diff --git a/src/grib_errors.c b/src/grib_errors.c index d6b7c5952..62dfbc8e8 100644 --- a/src/grib_errors.c +++ b/src/grib_errors.c @@ -70,6 +70,7 @@ static const char *errors[] = { "Edition not supported.", /* -64 GRIB_UNSUPPORTED_EDITION */ "Value out of coding range", /* -65 GRIB_OUT_OF_RANGE */ "Size of bitmap is incorrect", /* -66 GRIB_WRONG_BITMAP_SIZE */ +"Functionality not enabled", /* -67 GRIB_FUNCTIONALITY_NOT_ENABLED */ "Value mismatch", /* 1 GRIB_VALUE_MISMATCH */ "double values are different", /* 2 GRIB_DOUBLE_VALUE_MISMATCH */ "long values are different", /* 3 GRIB_LONG_VALUE_MISMATCH */ @@ -89,27 +90,27 @@ static const char *errors[] = { const char* grib_get_error_message(int code) { - code = -code; - if (code < 0 || code >= NUMBER(errors)) { - static char mess[64]; - sprintf(mess,"Unknown error %d",code); - return mess; - } - return errors[code]; + code = -code; + if (code < 0 || code >= NUMBER(errors)) { + static char mess[64]; + sprintf(mess,"Unknown error %d",code); + return mess; + } + return errors[code]; } void grib_check(const char* call, const char* file, int line, int e, const char* msg) { - grib_context* c=grib_context_get_default(); - if (e) { - if (file) { - fprintf(stderr,"%s at line %d: %s failed: %s", - file,line, call,grib_get_error_message(e)); - if (msg) fprintf(stderr," (%s)",msg); - printf("\n"); - } else { - grib_context_log(c,GRIB_LOG_ERROR,"%s",grib_get_error_message(e)); - } - exit(e); - } + grib_context* c=grib_context_get_default(); + if (e) { + if (file) { + fprintf(stderr,"%s at line %d: %s failed: %s", + file,line, call,grib_get_error_message(e)); + if (msg) fprintf(stderr," (%s)",msg); + printf("\n"); + } else { + grib_context_log(c,GRIB_LOG_ERROR,"%s",grib_get_error_message(e)); + } + exit(e); + } } diff --git a/src/grib_errors.txt b/src/grib_errors.txt index 28616a023..c9e4ccb18 100644 --- a/src/grib_errors.txt +++ b/src/grib_errors.txt @@ -48,27 +48,28 @@ GRIB_END End of resource GRIB_NO_VALUES Unable to code a field without values GRIB_WRONG_GRID Grid description is wrong or inconsistent GRIB_END_OF_INDEX End of index reached -GRIB_NULL_INDEX Null index +GRIB_NULL_INDEX Null index /* Even more errors */ GRIB_PREMATURE_END_OF_FILE End of resource reached when reading message GRIB_INTERNAL_ARRAY_TOO_SMALL An internal array is too small GRIB_MESSAGE_TOO_LARGE Message is too large for the current architecture GRIB_CONSTANT_FIELD Constant field GRIB_SWITCH_NO_MATCH Switch unable to find a matching case -GRIB_UNDERFLOW Underflow +GRIB_UNDERFLOW Underflow GRIB_MESSAGE_MALFORMED Message malformed GRIB_CORRUPTED_INDEX Index is corrupted GRIB_INVALID_BPV Invalid number of bits per value -GRIB_DIFFERENT_EDITION Edition of two messages is different +GRIB_DIFFERENT_EDITION Edition of two messages is different GRIB_VALUE_DIFFERENT Value is different -GRIB_INVALID_KEY_VALUE Invalid key value -GRIB_STRING_TOO_SMALL String is smaller than requested -GRIB_WRONG_CONVERSION Wrong type conversion -GRIB_MISSING_BUFR_ENTRY Missing BUFR table entry for descriptor -GRIB_NULL_POINTER Null pointer -GRIB_ATTRIBUTE_CLASH Attribute is already present, cannot add -GRIB_TOO_MANY_ATTRIBUTES Too many attributes. Increase MAX_ACCESSOR_ATTRIBUTES -GRIB_ATTRIBUTE_NOT_FOUND Attribute not found. -GRIB_UNSUPPORTED_EDITION Edition not supported. -GRIB_OUT_OF_RANGE Value out of coding range -GRIB_WRONG_BITMAP_SIZE Size of bitmap is incorrect +GRIB_INVALID_KEY_VALUE Invalid key value +GRIB_STRING_TOO_SMALL String is smaller than requested +GRIB_WRONG_CONVERSION Wrong type conversion +GRIB_MISSING_BUFR_ENTRY Missing BUFR table entry for descriptor +GRIB_NULL_POINTER Null pointer +GRIB_ATTRIBUTE_CLASH Attribute is already present, cannot add +GRIB_TOO_MANY_ATTRIBUTES Too many attributes. Increase MAX_ACCESSOR_ATTRIBUTES +GRIB_ATTRIBUTE_NOT_FOUND Attribute not found. +GRIB_UNSUPPORTED_EDITION Edition not supported. +GRIB_OUT_OF_RANGE Value out of coding range +GRIB_WRONG_BITMAP_SIZE Size of bitmap is incorrect +GRIB_FUNCTIONALITY_NOT_ENABLED Functionality not enabled diff --git a/src/grib_jasper_encoding.c b/src/grib_jasper_encoding.c index f51846535..a3de941c6 100644 --- a/src/grib_jasper_encoding.c +++ b/src/grib_jasper_encoding.c @@ -217,14 +217,14 @@ int grib_jasper_decode(grib_context *c, unsigned char *buf, size_t *buflen, doub { grib_context_log(c, GRIB_LOG_ERROR, "grib_accessor_data_jpeg2000_packing: Jasper JPEG support not enabled."); - return GRIB_NOT_IMPLEMENTED; + return GRIB_FUNCTIONALITY_NOT_ENABLED; } int grib_jasper_encode(grib_context *c, j2k_encode_helper *helper) { grib_context_log(c, GRIB_LOG_ERROR, "grib_accessor_data_jpeg2000_packing: Jasper JPEG support not enabled."); - return GRIB_NOT_IMPLEMENTED; + return GRIB_FUNCTIONALITY_NOT_ENABLED; } #endif diff --git a/src/grib_openjpeg_encoding.c b/src/grib_openjpeg_encoding.c index 03c45834a..b92e7ce1f 100644 --- a/src/grib_openjpeg_encoding.c +++ b/src/grib_openjpeg_encoding.c @@ -535,13 +535,13 @@ cleanup: int grib_openjpeg_decode(grib_context *c, unsigned char *buf, size_t *buflen, double *val, size_t *n_vals) { grib_context_log(c, GRIB_LOG_ERROR, "grib_openjpeg_encoding.c: OpenJPEG JPEG support not enabled."); - return GRIB_NOT_IMPLEMENTED; + return GRIB_FUNCTIONALITY_NOT_ENABLED; } int grib_openjpeg_encode(grib_context *c, j2k_encode_helper *helper) { grib_context_log(c, GRIB_LOG_ERROR, "grib_openjpeg_encoding.c: OpenJPEG JPEG support not enabled."); - return GRIB_NOT_IMPLEMENTED; + return GRIB_FUNCTIONALITY_NOT_ENABLED; } #endif From b8957ba306ac7d711784767bd92ee7aa87b8ea0c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 15 Aug 2019 16:45:14 +0100 Subject: [PATCH 396/414] grib_accessor_classes_hash declared static --- src/grib_accessor_classes_hash.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/grib_accessor_classes_hash.c b/src/grib_accessor_classes_hash.c index 741451b2d..0d094e8e2 100644 --- a/src/grib_accessor_classes_hash.c +++ b/src/grib_accessor_classes_hash.c @@ -678,7 +678,7 @@ static const struct accessor_class_hash classes[] = {"reference_value_error", &grib_accessor_class_reference_value_error} }; -const struct accessor_class_hash * +static const struct accessor_class_hash * grib_accessor_classes_hash (const char *str, unsigned int len) { register const int key = grib_accessor_classes_get_id (str, len); From 068cf9188742197c0fb7412ecfe7f76795cacc60 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 15 Aug 2019 18:40:17 +0100 Subject: [PATCH 397/414] Help message --- tools/bufr_dump.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/bufr_dump.c b/tools/bufr_dump.c index 9e9af431f..f92c18059 100644 --- a/tools/bufr_dump.c +++ b/tools/bufr_dump.c @@ -22,14 +22,14 @@ grib_option grib_options[]={ "\n\t\tDefault mode is structure.\n", 1,1,"s"}, {"D:","filter|fortran|python|C","\n\t\tDecoding dump. Provides instructions to decode the input message." - "\n\t\tOptions: filter -> filter instructions file to decode input BUFR" + "\n\t\tOptions: filter -> filter instructions file to decode input BUFR (for bufr_filter)" "\n\t\t fortran -> fortran program to decode the input BUFR" "\n\t\t python -> python script to decode the input BUFR" "\n\t\t C -> C program to decode the input BUFR" "\n\t\tDefault mode is filter.\n", 0,1,"filter"}, {"E:","filter|fortran|python|C","\n\t\tEncoding dump. Provides instructions to create the input message." - "\n\t\tOptions: filter -> filter instructions file to encode input BUFR" + "\n\t\tOptions: filter -> filter instructions file to encode input BUFR (for bufr_filter)" "\n\t\t fortran -> fortran program to encode the input BUFR" "\n\t\t python -> python script to encode the input BUFR" "\n\t\t C -> C program to encode the input BUFR" From 071ebde8902b3a9a035e79a99af4b2b72a8c0981 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 16 Aug 2019 12:31:31 +0100 Subject: [PATCH 398/414] Performance: Reduce num calls to grib_handle_of_accessor --- src/grib_accessor_class_bits.c | 13 ++++---- src/grib_accessor_class_data_sh_packed.c | 34 ++++++++++---------- src/grib_accessor_class_data_sh_unpacked.c | 27 ++++++++-------- src/grib_accessor_class_g1date.c | 36 ++++++++++++---------- src/grib_accessor_class_number_of_values.c | 14 +++++---- src/grib_accessor_class_smart_table.c | 17 +++++----- src/grib_accessor_class_time.c | 23 +++++++------- 7 files changed, 87 insertions(+), 77 deletions(-) diff --git a/src/grib_accessor_class_bits.c b/src/grib_accessor_class_bits.c index f325a6b98..686e785c8 100644 --- a/src/grib_accessor_class_bits.c +++ b/src/grib_accessor_class_bits.c @@ -157,22 +157,23 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* c) { grib_accessor_bits* self = (grib_accessor_bits*)a; + grib_handle* hand = grib_handle_of_accessor(a); grib_expression* e=NULL; int n = 0; - self->argument = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->start = grib_arguments_get_long(grib_handle_of_accessor(a),c,n++); - self->len = grib_arguments_get_long(grib_handle_of_accessor(a),c,n++); - e=grib_arguments_get_expression(grib_handle_of_accessor(a),c,n++); + self->argument = grib_arguments_get_name(hand,c,n++); + self->start = grib_arguments_get_long(hand,c,n++); + self->len = grib_arguments_get_long(hand,c,n++); + e=grib_arguments_get_expression(hand,c,n++); if (e) { - grib_expression_evaluate_double(grib_handle_of_accessor(a),e,&(self->referenceValue)); + grib_expression_evaluate_double(hand,e,&(self->referenceValue)); self->referenceValuePresent=1; } else { self->referenceValuePresent=0; } self->scale = 1; if (self->referenceValuePresent) { - self->scale=grib_arguments_get_double(grib_handle_of_accessor(a),c,n++); + self->scale=grib_arguments_get_double(hand,c,n++); } Assert(self->len <= sizeof(long)*8); diff --git a/src/grib_accessor_class_data_sh_packed.c b/src/grib_accessor_class_data_sh_packed.c index 6c3374809..69debd20e 100644 --- a/src/grib_accessor_class_data_sh_packed.c +++ b/src/grib_accessor_class_data_sh_packed.c @@ -173,17 +173,18 @@ typedef double (*decode_float_proc)(unsigned long); static void init(grib_accessor* a,const long v, grib_arguments* args) { grib_accessor_data_sh_packed *self =(grib_accessor_data_sh_packed*)a; + grib_handle* hand = grib_handle_of_accessor(a); - self->GRIBEX_sh_bug_present = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->ieee_floats = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->laplacianOperatorIsSet = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->laplacianOperator = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->sub_j = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->sub_k = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->sub_m = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->pen_j = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->pen_k = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->pen_m = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); + self->GRIBEX_sh_bug_present = grib_arguments_get_name(hand,args,self->carg++); + self->ieee_floats = grib_arguments_get_name(hand,args,self->carg++); + self->laplacianOperatorIsSet = grib_arguments_get_name(hand,args,self->carg++); + self->laplacianOperator = grib_arguments_get_name(hand,args,self->carg++); + self->sub_j = grib_arguments_get_name(hand,args,self->carg++); + self->sub_k = grib_arguments_get_name(hand,args,self->carg++); + self->sub_m = grib_arguments_get_name(hand,args,self->carg++); + self->pen_j = grib_arguments_get_name(hand,args,self->carg++); + self->pen_k = grib_arguments_get_name(hand,args,self->carg++); + self->pen_m = grib_arguments_get_name(hand,args,self->carg++); a->flags |= GRIB_ACCESSOR_FLAG_DATA; a->length=0; @@ -192,6 +193,7 @@ static void init(grib_accessor* a,const long v, grib_arguments* args) static int value_count(grib_accessor* a,long* count) { grib_accessor_data_sh_packed *self =(grib_accessor_data_sh_packed*)a; + grib_handle* hand = grib_handle_of_accessor(a); int ret = 0; long sub_j= 0; @@ -201,18 +203,18 @@ static int value_count(grib_accessor* a,long* count) long pen_k= 0; long pen_m= 0; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_j,&sub_j)) != GRIB_SUCCESS) + if((ret = grib_get_long_internal(hand,self->sub_j,&sub_j)) != GRIB_SUCCESS) return ret; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_k,&sub_k)) != GRIB_SUCCESS) + if((ret = grib_get_long_internal(hand,self->sub_k,&sub_k)) != GRIB_SUCCESS) return ret; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_m,&sub_m)) != GRIB_SUCCESS) + if((ret = grib_get_long_internal(hand,self->sub_m,&sub_m)) != GRIB_SUCCESS) return ret; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->pen_j,&pen_j)) != GRIB_SUCCESS) + if((ret = grib_get_long_internal(hand,self->pen_j,&pen_j)) != GRIB_SUCCESS) return ret; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->pen_k,&pen_k)) != GRIB_SUCCESS) + if((ret = grib_get_long_internal(hand,self->pen_k,&pen_k)) != GRIB_SUCCESS) return ret; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->pen_m,&pen_m)) != GRIB_SUCCESS) + if((ret = grib_get_long_internal(hand,self->pen_m,&pen_m)) != GRIB_SUCCESS) return ret; if (pen_j != pen_k || pen_j!=pen_m ) { diff --git a/src/grib_accessor_class_data_sh_unpacked.c b/src/grib_accessor_class_data_sh_unpacked.c index f11265863..2bceb51f3 100644 --- a/src/grib_accessor_class_data_sh_unpacked.c +++ b/src/grib_accessor_class_data_sh_unpacked.c @@ -172,21 +172,22 @@ typedef double (*decode_float_proc)(unsigned long); static void init(grib_accessor* a,const long v, grib_arguments* args) { - grib_accessor_data_sh_unpacked *self =(grib_accessor_data_sh_unpacked*)a; + grib_accessor_data_sh_unpacked *self =(grib_accessor_data_sh_unpacked*)a; + grib_handle* hand = grib_handle_of_accessor(a); - self->GRIBEX_sh_bug_present = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->ieee_floats = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->laplacianOperatorIsSet = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->laplacianOperator = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->sub_j = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->sub_k = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->sub_m = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->pen_j = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->pen_k = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->pen_m = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); + self->GRIBEX_sh_bug_present = grib_arguments_get_name(hand,args,self->carg++); + self->ieee_floats = grib_arguments_get_name(hand,args,self->carg++); + self->laplacianOperatorIsSet = grib_arguments_get_name(hand,args,self->carg++); + self->laplacianOperator = grib_arguments_get_name(hand,args,self->carg++); + self->sub_j = grib_arguments_get_name(hand,args,self->carg++); + self->sub_k = grib_arguments_get_name(hand,args,self->carg++); + self->sub_m = grib_arguments_get_name(hand,args,self->carg++); + self->pen_j = grib_arguments_get_name(hand,args,self->carg++); + self->pen_k = grib_arguments_get_name(hand,args,self->carg++); + self->pen_m = grib_arguments_get_name(hand,args,self->carg++); - a->flags |= GRIB_ACCESSOR_FLAG_DATA; - a->length=0; + a->flags |= GRIB_ACCESSOR_FLAG_DATA; + a->length=0; } diff --git a/src/grib_accessor_class_g1date.c b/src/grib_accessor_class_g1date.c index 9f27b6a59..8de6c42db 100644 --- a/src/grib_accessor_class_g1date.c +++ b/src/grib_accessor_class_g1date.c @@ -144,12 +144,13 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* c) { grib_accessor_g1date* self = (grib_accessor_g1date*)a; + grib_handle* hand = grib_handle_of_accessor(a); int n = 0; - self->century = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->year = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->month = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->day = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->century = grib_arguments_get_name(hand,c,n++); + self->year = grib_arguments_get_name(hand,c,n++); + self->month = grib_arguments_get_name(hand,c,n++); + self->day = grib_arguments_get_name(hand,c,n++); } static void dump(grib_accessor* a, grib_dumper* dumper) @@ -161,19 +162,20 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len) { int ret=0; grib_accessor_g1date* self = (grib_accessor_g1date*)a; + grib_handle* hand = grib_handle_of_accessor(a); long year = 0; long century = 0; long month = 0; long day = 0; - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->century,¢ury))!=GRIB_SUCCESS) + if ((ret=grib_get_long_internal(hand, self->century,¢ury))!=GRIB_SUCCESS) return ret; - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->day,&day))!=GRIB_SUCCESS) + if ((ret=grib_get_long_internal(hand, self->day,&day))!=GRIB_SUCCESS) return ret; - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->month,&month))!=GRIB_SUCCESS) + if ((ret=grib_get_long_internal(hand, self->month,&month))!=GRIB_SUCCESS) return ret; - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->year,&year))!=GRIB_SUCCESS) + if ((ret=grib_get_long_internal(hand, self->year,&year))!=GRIB_SUCCESS) return ret; if(*len < 1) @@ -199,6 +201,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len) int ret=0; long v = val[0]; grib_accessor_g1date* self = (grib_accessor_g1date*)a; + grib_handle* hand = grib_handle_of_accessor(a); long year = 0; long century = 0; @@ -227,13 +230,13 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len) else century++; - if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->century,century))!=GRIB_SUCCESS) + if ((ret=grib_set_long_internal(hand,self->century,century))!=GRIB_SUCCESS) return ret; - if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->day,day))!=GRIB_SUCCESS) + if ((ret=grib_set_long_internal(hand,self->day,day))!=GRIB_SUCCESS) return ret; - if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->month,month))!=GRIB_SUCCESS) + if ((ret=grib_set_long_internal(hand,self->month,month))!=GRIB_SUCCESS) return ret; - if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->year,year))!=GRIB_SUCCESS) + if ((ret=grib_set_long_internal(hand,self->year,year))!=GRIB_SUCCESS) return ret; return GRIB_SUCCESS; @@ -250,19 +253,20 @@ static int unpack_string(grib_accessor* a, char* val, size_t *len) int ret=0; char tmp[1024]; grib_accessor_g1date* self = (grib_accessor_g1date*)a; + grib_handle* hand = grib_handle_of_accessor(a); long year = 0; long century = 0; long month = 0; long day = 0; size_t l; - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->century,¢ury))!=GRIB_SUCCESS) + if ((ret=grib_get_long_internal(hand, self->century,¢ury))!=GRIB_SUCCESS) return ret; - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->day,&day))!=GRIB_SUCCESS) + if ((ret=grib_get_long_internal(hand, self->day,&day))!=GRIB_SUCCESS) return ret; - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->month,&month))!=GRIB_SUCCESS) + if ((ret=grib_get_long_internal(hand, self->month,&month))!=GRIB_SUCCESS) return ret; - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->year,&year))!=GRIB_SUCCESS) + if ((ret=grib_get_long_internal(hand, self->year,&year))!=GRIB_SUCCESS) return ret; if(*len < 1) diff --git a/src/grib_accessor_class_number_of_values.c b/src/grib_accessor_class_number_of_values.c index 23d9d2a85..352f6421a 100644 --- a/src/grib_accessor_class_number_of_values.c +++ b/src/grib_accessor_class_number_of_values.c @@ -147,12 +147,14 @@ static void init(grib_accessor* a,const long l, grib_arguments* c) { int n=0; grib_accessor_number_of_values* self = (grib_accessor_number_of_values*)a; - self->values = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->bitsPerValue = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->numberOfPoints = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->bitmapPresent = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->bitmap = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->numberOfCodedValues = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + grib_handle* hand = grib_handle_of_accessor(a); + + self->values = grib_arguments_get_name(hand,c,n++); + self->bitsPerValue = grib_arguments_get_name(hand,c,n++); + self->numberOfPoints = grib_arguments_get_name(hand,c,n++); + self->bitmapPresent = grib_arguments_get_name(hand,c,n++); + self->bitmap = grib_arguments_get_name(hand,c,n++); + self->numberOfCodedValues = grib_arguments_get_name(hand,c,n++); a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; a->length=0; diff --git a/src/grib_accessor_class_smart_table.c b/src/grib_accessor_class_smart_table.c index 7d620a227..8c7da3673 100644 --- a/src/grib_accessor_class_smart_table.c +++ b/src/grib_accessor_class_smart_table.c @@ -195,14 +195,15 @@ static void init(grib_accessor* a, const long len, grib_arguments* params) { int n=0; grib_accessor_smart_table* self = (grib_accessor_smart_table*)a; + grib_handle* hand = grib_handle_of_accessor(a); - self->values = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++); - self->tablename = grib_arguments_get_string(grib_handle_of_accessor(a),params,n++); - self->masterDir = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++); - self->localDir = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++); - self->widthOfCode = grib_arguments_get_long(grib_handle_of_accessor(a),params,n++); - self->extraDir = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++); - self->extraTable = grib_arguments_get_string(grib_handle_of_accessor(a),params,n++); + self->values = grib_arguments_get_name(hand,params,n++); + self->tablename = grib_arguments_get_string(hand,params,n++); + self->masterDir = grib_arguments_get_name(hand,params,n++); + self->localDir = grib_arguments_get_name(hand,params,n++); + self->widthOfCode = grib_arguments_get_long(hand,params,n++); + self->extraDir = grib_arguments_get_name(hand,params,n++); + self->extraTable = grib_arguments_get_string(hand,params,n++); a->length = 0; a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; @@ -557,5 +558,3 @@ static int unpack_long (grib_accessor* a, long* val, size_t *len) return err; } - - diff --git a/src/grib_accessor_class_time.c b/src/grib_accessor_class_time.c index 0d79ed3a3..788d0274b 100644 --- a/src/grib_accessor_class_time.c +++ b/src/grib_accessor_class_time.c @@ -139,11 +139,12 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* c) { grib_accessor_time* self = (grib_accessor_time*)a; + grib_handle* hand = grib_handle_of_accessor(a); int n = 0; - self->hour = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->minute = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->second = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->hour = grib_arguments_get_name(hand,c,n++); + self->minute = grib_arguments_get_name(hand,c,n++); + self->second = grib_arguments_get_name(hand,c,n++); } static void dump(grib_accessor* a, grib_dumper* dumper) @@ -155,16 +156,16 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len) { int ret=0; grib_accessor_time* self = (grib_accessor_time*)a; - long hour = 0; long minute = 0; long second = 0; + grib_handle* hand = grib_handle_of_accessor(a); - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->hour,&hour))!=GRIB_SUCCESS) + if ((ret=grib_get_long_internal(hand, self->hour,&hour))!=GRIB_SUCCESS) return ret; - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->minute,&minute))!=GRIB_SUCCESS) + if ((ret=grib_get_long_internal(hand, self->minute,&minute))!=GRIB_SUCCESS) return ret; - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->second,&second))!=GRIB_SUCCESS) + if ((ret=grib_get_long_internal(hand, self->second,&second))!=GRIB_SUCCESS) return ret; /* We ignore the 'seconds' in our time calculation! */ @@ -194,7 +195,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len) int ret=0; long v = val[0]; grib_accessor_time* self = (grib_accessor_time*)a; - + grib_handle* hand = grib_handle_of_accessor(a); long hour = 0; long minute = 0; long second = 0; @@ -206,11 +207,11 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len) minute = v % 100; second = 0; /* We ignore the 'seconds' in our time calculation! */ - if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->hour,hour))!=GRIB_SUCCESS) + if ((ret=grib_set_long_internal(hand,self->hour,hour))!=GRIB_SUCCESS) return ret; - if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->minute,minute))!=GRIB_SUCCESS) + if ((ret=grib_set_long_internal(hand,self->minute,minute))!=GRIB_SUCCESS) return ret; - if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->second,second))!=GRIB_SUCCESS) + if ((ret=grib_set_long_internal(hand,self->second,second))!=GRIB_SUCCESS) return ret; return GRIB_SUCCESS; From f28bbb957301f3a88c23ce357643cfb60246d8fc Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 16 Aug 2019 21:00:48 +0100 Subject: [PATCH 399/414] ECC-778: GRIB_IEEE_PACKING valgrind error --- src/grib_api_prototypes.h | 2 +- src/grib_dependency.c | 28 ++++++++++++++++++++++++++++ src/grib_value.c | 5 +++-- tests/ieee.sh | 24 ++++++++++++------------ 4 files changed, 44 insertions(+), 15 deletions(-) diff --git a/src/grib_api_prototypes.h b/src/grib_api_prototypes.h index 79d13e078..494042b1c 100644 --- a/src/grib_api_prototypes.h +++ b/src/grib_api_prototypes.h @@ -1231,7 +1231,6 @@ long grib_get_decimal_scale_fact(double max, double min, long bpval, long binary /* grib_templates.c */ grib_handle *grib_internal_template(grib_context *c, const char *name); -grib_handle *grib_internal_template(grib_context *c, const char *name); grib_handle *grib_external_template(grib_context *c, const char *name); grib_handle *bufr_external_template(grib_context *c, const char *name); char *grib_external_template_path(grib_context *c, const char *name); @@ -1240,6 +1239,7 @@ char *grib_external_template_path(grib_context *c, const char *name); grib_handle *grib_handle_of_accessor(grib_accessor *a); void grib_dependency_add(grib_accessor *observer, grib_accessor *observed); void grib_dependency_remove_observed(grib_accessor *observed); +int _grib_dependency_notify_change(grib_handle* h, grib_accessor* observed); int grib_dependency_notify_change(grib_accessor *observed); void grib_dependency_remove_observer(grib_accessor *observer); void grib_dependency_observe_expression(grib_accessor *observer, grib_expression *e); diff --git a/src/grib_dependency.c b/src/grib_dependency.c index fc730d809..736fbf4be 100644 --- a/src/grib_dependency.c +++ b/src/grib_dependency.c @@ -141,6 +141,34 @@ int grib_dependency_notify_change(grib_accessor* observed) return ret; } +/* This version takes in the handle so does not need to work it out from the 'observed' */ +/* See ECC-778 */ +int _grib_dependency_notify_change(grib_handle* h, grib_accessor* observed) +{ + grib_dependency *d = h->dependencies; + int ret = GRIB_SUCCESS; + + /*Do a two pass mark&sweep, in case some dependencies are added while we notify*/ + while(d) + { + d->run = (d->observed == observed && d->observer != 0); + d = d->next; + } + + d = h->dependencies; + while(d) + { + if(d->run) + { + /*printf("grib_dependency_notify_change %s %s %p\n",observed->name,d->observer ? d->observer->name : "?", (void*)d->observer);*/ + if( d->observer && (ret = grib_accessor_notify_change(d->observer,observed)) + != GRIB_SUCCESS) return ret; + } + d = d->next; + } + return ret; +} + void grib_dependency_remove_observer(grib_accessor* observer) { grib_handle *h = handle_of(observer); diff --git a/src/grib_value.c b/src/grib_value.c index a6655c786..c1b9e65ff 100644 --- a/src/grib_value.c +++ b/src/grib_value.c @@ -626,7 +626,8 @@ static int _grib_set_double_array_internal(grib_handle* h,grib_accessor* a, err = grib_pack_double(a, val + *encoded_length, &len); *encoded_length += len; if(err == GRIB_SUCCESS){ - return grib_dependency_notify_change(a); + /* See ECC-778 */ + return _grib_dependency_notify_change(h, a); } } else { @@ -662,7 +663,7 @@ static int _grib_set_double_array(grib_handle* h, const char* name, err = GRIB_ARRAY_TOO_SMALL; if(err == GRIB_SUCCESS) - return grib_dependency_notify_change(a); + return _grib_dependency_notify_change(h,a); /* See ECC-778 */ return err; } diff --git a/tests/ieee.sh b/tests/ieee.sh index a5831247e..12fe93179 100755 --- a/tests/ieee.sh +++ b/tests/ieee.sh @@ -43,18 +43,17 @@ ${tools_dir}/grib_set -r -s packingType=grid_ieee $outsimple $out32 ${tools_dir}/grib_filter r.filter $out32 > $out32.txt diff $out32.txt ${data_dir}/ieee_test.good -# Disabled for now. See GRIB-2 and GRIB-80 -#GRIB_IEEE_PACKING=32 -#export GRIB_IEEE_PACKING -#${tools_dir}/grib_filter -o $out32 w.filter $infile -#${tools_dir}/grib_filter r.filter $out32 > $out32.txt -#diff $out32.txt ${data_dir}/ieee_test.good +GRIB_IEEE_PACKING=32 +export GRIB_IEEE_PACKING +${tools_dir}/grib_filter -o $out32 w.filter $infile +${tools_dir}/grib_filter r.filter $out32 > $out32.txt +diff $out32.txt ${data_dir}/ieee_test.good -#GRIB_IEEE_PACKING=64 -#export GRIB_IEEE_PACKING -#${tools_dir}/grib_filter -o $out64 w.filter $infile -#${tools_dir}/grib_filter r.filter $out64 > $out64.txt -#diff $out64.txt ${data_dir}/ieee_test.good +GRIB_IEEE_PACKING=64 +export GRIB_IEEE_PACKING +${tools_dir}/grib_filter -o $out64 w.filter $infile +${tools_dir}/grib_filter r.filter $out64 > $out64.txt +diff $out64.txt ${data_dir}/ieee_test.good rm -f $outsimple $out32 $out64 $out32.txt $out64.txt rm -f ${data_dir}/$outsimple.txt ${data_dir}/$out32.txt ${data_dir}/$out64.txt @@ -68,7 +67,8 @@ ${tools_dir}/grib_filter r.filter ${shdata}_ieee > $shdata.txt diff $shdata.txt $shdata.good rm -f ${shdata}_ieee -########################## +################################## +# Disabled for now. Infinite loop #GRIB_IEEE_PACKING=32 #export GRIB_IEEE_PACKING #${tools_dir}/grib_copy -r $shdata ${shdata}_32 From f7281385ad6d91daa523fc365b1d7014c0a13b33 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 19 Aug 2019 12:53:10 +0100 Subject: [PATCH 400/414] Remove unused function etc (old template from memory) --- src/grib2c.pl | 11 ++++++++--- src/grib_api_prototypes.h | 2 +- src/grib_handle.c | 8 ++++---- src/grib_templates.c | 20 +++++++++++--------- 4 files changed, 24 insertions(+), 17 deletions(-) diff --git a/src/grib2c.pl b/src/grib2c.pl index 3b48e852d..a4abe059d 100755 --- a/src/grib2c.pl +++ b/src/grib2c.pl @@ -18,9 +18,12 @@ print OUT "/* This file is automatically generated by $0, do not edit */\n\n"; foreach $name ( @ARGV ) { - - $name =~ /(\w+)\.grib/; - my $proc = $1; + # The old assumption that the file had a .grib extension + # $name =~ /(\w+)\.grib/; + #my $proc = $1; + + my $proc = $name; + $proc =~ s/[^a-z0-9]/_/g; print "$name\n"; @@ -75,3 +78,5 @@ foreach my $k ( sort keys %entries ) print OUT "};\n\n"; close(OUT) or "die grib_templates.h: $!"; + +print "Created grib_templates.h\n"; diff --git a/src/grib_api_prototypes.h b/src/grib_api_prototypes.h index 494042b1c..3ab237701 100644 --- a/src/grib_api_prototypes.h +++ b/src/grib_api_prototypes.h @@ -1230,7 +1230,7 @@ long grib_get_bits_per_value(double max, double min, long binary_scale_factor); long grib_get_decimal_scale_fact(double max, double min, long bpval, long binary_scale); /* grib_templates.c */ -grib_handle *grib_internal_template(grib_context *c, const char *name); +/*grib_handle *grib_internal_sample(grib_context *c, const char *name);*/ grib_handle *grib_external_template(grib_context *c, const char *name); grib_handle *bufr_external_template(grib_context *c, const char *name); char *grib_external_template_path(grib_context *c, const char *name); diff --git a/src/grib_handle.c b/src/grib_handle.c index d351cde5a..44296ec99 100644 --- a/src/grib_handle.c +++ b/src/grib_handle.c @@ -257,8 +257,8 @@ grib_handle* grib_handle_new_from_samples( grib_context* c, const char* name ) grib_context_set_handle_total_count(c,0); /* - g = grib_internal_template(c,name); - if(g) return g; + * g = grib_internal_sample(c,name); + * if(g) return g; */ if (c->debug) { fprintf(stderr, "ECCODES DEBUG: grib_handle_new_from_samples '%s'\n", name); @@ -280,8 +280,8 @@ grib_handle* codes_bufr_handle_new_from_samples ( grib_context* c, const char* n grib_context_set_handle_total_count(c,0); /* - g = grib_internal_template(c,name); - if(g) return g; + * g = grib_internal_sample(c,name); + * if(g) return g; */ if (c->debug) { fprintf(stderr, "ECCODES DEBUG: grib_handle_new_from_samples '%s'\n", name); diff --git a/src/grib_templates.c b/src/grib_templates.c index cd217f96a..b50c1b090 100644 --- a/src/grib_templates.c +++ b/src/grib_templates.c @@ -14,30 +14,32 @@ # include #endif +#if 0 +/* This is a mechanism where we generate C code in grib_templates.h + * from our GRIB sample files and then include the header so one + * can instantiate samples without any disk access. + * This is now superseded by MEMFS + */ typedef struct grib_templates { const char* name; const unsigned char* data; size_t size; } grib_templates; -#if 1 #include "grib_templates.h" #define NUMBER(x) (sizeof(x)/sizeof(x[0])) -grib_handle* grib_internal_template(grib_context* c,const char* name) +grib_handle* grib_internal_sample(grib_context* c,const char* name) { - int i; - for(i = 0; i < NUMBER(templates); i++) + size_t i; + const size_t num_samples = NUMBER(templates); + Assert(0); + for(i = 0; i < num_samples; i++) if(strcmp(name,templates[i].name) == 0) return grib_handle_new_from_message_copy(c,templates[i].data,templates[i].size); return NULL; } -#else -grib_handle* grib_internal_template(grib_context* c,const char* name) -{ - return NULL; -} #endif static grib_handle* try_template(grib_context* c,const char* dir,const char* name) From 53604b8c3c2df592708da9286a40328a179809be Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 22 Aug 2019 13:24:20 +0100 Subject: [PATCH 401/414] ECC-977: GRIB2 encoding of scaledValueOfEarthMinorAxis with out-of-bounds value --- src/grib_accessor_class_unsigned.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/grib_accessor_class_unsigned.c b/src/grib_accessor_class_unsigned.c index 46644d85a..37200e0e6 100644 --- a/src/grib_accessor_class_unsigned.c +++ b/src/grib_accessor_class_unsigned.c @@ -242,8 +242,8 @@ int pack_long_unsigned_helper(grib_accessor* a, const long* val, size_t *len, in "Key \"%s\": Trying to encode a negative value of %ld for key of type unsigned\n", a->name, v); return GRIB_ENCODING_ERROR; } - if (nbits < 32) { - unsigned long maxval = (1 << nbits)-1; + if (nbits < 33) { + unsigned long maxval = (1UL << nbits)-1; if (v > maxval) { grib_context_log(a->context, GRIB_LOG_ERROR, "Key \"%s\": Trying to encode value of %ld but the maximum allowable value is %ld (number of bits=%ld)\n", From 77303fc116d7eaa8606155feacb67138a2e24ea0 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 22 Aug 2019 13:44:54 +0100 Subject: [PATCH 402/414] ECC-976: More user-friendly error when key cannot be decoded as double or long --- src/grib_accessor_class_ascii.c | 1 + src/grib_accessor_class_change_scanning_direction.c | 12 ++++++++++-- src/grib_accessor_class_gen.c | 4 ++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/grib_accessor_class_ascii.c b/src/grib_accessor_class_ascii.c index 386004548..aae484dc3 100644 --- a/src/grib_accessor_class_ascii.c +++ b/src/grib_accessor_class_ascii.c @@ -255,6 +255,7 @@ static int unpack_double (grib_accessor* a, double*v, size_t *len) return GRIB_SUCCESS; } + grib_context_log(a->context,GRIB_LOG_ERROR,"Cannot unpack %s as double",a->name); return GRIB_NOT_IMPLEMENTED; } diff --git a/src/grib_accessor_class_change_scanning_direction.c b/src/grib_accessor_class_change_scanning_direction.c index 5f1dd0ecb..3451929cc 100644 --- a/src/grib_accessor_class_change_scanning_direction.c +++ b/src/grib_accessor_class_change_scanning_direction.c @@ -20,6 +20,7 @@ CLASS = accessor SUPER = grib_accessor_class_gen IMPLEMENTS = pack_long; + IMPLEMENTS = unpack_long IMPLEMENTS = init;get_native_type MEMBERS = const char* values MEMBERS = const char* Ni @@ -45,6 +46,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int pack_long(grib_accessor*, const long* val,size_t *len); +static int unpack_long(grib_accessor*, long* val,size_t *len); static void init(grib_accessor*,const long, grib_arguments* ); static void init_class(grib_accessor_class*); @@ -84,7 +86,7 @@ static grib_accessor_class _grib_accessor_class_change_scanning_direction = { 0, /* grib_pack procedures long */ 0, /* grib_pack procedures long */ &pack_long, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ + &unpack_long, /* grib_unpack procedures long */ 0, /* grib_pack procedures double */ 0, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ @@ -122,7 +124,6 @@ static void init_class(grib_accessor_class* c) c->sub_section = (*(c->super))->sub_section; c->pack_missing = (*(c->super))->pack_missing; c->is_missing = (*(c->super))->is_missing; - c->unpack_long = (*(c->super))->unpack_long; c->pack_double = (*(c->super))->pack_double; c->unpack_double = (*(c->super))->unpack_double; c->pack_string = (*(c->super))->pack_string; @@ -258,3 +259,10 @@ static int get_native_type(grib_accessor* a) { return GRIB_TYPE_LONG; } + +static int unpack_long(grib_accessor* a, long* v, size_t *len) +{ + /* ECC-976: decoding this accessor doesn't make sense so we return a dummy value */ + *v=-1; + return GRIB_SUCCESS; +} diff --git a/src/grib_accessor_class_gen.c b/src/grib_accessor_class_gen.c index 994d997aa..d227e8db9 100644 --- a/src/grib_accessor_class_gen.c +++ b/src/grib_accessor_class_gen.c @@ -268,7 +268,6 @@ static int clear(grib_accessor* a) static int unpack_long (grib_accessor* a, long* v, size_t *len) { - if(a->cclass->unpack_double && a->cclass->unpack_double != &unpack_double) { double val = 0.0; @@ -295,12 +294,12 @@ static int unpack_long (grib_accessor* a, long* v, size_t *len) } } + grib_context_log(a->context,GRIB_LOG_ERROR,"Cannot unpack %s as long",a->name); return GRIB_NOT_IMPLEMENTED; } static int unpack_double (grib_accessor* a, double*v, size_t *len) { - if(a->cclass->unpack_long && a->cclass->unpack_long != &unpack_long) { long val = 0; @@ -327,6 +326,7 @@ static int unpack_double (grib_accessor* a, double*v, size_t *len) } } + grib_context_log(a->context,GRIB_LOG_ERROR,"Cannot unpack %s as double",a->name); return GRIB_NOT_IMPLEMENTED; } From a76e885870f5eb7049ba92c2ae2d50ed7f35e619 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 22 Aug 2019 14:31:26 +0100 Subject: [PATCH 403/414] ECC-969: GitHub contribution: codes_split_file option to split individual messages --- tools/codes_split_file.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/codes_split_file.c b/tools/codes_split_file.c index 91d770626..9b0a8a05f 100644 --- a/tools/codes_split_file.c +++ b/tools/codes_split_file.c @@ -25,7 +25,7 @@ static const char* OUTPUT_FILENAME_FORMAT = "%s_%03d"; /* x_001, x_002 etc */ static void usage(const char* prog) { printf("Usage: %s [-v] nchunks infile\n",prog); - printf("nchunks=-1, split infile into individual grib/bufr message\n"); + printf("Setting nchunks=-1 splits infile into individual messages\n"); exit(1); } @@ -79,7 +79,7 @@ static int split_file(FILE* in, const char* filename, const int nchunks, unsigne read_size+=size; msg_size+=size; if (read_size>chunk_size && msg_size < insize) { - if (verbose) printf("Wrote output file %s (%d msgs)\n", ofilename, num_msg); + if (verbose) printf("Wrote output file %s (%lu msgs)\n", ofilename, (unsigned long)num_msg); fclose(out); i++; /* Start writing to the next file */ @@ -97,7 +97,7 @@ static int split_file(FILE* in, const char* filename, const int nchunks, unsigne (*count)++; } } - if (verbose) printf("Wrote output file %s (%d msgs)\n", ofilename,num_msg-1); + if (verbose) printf("Wrote output file %s (%lu msgs)\n", ofilename, (unsigned long)num_msg-1); fclose(out); free(ofilename); @@ -127,7 +127,7 @@ int main(int argc,char* argv[]) /* add some error checking */ nchunks=atoi(argv[i]); if (nchunks<1 && nchunks!=-1) { - fprintf(stderr,"ERROR: Invalid number %d. Please specify a positive integer. or -1 for spliting each message\n", nchunks); + fprintf(stderr,"ERROR: Invalid number %d. Please specify a positive integer or -1\n", nchunks); return 1; } From 56aca6657333ded5140f04b5ae2cf547f99c5288 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 22 Aug 2019 14:51:49 +0100 Subject: [PATCH 404/414] ECC-969: clean up --- tools/codes_split_file.c | 10 +++++----- tools/codes_split_file.desc | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/tools/codes_split_file.c b/tools/codes_split_file.c index 9b0a8a05f..00166bf56 100644 --- a/tools/codes_split_file.c +++ b/tools/codes_split_file.c @@ -48,11 +48,11 @@ static int split_file(FILE* in, const char* filename, const int nchunks, unsigne fseeko(in, 0, SEEK_END); insize = ftello(in); fseeko(in, 0, SEEK_SET); - if(nchunks == -1){ - chunk_size = size; - }else{ - assert(nchunks > 0); - chunk_size=insize/nchunks; + if (nchunks == -1) { + chunk_size = size; + } else { + assert(nchunks > 0); + chunk_size=insize/nchunks; } i=1; diff --git a/tools/codes_split_file.desc b/tools/codes_split_file.desc index d7245929e..8903f5bfa 100644 --- a/tools/codes_split_file.desc +++ b/tools/codes_split_file.desc @@ -3,6 +3,7 @@ NAME codes_split_file DESCRIPTION Split an input file (GRIB, BUFR etc) into chunks of roughly the same size. The output files are named input_01, input_02 etc. This is much faster than grib_copy/bufr_copy. + If the nchunks argument is -1, then the file is split into the individual messages. USAGE codes_split_file [-v] nchunks input From 62cc82ac5286d951278c9a44e2aa4ce7bb771122 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 22 Aug 2019 16:13:53 +0100 Subject: [PATCH 405/414] ECC-976: Add hint --- src/grib_accessor_class_ascii.c | 4 +++- src/grib_accessor_class_concept.c | 11 ++++++++++- src/grib_accessor_class_gen.c | 10 +++++++++- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/grib_accessor_class_ascii.c b/src/grib_accessor_class_ascii.c index aae484dc3..6ec67e107 100644 --- a/src/grib_accessor_class_ascii.c +++ b/src/grib_accessor_class_ascii.c @@ -245,6 +245,7 @@ static int unpack_double (grib_accessor* a, double*v, size_t *len) char val[1024]; size_t l = sizeof(val); char *last = NULL; + grib_unpack_string (a , val, &l); *v = strtod(val,&last); @@ -255,7 +256,8 @@ static int unpack_double (grib_accessor* a, double*v, size_t *len) return GRIB_SUCCESS; } - grib_context_log(a->context,GRIB_LOG_ERROR,"Cannot unpack %s as double",a->name); + grib_context_log(a->context,GRIB_LOG_ERROR,"Cannot unpack %s as double. Hint: Try unpacking as string",a->name); + return GRIB_NOT_IMPLEMENTED; } diff --git a/src/grib_accessor_class_concept.c b/src/grib_accessor_class_concept.c index 37ccd7c93..bfe681ed1 100644 --- a/src/grib_accessor_class_concept.c +++ b/src/grib_accessor_class_concept.c @@ -463,6 +463,7 @@ static long get_ECMWF_local_paramId(grib_accessor* a, grib_handle* h) static int unpack_long(grib_accessor* a, long* val, size_t *len) { + char *endptr; const char *p = concept_evaluate(a); if(!p) { @@ -480,8 +481,16 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len) return GRIB_NOT_FOUND; } - *val = atol(p); *len = 1; + *val = strtol(p, &endptr, 10); + if (endptr == p) { + int type = GRIB_TYPE_UNDEFINED; + grib_context_log(a->context,GRIB_LOG_ERROR,"Cannot unpack %s as long",a->name); + if (grib_get_native_type(grib_handle_of_accessor(a), a->name, &type) == GRIB_SUCCESS) { + grib_context_log(a->context,GRIB_LOG_ERROR,"Hint: Try unpacking as %s", grib_get_type_name(type)); + } + return GRIB_DECODING_ERROR; + } return GRIB_SUCCESS; } diff --git a/src/grib_accessor_class_gen.c b/src/grib_accessor_class_gen.c index d227e8db9..92c5c2a8e 100644 --- a/src/grib_accessor_class_gen.c +++ b/src/grib_accessor_class_gen.c @@ -268,6 +268,7 @@ static int clear(grib_accessor* a) static int unpack_long (grib_accessor* a, long* v, size_t *len) { + int type = GRIB_TYPE_UNDEFINED; if(a->cclass->unpack_double && a->cclass->unpack_double != &unpack_double) { double val = 0.0; @@ -295,11 +296,15 @@ static int unpack_long (grib_accessor* a, long* v, size_t *len) } grib_context_log(a->context,GRIB_LOG_ERROR,"Cannot unpack %s as long",a->name); + if (grib_get_native_type(grib_handle_of_accessor(a), a->name, &type) == GRIB_SUCCESS) { + grib_context_log(a->context,GRIB_LOG_ERROR,"Hint: Try unpacking as %s", grib_get_type_name(type)); + } return GRIB_NOT_IMPLEMENTED; } static int unpack_double (grib_accessor* a, double*v, size_t *len) { + int type = GRIB_TYPE_UNDEFINED; if(a->cclass->unpack_long && a->cclass->unpack_long != &unpack_long) { long val = 0; @@ -327,12 +332,15 @@ static int unpack_double (grib_accessor* a, double*v, size_t *len) } grib_context_log(a->context,GRIB_LOG_ERROR,"Cannot unpack %s as double",a->name); + if (grib_get_native_type(grib_handle_of_accessor(a), a->name, &type) == GRIB_SUCCESS) { + grib_context_log(a->context,GRIB_LOG_ERROR,"Hint: Try unpacking as %s", grib_get_type_name(type)); + } + return GRIB_NOT_IMPLEMENTED; } static int unpack_string(grib_accessor*a , char* v, size_t *len) { - if(a->cclass->unpack_double && a->cclass->unpack_double != &unpack_double) { double val = 0.0; From c6c0f831bc52c8c9f13b4a8f14bc2ab8d927851a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 22 Aug 2019 16:43:20 +0100 Subject: [PATCH 406/414] ECC-978: BUFR key section1Padding: bufr_dump -O gives erroneous length=4 instead of 5 --- definitions/bufr/section.1.3.def | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/definitions/bufr/section.1.3.def b/definitions/bufr/section.1.3.def index fae33dfc9..d90232fa5 100644 --- a/definitions/bufr/section.1.3.def +++ b/definitions/bufr/section.1.3.def @@ -26,7 +26,7 @@ unsigned[1] typicalMonth : dump; unsigned[1] typicalDay : dump; unsigned[1] typicalHour : dump; unsigned[1] typicalMinute : dump; -unsigned[1] spare; # ??? +# unsigned[1] spare; # See ECC-978 transient typicalSecond=0; meta ls.typicalDate sprintf("%.4d%.2d%.2d",typicalYear,typicalMonth,typicalDay) : dump,no_copy,read_only; From 20ea673a21e4ec7c1b6a24ca6b2c69e4f5ae300d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 23 Aug 2019 12:10:45 +0100 Subject: [PATCH 407/414] Indentation --- src/grib_accessor_class_ifs_param.c | 121 ++++++++++++++-------------- 1 file changed, 59 insertions(+), 62 deletions(-) diff --git a/src/grib_accessor_class_ifs_param.c b/src/grib_accessor_class_ifs_param.c index 44e593eef..f17cf6a31 100644 --- a/src/grib_accessor_class_ifs_param.c +++ b/src/grib_accessor_class_ifs_param.c @@ -138,82 +138,79 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* c) { - grib_accessor_ifs_param* self = (grib_accessor_ifs_param*)a; - int n = 0; - - self->paramId = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->type = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + grib_accessor_ifs_param* self = (grib_accessor_ifs_param*)a; + int n = 0; + self->paramId = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->type = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); } -static int unpack_long (grib_accessor* a, long* val, size_t *len) +static int unpack_long(grib_accessor* a, long* val, size_t *len) { - grib_accessor_ifs_param* self = (grib_accessor_ifs_param*)a; - int ret = 0; - long paramId = 0; + grib_accessor_ifs_param* self = (grib_accessor_ifs_param*)a; + int ret = 0; + long paramId = 0; + + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->paramId,¶mId)) != GRIB_SUCCESS) + return ret; + + if (paramId > 129000 && paramId < 129999 ) + *val = paramId - 129000; + else if (paramId > 200000 && paramId < 200999 ) + *val = paramId - 200000; + else if (paramId > 211000 && paramId < 211999 ) + *val = paramId - 1000; + else + *val = paramId; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->paramId,¶mId)) != GRIB_SUCCESS) return ret; - - if (paramId > 129000 && paramId < 129999 ) - *val = paramId - 129000; - else if (paramId > 200000 && paramId < 200999 ) - *val = paramId - 200000; - else if (paramId > 211000 && paramId < 211999 ) - *val = paramId - 1000; - else - *val = paramId; - - return ret; } - static int pack_long(grib_accessor* a, const long* val, size_t *len) { - grib_accessor_ifs_param* self = (grib_accessor_ifs_param*)a; - long type = 0; - long table=128; - long paramId = *val; - long param; + grib_accessor_ifs_param* self = (grib_accessor_ifs_param*)a; + long type = 0; + long table=128; + long paramId = *val; + long param; - grib_get_long(grib_handle_of_accessor(a), self->type,&type); + grib_get_long(grib_handle_of_accessor(a), self->type,&type); - if (type==33 || type==35) { - if (paramId>1000) { - table=paramId/1000; - param=paramId-table*1000; - paramId=param; - } - switch (table) { - case 210 : - paramId+=211000; - break; - case 128: - paramId+=200000; - break; - default: - break; - } - } - if (type == 50 || type == 52 ) { - if (paramId>1000) { - table=paramId/1000; - param=paramId-table*1000; - paramId=param; - } - switch (table) { - case 128: - paramId+=129000; - break; - default: - break; - } - } + if (type==33 || type==35) { + if (paramId>1000) { + table=paramId/1000; + param=paramId-table*1000; + paramId=param; + } + switch (table) { + case 210 : + paramId+=211000; + break; + case 128: + paramId+=200000; + break; + default: + break; + } + } + if (type == 50 || type == 52 ) { + if (paramId>1000) { + table=paramId/1000; + param=paramId-table*1000; + paramId=param; + } + switch (table) { + case 128: + paramId+=129000; + break; + default: + break; + } + } - return grib_set_long_internal(grib_handle_of_accessor(a),self->paramId,paramId); + return grib_set_long_internal(grib_handle_of_accessor(a),self->paramId,paramId); } static int get_native_type(grib_accessor* a){ - return GRIB_TYPE_LONG; + return GRIB_TYPE_LONG; } - From 102372d478619e532d98798372a81a7b50861347 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 23 Aug 2019 15:45:58 +0100 Subject: [PATCH 408/414] Revert changes for ECC-976 and ECC-980 --- src/grib_accessor_class_concept.c | 26 ++-- src/grib_accessor_class_scale.c | 187 ++++++++++++++-------------- src/grib_dumper_class_bufr_simple.c | 2 +- 3 files changed, 109 insertions(+), 106 deletions(-) diff --git a/src/grib_accessor_class_concept.c b/src/grib_accessor_class_concept.c index bfe681ed1..9afbed3d4 100644 --- a/src/grib_accessor_class_concept.c +++ b/src/grib_accessor_class_concept.c @@ -463,7 +463,6 @@ static long get_ECMWF_local_paramId(grib_accessor* a, grib_handle* h) static int unpack_long(grib_accessor* a, long* val, size_t *len) { - char *endptr; const char *p = concept_evaluate(a); if(!p) { @@ -481,17 +480,26 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len) return GRIB_NOT_FOUND; } + *val = atol(p); *len = 1; - *val = strtol(p, &endptr, 10); - if (endptr == p) { - int type = GRIB_TYPE_UNDEFINED; - grib_context_log(a->context,GRIB_LOG_ERROR,"Cannot unpack %s as long",a->name); - if (grib_get_native_type(grib_handle_of_accessor(a), a->name, &type) == GRIB_SUCCESS) { - grib_context_log(a->context,GRIB_LOG_ERROR,"Hint: Try unpacking as %s", grib_get_type_name(type)); +#if 0 + /* ECC-980: Changes reverted because of side-effects! + * e.g. marsType being a codetable and concept! see ifsParam + */ + { + char *endptr; + *val = strtol(p, &endptr, 10); + if (endptr == p || *endptr != '\0') { + /* Failed to convert string into integer */ + int type = GRIB_TYPE_UNDEFINED; + grib_context_log(a->context,GRIB_LOG_ERROR,"Cannot unpack %s as long",a->name); + if (grib_get_native_type(grib_handle_of_accessor(a), a->name, &type) == GRIB_SUCCESS) { + grib_context_log(a->context,GRIB_LOG_ERROR,"Hint: Try unpacking as %s", grib_get_type_name(type)); + } + return GRIB_DECODING_ERROR; } - return GRIB_DECODING_ERROR; } - +#endif return GRIB_SUCCESS; } diff --git a/src/grib_accessor_class_scale.c b/src/grib_accessor_class_scale.c index c43727636..12825838e 100644 --- a/src/grib_accessor_class_scale.c +++ b/src/grib_accessor_class_scale.c @@ -144,129 +144,124 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* c) { - grib_accessor_scale* self = (grib_accessor_scale*)a; - int n = 0; - - self->value = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->multiplier = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->divisor = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->truncating = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + grib_accessor_scale* self = (grib_accessor_scale*)a; + int n = 0; + self->value = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->multiplier = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->divisor = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->truncating = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); } -static int unpack_double (grib_accessor* a, double* val, size_t *len) +static int unpack_double(grib_accessor* a, double* val, size_t *len) { - grib_accessor_scale* self = (grib_accessor_scale*)a; - int ret = 0; - long value = 0; - long multiplier = 0; - long divisor = 0; + grib_accessor_scale* self = (grib_accessor_scale*)a; + int ret = 0; + long value = 0; + long multiplier = 0; + long divisor = 0; + + if(*len < 1){ + ret = GRIB_ARRAY_TOO_SMALL; + grib_context_log(a->context, GRIB_LOG_ERROR, + "Accessor %s cannot gather value for %s and/or %s error %d", + a->name,self->multiplier, self->divisor, ret); + return ret; + } + + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->divisor,&divisor)) != GRIB_SUCCESS) + return ret; + + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->multiplier,&multiplier)) != GRIB_SUCCESS) + return ret; + + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->value,&value)) != GRIB_SUCCESS) + return ret; + + if (value == GRIB_MISSING_LONG) *val=GRIB_MISSING_DOUBLE; + else *val = ((double)(value*multiplier))/divisor; + /*printf("unpack_double: divisor=%ld multiplier=%ld long_value=%ld scaled_value=%.30f\n",(double)divisor,(double)multiplier,value,*val);*/ + + if (ret == GRIB_SUCCESS) *len = 1; - if(*len < 1){ - ret = GRIB_ARRAY_TOO_SMALL; - grib_context_log(a->context, GRIB_LOG_ERROR, - "Accessor %s cannot gather value for %s and/or %s error %d", - a->name,self->multiplier, self->divisor, ret); return ret; - } - - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->divisor,&divisor)) != GRIB_SUCCESS) - return ret; - - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->multiplier,&multiplier)) != GRIB_SUCCESS) - return ret; - - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->value,&value)) != GRIB_SUCCESS) - return ret; - - if (value == GRIB_MISSING_LONG) *val=GRIB_MISSING_DOUBLE; - else *val = ((double)(value*multiplier))/divisor; - /*printf("unpack_double: divisor=%ld multiplier=%ld long_value=%ld scaled_value=%.30f\n",(double)divisor,(double)multiplier,value,*val);*/ - - if (ret == GRIB_SUCCESS) *len = 1; - - return ret; } - static int pack_long(grib_accessor* a, const long* val, size_t *len) { - const double dval=(double)*val ; - return pack_double(a, &dval,len); + const double dval=(double)*val ; + return pack_double(a, &dval,len); } static int pack_double(grib_accessor* a, const double* val, size_t *len) { - grib_accessor_scale* self = (grib_accessor_scale*)a; - int ret = 0; + grib_accessor_scale* self = (grib_accessor_scale*)a; + int ret = 0; - long value = 0; - long divisor = 0; - long multiplier = 0; - long truncating=0; - double x; + long value = 0; + long divisor = 0; + long multiplier = 0; + long truncating=0; + double x; - ret = grib_get_long_internal(grib_handle_of_accessor(a), self->divisor,&divisor); - if(ret != GRIB_SUCCESS) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->divisor, ret); - return ret; - } - ret = grib_get_long_internal(grib_handle_of_accessor(a), self->multiplier,&multiplier); - if(ret != GRIB_SUCCESS){ - grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->divisor, ret); - return ret; - } - if (self->truncating) { - ret = grib_get_long_internal(grib_handle_of_accessor(a), self->truncating,&truncating); - if(ret != GRIB_SUCCESS){ - grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->truncating, ret); - return ret; + ret = grib_get_long_internal(grib_handle_of_accessor(a), self->divisor,&divisor); + if(ret != GRIB_SUCCESS) { + grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->divisor, ret); + return ret; + } + ret = grib_get_long_internal(grib_handle_of_accessor(a), self->multiplier,&multiplier); + if(ret != GRIB_SUCCESS){ + grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->divisor, ret); + return ret; + } + if (self->truncating) { + ret = grib_get_long_internal(grib_handle_of_accessor(a), self->truncating,&truncating); + if(ret != GRIB_SUCCESS){ + grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->truncating, ret); + return ret; + } } - } - if (multiplier == 0) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont divide by a zero multiplier %s error %d \n", a->name, self->multiplier, ret); - return GRIB_ENCODING_ERROR; - } + if (multiplier == 0) { + grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont divide by a zero multiplier %s error %d \n", a->name, self->multiplier, ret); + return GRIB_ENCODING_ERROR; + } - x=*val * (double)divisor / (double)multiplier; - if (*val == GRIB_MISSING_DOUBLE) value = GRIB_MISSING_LONG; - else if (truncating) { - value = (long)x; - } else { - value = x > 0 ? (long)(x+0.5) : (long)(x-0.5) ; - } + x=*val * (double)divisor / (double)multiplier; + if (*val == GRIB_MISSING_DOUBLE) value = GRIB_MISSING_LONG; + else if (truncating) { + value = (long)x; + } else { + value = x > 0 ? (long)(x+0.5) : (long)(x-0.5) ; + } - ret = grib_set_long_internal(grib_handle_of_accessor(a), self->value,value); - if(ret ) - grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont pack value for %s error %d \n", a->name, self->value, ret); + ret = grib_set_long_internal(grib_handle_of_accessor(a), self->value,value); + if(ret ) + grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont pack value for %s error %d \n", a->name, self->value, ret); - if (ret == GRIB_SUCCESS) *len = 1; + if (ret == GRIB_SUCCESS) *len = 1; - return ret; + return ret; } -static int is_missing(grib_accessor* a){ - grib_accessor_scale* self = (grib_accessor_scale*)a; - grib_accessor* av=grib_find_accessor(grib_handle_of_accessor(a),self->value); +static int is_missing(grib_accessor* a) +{ + grib_accessor_scale* self = (grib_accessor_scale*)a; + grib_accessor* av=grib_find_accessor(grib_handle_of_accessor(a),self->value); - if (!av) return GRIB_NOT_FOUND; - return grib_is_missing_internal(av); + if (!av) return GRIB_NOT_FOUND; + return grib_is_missing_internal(av); #if 0 - int ret=0; - long value=0; + int ret=0; + long value=0; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->value, - &value) ) != GRIB_SUCCESS){ - grib_context_log(a->context, GRIB_LOG_ERROR, - "Accessor %s cannont gather value for %s error %d \n", a->name, - self->value, ret); - return 0; - } + if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->value, &value))!= GRIB_SUCCESS){ + grib_context_log(a->context, GRIB_LOG_ERROR, + "Accessor %s cannont gather value for %s error %d \n", a->name, + self->value, ret); + return 0; + } - return (value == GRIB_MISSING_LONG); + return (value == GRIB_MISSING_LONG); #endif - - } - diff --git a/src/grib_dumper_class_bufr_simple.c b/src/grib_dumper_class_bufr_simple.c index aa84ee358..702429b0d 100644 --- a/src/grib_dumper_class_bufr_simple.c +++ b/src/grib_dumper_class_bufr_simple.c @@ -65,7 +65,7 @@ typedef struct grib_dumper_bufr_simple { long end; long isLeaf; long isAttribute; - long numberOfSubsets; + long numberOfSubsets; grib_string_list* keys; } grib_dumper_bufr_simple; From 9f1fe37980500c99ba376a5bd3432d3bfe293408 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 23 Aug 2019 16:33:07 +0100 Subject: [PATCH 409/414] ECC-979: grib_util_packing_spec.extra_settings to encode double values on scaledValueOf/scaleFactorOf keys --- ...sor_class_from_scale_factor_scaled_value.c | 95 +++++++++++++++++-- tests/CMakeLists.txt | 1 + tests/grib_ecc-979.sh | 43 +++++++++ 3 files changed, 130 insertions(+), 9 deletions(-) create mode 100755 tests/grib_ecc-979.sh diff --git a/src/grib_accessor_class_from_scale_factor_scaled_value.c b/src/grib_accessor_class_from_scale_factor_scaled_value.c index 484c4a60e..bb659c90b 100644 --- a/src/grib_accessor_class_from_scale_factor_scaled_value.c +++ b/src/grib_accessor_class_from_scale_factor_scaled_value.c @@ -14,13 +14,14 @@ #include "grib_api_internal.h" +#include /* This is used by make_class.pl START_CLASS_DEF CLASS = accessor SUPER = grib_accessor_class_double - IMPLEMENTS = unpack_double;is_missing + IMPLEMENTS = unpack_double;pack_double;is_missing IMPLEMENTS = init MEMBERS=const char* scaleFactor MEMBERS=const char* scaledValue @@ -39,8 +40,9 @@ or edit "accessor.class" and rerun ./make_class.pl */ static int is_missing(grib_accessor*); -static int unpack_double(grib_accessor*, double* val,size_t *len); -static void init(grib_accessor*,const long, grib_arguments* ); +static int pack_double(grib_accessor*, const double* val, size_t *len); +static int unpack_double(grib_accessor*, double* val, size_t *len); +static void init(grib_accessor*, const long, grib_arguments*); static void init_class(grib_accessor_class*); typedef struct grib_accessor_from_scale_factor_scaled_value { @@ -75,7 +77,7 @@ static grib_accessor_class _grib_accessor_class_from_scale_factor_scaled_value = &is_missing, /* grib_pack procedures long */ 0, /* grib_pack procedures long */ 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ + &pack_double, /* grib_pack procedures double */ &unpack_double, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ @@ -114,7 +116,6 @@ static void init_class(grib_accessor_class* c) c->pack_missing = (*(c->super))->pack_missing; c->pack_long = (*(c->super))->pack_long; c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; c->pack_string_array = (*(c->super))->pack_string_array; @@ -137,16 +138,92 @@ static void init_class(grib_accessor_class* c) /* END_CLASS_IMP */ -static void init(grib_accessor* a,const long l, grib_arguments* c) +static void init(grib_accessor* a, const long l, grib_arguments* c) { grib_accessor_from_scale_factor_scaled_value* self = (grib_accessor_from_scale_factor_scaled_value*)a; int n = 0; grib_handle* hand = grib_handle_of_accessor(a); - self->scaleFactor = grib_arguments_get_name(hand,c,n++); - self->scaledValue = grib_arguments_get_name(hand,c,n++); + self->scaleFactor = grib_arguments_get_name(hand, c, n++); + self->scaledValue = grib_arguments_get_name(hand, c, n++); - a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; + /* ECC-979: Allow user to encode */ + /* a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; */ +} + +static float float_epsilon(void) +{ + float floatEps = 1.0; + while (1 + floatEps / 2 != 1) + floatEps /= 2; + return floatEps; +} + +static int is_approximately_equal(double a, double b, double epsilon) +{ + if (a == b) return 1; + if (fabs(a - b) <= epsilon) + return 1; + return 0; +} + +static double eval_value_factor(long value, long factor) +{ + return (double)value * pow(10.0, -factor); +} + +static int pack_double(grib_accessor* a, const double* val, size_t *len) +{ + /* Evaluate self->scaleFactor and self->scaledValue from input double '*val' */ + grib_accessor_from_scale_factor_scaled_value* self = (grib_accessor_from_scale_factor_scaled_value*)a; + grib_handle* hand = grib_handle_of_accessor(a); + int ret = 0; + long factor=0, prev_factor=0; + long value=0, prev_value=0; + double exact = *val; /*the input*/ + const float epsilon = float_epsilon(); + unsigned long maxval_value, maxval_factor; /*maximum allowable values*/ + grib_accessor *accessor_factor, *accessor_value; + + if (exact == 0) { + if ((ret = grib_set_long_internal(hand, self->scaleFactor, 0)) != GRIB_SUCCESS) return ret; + if ((ret = grib_set_long_internal(hand, self->scaledValue, 0)) != GRIB_SUCCESS) return ret; + return GRIB_SUCCESS; + } + + accessor_factor = grib_find_accessor(hand, self->scaleFactor); + accessor_value = grib_find_accessor(hand, self->scaledValue); + if (!accessor_factor || !accessor_value) { + grib_context_log(a->context, GRIB_LOG_ERROR, "Could not access keys %s and %s", self->scaleFactor, self->scaledValue); + return GRIB_ENCODING_ERROR; + } + maxval_value = (1UL << (accessor_value->length*8))-2; /* exclude missing */ + maxval_factor = (1UL << (accessor_factor->length*8))-2; /* exclude missing */ + + Assert(exact > 0); + + /* Loop until we find a close enough approximation. Keep the last good values */ + factor = prev_factor = 0; + value = prev_value = round(exact); + while (!is_approximately_equal(exact, eval_value_factor(value, factor), epsilon) && + value < maxval_value && + factor < maxval_factor) + { + value = round(exact * pow(10., ++factor)); + if (value > maxval_value || factor > maxval_factor) { + /* One or more maxima exceeded. So stop and use the previous values */ + value = prev_value; + factor = prev_factor; + break; + } + prev_factor = factor; + prev_value = value; + } + + if ((ret = grib_set_long_internal(hand, self->scaleFactor, factor)) != GRIB_SUCCESS) return ret; + if ((ret = grib_set_long_internal(hand, self->scaledValue, value)) != GRIB_SUCCESS) return ret; + + return GRIB_SUCCESS; } static int unpack_double(grib_accessor* a, double* val, size_t *len) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index b8b53c183..86bffe0c4 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -56,6 +56,7 @@ list( APPEND tests_no_data_reqd grib_2nd_order_numValues grib_ecc-136 grib_ecc-967 + grib_ecc-979 julian bufr_dump_samples bufr_json_samples diff --git a/tests/grib_ecc-979.sh b/tests/grib_ecc-979.sh new file mode 100755 index 000000000..a49a2d265 --- /dev/null +++ b/tests/grib_ecc-979.sh @@ -0,0 +1,43 @@ +#!/bin/sh +# Copyright 2005-2019 ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.sh +set -u +# --------------------------------------------------------- +# This is the test for the JIRA issue ECC-979. +# Directly setting keys that use the accessor +# from_scale_factor_scaled_value +# --------------------------------------------------------- +label="grib_ecc-979-test" +temp=temp.${label} +sample2=$ECCODES_SAMPLES_PATH/GRIB2.tmpl + +${tools_dir}/grib_set -s shapeOfTheEarth=1,radius=6371229 $sample2 $temp +grib_check_key_equals $temp scaledValueOfRadiusOfSphericalEarth,scaleFactorOfRadiusOfSphericalEarth '6371229 0' +${tools_dir}/grib_set -s shapeOfTheEarth=1,radius=6371229.0 $sample2 $temp +grib_check_key_equals $temp scaledValueOfRadiusOfSphericalEarth,scaleFactorOfRadiusOfSphericalEarth '6371229 0' + +# Oblate +${tools_dir}/grib_set -s shapeOfTheEarth=7,earthMajorAxis=6378137.0,earthMinorAxis=6356752.3142 $sample2 $temp +grib_check_key_equals $temp scaleFactorOfEarthMajorAxis,scaledValueOfEarthMajorAxis '0 6378137' +grib_check_key_equals $temp scaleFactorOfEarthMinorAxis,scaledValueOfEarthMinorAxis '2 635675231' + + +# Test edge case +${tools_dir}/grib_set -s shapeOfTheEarth=1,radius=0 $sample2 $temp +grib_check_key_equals $temp scaledValueOfRadiusOfSphericalEarth,scaleFactorOfRadiusOfSphericalEarth '0 0' + +# Check larger factor +${tools_dir}/grib_set -s shapeOfTheEarth=1,radius=678.1234 $sample2 $temp +grib_check_key_equals $temp scaledValueOfRadiusOfSphericalEarth,scaleFactorOfRadiusOfSphericalEarth '6781234 4' + + +# Clean up +rm -f $temp From fce6a534a68fde9b7b48754435053e10afec4170 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 27 Aug 2019 12:26:32 +0100 Subject: [PATCH 410/414] ECC-979: earthMajorAxis,earthMinorAxis: Fix conversion to metres --- .../grib2/template.3.shape_of_the_earth.def | 10 +++- src/grib_accessor_class_divdouble.c | 46 +++++++++---------- 2 files changed, 29 insertions(+), 27 deletions(-) diff --git a/definitions/grib2/template.3.shape_of_the_earth.def b/definitions/grib2/template.3.shape_of_the_earth.def index bf906f796..b9a15dea8 100755 --- a/definitions/grib2/template.3.shape_of_the_earth.def +++ b/definitions/grib2/template.3.shape_of_the_earth.def @@ -69,8 +69,14 @@ _if (shapeOfTheEarth == 3){ scaleFactorOfEarthMajorAxis, scaledValueOfEarthMajorAxis); meta earthMinorAxis from_scale_factor_scaled_value( scaleFactorOfEarthMinorAxis, scaledValueOfEarthMinorAxis); - meta earthMajorAxisInMetres scale(earthMajorAxis, thousand, one, zero); - meta earthMinorAxisInMetres scale(earthMinorAxis, thousand, one, zero); + + # The 'scale' accessor works with integers so rounds its first argument + # which is not what we want because the inputs are doubles with decimal + # expansions. So use the trick of dividing by 0.001 to multiply by 1000 + # meta earthMajorAxisInMetres scale(earthMajorAxis, thousand, one, zero); + # meta earthMinorAxisInMetres scale(earthMinorAxis, thousand, one, zero); + meta earthMajorAxisInMetres divdouble(earthMajorAxis, 0.001); + meta earthMinorAxisInMetres divdouble(earthMinorAxis, 0.001); } _if (shapeOfTheEarth == 7){ # Major and minor axes specified (in m) by data producer diff --git a/src/grib_accessor_class_divdouble.c b/src/grib_accessor_class_divdouble.c index 9841af158..91947da28 100644 --- a/src/grib_accessor_class_divdouble.c +++ b/src/grib_accessor_class_divdouble.c @@ -138,38 +138,34 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* c) { - grib_accessor_divdouble* self = (grib_accessor_divdouble*)a; - int n = 0; + grib_accessor_divdouble* self = (grib_accessor_divdouble*)a; + int n = 0; - self->val = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->divisor = grib_arguments_get_double(grib_handle_of_accessor(a),c,n++); + self->val = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->divisor = grib_arguments_get_double(grib_handle_of_accessor(a),c,n++); } -static int unpack_double (grib_accessor* a, double* val, size_t *len) +static int unpack_double(grib_accessor* a, double* val, size_t *len) { - grib_accessor_divdouble* self = (grib_accessor_divdouble*)a; - int ret = GRIB_SUCCESS; - long ivalue = 0; - double value = 0; + grib_accessor_divdouble* self = (grib_accessor_divdouble*)a; + int ret = GRIB_SUCCESS; + double value = 0; - if(*len < 1) - { - *len = 1; - return GRIB_ARRAY_TOO_SMALL; - } + if(*len < 1) + { + *len = 1; + return GRIB_ARRAY_TOO_SMALL; + } + ret = grib_get_double_internal(grib_handle_of_accessor(a), self->val, &value); - ret = grib_get_long_internal(grib_handle_of_accessor(a), self->val, &ivalue); + if(ret != GRIB_SUCCESS ) + return ret; - value = ivalue; + /* fprintf(stdout,"\nname %s %s %g/%g\n",a->name ,self->val,value,divisor);*/ + Assert(self->divisor!=0); + *val = value/self->divisor; - if(ret != GRIB_SUCCESS ) - return ret; - - /* fprintf(stdout,"\nname %s %s %g/%g\n",a->name ,self->val,value,divisor);*/ - *val = value/self->divisor; - - *len = 1; - return GRIB_SUCCESS; + *len = 1; + return GRIB_SUCCESS; } - From fd47e9ec0068a6688e96a3103da380384f0894cb Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 27 Aug 2019 15:29:15 +0100 Subject: [PATCH 411/414] ECC-981: grib_util_set_spec: Fails to set gridType of lambert_azimuthal_equal_area --- src/grib_util.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/grib_util.c b/src/grib_util.c index 532bf268f..c08ab1359 100644 --- a/src/grib_util.c +++ b/src/grib_util.c @@ -857,6 +857,7 @@ grib_handle* grib_util_set_spec2(grib_handle* h, int packingTypeIsSet=0; int setSecondOrder=0; int setJpegPacking=0; + int convertEditionEarlier=0;/* For cases when we cannot set some keys without converting */ size_t slen=17; int grib1_high_resolution_fix = 0; /* boolean: See GRIB-863 */ int global_grid = 0; /* boolean */ @@ -1061,10 +1062,10 @@ grib_handle* grib_util_set_spec2(grib_handle* h, } break; case GRIB_UTIL_GRID_SPEC_LAMBERT_AZIMUTHAL_EQUAL_AREA: - if (editionNumber==1) { - fprintf(stderr,"GRIB_UTIL_SET_SPEC: grid type='%s' not available in GRIB edition 1.\n", grid_type); - *err = GRIB_WRONG_GRID; - goto cleanup; + if (editionNumber==1) { /* This grid type is not available in edition 1 */ + if (h->context->debug==-1) + fprintf(stderr,"lambert_azimuthal_equal_area specified but input is GRIB1. Output must be a higher edition!\n"); + convertEditionEarlier=1; } sprintf(name, "GRIB%ld", editionNumber); break; @@ -1475,6 +1476,14 @@ grib_handle* grib_util_set_spec2(grib_handle* h, } } + if (convertEditionEarlier && packing_spec->editionNumber>1) { + *err = grib_set_long(outh,"edition", packing_spec->editionNumber); + if(*err) { + fprintf(stderr,"SET_GRID_DATA_DESCRIPTION: Cannot convert to edition %ld.\n",packing_spec->editionNumber); + goto cleanup; + } + } + if((*err = grib_set_values(outh,values,count)) != 0) { fprintf(stderr,"SET_GRID_DATA_DESCRIPTION: Cannot set key values: %s\n",grib_get_error_message(*err)); From 1e05369e7b33cf6866fe43988a40d42166418bd3 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 27 Aug 2019 16:05:22 +0100 Subject: [PATCH 412/414] Comments etc --- definitions/grib2/template.3.shape_of_the_earth.def | 2 ++ src/grib_accessor_class_from_scale_factor_scaled_value.c | 1 + src/grib_util.c | 3 ++- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/definitions/grib2/template.3.shape_of_the_earth.def b/definitions/grib2/template.3.shape_of_the_earth.def index b9a15dea8..f3ea36499 100755 --- a/definitions/grib2/template.3.shape_of_the_earth.def +++ b/definitions/grib2/template.3.shape_of_the_earth.def @@ -70,9 +70,11 @@ _if (shapeOfTheEarth == 3){ meta earthMinorAxis from_scale_factor_scaled_value( scaleFactorOfEarthMinorAxis, scaledValueOfEarthMinorAxis); + # ECC-979 # The 'scale' accessor works with integers so rounds its first argument # which is not what we want because the inputs are doubles with decimal # expansions. So use the trick of dividing by 0.001 to multiply by 1000 + # # meta earthMajorAxisInMetres scale(earthMajorAxis, thousand, one, zero); # meta earthMinorAxisInMetres scale(earthMinorAxis, thousand, one, zero); meta earthMajorAxisInMetres divdouble(earthMajorAxis, 0.001); diff --git a/src/grib_accessor_class_from_scale_factor_scaled_value.c b/src/grib_accessor_class_from_scale_factor_scaled_value.c index bb659c90b..84e7313c7 100644 --- a/src/grib_accessor_class_from_scale_factor_scaled_value.c +++ b/src/grib_accessor_class_from_scale_factor_scaled_value.c @@ -174,6 +174,7 @@ static double eval_value_factor(long value, long factor) static int pack_double(grib_accessor* a, const double* val, size_t *len) { + /* See ECC-979 */ /* Evaluate self->scaleFactor and self->scaledValue from input double '*val' */ grib_accessor_from_scale_factor_scaled_value* self = (grib_accessor_from_scale_factor_scaled_value*)a; grib_handle* hand = grib_handle_of_accessor(a); diff --git a/src/grib_util.c b/src/grib_util.c index c08ab1359..34a12cd74 100644 --- a/src/grib_util.c +++ b/src/grib_util.c @@ -1064,7 +1064,8 @@ grib_handle* grib_util_set_spec2(grib_handle* h, case GRIB_UTIL_GRID_SPEC_LAMBERT_AZIMUTHAL_EQUAL_AREA: if (editionNumber==1) { /* This grid type is not available in edition 1 */ if (h->context->debug==-1) - fprintf(stderr,"lambert_azimuthal_equal_area specified but input is GRIB1. Output must be a higher edition!\n"); + fprintf(stderr,"ECCODES DEBUG grib_util: lambert_azimuthal_equal_area specified " + "but input is GRIB1. Output must be a higher edition!\n"); convertEditionEarlier=1; } sprintf(name, "GRIB%ld", editionNumber); From 3e6e7ba5b0756250fb41f98e3277a8facc5de4fc Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 28 Aug 2019 13:00:40 +0100 Subject: [PATCH 413/414] Visual Studio Code v1.37.1 --- .vscode/c_cpp_properties.json | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 .vscode/c_cpp_properties.json diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json new file mode 100644 index 000000000..256560fbd --- /dev/null +++ b/.vscode/c_cpp_properties.json @@ -0,0 +1,19 @@ +{ + "configurations": [ + { + "name": "Linux", + "includePath": [ + "/usr/include", + "/usr/include/linux", + "/usr/local/apps/gcc/7.3.0/lib64/gcc/x86_64-suse-linux/7.3.0/include", + "${workspaceRoot}" + ], + "defines": [], + "compilerPath": "/usr/local/apps/gcc/7.3.0/bin/gcc", + "cStandard": "c89", + "cppStandard": "c++17", + "intelliSenseMode": "clang-x64" + } + ], + "version": 4 +} From 58d2e94ebaa1538c29eac94be48f2cb77a162296 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 28 Aug 2019 14:22:44 +0100 Subject: [PATCH 414/414] Clean up --- src/grib_accessor_class_bits_per_value.c | 66 ++-- src/grib_accessor_class_budgdate.c | 87 +++-- src/grib_accessor_class_codetable_title.c | 109 +++--- src/grib_accessor_class_codetable_units.c | 82 ++--- src/grib_accessor_class_count_missing.c | 71 ++-- ...ta_g1second_order_constant_width_packing.c | 221 ++++++------ ...b_accessor_class_data_g2shsimple_packing.c | 98 +++--- ...rib_accessor_class_data_secondary_bitmap.c | 178 +++++----- src/grib_accessor_class_data_sh_unpacked.c | 332 +++++++++--------- ...rib_accessor_class_data_shsimple_packing.c | 54 ++- src/grib_accessor_class_double.c | 120 +++---- src/grib_accessor_class_element.c | 123 ++++--- src/grib_accessor_class_g1_message_length.c | 168 ++++----- src/grib_accessor_class_g1area.c | 121 ++++--- src/grib_accessor_class_g1forecastmonth.c | 100 +++--- ...lass_g1number_of_coded_values_sh_complex.c | 110 +++--- ...class_g1number_of_coded_values_sh_simple.c | 75 ++-- src/grib_accessor_class_g2bitmap_present.c | 49 ++- src/grib_accessor_class_g2date.c | 72 ++-- src/grib_accessor_class_g2lon.c | 55 ++- src/grib_accessor_class_g2step.c | 70 ++-- src/grib_accessor_class_g2step_range.c | 154 ++++---- src/grib_accessor_class_gds_is_present.c | 85 +++-- ...ib_accessor_class_gds_not_present_bitmap.c | 205 ++++++----- src/grib_accessor_class_group.c | 219 ++++++------ src/grib_accessor_class_julian_day.c | 115 +++--- src/grib_accessor_class_ksec1expver.c | 107 +++--- src/grib_accessor_class_laplacian.c | 192 +++++----- ...ib_accessor_class_number_of_coded_values.c | 82 +++-- src/grib_accessor_class_number_of_points.c | 85 +++-- ..._class_number_of_values_data_raw_packing.c | 64 ++-- src/grib_accessor_class_octect_number.c | 37 +- src/grib_accessor_class_position.c | 45 ++- ...rib_accessor_class_reference_value_error.c | 48 ++- src/grib_accessor_class_round.c | 84 +++-- src/grib_accessor_class_section_padding.c | 96 +++-- src/grib_accessor_class_section_pointer.c | 138 ++++---- src/grib_accessor_class_sexagesimal2decimal.c | 149 ++++---- ...grib_accessor_class_simple_packing_error.c | 91 +++-- src/grib_accessor_class_smart_table_column.c | 237 ++++++------- src/grib_accessor_class_spd.c | 171 +++++---- src/grib_accessor_class_spectral_truncation.c | 114 +++--- src/grib_accessor_class_unpack_bufr_values.c | 79 ++--- src/grib_accessor_class_values.c | 166 ++++----- 44 files changed, 2502 insertions(+), 2622 deletions(-) diff --git a/src/grib_accessor_class_bits_per_value.c b/src/grib_accessor_class_bits_per_value.c index 7024b391b..8bd4aaa6d 100644 --- a/src/grib_accessor_class_bits_per_value.c +++ b/src/grib_accessor_class_bits_per_value.c @@ -137,56 +137,54 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* args) { - int n=0; - grib_accessor_bits_per_value* self= (grib_accessor_bits_per_value*)a; - self->values=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++); - self->bits_per_value=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++); - a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION; - a->length=0; + int n=0; + grib_accessor_bits_per_value* self= (grib_accessor_bits_per_value*)a; + self->values=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++); + self->bits_per_value=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++); + a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION; + a->length=0; } -static int unpack_long(grib_accessor* a, long* val, size_t *len) +static int unpack_long(grib_accessor* a, long* val, size_t *len) { - int ret=0; - grib_accessor_bits_per_value* self= (grib_accessor_bits_per_value*)a; - grib_handle* h=grib_handle_of_accessor(a); + int ret=0; + grib_accessor_bits_per_value* self= (grib_accessor_bits_per_value*)a; + grib_handle* h=grib_handle_of_accessor(a); - if((ret = grib_get_long_internal(h,self->bits_per_value,val)) - != GRIB_SUCCESS) return ret; + if((ret = grib_get_long_internal(h,self->bits_per_value,val)) + != GRIB_SUCCESS) return ret; - *len =1; - return ret; + *len =1; + return ret; } static int pack_long(grib_accessor* a, const long* val, size_t *len) { - double* values=NULL; - size_t size=0; - int ret=0; - grib_accessor_bits_per_value* self= (grib_accessor_bits_per_value*)a; - grib_context* c=a->context; - grib_handle* h=grib_handle_of_accessor(a); + double* values=NULL; + size_t size=0; + int ret=0; + grib_accessor_bits_per_value* self= (grib_accessor_bits_per_value*)a; + grib_context* c=a->context; + grib_handle* h=grib_handle_of_accessor(a); - if ( (ret=grib_get_size(h,self->values,&size)) != GRIB_SUCCESS) return ret; + if ( (ret=grib_get_size(h,self->values,&size)) != GRIB_SUCCESS) return ret; - values=(double*)grib_context_malloc(c,size*sizeof(double)); - if (!values) return GRIB_OUT_OF_MEMORY; + values=(double*)grib_context_malloc(c,size*sizeof(double)); + if (!values) return GRIB_OUT_OF_MEMORY; - if((ret = grib_get_double_array_internal(h,self->values,values,&size)) - != GRIB_SUCCESS) { + if((ret = grib_get_double_array_internal(h,self->values,values,&size)) + != GRIB_SUCCESS) { grib_context_free(c,values); return ret; - } + } - if((ret = grib_set_long_internal(h, self->bits_per_value,*val)) - != GRIB_SUCCESS) return ret; + if((ret = grib_set_long_internal(h, self->bits_per_value,*val)) + != GRIB_SUCCESS) return ret; - if((ret = grib_set_double_array_internal(h, self->values,values,size)) - != GRIB_SUCCESS) return ret; + if((ret = grib_set_double_array_internal(h, self->values,values,size)) + != GRIB_SUCCESS) return ret; - grib_context_free(c,values); + grib_context_free(c,values); - return GRIB_SUCCESS; + return GRIB_SUCCESS; } - - diff --git a/src/grib_accessor_class_budgdate.c b/src/grib_accessor_class_budgdate.c index 0c87186f6..e69c15ffa 100644 --- a/src/grib_accessor_class_budgdate.c +++ b/src/grib_accessor_class_budgdate.c @@ -137,69 +137,66 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* c) { - grib_accessor_budgdate* self = (grib_accessor_budgdate*)a; - int n = 0; + grib_accessor_budgdate* self = (grib_accessor_budgdate*)a; + int n = 0; - self->year = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->month = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->day = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->year = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->month = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->day = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); } - static int unpack_long(grib_accessor* a, long* val, size_t *len) { - int ret=0; - grib_accessor_budgdate* self = (grib_accessor_budgdate*)a; + int ret=0; + grib_accessor_budgdate* self = (grib_accessor_budgdate*)a; - long year = 0; - long month = 0; - long day = 0; + long year = 0; + long month = 0; + long day = 0; + + if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->day,&day))!=GRIB_SUCCESS) + return ret; + if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->month,&month))!=GRIB_SUCCESS) + return ret; + if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->year,&year))!=GRIB_SUCCESS) + return ret; + + if(*len < 1) + return GRIB_WRONG_ARRAY_SIZE; + + val[0] = (1900 + year) * 10000 + month * 100 + day; - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->day,&day))!=GRIB_SUCCESS) return ret; - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->month,&month))!=GRIB_SUCCESS) - return ret; - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->year,&year))!=GRIB_SUCCESS) - return ret; - - if(*len < 1) - return GRIB_WRONG_ARRAY_SIZE; - - val[0] = (1900 + year) * 10000 + month * 100 + day; - - return ret; } /* TODO: Check for a valid date */ - static int pack_long(grib_accessor* a, const long* val, size_t *len) { - int ret=0; - long v = val[0]; - grib_accessor_budgdate* self = (grib_accessor_budgdate*)a; + int ret=0; + long v = val[0]; + grib_accessor_budgdate* self = (grib_accessor_budgdate*)a; - long year = 0; - long month = 0; - long day = 0; + long year = 0; + long month = 0; + long day = 0; - if(*len != 1) - return GRIB_WRONG_ARRAY_SIZE; + if(*len != 1) + return GRIB_WRONG_ARRAY_SIZE; - year = v / 10000; v %= 10000; - month = v / 100; v %= 100; - day = v; + year = v / 10000; v %= 10000; + month = v / 100; v %= 100; + day = v; - year -= 1900; + year -= 1900; - Assert(year < 255); + Assert(year < 255); + + if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->day,day))!=GRIB_SUCCESS) + return ret; + if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->month,month))!=GRIB_SUCCESS) + return ret; + if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->year,year))!=GRIB_SUCCESS) + return ret; - if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->day,day))!=GRIB_SUCCESS) return ret; - if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->month,month))!=GRIB_SUCCESS) - return ret; - if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->year,year))!=GRIB_SUCCESS) - return ret; - - return ret; } - diff --git a/src/grib_accessor_class_codetable_title.c b/src/grib_accessor_class_codetable_title.c index a5ea8d6d2..070c7f1e3 100644 --- a/src/grib_accessor_class_codetable_title.c +++ b/src/grib_accessor_class_codetable_title.c @@ -149,63 +149,60 @@ typedef struct grib_accessor_codetable { } grib_accessor_codetable; -static void init(grib_accessor* a, const long len, grib_arguments* params) { - grib_accessor_codetable_title* self = (grib_accessor_codetable_title*)a; - int n=0; - self->codetable = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++); - a->length=0; - a->flags|= GRIB_ACCESSOR_FLAG_READ_ONLY; -} - -static int get_native_type(grib_accessor* a){ - return GRIB_TYPE_STRING; -} - - -static int unpack_string (grib_accessor* a, char* buffer, size_t *len) +static void init(grib_accessor* a, const long len, grib_arguments* params) { - grib_accessor_codetable_title* self = (grib_accessor_codetable_title*)a; - grib_codetable* table = NULL; - - size_t size = 1; - long value; - int err = GRIB_SUCCESS; - char tmp[1024]; - size_t l = 1024; - grib_accessor_codetable* ca=(grib_accessor_codetable*)grib_find_accessor(grib_handle_of_accessor(a),self->codetable); - - if( (err = grib_unpack_long((grib_accessor*)ca,&value,&size)) != GRIB_SUCCESS) - return err; - - table=ca->table; - - if(table && (value >= 0) && (value < table->size) && table->entries[value].title) - { - strcpy(tmp,table->entries[value].title); - } - else - { - -#if 1 - sprintf(tmp,"%d",(int)value); -#else - return GRIB_DECODING_ERROR; -#endif - } - - - l = strlen(tmp) + 1; - - if(*len < l) - { - *len = l; - return GRIB_BUFFER_TOO_SMALL; - } - - strcpy(buffer,tmp); - *len = l; - - return GRIB_SUCCESS; + grib_accessor_codetable_title* self = (grib_accessor_codetable_title*)a; + int n=0; + self->codetable = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++); + a->length=0; + a->flags|= GRIB_ACCESSOR_FLAG_READ_ONLY; } +static int get_native_type(grib_accessor* a) +{ + return GRIB_TYPE_STRING; +} +static int unpack_string(grib_accessor* a, char* buffer, size_t *len) +{ + grib_accessor_codetable_title* self = (grib_accessor_codetable_title*)a; + grib_codetable* table = NULL; + + size_t size = 1; + long value; + int err = GRIB_SUCCESS; + char tmp[1024]; + size_t l = 1024; + grib_accessor_codetable* ca=(grib_accessor_codetable*)grib_find_accessor(grib_handle_of_accessor(a),self->codetable); + + if( (err = grib_unpack_long((grib_accessor*)ca,&value,&size)) != GRIB_SUCCESS) + return err; + + table=ca->table; + + if(table && (value >= 0) && (value < table->size) && table->entries[value].title) + { + strcpy(tmp,table->entries[value].title); + } + else + { +#if 1 + sprintf(tmp,"%d",(int)value); +#else + return GRIB_DECODING_ERROR; +#endif + } + + l = strlen(tmp) + 1; + + if(*len < l) + { + *len = l; + return GRIB_BUFFER_TOO_SMALL; + } + + strcpy(buffer,tmp); + *len = l; + + return GRIB_SUCCESS; +} diff --git a/src/grib_accessor_class_codetable_units.c b/src/grib_accessor_class_codetable_units.c index 5ea7e3a54..850489686 100644 --- a/src/grib_accessor_class_codetable_units.c +++ b/src/grib_accessor_class_codetable_units.c @@ -148,64 +148,56 @@ typedef struct grib_accessor_codetable { grib_codetable* table; } grib_accessor_codetable; - -static void init(grib_accessor* a, const long len, grib_arguments* params) { - grib_accessor_codetable_units* self = (grib_accessor_codetable_units*)a; - int n=0; - self->codetable = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++); - a->length=0; - a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; +static void init(grib_accessor* a, const long len, grib_arguments* params) +{ + grib_accessor_codetable_units* self = (grib_accessor_codetable_units*)a; + int n=0; + self->codetable = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++); + a->length=0; + a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; } -static int get_native_type(grib_accessor* a){ - return GRIB_TYPE_STRING; +static int get_native_type(grib_accessor* a) +{ + return GRIB_TYPE_STRING; } - static int unpack_string (grib_accessor* a, char* buffer, size_t *len) { - grib_accessor_codetable_units* self = (grib_accessor_codetable_units*)a; - grib_codetable* table = NULL; + grib_accessor_codetable_units* self = (grib_accessor_codetable_units*)a; + grib_codetable* table = NULL; - size_t size = 1; - long value; - int err = GRIB_SUCCESS; - char tmp[1024]; - size_t l = 1024; - grib_accessor_codetable* ca=(grib_accessor_codetable*)grib_find_accessor(grib_handle_of_accessor(a),self->codetable); + size_t size = 1; + long value; + int err = GRIB_SUCCESS; + char tmp[1024]; + size_t l = 1024; + grib_accessor_codetable* ca=(grib_accessor_codetable*)grib_find_accessor(grib_handle_of_accessor(a),self->codetable); - if( (err = grib_unpack_long((grib_accessor*)ca,&value,&size)) != GRIB_SUCCESS) - return err; + if( (err = grib_unpack_long((grib_accessor*)ca,&value,&size)) != GRIB_SUCCESS) + return err; - table=ca->table; + table=ca->table; - if(table && (value >= 0) && (value < table->size) && table->entries[value].units) - { - strcpy(tmp,table->entries[value].units); - } - else - { + if(table && (value >= 0) && (value < table->size) && table->entries[value].units) + { + strcpy(tmp,table->entries[value].units); + } + else + { + sprintf(tmp,"%d",(int)value); + } -#if 1 - sprintf(tmp,"%d",(int)value); -#else - return GRIB_DECODING_ERROR; -#endif - } + l = strlen(tmp) + 1; + if(*len < l) + { + *len = l; + return GRIB_BUFFER_TOO_SMALL; + } - l = strlen(tmp) + 1; - - if(*len < l) - { + strcpy(buffer,tmp); *len = l; - return GRIB_BUFFER_TOO_SMALL; - } - strcpy(buffer,tmp); - *len = l; - - return GRIB_SUCCESS; + return GRIB_SUCCESS; } - - diff --git a/src/grib_accessor_class_count_missing.c b/src/grib_accessor_class_count_missing.c index e1ee98f79..1f188b65e 100644 --- a/src/grib_accessor_class_count_missing.c +++ b/src/grib_accessor_class_count_missing.c @@ -176,54 +176,54 @@ static const unsigned char bitson[]={ static void init(grib_accessor* a, const long len , grib_arguments* arg ) { - int n=0; - grib_accessor_count_missing* self = (grib_accessor_count_missing*)a; - a->length=0; - a->flags|=GRIB_ACCESSOR_FLAG_READ_ONLY; - self->bitmap = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++); - self->unusedBitsInBitmap = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++); - self->numberOfDataPoints = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++); + int n=0; + grib_accessor_count_missing* self = (grib_accessor_count_missing*)a; + a->length=0; + a->flags|=GRIB_ACCESSOR_FLAG_READ_ONLY; + self->bitmap = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++); + self->unusedBitsInBitmap = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++); + self->numberOfDataPoints = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++); } static const int used[] ={ 0,1,3,7,15,31,63,127,255}; -static int unpack_long (grib_accessor* a, long* val, size_t *len) +static int unpack_long(grib_accessor* a, long* val, size_t *len) { - grib_accessor_count_missing* self = (grib_accessor_count_missing*)a; - unsigned char* p; - int i; - long size=0; - long offset=0; - long unusedBitsInBitmap=0; - long numberOfDataPoints=0; - grib_handle* h=grib_handle_of_accessor(a); - grib_accessor* bitmap=grib_find_accessor(grib_handle_of_accessor(a),self->bitmap); + grib_accessor_count_missing* self = (grib_accessor_count_missing*)a; + unsigned char* p; + int i; + long size=0; + long offset=0; + long unusedBitsInBitmap=0; + long numberOfDataPoints=0; + grib_handle* h=grib_handle_of_accessor(a); + grib_accessor* bitmap=grib_find_accessor(grib_handle_of_accessor(a),self->bitmap); - *val=0; - *len=1; - if (!bitmap) return GRIB_SUCCESS; + *val=0; + *len=1; + if (!bitmap) return GRIB_SUCCESS; - size=grib_byte_count(bitmap); - offset=grib_byte_offset(bitmap); + size=grib_byte_count(bitmap); + offset=grib_byte_offset(bitmap); - if (grib_get_long(h,self->unusedBitsInBitmap,&unusedBitsInBitmap) != GRIB_SUCCESS) { - if (grib_get_long(h,self->numberOfDataPoints,&numberOfDataPoints) != GRIB_SUCCESS) { - grib_context_log(a->context,GRIB_LOG_ERROR,"unable to count missing values"); - return GRIB_INTERNAL_ERROR; - } - unusedBitsInBitmap=size*8-numberOfDataPoints; - } + if (grib_get_long(h,self->unusedBitsInBitmap,&unusedBitsInBitmap) != GRIB_SUCCESS) { + if (grib_get_long(h,self->numberOfDataPoints,&numberOfDataPoints) != GRIB_SUCCESS) { + grib_context_log(a->context,GRIB_LOG_ERROR,"unable to count missing values"); + return GRIB_INTERNAL_ERROR; + } + unusedBitsInBitmap=size*8-numberOfDataPoints; + } - p=grib_handle_of_accessor(a)->buffer->data+offset; + p=grib_handle_of_accessor(a)->buffer->data+offset; - size-=unusedBitsInBitmap/8; - unusedBitsInBitmap= unusedBitsInBitmap % 8; + size-=unusedBitsInBitmap/8; + unusedBitsInBitmap= unusedBitsInBitmap % 8; - for (i=0;ihalf_byte = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->packingType = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->ieee_packing = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->precision = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->widthOfFirstOrderValues = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->N1 = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->N2 = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->numberOfGroups = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->numberOfSecondOrderPackedValues = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->extraValues = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->Ni = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->Nj = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->pl = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->jPointsAreConsecutive = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->bitmap = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->groupWidth = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); - self->edition=1; - a->flags |= GRIB_ACCESSOR_FLAG_DATA; + grib_accessor_data_g1second_order_constant_width_packing *self =(grib_accessor_data_g1second_order_constant_width_packing*)a; + self->half_byte = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); + self->packingType = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); + self->ieee_packing = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); + self->precision = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); + self->widthOfFirstOrderValues = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); + self->N1 = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); + self->N2 = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); + self->numberOfGroups = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); + self->numberOfSecondOrderPackedValues = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); + self->extraValues = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); + self->Ni = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); + self->Nj = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); + self->pl = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); + self->jPointsAreConsecutive = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); + self->bitmap = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); + self->groupWidth = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++); + self->edition=1; + a->flags |= GRIB_ACCESSOR_FLAG_DATA; } static int value_count(grib_accessor* a,long* numberOfSecondOrderPackedValues) { - int err=0; - grib_accessor_data_g1second_order_constant_width_packing *self =(grib_accessor_data_g1second_order_constant_width_packing*)a; - *numberOfSecondOrderPackedValues=0; + int err=0; + grib_accessor_data_g1second_order_constant_width_packing *self =(grib_accessor_data_g1second_order_constant_width_packing*)a; + *numberOfSecondOrderPackedValues=0; - err=grib_get_long_internal(grib_handle_of_accessor(a),self->numberOfSecondOrderPackedValues,numberOfSecondOrderPackedValues); - - return err; + err=grib_get_long_internal(grib_handle_of_accessor(a),self->numberOfSecondOrderPackedValues,numberOfSecondOrderPackedValues); + return err; } static int unpack_double(grib_accessor* a, double* values, size_t *len) { - grib_accessor_data_g1second_order_constant_width_packing* self = (grib_accessor_data_g1second_order_constant_width_packing*)a; - int ret=0; - long numberOfGroups,numberOfSecondOrderPackedValues; - long groupWidth=0; - long* firstOrderValues=0; - long* X=0; - long numberPerRow=0; - long pos=0; - long widthOfFirstOrderValues=0; - long jPointsAreConsecutive; - unsigned char* buf = (unsigned char*)grib_handle_of_accessor(a)->buffer->data; - long i,n; - double reference_value; - long binary_scale_factor; - long decimal_scale_factor; - double s,d; - long* secondaryBitmap; + grib_accessor_data_g1second_order_constant_width_packing* self = (grib_accessor_data_g1second_order_constant_width_packing*)a; + int ret=0; + long numberOfGroups,numberOfSecondOrderPackedValues; + long groupWidth=0; + long* firstOrderValues=0; + long* X=0; + long numberPerRow=0; + long pos=0; + long widthOfFirstOrderValues=0; + long jPointsAreConsecutive; + unsigned char* buf = (unsigned char*)grib_handle_of_accessor(a)->buffer->data; + long i,n; + double reference_value; + long binary_scale_factor; + long decimal_scale_factor; + double s,d; + long* secondaryBitmap; - buf += grib_byte_offset(a); + buf += grib_byte_offset(a); - if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->numberOfGroups,&numberOfGroups)) != GRIB_SUCCESS) - return ret; + if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->numberOfGroups,&numberOfGroups)) != GRIB_SUCCESS) + return ret; - if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->jPointsAreConsecutive,&jPointsAreConsecutive)) != GRIB_SUCCESS) - return ret; + if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->jPointsAreConsecutive,&jPointsAreConsecutive)) != GRIB_SUCCESS) + return ret; - if (jPointsAreConsecutive) { - if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->Ni,&numberPerRow)) != GRIB_SUCCESS) - return ret; - } else { - if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->Nj,&numberPerRow)) != GRIB_SUCCESS) - return ret; - } + if (jPointsAreConsecutive) { + if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->Ni,&numberPerRow)) != GRIB_SUCCESS) + return ret; + } else { + if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->Nj,&numberPerRow)) != GRIB_SUCCESS) + return ret; + } - if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->widthOfFirstOrderValues,&widthOfFirstOrderValues)) != GRIB_SUCCESS) - return ret; + if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->widthOfFirstOrderValues,&widthOfFirstOrderValues)) != GRIB_SUCCESS) + return ret; - if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->binary_scale_factor,&binary_scale_factor)) != GRIB_SUCCESS) - return ret; + if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->binary_scale_factor,&binary_scale_factor)) != GRIB_SUCCESS) + return ret; - if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->decimal_scale_factor,&decimal_scale_factor)) != GRIB_SUCCESS) - return ret; + if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->decimal_scale_factor,&decimal_scale_factor)) != GRIB_SUCCESS) + return ret; - if((ret=grib_get_double_internal(grib_handle_of_accessor(a),self->reference_value,&reference_value)) != GRIB_SUCCESS) - return ret; + if((ret=grib_get_double_internal(grib_handle_of_accessor(a),self->reference_value,&reference_value)) != GRIB_SUCCESS) + return ret; - if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->numberOfSecondOrderPackedValues, - &numberOfSecondOrderPackedValues)) != GRIB_SUCCESS) - return ret; + if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->numberOfSecondOrderPackedValues, + &numberOfSecondOrderPackedValues)) != GRIB_SUCCESS) + return ret; - if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->groupWidth, &groupWidth)) != GRIB_SUCCESS) - return ret; + if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->groupWidth, &groupWidth)) != GRIB_SUCCESS) + return ret; - secondaryBitmap=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfSecondOrderPackedValues); - grib_decode_long_array(buf,&pos,1,numberOfSecondOrderPackedValues,secondaryBitmap); - pos = 8 * ( (pos + 7 ) / 8); + secondaryBitmap=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfSecondOrderPackedValues); + grib_decode_long_array(buf,&pos,1,numberOfSecondOrderPackedValues,secondaryBitmap); + pos = 8 * ( (pos + 7 ) / 8); - firstOrderValues=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfGroups); - grib_decode_long_array(buf,&pos,widthOfFirstOrderValues,numberOfGroups,firstOrderValues); - pos = 8 * ( (pos + 7 ) / 8); + firstOrderValues=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfGroups); + grib_decode_long_array(buf,&pos,widthOfFirstOrderValues,numberOfGroups,firstOrderValues); + pos = 8 * ( (pos + 7 ) / 8); - X=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfSecondOrderPackedValues); + X=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfSecondOrderPackedValues); - if (groupWidth>0) { - grib_decode_long_array(buf,&pos,groupWidth,numberOfSecondOrderPackedValues,X); - n=0; - i=-1; - while (n0) { + grib_decode_long_array(buf,&pos,groupWidth,numberOfSecondOrderPackedValues,X); + n=0; + i=-1; + while (ncontext,secondaryBitmap); + grib_context_free(a->context,firstOrderValues); + grib_context_free(a->context,X); - *len=numberOfSecondOrderPackedValues; - grib_context_free(a->context,secondaryBitmap); - grib_context_free(a->context,firstOrderValues); - grib_context_free(a->context,X); - - return ret; + return ret; } static int pack_double(grib_accessor* a, const double* cval, size_t *len) { - grib_context_log(a->context,GRIB_LOG_ERROR,"constant width packing not implemented"); - return GRIB_NOT_IMPLEMENTED; - + grib_context_log(a->context,GRIB_LOG_ERROR,"constant width packing not implemented"); + return GRIB_NOT_IMPLEMENTED; } - diff --git a/src/grib_accessor_class_data_g2shsimple_packing.c b/src/grib_accessor_class_data_g2shsimple_packing.c index 7bdee9a2a..7105df738 100644 --- a/src/grib_accessor_class_data_g2shsimple_packing.c +++ b/src/grib_accessor_class_data_g2shsimple_packing.c @@ -137,84 +137,82 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long v, grib_arguments* args) { - grib_accessor_data_g2shsimple_packing *self =(grib_accessor_data_g2shsimple_packing*)a; + grib_accessor_data_g2shsimple_packing *self =(grib_accessor_data_g2shsimple_packing*)a; - self->numberOfValues = grib_arguments_get_name(grib_handle_of_accessor(a),args,2); - a->flags |= GRIB_ACCESSOR_FLAG_DATA; + self->numberOfValues = grib_arguments_get_name(grib_handle_of_accessor(a),args,2); + a->flags |= GRIB_ACCESSOR_FLAG_DATA; } static int value_count(grib_accessor* a,long* len) { - grib_accessor_data_g2shsimple_packing *self =(grib_accessor_data_g2shsimple_packing*)a; - *len = 0; - return grib_get_long(grib_handle_of_accessor(a),self->numberOfValues,len); + grib_accessor_data_g2shsimple_packing *self =(grib_accessor_data_g2shsimple_packing*)a; + *len = 0; + return grib_get_long(grib_handle_of_accessor(a),self->numberOfValues,len); } - -static int unpack_double(grib_accessor* a, double* val, size_t *len) +static int unpack_double(grib_accessor* a, double* val, size_t *len) { - grib_accessor_data_g2shsimple_packing* self = (grib_accessor_data_g2shsimple_packing*)a; - int err = GRIB_SUCCESS; + grib_accessor_data_g2shsimple_packing* self = (grib_accessor_data_g2shsimple_packing*)a; + int err = GRIB_SUCCESS; - size_t n_vals = 0; + size_t n_vals = 0; - if((err = grib_get_size(grib_handle_of_accessor(a),self->coded_values,&n_vals)) != GRIB_SUCCESS) - return err; + if((err = grib_get_size(grib_handle_of_accessor(a),self->coded_values,&n_vals)) != GRIB_SUCCESS) + return err; - self->dirty=0; + self->dirty=0; /* n_vals = coded_n_vals+1; */ - if(*len < n_vals) - { - *len = n_vals; - return GRIB_ARRAY_TOO_SMALL; - } + if(*len < n_vals) + { + *len = n_vals; + return GRIB_ARRAY_TOO_SMALL; + } + + if((err = grib_get_double_internal(grib_handle_of_accessor(a),self->real_part,val)) != GRIB_SUCCESS) + return err; + + val++; + + if((err = grib_get_double_array_internal(grib_handle_of_accessor(a),self->coded_values,val,&n_vals)) != GRIB_SUCCESS) + return err; + + *len = n_vals; - if((err = grib_get_double_internal(grib_handle_of_accessor(a),self->real_part,val)) != GRIB_SUCCESS) return err; - - val++; - - if((err = grib_get_double_array_internal(grib_handle_of_accessor(a),self->coded_values,val,&n_vals)) != GRIB_SUCCESS) - return err; - - *len = n_vals; - - return err; } static int pack_double(grib_accessor* a, const double* val, size_t *len) { - grib_accessor_data_g2shsimple_packing* self = (grib_accessor_data_g2shsimple_packing*)a; - int err = GRIB_SUCCESS; + grib_accessor_data_g2shsimple_packing* self = (grib_accessor_data_g2shsimple_packing*)a; + int err = GRIB_SUCCESS; - size_t coded_n_vals = *len-1; - size_t n_vals = *len; + size_t coded_n_vals = *len-1; + size_t n_vals = *len; - if (*len ==0) return GRIB_NO_VALUES; + if (*len ==0) return GRIB_NO_VALUES; - self->dirty=1; + self->dirty=1; - if((err = grib_set_double_internal(grib_handle_of_accessor(a),self->real_part,*val)) != GRIB_SUCCESS) - return err; - { - /* Make sure we can decode it again */ - double ref = 1e-100; - grib_get_double_internal(grib_handle_of_accessor(a),self->real_part,&ref); - Assert(ref == *val); - } + if((err = grib_set_double_internal(grib_handle_of_accessor(a),self->real_part,*val)) != GRIB_SUCCESS) + return err; + { + /* Make sure we can decode it again */ + double ref = 1e-100; + grib_get_double_internal(grib_handle_of_accessor(a),self->real_part,&ref); + Assert(ref == *val); + } - val++; + val++; - if((err = grib_set_double_array_internal(grib_handle_of_accessor(a),self->coded_values,val,coded_n_vals)) != GRIB_SUCCESS) - return err; + if((err = grib_set_double_array_internal(grib_handle_of_accessor(a),self->coded_values,val,coded_n_vals)) != GRIB_SUCCESS) + return err; - *len = n_vals; + *len = n_vals; if((err = grib_set_long_internal(grib_handle_of_accessor(a),self->numberOfValues,(long)n_vals)) != GRIB_SUCCESS) + return err; + return err; - - return err; } - diff --git a/src/grib_accessor_class_data_secondary_bitmap.c b/src/grib_accessor_class_data_secondary_bitmap.c index 1dd0606c2..e71ea455d 100644 --- a/src/grib_accessor_class_data_secondary_bitmap.c +++ b/src/grib_accessor_class_data_secondary_bitmap.c @@ -138,118 +138,112 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long v, grib_arguments* args) { - grib_accessor_data_secondary_bitmap *self =(grib_accessor_data_secondary_bitmap*)a; + grib_accessor_data_secondary_bitmap *self =(grib_accessor_data_secondary_bitmap*)a; + self->primary_bitmap = grib_arguments_get_name(grib_handle_of_accessor(a),args,0); + self->secondary_bitmap = grib_arguments_get_name(grib_handle_of_accessor(a),args,1); + self->missing_value = grib_arguments_get_name(grib_handle_of_accessor(a),args,2); + self->expand_by = grib_arguments_get_name(grib_handle_of_accessor(a),args,3); - - self->primary_bitmap = grib_arguments_get_name(grib_handle_of_accessor(a),args,0); - self->secondary_bitmap = grib_arguments_get_name(grib_handle_of_accessor(a),args,1); - self->missing_value = grib_arguments_get_name(grib_handle_of_accessor(a),args,2); - self->expand_by = grib_arguments_get_name(grib_handle_of_accessor(a),args,3); - - a->length = 0; + a->length = 0; } + static void dump(grib_accessor* a, grib_dumper* dumper) { - grib_dump_values(dumper,a); + grib_dump_values(dumper,a); } - - - -static int unpack_double(grib_accessor* a, double* val, size_t *len) +static int unpack_double(grib_accessor* a, double* val, size_t *len) { - grib_accessor_data_secondary_bitmap* self = (grib_accessor_data_secondary_bitmap*)a; + grib_accessor_data_secondary_bitmap* self = (grib_accessor_data_secondary_bitmap*)a; - size_t i = 0; - size_t j = 0; - size_t k = 0; - size_t m = 0; - size_t n_vals = 0; - long nn=0; - long expand_by =0; - int err = 0; - size_t primary_len; - size_t secondary_len; - double* primary_vals; - double* secondary_vals; - err=grib_value_count(a,&nn); - n_vals=nn; - if (err) return err; + size_t i = 0; + size_t j = 0; + size_t k = 0; + size_t m = 0; + size_t n_vals = 0; + long nn=0; + long expand_by =0; + int err = 0; + size_t primary_len; + size_t secondary_len; + double* primary_vals; + double* secondary_vals; + err=grib_value_count(a,&nn); + n_vals=nn; + if (err) return err; - if(*len < n_vals) - { - *len = n_vals; - return GRIB_ARRAY_TOO_SMALL; - } - - if((err = grib_get_long(grib_handle_of_accessor(a),self->expand_by,&expand_by)) != GRIB_SUCCESS) - return err; - - if((err = grib_get_size(grib_handle_of_accessor(a),self->primary_bitmap,&primary_len)) != GRIB_SUCCESS) - return err; - - if((err = grib_get_size(grib_handle_of_accessor(a),self->secondary_bitmap,&secondary_len)) != GRIB_SUCCESS) - return err; - - primary_vals = (double*)grib_context_malloc(a->context,primary_len*sizeof(double)); - if(!primary_vals) - return GRIB_OUT_OF_MEMORY; - - secondary_vals = (double*)grib_context_malloc(a->context,secondary_len*sizeof(double)); - if(!secondary_vals) - { - grib_context_free(a->context,primary_vals); - return GRIB_OUT_OF_MEMORY; - } - - if((err = grib_get_double_array_internal(grib_handle_of_accessor(a),self->primary_bitmap,primary_vals,&primary_len)) != GRIB_SUCCESS) - { - grib_context_free(a->context,secondary_vals); - grib_context_free(a->context,primary_vals); - return err; - } - - if((err = grib_get_double_array_internal(grib_handle_of_accessor(a),self->secondary_bitmap,secondary_vals,&secondary_len)) != GRIB_SUCCESS) - { - grib_context_free(a->context,secondary_vals); - grib_context_free(a->context,primary_vals); - return err; - } - - k = 0; - m = 0; - for(i=0;i < primary_len;i++) - { - /* if(primary_vals[i]) f++; */ - if(primary_vals[i]) + if(*len < n_vals) { - for(j = 0; j < expand_by; j++) - val[k++] = secondary_vals[m++]; - } - else { - for(j = 0; j < expand_by; j++) - val[k++] = 0; + *len = n_vals; + return GRIB_ARRAY_TOO_SMALL; } - } + if((err = grib_get_long(grib_handle_of_accessor(a),self->expand_by,&expand_by)) != GRIB_SUCCESS) + return err; - Assert(k <= *len); - Assert(m <= secondary_len); + if((err = grib_get_size(grib_handle_of_accessor(a),self->primary_bitmap,&primary_len)) != GRIB_SUCCESS) + return err; - /*printf("FOOBAR %d %d %ld %d\n",f,primary_len,expand_by,n_vals);*/ + if((err = grib_get_size(grib_handle_of_accessor(a),self->secondary_bitmap,&secondary_len)) != GRIB_SUCCESS) + return err; - *len = n_vals; + primary_vals = (double*)grib_context_malloc(a->context,primary_len*sizeof(double)); + if(!primary_vals) + return GRIB_OUT_OF_MEMORY; - grib_context_free(a->context,primary_vals); - grib_context_free(a->context,secondary_vals); - return err; + secondary_vals = (double*)grib_context_malloc(a->context,secondary_len*sizeof(double)); + if(!secondary_vals) + { + grib_context_free(a->context,primary_vals); + return GRIB_OUT_OF_MEMORY; + } + + if((err = grib_get_double_array_internal(grib_handle_of_accessor(a),self->primary_bitmap,primary_vals,&primary_len)) != GRIB_SUCCESS) + { + grib_context_free(a->context,secondary_vals); + grib_context_free(a->context,primary_vals); + return err; + } + + if((err = grib_get_double_array_internal(grib_handle_of_accessor(a),self->secondary_bitmap,secondary_vals,&secondary_len)) != GRIB_SUCCESS) + { + grib_context_free(a->context,secondary_vals); + grib_context_free(a->context,primary_vals); + return err; + } + + k = 0; + m = 0; + for(i=0;i < primary_len;i++) + { + /* if(primary_vals[i]) f++; */ + if(primary_vals[i]) + { + for(j = 0; j < expand_by; j++) + val[k++] = secondary_vals[m++]; + } + else { + for(j = 0; j < expand_by; j++) + val[k++] = 0; + } + } + + Assert(k <= *len); + Assert(m <= secondary_len); + + /*printf("FOOBAR %d %d %ld %d\n",f,primary_len,expand_by,n_vals);*/ + + *len = n_vals; + + grib_context_free(a->context,primary_vals); + grib_context_free(a->context,secondary_vals); + return err; } - static int get_native_type(grib_accessor* a) { - /* grib_accessor_data_secondary_bitmap* self = (grib_accessor_data_secondary_bitmap*)a; + /* grib_accessor_data_secondary_bitmap* self = (grib_accessor_data_secondary_bitmap*)a; return grib_accessor_get_native_type(grib_find_accessor(grib_handle_of_accessor(a),self->coded_values));*/ - return GRIB_TYPE_DOUBLE; + return GRIB_TYPE_DOUBLE; } diff --git a/src/grib_accessor_class_data_sh_unpacked.c b/src/grib_accessor_class_data_sh_unpacked.c index 2bceb51f3..111d65d14 100644 --- a/src/grib_accessor_class_data_sh_unpacked.c +++ b/src/grib_accessor_class_data_sh_unpacked.c @@ -190,214 +190,208 @@ static void init(grib_accessor* a,const long v, grib_arguments* args) a->length=0; } - static int value_count(grib_accessor* a,long* count) { - grib_accessor_data_sh_unpacked *self =(grib_accessor_data_sh_unpacked*)a; - int ret = 0; + grib_accessor_data_sh_unpacked *self =(grib_accessor_data_sh_unpacked*)a; + int ret = 0; - long sub_j= 0; - long sub_k= 0; - long sub_m= 0; + long sub_j= 0; + long sub_k= 0; + long sub_m= 0; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_j,&sub_j)) != GRIB_SUCCESS) - return ret; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_k,&sub_k)) != GRIB_SUCCESS) - return ret; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_m,&sub_m)) != GRIB_SUCCESS) - return ret; + if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_j,&sub_j)) != GRIB_SUCCESS) + return ret; + if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_k,&sub_k)) != GRIB_SUCCESS) + return ret; + if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_m,&sub_m)) != GRIB_SUCCESS) + return ret; - if (sub_j != sub_k || sub_j!=sub_m ) { - grib_context_log(a->context,GRIB_LOG_ERROR,"sub_j=%ld, sub_k=%ld, sub_m=%ld\n",sub_j,sub_k,sub_m); - Assert ((sub_j == sub_k) && (sub_j == sub_m)); - } - *count=(sub_j+1)*(sub_j+2); - return ret; + if (sub_j != sub_k || sub_j!=sub_m ) { + grib_context_log(a->context,GRIB_LOG_ERROR,"sub_j=%ld, sub_k=%ld, sub_m=%ld\n",sub_j,sub_k,sub_m); + Assert ((sub_j == sub_k) && (sub_j == sub_m)); + } + *count=(sub_j+1)*(sub_j+2); + return ret; } - -static int unpack_double(grib_accessor* a, double* val, size_t *len) +static int unpack_double(grib_accessor* a, double* val, size_t *len) { - grib_accessor_data_sh_unpacked* self = (grib_accessor_data_sh_unpacked*)a; + grib_accessor_data_sh_unpacked* self = (grib_accessor_data_sh_unpacked*)a; - size_t i = 0; - int ret = GRIB_SUCCESS; - long hcount = 0; - long lcount = 0; - long hpos = 0; - long lup = 0; - long mmax = 0; - long n_vals = 0; - double *scals = NULL; - /* double *pscals=NULL; */ - double dummy=0; + size_t i = 0; + int ret = GRIB_SUCCESS; + long hcount = 0; + long lcount = 0; + long hpos = 0; + long lup = 0; + long mmax = 0; + long n_vals = 0; + double *scals = NULL; + /* double *pscals=NULL; */ + double dummy=0; - double s = 0; - double d = 0; - double laplacianOperator = 0; - unsigned char* buf = NULL; - unsigned char* hres = NULL; - unsigned char* lres = NULL; - unsigned long packed_offset; - long lpos = 0; + double s = 0; + double d = 0; + double laplacianOperator = 0; + unsigned char* buf = NULL; + unsigned char* hres = NULL; + unsigned char* lres = NULL; + unsigned long packed_offset; + long lpos = 0; - long maxv = 0; - long GRIBEX_sh_bug_present =0; - long ieee_floats = 0; + long maxv = 0; + long GRIBEX_sh_bug_present =0; + long ieee_floats = 0; - long offsetdata = 0; - long bits_per_value = 0; - double reference_value = 0; - long binary_scale_factor = 0; - long decimal_scale_factor = 0; + long offsetdata = 0; + long bits_per_value = 0; + double reference_value = 0; + long binary_scale_factor = 0; + long decimal_scale_factor = 0; + long sub_j= 0; + long sub_k= 0; + long sub_m= 0; + long pen_j= 0; + long pen_k= 0; + long pen_m= 0; - long sub_j= 0; - long sub_k= 0; - long sub_m= 0; - long pen_j= 0; - long pen_k= 0; - long pen_m= 0; + double operat= 0; + int bytes; + int err=0; - double operat= 0; - int bytes; - int err=0; + decode_float_proc decode_float = NULL; - decode_float_proc decode_float = NULL; + n_vals = 0; + err=grib_value_count(a,&n_vals); + if (err) return err; - n_vals = 0; - err=grib_value_count(a,&n_vals); - if (err) return err; + if(*len < n_vals){ + *len = n_vals; + return GRIB_ARRAY_TOO_SMALL; + } - if(*len < n_vals){ - *len = n_vals; - return GRIB_ARRAY_TOO_SMALL; - } + if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->offsetdata,&offsetdata)) + != GRIB_SUCCESS) return ret; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->offsetdata,&offsetdata)) - != GRIB_SUCCESS) return ret; + if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->GRIBEX_sh_bug_present,&GRIBEX_sh_bug_present)) + != GRIB_SUCCESS) + return ret; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->GRIBEX_sh_bug_present,&GRIBEX_sh_bug_present)) - != GRIB_SUCCESS) - return ret; + if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->ieee_floats,&ieee_floats)) != GRIB_SUCCESS) + return ret; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->ieee_floats,&ieee_floats)) != GRIB_SUCCESS) - return ret; + if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_j,&sub_j)) != GRIB_SUCCESS) + return ret; + if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_k,&sub_k)) != GRIB_SUCCESS) + return ret; + if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_m,&sub_m)) != GRIB_SUCCESS) + return ret; + if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->pen_j,&pen_j)) != GRIB_SUCCESS) + return ret; + if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->pen_k,&pen_k)) != GRIB_SUCCESS) + return ret; + if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->pen_m,&pen_m)) != GRIB_SUCCESS) + return ret; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_j,&sub_j)) != GRIB_SUCCESS) - return ret; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_k,&sub_k)) != GRIB_SUCCESS) - return ret; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_m,&sub_m)) != GRIB_SUCCESS) - return ret; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->pen_j,&pen_j)) != GRIB_SUCCESS) - return ret; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->pen_k,&pen_k)) != GRIB_SUCCESS) - return ret; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->pen_m,&pen_m)) != GRIB_SUCCESS) - return ret; + self->dirty=0; - self->dirty=0; - - switch (ieee_floats) { + switch (ieee_floats) { case 0: - decode_float=grib_long_to_ibm; - bytes=4; - break; + decode_float=grib_long_to_ibm; + bytes=4; + break; case 1: - decode_float=grib_long_to_ieee; - bytes=4; - break; + decode_float=grib_long_to_ieee; + bytes=4; + break; case 2: - decode_float=grib_long_to_ieee64; - bytes=8; - break; + decode_float=grib_long_to_ieee64; + bytes=8; + break; default: - return GRIB_NOT_IMPLEMENTED; - } - - Assert (sub_j == sub_k); - Assert (sub_j == sub_m); - Assert (pen_j == pen_k); - Assert (pen_j == pen_m); - - buf = (unsigned char*)grib_handle_of_accessor(a)->buffer->data; - - maxv = pen_j+1; - - buf += offsetdata; - hres = buf; - lres = buf; - - packed_offset = offsetdata + bytes*(sub_k+1)*(sub_k+2); - - lpos = 8*(packed_offset-offsetdata); - - s = grib_power(binary_scale_factor,2); - d = grib_power(-decimal_scale_factor,10) ; - - scals = (double*)grib_context_malloc(a->context,maxv*sizeof(double)); - Assert(scals); - if((ret = grib_get_double_internal(grib_handle_of_accessor(a),self->laplacianOperator,&laplacianOperator)) - != GRIB_SUCCESS) - return ret; - - scals[0] = 0; - for(i=1;ibuffer->data; - while(maxv>0) - { - lup=mmax; - if(sub_k>=0) - { - for(hcount=0;hcountcontext,maxv*sizeof(double)); + Assert(scals); + if((ret = grib_get_double_internal(grib_handle_of_accessor(a),self->laplacianOperator,&laplacianOperator)) + != GRIB_SUCCESS) + return ret; + + scals[0] = 0; + for(i=1;i0) { - dummy = d * (double) ((grib_decode_unsigned_long(lres, &lpos, - bits_per_value)*s)+reference_value); - dummy = d * (double) ((grib_decode_unsigned_long(lres, &lpos, - bits_per_value)*s)+reference_value); - lup++; + lup=mmax; + if(sub_k>=0) + { + for(hcount=0;hcount= i); - *len = n_vals; + Assert(*len >= i); + *len = n_vals; - (void)dummy; /* suppress gcc warning */ - grib_context_free(a->context,scals); - - return ret; + (void)dummy; /* suppress gcc warning */ + grib_context_free(a->context,scals); + return ret; } - diff --git a/src/grib_accessor_class_data_shsimple_packing.c b/src/grib_accessor_class_data_shsimple_packing.c index eb16418f2..23e22e9cd 100644 --- a/src/grib_accessor_class_data_shsimple_packing.c +++ b/src/grib_accessor_class_data_shsimple_packing.c @@ -136,50 +136,46 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long v, grib_arguments* args) { - grib_accessor_data_shsimple_packing *self =(grib_accessor_data_shsimple_packing*)a; + grib_accessor_data_shsimple_packing *self =(grib_accessor_data_shsimple_packing*)a; - self->coded_values = grib_arguments_get_name(grib_handle_of_accessor(a),args,0); - self->real_part = grib_arguments_get_name(grib_handle_of_accessor(a),args,1); - a->flags |= GRIB_ACCESSOR_FLAG_DATA; + self->coded_values = grib_arguments_get_name(grib_handle_of_accessor(a),args,0); + self->real_part = grib_arguments_get_name(grib_handle_of_accessor(a),args,1); + a->flags |= GRIB_ACCESSOR_FLAG_DATA; - a->length = 0; + a->length = 0; } static void dump(grib_accessor* a, grib_dumper* dumper) { - grib_dump_values(dumper,a); + grib_dump_values(dumper,a); } - static int pack_double(grib_accessor* a, const double* val, size_t *len) { - grib_accessor_data_shsimple_packing* self = (grib_accessor_data_shsimple_packing*)a; - int err = GRIB_SUCCESS; + grib_accessor_data_shsimple_packing* self = (grib_accessor_data_shsimple_packing*)a; + int err = GRIB_SUCCESS; - size_t coded_n_vals = *len-1; - size_t n_vals = *len; + size_t coded_n_vals = *len-1; + size_t n_vals = *len; - self->dirty=1; + self->dirty=1; - if (*len ==0) return GRIB_NO_VALUES; + if (*len ==0) return GRIB_NO_VALUES; + + if((err = grib_set_double_internal(grib_handle_of_accessor(a),self->real_part,*val)) != GRIB_SUCCESS) + return err; + + val++; + + if((err = grib_set_double_array_internal(grib_handle_of_accessor(a),self->coded_values,val,coded_n_vals)) != GRIB_SUCCESS) + return err; + + *len = n_vals; - if((err = grib_set_double_internal(grib_handle_of_accessor(a),self->real_part,*val)) != GRIB_SUCCESS) return err; - - - val++; - - if((err = grib_set_double_array_internal(grib_handle_of_accessor(a),self->coded_values,val,coded_n_vals)) != GRIB_SUCCESS) - return err; - - - *len = n_vals; - - return err; - } -static int get_native_type(grib_accessor* a){ - return GRIB_TYPE_DOUBLE; +static int get_native_type(grib_accessor* a) +{ + return GRIB_TYPE_DOUBLE; } - diff --git a/src/grib_accessor_class_double.c b/src/grib_accessor_class_double.c index 7e1e50b97..04e8cac78 100644 --- a/src/grib_accessor_class_double.c +++ b/src/grib_accessor_class_double.c @@ -132,100 +132,96 @@ static void init_class(grib_accessor_class* c) /* END_CLASS_IMP */ - - -static int get_native_type(grib_accessor* a){ - return GRIB_TYPE_DOUBLE; +static int get_native_type(grib_accessor* a) +{ + return GRIB_TYPE_DOUBLE; } +static int unpack_string(grib_accessor*a , char* v, size_t *len) +{ + double val = 0; + size_t l = 1; + char repres[1024]; -static int unpack_string(grib_accessor*a , char* v, size_t *len){ - - double val = 0; - size_t l = 1; - char repres[1024]; - - grib_unpack_double (a , &val, &l); + grib_unpack_double (a , &val, &l); if ((val == GRIB_MISSING_DOUBLE) && ((a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) != 0) ) - sprintf(repres,"MISSING"); + sprintf(repres,"MISSING"); else - sprintf(repres,"%g", val); + sprintf(repres,"%g", val); - l = strlen(repres)+1; + l = strlen(repres)+1; - if(l >*len ){ - grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_long : unpack_string : Buffer too small for %s ", a->name ); + if(l >*len ){ + grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_long : unpack_string : Buffer too small for %s ", a->name ); + + *len = l; + return GRIB_BUFFER_TOO_SMALL; + } + grib_context_log(a->context,GRIB_LOG_DEBUG, "grib_accessor_long: Casting double %s to string ", a->name); *len = l; - return GRIB_BUFFER_TOO_SMALL; - } - grib_context_log(a->context,GRIB_LOG_DEBUG, "grib_accessor_long: Casting double %s to string ", a->name); - - *len = l; - - strcpy(v,repres); - return GRIB_SUCCESS; - + strcpy(v,repres); + return GRIB_SUCCESS; } + static void dump(grib_accessor* a, grib_dumper* dumper) { - grib_dump_values(dumper,a); + grib_dump_values(dumper,a); } -static int compare(grib_accessor* a, grib_accessor* b) { - int retval=0; - double *aval=0; - double *bval=0; +static int compare(grib_accessor* a, grib_accessor* b) +{ + int retval=0; + double *aval=0; + double *bval=0; - size_t alen = 0; - size_t blen = 0; - long count = 0; - int err=0; + size_t alen = 0; + size_t blen = 0; + long count = 0; + int err=0; - err=grib_value_count(a,&count); - if (err) return err; - alen=count; + err=grib_value_count(a,&count); + if (err) return err; + alen=count; - err=grib_value_count(b,&count); - if (err) return err; - blen=count; + err=grib_value_count(b,&count); + if (err) return err; + blen=count; - if (alen != blen) return GRIB_COUNT_MISMATCH; + if (alen != blen) return GRIB_COUNT_MISMATCH; - aval=(double*)grib_context_malloc(a->context,alen*sizeof(double)); - bval=(double*)grib_context_malloc(b->context,blen*sizeof(double)); + aval=(double*)grib_context_malloc(a->context,alen*sizeof(double)); + bval=(double*)grib_context_malloc(b->context,blen*sizeof(double)); - grib_unpack_double(a,aval,&alen); - grib_unpack_double(b,bval,&blen); + grib_unpack_double(a,aval,&alen); + grib_unpack_double(b,bval,&blen); - retval = GRIB_SUCCESS; - while (alen != 0) { - if (*bval != *aval) retval = GRIB_DOUBLE_VALUE_MISMATCH; - alen--; - } + retval = GRIB_SUCCESS; + while (alen != 0) { + if (*bval != *aval) retval = GRIB_DOUBLE_VALUE_MISMATCH; + alen--; + } - grib_context_free(a->context,aval); - grib_context_free(b->context,bval); - - return retval; + grib_context_free(a->context,aval); + grib_context_free(b->context,bval); + return retval; } -static int pack_missing(grib_accessor* a){ +static int pack_missing(grib_accessor* a) +{ + size_t one = 1; + double value = GRIB_MISSING_DOUBLE; - size_t one = 1; - double value = GRIB_MISSING_DOUBLE; - - if(a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) - return grib_pack_double(a,&value,&one); - return GRIB_VALUE_CANNOT_BE_MISSING; + if(a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) + return grib_pack_double(a,&value,&one); + return GRIB_VALUE_CANNOT_BE_MISSING; } /* static int is_missing(grib_accessor* a){ - size_t one = 1; double value = GRIB_MISSING_DOUBLE; diff --git a/src/grib_accessor_class_element.c b/src/grib_accessor_class_element.c index 36d571975..edc097093 100644 --- a/src/grib_accessor_class_element.c +++ b/src/grib_accessor_class_element.c @@ -139,79 +139,76 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* c) { - grib_accessor_element* self = (grib_accessor_element*)a; - int n = 0; - - self->array = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->element = grib_arguments_get_long(grib_handle_of_accessor(a),c,n++); + grib_accessor_element* self = (grib_accessor_element*)a; + int n = 0; + self->array = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->element = grib_arguments_get_long(grib_handle_of_accessor(a),c,n++); } -static int unpack_long (grib_accessor* a, long* val, size_t *len) +static int unpack_long(grib_accessor* a, long* val, size_t *len) { - grib_accessor_element* self = (grib_accessor_element*)a; - int ret = 0; - size_t size=0; - long* ar=NULL; - grib_context* c=a->context; + grib_accessor_element* self = (grib_accessor_element*)a; + int ret = 0; + size_t size=0; + long* ar=NULL; + grib_context* c=a->context; - if(*len < 1){ - ret = GRIB_ARRAY_TOO_SMALL; + if(*len < 1){ + ret = GRIB_ARRAY_TOO_SMALL; + return ret; + } + + if((ret = grib_get_size(grib_handle_of_accessor(a), self->array,&size)) != GRIB_SUCCESS) + return ret; + + ar=(long*)grib_context_malloc_clear(c,size*sizeof(long)); + if (!ar) { + grib_context_log(c,GRIB_LOG_ERROR,"unable to allocate %d bytes",size*sizeof(long)); + return GRIB_OUT_OF_MEMORY; + } + + if((ret = grib_get_long_array_internal(grib_handle_of_accessor(a), self->array,ar,&size)) != GRIB_SUCCESS) + return ret; + + if (self->element>=size) return GRIB_INTERNAL_ERROR; + *val=ar[self->element]; + + grib_context_free(c,ar); return ret; - } - - if((ret = grib_get_size(grib_handle_of_accessor(a), self->array,&size)) != GRIB_SUCCESS) - return ret; - - ar=(long*)grib_context_malloc_clear(c,size*sizeof(long)); - if (!ar) { - grib_context_log(c,GRIB_LOG_ERROR,"unable to allocate %d bytes",size*sizeof(long)); - return GRIB_OUT_OF_MEMORY; - } - - if((ret = grib_get_long_array_internal(grib_handle_of_accessor(a), self->array,ar,&size)) != GRIB_SUCCESS) - return ret; - - if (self->element>=size) return GRIB_INTERNAL_ERROR; - *val=ar[self->element]; - - grib_context_free(c,ar); - return ret; } - static int pack_long(grib_accessor* a, const long* val, size_t *len) { - grib_accessor_element* self = (grib_accessor_element*)a; - int ret = 0; - size_t size=0; - long* ar=NULL; - grib_context* c=a->context; + grib_accessor_element* self = (grib_accessor_element*)a; + int ret = 0; + size_t size=0; + long* ar=NULL; + grib_context* c=a->context; - if(*len < 1){ - ret = GRIB_ARRAY_TOO_SMALL; + if(*len < 1){ + ret = GRIB_ARRAY_TOO_SMALL; + return ret; + } + + if((ret = grib_get_size(grib_handle_of_accessor(a), self->array,&size)) != GRIB_SUCCESS) + return ret; + + ar=(long*)grib_context_malloc_clear(c,size*sizeof(long)); + if (!ar) { + grib_context_log(c,GRIB_LOG_ERROR,"unable to allocate %d bytes",size*sizeof(long)); + return GRIB_OUT_OF_MEMORY; + } + + if((ret = grib_get_long_array_internal(grib_handle_of_accessor(a), self->array,ar,&size)) != GRIB_SUCCESS) + return ret; + + + ar[self->element]=*val; + + if((ret = grib_set_long_array_internal(grib_handle_of_accessor(a), self->array,ar,size)) != GRIB_SUCCESS) + return ret; + + grib_context_free(c,ar); return ret; - } - - if((ret = grib_get_size(grib_handle_of_accessor(a), self->array,&size)) != GRIB_SUCCESS) - return ret; - - ar=(long*)grib_context_malloc_clear(c,size*sizeof(long)); - if (!ar) { - grib_context_log(c,GRIB_LOG_ERROR,"unable to allocate %d bytes",size*sizeof(long)); - return GRIB_OUT_OF_MEMORY; - } - - if((ret = grib_get_long_array_internal(grib_handle_of_accessor(a), self->array,ar,&size)) != GRIB_SUCCESS) - return ret; - - - ar[self->element]=*val; - - if((ret = grib_set_long_array_internal(grib_handle_of_accessor(a), self->array,ar,size)) != GRIB_SUCCESS) - return ret; - - grib_context_free(c,ar); - return ret; } - diff --git a/src/grib_accessor_class_g1_message_length.c b/src/grib_accessor_class_g1_message_length.c index aa0a81d67..070ed2385 100644 --- a/src/grib_accessor_class_g1_message_length.c +++ b/src/grib_accessor_class_g1_message_length.c @@ -136,127 +136,127 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a, const long len , grib_arguments* args ) { grib_accessor_g1_message_length *self = (grib_accessor_g1_message_length*)a; - self->sec4_length = grib_arguments_get_name(grib_handle_of_accessor(a),args,0); + self->sec4_length = grib_arguments_get_name(grib_handle_of_accessor(a),args,0); } int grib_get_g1_message_size(grib_handle* h,grib_accessor* tl,grib_accessor* s4, - long* total_length,long* sec4_len) + long* total_length,long* sec4_len) { - unsigned long tlen,slen; - long off; + unsigned long tlen,slen; + long off; - if(!tl) return GRIB_NOT_FOUND; - if(!s4) { - *sec4_len = 0; - off = tl->offset * 8; - *total_length = grib_decode_unsigned_long(h->buffer->data, &off, tl->length * 8); - return GRIB_SUCCESS; - } + if(!tl) return GRIB_NOT_FOUND; + if(!s4) { + *sec4_len = 0; + off = tl->offset * 8; + *total_length = grib_decode_unsigned_long(h->buffer->data, &off, tl->length * 8); + return GRIB_SUCCESS; + } - off = tl->offset * 8; - tlen = grib_decode_unsigned_long(h->buffer->data, &off, tl->length * 8); + off = tl->offset * 8; + tlen = grib_decode_unsigned_long(h->buffer->data, &off, tl->length * 8); - off = s4->offset * 8; - slen = grib_decode_unsigned_long(h->buffer->data, &off, s4->length * 8); + off = s4->offset * 8; + slen = grib_decode_unsigned_long(h->buffer->data, &off, s4->length * 8); - /* printf("\nlarge grib tlen=%ld slen=%ld diff=%ld\n",tlen&0x7fffff,slen,tlen-slen); */ + /* printf("\nlarge grib tlen=%ld slen=%ld diff=%ld\n",tlen&0x7fffff,slen,tlen-slen); */ - if(slen < 120 && (tlen & 0x800000)) - { - /* printf("DECODING large grib tlen=%ld slen=%ld\n",tlen,slen); */ + if(slen < 120 && (tlen & 0x800000)) + { + /* printf("DECODING large grib tlen=%ld slen=%ld\n",tlen,slen); */ - tlen &= 0x7fffff; - tlen *= 120; - tlen -= slen; - tlen += 4; + tlen &= 0x7fffff; + tlen *= 120; + tlen -= slen; + tlen += 4; - slen = tlen - s4->offset - 4; /* 4 is for 7777 */; + slen = tlen - s4->offset - 4; /* 4 is for 7777 */; - /*printf("DECODING large grib total=%ld section4=%ld\n",tlen,slen);*/ - } + /*printf("DECODING large grib total=%ld section4=%ld\n",tlen,slen);*/ + } - *total_length = tlen; - *sec4_len = slen; + *total_length = tlen; + *sec4_len = slen; - return GRIB_SUCCESS; + return GRIB_SUCCESS; } static int pack_long(grib_accessor* a, const long* val,size_t *len) { - grib_accessor_g1_message_length *self = (grib_accessor_g1_message_length*)a; - /*grib_accessor_class* super = *(a->cclass->super);*/ + grib_accessor_g1_message_length *self = (grib_accessor_g1_message_length*)a; + /*grib_accessor_class* super = *(a->cclass->super);*/ - /* Here we assume that the totalLength will be coded AFTER the section4 length, and - the section4 length will be overwritten by the totalLength accessor for large GRIBs */ + /* Here we assume that the totalLength will be coded AFTER the section4 length, and + the section4 length will be overwritten by the totalLength accessor for large GRIBs */ - grib_accessor* s4 = grib_find_accessor(grib_handle_of_accessor(a),self->sec4_length); - long tlen,slen; - long t120; - int ret; + grib_accessor* s4 = grib_find_accessor(grib_handle_of_accessor(a),self->sec4_length); + long tlen,slen; + long t120; + int ret; - tlen = *val; - if((tlen < 0x800000 || !a->context->gribex_mode_on) && tlen < 0xFFFFFF ) - { - /* printf("ENCODING small grib total = %ld\n",tlen); */ - /*return super->pack_long(a,val,len);*/ + tlen = *val; + if((tlen < 0x800000 || !a->context->gribex_mode_on) && tlen < 0xFFFFFF ) + { + /* printf("ENCODING small grib total = %ld\n",tlen); */ + /*return super->pack_long(a,val,len);*/ - /* Do not directly call pack_long on base class */ - /* because in this special case we want to skip the checks. */ - /* So we call the helper function which has an extra argument */ - return pack_long_unsigned_helper(a,val,len, /*check=*/0); - } + /* Do not directly call pack_long on base class */ + /* because in this special case we want to skip the checks. */ + /* So we call the helper function which has an extra argument */ + return pack_long_unsigned_helper(a,val,len, /*check=*/0); + } - if(!s4) return GRIB_NOT_FOUND; + if(!s4) return GRIB_NOT_FOUND; - /* special case for large GRIBs */ - tlen -= 4; - t120 = (tlen+119)/120; - slen = t120*120 - tlen; - tlen = 0x800000 | t120; + /* special case for large GRIBs */ + tlen -= 4; + t120 = (tlen+119)/120; + slen = t120*120 - tlen; + tlen = 0x800000 | t120; - /* printf("ENCODING large grib total = %ld tlen=%ld slen=%ld \n",*val,tlen,slen); */ - *len = 1; - if((ret = grib_pack_long(s4,&slen,len)) != GRIB_SUCCESS) - return ret; + /* printf("ENCODING large grib total = %ld tlen=%ld slen=%ld \n",*val,tlen,slen); */ + *len = 1; + if((ret = grib_pack_long(s4,&slen,len)) != GRIB_SUCCESS) + return ret; - *len = 1; - /* Do not do the length checks in this special case */ - if((ret = pack_long_unsigned_helper(a,&tlen,len,/*check=*/0)) != GRIB_SUCCESS) - return ret; - /* + *len = 1; + /* Do not do the length checks in this special case */ + if((ret = pack_long_unsigned_helper(a,&tlen,len,/*check=*/0)) != GRIB_SUCCESS) + return ret; + /* if((ret = super->pack_long(a,&tlen,len)) != GRIB_SUCCESS) return ret; - */ + */ - { - long total_length = -1, sec4_length = -1; - grib_get_g1_message_size(grib_handle_of_accessor(a), - a, - grib_find_accessor(grib_handle_of_accessor(a),self->sec4_length), - &total_length, - &sec4_length); + { + long total_length = -1, sec4_length = -1; + grib_get_g1_message_size(grib_handle_of_accessor(a), + a, + grib_find_accessor(grib_handle_of_accessor(a),self->sec4_length), + &total_length, + &sec4_length); - Assert(total_length == *val); - } + Assert(total_length == *val); + } - return GRIB_SUCCESS; + return GRIB_SUCCESS; } static int unpack_long(grib_accessor* a, long* val,size_t *len) { - grib_accessor_g1_message_length *self = (grib_accessor_g1_message_length*)a; - int ret; + grib_accessor_g1_message_length *self = (grib_accessor_g1_message_length*)a; + int ret; - long total_length, sec4_length; + long total_length, sec4_length; - if((ret = grib_get_g1_message_size(grib_handle_of_accessor(a), - a, - grib_find_accessor(grib_handle_of_accessor(a),self->sec4_length), - &total_length, - &sec4_length)) != GRIB_SUCCESS) - return ret; + if((ret = grib_get_g1_message_size(grib_handle_of_accessor(a), + a, + grib_find_accessor(grib_handle_of_accessor(a),self->sec4_length), + &total_length, + &sec4_length)) != GRIB_SUCCESS) + return ret; - *val = total_length; - return GRIB_SUCCESS; + *val = total_length; + return GRIB_SUCCESS; } diff --git a/src/grib_accessor_class_g1area.c b/src/grib_accessor_class_g1area.c index 48a550a17..89dc9a972 100644 --- a/src/grib_accessor_class_g1area.c +++ b/src/grib_accessor_class_g1area.c @@ -141,94 +141,91 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* c) { - grib_accessor_g1area* self = (grib_accessor_g1area*)a; - int n = 0; - - self->laf = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->lof = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->lal = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->lol = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + grib_accessor_g1area* self = (grib_accessor_g1area*)a; + int n = 0; + self->laf = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->lof = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->lal = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->lol = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); } - -static int pack_double (grib_accessor* a, const double* val, size_t *len) +static int pack_double(grib_accessor* a, const double* val, size_t *len) { - grib_accessor_g1area* self = (grib_accessor_g1area*)a; - int ret = 0; + grib_accessor_g1area* self = (grib_accessor_g1area*)a; + int ret = 0; - ret = grib_set_double_internal(grib_handle_of_accessor(a), self->laf,val[0]); - if(ret ) return ret; - ret = grib_set_double_internal(grib_handle_of_accessor(a), self->lof,val[1]); - if(ret ) return ret; - ret = grib_set_double_internal(grib_handle_of_accessor(a), self->lal,val[2]); - if(ret) return ret; + ret = grib_set_double_internal(grib_handle_of_accessor(a), self->laf,val[0]); + if(ret ) return ret; + ret = grib_set_double_internal(grib_handle_of_accessor(a), self->lof,val[1]); + if(ret ) return ret; + ret = grib_set_double_internal(grib_handle_of_accessor(a), self->lal,val[2]); + if(ret) return ret; - ret = grib_set_double_internal(grib_handle_of_accessor(a), self->lol,val[3]); - if(ret ) return ret; + ret = grib_set_double_internal(grib_handle_of_accessor(a), self->lol,val[3]); + if(ret ) return ret; - if (ret == GRIB_SUCCESS) *len = 4; + if (ret == GRIB_SUCCESS) *len = 4; - return ret; + return ret; } -static int unpack_double (grib_accessor* a, double* val, size_t *len) + +static int unpack_double(grib_accessor* a, double* val, size_t *len) { - grib_accessor_g1area* self = (grib_accessor_g1area*)a; - int ret = 0; + grib_accessor_g1area* self = (grib_accessor_g1area*)a; + int ret = 0; - if(*len < 4){ - *len = 4; - return GRIB_BUFFER_TOO_SMALL; - } + if(*len < 4){ + *len = 4; + return GRIB_BUFFER_TOO_SMALL; + } - ret = grib_get_double_internal(grib_handle_of_accessor(a), self->laf,val++); - if(ret) return ret; + ret = grib_get_double_internal(grib_handle_of_accessor(a), self->laf,val++); + if(ret) return ret; - ret = grib_get_double_internal(grib_handle_of_accessor(a), self->lof,val++); - if(ret) return ret; + ret = grib_get_double_internal(grib_handle_of_accessor(a), self->lof,val++); + if(ret) return ret; - ret = grib_get_double_internal(grib_handle_of_accessor(a), self->lal,val++); - if(ret) return ret; + ret = grib_get_double_internal(grib_handle_of_accessor(a), self->lal,val++); + if(ret) return ret; - ret = grib_get_double_internal(grib_handle_of_accessor(a), self->lol,val); - if(ret ) return ret; + ret = grib_get_double_internal(grib_handle_of_accessor(a), self->lol,val); + if(ret ) return ret; - if (ret == GRIB_SUCCESS) *len = 4; + if (ret == GRIB_SUCCESS) *len = 4; - return ret; + return ret; } static void dump(grib_accessor* a, grib_dumper* dumper) { - grib_dump_string(dumper,a,NULL); + grib_dump_string(dumper,a,NULL); } -static int unpack_string(grib_accessor* a, char* val, size_t *len) +static int unpack_string(grib_accessor* a, char* val, size_t *len) { - grib_accessor_g1area* self = (grib_accessor_g1area*)a; - int ret = 0; + grib_accessor_g1area* self = (grib_accessor_g1area*)a; + int ret = 0; - double laf,lof,lal,lol; + double laf,lof,lal,lol; - ret = grib_get_double_internal(grib_handle_of_accessor(a), self->laf,&laf); - if(ret) return ret; - ret = grib_get_double_internal(grib_handle_of_accessor(a), self->lof,&lof); - if(ret) return ret; - ret = grib_get_double_internal(grib_handle_of_accessor(a), self->lal,&lal); - if(ret) return ret; - ret = grib_get_double_internal(grib_handle_of_accessor(a), self->lol,&lol); - if(ret) return ret; - if(*len < 60) - { - grib_context_log(a->context, GRIB_LOG_ERROR, " Buffer too smalle for %s (%d) ", a->name ,*len); - len = 0; - return GRIB_BUFFER_TOO_SMALL; - } + ret = grib_get_double_internal(grib_handle_of_accessor(a), self->laf,&laf); + if(ret) return ret; + ret = grib_get_double_internal(grib_handle_of_accessor(a), self->lof,&lof); + if(ret) return ret; + ret = grib_get_double_internal(grib_handle_of_accessor(a), self->lal,&lal); + if(ret) return ret; + ret = grib_get_double_internal(grib_handle_of_accessor(a), self->lol,&lol); + if(ret) return ret; + if(*len < 60) + { + grib_context_log(a->context, GRIB_LOG_ERROR, " Buffer too small for %s (%d) ", a->name ,*len); + len = 0; + return GRIB_BUFFER_TOO_SMALL; + } + sprintf(val,"N:%3.5f W:%3.5f S:%3.5f E:%3.5f",((float)laf),((float)lof),((float)lal),((float)lol)); - sprintf(val,"N:%3.5f W:%3.5f S:%3.5f E:%3.5f",((float)laf),((float)lof),((float)lal),((float)lol)); - - len[0] = strlen(val); - return GRIB_SUCCESS; + len[0] = strlen(val); + return GRIB_SUCCESS; } - diff --git a/src/grib_accessor_class_g1forecastmonth.c b/src/grib_accessor_class_g1forecastmonth.c index 2eb5c6bbb..731c35fad 100644 --- a/src/grib_accessor_class_g1forecastmonth.c +++ b/src/grib_accessor_class_g1forecastmonth.c @@ -141,79 +141,77 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* c) { - grib_accessor_g1forecastmonth* self = (grib_accessor_g1forecastmonth*)a; - int n = 0; + grib_accessor_g1forecastmonth* self = (grib_accessor_g1forecastmonth*)a; + int n = 0; - self->verification_yearmonth = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->base_date = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->day = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->hour = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->fcmonth = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->verification_yearmonth = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->base_date = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->day = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->hour = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->fcmonth = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); } static void dump(grib_accessor* a, grib_dumper* dumper) { - grib_dump_long(dumper,a,NULL); + grib_dump_long(dumper,a,NULL); } static int unpack_long(grib_accessor* a, long* val, size_t *len) { - int ret=0; - grib_accessor_g1forecastmonth* self = (grib_accessor_g1forecastmonth*)a; + int ret=0; + grib_accessor_g1forecastmonth* self = (grib_accessor_g1forecastmonth*)a; - long verification_yearmonth = 0; - long base_yearmonth = 0; - long base_date = 0; - long day = 0; - long hour = 0; + long verification_yearmonth = 0; + long base_yearmonth = 0; + long base_date = 0; + long day = 0; + long hour = 0; - long vyear = 0; - long vmonth = 0; - long byear = 0; - long bmonth = 0; + long vyear = 0; + long vmonth = 0; + long byear = 0; + long bmonth = 0; - long fcmonth = 0; - long gribForecastMonth = 0; + long fcmonth = 0; + long gribForecastMonth = 0; - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), - self->verification_yearmonth,&verification_yearmonth))!=GRIB_SUCCESS) - return ret; - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->base_date,&base_date))!=GRIB_SUCCESS) - return ret; - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->day,&day))!=GRIB_SUCCESS) - return ret; - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->hour,&hour))!=GRIB_SUCCESS) - return ret; - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->fcmonth,&gribForecastMonth))!=GRIB_SUCCESS) - return ret; + if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), + self->verification_yearmonth,&verification_yearmonth))!=GRIB_SUCCESS) + return ret; + if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->base_date,&base_date))!=GRIB_SUCCESS) + return ret; + if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->day,&day))!=GRIB_SUCCESS) + return ret; + if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->hour,&hour))!=GRIB_SUCCESS) + return ret; + if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->fcmonth,&gribForecastMonth))!=GRIB_SUCCESS) + return ret; - base_yearmonth = base_date / 100; + base_yearmonth = base_date / 100; - vyear = verification_yearmonth / 100; - vmonth = verification_yearmonth % 100; - byear = base_yearmonth / 100; - bmonth = base_yearmonth % 100; + vyear = verification_yearmonth / 100; + vmonth = verification_yearmonth % 100; + byear = base_yearmonth / 100; + bmonth = base_yearmonth % 100; - fcmonth = (vyear - byear) * 12 + (vmonth - bmonth); - if(day == 1 && hour == 0) - fcmonth++; + fcmonth = (vyear - byear) * 12 + (vmonth - bmonth); + if(day == 1 && hour == 0) + fcmonth++; - if(gribForecastMonth != 0 && gribForecastMonth!=fcmonth) { - grib_context_log(a->context,GRIB_LOG_FATAL,"%s=%ld (%s-%s)=%ld",self->fcmonth, - gribForecastMonth,self->base_date,self->verification_yearmonth,fcmonth); - Assert(gribForecastMonth == fcmonth); - } + if(gribForecastMonth != 0 && gribForecastMonth!=fcmonth) { + grib_context_log(a->context,GRIB_LOG_FATAL,"%s=%ld (%s-%s)=%ld",self->fcmonth, + gribForecastMonth,self->base_date,self->verification_yearmonth,fcmonth); + Assert(gribForecastMonth == fcmonth); + } - *val = fcmonth; + *val = fcmonth; - return GRIB_SUCCESS; + return GRIB_SUCCESS; } /* TODO: Check for a valid date */ - static int pack_long(grib_accessor* a, const long* val, size_t *len) { - grib_accessor_g1forecastmonth* self = (grib_accessor_g1forecastmonth*)a; - return grib_set_long_internal(grib_handle_of_accessor(a),self->fcmonth, *val); - + grib_accessor_g1forecastmonth* self = (grib_accessor_g1forecastmonth*)a; + return grib_set_long_internal(grib_handle_of_accessor(a),self->fcmonth, *val); } diff --git a/src/grib_accessor_class_g1number_of_coded_values_sh_complex.c b/src/grib_accessor_class_g1number_of_coded_values_sh_complex.c index 69f170a00..2b9334a3c 100644 --- a/src/grib_accessor_class_g1number_of_coded_values_sh_complex.c +++ b/src/grib_accessor_class_g1number_of_coded_values_sh_complex.c @@ -149,66 +149,64 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* c) { - int n=0; - grib_accessor_g1number_of_coded_values_sh_complex* self = (grib_accessor_g1number_of_coded_values_sh_complex*)a; - self->bitsPerValue = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->offsetBeforeData = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->offsetAfterData = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->unusedBits = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->numberOfValues = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->JS = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->KS = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->MS = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; - a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION; - a->length=0; + int n=0; + grib_accessor_g1number_of_coded_values_sh_complex* self = (grib_accessor_g1number_of_coded_values_sh_complex*)a; + self->bitsPerValue = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->offsetBeforeData = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->offsetAfterData = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->unusedBits = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->numberOfValues = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->JS = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->KS = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->MS = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; + a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION; + a->length=0; } -static int unpack_long(grib_accessor* a, long* val, size_t *len) +static int unpack_long(grib_accessor* a, long* val, size_t *len) { - int ret=GRIB_SUCCESS; - long bpv=0; - long offsetBeforeData=0,offsetAfterData=0,unusedBits=0,numberOfValues; - long JS=0,KS=0,MS=0,NS=0; + int ret=GRIB_SUCCESS; + long bpv=0; + long offsetBeforeData=0,offsetAfterData=0,unusedBits=0,numberOfValues; + long JS=0,KS=0,MS=0,NS=0; - grib_accessor_g1number_of_coded_values_sh_complex* self = (grib_accessor_g1number_of_coded_values_sh_complex*)a; + grib_accessor_g1number_of_coded_values_sh_complex* self = (grib_accessor_g1number_of_coded_values_sh_complex*)a; + + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->bitsPerValue,&bpv)) != GRIB_SUCCESS) + return ret; + + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->offsetBeforeData,&offsetBeforeData)) != GRIB_SUCCESS) + return ret; + + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->offsetAfterData,&offsetAfterData)) != GRIB_SUCCESS) + return ret; + + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->unusedBits,&unusedBits)) != GRIB_SUCCESS) + return ret; + + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->JS,&JS)) != GRIB_SUCCESS) + return ret; + + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->KS,&KS)) != GRIB_SUCCESS) + return ret; + + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->MS,&MS)) != GRIB_SUCCESS) + return ret; + + if (JS != KS || KS != MS) return GRIB_NOT_IMPLEMENTED; + + NS=(MS+1)*(MS+2); + + if ( bpv != 0 ) { + DebugAssert( offsetAfterData > offsetBeforeData ); + *val =((offsetAfterData-offsetBeforeData)*8-unusedBits+NS*(bpv-32))/bpv; + } else { + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->numberOfValues,&numberOfValues)) != GRIB_SUCCESS) + return ret; + + *val=numberOfValues; + } - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->bitsPerValue,&bpv)) != GRIB_SUCCESS) return ret; - - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->offsetBeforeData,&offsetBeforeData)) != GRIB_SUCCESS) - return ret; - - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->offsetAfterData,&offsetAfterData)) != GRIB_SUCCESS) - return ret; - - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->unusedBits,&unusedBits)) != GRIB_SUCCESS) - return ret; - - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->JS,&JS)) != GRIB_SUCCESS) - return ret; - - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->KS,&KS)) != GRIB_SUCCESS) - return ret; - - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->MS,&MS)) != GRIB_SUCCESS) - return ret; - - if (JS != KS || KS != MS) return GRIB_NOT_IMPLEMENTED; - - NS=(MS+1)*(MS+2); - - if ( bpv != 0 ) { - DebugAssert( offsetAfterData > offsetBeforeData ); - *val =((offsetAfterData-offsetBeforeData)*8-unusedBits+NS*(bpv-32))/bpv; - } else { - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->numberOfValues,&numberOfValues)) != GRIB_SUCCESS) - return ret; - - *val=numberOfValues; - } - - - return ret; } - diff --git a/src/grib_accessor_class_g1number_of_coded_values_sh_simple.c b/src/grib_accessor_class_g1number_of_coded_values_sh_simple.c index baf51c618..2d651acd2 100644 --- a/src/grib_accessor_class_g1number_of_coded_values_sh_simple.c +++ b/src/grib_accessor_class_g1number_of_coded_values_sh_simple.c @@ -143,49 +143,46 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* c) { - int n=0; - grib_accessor_g1number_of_coded_values_sh_simple* self = (grib_accessor_g1number_of_coded_values_sh_simple*)a; - self->bitsPerValue = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->offsetBeforeData = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->offsetAfterData = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->unusedBits = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->numberOfValues = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; - a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION; - a->length=0; + int n=0; + grib_accessor_g1number_of_coded_values_sh_simple* self = (grib_accessor_g1number_of_coded_values_sh_simple*)a; + self->bitsPerValue = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->offsetBeforeData = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->offsetAfterData = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->unusedBits = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->numberOfValues = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; + a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION; + a->length=0; } -static int unpack_long(grib_accessor* a, long* val, size_t *len) +static int unpack_long(grib_accessor* a, long* val, size_t *len) { - int ret=GRIB_SUCCESS; - long bpv=0; - long offsetBeforeData=0,offsetAfterData=0,unusedBits=0,numberOfValues; + int ret=GRIB_SUCCESS; + long bpv=0; + long offsetBeforeData=0,offsetAfterData=0,unusedBits=0,numberOfValues; - grib_accessor_g1number_of_coded_values_sh_simple* self = (grib_accessor_g1number_of_coded_values_sh_simple*)a; + grib_accessor_g1number_of_coded_values_sh_simple* self = (grib_accessor_g1number_of_coded_values_sh_simple*)a; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->bitsPerValue,&bpv)) != GRIB_SUCCESS) + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->bitsPerValue,&bpv)) != GRIB_SUCCESS) + return ret; + + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->offsetBeforeData,&offsetBeforeData)) != GRIB_SUCCESS) + return ret; + + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->offsetAfterData,&offsetAfterData)) != GRIB_SUCCESS) + return ret; + + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->unusedBits,&unusedBits)) != GRIB_SUCCESS) + return ret; + + if ( bpv != 0 ) { + DebugAssert( offsetAfterData > offsetBeforeData ); + *val=((offsetAfterData-offsetBeforeData)*8-unusedBits)/bpv; + } else { + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->numberOfValues,&numberOfValues)) != GRIB_SUCCESS) + return ret; + + *val=numberOfValues; + } return ret; - - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->offsetBeforeData,&offsetBeforeData)) != GRIB_SUCCESS) - return ret; - - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->offsetAfterData,&offsetAfterData)) != GRIB_SUCCESS) - return ret; - - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->unusedBits,&unusedBits)) != GRIB_SUCCESS) - return ret; - - if ( bpv != 0 ) { - DebugAssert( offsetAfterData > offsetBeforeData ); - *val=((offsetAfterData-offsetBeforeData)*8-unusedBits)/bpv; - } else { - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->numberOfValues,&numberOfValues)) != GRIB_SUCCESS) - return ret; - - *val=numberOfValues; - } - - - return ret; } - diff --git a/src/grib_accessor_class_g2bitmap_present.c b/src/grib_accessor_class_g2bitmap_present.c index 4796a5566..c7fc14bec 100644 --- a/src/grib_accessor_class_g2bitmap_present.c +++ b/src/grib_accessor_class_g2bitmap_present.c @@ -136,42 +136,41 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* c) { - int n=0; - grib_accessor_g2bitmap_present* self = (grib_accessor_g2bitmap_present*)a; - self->bitmapIndicator = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + int n=0; + grib_accessor_g2bitmap_present* self = (grib_accessor_g2bitmap_present*)a; + self->bitmapIndicator = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - a->length=0; + a->length=0; } -static int unpack_long(grib_accessor* a, long* val, size_t *len) +static int unpack_long(grib_accessor* a, long* val, size_t *len) { - int ret=GRIB_SUCCESS; - long bitmapIndicator=0; + int ret=GRIB_SUCCESS; + long bitmapIndicator=0; - grib_accessor_g2bitmap_present* self = (grib_accessor_g2bitmap_present*)a; + grib_accessor_g2bitmap_present* self = (grib_accessor_g2bitmap_present*)a; - ret = grib_get_long_internal(grib_handle_of_accessor(a), self->bitmapIndicator,&bitmapIndicator); - if (ret) { - if (ret==GRIB_NOT_FOUND) { - *val=0; - return 0; - } else return ret; - } + ret = grib_get_long_internal(grib_handle_of_accessor(a), self->bitmapIndicator,&bitmapIndicator); + if (ret) { + if (ret==GRIB_NOT_FOUND) { + *val=0; + return 0; + } else return ret; + } - *val=1; - if (bitmapIndicator==255) *val=0; + *val=1; + if (bitmapIndicator==255) *val=0; - *len=1; - return ret; + *len=1; + return ret; } static int pack_long(grib_accessor* a, const long* val, size_t *len) { - grib_accessor_g2bitmap_present* self = (grib_accessor_g2bitmap_present*)a; - long bitmapIndicator=0; + grib_accessor_g2bitmap_present* self = (grib_accessor_g2bitmap_present*)a; + long bitmapIndicator=0; - if (*val==0) bitmapIndicator=255; - - - return grib_set_long(grib_handle_of_accessor(a),self->bitmapIndicator,bitmapIndicator); + if (*val==0) bitmapIndicator=255; + + return grib_set_long(grib_handle_of_accessor(a),self->bitmapIndicator,bitmapIndicator); } diff --git a/src/grib_accessor_class_g2date.c b/src/grib_accessor_class_g2date.c index 5b8e60a6c..82c4894a7 100644 --- a/src/grib_accessor_class_g2date.c +++ b/src/grib_accessor_class_g2date.c @@ -135,69 +135,63 @@ static void init_class(grib_accessor_class* c) } /* END_CLASS_IMP */ - - static void init(grib_accessor* a,const long l, grib_arguments* c) { - grib_accessor_g2date* self = (grib_accessor_g2date*)a; - int n = 0; - - self->year = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->month = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->day = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + grib_accessor_g2date* self = (grib_accessor_g2date*)a; + int n = 0; + self->year = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->month = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->day = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); } static void dump(grib_accessor* a, grib_dumper* dumper) { - grib_dump_long(dumper,a,NULL); + grib_dump_long(dumper,a,NULL); } - static int unpack_long(grib_accessor* a, long* val, size_t *len) { - int ret=0; - grib_accessor_g2date* self = (grib_accessor_g2date*)a; + int ret=0; + grib_accessor_g2date* self = (grib_accessor_g2date*)a; - long year = 0; - long month = 0; - long day = 0; + long year = 0; + long month = 0; + long day = 0; - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->day,&day))!=GRIB_SUCCESS) return ret; - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->month,&month))!=GRIB_SUCCESS) return ret; - if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->year,&year))!=GRIB_SUCCESS) return ret; + if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->day,&day))!=GRIB_SUCCESS) return ret; + if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->month,&month))!=GRIB_SUCCESS) return ret; + if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->year,&year))!=GRIB_SUCCESS) return ret; - if(*len < 1) - return GRIB_WRONG_ARRAY_SIZE; + if(*len < 1) + return GRIB_WRONG_ARRAY_SIZE; - val[0] = year * 10000 + month * 100 + day; + val[0] = year * 10000 + month * 100 + day; - - return GRIB_SUCCESS; + return GRIB_SUCCESS; } /* TODO: Check for a valid date */ - static int pack_long(grib_accessor* a, const long* val, size_t *len) { - int ret; - long v = val[0]; - grib_accessor_g2date* self = (grib_accessor_g2date*)a; + int ret; + long v = val[0]; + grib_accessor_g2date* self = (grib_accessor_g2date*)a; - long year = 0; - long month = 0; - long day = 0; + long year = 0; + long month = 0; + long day = 0; - if(*len != 1) - return GRIB_WRONG_ARRAY_SIZE; + if(*len != 1) + return GRIB_WRONG_ARRAY_SIZE; - year = v / 10000; v %= 10000; - month = v / 100; v %= 100; - day = v; + year = v / 10000; v %= 10000; + month = v / 100; v %= 100; + day = v; - if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->day,day))!=GRIB_SUCCESS) return ret; - if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->month,month))!=GRIB_SUCCESS) return ret; - if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->year,year))!=GRIB_SUCCESS) return ret; + if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->day,day))!=GRIB_SUCCESS) return ret; + if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->month,month))!=GRIB_SUCCESS) return ret; + if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->year,year))!=GRIB_SUCCESS) return ret; - return GRIB_SUCCESS; + return GRIB_SUCCESS; } diff --git a/src/grib_accessor_class_g2lon.c b/src/grib_accessor_class_g2lon.c index 178b4d00b..bc077c06f 100644 --- a/src/grib_accessor_class_g2lon.c +++ b/src/grib_accessor_class_g2lon.c @@ -136,47 +136,42 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* c) { - grib_accessor_g2lon* self = (grib_accessor_g2lon*)a; - int n = 0; + grib_accessor_g2lon* self = (grib_accessor_g2lon*)a; + int n = 0; - self->longitude = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->longitude = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); } -static int unpack_double (grib_accessor* a, double* val, size_t *len) +static int unpack_double(grib_accessor* a, double* val, size_t *len) { - grib_accessor_g2lon* self = (grib_accessor_g2lon*)a; - int ret = 0; - long longitude; + grib_accessor_g2lon* self = (grib_accessor_g2lon*)a; + int ret = 0; + long longitude; - if((ret = grib_get_long(grib_handle_of_accessor(a), self->longitude,&longitude)) != GRIB_SUCCESS) - return ret; + if((ret = grib_get_long(grib_handle_of_accessor(a), self->longitude,&longitude)) != GRIB_SUCCESS) + return ret; + if (longitude==GRIB_MISSING_LONG) { + *val=GRIB_MISSING_DOUBLE; + return GRIB_SUCCESS; + } - if (longitude==GRIB_MISSING_LONG) { - *val=GRIB_MISSING_DOUBLE; - return GRIB_SUCCESS; - } - + *val=((double)longitude) / 1000000.0 ; - *val=((double)longitude) / 1000000.0 ; - - return GRIB_SUCCESS; + return GRIB_SUCCESS; } - static int pack_double(grib_accessor* a, const double* val, size_t *len) { - grib_accessor_g2lon* self = (grib_accessor_g2lon*)a; - long longitude; - double value=*val; + grib_accessor_g2lon* self = (grib_accessor_g2lon*)a; + long longitude; + double value=*val; - if (value == GRIB_MISSING_DOUBLE) { - longitude=GRIB_MISSING_LONG; - } else { - if (value<0) value+=360; - longitude=value * 1000000; - } - return grib_set_long(grib_handle_of_accessor(a), self->longitude,longitude); + if (value == GRIB_MISSING_DOUBLE) { + longitude=GRIB_MISSING_LONG; + } else { + if (value<0) value+=360; + longitude=value * 1000000; + } + return grib_set_long(grib_handle_of_accessor(a), self->longitude,longitude); } - - diff --git a/src/grib_accessor_class_g2step.c b/src/grib_accessor_class_g2step.c index fa80b415b..77d7dab43 100644 --- a/src/grib_accessor_class_g2step.c +++ b/src/grib_accessor_class_g2step.c @@ -134,65 +134,63 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* c) { - grib_accessor_g2step* self = (grib_accessor_g2step*)a; - int n = 0; - self->forecast_time = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->unit = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - + grib_accessor_g2step* self = (grib_accessor_g2step*)a; + int n = 0; + self->forecast_time = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->unit = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); } static void dump(grib_accessor* a, grib_dumper* dumper) { - grib_dump_double(dumper,a,NULL); - + grib_dump_double(dumper,a,NULL); } + static const int units[] = { - 0, /* (0) minutes */ - 1, /* (1) hour */ - 24, /* (2) day */ + 0, /* (0) minutes */ + 1, /* (1) hour */ + 24, /* (2) day */ - 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, - 3, /* (10) 3 hours */ - 6, /* (11) 6 hours */ - 12, /* (12) 12 hours */ + 3, /* (10) 3 hours */ + 6, /* (11) 6 hours */ + 12, /* (12) 12 hours */ }; static int unpack_long(grib_accessor* a, long* val, size_t *len) { - grib_accessor_g2step* self = (grib_accessor_g2step*)a; - int err = 0; - long forecast_time = 0,unit = 0; + grib_accessor_g2step* self = (grib_accessor_g2step*)a; + int err = 0; + long forecast_time = 0,unit = 0; - err = grib_get_long_internal(grib_handle_of_accessor(a),self->unit,&unit); - if(err) return err; + err = grib_get_long_internal(grib_handle_of_accessor(a),self->unit,&unit); + if(err) return err; - err = grib_get_long_internal(grib_handle_of_accessor(a),self->forecast_time,&forecast_time); - if(err) return err; + err = grib_get_long_internal(grib_handle_of_accessor(a),self->forecast_time,&forecast_time); + if(err) return err; - if(!units[unit]) - return GRIB_NOT_IMPLEMENTED; + if(!units[unit]) + return GRIB_NOT_IMPLEMENTED; - *val = forecast_time * units[unit]; + *val = forecast_time * units[unit]; - return GRIB_SUCCESS; + return GRIB_SUCCESS; } static int pack_long(grib_accessor* a, const long* val, size_t *len) { - grib_accessor_g2step* self = (grib_accessor_g2step*)a; - int err = 0; - long forecast_time = *val; - long unit = 1; + grib_accessor_g2step* self = (grib_accessor_g2step*)a; + int err = 0; + long forecast_time = *val; + long unit = 1; - Assert(forecast_time >= 0); + Assert(forecast_time >= 0); - err = grib_set_long_internal(grib_handle_of_accessor(a),self->unit,unit); - if(err) return err; + err = grib_set_long_internal(grib_handle_of_accessor(a),self->unit,unit); + if(err) return err; - err = grib_set_long_internal(grib_handle_of_accessor(a),self->forecast_time,forecast_time); - if(err) return err; + err = grib_set_long_internal(grib_handle_of_accessor(a),self->forecast_time,forecast_time); + if(err) return err; - return GRIB_SUCCESS; + return GRIB_SUCCESS; } - diff --git a/src/grib_accessor_class_g2step_range.c b/src/grib_accessor_class_g2step_range.c index 70784abcd..6d1810094 100644 --- a/src/grib_accessor_class_g2step_range.c +++ b/src/grib_accessor_class_g2step_range.c @@ -139,81 +139,82 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* c) { - grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; + grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; - int n = 0; + int n = 0; - self->startStep = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->endStep = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - - a->length=0; + self->startStep = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->endStep = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + + a->length=0; } static void dump(grib_accessor* a, grib_dumper* dumper) { - grib_dump_string(dumper,a,NULL); - + grib_dump_string(dumper,a,NULL); } -static int unpack_string(grib_accessor* a, char* val, size_t *len) { - grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; - grib_handle* h=grib_handle_of_accessor(a); - char buf[100]; - int ret=0; - size_t size=0; - long start=0,theEnd=0; +static int unpack_string(grib_accessor* a, char* val, size_t *len) +{ + grib_accessor_g2step_range* self = (grib_accessor_g2step_range*)a; + grib_handle* h=grib_handle_of_accessor(a); + char buf[100]; + int ret=0; + size_t size=0; + long start=0,theEnd=0; - ret = grib_get_long_internal(h,self->startStep,&start); - if (ret) return ret; - - if (self->endStep==NULL) { - sprintf(buf,"%ld",start); - } else { - ret = grib_get_long_internal(h,self->endStep,&theEnd); + ret = grib_get_long_internal(h,self->startStep,&start); if (ret) return ret; - if(start == theEnd) - { - sprintf(buf,"%ld",theEnd); - } - else - { - sprintf(buf,"%ld-%ld",start,theEnd); - } - } + if (self->endStep==NULL) { + sprintf(buf,"%ld",start); + } else { + ret = grib_get_long_internal(h,self->endStep,&theEnd); + if (ret) return ret; - size=strlen(buf)+1; + if(start == theEnd) + { + sprintf(buf,"%ld",theEnd); + } + else + { + sprintf(buf,"%ld-%ld",start,theEnd); + } + } - if (*lenstartStep,start); - if (ret) return ret; + start=strtol(val, &p,10); + theEnd=start; - if(self->endStep!=NULL) { - ret=grib_set_long_internal(h,self->endStep,theEnd); + if ( *p!=0 ) theEnd=strtol(++p, &q,10); + ret=grib_set_long_internal(h,self->startStep,start); if (ret) return ret; - } - return 0; + if(self->endStep!=NULL) { + ret=grib_set_long_internal(h,self->endStep,theEnd); + if (ret) return ret; + } + + return 0; } static int value_count(grib_accessor* a,long* count) @@ -224,40 +225,41 @@ static int value_count(grib_accessor* a,long* count) static size_t string_length(grib_accessor* a) { - return 255; + return 255; } static int pack_long(grib_accessor* a, const long* val, size_t *len) { - char buff[100]; - size_t bufflen=100; + char buff[100]; + size_t bufflen=100; - sprintf(buff,"%ld",*val); - return pack_string( a,buff,&bufflen); + sprintf(buff,"%ld",*val); + return pack_string( a,buff,&bufflen); } -static int unpack_long(grib_accessor* a, long* val, size_t *len) { - char buff[100]; - size_t bufflen=100; - long start,theEnd; - char* p=buff; - char* q=NULL; - int err=0; +static int unpack_long(grib_accessor* a, long* val, size_t *len) +{ + char buff[100]; + size_t bufflen=100; + long start,theEnd; + char* p=buff; + char* q=NULL; + int err=0; - - if ((err=unpack_string( a,buff,&bufflen))!=GRIB_SUCCESS) - return err; - - start=strtol(buff, &p,10); - theEnd=start; - if ( *p!=0 ) theEnd=strtol(++p, &q,10); - *val=theEnd; + if ((err=unpack_string( a,buff,&bufflen))!=GRIB_SUCCESS) + return err; - return 0; + start=strtol(buff, &p,10); + theEnd=start; + if ( *p!=0 ) theEnd=strtol(++p, &q,10); + + *val=theEnd; + + return 0; } -static int get_native_type(grib_accessor* a){ - return GRIB_TYPE_STRING; +static int get_native_type(grib_accessor* a) +{ + return GRIB_TYPE_STRING; } - diff --git a/src/grib_accessor_class_gds_is_present.c b/src/grib_accessor_class_gds_is_present.c index ee8110b40..94cae2bc2 100644 --- a/src/grib_accessor_class_gds_is_present.c +++ b/src/grib_accessor_class_gds_is_present.c @@ -142,71 +142,70 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* c) { - int n=0; - grib_accessor_gds_is_present* self = (grib_accessor_gds_is_present*)a; - self->gds_present = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->grid_definition = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->bitmap_present = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->values = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + int n=0; + grib_accessor_gds_is_present* self = (grib_accessor_gds_is_present*)a; + self->gds_present = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->grid_definition = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->bitmap_present = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->values = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION; - a->flags |= GRIB_ACCESSOR_FLAG_HIDDEN; - a->length=0; + a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION; + a->flags |= GRIB_ACCESSOR_FLAG_HIDDEN; + a->length=0; } -static int pack_long (grib_accessor* a, const long* val, size_t *len) +static int pack_long(grib_accessor* a, const long* val, size_t *len) { - long missing=255; - int ret=0; - size_t size=0; - double* values; - grib_context* c=a->context; - grib_handle* h=grib_handle_of_accessor(a); - grib_accessor_gds_is_present* self = (grib_accessor_gds_is_present*)a; + long missing=255; + int ret=0; + size_t size=0; + double* values; + grib_context* c=a->context; + grib_handle* h=grib_handle_of_accessor(a); + grib_accessor_gds_is_present* self = (grib_accessor_gds_is_present*)a; - if (*val != 1) return GRIB_NOT_IMPLEMENTED; + if (*val != 1) return GRIB_NOT_IMPLEMENTED; - if ( (ret=grib_get_size(h,self->values,&size)) != GRIB_SUCCESS) return ret; + if ( (ret=grib_get_size(h,self->values,&size)) != GRIB_SUCCESS) return ret; - values=(double*)grib_context_malloc(c,size*sizeof(double)); - if (!values) return GRIB_OUT_OF_MEMORY; + values=(double*)grib_context_malloc(c,size*sizeof(double)); + if (!values) return GRIB_OUT_OF_MEMORY; - if((ret = grib_get_double_array_internal(h,self->values,values,&size)) - != GRIB_SUCCESS) { + if((ret = grib_get_double_array_internal(h,self->values,values,&size)) + != GRIB_SUCCESS) { grib_context_free(c,values); return ret; - } + } - if((ret = grib_set_long_internal(h, self->gds_present,*val)) - != GRIB_SUCCESS) return ret; + if((ret = grib_set_long_internal(h, self->gds_present,*val)) + != GRIB_SUCCESS) return ret; - if((ret = grib_set_long_internal(h, self->bitmap_present,*val)) - != GRIB_SUCCESS) return ret; + if((ret = grib_set_long_internal(h, self->bitmap_present,*val)) + != GRIB_SUCCESS) return ret; - if((ret = grib_set_long_internal(h, self->grid_definition,missing)) - != GRIB_SUCCESS) return ret; + if((ret = grib_set_long_internal(h, self->grid_definition,missing)) + != GRIB_SUCCESS) return ret; - if((ret = grib_set_double_array_internal(h, self->values,values,size)) - != GRIB_SUCCESS) return ret; + if((ret = grib_set_double_array_internal(h, self->values,values,size)) + != GRIB_SUCCESS) return ret; - grib_context_free(c,values); + grib_context_free(c,values); - return GRIB_SUCCESS; + return GRIB_SUCCESS; } -static int unpack_long (grib_accessor* a, long* val, size_t *len) +static int unpack_long(grib_accessor* a, long* val, size_t *len) { - int ret=0; - grib_handle* h=grib_handle_of_accessor(a); - grib_accessor_gds_is_present* self = (grib_accessor_gds_is_present*)a; + int ret=0; + grib_handle* h=grib_handle_of_accessor(a); + grib_accessor_gds_is_present* self = (grib_accessor_gds_is_present*)a; - if((ret = grib_get_long_internal(h,self->gds_present,val)) - != GRIB_SUCCESS) return ret; + if((ret = grib_get_long_internal(h,self->gds_present,val)) + != GRIB_SUCCESS) return ret; - *len=1; + *len=1; - return GRIB_SUCCESS; + return GRIB_SUCCESS; } - diff --git a/src/grib_accessor_class_gds_not_present_bitmap.c b/src/grib_accessor_class_gds_not_present_bitmap.c index 3c98b2b91..b5a39d824 100644 --- a/src/grib_accessor_class_gds_not_present_bitmap.c +++ b/src/grib_accessor_class_gds_not_present_bitmap.c @@ -146,151 +146,146 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long v, grib_arguments* args) { - int n=0; - grib_accessor_gds_not_present_bitmap *self =(grib_accessor_gds_not_present_bitmap*)a; + int n=0; + grib_accessor_gds_not_present_bitmap *self =(grib_accessor_gds_not_present_bitmap*)a; - self->missing_value = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++); - self->number_of_values = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++); - self->number_of_points = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++); - self->latitude_of_first_point = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++); - self->ni = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++); - - - a->length = 0; + self->missing_value = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++); + self->number_of_values = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++); + self->number_of_points = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++); + self->latitude_of_first_point = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++); + self->ni = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++); + a->length = 0; } - static int value_count(grib_accessor* a,long* number_of_points) { - grib_accessor_gds_not_present_bitmap* self = (grib_accessor_gds_not_present_bitmap*)a; - - *number_of_points=0; - return grib_get_long_internal(grib_handle_of_accessor(a), self->number_of_points, number_of_points); + grib_accessor_gds_not_present_bitmap* self = (grib_accessor_gds_not_present_bitmap*)a; + *number_of_points=0; + return grib_get_long_internal(grib_handle_of_accessor(a), self->number_of_points, number_of_points); } - - -static int unpack_double(grib_accessor* a, double* val, size_t *len) +static int unpack_double(grib_accessor* a, double* val, size_t *len) { - grib_accessor_gds_not_present_bitmap* self = (grib_accessor_gds_not_present_bitmap*)a; + grib_accessor_gds_not_present_bitmap* self = (grib_accessor_gds_not_present_bitmap*)a; - long number_of_points=0,number_of_values=0,ni=0; - long latitude_of_first_point=0; - size_t i = 0; - size_t n_vals = 0; - long nn=0; - long missing_value; + long number_of_points=0,number_of_values=0,ni=0; + long latitude_of_first_point=0; + size_t i = 0; + size_t n_vals = 0; + long nn=0; + long missing_value; - int err = 0; - double* coded_vals = NULL; - err=grib_value_count(a,&nn); - n_vals=nn; - if (err) return err; + int err = 0; + double* coded_vals = NULL; + err=grib_value_count(a,&nn); + n_vals=nn; + if (err) return err; - if((err = grib_get_long(grib_handle_of_accessor(a),self->number_of_points,&number_of_points)) - != GRIB_SUCCESS) return err; + if((err = grib_get_long(grib_handle_of_accessor(a),self->number_of_points,&number_of_points)) + != GRIB_SUCCESS) return err; - if((err = grib_get_long(grib_handle_of_accessor(a),self->number_of_values,&number_of_values)) - != GRIB_SUCCESS) return err; + if((err = grib_get_long(grib_handle_of_accessor(a),self->number_of_values,&number_of_values)) + != GRIB_SUCCESS) return err; - if((err = grib_get_long(grib_handle_of_accessor(a),self->latitude_of_first_point,&latitude_of_first_point)) - != GRIB_SUCCESS) return err; + if((err = grib_get_long(grib_handle_of_accessor(a),self->latitude_of_first_point,&latitude_of_first_point)) + != GRIB_SUCCESS) return err; - if((err = grib_get_long(grib_handle_of_accessor(a),self->missing_value,&missing_value)) - != GRIB_SUCCESS) return err; + if((err = grib_get_long(grib_handle_of_accessor(a),self->missing_value,&missing_value)) + != GRIB_SUCCESS) return err; - if((err = grib_get_long(grib_handle_of_accessor(a),self->ni,&ni)) - != GRIB_SUCCESS) return err; + if((err = grib_get_long(grib_handle_of_accessor(a),self->ni,&ni)) + != GRIB_SUCCESS) return err; - if(*len < number_of_points) - { - *len = n_vals; - return GRIB_ARRAY_TOO_SMALL; - } + if(*len < number_of_points) + { + *len = n_vals; + return GRIB_ARRAY_TOO_SMALL; + } - if(number_of_values > 0){ - coded_vals = (double*)grib_context_malloc(a->context,number_of_values*sizeof(double)); + if(number_of_values > 0){ + coded_vals = (double*)grib_context_malloc(a->context,number_of_values*sizeof(double)); - if(coded_vals == NULL) - return GRIB_OUT_OF_MEMORY; - } + if(coded_vals == NULL) + return GRIB_OUT_OF_MEMORY; + } - if (latitude_of_first_point == 0) { - for (i=0;i < number_of_values;i++) val[i]=1; - for (i=number_of_values;icontext,coded_vals); - return err; + grib_context_free(a->context,coded_vals); + return err; } #if 0 static void grib_set_bit_on( unsigned char* p, long *bitp){ - unsigned char o = 1; - p += (*bitp >> 3); - o <<= 7-((*bitp)%8); - *p |= o; - (*bitp)+=1; + unsigned char o = 1; + p += (*bitp >> 3); + o <<= 7-((*bitp)%8); + *p |= o; + (*bitp)+=1; } static int pack_double(grib_accessor* a, const double* val,size_t *len){ - grib_accessor_gds_not_present_bitmap* self = (grib_accessor_gds_not_present_bitmap*)a; + grib_accessor_gds_not_present_bitmap* self = (grib_accessor_gds_not_present_bitmap*)a; - size_t tlen; + size_t tlen; - unsigned char* buf = NULL; - long i; - int err = 0; - long pos = 0; - long bmaplen = 0; - const int bit_padding = 16; - double miss_values = 0; - tlen = ((*len+bit_padding-1)/bit_padding*bit_padding)/8; + unsigned char* buf = NULL; + long i; + int err = 0; + long pos = 0; + long bmaplen = 0; + const int bit_padding = 16; + double miss_values = 0; + tlen = ((*len+bit_padding-1)/bit_padding*bit_padding)/8; - if((err = grib_get_double_internal(grib_handle_of_accessor(a), self->missing_value, &miss_values)) != GRIB_SUCCESS) - { - grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_class_bitmap : pack_double : Cannot unpack %s err=%d ",self->missing_value,err); - return err; - } - - buf = grib_context_malloc_clear(a->context,tlen); - if(!buf) return GRIB_OUT_OF_MEMORY; - pos=0; - for(i=0;i<*len;i++) - { - if (val[i] == miss_values) - pos++; - else{ - bmaplen++; - grib_set_bit_on(buf, &pos); + if((err = grib_get_double_internal(grib_handle_of_accessor(a), self->missing_value, &miss_values)) != GRIB_SUCCESS) + { + grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_class_bitmap : pack_double : Cannot unpack %s err=%d ",self->missing_value,err); + return err; } - } - if((err = grib_set_long_internal(grib_handle_of_accessor(a), self->unusedBits,tlen*8 - *len )) != GRIB_SUCCESS) { - grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_class_bitmap : pack_double : Cannot pack %s err=%d ",self->unusedBits,err); + buf = grib_context_malloc_clear(a->context,tlen); + if(!buf) return GRIB_OUT_OF_MEMORY; + pos=0; + for(i=0;i<*len;i++) + { + if (val[i] == miss_values) + pos++; + else{ + bmaplen++; + grib_set_bit_on(buf, &pos); + } + } + + if((err = grib_set_long_internal(grib_handle_of_accessor(a), self->unusedBits,tlen*8 - *len )) != GRIB_SUCCESS) { + grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_class_bitmap : pack_double : Cannot pack %s err=%d ",self->unusedBits,err); + grib_context_free(a->context,buf); + return err; + } + + + grib_buffer_replace(a, buf, tlen,1,1); + grib_context_free(a->context,buf); - return err; - } - - grib_buffer_replace(a, buf, tlen,1,1); - - grib_context_free(a->context,buf); - - return GRIB_SUCCESS; + return GRIB_SUCCESS; } #else -static int pack_double(grib_accessor* a, const double* val,size_t *len){ - return GRIB_NOT_IMPLEMENTED; +static int pack_double(grib_accessor* a, const double* val,size_t *len) +{ + return GRIB_NOT_IMPLEMENTED; } #endif diff --git a/src/grib_accessor_class_group.c b/src/grib_accessor_class_group.c index 2c8d42b7e..f1d21d2cc 100644 --- a/src/grib_accessor_class_group.c +++ b/src/grib_accessor_class_group.c @@ -141,172 +141,173 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a, const long len , grib_arguments* arg ) { - grib_buffer* buffer=grib_handle_of_accessor(a)->buffer; - grib_accessor_group* self=(grib_accessor_group*)a; + grib_buffer* buffer=grib_handle_of_accessor(a)->buffer; + grib_accessor_group* self=(grib_accessor_group*)a; - size_t i=0; - unsigned char* v; - const char *s=grib_arguments_get_string(grib_handle_of_accessor(a),arg,0); + size_t i=0; + unsigned char* v; + const char *s=grib_arguments_get_string(grib_handle_of_accessor(a),arg,0); - if (s && strlen(s) > 1) { - grib_context_log(a->context,GRIB_LOG_WARNING, - "Using only first character as group end of %s not the string %s",a->name,s); - } + if (s && strlen(s) > 1) { + grib_context_log(a->context,GRIB_LOG_WARNING, + "Using only first character as group end of %s not the string %s",a->name,s); + } - self->endCharacter= s ? s[0] : 0; + self->endCharacter= s ? s[0] : 0; - v=buffer->data+a->offset; - i=0; - if (s) { - while (*v!=self->endCharacter && i<=buffer->ulength) { if(*v>126) *v=32; v++; i++; } - } else { - while (*v>32 && *v!=61 && *v<127 && i<=buffer->ulength) { v++; i++; } - } - a->length=i; + v=buffer->data+a->offset; + i=0; + if (s) { + while (*v!=self->endCharacter && i<=buffer->ulength) { if(*v>126) *v=32; v++; i++; } + } else { + while (*v>32 && *v!=61 && *v<127 && i<=buffer->ulength) { v++; i++; } + } + a->length=i; - a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; + a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; } static void post_init(grib_accessor* a ) { - return; } -static int value_count(grib_accessor* a,long* count){ - *count=1; - return 0; +static int value_count(grib_accessor* a,long* count) +{ + *count=1; + return 0; } -static size_t string_length(grib_accessor* a){ - return a->length; +static size_t string_length(grib_accessor* a) +{ + return a->length; } static void dump(grib_accessor* a, grib_dumper* dumper) { - grib_dump_string(dumper,a,NULL); + grib_dump_string(dumper,a,NULL); } -static int get_native_type(grib_accessor* a){ - return GRIB_TYPE_STRING; +static int get_native_type(grib_accessor* a) +{ + return GRIB_TYPE_STRING; } static int unpack_string(grib_accessor* a, char* val, size_t *len) { + int i = 0; - int i = 0; + if(len[0] < (a->length+1)) + { + grib_context_log(a->context, GRIB_LOG_ERROR, "unpack_string: Wrong size (%d) for %s it contains %d values ", len[0], a->name , a->length+1 ); + len[0] = 0; + return GRIB_ARRAY_TOO_SMALL; + } - if(len[0] < (a->length+1)) - { - grib_context_log(a->context, GRIB_LOG_ERROR, "unpack_string: Wrong size (%d) for %s it contains %d values ", len[0], a->name , a->length+1 ); - len[0] = 0; - return GRIB_ARRAY_TOO_SMALL; - } - - for ( i = 0; i < a->length; i++) - val[i] = grib_handle_of_accessor(a)->buffer->data[a->offset+i]; - val[i] = 0; - len[0] = i; - return GRIB_SUCCESS; + for ( i = 0; i < a->length; i++) + val[i] = grib_handle_of_accessor(a)->buffer->data[a->offset+i]; + val[i] = 0; + len[0] = i; + return GRIB_SUCCESS; } static int pack_string(grib_accessor* a, const char* val, size_t *len) { - - return GRIB_NOT_IMPLEMENTED; + return GRIB_NOT_IMPLEMENTED; } -static int pack_long(grib_accessor* a, const long* v, size_t *len){ - grib_context_log(a->context,GRIB_LOG_ERROR, " Should not pack %s as long", a->name); - return GRIB_NOT_IMPLEMENTED; +static int pack_long(grib_accessor* a, const long* v, size_t *len) +{ + grib_context_log(a->context,GRIB_LOG_ERROR, " Should not pack %s as long", a->name); + return GRIB_NOT_IMPLEMENTED; } -static int pack_double(grib_accessor* a, const double*v, size_t *len){ - grib_context_log(a->context,GRIB_LOG_ERROR, " Should not pack %s as double", a->name); - return GRIB_NOT_IMPLEMENTED; +static int pack_double(grib_accessor* a, const double*v, size_t *len) +{ + grib_context_log(a->context,GRIB_LOG_ERROR, " Should not pack %s as double", a->name); + return GRIB_NOT_IMPLEMENTED; } +static int unpack_long(grib_accessor* a, long* v, size_t *len) +{ -static int unpack_long (grib_accessor* a, long* v, size_t *len){ + char val[1024]={0,}; + size_t l = sizeof(val); + size_t i =0; + char *last = NULL; + int err=grib_unpack_string (a , val, &l); - char val[1024]={0,}; - size_t l = sizeof(val); - size_t i =0; - char *last = NULL; - int err=grib_unpack_string (a , val, &l); + if (err) return err; - if (err) return err; + i=0; + while ( val[i]==' ' && val[i]!=0 && icontext,GRIB_LOG_DEBUG, " Casting string %s to long", a->name); - return GRIB_SUCCESS; - -} - -static int unpack_double (grib_accessor* a, double*v, size_t *len){ - char val[1024]; - size_t l = sizeof(val); - char *last = NULL; - grib_unpack_string (a , val, &l); - - *v = strtod(val,&last); - - if(*last == 0) - { grib_context_log(a->context,GRIB_LOG_DEBUG, " Casting string %s to long", a->name); return GRIB_SUCCESS; - } - - return GRIB_NOT_IMPLEMENTED; } +static int unpack_double(grib_accessor* a, double*v, size_t *len) +{ + char val[1024]; + size_t l = sizeof(val); + char *last = NULL; + grib_unpack_string (a , val, &l); -static int compare(grib_accessor* a,grib_accessor* b) { - int retval=0; - char *aval=0; - char *bval=0; - int err=0; + *v = strtod(val,&last); - size_t alen = 0; - size_t blen = 0; - long count=0; + if(*last == 0) + { + grib_context_log(a->context,GRIB_LOG_DEBUG, " Casting string %s to long", a->name); + return GRIB_SUCCESS; + } - err=grib_value_count(a,&count); - if (err) return err; - alen=count; + return GRIB_NOT_IMPLEMENTED; +} - err=grib_value_count(b,&count); - if (err) return err; - blen=count; +static int compare(grib_accessor* a,grib_accessor* b) +{ + int retval=0; + char *aval=0; + char *bval=0; + int err=0; - if (alen != blen) return GRIB_COUNT_MISMATCH; + size_t alen = 0; + size_t blen = 0; + long count=0; - aval=(char*)grib_context_malloc(a->context,alen*sizeof(char)); - bval=(char*)grib_context_malloc(b->context,blen*sizeof(char)); + err=grib_value_count(a,&count); + if (err) return err; + alen=count; - grib_unpack_string(a,aval,&alen); - grib_unpack_string(b,bval,&blen); + err=grib_value_count(b,&count); + if (err) return err; + blen=count; - retval = GRIB_SUCCESS; - if (strcmp(aval,bval)) retval = GRIB_STRING_VALUE_MISMATCH; + if (alen != blen) return GRIB_COUNT_MISMATCH; - grib_context_free(a->context,aval); - grib_context_free(b->context,bval); + aval=(char*)grib_context_malloc(a->context,alen*sizeof(char)); + bval=(char*)grib_context_malloc(b->context,blen*sizeof(char)); - return retval; + grib_unpack_string(a,aval,&alen); + grib_unpack_string(b,bval,&blen); + + retval = GRIB_SUCCESS; + if (strcmp(aval,bval)) retval = GRIB_STRING_VALUE_MISMATCH; + + grib_context_free(a->context,aval); + grib_context_free(b->context,bval); + + return retval; } static long next_offset(grib_accessor* a) { - return a->offset+a->length; + return a->offset+a->length; } - diff --git a/src/grib_accessor_class_julian_day.c b/src/grib_accessor_class_julian_day.c index 24b23bd4e..fdc5232d0 100644 --- a/src/grib_accessor_class_julian_day.c +++ b/src/grib_accessor_class_julian_day.c @@ -139,93 +139,90 @@ static void init_class(grib_accessor_class* c) /* END_CLASS_IMP */ - static void init(grib_accessor* a,const long l, grib_arguments* c) { - grib_accessor_julian_day* self = (grib_accessor_julian_day*)a; - int n=0; + grib_accessor_julian_day* self = (grib_accessor_julian_day*)a; + int n=0; - self->date = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->hour = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->minute = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->second = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->date = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->hour = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->minute = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->second = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - a->length=0; + a->length=0; } - static void dump(grib_accessor* a, grib_dumper* dumper) { - grib_dump_string(dumper,a,NULL); + grib_dump_string(dumper,a,NULL); } static int pack_long(grib_accessor* a, const long* val, size_t *len) { - const double v=*val; - return pack_double(a,&v,len); + const double v=*val; + return pack_double(a,&v,len); } static int pack_double(grib_accessor* a, const double* val, size_t *len) { - grib_accessor_julian_day* self = (grib_accessor_julian_day*)a; - int ret=0; - long hour=0; - long minute=0; - long second=0; - long date=0; - long year,month,day; - - ret=grib_julian_to_datetime(*val,&year,&month,&day,&hour,&minute,&second); - if (ret!=0) return ret; + grib_accessor_julian_day* self = (grib_accessor_julian_day*)a; + int ret=0; + long hour=0; + long minute=0; + long second=0; + long date=0; + long year,month,day; - date=year * 10000 + month * 100 + day; + ret=grib_julian_to_datetime(*val,&year,&month,&day,&hour,&minute,&second); + if (ret!=0) return ret; - ret=grib_set_long_internal(grib_handle_of_accessor(a),self->date,date); - if (ret!=0) return ret; - ret=grib_set_long_internal(grib_handle_of_accessor(a),self->hour,hour); - if (ret!=0) return ret; - ret=grib_set_long_internal(grib_handle_of_accessor(a),self->minute,minute); - if (ret!=0) return ret; - ret=grib_set_long_internal(grib_handle_of_accessor(a),self->second,second); + date=year * 10000 + month * 100 + day; - return ret; + ret=grib_set_long_internal(grib_handle_of_accessor(a),self->date,date); + if (ret!=0) return ret; + ret=grib_set_long_internal(grib_handle_of_accessor(a),self->hour,hour); + if (ret!=0) return ret; + ret=grib_set_long_internal(grib_handle_of_accessor(a),self->minute,minute); + if (ret!=0) return ret; + ret=grib_set_long_internal(grib_handle_of_accessor(a),self->second,second); + + return ret; } -static int unpack_long (grib_accessor* a, long* val, size_t *len) +static int unpack_long(grib_accessor* a, long* val, size_t *len) { - int ret=0; - double v=0; - - ret=unpack_double(a,&v,len); - *val=(long)v; + int ret=0; + double v=0; - return ret; + ret=unpack_double(a,&v,len); + *val=(long)v; + + return ret; } -static int unpack_double (grib_accessor* a, double* val, size_t *len) +static int unpack_double(grib_accessor* a, double* val, size_t *len) { - int ret=0; - long date,hour,minute,second; - long year,month,day; - grib_accessor_julian_day* self = (grib_accessor_julian_day*)a; + int ret=0; + long date,hour,minute,second; + long year,month,day; + grib_accessor_julian_day* self = (grib_accessor_julian_day*)a; - ret=grib_get_long_internal(grib_handle_of_accessor(a),self->date,&date); - if (ret!=GRIB_SUCCESS) return ret; - ret=grib_get_long_internal(grib_handle_of_accessor(a),self->hour,&hour); - if (ret!=GRIB_SUCCESS) return ret; - ret=grib_get_long_internal(grib_handle_of_accessor(a),self->minute,&minute); - if (ret!=GRIB_SUCCESS) return ret; - ret=grib_get_long_internal(grib_handle_of_accessor(a),self->second,&second); - if (ret!=GRIB_SUCCESS) return ret; + ret=grib_get_long_internal(grib_handle_of_accessor(a),self->date,&date); + if (ret!=GRIB_SUCCESS) return ret; + ret=grib_get_long_internal(grib_handle_of_accessor(a),self->hour,&hour); + if (ret!=GRIB_SUCCESS) return ret; + ret=grib_get_long_internal(grib_handle_of_accessor(a),self->minute,&minute); + if (ret!=GRIB_SUCCESS) return ret; + ret=grib_get_long_internal(grib_handle_of_accessor(a),self->second,&second); + if (ret!=GRIB_SUCCESS) return ret; - year = date / 10000; - date %= 10000; - month = date / 100; - date %= 100; - day = date; + year = date / 10000; + date %= 10000; + month = date / 100; + date %= 100; + day = date; - ret=grib_datetime_to_julian(year,month,day,hour,minute,second,val); + ret=grib_datetime_to_julian(year,month,day,hour,minute,second,val); - return ret; + return ret; } - diff --git a/src/grib_accessor_class_ksec1expver.c b/src/grib_accessor_class_ksec1expver.c index bd4fde6b4..b85b37b5a 100644 --- a/src/grib_accessor_class_ksec1expver.c +++ b/src/grib_accessor_class_ksec1expver.c @@ -132,77 +132,76 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a, const long len, grib_arguments* arg ) { - a->length = len; - Assert(a->length>=0); + a->length = len; + Assert(a->length>=0); } static int unpack_long(grib_accessor* a, long* val, size_t *len) { + long value = 0; + long pos = a->offset*8; + char *intc = NULL; + char expver[5]; + char refexpver[5]; + size_t llen = a->length+1; + Assert(a->length == 4); - long value = 0; - long pos = a->offset*8; - char *intc = NULL; - char expver[5]; - char refexpver[5]; - size_t llen = a->length+1; - Assert(a->length == 4); + if(*len < 1) + { + grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 1 ); + *len = 0; + return GRIB_ARRAY_TOO_SMALL; + } + value = grib_decode_unsigned_long(grib_handle_of_accessor(a)->buffer->data , &pos, a->length*8); - if(*len < 1) - { - grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 1 ); - *len = 0; - return GRIB_ARRAY_TOO_SMALL; - } - value = grib_decode_unsigned_long(grib_handle_of_accessor(a)->buffer->data , &pos, a->length*8); + grib_unpack_string(a, refexpver , &llen); - grib_unpack_string(a, refexpver , &llen); + /* test for endian */ + intc = (char*)&value; - /* test for endiannes */ - intc = (char*)&value; + expver[0] = intc[0]; + expver[1] = intc[1]; + expver[2] = intc[2]; + expver[3] = intc[3]; + expver[4] = 0; - expver[0] = intc[0]; - expver[1] = intc[1]; - expver[2] = intc[2]; - expver[3] = intc[3]; - expver[4] = 0; + /* if there is a difference, have to reverse*/ + if(strcmp(refexpver, expver)){ + intc[0] = expver[3]; + intc[1] = expver[2]; + intc[2] = expver[1]; + intc[3] = expver[0]; + } - /* if there is a difference, have to reverse*/ - if(strcmp(refexpver, expver)){ - intc[0] = expver[3]; - intc[1] = expver[2]; - intc[2] = expver[1]; - intc[3] = expver[0]; - } - - *val = value; - *len = 1; - return GRIB_SUCCESS; + *val = value; + *len = 1; + return GRIB_SUCCESS; } static int pack_string(grib_accessor* a, const char* val, size_t *len) { - int i = 0; - if (len[0] != 4 ) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong length for %s. It has to be 4",a->name); - return GRIB_INVALID_KEY_VALUE; - } - if(len[0] > (a->length)+1) - { - grib_context_log(a->context, GRIB_LOG_ERROR, "pack_string: Wrong size (%d) for %s it contains %d values ", len[0], a->name , a->length+1 ); - len[0] = 0; - return GRIB_BUFFER_TOO_SMALL; - } + int i = 0; + if (len[0] != 4 ) { + grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong length for %s. It has to be 4",a->name); + return GRIB_INVALID_KEY_VALUE; + } + if(len[0] > (a->length)+1) + { + grib_context_log(a->context, GRIB_LOG_ERROR, "pack_string: Wrong size (%d) for %s it contains %d values ", len[0], a->name , a->length+1 ); + len[0] = 0; + return GRIB_BUFFER_TOO_SMALL; + } - for ( i = 0; i < a->length; i++) + for ( i = 0; i < a->length; i++) grib_handle_of_accessor(a)->buffer->data[a->offset+i] = val[i]; - return GRIB_SUCCESS; + return GRIB_SUCCESS; } -static int pack_long(grib_accessor* a, const long* val, size_t *len) { - char sval[5]={0,}; - size_t slen=4; - sprintf(sval,"%04d",(int)(*val)); - return pack_string(a,sval,&slen); +static int pack_long(grib_accessor* a, const long* val, size_t *len) +{ + char sval[5]={0,}; + size_t slen=4; + sprintf(sval,"%04d",(int)(*val)); + return pack_string(a,sval,&slen); } - diff --git a/src/grib_accessor_class_laplacian.c b/src/grib_accessor_class_laplacian.c index ea90b720b..b9ec77561 100644 --- a/src/grib_accessor_class_laplacian.c +++ b/src/grib_accessor_class_laplacian.c @@ -146,132 +146,128 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* c) { - grib_accessor_laplacian* self = (grib_accessor_laplacian*)a; - int n = 0; - - self->value = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->multiplier = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->divisor = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->truncating = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->computeLaplacianOperator = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + grib_accessor_laplacian* self = (grib_accessor_laplacian*)a; + int n = 0; + self->value = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->multiplier = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->divisor = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->truncating = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->computeLaplacianOperator = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); } -static int unpack_double (grib_accessor* a, double* val, size_t *len) +static int unpack_double(grib_accessor* a, double* val, size_t *len) { - grib_accessor_laplacian* self = (grib_accessor_laplacian*)a; - int ret = 0; - long value = 0; - long multiplier = 0; - long divisor = 0; + grib_accessor_laplacian* self = (grib_accessor_laplacian*)a; + int ret = 0; + long value = 0; + long multiplier = 0; + long divisor = 0; + + if(*len < 1){ + ret = GRIB_ARRAY_TOO_SMALL; + grib_context_log(a->context, GRIB_LOG_ERROR, + "Accessor %s cannot gather value for %s and/or %s error %d", + a->name,self->multiplier, self->divisor, ret); + return ret; + } + + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->divisor,&divisor)) != GRIB_SUCCESS) + return ret; + + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->multiplier,&multiplier)) != GRIB_SUCCESS) + return ret; + + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->value,&value)) != GRIB_SUCCESS) + return ret; + + if (value == GRIB_MISSING_LONG) *val=GRIB_MISSING_DOUBLE; + else *val = ((double)(value*multiplier))/divisor; + /*printf("unpack_double: divisor=%ld multiplier=%ld long_value=%ld scaled_value=%.30f\n",(double)divisor,(double)multiplier,value,*val);*/ + + if (ret == GRIB_SUCCESS) *len = 1; - if(*len < 1){ - ret = GRIB_ARRAY_TOO_SMALL; - grib_context_log(a->context, GRIB_LOG_ERROR, - "Accessor %s cannot gather value for %s and/or %s error %d", - a->name,self->multiplier, self->divisor, ret); return ret; - } - - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->divisor,&divisor)) != GRIB_SUCCESS) - return ret; - - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->multiplier,&multiplier)) != GRIB_SUCCESS) - return ret; - - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->value,&value)) != GRIB_SUCCESS) - return ret; - - if (value == GRIB_MISSING_LONG) *val=GRIB_MISSING_DOUBLE; - else *val = ((double)(value*multiplier))/divisor; - /*printf("unpack_double: divisor=%ld multiplier=%ld long_value=%ld scaled_value=%.30f\n",(double)divisor,(double)multiplier,value,*val);*/ - - if (ret == GRIB_SUCCESS) *len = 1; - - return ret; } - static int pack_long(grib_accessor* a, const long* val, size_t *len) { - const double dval=(double)*val; - return pack_double(a, &dval,len); + const double dval=(double)*val; + return pack_double(a, &dval,len); } static int pack_double(grib_accessor* a, const double* val, size_t *len) { - grib_accessor_laplacian* self = (grib_accessor_laplacian*)a; - int ret = 0; + grib_accessor_laplacian* self = (grib_accessor_laplacian*)a; + int ret = 0; - long value = 0; - long divisor = 0; - long multiplier = 0; - long truncating=0; - double x; + long value = 0; + long divisor = 0; + long multiplier = 0; + long truncating=0; + double x; - grib_set_long(grib_handle_of_accessor(a), self->computeLaplacianOperator,0); + grib_set_long(grib_handle_of_accessor(a), self->computeLaplacianOperator,0); - ret = grib_get_long_internal(grib_handle_of_accessor(a), self->divisor,&divisor); - if(ret != GRIB_SUCCESS) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->divisor, ret); - return ret; - } - ret = grib_get_long_internal(grib_handle_of_accessor(a), self->multiplier,&multiplier); - if(ret != GRIB_SUCCESS){ - grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->divisor, ret); - return ret; - } - if (self->truncating) { - ret = grib_get_long_internal(grib_handle_of_accessor(a), self->truncating,&truncating); - if(ret != GRIB_SUCCESS){ - grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->truncating, ret); - return ret; + ret = grib_get_long_internal(grib_handle_of_accessor(a), self->divisor,&divisor); + if(ret != GRIB_SUCCESS) { + grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->divisor, ret); + return ret; + } + ret = grib_get_long_internal(grib_handle_of_accessor(a), self->multiplier,&multiplier); + if(ret != GRIB_SUCCESS){ + grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->divisor, ret); + return ret; + } + if (self->truncating) { + ret = grib_get_long_internal(grib_handle_of_accessor(a), self->truncating,&truncating); + if(ret != GRIB_SUCCESS){ + grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->truncating, ret); + return ret; + } } - } - if (multiplier == 0) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont divide by a zero multiplier %s error %d \n", a->name, self->multiplier, ret); - return GRIB_ENCODING_ERROR; - } + if (multiplier == 0) { + grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont divide by a zero multiplier %s error %d \n", a->name, self->multiplier, ret); + return GRIB_ENCODING_ERROR; + } - x=*val * (double)divisor / (double)multiplier; - if (*val == GRIB_MISSING_DOUBLE) value = GRIB_MISSING_LONG; - else if (truncating) { - value = (long)x; - } else { - value = x > 0 ? (long) (x+0.5) : (long)(x-0.5); - } + x=*val * (double)divisor / (double)multiplier; + if (*val == GRIB_MISSING_DOUBLE) value = GRIB_MISSING_LONG; + else if (truncating) { + value = (long)x; + } else { + value = x > 0 ? (long) (x+0.5) : (long)(x-0.5); + } - ret = grib_set_long_internal(grib_handle_of_accessor(a), self->value,value); - if(ret ) - grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont pack value for %s error %d \n", a->name, self->value, ret); + ret = grib_set_long_internal(grib_handle_of_accessor(a), self->value,value); + if(ret ) + grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont pack value for %s error %d \n", a->name, self->value, ret); - if (ret == GRIB_SUCCESS) *len = 1; + if (ret == GRIB_SUCCESS) *len = 1; - return ret; + return ret; } -static int is_missing(grib_accessor* a){ - grib_accessor_laplacian* self = (grib_accessor_laplacian*)a; - grib_accessor* av=grib_find_accessor(grib_handle_of_accessor(a),self->value); +static int is_missing(grib_accessor* a) +{ + grib_accessor_laplacian* self = (grib_accessor_laplacian*)a; + grib_accessor* av=grib_find_accessor(grib_handle_of_accessor(a),self->value); - if (!av) return GRIB_NOT_FOUND; - return grib_is_missing_internal(av); + if (!av) return GRIB_NOT_FOUND; + return grib_is_missing_internal(av); #if 0 - int ret=0; - long value=0; + int ret=0; + long value=0; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->value, - &value) ) != GRIB_SUCCESS){ - grib_context_log(a->context, GRIB_LOG_ERROR, - "Accessor %s cannont gather value for %s error %d \n", a->name, - self->value, ret); - return 0; - } + if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->value, + &value) ) != GRIB_SUCCESS){ + grib_context_log(a->context, GRIB_LOG_ERROR, + "Accessor %s cannont gather value for %s error %d \n", a->name, + self->value, ret); + return 0; + } - return (value == GRIB_MISSING_LONG); + return (value == GRIB_MISSING_LONG); #endif - - } - diff --git a/src/grib_accessor_class_number_of_coded_values.c b/src/grib_accessor_class_number_of_coded_values.c index 31bd85f69..6df2700c8 100644 --- a/src/grib_accessor_class_number_of_coded_values.c +++ b/src/grib_accessor_class_number_of_coded_values.c @@ -143,52 +143,50 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* c) { - int n=0; - grib_accessor_number_of_coded_values* self = (grib_accessor_number_of_coded_values*)a; - self->bitsPerValue = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->offsetBeforeData = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->offsetAfterData = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->unusedBits = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->numberOfValues = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; - a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION; - a->length=0; + int n=0; + grib_accessor_number_of_coded_values* self = (grib_accessor_number_of_coded_values*)a; + self->bitsPerValue = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->offsetBeforeData = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->offsetAfterData = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->unusedBits = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->numberOfValues = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; + a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION; + a->length=0; } -static int unpack_long(grib_accessor* a, long* val, size_t *len) +static int unpack_long(grib_accessor* a, long* val, size_t *len) { - int ret=GRIB_SUCCESS; - long bpv=0; - long offsetBeforeData=0,offsetAfterData=0,unusedBits=0,numberOfValues; + int ret=GRIB_SUCCESS; + long bpv=0; + long offsetBeforeData=0,offsetAfterData=0,unusedBits=0,numberOfValues; - grib_accessor_number_of_coded_values* self = (grib_accessor_number_of_coded_values*)a; + grib_accessor_number_of_coded_values* self = (grib_accessor_number_of_coded_values*)a; + + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->bitsPerValue,&bpv)) != GRIB_SUCCESS) + return ret; + + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->offsetBeforeData,&offsetBeforeData)) != GRIB_SUCCESS) + return ret; + + + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->offsetAfterData,&offsetAfterData)) != GRIB_SUCCESS) + return ret; + + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->unusedBits,&unusedBits)) != GRIB_SUCCESS) + return ret; + + if ( bpv != 0 ) { + grib_context_log(a->context,GRIB_LOG_DEBUG,"grib_accessor_number_of_coded_values: offsetAfterData=%ld offsetBeforeData=%ld unusedBits=%ld bpv=%ld\n", + offsetAfterData,offsetBeforeData,unusedBits,bpv); + DebugAssert( offsetAfterData > offsetBeforeData ); + *val=((offsetAfterData-offsetBeforeData)*8-unusedBits)/bpv; + } else { + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->numberOfValues,&numberOfValues)) != GRIB_SUCCESS) + return ret; + + *val=numberOfValues; + } - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->bitsPerValue,&bpv)) != GRIB_SUCCESS) return ret; - - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->offsetBeforeData,&offsetBeforeData)) != GRIB_SUCCESS) - return ret; - - - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->offsetAfterData,&offsetAfterData)) != GRIB_SUCCESS) - return ret; - - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->unusedBits,&unusedBits)) != GRIB_SUCCESS) - return ret; - - if ( bpv != 0 ) { - grib_context_log(a->context,GRIB_LOG_DEBUG,"grib_accessor_number_of_coded_values: offsetAfterData=%ld offsetBeforeData=%ld unusedBits=%ld bpv=%ld\n", - offsetAfterData,offsetBeforeData,unusedBits,bpv); - DebugAssert( offsetAfterData > offsetBeforeData ); - *val=((offsetAfterData-offsetBeforeData)*8-unusedBits)/bpv; - } else { - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->numberOfValues,&numberOfValues)) != GRIB_SUCCESS) - return ret; - - *val=numberOfValues; - } - - - return ret; } - diff --git a/src/grib_accessor_class_number_of_points.c b/src/grib_accessor_class_number_of_points.c index 651a533eb..bb2d9caf2 100644 --- a/src/grib_accessor_class_number_of_points.c +++ b/src/grib_accessor_class_number_of_points.c @@ -141,52 +141,51 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* c) { - int n=0; - grib_accessor_number_of_points* self = (grib_accessor_number_of_points*)a; - self->ni = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->nj = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->plpresent = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->pl = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; - a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION; - a->length=0; + int n=0; + grib_accessor_number_of_points* self = (grib_accessor_number_of_points*)a; + self->ni = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->nj = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->plpresent = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->pl = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; + a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION; + a->length=0; } -static int unpack_long(grib_accessor* a, long* val, size_t *len) +static int unpack_long(grib_accessor* a, long* val, size_t *len) { - int ret=GRIB_SUCCESS; - long ni=0,nj=0,plpresent=0; - size_t plsize=0; - long* pl; - int i; - grib_accessor_number_of_points* self = (grib_accessor_number_of_points*)a; - grib_context* c=a->context; + int ret=GRIB_SUCCESS; + long ni=0,nj=0,plpresent=0; + size_t plsize=0; + long* pl; + int i; + grib_accessor_number_of_points* self = (grib_accessor_number_of_points*)a; + grib_context* c=a->context; + + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->ni,&ni)) != GRIB_SUCCESS) + return ret; + + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->nj,&nj)) != GRIB_SUCCESS) + return ret; + + if(self->plpresent && + ((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->plpresent,&plpresent)) != GRIB_SUCCESS) ) + return ret; + + if (nj == 0) return GRIB_GEOCALCULUS_PROBLEM; + + if (plpresent) { + /*reduced*/ + plsize=nj; + pl=(long*)grib_context_malloc(c,sizeof(long)*plsize); + grib_get_long_array_internal(grib_handle_of_accessor(a),self->pl,pl, &plsize); + *val=0; + for (i=0;ini,&ni)) != GRIB_SUCCESS) return ret; - - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->nj,&nj)) != GRIB_SUCCESS) - return ret; - - if(self->plpresent && - ((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->plpresent,&plpresent)) != GRIB_SUCCESS) ) - return ret; - - if (nj == 0) return GRIB_GEOCALCULUS_PROBLEM; - - if (plpresent) { - /*reduced*/ - plsize=nj; - pl=(long*)grib_context_malloc(c,sizeof(long)*plsize); - grib_get_long_array_internal(grib_handle_of_accessor(a),self->pl,pl, &plsize); - *val=0; - for (i=0;ivalues = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++); - self->precision = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++); - a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; - a->length=0; + int n=0; + grib_accessor_number_of_values_data_raw_packing *self =(grib_accessor_number_of_values_data_raw_packing*)a; + + self->values = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++); + self->precision = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++); + a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; + a->length=0; } -static int unpack_long(grib_accessor* a, long* val, size_t *len) +static int unpack_long(grib_accessor* a, long* val, size_t *len) { - int err=0; - grib_accessor_number_of_values_data_raw_packing *self =(grib_accessor_number_of_values_data_raw_packing*)a; - grib_accessor* adata=NULL; - long precision = 0; - int bytes=0; - long byte_count =0; + int err=0; + grib_accessor_number_of_values_data_raw_packing *self =(grib_accessor_number_of_values_data_raw_packing*)a; + grib_accessor* adata=NULL; + long precision = 0; + int bytes=0; + long byte_count =0; - adata=grib_find_accessor(grib_handle_of_accessor(a),self->values); - Assert(adata!=NULL); - byte_count=grib_byte_count(adata); + adata=grib_find_accessor(grib_handle_of_accessor(a),self->values); + Assert(adata!=NULL); + byte_count=grib_byte_count(adata); - if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->precision,&precision)) - != GRIB_SUCCESS) - return err; + if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->precision,&precision)) + != GRIB_SUCCESS) + return err; - switch(precision) - { + switch(precision) + { case 1: - bytes = 4; - break; + bytes = 4; + break; case 2: - bytes = 8; - break; + bytes = 8; + break; default: - return GRIB_NOT_IMPLEMENTED; - break; - } + return GRIB_NOT_IMPLEMENTED; + break; + } - *val = byte_count / bytes; + *val = byte_count / bytes; - return err; + return err; } - - diff --git a/src/grib_accessor_class_octect_number.c b/src/grib_accessor_class_octect_number.c index 76ec3c62b..817d18b11 100644 --- a/src/grib_accessor_class_octect_number.c +++ b/src/grib_accessor_class_octect_number.c @@ -138,38 +138,35 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* c) { - grib_accessor_octect_number* self = (grib_accessor_octect_number*)a; - int n = 0; + grib_accessor_octect_number* self = (grib_accessor_octect_number*)a; + int n = 0; - self->left = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->right = grib_arguments_get_long(grib_handle_of_accessor(a),c,n++); + self->left = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->right = grib_arguments_get_long(grib_handle_of_accessor(a),c,n++); - a->length=0; + a->length=0; } static int unpack_long(grib_accessor* a, long* val, size_t *len) { - grib_accessor_octect_number* self = (grib_accessor_octect_number*)a; - int ret = 0; - long offset; + grib_accessor_octect_number* self = (grib_accessor_octect_number*)a; + int ret = 0; + long offset; - offset=a->offset+self->right; + offset=a->offset+self->right; - /*printf("-------- setting %s to %ld\n", self->left,offset);*/ + /*printf("-------- setting %s to %ld\n", self->left,offset);*/ + if((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->left,offset)) != GRIB_SUCCESS) + return ret; + + *val = offset; + + *len =1; - if((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->left,offset)) != GRIB_SUCCESS) return ret; - - *val = offset; - - *len =1; - - return ret; } - static int pack_long(grib_accessor* a, const long* val, size_t *len) { - return 0; + return 0; } - diff --git a/src/grib_accessor_class_position.c b/src/grib_accessor_class_position.c index b411f09fc..cdf23da3f 100644 --- a/src/grib_accessor_class_position.c +++ b/src/grib_accessor_class_position.c @@ -134,42 +134,39 @@ static void init_class(grib_accessor_class* c) /* END_CLASS_IMP */ - static void init(grib_accessor* a, const long len , grib_arguments* arg ) { - a->length = 0; - a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; - a->flags |= GRIB_ACCESSOR_FLAG_HIDDEN; - a->flags |= GRIB_ACCESSOR_FLAG_EDITION_SPECIFIC; + a->length = 0; + a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; + a->flags |= GRIB_ACCESSOR_FLAG_HIDDEN; + a->flags |= GRIB_ACCESSOR_FLAG_EDITION_SPECIFIC; } -static int get_native_type(grib_accessor* a){ - return GRIB_TYPE_LONG; +static int get_native_type(grib_accessor* a) +{ + return GRIB_TYPE_LONG; } static void dump(grib_accessor* a,grib_dumper* dumper) { - grib_dump_long(dumper,a,NULL); + grib_dump_long(dumper,a,NULL); } - static int unpack_long(grib_accessor* a, long* val, size_t *len) { - - if(*len < 1) - { - grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 1 ); - *len = 0; - return GRIB_ARRAY_TOO_SMALL; - } - *val = a->offset; - *len = 1; - return GRIB_SUCCESS; - + if(*len < 1) + { + grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 1 ); + *len = 0; + return GRIB_ARRAY_TOO_SMALL; + } + *val = a->offset; + *len = 1; + return GRIB_SUCCESS; } -static int compare(grib_accessor* a, grib_accessor* b) { - if (a->offset != b->offset) return GRIB_OFFSET_MISMATCH; - return GRIB_SUCCESS; +static int compare(grib_accessor* a, grib_accessor* b) +{ + if (a->offset != b->offset) return GRIB_OFFSET_MISMATCH; + return GRIB_SUCCESS; } - diff --git a/src/grib_accessor_class_reference_value_error.c b/src/grib_accessor_class_reference_value_error.c index d463b78a1..fe429e471 100644 --- a/src/grib_accessor_class_reference_value_error.c +++ b/src/grib_accessor_class_reference_value_error.c @@ -139,34 +139,32 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* c) { - grib_accessor_reference_value_error* self = (grib_accessor_reference_value_error*)a; - int n = 0; + grib_accessor_reference_value_error* self = (grib_accessor_reference_value_error*)a; + int n = 0; - self->referenceValue = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->floatType = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - - a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; - a->length=0; + self->referenceValue = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->floatType = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; + a->length=0; } -static int unpack_double (grib_accessor* a, double* val, size_t *len) { - grib_accessor_reference_value_error* self = (grib_accessor_reference_value_error*)a; - int ret = 0; - double referenceValue=0; - - if((ret = grib_get_double_internal(grib_handle_of_accessor(a), - self->referenceValue,&referenceValue)) != GRIB_SUCCESS) +static int unpack_double (grib_accessor* a, double* val, size_t *len) { + grib_accessor_reference_value_error* self = (grib_accessor_reference_value_error*)a; + int ret = 0; + double referenceValue=0; + + if((ret = grib_get_double_internal(grib_handle_of_accessor(a), + self->referenceValue,&referenceValue)) != GRIB_SUCCESS) + return ret; + + if (!strcmp(self->floatType,"ibm")) + *val=grib_ibmfloat_error(referenceValue); + else if (!strcmp(self->floatType,"ieee")) + *val=grib_ieeefloat_error(referenceValue); + else Assert(1==0); + + if (ret == GRIB_SUCCESS) *len = 1; + return ret; - - if (!strcmp(self->floatType,"ibm")) - *val=grib_ibmfloat_error(referenceValue); - else if (!strcmp(self->floatType,"ieee")) - *val=grib_ieeefloat_error(referenceValue); - else Assert(1==0); - - if (ret == GRIB_SUCCESS) *len = 1; - - return ret; } - diff --git a/src/grib_accessor_class_round.c b/src/grib_accessor_class_round.c index 7891755af..cf4d7e587 100644 --- a/src/grib_accessor_class_round.c +++ b/src/grib_accessor_class_round.c @@ -129,58 +129,56 @@ static void init_class(grib_accessor_class* c) /* END_CLASS_IMP */ - - -static int unpack_double(grib_accessor* a, double* val, size_t *len) +static int unpack_double(grib_accessor* a, double* val, size_t *len) { - grib_accessor_round* self = (grib_accessor_round*)a; + grib_accessor_round* self = (grib_accessor_round*)a; - int ret = GRIB_SUCCESS; + int ret = GRIB_SUCCESS; - size_t replen = 0; - double rounding_precision = 0; - double rounded = 0; - double toround = 0; + size_t replen = 0; + double rounding_precision = 0; + double rounded = 0; + double toround = 0; - const char* oval = NULL; - oval = grib_arguments_get_name(grib_handle_of_accessor(a),self->arg,0); + const char* oval = NULL; + oval = grib_arguments_get_name(grib_handle_of_accessor(a),self->arg,0); - if( (ret = grib_get_double_internal(grib_handle_of_accessor(a), oval, &toround)) != 0) - return ret; + if( (ret = grib_get_double_internal(grib_handle_of_accessor(a), oval, &toround)) != 0) + return ret; - rounding_precision = grib_arguments_get_long(grib_handle_of_accessor(a),self->arg,1); + rounding_precision = grib_arguments_get_long(grib_handle_of_accessor(a),self->arg,1); - rounded = floor(rounding_precision * toround + 0.5) / rounding_precision; + rounded = floor(rounding_precision * toround + 0.5) / rounding_precision; - *len = replen; - - *val = rounded; - - return ret; -} - -static int unpack_string(grib_accessor* a, char* val, size_t *len) -{ - char result[1024]; - int ret = GRIB_SUCCESS; - size_t replen = 1; - - double value = 0; - - ret = unpack_double(a, &value, &replen); - - sprintf(result,"%.3f",value); - - replen = strlen(result)+1; - - if(*len < replen){ *len = replen; - return GRIB_ARRAY_TOO_SMALL; - } - *len = replen; + *val = rounded; - sprintf(val,"%s",result); - - return ret; + return ret; +} + +static int unpack_string(grib_accessor* a, char* val, size_t *len) +{ + char result[1024]; + int ret = GRIB_SUCCESS; + size_t replen = 1; + + double value = 0; + + ret = unpack_double(a, &value, &replen); + + sprintf(result,"%.3f",value); + + replen = strlen(result)+1; + + if(*len < replen){ + *len = replen; + return GRIB_ARRAY_TOO_SMALL; + } + + *len = replen; + + sprintf(val,"%s",result); + + return ret; } diff --git a/src/grib_accessor_class_section_padding.c b/src/grib_accessor_class_section_padding.c index c69f791db..d14f9b8b5 100644 --- a/src/grib_accessor_class_section_padding.c +++ b/src/grib_accessor_class_section_padding.c @@ -130,63 +130,61 @@ static void init_class(grib_accessor_class* c) /* END_CLASS_IMP */ - static size_t preferred_size(grib_accessor* a, int from_handle) { - grib_accessor_section_padding* self = (grib_accessor_section_padding*)a; - grib_accessor *b = a; - grib_accessor* section_length = 0; - long length = 0; - size_t size = 1; + grib_accessor_section_padding* self = (grib_accessor_section_padding*)a; + grib_accessor *b = a; + grib_accessor* section_length = 0; + long length = 0; + size_t size = 1; - long alength = 0; + long alength = 0; - if(!from_handle) - { - if(self->preserve) - return a->length; + if(!from_handle) + { + if(self->preserve) + return a->length; + else + return 0; + } + + /* The section length should be a parameter */ + while(section_length == NULL && b != NULL) + { + section_length = b->parent->aclength; + b = b->parent->owner; + } + + if(!section_length) + { + /* printf("PADDING is no !section_length\n"); */ + return 0; + } + + if(grib_unpack_long(section_length,&length,&size) == GRIB_SUCCESS) + { + if(length) + alength = length - a->offset + section_length->parent->owner->offset; + else + alength = 0; + + /*Assert(a->length>=0);*/ + + if (alength<0) alength=0; + + /* printf("PADDING is %ld\n",a->length); */ + } else - return 0; - } + { + /* printf("PADDING unpack fails\n"); */ + } - /* The section length should be a parameter */ - while(section_length == NULL && b != NULL) - { - section_length = b->parent->aclength; - b = b->parent->owner; - } - - if(!section_length) - { - /* printf("PADDING is no !section_length\n"); */ - return 0; - } - - if(grib_unpack_long(section_length,&length,&size) == GRIB_SUCCESS) - { - if(length) - alength = length - a->offset + section_length->parent->owner->offset; - else - alength = 0; - - /*Assert(a->length>=0);*/ - - if (alength<0) alength=0; - - /* printf("PADDING is %ld\n",a->length); */ - } - else - { - /* printf("PADDING unpack fails\n"); */ - } - - return alength; + return alength; } static void init(grib_accessor* a, const long len, grib_arguments*arg ) { - grib_accessor_section_padding* self = (grib_accessor_section_padding*)a; - self->preserve = 1; /* This should be a parameter */ - a->length = preferred_size(a,1); - + grib_accessor_section_padding* self = (grib_accessor_section_padding*)a; + self->preserve = 1; /* This should be a parameter */ + a->length = preferred_size(a,1); } diff --git a/src/grib_accessor_class_section_pointer.c b/src/grib_accessor_class_section_pointer.c index 96a4dc9c4..7c5e7cd10 100644 --- a/src/grib_accessor_class_section_pointer.c +++ b/src/grib_accessor_class_section_pointer.c @@ -135,88 +135,88 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a, const long len , grib_arguments* arg) { - int n=0; - grib_accessor_section_pointer* self=(grib_accessor_section_pointer*)a; - - self->sectionOffset = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++); - self->sectionLength = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++); - self->sectionNumber = grib_arguments_get_long(grib_handle_of_accessor(a),arg,n++); + int n=0; + grib_accessor_section_pointer* self=(grib_accessor_section_pointer*)a; - Assert (self->sectionNumber < MAX_NUM_SECTIONS ); - - grib_handle_of_accessor(a)->section_offset[self->sectionNumber]=(char*)self->sectionOffset; - grib_handle_of_accessor(a)->section_length[self->sectionNumber]=(char*)self->sectionLength; + self->sectionOffset = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++); + self->sectionLength = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++); + self->sectionNumber = grib_arguments_get_long(grib_handle_of_accessor(a),arg,n++); - /* printf("++++++++++++++ GRIB_API: creating section_pointer%d %s %s\n", */ - /* self->sectionNumber,self->sectionLength,self->sectionLength); */ + Assert (self->sectionNumber < MAX_NUM_SECTIONS ); - if( grib_handle_of_accessor(a)->sections_count < self->sectionNumber) - grib_handle_of_accessor(a)->sections_count=self->sectionNumber; - - a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; - a->flags |= GRIB_ACCESSOR_FLAG_HIDDEN; - a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION; - a->flags |= GRIB_ACCESSOR_FLAG_EDITION_SPECIFIC; - a->length = 0; + grib_handle_of_accessor(a)->section_offset[self->sectionNumber]=(char*)self->sectionOffset; + grib_handle_of_accessor(a)->section_length[self->sectionNumber]=(char*)self->sectionLength; + + /* printf("++++++++++++++ GRIB_API: creating section_pointer%d %s %s\n", */ + /* self->sectionNumber,self->sectionLength,self->sectionLength); */ + + if( grib_handle_of_accessor(a)->sections_count < self->sectionNumber) + grib_handle_of_accessor(a)->sections_count=self->sectionNumber; + + a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; + a->flags |= GRIB_ACCESSOR_FLAG_HIDDEN; + a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION; + a->flags |= GRIB_ACCESSOR_FLAG_EDITION_SPECIFIC; + a->length = 0; } static int get_native_type(grib_accessor* a) { - return GRIB_TYPE_BYTES; + return GRIB_TYPE_BYTES; } +static int unpack_string(grib_accessor *a , char* v, size_t *len) +{ + /* + unsigned char* p=NULL; + char* s=v; + int i; + long length=grib_byte_count(a); -static int unpack_string(grib_accessor *a , char* v, size_t *len){ - /* - unsigned char* p=NULL; - char* s=v; - int i; - long length=grib_byte_count(a); + if (*len < length) return GRIB_ARRAY_TOO_SMALL; - if (*len < length) return GRIB_ARRAY_TOO_SMALL; - - p = grib_handle_of_accessor(a)->buffer->data + grib_byte_offset(a); - - for (i = 0; i < length; i++) { - sprintf (s,"%02x", *(p++)); - s+=2; - } - - *len=length; - */ - sprintf(v,"%ld_%ld",grib_byte_offset(a),grib_byte_count(a)); - return GRIB_SUCCESS; + p = grib_handle_of_accessor(a)->buffer->data + grib_byte_offset(a); + + for (i = 0; i < length; i++) { + sprintf (s,"%02x", *(p++)); + s+=2; + } + *len=length; + */ + sprintf(v,"%ld_%ld",grib_byte_offset(a),grib_byte_count(a)); + return GRIB_SUCCESS; } -static long byte_count(grib_accessor* a){ - grib_accessor_section_pointer* self=(grib_accessor_section_pointer*)a; - long sectionLength=0; - int ret=0; - - ret=grib_get_long(grib_handle_of_accessor(a),self->sectionLength,§ionLength); - if (ret) { - grib_context_log(a->context,GRIB_LOG_ERROR, - "unable to get %s %s", - self->sectionLength,grib_get_error_message(ret)); - return -1; - } - - return sectionLength; +static long byte_count(grib_accessor* a) +{ + grib_accessor_section_pointer* self=(grib_accessor_section_pointer*)a; + long sectionLength=0; + int ret=0; + + ret=grib_get_long(grib_handle_of_accessor(a),self->sectionLength,§ionLength); + if (ret) { + grib_context_log(a->context,GRIB_LOG_ERROR, + "unable to get %s %s", + self->sectionLength,grib_get_error_message(ret)); + return -1; + } + + return sectionLength; } -static long byte_offset(grib_accessor* a){ - grib_accessor_section_pointer* self=(grib_accessor_section_pointer*)a; - long sectionOffset=0; - int ret=0; - - ret=grib_get_long(grib_handle_of_accessor(a),self->sectionOffset,§ionOffset); - if (ret) { - grib_context_log(a->context,GRIB_LOG_ERROR, - "unable to get %s %s", - self->sectionOffset,grib_get_error_message(ret)); - return -1; - } - - return sectionOffset; -} +static long byte_offset(grib_accessor* a) +{ + grib_accessor_section_pointer* self=(grib_accessor_section_pointer*)a; + long sectionOffset=0; + int ret=0; + ret=grib_get_long(grib_handle_of_accessor(a),self->sectionOffset,§ionOffset); + if (ret) { + grib_context_log(a->context,GRIB_LOG_ERROR, + "unable to get %s %s", + self->sectionOffset,grib_get_error_message(ret)); + return -1; + } + + return sectionOffset; +} diff --git a/src/grib_accessor_class_sexagesimal2decimal.c b/src/grib_accessor_class_sexagesimal2decimal.c index 677c8ba55..8adc25887 100644 --- a/src/grib_accessor_class_sexagesimal2decimal.c +++ b/src/grib_accessor_class_sexagesimal2decimal.c @@ -138,80 +138,80 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a, const long len , grib_arguments* arg ) { - - a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; + a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; } static void dump(grib_accessor* a, grib_dumper* dumper) { - grib_dump_double(dumper,a,NULL); + grib_dump_double(dumper,a,NULL); } -static int get_native_type(grib_accessor* a){ - return GRIB_TYPE_DOUBLE; +static int get_native_type(grib_accessor* a) +{ + return GRIB_TYPE_DOUBLE; } static int unpack_string(grib_accessor* a, char* val, size_t *len) { - int err=0; - grib_accessor_sexagesimal2decimal* self=(grib_accessor_sexagesimal2decimal*)a; - char buff[512]={0,}; - size_t length=0; - size_t size=512; - char* p; - char* q; - double dd,mm=0,ss=0; - int dd_sign=1; + int err=0; + grib_accessor_sexagesimal2decimal* self=(grib_accessor_sexagesimal2decimal*)a; + char buff[512]={0,}; + size_t length=0; + size_t size=512; + char* p; + char* q; + double dd,mm=0,ss=0; + int dd_sign=1; - err=grib_get_string(grib_handle_of_accessor(a),self->key,buff,&size); - if (err) return err; - q=buff+self->start; - if (self->length) q[length]=0; - p=q; + err=grib_get_string(grib_handle_of_accessor(a),self->key,buff,&size); + if (err) return err; + q=buff+self->start; + if (self->length) q[length]=0; + p=q; - while ( *p != '-' && *p != ':' && *p != ' ' && *p!=0 ) { p++; } + while ( *p != '-' && *p != ':' && *p != ' ' && *p!=0 ) { p++; } - if (*p==0) { return GRIB_WRONG_CONVERSION;} - *p=0; + if (*p==0) { return GRIB_WRONG_CONVERSION;} + *p=0; - dd=atoi(q); - p++; q=p; - while ( *p != '-' && *p != ':' && *p != ' ' && *p != 'N' - && *p != 'S' && *p != 'E' && *p != 'W' && *p!=0 ) { p++; } - switch (*p) { - case ' ': - case '-': - case ':': - *p=0; - mm=atoi(q) / 60.0; - dd+=mm; - p++; q=p; - break; - case 'N': - case 'E': - *p=0; - dd_sign=1; - mm=atoi(q) / 60.0; - dd+=mm; - p++; q=p; - break; - case 'S': - case 'W': - *p=0; - mm=atoi(q) / 60.0; - dd+=mm; - dd_sign=-1; - p++; q=p; - break; - case 0: - break; - default: - return GRIB_WRONG_CONVERSION; - } - if (*p) { - while ( *p != '-' && *p != ':' && *p != ' ' && *p != 'N' - && *p != 'S' && *p != 'E' && *p != 'W' && *p!=0 ) { p++; } - switch (*p) { + dd=atoi(q); + p++; q=p; + while ( *p != '-' && *p != ':' && *p != ' ' && *p != 'N' + && *p != 'S' && *p != 'E' && *p != 'W' && *p!=0 ) { p++; } + switch (*p) { + case ' ': + case '-': + case ':': + *p=0; + mm=atoi(q) / 60.0; + dd+=mm; + p++; q=p; + break; + case 'N': + case 'E': + *p=0; + dd_sign=1; + mm=atoi(q) / 60.0; + dd+=mm; + p++; q=p; + break; + case 'S': + case 'W': + *p=0; + mm=atoi(q) / 60.0; + dd+=mm; + dd_sign=-1; + p++; q=p; + break; + case 0: + break; + default: + return GRIB_WRONG_CONVERSION; + } + if (*p) { + while ( *p != '-' && *p != ':' && *p != ' ' && *p != 'N' + && *p != 'S' && *p != 'E' && *p != 'W' && *p!=0 ) { p++; } + switch (*p) { case ' ': case '-': case ':': @@ -237,24 +237,23 @@ static int unpack_string(grib_accessor* a, char* val, size_t *len) break; default: return GRIB_WRONG_CONVERSION; - } - } - dd *= dd_sign ; + } + } + dd *= dd_sign ; - sprintf(buff,"%.2f",dd); - length=strlen(buff); + sprintf(buff,"%.2f",dd); + length=strlen(buff); - if( len[0] < length+1 ) - { - grib_context_log(a->context, GRIB_LOG_ERROR, "unpack_string: Wrong size (%d) for %s it contains %d values ", len[0], a->name , a->length+1 ); - len[0] = 0; - return GRIB_ARRAY_TOO_SMALL; - } + if( len[0] < length+1 ) + { + grib_context_log(a->context, GRIB_LOG_ERROR, "unpack_string: Wrong size (%d) for %s it contains %d values ", len[0], a->name , a->length+1 ); + len[0] = 0; + return GRIB_ARRAY_TOO_SMALL; + } - strcpy(val,buff); + strcpy(val,buff); - len[0] = length; - return GRIB_SUCCESS; + len[0] = length; + return GRIB_SUCCESS; } - diff --git a/src/grib_accessor_class_simple_packing_error.c b/src/grib_accessor_class_simple_packing_error.c index 6b52e0f81..deb1f3e08 100644 --- a/src/grib_accessor_class_simple_packing_error.c +++ b/src/grib_accessor_class_simple_packing_error.c @@ -145,56 +145,53 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* c) { - grib_accessor_simple_packing_error* self = (grib_accessor_simple_packing_error*)a; - int n = 0; + grib_accessor_simple_packing_error* self = (grib_accessor_simple_packing_error*)a; + int n = 0; - self->bitsPerValue = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->binaryScaleFactor = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->decimalScaleFactor = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->referenceValue = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->floatType = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - - a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; - a->length=0; + self->bitsPerValue = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->binaryScaleFactor = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->decimalScaleFactor = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->referenceValue = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->floatType = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; + a->length=0; } -static int unpack_double (grib_accessor* a, double* val, size_t *len) { - grib_accessor_simple_packing_error* self = (grib_accessor_simple_packing_error*)a; - int ret = 0; - long binaryScaleFactor=0; - long bitsPerValue=0; - long decimalScaleFactor=0; - double referenceValue=0; - - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), - self->binaryScaleFactor,&binaryScaleFactor)) != GRIB_SUCCESS) +static int unpack_double(grib_accessor* a, double* val, size_t *len) +{ + grib_accessor_simple_packing_error* self = (grib_accessor_simple_packing_error*)a; + int ret = 0; + long binaryScaleFactor=0; + long bitsPerValue=0; + long decimalScaleFactor=0; + double referenceValue=0; + + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), + self->binaryScaleFactor,&binaryScaleFactor)) != GRIB_SUCCESS) + return ret; + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), + self->bitsPerValue,&bitsPerValue)) != GRIB_SUCCESS) + return ret; + + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), + self->decimalScaleFactor,&decimalScaleFactor)) != GRIB_SUCCESS) + return ret; + + if((ret = grib_get_double_internal(grib_handle_of_accessor(a), + self->referenceValue,&referenceValue)) != GRIB_SUCCESS) + return ret; + + if (!strcmp(self->floatType,"ibm")) + *val=grib_ibmfloat_error(referenceValue); + else if (!strcmp(self->floatType,"ieee")) + *val=grib_ieeefloat_error(referenceValue); + else Assert(1==0); + + if (bitsPerValue!=0) + *val=(*val+grib_power(binaryScaleFactor,2))*grib_power(-decimalScaleFactor,10)*0.5; + + if (ret == GRIB_SUCCESS) *len = 1; + return ret; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), - self->bitsPerValue,&bitsPerValue)) != GRIB_SUCCESS) - return ret; - - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), - self->decimalScaleFactor,&decimalScaleFactor)) != GRIB_SUCCESS) - return ret; - - if((ret = grib_get_double_internal(grib_handle_of_accessor(a), - self->referenceValue,&referenceValue)) != GRIB_SUCCESS) - return ret; - - if (!strcmp(self->floatType,"ibm")) - *val=grib_ibmfloat_error(referenceValue); - else if (!strcmp(self->floatType,"ieee")) - *val=grib_ieeefloat_error(referenceValue); - else Assert(1==0); - - if (bitsPerValue!=0) - *val=(*val+grib_power(binaryScaleFactor,2))*grib_power(-decimalScaleFactor,10)*0.5; - - if (ret == GRIB_SUCCESS) *len = 1; - - return ret; } - - - diff --git a/src/grib_accessor_class_smart_table_column.c b/src/grib_accessor_class_smart_table_column.c index d029b7c8e..d9f76535e 100644 --- a/src/grib_accessor_class_smart_table_column.c +++ b/src/grib_accessor_class_smart_table_column.c @@ -159,174 +159,171 @@ typedef struct grib_accessor_smart_table { int dirty; } grib_accessor_smart_table; -static void init(grib_accessor* a, const long len, grib_arguments* params) { - int n=0; - grib_accessor_smart_table_column* self = (grib_accessor_smart_table_column*)a; +static void init(grib_accessor* a, const long len, grib_arguments* params) +{ + int n=0; + grib_accessor_smart_table_column* self = (grib_accessor_smart_table_column*)a; - self->smartTable = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++); - self->index = grib_arguments_get_long(grib_handle_of_accessor(a),params,n++); - - a->length = 0; - a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; + self->smartTable = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++); + self->index = grib_arguments_get_long(grib_handle_of_accessor(a),params,n++); + a->length = 0; + a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; } static void dump(grib_accessor* a, grib_dumper* dumper) { - int type=get_native_type(a); + int type=get_native_type(a); - switch (type) { + switch (type) { case GRIB_TYPE_LONG: - grib_dump_long(dumper,a,NULL); - break; + grib_dump_long(dumper,a,NULL); + break; case GRIB_TYPE_STRING: - grib_dump_string_array(dumper,a,NULL); - break; - } + grib_dump_string_array(dumper,a,NULL); + break; + } } static int unpack_string_array (grib_accessor* a, char** buffer, size_t *len) { - grib_accessor_smart_table_column* self = (grib_accessor_smart_table_column*)a; - grib_accessor_smart_table* tableAccessor = NULL; - grib_smart_table* table = NULL; + grib_accessor_smart_table_column* self = (grib_accessor_smart_table_column*)a; + grib_accessor_smart_table* tableAccessor = NULL; + grib_smart_table* table = NULL; - size_t size = 1; - long *code; - int err = GRIB_SUCCESS; - char tmp[1024]={0,}; - int i=0; + size_t size = 1; + long *code; + int err = GRIB_SUCCESS; + char tmp[1024]={0,}; + int i=0; - tableAccessor=(grib_accessor_smart_table*)grib_find_accessor(grib_handle_of_accessor(a),self->smartTable); - if (!tableAccessor) { - grib_context_log(a->context,GRIB_LOG_ERROR, - "unable to find accessor %s",self->smartTable); - return GRIB_NOT_FOUND; - } + tableAccessor=(grib_accessor_smart_table*)grib_find_accessor(grib_handle_of_accessor(a),self->smartTable); + if (!tableAccessor) { + grib_context_log(a->context,GRIB_LOG_ERROR, + "unable to find accessor %s",self->smartTable); + return GRIB_NOT_FOUND; + } - err=_grib_get_size(grib_handle_of_accessor(a),(grib_accessor*)tableAccessor,&size); - if (err) return err; - if (*lencontext,sizeof(long)*size); - if (!code) { - grib_context_log(a->context,GRIB_LOG_FATAL, - "unable to allocate %ld bytes",(long)size); - return GRIB_OUT_OF_MEMORY; - } + code=(long*)grib_context_malloc_clear(a->context,sizeof(long)*size); + if (!code) { + grib_context_log(a->context,GRIB_LOG_FATAL, + "unable to allocate %ld bytes",(long)size); + return GRIB_OUT_OF_MEMORY; + } - if( (err = grib_unpack_long((grib_accessor*)tableAccessor,code,&size)) != GRIB_SUCCESS) - return err; + if( (err = grib_unpack_long((grib_accessor*)tableAccessor,code,&size)) != GRIB_SUCCESS) + return err; - table=tableAccessor->table; + table=tableAccessor->table; - for (i=0;i= 0) && - (code[i] < table->numberOfEntries) && - table->entries[code[i]].column[self->index]) - { - strcpy(tmp,table->entries[code[i]].column[self->index]); - } - else - { - sprintf(tmp,"%d",(int)code[i]); - } + if(table && (code[i] >= 0) && + (code[i] < table->numberOfEntries) && + table->entries[code[i]].column[self->index]) + { + strcpy(tmp,table->entries[code[i]].column[self->index]); + } + else + { + sprintf(tmp,"%d",(int)code[i]); + } - buffer[i]=grib_context_strdup(a->context,tmp); + buffer[i]=grib_context_strdup(a->context,tmp); - } - *len = size; - grib_context_free(a->context,code); + } + *len = size; + grib_context_free(a->context,code); - return GRIB_SUCCESS; + return GRIB_SUCCESS; } static int unpack_long (grib_accessor* a, long* val, size_t *len) { - grib_accessor_smart_table_column* self = (grib_accessor_smart_table_column*)a; - grib_accessor_smart_table* tableAccessor = NULL; - grib_smart_table* table = NULL; + grib_accessor_smart_table_column* self = (grib_accessor_smart_table_column*)a; + grib_accessor_smart_table* tableAccessor = NULL; + grib_smart_table* table = NULL; - size_t size = 1; - long *code; - int err = GRIB_SUCCESS; - int i=0; + size_t size = 1; + long *code; + int err = GRIB_SUCCESS; + int i=0; - for (i=0;i<*len;i++) val[i]=GRIB_MISSING_LONG; + for (i=0;i<*len;i++) val[i]=GRIB_MISSING_LONG; - tableAccessor=(grib_accessor_smart_table*)grib_find_accessor(grib_handle_of_accessor(a),self->smartTable); - if (!tableAccessor) { - grib_context_log(a->context,GRIB_LOG_ERROR, - "unable to find accessor %s",self->smartTable); - return GRIB_NOT_FOUND; - } + tableAccessor=(grib_accessor_smart_table*)grib_find_accessor(grib_handle_of_accessor(a),self->smartTable); + if (!tableAccessor) { + grib_context_log(a->context,GRIB_LOG_ERROR, + "unable to find accessor %s",self->smartTable); + return GRIB_NOT_FOUND; + } - err=_grib_get_size(grib_handle_of_accessor(a),(grib_accessor*)tableAccessor,&size); - if (err) return err; - if (*lencontext,sizeof(long)*size); - if (!code) { - grib_context_log(a->context,GRIB_LOG_FATAL, - "unable to allocate %ld bytes",(long)size); - return GRIB_OUT_OF_MEMORY; - } + code=(long*)grib_context_malloc_clear(a->context,sizeof(long)*size); + if (!code) { + grib_context_log(a->context,GRIB_LOG_FATAL, + "unable to allocate %ld bytes",(long)size); + return GRIB_OUT_OF_MEMORY; + } - if( (err = grib_unpack_long((grib_accessor*)tableAccessor,code,&size)) != GRIB_SUCCESS) - return err; + if( (err = grib_unpack_long((grib_accessor*)tableAccessor,code,&size)) != GRIB_SUCCESS) + return err; - table=tableAccessor->table; + table=tableAccessor->table; - for (i=0;i= 0) && - (code[i] < table->numberOfEntries) && - table->entries[code[i]].column[self->index]) - { - val[i]=atol(table->entries[code[i]].column[self->index]); - } - } - *len = size; - grib_context_free(a->context,code); + for (i=0;i= 0) && + (code[i] < table->numberOfEntries) && + table->entries[code[i]].column[self->index]) + { + val[i]=atol(table->entries[code[i]].column[self->index]); + } + } + *len = size; + grib_context_free(a->context,code); - return GRIB_SUCCESS; + return GRIB_SUCCESS; } static int value_count(grib_accessor* a,long* count) { - grib_accessor_smart_table_column* self = (grib_accessor_smart_table_column*)a; - size_t size=0; - int err=0; - *count=0; + grib_accessor_smart_table_column* self = (grib_accessor_smart_table_column*)a; + size_t size=0; + int err=0; + *count=0; - if (!self->smartTable) return 0; + if (!self->smartTable) return 0; - err=grib_get_size(grib_handle_of_accessor(a),self->smartTable,&size); - *count=size; - return err; + err=grib_get_size(grib_handle_of_accessor(a),self->smartTable,&size); + *count=size; + return err; } static void destroy(grib_context* context,grib_accessor* a) { - if (a->vvalue != NULL) { - grib_context_free(context, a->vvalue); - a->vvalue=NULL; - } - + if (a->vvalue != NULL) { + grib_context_free(context, a->vvalue); + a->vvalue=NULL; + } } -static int get_native_type(grib_accessor* a){ - int type=GRIB_TYPE_LONG; - /*printf("---------- %s flags=%ld GRIB_ACCESSOR_FLAG_STRING_TYPE=%d\n", +static int get_native_type(grib_accessor* a) +{ + int type=GRIB_TYPE_LONG; + /*printf("---------- %s flags=%ld GRIB_ACCESSOR_FLAG_STRING_TYPE=%d\n", a->name,a->flags,GRIB_ACCESSOR_FLAG_STRING_TYPE);*/ - if (a->flags & GRIB_ACCESSOR_FLAG_STRING_TYPE) - type=GRIB_TYPE_STRING; - return type; + if (a->flags & GRIB_ACCESSOR_FLAG_STRING_TYPE) + type=GRIB_TYPE_STRING; + return type; } - - - diff --git a/src/grib_accessor_class_spd.c b/src/grib_accessor_class_spd.c index 4538bbace..9c0bb3748 100644 --- a/src/grib_accessor_class_spd.c +++ b/src/grib_accessor_class_spd.c @@ -138,152 +138,149 @@ static void init_class(grib_accessor_class* c) /* END_CLASS_IMP */ - static long byte_count(grib_accessor* a) { - return a->length; + return a->length; } static long compute_byte_count(grib_accessor* a){ - grib_accessor_spd* self = (grib_accessor_spd*)a; - long numberOfBits; - long numberOfElements; - int ret=0; + grib_accessor_spd* self = (grib_accessor_spd*)a; + long numberOfBits; + long numberOfElements; + int ret=0; - ret=grib_get_long(grib_handle_of_accessor(a),self->numberOfBits,&numberOfBits); - if (ret) { - grib_context_log(a->context,GRIB_LOG_ERROR, - "%s unable to get %s to compute size",a->name,self->numberOfBits); - return 0; - } + ret=grib_get_long(grib_handle_of_accessor(a),self->numberOfBits,&numberOfBits); + if (ret) { + grib_context_log(a->context,GRIB_LOG_ERROR, + "%s unable to get %s to compute size",a->name,self->numberOfBits); + return 0; + } - ret=grib_get_long(grib_handle_of_accessor(a),self->numberOfElements,&numberOfElements); - if (ret) { - grib_context_log(a->context,GRIB_LOG_ERROR, - "%s unable to get %s to compute size",a->name,self->numberOfElements); - return 0; - } - numberOfElements++; + ret=grib_get_long(grib_handle_of_accessor(a),self->numberOfElements,&numberOfElements); + if (ret) { + grib_context_log(a->context,GRIB_LOG_ERROR, + "%s unable to get %s to compute size",a->name,self->numberOfElements); + return 0; + } + numberOfElements++; - return (numberOfBits*numberOfElements+7)/8; + return (numberOfBits*numberOfElements+7)/8; } - static void init(grib_accessor* a, const long len , grib_arguments* args ) { - grib_accessor_spd* self = (grib_accessor_spd*)a; - int n=0; - self->numberOfBits=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++); - self->numberOfElements=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++); - a->length = compute_byte_count(a); + grib_accessor_spd* self = (grib_accessor_spd*)a; + int n=0; + self->numberOfBits=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++); + self->numberOfElements=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++); + a->length = compute_byte_count(a); } static void dump(grib_accessor* a, grib_dumper* dumper) { - grib_dump_long(dumper,a,NULL); + grib_dump_long(dumper,a,NULL); } -static int unpack_long (grib_accessor* a, long* val, size_t *len) +static int unpack_long(grib_accessor* a, long* val, size_t *len) { - grib_accessor_spd* self = (grib_accessor_spd*)a; - int i; - int ret=0; - long pos = a->offset*8; - long rlen = 0; - long numberOfBits = 0; + grib_accessor_spd* self = (grib_accessor_spd*)a; + int i; + int ret=0; + long pos = a->offset*8; + long rlen = 0; + long numberOfBits = 0; ret=value_count(a,&rlen); if (ret) return ret; - if(*len < rlen) - { - grib_context_log(a->context, GRIB_LOG_ERROR, - " wrong size (%ld) for %s it contains %d values ",*len, a->name , rlen); - *len = 0; - return GRIB_ARRAY_TOO_SMALL; - } + if(*len < rlen) + { + grib_context_log(a->context, GRIB_LOG_ERROR, + " wrong size (%ld) for %s it contains %d values ",*len, a->name , rlen); + *len = 0; + return GRIB_ARRAY_TOO_SMALL; + } - ret=grib_get_long(grib_handle_of_accessor(a),self->numberOfBits,&numberOfBits); - if (ret) return ret; + ret=grib_get_long(grib_handle_of_accessor(a),self->numberOfBits,&numberOfBits); + if (ret) return ret; - for (i=0;ibuffer->data, &pos, numberOfBits); + for (i=0;ibuffer->data, &pos, numberOfBits); - val[rlen-1] = grib_decode_signed_longb(grib_handle_of_accessor(a)->buffer->data, &pos, numberOfBits); + val[rlen-1] = grib_decode_signed_longb(grib_handle_of_accessor(a)->buffer->data, &pos, numberOfBits); - *len = rlen; + *len = rlen; - return GRIB_SUCCESS; + return GRIB_SUCCESS; } -static int pack_long (grib_accessor* a, const long* val, size_t *len) +static int pack_long(grib_accessor* a, const long* val, size_t *len) { - grib_accessor_spd* self = (grib_accessor_spd*)a; - int ret = 0; - long off = 0; - long numberOfBits=0; - size_t buflen = 0; - unsigned char *buf = NULL; - unsigned long i = 0; - long rlen = 0; + grib_accessor_spd* self = (grib_accessor_spd*)a; + int ret = 0; + long off = 0; + long numberOfBits=0; + size_t buflen = 0; + unsigned char *buf = NULL; + unsigned long i = 0; + long rlen = 0; ret=value_count(a,&rlen); if (ret) return ret; - if(*len != rlen) - { - ret=grib_set_long(grib_handle_of_accessor(a),self->numberOfElements,(*len)-1); - } + if(*len != rlen) + { + ret=grib_set_long(grib_handle_of_accessor(a),self->numberOfElements,(*len)-1); + } - ret=grib_get_long(grib_handle_of_accessor(a),self->numberOfBits,&numberOfBits); - if (ret) return ret; + ret=grib_get_long(grib_handle_of_accessor(a),self->numberOfBits,&numberOfBits); + if (ret) return ret; - buflen = compute_byte_count(a); + buflen = compute_byte_count(a); buf = (unsigned char*)grib_context_malloc_clear(a->context,buflen); - for(i=0; i < rlen-1;i++) { - grib_encode_unsigned_longb(buf, val[i] , &off, numberOfBits); - } + for(i=0; i < rlen-1;i++) { + grib_encode_unsigned_longb(buf, val[i] , &off, numberOfBits); + } - grib_encode_signed_longb(buf, val[rlen-1] , &off, numberOfBits); + grib_encode_signed_longb(buf, val[rlen-1] , &off, numberOfBits); - grib_buffer_replace(a, buf, buflen,1,1); + grib_buffer_replace(a, buf, buflen,1,1); - grib_context_free(a->context,buf); - - *len=rlen; - return ret; + grib_context_free(a->context,buf); + *len=rlen; + return ret; } static int value_count(grib_accessor* a,long* numberOfElements) { - grib_accessor_spd* self = (grib_accessor_spd*)a; - int ret; - *numberOfElements=0; + grib_accessor_spd* self = (grib_accessor_spd*)a; + int ret; + *numberOfElements=0; - ret=grib_get_long(grib_handle_of_accessor(a),self->numberOfElements,numberOfElements); - if (ret) { - grib_context_log(a->context,GRIB_LOG_ERROR, - "%s unable to get %s to compute size",a->name,self->numberOfElements); - return ret; - } - (*numberOfElements)++; + ret=grib_get_long(grib_handle_of_accessor(a),self->numberOfElements,numberOfElements); + if (ret) { + grib_context_log(a->context,GRIB_LOG_ERROR, + "%s unable to get %s to compute size",a->name,self->numberOfElements); + return ret; + } + (*numberOfElements)++; - return ret; + return ret; } static long byte_offset(grib_accessor* a) { - return a->offset; + return a->offset; } static void update_size(grib_accessor* a,size_t s) { - a->length = s; + a->length = s; } static long next_offset(grib_accessor* a) { - return byte_offset(a)+a->length; + return byte_offset(a)+a->length; } diff --git a/src/grib_accessor_class_spectral_truncation.c b/src/grib_accessor_class_spectral_truncation.c index 859f922c8..3372a144a 100644 --- a/src/grib_accessor_class_spectral_truncation.c +++ b/src/grib_accessor_class_spectral_truncation.c @@ -143,73 +143,67 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a,const long l, grib_arguments* c) { - grib_accessor_spectral_truncation* self = (grib_accessor_spectral_truncation*)a; - int n = 0; + grib_accessor_spectral_truncation* self = (grib_accessor_spectral_truncation*)a; + int n = 0; - self->J = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->K = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->M = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - self->T = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->J = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->K = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->M = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); + self->T = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++); - a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; + a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; } -static int unpack_long (grib_accessor* a, long* val, size_t *len) +static int unpack_long(grib_accessor* a, long* val, size_t *len) { - grib_accessor_spectral_truncation* self = (grib_accessor_spectral_truncation*)a; - int ret = 0; + grib_accessor_spectral_truncation* self = (grib_accessor_spectral_truncation*)a; + int ret = 0; - long J,K,M,T,Tc; + long J,K,M,T,Tc; - if(*len < 1) return GRIB_ARRAY_TOO_SMALL; + if(*len < 1) return GRIB_ARRAY_TOO_SMALL; + + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->J,&J)) + != GRIB_SUCCESS) + return ret; + + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->K,&K)) + != GRIB_SUCCESS) + return ret; + + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->M,&M)) + != GRIB_SUCCESS) + return ret; + + Tc=-1; + if (J==K && K==M ) { + /* Triangular truncation */ + Tc=(M+1)*(M+2); + } + if (K==J+M ) { + /* Rhomboidal truncation */ + Tc=2*J*M; + } + if (J==K && K > M ) { + /* Trapezoidal truncation */ + Tc=M*(2*J-M); + } + *val=Tc; + + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->T,&T)) + != GRIB_SUCCESS) { + if (Tc == -1) + grib_context_log(a->context, GRIB_LOG_ERROR, + "%s. Spectral Truncation Type Unknown: %s=%d %s=%d %s=%d \n", + a->name, self->J,J, self->K,K, self->M,M); + Tc=0; + grib_set_long(grib_handle_of_accessor(a), self->T,Tc); + + } else { + if (Tc != -1 && Tc != T ) grib_set_long(grib_handle_of_accessor(a), self->T,Tc); + } + + if (ret == GRIB_SUCCESS) *len = 1; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->J,&J)) - != GRIB_SUCCESS) return ret; - - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->K,&K)) - != GRIB_SUCCESS) - return ret; - - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->M,&M)) - != GRIB_SUCCESS) - return ret; - - Tc=-1; - if (J==K && K==M ) { - /* Triangular truncation */ - Tc=(M+1)*(M+2); - } - if (K==J+M ) { - /* Rhomboidal truncation */ - Tc=2*J*M; - } - if (J==K && K > M ) { - /* Trapezoidal truncation */ - Tc=M*(2*J-M); - } - - *val=Tc; - - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->T,&T)) - != GRIB_SUCCESS) { - - if (Tc == -1) - grib_context_log(a->context, GRIB_LOG_ERROR, - "%s. Spectral Truncation Type Unknown: %s=%d %s=%d %s=%d \n", - a->name, self->J,J, self->K,K, self->M,M); - - Tc=0; - grib_set_long(grib_handle_of_accessor(a), self->T,Tc); - - } else { - - if (Tc != -1 && Tc != T ) grib_set_long(grib_handle_of_accessor(a), self->T,Tc); - - } - - if (ret == GRIB_SUCCESS) *len = 1; - - return ret; } - diff --git a/src/grib_accessor_class_unpack_bufr_values.c b/src/grib_accessor_class_unpack_bufr_values.c index b73207732..303a2dca8 100644 --- a/src/grib_accessor_class_unpack_bufr_values.c +++ b/src/grib_accessor_class_unpack_bufr_values.c @@ -141,86 +141,83 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a, const long len, grib_arguments* params) { - char* key; - grib_accessor_unpack_bufr_values* self = (grib_accessor_unpack_bufr_values*)a; - key = (char*)grib_arguments_get_name(grib_handle_of_accessor(a),params,0); - self->data_accessor=grib_find_accessor(grib_handle_of_accessor(a),key); + char* key; + grib_accessor_unpack_bufr_values* self = (grib_accessor_unpack_bufr_values*)a; + key = (char*)grib_arguments_get_name(grib_handle_of_accessor(a),params,0); + self->data_accessor=grib_find_accessor(grib_handle_of_accessor(a),key); - a->length = 0; + a->length = 0; } static void dump(grib_accessor* a, grib_dumper* dumper) { - return; } static int unpack_string_array (grib_accessor* a, char** buffer, size_t *len) { - grib_accessor_unpack_bufr_values* self = (grib_accessor_unpack_bufr_values*)a; - grib_accessor* data=(grib_accessor*)self->data_accessor; + grib_accessor_unpack_bufr_values* self = (grib_accessor_unpack_bufr_values*)a; + grib_accessor* data=(grib_accessor*)self->data_accessor; - return grib_unpack_double(data,0,0); + return grib_unpack_double(data,0,0); } static int unpack_string (grib_accessor* a, char* buffer, size_t *len) { - grib_accessor_unpack_bufr_values* self = (grib_accessor_unpack_bufr_values*)a; - grib_accessor* data=(grib_accessor*)self->data_accessor; + grib_accessor_unpack_bufr_values* self = (grib_accessor_unpack_bufr_values*)a; + grib_accessor* data=(grib_accessor*)self->data_accessor; - return grib_unpack_double(data,0,0); + return grib_unpack_double(data,0,0); } static int unpack_long (grib_accessor* a, long* val, size_t *len) { - grib_accessor_unpack_bufr_values* self = (grib_accessor_unpack_bufr_values*)a; - grib_accessor* data=(grib_accessor*)self->data_accessor; + grib_accessor_unpack_bufr_values* self = (grib_accessor_unpack_bufr_values*)a; + grib_accessor* data=(grib_accessor*)self->data_accessor; - return grib_unpack_double(data,0,0); + return grib_unpack_double(data,0,0); } static int unpack_double (grib_accessor* a, double* val, size_t *len) { - grib_accessor_unpack_bufr_values* self = (grib_accessor_unpack_bufr_values*)a; - grib_accessor* data=(grib_accessor*)self->data_accessor; + grib_accessor_unpack_bufr_values* self = (grib_accessor_unpack_bufr_values*)a; + grib_accessor* data=(grib_accessor*)self->data_accessor; - return grib_unpack_double(data,0,0); + return grib_unpack_double(data,0,0); } static int value_count(grib_accessor* a,long* count) { - *count=1; - return 0; + *count=1; + return 0; } static void destroy(grib_context* context,grib_accessor* a) { - return; } -static int get_native_type(grib_accessor* a){ - return GRIB_TYPE_LONG; -} - -static int pack_long (grib_accessor* a, const long* val, size_t *len) +static int get_native_type(grib_accessor* a) { - int unpackMode=CODES_BUFR_UNPACK_STRUCTURE; - grib_accessor_unpack_bufr_values* self = (grib_accessor_unpack_bufr_values*)a; - grib_accessor* data=(grib_accessor*)self->data_accessor; - - if (*val==2) unpackMode=CODES_BUFR_UNPACK_FLAT; - if (*val==3) unpackMode=CODES_BUFR_NEW_DATA; - - accessor_bufr_data_array_set_unpackMode(data,unpackMode); - - return grib_unpack_double(data,0,0); + return GRIB_TYPE_LONG; } - -static int pack_double (grib_accessor* a, const double* val, size_t *len) +static int pack_long(grib_accessor* a, const long* val, size_t *len) { - grib_accessor_unpack_bufr_values* self = (grib_accessor_unpack_bufr_values*)a; - grib_accessor* data=(grib_accessor*)self->data_accessor; + int unpackMode=CODES_BUFR_UNPACK_STRUCTURE; + grib_accessor_unpack_bufr_values* self = (grib_accessor_unpack_bufr_values*)a; + grib_accessor* data=(grib_accessor*)self->data_accessor; - return grib_unpack_double(data,0,0); + if (*val==2) unpackMode=CODES_BUFR_UNPACK_FLAT; + if (*val==3) unpackMode=CODES_BUFR_NEW_DATA; + + accessor_bufr_data_array_set_unpackMode(data,unpackMode); + + return grib_unpack_double(data,0,0); } +static int pack_double(grib_accessor* a, const double* val, size_t *len) +{ + grib_accessor_unpack_bufr_values* self = (grib_accessor_unpack_bufr_values*)a; + grib_accessor* data=(grib_accessor*)self->data_accessor; + + return grib_unpack_double(data,0,0); +} diff --git a/src/grib_accessor_class_values.c b/src/grib_accessor_class_values.c index 02db95b51..ce27f93f8 100644 --- a/src/grib_accessor_class_values.c +++ b/src/grib_accessor_class_values.c @@ -146,139 +146,139 @@ static void init_class(grib_accessor_class* c) /* END_CLASS_IMP */ static long init_length(grib_accessor* a) { - grib_accessor_values* self = (grib_accessor_values*)a; - int ret = 0; + grib_accessor_values* self = (grib_accessor_values*)a; + int ret = 0; - long seclen = 0; - long offsetsection = 0; - long offsetdata = 0; + long seclen = 0; + long offsetsection = 0; + long offsetdata = 0; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->seclen,&seclen))) - return ret; + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->seclen,&seclen))) + return ret; - if(seclen == 0) - { - /* printf("init_length seclen=0\n"); */ - return 0; - } + if(seclen == 0) + { + /* printf("init_length seclen=0\n"); */ + return 0; + } - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->offsetsection,&offsetsection))) - return ret; + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->offsetsection,&offsetsection))) + return ret; - if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->offsetdata,&offsetdata))) - return ret; + if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->offsetdata,&offsetdata))) + return ret; - /* When reparsing */ - if(offsetdata < offsetsection) - { - /* printf("init_length offsetdata < offsetsection=0\n"); */ - Assert(grib_handle_of_accessor(a)->loader); - return 0; - } - - return seclen-(offsetdata-offsetsection); + /* When reparsing */ + if(offsetdata < offsetsection) + { + /* printf("init_length offsetdata < offsetsection=0\n"); */ + Assert(grib_handle_of_accessor(a)->loader); + return 0; + } + return seclen-(offsetdata-offsetsection); } + static void init(grib_accessor* a,const long v, grib_arguments* params) { - grib_accessor_values *self =(grib_accessor_values*)a; - self->carg = 0; + grib_accessor_values *self =(grib_accessor_values*)a; + self->carg = 0; - self->seclen = grib_arguments_get_name(grib_handle_of_accessor(a),params,self->carg++); - self->offsetdata = grib_arguments_get_name(grib_handle_of_accessor(a),params,self->carg++); - self->offsetsection = grib_arguments_get_name(grib_handle_of_accessor(a),params,self->carg++); - self->dirty =1; + self->seclen = grib_arguments_get_name(grib_handle_of_accessor(a),params,self->carg++); + self->offsetdata = grib_arguments_get_name(grib_handle_of_accessor(a),params,self->carg++); + self->offsetsection = grib_arguments_get_name(grib_handle_of_accessor(a),params,self->carg++); + self->dirty =1; - a->length = init_length(a); - - /* Assert(a->length>=0); */ + a->length = init_length(a); + /* Assert(a->length>=0); */ } -static int get_native_type(grib_accessor* a){ - return GRIB_TYPE_DOUBLE; +static int get_native_type(grib_accessor* a) +{ + return GRIB_TYPE_DOUBLE; } static void dump(grib_accessor* a, grib_dumper* dumper) { - grib_dump_values(dumper,a); + grib_dump_values(dumper,a); } - -static long byte_count(grib_accessor* a){ +static long byte_count(grib_accessor* a) +{ grib_context_log(a->context,GRIB_LOG_DEBUG,"byte_count of %s = %ld",a->name,a->length); - return a->length; + return a->length; } -static long byte_offset(grib_accessor* a){ - return a->offset; +static long byte_offset(grib_accessor* a) +{ + return a->offset; } -static long next_offset(grib_accessor* a){ - return a->offset+a->length; +static long next_offset(grib_accessor* a) +{ + return a->offset+a->length; } static void update_size(grib_accessor* a,size_t s) { grib_context_log(a->context,GRIB_LOG_DEBUG,"updating size of %s old %ld new %ld",a->name,a->length,s); - a->length = s; - Assert(a->length>=0); + a->length = s; + Assert(a->length>=0); } static int compare(grib_accessor* a, grib_accessor* b) { - int retval=0; - double *aval=0; - double *bval=0; + int retval=0; + double *aval=0; + double *bval=0; - size_t alen = 0; - size_t blen = 0; - int err=0; - long count=0; + size_t alen = 0; + size_t blen = 0; + int err=0; + long count=0; - err=grib_value_count(a,&count); - if (err) return err; - alen=count; + err=grib_value_count(a,&count); + if (err) return err; + alen=count; - err=grib_value_count(b,&count); - if (err) return err; - blen=count; + err=grib_value_count(b,&count); + if (err) return err; + blen=count; - if (alen != blen) return GRIB_COUNT_MISMATCH; + if (alen != blen) return GRIB_COUNT_MISMATCH; - aval=(double*)grib_context_malloc(a->context,alen*sizeof(double)); - bval=(double*)grib_context_malloc(b->context,blen*sizeof(double)); + aval=(double*)grib_context_malloc(a->context,alen*sizeof(double)); + bval=(double*)grib_context_malloc(b->context,blen*sizeof(double)); - grib_unpack_double(a,aval,&alen); - grib_unpack_double(b,bval,&blen); + grib_unpack_double(a,aval,&alen); + grib_unpack_double(b,bval,&blen); - retval = GRIB_SUCCESS; - while (alen != 0) { - if (*bval != *aval) retval = GRIB_DOUBLE_VALUE_MISMATCH; - alen--; - } + retval = GRIB_SUCCESS; + while (alen != 0) { + if (*bval != *aval) retval = GRIB_DOUBLE_VALUE_MISMATCH; + alen--; + } - grib_context_free(a->context,aval); - grib_context_free(b->context,bval); + grib_context_free(a->context,aval); + grib_context_free(b->context,bval); - return retval; + return retval; } static int pack_long(grib_accessor* a, const long* val, size_t *len) { - int ret=0; - grib_accessor_values *self =(grib_accessor_values*)a; - int i; - double* dval=(double*)grib_context_malloc(a->context,*len*sizeof(double)); + int ret=0; + grib_accessor_values *self =(grib_accessor_values*)a; + int i; + double* dval=(double*)grib_context_malloc(a->context,*len*sizeof(double)); - for (i=0;i<*len;i++) dval[i]=(double)val[i]; + for (i=0;i<*len;i++) dval[i]=(double)val[i]; - ret=grib_pack_double(a,dval,len); + ret=grib_pack_double(a,dval,len); - grib_context_free(a->context,dval); + grib_context_free(a->context,dval); - self->dirty=1; + self->dirty=1; - return ret; + return ret; } - -