diff --git a/HOWTO.md b/HOWTO.md index c9b897e252..4ba1e2cd93 100644 --- a/HOWTO.md +++ b/HOWTO.md @@ -17,7 +17,10 @@ process. This is likely to change in the future. 1. Add a message definition to the approprate package, or create a new one if needed. Read the **Message Guidelines** below. -2. Generate new clients and documentation by running `make +2. Increment `number_of_messages` in `python/tests/sbp/test_table.py` + by the corresponding number of new messages. + +3. Generate new clients and documentation by running `make all`. Verify that the generated code, which isn't too complicated, meets your expectations, as allowed messages are limited by the underlying language implementation. For example, you can't specify @@ -26,12 +29,12 @@ process. This is likely to change in the future. materialize a 0-length array C99 extension in the middle of the struct. GCC won't compile this. -3. Add a [`test`](spec/tests/yaml/swiftnav/sbp) case and update the - appropriate language libaries. Run `make test`. +4. (Optional) Add a [`test`](spec/tests/yaml/swiftnav/sbp) case and + update the appropriate language libaries. Run `make test`. -4. Submit a pull request. +5. Submit a pull request. -5. If Swift's internal test tooling needs to be updated to use your +6. If Swift's internal test tooling needs to be updated to use your new message, deploy the updated Python client first, and then the C client. We haven't quite decided on the details of this process. diff --git a/c/include/libsbp/gnss.h b/c/include/libsbp/gnss.h index 6900d50c92..793fb7cc1b 100644 --- a/c/include/libsbp/gnss.h +++ b/c/include/libsbp/gnss.h @@ -41,6 +41,17 @@ the Slot ID in [1,28] } sbp_gnss_signal_t; +/** Space vehicle identifier + * + * A (Constellation ID, satellite ID) tuple that uniquely identifies + * a space vehicle + */ +typedef struct SBP_ATTR_PACKED { + u8 satId; /**< ID of the space vehicle within its constellation */ + u8 constellation; /**< Constellation ID to which the SV belongs */ +} sv_id_t; + + /** Deprecated * * Deprecated. diff --git a/c/include/libsbp/ssr.h b/c/include/libsbp/ssr.h index 919aeed8ad..493fd1958d 100644 --- a/c/include/libsbp/ssr.h +++ b/c/include/libsbp/ssr.h @@ -49,27 +49,116 @@ typedef struct SBP_ATTR_PACKED { u8 code; /**< Signal constellation, band and code */ u8 integer_indicator; /**< Indicator for integer property */ u8 widelane_integer_indicator; /**< Indicator for two groups of Wide-Lane(s) integer property */ - u8 discontinuity_counter; /**< Signal phase discontinuity counter. + u8 discontinuity_counter; /**< Signal phase discontinuity counter. Increased for every discontinuity in phase. */ s32 bias; /**< Phase bias for specified signal [0.1 mm] */ } phase_biases_content_t; +/** Header for MSG_SSR_STEC_CORRECTION message + * + * A full set of STEC information will likely span multiple SBP + * messages, since SBP message a limited to 255 bytes. The header + * is used to tie multiple SBP messages into a sequence. + */ +typedef struct SBP_ATTR_PACKED { + sbp_gps_time_t time; /**< GNSS time of the STEC data */ + u8 num_msgs; /**< Number of messages in the dataset */ + u8 seq_num; /**< Position of this message in the dataset */ + u16 ssr_update_interval; /**< update interval in seconds [seconds] */ + u8 iod_ssr; /**< range 0 - 15 */ +} stec_header_t; + + +/** Header for MSG_SSR_GRIDDED_CORRECTION + * + * The 3GPP message contains nested variable length arrays + * which are not suppported in SBP, so each grid point will + * be identified by the index. + */ +typedef struct SBP_ATTR_PACKED { + sbp_gps_time_t time; /**< GNSS time of the STEC data */ + u16 num_msgs; /**< Number of messages in the dataset */ + u16 seq_num; /**< Position of this message in the dataset */ + u16 ssr_update_interval; /**< update interval in seconds [seconds] */ + u8 iod_ssr; /**< range 0 - 15 */ + u8 tropo_quality; /**< troposphere quality indicator [encoded value - see spec for details] */ +} gridded_correction_header_t; + + +/** None + * +* STEC for the given satellite. + */ +typedef struct SBP_ATTR_PACKED { + sv_id_t sv_id; /**< Unique space vehicle identifier */ + u8 stec_quality_indicator; /**< quality of STEC data [encoded value - see spec for details] */ + s16 stec_coeff[4]; /**< coefficents of the STEC polynomial */ +} stec_sat_element_t; + + +/** troposphere delay correction + * + * Contains wet vertical and hydrostatic vertical delay + */ +typedef struct SBP_ATTR_PACKED { + s16 hydro; /**< hydrostatic vertical delay [0.4 mm (add 2.3 m to get actual vert hydro delay)] */ + s8 wet; /**< wet vertical delay [0.4 mm (add 0.252 m to get actual vert wet delay)] */ +} tropospheric_delay_correction_t; + + +/** None + * +* STEC residual + */ +typedef struct SBP_ATTR_PACKED { + sv_id_t sv_id; /**< space vehicle identifier */ + s16 residual; /**< STEC residual [0.04 TECU] */ +} stec_residual_t; + + +/** Grid datum for troposphere and STEC residuals + * + * Contains one tropo datum, plus STEC residuals for each space + * vehicle + */ +typedef struct SBP_ATTR_PACKED { + u16 index; /**< index of the grid point */ + tropospheric_delay_correction_t tropo_delay_correction; /**< Wet and Hydrostatic Vertical Delay */ + stec_residual_t STEC_residuals[0]; /**< STEC Residual for the given space vehicle */ +} grid_element_t; + + +/** Defines the grid for STEC and tropo grid messages + * + * Defines the grid for STEC and tropo grid messages. + * Also includes an RLE encoded validity list. + */ +typedef struct SBP_ATTR_PACKED { + u8 region_size_inverse; /**< inverse of region size [coded value - see spec] */ + u16 area_width; /**< area width; see spec for details [coded value - 0 means not present (Swift convention)] */ + u16 lat_nw_corner_enc; /**< encoded latitude of the northwest corner of the grid */ + u16 lon_nw_corner_enc; /**< encoded longitude of the northwest corner of the grid */ + u8 num_msgs; /**< Number of messages in the dataset */ + u8 seq_num; /**< Postion of this message in the dataset */ +} grid_definition_header_t; + + /** Precise orbit and clock correction * - * The precise orbit and clock correction message is - * to be applied as a delta correction to broadcast + * The precise orbit and clock correction message is + * to be applied as a delta correction to broadcast * ephemeris and is typically an equivalent to the 1060 * and 1066 RTCM message types */ -#define SBP_MSG_SSR_ORBIT_CLOCK 0x05DD +#define SBP_MSG_SSR_ORBIT_CLOCK 0x05DD typedef struct SBP_ATTR_PACKED { gps_time_sec_t time; /**< GNSS reference time of the correction */ sbp_gnss_signal_t sid; /**< GNSS signal identifier (16 bit) */ u8 update_interval; /**< Update interval between consecutive corrections [s] */ u8 iod_ssr; /**< IOD of the SSR correction. A change of Issue Of Data -SSR is used to indicate a change in the SSR +SSR is used to indicate a change in the SSR generating configuration */ u32 iod; /**< Issue of broadcast ephemeris data or IODCRC (Beidou) */ @@ -87,18 +176,18 @@ generating configuration /** Precise orbit and clock correction * - * The precise orbit and clock correction message is - * to be applied as a delta correction to broadcast + * The precise orbit and clock correction message is + * to be applied as a delta correction to broadcast * ephemeris and is typically an equivalent to the 1060 * and 1066 RTCM message types */ -#define SBP_MSG_SSR_ORBIT_CLOCK_DEP_A 0x05DC +#define SBP_MSG_SSR_ORBIT_CLOCK_DEP_A 0x05DC typedef struct SBP_ATTR_PACKED { gps_time_sec_t time; /**< GNSS reference time of the correction */ sbp_gnss_signal_t sid; /**< GNSS signal identifier (16 bit) */ u8 update_interval; /**< Update interval between consecutive corrections [s] */ u8 iod_ssr; /**< IOD of the SSR correction. A change of Issue Of Data -SSR is used to indicate a change in the SSR +SSR is used to indicate a change in the SSR generating configuration */ u8 iod; /**< Issue of broadcast ephemeris data */ @@ -118,16 +207,16 @@ generating configuration * * The precise code biases message is to be added * to the pseudorange of the corresponding signal - * to get corrected pseudorange. It is typically + * to get corrected pseudorange. It is typically * an equivalent to the 1059 and 1065 RTCM message types */ -#define SBP_MSG_SSR_CODE_BIASES 0x05E1 +#define SBP_MSG_SSR_CODE_BIASES 0x05E1 typedef struct SBP_ATTR_PACKED { gps_time_sec_t time; /**< GNSS reference time of the correction */ sbp_gnss_signal_t sid; /**< GNSS signal identifier (16 bit) */ u8 update_interval; /**< Update interval between consecutive corrections [s] */ u8 iod_ssr; /**< IOD of the SSR correction. A change of Issue Of Data -SSR is used to indicate a change in the SSR +SSR is used to indicate a change in the SSR generating configuration */ code_biases_content_t biases[0]; /**< Code biases for the different satellite signals */ @@ -138,18 +227,18 @@ generating configuration * * The precise phase biases message contains the biases * to be added to the carrier phase of the corresponding - * signal to get corrected carrier phase measurement, as - * well as the satellite yaw angle to be applied to compute - * the phase wind-up correction. + * signal to get corrected carrier phase measurement, as + * well as the satellite yaw angle to be applied to compute + * the phase wind-up correction. * It is typically an equivalent to the 1265 RTCM message types */ -#define SBP_MSG_SSR_PHASE_BIASES 0x05E6 +#define SBP_MSG_SSR_PHASE_BIASES 0x05E6 typedef struct SBP_ATTR_PACKED { gps_time_sec_t time; /**< GNSS reference time of the correction */ sbp_gnss_signal_t sid; /**< GNSS signal identifier (16 bit) */ u8 update_interval; /**< Update interval between consecutive corrections [s] */ u8 iod_ssr; /**< IOD of the SSR correction. A change of Issue Of Data -SSR is used to indicate a change in the SSR +SSR is used to indicate a change in the SSR generating configuration */ u8 dispersive_bias; /**< Indicator for the dispersive phase biases property. @@ -164,6 +253,46 @@ satellite being tracked. } msg_ssr_phase_biases_t; +/** Slant Total Electron Content + * + * The STEC per space vehicle, given as polynomial approximation for + * a given grid. This should be combined with SSR-GriddedCorrection + * message to get the state space representation of the atmospheric + * delay. + */ +#define SBP_MSG_SSR_STEC_CORRECTION 0x05EB +typedef struct SBP_ATTR_PACKED { + stec_header_t header; /**< Header of a STEC message */ + stec_sat_element_t stec_sat_list[0]; /**< Array of STEC information for each space vehicle */ +} msg_ssr_stec_correction_t; + + +/** Gridded troposphere and STEC residuals + * + * STEC residuals are per space vehicle, tropo is not. + */ +#define SBP_MSG_SSR_GRIDDED_CORRECTION 0x05F0 +typedef struct SBP_ATTR_PACKED { + gridded_correction_header_t header; /**< Header of a Gridded Correction message */ + grid_element_t element; /**< Tropo and STEC residuals for the given grid point */ +} msg_ssr_gridded_correction_t; + + +/** None + * +* Definition of the grid for STEC and tropo messages + */ +#define SBP_MSG_SSR_GRID_DEFINITION 0x05F5 +typedef struct SBP_ATTR_PACKED { + grid_definition_header_t header; /**< Header of a Gridded Correction message */ + u8 rle_list[0]; /**< Run Length Encode list of quadrants that contain valid data. +The spec describes the encoding scheme in detail, but +essentially the index of the quadrants that contain transitions between +valid and invalid (and vice versa) are encoded as u8 integers. + */ +} msg_ssr_grid_definition_t; + + /** \} */ SBP_PACK_END diff --git a/docs/sbp.pdf b/docs/sbp.pdf index 732d5f5024..16d5c38aaf 100644 Binary files a/docs/sbp.pdf and b/docs/sbp.pdf differ diff --git a/generator/sbpg/targets/javascript.py b/generator/sbpg/targets/javascript.py index 1990dfb708..a1aa21d748 100644 --- a/generator/sbpg/targets/javascript.py +++ b/generator/sbpg/targets/javascript.py @@ -194,7 +194,7 @@ def render_source(output_dir, package_spec, jenv=JENV): destination_filename = "%s/%s.js" % (directory, name) py_template = jenv.get_template(TEMPLATE_NAME) module_path = ".".join(package_spec.identifier.split(".")[1:-1]) - includeMap = {'gnss': ['GnssSignal', 'GnssSignalDep', 'GPSTime', 'CarrierPhase', 'GPSTime', 'GPSTimeSec', 'GPSTimeDep'] } + includeMap = {'gnss': ['GnssSignal', 'GnssSignalDep', 'GPSTime', 'CarrierPhase', 'GPSTime', 'GPSTimeSec', 'GPSTimeDep', 'SvId'] } includes = [".".join(i.split(".")[:-1]) for i in package_spec.includes] includes = [(i, includeMap.get(i)) for i in includes if i != "types"] with open(destination_filename, 'w') as f: diff --git a/haskell/src/SwiftNav/SBP/Gnss.hs b/haskell/src/SwiftNav/SBP/Gnss.hs index 33498d1844..fe2ddf5173 100644 --- a/haskell/src/SwiftNav/SBP/Gnss.hs +++ b/haskell/src/SwiftNav/SBP/Gnss.hs @@ -59,6 +59,30 @@ instance Binary GnssSignal where $(makeJSON "_gnssSignal_" ''GnssSignal) $(makeLenses ''GnssSignal) +-- | SvId. +-- +-- A (Constellation ID, satellite ID) tuple that uniquely identifies a space +-- vehicle +data SvId = SvId + { _svId_satId :: !Word8 + -- ^ ID of the space vehicle within its constellation + , _svId_constellation :: !Word8 + -- ^ Constellation ID to which the SV belongs + } deriving ( Show, Read, Eq ) + +instance Binary SvId where + get = do + _svId_satId <- getWord8 + _svId_constellation <- getWord8 + pure SvId {..} + + put SvId {..} = do + putWord8 _svId_satId + putWord8 _svId_constellation + +$(makeJSON "_svId_" ''SvId) +$(makeLenses ''SvId) + -- | GnssSignalDep. -- -- Deprecated. diff --git a/haskell/src/SwiftNav/SBP/Msg.hs b/haskell/src/SwiftNav/SBP/Msg.hs index 4ed1031471..85eb3de6bb 100644 --- a/haskell/src/SwiftNav/SBP/Msg.hs +++ b/haskell/src/SwiftNav/SBP/Msg.hs @@ -193,9 +193,12 @@ data SBPMsg = | SBPMsgSpecan MsgSpecan Msg | SBPMsgSpecanDep MsgSpecanDep Msg | SBPMsgSsrCodeBiases MsgSsrCodeBiases Msg + | SBPMsgSsrGridDefinition MsgSsrGridDefinition Msg + | SBPMsgSsrGriddedCorrection MsgSsrGriddedCorrection Msg | SBPMsgSsrOrbitClock MsgSsrOrbitClock Msg | SBPMsgSsrOrbitClockDepA MsgSsrOrbitClockDepA Msg | SBPMsgSsrPhaseBiases MsgSsrPhaseBiases Msg + | SBPMsgSsrStecCorrection MsgSsrStecCorrection Msg | SBPMsgStartup MsgStartup Msg | SBPMsgStmFlashLockSector MsgStmFlashLockSector Msg | SBPMsgStmFlashUnlockSector MsgStmFlashUnlockSector Msg @@ -375,9 +378,12 @@ instance Binary SBPMsg where | _msgSBPType == msgSpecan = SBPMsgSpecan (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgSpecanDep = SBPMsgSpecanDep (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgSsrCodeBiases = SBPMsgSsrCodeBiases (decode (fromStrict (unBytes _msgSBPPayload))) m + | _msgSBPType == msgSsrGridDefinition = SBPMsgSsrGridDefinition (decode (fromStrict (unBytes _msgSBPPayload))) m + | _msgSBPType == msgSsrGriddedCorrection = SBPMsgSsrGriddedCorrection (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgSsrOrbitClock = SBPMsgSsrOrbitClock (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgSsrOrbitClockDepA = SBPMsgSsrOrbitClockDepA (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgSsrPhaseBiases = SBPMsgSsrPhaseBiases (decode (fromStrict (unBytes _msgSBPPayload))) m + | _msgSBPType == msgSsrStecCorrection = SBPMsgSsrStecCorrection (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgStartup = SBPMsgStartup (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgStmFlashLockSector = SBPMsgStmFlashLockSector (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgStmFlashUnlockSector = SBPMsgStmFlashUnlockSector (decode (fromStrict (unBytes _msgSBPPayload))) m @@ -549,9 +555,12 @@ instance Binary SBPMsg where encoder (SBPMsgSpecan _ m) = put m encoder (SBPMsgSpecanDep _ m) = put m encoder (SBPMsgSsrCodeBiases _ m) = put m + encoder (SBPMsgSsrGridDefinition _ m) = put m + encoder (SBPMsgSsrGriddedCorrection _ m) = put m encoder (SBPMsgSsrOrbitClock _ m) = put m encoder (SBPMsgSsrOrbitClockDepA _ m) = put m encoder (SBPMsgSsrPhaseBiases _ m) = put m + encoder (SBPMsgSsrStecCorrection _ m) = put m encoder (SBPMsgStartup _ m) = put m encoder (SBPMsgStmFlashLockSector _ m) = put m encoder (SBPMsgStmFlashUnlockSector _ m) = put m @@ -727,9 +736,12 @@ instance FromJSON SBPMsg where | msgType == msgSpecan = SBPMsgSpecan <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgSpecanDep = SBPMsgSpecanDep <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgSsrCodeBiases = SBPMsgSsrCodeBiases <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj + | msgType == msgSsrGridDefinition = SBPMsgSsrGridDefinition <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj + | msgType == msgSsrGriddedCorrection = SBPMsgSsrGriddedCorrection <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgSsrOrbitClock = SBPMsgSsrOrbitClock <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgSsrOrbitClockDepA = SBPMsgSsrOrbitClockDepA <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgSsrPhaseBiases = SBPMsgSsrPhaseBiases <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj + | msgType == msgSsrStecCorrection = SBPMsgSsrStecCorrection <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgStartup = SBPMsgStartup <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgStmFlashLockSector = SBPMsgStmFlashLockSector <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgStmFlashUnlockSector = SBPMsgStmFlashUnlockSector <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj @@ -906,9 +918,12 @@ instance ToJSON SBPMsg where toJSON (SBPMsgSpecan n m) = toJSON n <<>> toJSON m toJSON (SBPMsgSpecanDep n m) = toJSON n <<>> toJSON m toJSON (SBPMsgSsrCodeBiases n m) = toJSON n <<>> toJSON m + toJSON (SBPMsgSsrGridDefinition n m) = toJSON n <<>> toJSON m + toJSON (SBPMsgSsrGriddedCorrection n m) = toJSON n <<>> toJSON m toJSON (SBPMsgSsrOrbitClock n m) = toJSON n <<>> toJSON m toJSON (SBPMsgSsrOrbitClockDepA n m) = toJSON n <<>> toJSON m toJSON (SBPMsgSsrPhaseBiases n m) = toJSON n <<>> toJSON m + toJSON (SBPMsgSsrStecCorrection n m) = toJSON n <<>> toJSON m toJSON (SBPMsgStartup n m) = toJSON n <<>> toJSON m toJSON (SBPMsgStmFlashLockSector n m) = toJSON n <<>> toJSON m toJSON (SBPMsgStmFlashUnlockSector n m) = toJSON n <<>> toJSON m @@ -1079,9 +1094,12 @@ instance HasMsg SBPMsg where msg f (SBPMsgSpecan n m) = SBPMsgSpecan n <$> f m msg f (SBPMsgSpecanDep n m) = SBPMsgSpecanDep n <$> f m msg f (SBPMsgSsrCodeBiases n m) = SBPMsgSsrCodeBiases n <$> f m + msg f (SBPMsgSsrGridDefinition n m) = SBPMsgSsrGridDefinition n <$> f m + msg f (SBPMsgSsrGriddedCorrection n m) = SBPMsgSsrGriddedCorrection n <$> f m msg f (SBPMsgSsrOrbitClock n m) = SBPMsgSsrOrbitClock n <$> f m msg f (SBPMsgSsrOrbitClockDepA n m) = SBPMsgSsrOrbitClockDepA n <$> f m msg f (SBPMsgSsrPhaseBiases n m) = SBPMsgSsrPhaseBiases n <$> f m + msg f (SBPMsgSsrStecCorrection n m) = SBPMsgSsrStecCorrection n <$> f m msg f (SBPMsgStartup n m) = SBPMsgStartup n <$> f m msg f (SBPMsgStmFlashLockSector n m) = SBPMsgStmFlashLockSector n <$> f m msg f (SBPMsgStmFlashUnlockSector n m) = SBPMsgStmFlashUnlockSector n <$> f m diff --git a/haskell/src/SwiftNav/SBP/Ssr.hs b/haskell/src/SwiftNav/SBP/Ssr.hs index c0d37b62ab..1d28475203 100644 --- a/haskell/src/SwiftNav/SBP/Ssr.hs +++ b/haskell/src/SwiftNav/SBP/Ssr.hs @@ -72,8 +72,8 @@ data PhaseBiasesContent = PhaseBiasesContent , _phaseBiasesContent_widelane_integer_indicator :: !Word8 -- ^ Indicator for two groups of Wide-Lane(s) integer property , _phaseBiasesContent_discontinuity_counter :: !Word8 - -- ^ Signal phase discontinuity counter. Increased for every discontinuity - -- in phase. + -- ^ Signal phase discontinuity counter. Increased for every discontinuity in + -- phase. , _phaseBiasesContent_bias :: !Int32 -- ^ Phase bias for specified signal } deriving ( Show, Read, Eq ) @@ -97,14 +97,231 @@ instance Binary PhaseBiasesContent where $(makeJSON "_phaseBiasesContent_" ''PhaseBiasesContent) $(makeLenses ''PhaseBiasesContent) +-- | STECHeader. +-- +-- A full set of STEC information will likely span multiple SBP messages, since +-- SBP message a limited to 255 bytes. The header is used to tie multiple SBP +-- messages into a sequence. +data STECHeader = STECHeader + { _sTECHeader_time :: !GpsTime + -- ^ GNSS time of the STEC data + , _sTECHeader_num_msgs :: !Word8 + -- ^ Number of messages in the dataset + , _sTECHeader_seq_num :: !Word8 + -- ^ Position of this message in the dataset + , _sTECHeader_ssr_update_interval :: !Word16 + -- ^ update interval in seconds + , _sTECHeader_iod_ssr :: !Word8 + -- ^ range 0 - 15 + } deriving ( Show, Read, Eq ) + +instance Binary STECHeader where + get = do + _sTECHeader_time <- get + _sTECHeader_num_msgs <- getWord8 + _sTECHeader_seq_num <- getWord8 + _sTECHeader_ssr_update_interval <- getWord16le + _sTECHeader_iod_ssr <- getWord8 + pure STECHeader {..} + + put STECHeader {..} = do + put _sTECHeader_time + putWord8 _sTECHeader_num_msgs + putWord8 _sTECHeader_seq_num + putWord16le _sTECHeader_ssr_update_interval + putWord8 _sTECHeader_iod_ssr + +$(makeJSON "_sTECHeader_" ''STECHeader) +$(makeLenses ''STECHeader) + +-- | GriddedCorrectionHeader. +-- +-- The 3GPP message contains nested variable length arrays which are not +-- suppported in SBP, so each grid point will be identified by the index. +data GriddedCorrectionHeader = GriddedCorrectionHeader + { _griddedCorrectionHeader_time :: !GpsTime + -- ^ GNSS time of the STEC data + , _griddedCorrectionHeader_num_msgs :: !Word16 + -- ^ Number of messages in the dataset + , _griddedCorrectionHeader_seq_num :: !Word16 + -- ^ Position of this message in the dataset + , _griddedCorrectionHeader_ssr_update_interval :: !Word16 + -- ^ update interval in seconds + , _griddedCorrectionHeader_iod_ssr :: !Word8 + -- ^ range 0 - 15 + , _griddedCorrectionHeader_tropo_quality :: !Word8 + -- ^ troposphere quality indicator + } deriving ( Show, Read, Eq ) + +instance Binary GriddedCorrectionHeader where + get = do + _griddedCorrectionHeader_time <- get + _griddedCorrectionHeader_num_msgs <- getWord16le + _griddedCorrectionHeader_seq_num <- getWord16le + _griddedCorrectionHeader_ssr_update_interval <- getWord16le + _griddedCorrectionHeader_iod_ssr <- getWord8 + _griddedCorrectionHeader_tropo_quality <- getWord8 + pure GriddedCorrectionHeader {..} + + put GriddedCorrectionHeader {..} = do + put _griddedCorrectionHeader_time + putWord16le _griddedCorrectionHeader_num_msgs + putWord16le _griddedCorrectionHeader_seq_num + putWord16le _griddedCorrectionHeader_ssr_update_interval + putWord8 _griddedCorrectionHeader_iod_ssr + putWord8 _griddedCorrectionHeader_tropo_quality + +$(makeJSON "_griddedCorrectionHeader_" ''GriddedCorrectionHeader) +$(makeLenses ''GriddedCorrectionHeader) + +-- | STECSatElement. +-- +-- STEC for the given satellite. +data STECSatElement = STECSatElement + { _sTECSatElement_sv_id :: !SvId + -- ^ Unique space vehicle identifier + , _sTECSatElement_stec_quality_indicator :: !Word8 + -- ^ quality of STEC data + , _sTECSatElement_stec_coeff :: ![Int16] + -- ^ coefficents of the STEC polynomial + } deriving ( Show, Read, Eq ) + +instance Binary STECSatElement where + get = do + _sTECSatElement_sv_id <- get + _sTECSatElement_stec_quality_indicator <- getWord8 + _sTECSatElement_stec_coeff <- replicateM 4 fromIntegral <$> getWord16le + pure STECSatElement {..} + + put STECSatElement {..} = do + put _sTECSatElement_sv_id + putWord8 _sTECSatElement_stec_quality_indicator + mapM_ (putWord16le . fromIntegral) _sTECSatElement_stec_coeff + +$(makeJSON "_sTECSatElement_" ''STECSatElement) +$(makeLenses ''STECSatElement) + +-- | TroposphericDelayCorrection. +-- +-- Contains wet vertical and hydrostatic vertical delay +data TroposphericDelayCorrection = TroposphericDelayCorrection + { _troposphericDelayCorrection_hydro :: !Int16 + -- ^ hydrostatic vertical delay + , _troposphericDelayCorrection_wet :: !Int8 + -- ^ wet vertical delay + } deriving ( Show, Read, Eq ) + +instance Binary TroposphericDelayCorrection where + get = do + _troposphericDelayCorrection_hydro <- fromIntegral <$> getWord16le + _troposphericDelayCorrection_wet <- fromIntegral <$> getWord8 + pure TroposphericDelayCorrection {..} + + put TroposphericDelayCorrection {..} = do + (putWord16le . fromIntegral) _troposphericDelayCorrection_hydro + (putWord8 . fromIntegral) _troposphericDelayCorrection_wet + +$(makeJSON "_troposphericDelayCorrection_" ''TroposphericDelayCorrection) +$(makeLenses ''TroposphericDelayCorrection) + +-- | STECResidual. +-- +-- STEC residual +data STECResidual = STECResidual + { _sTECResidual_sv_id :: !SvId + -- ^ space vehicle identifier + , _sTECResidual_residual :: !Int16 + -- ^ STEC residual + } deriving ( Show, Read, Eq ) + +instance Binary STECResidual where + get = do + _sTECResidual_sv_id <- get + _sTECResidual_residual <- fromIntegral <$> getWord16le + pure STECResidual {..} + + put STECResidual {..} = do + put _sTECResidual_sv_id + (putWord16le . fromIntegral) _sTECResidual_residual + +$(makeJSON "_sTECResidual_" ''STECResidual) +$(makeLenses ''STECResidual) + +-- | GridElement. +-- +-- Contains one tropo datum, plus STEC residuals for each space vehicle +data GridElement = GridElement + { _gridElement_index :: !Word16 + -- ^ index of the grid point + , _gridElement_tropo_delay_correction :: !TroposphericDelayCorrection + -- ^ Wet and Hydrostatic Vertical Delay + , _gridElement_STEC_residuals :: ![STECResidual] + -- ^ STEC Residual for the given space vehicle + } deriving ( Show, Read, Eq ) + +instance Binary GridElement where + get = do + _gridElement_index <- getWord16le + _gridElement_tropo_delay_correction <- get + _gridElement_STEC_residuals <- whileM (not <$> isEmpty) get + pure GridElement {..} + + put GridElement {..} = do + putWord16le _gridElement_index + put _gridElement_tropo_delay_correction + mapM_ put _gridElement_STEC_residuals + +$(makeJSON "_gridElement_" ''GridElement) +$(makeLenses ''GridElement) + +-- | GridDefinitionHeader. +-- +-- Defines the grid for STEC and tropo grid messages. Also includes an RLE +-- encoded validity list. +data GridDefinitionHeader = GridDefinitionHeader + { _gridDefinitionHeader_region_size_inverse :: !Word8 + -- ^ inverse of region size + , _gridDefinitionHeader_area_width :: !Word16 + -- ^ area width; see spec for details + , _gridDefinitionHeader_lat_nw_corner_enc :: !Word16 + -- ^ encoded latitude of the northwest corner of the grid + , _gridDefinitionHeader_lon_nw_corner_enc :: !Word16 + -- ^ encoded longitude of the northwest corner of the grid + , _gridDefinitionHeader_num_msgs :: !Word8 + -- ^ Number of messages in the dataset + , _gridDefinitionHeader_seq_num :: !Word8 + -- ^ Postion of this message in the dataset + } deriving ( Show, Read, Eq ) + +instance Binary GridDefinitionHeader where + get = do + _gridDefinitionHeader_region_size_inverse <- getWord8 + _gridDefinitionHeader_area_width <- getWord16le + _gridDefinitionHeader_lat_nw_corner_enc <- getWord16le + _gridDefinitionHeader_lon_nw_corner_enc <- getWord16le + _gridDefinitionHeader_num_msgs <- getWord8 + _gridDefinitionHeader_seq_num <- getWord8 + pure GridDefinitionHeader {..} + + put GridDefinitionHeader {..} = do + putWord8 _gridDefinitionHeader_region_size_inverse + putWord16le _gridDefinitionHeader_area_width + putWord16le _gridDefinitionHeader_lat_nw_corner_enc + putWord16le _gridDefinitionHeader_lon_nw_corner_enc + putWord8 _gridDefinitionHeader_num_msgs + putWord8 _gridDefinitionHeader_seq_num + +$(makeJSON "_gridDefinitionHeader_" ''GridDefinitionHeader) +$(makeLenses ''GridDefinitionHeader) + msgSsrOrbitClock :: Word16 msgSsrOrbitClock = 0x05DD -- | SBP class for message MSG_SSR_ORBIT_CLOCK (0x05DD). -- --- The precise orbit and clock correction message is to be applied as a delta --- correction to broadcast ephemeris and is typically an equivalent to the --- 1060 and 1066 RTCM message types +-- The precise orbit and clock correction message is to be applied as a delta +-- correction to broadcast ephemeris and is typically an equivalent to the 1060 +-- and 1066 RTCM message types data MsgSsrOrbitClock = MsgSsrOrbitClock { _msgSsrOrbitClock_time :: !GpsTimeSec -- ^ GNSS reference time of the correction @@ -114,7 +331,7 @@ data MsgSsrOrbitClock = MsgSsrOrbitClock -- ^ Update interval between consecutive corrections , _msgSsrOrbitClock_iod_ssr :: !Word8 -- ^ IOD of the SSR correction. A change of Issue Of Data SSR is used to - -- indicate a change in the SSR generating configuration + -- indicate a change in the SSR generating configuration , _msgSsrOrbitClock_iod :: !Word32 -- ^ Issue of broadcast ephemeris data or IODCRC (Beidou) , _msgSsrOrbitClock_radial :: !Int32 @@ -180,9 +397,9 @@ msgSsrOrbitClockDepA = 0x05DC -- | SBP class for message MSG_SSR_ORBIT_CLOCK_DEP_A (0x05DC). -- --- The precise orbit and clock correction message is to be applied as a delta --- correction to broadcast ephemeris and is typically an equivalent to the --- 1060 and 1066 RTCM message types +-- The precise orbit and clock correction message is to be applied as a delta +-- correction to broadcast ephemeris and is typically an equivalent to the 1060 +-- and 1066 RTCM message types data MsgSsrOrbitClockDepA = MsgSsrOrbitClockDepA { _msgSsrOrbitClockDepA_time :: !GpsTimeSec -- ^ GNSS reference time of the correction @@ -192,7 +409,7 @@ data MsgSsrOrbitClockDepA = MsgSsrOrbitClockDepA -- ^ Update interval between consecutive corrections , _msgSsrOrbitClockDepA_iod_ssr :: !Word8 -- ^ IOD of the SSR correction. A change of Issue Of Data SSR is used to - -- indicate a change in the SSR generating configuration + -- indicate a change in the SSR generating configuration , _msgSsrOrbitClockDepA_iod :: !Word8 -- ^ Issue of broadcast ephemeris data , _msgSsrOrbitClockDepA_radial :: !Int32 @@ -259,7 +476,7 @@ msgSsrCodeBiases = 0x05E1 -- | SBP class for message MSG_SSR_CODE_BIASES (0x05E1). -- -- The precise code biases message is to be added to the pseudorange of the --- corresponding signal to get corrected pseudorange. It is typically an +-- corresponding signal to get corrected pseudorange. It is typically an -- equivalent to the 1059 and 1065 RTCM message types data MsgSsrCodeBiases = MsgSsrCodeBiases { _msgSsrCodeBiases_time :: !GpsTimeSec @@ -270,7 +487,7 @@ data MsgSsrCodeBiases = MsgSsrCodeBiases -- ^ Update interval between consecutive corrections , _msgSsrCodeBiases_iod_ssr :: !Word8 -- ^ IOD of the SSR correction. A change of Issue Of Data SSR is used to - -- indicate a change in the SSR generating configuration + -- indicate a change in the SSR generating configuration , _msgSsrCodeBiases_biases :: ![CodeBiasesContent] -- ^ Code biases for the different satellite signals } deriving ( Show, Read, Eq ) @@ -302,9 +519,9 @@ msgSsrPhaseBiases = 0x05E6 -- -- The precise phase biases message contains the biases to be added to the -- carrier phase of the corresponding signal to get corrected carrier phase --- measurement, as well as the satellite yaw angle to be applied to compute --- the phase wind-up correction. It is typically an equivalent to the 1265 --- RTCM message types +-- measurement, as well as the satellite yaw angle to be applied to compute the +-- phase wind-up correction. It is typically an equivalent to the 1265 RTCM +-- message types data MsgSsrPhaseBiases = MsgSsrPhaseBiases { _msgSsrPhaseBiases_time :: !GpsTimeSec -- ^ GNSS reference time of the correction @@ -314,7 +531,7 @@ data MsgSsrPhaseBiases = MsgSsrPhaseBiases -- ^ Update interval between consecutive corrections , _msgSsrPhaseBiases_iod_ssr :: !Word8 -- ^ IOD of the SSR correction. A change of Issue Of Data SSR is used to - -- indicate a change in the SSR generating configuration + -- indicate a change in the SSR generating configuration , _msgSsrPhaseBiases_dispersive_bias :: !Word8 -- ^ Indicator for the dispersive phase biases property. , _msgSsrPhaseBiases_mw_consistency :: !Word8 @@ -354,3 +571,89 @@ instance Binary MsgSsrPhaseBiases where $(makeSBP 'msgSsrPhaseBiases ''MsgSsrPhaseBiases) $(makeJSON "_msgSsrPhaseBiases_" ''MsgSsrPhaseBiases) $(makeLenses ''MsgSsrPhaseBiases) + +msgSsrStecCorrection :: Word16 +msgSsrStecCorrection = 0x05EB + +-- | SBP class for message MSG_SSR_STEC_CORRECTION (0x05EB). +-- +-- The STEC per space vehicle, given as polynomial approximation for a given +-- grid. This should be combined with SSR-GriddedCorrection message to get the +-- state space representation of the atmospheric delay. +data MsgSsrStecCorrection = MsgSsrStecCorrection + { _msgSsrStecCorrection_header :: !STECHeader + -- ^ Header of a STEC message + , _msgSsrStecCorrection_stec_sat_list :: ![STECSatElement] + -- ^ Array of STEC information for each space vehicle + } deriving ( Show, Read, Eq ) + +instance Binary MsgSsrStecCorrection where + get = do + _msgSsrStecCorrection_header <- get + _msgSsrStecCorrection_stec_sat_list <- whileM (not <$> isEmpty) get + pure MsgSsrStecCorrection {..} + + put MsgSsrStecCorrection {..} = do + put _msgSsrStecCorrection_header + mapM_ put _msgSsrStecCorrection_stec_sat_list + +$(makeSBP 'msgSsrStecCorrection ''MsgSsrStecCorrection) +$(makeJSON "_msgSsrStecCorrection_" ''MsgSsrStecCorrection) +$(makeLenses ''MsgSsrStecCorrection) + +msgSsrGriddedCorrection :: Word16 +msgSsrGriddedCorrection = 0x05F0 + +-- | SBP class for message MSG_SSR_GRIDDED_CORRECTION (0x05F0). +-- +-- STEC residuals are per space vehicle, tropo is not. +data MsgSsrGriddedCorrection = MsgSsrGriddedCorrection + { _msgSsrGriddedCorrection_header :: !GriddedCorrectionHeader + -- ^ Header of a Gridded Correction message + , _msgSsrGriddedCorrection_element :: !GridElement + -- ^ Tropo and STEC residuals for the given grid point + } deriving ( Show, Read, Eq ) + +instance Binary MsgSsrGriddedCorrection where + get = do + _msgSsrGriddedCorrection_header <- get + _msgSsrGriddedCorrection_element <- get + pure MsgSsrGriddedCorrection {..} + + put MsgSsrGriddedCorrection {..} = do + put _msgSsrGriddedCorrection_header + put _msgSsrGriddedCorrection_element + +$(makeSBP 'msgSsrGriddedCorrection ''MsgSsrGriddedCorrection) +$(makeJSON "_msgSsrGriddedCorrection_" ''MsgSsrGriddedCorrection) +$(makeLenses ''MsgSsrGriddedCorrection) + +msgSsrGridDefinition :: Word16 +msgSsrGridDefinition = 0x05F5 + +-- | SBP class for message MSG_SSR_GRID_DEFINITION (0x05F5). +-- +-- Definition of the grid for STEC and tropo messages +data MsgSsrGridDefinition = MsgSsrGridDefinition + { _msgSsrGridDefinition_header :: !GridDefinitionHeader + -- ^ Header of a Gridded Correction message + , _msgSsrGridDefinition_rle_list :: ![Word8] + -- ^ Run Length Encode list of quadrants that contain valid data. The spec + -- describes the encoding scheme in detail, but essentially the index of + -- the quadrants that contain transitions between valid and invalid (and + -- vice versa) are encoded as u8 integers. + } deriving ( Show, Read, Eq ) + +instance Binary MsgSsrGridDefinition where + get = do + _msgSsrGridDefinition_header <- get + _msgSsrGridDefinition_rle_list <- whileM (not <$> isEmpty) getWord8 + pure MsgSsrGridDefinition {..} + + put MsgSsrGridDefinition {..} = do + put _msgSsrGridDefinition_header + mapM_ putWord8 _msgSsrGridDefinition_rle_list + +$(makeSBP 'msgSsrGridDefinition ''MsgSsrGridDefinition) +$(makeJSON "_msgSsrGridDefinition_" ''MsgSsrGridDefinition) +$(makeLenses ''MsgSsrGridDefinition) diff --git a/java/src/com/swiftnav/sbp/SBPMessage.java b/java/src/com/swiftnav/sbp/SBPMessage.java index 7120447e4a..eaa434835e 100644 --- a/java/src/com/swiftnav/sbp/SBPMessage.java +++ b/java/src/com/swiftnav/sbp/SBPMessage.java @@ -166,6 +166,16 @@ public int[] getArrayofS8(int n) { return ret; } + public int[] getArrayofS16() { + return getArrayofS16(buf.remaining()); + } + public int[] getArrayofS16(int n) { + int[] ret = new int[n]; + for (int i = 0; i < n; i++) + ret[i] = getS16(); + return ret; + } + public int[] getArrayofU16() { return getArrayofU16(buf.remaining()); } @@ -298,6 +308,15 @@ public void putArrayofS8(int[] data, int n) { putArrayofS8(data); } + public void putArrayofS16(int[] data) { + for (int x : data) + buf.putShort((short)x); + } + public void putArrayofS16(int[] data, int n) { + assert(n == data.length); + putArrayofS16(data); + } + public void putArrayofU16(int[] data) { for (int x : data) buf.putShort((short)x); diff --git a/java/src/com/swiftnav/sbp/client/MessageTable.java b/java/src/com/swiftnav/sbp/client/MessageTable.java index eaab53cb5f..bea9ccd0af 100644 --- a/java/src/com/swiftnav/sbp/client/MessageTable.java +++ b/java/src/com/swiftnav/sbp/client/MessageTable.java @@ -167,6 +167,9 @@ import com.swiftnav.sbp.ssr.MsgSsrOrbitClockDepA; import com.swiftnav.sbp.ssr.MsgSsrCodeBiases; import com.swiftnav.sbp.ssr.MsgSsrPhaseBiases; +import com.swiftnav.sbp.ssr.MsgSsrStecCorrection; +import com.swiftnav.sbp.ssr.MsgSsrGriddedCorrection; +import com.swiftnav.sbp.ssr.MsgSsrGridDefinition; import com.swiftnav.sbp.system.MsgStartup; import com.swiftnav.sbp.system.MsgDgnssStatus; import com.swiftnav.sbp.system.MsgHeartbeat; @@ -492,6 +495,12 @@ static SBPMessage dispatch(SBPMessage msg) throws SBPBinaryException { return new MsgSsrCodeBiases(msg); case MsgSsrPhaseBiases.TYPE: return new MsgSsrPhaseBiases(msg); + case MsgSsrStecCorrection.TYPE: + return new MsgSsrStecCorrection(msg); + case MsgSsrGriddedCorrection.TYPE: + return new MsgSsrGriddedCorrection(msg); + case MsgSsrGridDefinition.TYPE: + return new MsgSsrGridDefinition(msg); case MsgStartup.TYPE: return new MsgStartup(msg); case MsgDgnssStatus.TYPE: diff --git a/java/src/com/swiftnav/sbp/gnss/SvId.java b/java/src/com/swiftnav/sbp/gnss/SvId.java new file mode 100644 index 0000000000..5abf3140f4 --- /dev/null +++ b/java/src/com/swiftnav/sbp/gnss/SvId.java @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2015-2018 Swift Navigation Inc. + * Contact: Swift Navigation + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +package com.swiftnav.sbp.gnss; + +import java.math.BigInteger; + +import com.swiftnav.sbp.SBPMessage; +import com.swiftnav.sbp.SBPBinaryException; +import com.swiftnav.sbp.SBPStruct; + +import org.json.JSONObject; +import org.json.JSONArray; +import com.swiftnav.sbp.SBPStruct; + +public class SvId extends SBPStruct { + + /** ID of the space vehicle within its constellation */ + public int satId; + + /** Constellation ID to which the SV belongs */ + public int constellation; + + + public SvId () {} + + @Override + public SvId parse(SBPMessage.Parser parser) throws SBPBinaryException { + /* Parse fields from binary */ + satId = parser.getU8(); + constellation = parser.getU8(); + return this; + } + + @Override + public void build(SBPMessage.Builder builder) { + /* Build fields into binary */ + builder.putU8(satId); + builder.putU8(constellation); + } + + @Override + public JSONObject toJSON() { + JSONObject obj = new JSONObject(); + obj.put("satId", satId); + obj.put("constellation", constellation); + return obj; + } +} \ No newline at end of file diff --git a/java/src/com/swiftnav/sbp/ssr/GridDefinitionHeader.java b/java/src/com/swiftnav/sbp/ssr/GridDefinitionHeader.java new file mode 100644 index 0000000000..2d4c95b90a --- /dev/null +++ b/java/src/com/swiftnav/sbp/ssr/GridDefinitionHeader.java @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2015-2018 Swift Navigation Inc. + * Contact: Swift Navigation + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +package com.swiftnav.sbp.ssr; + +import java.math.BigInteger; + +import com.swiftnav.sbp.SBPMessage; +import com.swiftnav.sbp.SBPBinaryException; +import com.swiftnav.sbp.SBPStruct; +import com.swiftnav.sbp.gnss.*; + +import org.json.JSONObject; +import org.json.JSONArray; +import com.swiftnav.sbp.SBPStruct; + +public class GridDefinitionHeader extends SBPStruct { + + /** inverse of region size */ + public int region_size_inverse; + + /** area width; see spec for details */ + public int area_width; + + /** encoded latitude of the northwest corner of the grid */ + public int lat_nw_corner_enc; + + /** encoded longitude of the northwest corner of the grid */ + public int lon_nw_corner_enc; + + /** Number of messages in the dataset */ + public int num_msgs; + + /** Postion of this message in the dataset */ + public int seq_num; + + + public GridDefinitionHeader () {} + + @Override + public GridDefinitionHeader parse(SBPMessage.Parser parser) throws SBPBinaryException { + /* Parse fields from binary */ + region_size_inverse = parser.getU8(); + area_width = parser.getU16(); + lat_nw_corner_enc = parser.getU16(); + lon_nw_corner_enc = parser.getU16(); + num_msgs = parser.getU8(); + seq_num = parser.getU8(); + return this; + } + + @Override + public void build(SBPMessage.Builder builder) { + /* Build fields into binary */ + builder.putU8(region_size_inverse); + builder.putU16(area_width); + builder.putU16(lat_nw_corner_enc); + builder.putU16(lon_nw_corner_enc); + builder.putU8(num_msgs); + builder.putU8(seq_num); + } + + @Override + public JSONObject toJSON() { + JSONObject obj = new JSONObject(); + obj.put("region_size_inverse", region_size_inverse); + obj.put("area_width", area_width); + obj.put("lat_nw_corner_enc", lat_nw_corner_enc); + obj.put("lon_nw_corner_enc", lon_nw_corner_enc); + obj.put("num_msgs", num_msgs); + obj.put("seq_num", seq_num); + return obj; + } +} \ No newline at end of file diff --git a/java/src/com/swiftnav/sbp/ssr/GridElement.java b/java/src/com/swiftnav/sbp/ssr/GridElement.java new file mode 100644 index 0000000000..2cade15c5a --- /dev/null +++ b/java/src/com/swiftnav/sbp/ssr/GridElement.java @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2015-2018 Swift Navigation Inc. + * Contact: Swift Navigation + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +package com.swiftnav.sbp.ssr; + +import java.math.BigInteger; + +import com.swiftnav.sbp.SBPMessage; +import com.swiftnav.sbp.SBPBinaryException; +import com.swiftnav.sbp.SBPStruct; +import com.swiftnav.sbp.gnss.*; + +import org.json.JSONObject; +import org.json.JSONArray; +import com.swiftnav.sbp.SBPStruct; + +public class GridElement extends SBPStruct { + + /** index of the grid point */ + public int index; + + /** Wet and Hydrostatic Vertical Delay */ + public TroposphericDelayCorrection tropo_delay_correction; + + /** STEC Residual for the given space vehicle */ + public STECResidual[] STEC_residuals; + + + public GridElement () {} + + @Override + public GridElement parse(SBPMessage.Parser parser) throws SBPBinaryException { + /* Parse fields from binary */ + index = parser.getU16(); + tropo_delay_correction = new TroposphericDelayCorrection().parse(parser); + STEC_residuals = parser.getArray(STECResidual.class); + return this; + } + + @Override + public void build(SBPMessage.Builder builder) { + /* Build fields into binary */ + builder.putU16(index); + tropo_delay_correction.build(builder); + builder.putArray(STEC_residuals); + } + + @Override + public JSONObject toJSON() { + JSONObject obj = new JSONObject(); + obj.put("index", index); + obj.put("tropo_delay_correction", tropo_delay_correction.toJSON()); + obj.put("STEC_residuals", SBPStruct.toJSONArray(STEC_residuals)); + return obj; + } +} \ No newline at end of file diff --git a/java/src/com/swiftnav/sbp/ssr/GriddedCorrectionHeader.java b/java/src/com/swiftnav/sbp/ssr/GriddedCorrectionHeader.java new file mode 100644 index 0000000000..245116d426 --- /dev/null +++ b/java/src/com/swiftnav/sbp/ssr/GriddedCorrectionHeader.java @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2015-2018 Swift Navigation Inc. + * Contact: Swift Navigation + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +package com.swiftnav.sbp.ssr; + +import java.math.BigInteger; + +import com.swiftnav.sbp.SBPMessage; +import com.swiftnav.sbp.SBPBinaryException; +import com.swiftnav.sbp.SBPStruct; +import com.swiftnav.sbp.gnss.*; + +import org.json.JSONObject; +import org.json.JSONArray; +import com.swiftnav.sbp.SBPStruct; + +public class GriddedCorrectionHeader extends SBPStruct { + + /** GNSS time of the STEC data */ + public GPSTime time; + + /** Number of messages in the dataset */ + public int num_msgs; + + /** Position of this message in the dataset */ + public int seq_num; + + /** update interval in seconds */ + public int ssr_update_interval; + + /** range 0 - 15 */ + public int iod_ssr; + + /** troposphere quality indicator */ + public int tropo_quality; + + + public GriddedCorrectionHeader () {} + + @Override + public GriddedCorrectionHeader parse(SBPMessage.Parser parser) throws SBPBinaryException { + /* Parse fields from binary */ + time = new GPSTime().parse(parser); + num_msgs = parser.getU16(); + seq_num = parser.getU16(); + ssr_update_interval = parser.getU16(); + iod_ssr = parser.getU8(); + tropo_quality = parser.getU8(); + return this; + } + + @Override + public void build(SBPMessage.Builder builder) { + /* Build fields into binary */ + time.build(builder); + builder.putU16(num_msgs); + builder.putU16(seq_num); + builder.putU16(ssr_update_interval); + builder.putU8(iod_ssr); + builder.putU8(tropo_quality); + } + + @Override + public JSONObject toJSON() { + JSONObject obj = new JSONObject(); + obj.put("time", time.toJSON()); + obj.put("num_msgs", num_msgs); + obj.put("seq_num", seq_num); + obj.put("ssr_update_interval", ssr_update_interval); + obj.put("iod_ssr", iod_ssr); + obj.put("tropo_quality", tropo_quality); + return obj; + } +} \ No newline at end of file diff --git a/java/src/com/swiftnav/sbp/ssr/MsgSsrCodeBiases.java b/java/src/com/swiftnav/sbp/ssr/MsgSsrCodeBiases.java index 1ef50b1f29..a4f8935123 100644 --- a/java/src/com/swiftnav/sbp/ssr/MsgSsrCodeBiases.java +++ b/java/src/com/swiftnav/sbp/ssr/MsgSsrCodeBiases.java @@ -31,7 +31,7 @@ * * The precise code biases message is to be added * to the pseudorange of the corresponding signal - * to get corrected pseudorange. It is typically + * to get corrected pseudorange. It is typically * an equivalent to the 1059 and 1065 RTCM message types */ public class MsgSsrCodeBiases extends SBPMessage { @@ -48,7 +48,7 @@ public class MsgSsrCodeBiases extends SBPMessage { public int update_interval; /** IOD of the SSR correction. A change of Issue Of Data -SSR is used to indicate a change in the SSR +SSR is used to indicate a change in the SSR generating configuration */ public int iod_ssr; diff --git a/java/src/com/swiftnav/sbp/ssr/MsgSsrGridDefinition.java b/java/src/com/swiftnav/sbp/ssr/MsgSsrGridDefinition.java new file mode 100644 index 0000000000..358d2ad52a --- /dev/null +++ b/java/src/com/swiftnav/sbp/ssr/MsgSsrGridDefinition.java @@ -0,0 +1,76 @@ +/* + * Copyright (C) 2015-2018 Swift Navigation Inc. + * Contact: Swift Navigation + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +package com.swiftnav.sbp.ssr; + +import java.math.BigInteger; + +import com.swiftnav.sbp.SBPMessage; +import com.swiftnav.sbp.SBPBinaryException; +import com.swiftnav.sbp.SBPStruct; +import com.swiftnav.sbp.gnss.*; + +import org.json.JSONObject; +import org.json.JSONArray; + + +/** SBP class for message MSG_SSR_GRID_DEFINITION (0x05F5). + * + * You can have MSG_SSR_GRID_DEFINITION inherent its fields directly from + * an inherited SBP object, or construct it inline using a dict of its + * fields. + * +* Definition of the grid for STEC and tropo messages */ + +public class MsgSsrGridDefinition extends SBPMessage { + public static final int TYPE = 0x05F5; + + + /** Header of a Gridded Correction message */ + public GridDefinitionHeader header; + + /** Run Length Encode list of quadrants that contain valid data. +The spec describes the encoding scheme in detail, but +essentially the index of the quadrants that contain transitions between +valid and invalid (and vice versa) are encoded as u8 integers. + */ + public int[] rle_list; + + + public MsgSsrGridDefinition (int sender) { super(sender, TYPE); } + public MsgSsrGridDefinition () { super(TYPE); } + public MsgSsrGridDefinition (SBPMessage msg) throws SBPBinaryException { + super(msg); + assert msg.type != TYPE; + } + + @Override + protected void parse(Parser parser) throws SBPBinaryException { + /* Parse fields from binary */ + header = new GridDefinitionHeader().parse(parser); + rle_list = parser.getArrayofU8(); + } + + @Override + protected void build(Builder builder) { + header.build(builder); + builder.putArrayofU8(rle_list); + } + + @Override + public JSONObject toJSON() { + JSONObject obj = super.toJSON(); + obj.put("header", header.toJSON()); + obj.put("rle_list", new JSONArray(rle_list)); + return obj; + } +} \ No newline at end of file diff --git a/java/src/com/swiftnav/sbp/ssr/MsgSsrGriddedCorrection.java b/java/src/com/swiftnav/sbp/ssr/MsgSsrGriddedCorrection.java new file mode 100644 index 0000000000..fcd518cb45 --- /dev/null +++ b/java/src/com/swiftnav/sbp/ssr/MsgSsrGriddedCorrection.java @@ -0,0 +1,72 @@ +/* + * Copyright (C) 2015-2018 Swift Navigation Inc. + * Contact: Swift Navigation + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +package com.swiftnav.sbp.ssr; + +import java.math.BigInteger; + +import com.swiftnav.sbp.SBPMessage; +import com.swiftnav.sbp.SBPBinaryException; +import com.swiftnav.sbp.SBPStruct; +import com.swiftnav.sbp.gnss.*; + +import org.json.JSONObject; +import org.json.JSONArray; + + +/** SBP class for message MSG_SSR_GRIDDED_CORRECTION (0x05F0). + * + * You can have MSG_SSR_GRIDDED_CORRECTION inherent its fields directly from + * an inherited SBP object, or construct it inline using a dict of its + * fields. + * + * STEC residuals are per space vehicle, tropo is not. */ + +public class MsgSsrGriddedCorrection extends SBPMessage { + public static final int TYPE = 0x05F0; + + + /** Header of a Gridded Correction message */ + public GriddedCorrectionHeader header; + + /** Tropo and STEC residuals for the given grid point */ + public GridElement element; + + + public MsgSsrGriddedCorrection (int sender) { super(sender, TYPE); } + public MsgSsrGriddedCorrection () { super(TYPE); } + public MsgSsrGriddedCorrection (SBPMessage msg) throws SBPBinaryException { + super(msg); + assert msg.type != TYPE; + } + + @Override + protected void parse(Parser parser) throws SBPBinaryException { + /* Parse fields from binary */ + header = new GriddedCorrectionHeader().parse(parser); + element = new GridElement().parse(parser); + } + + @Override + protected void build(Builder builder) { + header.build(builder); + element.build(builder); + } + + @Override + public JSONObject toJSON() { + JSONObject obj = super.toJSON(); + obj.put("header", header.toJSON()); + obj.put("element", element.toJSON()); + return obj; + } +} \ No newline at end of file diff --git a/java/src/com/swiftnav/sbp/ssr/MsgSsrOrbitClock.java b/java/src/com/swiftnav/sbp/ssr/MsgSsrOrbitClock.java index 3e75bdfd6f..c923d73334 100644 --- a/java/src/com/swiftnav/sbp/ssr/MsgSsrOrbitClock.java +++ b/java/src/com/swiftnav/sbp/ssr/MsgSsrOrbitClock.java @@ -29,8 +29,8 @@ * an inherited SBP object, or construct it inline using a dict of its * fields. * - * The precise orbit and clock correction message is - * to be applied as a delta correction to broadcast + * The precise orbit and clock correction message is + * to be applied as a delta correction to broadcast * ephemeris and is typically an equivalent to the 1060 * and 1066 RTCM message types */ @@ -48,7 +48,7 @@ public class MsgSsrOrbitClock extends SBPMessage { public int update_interval; /** IOD of the SSR correction. A change of Issue Of Data -SSR is used to indicate a change in the SSR +SSR is used to indicate a change in the SSR generating configuration */ public int iod_ssr; diff --git a/java/src/com/swiftnav/sbp/ssr/MsgSsrOrbitClockDepA.java b/java/src/com/swiftnav/sbp/ssr/MsgSsrOrbitClockDepA.java index 6493f110a9..0e72542fa3 100644 --- a/java/src/com/swiftnav/sbp/ssr/MsgSsrOrbitClockDepA.java +++ b/java/src/com/swiftnav/sbp/ssr/MsgSsrOrbitClockDepA.java @@ -29,8 +29,8 @@ * an inherited SBP object, or construct it inline using a dict of its * fields. * - * The precise orbit and clock correction message is - * to be applied as a delta correction to broadcast + * The precise orbit and clock correction message is + * to be applied as a delta correction to broadcast * ephemeris and is typically an equivalent to the 1060 * and 1066 RTCM message types */ @@ -48,7 +48,7 @@ public class MsgSsrOrbitClockDepA extends SBPMessage { public int update_interval; /** IOD of the SSR correction. A change of Issue Of Data -SSR is used to indicate a change in the SSR +SSR is used to indicate a change in the SSR generating configuration */ public int iod_ssr; diff --git a/java/src/com/swiftnav/sbp/ssr/MsgSsrPhaseBiases.java b/java/src/com/swiftnav/sbp/ssr/MsgSsrPhaseBiases.java index 4e49fed72b..196d7d1697 100644 --- a/java/src/com/swiftnav/sbp/ssr/MsgSsrPhaseBiases.java +++ b/java/src/com/swiftnav/sbp/ssr/MsgSsrPhaseBiases.java @@ -31,9 +31,9 @@ * * The precise phase biases message contains the biases * to be added to the carrier phase of the corresponding - * signal to get corrected carrier phase measurement, as - * well as the satellite yaw angle to be applied to compute - * the phase wind-up correction. + * signal to get corrected carrier phase measurement, as + * well as the satellite yaw angle to be applied to compute + * the phase wind-up correction. * It is typically an equivalent to the 1265 RTCM message types */ public class MsgSsrPhaseBiases extends SBPMessage { @@ -50,7 +50,7 @@ public class MsgSsrPhaseBiases extends SBPMessage { public int update_interval; /** IOD of the SSR correction. A change of Issue Of Data -SSR is used to indicate a change in the SSR +SSR is used to indicate a change in the SSR generating configuration */ public int iod_ssr; diff --git a/java/src/com/swiftnav/sbp/ssr/MsgSsrStecCorrection.java b/java/src/com/swiftnav/sbp/ssr/MsgSsrStecCorrection.java new file mode 100644 index 0000000000..f6a6d06163 --- /dev/null +++ b/java/src/com/swiftnav/sbp/ssr/MsgSsrStecCorrection.java @@ -0,0 +1,75 @@ +/* + * Copyright (C) 2015-2018 Swift Navigation Inc. + * Contact: Swift Navigation + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +package com.swiftnav.sbp.ssr; + +import java.math.BigInteger; + +import com.swiftnav.sbp.SBPMessage; +import com.swiftnav.sbp.SBPBinaryException; +import com.swiftnav.sbp.SBPStruct; +import com.swiftnav.sbp.gnss.*; + +import org.json.JSONObject; +import org.json.JSONArray; + + +/** SBP class for message MSG_SSR_STEC_CORRECTION (0x05EB). + * + * You can have MSG_SSR_STEC_CORRECTION inherent its fields directly from + * an inherited SBP object, or construct it inline using a dict of its + * fields. + * + * The STEC per space vehicle, given as polynomial approximation for + * a given grid. This should be combined with SSR-GriddedCorrection + * message to get the state space representation of the atmospheric + * delay. */ + +public class MsgSsrStecCorrection extends SBPMessage { + public static final int TYPE = 0x05EB; + + + /** Header of a STEC message */ + public STECHeader header; + + /** Array of STEC information for each space vehicle */ + public STECSatElement[] stec_sat_list; + + + public MsgSsrStecCorrection (int sender) { super(sender, TYPE); } + public MsgSsrStecCorrection () { super(TYPE); } + public MsgSsrStecCorrection (SBPMessage msg) throws SBPBinaryException { + super(msg); + assert msg.type != TYPE; + } + + @Override + protected void parse(Parser parser) throws SBPBinaryException { + /* Parse fields from binary */ + header = new STECHeader().parse(parser); + stec_sat_list = parser.getArray(STECSatElement.class); + } + + @Override + protected void build(Builder builder) { + header.build(builder); + builder.putArray(stec_sat_list); + } + + @Override + public JSONObject toJSON() { + JSONObject obj = super.toJSON(); + obj.put("header", header.toJSON()); + obj.put("stec_sat_list", SBPStruct.toJSONArray(stec_sat_list)); + return obj; + } +} \ No newline at end of file diff --git a/java/src/com/swiftnav/sbp/ssr/PhaseBiasesContent.java b/java/src/com/swiftnav/sbp/ssr/PhaseBiasesContent.java index 7de7caf991..c9fabae69b 100644 --- a/java/src/com/swiftnav/sbp/ssr/PhaseBiasesContent.java +++ b/java/src/com/swiftnav/sbp/ssr/PhaseBiasesContent.java @@ -34,7 +34,7 @@ public class PhaseBiasesContent extends SBPStruct { /** Indicator for two groups of Wide-Lane(s) integer property */ public int widelane_integer_indicator; - /** Signal phase discontinuity counter. + /** Signal phase discontinuity counter. Increased for every discontinuity in phase. */ public int discontinuity_counter; diff --git a/java/src/com/swiftnav/sbp/ssr/STECHeader.java b/java/src/com/swiftnav/sbp/ssr/STECHeader.java new file mode 100644 index 0000000000..afc3e7adcb --- /dev/null +++ b/java/src/com/swiftnav/sbp/ssr/STECHeader.java @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2015-2018 Swift Navigation Inc. + * Contact: Swift Navigation + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +package com.swiftnav.sbp.ssr; + +import java.math.BigInteger; + +import com.swiftnav.sbp.SBPMessage; +import com.swiftnav.sbp.SBPBinaryException; +import com.swiftnav.sbp.SBPStruct; +import com.swiftnav.sbp.gnss.*; + +import org.json.JSONObject; +import org.json.JSONArray; +import com.swiftnav.sbp.SBPStruct; + +public class STECHeader extends SBPStruct { + + /** GNSS time of the STEC data */ + public GPSTime time; + + /** Number of messages in the dataset */ + public int num_msgs; + + /** Position of this message in the dataset */ + public int seq_num; + + /** update interval in seconds */ + public int ssr_update_interval; + + /** range 0 - 15 */ + public int iod_ssr; + + + public STECHeader () {} + + @Override + public STECHeader parse(SBPMessage.Parser parser) throws SBPBinaryException { + /* Parse fields from binary */ + time = new GPSTime().parse(parser); + num_msgs = parser.getU8(); + seq_num = parser.getU8(); + ssr_update_interval = parser.getU16(); + iod_ssr = parser.getU8(); + return this; + } + + @Override + public void build(SBPMessage.Builder builder) { + /* Build fields into binary */ + time.build(builder); + builder.putU8(num_msgs); + builder.putU8(seq_num); + builder.putU16(ssr_update_interval); + builder.putU8(iod_ssr); + } + + @Override + public JSONObject toJSON() { + JSONObject obj = new JSONObject(); + obj.put("time", time.toJSON()); + obj.put("num_msgs", num_msgs); + obj.put("seq_num", seq_num); + obj.put("ssr_update_interval", ssr_update_interval); + obj.put("iod_ssr", iod_ssr); + return obj; + } +} \ No newline at end of file diff --git a/java/src/com/swiftnav/sbp/ssr/STECResidual.java b/java/src/com/swiftnav/sbp/ssr/STECResidual.java new file mode 100644 index 0000000000..2b891aa841 --- /dev/null +++ b/java/src/com/swiftnav/sbp/ssr/STECResidual.java @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2015-2018 Swift Navigation Inc. + * Contact: Swift Navigation + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +package com.swiftnav.sbp.ssr; + +import java.math.BigInteger; + +import com.swiftnav.sbp.SBPMessage; +import com.swiftnav.sbp.SBPBinaryException; +import com.swiftnav.sbp.SBPStruct; +import com.swiftnav.sbp.gnss.*; + +import org.json.JSONObject; +import org.json.JSONArray; +import com.swiftnav.sbp.SBPStruct; + +public class STECResidual extends SBPStruct { + + /** space vehicle identifier */ + public SvId sv_id; + + /** STEC residual */ + public int residual; + + + public STECResidual () {} + + @Override + public STECResidual parse(SBPMessage.Parser parser) throws SBPBinaryException { + /* Parse fields from binary */ + sv_id = new SvId().parse(parser); + residual = parser.getS16(); + return this; + } + + @Override + public void build(SBPMessage.Builder builder) { + /* Build fields into binary */ + sv_id.build(builder); + builder.putS16(residual); + } + + @Override + public JSONObject toJSON() { + JSONObject obj = new JSONObject(); + obj.put("sv_id", sv_id.toJSON()); + obj.put("residual", residual); + return obj; + } +} \ No newline at end of file diff --git a/java/src/com/swiftnav/sbp/ssr/STECSatElement.java b/java/src/com/swiftnav/sbp/ssr/STECSatElement.java new file mode 100644 index 0000000000..ab0b6904b8 --- /dev/null +++ b/java/src/com/swiftnav/sbp/ssr/STECSatElement.java @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2015-2018 Swift Navigation Inc. + * Contact: Swift Navigation + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +package com.swiftnav.sbp.ssr; + +import java.math.BigInteger; + +import com.swiftnav.sbp.SBPMessage; +import com.swiftnav.sbp.SBPBinaryException; +import com.swiftnav.sbp.SBPStruct; +import com.swiftnav.sbp.gnss.*; + +import org.json.JSONObject; +import org.json.JSONArray; +import com.swiftnav.sbp.SBPStruct; + +public class STECSatElement extends SBPStruct { + + /** Unique space vehicle identifier */ + public SvId sv_id; + + /** quality of STEC data */ + public int stec_quality_indicator; + + /** coefficents of the STEC polynomial */ + public int[] stec_coeff; + + + public STECSatElement () {} + + @Override + public STECSatElement parse(SBPMessage.Parser parser) throws SBPBinaryException { + /* Parse fields from binary */ + sv_id = new SvId().parse(parser); + stec_quality_indicator = parser.getU8(); + stec_coeff = parser.getArrayofS16(4); + return this; + } + + @Override + public void build(SBPMessage.Builder builder) { + /* Build fields into binary */ + sv_id.build(builder); + builder.putU8(stec_quality_indicator); + builder.putArrayofS16(stec_coeff, 4); + } + + @Override + public JSONObject toJSON() { + JSONObject obj = new JSONObject(); + obj.put("sv_id", sv_id.toJSON()); + obj.put("stec_quality_indicator", stec_quality_indicator); + obj.put("stec_coeff", new JSONArray(stec_coeff)); + return obj; + } +} \ No newline at end of file diff --git a/java/src/com/swiftnav/sbp/ssr/TroposphericDelayCorrection.java b/java/src/com/swiftnav/sbp/ssr/TroposphericDelayCorrection.java new file mode 100644 index 0000000000..2370400977 --- /dev/null +++ b/java/src/com/swiftnav/sbp/ssr/TroposphericDelayCorrection.java @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2015-2018 Swift Navigation Inc. + * Contact: Swift Navigation + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +package com.swiftnav.sbp.ssr; + +import java.math.BigInteger; + +import com.swiftnav.sbp.SBPMessage; +import com.swiftnav.sbp.SBPBinaryException; +import com.swiftnav.sbp.SBPStruct; +import com.swiftnav.sbp.gnss.*; + +import org.json.JSONObject; +import org.json.JSONArray; +import com.swiftnav.sbp.SBPStruct; + +public class TroposphericDelayCorrection extends SBPStruct { + + /** hydrostatic vertical delay */ + public int hydro; + + /** wet vertical delay */ + public int wet; + + + public TroposphericDelayCorrection () {} + + @Override + public TroposphericDelayCorrection parse(SBPMessage.Parser parser) throws SBPBinaryException { + /* Parse fields from binary */ + hydro = parser.getS16(); + wet = parser.getS8(); + return this; + } + + @Override + public void build(SBPMessage.Builder builder) { + /* Build fields into binary */ + builder.putS16(hydro); + builder.putS8(wet); + } + + @Override + public JSONObject toJSON() { + JSONObject obj = new JSONObject(); + obj.put("hydro", hydro); + obj.put("wet", wet); + return obj; + } +} \ No newline at end of file diff --git a/javascript/sbp.bundle.js b/javascript/sbp.bundle.js index fdcebb324d..fbe47d1d5b 100644 --- a/javascript/sbp.bundle.js +++ b/javascript/sbp.bundle.js @@ -1,15 +1,15 @@ -!function(e){var t={};function r(p){if(t[p])return t[p].exports;var o=t[p]={i:p,l:!1,exports:{}};return e[p].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,p){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:p})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var p=Object.create(null);if(r.r(p),Object.defineProperty(p,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(p,o,function(t){return e[t]}.bind(null,o));return p},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=23)}([function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="GnssSignal",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="GnssSignal",i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("sat").uint8("code"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["sat","writeUInt8",1]),i.prototype.fieldSpec.push(["code","writeUInt8",1]);var s=function(e,t){return p.call(this,e),this.messageType="GnssSignalDep",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="GnssSignalDep",s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint16("sat").uint8("code").uint8("reserved"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["sat","writeUInt16LE",2]),s.prototype.fieldSpec.push(["code","writeUInt8",1]),s.prototype.fieldSpec.push(["reserved","writeUInt8",1]);var n=function(e,t){return p.call(this,e),this.messageType="GPSTimeDep",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="GPSTimeDep",n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint32("tow").uint16("wn"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),n.prototype.fieldSpec.push(["wn","writeUInt16LE",2]);var a=function(e,t){return p.call(this,e),this.messageType="GPSTimeSec",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="GPSTimeSec",a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint32("tow").uint16("wn"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),a.prototype.fieldSpec.push(["wn","writeUInt16LE",2]);var l=function(e,t){return p.call(this,e),this.messageType="GPSTime",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="GPSTime",l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint32("tow").int32("ns_residual").uint16("wn"),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),l.prototype.fieldSpec.push(["ns_residual","writeInt32LE",4]),l.prototype.fieldSpec.push(["wn","writeUInt16LE",2]);var c=function(e,t){return p.call(this,e),this.messageType="CarrierPhase",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="CarrierPhase",c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").int32("i").uint8("f"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["i","writeInt32LE",4]),c.prototype.fieldSpec.push(["f","writeUInt8",1]),e.exports={GnssSignal:i,GnssSignalDep:s,GPSTimeDep:n,GPSTimeSec:a,GPSTime:l,CarrierPhase:c}},function(e,t,r){t.UINT32=r(44),t.UINT64=r(45)},function(e,t,r){(function(t){var p=r(41),o=(r(3),r(1).UINT64),i=function(e,r,p,o){var i=new t(e);return i[r](p,o||0),i};function s(e){return this.messageType="raw",this.sbp=e||{},this.fields={},this}o.prototype.toJSON=function(){return this.toString()},s.prototype.fieldSpec=[],s.prototype.payloadToBuffer=function(e,r){var i=[];for(var s in e=e||this.fieldSpec,r=r||this.fields,e){var n=e[s],a=n[0],l=n[1],c=function(e){return"function"==typeof e?e.apply(this):e}.bind(this);if("string"==typeof l&&0===l.indexOf("write")){var u=c(n[2]);if("writeUInt64LE"===l){p(r[a]instanceof o,"uint64 type must be represented by cuint.UINT64");var h=r[a].clone().shiftRight(32).and(new o(4294967295,0)).toNumber(),y=r[a].clone().and(new o(4294967295,0)).toNumber();(_=new t(8)).writeUInt32LE(y),_.writeUInt32LE(h,4),i.push(_)}else{(_=new t(u))[l](r[a],0),i.push(_)}}else if("string"===l){(_=new t(r[a].length)).write(r[a],0,"utf8"),i.push(_)}else if("array"===l){var f=n[2];for(var d in r[a]){var _,S=r[a][d];if(Array.isArray(f))i=i.concat(this.payloadToBuffer(f,S));else(_=new t(c(n[3])))[f](S,0),i.push(_)}}else i=i.concat(this.payloadToBuffer(l,r[a]))}return t.concat(i)},s.prototype.getLengthBuffer=function(){return i(1,"writeUInt8",this.length||this.sbp.length,0)},s.prototype.getSenderBuffer=function(){return i(2,"writeUInt16LE",this.sender||this.sbp.sender,0)},s.prototype.getPreambleBuffer=function(){return i(1,"writeUInt8",this.preamble||this.sbp.preamble,0)},s.prototype.getMsgTypeBuffer=function(){return i(2,"writeUInt16LE",this.msg_type||this.sbp.msg_type,0)},s.prototype.toBuffer=function(){var e=this.payloadToBuffer(),r=i(2,"writeUInt16LE",this.crc||this.sbp.crc,0),p=[this.getPreambleBuffer(),this.getMsgTypeBuffer(),this.getSenderBuffer(),this.getLengthBuffer()];return t.concat(p.concat(e).concat(r))},s.prototype.toJSON=function(){var e={};return Object.keys(this.sbp).map(function(r){this.sbp[r]instanceof t?e[r]=this.sbp[r].toString("base64"):e[r]=this.sbp[r]}.bind(this)),Object.keys(this.fields).map(function(t){e[t]=this.fields[t]}.bind(this)),e},s.prototype.toBase64=function(){return this.toBuffer().toString("base64")},e.exports=s}).call(this,r(8).Buffer)},function(e,t,r){(function(t){for(var r=[],p=0;p<256;p++)r[p]=(p>15?"":"0")+p.toString(16);var o=e.exports=function(e,r){e instanceof t?(this.buffer=e,this.offset=r||0):"[object Uint8Array]"==Object.prototype.toString.call(e)?(this.buffer=new t(e),this.offset=r||0):(this.buffer=this.buffer||new t(8),this.offset=0,this.setValue.apply(this,arguments))};o.MAX_INT=Math.pow(2,53),o.MIN_INT=-Math.pow(2,53),o.prototype={constructor:o,_2scomp:function(){for(var e=this.buffer,t=this.offset,r=1,p=t+7;p>=t;p--){var o=(255^e[p])+r;e[p]=255&o,r=o>>8}},setValue:function(e,t){var r=!1;if(1==arguments.length)if("number"==typeof e){if(r=e<0,t=(e=Math.abs(e))%4294967296,(e/=4294967296)>4294967296)throw new RangeError(e+" is outside Int64 range");e|=0}else{if("string"!=typeof e)throw new Error(e+" must be a Number or String");t=(e=(e+"").replace(/^0x/,"")).substr(-8),e=e.length>8?e.substr(0,e.length-8):"",e=parseInt(e,16),t=parseInt(t,16)}for(var p=this.buffer,o=this.offset,i=7;i>=0;i--)p[o+i]=255&t,t=4==i?e:t>>>8;r&&this._2scomp()},toNumber:function(e){for(var t=this.buffer,r=this.offset,p=128&t[r],i=0,s=1,n=7,a=1;n>=0;n--,a*=256){var l=t[r+n];p&&(s=(l=(255^l)+s)>>8,l&=255),i+=l*a}return!e&&i>=o.MAX_INT?p?-1/0:1/0:p?-i:i},valueOf:function(){return this.toNumber(!1)},toString:function(e){return this.valueOf().toString(e||10)},toOctetString:function(e){for(var t=new Array(8),p=this.buffer,o=this.offset,i=0;i<8;i++)t[i]=r[p[o+i]];return t.join(e||"")},toBuffer:function(e){if(e&&0===this.offset)return this.buffer;var r=new t(8);return this.buffer.copy(r,0,this.offset,this.offset+8),r},copy:function(e,t){this.buffer.copy(e,t||0,this.offset,this.offset+8)},compare:function(e){if((128&this.buffer[this.offset])!=(128&e.buffer[e.offset]))return e.buffer[e.offset]-this.buffer[this.offset];for(var t=0;t<8;t++)if(this.buffer[this.offset+t]!==e.buffer[e.offset+t])return this.buffer[this.offset+t]-e.buffer[e.offset+t];return 0},equals:function(e){return 0===this.compare(e)},inspect:function(){return"[Int64 value:"+this+" octets:"+this.toOctetString(" ")+"]"}}}).call(this,r(8).Buffer)},function(e,t,r){(function(t){var p=r(13).Parser;p.prototype.uint64=function(e,t){return this.setNextParser("uint64",e,Object.assign({},t,{formatter:function(e){var t=r(1).UINT64,p=buffer.readUInt32LE(offset);offset+=4;var o=buffer.readUInt32LE(offset);return offset+=4,new t(p,o)}}))},p.prototype.compile=function(){var e=this.getCode();this.compiled=function(p,o,i){return"undefined"!=typeof window&&void 0===window.Buffer&&(window.Buffer=t),new Function("buffer","callback","constructorFn","require",e).call(this,p,o,i,function(e){if("cuint"===e)return r(1);throw new Error("Unknown module required: "+e)})}},e.exports=p}).call(this,r(8).Buffer)},function(e,t){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,t){"function"==typeof Object.create?e.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}},function(e,t,r){"use strict";var p=r(11),o=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};e.exports=u;var i=r(10);i.inherits=r(6);var s=r(18),n=r(16);i.inherits(u,s);for(var a=o(n.prototype),l=0;l15?"":"0")+p.toString(16);var o=e.exports=function(e,r){e instanceof t?(this.buffer=e,this.offset=r||0):"[object Uint8Array]"==Object.prototype.toString.call(e)?(this.buffer=new t(e),this.offset=r||0):(this.buffer=this.buffer||new t(8),this.offset=0,this.setValue.apply(this,arguments))};o.MAX_INT=Math.pow(2,53),o.MIN_INT=-Math.pow(2,53),o.prototype={constructor:o,_2scomp:function(){for(var e=this.buffer,t=this.offset,r=1,p=t+7;p>=t;p--){var o=(255^e[p])+r;e[p]=255&o,r=o>>8}},setValue:function(e,t){var r=!1;if(1==arguments.length)if("number"==typeof e){if(r=e<0,t=(e=Math.abs(e))%4294967296,(e/=4294967296)>4294967296)throw new RangeError(e+" is outside Int64 range");e|=0}else{if("string"!=typeof e)throw new Error(e+" must be a Number or String");t=(e=(e+"").replace(/^0x/,"")).substr(-8),e=e.length>8?e.substr(0,e.length-8):"",e=parseInt(e,16),t=parseInt(t,16)}for(var p=this.buffer,o=this.offset,i=7;i>=0;i--)p[o+i]=255&t,t=4==i?e:t>>>8;r&&this._2scomp()},toNumber:function(e){for(var t=this.buffer,r=this.offset,p=128&t[r],i=0,s=1,n=7,a=1;n>=0;n--,a*=256){var l=t[r+n];p&&(s=(l=(255^l)+s)>>8,l&=255),i+=l*a}return!e&&i>=o.MAX_INT?p?-1/0:1/0:p?-i:i},valueOf:function(){return this.toNumber(!1)},toString:function(e){return this.valueOf().toString(e||10)},toOctetString:function(e){for(var t=new Array(8),p=this.buffer,o=this.offset,i=0;i<8;i++)t[i]=r[p[o+i]];return t.join(e||"")},toBuffer:function(e){if(e&&0===this.offset)return this.buffer;var r=new t(8);return this.buffer.copy(r,0,this.offset,this.offset+8),r},copy:function(e,t){this.buffer.copy(e,t||0,this.offset,this.offset+8)},compare:function(e){if((128&this.buffer[this.offset])!=(128&e.buffer[e.offset]))return e.buffer[e.offset]-this.buffer[this.offset];for(var t=0;t<8;t++)if(this.buffer[this.offset+t]!==e.buffer[e.offset+t])return this.buffer[this.offset+t]-e.buffer[e.offset+t];return 0},equals:function(e){return 0===this.compare(e)},inspect:function(){return"[Int64 value:"+this+" octets:"+this.toOctetString(" ")+"]"}}}).call(this,r(8).Buffer)},function(e,t,r){(function(t){var p=r(13).Parser;p.prototype.uint64=function(e,t){return this.setNextParser("uint64",e,Object.assign({},t,{formatter:function(e){var t=r(1).UINT64,p=buffer.readUInt32LE(offset);offset+=4;var o=buffer.readUInt32LE(offset);return offset+=4,new t(p,o)}}))},p.prototype.compile=function(){var e=this.getCode();this.compiled=function(p,o,i){return"undefined"!=typeof window&&void 0===window.Buffer&&(window.Buffer=t),new Function("buffer","callback","constructorFn","require",e).call(this,p,o,i,function(e){if("cuint"===e)return r(1);throw new Error("Unknown module required: "+e)})}},e.exports=p}).call(this,r(8).Buffer)},function(e,t){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,t){"function"==typeof Object.create?e.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}},function(e,t,r){"use strict";var p=r(11),o=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};e.exports=u;var i=r(10);i.inherits=r(6);var s=r(18),n=r(16);i.inherits(u,s);for(var a=o(n.prototype),l=0;l * @license MIT */ -var p=r(24),o=r(25),i=r(17);function s(){return a.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function n(e,t){if(s()=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|e}function f(e,t){if(a.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var p=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return B(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return F(e).length;default:if(p)return B(e).length;t=(""+t).toLowerCase(),p=!0}}function d(e,t,r){var p=e[t];e[t]=e[r],e[r]=p}function _(e,t,r,p,o){if(0===e.length)return-1;if("string"==typeof r?(p=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=o?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(o)return-1;r=e.length-1}else if(r<0){if(!o)return-1;r=0}if("string"==typeof t&&(t=a.from(t,p)),a.isBuffer(t))return 0===t.length?-1:S(e,t,r,p,o);if("number"==typeof t)return t&=255,a.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):S(e,[t],r,p,o);throw new TypeError("val must be string, number or Buffer")}function S(e,t,r,p,o){var i,s=1,n=e.length,a=t.length;if(void 0!==p&&("ucs2"===(p=String(p).toLowerCase())||"ucs-2"===p||"utf16le"===p||"utf-16le"===p)){if(e.length<2||t.length<2)return-1;s=2,n/=2,a/=2,r/=2}function l(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(o){var c=-1;for(i=r;in&&(r=n-a),i=r;i>=0;i--){for(var u=!0,h=0;ho&&(p=o):p=o;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");p>i/2&&(p=i/2);for(var s=0;s>8,o=r%256,i.push(o),i.push(p);return i}(t,e.length-r),e,r,p)}function L(e,t,r){return 0===t&&r===e.length?p.fromByteArray(e):p.fromByteArray(e.slice(t,r))}function T(e,t,r){r=Math.min(e.length,r);for(var p=[],o=t;o239?4:l>223?3:l>191?2:1;if(o+u<=r)switch(u){case 1:l<128&&(c=l);break;case 2:128==(192&(i=e[o+1]))&&(a=(31&l)<<6|63&i)>127&&(c=a);break;case 3:i=e[o+1],s=e[o+2],128==(192&i)&&128==(192&s)&&(a=(15&l)<<12|(63&i)<<6|63&s)>2047&&(a<55296||a>57343)&&(c=a);break;case 4:i=e[o+1],s=e[o+2],n=e[o+3],128==(192&i)&&128==(192&s)&&128==(192&n)&&(a=(15&l)<<18|(63&i)<<12|(63&s)<<6|63&n)>65535&&a<1114112&&(c=a)}null===c?(c=65533,u=1):c>65535&&(c-=65536,p.push(c>>>10&1023|55296),c=56320|1023&c),p.push(c),o+=u}return function(e){var t=e.length;if(t<=I)return String.fromCharCode.apply(String,e);var r="",p=0;for(;pthis.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return D(this,t,r);case"utf8":case"utf-8":return T(this,t,r);case"ascii":return M(this,t,r);case"latin1":case"binary":return U(this,t,r);case"base64":return L(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,t,r);default:if(p)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),p=!0}}.apply(this,arguments)},a.prototype.equals=function(e){if(!a.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===a.compare(this,e)},a.prototype.inspect=function(){var e="",r=t.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(e+=" ... ")),""},a.prototype.compare=function(e,t,r,p,o){if(!a.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===p&&(p=0),void 0===o&&(o=this.length),t<0||r>e.length||p<0||o>this.length)throw new RangeError("out of range index");if(p>=o&&t>=r)return 0;if(p>=o)return-1;if(t>=r)return 1;if(this===e)return 0;for(var i=(o>>>=0)-(p>>>=0),s=(r>>>=0)-(t>>>=0),n=Math.min(i,s),l=this.slice(p,o),c=e.slice(t,r),u=0;uo)&&(r=o),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");p||(p="utf8");for(var i=!1;;)switch(p){case"hex":return g(this,e,t,r);case"utf8":case"utf-8":return w(this,e,t,r);case"ascii":return E(this,e,t,r);case"latin1":case"binary":return m(this,e,t,r);case"base64":return b(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return v(this,e,t,r);default:if(i)throw new TypeError("Unknown encoding: "+p);p=(""+p).toLowerCase(),i=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var I=4096;function M(e,t,r){var p="";r=Math.min(e.length,r);for(var o=t;op)&&(r=p);for(var o="",i=t;ir)throw new RangeError("Trying to access beyond buffer length")}function G(e,t,r,p,o,i){if(!a.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||te.length)throw new RangeError("Index out of range")}function R(e,t,r,p){t<0&&(t=65535+t+1);for(var o=0,i=Math.min(e.length-r,2);o>>8*(p?o:1-o)}function P(e,t,r,p){t<0&&(t=4294967295+t+1);for(var o=0,i=Math.min(e.length-r,4);o>>8*(p?o:3-o)&255}function C(e,t,r,p,o,i){if(r+p>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function j(e,t,r,p,i){return i||C(e,0,r,4),o.write(e,t,r,p,23,4),r+4}function x(e,t,r,p,i){return i||C(e,0,r,8),o.write(e,t,r,p,52,8),r+8}a.prototype.slice=function(e,t){var r,p=this.length;if((e=~~e)<0?(e+=p)<0&&(e=0):e>p&&(e=p),(t=void 0===t?p:~~t)<0?(t+=p)<0&&(t=0):t>p&&(t=p),t0&&(o*=256);)p+=this[e+--t]*o;return p},a.prototype.readUInt8=function(e,t){return t||A(e,1,this.length),this[e]},a.prototype.readUInt16LE=function(e,t){return t||A(e,2,this.length),this[e]|this[e+1]<<8},a.prototype.readUInt16BE=function(e,t){return t||A(e,2,this.length),this[e]<<8|this[e+1]},a.prototype.readUInt32LE=function(e,t){return t||A(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},a.prototype.readUInt32BE=function(e,t){return t||A(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},a.prototype.readIntLE=function(e,t,r){e|=0,t|=0,r||A(e,t,this.length);for(var p=this[e],o=1,i=0;++i=(o*=128)&&(p-=Math.pow(2,8*t)),p},a.prototype.readIntBE=function(e,t,r){e|=0,t|=0,r||A(e,t,this.length);for(var p=t,o=1,i=this[e+--p];p>0&&(o*=256);)i+=this[e+--p]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},a.prototype.readInt8=function(e,t){return t||A(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},a.prototype.readInt16LE=function(e,t){t||A(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt16BE=function(e,t){t||A(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt32LE=function(e,t){return t||A(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},a.prototype.readInt32BE=function(e,t){return t||A(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},a.prototype.readFloatLE=function(e,t){return t||A(e,4,this.length),o.read(this,e,!0,23,4)},a.prototype.readFloatBE=function(e,t){return t||A(e,4,this.length),o.read(this,e,!1,23,4)},a.prototype.readDoubleLE=function(e,t){return t||A(e,8,this.length),o.read(this,e,!0,52,8)},a.prototype.readDoubleBE=function(e,t){return t||A(e,8,this.length),o.read(this,e,!1,52,8)},a.prototype.writeUIntLE=function(e,t,r,p){(e=+e,t|=0,r|=0,p)||G(this,e,t,r,Math.pow(2,8*r)-1,0);var o=1,i=0;for(this[t]=255&e;++i=0&&(i*=256);)this[t+o]=e/i&255;return t+r},a.prototype.writeUInt8=function(e,t,r){return e=+e,t|=0,r||G(this,e,t,1,255,0),a.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},a.prototype.writeUInt16LE=function(e,t,r){return e=+e,t|=0,r||G(this,e,t,2,65535,0),a.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):R(this,e,t,!0),t+2},a.prototype.writeUInt16BE=function(e,t,r){return e=+e,t|=0,r||G(this,e,t,2,65535,0),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):R(this,e,t,!1),t+2},a.prototype.writeUInt32LE=function(e,t,r){return e=+e,t|=0,r||G(this,e,t,4,4294967295,0),a.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):P(this,e,t,!0),t+4},a.prototype.writeUInt32BE=function(e,t,r){return e=+e,t|=0,r||G(this,e,t,4,4294967295,0),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):P(this,e,t,!1),t+4},a.prototype.writeIntLE=function(e,t,r,p){if(e=+e,t|=0,!p){var o=Math.pow(2,8*r-1);G(this,e,t,r,o-1,-o)}var i=0,s=1,n=0;for(this[t]=255&e;++i>0)-n&255;return t+r},a.prototype.writeIntBE=function(e,t,r,p){if(e=+e,t|=0,!p){var o=Math.pow(2,8*r-1);G(this,e,t,r,o-1,-o)}var i=r-1,s=1,n=0;for(this[t+i]=255&e;--i>=0&&(s*=256);)e<0&&0===n&&0!==this[t+i+1]&&(n=1),this[t+i]=(e/s>>0)-n&255;return t+r},a.prototype.writeInt8=function(e,t,r){return e=+e,t|=0,r||G(this,e,t,1,127,-128),a.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},a.prototype.writeInt16LE=function(e,t,r){return e=+e,t|=0,r||G(this,e,t,2,32767,-32768),a.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):R(this,e,t,!0),t+2},a.prototype.writeInt16BE=function(e,t,r){return e=+e,t|=0,r||G(this,e,t,2,32767,-32768),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):R(this,e,t,!1),t+2},a.prototype.writeInt32LE=function(e,t,r){return e=+e,t|=0,r||G(this,e,t,4,2147483647,-2147483648),a.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):P(this,e,t,!0),t+4},a.prototype.writeInt32BE=function(e,t,r){return e=+e,t|=0,r||G(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):P(this,e,t,!1),t+4},a.prototype.writeFloatLE=function(e,t,r){return j(this,e,t,!0,r)},a.prototype.writeFloatBE=function(e,t,r){return j(this,e,t,!1,r)},a.prototype.writeDoubleLE=function(e,t,r){return x(this,e,t,!0,r)},a.prototype.writeDoubleBE=function(e,t,r){return x(this,e,t,!1,r)},a.prototype.copy=function(e,t,r,p){if(r||(r=0),p||0===p||(p=this.length),t>=e.length&&(t=e.length),t||(t=0),p>0&&p=this.length)throw new RangeError("sourceStart out of bounds");if(p<0)throw new RangeError("sourceEnd out of bounds");p>this.length&&(p=this.length),e.length-t=0;--o)e[o+t]=this[o+r];else if(i<1e3||!a.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(i=t;i55295&&r<57344){if(!o){if(r>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(s+1===p){(t-=3)>-1&&i.push(239,191,189);continue}o=r;continue}if(r<56320){(t-=3)>-1&&i.push(239,191,189),o=r;continue}r=65536+(o-55296<<10|r-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,r<128){if((t-=1)<0)break;i.push(r)}else if(r<2048){if((t-=2)<0)break;i.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;i.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return i}function F(e){return p.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(N,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function q(e,t,r,p){for(var o=0;o=t.length||o>=e.length);++o)t[o+r]=e[o];return o}}).call(this,r(5))},function(e,t){var r,p,o=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function n(e){if(r===setTimeout)return setTimeout(e,0);if((r===i||!r)&&setTimeout)return r=setTimeout,setTimeout(e,0);try{return r(e,0)}catch(t){try{return r.call(null,e,0)}catch(t){return r.call(this,e,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:i}catch(e){r=i}try{p="function"==typeof clearTimeout?clearTimeout:s}catch(e){p=s}}();var a,l=[],c=!1,u=-1;function h(){c&&a&&(c=!1,a.length?l=a.concat(l):u=-1,l.length&&y())}function y(){if(!c){var e=n(h);c=!0;for(var t=l.length;t;){for(a=l,l=[];++u1)for(var r=1;r=0)e=o[this.type];else if("String"===this.type&&"number"==typeof this.options.length)e=this.options.length;else if("Array"===this.type&&"number"==typeof this.options.length){var t=NaN;"string"==typeof this.options.type?t=o[s[this.options.type]]:this.options.type instanceof n&&(t=this.options.type.sizeOf()),e=this.options.length*t}else"Skip"===this.type?e=this.options.length:this.type||(e=0);return this.next&&(e+=this.next.sizeOf()),e},n.prototype.parse=function(e,t){return this.compiled||this.compile(),this.compiled(e,t,this.constructorFn)},n.prototype.setNextParser=function(e,t,r){var p=new n;return p.type=s[e],p.varName=t,p.options=r||p.options,p.endian=this.endian,this.head?this.head.next=p:this.next=p,this.head=p,this},n.prototype.generate=function(e){this.type&&(this["generate"+this.type](e),this.generateAssert(e));var t=e.generateVariable(this.varName);return this.options.formatter&&this.generateFormatter(e,t,this.options.formatter),this.generateNext(e)},n.prototype.generateAssert=function(e){if(this.options.assert){var t=e.generateVariable(this.varName);switch(typeof this.options.assert){case"function":e.pushCode("if (!({0}).call(vars, {1})) {",this.options.assert,t);break;case"number":e.pushCode("if ({0} !== {1}) {",this.options.assert,t);break;case"string":e.pushCode('if ("{0}" !== {1}) {',this.options.assert,t);break;default:throw new Error("Assert option supports only strings, numbers and assert functions.")}e.generateError('"Assert error: {0} is " + {0}',t),e.pushCode("}")}},n.prototype.generateNext=function(e){return this.next&&(e=this.next.generate(e)),e},Object.keys(o).forEach(function(e){n.prototype["generate"+e]=function(t){t.pushCode("{0} = buffer.read{1}(offset);",t.generateVariable(this.varName),e),t.pushCode("offset += {0};",o[e])}}),n.prototype.generateBit=function(e){var t=JSON.parse(JSON.stringify(this));if(t.varName=e.generateVariable(t.varName),e.bitFields.push(t),!this.next||this.next&&["Bit","Nest"].indexOf(this.next.type)<0){var r=0;e.bitFields.forEach(function(e){r+=e.options.length});var p=e.generateTmpVariable();if(r<=8)e.pushCode("var {0} = buffer.readUInt8(offset);",p),r=8;else if(r<=16)e.pushCode("var {0} = buffer.readUInt16BE(offset);",p),r=16;else if(r<=24){var o=e.generateTmpVariable(),i=e.generateTmpVariable();e.pushCode("var {0} = buffer.readUInt16BE(offset);",o),e.pushCode("var {0} = buffer.readUInt8(offset + 2);",i),e.pushCode("var {2} = ({0} << 8) | {1};",o,i,p),r=24}else{if(!(r<=32))throw new Error("Currently, bit field sequence longer than 4-bytes is not supported.");e.pushCode("var {0} = buffer.readUInt32BE(offset);",p),r=32}e.pushCode("offset += {0};",r/8);var s=0,n="be"===this.endian;e.bitFields.forEach(function(t){e.pushCode("{0} = {1} >> {2} & {3};",t.varName,p,n?r-s-t.options.length:s,(1< offset++);"),e.pushCode("{0} = buffer.toString('{1}', {2}, offset);",t,this.options.encoding,r)),this.options.stripNull&&e.pushCode("{0} = {0}.replace(/\\x00+$/g, '')",t)},n.prototype.generateBuffer=function(e){if("eof"===this.options.readUntil?e.pushCode("{0} = buffer.slice(offset, buffer.length - 1);",e.generateVariable(this.varName)):(e.pushCode("{0} = buffer.slice(offset, offset + {1});",e.generateVariable(this.varName),e.generateOption(this.options.length)),e.pushCode("offset += {0};",e.generateOption(this.options.length))),this.options.clone){var t=e.generateTmpVariable();e.pushCode("var {0} = new Buffer({1}.length);",t,e.generateVariable(this.varName)),e.pushCode("{0}.copy({1});",e.generateVariable(this.varName),t),e.pushCode("{0} = {1}",e.generateVariable(this.varName),t)}},n.prototype.generateArray=function(e){var t=e.generateOption(this.options.length),r=this.options.type,p=e.generateTmpVariable(),i=e.generateVariable(this.varName),a=e.generateTmpVariable(),l=this.options.key,c="string"==typeof l;c?e.pushCode("{0} = {};",i):e.pushCode("{0} = [];",i),"function"==typeof this.options.readUntil?e.pushCode("do {"):"eof"===this.options.readUntil?e.pushCode("for (var {0} = 0; offset < buffer.length; {0}++) {",p):e.pushCode("for (var {0} = 0; {0} < {1}; {0}++) {",p,t),"string"==typeof r?(e.pushCode("var {0} = buffer.read{1}(offset);",a,s[r]),e.pushCode("offset += {0};",o[s[r]])):r instanceof n&&(e.pushCode("var {0} = {};",a),e.pushScope(a),r.generate(e),e.popScope()),c?e.pushCode("{0}[{2}.{1}] = {2};",i,l,a):e.pushCode("{0}.push({1});",i,a),e.pushCode("}"),"function"==typeof this.options.readUntil&&e.pushCode(" while (!({0}).call(this, {1}, buffer.slice(offset)));",this.options.readUntil,a)},n.prototype.generateChoiceCase=function(e,t,r){"string"==typeof r?(e.pushCode("{0} = buffer.read{1}(offset);",e.generateVariable(this.varName),s[r]),e.pushCode("offset += {0};",o[s[r]])):r instanceof n&&(e.pushPath(t),r.generate(e),e.popPath())},n.prototype.generateChoice=function(e){var t=e.generateOption(this.options.tag);e.pushCode("{0} = {};",e.generateVariable(this.varName)),e.pushCode("switch({0}) {",t),Object.keys(this.options.choices).forEach(function(t){var r=this.options.choices[t];e.pushCode("case {0}:",t),this.generateChoiceCase(e,this.varName,r),e.pushCode("break;")},this),e.pushCode("default:"),this.options.defaultChoice?this.generateChoiceCase(e,this.varName,this.options.defaultChoice):e.generateError('"Met undefined tag value " + {0} + " at choice"',t),e.pushCode("}")},n.prototype.generateNest=function(e){var t=e.generateVariable(this.varName);e.pushCode("{0} = {};",t),e.pushPath(this.varName),this.options.type.generate(e),e.popPath()},n.prototype.generateFormatter=function(e,t,r){"function"==typeof r&&e.pushCode("{0} = ({1}).call(this, {0});",t,r)},n.prototype.isInteger=function(){return!!this.type.match(/U?Int[8|16|32][BE|LE]?|Bit\d+/)},t.Parser=n},function(e,t){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function p(e){return"function"==typeof e}function o(e){return"object"==typeof e&&null!==e}function i(e){return void 0===e}e.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},r.prototype.emit=function(e){var t,r,s,n,a,l;if(this._events||(this._events={}),"error"===e&&(!this._events.error||o(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var c=new Error('Uncaught, unspecified "error" event. ('+t+")");throw c.context=t,c}if(i(r=this._events[e]))return!1;if(p(r))switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:n=Array.prototype.slice.call(arguments,1),r.apply(this,n)}else if(o(r))for(n=Array.prototype.slice.call(arguments,1),s=(l=r.slice()).length,a=0;a0&&this._events[e].length>s&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){if(!p(t))throw TypeError("listener must be a function");var r=!1;function o(){this.removeListener(e,o),r||(r=!0,t.apply(this,arguments))}return o.listener=t,this.on(e,o),this},r.prototype.removeListener=function(e,t){var r,i,s,n;if(!p(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(s=(r=this._events[e]).length,i=-1,r===t||p(r.listener)&&r.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(o(r)){for(n=s;n-- >0;)if(r[n]===t||r[n].listener&&r[n].listener===t){i=n;break}if(i<0)return this;1===r.length?(r.length=0,delete this._events[e]):r.splice(i,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(p(r=this._events[e]))this.removeListener(e,r);else if(r)for(;r.length;)this.removeListener(e,r[r.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){return this._events&&this._events[e]?p(this._events[e])?[this._events[e]]:this._events[e].slice():[]},r.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(p(t))return 1;if(t)return t.length}return 0},r.listenerCount=function(e,t){return e.listenerCount(t)}},function(e,t,r){(t=e.exports=r(18)).Stream=t,t.Readable=t,t.Writable=r(16),t.Duplex=r(7),t.Transform=r(22),t.PassThrough=r(36)},function(e,t,r){"use strict";(function(t,p,o){var i=r(11);function s(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,r){var p=e.entry;e.entry=null;for(;p;){var o=p.callback;t.pendingcb--,o(r),p=p.next}t.corkedRequestsFree?t.corkedRequestsFree.next=e:t.corkedRequestsFree=e}(t,e)}}e.exports=g;var n,a=!t.browser&&["v0.10","v0.9."].indexOf(t.version.slice(0,5))>-1?p:i.nextTick;g.WritableState=S;var l=r(10);l.inherits=r(6);var c={deprecate:r(35)},u=r(19),h=r(12).Buffer,y=o.Uint8Array||function(){};var f,d=r(20);function _(){}function S(e,t){n=n||r(7),e=e||{};var p=t instanceof n;this.objectMode=!!e.objectMode,p&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var o=e.highWaterMark,l=e.writableHighWaterMark,c=this.objectMode?16:16384;this.highWaterMark=o||0===o?o:p&&(l||0===l)?l:c,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var u=!1===e.decodeStrings;this.decodeStrings=!u,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var r=e._writableState,p=r.sync,o=r.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),t)!function(e,t,r,p,o){--t.pendingcb,r?(i.nextTick(o,p),i.nextTick(L,e,t),e._writableState.errorEmitted=!0,e.emit("error",p)):(o(p),e._writableState.errorEmitted=!0,e.emit("error",p),L(e,t))}(e,r,p,t,o);else{var s=b(r);s||r.corked||r.bufferProcessing||!r.bufferedRequest||m(e,r),p?a(E,e,r,s,o):E(e,r,s,o)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new s(this)}function g(e){if(n=n||r(7),!(f.call(g,this)||this instanceof n))return new g(e);this._writableState=new S(e,this),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),u.call(this)}function w(e,t,r,p,o,i,s){t.writelen=p,t.writecb=s,t.writing=!0,t.sync=!0,r?e._writev(o,t.onwrite):e._write(o,i,t.onwrite),t.sync=!1}function E(e,t,r,p){r||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,p(),L(e,t)}function m(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var p=t.bufferedRequestCount,o=new Array(p),i=t.corkedRequestsFree;i.entry=r;for(var n=0,a=!0;r;)o[n]=r,r.isBuf||(a=!1),r=r.next,n+=1;o.allBuffers=a,w(e,t,!0,t.length,o,"",i.finish),t.pendingcb++,t.lastBufferedRequest=null,i.next?(t.corkedRequestsFree=i.next,i.next=null):t.corkedRequestsFree=new s(t),t.bufferedRequestCount=0}else{for(;r;){var l=r.chunk,c=r.encoding,u=r.callback;if(w(e,t,!1,t.objectMode?1:l.length,l,c,u),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function b(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function v(e,t){e._final(function(r){t.pendingcb--,r&&e.emit("error",r),t.prefinished=!0,e.emit("prefinish"),L(e,t)})}function L(e,t){var r=b(t);return r&&(!function(e,t){t.prefinished||t.finalCalled||("function"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,i.nextTick(v,e,t)):(t.prefinished=!0,e.emit("prefinish")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"))),r}l.inherits(g,u),S.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(S.prototype,"buffer",{get:c.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(f=Function.prototype[Symbol.hasInstance],Object.defineProperty(g,Symbol.hasInstance,{value:function(e){return!!f.call(this,e)||this===g&&(e&&e._writableState instanceof S)}})):f=function(e){return e instanceof this},g.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},g.prototype.write=function(e,t,r){var p,o=this._writableState,s=!1,n=!o.objectMode&&(p=e,h.isBuffer(p)||p instanceof y);return n&&!h.isBuffer(e)&&(e=function(e){return h.from(e)}(e)),"function"==typeof t&&(r=t,t=null),n?t="buffer":t||(t=o.defaultEncoding),"function"!=typeof r&&(r=_),o.ended?function(e,t){var r=new Error("write after end");e.emit("error",r),i.nextTick(t,r)}(this,r):(n||function(e,t,r,p){var o=!0,s=!1;return null===r?s=new TypeError("May not write null values to stream"):"string"==typeof r||void 0===r||t.objectMode||(s=new TypeError("Invalid non-string/buffer chunk")),s&&(e.emit("error",s),i.nextTick(p,s),o=!1),o}(this,o,e,r))&&(o.pendingcb++,s=function(e,t,r,p,o,i){if(!r){var s=function(e,t,r){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=h.from(t,r));return t}(t,p,o);p!==s&&(r=!0,o="buffer",p=s)}var n=t.objectMode?1:p.length;t.length+=n;var a=t.length-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(g.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),g.prototype._write=function(e,t,r){r(new Error("_write() is not implemented"))},g.prototype._writev=null,g.prototype.end=function(e,t,r){var p=this._writableState;"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),p.corked&&(p.corked=1,this.uncork()),p.ending||p.finished||function(e,t,r){t.ending=!0,L(e,t),r&&(t.finished?i.nextTick(r):e.once("finish",r));t.ended=!0,e.writable=!1}(this,p,r)},Object.defineProperty(g.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),g.prototype.destroy=d.destroy,g.prototype._undestroy=d.undestroy,g.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,r(9),r(33).setImmediate,r(5))},function(e,t){var r={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},function(e,t,r){"use strict";(function(t,p){var o=r(11);e.exports=w;var i,s=r(17);w.ReadableState=g;r(14).EventEmitter;var n=function(e,t){return e.listeners(t).length},a=r(19),l=r(12).Buffer,c=t.Uint8Array||function(){};var u=r(10);u.inherits=r(6);var h=r(30),y=void 0;y=h&&h.debuglog?h.debuglog("stream"):function(){};var f,d=r(31),_=r(20);u.inherits(w,a);var S=["error","close","destroy","pause","resume"];function g(e,t){e=e||{};var p=t instanceof(i=i||r(7));this.objectMode=!!e.objectMode,p&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var o=e.highWaterMark,s=e.readableHighWaterMark,n=this.objectMode?16:16384;this.highWaterMark=o||0===o?o:p&&(s||0===s)?s:n,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new d,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(f||(f=r(21).StringDecoder),this.decoder=new f(e.encoding),this.encoding=e.encoding)}function w(e){if(i=i||r(7),!(this instanceof w))return new w(e);this._readableState=new g(e,this),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),a.call(this)}function E(e,t,r,p,o){var i,s=e._readableState;null===t?(s.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,L(e)}(e,s)):(o||(i=function(e,t){var r;p=t,l.isBuffer(p)||p instanceof c||"string"==typeof t||void 0===t||e.objectMode||(r=new TypeError("Invalid non-string/buffer chunk"));var p;return r}(s,t)),i?e.emit("error",i):s.objectMode||t&&t.length>0?("string"==typeof t||s.objectMode||Object.getPrototypeOf(t)===l.prototype||(t=function(e){return l.from(e)}(t)),p?s.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):m(e,s,t,!0):s.ended?e.emit("error",new Error("stream.push() after EOF")):(s.reading=!1,s.decoder&&!r?(t=s.decoder.write(t),s.objectMode||0!==t.length?m(e,s,t,!1):I(e,s)):m(e,s,t,!1))):p||(s.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=b?e=b:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function L(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(y("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?o.nextTick(T,e):T(e))}function T(e){y("emit readable"),e.emit("readable"),O(e)}function I(e,t){t.readingMore||(t.readingMore=!0,o.nextTick(M,e,t))}function M(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):r=function(e,t,r){var p;ei.length?i.length:e;if(s===i.length?o+=i:o+=i.slice(0,e),0===(e-=s)){s===i.length?(++p,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=i.slice(s));break}++p}return t.length-=p,o}(e,t):function(e,t){var r=l.allocUnsafe(e),p=t.head,o=1;p.data.copy(r),e-=p.data.length;for(;p=p.next;){var i=p.data,s=e>i.length?i.length:e;if(i.copy(r,r.length-e,0,s),0===(e-=s)){s===i.length?(++o,p.next?t.head=p.next:t.head=t.tail=null):(t.head=p,p.data=i.slice(s));break}++o}return t.length-=o,r}(e,t);return p}(e,t.buffer,t.decoder),r);var r}function G(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,o.nextTick(R,t,e))}function R(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function P(e,t){for(var r=0,p=e.length;r=t.highWaterMark||t.ended))return y("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?G(this):L(this),null;if(0===(e=v(e,t))&&t.ended)return 0===t.length&&G(this),null;var p,o=t.needReadable;return y("need readable",o),(0===t.length||t.length-e0?A(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&G(this)),null!==p&&this.emit("data",p),p},w.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},w.prototype.pipe=function(e,t){var r=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=e;break;case 1:i.pipes=[i.pipes,e];break;default:i.pipes.push(e)}i.pipesCount+=1,y("pipe count=%d opts=%j",i.pipesCount,t);var a=(!t||!1!==t.end)&&e!==p.stdout&&e!==p.stderr?c:w;function l(t,p){y("onunpipe"),t===r&&p&&!1===p.hasUnpiped&&(p.hasUnpiped=!0,y("cleanup"),e.removeListener("close",S),e.removeListener("finish",g),e.removeListener("drain",u),e.removeListener("error",_),e.removeListener("unpipe",l),r.removeListener("end",c),r.removeListener("end",w),r.removeListener("data",d),h=!0,!i.awaitDrain||e._writableState&&!e._writableState.needDrain||u())}function c(){y("onend"),e.end()}i.endEmitted?o.nextTick(a):r.once("end",a),e.on("unpipe",l);var u=function(e){return function(){var t=e._readableState;y("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&n(e,"data")&&(t.flowing=!0,O(e))}}(r);e.on("drain",u);var h=!1;var f=!1;function d(t){y("ondata"),f=!1,!1!==e.write(t)||f||((1===i.pipesCount&&i.pipes===e||i.pipesCount>1&&-1!==P(i.pipes,e))&&!h&&(y("false write response, pause",r._readableState.awaitDrain),r._readableState.awaitDrain++,f=!0),r.pause())}function _(t){y("onerror",t),w(),e.removeListener("error",_),0===n(e,"error")&&e.emit("error",t)}function S(){e.removeListener("finish",g),w()}function g(){y("onfinish"),e.removeListener("close",S),w()}function w(){y("unpipe"),r.unpipe(e)}return r.on("data",d),function(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?s(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,"error",_),e.once("close",S),e.once("finish",g),e.emit("pipe",r),i.flowing||(y("pipe resume"),r.resume()),e},w.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r),this);if(!e){var p=t.pipes,o=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;i>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function n(e){var t=this.lastTotal-this.lastNeed,r=function(e,t,r){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function a(e,t){if((e.length-t)%2==0){var r=e.toString("utf16le",t);if(r){var p=r.charCodeAt(r.length-1);if(p>=55296&&p<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function l(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function c(e,t){var r=(e.length-t)%3;return 0===r?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function u(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function h(e){return e.toString(this.encoding)}function y(e){return e&&e.length?this.write(e):""}t.StringDecoder=i,i.prototype.write=function(e){if(0===e.length)return"";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0)return o>0&&(e.lastNeed=o-1),o;if(--p=0)return o>0&&(e.lastNeed=o-2),o;if(--p=0)return o>0&&(2===o?o=0:e.lastNeed=o-3),o;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var p=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,p),e.toString("utf8",t,p)},i.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},function(e,t,r){"use strict";e.exports=i;var p=r(7),o=r(10);function i(e){if(!(this instanceof i))return new i(e);p.call(this,e),this._transformState={afterTransform:function(e,t){var r=this._transformState;r.transforming=!1;var p=r.writecb;if(!p)return this.emit("error",new Error("write callback called multiple times"));r.writechunk=null,r.writecb=null,null!=t&&this.push(t),p(e);var o=this._readableState;o.reading=!1,(o.needReadable||o.length>8&255^255&p],t&=65535}return t}p.exports={preambleByte:85,crc16:_,sbpIdTable:y,sbpMessageTypesTable:f,decode:function(e){var t=d.parse(e),r=y[t.msg_type];return void 0===r?(console.log("Unknown message type: ",t.msg_type),new s(t)):new r(t)},dispatch:function(t,r,o){var i,s,n=new e(0);if(void 0===o&&"function"==typeof r?i=r:(i=o,s=r),s&&!Array.isArray(s)&&-1===["function","number"].indexOf(typeof s))throw l("dispatch: messageWhitelist must be function, number, or array");var a=function(r){t.pause();try{if((n=e.concat([n,r])).length<2)return;var o=function(){var e,t,r,o,i,a,l;for(l=0;ln.length)throw new c;e=n.slice(l+1,l+6),r=n.readUInt16LE(l+1),n.readUInt16LE(l+3),o=n.readUInt8(l+5);var h=s&&Array.isArray(s)&&-1!==s.indexOf(r),y=s&&"number"==typeof s&&s&r,f=s&&"function"==typeof s&&s(r);if(s&&!(h||y||f))return n=n.slice(l+6+o+2),null;if(l+8+o>n.length)throw new c;a=_(n.slice(l+6,l+6+o),_(e)),i=n.readUInt16LE(l+6+o);var d=n.slice(l,l+6+o+2);if(i===a)return n=n.slice(l+6+o+2),[p.exports.decode(d),d];throw n=n.slice(l+1),new u}();if(null===o)return;var l=o[0],h=o[1];i(null,l,h)}catch(e){if(!(e instanceof c||e instanceof u))throw e}finally{0,t.resume(),n.length>0&&setTimeout(function(){a(new e(0))},0)}};t.on("data",a)}},function(e){var r={function:!0,object:!0},i=r[typeof window]&&window||this,s=r[typeof t]&&t&&!t.nodeType&&t,n=r[typeof p]&&p&&!p.nodeType&&p,a=s&&n&&"object"==typeof o&&o;!a||a.global!==a&&a.window!==a&&a.self!==a||(i=a),i.SBP=e}(p.exports)}).call(this,r(8).Buffer,r(26)(e),r(5))},function(e,t,r){"use strict";t.byteLength=function(e){var t=l(e),r=t[0],p=t[1];return 3*(r+p)/4-p},t.toByteArray=function(e){for(var t,r=l(e),p=r[0],s=r[1],n=new i(function(e,t,r){return 3*(t+r)/4-r}(0,p,s)),a=0,c=s>0?p-4:p,u=0;u>16&255,n[a++]=t>>8&255,n[a++]=255&t;2===s&&(t=o[e.charCodeAt(u)]<<2|o[e.charCodeAt(u+1)]>>4,n[a++]=255&t);1===s&&(t=o[e.charCodeAt(u)]<<10|o[e.charCodeAt(u+1)]<<4|o[e.charCodeAt(u+2)]>>2,n[a++]=t>>8&255,n[a++]=255&t);return n},t.fromByteArray=function(e){for(var t,r=e.length,o=r%3,i=[],s=0,n=r-o;sn?n:s+16383));1===o?(t=e[r-1],i.push(p[t>>2]+p[t<<4&63]+"==")):2===o&&(t=(e[r-2]<<8)+e[r-1],i.push(p[t>>10]+p[t>>4&63]+p[t<<2&63]+"="));return i.join("")};for(var p=[],o=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n=0,a=s.length;n0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function c(e,t,r){for(var o,i,s=[],n=t;n>18&63]+p[i>>12&63]+p[i>>6&63]+p[63&i]);return s.join("")}o["-".charCodeAt(0)]=62,o["_".charCodeAt(0)]=63},function(e,t){t.read=function(e,t,r,p,o){var i,s,n=8*o-p-1,a=(1<>1,c=-7,u=r?o-1:0,h=r?-1:1,y=e[t+u];for(u+=h,i=y&(1<<-c)-1,y>>=-c,c+=n;c>0;i=256*i+e[t+u],u+=h,c-=8);for(s=i&(1<<-c)-1,i>>=-c,c+=p;c>0;s=256*s+e[t+u],u+=h,c-=8);if(0===i)i=1-l;else{if(i===a)return s?NaN:1/0*(y?-1:1);s+=Math.pow(2,p),i-=l}return(y?-1:1)*s*Math.pow(2,i-p)},t.write=function(e,t,r,p,o,i){var s,n,a,l=8*i-o-1,c=(1<>1,h=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,y=p?0:i-1,f=p?1:-1,d=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(n=isNaN(t)?1:0,s=c):(s=Math.floor(Math.log(t)/Math.LN2),t*(a=Math.pow(2,-s))<1&&(s--,a*=2),(t+=s+u>=1?h/a:h*Math.pow(2,1-u))*a>=2&&(s++,a/=2),s+u>=c?(n=0,s=c):s+u>=1?(n=(t*a-1)*Math.pow(2,o),s+=u):(n=t*Math.pow(2,u-1)*Math.pow(2,o),s=0));o>=8;e[r+y]=255&n,y+=f,n/=256,o-=8);for(s=s<0;e[r+y]=255&s,y+=f,s/=256,l-=8);e[r+y-f]|=128*d}},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t){var r=function(){this.code="",this.scopes=[["vars"]],this.isAsync=!1,this.bitFields=[],this.tmpVariableCount=0};r.prototype.generateVariable=function(e){var t=[];return Array.prototype.push.apply(t,this.scopes[this.scopes.length-1]),e&&t.push(e),t.join(".")},r.prototype.generateOption=function(e){switch(typeof e){case"number":return e.toString();case"string":return this.generateVariable(e);case"function":return"("+e+").call("+this.generateVariable()+")"}},r.prototype.generateError=function(){var e=Array.prototype.slice.call(arguments),t=r.interpolate.apply(this,e);this.isAsync?this.pushCode("return process.nextTick(function() { callback(new Error("+t+"), vars); });"):this.pushCode("throw new Error("+t+");")},r.prototype.generateTmpVariable=function(){return"$tmp"+this.tmpVariableCount++},r.prototype.pushCode=function(){var e=Array.prototype.slice.call(arguments);this.code+=r.interpolate.apply(this,e)+"\n"},r.prototype.pushPath=function(e){this.scopes[this.scopes.length-1].push(e)},r.prototype.popPath=function(){this.scopes[this.scopes.length-1].pop()},r.prototype.pushScope=function(e){this.scopes.push([e])},r.prototype.popScope=function(){this.scopes.pop()},r.interpolate=function(e){var t=e.match(/{\d+}/g),r=Array.prototype.slice.call(arguments,1);return t&&t.forEach(function(t){var p=parseInt(t.substr(1,t.length-2),10);e=e.replace(t,r[p].toString())}),e},t.Context=r},function(e,t,r){(function(e){function r(e,t){for(var r=0,p=e.length-1;p>=0;p--){var o=e[p];"."===o?e.splice(p,1):".."===o?(e.splice(p,1),r++):r&&(e.splice(p,1),r--)}if(t)for(;r--;r)e.unshift("..");return e}var p=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,o=function(e){return p.exec(e).slice(1)};function i(e,t){if(e.filter)return e.filter(t);for(var r=[],p=0;p=-1&&!p;o--){var s=o>=0?arguments[o]:e.cwd();if("string"!=typeof s)throw new TypeError("Arguments to path.resolve must be strings");s&&(t=s+"/"+t,p="/"===s.charAt(0))}return(p?"/":"")+(t=r(i(t.split("/"),function(e){return!!e}),!p).join("/"))||"."},t.normalize=function(e){var p=t.isAbsolute(e),o="/"===s(e,-1);return(e=r(i(e.split("/"),function(e){return!!e}),!p).join("/"))||p||(e="."),e&&o&&(e+="/"),(p?"/":"")+e},t.isAbsolute=function(e){return"/"===e.charAt(0)},t.join=function(){var e=Array.prototype.slice.call(arguments,0);return t.normalize(i(e,function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},t.relative=function(e,r){function p(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=t.resolve(e).substr(1),r=t.resolve(r).substr(1);for(var o=p(e.split("/")),i=p(r.split("/")),s=Math.min(o.length,i.length),n=s,a=0;a0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r},e.prototype.concat=function(e){if(0===this.length)return p.alloc(0);if(1===this.length)return this.head.data;for(var t,r,o,i=p.allocUnsafe(e>>>0),s=this.head,n=0;s;)t=s.data,r=i,o=n,t.copy(r,o),n+=s.data.length,s=s.next;return i},e}(),o&&o.inspect&&o.inspect.custom&&(e.exports.prototype[o.inspect.custom]=function(){var e=o.inspect({length:this.length});return this.constructor.name+" "+e})},function(e,t){},function(e,t,r){(function(e){var p=void 0!==e&&e||"undefined"!=typeof self&&self||window,o=Function.prototype.apply;function i(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new i(o.call(setTimeout,p,arguments),clearTimeout)},t.setInterval=function(){return new i(o.call(setInterval,p,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(p,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},r(34),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,r(5))},function(e,t,r){(function(e,t){!function(e,r){"use strict";if(!e.setImmediate){var p,o,i,s,n,a=1,l={},c=!1,u=e.document,h=Object.getPrototypeOf&&Object.getPrototypeOf(e);h=h&&h.setTimeout?h:e,"[object process]"==={}.toString.call(e.process)?p=function(e){t.nextTick(function(){f(e)})}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,r=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=r,t}}()?e.MessageChannel?((i=new MessageChannel).port1.onmessage=function(e){f(e.data)},p=function(e){i.port2.postMessage(e)}):u&&"onreadystatechange"in u.createElement("script")?(o=u.documentElement,p=function(e){var t=u.createElement("script");t.onreadystatechange=function(){f(e),t.onreadystatechange=null,o.removeChild(t),t=null},o.appendChild(t)}):p=function(e){setTimeout(f,0,e)}:(s="setImmediate$"+Math.random()+"$",n=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(s)&&f(+t.data.slice(s.length))},e.addEventListener?e.addEventListener("message",n,!1):e.attachEvent("onmessage",n),p=function(t){e.postMessage(s+t,"*")}),h.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),r=0;r=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|e}function f(e,t){if(a.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var p=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return B(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return F(e).length;default:if(p)return B(e).length;t=(""+t).toLowerCase(),p=!0}}function d(e,t,r){var p=e[t];e[t]=e[r],e[r]=p}function _(e,t,r,p,o){if(0===e.length)return-1;if("string"==typeof r?(p=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=o?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(o)return-1;r=e.length-1}else if(r<0){if(!o)return-1;r=0}if("string"==typeof t&&(t=a.from(t,p)),a.isBuffer(t))return 0===t.length?-1:S(e,t,r,p,o);if("number"==typeof t)return t&=255,a.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):S(e,[t],r,p,o);throw new TypeError("val must be string, number or Buffer")}function S(e,t,r,p,o){var i,s=1,n=e.length,a=t.length;if(void 0!==p&&("ucs2"===(p=String(p).toLowerCase())||"ucs-2"===p||"utf16le"===p||"utf-16le"===p)){if(e.length<2||t.length<2)return-1;s=2,n/=2,a/=2,r/=2}function l(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(o){var c=-1;for(i=r;in&&(r=n-a),i=r;i>=0;i--){for(var u=!0,y=0;yo&&(p=o):p=o;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");p>i/2&&(p=i/2);for(var s=0;s>8,o=r%256,i.push(o),i.push(p);return i}(t,e.length-r),e,r,p)}function L(e,t,r){return 0===t&&r===e.length?p.fromByteArray(e):p.fromByteArray(e.slice(t,r))}function T(e,t,r){r=Math.min(e.length,r);for(var p=[],o=t;o239?4:l>223?3:l>191?2:1;if(o+u<=r)switch(u){case 1:l<128&&(c=l);break;case 2:128==(192&(i=e[o+1]))&&(a=(31&l)<<6|63&i)>127&&(c=a);break;case 3:i=e[o+1],s=e[o+2],128==(192&i)&&128==(192&s)&&(a=(15&l)<<12|(63&i)<<6|63&s)>2047&&(a<55296||a>57343)&&(c=a);break;case 4:i=e[o+1],s=e[o+2],n=e[o+3],128==(192&i)&&128==(192&s)&&128==(192&n)&&(a=(15&l)<<18|(63&i)<<12|(63&s)<<6|63&n)>65535&&a<1114112&&(c=a)}null===c?(c=65533,u=1):c>65535&&(c-=65536,p.push(c>>>10&1023|55296),c=56320|1023&c),p.push(c),o+=u}return function(e){var t=e.length;if(t<=I)return String.fromCharCode.apply(String,e);var r="",p=0;for(;pthis.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return D(this,t,r);case"utf8":case"utf-8":return T(this,t,r);case"ascii":return M(this,t,r);case"latin1":case"binary":return U(this,t,r);case"base64":return L(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,t,r);default:if(p)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),p=!0}}.apply(this,arguments)},a.prototype.equals=function(e){if(!a.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===a.compare(this,e)},a.prototype.inspect=function(){var e="",r=t.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(e+=" ... ")),""},a.prototype.compare=function(e,t,r,p,o){if(!a.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===p&&(p=0),void 0===o&&(o=this.length),t<0||r>e.length||p<0||o>this.length)throw new RangeError("out of range index");if(p>=o&&t>=r)return 0;if(p>=o)return-1;if(t>=r)return 1;if(this===e)return 0;for(var i=(o>>>=0)-(p>>>=0),s=(r>>>=0)-(t>>>=0),n=Math.min(i,s),l=this.slice(p,o),c=e.slice(t,r),u=0;uo)&&(r=o),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");p||(p="utf8");for(var i=!1;;)switch(p){case"hex":return g(this,e,t,r);case"utf8":case"utf-8":return w(this,e,t,r);case"ascii":return E(this,e,t,r);case"latin1":case"binary":return m(this,e,t,r);case"base64":return b(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return v(this,e,t,r);default:if(i)throw new TypeError("Unknown encoding: "+p);p=(""+p).toLowerCase(),i=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var I=4096;function M(e,t,r){var p="";r=Math.min(e.length,r);for(var o=t;op)&&(r=p);for(var o="",i=t;ir)throw new RangeError("Trying to access beyond buffer length")}function G(e,t,r,p,o,i){if(!a.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||te.length)throw new RangeError("Index out of range")}function R(e,t,r,p){t<0&&(t=65535+t+1);for(var o=0,i=Math.min(e.length-r,2);o>>8*(p?o:1-o)}function C(e,t,r,p){t<0&&(t=4294967295+t+1);for(var o=0,i=Math.min(e.length-r,4);o>>8*(p?o:3-o)&255}function P(e,t,r,p,o,i){if(r+p>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function j(e,t,r,p,i){return i||P(e,0,r,4),o.write(e,t,r,p,23,4),r+4}function N(e,t,r,p,i){return i||P(e,0,r,8),o.write(e,t,r,p,52,8),r+8}a.prototype.slice=function(e,t){var r,p=this.length;if((e=~~e)<0?(e+=p)<0&&(e=0):e>p&&(e=p),(t=void 0===t?p:~~t)<0?(t+=p)<0&&(t=0):t>p&&(t=p),t0&&(o*=256);)p+=this[e+--t]*o;return p},a.prototype.readUInt8=function(e,t){return t||A(e,1,this.length),this[e]},a.prototype.readUInt16LE=function(e,t){return t||A(e,2,this.length),this[e]|this[e+1]<<8},a.prototype.readUInt16BE=function(e,t){return t||A(e,2,this.length),this[e]<<8|this[e+1]},a.prototype.readUInt32LE=function(e,t){return t||A(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},a.prototype.readUInt32BE=function(e,t){return t||A(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},a.prototype.readIntLE=function(e,t,r){e|=0,t|=0,r||A(e,t,this.length);for(var p=this[e],o=1,i=0;++i=(o*=128)&&(p-=Math.pow(2,8*t)),p},a.prototype.readIntBE=function(e,t,r){e|=0,t|=0,r||A(e,t,this.length);for(var p=t,o=1,i=this[e+--p];p>0&&(o*=256);)i+=this[e+--p]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},a.prototype.readInt8=function(e,t){return t||A(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},a.prototype.readInt16LE=function(e,t){t||A(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt16BE=function(e,t){t||A(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt32LE=function(e,t){return t||A(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},a.prototype.readInt32BE=function(e,t){return t||A(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},a.prototype.readFloatLE=function(e,t){return t||A(e,4,this.length),o.read(this,e,!0,23,4)},a.prototype.readFloatBE=function(e,t){return t||A(e,4,this.length),o.read(this,e,!1,23,4)},a.prototype.readDoubleLE=function(e,t){return t||A(e,8,this.length),o.read(this,e,!0,52,8)},a.prototype.readDoubleBE=function(e,t){return t||A(e,8,this.length),o.read(this,e,!1,52,8)},a.prototype.writeUIntLE=function(e,t,r,p){(e=+e,t|=0,r|=0,p)||G(this,e,t,r,Math.pow(2,8*r)-1,0);var o=1,i=0;for(this[t]=255&e;++i=0&&(i*=256);)this[t+o]=e/i&255;return t+r},a.prototype.writeUInt8=function(e,t,r){return e=+e,t|=0,r||G(this,e,t,1,255,0),a.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},a.prototype.writeUInt16LE=function(e,t,r){return e=+e,t|=0,r||G(this,e,t,2,65535,0),a.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):R(this,e,t,!0),t+2},a.prototype.writeUInt16BE=function(e,t,r){return e=+e,t|=0,r||G(this,e,t,2,65535,0),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):R(this,e,t,!1),t+2},a.prototype.writeUInt32LE=function(e,t,r){return e=+e,t|=0,r||G(this,e,t,4,4294967295,0),a.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):C(this,e,t,!0),t+4},a.prototype.writeUInt32BE=function(e,t,r){return e=+e,t|=0,r||G(this,e,t,4,4294967295,0),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):C(this,e,t,!1),t+4},a.prototype.writeIntLE=function(e,t,r,p){if(e=+e,t|=0,!p){var o=Math.pow(2,8*r-1);G(this,e,t,r,o-1,-o)}var i=0,s=1,n=0;for(this[t]=255&e;++i>0)-n&255;return t+r},a.prototype.writeIntBE=function(e,t,r,p){if(e=+e,t|=0,!p){var o=Math.pow(2,8*r-1);G(this,e,t,r,o-1,-o)}var i=r-1,s=1,n=0;for(this[t+i]=255&e;--i>=0&&(s*=256);)e<0&&0===n&&0!==this[t+i+1]&&(n=1),this[t+i]=(e/s>>0)-n&255;return t+r},a.prototype.writeInt8=function(e,t,r){return e=+e,t|=0,r||G(this,e,t,1,127,-128),a.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},a.prototype.writeInt16LE=function(e,t,r){return e=+e,t|=0,r||G(this,e,t,2,32767,-32768),a.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):R(this,e,t,!0),t+2},a.prototype.writeInt16BE=function(e,t,r){return e=+e,t|=0,r||G(this,e,t,2,32767,-32768),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):R(this,e,t,!1),t+2},a.prototype.writeInt32LE=function(e,t,r){return e=+e,t|=0,r||G(this,e,t,4,2147483647,-2147483648),a.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):C(this,e,t,!0),t+4},a.prototype.writeInt32BE=function(e,t,r){return e=+e,t|=0,r||G(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):C(this,e,t,!1),t+4},a.prototype.writeFloatLE=function(e,t,r){return j(this,e,t,!0,r)},a.prototype.writeFloatBE=function(e,t,r){return j(this,e,t,!1,r)},a.prototype.writeDoubleLE=function(e,t,r){return N(this,e,t,!0,r)},a.prototype.writeDoubleBE=function(e,t,r){return N(this,e,t,!1,r)},a.prototype.copy=function(e,t,r,p){if(r||(r=0),p||0===p||(p=this.length),t>=e.length&&(t=e.length),t||(t=0),p>0&&p=this.length)throw new RangeError("sourceStart out of bounds");if(p<0)throw new RangeError("sourceEnd out of bounds");p>this.length&&(p=this.length),e.length-t=0;--o)e[o+t]=this[o+r];else if(i<1e3||!a.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(i=t;i55295&&r<57344){if(!o){if(r>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(s+1===p){(t-=3)>-1&&i.push(239,191,189);continue}o=r;continue}if(r<56320){(t-=3)>-1&&i.push(239,191,189),o=r;continue}r=65536+(o-55296<<10|r-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,r<128){if((t-=1)<0)break;i.push(r)}else if(r<2048){if((t-=2)<0)break;i.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;i.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return i}function F(e){return p.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(x,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function q(e,t,r,p){for(var o=0;o=t.length||o>=e.length);++o)t[o+r]=e[o];return o}}).call(this,r(5))},function(e,t){var r,p,o=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function n(e){if(r===setTimeout)return setTimeout(e,0);if((r===i||!r)&&setTimeout)return r=setTimeout,setTimeout(e,0);try{return r(e,0)}catch(t){try{return r.call(null,e,0)}catch(t){return r.call(this,e,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:i}catch(e){r=i}try{p="function"==typeof clearTimeout?clearTimeout:s}catch(e){p=s}}();var a,l=[],c=!1,u=-1;function y(){c&&a&&(c=!1,a.length?l=a.concat(l):u=-1,l.length&&h())}function h(){if(!c){var e=n(y);c=!0;for(var t=l.length;t;){for(a=l,l=[];++u1)for(var r=1;r=0)e=o[this.type];else if("String"===this.type&&"number"==typeof this.options.length)e=this.options.length;else if("Array"===this.type&&"number"==typeof this.options.length){var t=NaN;"string"==typeof this.options.type?t=o[s[this.options.type]]:this.options.type instanceof n&&(t=this.options.type.sizeOf()),e=this.options.length*t}else"Skip"===this.type?e=this.options.length:this.type||(e=0);return this.next&&(e+=this.next.sizeOf()),e},n.prototype.parse=function(e,t){return this.compiled||this.compile(),this.compiled(e,t,this.constructorFn)},n.prototype.setNextParser=function(e,t,r){var p=new n;return p.type=s[e],p.varName=t,p.options=r||p.options,p.endian=this.endian,this.head?this.head.next=p:this.next=p,this.head=p,this},n.prototype.generate=function(e){this.type&&(this["generate"+this.type](e),this.generateAssert(e));var t=e.generateVariable(this.varName);return this.options.formatter&&this.generateFormatter(e,t,this.options.formatter),this.generateNext(e)},n.prototype.generateAssert=function(e){if(this.options.assert){var t=e.generateVariable(this.varName);switch(typeof this.options.assert){case"function":e.pushCode("if (!({0}).call(vars, {1})) {",this.options.assert,t);break;case"number":e.pushCode("if ({0} !== {1}) {",this.options.assert,t);break;case"string":e.pushCode('if ("{0}" !== {1}) {',this.options.assert,t);break;default:throw new Error("Assert option supports only strings, numbers and assert functions.")}e.generateError('"Assert error: {0} is " + {0}',t),e.pushCode("}")}},n.prototype.generateNext=function(e){return this.next&&(e=this.next.generate(e)),e},Object.keys(o).forEach(function(e){n.prototype["generate"+e]=function(t){t.pushCode("{0} = buffer.read{1}(offset);",t.generateVariable(this.varName),e),t.pushCode("offset += {0};",o[e])}}),n.prototype.generateBit=function(e){var t=JSON.parse(JSON.stringify(this));if(t.varName=e.generateVariable(t.varName),e.bitFields.push(t),!this.next||this.next&&["Bit","Nest"].indexOf(this.next.type)<0){var r=0;e.bitFields.forEach(function(e){r+=e.options.length});var p=e.generateTmpVariable();if(r<=8)e.pushCode("var {0} = buffer.readUInt8(offset);",p),r=8;else if(r<=16)e.pushCode("var {0} = buffer.readUInt16BE(offset);",p),r=16;else if(r<=24){var o=e.generateTmpVariable(),i=e.generateTmpVariable();e.pushCode("var {0} = buffer.readUInt16BE(offset);",o),e.pushCode("var {0} = buffer.readUInt8(offset + 2);",i),e.pushCode("var {2} = ({0} << 8) | {1};",o,i,p),r=24}else{if(!(r<=32))throw new Error("Currently, bit field sequence longer than 4-bytes is not supported.");e.pushCode("var {0} = buffer.readUInt32BE(offset);",p),r=32}e.pushCode("offset += {0};",r/8);var s=0,n="be"===this.endian;e.bitFields.forEach(function(t){e.pushCode("{0} = {1} >> {2} & {3};",t.varName,p,n?r-s-t.options.length:s,(1< offset++);"),e.pushCode("{0} = buffer.toString('{1}', {2}, offset);",t,this.options.encoding,r)),this.options.stripNull&&e.pushCode("{0} = {0}.replace(/\\x00+$/g, '')",t)},n.prototype.generateBuffer=function(e){if("eof"===this.options.readUntil?e.pushCode("{0} = buffer.slice(offset, buffer.length - 1);",e.generateVariable(this.varName)):(e.pushCode("{0} = buffer.slice(offset, offset + {1});",e.generateVariable(this.varName),e.generateOption(this.options.length)),e.pushCode("offset += {0};",e.generateOption(this.options.length))),this.options.clone){var t=e.generateTmpVariable();e.pushCode("var {0} = new Buffer({1}.length);",t,e.generateVariable(this.varName)),e.pushCode("{0}.copy({1});",e.generateVariable(this.varName),t),e.pushCode("{0} = {1}",e.generateVariable(this.varName),t)}},n.prototype.generateArray=function(e){var t=e.generateOption(this.options.length),r=this.options.type,p=e.generateTmpVariable(),i=e.generateVariable(this.varName),a=e.generateTmpVariable(),l=this.options.key,c="string"==typeof l;c?e.pushCode("{0} = {};",i):e.pushCode("{0} = [];",i),"function"==typeof this.options.readUntil?e.pushCode("do {"):"eof"===this.options.readUntil?e.pushCode("for (var {0} = 0; offset < buffer.length; {0}++) {",p):e.pushCode("for (var {0} = 0; {0} < {1}; {0}++) {",p,t),"string"==typeof r?(e.pushCode("var {0} = buffer.read{1}(offset);",a,s[r]),e.pushCode("offset += {0};",o[s[r]])):r instanceof n&&(e.pushCode("var {0} = {};",a),e.pushScope(a),r.generate(e),e.popScope()),c?e.pushCode("{0}[{2}.{1}] = {2};",i,l,a):e.pushCode("{0}.push({1});",i,a),e.pushCode("}"),"function"==typeof this.options.readUntil&&e.pushCode(" while (!({0}).call(this, {1}, buffer.slice(offset)));",this.options.readUntil,a)},n.prototype.generateChoiceCase=function(e,t,r){"string"==typeof r?(e.pushCode("{0} = buffer.read{1}(offset);",e.generateVariable(this.varName),s[r]),e.pushCode("offset += {0};",o[s[r]])):r instanceof n&&(e.pushPath(t),r.generate(e),e.popPath())},n.prototype.generateChoice=function(e){var t=e.generateOption(this.options.tag);e.pushCode("{0} = {};",e.generateVariable(this.varName)),e.pushCode("switch({0}) {",t),Object.keys(this.options.choices).forEach(function(t){var r=this.options.choices[t];e.pushCode("case {0}:",t),this.generateChoiceCase(e,this.varName,r),e.pushCode("break;")},this),e.pushCode("default:"),this.options.defaultChoice?this.generateChoiceCase(e,this.varName,this.options.defaultChoice):e.generateError('"Met undefined tag value " + {0} + " at choice"',t),e.pushCode("}")},n.prototype.generateNest=function(e){var t=e.generateVariable(this.varName);e.pushCode("{0} = {};",t),e.pushPath(this.varName),this.options.type.generate(e),e.popPath()},n.prototype.generateFormatter=function(e,t,r){"function"==typeof r&&e.pushCode("{0} = ({1}).call(this, {0});",t,r)},n.prototype.isInteger=function(){return!!this.type.match(/U?Int[8|16|32][BE|LE]?|Bit\d+/)},t.Parser=n},function(e,t){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function p(e){return"function"==typeof e}function o(e){return"object"==typeof e&&null!==e}function i(e){return void 0===e}e.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},r.prototype.emit=function(e){var t,r,s,n,a,l;if(this._events||(this._events={}),"error"===e&&(!this._events.error||o(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var c=new Error('Uncaught, unspecified "error" event. ('+t+")");throw c.context=t,c}if(i(r=this._events[e]))return!1;if(p(r))switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:n=Array.prototype.slice.call(arguments,1),r.apply(this,n)}else if(o(r))for(n=Array.prototype.slice.call(arguments,1),s=(l=r.slice()).length,a=0;a0&&this._events[e].length>s&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){if(!p(t))throw TypeError("listener must be a function");var r=!1;function o(){this.removeListener(e,o),r||(r=!0,t.apply(this,arguments))}return o.listener=t,this.on(e,o),this},r.prototype.removeListener=function(e,t){var r,i,s,n;if(!p(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(s=(r=this._events[e]).length,i=-1,r===t||p(r.listener)&&r.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(o(r)){for(n=s;n-- >0;)if(r[n]===t||r[n].listener&&r[n].listener===t){i=n;break}if(i<0)return this;1===r.length?(r.length=0,delete this._events[e]):r.splice(i,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(p(r=this._events[e]))this.removeListener(e,r);else if(r)for(;r.length;)this.removeListener(e,r[r.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){return this._events&&this._events[e]?p(this._events[e])?[this._events[e]]:this._events[e].slice():[]},r.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(p(t))return 1;if(t)return t.length}return 0},r.listenerCount=function(e,t){return e.listenerCount(t)}},function(e,t,r){(t=e.exports=r(18)).Stream=t,t.Readable=t,t.Writable=r(16),t.Duplex=r(7),t.Transform=r(22),t.PassThrough=r(36)},function(e,t,r){"use strict";(function(t,p,o){var i=r(11);function s(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,r){var p=e.entry;e.entry=null;for(;p;){var o=p.callback;t.pendingcb--,o(r),p=p.next}t.corkedRequestsFree?t.corkedRequestsFree.next=e:t.corkedRequestsFree=e}(t,e)}}e.exports=g;var n,a=!t.browser&&["v0.10","v0.9."].indexOf(t.version.slice(0,5))>-1?p:i.nextTick;g.WritableState=S;var l=r(10);l.inherits=r(6);var c={deprecate:r(35)},u=r(19),y=r(12).Buffer,h=o.Uint8Array||function(){};var f,d=r(20);function _(){}function S(e,t){n=n||r(7),e=e||{};var p=t instanceof n;this.objectMode=!!e.objectMode,p&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var o=e.highWaterMark,l=e.writableHighWaterMark,c=this.objectMode?16:16384;this.highWaterMark=o||0===o?o:p&&(l||0===l)?l:c,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var u=!1===e.decodeStrings;this.decodeStrings=!u,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var r=e._writableState,p=r.sync,o=r.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),t)!function(e,t,r,p,o){--t.pendingcb,r?(i.nextTick(o,p),i.nextTick(L,e,t),e._writableState.errorEmitted=!0,e.emit("error",p)):(o(p),e._writableState.errorEmitted=!0,e.emit("error",p),L(e,t))}(e,r,p,t,o);else{var s=b(r);s||r.corked||r.bufferProcessing||!r.bufferedRequest||m(e,r),p?a(E,e,r,s,o):E(e,r,s,o)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new s(this)}function g(e){if(n=n||r(7),!(f.call(g,this)||this instanceof n))return new g(e);this._writableState=new S(e,this),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),u.call(this)}function w(e,t,r,p,o,i,s){t.writelen=p,t.writecb=s,t.writing=!0,t.sync=!0,r?e._writev(o,t.onwrite):e._write(o,i,t.onwrite),t.sync=!1}function E(e,t,r,p){r||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,p(),L(e,t)}function m(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var p=t.bufferedRequestCount,o=new Array(p),i=t.corkedRequestsFree;i.entry=r;for(var n=0,a=!0;r;)o[n]=r,r.isBuf||(a=!1),r=r.next,n+=1;o.allBuffers=a,w(e,t,!0,t.length,o,"",i.finish),t.pendingcb++,t.lastBufferedRequest=null,i.next?(t.corkedRequestsFree=i.next,i.next=null):t.corkedRequestsFree=new s(t),t.bufferedRequestCount=0}else{for(;r;){var l=r.chunk,c=r.encoding,u=r.callback;if(w(e,t,!1,t.objectMode?1:l.length,l,c,u),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function b(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function v(e,t){e._final(function(r){t.pendingcb--,r&&e.emit("error",r),t.prefinished=!0,e.emit("prefinish"),L(e,t)})}function L(e,t){var r=b(t);return r&&(!function(e,t){t.prefinished||t.finalCalled||("function"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,i.nextTick(v,e,t)):(t.prefinished=!0,e.emit("prefinish")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"))),r}l.inherits(g,u),S.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(S.prototype,"buffer",{get:c.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(f=Function.prototype[Symbol.hasInstance],Object.defineProperty(g,Symbol.hasInstance,{value:function(e){return!!f.call(this,e)||this===g&&(e&&e._writableState instanceof S)}})):f=function(e){return e instanceof this},g.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},g.prototype.write=function(e,t,r){var p,o=this._writableState,s=!1,n=!o.objectMode&&(p=e,y.isBuffer(p)||p instanceof h);return n&&!y.isBuffer(e)&&(e=function(e){return y.from(e)}(e)),"function"==typeof t&&(r=t,t=null),n?t="buffer":t||(t=o.defaultEncoding),"function"!=typeof r&&(r=_),o.ended?function(e,t){var r=new Error("write after end");e.emit("error",r),i.nextTick(t,r)}(this,r):(n||function(e,t,r,p){var o=!0,s=!1;return null===r?s=new TypeError("May not write null values to stream"):"string"==typeof r||void 0===r||t.objectMode||(s=new TypeError("Invalid non-string/buffer chunk")),s&&(e.emit("error",s),i.nextTick(p,s),o=!1),o}(this,o,e,r))&&(o.pendingcb++,s=function(e,t,r,p,o,i){if(!r){var s=function(e,t,r){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=y.from(t,r));return t}(t,p,o);p!==s&&(r=!0,o="buffer",p=s)}var n=t.objectMode?1:p.length;t.length+=n;var a=t.length-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(g.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),g.prototype._write=function(e,t,r){r(new Error("_write() is not implemented"))},g.prototype._writev=null,g.prototype.end=function(e,t,r){var p=this._writableState;"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),p.corked&&(p.corked=1,this.uncork()),p.ending||p.finished||function(e,t,r){t.ending=!0,L(e,t),r&&(t.finished?i.nextTick(r):e.once("finish",r));t.ended=!0,e.writable=!1}(this,p,r)},Object.defineProperty(g.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),g.prototype.destroy=d.destroy,g.prototype._undestroy=d.undestroy,g.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,r(9),r(33).setImmediate,r(5))},function(e,t){var r={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},function(e,t,r){"use strict";(function(t,p){var o=r(11);e.exports=w;var i,s=r(17);w.ReadableState=g;r(14).EventEmitter;var n=function(e,t){return e.listeners(t).length},a=r(19),l=r(12).Buffer,c=t.Uint8Array||function(){};var u=r(10);u.inherits=r(6);var y=r(30),h=void 0;h=y&&y.debuglog?y.debuglog("stream"):function(){};var f,d=r(31),_=r(20);u.inherits(w,a);var S=["error","close","destroy","pause","resume"];function g(e,t){e=e||{};var p=t instanceof(i=i||r(7));this.objectMode=!!e.objectMode,p&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var o=e.highWaterMark,s=e.readableHighWaterMark,n=this.objectMode?16:16384;this.highWaterMark=o||0===o?o:p&&(s||0===s)?s:n,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new d,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(f||(f=r(21).StringDecoder),this.decoder=new f(e.encoding),this.encoding=e.encoding)}function w(e){if(i=i||r(7),!(this instanceof w))return new w(e);this._readableState=new g(e,this),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),a.call(this)}function E(e,t,r,p,o){var i,s=e._readableState;null===t?(s.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,L(e)}(e,s)):(o||(i=function(e,t){var r;p=t,l.isBuffer(p)||p instanceof c||"string"==typeof t||void 0===t||e.objectMode||(r=new TypeError("Invalid non-string/buffer chunk"));var p;return r}(s,t)),i?e.emit("error",i):s.objectMode||t&&t.length>0?("string"==typeof t||s.objectMode||Object.getPrototypeOf(t)===l.prototype||(t=function(e){return l.from(e)}(t)),p?s.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):m(e,s,t,!0):s.ended?e.emit("error",new Error("stream.push() after EOF")):(s.reading=!1,s.decoder&&!r?(t=s.decoder.write(t),s.objectMode||0!==t.length?m(e,s,t,!1):I(e,s)):m(e,s,t,!1))):p||(s.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=b?e=b:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function L(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(h("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?o.nextTick(T,e):T(e))}function T(e){h("emit readable"),e.emit("readable"),O(e)}function I(e,t){t.readingMore||(t.readingMore=!0,o.nextTick(M,e,t))}function M(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):r=function(e,t,r){var p;ei.length?i.length:e;if(s===i.length?o+=i:o+=i.slice(0,e),0===(e-=s)){s===i.length?(++p,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=i.slice(s));break}++p}return t.length-=p,o}(e,t):function(e,t){var r=l.allocUnsafe(e),p=t.head,o=1;p.data.copy(r),e-=p.data.length;for(;p=p.next;){var i=p.data,s=e>i.length?i.length:e;if(i.copy(r,r.length-e,0,s),0===(e-=s)){s===i.length?(++o,p.next?t.head=p.next:t.head=t.tail=null):(t.head=p,p.data=i.slice(s));break}++o}return t.length-=o,r}(e,t);return p}(e,t.buffer,t.decoder),r);var r}function G(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,o.nextTick(R,t,e))}function R(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function C(e,t){for(var r=0,p=e.length;r=t.highWaterMark||t.ended))return h("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?G(this):L(this),null;if(0===(e=v(e,t))&&t.ended)return 0===t.length&&G(this),null;var p,o=t.needReadable;return h("need readable",o),(0===t.length||t.length-e0?A(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&G(this)),null!==p&&this.emit("data",p),p},w.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},w.prototype.pipe=function(e,t){var r=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=e;break;case 1:i.pipes=[i.pipes,e];break;default:i.pipes.push(e)}i.pipesCount+=1,h("pipe count=%d opts=%j",i.pipesCount,t);var a=(!t||!1!==t.end)&&e!==p.stdout&&e!==p.stderr?c:w;function l(t,p){h("onunpipe"),t===r&&p&&!1===p.hasUnpiped&&(p.hasUnpiped=!0,h("cleanup"),e.removeListener("close",S),e.removeListener("finish",g),e.removeListener("drain",u),e.removeListener("error",_),e.removeListener("unpipe",l),r.removeListener("end",c),r.removeListener("end",w),r.removeListener("data",d),y=!0,!i.awaitDrain||e._writableState&&!e._writableState.needDrain||u())}function c(){h("onend"),e.end()}i.endEmitted?o.nextTick(a):r.once("end",a),e.on("unpipe",l);var u=function(e){return function(){var t=e._readableState;h("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&n(e,"data")&&(t.flowing=!0,O(e))}}(r);e.on("drain",u);var y=!1;var f=!1;function d(t){h("ondata"),f=!1,!1!==e.write(t)||f||((1===i.pipesCount&&i.pipes===e||i.pipesCount>1&&-1!==C(i.pipes,e))&&!y&&(h("false write response, pause",r._readableState.awaitDrain),r._readableState.awaitDrain++,f=!0),r.pause())}function _(t){h("onerror",t),w(),e.removeListener("error",_),0===n(e,"error")&&e.emit("error",t)}function S(){e.removeListener("finish",g),w()}function g(){h("onfinish"),e.removeListener("close",S),w()}function w(){h("unpipe"),r.unpipe(e)}return r.on("data",d),function(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?s(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,"error",_),e.once("close",S),e.once("finish",g),e.emit("pipe",r),i.flowing||(h("pipe resume"),r.resume()),e},w.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r),this);if(!e){var p=t.pipes,o=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;i>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function n(e){var t=this.lastTotal-this.lastNeed,r=function(e,t,r){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function a(e,t){if((e.length-t)%2==0){var r=e.toString("utf16le",t);if(r){var p=r.charCodeAt(r.length-1);if(p>=55296&&p<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function l(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function c(e,t){var r=(e.length-t)%3;return 0===r?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function u(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function y(e){return e.toString(this.encoding)}function h(e){return e&&e.length?this.write(e):""}t.StringDecoder=i,i.prototype.write=function(e){if(0===e.length)return"";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0)return o>0&&(e.lastNeed=o-1),o;if(--p=0)return o>0&&(e.lastNeed=o-2),o;if(--p=0)return o>0&&(2===o?o=0:e.lastNeed=o-3),o;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var p=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,p),e.toString("utf8",t,p)},i.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},function(e,t,r){"use strict";e.exports=i;var p=r(7),o=r(10);function i(e){if(!(this instanceof i))return new i(e);p.call(this,e),this._transformState={afterTransform:function(e,t){var r=this._transformState;r.transforming=!1;var p=r.writecb;if(!p)return this.emit("error",new Error("write callback called multiple times"));r.writechunk=null,r.writecb=null,null!=t&&this.push(t),p(e);var o=this._readableState;o.reading=!1,(o.needReadable||o.length>8&255^255&p],t&=65535}return t}p.exports={preambleByte:85,crc16:_,sbpIdTable:h,sbpMessageTypesTable:f,decode:function(e){var t=d.parse(e),r=h[t.msg_type];return void 0===r?(console.log("Unknown message type: ",t.msg_type),new s(t)):new r(t)},dispatch:function(t,r,o){var i,s,n=new e(0);if(void 0===o&&"function"==typeof r?i=r:(i=o,s=r),s&&!Array.isArray(s)&&-1===["function","number"].indexOf(typeof s))throw l("dispatch: messageWhitelist must be function, number, or array");var a=function(r){t.pause();try{if((n=e.concat([n,r])).length<2)return;var o=function(){var e,t,r,o,i,a,l;for(l=0;ln.length)throw new c;e=n.slice(l+1,l+6),r=n.readUInt16LE(l+1),n.readUInt16LE(l+3),o=n.readUInt8(l+5);var y=s&&Array.isArray(s)&&-1!==s.indexOf(r),h=s&&"number"==typeof s&&s&r,f=s&&"function"==typeof s&&s(r);if(s&&!(y||h||f))return n=n.slice(l+6+o+2),null;if(l+8+o>n.length)throw new c;a=_(n.slice(l+6,l+6+o),_(e)),i=n.readUInt16LE(l+6+o);var d=n.slice(l,l+6+o+2);if(i===a)return n=n.slice(l+6+o+2),[p.exports.decode(d),d];throw n=n.slice(l+1),new u}();if(null===o)return;var l=o[0],y=o[1];i(null,l,y)}catch(e){if(!(e instanceof c||e instanceof u))throw e}finally{0,t.resume(),n.length>0&&setTimeout(function(){a(new e(0))},0)}};t.on("data",a)}},function(e){var r={function:!0,object:!0},i=r[typeof window]&&window||this,s=r[typeof t]&&t&&!t.nodeType&&t,n=r[typeof p]&&p&&!p.nodeType&&p,a=s&&n&&"object"==typeof o&&o;!a||a.global!==a&&a.window!==a&&a.self!==a||(i=a),i.SBP=e}(p.exports)}).call(this,r(8).Buffer,r(26)(e),r(5))},function(e,t,r){"use strict";t.byteLength=function(e){var t=l(e),r=t[0],p=t[1];return 3*(r+p)/4-p},t.toByteArray=function(e){for(var t,r=l(e),p=r[0],s=r[1],n=new i(function(e,t,r){return 3*(t+r)/4-r}(0,p,s)),a=0,c=s>0?p-4:p,u=0;u>16&255,n[a++]=t>>8&255,n[a++]=255&t;2===s&&(t=o[e.charCodeAt(u)]<<2|o[e.charCodeAt(u+1)]>>4,n[a++]=255&t);1===s&&(t=o[e.charCodeAt(u)]<<10|o[e.charCodeAt(u+1)]<<4|o[e.charCodeAt(u+2)]>>2,n[a++]=t>>8&255,n[a++]=255&t);return n},t.fromByteArray=function(e){for(var t,r=e.length,o=r%3,i=[],s=0,n=r-o;sn?n:s+16383));1===o?(t=e[r-1],i.push(p[t>>2]+p[t<<4&63]+"==")):2===o&&(t=(e[r-2]<<8)+e[r-1],i.push(p[t>>10]+p[t>>4&63]+p[t<<2&63]+"="));return i.join("")};for(var p=[],o=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n=0,a=s.length;n0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function c(e,t,r){for(var o,i,s=[],n=t;n>18&63]+p[i>>12&63]+p[i>>6&63]+p[63&i]);return s.join("")}o["-".charCodeAt(0)]=62,o["_".charCodeAt(0)]=63},function(e,t){t.read=function(e,t,r,p,o){var i,s,n=8*o-p-1,a=(1<>1,c=-7,u=r?o-1:0,y=r?-1:1,h=e[t+u];for(u+=y,i=h&(1<<-c)-1,h>>=-c,c+=n;c>0;i=256*i+e[t+u],u+=y,c-=8);for(s=i&(1<<-c)-1,i>>=-c,c+=p;c>0;s=256*s+e[t+u],u+=y,c-=8);if(0===i)i=1-l;else{if(i===a)return s?NaN:1/0*(h?-1:1);s+=Math.pow(2,p),i-=l}return(h?-1:1)*s*Math.pow(2,i-p)},t.write=function(e,t,r,p,o,i){var s,n,a,l=8*i-o-1,c=(1<>1,y=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,h=p?0:i-1,f=p?1:-1,d=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(n=isNaN(t)?1:0,s=c):(s=Math.floor(Math.log(t)/Math.LN2),t*(a=Math.pow(2,-s))<1&&(s--,a*=2),(t+=s+u>=1?y/a:y*Math.pow(2,1-u))*a>=2&&(s++,a/=2),s+u>=c?(n=0,s=c):s+u>=1?(n=(t*a-1)*Math.pow(2,o),s+=u):(n=t*Math.pow(2,u-1)*Math.pow(2,o),s=0));o>=8;e[r+h]=255&n,h+=f,n/=256,o-=8);for(s=s<0;e[r+h]=255&s,h+=f,s/=256,l-=8);e[r+h-f]|=128*d}},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t){var r=function(){this.code="",this.scopes=[["vars"]],this.isAsync=!1,this.bitFields=[],this.tmpVariableCount=0};r.prototype.generateVariable=function(e){var t=[];return Array.prototype.push.apply(t,this.scopes[this.scopes.length-1]),e&&t.push(e),t.join(".")},r.prototype.generateOption=function(e){switch(typeof e){case"number":return e.toString();case"string":return this.generateVariable(e);case"function":return"("+e+").call("+this.generateVariable()+")"}},r.prototype.generateError=function(){var e=Array.prototype.slice.call(arguments),t=r.interpolate.apply(this,e);this.isAsync?this.pushCode("return process.nextTick(function() { callback(new Error("+t+"), vars); });"):this.pushCode("throw new Error("+t+");")},r.prototype.generateTmpVariable=function(){return"$tmp"+this.tmpVariableCount++},r.prototype.pushCode=function(){var e=Array.prototype.slice.call(arguments);this.code+=r.interpolate.apply(this,e)+"\n"},r.prototype.pushPath=function(e){this.scopes[this.scopes.length-1].push(e)},r.prototype.popPath=function(){this.scopes[this.scopes.length-1].pop()},r.prototype.pushScope=function(e){this.scopes.push([e])},r.prototype.popScope=function(){this.scopes.pop()},r.interpolate=function(e){var t=e.match(/{\d+}/g),r=Array.prototype.slice.call(arguments,1);return t&&t.forEach(function(t){var p=parseInt(t.substr(1,t.length-2),10);e=e.replace(t,r[p].toString())}),e},t.Context=r},function(e,t,r){(function(e){function r(e,t){for(var r=0,p=e.length-1;p>=0;p--){var o=e[p];"."===o?e.splice(p,1):".."===o?(e.splice(p,1),r++):r&&(e.splice(p,1),r--)}if(t)for(;r--;r)e.unshift("..");return e}var p=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,o=function(e){return p.exec(e).slice(1)};function i(e,t){if(e.filter)return e.filter(t);for(var r=[],p=0;p=-1&&!p;o--){var s=o>=0?arguments[o]:e.cwd();if("string"!=typeof s)throw new TypeError("Arguments to path.resolve must be strings");s&&(t=s+"/"+t,p="/"===s.charAt(0))}return(p?"/":"")+(t=r(i(t.split("/"),function(e){return!!e}),!p).join("/"))||"."},t.normalize=function(e){var p=t.isAbsolute(e),o="/"===s(e,-1);return(e=r(i(e.split("/"),function(e){return!!e}),!p).join("/"))||p||(e="."),e&&o&&(e+="/"),(p?"/":"")+e},t.isAbsolute=function(e){return"/"===e.charAt(0)},t.join=function(){var e=Array.prototype.slice.call(arguments,0);return t.normalize(i(e,function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},t.relative=function(e,r){function p(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=t.resolve(e).substr(1),r=t.resolve(r).substr(1);for(var o=p(e.split("/")),i=p(r.split("/")),s=Math.min(o.length,i.length),n=s,a=0;a0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r},e.prototype.concat=function(e){if(0===this.length)return p.alloc(0);if(1===this.length)return this.head.data;for(var t,r,o,i=p.allocUnsafe(e>>>0),s=this.head,n=0;s;)t=s.data,r=i,o=n,t.copy(r,o),n+=s.data.length,s=s.next;return i},e}(),o&&o.inspect&&o.inspect.custom&&(e.exports.prototype[o.inspect.custom]=function(){var e=o.inspect({length:this.length});return this.constructor.name+" "+e})},function(e,t){},function(e,t,r){(function(e){var p=void 0!==e&&e||"undefined"!=typeof self&&self||window,o=Function.prototype.apply;function i(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new i(o.call(setTimeout,p,arguments),clearTimeout)},t.setInterval=function(){return new i(o.call(setInterval,p,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(p,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},r(34),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,r(5))},function(e,t,r){(function(e,t){!function(e,r){"use strict";if(!e.setImmediate){var p,o,i,s,n,a=1,l={},c=!1,u=e.document,y=Object.getPrototypeOf&&Object.getPrototypeOf(e);y=y&&y.setTimeout?y:e,"[object process]"==={}.toString.call(e.process)?p=function(e){t.nextTick(function(){f(e)})}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,r=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=r,t}}()?e.MessageChannel?((i=new MessageChannel).port1.onmessage=function(e){f(e.data)},p=function(e){i.port2.postMessage(e)}):u&&"onreadystatechange"in u.createElement("script")?(o=u.documentElement,p=function(e){var t=u.createElement("script");t.onreadystatechange=function(){f(e),t.onreadystatechange=null,o.removeChild(t),t=null},o.appendChild(t)}):p=function(e){setTimeout(f,0,e)}:(s="setImmediate$"+Math.random()+"$",n=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(s)&&f(+t.data.slice(s.length))},e.addEventListener?e.addEventListener("message",n,!1):e.attachEvent("onmessage",n),p=function(t){e.postMessage(s+t,"*")}),y.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),r=0;r * @license MIT */ -function p(e,t){if(e===t)return 0;for(var r=e.length,p=t.length,o=0,i=Math.min(r,p);o=0;l--)if(c[l]!==u[l])return!1;for(l=c.length-1;l>=0;l--)if(a=c[l],!g(e[a],t[a],r,p))return!1;return!0}(e,t,r,s))}return r?e===t:e==t}function w(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function E(e,t){if(!e||!t)return!1;if("[object RegExp]"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return!0}catch(e){}return!Error.isPrototypeOf(t)&&!0===t.call({},e)}function m(e,t,r,p){var o;if("function"!=typeof t)throw new TypeError('"block" argument must be a function');"string"==typeof r&&(p=r,r=null),o=function(e){var t;try{e()}catch(e){t=e}return t}(t),p=(r&&r.name?" ("+r.name+").":".")+(p?" "+p:"."),e&&!o&&_(o,r,"Missing expected exception"+p);var s="string"==typeof p,n=!e&&o&&!r;if((!e&&i.isError(o)&&s&&E(o,r)||n)&&_(o,r,"Got unwanted exception"+p),e&&o&&r&&!E(o,r)||!e&&o)throw o}u.AssertionError=function(e){var t;this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=f(d((t=this).actual),128)+" "+t.operator+" "+f(d(t.expected),128),this.generatedMessage=!0);var r=e.stackStartFunction||_;if(Error.captureStackTrace)Error.captureStackTrace(this,r);else{var p=new Error;if(p.stack){var o=p.stack,i=y(r),s=o.indexOf("\n"+i);if(s>=0){var n=o.indexOf("\n",s+1);o=o.substring(n+1)}this.stack=o}}},i.inherits(u.AssertionError,Error),u.fail=_,u.ok=S,u.equal=function(e,t,r){e!=t&&_(e,t,r,"==",u.equal)},u.notEqual=function(e,t,r){e==t&&_(e,t,r,"!=",u.notEqual)},u.deepEqual=function(e,t,r){g(e,t,!1)||_(e,t,r,"deepEqual",u.deepEqual)},u.deepStrictEqual=function(e,t,r){g(e,t,!0)||_(e,t,r,"deepStrictEqual",u.deepStrictEqual)},u.notDeepEqual=function(e,t,r){g(e,t,!1)&&_(e,t,r,"notDeepEqual",u.notDeepEqual)},u.notDeepStrictEqual=function e(t,r,p){g(t,r,!0)&&_(t,r,p,"notDeepStrictEqual",e)},u.strictEqual=function(e,t,r){e!==t&&_(e,t,r,"===",u.strictEqual)},u.notStrictEqual=function(e,t,r){e===t&&_(e,t,r,"!==",u.notStrictEqual)},u.throws=function(e,t,r){m(!0,e,t,r)},u.doesNotThrow=function(e,t,r){m(!1,e,t,r)},u.ifError=function(e){if(e)throw e};var b=Object.keys||function(e){var t=[];for(var r in e)s.call(e,r)&&t.push(r);return t}}).call(this,r(5))},function(e,t,r){(function(e,p){var o=/%[sdj%]/g;t.format=function(e){if(!S(e)){for(var t=[],r=0;r=i)return e;switch(e){case"%s":return String(p[r++]);case"%d":return Number(p[r++]);case"%j":try{return JSON.stringify(p[r++])}catch(e){return"[Circular]"}default:return e}}),a=p[r];r=3&&(p.depth=arguments[2]),arguments.length>=4&&(p.colors=arguments[3]),f(r)?p.showHidden=r:r&&t._extend(p,r),g(p.showHidden)&&(p.showHidden=!1),g(p.depth)&&(p.depth=2),g(p.colors)&&(p.colors=!1),g(p.customInspect)&&(p.customInspect=!0),p.colors&&(p.stylize=a),c(p,e,p.depth)}function a(e,t){var r=n.styles[t];return r?"["+n.colors[r][0]+"m"+e+"["+n.colors[r][1]+"m":e}function l(e,t){return e}function c(e,r,p){if(e.customInspect&&r&&v(r.inspect)&&r.inspect!==t.inspect&&(!r.constructor||r.constructor.prototype!==r)){var o=r.inspect(p,e);return S(o)||(o=c(e,o,p)),o}var i=function(e,t){if(g(t))return e.stylize("undefined","undefined");if(S(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}if(_(t))return e.stylize(""+t,"number");if(f(t))return e.stylize(""+t,"boolean");if(d(t))return e.stylize("null","null")}(e,r);if(i)return i;var s=Object.keys(r),n=function(e){var t={};return e.forEach(function(e,r){t[e]=!0}),t}(s);if(e.showHidden&&(s=Object.getOwnPropertyNames(r)),b(r)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return u(r);if(0===s.length){if(v(r)){var a=r.name?": "+r.name:"";return e.stylize("[Function"+a+"]","special")}if(w(r))return e.stylize(RegExp.prototype.toString.call(r),"regexp");if(m(r))return e.stylize(Date.prototype.toString.call(r),"date");if(b(r))return u(r)}var l,E="",L=!1,T=["{","}"];(y(r)&&(L=!0,T=["[","]"]),v(r))&&(E=" [Function"+(r.name?": "+r.name:"")+"]");return w(r)&&(E=" "+RegExp.prototype.toString.call(r)),m(r)&&(E=" "+Date.prototype.toUTCString.call(r)),b(r)&&(E=" "+u(r)),0!==s.length||L&&0!=r.length?p<0?w(r)?e.stylize(RegExp.prototype.toString.call(r),"regexp"):e.stylize("[Object]","special"):(e.seen.push(r),l=L?function(e,t,r,p,o){for(var i=[],s=0,n=t.length;s=0&&0,e+t.replace(/\u001b\[\d\d?m/g,"").length+1},0)>60)return r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1];return r[0]+t+" "+e.join(", ")+" "+r[1]}(l,E,T)):T[0]+E+T[1]}function u(e){return"["+Error.prototype.toString.call(e)+"]"}function h(e,t,r,p,o,i){var s,n,a;if((a=Object.getOwnPropertyDescriptor(t,o)||{value:t[o]}).get?n=a.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):a.set&&(n=e.stylize("[Setter]","special")),M(p,o)||(s="["+o+"]"),n||(e.seen.indexOf(a.value)<0?(n=d(r)?c(e,a.value,null):c(e,a.value,r-1)).indexOf("\n")>-1&&(n=i?n.split("\n").map(function(e){return" "+e}).join("\n").substr(2):"\n"+n.split("\n").map(function(e){return" "+e}).join("\n")):n=e.stylize("[Circular]","special")),g(s)){if(i&&o.match(/^\d+$/))return n;(s=JSON.stringify(""+o)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=e.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=e.stylize(s,"string"))}return s+": "+n}function y(e){return Array.isArray(e)}function f(e){return"boolean"==typeof e}function d(e){return null===e}function _(e){return"number"==typeof e}function S(e){return"string"==typeof e}function g(e){return void 0===e}function w(e){return E(e)&&"[object RegExp]"===L(e)}function E(e){return"object"==typeof e&&null!==e}function m(e){return E(e)&&"[object Date]"===L(e)}function b(e){return E(e)&&("[object Error]"===L(e)||e instanceof Error)}function v(e){return"function"==typeof e}function L(e){return Object.prototype.toString.call(e)}function T(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(g(i)&&(i=p.env.NODE_DEBUG||""),e=e.toUpperCase(),!s[e])if(new RegExp("\\b"+e+"\\b","i").test(i)){var r=p.pid;s[e]=function(){var p=t.format.apply(t,arguments);console.error("%s %d: %s",e,r,p)}}else s[e]=function(){};return s[e]},t.inspect=n,n.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},n.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.isArray=y,t.isBoolean=f,t.isNull=d,t.isNullOrUndefined=function(e){return null==e},t.isNumber=_,t.isString=S,t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=g,t.isRegExp=w,t.isObject=E,t.isDate=m,t.isError=b,t.isFunction=v,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=r(43);var I=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function M(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){var e,r;console.log("%s - %s",(e=new Date,r=[T(e.getHours()),T(e.getMinutes()),T(e.getSeconds())].join(":"),[e.getDate(),I[e.getMonth()],r].join(" ")),t.format.apply(t,arguments))},t.inherits=r(6),t._extend=function(e,t){if(!t||!E(t))return e;for(var r=Object.keys(t),p=r.length;p--;)e[r[p]]=t[r[p]];return e}}).call(this,r(5),r(9))},function(e,t){e.exports=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},function(e,t,r){var p;!function(r){o(Math.pow(36,5)),o(Math.pow(16,7)),o(Math.pow(10,9)),o(Math.pow(2,30)),o(36),o(16),o(10),o(2);function o(e,t){return this instanceof o?(this._low=0,this._high=0,this.remainder=null,void 0===t?s.call(this,e):"string"==typeof e?n.call(this,e,t):void i.call(this,e,t)):new o(e,t)}function i(e,t){return this._low=0|e,this._high=0|t,this}function s(e){return this._low=65535&e,this._high=e>>>16,this}function n(e,t){var r=parseInt(e,t||10);return this._low=65535&r,this._high=r>>>16,this}o.prototype.fromBits=i,o.prototype.fromNumber=s,o.prototype.fromString=n,o.prototype.toNumber=function(){return 65536*this._high+this._low},o.prototype.toString=function(e){return this.toNumber().toString(e||10)},o.prototype.add=function(e){var t=this._low+e._low,r=t>>>16;return r+=this._high+e._high,this._low=65535&t,this._high=65535&r,this},o.prototype.subtract=function(e){return this.add(e.clone().negate())},o.prototype.multiply=function(e){var t,r,p=this._high,o=this._low,i=e._high,s=e._low;return t=(r=o*s)>>>16,t+=p*s,t&=65535,t+=o*i,this._low=65535&r,this._high=65535&t,this},o.prototype.div=function(e){if(0==e._low&&0==e._high)throw Error("division by zero");if(0==e._high&&1==e._low)return this.remainder=new o(0),this;if(e.gt(this))return this.remainder=this.clone(),this._low=0,this._high=0,this;if(this.eq(e))return this.remainder=new o(0),this._low=1,this._high=0,this;for(var t=e.clone(),r=-1;!this.lt(t);)t.shiftLeft(1,!0),r++;for(this.remainder=this.clone(),this._low=0,this._high=0;r>=0;r--)t.shiftRight(1),this.remainder.lt(t)||(this.remainder.subtract(t),r>=16?this._high|=1<>>16)&65535,this},o.prototype.equals=o.prototype.eq=function(e){return this._low==e._low&&this._high==e._high},o.prototype.greaterThan=o.prototype.gt=function(e){return this._high>e._high||!(this._highe._low},o.prototype.lessThan=o.prototype.lt=function(e){return this._highe._high)&&this._low16?(this._low=this._high>>e-16,this._high=0):16==e?(this._low=this._high,this._high=0):(this._low=this._low>>e|this._high<<16-e&65535,this._high>>=e),this},o.prototype.shiftLeft=o.prototype.shiftl=function(e,t){return e>16?(this._high=this._low<>16-e,this._low=this._low<>>32-e,this._low=65535&t,this._high=t>>>16,this},o.prototype.rotateRight=o.prototype.rotr=function(e){var t=this._high<<16|this._low;return t=t>>>e|t<<32-e,this._low=65535&t,this._high=t>>>16,this},o.prototype.clone=function(){return new o(this._low,this._high)},void 0===(p=function(){return o}.apply(t,[]))||(e.exports=p)}()},function(e,t,r){var p;!function(r){var o={16:s(Math.pow(16,5)),10:s(Math.pow(10,5)),2:s(Math.pow(2,5))},i={16:s(16),10:s(10),2:s(2)};function s(e,t,r,p){return this instanceof s?(this.remainder=null,"string"==typeof e?l.call(this,e,t):void 0===t?a.call(this,e):void n.apply(this,arguments)):new s(e,t,r,p)}function n(e,t,r,p){return void 0===r?(this._a00=65535&e,this._a16=e>>>16,this._a32=65535&t,this._a48=t>>>16,this):(this._a00=0|e,this._a16=0|t,this._a32=0|r,this._a48=0|p,this)}function a(e){return this._a00=65535&e,this._a16=e>>>16,this._a32=0,this._a48=0,this}function l(e,t){t=t||10,this._a00=0,this._a16=0,this._a32=0,this._a48=0;for(var r=o[t]||new s(Math.pow(t,5)),p=0,i=e.length;p=0&&(r.div(t),p[o]=r.remainder.toNumber().toString(e),r.gt(t));o--);return p[o-1]=r.toNumber().toString(e),p.join("")},s.prototype.add=function(e){var t=this._a00+e._a00,r=t>>>16,p=(r+=this._a16+e._a16)>>>16,o=(p+=this._a32+e._a32)>>>16;return o+=this._a48+e._a48,this._a00=65535&t,this._a16=65535&r,this._a32=65535&p,this._a48=65535&o,this},s.prototype.subtract=function(e){return this.add(e.clone().negate())},s.prototype.multiply=function(e){var t=this._a00,r=this._a16,p=this._a32,o=this._a48,i=e._a00,s=e._a16,n=e._a32,a=t*i,l=a>>>16,c=(l+=t*s)>>>16;l&=65535,c+=(l+=r*i)>>>16;var u=(c+=t*n)>>>16;return c&=65535,u+=(c+=r*s)>>>16,c&=65535,u+=(c+=p*i)>>>16,u+=t*e._a48,u&=65535,u+=r*n,u&=65535,u+=p*s,u&=65535,u+=o*i,this._a00=65535&a,this._a16=65535&l,this._a32=65535&c,this._a48=65535&u,this},s.prototype.div=function(e){if(0==e._a16&&0==e._a32&&0==e._a48){if(0==e._a00)throw Error("division by zero");if(1==e._a00)return this.remainder=new s(0),this}if(e.gt(this))return this.remainder=this.clone(),this._a00=0,this._a16=0,this._a32=0,this._a48=0,this;if(this.eq(e))return this.remainder=new s(0),this._a00=1,this._a16=0,this._a32=0,this._a48=0,this;for(var t=e.clone(),r=-1;!this.lt(t);)t.shiftLeft(1,!0),r++;for(this.remainder=this.clone(),this._a00=0,this._a16=0,this._a32=0,this._a48=0;r>=0;r--)t.shiftRight(1),this.remainder.lt(t)||(this.remainder.subtract(t),r>=48?this._a48|=1<=32?this._a32|=1<=16?this._a16|=1<>>16),this._a16=65535&e,e=(65535&~this._a32)+(e>>>16),this._a32=65535&e,this._a48=~this._a48+(e>>>16)&65535,this},s.prototype.equals=s.prototype.eq=function(e){return this._a48==e._a48&&this._a00==e._a00&&this._a32==e._a32&&this._a16==e._a16},s.prototype.greaterThan=s.prototype.gt=function(e){return this._a48>e._a48||!(this._a48e._a32||!(this._a32e._a16||!(this._a16e._a00))},s.prototype.lessThan=s.prototype.lt=function(e){return this._a48e._a48)&&(this._a32e._a32)&&(this._a16e._a16)&&this._a00=48?(this._a00=this._a48>>e-48,this._a16=0,this._a32=0,this._a48=0):e>=32?(e-=32,this._a00=65535&(this._a32>>e|this._a48<<16-e),this._a16=this._a48>>e&65535,this._a32=0,this._a48=0):e>=16?(e-=16,this._a00=65535&(this._a16>>e|this._a32<<16-e),this._a16=65535&(this._a32>>e|this._a48<<16-e),this._a32=this._a48>>e&65535,this._a48=0):(this._a00=65535&(this._a00>>e|this._a16<<16-e),this._a16=65535&(this._a16>>e|this._a32<<16-e),this._a32=65535&(this._a32>>e|this._a48<<16-e),this._a48=this._a48>>e&65535),this},s.prototype.shiftLeft=s.prototype.shiftl=function(e,t){return(e%=64)>=48?(this._a48=this._a00<=32?(e-=32,this._a48=this._a16<>16-e,this._a32=this._a00<=16?(e-=16,this._a48=this._a32<>16-e,this._a32=65535&(this._a16<>16-e),this._a16=this._a00<>16-e,this._a32=65535&(this._a32<>16-e),this._a16=65535&(this._a16<>16-e),this._a00=this._a00<=32){var t=this._a00;if(this._a00=this._a32,this._a32=t,t=this._a48,this._a48=this._a16,this._a16=t,32==e)return this;e-=32}var r=this._a48<<16|this._a32,p=this._a16<<16|this._a00,o=r<>>32-e,i=p<>>32-e;return this._a00=65535&i,this._a16=i>>>16,this._a32=65535&o,this._a48=o>>>16,this},s.prototype.rotateRight=s.prototype.rotr=function(e){if(0==(e%=64))return this;if(e>=32){var t=this._a00;if(this._a00=this._a32,this._a32=t,t=this._a48,this._a48=this._a16,this._a16=t,32==e)return this;e-=32}var r=this._a48<<16|this._a32,p=this._a16<<16|this._a00,o=r>>>e|p<<32-e,i=p>>>e|r<<32-e;return this._a00=65535&i,this._a16=i>>>16,this._a32=65535&o,this._a48=o>>>16,this},s.prototype.clone=function(){return new s(this._a00,this._a16,this._a32,this._a48)},void 0===(p=function(){return s}.apply(t,[]))||(e.exports=p)}()},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,r(0).GnssSignal),s=r(0).GnssSignalDep,n=(r(0).GPSTime,r(0).CarrierPhase,r(0).GPSTime,r(0).GPSTimeSec,r(0).GPSTimeDep,function(e,t){return p.call(this,e),this.messageType="MSG_ACQ_RESULT",this.fields=t||this.parser.parse(e.payload),this});(n.prototype=Object.create(p.prototype)).messageType="MSG_ACQ_RESULT",n.prototype.msg_type=47,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").floatle("cn0").floatle("cp").floatle("cf").nest("sid",{type:i.prototype.parser}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["cn0","writeFloatLE",4]),n.prototype.fieldSpec.push(["cp","writeFloatLE",4]),n.prototype.fieldSpec.push(["cf","writeFloatLE",4]),n.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_ACQ_RESULT_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_ACQ_RESULT_DEP_C",a.prototype.msg_type=31,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").floatle("cn0").floatle("cp").floatle("cf").nest("sid",{type:s.prototype.parser}),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["cn0","writeFloatLE",4]),a.prototype.fieldSpec.push(["cp","writeFloatLE",4]),a.prototype.fieldSpec.push(["cf","writeFloatLE",4]),a.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]);var l=function(e,t){return p.call(this,e),this.messageType="MSG_ACQ_RESULT_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_ACQ_RESULT_DEP_B",l.prototype.msg_type=20,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").floatle("snr").floatle("cp").floatle("cf").nest("sid",{type:s.prototype.parser}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["snr","writeFloatLE",4]),l.prototype.fieldSpec.push(["cp","writeFloatLE",4]),l.prototype.fieldSpec.push(["cf","writeFloatLE",4]),l.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_ACQ_RESULT_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_ACQ_RESULT_DEP_A",c.prototype.msg_type=21,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").floatle("snr").floatle("cp").floatle("cf").uint8("prn"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["snr","writeFloatLE",4]),c.prototype.fieldSpec.push(["cp","writeFloatLE",4]),c.prototype.fieldSpec.push(["cf","writeFloatLE",4]),c.prototype.fieldSpec.push(["prn","writeUInt8",1]);var u=function(e,t){return p.call(this,e),this.messageType="AcqSvProfile",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="AcqSvProfile",u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint8("job_type").uint8("status").uint16("cn0").uint8("int_time").nest("sid",{type:i.prototype.parser}).uint16("bin_width").uint32("timestamp").uint32("time_spent").int32("cf_min").int32("cf_max").int32("cf").uint32("cp"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["job_type","writeUInt8",1]),u.prototype.fieldSpec.push(["status","writeUInt8",1]),u.prototype.fieldSpec.push(["cn0","writeUInt16LE",2]),u.prototype.fieldSpec.push(["int_time","writeUInt8",1]),u.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),u.prototype.fieldSpec.push(["bin_width","writeUInt16LE",2]),u.prototype.fieldSpec.push(["timestamp","writeUInt32LE",4]),u.prototype.fieldSpec.push(["time_spent","writeUInt32LE",4]),u.prototype.fieldSpec.push(["cf_min","writeInt32LE",4]),u.prototype.fieldSpec.push(["cf_max","writeInt32LE",4]),u.prototype.fieldSpec.push(["cf","writeInt32LE",4]),u.prototype.fieldSpec.push(["cp","writeUInt32LE",4]);var h=function(e,t){return p.call(this,e),this.messageType="AcqSvProfileDep",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="AcqSvProfileDep",h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").uint8("job_type").uint8("status").uint16("cn0").uint8("int_time").nest("sid",{type:s.prototype.parser}).uint16("bin_width").uint32("timestamp").uint32("time_spent").int32("cf_min").int32("cf_max").int32("cf").uint32("cp"),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["job_type","writeUInt8",1]),h.prototype.fieldSpec.push(["status","writeUInt8",1]),h.prototype.fieldSpec.push(["cn0","writeUInt16LE",2]),h.prototype.fieldSpec.push(["int_time","writeUInt8",1]),h.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),h.prototype.fieldSpec.push(["bin_width","writeUInt16LE",2]),h.prototype.fieldSpec.push(["timestamp","writeUInt32LE",4]),h.prototype.fieldSpec.push(["time_spent","writeUInt32LE",4]),h.prototype.fieldSpec.push(["cf_min","writeInt32LE",4]),h.prototype.fieldSpec.push(["cf_max","writeInt32LE",4]),h.prototype.fieldSpec.push(["cf","writeInt32LE",4]),h.prototype.fieldSpec.push(["cp","writeUInt32LE",4]);var y=function(e,t){return p.call(this,e),this.messageType="MSG_ACQ_SV_PROFILE",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="MSG_ACQ_SV_PROFILE",y.prototype.msg_type=46,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").array("acq_sv_profile",{type:u.prototype.parser,readUntil:"eof"}),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["acq_sv_profile","array",u.prototype.fieldSpec,function(){return this.fields.array.length},null]);var f=function(e,t){return p.call(this,e),this.messageType="MSG_ACQ_SV_PROFILE_DEP",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="MSG_ACQ_SV_PROFILE_DEP",f.prototype.msg_type=30,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").array("acq_sv_profile",{type:h.prototype.parser,readUntil:"eof"}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["acq_sv_profile","array",h.prototype.fieldSpec,function(){return this.fields.array.length},null]),e.exports={47:n,MsgAcqResult:n,31:a,MsgAcqResultDepC:a,20:l,MsgAcqResultDepB:l,21:c,MsgAcqResultDepA:c,AcqSvProfile:u,AcqSvProfileDep:h,46:y,MsgAcqSvProfile:y,30:f,MsgAcqSvProfileDep:f}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_BOOTLOADER_HANDSHAKE_REQ",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_BOOTLOADER_HANDSHAKE_REQ",i.prototype.msg_type=179,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little"),i.prototype.fieldSpec=[];var s=function(e,t){return p.call(this,e),this.messageType="MSG_BOOTLOADER_HANDSHAKE_RESP",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_BOOTLOADER_HANDSHAKE_RESP",s.prototype.msg_type=180,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint32("flags").string("version",{greedy:!0}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["flags","writeUInt32LE",4]),s.prototype.fieldSpec.push(["version","string",null]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_BOOTLOADER_JUMP_TO_APP",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_BOOTLOADER_JUMP_TO_APP",n.prototype.msg_type=177,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint8("jump"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["jump","writeUInt8",1]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_NAP_DEVICE_DNA_REQ",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_NAP_DEVICE_DNA_REQ",a.prototype.msg_type=222,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little"),a.prototype.fieldSpec=[];var l=function(e,t){return p.call(this,e),this.messageType="MSG_NAP_DEVICE_DNA_RESP",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_NAP_DEVICE_DNA_RESP",l.prototype.msg_type=221,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").array("dna",{length:8,type:"uint8"}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["dna","array","writeUInt8",function(){return 1},8]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_BOOTLOADER_HANDSHAKE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_BOOTLOADER_HANDSHAKE_DEP_A",c.prototype.msg_type=176,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").array("handshake",{type:"uint8",readUntil:"eof"}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["handshake","array","writeUInt8",function(){return 1},null]),e.exports={179:i,MsgBootloaderHandshakeReq:i,180:s,MsgBootloaderHandshakeResp:s,177:n,MsgBootloaderJumpToApp:n,222:a,MsgNapDeviceDnaReq:a,221:l,MsgNapDeviceDnaResp:l,176:c,MsgBootloaderHandshakeDepA:c}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_EXT_EVENT",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_EXT_EVENT",i.prototype.msg_type=257,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint16("wn").uint32("tow").int32("ns_residual").uint8("flags").uint8("pin"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["wn","writeUInt16LE",2]),i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["ns_residual","writeInt32LE",4]),i.prototype.fieldSpec.push(["flags","writeUInt8",1]),i.prototype.fieldSpec.push(["pin","writeUInt8",1]),e.exports={257:i,MsgExtEvent:i}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_READ_REQ",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_READ_REQ",i.prototype.msg_type=168,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("sequence").uint32("offset").uint8("chunk_size").string("filename",{greedy:!0}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),i.prototype.fieldSpec.push(["offset","writeUInt32LE",4]),i.prototype.fieldSpec.push(["chunk_size","writeUInt8",1]),i.prototype.fieldSpec.push(["filename","string",null]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_READ_RESP",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_READ_RESP",s.prototype.msg_type=163,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint32("sequence").array("contents",{type:"uint8",readUntil:"eof"}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),s.prototype.fieldSpec.push(["contents","array","writeUInt8",function(){return 1},null]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_READ_DIR_REQ",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_READ_DIR_REQ",n.prototype.msg_type=169,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint32("sequence").uint32("offset").string("dirname",{greedy:!0}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),n.prototype.fieldSpec.push(["offset","writeUInt32LE",4]),n.prototype.fieldSpec.push(["dirname","string",null]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_READ_DIR_RESP",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_READ_DIR_RESP",a.prototype.msg_type=170,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint32("sequence").array("contents",{type:"uint8",readUntil:"eof"}),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),a.prototype.fieldSpec.push(["contents","array","writeUInt8",function(){return 1},null]);var l=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_REMOVE",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_REMOVE",l.prototype.msg_type=172,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").string("filename",{greedy:!0}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["filename","string",null]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_WRITE_REQ",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_WRITE_REQ",c.prototype.msg_type=173,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("sequence").uint32("offset").string("filename",{greedy:!0}).array("data",{type:"uint8",readUntil:"eof"}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),c.prototype.fieldSpec.push(["offset","writeUInt32LE",4]),c.prototype.fieldSpec.push(["filename","string",null]),c.prototype.fieldSpec.push(["data","array","writeUInt8",function(){return 1},null]);var u=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_WRITE_RESP",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_WRITE_RESP",u.prototype.msg_type=171,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("sequence"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]);var h=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_CONFIG_REQ",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_CONFIG_REQ",h.prototype.msg_type=4097,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").uint32("sequence"),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]);var y=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_CONFIG_RESP",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_CONFIG_RESP",y.prototype.msg_type=4098,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").uint32("sequence").uint32("window_size").uint32("batch_size").uint32("fileio_version"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),y.prototype.fieldSpec.push(["window_size","writeUInt32LE",4]),y.prototype.fieldSpec.push(["batch_size","writeUInt32LE",4]),y.prototype.fieldSpec.push(["fileio_version","writeUInt32LE",4]),e.exports={168:i,MsgFileioReadReq:i,163:s,MsgFileioReadResp:s,169:n,MsgFileioReadDirReq:n,170:a,MsgFileioReadDirResp:a,172:l,MsgFileioRemove:l,173:c,MsgFileioWriteReq:c,171:u,MsgFileioWriteResp:u,4097:h,MsgFileioConfigReq:h,4098:y,MsgFileioConfigResp:y}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_FLASH_PROGRAM",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_FLASH_PROGRAM",i.prototype.msg_type=230,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("target").array("addr_start",{length:3,type:"uint8"}).uint8("addr_len").array("data",{type:"uint8",length:"addr_len"}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["target","writeUInt8",1]),i.prototype.fieldSpec.push(["addr_start","array","writeUInt8",function(){return 1},3]),i.prototype.fieldSpec.push(["addr_len","writeUInt8",1]),i.prototype.fieldSpec.push(["data","array","writeUInt8",function(){return 1},"addr_len"]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_FLASH_DONE",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_FLASH_DONE",s.prototype.msg_type=224,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("response"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["response","writeUInt8",1]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_FLASH_READ_REQ",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_FLASH_READ_REQ",n.prototype.msg_type=231,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint8("target").array("addr_start",{length:3,type:"uint8"}).uint8("addr_len"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["target","writeUInt8",1]),n.prototype.fieldSpec.push(["addr_start","array","writeUInt8",function(){return 1},3]),n.prototype.fieldSpec.push(["addr_len","writeUInt8",1]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_FLASH_READ_RESP",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_FLASH_READ_RESP",a.prototype.msg_type=225,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint8("target").array("addr_start",{length:3,type:"uint8"}).uint8("addr_len"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["target","writeUInt8",1]),a.prototype.fieldSpec.push(["addr_start","array","writeUInt8",function(){return 1},3]),a.prototype.fieldSpec.push(["addr_len","writeUInt8",1]);var l=function(e,t){return p.call(this,e),this.messageType="MSG_FLASH_ERASE",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_FLASH_ERASE",l.prototype.msg_type=226,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint8("target").uint32("sector_num"),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["target","writeUInt8",1]),l.prototype.fieldSpec.push(["sector_num","writeUInt32LE",4]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_STM_FLASH_LOCK_SECTOR",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_STM_FLASH_LOCK_SECTOR",c.prototype.msg_type=227,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("sector"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["sector","writeUInt32LE",4]);var u=function(e,t){return p.call(this,e),this.messageType="MSG_STM_FLASH_UNLOCK_SECTOR",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_STM_FLASH_UNLOCK_SECTOR",u.prototype.msg_type=228,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("sector"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["sector","writeUInt32LE",4]);var h=function(e,t){return p.call(this,e),this.messageType="MSG_STM_UNIQUE_ID_REQ",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_STM_UNIQUE_ID_REQ",h.prototype.msg_type=232,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little"),h.prototype.fieldSpec=[];var y=function(e,t){return p.call(this,e),this.messageType="MSG_STM_UNIQUE_ID_RESP",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="MSG_STM_UNIQUE_ID_RESP",y.prototype.msg_type=229,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").array("stm_id",{length:12,type:"uint8"}),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["stm_id","array","writeUInt8",function(){return 1},12]);var f=function(e,t){return p.call(this,e),this.messageType="MSG_M25_FLASH_WRITE_STATUS",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="MSG_M25_FLASH_WRITE_STATUS",f.prototype.msg_type=243,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").array("status",{length:1,type:"uint8"}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["status","array","writeUInt8",function(){return 1},1]),e.exports={230:i,MsgFlashProgram:i,224:s,MsgFlashDone:s,231:n,MsgFlashReadReq:n,225:a,MsgFlashReadResp:a,226:l,MsgFlashErase:l,227:c,MsgStmFlashLockSector:c,228:u,MsgStmFlashUnlockSector:u,232:h,MsgStmUniqueIdReq:h,229:y,MsgStmUniqueIdResp:y,243:f,MsgM25FlashWriteStatus:f}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_IMU_RAW",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_IMU_RAW",i.prototype.msg_type=2304,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("tow").uint8("tow_f").int16("acc_x").int16("acc_y").int16("acc_z").int16("gyr_x").int16("gyr_y").int16("gyr_z"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["tow_f","writeUInt8",1]),i.prototype.fieldSpec.push(["acc_x","writeInt16LE",2]),i.prototype.fieldSpec.push(["acc_y","writeInt16LE",2]),i.prototype.fieldSpec.push(["acc_z","writeInt16LE",2]),i.prototype.fieldSpec.push(["gyr_x","writeInt16LE",2]),i.prototype.fieldSpec.push(["gyr_y","writeInt16LE",2]),i.prototype.fieldSpec.push(["gyr_z","writeInt16LE",2]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_IMU_AUX",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_IMU_AUX",s.prototype.msg_type=2305,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("imu_type").int16("temp").uint8("imu_conf"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["imu_type","writeUInt8",1]),s.prototype.fieldSpec.push(["temp","writeInt16LE",2]),s.prototype.fieldSpec.push(["imu_conf","writeUInt8",1]),e.exports={2304:i,MsgImuRaw:i,2305:s,MsgImuAux:s}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_CPU_STATE",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_CPU_STATE",i.prototype.msg_type=32512,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint8("pcpu").string("tname",{length:15}).string("cmdline",{greedy:!0}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["index","writeUInt8",1]),i.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),i.prototype.fieldSpec.push(["pcpu","writeUInt8",1]),i.prototype.fieldSpec.push(["tname","string",15]),i.prototype.fieldSpec.push(["cmdline","string",null]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_MEM_STATE",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_MEM_STATE",s.prototype.msg_type=32513,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint8("pmem").string("tname",{length:15}).string("cmdline",{greedy:!0}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["index","writeUInt8",1]),s.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),s.prototype.fieldSpec.push(["pmem","writeUInt8",1]),s.prototype.fieldSpec.push(["tname","string",15]),s.prototype.fieldSpec.push(["cmdline","string",null]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_SYS_STATE",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_SYS_STATE",n.prototype.msg_type=32514,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint16("mem_total").uint8("pcpu").uint8("pmem").uint16("procs_starting").uint16("procs_stopping").uint16("pid_count"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["mem_total","writeUInt16LE",2]),n.prototype.fieldSpec.push(["pcpu","writeUInt8",1]),n.prototype.fieldSpec.push(["pmem","writeUInt8",1]),n.prototype.fieldSpec.push(["procs_starting","writeUInt16LE",2]),n.prototype.fieldSpec.push(["procs_stopping","writeUInt16LE",2]),n.prototype.fieldSpec.push(["pid_count","writeUInt16LE",2]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_PROCESS_SOCKET_COUNTS",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_PROCESS_SOCKET_COUNTS",a.prototype.msg_type=32515,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint16("socket_count").uint16("socket_types").uint16("socket_states").string("cmdline",{greedy:!0}),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["index","writeUInt8",1]),a.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),a.prototype.fieldSpec.push(["socket_count","writeUInt16LE",2]),a.prototype.fieldSpec.push(["socket_types","writeUInt16LE",2]),a.prototype.fieldSpec.push(["socket_states","writeUInt16LE",2]),a.prototype.fieldSpec.push(["cmdline","string",null]);var l=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_PROCESS_SOCKET_QUEUES",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_PROCESS_SOCKET_QUEUES",l.prototype.msg_type=32516,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint16("recv_queued").uint16("send_queued").uint16("socket_types").uint16("socket_states").string("address_of_largest",{length:64}).string("cmdline",{greedy:!0}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["index","writeUInt8",1]),l.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),l.prototype.fieldSpec.push(["recv_queued","writeUInt16LE",2]),l.prototype.fieldSpec.push(["send_queued","writeUInt16LE",2]),l.prototype.fieldSpec.push(["socket_types","writeUInt16LE",2]),l.prototype.fieldSpec.push(["socket_states","writeUInt16LE",2]),l.prototype.fieldSpec.push(["address_of_largest","string",64]),l.prototype.fieldSpec.push(["cmdline","string",null]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_SOCKET_USAGE",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_SOCKET_USAGE",c.prototype.msg_type=32517,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("avg_queue_depth").uint32("max_queue_depth").array("socket_state_counts",{length:16,type:"uint16le"}).array("socket_type_counts",{length:16,type:"uint16le"}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["avg_queue_depth","writeUInt32LE",4]),c.prototype.fieldSpec.push(["max_queue_depth","writeUInt32LE",4]),c.prototype.fieldSpec.push(["socket_state_counts","array","writeUInt16LE",function(){return 2},16]),c.prototype.fieldSpec.push(["socket_type_counts","array","writeUInt16LE",function(){return 2},16]);var u=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_PROCESS_FD_COUNT",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_PROCESS_FD_COUNT",u.prototype.msg_type=32518,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint16("fd_count").string("cmdline",{greedy:!0}),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["index","writeUInt8",1]),u.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),u.prototype.fieldSpec.push(["fd_count","writeUInt16LE",2]),u.prototype.fieldSpec.push(["cmdline","string",null]);var h=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_PROCESS_FD_SUMMARY",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_PROCESS_FD_SUMMARY",h.prototype.msg_type=32519,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").uint32("sys_fd_count").string("most_opened",{greedy:!0}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["sys_fd_count","writeUInt32LE",4]),h.prototype.fieldSpec.push(["most_opened","string",null]),e.exports={32512:i,MsgLinuxCpuState:i,32513:s,MsgLinuxMemState:s,32514:n,MsgLinuxSysState:n,32515:a,MsgLinuxProcessSocketCounts:a,32516:l,MsgLinuxProcessSocketQueues:l,32517:c,MsgLinuxSocketUsage:c,32518:u,MsgLinuxProcessFdCount:u,32519:h,MsgLinuxProcessFdSummary:h}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_LOG",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_LOG",i.prototype.msg_type=1025,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("level").string("text",{greedy:!0}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["level","writeUInt8",1]),i.prototype.fieldSpec.push(["text","string",null]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_FWD",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_FWD",s.prototype.msg_type=1026,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("source").uint8("protocol").string("fwd_payload",{greedy:!0}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["source","writeUInt8",1]),s.prototype.fieldSpec.push(["protocol","writeUInt8",1]),s.prototype.fieldSpec.push(["fwd_payload","string",null]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_PRINT_DEP",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_PRINT_DEP",n.prototype.msg_type=16,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").string("text",{greedy:!0}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["text","string",null]),e.exports={1025:i,MsgLog:i,1026:s,MsgFwd:s,16:n,MsgPrintDep:n}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_MAG_RAW",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_MAG_RAW",i.prototype.msg_type=2306,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("tow").uint8("tow_f").int16("mag_x").int16("mag_y").int16("mag_z"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["tow_f","writeUInt8",1]),i.prototype.fieldSpec.push(["mag_x","writeInt16LE",2]),i.prototype.fieldSpec.push(["mag_y","writeInt16LE",2]),i.prototype.fieldSpec.push(["mag_z","writeInt16LE",2]),e.exports={2306:i,MsgMagRaw:i}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_GPS_TIME",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_GPS_TIME",i.prototype.msg_type=258,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint16("wn").uint32("tow").int32("ns_residual").uint8("flags"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["wn","writeUInt16LE",2]),i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["ns_residual","writeInt32LE",4]),i.prototype.fieldSpec.push(["flags","writeUInt8",1]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_UTC_TIME",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_UTC_TIME",s.prototype.msg_type=259,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("flags").uint32("tow").uint16("year").uint8("month").uint8("day").uint8("hours").uint8("minutes").uint8("seconds").uint32("ns"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["flags","writeUInt8",1]),s.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),s.prototype.fieldSpec.push(["year","writeUInt16LE",2]),s.prototype.fieldSpec.push(["month","writeUInt8",1]),s.prototype.fieldSpec.push(["day","writeUInt8",1]),s.prototype.fieldSpec.push(["hours","writeUInt8",1]),s.prototype.fieldSpec.push(["minutes","writeUInt8",1]),s.prototype.fieldSpec.push(["seconds","writeUInt8",1]),s.prototype.fieldSpec.push(["ns","writeUInt32LE",4]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_DOPS",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_DOPS",n.prototype.msg_type=520,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint32("tow").uint16("gdop").uint16("pdop").uint16("tdop").uint16("hdop").uint16("vdop").uint8("flags"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),n.prototype.fieldSpec.push(["gdop","writeUInt16LE",2]),n.prototype.fieldSpec.push(["pdop","writeUInt16LE",2]),n.prototype.fieldSpec.push(["tdop","writeUInt16LE",2]),n.prototype.fieldSpec.push(["hdop","writeUInt16LE",2]),n.prototype.fieldSpec.push(["vdop","writeUInt16LE",2]),n.prototype.fieldSpec.push(["flags","writeUInt8",1]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_POS_ECEF",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_POS_ECEF",a.prototype.msg_type=521,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint32("tow").doublele("x").doublele("y").doublele("z").uint16("accuracy").uint8("n_sats").uint8("flags"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),a.prototype.fieldSpec.push(["x","writeDoubleLE",8]),a.prototype.fieldSpec.push(["y","writeDoubleLE",8]),a.prototype.fieldSpec.push(["z","writeDoubleLE",8]),a.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),a.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),a.prototype.fieldSpec.push(["flags","writeUInt8",1]);var l=function(e,t){return p.call(this,e),this.messageType="MSG_POS_ECEF_COV",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_POS_ECEF_COV",l.prototype.msg_type=532,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint32("tow").doublele("x").doublele("y").doublele("z").floatle("cov_x_x").floatle("cov_x_y").floatle("cov_x_z").floatle("cov_y_y").floatle("cov_y_z").floatle("cov_z_z").uint8("n_sats").uint8("flags"),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),l.prototype.fieldSpec.push(["x","writeDoubleLE",8]),l.prototype.fieldSpec.push(["y","writeDoubleLE",8]),l.prototype.fieldSpec.push(["z","writeDoubleLE",8]),l.prototype.fieldSpec.push(["cov_x_x","writeFloatLE",4]),l.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),l.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),l.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),l.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),l.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),l.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),l.prototype.fieldSpec.push(["flags","writeUInt8",1]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_POS_LLH",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_POS_LLH",c.prototype.msg_type=522,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("tow").doublele("lat").doublele("lon").doublele("height").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),c.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),c.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),c.prototype.fieldSpec.push(["height","writeDoubleLE",8]),c.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),c.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),c.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),c.prototype.fieldSpec.push(["flags","writeUInt8",1]);var u=function(e,t){return p.call(this,e),this.messageType="MSG_POS_LLH_COV",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_POS_LLH_COV",u.prototype.msg_type=529,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("tow").doublele("lat").doublele("lon").doublele("height").floatle("cov_n_n").floatle("cov_n_e").floatle("cov_n_d").floatle("cov_e_e").floatle("cov_e_d").floatle("cov_d_d").uint8("n_sats").uint8("flags"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),u.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),u.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),u.prototype.fieldSpec.push(["height","writeDoubleLE",8]),u.prototype.fieldSpec.push(["cov_n_n","writeFloatLE",4]),u.prototype.fieldSpec.push(["cov_n_e","writeFloatLE",4]),u.prototype.fieldSpec.push(["cov_n_d","writeFloatLE",4]),u.prototype.fieldSpec.push(["cov_e_e","writeFloatLE",4]),u.prototype.fieldSpec.push(["cov_e_d","writeFloatLE",4]),u.prototype.fieldSpec.push(["cov_d_d","writeFloatLE",4]),u.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),u.prototype.fieldSpec.push(["flags","writeUInt8",1]);var h=function(e,t){return p.call(this,e),this.messageType="MSG_BASELINE_ECEF",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_BASELINE_ECEF",h.prototype.msg_type=523,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint16("accuracy").uint8("n_sats").uint8("flags"),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),h.prototype.fieldSpec.push(["x","writeInt32LE",4]),h.prototype.fieldSpec.push(["y","writeInt32LE",4]),h.prototype.fieldSpec.push(["z","writeInt32LE",4]),h.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),h.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),h.prototype.fieldSpec.push(["flags","writeUInt8",1]);var y=function(e,t){return p.call(this,e),this.messageType="MSG_BASELINE_NED",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="MSG_BASELINE_NED",y.prototype.msg_type=524,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),y.prototype.fieldSpec.push(["n","writeInt32LE",4]),y.prototype.fieldSpec.push(["e","writeInt32LE",4]),y.prototype.fieldSpec.push(["d","writeInt32LE",4]),y.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),y.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),y.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),y.prototype.fieldSpec.push(["flags","writeUInt8",1]);var f=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_ECEF",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="MSG_VEL_ECEF",f.prototype.msg_type=525,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint16("accuracy").uint8("n_sats").uint8("flags"),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),f.prototype.fieldSpec.push(["x","writeInt32LE",4]),f.prototype.fieldSpec.push(["y","writeInt32LE",4]),f.prototype.fieldSpec.push(["z","writeInt32LE",4]),f.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),f.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),f.prototype.fieldSpec.push(["flags","writeUInt8",1]);var d=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_ECEF_COV",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(p.prototype)).messageType="MSG_VEL_ECEF_COV",d.prototype.msg_type=533,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").floatle("cov_x_x").floatle("cov_x_y").floatle("cov_x_z").floatle("cov_y_y").floatle("cov_y_z").floatle("cov_z_z").uint8("n_sats").uint8("flags"),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),d.prototype.fieldSpec.push(["x","writeInt32LE",4]),d.prototype.fieldSpec.push(["y","writeInt32LE",4]),d.prototype.fieldSpec.push(["z","writeInt32LE",4]),d.prototype.fieldSpec.push(["cov_x_x","writeFloatLE",4]),d.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),d.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),d.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),d.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),d.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),d.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),d.prototype.fieldSpec.push(["flags","writeUInt8",1]);var _=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_NED",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(p.prototype)).messageType="MSG_VEL_NED",_.prototype.msg_type=526,_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),_.prototype.fieldSpec=[],_.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),_.prototype.fieldSpec.push(["n","writeInt32LE",4]),_.prototype.fieldSpec.push(["e","writeInt32LE",4]),_.prototype.fieldSpec.push(["d","writeInt32LE",4]),_.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),_.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),_.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),_.prototype.fieldSpec.push(["flags","writeUInt8",1]);var S=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_NED_COV",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(p.prototype)).messageType="MSG_VEL_NED_COV",S.prototype.msg_type=530,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").floatle("cov_n_n").floatle("cov_n_e").floatle("cov_n_d").floatle("cov_e_e").floatle("cov_e_d").floatle("cov_d_d").uint8("n_sats").uint8("flags"),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),S.prototype.fieldSpec.push(["n","writeInt32LE",4]),S.prototype.fieldSpec.push(["e","writeInt32LE",4]),S.prototype.fieldSpec.push(["d","writeInt32LE",4]),S.prototype.fieldSpec.push(["cov_n_n","writeFloatLE",4]),S.prototype.fieldSpec.push(["cov_n_e","writeFloatLE",4]),S.prototype.fieldSpec.push(["cov_n_d","writeFloatLE",4]),S.prototype.fieldSpec.push(["cov_e_e","writeFloatLE",4]),S.prototype.fieldSpec.push(["cov_e_d","writeFloatLE",4]),S.prototype.fieldSpec.push(["cov_d_d","writeFloatLE",4]),S.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),S.prototype.fieldSpec.push(["flags","writeUInt8",1]);var g=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_BODY",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(p.prototype)).messageType="MSG_VEL_BODY",g.prototype.msg_type=531,g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").floatle("cov_x_x").floatle("cov_x_y").floatle("cov_x_z").floatle("cov_y_y").floatle("cov_y_z").floatle("cov_z_z").uint8("n_sats").uint8("flags"),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),g.prototype.fieldSpec.push(["x","writeInt32LE",4]),g.prototype.fieldSpec.push(["y","writeInt32LE",4]),g.prototype.fieldSpec.push(["z","writeInt32LE",4]),g.prototype.fieldSpec.push(["cov_x_x","writeFloatLE",4]),g.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),g.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),g.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),g.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),g.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),g.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),g.prototype.fieldSpec.push(["flags","writeUInt8",1]);var w=function(e,t){return p.call(this,e),this.messageType="MSG_AGE_CORRECTIONS",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(p.prototype)).messageType="MSG_AGE_CORRECTIONS",w.prototype.msg_type=528,w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").uint32("tow").uint16("age"),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),w.prototype.fieldSpec.push(["age","writeUInt16LE",2]);var E=function(e,t){return p.call(this,e),this.messageType="MSG_GPS_TIME_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(p.prototype)).messageType="MSG_GPS_TIME_DEP_A",E.prototype.msg_type=256,E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").uint16("wn").uint32("tow").int32("ns_residual").uint8("flags"),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["wn","writeUInt16LE",2]),E.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),E.prototype.fieldSpec.push(["ns_residual","writeInt32LE",4]),E.prototype.fieldSpec.push(["flags","writeUInt8",1]);var m=function(e,t){return p.call(this,e),this.messageType="MSG_DOPS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(p.prototype)).messageType="MSG_DOPS_DEP_A",m.prototype.msg_type=518,m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").uint32("tow").uint16("gdop").uint16("pdop").uint16("tdop").uint16("hdop").uint16("vdop"),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),m.prototype.fieldSpec.push(["gdop","writeUInt16LE",2]),m.prototype.fieldSpec.push(["pdop","writeUInt16LE",2]),m.prototype.fieldSpec.push(["tdop","writeUInt16LE",2]),m.prototype.fieldSpec.push(["hdop","writeUInt16LE",2]),m.prototype.fieldSpec.push(["vdop","writeUInt16LE",2]);var b=function(e,t){return p.call(this,e),this.messageType="MSG_POS_ECEF_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(p.prototype)).messageType="MSG_POS_ECEF_DEP_A",b.prototype.msg_type=512,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").uint32("tow").doublele("x").doublele("y").doublele("z").uint16("accuracy").uint8("n_sats").uint8("flags"),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),b.prototype.fieldSpec.push(["x","writeDoubleLE",8]),b.prototype.fieldSpec.push(["y","writeDoubleLE",8]),b.prototype.fieldSpec.push(["z","writeDoubleLE",8]),b.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),b.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),b.prototype.fieldSpec.push(["flags","writeUInt8",1]);var v=function(e,t){return p.call(this,e),this.messageType="MSG_POS_LLH_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(p.prototype)).messageType="MSG_POS_LLH_DEP_A",v.prototype.msg_type=513,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").uint32("tow").doublele("lat").doublele("lon").doublele("height").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),v.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),v.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),v.prototype.fieldSpec.push(["height","writeDoubleLE",8]),v.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),v.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),v.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),v.prototype.fieldSpec.push(["flags","writeUInt8",1]);var L=function(e,t){return p.call(this,e),this.messageType="MSG_BASELINE_ECEF_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(p.prototype)).messageType="MSG_BASELINE_ECEF_DEP_A",L.prototype.msg_type=514,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint16("accuracy").uint8("n_sats").uint8("flags"),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),L.prototype.fieldSpec.push(["x","writeInt32LE",4]),L.prototype.fieldSpec.push(["y","writeInt32LE",4]),L.prototype.fieldSpec.push(["z","writeInt32LE",4]),L.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),L.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),L.prototype.fieldSpec.push(["flags","writeUInt8",1]);var T=function(e,t){return p.call(this,e),this.messageType="MSG_BASELINE_NED_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(p.prototype)).messageType="MSG_BASELINE_NED_DEP_A",T.prototype.msg_type=515,T.prototype.constructor=T,T.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),T.prototype.fieldSpec=[],T.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),T.prototype.fieldSpec.push(["n","writeInt32LE",4]),T.prototype.fieldSpec.push(["e","writeInt32LE",4]),T.prototype.fieldSpec.push(["d","writeInt32LE",4]),T.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),T.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),T.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),T.prototype.fieldSpec.push(["flags","writeUInt8",1]);var I=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_ECEF_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(p.prototype)).messageType="MSG_VEL_ECEF_DEP_A",I.prototype.msg_type=516,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint16("accuracy").uint8("n_sats").uint8("flags"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),I.prototype.fieldSpec.push(["x","writeInt32LE",4]),I.prototype.fieldSpec.push(["y","writeInt32LE",4]),I.prototype.fieldSpec.push(["z","writeInt32LE",4]),I.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),I.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),I.prototype.fieldSpec.push(["flags","writeUInt8",1]);var M=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_NED_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(p.prototype)).messageType="MSG_VEL_NED_DEP_A",M.prototype.msg_type=517,M.prototype.constructor=M,M.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),M.prototype.fieldSpec=[],M.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),M.prototype.fieldSpec.push(["n","writeInt32LE",4]),M.prototype.fieldSpec.push(["e","writeInt32LE",4]),M.prototype.fieldSpec.push(["d","writeInt32LE",4]),M.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),M.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),M.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),M.prototype.fieldSpec.push(["flags","writeUInt8",1]);var U=function(e,t){return p.call(this,e),this.messageType="MSG_BASELINE_HEADING_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(p.prototype)).messageType="MSG_BASELINE_HEADING_DEP_A",U.prototype.msg_type=519,U.prototype.constructor=U,U.prototype.parser=(new o).endianess("little").uint32("tow").uint32("heading").uint8("n_sats").uint8("flags"),U.prototype.fieldSpec=[],U.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),U.prototype.fieldSpec.push(["heading","writeUInt32LE",4]),U.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),U.prototype.fieldSpec.push(["flags","writeUInt8",1]),e.exports={258:i,MsgGpsTime:i,259:s,MsgUtcTime:s,520:n,MsgDops:n,521:a,MsgPosEcef:a,532:l,MsgPosEcefCov:l,522:c,MsgPosLlh:c,529:u,MsgPosLlhCov:u,523:h,MsgBaselineEcef:h,524:y,MsgBaselineNed:y,525:f,MsgVelEcef:f,533:d,MsgVelEcefCov:d,526:_,MsgVelNed:_,530:S,MsgVelNedCov:S,531:g,MsgVelBody:g,528:w,MsgAgeCorrections:w,256:E,MsgGpsTimeDepA:E,518:m,MsgDopsDepA:m,512:b,MsgPosEcefDepA:b,513:v,MsgPosLlhDepA:v,514:L,MsgBaselineEcefDepA:L,515:T,MsgBaselineNedDepA:T,516:I,MsgVelEcefDepA:I,517:M,MsgVelNedDepA:M,519:U,MsgBaselineHeadingDepA:U}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,r(0).GnssSignal),s=(r(0).GnssSignalDep,r(0).GPSTime,r(0).CarrierPhase,r(0).GPSTime,r(0).GPSTimeSec,r(0).GPSTimeDep,function(e,t){return p.call(this,e),this.messageType="MSG_NDB_EVENT",this.fields=t||this.parser.parse(e.payload),this});(s.prototype=Object.create(p.prototype)).messageType="MSG_NDB_EVENT",s.prototype.msg_type=1024,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint64("recv_time").uint8("event").uint8("object_type").uint8("result").uint8("data_source").nest("object_sid",{type:i.prototype.parser}).nest("src_sid",{type:i.prototype.parser}).uint16("original_sender"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["recv_time","writeUInt64LE",8]),s.prototype.fieldSpec.push(["event","writeUInt8",1]),s.prototype.fieldSpec.push(["object_type","writeUInt8",1]),s.prototype.fieldSpec.push(["result","writeUInt8",1]),s.prototype.fieldSpec.push(["data_source","writeUInt8",1]),s.prototype.fieldSpec.push(["object_sid",i.prototype.fieldSpec]),s.prototype.fieldSpec.push(["src_sid",i.prototype.fieldSpec]),s.prototype.fieldSpec.push(["original_sender","writeUInt16LE",2]),e.exports={1024:s,MsgNdbEvent:s}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,r(0).GnssSignal),s=r(0).GnssSignalDep,n=r(0).GPSTime,a=r(0).CarrierPhase,l=(n=r(0).GPSTime,r(0).GPSTimeSec),c=r(0).GPSTimeDep,u=function(e,t){return p.call(this,e),this.messageType="ObservationHeader",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="ObservationHeader",u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").nest("t",{type:n.prototype.parser}).uint8("n_obs"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["t",n.prototype.fieldSpec]),u.prototype.fieldSpec.push(["n_obs","writeUInt8",1]);var h=function(e,t){return p.call(this,e),this.messageType="Doppler",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="Doppler",h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").int16("i").uint8("f"),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["i","writeInt16LE",2]),h.prototype.fieldSpec.push(["f","writeUInt8",1]);var y=function(e,t){return p.call(this,e),this.messageType="PackedObsContent",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="PackedObsContent",y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:a.prototype.parser}).nest("D",{type:h.prototype.parser}).uint8("cn0").uint8("lock").uint8("flags").nest("sid",{type:i.prototype.parser}),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["P","writeUInt32LE",4]),y.prototype.fieldSpec.push(["L",a.prototype.fieldSpec]),y.prototype.fieldSpec.push(["D",h.prototype.fieldSpec]),y.prototype.fieldSpec.push(["cn0","writeUInt8",1]),y.prototype.fieldSpec.push(["lock","writeUInt8",1]),y.prototype.fieldSpec.push(["flags","writeUInt8",1]),y.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]);var f=function(e,t){return p.call(this,e),this.messageType="PackedOsrContent",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="PackedOsrContent",f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:a.prototype.parser}).uint8("lock").uint8("flags").nest("sid",{type:i.prototype.parser}).uint16("iono_std").uint16("tropo_std").uint16("range_std"),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["P","writeUInt32LE",4]),f.prototype.fieldSpec.push(["L",a.prototype.fieldSpec]),f.prototype.fieldSpec.push(["lock","writeUInt8",1]),f.prototype.fieldSpec.push(["flags","writeUInt8",1]),f.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),f.prototype.fieldSpec.push(["iono_std","writeUInt16LE",2]),f.prototype.fieldSpec.push(["tropo_std","writeUInt16LE",2]),f.prototype.fieldSpec.push(["range_std","writeUInt16LE",2]);var d=function(e,t){return p.call(this,e),this.messageType="MSG_OBS",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(p.prototype)).messageType="MSG_OBS",d.prototype.msg_type=74,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").nest("header",{type:u.prototype.parser}).array("obs",{type:y.prototype.parser,readUntil:"eof"}),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["header",u.prototype.fieldSpec]),d.prototype.fieldSpec.push(["obs","array",y.prototype.fieldSpec,function(){return this.fields.array.length},null]);var _=function(e,t){return p.call(this,e),this.messageType="MSG_BASE_POS_LLH",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(p.prototype)).messageType="MSG_BASE_POS_LLH",_.prototype.msg_type=68,_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little").doublele("lat").doublele("lon").doublele("height"),_.prototype.fieldSpec=[],_.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),_.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),_.prototype.fieldSpec.push(["height","writeDoubleLE",8]);var S=function(e,t){return p.call(this,e),this.messageType="MSG_BASE_POS_ECEF",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(p.prototype)).messageType="MSG_BASE_POS_ECEF",S.prototype.msg_type=72,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").doublele("x").doublele("y").doublele("z"),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["x","writeDoubleLE",8]),S.prototype.fieldSpec.push(["y","writeDoubleLE",8]),S.prototype.fieldSpec.push(["z","writeDoubleLE",8]);var g=function(e,t){return p.call(this,e),this.messageType="EphemerisCommonContent",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(p.prototype)).messageType="EphemerisCommonContent",g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").nest("sid",{type:i.prototype.parser}).nest("toe",{type:l.prototype.parser}).floatle("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),g.prototype.fieldSpec.push(["toe",l.prototype.fieldSpec]),g.prototype.fieldSpec.push(["ura","writeFloatLE",4]),g.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),g.prototype.fieldSpec.push(["valid","writeUInt8",1]),g.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);var w=function(e,t){return p.call(this,e),this.messageType="EphemerisCommonContentDepB",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(p.prototype)).messageType="EphemerisCommonContentDepB",w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").nest("sid",{type:i.prototype.parser}).nest("toe",{type:l.prototype.parser}).doublele("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),w.prototype.fieldSpec.push(["toe",l.prototype.fieldSpec]),w.prototype.fieldSpec.push(["ura","writeDoubleLE",8]),w.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),w.prototype.fieldSpec.push(["valid","writeUInt8",1]),w.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);var E=function(e,t){return p.call(this,e),this.messageType="EphemerisCommonContentDepA",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(p.prototype)).messageType="EphemerisCommonContentDepA",E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").nest("sid",{type:s.prototype.parser}).nest("toe",{type:c.prototype.parser}).doublele("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),E.prototype.fieldSpec.push(["toe",c.prototype.fieldSpec]),E.prototype.fieldSpec.push(["ura","writeDoubleLE",8]),E.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),E.prototype.fieldSpec.push(["valid","writeUInt8",1]),E.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);var m=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GPS_DEP_E",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GPS_DEP_E",m.prototype.msg_type=129,m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").nest("common",{type:E.prototype.parser}).doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").nest("toc",{type:c.prototype.parser}).uint8("iode").uint16("iodc"),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["common",E.prototype.fieldSpec]),m.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),m.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),m.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),m.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),m.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),m.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),m.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),m.prototype.fieldSpec.push(["w","writeDoubleLE",8]),m.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),m.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),m.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),m.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),m.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),m.prototype.fieldSpec.push(["toc",c.prototype.fieldSpec]),m.prototype.fieldSpec.push(["iode","writeUInt8",1]),m.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var b=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GPS_DEP_F",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GPS_DEP_F",b.prototype.msg_type=134,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").nest("common",{type:w.prototype.parser}).doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").nest("toc",{type:l.prototype.parser}).uint8("iode").uint16("iodc"),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["common",w.prototype.fieldSpec]),b.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),b.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),b.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),b.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),b.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),b.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),b.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),b.prototype.fieldSpec.push(["w","writeDoubleLE",8]),b.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),b.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),b.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),b.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),b.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),b.prototype.fieldSpec.push(["toc",l.prototype.fieldSpec]),b.prototype.fieldSpec.push(["iode","writeUInt8",1]),b.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var v=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GPS",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GPS",v.prototype.msg_type=138,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("tgd").floatle("c_rs").floatle("c_rc").floatle("c_uc").floatle("c_us").floatle("c_ic").floatle("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").floatle("af0").floatle("af1").floatle("af2").nest("toc",{type:l.prototype.parser}).uint8("iode").uint16("iodc"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),v.prototype.fieldSpec.push(["tgd","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_rs","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_rc","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_uc","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_us","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_ic","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_is","writeFloatLE",4]),v.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),v.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),v.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),v.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),v.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),v.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),v.prototype.fieldSpec.push(["w","writeDoubleLE",8]),v.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),v.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),v.prototype.fieldSpec.push(["af0","writeFloatLE",4]),v.prototype.fieldSpec.push(["af1","writeFloatLE",4]),v.prototype.fieldSpec.push(["af2","writeFloatLE",4]),v.prototype.fieldSpec.push(["toc",l.prototype.fieldSpec]),v.prototype.fieldSpec.push(["iode","writeUInt8",1]),v.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var L=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_BDS",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_BDS",L.prototype.msg_type=137,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("tgd1").floatle("tgd2").floatle("c_rs").floatle("c_rc").floatle("c_uc").floatle("c_us").floatle("c_ic").floatle("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").floatle("af1").floatle("af2").nest("toc",{type:l.prototype.parser}).uint8("iode").uint16("iodc"),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),L.prototype.fieldSpec.push(["tgd1","writeFloatLE",4]),L.prototype.fieldSpec.push(["tgd2","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_rs","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_rc","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_uc","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_us","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_ic","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_is","writeFloatLE",4]),L.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),L.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),L.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),L.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),L.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),L.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),L.prototype.fieldSpec.push(["w","writeDoubleLE",8]),L.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),L.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),L.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),L.prototype.fieldSpec.push(["af1","writeFloatLE",4]),L.prototype.fieldSpec.push(["af2","writeFloatLE",4]),L.prototype.fieldSpec.push(["toc",l.prototype.fieldSpec]),L.prototype.fieldSpec.push(["iode","writeUInt8",1]),L.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var T=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GAL_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GAL_DEP_A",T.prototype.msg_type=149,T.prototype.constructor=T,T.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("bgd_e1e5a").floatle("bgd_e1e5b").floatle("c_rs").floatle("c_rc").floatle("c_uc").floatle("c_us").floatle("c_ic").floatle("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").floatle("af2").nest("toc",{type:l.prototype.parser}).uint16("iode").uint16("iodc"),T.prototype.fieldSpec=[],T.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),T.prototype.fieldSpec.push(["bgd_e1e5a","writeFloatLE",4]),T.prototype.fieldSpec.push(["bgd_e1e5b","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_rs","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_rc","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_uc","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_us","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_ic","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_is","writeFloatLE",4]),T.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),T.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),T.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),T.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),T.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),T.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),T.prototype.fieldSpec.push(["w","writeDoubleLE",8]),T.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),T.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),T.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),T.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),T.prototype.fieldSpec.push(["af2","writeFloatLE",4]),T.prototype.fieldSpec.push(["toc",l.prototype.fieldSpec]),T.prototype.fieldSpec.push(["iode","writeUInt16LE",2]),T.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var I=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GAL",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GAL",I.prototype.msg_type=141,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("bgd_e1e5a").floatle("bgd_e1e5b").floatle("c_rs").floatle("c_rc").floatle("c_uc").floatle("c_us").floatle("c_ic").floatle("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").floatle("af2").nest("toc",{type:l.prototype.parser}).uint16("iode").uint16("iodc").uint8("source"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),I.prototype.fieldSpec.push(["bgd_e1e5a","writeFloatLE",4]),I.prototype.fieldSpec.push(["bgd_e1e5b","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_rs","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_rc","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_uc","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_us","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_ic","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_is","writeFloatLE",4]),I.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),I.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),I.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),I.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),I.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),I.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),I.prototype.fieldSpec.push(["w","writeDoubleLE",8]),I.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),I.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),I.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),I.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),I.prototype.fieldSpec.push(["af2","writeFloatLE",4]),I.prototype.fieldSpec.push(["toc",l.prototype.fieldSpec]),I.prototype.fieldSpec.push(["iode","writeUInt16LE",2]),I.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]),I.prototype.fieldSpec.push(["source","writeUInt8",1]);var M=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_SBAS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_SBAS_DEP_A",M.prototype.msg_type=130,M.prototype.constructor=M,M.prototype.parser=(new o).endianess("little").nest("common",{type:E.prototype.parser}).array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}).doublele("a_gf0").doublele("a_gf1"),M.prototype.fieldSpec=[],M.prototype.fieldSpec.push(["common",E.prototype.fieldSpec]),M.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),M.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),M.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]),M.prototype.fieldSpec.push(["a_gf0","writeDoubleLE",8]),M.prototype.fieldSpec.push(["a_gf1","writeDoubleLE",8]);var U=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GLO_DEP_A",U.prototype.msg_type=131,U.prototype.constructor=U,U.prototype.parser=(new o).endianess("little").nest("common",{type:E.prototype.parser}).doublele("gamma").doublele("tau").array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}),U.prototype.fieldSpec=[],U.prototype.fieldSpec.push(["common",E.prototype.fieldSpec]),U.prototype.fieldSpec.push(["gamma","writeDoubleLE",8]),U.prototype.fieldSpec.push(["tau","writeDoubleLE",8]),U.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),U.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),U.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]);var D=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_SBAS_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_SBAS_DEP_B",D.prototype.msg_type=132,D.prototype.constructor=D,D.prototype.parser=(new o).endianess("little").nest("common",{type:w.prototype.parser}).array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}).doublele("a_gf0").doublele("a_gf1"),D.prototype.fieldSpec=[],D.prototype.fieldSpec.push(["common",w.prototype.fieldSpec]),D.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),D.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),D.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]),D.prototype.fieldSpec.push(["a_gf0","writeDoubleLE",8]),D.prototype.fieldSpec.push(["a_gf1","writeDoubleLE",8]);var O=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_SBAS",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_SBAS",O.prototype.msg_type=140,O.prototype.constructor=O,O.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"floatle"}).array("acc",{length:3,type:"floatle"}).floatle("a_gf0").floatle("a_gf1"),O.prototype.fieldSpec=[],O.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),O.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),O.prototype.fieldSpec.push(["vel","array","writeFloatLE",function(){return 4},3]),O.prototype.fieldSpec.push(["acc","array","writeFloatLE",function(){return 4},3]),O.prototype.fieldSpec.push(["a_gf0","writeFloatLE",4]),O.prototype.fieldSpec.push(["a_gf1","writeFloatLE",4]);var A=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GLO_DEP_B",A.prototype.msg_type=133,A.prototype.constructor=A,A.prototype.parser=(new o).endianess("little").nest("common",{type:w.prototype.parser}).doublele("gamma").doublele("tau").array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}),A.prototype.fieldSpec=[],A.prototype.fieldSpec.push(["common",w.prototype.fieldSpec]),A.prototype.fieldSpec.push(["gamma","writeDoubleLE",8]),A.prototype.fieldSpec.push(["tau","writeDoubleLE",8]),A.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),A.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),A.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]);var G=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GLO_DEP_C",G.prototype.msg_type=135,G.prototype.constructor=G,G.prototype.parser=(new o).endianess("little").nest("common",{type:w.prototype.parser}).doublele("gamma").doublele("tau").doublele("d_tau").array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}).uint8("fcn"),G.prototype.fieldSpec=[],G.prototype.fieldSpec.push(["common",w.prototype.fieldSpec]),G.prototype.fieldSpec.push(["gamma","writeDoubleLE",8]),G.prototype.fieldSpec.push(["tau","writeDoubleLE",8]),G.prototype.fieldSpec.push(["d_tau","writeDoubleLE",8]),G.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),G.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),G.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]),G.prototype.fieldSpec.push(["fcn","writeUInt8",1]);var R=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_D",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GLO_DEP_D",R.prototype.msg_type=136,R.prototype.constructor=R,R.prototype.parser=(new o).endianess("little").nest("common",{type:w.prototype.parser}).doublele("gamma").doublele("tau").doublele("d_tau").array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}).uint8("fcn").uint8("iod"),R.prototype.fieldSpec=[],R.prototype.fieldSpec.push(["common",w.prototype.fieldSpec]),R.prototype.fieldSpec.push(["gamma","writeDoubleLE",8]),R.prototype.fieldSpec.push(["tau","writeDoubleLE",8]),R.prototype.fieldSpec.push(["d_tau","writeDoubleLE",8]),R.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),R.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),R.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]),R.prototype.fieldSpec.push(["fcn","writeUInt8",1]),R.prototype.fieldSpec.push(["iod","writeUInt8",1]);var P=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GLO",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GLO",P.prototype.msg_type=139,P.prototype.constructor=P,P.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("gamma").floatle("tau").floatle("d_tau").array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"floatle"}).uint8("fcn").uint8("iod"),P.prototype.fieldSpec=[],P.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),P.prototype.fieldSpec.push(["gamma","writeFloatLE",4]),P.prototype.fieldSpec.push(["tau","writeFloatLE",4]),P.prototype.fieldSpec.push(["d_tau","writeFloatLE",4]),P.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),P.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),P.prototype.fieldSpec.push(["acc","array","writeFloatLE",function(){return 4},3]),P.prototype.fieldSpec.push(["fcn","writeUInt8",1]),P.prototype.fieldSpec.push(["iod","writeUInt8",1]);var C=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_D",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_DEP_D",C.prototype.msg_type=128,C.prototype.constructor=C,C.prototype.parser=(new o).endianess("little").doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").doublele("toe_tow").uint16("toe_wn").doublele("toc_tow").uint16("toc_wn").uint8("valid").uint8("healthy").nest("sid",{type:s.prototype.parser}).uint8("iode").uint16("iodc").uint32("reserved"),C.prototype.fieldSpec=[],C.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),C.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),C.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),C.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),C.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),C.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),C.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),C.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),C.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),C.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),C.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),C.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),C.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),C.prototype.fieldSpec.push(["w","writeDoubleLE",8]),C.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),C.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),C.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),C.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),C.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),C.prototype.fieldSpec.push(["toe_tow","writeDoubleLE",8]),C.prototype.fieldSpec.push(["toe_wn","writeUInt16LE",2]),C.prototype.fieldSpec.push(["toc_tow","writeDoubleLE",8]),C.prototype.fieldSpec.push(["toc_wn","writeUInt16LE",2]),C.prototype.fieldSpec.push(["valid","writeUInt8",1]),C.prototype.fieldSpec.push(["healthy","writeUInt8",1]),C.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),C.prototype.fieldSpec.push(["iode","writeUInt8",1]),C.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]),C.prototype.fieldSpec.push(["reserved","writeUInt32LE",4]);var j=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_DEP_A",j.prototype.msg_type=26,j.prototype.constructor=j,j.prototype.parser=(new o).endianess("little").doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").doublele("toe_tow").uint16("toe_wn").doublele("toc_tow").uint16("toc_wn").uint8("valid").uint8("healthy").uint8("prn"),j.prototype.fieldSpec=[],j.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),j.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),j.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),j.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),j.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),j.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),j.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),j.prototype.fieldSpec.push(["w","writeDoubleLE",8]),j.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),j.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),j.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),j.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),j.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),j.prototype.fieldSpec.push(["toe_tow","writeDoubleLE",8]),j.prototype.fieldSpec.push(["toe_wn","writeUInt16LE",2]),j.prototype.fieldSpec.push(["toc_tow","writeDoubleLE",8]),j.prototype.fieldSpec.push(["toc_wn","writeUInt16LE",2]),j.prototype.fieldSpec.push(["valid","writeUInt8",1]),j.prototype.fieldSpec.push(["healthy","writeUInt8",1]),j.prototype.fieldSpec.push(["prn","writeUInt8",1]);var x=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(x.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_DEP_B",x.prototype.msg_type=70,x.prototype.constructor=x,x.prototype.parser=(new o).endianess("little").doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").doublele("toe_tow").uint16("toe_wn").doublele("toc_tow").uint16("toc_wn").uint8("valid").uint8("healthy").uint8("prn").uint8("iode"),x.prototype.fieldSpec=[],x.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),x.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),x.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),x.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),x.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),x.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),x.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),x.prototype.fieldSpec.push(["w","writeDoubleLE",8]),x.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),x.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),x.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),x.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),x.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),x.prototype.fieldSpec.push(["toe_tow","writeDoubleLE",8]),x.prototype.fieldSpec.push(["toe_wn","writeUInt16LE",2]),x.prototype.fieldSpec.push(["toc_tow","writeDoubleLE",8]),x.prototype.fieldSpec.push(["toc_wn","writeUInt16LE",2]),x.prototype.fieldSpec.push(["valid","writeUInt8",1]),x.prototype.fieldSpec.push(["healthy","writeUInt8",1]),x.prototype.fieldSpec.push(["prn","writeUInt8",1]),x.prototype.fieldSpec.push(["iode","writeUInt8",1]);var N=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(N.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_DEP_C",N.prototype.msg_type=71,N.prototype.constructor=N,N.prototype.parser=(new o).endianess("little").doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").doublele("toe_tow").uint16("toe_wn").doublele("toc_tow").uint16("toc_wn").uint8("valid").uint8("healthy").nest("sid",{type:s.prototype.parser}).uint8("iode").uint16("iodc").uint32("reserved"),N.prototype.fieldSpec=[],N.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),N.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),N.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),N.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),N.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),N.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),N.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),N.prototype.fieldSpec.push(["w","writeDoubleLE",8]),N.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),N.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),N.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),N.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),N.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),N.prototype.fieldSpec.push(["toe_tow","writeDoubleLE",8]),N.prototype.fieldSpec.push(["toe_wn","writeUInt16LE",2]),N.prototype.fieldSpec.push(["toc_tow","writeDoubleLE",8]),N.prototype.fieldSpec.push(["toc_wn","writeUInt16LE",2]),N.prototype.fieldSpec.push(["valid","writeUInt8",1]),N.prototype.fieldSpec.push(["healthy","writeUInt8",1]),N.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),N.prototype.fieldSpec.push(["iode","writeUInt8",1]),N.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]),N.prototype.fieldSpec.push(["reserved","writeUInt32LE",4]);var k=function(e,t){return p.call(this,e),this.messageType="ObservationHeaderDep",this.fields=t||this.parser.parse(e.payload),this};(k.prototype=Object.create(p.prototype)).messageType="ObservationHeaderDep",k.prototype.constructor=k,k.prototype.parser=(new o).endianess("little").nest("t",{type:c.prototype.parser}).uint8("n_obs"),k.prototype.fieldSpec=[],k.prototype.fieldSpec.push(["t",c.prototype.fieldSpec]),k.prototype.fieldSpec.push(["n_obs","writeUInt8",1]);var B=function(e,t){return p.call(this,e),this.messageType="CarrierPhaseDepA",this.fields=t||this.parser.parse(e.payload),this};(B.prototype=Object.create(p.prototype)).messageType="CarrierPhaseDepA",B.prototype.constructor=B,B.prototype.parser=(new o).endianess("little").int32("i").uint8("f"),B.prototype.fieldSpec=[],B.prototype.fieldSpec.push(["i","writeInt32LE",4]),B.prototype.fieldSpec.push(["f","writeUInt8",1]);var F=function(e,t){return p.call(this,e),this.messageType="PackedObsContentDepA",this.fields=t||this.parser.parse(e.payload),this};(F.prototype=Object.create(p.prototype)).messageType="PackedObsContentDepA",F.prototype.constructor=F,F.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:B.prototype.parser}).uint8("cn0").uint16("lock").uint8("prn"),F.prototype.fieldSpec=[],F.prototype.fieldSpec.push(["P","writeUInt32LE",4]),F.prototype.fieldSpec.push(["L",B.prototype.fieldSpec]),F.prototype.fieldSpec.push(["cn0","writeUInt8",1]),F.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),F.prototype.fieldSpec.push(["prn","writeUInt8",1]);var q=function(e,t){return p.call(this,e),this.messageType="PackedObsContentDepB",this.fields=t||this.parser.parse(e.payload),this};(q.prototype=Object.create(p.prototype)).messageType="PackedObsContentDepB",q.prototype.constructor=q,q.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:B.prototype.parser}).uint8("cn0").uint16("lock").nest("sid",{type:s.prototype.parser}),q.prototype.fieldSpec=[],q.prototype.fieldSpec.push(["P","writeUInt32LE",4]),q.prototype.fieldSpec.push(["L",B.prototype.fieldSpec]),q.prototype.fieldSpec.push(["cn0","writeUInt8",1]),q.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),q.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]);var z=function(e,t){return p.call(this,e),this.messageType="PackedObsContentDepC",this.fields=t||this.parser.parse(e.payload),this};(z.prototype=Object.create(p.prototype)).messageType="PackedObsContentDepC",z.prototype.constructor=z,z.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:a.prototype.parser}).uint8("cn0").uint16("lock").nest("sid",{type:s.prototype.parser}),z.prototype.fieldSpec=[],z.prototype.fieldSpec.push(["P","writeUInt32LE",4]),z.prototype.fieldSpec.push(["L",a.prototype.fieldSpec]),z.prototype.fieldSpec.push(["cn0","writeUInt8",1]),z.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),z.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]);var H=function(e,t){return p.call(this,e),this.messageType="MSG_OBS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(H.prototype=Object.create(p.prototype)).messageType="MSG_OBS_DEP_A",H.prototype.msg_type=69,H.prototype.constructor=H,H.prototype.parser=(new o).endianess("little").nest("header",{type:k.prototype.parser}).array("obs",{type:F.prototype.parser,readUntil:"eof"}),H.prototype.fieldSpec=[],H.prototype.fieldSpec.push(["header",k.prototype.fieldSpec]),H.prototype.fieldSpec.push(["obs","array",F.prototype.fieldSpec,function(){return this.fields.array.length},null]);var V=function(e,t){return p.call(this,e),this.messageType="MSG_OBS_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(V.prototype=Object.create(p.prototype)).messageType="MSG_OBS_DEP_B",V.prototype.msg_type=67,V.prototype.constructor=V,V.prototype.parser=(new o).endianess("little").nest("header",{type:k.prototype.parser}).array("obs",{type:q.prototype.parser,readUntil:"eof"}),V.prototype.fieldSpec=[],V.prototype.fieldSpec.push(["header",k.prototype.fieldSpec]),V.prototype.fieldSpec.push(["obs","array",q.prototype.fieldSpec,function(){return this.fields.array.length},null]);var Y=function(e,t){return p.call(this,e),this.messageType="MSG_OBS_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(Y.prototype=Object.create(p.prototype)).messageType="MSG_OBS_DEP_C",Y.prototype.msg_type=73,Y.prototype.constructor=Y,Y.prototype.parser=(new o).endianess("little").nest("header",{type:k.prototype.parser}).array("obs",{type:z.prototype.parser,readUntil:"eof"}),Y.prototype.fieldSpec=[],Y.prototype.fieldSpec.push(["header",k.prototype.fieldSpec]),Y.prototype.fieldSpec.push(["obs","array",z.prototype.fieldSpec,function(){return this.fields.array.length},null]);var W=function(e,t){return p.call(this,e),this.messageType="MSG_IONO",this.fields=t||this.parser.parse(e.payload),this};(W.prototype=Object.create(p.prototype)).messageType="MSG_IONO",W.prototype.msg_type=144,W.prototype.constructor=W,W.prototype.parser=(new o).endianess("little").nest("t_nmct",{type:l.prototype.parser}).doublele("a0").doublele("a1").doublele("a2").doublele("a3").doublele("b0").doublele("b1").doublele("b2").doublele("b3"),W.prototype.fieldSpec=[],W.prototype.fieldSpec.push(["t_nmct",l.prototype.fieldSpec]),W.prototype.fieldSpec.push(["a0","writeDoubleLE",8]),W.prototype.fieldSpec.push(["a1","writeDoubleLE",8]),W.prototype.fieldSpec.push(["a2","writeDoubleLE",8]),W.prototype.fieldSpec.push(["a3","writeDoubleLE",8]),W.prototype.fieldSpec.push(["b0","writeDoubleLE",8]),W.prototype.fieldSpec.push(["b1","writeDoubleLE",8]),W.prototype.fieldSpec.push(["b2","writeDoubleLE",8]),W.prototype.fieldSpec.push(["b3","writeDoubleLE",8]);var Q=function(e,t){return p.call(this,e),this.messageType="MSG_SV_CONFIGURATION_GPS_DEP",this.fields=t||this.parser.parse(e.payload),this};(Q.prototype=Object.create(p.prototype)).messageType="MSG_SV_CONFIGURATION_GPS_DEP",Q.prototype.msg_type=145,Q.prototype.constructor=Q,Q.prototype.parser=(new o).endianess("little").nest("t_nmct",{type:l.prototype.parser}).uint32("l2c_mask"),Q.prototype.fieldSpec=[],Q.prototype.fieldSpec.push(["t_nmct",l.prototype.fieldSpec]),Q.prototype.fieldSpec.push(["l2c_mask","writeUInt32LE",4]);var K=function(e,t){return p.call(this,e),this.messageType="GnssCapb",this.fields=t||this.parser.parse(e.payload),this};(K.prototype=Object.create(p.prototype)).messageType="GnssCapb",K.prototype.constructor=K,K.prototype.parser=(new o).endianess("little").uint64("gps_active").uint64("gps_l2c").uint64("gps_l5").uint32("glo_active").uint32("glo_l2of").uint32("glo_l3").uint64("sbas_active").uint64("sbas_l5").uint64("bds_active").uint64("bds_d2nav").uint64("bds_b2").uint64("bds_b2a").uint32("qzss_active").uint64("gal_active").uint64("gal_e5"),K.prototype.fieldSpec=[],K.prototype.fieldSpec.push(["gps_active","writeUInt64LE",8]),K.prototype.fieldSpec.push(["gps_l2c","writeUInt64LE",8]),K.prototype.fieldSpec.push(["gps_l5","writeUInt64LE",8]),K.prototype.fieldSpec.push(["glo_active","writeUInt32LE",4]),K.prototype.fieldSpec.push(["glo_l2of","writeUInt32LE",4]),K.prototype.fieldSpec.push(["glo_l3","writeUInt32LE",4]),K.prototype.fieldSpec.push(["sbas_active","writeUInt64LE",8]),K.prototype.fieldSpec.push(["sbas_l5","writeUInt64LE",8]),K.prototype.fieldSpec.push(["bds_active","writeUInt64LE",8]),K.prototype.fieldSpec.push(["bds_d2nav","writeUInt64LE",8]),K.prototype.fieldSpec.push(["bds_b2","writeUInt64LE",8]),K.prototype.fieldSpec.push(["bds_b2a","writeUInt64LE",8]),K.prototype.fieldSpec.push(["qzss_active","writeUInt32LE",4]),K.prototype.fieldSpec.push(["gal_active","writeUInt64LE",8]),K.prototype.fieldSpec.push(["gal_e5","writeUInt64LE",8]);var X=function(e,t){return p.call(this,e),this.messageType="MSG_GNSS_CAPB",this.fields=t||this.parser.parse(e.payload),this};(X.prototype=Object.create(p.prototype)).messageType="MSG_GNSS_CAPB",X.prototype.msg_type=150,X.prototype.constructor=X,X.prototype.parser=(new o).endianess("little").nest("t_nmct",{type:l.prototype.parser}).nest("gc",{type:K.prototype.parser}),X.prototype.fieldSpec=[],X.prototype.fieldSpec.push(["t_nmct",l.prototype.fieldSpec]),X.prototype.fieldSpec.push(["gc",K.prototype.fieldSpec]);var J=function(e,t){return p.call(this,e),this.messageType="MSG_GROUP_DELAY_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(J.prototype=Object.create(p.prototype)).messageType="MSG_GROUP_DELAY_DEP_A",J.prototype.msg_type=146,J.prototype.constructor=J,J.prototype.parser=(new o).endianess("little").nest("t_op",{type:c.prototype.parser}).uint8("prn").uint8("valid").int16("tgd").int16("isc_l1ca").int16("isc_l2c"),J.prototype.fieldSpec=[],J.prototype.fieldSpec.push(["t_op",c.prototype.fieldSpec]),J.prototype.fieldSpec.push(["prn","writeUInt8",1]),J.prototype.fieldSpec.push(["valid","writeUInt8",1]),J.prototype.fieldSpec.push(["tgd","writeInt16LE",2]),J.prototype.fieldSpec.push(["isc_l1ca","writeInt16LE",2]),J.prototype.fieldSpec.push(["isc_l2c","writeInt16LE",2]);var $=function(e,t){return p.call(this,e),this.messageType="MSG_GROUP_DELAY_DEP_B",this.fields=t||this.parser.parse(e.payload),this};($.prototype=Object.create(p.prototype)).messageType="MSG_GROUP_DELAY_DEP_B",$.prototype.msg_type=147,$.prototype.constructor=$,$.prototype.parser=(new o).endianess("little").nest("t_op",{type:l.prototype.parser}).nest("sid",{type:s.prototype.parser}).uint8("valid").int16("tgd").int16("isc_l1ca").int16("isc_l2c"),$.prototype.fieldSpec=[],$.prototype.fieldSpec.push(["t_op",l.prototype.fieldSpec]),$.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),$.prototype.fieldSpec.push(["valid","writeUInt8",1]),$.prototype.fieldSpec.push(["tgd","writeInt16LE",2]),$.prototype.fieldSpec.push(["isc_l1ca","writeInt16LE",2]),$.prototype.fieldSpec.push(["isc_l2c","writeInt16LE",2]);var Z=function(e,t){return p.call(this,e),this.messageType="MSG_GROUP_DELAY",this.fields=t||this.parser.parse(e.payload),this};(Z.prototype=Object.create(p.prototype)).messageType="MSG_GROUP_DELAY",Z.prototype.msg_type=148,Z.prototype.constructor=Z,Z.prototype.parser=(new o).endianess("little").nest("t_op",{type:l.prototype.parser}).nest("sid",{type:i.prototype.parser}).uint8("valid").int16("tgd").int16("isc_l1ca").int16("isc_l2c"),Z.prototype.fieldSpec=[],Z.prototype.fieldSpec.push(["t_op",l.prototype.fieldSpec]),Z.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),Z.prototype.fieldSpec.push(["valid","writeUInt8",1]),Z.prototype.fieldSpec.push(["tgd","writeInt16LE",2]),Z.prototype.fieldSpec.push(["isc_l1ca","writeInt16LE",2]),Z.prototype.fieldSpec.push(["isc_l2c","writeInt16LE",2]);var ee=function(e,t){return p.call(this,e),this.messageType="AlmanacCommonContent",this.fields=t||this.parser.parse(e.payload),this};(ee.prototype=Object.create(p.prototype)).messageType="AlmanacCommonContent",ee.prototype.constructor=ee,ee.prototype.parser=(new o).endianess("little").nest("sid",{type:i.prototype.parser}).nest("toa",{type:l.prototype.parser}).doublele("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),ee.prototype.fieldSpec=[],ee.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),ee.prototype.fieldSpec.push(["toa",l.prototype.fieldSpec]),ee.prototype.fieldSpec.push(["ura","writeDoubleLE",8]),ee.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),ee.prototype.fieldSpec.push(["valid","writeUInt8",1]),ee.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);var te=function(e,t){return p.call(this,e),this.messageType="AlmanacCommonContentDep",this.fields=t||this.parser.parse(e.payload),this};(te.prototype=Object.create(p.prototype)).messageType="AlmanacCommonContentDep",te.prototype.constructor=te,te.prototype.parser=(new o).endianess("little").nest("sid",{type:s.prototype.parser}).nest("toa",{type:l.prototype.parser}).doublele("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),te.prototype.fieldSpec=[],te.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),te.prototype.fieldSpec.push(["toa",l.prototype.fieldSpec]),te.prototype.fieldSpec.push(["ura","writeDoubleLE",8]),te.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),te.prototype.fieldSpec.push(["valid","writeUInt8",1]),te.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);var re=function(e,t){return p.call(this,e),this.messageType="MSG_ALMANAC_GPS_DEP",this.fields=t||this.parser.parse(e.payload),this};(re.prototype=Object.create(p.prototype)).messageType="MSG_ALMANAC_GPS_DEP",re.prototype.msg_type=112,re.prototype.constructor=re,re.prototype.parser=(new o).endianess("little").nest("common",{type:te.prototype.parser}).doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("af0").doublele("af1"),re.prototype.fieldSpec=[],re.prototype.fieldSpec.push(["common",te.prototype.fieldSpec]),re.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),re.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),re.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),re.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),re.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),re.prototype.fieldSpec.push(["w","writeDoubleLE",8]),re.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),re.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),re.prototype.fieldSpec.push(["af1","writeDoubleLE",8]);var pe=function(e,t){return p.call(this,e),this.messageType="MSG_ALMANAC_GPS",this.fields=t||this.parser.parse(e.payload),this};(pe.prototype=Object.create(p.prototype)).messageType="MSG_ALMANAC_GPS",pe.prototype.msg_type=114,pe.prototype.constructor=pe,pe.prototype.parser=(new o).endianess("little").nest("common",{type:ee.prototype.parser}).doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("af0").doublele("af1"),pe.prototype.fieldSpec=[],pe.prototype.fieldSpec.push(["common",ee.prototype.fieldSpec]),pe.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["w","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["af1","writeDoubleLE",8]);var oe=function(e,t){return p.call(this,e),this.messageType="MSG_ALMANAC_GLO_DEP",this.fields=t||this.parser.parse(e.payload),this};(oe.prototype=Object.create(p.prototype)).messageType="MSG_ALMANAC_GLO_DEP",oe.prototype.msg_type=113,oe.prototype.constructor=oe,oe.prototype.parser=(new o).endianess("little").nest("common",{type:te.prototype.parser}).doublele("lambda_na").doublele("t_lambda_na").doublele("i").doublele("t").doublele("t_dot").doublele("epsilon").doublele("omega"),oe.prototype.fieldSpec=[],oe.prototype.fieldSpec.push(["common",te.prototype.fieldSpec]),oe.prototype.fieldSpec.push(["lambda_na","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["t_lambda_na","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["i","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["t","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["t_dot","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["epsilon","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["omega","writeDoubleLE",8]);var ie=function(e,t){return p.call(this,e),this.messageType="MSG_ALMANAC_GLO",this.fields=t||this.parser.parse(e.payload),this};(ie.prototype=Object.create(p.prototype)).messageType="MSG_ALMANAC_GLO",ie.prototype.msg_type=115,ie.prototype.constructor=ie,ie.prototype.parser=(new o).endianess("little").nest("common",{type:ee.prototype.parser}).doublele("lambda_na").doublele("t_lambda_na").doublele("i").doublele("t").doublele("t_dot").doublele("epsilon").doublele("omega"),ie.prototype.fieldSpec=[],ie.prototype.fieldSpec.push(["common",ee.prototype.fieldSpec]),ie.prototype.fieldSpec.push(["lambda_na","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["t_lambda_na","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["i","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["t","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["t_dot","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["epsilon","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["omega","writeDoubleLE",8]);var se=function(e,t){return p.call(this,e),this.messageType="MSG_GLO_BIASES",this.fields=t||this.parser.parse(e.payload),this};(se.prototype=Object.create(p.prototype)).messageType="MSG_GLO_BIASES",se.prototype.msg_type=117,se.prototype.constructor=se,se.prototype.parser=(new o).endianess("little").uint8("mask").int16("l1ca_bias").int16("l1p_bias").int16("l2ca_bias").int16("l2p_bias"),se.prototype.fieldSpec=[],se.prototype.fieldSpec.push(["mask","writeUInt8",1]),se.prototype.fieldSpec.push(["l1ca_bias","writeInt16LE",2]),se.prototype.fieldSpec.push(["l1p_bias","writeInt16LE",2]),se.prototype.fieldSpec.push(["l2ca_bias","writeInt16LE",2]),se.prototype.fieldSpec.push(["l2p_bias","writeInt16LE",2]);var ne=function(e,t){return p.call(this,e),this.messageType="SvAzEl",this.fields=t||this.parser.parse(e.payload),this};(ne.prototype=Object.create(p.prototype)).messageType="SvAzEl",ne.prototype.constructor=ne,ne.prototype.parser=(new o).endianess("little").nest("sid",{type:i.prototype.parser}).uint8("az").int8("el"),ne.prototype.fieldSpec=[],ne.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),ne.prototype.fieldSpec.push(["az","writeUInt8",1]),ne.prototype.fieldSpec.push(["el","writeInt8",1]);var ae=function(e,t){return p.call(this,e),this.messageType="MSG_SV_AZ_EL",this.fields=t||this.parser.parse(e.payload),this};(ae.prototype=Object.create(p.prototype)).messageType="MSG_SV_AZ_EL",ae.prototype.msg_type=151,ae.prototype.constructor=ae,ae.prototype.parser=(new o).endianess("little").array("azel",{type:ne.prototype.parser,readUntil:"eof"}),ae.prototype.fieldSpec=[],ae.prototype.fieldSpec.push(["azel","array",ne.prototype.fieldSpec,function(){return this.fields.array.length},null]);var le=function(e,t){return p.call(this,e),this.messageType="MSG_OSR",this.fields=t||this.parser.parse(e.payload),this};(le.prototype=Object.create(p.prototype)).messageType="MSG_OSR",le.prototype.msg_type=1600,le.prototype.constructor=le,le.prototype.parser=(new o).endianess("little").nest("header",{type:u.prototype.parser}).array("obs",{type:f.prototype.parser,readUntil:"eof"}),le.prototype.fieldSpec=[],le.prototype.fieldSpec.push(["header",u.prototype.fieldSpec]),le.prototype.fieldSpec.push(["obs","array",f.prototype.fieldSpec,function(){return this.fields.array.length},null]),e.exports={ObservationHeader:u,Doppler:h,PackedObsContent:y,PackedOsrContent:f,74:d,MsgObs:d,68:_,MsgBasePosLlh:_,72:S,MsgBasePosEcef:S,EphemerisCommonContent:g,EphemerisCommonContentDepB:w,EphemerisCommonContentDepA:E,129:m,MsgEphemerisGpsDepE:m,134:b,MsgEphemerisGpsDepF:b,138:v,MsgEphemerisGps:v,137:L,MsgEphemerisBds:L,149:T,MsgEphemerisGalDepA:T,141:I,MsgEphemerisGal:I,130:M,MsgEphemerisSbasDepA:M,131:U,MsgEphemerisGloDepA:U,132:D,MsgEphemerisSbasDepB:D,140:O,MsgEphemerisSbas:O,133:A,MsgEphemerisGloDepB:A,135:G,MsgEphemerisGloDepC:G,136:R,MsgEphemerisGloDepD:R,139:P,MsgEphemerisGlo:P,128:C,MsgEphemerisDepD:C,26:j,MsgEphemerisDepA:j,70:x,MsgEphemerisDepB:x,71:N,MsgEphemerisDepC:N,ObservationHeaderDep:k,CarrierPhaseDepA:B,PackedObsContentDepA:F,PackedObsContentDepB:q,PackedObsContentDepC:z,69:H,MsgObsDepA:H,67:V,MsgObsDepB:V,73:Y,MsgObsDepC:Y,144:W,MsgIono:W,145:Q,MsgSvConfigurationGpsDep:Q,GnssCapb:K,150:X,MsgGnssCapb:X,146:J,MsgGroupDelayDepA:J,147:$,MsgGroupDelayDepB:$,148:Z,MsgGroupDelay:Z,AlmanacCommonContent:ee,AlmanacCommonContentDep:te,112:re,MsgAlmanacGpsDep:re,114:pe,MsgAlmanacGps:pe,113:oe,MsgAlmanacGloDep:oe,115:ie,MsgAlmanacGlo:ie,117:se,MsgGloBiases:se,SvAzEl:ne,151:ae,MsgSvAzEl:ae,1600:le,MsgOsr:le}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,r(0).GnssSignal),s=r(0).GnssSignalDep,n=r(0).GPSTime,a=(r(0).CarrierPhase,n=r(0).GPSTime,r(0).GPSTimeSec,r(0).GPSTimeDep),l=function(e,t){return p.call(this,e),this.messageType="MSG_ALMANAC",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_ALMANAC",l.prototype.msg_type=105,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little"),l.prototype.fieldSpec=[];var c=function(e,t){return p.call(this,e),this.messageType="MSG_SET_TIME",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_SET_TIME",c.prototype.msg_type=104,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little"),c.prototype.fieldSpec=[];var u=function(e,t){return p.call(this,e),this.messageType="MSG_RESET",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_RESET",u.prototype.msg_type=182,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("flags"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);var h=function(e,t){return p.call(this,e),this.messageType="MSG_RESET_DEP",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_RESET_DEP",h.prototype.msg_type=178,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little"),h.prototype.fieldSpec=[];var y=function(e,t){return p.call(this,e),this.messageType="MSG_CW_RESULTS",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="MSG_CW_RESULTS",y.prototype.msg_type=192,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little"),y.prototype.fieldSpec=[];var f=function(e,t){return p.call(this,e),this.messageType="MSG_CW_START",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="MSG_CW_START",f.prototype.msg_type=193,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little"),f.prototype.fieldSpec=[];var d=function(e,t){return p.call(this,e),this.messageType="MSG_RESET_FILTERS",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(p.prototype)).messageType="MSG_RESET_FILTERS",d.prototype.msg_type=34,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").uint8("filter"),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["filter","writeUInt8",1]);var _=function(e,t){return p.call(this,e),this.messageType="MSG_INIT_BASE",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(p.prototype)).messageType="MSG_INIT_BASE",_.prototype.msg_type=35,_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little"),_.prototype.fieldSpec=[];var S=function(e,t){return p.call(this,e),this.messageType="MSG_THREAD_STATE",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(p.prototype)).messageType="MSG_THREAD_STATE",S.prototype.msg_type=23,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").string("name",{length:20}).uint16("cpu").uint32("stack_free"),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["name","string",20]),S.prototype.fieldSpec.push(["cpu","writeUInt16LE",2]),S.prototype.fieldSpec.push(["stack_free","writeUInt32LE",4]);var g=function(e,t){return p.call(this,e),this.messageType="UARTChannel",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(p.prototype)).messageType="UARTChannel",g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").floatle("tx_throughput").floatle("rx_throughput").uint16("crc_error_count").uint16("io_error_count").uint8("tx_buffer_level").uint8("rx_buffer_level"),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["tx_throughput","writeFloatLE",4]),g.prototype.fieldSpec.push(["rx_throughput","writeFloatLE",4]),g.prototype.fieldSpec.push(["crc_error_count","writeUInt16LE",2]),g.prototype.fieldSpec.push(["io_error_count","writeUInt16LE",2]),g.prototype.fieldSpec.push(["tx_buffer_level","writeUInt8",1]),g.prototype.fieldSpec.push(["rx_buffer_level","writeUInt8",1]);var w=function(e,t){return p.call(this,e),this.messageType="Period",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(p.prototype)).messageType="Period",w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").int32("avg").int32("pmin").int32("pmax").int32("current"),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["avg","writeInt32LE",4]),w.prototype.fieldSpec.push(["pmin","writeInt32LE",4]),w.prototype.fieldSpec.push(["pmax","writeInt32LE",4]),w.prototype.fieldSpec.push(["current","writeInt32LE",4]);var E=function(e,t){return p.call(this,e),this.messageType="Latency",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(p.prototype)).messageType="Latency",E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").int32("avg").int32("lmin").int32("lmax").int32("current"),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["avg","writeInt32LE",4]),E.prototype.fieldSpec.push(["lmin","writeInt32LE",4]),E.prototype.fieldSpec.push(["lmax","writeInt32LE",4]),E.prototype.fieldSpec.push(["current","writeInt32LE",4]);var m=function(e,t){return p.call(this,e),this.messageType="MSG_UART_STATE",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(p.prototype)).messageType="MSG_UART_STATE",m.prototype.msg_type=29,m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").nest("uart_a",{type:g.prototype.parser}).nest("uart_b",{type:g.prototype.parser}).nest("uart_ftdi",{type:g.prototype.parser}).nest("latency",{type:E.prototype.parser}).nest("obs_period",{type:w.prototype.parser}),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["uart_a",g.prototype.fieldSpec]),m.prototype.fieldSpec.push(["uart_b",g.prototype.fieldSpec]),m.prototype.fieldSpec.push(["uart_ftdi",g.prototype.fieldSpec]),m.prototype.fieldSpec.push(["latency",E.prototype.fieldSpec]),m.prototype.fieldSpec.push(["obs_period",w.prototype.fieldSpec]);var b=function(e,t){return p.call(this,e),this.messageType="MSG_UART_STATE_DEPA",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(p.prototype)).messageType="MSG_UART_STATE_DEPA",b.prototype.msg_type=24,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").nest("uart_a",{type:g.prototype.parser}).nest("uart_b",{type:g.prototype.parser}).nest("uart_ftdi",{type:g.prototype.parser}).nest("latency",{type:E.prototype.parser}),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["uart_a",g.prototype.fieldSpec]),b.prototype.fieldSpec.push(["uart_b",g.prototype.fieldSpec]),b.prototype.fieldSpec.push(["uart_ftdi",g.prototype.fieldSpec]),b.prototype.fieldSpec.push(["latency",E.prototype.fieldSpec]);var v=function(e,t){return p.call(this,e),this.messageType="MSG_IAR_STATE",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(p.prototype)).messageType="MSG_IAR_STATE",v.prototype.msg_type=25,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").uint32("num_hyps"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["num_hyps","writeUInt32LE",4]);var L=function(e,t){return p.call(this,e),this.messageType="MSG_MASK_SATELLITE",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(p.prototype)).messageType="MSG_MASK_SATELLITE",L.prototype.msg_type=43,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").uint8("mask").nest("sid",{type:i.prototype.parser}),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["mask","writeUInt8",1]),L.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]);var T=function(e,t){return p.call(this,e),this.messageType="MSG_MASK_SATELLITE_DEP",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(p.prototype)).messageType="MSG_MASK_SATELLITE_DEP",T.prototype.msg_type=27,T.prototype.constructor=T,T.prototype.parser=(new o).endianess("little").uint8("mask").nest("sid",{type:s.prototype.parser}),T.prototype.fieldSpec=[],T.prototype.fieldSpec.push(["mask","writeUInt8",1]),T.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]);var I=function(e,t){return p.call(this,e),this.messageType="MSG_DEVICE_MONITOR",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(p.prototype)).messageType="MSG_DEVICE_MONITOR",I.prototype.msg_type=181,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").int16("dev_vin").int16("cpu_vint").int16("cpu_vaux").int16("cpu_temperature").int16("fe_temperature"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["dev_vin","writeInt16LE",2]),I.prototype.fieldSpec.push(["cpu_vint","writeInt16LE",2]),I.prototype.fieldSpec.push(["cpu_vaux","writeInt16LE",2]),I.prototype.fieldSpec.push(["cpu_temperature","writeInt16LE",2]),I.prototype.fieldSpec.push(["fe_temperature","writeInt16LE",2]);var M=function(e,t){return p.call(this,e),this.messageType="MSG_COMMAND_REQ",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(p.prototype)).messageType="MSG_COMMAND_REQ",M.prototype.msg_type=184,M.prototype.constructor=M,M.prototype.parser=(new o).endianess("little").uint32("sequence").string("command",{greedy:!0}),M.prototype.fieldSpec=[],M.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),M.prototype.fieldSpec.push(["command","string",null]);var U=function(e,t){return p.call(this,e),this.messageType="MSG_COMMAND_RESP",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(p.prototype)).messageType="MSG_COMMAND_RESP",U.prototype.msg_type=185,U.prototype.constructor=U,U.prototype.parser=(new o).endianess("little").uint32("sequence").int32("code"),U.prototype.fieldSpec=[],U.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),U.prototype.fieldSpec.push(["code","writeInt32LE",4]);var D=function(e,t){return p.call(this,e),this.messageType="MSG_COMMAND_OUTPUT",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(p.prototype)).messageType="MSG_COMMAND_OUTPUT",D.prototype.msg_type=188,D.prototype.constructor=D,D.prototype.parser=(new o).endianess("little").uint32("sequence").string("line",{greedy:!0}),D.prototype.fieldSpec=[],D.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),D.prototype.fieldSpec.push(["line","string",null]);var O=function(e,t){return p.call(this,e),this.messageType="MSG_NETWORK_STATE_REQ",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(p.prototype)).messageType="MSG_NETWORK_STATE_REQ",O.prototype.msg_type=186,O.prototype.constructor=O,O.prototype.parser=(new o).endianess("little"),O.prototype.fieldSpec=[];var A=function(e,t){return p.call(this,e),this.messageType="MSG_NETWORK_STATE_RESP",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(p.prototype)).messageType="MSG_NETWORK_STATE_RESP",A.prototype.msg_type=187,A.prototype.constructor=A,A.prototype.parser=(new o).endianess("little").array("ipv4_address",{length:4,type:"uint8"}).uint8("ipv4_mask_size").array("ipv6_address",{length:16,type:"uint8"}).uint8("ipv6_mask_size").uint32("rx_bytes").uint32("tx_bytes").string("interface_name",{length:16}).uint32("flags"),A.prototype.fieldSpec=[],A.prototype.fieldSpec.push(["ipv4_address","array","writeUInt8",function(){return 1},4]),A.prototype.fieldSpec.push(["ipv4_mask_size","writeUInt8",1]),A.prototype.fieldSpec.push(["ipv6_address","array","writeUInt8",function(){return 1},16]),A.prototype.fieldSpec.push(["ipv6_mask_size","writeUInt8",1]),A.prototype.fieldSpec.push(["rx_bytes","writeUInt32LE",4]),A.prototype.fieldSpec.push(["tx_bytes","writeUInt32LE",4]),A.prototype.fieldSpec.push(["interface_name","string",16]),A.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);var G=function(e,t){return p.call(this,e),this.messageType="NetworkUsage",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(p.prototype)).messageType="NetworkUsage",G.prototype.constructor=G,G.prototype.parser=(new o).endianess("little").uint64("duration").uint64("total_bytes").uint32("rx_bytes").uint32("tx_bytes").string("interface_name",{length:16}),G.prototype.fieldSpec=[],G.prototype.fieldSpec.push(["duration","writeUInt64LE",8]),G.prototype.fieldSpec.push(["total_bytes","writeUInt64LE",8]),G.prototype.fieldSpec.push(["rx_bytes","writeUInt32LE",4]),G.prototype.fieldSpec.push(["tx_bytes","writeUInt32LE",4]),G.prototype.fieldSpec.push(["interface_name","string",16]);var R=function(e,t){return p.call(this,e),this.messageType="MSG_NETWORK_BANDWIDTH_USAGE",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(p.prototype)).messageType="MSG_NETWORK_BANDWIDTH_USAGE",R.prototype.msg_type=189,R.prototype.constructor=R,R.prototype.parser=(new o).endianess("little").array("interfaces",{type:G.prototype.parser,readUntil:"eof"}),R.prototype.fieldSpec=[],R.prototype.fieldSpec.push(["interfaces","array",G.prototype.fieldSpec,function(){return this.fields.array.length},null]);var P=function(e,t){return p.call(this,e),this.messageType="MSG_CELL_MODEM_STATUS",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(p.prototype)).messageType="MSG_CELL_MODEM_STATUS",P.prototype.msg_type=190,P.prototype.constructor=P,P.prototype.parser=(new o).endianess("little").int8("signal_strength").floatle("signal_error_rate").array("reserved",{type:"uint8",readUntil:"eof"}),P.prototype.fieldSpec=[],P.prototype.fieldSpec.push(["signal_strength","writeInt8",1]),P.prototype.fieldSpec.push(["signal_error_rate","writeFloatLE",4]),P.prototype.fieldSpec.push(["reserved","array","writeUInt8",function(){return 1},null]);var C=function(e,t){return p.call(this,e),this.messageType="MSG_SPECAN_DEP",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(p.prototype)).messageType="MSG_SPECAN_DEP",C.prototype.msg_type=80,C.prototype.constructor=C,C.prototype.parser=(new o).endianess("little").uint16("channel_tag").nest("t",{type:a.prototype.parser}).floatle("freq_ref").floatle("freq_step").floatle("amplitude_ref").floatle("amplitude_unit").array("amplitude_value",{type:"uint8",readUntil:"eof"}),C.prototype.fieldSpec=[],C.prototype.fieldSpec.push(["channel_tag","writeUInt16LE",2]),C.prototype.fieldSpec.push(["t",a.prototype.fieldSpec]),C.prototype.fieldSpec.push(["freq_ref","writeFloatLE",4]),C.prototype.fieldSpec.push(["freq_step","writeFloatLE",4]),C.prototype.fieldSpec.push(["amplitude_ref","writeFloatLE",4]),C.prototype.fieldSpec.push(["amplitude_unit","writeFloatLE",4]),C.prototype.fieldSpec.push(["amplitude_value","array","writeUInt8",function(){return 1},null]);var j=function(e,t){return p.call(this,e),this.messageType="MSG_SPECAN",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(p.prototype)).messageType="MSG_SPECAN",j.prototype.msg_type=81,j.prototype.constructor=j,j.prototype.parser=(new o).endianess("little").uint16("channel_tag").nest("t",{type:n.prototype.parser}).floatle("freq_ref").floatle("freq_step").floatle("amplitude_ref").floatle("amplitude_unit").array("amplitude_value",{type:"uint8",readUntil:"eof"}),j.prototype.fieldSpec=[],j.prototype.fieldSpec.push(["channel_tag","writeUInt16LE",2]),j.prototype.fieldSpec.push(["t",n.prototype.fieldSpec]),j.prototype.fieldSpec.push(["freq_ref","writeFloatLE",4]),j.prototype.fieldSpec.push(["freq_step","writeFloatLE",4]),j.prototype.fieldSpec.push(["amplitude_ref","writeFloatLE",4]),j.prototype.fieldSpec.push(["amplitude_unit","writeFloatLE",4]),j.prototype.fieldSpec.push(["amplitude_value","array","writeUInt8",function(){return 1},null]);var x=function(e,t){return p.call(this,e),this.messageType="MSG_FRONT_END_GAIN",this.fields=t||this.parser.parse(e.payload),this};(x.prototype=Object.create(p.prototype)).messageType="MSG_FRONT_END_GAIN",x.prototype.msg_type=191,x.prototype.constructor=x,x.prototype.parser=(new o).endianess("little").array("rf_gain",{length:8,type:"int8"}).array("if_gain",{length:8,type:"int8"}),x.prototype.fieldSpec=[],x.prototype.fieldSpec.push(["rf_gain","array","writeInt8",function(){return 1},8]),x.prototype.fieldSpec.push(["if_gain","array","writeInt8",function(){return 1},8]),e.exports={105:l,MsgAlmanac:l,104:c,MsgSetTime:c,182:u,MsgReset:u,178:h,MsgResetDep:h,192:y,MsgCwResults:y,193:f,MsgCwStart:f,34:d,MsgResetFilters:d,35:_,MsgInitBase:_,23:S,MsgThreadState:S,UARTChannel:g,Period:w,Latency:E,29:m,MsgUartState:m,24:b,MsgUartStateDepa:b,25:v,MsgIarState:v,43:L,MsgMaskSatellite:L,27:T,MsgMaskSatelliteDep:T,181:I,MsgDeviceMonitor:I,184:M,MsgCommandReq:M,185:U,MsgCommandResp:U,188:D,MsgCommandOutput:D,186:O,MsgNetworkStateReq:O,187:A,MsgNetworkStateResp:A,NetworkUsage:G,189:R,MsgNetworkBandwidthUsage:R,190:P,MsgCellModemStatus:P,80:C,MsgSpecanDep:C,81:j,MsgSpecan:j,191:x,MsgFrontEndGain:x}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,r(0).GnssSignal),s=(r(0).GnssSignalDep,r(0).GPSTime,r(0).CarrierPhase,r(0).GPSTime,r(0).GPSTimeSec,r(0).GPSTimeDep,function(e,t){return p.call(this,e),this.messageType="MSG_SBAS_RAW",this.fields=t||this.parser.parse(e.payload),this});(s.prototype=Object.create(p.prototype)).messageType="MSG_SBAS_RAW",s.prototype.msg_type=30583,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").nest("sid",{type:i.prototype.parser}).uint32("tow").uint8("message_type").array("data",{length:27,type:"uint8"}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),s.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),s.prototype.fieldSpec.push(["message_type","writeUInt8",1]),s.prototype.fieldSpec.push(["data","array","writeUInt8",function(){return 1},27]),e.exports={30583:s,MsgSbasRaw:s}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_SAVE",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_SAVE",i.prototype.msg_type=161,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little"),i.prototype.fieldSpec=[];var s=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_WRITE",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_WRITE",s.prototype.msg_type=160,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").string("setting",{greedy:!0}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["setting","string",null]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_WRITE_RESP",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_WRITE_RESP",n.prototype.msg_type=175,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint8("status").string("setting",{greedy:!0}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["status","writeUInt8",1]),n.prototype.fieldSpec.push(["setting","string",null]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_READ_REQ",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_READ_REQ",a.prototype.msg_type=164,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").string("setting",{greedy:!0}),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["setting","string",null]);var l=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_READ_RESP",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_READ_RESP",l.prototype.msg_type=165,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").string("setting",{greedy:!0}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["setting","string",null]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_READ_BY_INDEX_REQ",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_READ_BY_INDEX_REQ",c.prototype.msg_type=162,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint16("index"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["index","writeUInt16LE",2]);var u=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_READ_BY_INDEX_RESP",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_READ_BY_INDEX_RESP",u.prototype.msg_type=167,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint16("index").string("setting",{greedy:!0}),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["index","writeUInt16LE",2]),u.prototype.fieldSpec.push(["setting","string",null]);var h=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_READ_BY_INDEX_DONE",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_READ_BY_INDEX_DONE",h.prototype.msg_type=166,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little"),h.prototype.fieldSpec=[];var y=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_REGISTER",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_REGISTER",y.prototype.msg_type=174,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").string("setting",{greedy:!0}),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["setting","string",null]);var f=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_REGISTER_RESP",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_REGISTER_RESP",f.prototype.msg_type=431,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").uint8("status").string("setting",{greedy:!0}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["status","writeUInt8",1]),f.prototype.fieldSpec.push(["setting","string",null]),e.exports={161:i,MsgSettingsSave:i,160:s,MsgSettingsWrite:s,175:n,MsgSettingsWriteResp:n,164:a,MsgSettingsReadReq:a,165:l,MsgSettingsReadResp:l,162:c,MsgSettingsReadByIndexReq:c,167:u,MsgSettingsReadByIndexResp:u,166:h,MsgSettingsReadByIndexDone:h,174:y,MsgSettingsRegister:y,431:f,MsgSettingsRegisterResp:f}},function(e,t,r){var p=r(2),o=r(13).Parser,i=function(e){return p.call(this,e),this.messageType="SBPSignal",this.fields=this.parser.parse(e.payload),this};(i.prototype=Object.create(p.prototype)).constructor=i,i.prototype.parser=(new o).endianess("little").uint16("sat").uint8("band").uint8("constellation"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["sat","writeUInt16LE",2]),i.prototype.fieldSpec.push(["band","writeUInt8",1]),i.prototype.fieldSpec.push(["constellation","writeUInt8",1]),e.exports={SBPSignal:i}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,r(0).GnssSignal),s=(r(0).GnssSignalDep,r(0).GPSTime,r(0).CarrierPhase,r(0).GPSTime,r(0).GPSTimeSec),n=(r(0).GPSTimeDep,function(e,t){return p.call(this,e),this.messageType="CodeBiasesContent",this.fields=t||this.parser.parse(e.payload),this});(n.prototype=Object.create(p.prototype)).messageType="CodeBiasesContent",n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint8("code").int16("value"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["code","writeUInt8",1]),n.prototype.fieldSpec.push(["value","writeInt16LE",2]);var a=function(e,t){return p.call(this,e),this.messageType="PhaseBiasesContent",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="PhaseBiasesContent",a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint8("code").uint8("integer_indicator").uint8("widelane_integer_indicator").uint8("discontinuity_counter").int32("bias"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["code","writeUInt8",1]),a.prototype.fieldSpec.push(["integer_indicator","writeUInt8",1]),a.prototype.fieldSpec.push(["widelane_integer_indicator","writeUInt8",1]),a.prototype.fieldSpec.push(["discontinuity_counter","writeUInt8",1]),a.prototype.fieldSpec.push(["bias","writeInt32LE",4]);var l=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_SSR_ORBIT_CLOCK",l.prototype.msg_type=1501,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).nest("sid",{type:i.prototype.parser}).uint8("update_interval").uint8("iod_ssr").uint32("iod").int32("radial").int32("along").int32("cross").int32("dot_radial").int32("dot_along").int32("dot_cross").int32("c0").int32("c1").int32("c2"),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),l.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),l.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),l.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),l.prototype.fieldSpec.push(["iod","writeUInt32LE",4]),l.prototype.fieldSpec.push(["radial","writeInt32LE",4]),l.prototype.fieldSpec.push(["along","writeInt32LE",4]),l.prototype.fieldSpec.push(["cross","writeInt32LE",4]),l.prototype.fieldSpec.push(["dot_radial","writeInt32LE",4]),l.prototype.fieldSpec.push(["dot_along","writeInt32LE",4]),l.prototype.fieldSpec.push(["dot_cross","writeInt32LE",4]),l.prototype.fieldSpec.push(["c0","writeInt32LE",4]),l.prototype.fieldSpec.push(["c1","writeInt32LE",4]),l.prototype.fieldSpec.push(["c2","writeInt32LE",4]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_SSR_ORBIT_CLOCK_DEP_A",c.prototype.msg_type=1500,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).nest("sid",{type:i.prototype.parser}).uint8("update_interval").uint8("iod_ssr").uint8("iod").int32("radial").int32("along").int32("cross").int32("dot_radial").int32("dot_along").int32("dot_cross").int32("c0").int32("c1").int32("c2"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),c.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),c.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),c.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),c.prototype.fieldSpec.push(["iod","writeUInt8",1]),c.prototype.fieldSpec.push(["radial","writeInt32LE",4]),c.prototype.fieldSpec.push(["along","writeInt32LE",4]),c.prototype.fieldSpec.push(["cross","writeInt32LE",4]),c.prototype.fieldSpec.push(["dot_radial","writeInt32LE",4]),c.prototype.fieldSpec.push(["dot_along","writeInt32LE",4]),c.prototype.fieldSpec.push(["dot_cross","writeInt32LE",4]),c.prototype.fieldSpec.push(["c0","writeInt32LE",4]),c.prototype.fieldSpec.push(["c1","writeInt32LE",4]),c.prototype.fieldSpec.push(["c2","writeInt32LE",4]);var u=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_CODE_BIASES",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_SSR_CODE_BIASES",u.prototype.msg_type=1505,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).nest("sid",{type:i.prototype.parser}).uint8("update_interval").uint8("iod_ssr").array("biases",{type:n.prototype.parser,readUntil:"eof"}),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),u.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),u.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),u.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),u.prototype.fieldSpec.push(["biases","array",n.prototype.fieldSpec,function(){return this.fields.array.length},null]);var h=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_PHASE_BIASES",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_SSR_PHASE_BIASES",h.prototype.msg_type=1510,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).nest("sid",{type:i.prototype.parser}).uint8("update_interval").uint8("iod_ssr").uint8("dispersive_bias").uint8("mw_consistency").uint16("yaw").int8("yaw_rate").array("biases",{type:a.prototype.parser,readUntil:"eof"}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),h.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),h.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),h.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),h.prototype.fieldSpec.push(["dispersive_bias","writeUInt8",1]),h.prototype.fieldSpec.push(["mw_consistency","writeUInt8",1]),h.prototype.fieldSpec.push(["yaw","writeUInt16LE",2]),h.prototype.fieldSpec.push(["yaw_rate","writeInt8",1]),h.prototype.fieldSpec.push(["biases","array",a.prototype.fieldSpec,function(){return this.fields.array.length},null]),e.exports={CodeBiasesContent:n,PhaseBiasesContent:a,1501:l,MsgSsrOrbitClock:l,1500:c,MsgSsrOrbitClockDepA:c,1505:u,MsgSsrCodeBiases:u,1510:h,MsgSsrPhaseBiases:h}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_STARTUP",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_STARTUP",i.prototype.msg_type=65280,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("cause").uint8("startup_type").uint16("reserved"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["cause","writeUInt8",1]),i.prototype.fieldSpec.push(["startup_type","writeUInt8",1]),i.prototype.fieldSpec.push(["reserved","writeUInt16LE",2]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_DGNSS_STATUS",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_DGNSS_STATUS",s.prototype.msg_type=65282,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("flags").uint16("latency").uint8("num_signals").string("source",{greedy:!0}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["flags","writeUInt8",1]),s.prototype.fieldSpec.push(["latency","writeUInt16LE",2]),s.prototype.fieldSpec.push(["num_signals","writeUInt8",1]),s.prototype.fieldSpec.push(["source","string",null]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_HEARTBEAT",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_HEARTBEAT",n.prototype.msg_type=65535,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint32("flags"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_INS_STATUS",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_INS_STATUS",a.prototype.msg_type=65283,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint32("flags"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);var l=function(e,t){return p.call(this,e),this.messageType="MSG_CSAC_TELEMETRY",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_CSAC_TELEMETRY",l.prototype.msg_type=65284,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint8("id").string("telemetry",{greedy:!0}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["id","writeUInt8",1]),l.prototype.fieldSpec.push(["telemetry","string",null]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_CSAC_TELEMETRY_LABELS",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_CSAC_TELEMETRY_LABELS",c.prototype.msg_type=65285,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint8("id").string("telemetry_labels",{greedy:!0}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["id","writeUInt8",1]),c.prototype.fieldSpec.push(["telemetry_labels","string",null]),e.exports={65280:i,MsgStartup:i,65282:s,MsgDgnssStatus:s,65535:n,MsgHeartbeat:n,65283:a,MsgInsStatus:a,65284:l,MsgCsacTelemetry:l,65285:c,MsgCsacTelemetryLabels:c}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,r(0).GnssSignal),s=r(0).GnssSignalDep,n=r(0).GPSTime,a=r(0).CarrierPhase,l=(n=r(0).GPSTime,r(0).GPSTimeSec,r(0).GPSTimeDep),c=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_STATE_DETAILED_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_STATE_DETAILED_DEP_A",c.prototype.msg_type=33,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint64("recv_time").nest("tot",{type:n.prototype.parser}).uint32("P").uint16("P_std").nest("L",{type:a.prototype.parser}).uint8("cn0").uint16("lock").nest("sid",{type:i.prototype.parser}).int32("doppler").uint16("doppler_std").uint32("uptime").int16("clock_offset").int16("clock_drift").uint16("corr_spacing").int8("acceleration").uint8("sync_flags").uint8("tow_flags").uint8("track_flags").uint8("nav_flags").uint8("pset_flags").uint8("misc_flags"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["recv_time","writeUInt64LE",8]),c.prototype.fieldSpec.push(["tot",n.prototype.fieldSpec]),c.prototype.fieldSpec.push(["P","writeUInt32LE",4]),c.prototype.fieldSpec.push(["P_std","writeUInt16LE",2]),c.prototype.fieldSpec.push(["L",a.prototype.fieldSpec]),c.prototype.fieldSpec.push(["cn0","writeUInt8",1]),c.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),c.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),c.prototype.fieldSpec.push(["doppler","writeInt32LE",4]),c.prototype.fieldSpec.push(["doppler_std","writeUInt16LE",2]),c.prototype.fieldSpec.push(["uptime","writeUInt32LE",4]),c.prototype.fieldSpec.push(["clock_offset","writeInt16LE",2]),c.prototype.fieldSpec.push(["clock_drift","writeInt16LE",2]),c.prototype.fieldSpec.push(["corr_spacing","writeUInt16LE",2]),c.prototype.fieldSpec.push(["acceleration","writeInt8",1]),c.prototype.fieldSpec.push(["sync_flags","writeUInt8",1]),c.prototype.fieldSpec.push(["tow_flags","writeUInt8",1]),c.prototype.fieldSpec.push(["track_flags","writeUInt8",1]),c.prototype.fieldSpec.push(["nav_flags","writeUInt8",1]),c.prototype.fieldSpec.push(["pset_flags","writeUInt8",1]),c.prototype.fieldSpec.push(["misc_flags","writeUInt8",1]);var u=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_STATE_DETAILED_DEP",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_STATE_DETAILED_DEP",u.prototype.msg_type=17,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint64("recv_time").nest("tot",{type:l.prototype.parser}).uint32("P").uint16("P_std").nest("L",{type:a.prototype.parser}).uint8("cn0").uint16("lock").nest("sid",{type:s.prototype.parser}).int32("doppler").uint16("doppler_std").uint32("uptime").int16("clock_offset").int16("clock_drift").uint16("corr_spacing").int8("acceleration").uint8("sync_flags").uint8("tow_flags").uint8("track_flags").uint8("nav_flags").uint8("pset_flags").uint8("misc_flags"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["recv_time","writeUInt64LE",8]),u.prototype.fieldSpec.push(["tot",l.prototype.fieldSpec]),u.prototype.fieldSpec.push(["P","writeUInt32LE",4]),u.prototype.fieldSpec.push(["P_std","writeUInt16LE",2]),u.prototype.fieldSpec.push(["L",a.prototype.fieldSpec]),u.prototype.fieldSpec.push(["cn0","writeUInt8",1]),u.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),u.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),u.prototype.fieldSpec.push(["doppler","writeInt32LE",4]),u.prototype.fieldSpec.push(["doppler_std","writeUInt16LE",2]),u.prototype.fieldSpec.push(["uptime","writeUInt32LE",4]),u.prototype.fieldSpec.push(["clock_offset","writeInt16LE",2]),u.prototype.fieldSpec.push(["clock_drift","writeInt16LE",2]),u.prototype.fieldSpec.push(["corr_spacing","writeUInt16LE",2]),u.prototype.fieldSpec.push(["acceleration","writeInt8",1]),u.prototype.fieldSpec.push(["sync_flags","writeUInt8",1]),u.prototype.fieldSpec.push(["tow_flags","writeUInt8",1]),u.prototype.fieldSpec.push(["track_flags","writeUInt8",1]),u.prototype.fieldSpec.push(["nav_flags","writeUInt8",1]),u.prototype.fieldSpec.push(["pset_flags","writeUInt8",1]),u.prototype.fieldSpec.push(["misc_flags","writeUInt8",1]);var h=function(e,t){return p.call(this,e),this.messageType="TrackingChannelState",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="TrackingChannelState",h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").nest("sid",{type:i.prototype.parser}).uint8("fcn").uint8("cn0"),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),h.prototype.fieldSpec.push(["fcn","writeUInt8",1]),h.prototype.fieldSpec.push(["cn0","writeUInt8",1]);var y=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_STATE",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_STATE",y.prototype.msg_type=65,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").array("states",{type:h.prototype.parser,readUntil:"eof"}),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["states","array",h.prototype.fieldSpec,function(){return this.fields.array.length},null]);var f=function(e,t){return p.call(this,e),this.messageType="MeasurementState",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="MeasurementState",f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").nest("mesid",{type:i.prototype.parser}).uint8("cn0"),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["mesid",i.prototype.fieldSpec]),f.prototype.fieldSpec.push(["cn0","writeUInt8",1]);var d=function(e,t){return p.call(this,e),this.messageType="MSG_MEASUREMENT_STATE",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(p.prototype)).messageType="MSG_MEASUREMENT_STATE",d.prototype.msg_type=97,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").array("states",{type:f.prototype.parser,readUntil:"eof"}),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["states","array",f.prototype.fieldSpec,function(){return this.fields.array.length},null]);var _=function(e,t){return p.call(this,e),this.messageType="TrackingChannelCorrelation",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(p.prototype)).messageType="TrackingChannelCorrelation",_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little").int16("I").int16("Q"),_.prototype.fieldSpec=[],_.prototype.fieldSpec.push(["I","writeInt16LE",2]),_.prototype.fieldSpec.push(["Q","writeInt16LE",2]);var S=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_IQ",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_IQ",S.prototype.msg_type=45,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").uint8("channel").nest("sid",{type:i.prototype.parser}).array("corrs",{length:3,type:_.prototype.parser}),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["channel","writeUInt8",1]),S.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),S.prototype.fieldSpec.push(["corrs","array",_.prototype.fieldSpec,function(){return this.fields.array.length},3]);var g=function(e,t){return p.call(this,e),this.messageType="TrackingChannelCorrelationDep",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(p.prototype)).messageType="TrackingChannelCorrelationDep",g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").int32("I").int32("Q"),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["I","writeInt32LE",4]),g.prototype.fieldSpec.push(["Q","writeInt32LE",4]);var w=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_IQ_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_IQ_DEP_B",w.prototype.msg_type=44,w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").uint8("channel").nest("sid",{type:i.prototype.parser}).array("corrs",{length:3,type:g.prototype.parser}),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["channel","writeUInt8",1]),w.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),w.prototype.fieldSpec.push(["corrs","array",g.prototype.fieldSpec,function(){return this.fields.array.length},3]);var E=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_IQ_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_IQ_DEP_A",E.prototype.msg_type=28,E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").uint8("channel").nest("sid",{type:s.prototype.parser}).array("corrs",{length:3,type:g.prototype.parser}),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["channel","writeUInt8",1]),E.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),E.prototype.fieldSpec.push(["corrs","array",g.prototype.fieldSpec,function(){return this.fields.array.length},3]);var m=function(e,t){return p.call(this,e),this.messageType="TrackingChannelStateDepA",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(p.prototype)).messageType="TrackingChannelStateDepA",m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").uint8("state").uint8("prn").floatle("cn0"),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["state","writeUInt8",1]),m.prototype.fieldSpec.push(["prn","writeUInt8",1]),m.prototype.fieldSpec.push(["cn0","writeFloatLE",4]);var b=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_STATE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_STATE_DEP_A",b.prototype.msg_type=22,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").array("states",{type:m.prototype.parser,readUntil:"eof"}),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["states","array",m.prototype.fieldSpec,function(){return this.fields.array.length},null]);var v=function(e,t){return p.call(this,e),this.messageType="TrackingChannelStateDepB",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(p.prototype)).messageType="TrackingChannelStateDepB",v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").uint8("state").nest("sid",{type:s.prototype.parser}).floatle("cn0"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["state","writeUInt8",1]),v.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),v.prototype.fieldSpec.push(["cn0","writeFloatLE",4]);var L=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_STATE_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_STATE_DEP_B",L.prototype.msg_type=19,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").array("states",{type:v.prototype.parser,readUntil:"eof"}),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["states","array",v.prototype.fieldSpec,function(){return this.fields.array.length},null]),e.exports={33:c,MsgTrackingStateDetailedDepA:c,17:u,MsgTrackingStateDetailedDep:u,TrackingChannelState:h,65:y,MsgTrackingState:y,MeasurementState:f,97:d,MsgMeasurementState:d,TrackingChannelCorrelation:_,45:S,MsgTrackingIq:S,TrackingChannelCorrelationDep:g,44:w,MsgTrackingIqDepB:w,28:E,MsgTrackingIqDepA:E,TrackingChannelStateDepA:m,22:b,MsgTrackingStateDepA:b,TrackingChannelStateDepB:v,19:L,MsgTrackingStateDepB:L}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_USER_DATA",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_USER_DATA",i.prototype.msg_type=2048,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").array("contents",{type:"uint8",readUntil:"eof"}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["contents","array","writeUInt8",function(){return 1},null]),e.exports={2048:i,MsgUserData:i}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_ODOMETRY",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_ODOMETRY",i.prototype.msg_type=2307,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("tow").int32("velocity").uint8("flags"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["velocity","writeInt32LE",4]),i.prototype.fieldSpec.push(["flags","writeUInt8",1]),e.exports={2307:i,MsgOdometry:i}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_BASELINE_HEADING",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_BASELINE_HEADING",i.prototype.msg_type=527,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("tow").uint32("heading").uint8("n_sats").uint8("flags"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["heading","writeUInt32LE",4]),i.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),i.prototype.fieldSpec.push(["flags","writeUInt8",1]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_ORIENT_QUAT",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_ORIENT_QUAT",s.prototype.msg_type=544,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint32("tow").int32("w").int32("x").int32("y").int32("z").floatle("w_accuracy").floatle("x_accuracy").floatle("y_accuracy").floatle("z_accuracy").uint8("flags"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),s.prototype.fieldSpec.push(["w","writeInt32LE",4]),s.prototype.fieldSpec.push(["x","writeInt32LE",4]),s.prototype.fieldSpec.push(["y","writeInt32LE",4]),s.prototype.fieldSpec.push(["z","writeInt32LE",4]),s.prototype.fieldSpec.push(["w_accuracy","writeFloatLE",4]),s.prototype.fieldSpec.push(["x_accuracy","writeFloatLE",4]),s.prototype.fieldSpec.push(["y_accuracy","writeFloatLE",4]),s.prototype.fieldSpec.push(["z_accuracy","writeFloatLE",4]),s.prototype.fieldSpec.push(["flags","writeUInt8",1]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_ORIENT_EULER",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_ORIENT_EULER",n.prototype.msg_type=545,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint32("tow").int32("roll").int32("pitch").int32("yaw").floatle("roll_accuracy").floatle("pitch_accuracy").floatle("yaw_accuracy").uint8("flags"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),n.prototype.fieldSpec.push(["roll","writeInt32LE",4]),n.prototype.fieldSpec.push(["pitch","writeInt32LE",4]),n.prototype.fieldSpec.push(["yaw","writeInt32LE",4]),n.prototype.fieldSpec.push(["roll_accuracy","writeFloatLE",4]),n.prototype.fieldSpec.push(["pitch_accuracy","writeFloatLE",4]),n.prototype.fieldSpec.push(["yaw_accuracy","writeFloatLE",4]),n.prototype.fieldSpec.push(["flags","writeUInt8",1]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_ANGULAR_RATE",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_ANGULAR_RATE",a.prototype.msg_type=546,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint8("flags"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),a.prototype.fieldSpec.push(["x","writeInt32LE",4]),a.prototype.fieldSpec.push(["y","writeInt32LE",4]),a.prototype.fieldSpec.push(["z","writeInt32LE",4]),a.prototype.fieldSpec.push(["flags","writeUInt8",1]),e.exports={527:i,MsgBaselineHeading:i,544:s,MsgOrientQuat:s,545:n,MsgOrientEuler:n,546:a,MsgAngularRate:a}}]); \ No newline at end of file +function p(e,t){if(e===t)return 0;for(var r=e.length,p=t.length,o=0,i=Math.min(r,p);o=0;l--)if(c[l]!==u[l])return!1;for(l=c.length-1;l>=0;l--)if(a=c[l],!g(e[a],t[a],r,p))return!1;return!0}(e,t,r,s))}return r?e===t:e==t}function w(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function E(e,t){if(!e||!t)return!1;if("[object RegExp]"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return!0}catch(e){}return!Error.isPrototypeOf(t)&&!0===t.call({},e)}function m(e,t,r,p){var o;if("function"!=typeof t)throw new TypeError('"block" argument must be a function');"string"==typeof r&&(p=r,r=null),o=function(e){var t;try{e()}catch(e){t=e}return t}(t),p=(r&&r.name?" ("+r.name+").":".")+(p?" "+p:"."),e&&!o&&_(o,r,"Missing expected exception"+p);var s="string"==typeof p,n=!e&&o&&!r;if((!e&&i.isError(o)&&s&&E(o,r)||n)&&_(o,r,"Got unwanted exception"+p),e&&o&&r&&!E(o,r)||!e&&o)throw o}u.AssertionError=function(e){var t;this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=f(d((t=this).actual),128)+" "+t.operator+" "+f(d(t.expected),128),this.generatedMessage=!0);var r=e.stackStartFunction||_;if(Error.captureStackTrace)Error.captureStackTrace(this,r);else{var p=new Error;if(p.stack){var o=p.stack,i=h(r),s=o.indexOf("\n"+i);if(s>=0){var n=o.indexOf("\n",s+1);o=o.substring(n+1)}this.stack=o}}},i.inherits(u.AssertionError,Error),u.fail=_,u.ok=S,u.equal=function(e,t,r){e!=t&&_(e,t,r,"==",u.equal)},u.notEqual=function(e,t,r){e==t&&_(e,t,r,"!=",u.notEqual)},u.deepEqual=function(e,t,r){g(e,t,!1)||_(e,t,r,"deepEqual",u.deepEqual)},u.deepStrictEqual=function(e,t,r){g(e,t,!0)||_(e,t,r,"deepStrictEqual",u.deepStrictEqual)},u.notDeepEqual=function(e,t,r){g(e,t,!1)&&_(e,t,r,"notDeepEqual",u.notDeepEqual)},u.notDeepStrictEqual=function e(t,r,p){g(t,r,!0)&&_(t,r,p,"notDeepStrictEqual",e)},u.strictEqual=function(e,t,r){e!==t&&_(e,t,r,"===",u.strictEqual)},u.notStrictEqual=function(e,t,r){e===t&&_(e,t,r,"!==",u.notStrictEqual)},u.throws=function(e,t,r){m(!0,e,t,r)},u.doesNotThrow=function(e,t,r){m(!1,e,t,r)},u.ifError=function(e){if(e)throw e};var b=Object.keys||function(e){var t=[];for(var r in e)s.call(e,r)&&t.push(r);return t}}).call(this,r(5))},function(e,t,r){(function(e,p){var o=/%[sdj%]/g;t.format=function(e){if(!S(e)){for(var t=[],r=0;r=i)return e;switch(e){case"%s":return String(p[r++]);case"%d":return Number(p[r++]);case"%j":try{return JSON.stringify(p[r++])}catch(e){return"[Circular]"}default:return e}}),a=p[r];r=3&&(p.depth=arguments[2]),arguments.length>=4&&(p.colors=arguments[3]),f(r)?p.showHidden=r:r&&t._extend(p,r),g(p.showHidden)&&(p.showHidden=!1),g(p.depth)&&(p.depth=2),g(p.colors)&&(p.colors=!1),g(p.customInspect)&&(p.customInspect=!0),p.colors&&(p.stylize=a),c(p,e,p.depth)}function a(e,t){var r=n.styles[t];return r?"["+n.colors[r][0]+"m"+e+"["+n.colors[r][1]+"m":e}function l(e,t){return e}function c(e,r,p){if(e.customInspect&&r&&v(r.inspect)&&r.inspect!==t.inspect&&(!r.constructor||r.constructor.prototype!==r)){var o=r.inspect(p,e);return S(o)||(o=c(e,o,p)),o}var i=function(e,t){if(g(t))return e.stylize("undefined","undefined");if(S(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}if(_(t))return e.stylize(""+t,"number");if(f(t))return e.stylize(""+t,"boolean");if(d(t))return e.stylize("null","null")}(e,r);if(i)return i;var s=Object.keys(r),n=function(e){var t={};return e.forEach(function(e,r){t[e]=!0}),t}(s);if(e.showHidden&&(s=Object.getOwnPropertyNames(r)),b(r)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return u(r);if(0===s.length){if(v(r)){var a=r.name?": "+r.name:"";return e.stylize("[Function"+a+"]","special")}if(w(r))return e.stylize(RegExp.prototype.toString.call(r),"regexp");if(m(r))return e.stylize(Date.prototype.toString.call(r),"date");if(b(r))return u(r)}var l,E="",L=!1,T=["{","}"];(h(r)&&(L=!0,T=["[","]"]),v(r))&&(E=" [Function"+(r.name?": "+r.name:"")+"]");return w(r)&&(E=" "+RegExp.prototype.toString.call(r)),m(r)&&(E=" "+Date.prototype.toUTCString.call(r)),b(r)&&(E=" "+u(r)),0!==s.length||L&&0!=r.length?p<0?w(r)?e.stylize(RegExp.prototype.toString.call(r),"regexp"):e.stylize("[Object]","special"):(e.seen.push(r),l=L?function(e,t,r,p,o){for(var i=[],s=0,n=t.length;s=0&&0,e+t.replace(/\u001b\[\d\d?m/g,"").length+1},0)>60)return r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1];return r[0]+t+" "+e.join(", ")+" "+r[1]}(l,E,T)):T[0]+E+T[1]}function u(e){return"["+Error.prototype.toString.call(e)+"]"}function y(e,t,r,p,o,i){var s,n,a;if((a=Object.getOwnPropertyDescriptor(t,o)||{value:t[o]}).get?n=a.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):a.set&&(n=e.stylize("[Setter]","special")),M(p,o)||(s="["+o+"]"),n||(e.seen.indexOf(a.value)<0?(n=d(r)?c(e,a.value,null):c(e,a.value,r-1)).indexOf("\n")>-1&&(n=i?n.split("\n").map(function(e){return" "+e}).join("\n").substr(2):"\n"+n.split("\n").map(function(e){return" "+e}).join("\n")):n=e.stylize("[Circular]","special")),g(s)){if(i&&o.match(/^\d+$/))return n;(s=JSON.stringify(""+o)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=e.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=e.stylize(s,"string"))}return s+": "+n}function h(e){return Array.isArray(e)}function f(e){return"boolean"==typeof e}function d(e){return null===e}function _(e){return"number"==typeof e}function S(e){return"string"==typeof e}function g(e){return void 0===e}function w(e){return E(e)&&"[object RegExp]"===L(e)}function E(e){return"object"==typeof e&&null!==e}function m(e){return E(e)&&"[object Date]"===L(e)}function b(e){return E(e)&&("[object Error]"===L(e)||e instanceof Error)}function v(e){return"function"==typeof e}function L(e){return Object.prototype.toString.call(e)}function T(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(g(i)&&(i=p.env.NODE_DEBUG||""),e=e.toUpperCase(),!s[e])if(new RegExp("\\b"+e+"\\b","i").test(i)){var r=p.pid;s[e]=function(){var p=t.format.apply(t,arguments);console.error("%s %d: %s",e,r,p)}}else s[e]=function(){};return s[e]},t.inspect=n,n.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},n.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.isArray=h,t.isBoolean=f,t.isNull=d,t.isNullOrUndefined=function(e){return null==e},t.isNumber=_,t.isString=S,t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=g,t.isRegExp=w,t.isObject=E,t.isDate=m,t.isError=b,t.isFunction=v,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=r(43);var I=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function M(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){var e,r;console.log("%s - %s",(e=new Date,r=[T(e.getHours()),T(e.getMinutes()),T(e.getSeconds())].join(":"),[e.getDate(),I[e.getMonth()],r].join(" ")),t.format.apply(t,arguments))},t.inherits=r(6),t._extend=function(e,t){if(!t||!E(t))return e;for(var r=Object.keys(t),p=r.length;p--;)e[r[p]]=t[r[p]];return e}}).call(this,r(5),r(9))},function(e,t){e.exports=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},function(e,t,r){var p;!function(r){o(Math.pow(36,5)),o(Math.pow(16,7)),o(Math.pow(10,9)),o(Math.pow(2,30)),o(36),o(16),o(10),o(2);function o(e,t){return this instanceof o?(this._low=0,this._high=0,this.remainder=null,void 0===t?s.call(this,e):"string"==typeof e?n.call(this,e,t):void i.call(this,e,t)):new o(e,t)}function i(e,t){return this._low=0|e,this._high=0|t,this}function s(e){return this._low=65535&e,this._high=e>>>16,this}function n(e,t){var r=parseInt(e,t||10);return this._low=65535&r,this._high=r>>>16,this}o.prototype.fromBits=i,o.prototype.fromNumber=s,o.prototype.fromString=n,o.prototype.toNumber=function(){return 65536*this._high+this._low},o.prototype.toString=function(e){return this.toNumber().toString(e||10)},o.prototype.add=function(e){var t=this._low+e._low,r=t>>>16;return r+=this._high+e._high,this._low=65535&t,this._high=65535&r,this},o.prototype.subtract=function(e){return this.add(e.clone().negate())},o.prototype.multiply=function(e){var t,r,p=this._high,o=this._low,i=e._high,s=e._low;return t=(r=o*s)>>>16,t+=p*s,t&=65535,t+=o*i,this._low=65535&r,this._high=65535&t,this},o.prototype.div=function(e){if(0==e._low&&0==e._high)throw Error("division by zero");if(0==e._high&&1==e._low)return this.remainder=new o(0),this;if(e.gt(this))return this.remainder=this.clone(),this._low=0,this._high=0,this;if(this.eq(e))return this.remainder=new o(0),this._low=1,this._high=0,this;for(var t=e.clone(),r=-1;!this.lt(t);)t.shiftLeft(1,!0),r++;for(this.remainder=this.clone(),this._low=0,this._high=0;r>=0;r--)t.shiftRight(1),this.remainder.lt(t)||(this.remainder.subtract(t),r>=16?this._high|=1<>>16)&65535,this},o.prototype.equals=o.prototype.eq=function(e){return this._low==e._low&&this._high==e._high},o.prototype.greaterThan=o.prototype.gt=function(e){return this._high>e._high||!(this._highe._low},o.prototype.lessThan=o.prototype.lt=function(e){return this._highe._high)&&this._low16?(this._low=this._high>>e-16,this._high=0):16==e?(this._low=this._high,this._high=0):(this._low=this._low>>e|this._high<<16-e&65535,this._high>>=e),this},o.prototype.shiftLeft=o.prototype.shiftl=function(e,t){return e>16?(this._high=this._low<>16-e,this._low=this._low<>>32-e,this._low=65535&t,this._high=t>>>16,this},o.prototype.rotateRight=o.prototype.rotr=function(e){var t=this._high<<16|this._low;return t=t>>>e|t<<32-e,this._low=65535&t,this._high=t>>>16,this},o.prototype.clone=function(){return new o(this._low,this._high)},void 0===(p=function(){return o}.apply(t,[]))||(e.exports=p)}()},function(e,t,r){var p;!function(r){var o={16:s(Math.pow(16,5)),10:s(Math.pow(10,5)),2:s(Math.pow(2,5))},i={16:s(16),10:s(10),2:s(2)};function s(e,t,r,p){return this instanceof s?(this.remainder=null,"string"==typeof e?l.call(this,e,t):void 0===t?a.call(this,e):void n.apply(this,arguments)):new s(e,t,r,p)}function n(e,t,r,p){return void 0===r?(this._a00=65535&e,this._a16=e>>>16,this._a32=65535&t,this._a48=t>>>16,this):(this._a00=0|e,this._a16=0|t,this._a32=0|r,this._a48=0|p,this)}function a(e){return this._a00=65535&e,this._a16=e>>>16,this._a32=0,this._a48=0,this}function l(e,t){t=t||10,this._a00=0,this._a16=0,this._a32=0,this._a48=0;for(var r=o[t]||new s(Math.pow(t,5)),p=0,i=e.length;p=0&&(r.div(t),p[o]=r.remainder.toNumber().toString(e),r.gt(t));o--);return p[o-1]=r.toNumber().toString(e),p.join("")},s.prototype.add=function(e){var t=this._a00+e._a00,r=t>>>16,p=(r+=this._a16+e._a16)>>>16,o=(p+=this._a32+e._a32)>>>16;return o+=this._a48+e._a48,this._a00=65535&t,this._a16=65535&r,this._a32=65535&p,this._a48=65535&o,this},s.prototype.subtract=function(e){return this.add(e.clone().negate())},s.prototype.multiply=function(e){var t=this._a00,r=this._a16,p=this._a32,o=this._a48,i=e._a00,s=e._a16,n=e._a32,a=t*i,l=a>>>16,c=(l+=t*s)>>>16;l&=65535,c+=(l+=r*i)>>>16;var u=(c+=t*n)>>>16;return c&=65535,u+=(c+=r*s)>>>16,c&=65535,u+=(c+=p*i)>>>16,u+=t*e._a48,u&=65535,u+=r*n,u&=65535,u+=p*s,u&=65535,u+=o*i,this._a00=65535&a,this._a16=65535&l,this._a32=65535&c,this._a48=65535&u,this},s.prototype.div=function(e){if(0==e._a16&&0==e._a32&&0==e._a48){if(0==e._a00)throw Error("division by zero");if(1==e._a00)return this.remainder=new s(0),this}if(e.gt(this))return this.remainder=this.clone(),this._a00=0,this._a16=0,this._a32=0,this._a48=0,this;if(this.eq(e))return this.remainder=new s(0),this._a00=1,this._a16=0,this._a32=0,this._a48=0,this;for(var t=e.clone(),r=-1;!this.lt(t);)t.shiftLeft(1,!0),r++;for(this.remainder=this.clone(),this._a00=0,this._a16=0,this._a32=0,this._a48=0;r>=0;r--)t.shiftRight(1),this.remainder.lt(t)||(this.remainder.subtract(t),r>=48?this._a48|=1<=32?this._a32|=1<=16?this._a16|=1<>>16),this._a16=65535&e,e=(65535&~this._a32)+(e>>>16),this._a32=65535&e,this._a48=~this._a48+(e>>>16)&65535,this},s.prototype.equals=s.prototype.eq=function(e){return this._a48==e._a48&&this._a00==e._a00&&this._a32==e._a32&&this._a16==e._a16},s.prototype.greaterThan=s.prototype.gt=function(e){return this._a48>e._a48||!(this._a48e._a32||!(this._a32e._a16||!(this._a16e._a00))},s.prototype.lessThan=s.prototype.lt=function(e){return this._a48e._a48)&&(this._a32e._a32)&&(this._a16e._a16)&&this._a00=48?(this._a00=this._a48>>e-48,this._a16=0,this._a32=0,this._a48=0):e>=32?(e-=32,this._a00=65535&(this._a32>>e|this._a48<<16-e),this._a16=this._a48>>e&65535,this._a32=0,this._a48=0):e>=16?(e-=16,this._a00=65535&(this._a16>>e|this._a32<<16-e),this._a16=65535&(this._a32>>e|this._a48<<16-e),this._a32=this._a48>>e&65535,this._a48=0):(this._a00=65535&(this._a00>>e|this._a16<<16-e),this._a16=65535&(this._a16>>e|this._a32<<16-e),this._a32=65535&(this._a32>>e|this._a48<<16-e),this._a48=this._a48>>e&65535),this},s.prototype.shiftLeft=s.prototype.shiftl=function(e,t){return(e%=64)>=48?(this._a48=this._a00<=32?(e-=32,this._a48=this._a16<>16-e,this._a32=this._a00<=16?(e-=16,this._a48=this._a32<>16-e,this._a32=65535&(this._a16<>16-e),this._a16=this._a00<>16-e,this._a32=65535&(this._a32<>16-e),this._a16=65535&(this._a16<>16-e),this._a00=this._a00<=32){var t=this._a00;if(this._a00=this._a32,this._a32=t,t=this._a48,this._a48=this._a16,this._a16=t,32==e)return this;e-=32}var r=this._a48<<16|this._a32,p=this._a16<<16|this._a00,o=r<>>32-e,i=p<>>32-e;return this._a00=65535&i,this._a16=i>>>16,this._a32=65535&o,this._a48=o>>>16,this},s.prototype.rotateRight=s.prototype.rotr=function(e){if(0==(e%=64))return this;if(e>=32){var t=this._a00;if(this._a00=this._a32,this._a32=t,t=this._a48,this._a48=this._a16,this._a16=t,32==e)return this;e-=32}var r=this._a48<<16|this._a32,p=this._a16<<16|this._a00,o=r>>>e|p<<32-e,i=p>>>e|r<<32-e;return this._a00=65535&i,this._a16=i>>>16,this._a32=65535&o,this._a48=o>>>16,this},s.prototype.clone=function(){return new s(this._a00,this._a16,this._a32,this._a48)},void 0===(p=function(){return s}.apply(t,[]))||(e.exports=p)}()},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,r(0).GnssSignal),s=r(0).GnssSignalDep,n=(r(0).GPSTime,r(0).CarrierPhase,r(0).GPSTime,r(0).GPSTimeSec,r(0).GPSTimeDep,r(0).SvId,function(e,t){return p.call(this,e),this.messageType="MSG_ACQ_RESULT",this.fields=t||this.parser.parse(e.payload),this});(n.prototype=Object.create(p.prototype)).messageType="MSG_ACQ_RESULT",n.prototype.msg_type=47,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").floatle("cn0").floatle("cp").floatle("cf").nest("sid",{type:i.prototype.parser}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["cn0","writeFloatLE",4]),n.prototype.fieldSpec.push(["cp","writeFloatLE",4]),n.prototype.fieldSpec.push(["cf","writeFloatLE",4]),n.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_ACQ_RESULT_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_ACQ_RESULT_DEP_C",a.prototype.msg_type=31,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").floatle("cn0").floatle("cp").floatle("cf").nest("sid",{type:s.prototype.parser}),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["cn0","writeFloatLE",4]),a.prototype.fieldSpec.push(["cp","writeFloatLE",4]),a.prototype.fieldSpec.push(["cf","writeFloatLE",4]),a.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]);var l=function(e,t){return p.call(this,e),this.messageType="MSG_ACQ_RESULT_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_ACQ_RESULT_DEP_B",l.prototype.msg_type=20,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").floatle("snr").floatle("cp").floatle("cf").nest("sid",{type:s.prototype.parser}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["snr","writeFloatLE",4]),l.prototype.fieldSpec.push(["cp","writeFloatLE",4]),l.prototype.fieldSpec.push(["cf","writeFloatLE",4]),l.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_ACQ_RESULT_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_ACQ_RESULT_DEP_A",c.prototype.msg_type=21,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").floatle("snr").floatle("cp").floatle("cf").uint8("prn"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["snr","writeFloatLE",4]),c.prototype.fieldSpec.push(["cp","writeFloatLE",4]),c.prototype.fieldSpec.push(["cf","writeFloatLE",4]),c.prototype.fieldSpec.push(["prn","writeUInt8",1]);var u=function(e,t){return p.call(this,e),this.messageType="AcqSvProfile",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="AcqSvProfile",u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint8("job_type").uint8("status").uint16("cn0").uint8("int_time").nest("sid",{type:i.prototype.parser}).uint16("bin_width").uint32("timestamp").uint32("time_spent").int32("cf_min").int32("cf_max").int32("cf").uint32("cp"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["job_type","writeUInt8",1]),u.prototype.fieldSpec.push(["status","writeUInt8",1]),u.prototype.fieldSpec.push(["cn0","writeUInt16LE",2]),u.prototype.fieldSpec.push(["int_time","writeUInt8",1]),u.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),u.prototype.fieldSpec.push(["bin_width","writeUInt16LE",2]),u.prototype.fieldSpec.push(["timestamp","writeUInt32LE",4]),u.prototype.fieldSpec.push(["time_spent","writeUInt32LE",4]),u.prototype.fieldSpec.push(["cf_min","writeInt32LE",4]),u.prototype.fieldSpec.push(["cf_max","writeInt32LE",4]),u.prototype.fieldSpec.push(["cf","writeInt32LE",4]),u.prototype.fieldSpec.push(["cp","writeUInt32LE",4]);var y=function(e,t){return p.call(this,e),this.messageType="AcqSvProfileDep",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="AcqSvProfileDep",y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").uint8("job_type").uint8("status").uint16("cn0").uint8("int_time").nest("sid",{type:s.prototype.parser}).uint16("bin_width").uint32("timestamp").uint32("time_spent").int32("cf_min").int32("cf_max").int32("cf").uint32("cp"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["job_type","writeUInt8",1]),y.prototype.fieldSpec.push(["status","writeUInt8",1]),y.prototype.fieldSpec.push(["cn0","writeUInt16LE",2]),y.prototype.fieldSpec.push(["int_time","writeUInt8",1]),y.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),y.prototype.fieldSpec.push(["bin_width","writeUInt16LE",2]),y.prototype.fieldSpec.push(["timestamp","writeUInt32LE",4]),y.prototype.fieldSpec.push(["time_spent","writeUInt32LE",4]),y.prototype.fieldSpec.push(["cf_min","writeInt32LE",4]),y.prototype.fieldSpec.push(["cf_max","writeInt32LE",4]),y.prototype.fieldSpec.push(["cf","writeInt32LE",4]),y.prototype.fieldSpec.push(["cp","writeUInt32LE",4]);var h=function(e,t){return p.call(this,e),this.messageType="MSG_ACQ_SV_PROFILE",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_ACQ_SV_PROFILE",h.prototype.msg_type=46,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").array("acq_sv_profile",{type:u.prototype.parser,readUntil:"eof"}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["acq_sv_profile","array",u.prototype.fieldSpec,function(){return this.fields.array.length},null]);var f=function(e,t){return p.call(this,e),this.messageType="MSG_ACQ_SV_PROFILE_DEP",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="MSG_ACQ_SV_PROFILE_DEP",f.prototype.msg_type=30,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").array("acq_sv_profile",{type:y.prototype.parser,readUntil:"eof"}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["acq_sv_profile","array",y.prototype.fieldSpec,function(){return this.fields.array.length},null]),e.exports={47:n,MsgAcqResult:n,31:a,MsgAcqResultDepC:a,20:l,MsgAcqResultDepB:l,21:c,MsgAcqResultDepA:c,AcqSvProfile:u,AcqSvProfileDep:y,46:h,MsgAcqSvProfile:h,30:f,MsgAcqSvProfileDep:f}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_BOOTLOADER_HANDSHAKE_REQ",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_BOOTLOADER_HANDSHAKE_REQ",i.prototype.msg_type=179,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little"),i.prototype.fieldSpec=[];var s=function(e,t){return p.call(this,e),this.messageType="MSG_BOOTLOADER_HANDSHAKE_RESP",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_BOOTLOADER_HANDSHAKE_RESP",s.prototype.msg_type=180,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint32("flags").string("version",{greedy:!0}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["flags","writeUInt32LE",4]),s.prototype.fieldSpec.push(["version","string",null]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_BOOTLOADER_JUMP_TO_APP",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_BOOTLOADER_JUMP_TO_APP",n.prototype.msg_type=177,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint8("jump"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["jump","writeUInt8",1]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_NAP_DEVICE_DNA_REQ",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_NAP_DEVICE_DNA_REQ",a.prototype.msg_type=222,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little"),a.prototype.fieldSpec=[];var l=function(e,t){return p.call(this,e),this.messageType="MSG_NAP_DEVICE_DNA_RESP",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_NAP_DEVICE_DNA_RESP",l.prototype.msg_type=221,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").array("dna",{length:8,type:"uint8"}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["dna","array","writeUInt8",function(){return 1},8]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_BOOTLOADER_HANDSHAKE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_BOOTLOADER_HANDSHAKE_DEP_A",c.prototype.msg_type=176,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").array("handshake",{type:"uint8",readUntil:"eof"}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["handshake","array","writeUInt8",function(){return 1},null]),e.exports={179:i,MsgBootloaderHandshakeReq:i,180:s,MsgBootloaderHandshakeResp:s,177:n,MsgBootloaderJumpToApp:n,222:a,MsgNapDeviceDnaReq:a,221:l,MsgNapDeviceDnaResp:l,176:c,MsgBootloaderHandshakeDepA:c}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_EXT_EVENT",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_EXT_EVENT",i.prototype.msg_type=257,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint16("wn").uint32("tow").int32("ns_residual").uint8("flags").uint8("pin"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["wn","writeUInt16LE",2]),i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["ns_residual","writeInt32LE",4]),i.prototype.fieldSpec.push(["flags","writeUInt8",1]),i.prototype.fieldSpec.push(["pin","writeUInt8",1]),e.exports={257:i,MsgExtEvent:i}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_READ_REQ",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_READ_REQ",i.prototype.msg_type=168,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("sequence").uint32("offset").uint8("chunk_size").string("filename",{greedy:!0}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),i.prototype.fieldSpec.push(["offset","writeUInt32LE",4]),i.prototype.fieldSpec.push(["chunk_size","writeUInt8",1]),i.prototype.fieldSpec.push(["filename","string",null]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_READ_RESP",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_READ_RESP",s.prototype.msg_type=163,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint32("sequence").array("contents",{type:"uint8",readUntil:"eof"}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),s.prototype.fieldSpec.push(["contents","array","writeUInt8",function(){return 1},null]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_READ_DIR_REQ",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_READ_DIR_REQ",n.prototype.msg_type=169,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint32("sequence").uint32("offset").string("dirname",{greedy:!0}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),n.prototype.fieldSpec.push(["offset","writeUInt32LE",4]),n.prototype.fieldSpec.push(["dirname","string",null]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_READ_DIR_RESP",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_READ_DIR_RESP",a.prototype.msg_type=170,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint32("sequence").array("contents",{type:"uint8",readUntil:"eof"}),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),a.prototype.fieldSpec.push(["contents","array","writeUInt8",function(){return 1},null]);var l=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_REMOVE",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_REMOVE",l.prototype.msg_type=172,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").string("filename",{greedy:!0}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["filename","string",null]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_WRITE_REQ",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_WRITE_REQ",c.prototype.msg_type=173,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("sequence").uint32("offset").string("filename",{greedy:!0}).array("data",{type:"uint8",readUntil:"eof"}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),c.prototype.fieldSpec.push(["offset","writeUInt32LE",4]),c.prototype.fieldSpec.push(["filename","string",null]),c.prototype.fieldSpec.push(["data","array","writeUInt8",function(){return 1},null]);var u=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_WRITE_RESP",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_WRITE_RESP",u.prototype.msg_type=171,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("sequence"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]);var y=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_CONFIG_REQ",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_CONFIG_REQ",y.prototype.msg_type=4097,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").uint32("sequence"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]);var h=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_CONFIG_RESP",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_CONFIG_RESP",h.prototype.msg_type=4098,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").uint32("sequence").uint32("window_size").uint32("batch_size").uint32("fileio_version"),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),h.prototype.fieldSpec.push(["window_size","writeUInt32LE",4]),h.prototype.fieldSpec.push(["batch_size","writeUInt32LE",4]),h.prototype.fieldSpec.push(["fileio_version","writeUInt32LE",4]),e.exports={168:i,MsgFileioReadReq:i,163:s,MsgFileioReadResp:s,169:n,MsgFileioReadDirReq:n,170:a,MsgFileioReadDirResp:a,172:l,MsgFileioRemove:l,173:c,MsgFileioWriteReq:c,171:u,MsgFileioWriteResp:u,4097:y,MsgFileioConfigReq:y,4098:h,MsgFileioConfigResp:h}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_FLASH_PROGRAM",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_FLASH_PROGRAM",i.prototype.msg_type=230,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("target").array("addr_start",{length:3,type:"uint8"}).uint8("addr_len").array("data",{type:"uint8",length:"addr_len"}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["target","writeUInt8",1]),i.prototype.fieldSpec.push(["addr_start","array","writeUInt8",function(){return 1},3]),i.prototype.fieldSpec.push(["addr_len","writeUInt8",1]),i.prototype.fieldSpec.push(["data","array","writeUInt8",function(){return 1},"addr_len"]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_FLASH_DONE",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_FLASH_DONE",s.prototype.msg_type=224,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("response"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["response","writeUInt8",1]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_FLASH_READ_REQ",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_FLASH_READ_REQ",n.prototype.msg_type=231,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint8("target").array("addr_start",{length:3,type:"uint8"}).uint8("addr_len"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["target","writeUInt8",1]),n.prototype.fieldSpec.push(["addr_start","array","writeUInt8",function(){return 1},3]),n.prototype.fieldSpec.push(["addr_len","writeUInt8",1]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_FLASH_READ_RESP",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_FLASH_READ_RESP",a.prototype.msg_type=225,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint8("target").array("addr_start",{length:3,type:"uint8"}).uint8("addr_len"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["target","writeUInt8",1]),a.prototype.fieldSpec.push(["addr_start","array","writeUInt8",function(){return 1},3]),a.prototype.fieldSpec.push(["addr_len","writeUInt8",1]);var l=function(e,t){return p.call(this,e),this.messageType="MSG_FLASH_ERASE",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_FLASH_ERASE",l.prototype.msg_type=226,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint8("target").uint32("sector_num"),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["target","writeUInt8",1]),l.prototype.fieldSpec.push(["sector_num","writeUInt32LE",4]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_STM_FLASH_LOCK_SECTOR",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_STM_FLASH_LOCK_SECTOR",c.prototype.msg_type=227,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("sector"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["sector","writeUInt32LE",4]);var u=function(e,t){return p.call(this,e),this.messageType="MSG_STM_FLASH_UNLOCK_SECTOR",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_STM_FLASH_UNLOCK_SECTOR",u.prototype.msg_type=228,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("sector"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["sector","writeUInt32LE",4]);var y=function(e,t){return p.call(this,e),this.messageType="MSG_STM_UNIQUE_ID_REQ",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="MSG_STM_UNIQUE_ID_REQ",y.prototype.msg_type=232,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little"),y.prototype.fieldSpec=[];var h=function(e,t){return p.call(this,e),this.messageType="MSG_STM_UNIQUE_ID_RESP",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_STM_UNIQUE_ID_RESP",h.prototype.msg_type=229,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").array("stm_id",{length:12,type:"uint8"}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["stm_id","array","writeUInt8",function(){return 1},12]);var f=function(e,t){return p.call(this,e),this.messageType="MSG_M25_FLASH_WRITE_STATUS",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="MSG_M25_FLASH_WRITE_STATUS",f.prototype.msg_type=243,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").array("status",{length:1,type:"uint8"}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["status","array","writeUInt8",function(){return 1},1]),e.exports={230:i,MsgFlashProgram:i,224:s,MsgFlashDone:s,231:n,MsgFlashReadReq:n,225:a,MsgFlashReadResp:a,226:l,MsgFlashErase:l,227:c,MsgStmFlashLockSector:c,228:u,MsgStmFlashUnlockSector:u,232:y,MsgStmUniqueIdReq:y,229:h,MsgStmUniqueIdResp:h,243:f,MsgM25FlashWriteStatus:f}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_IMU_RAW",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_IMU_RAW",i.prototype.msg_type=2304,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("tow").uint8("tow_f").int16("acc_x").int16("acc_y").int16("acc_z").int16("gyr_x").int16("gyr_y").int16("gyr_z"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["tow_f","writeUInt8",1]),i.prototype.fieldSpec.push(["acc_x","writeInt16LE",2]),i.prototype.fieldSpec.push(["acc_y","writeInt16LE",2]),i.prototype.fieldSpec.push(["acc_z","writeInt16LE",2]),i.prototype.fieldSpec.push(["gyr_x","writeInt16LE",2]),i.prototype.fieldSpec.push(["gyr_y","writeInt16LE",2]),i.prototype.fieldSpec.push(["gyr_z","writeInt16LE",2]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_IMU_AUX",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_IMU_AUX",s.prototype.msg_type=2305,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("imu_type").int16("temp").uint8("imu_conf"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["imu_type","writeUInt8",1]),s.prototype.fieldSpec.push(["temp","writeInt16LE",2]),s.prototype.fieldSpec.push(["imu_conf","writeUInt8",1]),e.exports={2304:i,MsgImuRaw:i,2305:s,MsgImuAux:s}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_CPU_STATE",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_CPU_STATE",i.prototype.msg_type=32512,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint8("pcpu").string("tname",{length:15}).string("cmdline",{greedy:!0}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["index","writeUInt8",1]),i.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),i.prototype.fieldSpec.push(["pcpu","writeUInt8",1]),i.prototype.fieldSpec.push(["tname","string",15]),i.prototype.fieldSpec.push(["cmdline","string",null]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_MEM_STATE",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_MEM_STATE",s.prototype.msg_type=32513,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint8("pmem").string("tname",{length:15}).string("cmdline",{greedy:!0}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["index","writeUInt8",1]),s.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),s.prototype.fieldSpec.push(["pmem","writeUInt8",1]),s.prototype.fieldSpec.push(["tname","string",15]),s.prototype.fieldSpec.push(["cmdline","string",null]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_SYS_STATE",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_SYS_STATE",n.prototype.msg_type=32514,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint16("mem_total").uint8("pcpu").uint8("pmem").uint16("procs_starting").uint16("procs_stopping").uint16("pid_count"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["mem_total","writeUInt16LE",2]),n.prototype.fieldSpec.push(["pcpu","writeUInt8",1]),n.prototype.fieldSpec.push(["pmem","writeUInt8",1]),n.prototype.fieldSpec.push(["procs_starting","writeUInt16LE",2]),n.prototype.fieldSpec.push(["procs_stopping","writeUInt16LE",2]),n.prototype.fieldSpec.push(["pid_count","writeUInt16LE",2]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_PROCESS_SOCKET_COUNTS",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_PROCESS_SOCKET_COUNTS",a.prototype.msg_type=32515,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint16("socket_count").uint16("socket_types").uint16("socket_states").string("cmdline",{greedy:!0}),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["index","writeUInt8",1]),a.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),a.prototype.fieldSpec.push(["socket_count","writeUInt16LE",2]),a.prototype.fieldSpec.push(["socket_types","writeUInt16LE",2]),a.prototype.fieldSpec.push(["socket_states","writeUInt16LE",2]),a.prototype.fieldSpec.push(["cmdline","string",null]);var l=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_PROCESS_SOCKET_QUEUES",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_PROCESS_SOCKET_QUEUES",l.prototype.msg_type=32516,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint16("recv_queued").uint16("send_queued").uint16("socket_types").uint16("socket_states").string("address_of_largest",{length:64}).string("cmdline",{greedy:!0}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["index","writeUInt8",1]),l.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),l.prototype.fieldSpec.push(["recv_queued","writeUInt16LE",2]),l.prototype.fieldSpec.push(["send_queued","writeUInt16LE",2]),l.prototype.fieldSpec.push(["socket_types","writeUInt16LE",2]),l.prototype.fieldSpec.push(["socket_states","writeUInt16LE",2]),l.prototype.fieldSpec.push(["address_of_largest","string",64]),l.prototype.fieldSpec.push(["cmdline","string",null]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_SOCKET_USAGE",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_SOCKET_USAGE",c.prototype.msg_type=32517,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("avg_queue_depth").uint32("max_queue_depth").array("socket_state_counts",{length:16,type:"uint16le"}).array("socket_type_counts",{length:16,type:"uint16le"}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["avg_queue_depth","writeUInt32LE",4]),c.prototype.fieldSpec.push(["max_queue_depth","writeUInt32LE",4]),c.prototype.fieldSpec.push(["socket_state_counts","array","writeUInt16LE",function(){return 2},16]),c.prototype.fieldSpec.push(["socket_type_counts","array","writeUInt16LE",function(){return 2},16]);var u=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_PROCESS_FD_COUNT",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_PROCESS_FD_COUNT",u.prototype.msg_type=32518,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint16("fd_count").string("cmdline",{greedy:!0}),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["index","writeUInt8",1]),u.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),u.prototype.fieldSpec.push(["fd_count","writeUInt16LE",2]),u.prototype.fieldSpec.push(["cmdline","string",null]);var y=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_PROCESS_FD_SUMMARY",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_PROCESS_FD_SUMMARY",y.prototype.msg_type=32519,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").uint32("sys_fd_count").string("most_opened",{greedy:!0}),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["sys_fd_count","writeUInt32LE",4]),y.prototype.fieldSpec.push(["most_opened","string",null]),e.exports={32512:i,MsgLinuxCpuState:i,32513:s,MsgLinuxMemState:s,32514:n,MsgLinuxSysState:n,32515:a,MsgLinuxProcessSocketCounts:a,32516:l,MsgLinuxProcessSocketQueues:l,32517:c,MsgLinuxSocketUsage:c,32518:u,MsgLinuxProcessFdCount:u,32519:y,MsgLinuxProcessFdSummary:y}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_LOG",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_LOG",i.prototype.msg_type=1025,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("level").string("text",{greedy:!0}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["level","writeUInt8",1]),i.prototype.fieldSpec.push(["text","string",null]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_FWD",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_FWD",s.prototype.msg_type=1026,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("source").uint8("protocol").string("fwd_payload",{greedy:!0}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["source","writeUInt8",1]),s.prototype.fieldSpec.push(["protocol","writeUInt8",1]),s.prototype.fieldSpec.push(["fwd_payload","string",null]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_PRINT_DEP",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_PRINT_DEP",n.prototype.msg_type=16,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").string("text",{greedy:!0}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["text","string",null]),e.exports={1025:i,MsgLog:i,1026:s,MsgFwd:s,16:n,MsgPrintDep:n}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_MAG_RAW",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_MAG_RAW",i.prototype.msg_type=2306,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("tow").uint8("tow_f").int16("mag_x").int16("mag_y").int16("mag_z"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["tow_f","writeUInt8",1]),i.prototype.fieldSpec.push(["mag_x","writeInt16LE",2]),i.prototype.fieldSpec.push(["mag_y","writeInt16LE",2]),i.prototype.fieldSpec.push(["mag_z","writeInt16LE",2]),e.exports={2306:i,MsgMagRaw:i}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_GPS_TIME",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_GPS_TIME",i.prototype.msg_type=258,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint16("wn").uint32("tow").int32("ns_residual").uint8("flags"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["wn","writeUInt16LE",2]),i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["ns_residual","writeInt32LE",4]),i.prototype.fieldSpec.push(["flags","writeUInt8",1]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_UTC_TIME",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_UTC_TIME",s.prototype.msg_type=259,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("flags").uint32("tow").uint16("year").uint8("month").uint8("day").uint8("hours").uint8("minutes").uint8("seconds").uint32("ns"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["flags","writeUInt8",1]),s.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),s.prototype.fieldSpec.push(["year","writeUInt16LE",2]),s.prototype.fieldSpec.push(["month","writeUInt8",1]),s.prototype.fieldSpec.push(["day","writeUInt8",1]),s.prototype.fieldSpec.push(["hours","writeUInt8",1]),s.prototype.fieldSpec.push(["minutes","writeUInt8",1]),s.prototype.fieldSpec.push(["seconds","writeUInt8",1]),s.prototype.fieldSpec.push(["ns","writeUInt32LE",4]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_DOPS",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_DOPS",n.prototype.msg_type=520,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint32("tow").uint16("gdop").uint16("pdop").uint16("tdop").uint16("hdop").uint16("vdop").uint8("flags"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),n.prototype.fieldSpec.push(["gdop","writeUInt16LE",2]),n.prototype.fieldSpec.push(["pdop","writeUInt16LE",2]),n.prototype.fieldSpec.push(["tdop","writeUInt16LE",2]),n.prototype.fieldSpec.push(["hdop","writeUInt16LE",2]),n.prototype.fieldSpec.push(["vdop","writeUInt16LE",2]),n.prototype.fieldSpec.push(["flags","writeUInt8",1]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_POS_ECEF",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_POS_ECEF",a.prototype.msg_type=521,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint32("tow").doublele("x").doublele("y").doublele("z").uint16("accuracy").uint8("n_sats").uint8("flags"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),a.prototype.fieldSpec.push(["x","writeDoubleLE",8]),a.prototype.fieldSpec.push(["y","writeDoubleLE",8]),a.prototype.fieldSpec.push(["z","writeDoubleLE",8]),a.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),a.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),a.prototype.fieldSpec.push(["flags","writeUInt8",1]);var l=function(e,t){return p.call(this,e),this.messageType="MSG_POS_ECEF_COV",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_POS_ECEF_COV",l.prototype.msg_type=532,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint32("tow").doublele("x").doublele("y").doublele("z").floatle("cov_x_x").floatle("cov_x_y").floatle("cov_x_z").floatle("cov_y_y").floatle("cov_y_z").floatle("cov_z_z").uint8("n_sats").uint8("flags"),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),l.prototype.fieldSpec.push(["x","writeDoubleLE",8]),l.prototype.fieldSpec.push(["y","writeDoubleLE",8]),l.prototype.fieldSpec.push(["z","writeDoubleLE",8]),l.prototype.fieldSpec.push(["cov_x_x","writeFloatLE",4]),l.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),l.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),l.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),l.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),l.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),l.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),l.prototype.fieldSpec.push(["flags","writeUInt8",1]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_POS_LLH",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_POS_LLH",c.prototype.msg_type=522,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("tow").doublele("lat").doublele("lon").doublele("height").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),c.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),c.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),c.prototype.fieldSpec.push(["height","writeDoubleLE",8]),c.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),c.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),c.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),c.prototype.fieldSpec.push(["flags","writeUInt8",1]);var u=function(e,t){return p.call(this,e),this.messageType="MSG_POS_LLH_COV",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_POS_LLH_COV",u.prototype.msg_type=529,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("tow").doublele("lat").doublele("lon").doublele("height").floatle("cov_n_n").floatle("cov_n_e").floatle("cov_n_d").floatle("cov_e_e").floatle("cov_e_d").floatle("cov_d_d").uint8("n_sats").uint8("flags"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),u.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),u.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),u.prototype.fieldSpec.push(["height","writeDoubleLE",8]),u.prototype.fieldSpec.push(["cov_n_n","writeFloatLE",4]),u.prototype.fieldSpec.push(["cov_n_e","writeFloatLE",4]),u.prototype.fieldSpec.push(["cov_n_d","writeFloatLE",4]),u.prototype.fieldSpec.push(["cov_e_e","writeFloatLE",4]),u.prototype.fieldSpec.push(["cov_e_d","writeFloatLE",4]),u.prototype.fieldSpec.push(["cov_d_d","writeFloatLE",4]),u.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),u.prototype.fieldSpec.push(["flags","writeUInt8",1]);var y=function(e,t){return p.call(this,e),this.messageType="MSG_BASELINE_ECEF",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="MSG_BASELINE_ECEF",y.prototype.msg_type=523,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint16("accuracy").uint8("n_sats").uint8("flags"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),y.prototype.fieldSpec.push(["x","writeInt32LE",4]),y.prototype.fieldSpec.push(["y","writeInt32LE",4]),y.prototype.fieldSpec.push(["z","writeInt32LE",4]),y.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),y.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),y.prototype.fieldSpec.push(["flags","writeUInt8",1]);var h=function(e,t){return p.call(this,e),this.messageType="MSG_BASELINE_NED",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_BASELINE_NED",h.prototype.msg_type=524,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),h.prototype.fieldSpec.push(["n","writeInt32LE",4]),h.prototype.fieldSpec.push(["e","writeInt32LE",4]),h.prototype.fieldSpec.push(["d","writeInt32LE",4]),h.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),h.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),h.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),h.prototype.fieldSpec.push(["flags","writeUInt8",1]);var f=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_ECEF",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="MSG_VEL_ECEF",f.prototype.msg_type=525,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint16("accuracy").uint8("n_sats").uint8("flags"),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),f.prototype.fieldSpec.push(["x","writeInt32LE",4]),f.prototype.fieldSpec.push(["y","writeInt32LE",4]),f.prototype.fieldSpec.push(["z","writeInt32LE",4]),f.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),f.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),f.prototype.fieldSpec.push(["flags","writeUInt8",1]);var d=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_ECEF_COV",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(p.prototype)).messageType="MSG_VEL_ECEF_COV",d.prototype.msg_type=533,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").floatle("cov_x_x").floatle("cov_x_y").floatle("cov_x_z").floatle("cov_y_y").floatle("cov_y_z").floatle("cov_z_z").uint8("n_sats").uint8("flags"),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),d.prototype.fieldSpec.push(["x","writeInt32LE",4]),d.prototype.fieldSpec.push(["y","writeInt32LE",4]),d.prototype.fieldSpec.push(["z","writeInt32LE",4]),d.prototype.fieldSpec.push(["cov_x_x","writeFloatLE",4]),d.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),d.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),d.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),d.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),d.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),d.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),d.prototype.fieldSpec.push(["flags","writeUInt8",1]);var _=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_NED",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(p.prototype)).messageType="MSG_VEL_NED",_.prototype.msg_type=526,_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),_.prototype.fieldSpec=[],_.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),_.prototype.fieldSpec.push(["n","writeInt32LE",4]),_.prototype.fieldSpec.push(["e","writeInt32LE",4]),_.prototype.fieldSpec.push(["d","writeInt32LE",4]),_.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),_.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),_.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),_.prototype.fieldSpec.push(["flags","writeUInt8",1]);var S=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_NED_COV",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(p.prototype)).messageType="MSG_VEL_NED_COV",S.prototype.msg_type=530,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").floatle("cov_n_n").floatle("cov_n_e").floatle("cov_n_d").floatle("cov_e_e").floatle("cov_e_d").floatle("cov_d_d").uint8("n_sats").uint8("flags"),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),S.prototype.fieldSpec.push(["n","writeInt32LE",4]),S.prototype.fieldSpec.push(["e","writeInt32LE",4]),S.prototype.fieldSpec.push(["d","writeInt32LE",4]),S.prototype.fieldSpec.push(["cov_n_n","writeFloatLE",4]),S.prototype.fieldSpec.push(["cov_n_e","writeFloatLE",4]),S.prototype.fieldSpec.push(["cov_n_d","writeFloatLE",4]),S.prototype.fieldSpec.push(["cov_e_e","writeFloatLE",4]),S.prototype.fieldSpec.push(["cov_e_d","writeFloatLE",4]),S.prototype.fieldSpec.push(["cov_d_d","writeFloatLE",4]),S.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),S.prototype.fieldSpec.push(["flags","writeUInt8",1]);var g=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_BODY",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(p.prototype)).messageType="MSG_VEL_BODY",g.prototype.msg_type=531,g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").floatle("cov_x_x").floatle("cov_x_y").floatle("cov_x_z").floatle("cov_y_y").floatle("cov_y_z").floatle("cov_z_z").uint8("n_sats").uint8("flags"),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),g.prototype.fieldSpec.push(["x","writeInt32LE",4]),g.prototype.fieldSpec.push(["y","writeInt32LE",4]),g.prototype.fieldSpec.push(["z","writeInt32LE",4]),g.prototype.fieldSpec.push(["cov_x_x","writeFloatLE",4]),g.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),g.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),g.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),g.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),g.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),g.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),g.prototype.fieldSpec.push(["flags","writeUInt8",1]);var w=function(e,t){return p.call(this,e),this.messageType="MSG_AGE_CORRECTIONS",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(p.prototype)).messageType="MSG_AGE_CORRECTIONS",w.prototype.msg_type=528,w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").uint32("tow").uint16("age"),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),w.prototype.fieldSpec.push(["age","writeUInt16LE",2]);var E=function(e,t){return p.call(this,e),this.messageType="MSG_GPS_TIME_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(p.prototype)).messageType="MSG_GPS_TIME_DEP_A",E.prototype.msg_type=256,E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").uint16("wn").uint32("tow").int32("ns_residual").uint8("flags"),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["wn","writeUInt16LE",2]),E.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),E.prototype.fieldSpec.push(["ns_residual","writeInt32LE",4]),E.prototype.fieldSpec.push(["flags","writeUInt8",1]);var m=function(e,t){return p.call(this,e),this.messageType="MSG_DOPS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(p.prototype)).messageType="MSG_DOPS_DEP_A",m.prototype.msg_type=518,m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").uint32("tow").uint16("gdop").uint16("pdop").uint16("tdop").uint16("hdop").uint16("vdop"),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),m.prototype.fieldSpec.push(["gdop","writeUInt16LE",2]),m.prototype.fieldSpec.push(["pdop","writeUInt16LE",2]),m.prototype.fieldSpec.push(["tdop","writeUInt16LE",2]),m.prototype.fieldSpec.push(["hdop","writeUInt16LE",2]),m.prototype.fieldSpec.push(["vdop","writeUInt16LE",2]);var b=function(e,t){return p.call(this,e),this.messageType="MSG_POS_ECEF_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(p.prototype)).messageType="MSG_POS_ECEF_DEP_A",b.prototype.msg_type=512,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").uint32("tow").doublele("x").doublele("y").doublele("z").uint16("accuracy").uint8("n_sats").uint8("flags"),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),b.prototype.fieldSpec.push(["x","writeDoubleLE",8]),b.prototype.fieldSpec.push(["y","writeDoubleLE",8]),b.prototype.fieldSpec.push(["z","writeDoubleLE",8]),b.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),b.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),b.prototype.fieldSpec.push(["flags","writeUInt8",1]);var v=function(e,t){return p.call(this,e),this.messageType="MSG_POS_LLH_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(p.prototype)).messageType="MSG_POS_LLH_DEP_A",v.prototype.msg_type=513,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").uint32("tow").doublele("lat").doublele("lon").doublele("height").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),v.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),v.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),v.prototype.fieldSpec.push(["height","writeDoubleLE",8]),v.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),v.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),v.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),v.prototype.fieldSpec.push(["flags","writeUInt8",1]);var L=function(e,t){return p.call(this,e),this.messageType="MSG_BASELINE_ECEF_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(p.prototype)).messageType="MSG_BASELINE_ECEF_DEP_A",L.prototype.msg_type=514,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint16("accuracy").uint8("n_sats").uint8("flags"),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),L.prototype.fieldSpec.push(["x","writeInt32LE",4]),L.prototype.fieldSpec.push(["y","writeInt32LE",4]),L.prototype.fieldSpec.push(["z","writeInt32LE",4]),L.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),L.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),L.prototype.fieldSpec.push(["flags","writeUInt8",1]);var T=function(e,t){return p.call(this,e),this.messageType="MSG_BASELINE_NED_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(p.prototype)).messageType="MSG_BASELINE_NED_DEP_A",T.prototype.msg_type=515,T.prototype.constructor=T,T.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),T.prototype.fieldSpec=[],T.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),T.prototype.fieldSpec.push(["n","writeInt32LE",4]),T.prototype.fieldSpec.push(["e","writeInt32LE",4]),T.prototype.fieldSpec.push(["d","writeInt32LE",4]),T.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),T.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),T.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),T.prototype.fieldSpec.push(["flags","writeUInt8",1]);var I=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_ECEF_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(p.prototype)).messageType="MSG_VEL_ECEF_DEP_A",I.prototype.msg_type=516,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint16("accuracy").uint8("n_sats").uint8("flags"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),I.prototype.fieldSpec.push(["x","writeInt32LE",4]),I.prototype.fieldSpec.push(["y","writeInt32LE",4]),I.prototype.fieldSpec.push(["z","writeInt32LE",4]),I.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),I.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),I.prototype.fieldSpec.push(["flags","writeUInt8",1]);var M=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_NED_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(p.prototype)).messageType="MSG_VEL_NED_DEP_A",M.prototype.msg_type=517,M.prototype.constructor=M,M.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),M.prototype.fieldSpec=[],M.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),M.prototype.fieldSpec.push(["n","writeInt32LE",4]),M.prototype.fieldSpec.push(["e","writeInt32LE",4]),M.prototype.fieldSpec.push(["d","writeInt32LE",4]),M.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),M.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),M.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),M.prototype.fieldSpec.push(["flags","writeUInt8",1]);var U=function(e,t){return p.call(this,e),this.messageType="MSG_BASELINE_HEADING_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(p.prototype)).messageType="MSG_BASELINE_HEADING_DEP_A",U.prototype.msg_type=519,U.prototype.constructor=U,U.prototype.parser=(new o).endianess("little").uint32("tow").uint32("heading").uint8("n_sats").uint8("flags"),U.prototype.fieldSpec=[],U.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),U.prototype.fieldSpec.push(["heading","writeUInt32LE",4]),U.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),U.prototype.fieldSpec.push(["flags","writeUInt8",1]),e.exports={258:i,MsgGpsTime:i,259:s,MsgUtcTime:s,520:n,MsgDops:n,521:a,MsgPosEcef:a,532:l,MsgPosEcefCov:l,522:c,MsgPosLlh:c,529:u,MsgPosLlhCov:u,523:y,MsgBaselineEcef:y,524:h,MsgBaselineNed:h,525:f,MsgVelEcef:f,533:d,MsgVelEcefCov:d,526:_,MsgVelNed:_,530:S,MsgVelNedCov:S,531:g,MsgVelBody:g,528:w,MsgAgeCorrections:w,256:E,MsgGpsTimeDepA:E,518:m,MsgDopsDepA:m,512:b,MsgPosEcefDepA:b,513:v,MsgPosLlhDepA:v,514:L,MsgBaselineEcefDepA:L,515:T,MsgBaselineNedDepA:T,516:I,MsgVelEcefDepA:I,517:M,MsgVelNedDepA:M,519:U,MsgBaselineHeadingDepA:U}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,r(0).GnssSignal),s=(r(0).GnssSignalDep,r(0).GPSTime,r(0).CarrierPhase,r(0).GPSTime,r(0).GPSTimeSec,r(0).GPSTimeDep,r(0).SvId,function(e,t){return p.call(this,e),this.messageType="MSG_NDB_EVENT",this.fields=t||this.parser.parse(e.payload),this});(s.prototype=Object.create(p.prototype)).messageType="MSG_NDB_EVENT",s.prototype.msg_type=1024,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint64("recv_time").uint8("event").uint8("object_type").uint8("result").uint8("data_source").nest("object_sid",{type:i.prototype.parser}).nest("src_sid",{type:i.prototype.parser}).uint16("original_sender"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["recv_time","writeUInt64LE",8]),s.prototype.fieldSpec.push(["event","writeUInt8",1]),s.prototype.fieldSpec.push(["object_type","writeUInt8",1]),s.prototype.fieldSpec.push(["result","writeUInt8",1]),s.prototype.fieldSpec.push(["data_source","writeUInt8",1]),s.prototype.fieldSpec.push(["object_sid",i.prototype.fieldSpec]),s.prototype.fieldSpec.push(["src_sid",i.prototype.fieldSpec]),s.prototype.fieldSpec.push(["original_sender","writeUInt16LE",2]),e.exports={1024:s,MsgNdbEvent:s}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,r(0).GnssSignal),s=r(0).GnssSignalDep,n=r(0).GPSTime,a=r(0).CarrierPhase,l=(n=r(0).GPSTime,r(0).GPSTimeSec),c=r(0).GPSTimeDep,u=(r(0).SvId,function(e,t){return p.call(this,e),this.messageType="ObservationHeader",this.fields=t||this.parser.parse(e.payload),this});(u.prototype=Object.create(p.prototype)).messageType="ObservationHeader",u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").nest("t",{type:n.prototype.parser}).uint8("n_obs"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["t",n.prototype.fieldSpec]),u.prototype.fieldSpec.push(["n_obs","writeUInt8",1]);var y=function(e,t){return p.call(this,e),this.messageType="Doppler",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="Doppler",y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").int16("i").uint8("f"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["i","writeInt16LE",2]),y.prototype.fieldSpec.push(["f","writeUInt8",1]);var h=function(e,t){return p.call(this,e),this.messageType="PackedObsContent",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="PackedObsContent",h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:a.prototype.parser}).nest("D",{type:y.prototype.parser}).uint8("cn0").uint8("lock").uint8("flags").nest("sid",{type:i.prototype.parser}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["P","writeUInt32LE",4]),h.prototype.fieldSpec.push(["L",a.prototype.fieldSpec]),h.prototype.fieldSpec.push(["D",y.prototype.fieldSpec]),h.prototype.fieldSpec.push(["cn0","writeUInt8",1]),h.prototype.fieldSpec.push(["lock","writeUInt8",1]),h.prototype.fieldSpec.push(["flags","writeUInt8",1]),h.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]);var f=function(e,t){return p.call(this,e),this.messageType="PackedOsrContent",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="PackedOsrContent",f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:a.prototype.parser}).uint8("lock").uint8("flags").nest("sid",{type:i.prototype.parser}).uint16("iono_std").uint16("tropo_std").uint16("range_std"),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["P","writeUInt32LE",4]),f.prototype.fieldSpec.push(["L",a.prototype.fieldSpec]),f.prototype.fieldSpec.push(["lock","writeUInt8",1]),f.prototype.fieldSpec.push(["flags","writeUInt8",1]),f.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),f.prototype.fieldSpec.push(["iono_std","writeUInt16LE",2]),f.prototype.fieldSpec.push(["tropo_std","writeUInt16LE",2]),f.prototype.fieldSpec.push(["range_std","writeUInt16LE",2]);var d=function(e,t){return p.call(this,e),this.messageType="MSG_OBS",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(p.prototype)).messageType="MSG_OBS",d.prototype.msg_type=74,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").nest("header",{type:u.prototype.parser}).array("obs",{type:h.prototype.parser,readUntil:"eof"}),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["header",u.prototype.fieldSpec]),d.prototype.fieldSpec.push(["obs","array",h.prototype.fieldSpec,function(){return this.fields.array.length},null]);var _=function(e,t){return p.call(this,e),this.messageType="MSG_BASE_POS_LLH",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(p.prototype)).messageType="MSG_BASE_POS_LLH",_.prototype.msg_type=68,_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little").doublele("lat").doublele("lon").doublele("height"),_.prototype.fieldSpec=[],_.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),_.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),_.prototype.fieldSpec.push(["height","writeDoubleLE",8]);var S=function(e,t){return p.call(this,e),this.messageType="MSG_BASE_POS_ECEF",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(p.prototype)).messageType="MSG_BASE_POS_ECEF",S.prototype.msg_type=72,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").doublele("x").doublele("y").doublele("z"),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["x","writeDoubleLE",8]),S.prototype.fieldSpec.push(["y","writeDoubleLE",8]),S.prototype.fieldSpec.push(["z","writeDoubleLE",8]);var g=function(e,t){return p.call(this,e),this.messageType="EphemerisCommonContent",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(p.prototype)).messageType="EphemerisCommonContent",g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").nest("sid",{type:i.prototype.parser}).nest("toe",{type:l.prototype.parser}).floatle("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),g.prototype.fieldSpec.push(["toe",l.prototype.fieldSpec]),g.prototype.fieldSpec.push(["ura","writeFloatLE",4]),g.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),g.prototype.fieldSpec.push(["valid","writeUInt8",1]),g.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);var w=function(e,t){return p.call(this,e),this.messageType="EphemerisCommonContentDepB",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(p.prototype)).messageType="EphemerisCommonContentDepB",w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").nest("sid",{type:i.prototype.parser}).nest("toe",{type:l.prototype.parser}).doublele("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),w.prototype.fieldSpec.push(["toe",l.prototype.fieldSpec]),w.prototype.fieldSpec.push(["ura","writeDoubleLE",8]),w.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),w.prototype.fieldSpec.push(["valid","writeUInt8",1]),w.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);var E=function(e,t){return p.call(this,e),this.messageType="EphemerisCommonContentDepA",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(p.prototype)).messageType="EphemerisCommonContentDepA",E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").nest("sid",{type:s.prototype.parser}).nest("toe",{type:c.prototype.parser}).doublele("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),E.prototype.fieldSpec.push(["toe",c.prototype.fieldSpec]),E.prototype.fieldSpec.push(["ura","writeDoubleLE",8]),E.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),E.prototype.fieldSpec.push(["valid","writeUInt8",1]),E.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);var m=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GPS_DEP_E",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GPS_DEP_E",m.prototype.msg_type=129,m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").nest("common",{type:E.prototype.parser}).doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").nest("toc",{type:c.prototype.parser}).uint8("iode").uint16("iodc"),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["common",E.prototype.fieldSpec]),m.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),m.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),m.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),m.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),m.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),m.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),m.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),m.prototype.fieldSpec.push(["w","writeDoubleLE",8]),m.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),m.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),m.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),m.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),m.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),m.prototype.fieldSpec.push(["toc",c.prototype.fieldSpec]),m.prototype.fieldSpec.push(["iode","writeUInt8",1]),m.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var b=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GPS_DEP_F",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GPS_DEP_F",b.prototype.msg_type=134,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").nest("common",{type:w.prototype.parser}).doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").nest("toc",{type:l.prototype.parser}).uint8("iode").uint16("iodc"),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["common",w.prototype.fieldSpec]),b.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),b.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),b.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),b.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),b.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),b.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),b.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),b.prototype.fieldSpec.push(["w","writeDoubleLE",8]),b.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),b.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),b.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),b.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),b.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),b.prototype.fieldSpec.push(["toc",l.prototype.fieldSpec]),b.prototype.fieldSpec.push(["iode","writeUInt8",1]),b.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var v=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GPS",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GPS",v.prototype.msg_type=138,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("tgd").floatle("c_rs").floatle("c_rc").floatle("c_uc").floatle("c_us").floatle("c_ic").floatle("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").floatle("af0").floatle("af1").floatle("af2").nest("toc",{type:l.prototype.parser}).uint8("iode").uint16("iodc"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),v.prototype.fieldSpec.push(["tgd","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_rs","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_rc","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_uc","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_us","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_ic","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_is","writeFloatLE",4]),v.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),v.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),v.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),v.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),v.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),v.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),v.prototype.fieldSpec.push(["w","writeDoubleLE",8]),v.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),v.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),v.prototype.fieldSpec.push(["af0","writeFloatLE",4]),v.prototype.fieldSpec.push(["af1","writeFloatLE",4]),v.prototype.fieldSpec.push(["af2","writeFloatLE",4]),v.prototype.fieldSpec.push(["toc",l.prototype.fieldSpec]),v.prototype.fieldSpec.push(["iode","writeUInt8",1]),v.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var L=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_BDS",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_BDS",L.prototype.msg_type=137,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("tgd1").floatle("tgd2").floatle("c_rs").floatle("c_rc").floatle("c_uc").floatle("c_us").floatle("c_ic").floatle("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").floatle("af1").floatle("af2").nest("toc",{type:l.prototype.parser}).uint8("iode").uint16("iodc"),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),L.prototype.fieldSpec.push(["tgd1","writeFloatLE",4]),L.prototype.fieldSpec.push(["tgd2","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_rs","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_rc","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_uc","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_us","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_ic","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_is","writeFloatLE",4]),L.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),L.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),L.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),L.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),L.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),L.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),L.prototype.fieldSpec.push(["w","writeDoubleLE",8]),L.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),L.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),L.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),L.prototype.fieldSpec.push(["af1","writeFloatLE",4]),L.prototype.fieldSpec.push(["af2","writeFloatLE",4]),L.prototype.fieldSpec.push(["toc",l.prototype.fieldSpec]),L.prototype.fieldSpec.push(["iode","writeUInt8",1]),L.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var T=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GAL_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GAL_DEP_A",T.prototype.msg_type=149,T.prototype.constructor=T,T.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("bgd_e1e5a").floatle("bgd_e1e5b").floatle("c_rs").floatle("c_rc").floatle("c_uc").floatle("c_us").floatle("c_ic").floatle("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").floatle("af2").nest("toc",{type:l.prototype.parser}).uint16("iode").uint16("iodc"),T.prototype.fieldSpec=[],T.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),T.prototype.fieldSpec.push(["bgd_e1e5a","writeFloatLE",4]),T.prototype.fieldSpec.push(["bgd_e1e5b","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_rs","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_rc","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_uc","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_us","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_ic","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_is","writeFloatLE",4]),T.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),T.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),T.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),T.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),T.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),T.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),T.prototype.fieldSpec.push(["w","writeDoubleLE",8]),T.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),T.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),T.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),T.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),T.prototype.fieldSpec.push(["af2","writeFloatLE",4]),T.prototype.fieldSpec.push(["toc",l.prototype.fieldSpec]),T.prototype.fieldSpec.push(["iode","writeUInt16LE",2]),T.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var I=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GAL",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GAL",I.prototype.msg_type=141,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("bgd_e1e5a").floatle("bgd_e1e5b").floatle("c_rs").floatle("c_rc").floatle("c_uc").floatle("c_us").floatle("c_ic").floatle("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").floatle("af2").nest("toc",{type:l.prototype.parser}).uint16("iode").uint16("iodc").uint8("source"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),I.prototype.fieldSpec.push(["bgd_e1e5a","writeFloatLE",4]),I.prototype.fieldSpec.push(["bgd_e1e5b","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_rs","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_rc","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_uc","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_us","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_ic","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_is","writeFloatLE",4]),I.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),I.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),I.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),I.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),I.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),I.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),I.prototype.fieldSpec.push(["w","writeDoubleLE",8]),I.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),I.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),I.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),I.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),I.prototype.fieldSpec.push(["af2","writeFloatLE",4]),I.prototype.fieldSpec.push(["toc",l.prototype.fieldSpec]),I.prototype.fieldSpec.push(["iode","writeUInt16LE",2]),I.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]),I.prototype.fieldSpec.push(["source","writeUInt8",1]);var M=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_SBAS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_SBAS_DEP_A",M.prototype.msg_type=130,M.prototype.constructor=M,M.prototype.parser=(new o).endianess("little").nest("common",{type:E.prototype.parser}).array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}).doublele("a_gf0").doublele("a_gf1"),M.prototype.fieldSpec=[],M.prototype.fieldSpec.push(["common",E.prototype.fieldSpec]),M.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),M.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),M.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]),M.prototype.fieldSpec.push(["a_gf0","writeDoubleLE",8]),M.prototype.fieldSpec.push(["a_gf1","writeDoubleLE",8]);var U=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GLO_DEP_A",U.prototype.msg_type=131,U.prototype.constructor=U,U.prototype.parser=(new o).endianess("little").nest("common",{type:E.prototype.parser}).doublele("gamma").doublele("tau").array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}),U.prototype.fieldSpec=[],U.prototype.fieldSpec.push(["common",E.prototype.fieldSpec]),U.prototype.fieldSpec.push(["gamma","writeDoubleLE",8]),U.prototype.fieldSpec.push(["tau","writeDoubleLE",8]),U.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),U.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),U.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]);var D=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_SBAS_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_SBAS_DEP_B",D.prototype.msg_type=132,D.prototype.constructor=D,D.prototype.parser=(new o).endianess("little").nest("common",{type:w.prototype.parser}).array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}).doublele("a_gf0").doublele("a_gf1"),D.prototype.fieldSpec=[],D.prototype.fieldSpec.push(["common",w.prototype.fieldSpec]),D.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),D.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),D.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]),D.prototype.fieldSpec.push(["a_gf0","writeDoubleLE",8]),D.prototype.fieldSpec.push(["a_gf1","writeDoubleLE",8]);var O=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_SBAS",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_SBAS",O.prototype.msg_type=140,O.prototype.constructor=O,O.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"floatle"}).array("acc",{length:3,type:"floatle"}).floatle("a_gf0").floatle("a_gf1"),O.prototype.fieldSpec=[],O.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),O.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),O.prototype.fieldSpec.push(["vel","array","writeFloatLE",function(){return 4},3]),O.prototype.fieldSpec.push(["acc","array","writeFloatLE",function(){return 4},3]),O.prototype.fieldSpec.push(["a_gf0","writeFloatLE",4]),O.prototype.fieldSpec.push(["a_gf1","writeFloatLE",4]);var A=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GLO_DEP_B",A.prototype.msg_type=133,A.prototype.constructor=A,A.prototype.parser=(new o).endianess("little").nest("common",{type:w.prototype.parser}).doublele("gamma").doublele("tau").array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}),A.prototype.fieldSpec=[],A.prototype.fieldSpec.push(["common",w.prototype.fieldSpec]),A.prototype.fieldSpec.push(["gamma","writeDoubleLE",8]),A.prototype.fieldSpec.push(["tau","writeDoubleLE",8]),A.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),A.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),A.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]);var G=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GLO_DEP_C",G.prototype.msg_type=135,G.prototype.constructor=G,G.prototype.parser=(new o).endianess("little").nest("common",{type:w.prototype.parser}).doublele("gamma").doublele("tau").doublele("d_tau").array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}).uint8("fcn"),G.prototype.fieldSpec=[],G.prototype.fieldSpec.push(["common",w.prototype.fieldSpec]),G.prototype.fieldSpec.push(["gamma","writeDoubleLE",8]),G.prototype.fieldSpec.push(["tau","writeDoubleLE",8]),G.prototype.fieldSpec.push(["d_tau","writeDoubleLE",8]),G.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),G.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),G.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]),G.prototype.fieldSpec.push(["fcn","writeUInt8",1]);var R=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_D",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GLO_DEP_D",R.prototype.msg_type=136,R.prototype.constructor=R,R.prototype.parser=(new o).endianess("little").nest("common",{type:w.prototype.parser}).doublele("gamma").doublele("tau").doublele("d_tau").array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}).uint8("fcn").uint8("iod"),R.prototype.fieldSpec=[],R.prototype.fieldSpec.push(["common",w.prototype.fieldSpec]),R.prototype.fieldSpec.push(["gamma","writeDoubleLE",8]),R.prototype.fieldSpec.push(["tau","writeDoubleLE",8]),R.prototype.fieldSpec.push(["d_tau","writeDoubleLE",8]),R.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),R.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),R.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]),R.prototype.fieldSpec.push(["fcn","writeUInt8",1]),R.prototype.fieldSpec.push(["iod","writeUInt8",1]);var C=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GLO",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GLO",C.prototype.msg_type=139,C.prototype.constructor=C,C.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("gamma").floatle("tau").floatle("d_tau").array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"floatle"}).uint8("fcn").uint8("iod"),C.prototype.fieldSpec=[],C.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),C.prototype.fieldSpec.push(["gamma","writeFloatLE",4]),C.prototype.fieldSpec.push(["tau","writeFloatLE",4]),C.prototype.fieldSpec.push(["d_tau","writeFloatLE",4]),C.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),C.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),C.prototype.fieldSpec.push(["acc","array","writeFloatLE",function(){return 4},3]),C.prototype.fieldSpec.push(["fcn","writeUInt8",1]),C.prototype.fieldSpec.push(["iod","writeUInt8",1]);var P=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_D",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_DEP_D",P.prototype.msg_type=128,P.prototype.constructor=P,P.prototype.parser=(new o).endianess("little").doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").doublele("toe_tow").uint16("toe_wn").doublele("toc_tow").uint16("toc_wn").uint8("valid").uint8("healthy").nest("sid",{type:s.prototype.parser}).uint8("iode").uint16("iodc").uint32("reserved"),P.prototype.fieldSpec=[],P.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),P.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),P.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),P.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),P.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),P.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),P.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),P.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),P.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),P.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),P.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),P.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),P.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),P.prototype.fieldSpec.push(["w","writeDoubleLE",8]),P.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),P.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),P.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),P.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),P.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),P.prototype.fieldSpec.push(["toe_tow","writeDoubleLE",8]),P.prototype.fieldSpec.push(["toe_wn","writeUInt16LE",2]),P.prototype.fieldSpec.push(["toc_tow","writeDoubleLE",8]),P.prototype.fieldSpec.push(["toc_wn","writeUInt16LE",2]),P.prototype.fieldSpec.push(["valid","writeUInt8",1]),P.prototype.fieldSpec.push(["healthy","writeUInt8",1]),P.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),P.prototype.fieldSpec.push(["iode","writeUInt8",1]),P.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]),P.prototype.fieldSpec.push(["reserved","writeUInt32LE",4]);var j=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_DEP_A",j.prototype.msg_type=26,j.prototype.constructor=j,j.prototype.parser=(new o).endianess("little").doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").doublele("toe_tow").uint16("toe_wn").doublele("toc_tow").uint16("toc_wn").uint8("valid").uint8("healthy").uint8("prn"),j.prototype.fieldSpec=[],j.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),j.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),j.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),j.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),j.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),j.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),j.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),j.prototype.fieldSpec.push(["w","writeDoubleLE",8]),j.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),j.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),j.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),j.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),j.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),j.prototype.fieldSpec.push(["toe_tow","writeDoubleLE",8]),j.prototype.fieldSpec.push(["toe_wn","writeUInt16LE",2]),j.prototype.fieldSpec.push(["toc_tow","writeDoubleLE",8]),j.prototype.fieldSpec.push(["toc_wn","writeUInt16LE",2]),j.prototype.fieldSpec.push(["valid","writeUInt8",1]),j.prototype.fieldSpec.push(["healthy","writeUInt8",1]),j.prototype.fieldSpec.push(["prn","writeUInt8",1]);var N=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(N.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_DEP_B",N.prototype.msg_type=70,N.prototype.constructor=N,N.prototype.parser=(new o).endianess("little").doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").doublele("toe_tow").uint16("toe_wn").doublele("toc_tow").uint16("toc_wn").uint8("valid").uint8("healthy").uint8("prn").uint8("iode"),N.prototype.fieldSpec=[],N.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),N.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),N.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),N.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),N.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),N.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),N.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),N.prototype.fieldSpec.push(["w","writeDoubleLE",8]),N.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),N.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),N.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),N.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),N.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),N.prototype.fieldSpec.push(["toe_tow","writeDoubleLE",8]),N.prototype.fieldSpec.push(["toe_wn","writeUInt16LE",2]),N.prototype.fieldSpec.push(["toc_tow","writeDoubleLE",8]),N.prototype.fieldSpec.push(["toc_wn","writeUInt16LE",2]),N.prototype.fieldSpec.push(["valid","writeUInt8",1]),N.prototype.fieldSpec.push(["healthy","writeUInt8",1]),N.prototype.fieldSpec.push(["prn","writeUInt8",1]),N.prototype.fieldSpec.push(["iode","writeUInt8",1]);var x=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(x.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_DEP_C",x.prototype.msg_type=71,x.prototype.constructor=x,x.prototype.parser=(new o).endianess("little").doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").doublele("toe_tow").uint16("toe_wn").doublele("toc_tow").uint16("toc_wn").uint8("valid").uint8("healthy").nest("sid",{type:s.prototype.parser}).uint8("iode").uint16("iodc").uint32("reserved"),x.prototype.fieldSpec=[],x.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),x.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),x.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),x.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),x.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),x.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),x.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),x.prototype.fieldSpec.push(["w","writeDoubleLE",8]),x.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),x.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),x.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),x.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),x.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),x.prototype.fieldSpec.push(["toe_tow","writeDoubleLE",8]),x.prototype.fieldSpec.push(["toe_wn","writeUInt16LE",2]),x.prototype.fieldSpec.push(["toc_tow","writeDoubleLE",8]),x.prototype.fieldSpec.push(["toc_wn","writeUInt16LE",2]),x.prototype.fieldSpec.push(["valid","writeUInt8",1]),x.prototype.fieldSpec.push(["healthy","writeUInt8",1]),x.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),x.prototype.fieldSpec.push(["iode","writeUInt8",1]),x.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]),x.prototype.fieldSpec.push(["reserved","writeUInt32LE",4]);var k=function(e,t){return p.call(this,e),this.messageType="ObservationHeaderDep",this.fields=t||this.parser.parse(e.payload),this};(k.prototype=Object.create(p.prototype)).messageType="ObservationHeaderDep",k.prototype.constructor=k,k.prototype.parser=(new o).endianess("little").nest("t",{type:c.prototype.parser}).uint8("n_obs"),k.prototype.fieldSpec=[],k.prototype.fieldSpec.push(["t",c.prototype.fieldSpec]),k.prototype.fieldSpec.push(["n_obs","writeUInt8",1]);var B=function(e,t){return p.call(this,e),this.messageType="CarrierPhaseDepA",this.fields=t||this.parser.parse(e.payload),this};(B.prototype=Object.create(p.prototype)).messageType="CarrierPhaseDepA",B.prototype.constructor=B,B.prototype.parser=(new o).endianess("little").int32("i").uint8("f"),B.prototype.fieldSpec=[],B.prototype.fieldSpec.push(["i","writeInt32LE",4]),B.prototype.fieldSpec.push(["f","writeUInt8",1]);var F=function(e,t){return p.call(this,e),this.messageType="PackedObsContentDepA",this.fields=t||this.parser.parse(e.payload),this};(F.prototype=Object.create(p.prototype)).messageType="PackedObsContentDepA",F.prototype.constructor=F,F.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:B.prototype.parser}).uint8("cn0").uint16("lock").uint8("prn"),F.prototype.fieldSpec=[],F.prototype.fieldSpec.push(["P","writeUInt32LE",4]),F.prototype.fieldSpec.push(["L",B.prototype.fieldSpec]),F.prototype.fieldSpec.push(["cn0","writeUInt8",1]),F.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),F.prototype.fieldSpec.push(["prn","writeUInt8",1]);var q=function(e,t){return p.call(this,e),this.messageType="PackedObsContentDepB",this.fields=t||this.parser.parse(e.payload),this};(q.prototype=Object.create(p.prototype)).messageType="PackedObsContentDepB",q.prototype.constructor=q,q.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:B.prototype.parser}).uint8("cn0").uint16("lock").nest("sid",{type:s.prototype.parser}),q.prototype.fieldSpec=[],q.prototype.fieldSpec.push(["P","writeUInt32LE",4]),q.prototype.fieldSpec.push(["L",B.prototype.fieldSpec]),q.prototype.fieldSpec.push(["cn0","writeUInt8",1]),q.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),q.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]);var z=function(e,t){return p.call(this,e),this.messageType="PackedObsContentDepC",this.fields=t||this.parser.parse(e.payload),this};(z.prototype=Object.create(p.prototype)).messageType="PackedObsContentDepC",z.prototype.constructor=z,z.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:a.prototype.parser}).uint8("cn0").uint16("lock").nest("sid",{type:s.prototype.parser}),z.prototype.fieldSpec=[],z.prototype.fieldSpec.push(["P","writeUInt32LE",4]),z.prototype.fieldSpec.push(["L",a.prototype.fieldSpec]),z.prototype.fieldSpec.push(["cn0","writeUInt8",1]),z.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),z.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]);var H=function(e,t){return p.call(this,e),this.messageType="MSG_OBS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(H.prototype=Object.create(p.prototype)).messageType="MSG_OBS_DEP_A",H.prototype.msg_type=69,H.prototype.constructor=H,H.prototype.parser=(new o).endianess("little").nest("header",{type:k.prototype.parser}).array("obs",{type:F.prototype.parser,readUntil:"eof"}),H.prototype.fieldSpec=[],H.prototype.fieldSpec.push(["header",k.prototype.fieldSpec]),H.prototype.fieldSpec.push(["obs","array",F.prototype.fieldSpec,function(){return this.fields.array.length},null]);var V=function(e,t){return p.call(this,e),this.messageType="MSG_OBS_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(V.prototype=Object.create(p.prototype)).messageType="MSG_OBS_DEP_B",V.prototype.msg_type=67,V.prototype.constructor=V,V.prototype.parser=(new o).endianess("little").nest("header",{type:k.prototype.parser}).array("obs",{type:q.prototype.parser,readUntil:"eof"}),V.prototype.fieldSpec=[],V.prototype.fieldSpec.push(["header",k.prototype.fieldSpec]),V.prototype.fieldSpec.push(["obs","array",q.prototype.fieldSpec,function(){return this.fields.array.length},null]);var Y=function(e,t){return p.call(this,e),this.messageType="MSG_OBS_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(Y.prototype=Object.create(p.prototype)).messageType="MSG_OBS_DEP_C",Y.prototype.msg_type=73,Y.prototype.constructor=Y,Y.prototype.parser=(new o).endianess("little").nest("header",{type:k.prototype.parser}).array("obs",{type:z.prototype.parser,readUntil:"eof"}),Y.prototype.fieldSpec=[],Y.prototype.fieldSpec.push(["header",k.prototype.fieldSpec]),Y.prototype.fieldSpec.push(["obs","array",z.prototype.fieldSpec,function(){return this.fields.array.length},null]);var W=function(e,t){return p.call(this,e),this.messageType="MSG_IONO",this.fields=t||this.parser.parse(e.payload),this};(W.prototype=Object.create(p.prototype)).messageType="MSG_IONO",W.prototype.msg_type=144,W.prototype.constructor=W,W.prototype.parser=(new o).endianess("little").nest("t_nmct",{type:l.prototype.parser}).doublele("a0").doublele("a1").doublele("a2").doublele("a3").doublele("b0").doublele("b1").doublele("b2").doublele("b3"),W.prototype.fieldSpec=[],W.prototype.fieldSpec.push(["t_nmct",l.prototype.fieldSpec]),W.prototype.fieldSpec.push(["a0","writeDoubleLE",8]),W.prototype.fieldSpec.push(["a1","writeDoubleLE",8]),W.prototype.fieldSpec.push(["a2","writeDoubleLE",8]),W.prototype.fieldSpec.push(["a3","writeDoubleLE",8]),W.prototype.fieldSpec.push(["b0","writeDoubleLE",8]),W.prototype.fieldSpec.push(["b1","writeDoubleLE",8]),W.prototype.fieldSpec.push(["b2","writeDoubleLE",8]),W.prototype.fieldSpec.push(["b3","writeDoubleLE",8]);var Q=function(e,t){return p.call(this,e),this.messageType="MSG_SV_CONFIGURATION_GPS_DEP",this.fields=t||this.parser.parse(e.payload),this};(Q.prototype=Object.create(p.prototype)).messageType="MSG_SV_CONFIGURATION_GPS_DEP",Q.prototype.msg_type=145,Q.prototype.constructor=Q,Q.prototype.parser=(new o).endianess("little").nest("t_nmct",{type:l.prototype.parser}).uint32("l2c_mask"),Q.prototype.fieldSpec=[],Q.prototype.fieldSpec.push(["t_nmct",l.prototype.fieldSpec]),Q.prototype.fieldSpec.push(["l2c_mask","writeUInt32LE",4]);var K=function(e,t){return p.call(this,e),this.messageType="GnssCapb",this.fields=t||this.parser.parse(e.payload),this};(K.prototype=Object.create(p.prototype)).messageType="GnssCapb",K.prototype.constructor=K,K.prototype.parser=(new o).endianess("little").uint64("gps_active").uint64("gps_l2c").uint64("gps_l5").uint32("glo_active").uint32("glo_l2of").uint32("glo_l3").uint64("sbas_active").uint64("sbas_l5").uint64("bds_active").uint64("bds_d2nav").uint64("bds_b2").uint64("bds_b2a").uint32("qzss_active").uint64("gal_active").uint64("gal_e5"),K.prototype.fieldSpec=[],K.prototype.fieldSpec.push(["gps_active","writeUInt64LE",8]),K.prototype.fieldSpec.push(["gps_l2c","writeUInt64LE",8]),K.prototype.fieldSpec.push(["gps_l5","writeUInt64LE",8]),K.prototype.fieldSpec.push(["glo_active","writeUInt32LE",4]),K.prototype.fieldSpec.push(["glo_l2of","writeUInt32LE",4]),K.prototype.fieldSpec.push(["glo_l3","writeUInt32LE",4]),K.prototype.fieldSpec.push(["sbas_active","writeUInt64LE",8]),K.prototype.fieldSpec.push(["sbas_l5","writeUInt64LE",8]),K.prototype.fieldSpec.push(["bds_active","writeUInt64LE",8]),K.prototype.fieldSpec.push(["bds_d2nav","writeUInt64LE",8]),K.prototype.fieldSpec.push(["bds_b2","writeUInt64LE",8]),K.prototype.fieldSpec.push(["bds_b2a","writeUInt64LE",8]),K.prototype.fieldSpec.push(["qzss_active","writeUInt32LE",4]),K.prototype.fieldSpec.push(["gal_active","writeUInt64LE",8]),K.prototype.fieldSpec.push(["gal_e5","writeUInt64LE",8]);var X=function(e,t){return p.call(this,e),this.messageType="MSG_GNSS_CAPB",this.fields=t||this.parser.parse(e.payload),this};(X.prototype=Object.create(p.prototype)).messageType="MSG_GNSS_CAPB",X.prototype.msg_type=150,X.prototype.constructor=X,X.prototype.parser=(new o).endianess("little").nest("t_nmct",{type:l.prototype.parser}).nest("gc",{type:K.prototype.parser}),X.prototype.fieldSpec=[],X.prototype.fieldSpec.push(["t_nmct",l.prototype.fieldSpec]),X.prototype.fieldSpec.push(["gc",K.prototype.fieldSpec]);var J=function(e,t){return p.call(this,e),this.messageType="MSG_GROUP_DELAY_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(J.prototype=Object.create(p.prototype)).messageType="MSG_GROUP_DELAY_DEP_A",J.prototype.msg_type=146,J.prototype.constructor=J,J.prototype.parser=(new o).endianess("little").nest("t_op",{type:c.prototype.parser}).uint8("prn").uint8("valid").int16("tgd").int16("isc_l1ca").int16("isc_l2c"),J.prototype.fieldSpec=[],J.prototype.fieldSpec.push(["t_op",c.prototype.fieldSpec]),J.prototype.fieldSpec.push(["prn","writeUInt8",1]),J.prototype.fieldSpec.push(["valid","writeUInt8",1]),J.prototype.fieldSpec.push(["tgd","writeInt16LE",2]),J.prototype.fieldSpec.push(["isc_l1ca","writeInt16LE",2]),J.prototype.fieldSpec.push(["isc_l2c","writeInt16LE",2]);var $=function(e,t){return p.call(this,e),this.messageType="MSG_GROUP_DELAY_DEP_B",this.fields=t||this.parser.parse(e.payload),this};($.prototype=Object.create(p.prototype)).messageType="MSG_GROUP_DELAY_DEP_B",$.prototype.msg_type=147,$.prototype.constructor=$,$.prototype.parser=(new o).endianess("little").nest("t_op",{type:l.prototype.parser}).nest("sid",{type:s.prototype.parser}).uint8("valid").int16("tgd").int16("isc_l1ca").int16("isc_l2c"),$.prototype.fieldSpec=[],$.prototype.fieldSpec.push(["t_op",l.prototype.fieldSpec]),$.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),$.prototype.fieldSpec.push(["valid","writeUInt8",1]),$.prototype.fieldSpec.push(["tgd","writeInt16LE",2]),$.prototype.fieldSpec.push(["isc_l1ca","writeInt16LE",2]),$.prototype.fieldSpec.push(["isc_l2c","writeInt16LE",2]);var Z=function(e,t){return p.call(this,e),this.messageType="MSG_GROUP_DELAY",this.fields=t||this.parser.parse(e.payload),this};(Z.prototype=Object.create(p.prototype)).messageType="MSG_GROUP_DELAY",Z.prototype.msg_type=148,Z.prototype.constructor=Z,Z.prototype.parser=(new o).endianess("little").nest("t_op",{type:l.prototype.parser}).nest("sid",{type:i.prototype.parser}).uint8("valid").int16("tgd").int16("isc_l1ca").int16("isc_l2c"),Z.prototype.fieldSpec=[],Z.prototype.fieldSpec.push(["t_op",l.prototype.fieldSpec]),Z.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),Z.prototype.fieldSpec.push(["valid","writeUInt8",1]),Z.prototype.fieldSpec.push(["tgd","writeInt16LE",2]),Z.prototype.fieldSpec.push(["isc_l1ca","writeInt16LE",2]),Z.prototype.fieldSpec.push(["isc_l2c","writeInt16LE",2]);var ee=function(e,t){return p.call(this,e),this.messageType="AlmanacCommonContent",this.fields=t||this.parser.parse(e.payload),this};(ee.prototype=Object.create(p.prototype)).messageType="AlmanacCommonContent",ee.prototype.constructor=ee,ee.prototype.parser=(new o).endianess("little").nest("sid",{type:i.prototype.parser}).nest("toa",{type:l.prototype.parser}).doublele("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),ee.prototype.fieldSpec=[],ee.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),ee.prototype.fieldSpec.push(["toa",l.prototype.fieldSpec]),ee.prototype.fieldSpec.push(["ura","writeDoubleLE",8]),ee.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),ee.prototype.fieldSpec.push(["valid","writeUInt8",1]),ee.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);var te=function(e,t){return p.call(this,e),this.messageType="AlmanacCommonContentDep",this.fields=t||this.parser.parse(e.payload),this};(te.prototype=Object.create(p.prototype)).messageType="AlmanacCommonContentDep",te.prototype.constructor=te,te.prototype.parser=(new o).endianess("little").nest("sid",{type:s.prototype.parser}).nest("toa",{type:l.prototype.parser}).doublele("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),te.prototype.fieldSpec=[],te.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),te.prototype.fieldSpec.push(["toa",l.prototype.fieldSpec]),te.prototype.fieldSpec.push(["ura","writeDoubleLE",8]),te.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),te.prototype.fieldSpec.push(["valid","writeUInt8",1]),te.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);var re=function(e,t){return p.call(this,e),this.messageType="MSG_ALMANAC_GPS_DEP",this.fields=t||this.parser.parse(e.payload),this};(re.prototype=Object.create(p.prototype)).messageType="MSG_ALMANAC_GPS_DEP",re.prototype.msg_type=112,re.prototype.constructor=re,re.prototype.parser=(new o).endianess("little").nest("common",{type:te.prototype.parser}).doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("af0").doublele("af1"),re.prototype.fieldSpec=[],re.prototype.fieldSpec.push(["common",te.prototype.fieldSpec]),re.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),re.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),re.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),re.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),re.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),re.prototype.fieldSpec.push(["w","writeDoubleLE",8]),re.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),re.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),re.prototype.fieldSpec.push(["af1","writeDoubleLE",8]);var pe=function(e,t){return p.call(this,e),this.messageType="MSG_ALMANAC_GPS",this.fields=t||this.parser.parse(e.payload),this};(pe.prototype=Object.create(p.prototype)).messageType="MSG_ALMANAC_GPS",pe.prototype.msg_type=114,pe.prototype.constructor=pe,pe.prototype.parser=(new o).endianess("little").nest("common",{type:ee.prototype.parser}).doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("af0").doublele("af1"),pe.prototype.fieldSpec=[],pe.prototype.fieldSpec.push(["common",ee.prototype.fieldSpec]),pe.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["w","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["af1","writeDoubleLE",8]);var oe=function(e,t){return p.call(this,e),this.messageType="MSG_ALMANAC_GLO_DEP",this.fields=t||this.parser.parse(e.payload),this};(oe.prototype=Object.create(p.prototype)).messageType="MSG_ALMANAC_GLO_DEP",oe.prototype.msg_type=113,oe.prototype.constructor=oe,oe.prototype.parser=(new o).endianess("little").nest("common",{type:te.prototype.parser}).doublele("lambda_na").doublele("t_lambda_na").doublele("i").doublele("t").doublele("t_dot").doublele("epsilon").doublele("omega"),oe.prototype.fieldSpec=[],oe.prototype.fieldSpec.push(["common",te.prototype.fieldSpec]),oe.prototype.fieldSpec.push(["lambda_na","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["t_lambda_na","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["i","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["t","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["t_dot","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["epsilon","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["omega","writeDoubleLE",8]);var ie=function(e,t){return p.call(this,e),this.messageType="MSG_ALMANAC_GLO",this.fields=t||this.parser.parse(e.payload),this};(ie.prototype=Object.create(p.prototype)).messageType="MSG_ALMANAC_GLO",ie.prototype.msg_type=115,ie.prototype.constructor=ie,ie.prototype.parser=(new o).endianess("little").nest("common",{type:ee.prototype.parser}).doublele("lambda_na").doublele("t_lambda_na").doublele("i").doublele("t").doublele("t_dot").doublele("epsilon").doublele("omega"),ie.prototype.fieldSpec=[],ie.prototype.fieldSpec.push(["common",ee.prototype.fieldSpec]),ie.prototype.fieldSpec.push(["lambda_na","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["t_lambda_na","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["i","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["t","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["t_dot","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["epsilon","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["omega","writeDoubleLE",8]);var se=function(e,t){return p.call(this,e),this.messageType="MSG_GLO_BIASES",this.fields=t||this.parser.parse(e.payload),this};(se.prototype=Object.create(p.prototype)).messageType="MSG_GLO_BIASES",se.prototype.msg_type=117,se.prototype.constructor=se,se.prototype.parser=(new o).endianess("little").uint8("mask").int16("l1ca_bias").int16("l1p_bias").int16("l2ca_bias").int16("l2p_bias"),se.prototype.fieldSpec=[],se.prototype.fieldSpec.push(["mask","writeUInt8",1]),se.prototype.fieldSpec.push(["l1ca_bias","writeInt16LE",2]),se.prototype.fieldSpec.push(["l1p_bias","writeInt16LE",2]),se.prototype.fieldSpec.push(["l2ca_bias","writeInt16LE",2]),se.prototype.fieldSpec.push(["l2p_bias","writeInt16LE",2]);var ne=function(e,t){return p.call(this,e),this.messageType="SvAzEl",this.fields=t||this.parser.parse(e.payload),this};(ne.prototype=Object.create(p.prototype)).messageType="SvAzEl",ne.prototype.constructor=ne,ne.prototype.parser=(new o).endianess("little").nest("sid",{type:i.prototype.parser}).uint8("az").int8("el"),ne.prototype.fieldSpec=[],ne.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),ne.prototype.fieldSpec.push(["az","writeUInt8",1]),ne.prototype.fieldSpec.push(["el","writeInt8",1]);var ae=function(e,t){return p.call(this,e),this.messageType="MSG_SV_AZ_EL",this.fields=t||this.parser.parse(e.payload),this};(ae.prototype=Object.create(p.prototype)).messageType="MSG_SV_AZ_EL",ae.prototype.msg_type=151,ae.prototype.constructor=ae,ae.prototype.parser=(new o).endianess("little").array("azel",{type:ne.prototype.parser,readUntil:"eof"}),ae.prototype.fieldSpec=[],ae.prototype.fieldSpec.push(["azel","array",ne.prototype.fieldSpec,function(){return this.fields.array.length},null]);var le=function(e,t){return p.call(this,e),this.messageType="MSG_OSR",this.fields=t||this.parser.parse(e.payload),this};(le.prototype=Object.create(p.prototype)).messageType="MSG_OSR",le.prototype.msg_type=1600,le.prototype.constructor=le,le.prototype.parser=(new o).endianess("little").nest("header",{type:u.prototype.parser}).array("obs",{type:f.prototype.parser,readUntil:"eof"}),le.prototype.fieldSpec=[],le.prototype.fieldSpec.push(["header",u.prototype.fieldSpec]),le.prototype.fieldSpec.push(["obs","array",f.prototype.fieldSpec,function(){return this.fields.array.length},null]),e.exports={ObservationHeader:u,Doppler:y,PackedObsContent:h,PackedOsrContent:f,74:d,MsgObs:d,68:_,MsgBasePosLlh:_,72:S,MsgBasePosEcef:S,EphemerisCommonContent:g,EphemerisCommonContentDepB:w,EphemerisCommonContentDepA:E,129:m,MsgEphemerisGpsDepE:m,134:b,MsgEphemerisGpsDepF:b,138:v,MsgEphemerisGps:v,137:L,MsgEphemerisBds:L,149:T,MsgEphemerisGalDepA:T,141:I,MsgEphemerisGal:I,130:M,MsgEphemerisSbasDepA:M,131:U,MsgEphemerisGloDepA:U,132:D,MsgEphemerisSbasDepB:D,140:O,MsgEphemerisSbas:O,133:A,MsgEphemerisGloDepB:A,135:G,MsgEphemerisGloDepC:G,136:R,MsgEphemerisGloDepD:R,139:C,MsgEphemerisGlo:C,128:P,MsgEphemerisDepD:P,26:j,MsgEphemerisDepA:j,70:N,MsgEphemerisDepB:N,71:x,MsgEphemerisDepC:x,ObservationHeaderDep:k,CarrierPhaseDepA:B,PackedObsContentDepA:F,PackedObsContentDepB:q,PackedObsContentDepC:z,69:H,MsgObsDepA:H,67:V,MsgObsDepB:V,73:Y,MsgObsDepC:Y,144:W,MsgIono:W,145:Q,MsgSvConfigurationGpsDep:Q,GnssCapb:K,150:X,MsgGnssCapb:X,146:J,MsgGroupDelayDepA:J,147:$,MsgGroupDelayDepB:$,148:Z,MsgGroupDelay:Z,AlmanacCommonContent:ee,AlmanacCommonContentDep:te,112:re,MsgAlmanacGpsDep:re,114:pe,MsgAlmanacGps:pe,113:oe,MsgAlmanacGloDep:oe,115:ie,MsgAlmanacGlo:ie,117:se,MsgGloBiases:se,SvAzEl:ne,151:ae,MsgSvAzEl:ae,1600:le,MsgOsr:le}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,r(0).GnssSignal),s=r(0).GnssSignalDep,n=r(0).GPSTime,a=(r(0).CarrierPhase,n=r(0).GPSTime,r(0).GPSTimeSec,r(0).GPSTimeDep),l=(r(0).SvId,function(e,t){return p.call(this,e),this.messageType="MSG_ALMANAC",this.fields=t||this.parser.parse(e.payload),this});(l.prototype=Object.create(p.prototype)).messageType="MSG_ALMANAC",l.prototype.msg_type=105,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little"),l.prototype.fieldSpec=[];var c=function(e,t){return p.call(this,e),this.messageType="MSG_SET_TIME",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_SET_TIME",c.prototype.msg_type=104,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little"),c.prototype.fieldSpec=[];var u=function(e,t){return p.call(this,e),this.messageType="MSG_RESET",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_RESET",u.prototype.msg_type=182,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("flags"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);var y=function(e,t){return p.call(this,e),this.messageType="MSG_RESET_DEP",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="MSG_RESET_DEP",y.prototype.msg_type=178,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little"),y.prototype.fieldSpec=[];var h=function(e,t){return p.call(this,e),this.messageType="MSG_CW_RESULTS",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_CW_RESULTS",h.prototype.msg_type=192,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little"),h.prototype.fieldSpec=[];var f=function(e,t){return p.call(this,e),this.messageType="MSG_CW_START",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="MSG_CW_START",f.prototype.msg_type=193,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little"),f.prototype.fieldSpec=[];var d=function(e,t){return p.call(this,e),this.messageType="MSG_RESET_FILTERS",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(p.prototype)).messageType="MSG_RESET_FILTERS",d.prototype.msg_type=34,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").uint8("filter"),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["filter","writeUInt8",1]);var _=function(e,t){return p.call(this,e),this.messageType="MSG_INIT_BASE",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(p.prototype)).messageType="MSG_INIT_BASE",_.prototype.msg_type=35,_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little"),_.prototype.fieldSpec=[];var S=function(e,t){return p.call(this,e),this.messageType="MSG_THREAD_STATE",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(p.prototype)).messageType="MSG_THREAD_STATE",S.prototype.msg_type=23,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").string("name",{length:20}).uint16("cpu").uint32("stack_free"),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["name","string",20]),S.prototype.fieldSpec.push(["cpu","writeUInt16LE",2]),S.prototype.fieldSpec.push(["stack_free","writeUInt32LE",4]);var g=function(e,t){return p.call(this,e),this.messageType="UARTChannel",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(p.prototype)).messageType="UARTChannel",g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").floatle("tx_throughput").floatle("rx_throughput").uint16("crc_error_count").uint16("io_error_count").uint8("tx_buffer_level").uint8("rx_buffer_level"),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["tx_throughput","writeFloatLE",4]),g.prototype.fieldSpec.push(["rx_throughput","writeFloatLE",4]),g.prototype.fieldSpec.push(["crc_error_count","writeUInt16LE",2]),g.prototype.fieldSpec.push(["io_error_count","writeUInt16LE",2]),g.prototype.fieldSpec.push(["tx_buffer_level","writeUInt8",1]),g.prototype.fieldSpec.push(["rx_buffer_level","writeUInt8",1]);var w=function(e,t){return p.call(this,e),this.messageType="Period",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(p.prototype)).messageType="Period",w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").int32("avg").int32("pmin").int32("pmax").int32("current"),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["avg","writeInt32LE",4]),w.prototype.fieldSpec.push(["pmin","writeInt32LE",4]),w.prototype.fieldSpec.push(["pmax","writeInt32LE",4]),w.prototype.fieldSpec.push(["current","writeInt32LE",4]);var E=function(e,t){return p.call(this,e),this.messageType="Latency",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(p.prototype)).messageType="Latency",E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").int32("avg").int32("lmin").int32("lmax").int32("current"),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["avg","writeInt32LE",4]),E.prototype.fieldSpec.push(["lmin","writeInt32LE",4]),E.prototype.fieldSpec.push(["lmax","writeInt32LE",4]),E.prototype.fieldSpec.push(["current","writeInt32LE",4]);var m=function(e,t){return p.call(this,e),this.messageType="MSG_UART_STATE",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(p.prototype)).messageType="MSG_UART_STATE",m.prototype.msg_type=29,m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").nest("uart_a",{type:g.prototype.parser}).nest("uart_b",{type:g.prototype.parser}).nest("uart_ftdi",{type:g.prototype.parser}).nest("latency",{type:E.prototype.parser}).nest("obs_period",{type:w.prototype.parser}),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["uart_a",g.prototype.fieldSpec]),m.prototype.fieldSpec.push(["uart_b",g.prototype.fieldSpec]),m.prototype.fieldSpec.push(["uart_ftdi",g.prototype.fieldSpec]),m.prototype.fieldSpec.push(["latency",E.prototype.fieldSpec]),m.prototype.fieldSpec.push(["obs_period",w.prototype.fieldSpec]);var b=function(e,t){return p.call(this,e),this.messageType="MSG_UART_STATE_DEPA",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(p.prototype)).messageType="MSG_UART_STATE_DEPA",b.prototype.msg_type=24,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").nest("uart_a",{type:g.prototype.parser}).nest("uart_b",{type:g.prototype.parser}).nest("uart_ftdi",{type:g.prototype.parser}).nest("latency",{type:E.prototype.parser}),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["uart_a",g.prototype.fieldSpec]),b.prototype.fieldSpec.push(["uart_b",g.prototype.fieldSpec]),b.prototype.fieldSpec.push(["uart_ftdi",g.prototype.fieldSpec]),b.prototype.fieldSpec.push(["latency",E.prototype.fieldSpec]);var v=function(e,t){return p.call(this,e),this.messageType="MSG_IAR_STATE",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(p.prototype)).messageType="MSG_IAR_STATE",v.prototype.msg_type=25,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").uint32("num_hyps"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["num_hyps","writeUInt32LE",4]);var L=function(e,t){return p.call(this,e),this.messageType="MSG_MASK_SATELLITE",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(p.prototype)).messageType="MSG_MASK_SATELLITE",L.prototype.msg_type=43,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").uint8("mask").nest("sid",{type:i.prototype.parser}),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["mask","writeUInt8",1]),L.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]);var T=function(e,t){return p.call(this,e),this.messageType="MSG_MASK_SATELLITE_DEP",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(p.prototype)).messageType="MSG_MASK_SATELLITE_DEP",T.prototype.msg_type=27,T.prototype.constructor=T,T.prototype.parser=(new o).endianess("little").uint8("mask").nest("sid",{type:s.prototype.parser}),T.prototype.fieldSpec=[],T.prototype.fieldSpec.push(["mask","writeUInt8",1]),T.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]);var I=function(e,t){return p.call(this,e),this.messageType="MSG_DEVICE_MONITOR",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(p.prototype)).messageType="MSG_DEVICE_MONITOR",I.prototype.msg_type=181,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").int16("dev_vin").int16("cpu_vint").int16("cpu_vaux").int16("cpu_temperature").int16("fe_temperature"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["dev_vin","writeInt16LE",2]),I.prototype.fieldSpec.push(["cpu_vint","writeInt16LE",2]),I.prototype.fieldSpec.push(["cpu_vaux","writeInt16LE",2]),I.prototype.fieldSpec.push(["cpu_temperature","writeInt16LE",2]),I.prototype.fieldSpec.push(["fe_temperature","writeInt16LE",2]);var M=function(e,t){return p.call(this,e),this.messageType="MSG_COMMAND_REQ",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(p.prototype)).messageType="MSG_COMMAND_REQ",M.prototype.msg_type=184,M.prototype.constructor=M,M.prototype.parser=(new o).endianess("little").uint32("sequence").string("command",{greedy:!0}),M.prototype.fieldSpec=[],M.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),M.prototype.fieldSpec.push(["command","string",null]);var U=function(e,t){return p.call(this,e),this.messageType="MSG_COMMAND_RESP",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(p.prototype)).messageType="MSG_COMMAND_RESP",U.prototype.msg_type=185,U.prototype.constructor=U,U.prototype.parser=(new o).endianess("little").uint32("sequence").int32("code"),U.prototype.fieldSpec=[],U.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),U.prototype.fieldSpec.push(["code","writeInt32LE",4]);var D=function(e,t){return p.call(this,e),this.messageType="MSG_COMMAND_OUTPUT",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(p.prototype)).messageType="MSG_COMMAND_OUTPUT",D.prototype.msg_type=188,D.prototype.constructor=D,D.prototype.parser=(new o).endianess("little").uint32("sequence").string("line",{greedy:!0}),D.prototype.fieldSpec=[],D.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),D.prototype.fieldSpec.push(["line","string",null]);var O=function(e,t){return p.call(this,e),this.messageType="MSG_NETWORK_STATE_REQ",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(p.prototype)).messageType="MSG_NETWORK_STATE_REQ",O.prototype.msg_type=186,O.prototype.constructor=O,O.prototype.parser=(new o).endianess("little"),O.prototype.fieldSpec=[];var A=function(e,t){return p.call(this,e),this.messageType="MSG_NETWORK_STATE_RESP",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(p.prototype)).messageType="MSG_NETWORK_STATE_RESP",A.prototype.msg_type=187,A.prototype.constructor=A,A.prototype.parser=(new o).endianess("little").array("ipv4_address",{length:4,type:"uint8"}).uint8("ipv4_mask_size").array("ipv6_address",{length:16,type:"uint8"}).uint8("ipv6_mask_size").uint32("rx_bytes").uint32("tx_bytes").string("interface_name",{length:16}).uint32("flags"),A.prototype.fieldSpec=[],A.prototype.fieldSpec.push(["ipv4_address","array","writeUInt8",function(){return 1},4]),A.prototype.fieldSpec.push(["ipv4_mask_size","writeUInt8",1]),A.prototype.fieldSpec.push(["ipv6_address","array","writeUInt8",function(){return 1},16]),A.prototype.fieldSpec.push(["ipv6_mask_size","writeUInt8",1]),A.prototype.fieldSpec.push(["rx_bytes","writeUInt32LE",4]),A.prototype.fieldSpec.push(["tx_bytes","writeUInt32LE",4]),A.prototype.fieldSpec.push(["interface_name","string",16]),A.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);var G=function(e,t){return p.call(this,e),this.messageType="NetworkUsage",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(p.prototype)).messageType="NetworkUsage",G.prototype.constructor=G,G.prototype.parser=(new o).endianess("little").uint64("duration").uint64("total_bytes").uint32("rx_bytes").uint32("tx_bytes").string("interface_name",{length:16}),G.prototype.fieldSpec=[],G.prototype.fieldSpec.push(["duration","writeUInt64LE",8]),G.prototype.fieldSpec.push(["total_bytes","writeUInt64LE",8]),G.prototype.fieldSpec.push(["rx_bytes","writeUInt32LE",4]),G.prototype.fieldSpec.push(["tx_bytes","writeUInt32LE",4]),G.prototype.fieldSpec.push(["interface_name","string",16]);var R=function(e,t){return p.call(this,e),this.messageType="MSG_NETWORK_BANDWIDTH_USAGE",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(p.prototype)).messageType="MSG_NETWORK_BANDWIDTH_USAGE",R.prototype.msg_type=189,R.prototype.constructor=R,R.prototype.parser=(new o).endianess("little").array("interfaces",{type:G.prototype.parser,readUntil:"eof"}),R.prototype.fieldSpec=[],R.prototype.fieldSpec.push(["interfaces","array",G.prototype.fieldSpec,function(){return this.fields.array.length},null]);var C=function(e,t){return p.call(this,e),this.messageType="MSG_CELL_MODEM_STATUS",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(p.prototype)).messageType="MSG_CELL_MODEM_STATUS",C.prototype.msg_type=190,C.prototype.constructor=C,C.prototype.parser=(new o).endianess("little").int8("signal_strength").floatle("signal_error_rate").array("reserved",{type:"uint8",readUntil:"eof"}),C.prototype.fieldSpec=[],C.prototype.fieldSpec.push(["signal_strength","writeInt8",1]),C.prototype.fieldSpec.push(["signal_error_rate","writeFloatLE",4]),C.prototype.fieldSpec.push(["reserved","array","writeUInt8",function(){return 1},null]);var P=function(e,t){return p.call(this,e),this.messageType="MSG_SPECAN_DEP",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(p.prototype)).messageType="MSG_SPECAN_DEP",P.prototype.msg_type=80,P.prototype.constructor=P,P.prototype.parser=(new o).endianess("little").uint16("channel_tag").nest("t",{type:a.prototype.parser}).floatle("freq_ref").floatle("freq_step").floatle("amplitude_ref").floatle("amplitude_unit").array("amplitude_value",{type:"uint8",readUntil:"eof"}),P.prototype.fieldSpec=[],P.prototype.fieldSpec.push(["channel_tag","writeUInt16LE",2]),P.prototype.fieldSpec.push(["t",a.prototype.fieldSpec]),P.prototype.fieldSpec.push(["freq_ref","writeFloatLE",4]),P.prototype.fieldSpec.push(["freq_step","writeFloatLE",4]),P.prototype.fieldSpec.push(["amplitude_ref","writeFloatLE",4]),P.prototype.fieldSpec.push(["amplitude_unit","writeFloatLE",4]),P.prototype.fieldSpec.push(["amplitude_value","array","writeUInt8",function(){return 1},null]);var j=function(e,t){return p.call(this,e),this.messageType="MSG_SPECAN",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(p.prototype)).messageType="MSG_SPECAN",j.prototype.msg_type=81,j.prototype.constructor=j,j.prototype.parser=(new o).endianess("little").uint16("channel_tag").nest("t",{type:n.prototype.parser}).floatle("freq_ref").floatle("freq_step").floatle("amplitude_ref").floatle("amplitude_unit").array("amplitude_value",{type:"uint8",readUntil:"eof"}),j.prototype.fieldSpec=[],j.prototype.fieldSpec.push(["channel_tag","writeUInt16LE",2]),j.prototype.fieldSpec.push(["t",n.prototype.fieldSpec]),j.prototype.fieldSpec.push(["freq_ref","writeFloatLE",4]),j.prototype.fieldSpec.push(["freq_step","writeFloatLE",4]),j.prototype.fieldSpec.push(["amplitude_ref","writeFloatLE",4]),j.prototype.fieldSpec.push(["amplitude_unit","writeFloatLE",4]),j.prototype.fieldSpec.push(["amplitude_value","array","writeUInt8",function(){return 1},null]);var N=function(e,t){return p.call(this,e),this.messageType="MSG_FRONT_END_GAIN",this.fields=t||this.parser.parse(e.payload),this};(N.prototype=Object.create(p.prototype)).messageType="MSG_FRONT_END_GAIN",N.prototype.msg_type=191,N.prototype.constructor=N,N.prototype.parser=(new o).endianess("little").array("rf_gain",{length:8,type:"int8"}).array("if_gain",{length:8,type:"int8"}),N.prototype.fieldSpec=[],N.prototype.fieldSpec.push(["rf_gain","array","writeInt8",function(){return 1},8]),N.prototype.fieldSpec.push(["if_gain","array","writeInt8",function(){return 1},8]),e.exports={105:l,MsgAlmanac:l,104:c,MsgSetTime:c,182:u,MsgReset:u,178:y,MsgResetDep:y,192:h,MsgCwResults:h,193:f,MsgCwStart:f,34:d,MsgResetFilters:d,35:_,MsgInitBase:_,23:S,MsgThreadState:S,UARTChannel:g,Period:w,Latency:E,29:m,MsgUartState:m,24:b,MsgUartStateDepa:b,25:v,MsgIarState:v,43:L,MsgMaskSatellite:L,27:T,MsgMaskSatelliteDep:T,181:I,MsgDeviceMonitor:I,184:M,MsgCommandReq:M,185:U,MsgCommandResp:U,188:D,MsgCommandOutput:D,186:O,MsgNetworkStateReq:O,187:A,MsgNetworkStateResp:A,NetworkUsage:G,189:R,MsgNetworkBandwidthUsage:R,190:C,MsgCellModemStatus:C,80:P,MsgSpecanDep:P,81:j,MsgSpecan:j,191:N,MsgFrontEndGain:N}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,r(0).GnssSignal),s=(r(0).GnssSignalDep,r(0).GPSTime,r(0).CarrierPhase,r(0).GPSTime,r(0).GPSTimeSec,r(0).GPSTimeDep,r(0).SvId,function(e,t){return p.call(this,e),this.messageType="MSG_SBAS_RAW",this.fields=t||this.parser.parse(e.payload),this});(s.prototype=Object.create(p.prototype)).messageType="MSG_SBAS_RAW",s.prototype.msg_type=30583,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").nest("sid",{type:i.prototype.parser}).uint32("tow").uint8("message_type").array("data",{length:27,type:"uint8"}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),s.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),s.prototype.fieldSpec.push(["message_type","writeUInt8",1]),s.prototype.fieldSpec.push(["data","array","writeUInt8",function(){return 1},27]),e.exports={30583:s,MsgSbasRaw:s}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_SAVE",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_SAVE",i.prototype.msg_type=161,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little"),i.prototype.fieldSpec=[];var s=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_WRITE",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_WRITE",s.prototype.msg_type=160,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").string("setting",{greedy:!0}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["setting","string",null]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_WRITE_RESP",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_WRITE_RESP",n.prototype.msg_type=175,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint8("status").string("setting",{greedy:!0}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["status","writeUInt8",1]),n.prototype.fieldSpec.push(["setting","string",null]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_READ_REQ",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_READ_REQ",a.prototype.msg_type=164,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").string("setting",{greedy:!0}),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["setting","string",null]);var l=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_READ_RESP",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_READ_RESP",l.prototype.msg_type=165,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").string("setting",{greedy:!0}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["setting","string",null]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_READ_BY_INDEX_REQ",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_READ_BY_INDEX_REQ",c.prototype.msg_type=162,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint16("index"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["index","writeUInt16LE",2]);var u=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_READ_BY_INDEX_RESP",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_READ_BY_INDEX_RESP",u.prototype.msg_type=167,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint16("index").string("setting",{greedy:!0}),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["index","writeUInt16LE",2]),u.prototype.fieldSpec.push(["setting","string",null]);var y=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_READ_BY_INDEX_DONE",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_READ_BY_INDEX_DONE",y.prototype.msg_type=166,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little"),y.prototype.fieldSpec=[];var h=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_REGISTER",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_REGISTER",h.prototype.msg_type=174,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").string("setting",{greedy:!0}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["setting","string",null]);var f=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_REGISTER_RESP",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_REGISTER_RESP",f.prototype.msg_type=431,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").uint8("status").string("setting",{greedy:!0}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["status","writeUInt8",1]),f.prototype.fieldSpec.push(["setting","string",null]),e.exports={161:i,MsgSettingsSave:i,160:s,MsgSettingsWrite:s,175:n,MsgSettingsWriteResp:n,164:a,MsgSettingsReadReq:a,165:l,MsgSettingsReadResp:l,162:c,MsgSettingsReadByIndexReq:c,167:u,MsgSettingsReadByIndexResp:u,166:y,MsgSettingsReadByIndexDone:y,174:h,MsgSettingsRegister:h,431:f,MsgSettingsRegisterResp:f}},function(e,t,r){var p=r(2),o=r(13).Parser,i=function(e){return p.call(this,e),this.messageType="SBPSignal",this.fields=this.parser.parse(e.payload),this};(i.prototype=Object.create(p.prototype)).constructor=i,i.prototype.parser=(new o).endianess("little").uint16("sat").uint8("band").uint8("constellation"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["sat","writeUInt16LE",2]),i.prototype.fieldSpec.push(["band","writeUInt8",1]),i.prototype.fieldSpec.push(["constellation","writeUInt8",1]),e.exports={SBPSignal:i}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,r(0).GnssSignal),s=(r(0).GnssSignalDep,r(0).GPSTime),n=(r(0).CarrierPhase,s=r(0).GPSTime,r(0).GPSTimeSec),a=(r(0).GPSTimeDep,r(0).SvId),l=function(e,t){return p.call(this,e),this.messageType="CodeBiasesContent",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="CodeBiasesContent",l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint8("code").int16("value"),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["code","writeUInt8",1]),l.prototype.fieldSpec.push(["value","writeInt16LE",2]);var c=function(e,t){return p.call(this,e),this.messageType="PhaseBiasesContent",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="PhaseBiasesContent",c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint8("code").uint8("integer_indicator").uint8("widelane_integer_indicator").uint8("discontinuity_counter").int32("bias"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["code","writeUInt8",1]),c.prototype.fieldSpec.push(["integer_indicator","writeUInt8",1]),c.prototype.fieldSpec.push(["widelane_integer_indicator","writeUInt8",1]),c.prototype.fieldSpec.push(["discontinuity_counter","writeUInt8",1]),c.prototype.fieldSpec.push(["bias","writeInt32LE",4]);var u=function(e,t){return p.call(this,e),this.messageType="STECHeader",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="STECHeader",u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint16("ssr_update_interval").uint8("iod_ssr"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),u.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),u.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),u.prototype.fieldSpec.push(["ssr_update_interval","writeUInt16LE",2]),u.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]);var y=function(e,t){return p.call(this,e),this.messageType="GriddedCorrectionHeader",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="GriddedCorrectionHeader",y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).uint16("num_msgs").uint16("seq_num").uint16("ssr_update_interval").uint8("iod_ssr").uint8("tropo_quality"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),y.prototype.fieldSpec.push(["num_msgs","writeUInt16LE",2]),y.prototype.fieldSpec.push(["seq_num","writeUInt16LE",2]),y.prototype.fieldSpec.push(["ssr_update_interval","writeUInt16LE",2]),y.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),y.prototype.fieldSpec.push(["tropo_quality","writeUInt8",1]);var h=function(e,t){return p.call(this,e),this.messageType="STECSatElement",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="STECSatElement",h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").nest("sv_id",{type:a.prototype.parser}).uint8("stec_quality_indicator").array("stec_coeff",{length:4,type:"int16le"}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["sv_id",a.prototype.fieldSpec]),h.prototype.fieldSpec.push(["stec_quality_indicator","writeUInt8",1]),h.prototype.fieldSpec.push(["stec_coeff","array","writeInt16LE",function(){return 2},4]);var f=function(e,t){return p.call(this,e),this.messageType="TroposphericDelayCorrection",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="TroposphericDelayCorrection",f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").int16("hydro").int8("wet"),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["hydro","writeInt16LE",2]),f.prototype.fieldSpec.push(["wet","writeInt8",1]);var d=function(e,t){return p.call(this,e),this.messageType="STECResidual",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(p.prototype)).messageType="STECResidual",d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").nest("sv_id",{type:a.prototype.parser}).int16("residual"),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["sv_id",a.prototype.fieldSpec]),d.prototype.fieldSpec.push(["residual","writeInt16LE",2]);var _=function(e,t){return p.call(this,e),this.messageType="GridElement",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(p.prototype)).messageType="GridElement",_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little").uint16("index").nest("tropo_delay_correction",{type:f.prototype.parser}).array("STEC_residuals",{type:d.prototype.parser,readUntil:"eof"}),_.prototype.fieldSpec=[],_.prototype.fieldSpec.push(["index","writeUInt16LE",2]),_.prototype.fieldSpec.push(["tropo_delay_correction",f.prototype.fieldSpec]),_.prototype.fieldSpec.push(["STEC_residuals","array",d.prototype.fieldSpec,function(){return this.fields.array.length},null]);var S=function(e,t){return p.call(this,e),this.messageType="GridDefinitionHeader",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(p.prototype)).messageType="GridDefinitionHeader",S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").uint8("region_size_inverse").uint16("area_width").uint16("lat_nw_corner_enc").uint16("lon_nw_corner_enc").uint8("num_msgs").uint8("seq_num"),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["region_size_inverse","writeUInt8",1]),S.prototype.fieldSpec.push(["area_width","writeUInt16LE",2]),S.prototype.fieldSpec.push(["lat_nw_corner_enc","writeUInt16LE",2]),S.prototype.fieldSpec.push(["lon_nw_corner_enc","writeUInt16LE",2]),S.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),S.prototype.fieldSpec.push(["seq_num","writeUInt8",1]);var g=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(p.prototype)).messageType="MSG_SSR_ORBIT_CLOCK",g.prototype.msg_type=1501,g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").nest("time",{type:n.prototype.parser}).nest("sid",{type:i.prototype.parser}).uint8("update_interval").uint8("iod_ssr").uint32("iod").int32("radial").int32("along").int32("cross").int32("dot_radial").int32("dot_along").int32("dot_cross").int32("c0").int32("c1").int32("c2"),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["time",n.prototype.fieldSpec]),g.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),g.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),g.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),g.prototype.fieldSpec.push(["iod","writeUInt32LE",4]),g.prototype.fieldSpec.push(["radial","writeInt32LE",4]),g.prototype.fieldSpec.push(["along","writeInt32LE",4]),g.prototype.fieldSpec.push(["cross","writeInt32LE",4]),g.prototype.fieldSpec.push(["dot_radial","writeInt32LE",4]),g.prototype.fieldSpec.push(["dot_along","writeInt32LE",4]),g.prototype.fieldSpec.push(["dot_cross","writeInt32LE",4]),g.prototype.fieldSpec.push(["c0","writeInt32LE",4]),g.prototype.fieldSpec.push(["c1","writeInt32LE",4]),g.prototype.fieldSpec.push(["c2","writeInt32LE",4]);var w=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(p.prototype)).messageType="MSG_SSR_ORBIT_CLOCK_DEP_A",w.prototype.msg_type=1500,w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").nest("time",{type:n.prototype.parser}).nest("sid",{type:i.prototype.parser}).uint8("update_interval").uint8("iod_ssr").uint8("iod").int32("radial").int32("along").int32("cross").int32("dot_radial").int32("dot_along").int32("dot_cross").int32("c0").int32("c1").int32("c2"),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["time",n.prototype.fieldSpec]),w.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),w.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),w.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),w.prototype.fieldSpec.push(["iod","writeUInt8",1]),w.prototype.fieldSpec.push(["radial","writeInt32LE",4]),w.prototype.fieldSpec.push(["along","writeInt32LE",4]),w.prototype.fieldSpec.push(["cross","writeInt32LE",4]),w.prototype.fieldSpec.push(["dot_radial","writeInt32LE",4]),w.prototype.fieldSpec.push(["dot_along","writeInt32LE",4]),w.prototype.fieldSpec.push(["dot_cross","writeInt32LE",4]),w.prototype.fieldSpec.push(["c0","writeInt32LE",4]),w.prototype.fieldSpec.push(["c1","writeInt32LE",4]),w.prototype.fieldSpec.push(["c2","writeInt32LE",4]);var E=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_CODE_BIASES",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(p.prototype)).messageType="MSG_SSR_CODE_BIASES",E.prototype.msg_type=1505,E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").nest("time",{type:n.prototype.parser}).nest("sid",{type:i.prototype.parser}).uint8("update_interval").uint8("iod_ssr").array("biases",{type:l.prototype.parser,readUntil:"eof"}),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["time",n.prototype.fieldSpec]),E.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),E.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),E.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),E.prototype.fieldSpec.push(["biases","array",l.prototype.fieldSpec,function(){return this.fields.array.length},null]);var m=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_PHASE_BIASES",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(p.prototype)).messageType="MSG_SSR_PHASE_BIASES",m.prototype.msg_type=1510,m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").nest("time",{type:n.prototype.parser}).nest("sid",{type:i.prototype.parser}).uint8("update_interval").uint8("iod_ssr").uint8("dispersive_bias").uint8("mw_consistency").uint16("yaw").int8("yaw_rate").array("biases",{type:c.prototype.parser,readUntil:"eof"}),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["time",n.prototype.fieldSpec]),m.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),m.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),m.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),m.prototype.fieldSpec.push(["dispersive_bias","writeUInt8",1]),m.prototype.fieldSpec.push(["mw_consistency","writeUInt8",1]),m.prototype.fieldSpec.push(["yaw","writeUInt16LE",2]),m.prototype.fieldSpec.push(["yaw_rate","writeInt8",1]),m.prototype.fieldSpec.push(["biases","array",c.prototype.fieldSpec,function(){return this.fields.array.length},null]);var b=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_STEC_CORRECTION",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(p.prototype)).messageType="MSG_SSR_STEC_CORRECTION",b.prototype.msg_type=1515,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").nest("header",{type:u.prototype.parser}).array("stec_sat_list",{type:h.prototype.parser,readUntil:"eof"}),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["header",u.prototype.fieldSpec]),b.prototype.fieldSpec.push(["stec_sat_list","array",h.prototype.fieldSpec,function(){return this.fields.array.length},null]);var v=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_GRIDDED_CORRECTION",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(p.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION",v.prototype.msg_type=1520,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").nest("header",{type:y.prototype.parser}).nest("element",{type:_.prototype.parser}),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["header",y.prototype.fieldSpec]),v.prototype.fieldSpec.push(["element",_.prototype.fieldSpec]);var L=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_GRID_DEFINITION",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(p.prototype)).messageType="MSG_SSR_GRID_DEFINITION",L.prototype.msg_type=1525,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").nest("header",{type:S.prototype.parser}).array("rle_list",{type:"uint8",readUntil:"eof"}),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["header",S.prototype.fieldSpec]),L.prototype.fieldSpec.push(["rle_list","array","writeUInt8",function(){return 1},null]),e.exports={CodeBiasesContent:l,PhaseBiasesContent:c,STECHeader:u,GriddedCorrectionHeader:y,STECSatElement:h,TroposphericDelayCorrection:f,STECResidual:d,GridElement:_,GridDefinitionHeader:S,1501:g,MsgSsrOrbitClock:g,1500:w,MsgSsrOrbitClockDepA:w,1505:E,MsgSsrCodeBiases:E,1510:m,MsgSsrPhaseBiases:m,1515:b,MsgSsrStecCorrection:b,1520:v,MsgSsrGriddedCorrection:v,1525:L,MsgSsrGridDefinition:L}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_STARTUP",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_STARTUP",i.prototype.msg_type=65280,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("cause").uint8("startup_type").uint16("reserved"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["cause","writeUInt8",1]),i.prototype.fieldSpec.push(["startup_type","writeUInt8",1]),i.prototype.fieldSpec.push(["reserved","writeUInt16LE",2]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_DGNSS_STATUS",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_DGNSS_STATUS",s.prototype.msg_type=65282,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("flags").uint16("latency").uint8("num_signals").string("source",{greedy:!0}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["flags","writeUInt8",1]),s.prototype.fieldSpec.push(["latency","writeUInt16LE",2]),s.prototype.fieldSpec.push(["num_signals","writeUInt8",1]),s.prototype.fieldSpec.push(["source","string",null]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_HEARTBEAT",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_HEARTBEAT",n.prototype.msg_type=65535,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint32("flags"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_INS_STATUS",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_INS_STATUS",a.prototype.msg_type=65283,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint32("flags"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);var l=function(e,t){return p.call(this,e),this.messageType="MSG_CSAC_TELEMETRY",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_CSAC_TELEMETRY",l.prototype.msg_type=65284,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint8("id").string("telemetry",{greedy:!0}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["id","writeUInt8",1]),l.prototype.fieldSpec.push(["telemetry","string",null]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_CSAC_TELEMETRY_LABELS",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_CSAC_TELEMETRY_LABELS",c.prototype.msg_type=65285,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint8("id").string("telemetry_labels",{greedy:!0}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["id","writeUInt8",1]),c.prototype.fieldSpec.push(["telemetry_labels","string",null]),e.exports={65280:i,MsgStartup:i,65282:s,MsgDgnssStatus:s,65535:n,MsgHeartbeat:n,65283:a,MsgInsStatus:a,65284:l,MsgCsacTelemetry:l,65285:c,MsgCsacTelemetryLabels:c}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,r(0).GnssSignal),s=r(0).GnssSignalDep,n=r(0).GPSTime,a=r(0).CarrierPhase,l=(n=r(0).GPSTime,r(0).GPSTimeSec,r(0).GPSTimeDep),c=(r(0).SvId,function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_STATE_DETAILED_DEP_A",this.fields=t||this.parser.parse(e.payload),this});(c.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_STATE_DETAILED_DEP_A",c.prototype.msg_type=33,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint64("recv_time").nest("tot",{type:n.prototype.parser}).uint32("P").uint16("P_std").nest("L",{type:a.prototype.parser}).uint8("cn0").uint16("lock").nest("sid",{type:i.prototype.parser}).int32("doppler").uint16("doppler_std").uint32("uptime").int16("clock_offset").int16("clock_drift").uint16("corr_spacing").int8("acceleration").uint8("sync_flags").uint8("tow_flags").uint8("track_flags").uint8("nav_flags").uint8("pset_flags").uint8("misc_flags"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["recv_time","writeUInt64LE",8]),c.prototype.fieldSpec.push(["tot",n.prototype.fieldSpec]),c.prototype.fieldSpec.push(["P","writeUInt32LE",4]),c.prototype.fieldSpec.push(["P_std","writeUInt16LE",2]),c.prototype.fieldSpec.push(["L",a.prototype.fieldSpec]),c.prototype.fieldSpec.push(["cn0","writeUInt8",1]),c.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),c.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),c.prototype.fieldSpec.push(["doppler","writeInt32LE",4]),c.prototype.fieldSpec.push(["doppler_std","writeUInt16LE",2]),c.prototype.fieldSpec.push(["uptime","writeUInt32LE",4]),c.prototype.fieldSpec.push(["clock_offset","writeInt16LE",2]),c.prototype.fieldSpec.push(["clock_drift","writeInt16LE",2]),c.prototype.fieldSpec.push(["corr_spacing","writeUInt16LE",2]),c.prototype.fieldSpec.push(["acceleration","writeInt8",1]),c.prototype.fieldSpec.push(["sync_flags","writeUInt8",1]),c.prototype.fieldSpec.push(["tow_flags","writeUInt8",1]),c.prototype.fieldSpec.push(["track_flags","writeUInt8",1]),c.prototype.fieldSpec.push(["nav_flags","writeUInt8",1]),c.prototype.fieldSpec.push(["pset_flags","writeUInt8",1]),c.prototype.fieldSpec.push(["misc_flags","writeUInt8",1]);var u=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_STATE_DETAILED_DEP",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_STATE_DETAILED_DEP",u.prototype.msg_type=17,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint64("recv_time").nest("tot",{type:l.prototype.parser}).uint32("P").uint16("P_std").nest("L",{type:a.prototype.parser}).uint8("cn0").uint16("lock").nest("sid",{type:s.prototype.parser}).int32("doppler").uint16("doppler_std").uint32("uptime").int16("clock_offset").int16("clock_drift").uint16("corr_spacing").int8("acceleration").uint8("sync_flags").uint8("tow_flags").uint8("track_flags").uint8("nav_flags").uint8("pset_flags").uint8("misc_flags"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["recv_time","writeUInt64LE",8]),u.prototype.fieldSpec.push(["tot",l.prototype.fieldSpec]),u.prototype.fieldSpec.push(["P","writeUInt32LE",4]),u.prototype.fieldSpec.push(["P_std","writeUInt16LE",2]),u.prototype.fieldSpec.push(["L",a.prototype.fieldSpec]),u.prototype.fieldSpec.push(["cn0","writeUInt8",1]),u.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),u.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),u.prototype.fieldSpec.push(["doppler","writeInt32LE",4]),u.prototype.fieldSpec.push(["doppler_std","writeUInt16LE",2]),u.prototype.fieldSpec.push(["uptime","writeUInt32LE",4]),u.prototype.fieldSpec.push(["clock_offset","writeInt16LE",2]),u.prototype.fieldSpec.push(["clock_drift","writeInt16LE",2]),u.prototype.fieldSpec.push(["corr_spacing","writeUInt16LE",2]),u.prototype.fieldSpec.push(["acceleration","writeInt8",1]),u.prototype.fieldSpec.push(["sync_flags","writeUInt8",1]),u.prototype.fieldSpec.push(["tow_flags","writeUInt8",1]),u.prototype.fieldSpec.push(["track_flags","writeUInt8",1]),u.prototype.fieldSpec.push(["nav_flags","writeUInt8",1]),u.prototype.fieldSpec.push(["pset_flags","writeUInt8",1]),u.prototype.fieldSpec.push(["misc_flags","writeUInt8",1]);var y=function(e,t){return p.call(this,e),this.messageType="TrackingChannelState",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="TrackingChannelState",y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").nest("sid",{type:i.prototype.parser}).uint8("fcn").uint8("cn0"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),y.prototype.fieldSpec.push(["fcn","writeUInt8",1]),y.prototype.fieldSpec.push(["cn0","writeUInt8",1]);var h=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_STATE",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_STATE",h.prototype.msg_type=65,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").array("states",{type:y.prototype.parser,readUntil:"eof"}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["states","array",y.prototype.fieldSpec,function(){return this.fields.array.length},null]);var f=function(e,t){return p.call(this,e),this.messageType="MeasurementState",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="MeasurementState",f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").nest("mesid",{type:i.prototype.parser}).uint8("cn0"),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["mesid",i.prototype.fieldSpec]),f.prototype.fieldSpec.push(["cn0","writeUInt8",1]);var d=function(e,t){return p.call(this,e),this.messageType="MSG_MEASUREMENT_STATE",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(p.prototype)).messageType="MSG_MEASUREMENT_STATE",d.prototype.msg_type=97,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").array("states",{type:f.prototype.parser,readUntil:"eof"}),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["states","array",f.prototype.fieldSpec,function(){return this.fields.array.length},null]);var _=function(e,t){return p.call(this,e),this.messageType="TrackingChannelCorrelation",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(p.prototype)).messageType="TrackingChannelCorrelation",_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little").int16("I").int16("Q"),_.prototype.fieldSpec=[],_.prototype.fieldSpec.push(["I","writeInt16LE",2]),_.prototype.fieldSpec.push(["Q","writeInt16LE",2]);var S=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_IQ",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_IQ",S.prototype.msg_type=45,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").uint8("channel").nest("sid",{type:i.prototype.parser}).array("corrs",{length:3,type:_.prototype.parser}),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["channel","writeUInt8",1]),S.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),S.prototype.fieldSpec.push(["corrs","array",_.prototype.fieldSpec,function(){return this.fields.array.length},3]);var g=function(e,t){return p.call(this,e),this.messageType="TrackingChannelCorrelationDep",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(p.prototype)).messageType="TrackingChannelCorrelationDep",g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").int32("I").int32("Q"),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["I","writeInt32LE",4]),g.prototype.fieldSpec.push(["Q","writeInt32LE",4]);var w=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_IQ_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_IQ_DEP_B",w.prototype.msg_type=44,w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").uint8("channel").nest("sid",{type:i.prototype.parser}).array("corrs",{length:3,type:g.prototype.parser}),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["channel","writeUInt8",1]),w.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),w.prototype.fieldSpec.push(["corrs","array",g.prototype.fieldSpec,function(){return this.fields.array.length},3]);var E=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_IQ_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_IQ_DEP_A",E.prototype.msg_type=28,E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").uint8("channel").nest("sid",{type:s.prototype.parser}).array("corrs",{length:3,type:g.prototype.parser}),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["channel","writeUInt8",1]),E.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),E.prototype.fieldSpec.push(["corrs","array",g.prototype.fieldSpec,function(){return this.fields.array.length},3]);var m=function(e,t){return p.call(this,e),this.messageType="TrackingChannelStateDepA",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(p.prototype)).messageType="TrackingChannelStateDepA",m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").uint8("state").uint8("prn").floatle("cn0"),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["state","writeUInt8",1]),m.prototype.fieldSpec.push(["prn","writeUInt8",1]),m.prototype.fieldSpec.push(["cn0","writeFloatLE",4]);var b=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_STATE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_STATE_DEP_A",b.prototype.msg_type=22,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").array("states",{type:m.prototype.parser,readUntil:"eof"}),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["states","array",m.prototype.fieldSpec,function(){return this.fields.array.length},null]);var v=function(e,t){return p.call(this,e),this.messageType="TrackingChannelStateDepB",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(p.prototype)).messageType="TrackingChannelStateDepB",v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").uint8("state").nest("sid",{type:s.prototype.parser}).floatle("cn0"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["state","writeUInt8",1]),v.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),v.prototype.fieldSpec.push(["cn0","writeFloatLE",4]);var L=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_STATE_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_STATE_DEP_B",L.prototype.msg_type=19,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").array("states",{type:v.prototype.parser,readUntil:"eof"}),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["states","array",v.prototype.fieldSpec,function(){return this.fields.array.length},null]),e.exports={33:c,MsgTrackingStateDetailedDepA:c,17:u,MsgTrackingStateDetailedDep:u,TrackingChannelState:y,65:h,MsgTrackingState:h,MeasurementState:f,97:d,MsgMeasurementState:d,TrackingChannelCorrelation:_,45:S,MsgTrackingIq:S,TrackingChannelCorrelationDep:g,44:w,MsgTrackingIqDepB:w,28:E,MsgTrackingIqDepA:E,TrackingChannelStateDepA:m,22:b,MsgTrackingStateDepA:b,TrackingChannelStateDepB:v,19:L,MsgTrackingStateDepB:L}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_USER_DATA",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_USER_DATA",i.prototype.msg_type=2048,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").array("contents",{type:"uint8",readUntil:"eof"}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["contents","array","writeUInt8",function(){return 1},null]),e.exports={2048:i,MsgUserData:i}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_ODOMETRY",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_ODOMETRY",i.prototype.msg_type=2307,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("tow").int32("velocity").uint8("flags"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["velocity","writeInt32LE",4]),i.prototype.fieldSpec.push(["flags","writeUInt8",1]),e.exports={2307:i,MsgOdometry:i}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_BASELINE_HEADING",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_BASELINE_HEADING",i.prototype.msg_type=527,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("tow").uint32("heading").uint8("n_sats").uint8("flags"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["heading","writeUInt32LE",4]),i.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),i.prototype.fieldSpec.push(["flags","writeUInt8",1]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_ORIENT_QUAT",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_ORIENT_QUAT",s.prototype.msg_type=544,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint32("tow").int32("w").int32("x").int32("y").int32("z").floatle("w_accuracy").floatle("x_accuracy").floatle("y_accuracy").floatle("z_accuracy").uint8("flags"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),s.prototype.fieldSpec.push(["w","writeInt32LE",4]),s.prototype.fieldSpec.push(["x","writeInt32LE",4]),s.prototype.fieldSpec.push(["y","writeInt32LE",4]),s.prototype.fieldSpec.push(["z","writeInt32LE",4]),s.prototype.fieldSpec.push(["w_accuracy","writeFloatLE",4]),s.prototype.fieldSpec.push(["x_accuracy","writeFloatLE",4]),s.prototype.fieldSpec.push(["y_accuracy","writeFloatLE",4]),s.prototype.fieldSpec.push(["z_accuracy","writeFloatLE",4]),s.prototype.fieldSpec.push(["flags","writeUInt8",1]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_ORIENT_EULER",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_ORIENT_EULER",n.prototype.msg_type=545,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint32("tow").int32("roll").int32("pitch").int32("yaw").floatle("roll_accuracy").floatle("pitch_accuracy").floatle("yaw_accuracy").uint8("flags"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),n.prototype.fieldSpec.push(["roll","writeInt32LE",4]),n.prototype.fieldSpec.push(["pitch","writeInt32LE",4]),n.prototype.fieldSpec.push(["yaw","writeInt32LE",4]),n.prototype.fieldSpec.push(["roll_accuracy","writeFloatLE",4]),n.prototype.fieldSpec.push(["pitch_accuracy","writeFloatLE",4]),n.prototype.fieldSpec.push(["yaw_accuracy","writeFloatLE",4]),n.prototype.fieldSpec.push(["flags","writeUInt8",1]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_ANGULAR_RATE",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_ANGULAR_RATE",a.prototype.msg_type=546,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint8("flags"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),a.prototype.fieldSpec.push(["x","writeInt32LE",4]),a.prototype.fieldSpec.push(["y","writeInt32LE",4]),a.prototype.fieldSpec.push(["z","writeInt32LE",4]),a.prototype.fieldSpec.push(["flags","writeUInt8",1]),e.exports={527:i,MsgBaselineHeading:i,544:s,MsgOrientQuat:s,545:n,MsgOrientEuler:n,546:a,MsgAngularRate:a}}]); \ No newline at end of file diff --git a/javascript/sbp/acquisition.js b/javascript/sbp/acquisition.js index 2e4598540f..0bbfa16fd2 100644 --- a/javascript/sbp/acquisition.js +++ b/javascript/sbp/acquisition.js @@ -29,6 +29,7 @@ var CarrierPhase = require("./gnss").CarrierPhase; var GPSTime = require("./gnss").GPSTime; var GPSTimeSec = require("./gnss").GPSTimeSec; var GPSTimeDep = require("./gnss").GPSTimeDep; +var SvId = require("./gnss").SvId; /** * SBP class for message MSG_ACQ_RESULT (0x002F). diff --git a/javascript/sbp/gnss.js b/javascript/sbp/gnss.js index d82b486c1c..ba0cc0fb3d 100644 --- a/javascript/sbp/gnss.js +++ b/javascript/sbp/gnss.js @@ -53,6 +53,36 @@ GnssSignal.prototype.fieldSpec = []; GnssSignal.prototype.fieldSpec.push(['sat', 'writeUInt8', 1]); GnssSignal.prototype.fieldSpec.push(['code', 'writeUInt8', 1]); +/** + * SBP class for message fragment SvId + * + * A (Constellation ID, satellite ID) tuple that uniquely identifies a space + * vehicle + * + * Fields in the SBP payload (`sbp.payload`): + * @field satId number (unsigned 8-bit int, 1 byte) ID of the space vehicle within its constellation + * @field constellation number (unsigned 8-bit int, 1 byte) Constellation ID to which the SV belongs + * + * @param sbp An SBP object with a payload to be decoded. + */ +var SvId = function (sbp, fields) { + SBP.call(this, sbp); + this.messageType = "SvId"; + this.fields = (fields || this.parser.parse(sbp.payload)); + + return this; +}; +SvId.prototype = Object.create(SBP.prototype); +SvId.prototype.messageType = "SvId"; +SvId.prototype.constructor = SvId; +SvId.prototype.parser = new Parser() + .endianess('little') + .uint8('satId') + .uint8('constellation'); +SvId.prototype.fieldSpec = []; +SvId.prototype.fieldSpec.push(['satId', 'writeUInt8', 1]); +SvId.prototype.fieldSpec.push(['constellation', 'writeUInt8', 1]); + /** * SBP class for message fragment GnssSignalDep * @@ -214,6 +244,7 @@ CarrierPhase.prototype.fieldSpec.push(['f', 'writeUInt8', 1]); module.exports = { GnssSignal: GnssSignal, + SvId: SvId, GnssSignalDep: GnssSignalDep, GPSTimeDep: GPSTimeDep, GPSTimeSec: GPSTimeSec, diff --git a/javascript/sbp/ndb.js b/javascript/sbp/ndb.js index f43d69e871..892e859564 100644 --- a/javascript/sbp/ndb.js +++ b/javascript/sbp/ndb.js @@ -29,6 +29,7 @@ var CarrierPhase = require("./gnss").CarrierPhase; var GPSTime = require("./gnss").GPSTime; var GPSTimeSec = require("./gnss").GPSTimeSec; var GPSTimeDep = require("./gnss").GPSTimeDep; +var SvId = require("./gnss").SvId; /** * SBP class for message MSG_NDB_EVENT (0x0400). diff --git a/javascript/sbp/observation.js b/javascript/sbp/observation.js index a43f701c64..b710f4ff68 100644 --- a/javascript/sbp/observation.js +++ b/javascript/sbp/observation.js @@ -29,6 +29,7 @@ var CarrierPhase = require("./gnss").CarrierPhase; var GPSTime = require("./gnss").GPSTime; var GPSTimeSec = require("./gnss").GPSTimeSec; var GPSTimeDep = require("./gnss").GPSTimeDep; +var SvId = require("./gnss").SvId; /** * SBP class for message fragment ObservationHeader diff --git a/javascript/sbp/piksi.js b/javascript/sbp/piksi.js index c78331f154..91cfc76aa3 100644 --- a/javascript/sbp/piksi.js +++ b/javascript/sbp/piksi.js @@ -30,6 +30,7 @@ var CarrierPhase = require("./gnss").CarrierPhase; var GPSTime = require("./gnss").GPSTime; var GPSTimeSec = require("./gnss").GPSTimeSec; var GPSTimeDep = require("./gnss").GPSTimeDep; +var SvId = require("./gnss").SvId; /** * SBP class for message MSG_ALMANAC (0x0069). diff --git a/javascript/sbp/sbas.js b/javascript/sbp/sbas.js index 96bb864eff..92bc9028ae 100644 --- a/javascript/sbp/sbas.js +++ b/javascript/sbp/sbas.js @@ -29,6 +29,7 @@ var CarrierPhase = require("./gnss").CarrierPhase; var GPSTime = require("./gnss").GPSTime; var GPSTimeSec = require("./gnss").GPSTimeSec; var GPSTimeDep = require("./gnss").GPSTimeDep; +var SvId = require("./gnss").SvId; /** * SBP class for message MSG_SBAS_RAW (0x7777). diff --git a/javascript/sbp/ssr.js b/javascript/sbp/ssr.js index ec4c0dc808..0319548c56 100644 --- a/javascript/sbp/ssr.js +++ b/javascript/sbp/ssr.js @@ -29,6 +29,7 @@ var CarrierPhase = require("./gnss").CarrierPhase; var GPSTime = require("./gnss").GPSTime; var GPSTimeSec = require("./gnss").GPSTimeSec; var GPSTimeDep = require("./gnss").GPSTimeDep; +var SvId = require("./gnss").SvId; /** * SBP class for message fragment CodeBiasesContent @@ -70,7 +71,7 @@ CodeBiasesContent.prototype.fieldSpec.push(['value', 'writeInt16LE', 2]); * @field code number (unsigned 8-bit int, 1 byte) Signal constellation, band and code * @field integer_indicator number (unsigned 8-bit int, 1 byte) Indicator for integer property * @field widelane_integer_indicator number (unsigned 8-bit int, 1 byte) Indicator for two groups of Wide-Lane(s) integer property - * @field discontinuity_counter number (unsigned 8-bit int, 1 byte) Signal phase discontinuity counter. Increased for every discontinuity in phase. + * @field discontinuity_counter number (unsigned 8-bit int, 1 byte) Signal phase discontinuity counter. Increased for every discontinuity in phase. * @field bias number (signed 32-bit int, 4 bytes) Phase bias for specified signal * * @param sbp An SBP object with a payload to be decoded. @@ -99,19 +100,265 @@ PhaseBiasesContent.prototype.fieldSpec.push(['widelane_integer_indicator', 'writ PhaseBiasesContent.prototype.fieldSpec.push(['discontinuity_counter', 'writeUInt8', 1]); PhaseBiasesContent.prototype.fieldSpec.push(['bias', 'writeInt32LE', 4]); +/** + * SBP class for message fragment STECHeader + * + * A full set of STEC information will likely span multiple SBP messages, since SBP + * message a limited to 255 bytes. The header is used to tie multiple SBP messages + * into a sequence. + * + * Fields in the SBP payload (`sbp.payload`): + * @field time GPSTime GNSS time of the STEC data + * @field num_msgs number (unsigned 8-bit int, 1 byte) Number of messages in the dataset + * @field seq_num number (unsigned 8-bit int, 1 byte) Position of this message in the dataset + * @field ssr_update_interval number (unsigned 16-bit int, 2 bytes) update interval in seconds + * @field iod_ssr number (unsigned 8-bit int, 1 byte) range 0 - 15 + * + * @param sbp An SBP object with a payload to be decoded. + */ +var STECHeader = function (sbp, fields) { + SBP.call(this, sbp); + this.messageType = "STECHeader"; + this.fields = (fields || this.parser.parse(sbp.payload)); + + return this; +}; +STECHeader.prototype = Object.create(SBP.prototype); +STECHeader.prototype.messageType = "STECHeader"; +STECHeader.prototype.constructor = STECHeader; +STECHeader.prototype.parser = new Parser() + .endianess('little') + .nest('time', { type: GPSTime.prototype.parser }) + .uint8('num_msgs') + .uint8('seq_num') + .uint16('ssr_update_interval') + .uint8('iod_ssr'); +STECHeader.prototype.fieldSpec = []; +STECHeader.prototype.fieldSpec.push(['time', GPSTime.prototype.fieldSpec]); +STECHeader.prototype.fieldSpec.push(['num_msgs', 'writeUInt8', 1]); +STECHeader.prototype.fieldSpec.push(['seq_num', 'writeUInt8', 1]); +STECHeader.prototype.fieldSpec.push(['ssr_update_interval', 'writeUInt16LE', 2]); +STECHeader.prototype.fieldSpec.push(['iod_ssr', 'writeUInt8', 1]); + +/** + * SBP class for message fragment GriddedCorrectionHeader + * + * The 3GPP message contains nested variable length arrays which are not suppported + * in SBP, so each grid point will be identified by the index. + * + * Fields in the SBP payload (`sbp.payload`): + * @field time GPSTime GNSS time of the STEC data + * @field num_msgs number (unsigned 16-bit int, 2 bytes) Number of messages in the dataset + * @field seq_num number (unsigned 16-bit int, 2 bytes) Position of this message in the dataset + * @field ssr_update_interval number (unsigned 16-bit int, 2 bytes) update interval in seconds + * @field iod_ssr number (unsigned 8-bit int, 1 byte) range 0 - 15 + * @field tropo_quality number (unsigned 8-bit int, 1 byte) troposphere quality indicator + * + * @param sbp An SBP object with a payload to be decoded. + */ +var GriddedCorrectionHeader = function (sbp, fields) { + SBP.call(this, sbp); + this.messageType = "GriddedCorrectionHeader"; + this.fields = (fields || this.parser.parse(sbp.payload)); + + return this; +}; +GriddedCorrectionHeader.prototype = Object.create(SBP.prototype); +GriddedCorrectionHeader.prototype.messageType = "GriddedCorrectionHeader"; +GriddedCorrectionHeader.prototype.constructor = GriddedCorrectionHeader; +GriddedCorrectionHeader.prototype.parser = new Parser() + .endianess('little') + .nest('time', { type: GPSTime.prototype.parser }) + .uint16('num_msgs') + .uint16('seq_num') + .uint16('ssr_update_interval') + .uint8('iod_ssr') + .uint8('tropo_quality'); +GriddedCorrectionHeader.prototype.fieldSpec = []; +GriddedCorrectionHeader.prototype.fieldSpec.push(['time', GPSTime.prototype.fieldSpec]); +GriddedCorrectionHeader.prototype.fieldSpec.push(['num_msgs', 'writeUInt16LE', 2]); +GriddedCorrectionHeader.prototype.fieldSpec.push(['seq_num', 'writeUInt16LE', 2]); +GriddedCorrectionHeader.prototype.fieldSpec.push(['ssr_update_interval', 'writeUInt16LE', 2]); +GriddedCorrectionHeader.prototype.fieldSpec.push(['iod_ssr', 'writeUInt8', 1]); +GriddedCorrectionHeader.prototype.fieldSpec.push(['tropo_quality', 'writeUInt8', 1]); + +/** + * SBP class for message fragment STECSatElement + * + * STEC for the given satellite. + * + * Fields in the SBP payload (`sbp.payload`): + * @field sv_id SvId Unique space vehicle identifier + * @field stec_quality_indicator number (unsigned 8-bit int, 1 byte) quality of STEC data + * @field stec_coeff array coefficents of the STEC polynomial + * + * @param sbp An SBP object with a payload to be decoded. + */ +var STECSatElement = function (sbp, fields) { + SBP.call(this, sbp); + this.messageType = "STECSatElement"; + this.fields = (fields || this.parser.parse(sbp.payload)); + + return this; +}; +STECSatElement.prototype = Object.create(SBP.prototype); +STECSatElement.prototype.messageType = "STECSatElement"; +STECSatElement.prototype.constructor = STECSatElement; +STECSatElement.prototype.parser = new Parser() + .endianess('little') + .nest('sv_id', { type: SvId.prototype.parser }) + .uint8('stec_quality_indicator') + .array('stec_coeff', { length: 4, type: 'int16le' }); +STECSatElement.prototype.fieldSpec = []; +STECSatElement.prototype.fieldSpec.push(['sv_id', SvId.prototype.fieldSpec]); +STECSatElement.prototype.fieldSpec.push(['stec_quality_indicator', 'writeUInt8', 1]); +STECSatElement.prototype.fieldSpec.push(['stec_coeff', 'array', 'writeInt16LE', function () { return 2; }, 4]); + +/** + * SBP class for message fragment TroposphericDelayCorrection + * + * Contains wet vertical and hydrostatic vertical delay + * + * Fields in the SBP payload (`sbp.payload`): + * @field hydro number (signed 16-bit int, 2 bytes) hydrostatic vertical delay + * @field wet number (signed 8-bit int, 1 byte) wet vertical delay + * + * @param sbp An SBP object with a payload to be decoded. + */ +var TroposphericDelayCorrection = function (sbp, fields) { + SBP.call(this, sbp); + this.messageType = "TroposphericDelayCorrection"; + this.fields = (fields || this.parser.parse(sbp.payload)); + + return this; +}; +TroposphericDelayCorrection.prototype = Object.create(SBP.prototype); +TroposphericDelayCorrection.prototype.messageType = "TroposphericDelayCorrection"; +TroposphericDelayCorrection.prototype.constructor = TroposphericDelayCorrection; +TroposphericDelayCorrection.prototype.parser = new Parser() + .endianess('little') + .int16('hydro') + .int8('wet'); +TroposphericDelayCorrection.prototype.fieldSpec = []; +TroposphericDelayCorrection.prototype.fieldSpec.push(['hydro', 'writeInt16LE', 2]); +TroposphericDelayCorrection.prototype.fieldSpec.push(['wet', 'writeInt8', 1]); + +/** + * SBP class for message fragment STECResidual + * + * STEC residual + * + * Fields in the SBP payload (`sbp.payload`): + * @field sv_id SvId space vehicle identifier + * @field residual number (signed 16-bit int, 2 bytes) STEC residual + * + * @param sbp An SBP object with a payload to be decoded. + */ +var STECResidual = function (sbp, fields) { + SBP.call(this, sbp); + this.messageType = "STECResidual"; + this.fields = (fields || this.parser.parse(sbp.payload)); + + return this; +}; +STECResidual.prototype = Object.create(SBP.prototype); +STECResidual.prototype.messageType = "STECResidual"; +STECResidual.prototype.constructor = STECResidual; +STECResidual.prototype.parser = new Parser() + .endianess('little') + .nest('sv_id', { type: SvId.prototype.parser }) + .int16('residual'); +STECResidual.prototype.fieldSpec = []; +STECResidual.prototype.fieldSpec.push(['sv_id', SvId.prototype.fieldSpec]); +STECResidual.prototype.fieldSpec.push(['residual', 'writeInt16LE', 2]); + +/** + * SBP class for message fragment GridElement + * + * Contains one tropo datum, plus STEC residuals for each space vehicle + * + * Fields in the SBP payload (`sbp.payload`): + * @field index number (unsigned 16-bit int, 2 bytes) index of the grid point + * @field tropo_delay_correction TroposphericDelayCorrection Wet and Hydrostatic Vertical Delay + * @field STEC_residuals array STEC Residual for the given space vehicle + * + * @param sbp An SBP object with a payload to be decoded. + */ +var GridElement = function (sbp, fields) { + SBP.call(this, sbp); + this.messageType = "GridElement"; + this.fields = (fields || this.parser.parse(sbp.payload)); + + return this; +}; +GridElement.prototype = Object.create(SBP.prototype); +GridElement.prototype.messageType = "GridElement"; +GridElement.prototype.constructor = GridElement; +GridElement.prototype.parser = new Parser() + .endianess('little') + .uint16('index') + .nest('tropo_delay_correction', { type: TroposphericDelayCorrection.prototype.parser }) + .array('STEC_residuals', { type: STECResidual.prototype.parser, readUntil: 'eof' }); +GridElement.prototype.fieldSpec = []; +GridElement.prototype.fieldSpec.push(['index', 'writeUInt16LE', 2]); +GridElement.prototype.fieldSpec.push(['tropo_delay_correction', TroposphericDelayCorrection.prototype.fieldSpec]); +GridElement.prototype.fieldSpec.push(['STEC_residuals', 'array', STECResidual.prototype.fieldSpec, function () { return this.fields.array.length; }, null]); + +/** + * SBP class for message fragment GridDefinitionHeader + * + * Defines the grid for STEC and tropo grid messages. Also includes an RLE encoded + * validity list. + * + * Fields in the SBP payload (`sbp.payload`): + * @field region_size_inverse number (unsigned 8-bit int, 1 byte) inverse of region size + * @field area_width number (unsigned 16-bit int, 2 bytes) area width; see spec for details + * @field lat_nw_corner_enc number (unsigned 16-bit int, 2 bytes) encoded latitude of the northwest corner of the grid + * @field lon_nw_corner_enc number (unsigned 16-bit int, 2 bytes) encoded longitude of the northwest corner of the grid + * @field num_msgs number (unsigned 8-bit int, 1 byte) Number of messages in the dataset + * @field seq_num number (unsigned 8-bit int, 1 byte) Postion of this message in the dataset + * + * @param sbp An SBP object with a payload to be decoded. + */ +var GridDefinitionHeader = function (sbp, fields) { + SBP.call(this, sbp); + this.messageType = "GridDefinitionHeader"; + this.fields = (fields || this.parser.parse(sbp.payload)); + + return this; +}; +GridDefinitionHeader.prototype = Object.create(SBP.prototype); +GridDefinitionHeader.prototype.messageType = "GridDefinitionHeader"; +GridDefinitionHeader.prototype.constructor = GridDefinitionHeader; +GridDefinitionHeader.prototype.parser = new Parser() + .endianess('little') + .uint8('region_size_inverse') + .uint16('area_width') + .uint16('lat_nw_corner_enc') + .uint16('lon_nw_corner_enc') + .uint8('num_msgs') + .uint8('seq_num'); +GridDefinitionHeader.prototype.fieldSpec = []; +GridDefinitionHeader.prototype.fieldSpec.push(['region_size_inverse', 'writeUInt8', 1]); +GridDefinitionHeader.prototype.fieldSpec.push(['area_width', 'writeUInt16LE', 2]); +GridDefinitionHeader.prototype.fieldSpec.push(['lat_nw_corner_enc', 'writeUInt16LE', 2]); +GridDefinitionHeader.prototype.fieldSpec.push(['lon_nw_corner_enc', 'writeUInt16LE', 2]); +GridDefinitionHeader.prototype.fieldSpec.push(['num_msgs', 'writeUInt8', 1]); +GridDefinitionHeader.prototype.fieldSpec.push(['seq_num', 'writeUInt8', 1]); + /** * SBP class for message MSG_SSR_ORBIT_CLOCK (0x05DD). * - * The precise orbit and clock correction message is to be applied as a delta - * correction to broadcast ephemeris and is typically an equivalent to the 1060 - * and 1066 RTCM message types + * The precise orbit and clock correction message is to be applied as a delta + * correction to broadcast ephemeris and is typically an equivalent to the 1060 and + * 1066 RTCM message types * * Fields in the SBP payload (`sbp.payload`): * @field time GPSTimeSec GNSS reference time of the correction * @field sid GnssSignal GNSS signal identifier (16 bit) * @field update_interval number (unsigned 8-bit int, 1 byte) Update interval between consecutive corrections * @field iod_ssr number (unsigned 8-bit int, 1 byte) IOD of the SSR correction. A change of Issue Of Data SSR is used to indicate a - * change in the SSR generating configuration + * change in the SSR generating configuration * @field iod number (unsigned 32-bit int, 4 bytes) Issue of broadcast ephemeris data or IODCRC (Beidou) * @field radial number (signed 32-bit int, 4 bytes) Orbit radial delta correction * @field along number (signed 32-bit int, 4 bytes) Orbit along delta correction @@ -171,16 +418,16 @@ MsgSsrOrbitClock.prototype.fieldSpec.push(['c2', 'writeInt32LE', 4]); /** * SBP class for message MSG_SSR_ORBIT_CLOCK_DEP_A (0x05DC). * - * The precise orbit and clock correction message is to be applied as a delta - * correction to broadcast ephemeris and is typically an equivalent to the 1060 - * and 1066 RTCM message types + * The precise orbit and clock correction message is to be applied as a delta + * correction to broadcast ephemeris and is typically an equivalent to the 1060 and + * 1066 RTCM message types * * Fields in the SBP payload (`sbp.payload`): * @field time GPSTimeSec GNSS reference time of the correction * @field sid GnssSignal GNSS signal identifier (16 bit) * @field update_interval number (unsigned 8-bit int, 1 byte) Update interval between consecutive corrections * @field iod_ssr number (unsigned 8-bit int, 1 byte) IOD of the SSR correction. A change of Issue Of Data SSR is used to indicate a - * change in the SSR generating configuration + * change in the SSR generating configuration * @field iod number (unsigned 8-bit int, 1 byte) Issue of broadcast ephemeris data * @field radial number (signed 32-bit int, 4 bytes) Orbit radial delta correction * @field along number (signed 32-bit int, 4 bytes) Orbit along delta correction @@ -241,15 +488,15 @@ MsgSsrOrbitClockDepA.prototype.fieldSpec.push(['c2', 'writeInt32LE', 4]); * SBP class for message MSG_SSR_CODE_BIASES (0x05E1). * * The precise code biases message is to be added to the pseudorange of the - * corresponding signal to get corrected pseudorange. It is typically an - * equivalent to the 1059 and 1065 RTCM message types + * corresponding signal to get corrected pseudorange. It is typically an equivalent + * to the 1059 and 1065 RTCM message types * * Fields in the SBP payload (`sbp.payload`): * @field time GPSTimeSec GNSS reference time of the correction * @field sid GnssSignal GNSS signal identifier (16 bit) * @field update_interval number (unsigned 8-bit int, 1 byte) Update interval between consecutive corrections * @field iod_ssr number (unsigned 8-bit int, 1 byte) IOD of the SSR correction. A change of Issue Of Data SSR is used to indicate a - * change in the SSR generating configuration + * change in the SSR generating configuration * @field biases array Code biases for the different satellite signals * * @param sbp An SBP object with a payload to be decoded. @@ -284,15 +531,15 @@ MsgSsrCodeBiases.prototype.fieldSpec.push(['biases', 'array', CodeBiasesContent. * * The precise phase biases message contains the biases to be added to the carrier * phase of the corresponding signal to get corrected carrier phase measurement, as - * well as the satellite yaw angle to be applied to compute the phase wind-up - * correction. It is typically an equivalent to the 1265 RTCM message types + * well as the satellite yaw angle to be applied to compute the phase wind-up + * correction. It is typically an equivalent to the 1265 RTCM message types * * Fields in the SBP payload (`sbp.payload`): * @field time GPSTimeSec GNSS reference time of the correction * @field sid GnssSignal GNSS signal identifier (16 bit) * @field update_interval number (unsigned 8-bit int, 1 byte) Update interval between consecutive corrections * @field iod_ssr number (unsigned 8-bit int, 1 byte) IOD of the SSR correction. A change of Issue Of Data SSR is used to indicate a - * change in the SSR generating configuration + * change in the SSR generating configuration * @field dispersive_bias number (unsigned 8-bit int, 1 byte) Indicator for the dispersive phase biases property. * @field mw_consistency number (unsigned 8-bit int, 1 byte) Consistency indicator for Melbourne-Wubbena linear combinations * @field yaw number (unsigned 16-bit int, 2 bytes) Satellite yaw angle @@ -334,9 +581,111 @@ MsgSsrPhaseBiases.prototype.fieldSpec.push(['yaw', 'writeUInt16LE', 2]); MsgSsrPhaseBiases.prototype.fieldSpec.push(['yaw_rate', 'writeInt8', 1]); MsgSsrPhaseBiases.prototype.fieldSpec.push(['biases', 'array', PhaseBiasesContent.prototype.fieldSpec, function () { return this.fields.array.length; }, null]); +/** + * SBP class for message MSG_SSR_STEC_CORRECTION (0x05EB). + * + * The STEC per space vehicle, given as polynomial approximation for a given grid. + * This should be combined with SSR-GriddedCorrection message to get the state + * space representation of the atmospheric delay. + * + * Fields in the SBP payload (`sbp.payload`): + * @field header STECHeader Header of a STEC message + * @field stec_sat_list array Array of STEC information for each space vehicle + * + * @param sbp An SBP object with a payload to be decoded. + */ +var MsgSsrStecCorrection = function (sbp, fields) { + SBP.call(this, sbp); + this.messageType = "MSG_SSR_STEC_CORRECTION"; + this.fields = (fields || this.parser.parse(sbp.payload)); + + return this; +}; +MsgSsrStecCorrection.prototype = Object.create(SBP.prototype); +MsgSsrStecCorrection.prototype.messageType = "MSG_SSR_STEC_CORRECTION"; +MsgSsrStecCorrection.prototype.msg_type = 0x05EB; +MsgSsrStecCorrection.prototype.constructor = MsgSsrStecCorrection; +MsgSsrStecCorrection.prototype.parser = new Parser() + .endianess('little') + .nest('header', { type: STECHeader.prototype.parser }) + .array('stec_sat_list', { type: STECSatElement.prototype.parser, readUntil: 'eof' }); +MsgSsrStecCorrection.prototype.fieldSpec = []; +MsgSsrStecCorrection.prototype.fieldSpec.push(['header', STECHeader.prototype.fieldSpec]); +MsgSsrStecCorrection.prototype.fieldSpec.push(['stec_sat_list', 'array', STECSatElement.prototype.fieldSpec, function () { return this.fields.array.length; }, null]); + +/** + * SBP class for message MSG_SSR_GRIDDED_CORRECTION (0x05F0). + * + * STEC residuals are per space vehicle, tropo is not. + * + * Fields in the SBP payload (`sbp.payload`): + * @field header GriddedCorrectionHeader Header of a Gridded Correction message + * @field element GridElement Tropo and STEC residuals for the given grid point + * + * @param sbp An SBP object with a payload to be decoded. + */ +var MsgSsrGriddedCorrection = function (sbp, fields) { + SBP.call(this, sbp); + this.messageType = "MSG_SSR_GRIDDED_CORRECTION"; + this.fields = (fields || this.parser.parse(sbp.payload)); + + return this; +}; +MsgSsrGriddedCorrection.prototype = Object.create(SBP.prototype); +MsgSsrGriddedCorrection.prototype.messageType = "MSG_SSR_GRIDDED_CORRECTION"; +MsgSsrGriddedCorrection.prototype.msg_type = 0x05F0; +MsgSsrGriddedCorrection.prototype.constructor = MsgSsrGriddedCorrection; +MsgSsrGriddedCorrection.prototype.parser = new Parser() + .endianess('little') + .nest('header', { type: GriddedCorrectionHeader.prototype.parser }) + .nest('element', { type: GridElement.prototype.parser }); +MsgSsrGriddedCorrection.prototype.fieldSpec = []; +MsgSsrGriddedCorrection.prototype.fieldSpec.push(['header', GriddedCorrectionHeader.prototype.fieldSpec]); +MsgSsrGriddedCorrection.prototype.fieldSpec.push(['element', GridElement.prototype.fieldSpec]); + +/** + * SBP class for message MSG_SSR_GRID_DEFINITION (0x05F5). + * + * Definition of the grid for STEC and tropo messages + * + * Fields in the SBP payload (`sbp.payload`): + * @field header GridDefinitionHeader Header of a Gridded Correction message + * @field rle_list array Run Length Encode list of quadrants that contain valid data. The spec describes + * the encoding scheme in detail, but essentially the index of the quadrants that + * contain transitions between valid and invalid (and vice versa) are encoded as u8 + * integers. + * + * @param sbp An SBP object with a payload to be decoded. + */ +var MsgSsrGridDefinition = function (sbp, fields) { + SBP.call(this, sbp); + this.messageType = "MSG_SSR_GRID_DEFINITION"; + this.fields = (fields || this.parser.parse(sbp.payload)); + + return this; +}; +MsgSsrGridDefinition.prototype = Object.create(SBP.prototype); +MsgSsrGridDefinition.prototype.messageType = "MSG_SSR_GRID_DEFINITION"; +MsgSsrGridDefinition.prototype.msg_type = 0x05F5; +MsgSsrGridDefinition.prototype.constructor = MsgSsrGridDefinition; +MsgSsrGridDefinition.prototype.parser = new Parser() + .endianess('little') + .nest('header', { type: GridDefinitionHeader.prototype.parser }) + .array('rle_list', { type: 'uint8', readUntil: 'eof' }); +MsgSsrGridDefinition.prototype.fieldSpec = []; +MsgSsrGridDefinition.prototype.fieldSpec.push(['header', GridDefinitionHeader.prototype.fieldSpec]); +MsgSsrGridDefinition.prototype.fieldSpec.push(['rle_list', 'array', 'writeUInt8', function () { return 1; }, null]); + module.exports = { CodeBiasesContent: CodeBiasesContent, PhaseBiasesContent: PhaseBiasesContent, + STECHeader: STECHeader, + GriddedCorrectionHeader: GriddedCorrectionHeader, + STECSatElement: STECSatElement, + TroposphericDelayCorrection: TroposphericDelayCorrection, + STECResidual: STECResidual, + GridElement: GridElement, + GridDefinitionHeader: GridDefinitionHeader, 0x05DD: MsgSsrOrbitClock, MsgSsrOrbitClock: MsgSsrOrbitClock, 0x05DC: MsgSsrOrbitClockDepA, @@ -345,4 +694,10 @@ module.exports = { MsgSsrCodeBiases: MsgSsrCodeBiases, 0x05E6: MsgSsrPhaseBiases, MsgSsrPhaseBiases: MsgSsrPhaseBiases, + 0x05EB: MsgSsrStecCorrection, + MsgSsrStecCorrection: MsgSsrStecCorrection, + 0x05F0: MsgSsrGriddedCorrection, + MsgSsrGriddedCorrection: MsgSsrGriddedCorrection, + 0x05F5: MsgSsrGridDefinition, + MsgSsrGridDefinition: MsgSsrGridDefinition, } \ No newline at end of file diff --git a/javascript/sbp/tracking.js b/javascript/sbp/tracking.js index ef433eeb4a..b790d68f5a 100644 --- a/javascript/sbp/tracking.js +++ b/javascript/sbp/tracking.js @@ -29,6 +29,7 @@ var CarrierPhase = require("./gnss").CarrierPhase; var GPSTime = require("./gnss").GPSTime; var GPSTimeSec = require("./gnss").GPSTimeSec; var GPSTimeDep = require("./gnss").GPSTimeDep; +var SvId = require("./gnss").SvId; /** * SBP class for message MSG_TRACKING_STATE_DETAILED_DEP_A (0x0021). diff --git a/proto/gnss.proto b/proto/gnss.proto index caa11aa856..db0f45b063 100644 --- a/proto/gnss.proto +++ b/proto/gnss.proto @@ -29,6 +29,16 @@ message GnssSignal { uint32 code = 2; } +/** Space vehicle identifier + * + * A (Constellation ID, satellite ID) tuple that uniquely identifies + * a space vehicle + */ +message SvId { + uint32 satId = 1; + uint32 constellation = 2; +} + /** Whole second accurate GPS time * * A GPS time, defined as the number of diff --git a/proto/ssr.proto b/proto/ssr.proto index 646982215a..4735aba884 100644 --- a/proto/ssr.proto +++ b/proto/ssr.proto @@ -44,10 +44,92 @@ message PhaseBiasesContent { sint32 bias = 5; } +/** Header for MSG_SSR_STEC_CORRECTION message + * + * A full set of STEC information will likely span multiple SBP + * messages, since SBP message a limited to 255 bytes. The header + * is used to tie multiple SBP messages into a sequence. + */ +message STECHeader { + gnss.GpsTime time = 1; + uint32 num_msgs = 2; + uint32 seq_num = 3; + uint32 ssr_update_interval = 4; + uint32 iod_ssr = 5; +} + +/** Header for MSG_SSR_GRIDDED_CORRECTION + * + * The 3GPP message contains nested variable length arrays + * which are not suppported in SBP, so each grid point will + * be identified by the index. + */ +message GriddedCorrectionHeader { + gnss.GpsTime time = 1; + uint32 num_msgs = 2; + uint32 seq_num = 3; + uint32 ssr_update_interval = 4; + uint32 iod_ssr = 5; + uint32 tropo_quality = 6; +} + +/** None + * +* STEC for the given satellite. + */ +message STECSatElement { + SvId sv_id = 1; + uint32 stec_quality_indicator = 2; + repeated sint32 stec_coeff = 3; +} + +/** troposphere delay correction + * + * Contains wet vertical and hydrostatic vertical delay + */ +message TroposphericDelayCorrection { + sint32 hydro = 1; + sint32 wet = 2; +} + +/** None + * +* STEC residual + */ +message STECResidual { + SvId sv_id = 1; + sint32 residual = 2; +} + +/** Grid datum for troposphere and STEC residuals + * + * Contains one tropo datum, plus STEC residuals for each space + * vehicle + */ +message GridElement { + uint32 index = 1; + TroposphericDelayCorrection tropo_delay_correction = 2; + repeated STECResidual STEC_residuals = 3; +} + +/** Defines the grid for STEC and tropo grid messages + * + * Defines the grid for STEC and tropo grid messages. + * Also includes an RLE encoded validity list. + */ +message GridDefinitionHeader { + uint32 region_size_inverse = 1; + uint32 area_width = 2; + uint32 lat_nw_corner_enc = 3; + uint32 lon_nw_corner_enc = 4; + uint32 num_msgs = 5; + uint32 seq_num = 6; +} + /** Precise orbit and clock correction * - * The precise orbit and clock correction message is - * to be applied as a delta correction to broadcast + * The precise orbit and clock correction message is + * to be applied as a delta correction to broadcast * ephemeris and is typically an equivalent to the 1060 * and 1066 RTCM message types */ @@ -72,7 +154,7 @@ message MsgSsrOrbitClock { * * The precise code biases message is to be added * to the pseudorange of the corresponding signal - * to get corrected pseudorange. It is typically + * to get corrected pseudorange. It is typically * an equivalent to the 1059 and 1065 RTCM message types */ message MsgSsrCodeBiases { @@ -87,9 +169,9 @@ message MsgSsrCodeBiases { * * The precise phase biases message contains the biases * to be added to the carrier phase of the corresponding - * signal to get corrected carrier phase measurement, as - * well as the satellite yaw angle to be applied to compute - * the phase wind-up correction. + * signal to get corrected carrier phase measurement, as + * well as the satellite yaw angle to be applied to compute + * the phase wind-up correction. * It is typically an equivalent to the 1265 RTCM message types */ message MsgSsrPhaseBiases { @@ -102,4 +184,34 @@ message MsgSsrPhaseBiases { uint32 yaw = 7; sint32 yaw_rate = 8; repeated PhaseBiasesContent biases = 9; +} + +/** Slant Total Electron Content + * + * The STEC per space vehicle, given as polynomial approximation for + * a given grid. This should be combined with SSR-GriddedCorrection + * message to get the state space representation of the atmospheric + * delay. + */ +message MsgSsrStecCorrection { + STECHeader header = 1; + repeated STECSatElement stec_sat_list = 2; +} + +/** Gridded troposphere and STEC residuals + * + * STEC residuals are per space vehicle, tropo is not. + */ +message MsgSsrGriddedCorrection { + GriddedCorrectionHeader header = 1; + GridElement element = 2; +} + +/** None + * +* Definition of the grid for STEC and tropo messages + */ +message MsgSsrGridDefinition { + GridDefinitionHeader header = 1; + repeated uint32 rle_list = 2; } \ No newline at end of file diff --git a/python/sbp/gnss.py b/python/sbp/gnss.py index 5d13b24cfe..5e59afebdb 100644 --- a/python/sbp/gnss.py +++ b/python/sbp/gnss.py @@ -69,6 +69,48 @@ def to_binary(self): d = dict([(k, getattr(obj, k)) for k in self.__slots__]) return GnssSignal.build(d) +class SvId(object): + """SvId. + + A (Constellation ID, satellite ID) tuple that uniquely identifies +a space vehicle + + + Parameters + ---------- + satId : int + ID of the space vehicle within its constellation + constellation : int + Constellation ID to which the SV belongs + + """ + _parser = construct.Embedded(construct.Struct( + 'satId' / construct.Int8ul, + 'constellation' / construct.Int8ul,)) + __slots__ = [ + 'satId', + 'constellation', + ] + + def __init__(self, payload=None, **kwargs): + if payload: + self.from_binary(payload) + else: + self.satId = kwargs.pop('satId') + self.constellation = kwargs.pop('constellation') + + def __repr__(self): + return fmt_repr(self) + + def from_binary(self, d): + p = SvId._parser.parse(d) + for n in self.__class__.__slots__: + setattr(self, n, getattr(p, n)) + + def to_binary(self): + d = dict([(k, getattr(obj, k)) for k in self.__slots__]) + return SvId.build(d) + class GnssSignalDep(object): """GnssSignalDep. diff --git a/python/sbp/ssr.py b/python/sbp/ssr.py index 13d5de0e4b..5d46f40724 100644 --- a/python/sbp/ssr.py +++ b/python/sbp/ssr.py @@ -84,7 +84,7 @@ class PhaseBiasesContent(object): widelane_integer_indicator : int Indicator for two groups of Wide-Lane(s) integer property discontinuity_counter : int - Signal phase discontinuity counter. + Signal phase discontinuity counter. Increased for every discontinuity in phase. bias : int @@ -127,6 +127,362 @@ def to_binary(self): d = dict([(k, getattr(obj, k)) for k in self.__slots__]) return PhaseBiasesContent.build(d) +class STECHeader(object): + """STECHeader. + + A full set of STEC information will likely span multiple SBP +messages, since SBP message a limited to 255 bytes. The header +is used to tie multiple SBP messages into a sequence. + + + Parameters + ---------- + time : GPSTime + GNSS time of the STEC data + num_msgs : int + Number of messages in the dataset + seq_num : int + Position of this message in the dataset + ssr_update_interval : int + update interval in seconds + iod_ssr : int + range 0 - 15 + + """ + _parser = construct.Embedded(construct.Struct( + 'time' / construct.Struct(GPSTime._parser), + 'num_msgs' / construct.Int8ul, + 'seq_num' / construct.Int8ul, + 'ssr_update_interval' / construct.Int16ul, + 'iod_ssr' / construct.Int8ul,)) + __slots__ = [ + 'time', + 'num_msgs', + 'seq_num', + 'ssr_update_interval', + 'iod_ssr', + ] + + def __init__(self, payload=None, **kwargs): + if payload: + self.from_binary(payload) + else: + self.time = kwargs.pop('time') + self.num_msgs = kwargs.pop('num_msgs') + self.seq_num = kwargs.pop('seq_num') + self.ssr_update_interval = kwargs.pop('ssr_update_interval') + self.iod_ssr = kwargs.pop('iod_ssr') + + def __repr__(self): + return fmt_repr(self) + + def from_binary(self, d): + p = STECHeader._parser.parse(d) + for n in self.__class__.__slots__: + setattr(self, n, getattr(p, n)) + + def to_binary(self): + d = dict([(k, getattr(obj, k)) for k in self.__slots__]) + return STECHeader.build(d) + +class GriddedCorrectionHeader(object): + """GriddedCorrectionHeader. + + The 3GPP message contains nested variable length arrays +which are not suppported in SBP, so each grid point will +be identified by the index. + + + Parameters + ---------- + time : GPSTime + GNSS time of the STEC data + num_msgs : int + Number of messages in the dataset + seq_num : int + Position of this message in the dataset + ssr_update_interval : int + update interval in seconds + iod_ssr : int + range 0 - 15 + tropo_quality : int + troposphere quality indicator + + """ + _parser = construct.Embedded(construct.Struct( + 'time' / construct.Struct(GPSTime._parser), + 'num_msgs' / construct.Int16ul, + 'seq_num' / construct.Int16ul, + 'ssr_update_interval' / construct.Int16ul, + 'iod_ssr' / construct.Int8ul, + 'tropo_quality' / construct.Int8ul,)) + __slots__ = [ + 'time', + 'num_msgs', + 'seq_num', + 'ssr_update_interval', + 'iod_ssr', + 'tropo_quality', + ] + + def __init__(self, payload=None, **kwargs): + if payload: + self.from_binary(payload) + else: + self.time = kwargs.pop('time') + self.num_msgs = kwargs.pop('num_msgs') + self.seq_num = kwargs.pop('seq_num') + self.ssr_update_interval = kwargs.pop('ssr_update_interval') + self.iod_ssr = kwargs.pop('iod_ssr') + self.tropo_quality = kwargs.pop('tropo_quality') + + def __repr__(self): + return fmt_repr(self) + + def from_binary(self, d): + p = GriddedCorrectionHeader._parser.parse(d) + for n in self.__class__.__slots__: + setattr(self, n, getattr(p, n)) + + def to_binary(self): + d = dict([(k, getattr(obj, k)) for k in self.__slots__]) + return GriddedCorrectionHeader.build(d) + +class STECSatElement(object): + """STECSatElement. + + STEC for the given satellite. + + Parameters + ---------- + sv_id : SvId + Unique space vehicle identifier + stec_quality_indicator : int + quality of STEC data + stec_coeff : array + coefficents of the STEC polynomial + + """ + _parser = construct.Embedded(construct.Struct( + 'sv_id' / construct.Struct(SvId._parser), + 'stec_quality_indicator' / construct.Int8ul, + 'stec_coeff' / construct.Array(4, construct.Int16sl),)) + __slots__ = [ + 'sv_id', + 'stec_quality_indicator', + 'stec_coeff', + ] + + def __init__(self, payload=None, **kwargs): + if payload: + self.from_binary(payload) + else: + self.sv_id = kwargs.pop('sv_id') + self.stec_quality_indicator = kwargs.pop('stec_quality_indicator') + self.stec_coeff = kwargs.pop('stec_coeff') + + def __repr__(self): + return fmt_repr(self) + + def from_binary(self, d): + p = STECSatElement._parser.parse(d) + for n in self.__class__.__slots__: + setattr(self, n, getattr(p, n)) + + def to_binary(self): + d = dict([(k, getattr(obj, k)) for k in self.__slots__]) + return STECSatElement.build(d) + +class TroposphericDelayCorrection(object): + """TroposphericDelayCorrection. + + Contains wet vertical and hydrostatic vertical delay + + + Parameters + ---------- + hydro : int + hydrostatic vertical delay + wet : int + wet vertical delay + + """ + _parser = construct.Embedded(construct.Struct( + 'hydro' / construct.Int16sl, + 'wet' / construct.Int8sl,)) + __slots__ = [ + 'hydro', + 'wet', + ] + + def __init__(self, payload=None, **kwargs): + if payload: + self.from_binary(payload) + else: + self.hydro = kwargs.pop('hydro') + self.wet = kwargs.pop('wet') + + def __repr__(self): + return fmt_repr(self) + + def from_binary(self, d): + p = TroposphericDelayCorrection._parser.parse(d) + for n in self.__class__.__slots__: + setattr(self, n, getattr(p, n)) + + def to_binary(self): + d = dict([(k, getattr(obj, k)) for k in self.__slots__]) + return TroposphericDelayCorrection.build(d) + +class STECResidual(object): + """STECResidual. + + STEC residual + + Parameters + ---------- + sv_id : SvId + space vehicle identifier + residual : int + STEC residual + + """ + _parser = construct.Embedded(construct.Struct( + 'sv_id' / construct.Struct(SvId._parser), + 'residual' / construct.Int16sl,)) + __slots__ = [ + 'sv_id', + 'residual', + ] + + def __init__(self, payload=None, **kwargs): + if payload: + self.from_binary(payload) + else: + self.sv_id = kwargs.pop('sv_id') + self.residual = kwargs.pop('residual') + + def __repr__(self): + return fmt_repr(self) + + def from_binary(self, d): + p = STECResidual._parser.parse(d) + for n in self.__class__.__slots__: + setattr(self, n, getattr(p, n)) + + def to_binary(self): + d = dict([(k, getattr(obj, k)) for k in self.__slots__]) + return STECResidual.build(d) + +class GridElement(object): + """GridElement. + + Contains one tropo datum, plus STEC residuals for each space +vehicle + + + Parameters + ---------- + index : int + index of the grid point + tropo_delay_correction : TroposphericDelayCorrection + Wet and Hydrostatic Vertical Delay + STEC_residuals : array + STEC Residual for the given space vehicle + + """ + _parser = construct.Embedded(construct.Struct( + 'index' / construct.Int16ul, + 'tropo_delay_correction' / construct.Struct(TroposphericDelayCorrection._parser), + construct.GreedyRange('STEC_residuals' / construct.Struct(STECResidual._parser)),)) + __slots__ = [ + 'index', + 'tropo_delay_correction', + 'STEC_residuals', + ] + + def __init__(self, payload=None, **kwargs): + if payload: + self.from_binary(payload) + else: + self.index = kwargs.pop('index') + self.tropo_delay_correction = kwargs.pop('tropo_delay_correction') + self.STEC_residuals = kwargs.pop('STEC_residuals') + + def __repr__(self): + return fmt_repr(self) + + def from_binary(self, d): + p = GridElement._parser.parse(d) + for n in self.__class__.__slots__: + setattr(self, n, getattr(p, n)) + + def to_binary(self): + d = dict([(k, getattr(obj, k)) for k in self.__slots__]) + return GridElement.build(d) + +class GridDefinitionHeader(object): + """GridDefinitionHeader. + + Defines the grid for STEC and tropo grid messages. +Also includes an RLE encoded validity list. + + + Parameters + ---------- + region_size_inverse : int + inverse of region size + area_width : int + area width; see spec for details + lat_nw_corner_enc : int + encoded latitude of the northwest corner of the grid + lon_nw_corner_enc : int + encoded longitude of the northwest corner of the grid + num_msgs : int + Number of messages in the dataset + seq_num : int + Postion of this message in the dataset + + """ + _parser = construct.Embedded(construct.Struct( + 'region_size_inverse' / construct.Int8ul, + 'area_width' / construct.Int16ul, + 'lat_nw_corner_enc' / construct.Int16ul, + 'lon_nw_corner_enc' / construct.Int16ul, + 'num_msgs' / construct.Int8ul, + 'seq_num' / construct.Int8ul,)) + __slots__ = [ + 'region_size_inverse', + 'area_width', + 'lat_nw_corner_enc', + 'lon_nw_corner_enc', + 'num_msgs', + 'seq_num', + ] + + def __init__(self, payload=None, **kwargs): + if payload: + self.from_binary(payload) + else: + self.region_size_inverse = kwargs.pop('region_size_inverse') + self.area_width = kwargs.pop('area_width') + self.lat_nw_corner_enc = kwargs.pop('lat_nw_corner_enc') + self.lon_nw_corner_enc = kwargs.pop('lon_nw_corner_enc') + self.num_msgs = kwargs.pop('num_msgs') + self.seq_num = kwargs.pop('seq_num') + + def __repr__(self): + return fmt_repr(self) + + def from_binary(self, d): + p = GridDefinitionHeader._parser.parse(d) + for n in self.__class__.__slots__: + setattr(self, n, getattr(p, n)) + + def to_binary(self): + d = dict([(k, getattr(obj, k)) for k in self.__slots__]) + return GridDefinitionHeader.build(d) + SBP_MSG_SSR_ORBIT_CLOCK = 0x05DD class MsgSsrOrbitClock(SBP): """SBP class for message MSG_SSR_ORBIT_CLOCK (0x05DD). @@ -136,8 +492,8 @@ class MsgSsrOrbitClock(SBP): of its fields. - The precise orbit and clock correction message is -to be applied as a delta correction to broadcast + The precise orbit and clock correction message is +to be applied as a delta correction to broadcast ephemeris and is typically an equivalent to the 1060 and 1066 RTCM message types @@ -154,7 +510,7 @@ class MsgSsrOrbitClock(SBP): Update interval between consecutive corrections iod_ssr : int IOD of the SSR correction. A change of Issue Of Data -SSR is used to indicate a change in the SSR +SSR is used to indicate a change in the SSR generating configuration iod : int @@ -297,8 +653,8 @@ class MsgSsrOrbitClockDepA(SBP): of its fields. - The precise orbit and clock correction message is -to be applied as a delta correction to broadcast + The precise orbit and clock correction message is +to be applied as a delta correction to broadcast ephemeris and is typically an equivalent to the 1060 and 1066 RTCM message types @@ -315,7 +671,7 @@ class MsgSsrOrbitClockDepA(SBP): Update interval between consecutive corrections iod_ssr : int IOD of the SSR correction. A change of Issue Of Data -SSR is used to indicate a change in the SSR +SSR is used to indicate a change in the SSR generating configuration iod : int @@ -460,7 +816,7 @@ class MsgSsrCodeBiases(SBP): The precise code biases message is to be added to the pseudorange of the corresponding signal -to get corrected pseudorange. It is typically +to get corrected pseudorange. It is typically an equivalent to the 1059 and 1065 RTCM message types @@ -476,7 +832,7 @@ class MsgSsrCodeBiases(SBP): Update interval between consecutive corrections iod_ssr : int IOD of the SSR correction. A change of Issue Of Data -SSR is used to indicate a change in the SSR +SSR is used to indicate a change in the SSR generating configuration biases : array @@ -576,9 +932,9 @@ class MsgSsrPhaseBiases(SBP): The precise phase biases message contains the biases to be added to the carrier phase of the corresponding -signal to get corrected carrier phase measurement, as -well as the satellite yaw angle to be applied to compute -the phase wind-up correction. +signal to get corrected carrier phase measurement, as +well as the satellite yaw angle to be applied to compute +the phase wind-up correction. It is typically an equivalent to the 1265 RTCM message types @@ -594,7 +950,7 @@ class MsgSsrPhaseBiases(SBP): Update interval between consecutive corrections iod_ssr : int IOD of the SSR correction. A change of Issue Of Data -SSR is used to indicate a change in the SSR +SSR is used to indicate a change in the SSR generating configuration dispersive_bias : int @@ -707,10 +1063,304 @@ def to_json_dict(self): d.update(j) return d +SBP_MSG_SSR_STEC_CORRECTION = 0x05EB +class MsgSsrStecCorrection(SBP): + """SBP class for message MSG_SSR_STEC_CORRECTION (0x05EB). + + You can have MSG_SSR_STEC_CORRECTION inherit its fields directly + from an inherited SBP object, or construct it inline using a dict + of its fields. + + + The STEC per space vehicle, given as polynomial approximation for +a given grid. This should be combined with SSR-GriddedCorrection +message to get the state space representation of the atmospheric +delay. + + + Parameters + ---------- + sbp : SBP + SBP parent object to inherit from. + header : STECHeader + Header of a STEC message + stec_sat_list : array + Array of STEC information for each space vehicle + sender : int + Optional sender ID, defaults to SENDER_ID (see sbp/msg.py). + + """ + _parser = construct.Struct( + 'header' / construct.Struct(STECHeader._parser), + construct.GreedyRange('stec_sat_list' / construct.Struct(STECSatElement._parser)),) + __slots__ = [ + 'header', + 'stec_sat_list', + ] + + def __init__(self, sbp=None, **kwargs): + if sbp: + super( MsgSsrStecCorrection, + self).__init__(sbp.msg_type, sbp.sender, sbp.length, + sbp.payload, sbp.crc) + self.from_binary(sbp.payload) + else: + super( MsgSsrStecCorrection, self).__init__() + self.msg_type = SBP_MSG_SSR_STEC_CORRECTION + self.sender = kwargs.pop('sender', SENDER_ID) + self.header = kwargs.pop('header') + self.stec_sat_list = kwargs.pop('stec_sat_list') + + def __repr__(self): + return fmt_repr(self) + + @staticmethod + def from_json(s): + """Given a JSON-encoded string s, build a message object. + + """ + d = json.loads(s) + return MsgSsrStecCorrection.from_json_dict(d) + + @staticmethod + def from_json_dict(d): + sbp = SBP.from_json_dict(d) + return MsgSsrStecCorrection(sbp, **d) + + + def from_binary(self, d): + """Given a binary payload d, update the appropriate payload fields of + the message. + + """ + p = MsgSsrStecCorrection._parser.parse(d) + for n in self.__class__.__slots__: + setattr(self, n, getattr(p, n)) + + def to_binary(self): + """Produce a framed/packed SBP message. + + """ + c = containerize(exclude_fields(self)) + self.payload = MsgSsrStecCorrection._parser.build(c) + return self.pack() + + def into_buffer(self, buf, offset): + """Produce a framed/packed SBP message into the provided buffer and offset. + + """ + self.payload = containerize(exclude_fields(self)) + self.parser = MsgSsrStecCorrection._parser + self.stream_payload.reset(buf, offset) + return self.pack_into(buf, offset, self._build_payload) + + def to_json_dict(self): + self.to_binary() + d = super( MsgSsrStecCorrection, self).to_json_dict() + j = walk_json_dict(exclude_fields(self)) + d.update(j) + return d + +SBP_MSG_SSR_GRIDDED_CORRECTION = 0x05F0 +class MsgSsrGriddedCorrection(SBP): + """SBP class for message MSG_SSR_GRIDDED_CORRECTION (0x05F0). + + You can have MSG_SSR_GRIDDED_CORRECTION inherit its fields directly + from an inherited SBP object, or construct it inline using a dict + of its fields. + + + STEC residuals are per space vehicle, tropo is not. + + + Parameters + ---------- + sbp : SBP + SBP parent object to inherit from. + header : GriddedCorrectionHeader + Header of a Gridded Correction message + element : GridElement + Tropo and STEC residuals for the given grid point + sender : int + Optional sender ID, defaults to SENDER_ID (see sbp/msg.py). + + """ + _parser = construct.Struct( + 'header' / construct.Struct(GriddedCorrectionHeader._parser), + 'element' / construct.Struct(GridElement._parser),) + __slots__ = [ + 'header', + 'element', + ] + + def __init__(self, sbp=None, **kwargs): + if sbp: + super( MsgSsrGriddedCorrection, + self).__init__(sbp.msg_type, sbp.sender, sbp.length, + sbp.payload, sbp.crc) + self.from_binary(sbp.payload) + else: + super( MsgSsrGriddedCorrection, self).__init__() + self.msg_type = SBP_MSG_SSR_GRIDDED_CORRECTION + self.sender = kwargs.pop('sender', SENDER_ID) + self.header = kwargs.pop('header') + self.element = kwargs.pop('element') + + def __repr__(self): + return fmt_repr(self) + + @staticmethod + def from_json(s): + """Given a JSON-encoded string s, build a message object. + + """ + d = json.loads(s) + return MsgSsrGriddedCorrection.from_json_dict(d) + + @staticmethod + def from_json_dict(d): + sbp = SBP.from_json_dict(d) + return MsgSsrGriddedCorrection(sbp, **d) + + + def from_binary(self, d): + """Given a binary payload d, update the appropriate payload fields of + the message. + + """ + p = MsgSsrGriddedCorrection._parser.parse(d) + for n in self.__class__.__slots__: + setattr(self, n, getattr(p, n)) + + def to_binary(self): + """Produce a framed/packed SBP message. + + """ + c = containerize(exclude_fields(self)) + self.payload = MsgSsrGriddedCorrection._parser.build(c) + return self.pack() + + def into_buffer(self, buf, offset): + """Produce a framed/packed SBP message into the provided buffer and offset. + + """ + self.payload = containerize(exclude_fields(self)) + self.parser = MsgSsrGriddedCorrection._parser + self.stream_payload.reset(buf, offset) + return self.pack_into(buf, offset, self._build_payload) + + def to_json_dict(self): + self.to_binary() + d = super( MsgSsrGriddedCorrection, self).to_json_dict() + j = walk_json_dict(exclude_fields(self)) + d.update(j) + return d + +SBP_MSG_SSR_GRID_DEFINITION = 0x05F5 +class MsgSsrGridDefinition(SBP): + """SBP class for message MSG_SSR_GRID_DEFINITION (0x05F5). + + You can have MSG_SSR_GRID_DEFINITION inherit its fields directly + from an inherited SBP object, or construct it inline using a dict + of its fields. + + + Definition of the grid for STEC and tropo messages + + Parameters + ---------- + sbp : SBP + SBP parent object to inherit from. + header : GridDefinitionHeader + Header of a Gridded Correction message + rle_list : array + Run Length Encode list of quadrants that contain valid data. +The spec describes the encoding scheme in detail, but +essentially the index of the quadrants that contain transitions between +valid and invalid (and vice versa) are encoded as u8 integers. + + sender : int + Optional sender ID, defaults to SENDER_ID (see sbp/msg.py). + + """ + _parser = construct.Struct( + 'header' / construct.Struct(GridDefinitionHeader._parser), + construct.GreedyRange('rle_list' / construct.Int8ul),) + __slots__ = [ + 'header', + 'rle_list', + ] + + def __init__(self, sbp=None, **kwargs): + if sbp: + super( MsgSsrGridDefinition, + self).__init__(sbp.msg_type, sbp.sender, sbp.length, + sbp.payload, sbp.crc) + self.from_binary(sbp.payload) + else: + super( MsgSsrGridDefinition, self).__init__() + self.msg_type = SBP_MSG_SSR_GRID_DEFINITION + self.sender = kwargs.pop('sender', SENDER_ID) + self.header = kwargs.pop('header') + self.rle_list = kwargs.pop('rle_list') + + def __repr__(self): + return fmt_repr(self) + + @staticmethod + def from_json(s): + """Given a JSON-encoded string s, build a message object. + + """ + d = json.loads(s) + return MsgSsrGridDefinition.from_json_dict(d) + + @staticmethod + def from_json_dict(d): + sbp = SBP.from_json_dict(d) + return MsgSsrGridDefinition(sbp, **d) + + + def from_binary(self, d): + """Given a binary payload d, update the appropriate payload fields of + the message. + + """ + p = MsgSsrGridDefinition._parser.parse(d) + for n in self.__class__.__slots__: + setattr(self, n, getattr(p, n)) + + def to_binary(self): + """Produce a framed/packed SBP message. + + """ + c = containerize(exclude_fields(self)) + self.payload = MsgSsrGridDefinition._parser.build(c) + return self.pack() + + def into_buffer(self, buf, offset): + """Produce a framed/packed SBP message into the provided buffer and offset. + + """ + self.payload = containerize(exclude_fields(self)) + self.parser = MsgSsrGridDefinition._parser + self.stream_payload.reset(buf, offset) + return self.pack_into(buf, offset, self._build_payload) + + def to_json_dict(self): + self.to_binary() + d = super( MsgSsrGridDefinition, self).to_json_dict() + j = walk_json_dict(exclude_fields(self)) + d.update(j) + return d + msg_classes = { 0x05DD: MsgSsrOrbitClock, 0x05DC: MsgSsrOrbitClockDepA, 0x05E1: MsgSsrCodeBiases, 0x05E6: MsgSsrPhaseBiases, + 0x05EB: MsgSsrStecCorrection, + 0x05F0: MsgSsrGriddedCorrection, + 0x05F5: MsgSsrGridDefinition, } \ No newline at end of file diff --git a/python/tests/sbp/test_table.py b/python/tests/sbp/test_table.py index 7289816edf..fa8017901a 100644 --- a/python/tests/sbp/test_table.py +++ b/python/tests/sbp/test_table.py @@ -44,7 +44,7 @@ def test_table_count(): Test number of available messages to deserialize. """ - number_of_messages = 169 + number_of_messages = 172 assert len(_SBP_TABLE) == number_of_messages def test_table_unqiue_count(): diff --git a/spec/yaml/swiftnav/sbp/gnss.yaml b/spec/yaml/swiftnav/sbp/gnss.yaml index 651d6316be..c1c39ab9e3 100644 --- a/spec/yaml/swiftnav/sbp/gnss.yaml +++ b/spec/yaml/swiftnav/sbp/gnss.yaml @@ -46,6 +46,19 @@ definitions: - 14: GAL E1B - 20: GAL E7I + - SvId: + short_desc: Space vehicle identifier + desc: | + A (Constellation ID, satellite ID) tuple that uniquely identifies + a space vehicle + fields: + - satId: + type: u8 + desc: ID of the space vehicle within its constellation + - constellation: + type: u8 + desc: Constellation ID to which the SV belongs + - GnssSignalDep: short_desc: Deprecated desc: Deprecated. diff --git a/spec/yaml/swiftnav/sbp/ssr.yaml b/spec/yaml/swiftnav/sbp/ssr.yaml index 7f604d1994..652e4ececc 100644 --- a/spec/yaml/swiftnav/sbp/ssr.yaml +++ b/spec/yaml/swiftnav/sbp/ssr.yaml @@ -47,19 +47,156 @@ definitions: - discontinuity_counter: type: u8 desc: | - Signal phase discontinuity counter. + Signal phase discontinuity counter. Increased for every discontinuity in phase. - bias: type: s32 units: 0.1 mm desc: Phase bias for specified signal + - STECHeader: + short_desc: Header for MSG_SSR_STEC_CORRECTION message + desc: | + A full set of STEC information will likely span multiple SBP + messages, since SBP message a limited to 255 bytes. The header + is used to tie multiple SBP messages into a sequence. + fields: + - time: + type: GPSTime + desc: GNSS time of the STEC data + - num_msgs: + type: u8 + desc: Number of messages in the dataset + - seq_num: + type: u8 + desc: Position of this message in the dataset + - ssr_update_interval: + type: u16 + units: seconds + desc: update interval in seconds + - iod_ssr: + type: u8 + desc: range 0 - 15 + + - GriddedCorrectionHeader: + short_desc: Header for MSG_SSR_GRIDDED_CORRECTION + desc: | + The 3GPP message contains nested variable length arrays + which are not suppported in SBP, so each grid point will + be identified by the index. + fields: + - time: + type: GPSTime + desc: GNSS time of the STEC data + - num_msgs: + type: u16 + desc: Number of messages in the dataset + - seq_num: + type: u16 + desc: Position of this message in the dataset + - ssr_update_interval: + type: u16 + units: seconds + desc: update interval in seconds + - iod_ssr: + type: u8 + desc: range 0 - 15 + - tropo_quality: + type: u8 + units: encoded value - see spec for details + desc: troposphere quality indicator + + - STECSatElement: + desc: STEC for the given satellite. + fields: + - sv_id: + type: SvId + desc: Unique space vehicle identifier + - stec_quality_indicator: + type: u8 + units: encoded value - see spec for details + desc: quality of STEC data + - stec_coeff: + type: array + size: 4 + fill: s16 + desc: coefficents of the STEC polynomial + + - TroposphericDelayCorrection: + short_desc: troposphere delay correction + desc: | + Contains wet vertical and hydrostatic vertical delay + fields: + - hydro: + type: s16 + units: 0.4 mm (add 2.3 m to get actual vert hydro delay) + desc: hydrostatic vertical delay + - wet: + type: s8 + units: 0.4 mm (add 0.252 m to get actual vert wet delay) + desc: wet vertical delay + + - STECResidual: + desc: STEC residual + fields: + - sv_id: + type: SvId + desc: space vehicle identifier + - residual: + type: s16 + units: 0.04 TECU + desc: STEC residual + + - GridElement: + short_desc: Grid datum for troposphere and STEC residuals + desc: | + Contains one tropo datum, plus STEC residuals for each space + vehicle + fields: + - index: + type: u16 + desc: index of the grid point + - tropo_delay_correction: + type: TroposphericDelayCorrection + desc: Wet and Hydrostatic Vertical Delay + - STEC_residuals: + type: array + fill: STECResidual + desc: STEC Residual for the given space vehicle + + - GridDefinitionHeader: + short_desc: Defines the grid for STEC and tropo grid messages + desc: | + Defines the grid for STEC and tropo grid messages. + Also includes an RLE encoded validity list. + fields: + - region_size_inverse: + type: u8 + units: coded value - see spec + desc: inverse of region size + - area_width: + type: u16 + units: coded value - 0 means not present (Swift convention) + desc: area width; see spec for details + - lat_nw_corner_enc: + type: u16 + desc: encoded latitude of the northwest corner of the grid + - lon_nw_corner_enc: + type: u16 + desc: encoded longitude of the northwest corner of the grid + - num_msgs: + type: u8 + desc: Number of messages in the dataset + - seq_num: + type: u8 + desc: Postion of this message in the dataset + - MSG_SSR_ORBIT_CLOCK: id: 0x05DD short_desc: Precise orbit and clock correction desc: | - The precise orbit and clock correction message is - to be applied as a delta correction to broadcast + The precise orbit and clock correction message is + to be applied as a delta correction to broadcast ephemeris and is typically an equivalent to the 1060 and 1066 RTCM message types fields: @@ -77,7 +214,7 @@ definitions: type: u8 desc: | IOD of the SSR correction. A change of Issue Of Data - SSR is used to indicate a change in the SSR + SSR is used to indicate a change in the SSR generating configuration - iod: type: u32 @@ -123,8 +260,8 @@ definitions: id: 0x05DC short_desc: Precise orbit and clock correction desc: | - The precise orbit and clock correction message is - to be applied as a delta correction to broadcast + The precise orbit and clock correction message is + to be applied as a delta correction to broadcast ephemeris and is typically an equivalent to the 1060 and 1066 RTCM message types fields: @@ -142,7 +279,7 @@ definitions: type: u8 desc: | IOD of the SSR correction. A change of Issue Of Data - SSR is used to indicate a change in the SSR + SSR is used to indicate a change in the SSR generating configuration - iod: type: u8 @@ -183,15 +320,15 @@ definitions: type: s32 units: 0.00002 mm/s^-2 desc: C2 polynomial coefficient for correction of broadcast satellite clock - - + + - MSG_SSR_CODE_BIASES: id: 0x05E1 short_desc: Precise code biases correction desc: | The precise code biases message is to be added to the pseudorange of the corresponding signal - to get corrected pseudorange. It is typically + to get corrected pseudorange. It is typically an equivalent to the 1059 and 1065 RTCM message types fields: - time: @@ -208,14 +345,14 @@ definitions: type: u8 desc: | IOD of the SSR correction. A change of Issue Of Data - SSR is used to indicate a change in the SSR + SSR is used to indicate a change in the SSR generating configuration - biases: type: array fill: CodeBiasesContent map_by: code desc: Code biases for the different satellite signals - + - MSG_SSR_PHASE_BIASES: id: 0x05E6 @@ -223,9 +360,9 @@ definitions: desc: | The precise phase biases message contains the biases to be added to the carrier phase of the corresponding - signal to get corrected carrier phase measurement, as - well as the satellite yaw angle to be applied to compute - the phase wind-up correction. + signal to get corrected carrier phase measurement, as + well as the satellite yaw angle to be applied to compute + the phase wind-up correction. It is typically an equivalent to the 1265 RTCM message types fields: - time: @@ -242,7 +379,7 @@ definitions: type: u8 desc: | IOD of the SSR correction. A change of Issue Of Data - SSR is used to indicate a change in the SSR + SSR is used to indicate a change in the SSR generating configuration - dispersive_bias: type: u8 @@ -267,3 +404,51 @@ definitions: desc: | Phase biases corrections for a satellite being tracked. + + + - MSG_SSR_STEC_CORRECTION: + id: 0x05EB + short_desc: Slant Total Electron Content + desc: | + The STEC per space vehicle, given as polynomial approximation for + a given grid. This should be combined with SSR-GriddedCorrection + message to get the state space representation of the atmospheric + delay. + fields: + - header: + type: STECHeader + desc: Header of a STEC message + - stec_sat_list: + type: array + fill: STECSatElement + desc: Array of STEC information for each space vehicle + + - MSG_SSR_GRIDDED_CORRECTION: + id: 0x05F0 + short_desc: Gridded troposphere and STEC residuals + desc: | + STEC residuals are per space vehicle, tropo is not. + fields: + - header: + type: GriddedCorrectionHeader + desc: Header of a Gridded Correction message + - element: + type: GridElement + desc: Tropo and STEC residuals for the given grid point + + + - MSG_SSR_GRID_DEFINITION: + id: 0x05F5 + desc: Definition of the grid for STEC and tropo messages + fields: + - header: + type: GridDefinitionHeader + desc: Header of a Gridded Correction message + - rle_list: + type: array + fill: u8 + desc: | + Run Length Encode list of quadrants that contain valid data. + The spec describes the encoding scheme in detail, but + essentially the index of the quadrants that contain transitions between + valid and invalid (and vice versa) are encoded as u8 integers.