/******************************************************************************/
// @copyright   Copyright Notification
//   No part may be reproduced except as authorized by written permission.
//   The copyright and the foregoing restriction extend to reproduction in all media.
//   (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC).
//   All rights reserved.
// @version: IWD_23wk37
// $Date: 2022-10-26 11:05:35 +0200 (Wed, 26 Oct 2022) $
// $Rev: 34526 $
/******************************************************************************/

module EPS_NAS_TypeDefs {

  import from CommonDefs all;
  import from NAS_CommonTypeDefs all;

  //****************************************************************************
  // NAS PROTOCOL DEFINITIONS: IEs
  //----------------------------------------------------------------------------
  // General Info Elements (24.301 cl. 9)
  //----------------------------------------------------------------------------

  type HalfOctet_Type EPS_BearerIdentity;                       /* 24.301 cl. 9.3.2 */


  // Note: This IE is not needed when SECURITY PROTECTED NAS MESSAGE is
  // handled by the NAS emulation An alternative approach would be to
  // implement NAS_Message as a union of all NAS messages except
  // SECURITY PROTECTED NAS MESSAGE and SERVICE REQUEST - but this would
  // have impact on codec implementation and may reduce readability */
  type octetstring    NAS_Message;                              /* 24.301 cl. 9.7 */

  type O2_Type     EPS_MmeGi;
  type O1_Type     EPS_Mmec;
  type O4_Type     EPS_M_Tmsi;
  type O5_Type     EPS_S_Tmsi;

  type B2_Type EPS_PartialTaiListType;
  type B4_Type EPS_ServiceTypeValue;
  type B3_Type EPS_UpdateTypeValue;

  type O2_Type NAS_Tac;

  //----------------------------------------------------------------------------
  // Common Info Elements (24.301 cl. 9.9.2)
  //----------------------------------------------------------------------------

  type record TrackingAreaId {                                  /* 24.301 cl. 9.9.3.32 */
    IEI8_Type                   iei                   optional, /* present in case of TV; omit in case of V */
    NAS_PlmnId                  plmnId,                         /* MCC  + MNC 3 digits each */
    NAS_Tac                     tac                             /* TAC */
  };

  type record length (1..16) of NAS_Tac NAS_TacList;

  type record PartialTai {
    NAS_PlmnId                  plmnId,                         /* MCC  + MNC 3 digits each */
    NAS_Tac                     tac
  };

  type record Type0Element {  // @sic R5s100184 sic@
    NAS_PlmnId                  plmnId,                         /* MCC  + MNC 3 digits each */
    NAS_TacList                 tacList
  };

  type record Type1Element {  // @sic R5s100184 sic@
    PartialTai                  partialTac
  };

  type record length (1..16) of PartialTai PlmnAndTacs;

  type record Type2Element {  // @sic R5s100184 sic@
    PlmnAndTacs    plmnAndTacs
  };

  type record length (1..16) of Type0Element Type0List;
  type record length (1..16) of Type1Element Type1List;
  type record length (1..16) of Type2Element Type2List;

  type union PartialTaiType {
    Type0List   type0List,
    Type1List   type1List,
    Type2List   type2List
  };

  type record ListOfPartialTaiList {
    B1_Type                  spareBit,
    EPS_PartialTaiListType   typeOfList,
    B5_Type                  numberOfElements,
    PartialTaiType           partialTaiList  // @sic R5s100184 sic@
  };

  type record TrackingAreaIdList {                              /* 24.301 cl. 9.9.3.33 */
    IEI8_Type                   iei                   optional, /* present in case of TLV; omit in case of LV */
    Type4Length_Type            iel,
    record length (1..16) of ListOfPartialTaiList  listOfPartialTais
  };

  //****************************************************************************
  // NAS PROTOCOL DEFINITIONS: PDUs
  //----------------------------------------------------------------------------
  // EPS mobility management messages (24.301 cl. 8.2)
  //----------------------------------------------------------------------------

  type record ATTACH_ACCEPT {                                   /* 24.301 cl. 8.2.1
                                                                   Significance:  dual
                                                                   Direction:     network to UE */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    SpareHalfOctet                      spareHalfOctet,                         /* cl. 9.9.2.9  M V 1/2 */
    EPS_AttachResult                    epsAttachResult,                        /* cl. 9.9.3.10  M V 1/2 */
    GPRS_Timer                          t3412,                                  /* cl. 9.9.3.16 M V 1   */
    TrackingAreaIdList                  taiList,                                /* cl. 9.9.3.33 M LV 7-97 */
    ESM_MessageContainer                esmMessage,                             /* cl. 9.9.3.15 M LV-E 5-n @sic R5s110176 Baseline Moving sic@ */
    MobileIdentity                      guti                          optional, /* cl. 9.9.3.12 O TLV 13   IEI=0x50 */
    LocAreaId                           lai                           optional, /* cl. 9.9.2.2  O TV 6     IEI=0x13 */
    MobileIdentity                      msIdentity                    optional, /* cl. 9.9.2.3  O TLV 7-10 IEI=0x23 */
    EMM_Cause                           emmCause                      optional, /* cl. 9.9.3.9  O TV 2     IEI=0x53 */
    GPRS_Timer                          t3402                         optional, /* cl. 9.9.3.16 O TV 2     IEI=0x17 */
    GPRS_Timer                          t3423                         optional, /* cl. 9.9.3.16 O TV 2     IEI=0x59 */
    PLMN_List                           equivalentPlmns               optional,  /* cl. 9.9.2.8 O TLV 5-47 IEI=0x4a */
    EmergNumList                        emergencyNumberList           optional,  /* cl. 9.9.3.37 O TLV 5-50 IEI=0x34 */
    EPS_NetworkFeatureSupport           epsNetworkFeatureSupport      optional,  /* cl.9.9.3.12A O TLV 3   IEI=0x64 @sic R5s100135 sic@ */
    AdditionalUpdateResult              addUpdateResult               optional,  /* cl.9.9.3.0A O TV  1 IEI=0xF @sic R5s100135 sic@ */
    GPRS_Timer3                         t3412ExtdValue                optional,   /* cl. 9.9.3.16B O TLV 3     IEI=0x5E @sic R5s120178 Baseline Moving sic@*/
    GPRS_Timer2                         t3324Value                    optional,    /* cl. 9.9.3.16A O TLV 3     IEI=0x6A @sic R5s150329 Baseline Moving sic@ */
    ExtdDRXParams                       extendedDRXParams             optional,    /* 24.008 cl. 10.5.5.32 O TLV 3    IEI=0x6E @sic R5s160711 Baseline Moving sic@*/
    DCN_ID                              dcnId                         optional,   /* cl. 9.9.3.48 O TLV 4    IEI=0x65 @sic R5s170597 Baseline Moving sic@ */
    SMSServicesStatus                   smsServicesStatus             optional,   /* cl. 9.9.3.4b O TLV 1    IEI=0xE @sic R5s170597 Baseline Moving sic@ */
    Non3GPP_NW_ProvidedPolicies         non3GPP_NW_ProvidedPolicies   optional,   /* cl. 9.9.3.49 O TLV 1    IEI=0xD @sic R5s170597 Baseline Moving sic@ */
    GPRS_Timer2                         t3448                         optional,    /* cl. 9.9.3.16A O TLV 3    IEI=0x6B @sic R5s170597 Baseline Moving sic@ */
    NetworkPolicy                       networkPolicy                 optional,    /* cl. 9.9.3.52O TV 1     IEI=0xC @sic R5s180271 Baseline Moving 2018 Phase 1 sic@ */
    GPRS_Timer3                         t3447Value                    optional,    /* cl. 9.9.3.16B O TLV 3    IEI=0x6C @sic R5s180271 Baseline Moving 2018 Phase 1 sic@ */
    ExtdEmergNumList                    xtdEmergencyNumList           optional,    /* cl. 9.9.3.37A O TLV-E 6-65538    IEI=0x7A @sic R5s180552 Baseline Moving 2018 Phase 2 sic@ */
    CipheringKeyData                    cipheringKeyData              optional,    /* cl. 9.9.3.56 O TLV-E 35-2291    IEI=0x7C @sic R5s180552 Baseline Moving 2018 Phase 2 sic@ */
    UERadioCapId                        ueRadioCapId                  optional,    /* cl. 9.9.3.60 O TLV 3-n IEI=0x66 @sic R5s201386 Baseline Moving sic@ */
    UERadioCapIdDeletion                ueRadioCapIdDeleteInd         optional,    /* cl. 9.9.3.61 O TV 1 IEI=0xB @sic R5s201386 Baseline Moving sic@ */
    WUSAssistInfo                       negotiatedWUSAssistInfo       optional,    /* cl. 9.9.3.62 O TLV 3-n IEI=0x35 @sic R5s201386 Baseline Moving sic@ */
    NB_S1_DRXParam                      negotiatedDRXinNB_S1          optional,    /* cl. 9.9.3.63 O TLV 3 IEI=0x36 @sic R5s201386 Baseline Moving sic@ */
    IMSI_Offset                         negotiatedIMSI_Offset         optional,    /* cl. 9.9.3.64 O TLV 4 IEI=0x38 Sep22 @sic R5s221178 Baseline Moving sic@ */
    TrackingAreaIdList                  forbidTAIList_Roaming         optional,    /* cl. 9.9.3.33 O TLV 8-98 IEI=0x1D Sep22 @sic R5s221178 Baseline Moving sic@ */
    TrackingAreaIdList                  forbidTAIList_RegProvService  optional     /* cl. 9.9.3.33 O TLV 8-98 IEI=0x1E Sep22 @sic R5s221178 Baseline Moving sic@ */
  };

  type record ATTACH_COMPLETE {                                 /* 24.301 cl. 8.2.2
                                                                   Significance:  dual
                                                                   Direction:     UE to network */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    ESM_MessageContainer                esmMessage                              /* cl. 9.9.3.15 M LV-E 5-n @sic R5s110176 Baseline Moving sic@ */
  };

  type record ATTACH_REJECT {                                   /* 24.301 cl. 8.2.3
                                                                   Significance:  dual
                                                                   Direction:     network to UE */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    EMM_Cause                           emmCause,                               /* cl. 9.9.3.9  M V 1   */
    ESM_MessageContainer                esmMessage                optional,     /* cl. 9.9.3.15 M TLV-E 6-n IEI=0x78 @sic R5s110176 Baseline Moving sic@ */
    GPRS_Timer2                         t3346                     optional,     /* cl. 9.9.3.16A O TLV 3     IEI=0x5F @sic R5s120178 Baseline Moving sic@*/
    GPRS_Timer2                         t3402                     optional,     /* cl. 9.9.3.16A O TLV 3     IEI=0x16 @sic R5s120178 Baseline Moving sic@*/
    Extd_EMM_Cause                      extdEMMCause              optional,     /* cl. 9.9.3.26A O TV 1      IEI=0xA @sic R5s150329 Baseline Moving sic@ */
    GPRS_Timer3                         lowerBoundTimerValue         optional,  /* cl. 9.9.3.16B O TLV 3 IEI=0x1C Sep22 @sic R5s221178 Baseline Moving sic@ */
    TrackingAreaIdList                  forbidTAIList_Roaming        optional,  /* cl. 9.9.3.33 O TLV 8-98 IEI=0x1D Sep22 @sic R5s221178 Baseline Moving sic@ */
    TrackingAreaIdList                  forbidTAIList_RegProvService optional   /* cl. 9.9.3.33 O TLV 8-98 IEI=0x1E Sep22 @sic R5s221178 Baseline Moving sic@ */
  };

  type record ATTACH_REQUEST {                                  /* 24.301 cl. 8.2.4
                                                                   Significance:  dual
                                                                   Direction:     UE to network */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    NAS_KeySetIdentifier                nasKeySetId,                            /* cl. 9.9.3.21 M V 1/2 */
    EPS_AttachType                      epsAttachType,                          /* cl. 9.9.3.11  M V 1/2 */
    MobileIdentity                      epsMobileIdentity,                      /* cl. 9.9.3.12 M LV 5-12 @sic R5s110176 Baseline Moving sic@ */
    UE_NetworkCap                       ueNetworkCapability,                    /* cl. 9.9.3.34 M LV 3-14  */
    ESM_MessageContainer                esmMessage,                             /* cl. 9.9.3.15 M LV-E 5-n */
    PTMSI_Signature                     oldPtmsiSignature             optional, /* cl 10.5.5.8 of 24.008 O TV 4 IEI=Ox19*/
    MobileIdentity                      additionalGuti                optional, /* cl 9.9.3.12 O TLV 13 IEI=Ox50*/
    TrackingAreaId                      lastVisitedRegisteredTai      optional, /* cl. 9.9.3.32 O TV 6 IEI=0x52 */
    DRXparameter                        drxParameter                  optional, /* cl. 9.9.3.8  O TV 3 IEI=Ox5c */
    MS_NetworkCap                       msNetworkCapability           optional, /* cl. 9.9.3.20 O TLV 4-10 IEI=Ox31 */
    LocAreaId                           oldLai                        optional, /* cl. 9.9.2.2  O TV 6 IEI=0x13 */
    TMSI_Status                         tmsiStatus                    optional, /* cl. 9.9.2.31 O TV 1 IEI=0x9- */
    MS_Clsmk2                           msClassmark2                  optional, /* cl. 9.9.2.4  O TLV 5 IEI=0x11 */
    MS_Clsmk3                           msClassmark3                  optional, /* cl. 9.9.2.5  O TLV 2-34 IEI=0x20 */
    CodecList                           supportedCodecList            optional, /* cl. 9.9.2.10  O TLV 5-n IEI=0x40 */
    AdditionalUpdateType                addUpdateType                 optional,  /* cl.9.9.3.0B O TV 1    IEI=0xF @sic R5s100135 sic@ */
    VoiceDomainPref                     voiceDomainPref               optional,  /* cl.9.9.3.44 O TLV 3   IEI=0x5D @sic R5s110176 Baseline Moving sic@ */
    DeviceProperties                    deviceProperties              optional,  /* cl. 9.9.2.0A O TV 1 IEI=0xD- @sic R5s120178 Baseline Moving sic@*/
    GUTI_Type                           oldGUTI_Type                  optional,  /* cl. 9.9.3.45 O TV 1 IEI=0xE- @sic R5s120178 Baseline Moving sic@*/
    MS_NetworkFeatureSupport            msNetworkFeatureSupport       optional,  /* cl. 9.9.2.0A O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/
    NwkResourceId                       tmsiBasedNRIContainer         optional,  /* cl. 10.5.5.31 O TLV 4 IEI=0x10 @sic R5s130195 Baseline Moving sic@*/
    GPRS_Timer2                         t3324Value                    optional,  /* cl. 9.9.3.16A O TLV 3     IEI=0x6A @sic R5s150329 Baseline Moving sic@ */
    GPRS_Timer3                         t3412ExtdValue                optional,  /* cl. 9.9.3.16B O TLV 3     IEI=0x5E @sic R5s150329 Baseline Moving sic@*/
    ExtdDRXParams                       extendedDRXParams             optional,  /* 24.008 cl. 10.5.5.32 O TLV 3    IEI=0x6E @sic R5s160711 Baseline Moving sic@*/
    UE_AdditionalSecurityCapability     ueAddSecurityCap              optional,  /* cl. 9.9.3.53 O TLV 6    IEI=0x6F @sic R5s180271 Baseline Moving 2018 Phase 1 sic@ */
    UE_Status                           ueStatus                      optional,  /* cl. 9.9.3.54 O TLV 3    IEI=0x6D @sic R5s180552 Baseline Moving 2018 Phase 2 sic@ */
    AdditionalInfoReq                   addInfoReq                    optional,  /* cl. 9.9.3.55 O TLV 2    IEI=0x17 @sic R5s180552 Baseline Moving 2018 Phase 2 sic@ */
    N1_UENetworkCap                     n1UENetworkCap                optional,  /* cl. 9.9.3.57 O TLV 3-15 IEI=0x32 @sic R5s201386 Baseline Moving sic@ */
    UERadioCapIdAvailability            ueRadioCapIdAvailability      optional,  /* cl. 9.9.3.58 O TLV 3 IEI=0x34 @sic R5s201386 Baseline Moving sic@ */
    WUSAssistInfo                       requestedWUSAssistInfo        optional,  /* cl. 9.9.3.62 O TLV 3-n IEI=0x35 @sic R5s201386 Baseline Moving sic@ */
    NB_S1_DRXParam                      drxInNB_S1                    optional,  /* cl. 9.9.3.63 O TLV 3 IEI=0x36 @sic R5s201386 Baseline Moving sic@ */
    IMSI_Offset                         requestedIMSI_Offset          optional   /* cl. 9.9.3.64 O TLV 4 IEI=0x38 Sep22 @sic R5s221178 Baseline Moving sic@ */
  };

  type record AUTHENTICATION_FAILURE {                          /* 24.301 cl. 8.2.5
                                                                   Significance:  dual
                                                                   Direction:     UE to network */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    EMM_Cause                           emmCause,                               /* cl. 9.9.3.9  M V 1   */
    AuthenticationFailureParameter      authenticationFailureParameter optional /* cl. 9.9.3.1  O TLV 16 IEI=0x30 */
  };

  type record AUTHENTICATION_REJECT {                           /* 24.301 cl. 8.2.6
                                                                   Significance:  dual
                                                                   Direction:     network to UE */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType                             /* cl. 9.8      M V 1   */
  };

  type record AUTHENTICATION_REQUEST {                          /* 24.301 cl. 8.2.7
                                                                   Significance:  dual
                                                                   Direction:     network to UE */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    SpareHalfOctet                      spareHalfOctet,                         /* cl. 9.9.2.9  M V 1/2 */
    NAS_KeySetIdentifier                asmeNasKeySetId,                        /* cl. 9.9.3.21 M V 1/2 */
    RAND                                rand,                                   /* cl. 9.9.3.3  M V 16  */
    AUTN                                autn                                    /* cl. 9.9.3.2  M LV 17 */
  };

  type record AUTHENTICATION_RESPONSE {                         /* 24.301 cl. 8.2.8
                                                                   Significance:  dual
                                                                   Direction:     UE to network */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    AuthenticationResponseParameter     authenticationResponseParameter         /* cl. 9.9.3.4  M LV 5-17 */
  };

  type record CS_SERVICE_NOTIFICATION {                         /*  24.301 cl. 8.2.9
                                                                    Significance:  dual
                                                                    Direction:     network to UE */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    PagingIdentity                      pagingIdentity,                         /* cl. 9.9.3.25A M V 1  @sic R5s100135 sic@ */
    CLI                                 cli                   optional,         /* cl. 9.9.3.38 O TLV 3-14 IEI=0x60 */
    SsCode                              ssCode                optional,         /* cl. 9.9.3.39 O TV 2 IEI=0x61 */
    LcsIndicator                        lcsIndicator          optional,         /* cl. 9.9.3.40 O TV 2  IEI=0x62 */
    LcsClientIdentity                   lcsClientIdentity     optional          /* cl. 9.9.3.41 O TLV 3-257 IEI=0x63 */
  };

  type record DETACH_ACCEPT {                                   /* 24.301 cl. 8.2.10.1/2 (both directions)
                                                                   Significance:  dual
                                                                   Direction:     network to UE */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType                             /* cl. 9.8      M V 1   */
  };

  type record DETACH_REQUEST_MO {                               /* 24.301 cl. 8.2.11.1 (UE originating detach)
                                                                   Significance:  dual
                                                                   Direction:     UE to network */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    NAS_KeySetIdentifier                asmeNasKeySetId,                        /* cl. 9.9.3.21  M V 1/2 */
    DetachType                          detachType,                             /* cl. 9.9.3.7  M V 1/2 */
    MobileIdentity                      epsMobileIdentity                       /* cl. 9.9.3.12 M LV 5-12 @sic R5s110176 Baseline Moving sic@ */
  };

  type record DETACH_REQUEST_MT {                               /* 24.301 cl. 8.2.11.2 (UE terminated detach)
                                                                   Significance:  dual
                                                                   Direction:     network to UE */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    SpareHalfOctet                      spareHalfOctet,                         /* cl. 9.9.2.9  M V 1/2 */
    DetachType                          detachType,                             /* cl. 9.9.3.7  M V 1/2 */
    EMM_Cause                           emmCause                     optional,  /* cl. 9.9.3.9  O TV 2 IEI=0x53 */
    GPRS_Timer3                         lowerBoundTimerValue         optional,  /* cl. 9.9.3.16B O TLV 3 IEI=0x1C Sep22 @sic R5s221178 Baseline Moving sic@ */
    TrackingAreaIdList                  forbidTAIList_Roaming        optional,  /* cl. 9.9.3.33 O TLV 8-98 IEI=0x1D Sep22 @sic R5s221178 Baseline Moving sic@ */
    TrackingAreaIdList                  forbidTAIList_RegProvService optional   /* cl. 9.9.3.33 O TLV 8-98 IEI=0x1E Sep22 @sic R5s221178 Baseline Moving sic@ */
  };

  type record DL_NAS_TRANSPORT {                                 /* 24.301 cl. 8.2.12
                                                                    Significance:  local
                                                                    Direction:     network to UE */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    NAS_MessageContainer                nasMessage                              /* cl. 9.9.3.22 M LV 3-252 */
  };

  type record EMM_INFORMATION {                                 /* 24.301 cl. 8.2.13
                                                                   Significance:  local
                                                                   Direction:     network to UE */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    NetworkName                         fullNetworkName               optional, /* cl. 9.9.3.24 O TLV 3-? IEI=0x43 */
    NetworkName                         shortNetworkName              optional, /* cl. 9.9.3.24 O TLV 3-? IEI=0x45 */
    TimeZone                            localTimeZone                 optional, /* cl. 9.9.3.29 O TV 2    IEI=0x46 */
    TimeZoneAndTime                     localTimeZoneAndTime          optional, /* cl. 9.9.3.30 O TV 8    IEI=0x47 */
    DaylightSavingTime                  daylightSavingTime            optional  /* cl. 9.9.3.6  O TLV 3   IEI=0x49 */
  };

  type record EMM_STATUS {                                      /* 24.301 cl. 8.2.14
                                                                   Significance:  local
                                                                   Direction:     both */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    EMM_Cause                           emmCause                                /* cl. 9.9.3.9  M V 1   */
  };

  type record EXT_SERVICE_REQUEST {                       /* 24.301 cl. 8.2.15
                                                             Significance:  dual
                                                             Direction:     UE to network */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    NAS_KeySetIdentifier                nasKeySetId,                            /* cl. 9.9.3.21 M V 1/2 */
    EPS_ServiceType                     serviceType,                            /* cl. 9.9.3.27 M V 1/2 */
    MobileIdentity                      mTMSI,                                  /* cl. 9.9.2.3  M LV 6  */
    CSFBResponse                        csfbResponse                 optional,  /* cl. 9.9.3.5  C TV 1 IEI=0xB- */
    EPS_BearerContextStatus             epsBearerContextStatus       optional,  /* cl. 9.9.2.1  O TLV 4    IEI=0x57 @sic R5s110176 Baseline Moving sic@ */
    DeviceProperties                    deviceProperties             optional,  /* cl. 9.9.2.0A O TV 1 IEI=0xD- @sic R5s120178 Baseline Moving sic@*/
    UE_RequestType                      ueRequestType                optional,  /* cl. 9.9.3.65 O TLV 3 IEI=0x29 Sep22 @sic R5s221178 Baseline Moving sic@ */
    PagingRestriction                   pagingRestriction            optional   /* cl. 9.9.3.66 O TLV 3-5 IEI=0x28 Sep22 @sic R5s221178 Baseline Moving sic@ */
  };

  type record GUTI_REALLOCATION_COMMAND {                       /* 24.301 cl. 8.2.16
                                                                   Significance:  dual
                                                                   Direction:     network to UE */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    MobileIdentity                      guti,                                   /* cl. 9.9.3.12 M LV 12 */
    TrackingAreaIdList                  taiList                       optional, /* cl. 9.9.3.33 O TLV 8-98 IEI=0x54 */
    DCN_ID                              dcnId                         optional, /* cl. 9.9.3.48 O TLV 4   IEI=0x65 @sic R5s170597 Baseline Moving sic@ */
    UERadioCapId                        ueRadioCapId                  optional, /* cl. 9.9.3.60 O TLV 3-n IEI=0x66 @sic R5s201386 Baseline Moving sic@ */
    UERadioCapIdDeletion                ueRadioCapIdDeleteInd         optional  /* cl. 9.9.3.61 O TV 1 IEI=0xB @sic R5s201386 Baseline Moving sic@ */
  };

  type record GUTI_REALLOCATION_COMPLETE {                      /* 24.301 cl. 8.2.17
                                                                   Significance:  dual
                                                                   Direction:     UE to network */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType                             /* cl. 9.8      M V 1   */
  };

  type record IDENTITY_REQUEST {                                /* 24.301 cl. 8.2.18
                                                                   Significance:  dual
                                                                   Direction:     network to UE */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    SpareHalfOctet                      spareHalfOctet,                         /* cl. 9.9.2.9  M V 1/2 */
    IdentityType                        identityType2                           /* cl. 9.9.3.17 M V 1/2 */
  };

  type record IDENTITY_RESPONSE {                               /* 24.301 cl. 8.2.19
                                                                   Significance:  dual
                                                                   Direction:     UE to network */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    MobileIdentity                      mobileIdentity                          /* cl. 9.9.2.3  M LV 4-10 */
  };

  type record SECURITY_MODE_COMMAND {                           /* 24.301 cl. 8.2.20
                                                                   Significance:  dual
                                                                   Direction:     network to UE */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1     M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2       M V 1/2 */
    MessageType                         messageType,                            /* cl. 9.8       M V 1   */
    NAS_SecurityAlgorithms              nasSecurityAlgorithms,                  /* cl. 9.9.3.23  M V 1   */
    SpareHalfOctet                      spareHalfOctet,                         /* cl. 9.9.2.9  M V 1/2 */
    NAS_KeySetIdentifier                asmeNasKeySetId,                        /* cl. 9.9.3.21  M V 1/2 */
    UE_SecurityCapability               replayedSecurityCapability,             /* cl. 9.9.3.36  M LV 3-6 */
    IMEISV_Request                      imeisvRequest                 optional, /* cl. 9.9.3.18  O TV 1 IEI=0xC- */
    Nonce                               replayedNonceUe               optional, /* cl. 9.9.3.25  O TV 5 IEI=0x55 */
    Nonce                               nonceMme                      optional, /* cl. 9.9.3.25  O TV 5 IEI=0x56 */
    HashMME                             hashMME                       optional, /* cl. 9.9.3.50 O TLV 10    IEI=0x4F @sic R5s170597 Baseline Moving sic@ */
    UE_AdditionalSecurityCapability     replayedUEAddSecurityCap      optional, // @sic R5s180271 Baseline Moving 2018 Phase 1 sic@
    UERadioCapIdRequest                 ueRadioCapIdRequest           optional  /* cl. 9.9.3.59 O TLV 3 IEI=0x37 @sic R5s201386 Baseline Moving sic@ */
  };

  type record SECURITY_MODE_COMPLETE {                          /* 24.301 cl. 8.2.21
                                                                   Significance:  dual
                                                                   Direction:     UE to network */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    MobileIdentity                      imeisv                        optional, /* cl. 9.9.2.3  O TLV 11 IEI=0x23 */
    ReplayedNASMessageContainer         replayedNASMsg                optional, /* cl. 9.9.3.51 O TLV-E 3-n IEI=0x79 @sic R5s170597 Baseline Moving sic@ */
    UERadioCapId                        ueRadioCapId                  optional  /* cl. 9.9.3.60 O TLV 3-n IEI=0x66 @sic R5s201386 Baseline Moving sic@ */
  };

  type record SECURITY_MODE_REJECT {                            /* 24.301 cl. 8.2.22
                                                                   Significance:  dual
                                                                   Direction:     UE to network */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    EMM_Cause                           emmCause                                /* cl. 9.9.3.9  M V 1   */
  };

  type record SECURITY_PROTECTED_NAS_MESSAGE {                  /* 24.301 cl. 8.2.23
                                                                   Significance:  dual
                                                                   Direction:     both */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageAuthenticationCode           messageAuthenticationCode,              /* cl. 9.5      M V 4   */
    NAS_SequenceNumber                  sequenceNumber,                         /* cl. 9.6      M V 1   */
    NAS_Message                         nasMessage                              /* cl. 9.7      M V 1-n */
  };

  type record SERVICE_REJECT {                                  /* 24.301 cl. 8.2.24
                                                                   Significance:  dual
                                                                   Direction:     network to UE */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    EMM_Cause                           emmCause,                               /* cl. 9.9.3.9  M V 1   */
    GPRS_Timer                          t3442                         optional, /* cl. 9.9.3.16 C TV 2     IEI=0x5b */
    GPRS_Timer2                         t3346                         optional, /* cl. 9.9.3.16A O TLV 3   IEI=0x5F @sic R5s120178 Baseline Moving sic@ */
    GPRS_Timer2                         t3448                         optional, /* cl. 9.9.3.16A O TLV 3    IEI=0x6B @sic R5s170597 Baseline Moving sic@ */
    GPRS_Timer3                         lowerBoundTimerValue          optional, /* cl. 9.9.3.16B O TLV 3 IEI=0x1C Sep22 @sic R5s221178 Baseline Moving sic@ */
    TrackingAreaIdList                  forbidTAIList_Roaming         optional, /* cl. 9.9.3.33 O TLV 8-98 IEI=0x1D Sep22 @sic R5s221178 Baseline Moving sic@ */
    TrackingAreaIdList                  forbidTAIList_RegProvService  optional  /* cl. 9.9.3.33 O TLV 8-98 IEI=0x1E Sep22 @sic R5s221178 Baseline Moving sic@ */
  };

  type record SERVICE_REQUEST {                                 /* 24.301 cl. 8.2.25
                                                                   Significance:  dual
                                                                   Direction:     UE to network */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    KSIandSN                            ksiAndSN,                               /* cl. 9.9.3.19 M V 1   */
    ShortMAC                            shortMAC                                /* cl. 9.9.3.28 M V 2   */
  };

  type record TRACKING_AREA_UPDATE_ACCEPT {                     /* 24.301 cl. 8.2.26
                                                                   Significance:  dual
                                                                   Direction:     network to UE */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    SpareHalfOctet                      spareHalfOctet,                         /* cl. 9.9.2.9  M V 1/2 */
    EPS_UpdateResult                    epsUpdateResult,                        /* cl. 9.9.3.13 M V 1/2 */
    GPRS_Timer                          t3412                         optional, /* cl. 9.9.3.16 O TV 2     IEI=0x5a */
    MobileIdentity                      guti                          optional, /* cl. 9.9.3.12 O TLV 13   IEI=0x50 */
    TrackingAreaIdList                  taiList                       optional, /* cl. 9.9.3.33 O TLV 8-98 IEI=0x54 */
    EPS_BearerContextStatus             epsBearerContextStatus        optional, /* cl. 9.9.2.1  O TLV 4    IEI=0x57 */
    LocAreaId                           lai                           optional, /* cl. 9.9.2.2  O TV 6     IEI=0x13 */
    MobileIdentity                      msIdentity                    optional, /* cl. 9.9.2.3  O TLV 7-10 IEI=0x23 */
    EMM_Cause                           emmCause                      optional, /* cl. 9.9.3.9  O TV 2     IEI=0x53 */
    GPRS_Timer                          t3402                         optional, /* cl. 9.9.3.16 O TV 2     IEI=0x17 */
    GPRS_Timer                          t3423                         optional, /* cl. 9.9.3.16 O TV 2     IEI=0x59 */
    PLMN_List                           equivalentPlmns               optional, /* cl. 9.9.2.8  O TLV 5-47 IEI=0x4a */
    NAS_KeySetIdentifier                asmeNasKeySetId               optional, /* cl. 9.9.3.21 O TV 1     IEI=0x8-*/
    EmergNumList                        emergencyNumberList           optional,  /* cl. 9.9.3.37 O TLV 5-50 IEI=0x34 */
    EPS_NetworkFeatureSupport           epsNetworkFeatureSupport      optional,  /* cl.9.9.3.12A O TLV 3   IEI=0x64 @sic R5s100135 sic@ */
    AdditionalUpdateResult              addUpdateResult               optional,  /* cl.9.9.3.0A O TV    IEI=0xF @sic R5s100135 sic@ */
    GPRS_Timer3                         t3412ExtdValue                optional,  /* cl. 9.9.3.16B O TLV 3     IEI=0x5E @sic R5s120178 Baseline Moving sic@*/
    GPRS_Timer2                         t3324Value                    optional,   /* cl. 9.9.3.16A O TLV 3     IEI=0x6A @sic R5s150329 Baseline Moving sic@ */
    ExtdDRXParams                       extendedDRXParams             optional,   /* 24.008 cl. 10.5.5.32 O TLV 3    IEI=0x6E @sic R5s160711 Baseline Moving sic@*/
    HeaderCompressConfigStatus          headerCompressionConfigStatus  optional,  /* cl. 9.9.4.27 O TLV 4    IEI=0x68 @sic R5s160711 Baseline Moving sic@ */
    DCN_ID                              dcnId                         optional,   /* cl. 9.9.3.48 O TLV 4    IEI=0x65 @sic R5s170597 Baseline Moving sic@ */
    SMSServicesStatus                   smsServicesStatus             optional,   /* cl. 9.9.3.4b O TLV 1    IEI=0xE @sic R5s170597 Baseline Moving sic@ */
    Non3GPP_NW_ProvidedPolicies         non3GPP_NW_ProvidedPolicies   optional,   /* cl. 9.9.3.49 O TLV 1    IEI=0xD @sic R5s170597 Baseline Moving sic@ */
    GPRS_Timer2                         t3448                         optional,   /* cl. 9.9.3.16A O TLV 3    IEI=0x6B @sic R5s170597 Baseline Moving sic@ */
    NetworkPolicy                       networkPolicy                 optional,   // @sic R5s180271 Baseline Moving 2018 Phase 1 sic@
    GPRS_Timer3                         t3447Value                    optional,   /* cl. 9.9.3.16A O TLV 3    IEI=0x6C @sic R5s180271 Baseline Moving 2018 Phase 1 sic@ */
    ExtdEmergNumList                    xtdEmergencyNumList           optional,   /* cl. 9.9.3.37A O TLV-E 6-65538    IEI=0x7A @sic R5s180552 Baseline Moving 2018 Phase 2 sic@ */
    CipheringKeyData                    cipheringKeyData              optional,   /* cl. 9.9.3.56 O TLV-E 35-2291    IEI=0x7C @sic R5s180552 Baseline Moving 2018 Phase 2 sic@ */
    UERadioCapId                        ueRadioCapId                  optional,   /* cl. 9.9.3.60 O TLV 3-n IEI=0x66 @sic R5s201386 Baseline Moving sic@ */
    UERadioCapIdDeletion                ueRadioCapIdDeleteInd         optional,   /* cl. 9.9.3.61 O TV 1 IEI=0xB @sic R5s201386 Baseline Moving sic@ */
    WUSAssistInfo                       negotiatedWUSAssistInfo       optional,   /* cl. 9.9.3.62 O TLV 3-n IEI=0x35 @sic R5s201386 Baseline Moving sic@ */
    NB_S1_DRXParam                      negotiatedDRXinNB_S1          optional,   /* cl. 9.9.3.63 O TLV 3 IEI=0x36 @sic R5s201386 Baseline Moving sic@ */
    IMSI_Offset                         negotiatedIMSI_Offset         optional,   /* cl. 9.9.3.64 O TLV 4 IEI=0x38 Sep22 @sic R5s221178 Baseline Moving sic@ */
    EPS_AddReqResult                    epsAddRequestResult           optional,   /* cl. 9.9.3.67 O TLV 3 IEI=0x37 Sep22 @sic R5s221178 Baseline Moving sic@ */
    TrackingAreaIdList                  forbidTAIList_Roaming         optional,   /* cl. 9.9.3.33 O TLV 8-98 IEI=0x1D Sep22 @sic R5s221178 Baseline Moving sic@ */
    TrackingAreaIdList                  forbidTAIList_RegProvService  optional    /* cl. 9.9.3.33 O TLV 8-98 IEI=0x1E Sep22 @sic R5s221178 Baseline Moving sic@ */
  };

  type record TRACKING_AREA_UPDATE_COMPLETE {                   /* 24.301 cl. 8.2.27
                                                                   Significance:  dual
                                                                   Direction:     UE to network */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType                             /* cl. 9.8      M V 1   */
  };

  type record TRACKING_AREA_UPDATE_REJECT {                     /* 24.301 cl. 8.2.28
                                                                   Significance:  dual
                                                                   Direction:     network to UE */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    EMM_Cause                           emmCause,                               /* cl. 9.9.3.9  M V 1   */
    GPRS_Timer2                         t3346                     optional,     /* cl. 9.9.3.16A O TLV 3 IEI=0x5F @sic R5s120178 Baseline Moving sic@*/
    Extd_EMM_Cause                      extdEMMCause              optional,     /* cl. 9.9.3.26A O TV 1  IEI=0xA @sic R5s150329 Baseline Moving sic@ */
    GPRS_Timer3                         lowerBoundTimerValue          optional, /* cl. 9.9.3.16B O TLV 3 IEI=0x1C Sep22 @sic R5s221178 Baseline Moving sic@ */
    TrackingAreaIdList                  forbidTAIList_Roaming         optional, /* cl. 9.9.3.33 O TLV 8-98 IEI=0x1D Sep22 @sic R5s221178 Baseline Moving sic@ */
    TrackingAreaIdList                  forbidTAIList_RegProvService  optional  /* cl. 9.9.3.33 O TLV 8-98 IEI=0x1E Sep22 @sic R5s221178 Baseline Moving sic@ */
  };

  type record TRACKING_AREA_UPDATE_REQUEST {                    /* 24.301 cl. 8.2.29
                                                                   Significance:  dual
                                                                   Direction:     UE to network */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1     M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2       M V 1/2 */
    MessageType                         messageType,                            /* cl. 9.8       M V 1   */
    NAS_KeySetIdentifier                asmeNasKeySetId,                        /* cl. 9.9.3.21  M V 1/2 */
    EPS_UpdateType                      epsUpdateType,                          /* cl. 9.9.3.14  M V 1/2 */
    MobileIdentity                      oldGuti,                                /* cl. 9.9.3.12  M LV 12 */
    NAS_KeySetIdentifier                nonCurrentNativeNasKeySetId   optional, /* cl. 9.9.3.21  O TV 1     IEI=0xB- */
    CiphKeySeqNum                       gprsCipheringKeySeqNum        optional, /* cl. 9.9.3.4a  O TV 1     IEI=0x8- @sic R5s100135 sic@ */
    PTMSI_Signature                     oldPtmsiSignature             optional, /* cl. 9.9.3.26  O TV 4     IEI=0x19 */
    MobileIdentity                      additionalGuti                optional, /* cl. 9.9.3.12  O TLV 13   IEI=0x50 */
    Nonce                               nonce                         optional, /* cl. 9.9.3.25  O TV 5     IEI=0x55 */
    UE_NetworkCap                       ueNetworkCapability           optional, /* cl. 9.9.3.34  O TLV 4-10 IEI=0x58 */
    TrackingAreaId                      lastVisitedRegisteredTai      optional, /* cl. 9.9.3.32  O TV 6     IEI=0x52 */
    DRXparameter                        drxParameter                  optional, /* cl. 9.9.3.8   O TV 3     IEI=Ox5c */
    UERadioCapInfoUpdateNeeded          ueRadioCapNeeded              optional, /* cl. 9.9.3.35  O TV 1     IEI=OxA- */
    EPS_BearerContextStatus             epsBearerContextStatus        optional, /* cl. 9.9.2.1   O TLV 4    IEI=0x57 */
    MS_NetworkCap                       msNetworkCapability           optional, /* cl. 9.9.3.20  O TLV 4-10 IEI=0x31 */
    LocAreaId                           oldLai                        optional, /* cl. 9.9.2.2   O TV 6     IEI=0x13 */
    TMSI_Status                         tmsiStatus                    optional, /* cl. 9.9.2.31  O TV 1     IEI=0x9- */
    MS_Clsmk2                           msClassmark2                  optional, /* cl. 9.9.2.4   O TLV 5    IEI=0x11 */
    MS_Clsmk3                           msClassmark3                  optional, /* cl. 9.9.2.5   O TLV 2-34 IEI=0x20 */
    CodecList                           supportedCodecList            optional,  /* cl. 9.9.2.10   O TLV 5-n  IEI=0x40 */
    AdditionalUpdateType                addUpdateType                 optional,  /* cl.9.9.3.0B O TV    IEI=0xF @sic R5s100135 sic@ */
    VoiceDomainPref                     voiceDomainPref               optional,  /* cl.9.9.3.44 O TLV 3   IEI=0x5D @sic R5s110176 Baseline Moving sic@ */
    GUTI_Type                           oldGUTI_Type                  optional,  /* cl. 9.9.3.45 O TV 1 IEI=0xE- @sic R5s120178 Baseline Moving sic@*/
    DeviceProperties                    deviceProperties              optional,  /* cl. 9.9.2.0A O TV 1 IEI=0xD- @sic R5s120178 Baseline Moving sic@*/
    MS_NetworkFeatureSupport            msNetworkFeatureSupport       optional,  /* cl. 9.9.2.0A O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/
    NwkResourceId                       tmsiBasedNRIContainer         optional,  /* cl. 10.5.5.31 O TLV 4 IEI=0x10 @sic R5s130195 Baseline Moving sic@*/
    GPRS_Timer2                         t3324Value                    optional,  /* cl. 9.9.3.16A O TLV 3     IEI=0x6A @sic R5s150329 Baseline Moving sic@ */
    GPRS_Timer3                         t3412ExtdValue                optional,  /* cl. 9.9.3.16B O TLV 3     IEI=0x5E @sic R5s150329 Baseline Moving sic@*/
    ExtdDRXParams                       extendedDRXParams             optional,  /* 24.008 cl. 10.5.5.32 O TLV 3    IEI=0x6E @sic R5s160711 Baseline Moving sic@*/
    UE_AdditionalSecurityCapability     ueAddSecurityCap              optional,  /* cl. 9.9.3.53 O TLV 6    IEI=0x6F @sic R5s180271 Baseline Moving 2018 Phase 1 sic@ */
    UE_Status                           ueStatus                      optional,  /* cl. 9.9.3.54 O TLV 3    IEI=0x6D @sic R5s180552 Baseline Moving 2018 Phase 2 sic@ */
    AdditionalInfoReq                   addInfoReq                    optional,  /* cl. 9.9.3.55 O TLV 2    IEI=0x17 @sic R5s180552 Baseline Moving 2018 Phase 2 sic@ */
    N1_UENetworkCap                     n1UENetworkCap                optional,  /* cl. 9.9.3.57 O TLV 3-15 IEI=0x32 @sic R5s201386 Baseline Moving sic@ */
    UERadioCapIdAvailability            ueRadioCapIdAvailability      optional,  /* cl. 9.9.3.58 O TV 3 IEI=0x34 @sic R5s201386 Baseline Moving sic@ */
    WUSAssistInfo                       requestedWUSAssistInfo        optional,  /* cl. 9.9.3.62 O TLV 3-n IEI=0x35 @sic R5s201386 Baseline Moving sic@ */
    NB_S1_DRXParam                      drxInNB_S1                    optional,  /* cl. 9.9.3.63 O TLV 3 IEI=0x36 @sic R5s201386 Baseline Moving sic@ */
    IMSI_Offset                         requestedIMSI_Offset          optional,  /* cl. 9.9.3.64 O TLV 4 IEI=0x38 Sep22 @sic R5s221178 Baseline Moving sic@ */
    UE_RequestType                      ueRequestType                 optional,  /* cl. 9.9.3.65 O TLV 3 IEI=0x29 Sep22 @sic R5s221178 Baseline Moving sic@ */
    PagingRestriction                   pagingRestriction             optional   /* cl. 9.9.3.66 O TLV 3-5 IEI=0x28 Sep22 @sic R5s221178 Baseline Moving sic@ */
    };

  type record UL_NAS_TRANSPORT {                                 /* 24.301 cl. 8.2.30
                                                                    Significance:  local
                                                                    Direction:     UE to network */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    NAS_MessageContainer                nasMessage                              /* cl. 9.9.3.22 M LV 3-252 */
  };

  type record DL_GENERIC_NAS_TRANSPORT{                          /* 24.301 cl. 8.2.31
                                                                    Significance:  dual
                                                                    Direction:     network to UE @sic R5s110176 Baseline Moving sic@ */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    GenericMessageContainerType         genericMessageContainerType,            /* cl. 9.9.3.42 M V 1   */
    GenericMessageContainer             genericMessageContainer,                /* cl. 9.9.3.43 M LV-E 3-n */
    AdditionalInformation               additionalInformation   optional        /* cl. 9.9.2.0  O TLV 3-n IEI=65 */
  };

  type record UL_GENERIC_NAS_TRANSPORT{                          /* 24.301 cl. 8.2.32
                                                                    Significance:  dual
                                                                    Direction:     UE to network  @sic R5s110176 Baseline Moving sic@ */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    GenericMessageContainerType         genericMessageContainerType,            /* cl. 9.9.3.42 M V 1   */
    GenericMessageContainer             genericMessageContainer,                /* cl. 9.9.3.43 M LV-E 3-n */
    AdditionalInformation               additionalInformation   optional        /* cl. 9.9.2.0  O TLV 3-n IEI=65 */
  };

  type record CONTROL_PLANE_SERVICE_REQUEST {                       /* 24.301 cl. 8.2.33
                                                                       Significance:  dual
                                                                       Direction:     UE to network */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    NAS_KeySetIdentifier                nasKeySetId,                            /* cl. 9.9.3.21 M V 1/2 */
    ControlPlaneServiceType             controlPlaneServiceType,                /* cl. 9.9.3.47 M V 1/2 @sic R5s170597 Baseline Moving sic@ */
    ESM_MessageContainer                esmMessage                    optional, /* cl. 9.9.3.15 O TLV-E 3-n IEI = 78 */
    NAS_MessageContainer                nasMessage                    optional, /* cl. 9.9.3.22 O TLV 4-253 IEI = 67 */
    EPS_BearerContextStatus             epsBearerContextStatus        optional,  /* cl. 9.9.2.1  O TLV 4    IEI=0x57*/
    DeviceProperties                    deviceProperties              optional,  /* cl. 9.9.2.0A O TV 1 IEI=0xD- */
    UE_RequestType                      ueRequestType                 optional,  /* cl. 9.9.3.65 O TLV 3 IEI=0x29 Sep22 @sic R5s221178 Baseline Moving sic@ */
    PagingRestriction                   pagingRestriction             optional   /* cl. 9.9.3.66 O TLV 3-5 IEI=0x28 Sep22 @sic R5s221178 Baseline Moving sic@ */
  };

  type record SERVICE_ACCEPT {                                  /* 24.301 cl. 8.2.34
                                                                   Significance:  dual
                                                                   Direction:     network to UE */
    SecurityHeaderType                  securityHeaderType,                     /* cl. 9.3.1    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    EPS_BearerContextStatus             epsBearerContextStatus       optional,  /* cl. 9.9.2.1  O TLV 4    IEI=0x57 */
    GPRS_Timer2                         t3448                        optional,  /* cl. 9.9.3.16A O TLV 3   IEI=0x6B @sic R5s170597 Baseline Moving sic@ */
    EPS_AddReqResult                    epsAddRequestResult          optional   /* cl. 9.9.3.67 O TLV 3    IEI=0x37 Sep22 @sic R5s221178 Baseline Moving sic@ */
    };

  //----------------------------------------------------------------------------
  // EPS session management messages (24.301 cl. 8.3)
  //----------------------------------------------------------------------------

  type record ACTIVATE_DEDICATED_EPS_BEARER_CONTEXT_ACCEPT {    /* 24.301 cl. 8.3.1
                                                                   Significance:  dual
                                                                   Direction:     UE to network */
    EPS_BearerIdentity                  epsBearerId,                            /* cl. 9.3.2    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    ProcedureTransactionIdentifier      procedureTransactionIdentifier,         /* cl. 9.4      M V 1   */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    ProtocolConfigOptions               protocolConfigurationOptions optional,   /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27*/
    NBIFOMContainer                     nbifomContainer              optional,    /* 24.008 cl. 10.5.6.21 O TLV 3-257 octets  IEI=0x33 @sic R5s160711 Baseline Moving sic@*/
    ExtdProtocolConfigOptions           extdProtocolConfigurationOptions optional   /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */
  };

  type record ACTIVATE_DEDICATED_EPS_BEARER_CONTEXT_REJECT {    /* 24.301 cl. 8.3.2
                                                                   Significance:  dual
                                                                   Direction:     UE to network */
    EPS_BearerIdentity                  epsBearerId,                            /* cl. 9.3.2    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    ProcedureTransactionIdentifier      procedureTransactionIdentifier,         /* cl. 9.4      M V 1   */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    ESM_Cause                           esmCause,                               /* cl. 9.9.4.4  M V 1   */
    ProtocolConfigOptions               protocolConfigurationOptions  optional,  /* cl. 9.9.4.11 O TLV 3-253  IEI=0x27 */
    NBIFOMContainer                     nbifomContainer               optional,    /* 24.008 cl. 10.5.6.21 O TLV 3-257 octets  IEI=0x33 @sic R5s160711 Baseline Moving sic@*/
    ExtdProtocolConfigOptions           extdProtocolConfigurationOptions optional   /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */
  };

  type record ACTIVATE_DEDICATED_EPS_BEARER_CONTEXT_REQUEST {   /* 24.301 cl. 8.3.3
                                                                   Significance:  dual
                                                                   Direction:     network to UE */
    EPS_BearerIdentity                  epsBearerId,                            /* cl. 9.3.2    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    ProcedureTransactionIdentifier      procedureTransactionIdentifier,         /* cl. 9.4      M V 1   */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    SpareHalfOctet                      spareHalfOctet,                         /* cl. 9.9.2.9  M V 1/2 */
    LinkedEpsBearerIdentity             linkedEpsBearerId,                      /* cl. 9.9.4.6  M V 1/2 */
    EPS_QualityOfService                epsQos,                                 /* cl. 9.9.4.3  M LV 2-14 */
    TrafficFlowTemplate                 tft,                                    /* cl. 9.9.4.16 M LV 2-256 */
    TransactionIdentifier               transactionIdentifier         optional, /* cl. 9.9.4.17 O TLV 3-4   IEI=0x5d */
    QualityOfService                    negotiatedQos                 optional, /* cl. 9.9.4.12 O TLV 14-22 IEI=0x30 */
    LLC_SAPI                            negotiatedLlcSapi             optional, /* cl. 9.9.4.7  O TV 2      IEI=0x32 */
    RadioPriority                       radioPriority                 optional, /* cl. 9.9.4.13 O TV 1      IEI=0x8- */
    PacketFlowIdentifier                packetFlowIdentifier          optional, /* cl. 9.9.4.8  O TLV 3     IEI=0x34 */
    ProtocolConfigOptions               protocolConfigurationOptions  optional,  /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */
    WLANOffloadAcceptability            wlanOffloadInd                optional,   /* cl. 9.9.4.18 O TLV 1     IEI=0xC @sic R5s150329 Baseline Moving sic@*/
    NBIFOMContainer                     nbifomContainer               optional,    /* 24.008 cl. 10.5.6.21 O TLV 3-257 octets  IEI=0x33 @sic R5s160711 Baseline Moving sic@*/
    ExtdProtocolConfigOptions           extdProtocolConfigurationOptions optional,   /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */
    Extd_EPS_QOS                        extd_EPS_QOS                  optional // @sic  R5s180271 Baseline Moving 2018 Phase 1 sic@
  };

  type record ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_ACCEPT {      /* 24.301 cl. 8.3.4
                                                                   Significance:  dual
                                                                   Direction:     UE to network */
    EPS_BearerIdentity                  epsBearerId,                            /* cl. 9.3.2    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    ProcedureTransactionIdentifier      procedureTransactionIdentifier,         /* cl. 9.4      M V 1   */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    ProtocolConfigOptions               protocolConfigurationOptions  optional,  /* cl. 9.9.4.11  O TLV 3-253 IEI=0x27 */
    ExtdProtocolConfigOptions           extdProtocolConfigurationOptions optional   /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */
  };

  type record ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REJECT {      /* 24.301 cl. 8.3.5
                                                                   Significance:  dual
                                                                   Direction:     UE to network */
    EPS_BearerIdentity                  epsBearerId,                            /* cl. 9.3.2    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    ProcedureTransactionIdentifier      procedureTransactionIdentifier,         /* cl. 9.4      M V 1   */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    ESM_Cause                           esmCause,                               /* cl. 9.9.4.4  M V 1   */
    ProtocolConfigOptions               protocolConfigurationOptions  optional,  /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */
    ExtdProtocolConfigOptions           extdProtocolConfigurationOptions optional   /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */
  };

  type record ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REQUEST {     /* 24.301 cl. 8.3.6
                                                                   Significance:  dual
                                                                   Direction:     network to UE */
    EPS_BearerIdentity                  epsBearerId,                            /* cl. 9.3.2    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    ProcedureTransactionIdentifier      procedureTransactionIdentifier,         /* cl. 9.4      M V 1   */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    EPS_QualityOfService                epsQos,                                 /* cl. 9.9.4.3  M LV 2-14 */
    AccessPointName                     accessPointName,                        /* cl. 9.9.4.1  M LV 2-101 */
    PDN_Address                         pdnAdress,                              /* cl. 9.9.4.9  M LV 6-14   */
    TransactionIdentifier               transactionIdentifier         optional, /* cl. 9.9.4.17 O TLV 3-4   IEI=0x5d */
    QualityOfService                    negotiatedQos                 optional, /* cl. 9.9.4.12 O TLV 14-22 IEI=0x30 */
    LLC_SAPI                            negotiatedLlcSapi             optional, /* cl. 9.9.4.7  O TV 2      IEI=0x32 */
    RadioPriority                       radioPriority                 optional, /* cl. 9.9.4.13 O TV 1      IEI=0x8- */
    PacketFlowIdentifier                packetFlowIdentifier          optional, /* cl. 9.9.4.8  O TLV 3     IEI=0x34 */
    APN_AMBR                            apnAggMaxBitRate              optional, /* cl. 9.9.4.2  O TLV 4-8   IEI=0x5e */
    ESM_Cause                           esmCause                      optional, /* cl. 9.9.4.4  O TV 2      IEI=0x58 */
    ProtocolConfigOptions               protocolConfigurationOptions  optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */
    ConnectivityType                    connectivityType              optional, /* cl. 9.9.2.0A O TV 1 IEI=0xB- @sic R5s120178 Baseline Moving sic@*/
    WLANOffloadAcceptability            wlanOffloadInd                optional,  /* cl. 9.9.4.18 O TV 1     IEI=0xC @sic R5s150329 Baseline Moving sic@*/
    NBIFOMContainer                     nbifomContainer               optional,    /* 24.008 cl. 10.5.6.21 O TLV 3-257 octets  IEI=0x33 @sic R5s160711 Baseline Moving sic@*/
    HeaderCompressConfig                headerCompressionConfig       optional,    /* cl. 9.9.4.22 O TLV 6-257    IEI=0x66 @sic R5s160711 Baseline Moving sic@*/
    ControlPlaneInd                     controlPlaneOnlyIndication    optional,   /* cl. 9.9.4.23 O TV 1 IEI=0x9- @sic R5s160711 Baseline Moving sic@ */
    ExtdProtocolConfigOptions           extdProtocolConfigurationOptions optional,   /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */
    ServingPLMNRateControl              servingPLMNRateControl        optional,   /* cl. 9.9.4.28 O TLV 4 IEI=0x6E @sic R5s160711 Baseline Moving sic@ */
    Extd_APN_AMBR                       extd_APN_AMBR                 optional // @sic  R5s180271 Baseline Moving 2018 Phase 1 sic@
  };

  type record BEARER_RESOURCE_ALLOCATION_REJECT {               /* 24.301 cl. 8.3.7
                                                                   Significance:  dual
                                                                   Direction:     network to UE */
    EPS_BearerIdentity                  epsBearerId,                            /* cl. 9.3.2    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    ProcedureTransactionIdentifier      procedureTransactionIdentifier,         /* cl. 9.4      M V 1   */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    ESM_Cause                           esmCause,                               /* cl. 9.9.4.4  M V 1   */
    ProtocolConfigOptions               protocolConfigurationOptions  optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */
    GPRS_Timer3                         backOffTimerValue             optional, /* cl. 9.9.3.16B O TLV 3   IEI=0x37 @sic R5s120178, R5s150329 Baseline Moving sic@ Was T3396 Value*/
    ReAttemptIndicator                  reattemptInd                  optional,  /* cl. 9.9.4.13A O TLV 3   IEI=0x6B @sic R5s150329 Baseline Moving sic@*/
    NBIFOMContainer                     nbifomContainer               optional,    /* 24.008 cl. 10.5.6.21 O TLV 3-257 octets  IEI=0x33 @sic R5s160711 Baseline Moving sic@*/
    ExtdProtocolConfigOptions           extdProtocolConfigurationOptions optional   /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */
  };

  type record BEARER_RESOURCE_ALLOCATION_REQUEST {              /* 24.301 cl. 8.3.8
                                                                   Significance:  dual
                                                                   Direction:     UE to network */
    EPS_BearerIdentity                  epsBearerId,                            /* cl. 9.3.2    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    ProcedureTransactionIdentifier      procedureTransactionIdentifier,         /* cl. 9.4      M V 1   */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    SpareHalfOctet                      spareHalfOctet,                         /* cl. 9.9.2.9  M V 1/2 */
    LinkedEpsBearerIdentity             linkedEpsBearerId,                      /* cl. 9.9.4.6  M V 1/2 */
    TrafficFlowTemplate                 trafficFlowAgg,                         /* cl. 9.9.4.15 M LV 2-256 */
    EPS_QualityOfService                requiredTrafficFlowQoS,                 /* cl. 9.9.4.3  M LV 2-14 */
    ProtocolConfigOptions               protocolConfigurationOptions  optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */
    DeviceProperties                    deviceProperties              optional,  /* cl. 9.9.2.0A O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/
    NBIFOMContainer                     nbifomContainer               optional,    /* 24.008 cl. 10.5.6.21 O TLV 3-257 octets  IEI=0x33 @sic R5s160711 Baseline Moving sic@*/
    ExtdProtocolConfigOptions           extdProtocolConfigurationOptions optional,   /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */
    Extd_EPS_QOS                        extd_EPS_QOS                  optional // @sic  R5s180271 Baseline Moving 2018 Phase 1 sic@
  };

  type record BEARER_RESOURCE_MODIFICATION_REJECT {               /* 24.301 cl. 8.3.9
                                                                     Significance:  dual
                                                                     Direction:     network to UE */
    EPS_BearerIdentity                  epsBearerId,                            /* cl. 9.3.2    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    ProcedureTransactionIdentifier      procedureTransactionIdentifier,         /* cl. 9.4      M V 1   */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    ESM_Cause                           esmCause,                               /* cl. 9.9.4.4  M V 1   */
    ProtocolConfigOptions               protocolConfigurationOptions  optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */
    GPRS_Timer3                         backOffTimerValue             optional, /* cl. 9.9.3.16B O TLV 3   IEI=0x37 @sic R5s120178, R5s150329 Baseline Moving sic@ Was T3396 Value*/
    ReAttemptIndicator                  reattemptInd                  optional,  /* cl. 9.9.4.13A O TLV 3   IEI=0x6B @sic R5s150329 Baseline Moving sic@*/
    NBIFOMContainer                     nbifomContainer               optional,    /* 24.008 cl. 10.5.6.21 O TLV 3-257 octets  IEI=0x33 @sic R5s160711 Baseline Moving sic@*/
    ExtdProtocolConfigOptions           extdProtocolConfigurationOptions optional   /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */
  };

  type record BEARER_RESOURCE_MODIFICATION_REQUEST {              /* 24.301 cl. 8.3.10
                                                                     Significance:  dual
                                                                     Direction:     UE to network */
    EPS_BearerIdentity                  epsBearerId,                            /* cl. 9.3.2    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    ProcedureTransactionIdentifier      procedureTransactionIdentifier,         /* cl. 9.4      M V 1   */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    SpareHalfOctet                      spareHalfOctet,                         /* cl. 9.9.2.9  M V 1/2 */
    LinkedEpsBearerIdentity             epsBearerIdentityforPacketFilter,       /* cl. 9.9.4.6  M V 1/2 */
    TrafficFlowTemplate                 trafficFlowAgg,                         /* cl. 9.9.4.15 M LV 2-256 */
    EPS_QualityOfService                requiredTrafficFlowQoS        optional, /* cl. 9.9.4.3  O TLV 3-15  IEI=0x5b   @sic R5s100692 sic@ */
    ESM_Cause                           esmCause                      optional, /* cl. 9.9.4.4  O TV 2      IEI=0x58 */
    ProtocolConfigOptions               protocolConfigurationOptions  optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */
    DeviceProperties                    deviceProperties              optional,  /* cl. 9.9.2.0A O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/
    NBIFOMContainer                     nbifomContainer   optional,    /* 24.008 cl. 10.5.6.21 O TLV 3-257 octets  IEI=0x33 @sic R5s160711 Baseline Moving sic@*/
    HeaderCompressConfig                headerCompressionConfig       optional,    /* cl. 9.9.4.22 O TLV 3-TBD    IEI=0x66 @sic R5s160711 Baseline Moving sic@*/
    ExtdProtocolConfigOptions           extdProtocolConfigurationOptions optional,   /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */
    Extd_EPS_QOS                        extd_EPS_QOS                  optional // @sic  R5s180271 Baseline Moving 2018 Phase 1 sic@
  };

  type record DEACTIVATE_EPS_BEARER_CONTEXT_ACCEPT {            /* 24.301 cl. 8.3.11
                                                                   Significance:  dual
                                                                   Direction:     UE to network */
    EPS_BearerIdentity                  epsBearerId,                            /* cl. 9.3.2    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    ProcedureTransactionIdentifier      procedureTransactionIdentifier,         /* cl. 9.4      M V 1   */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    ProtocolConfigOptions               protocolConfigurationOptions  optional,  /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */
    ExtdProtocolConfigOptions           extdProtocolConfigurationOptions optional   /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */
  };

  type record DEACTIVATE_EPS_BEARER_CONTEXT_REQUEST {           /* 24.301 cl. 8.3.12
                                                                   Significance:  dual
                                                                   Direction:     network to UE */
    EPS_BearerIdentity                  epsBearerId,                            /* cl. 9.3.2    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    ProcedureTransactionIdentifier      procedureTransactionIdentifier,         /* cl. 9.4      M V 1   */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    ESM_Cause                           esmCause,                               /* cl. 9.9.4.4  M V 1   */
    ProtocolConfigOptions               protocolConfigurationOptions  optional, /* cl. 9.9.4.8  O TLV 3-253 IEI=0x27 */
    GPRS_Timer3                         t3396Value                    optional, /* cl. 10.5.7.4a O TLV 3     IEI=0x37 @sic R5s130195 Baseline Moving sic@*/
    WLANOffloadAcceptability            wlanOffloadInd                optional,  /* cl. 9.9.4.18 O TV 1     IEI=0xC @sic R5s150329 Baseline Moving sic@*/
    NBIFOMContainer                     nbifomContainer               optional,    /* 24.008 cl. 10.5.6.21 O TLV 3-257 octets  IEI=0x33 @sic R5s160711 Baseline Moving sic@*/
    ExtdProtocolConfigOptions           extdProtocolConfigurationOptions optional   /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */
  };

  type record ESM_DUMMY_MESSAGE {                         /* 24.301 cl. 8.3.12A
                                                             Significance:  dual
                                                             Direction:     both */
    EPS_BearerIdentity                  epsBearerId,                            /* cl. 9.3.2    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    ProcedureTransactionIdentifier      procedureTransactionIdentifier,         /* cl. 9.4      M V 1   */
    MessageType                         messageType                             /* cl. 9.8      M V 1   */
  };



  type record ESM_INFORMATION_REQUEST {                         /* 24.301 cl. 8.3.13
                                                                   Significance:  dual
                                                                   Direction:     network to UE */
    EPS_BearerIdentity                  epsBearerId,                            /* cl. 9.3.2    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    ProcedureTransactionIdentifier      procedureTransactionIdentifier,         /* cl. 9.4      M V 1   */
    MessageType                         messageType                             /* cl. 9.8      M V 1   */
  };

  type record ESM_INFORMATION_RESPONSE {                        /* 24.301 cl. 8.3.14
                                                                   Significance:  dual
                                                                   Direction:     UE to network */
    EPS_BearerIdentity                  epsBearerId,                            /* cl. 9.3.2    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    ProcedureTransactionIdentifier      procedureTransactionIdentifier,         /* cl. 9.4      M V 1   */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    AccessPointName                     accessPointName               optional, /* cl. 9.9.4.1  O TLV 3-102 IEI=0x28 */
    ProtocolConfigOptions               protocolConfigurationOptions  optional,  /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */
    ExtdProtocolConfigOptions           extdProtocolConfigurationOptions optional   /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */
  };

  type record ESM_STATUS {                                      /* 24.301 cl. 8.3.15
                                                                   Significance:  dual
                                                                   Direction:     both */
    EPS_BearerIdentity                  epsBearerId,                            /* cl. 9.3.2    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    ProcedureTransactionIdentifier      procedureTransactionIdentifier,         /* cl. 9.4      M V 1   */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    ESM_Cause                           esmCause                                /* cl. 9.9.4.4  M V 1   */
  };

  type record MODIFY_EPS_BEARER_CONTEXT_ACCEPT {                /* 24.301 cl. 8.3.16
                                                                   Significance:  dual
                                                                   Direction:     UE to network */
    EPS_BearerIdentity                  epsBearerId,                            /* cl. 9.3.2    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    ProcedureTransactionIdentifier      procedureTransactionIdentifier,         /* cl. 9.4      M V 1   */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    ProtocolConfigOptions               protocolConfigurationOptions  optional,  /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */
    NBIFOMContainer                     nbifomContainer               optional,    /* 24.008 cl. 10.5.6.21 O TLV 3-257 octets  IEI=0x33 @sic R5s160711 Baseline Moving sic@*/
    ExtdProtocolConfigOptions           extdProtocolConfigurationOptions optional   /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */
  };

  type record MODIFY_EPS_BEARER_CONTEXT_REJECT {                /* 24.301 cl. 8.3.17
                                                                   Significance:  dual
                                                                   Direction:     UE to network */
    EPS_BearerIdentity                  epsBearerId,                            /* cl. 9.3.2    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    ProcedureTransactionIdentifier      procedureTransactionIdentifier,         /* cl. 9.4      M V 1   */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    ESM_Cause                           esmCause,                               /* cl. 9.9.4.4  M V 1   */
    ProtocolConfigOptions               protocolConfigurationOptions  optional,  /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */
    NBIFOMContainer                     nbifomContainer               optional,    /* 24.008 cl. 10.5.6.21 O TLV 3-257 octets  IEI=0x33 @sic R5s160711 Baseline Moving sic@*/
    ExtdProtocolConfigOptions           extdProtocolConfigurationOptions optional   /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */
  };

  type record MODIFY_EPS_BEARER_CONTEXT_REQUEST {               /* 24.301 cl. 8.3.18
                                                                   Significance:  dual
                                                                   Direction:     network to UE */
    EPS_BearerIdentity                  epsBearerId,                            /* cl. 9.3.2    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    ProcedureTransactionIdentifier      procedureTransactionIdentifier,         /* cl. 9.4      M V 1   */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    EPS_QualityOfService                newEPSQos                     optional, /* cl. 9.9.4.3  O TLV 3-15  IEI=0x5b */
    TrafficFlowTemplate                 tft                           optional, /* cl. 9.9.4.16 O TLV 3-257 IEI=0x36 */
    QualityOfService                    newQos                        optional, /* cl. 9.9.4.12 O TLV 14-22 IEI=0x30 */
    LLC_SAPI                            negotiatedLlcSapi             optional, /* cl. 9.9.4.7  O TV 2      IEI=0x32 */
    RadioPriority                       radioPriority                 optional, /* cl. 9.9.4.13 O TV 1      IEI=0x8- */
    PacketFlowIdentifier                packetFlowIdentifier          optional, /* cl. 9.9.4.5  O TLV 3     IEI=0x34 */
    APN_AMBR                            apnAggMaxBitRate              optional, /* cl. 9.9.4.2  O TLV 4-8   IEI=0x5e */
    ProtocolConfigOptions               protocolConfigurationOptions  optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */
    WLANOffloadAcceptability            wlanOffloadInd                optional,  /* cl. 9.9.4.18 O TV 1     IEI=0xC @sic R5s150329 Baseline Moving sic@*/
    NBIFOMContainer                     nbifomContainer   optional,    /* 24.008 cl. 10.5.6.21 O TLV 3-257 octets  IEI=0x33 @sic R5s160711 Baseline Moving sic@*/
    HeaderCompressConfig                headerCompressionConfig       optional,    /* cl. 9.9.4.22 O TLV 3-257    IEI=0x66 @sic R5s160711 Baseline Moving sic@*/
    ExtdProtocolConfigOptions           extdProtocolConfigurationOptions optional,   /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */
    Extd_APN_AMBR                       extd_APN_AMBR                 optional, // @sic  R5s180271 Baseline Moving 2018 Phase 1 sic@
    Extd_EPS_QOS                        extd_EPS_QOS                  optional // @sic  R5s180271 Baseline Moving 2018 Phase 1 sic@
    };


  type record NOTIFICATION {                                   /* 24.301 cl. 8.3.18A
                                                                  Significance:  local
                                                                  Direction:     network to UE @sic R5s110176 Baseline Moving sic@ */

  
    EPS_BearerIdentity                  epsBearerId,                            /* cl. 9.3.2    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    ProcedureTransactionIdentifier      procedureTransactionIdentifier,         /* cl. 9.4      M V 1   */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    NotificationIndicator               notificationIndicator                  /*  cl. 9.9.4.7A M LV 2  */
  };


  type record PDN_CONNECTIVITY_REJECT {                         /* 24.301 cl. 8.3.19
                                                                   Significance:  dual
                                                                   Direction:     network to UE */
    EPS_BearerIdentity                  epsBearerId,                            /* cl. 9.3.2    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    ProcedureTransactionIdentifier      procedureTransactionIdentifier,         /* cl. 9.4      M V 1   */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    ESM_Cause                           esmCause,                               /* cl. 9.9.4.4  M V 1   */
    ProtocolConfigOptions               protocolConfigurationOptions  optional,  /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */
    GPRS_Timer3                         backOffTimerValue             optional, /* cl. 9.9.3.16B O TLV 3   IEI=0x37 @sic R5s120178, R5s150329 Baseline Moving sic@ Was T3396 Value*/
    ReAttemptIndicator                  reattemptInd                  optional,  /* cl. 9.9.4.13A O TLV 3   IEI=0x6B @sic R5s150329 Baseline Moving sic@*/
    NBIFOMContainer                     nbifomContainer               optional,    /* 24.008 cl. 10.5.6.21 O TLV 3-257 octets  IEI=0x33 @sic R5s160711 Baseline Moving sic@*/
    ExtdProtocolConfigOptions           extdProtocolConfigurationOptions optional   /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */
  };

  type record PDN_CONNECTIVITY_REQUEST {                        /* 24.301 cl. 8.3.20
                                                                   Significance:  dual
                                                                   Direction:     UE to network */
    EPS_BearerIdentity                  epsBearerId,                            /* cl. 9.3.2    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    ProcedureTransactionIdentifier      procedureTransactionIdentifier,         /* cl. 9.4      M V 1   */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    PDN_Type                            pdnType,                                /* cl. 9.9.4.10 M V 1/2 */
    Request_Type                        requestType,                            /* cl. 9.9.4.14 M V 1/2 */
    ESM_InfoTransferFlag                esmInfoTransferFlag           optional, /* cl. 9.9.4.5  O TV 1      IEI=0xD- */
    AccessPointName                     accessPointName               optional, /* cl. 9.9.4.1  O TLV 3-102 IEI=0x28 */
    ProtocolConfigOptions               protocolConfigurationOptions  optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */
    DeviceProperties                    deviceProperties              optional,  /* cl. 9.9.2.0A O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/
    NBIFOMContainer                     nbifomContainer               optional,    /* 24.008 cl. 10.5.6.21 O TLV 3-257 octets  IEI=0x33 @sic R5s160711 Baseline Moving sic@*/
    HeaderCompressConfig                headerCompressionConfig       optional,    /* cl. 9.9.4.22 O TLV 3-257    IEI=0x66 @sic R5s160711 Baseline Moving sic@*/
    ExtdProtocolConfigOptions           extdProtocolConfigurationOptions optional   /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */
  };

  type record PDN_DISCONNECT_REJECT {                           /* 24.301 cl. 8.3.21
                                                                   Significance:  dual
                                                                   Direction:     network to UE */
    EPS_BearerIdentity                  epsBearerId,                            /* cl. 9.3.2    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    ProcedureTransactionIdentifier      procedureTransactionIdentifier,         /* cl. 9.4      M V 1   */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    ESM_Cause                           esmCause,                               /* cl. 9.9.4.2  M V 1   */
    ProtocolConfigOptions               protocolConfigurationOptions  optional,  /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */
    ExtdProtocolConfigOptions           extdProtocolConfigurationOptions optional   /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */
  };

  type record PDN_DISCONNECT_REQUEST {                          /* 24.301 cl. 8.3.22
                                                                   Significance:  dual
                                                                   Direction:     UE to network */
    EPS_BearerIdentity                  epsBearerId,                            /* cl. 9.3.2    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    ProcedureTransactionIdentifier      procedureTransactionIdentifier,         /* cl. 9.4      M V 1   */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    SpareHalfOctet                      spareHalfOctet,                         /* cl. 9.9.2.9  M V 1/2 */
    LinkedEpsBearerIdentity             linkedEpsBearerId,                      /* cl. 9.9.4.6  M V 1/2 */
    ProtocolConfigOptions               protocolConfigurationOptions  optional,  /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */
    ExtdProtocolConfigOptions           extdProtocolConfigurationOptions optional   /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */
  };

  type record REMOTE_UE_REPORT {                          /* 24.301 cl. 8.3.23
                                                             Significance:  dual
                                                             Direction:     UE to network */
    EPS_BearerIdentity                  epsBearerId,                            /* cl. 9.3.2    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    ProcedureTransactionIdentifier      procedureTransactionIdentifier,         /* cl. 9.4      M V 1   */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    RemoteUEContextList                 remoteUEContextConnected      optional, /* cl. 9.9.4.20  O TLV-E 3-65538 IEI = 79 */
    RemoteUEContextList                 remoteUEContextDisconnected   optional, /* cl. 9.9.4.20  O TLV-E 3-65538 IEI = 7A */
    PKMF_Address                        ProSeKeyManageFunctionAddress optional  /* cl. 9.9.4.21 O TLV 3-19 octets IEI = 6F */
  };

  type record REMOTE_UE_REPORT_RESPONSE {                          /* 24.301 cl. 8.3.24
                                                                      Significance:  dual
                                                                      Direction:     network to UE */
    EPS_BearerIdentity                  epsBearerId,                            /* cl. 9.3.2    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    ProcedureTransactionIdentifier      procedureTransactionIdentifier,         /* cl. 9.4      M V 1   */
    MessageType                         messageType                             /* cl. 9.8      M V 1   */
  };

  type record ESM_DATA_TRANSPORT {                       /* 24.301 cl. 8.3.25
                                                            Significance:  dual
                                                            Direction:     both */
    EPS_BearerIdentity                  epsBearerId,                            /* cl. 9.3.2    M V 1/2 */
    ProtocolDiscriminator               protocolDiscriminator,                  /* cl. 9.2      M V 1/2 */
    ProcedureTransactionIdentifier      procedureTransactionIdentifier,         /* cl. 9.4      M V 1   */
    MessageType                         messageType,                            /* cl. 9.8      M V 1   */
    UserDataContainer                   userDatacontainer,                      /* cl. 9.9.4.24 M LV-E 2-n octets */
    ReleaseAssistanceInd                releaseAssistanceInd         optional   /* cl. 9.9.4.25 O TV 1 IEI=0xF- */
  };

  //----------------------------------------------------------------------------
  // Common Info Elements (24.301 cl. 9.9.2)
  //----------------------------------------------------------------------------

  type record NAS_SecurityParametersfromEUTRA {                         /* 24.301 cl. 9.9.2.6 */
    IEI8_Type                   iei                   optional, /* present in case of TV; omit in case of V */
    B4_Type                     spare,                         /* 8-5 are spare and shall be coded as zero */
    B4_Type                     dl_nasCountValue               /* contains the 4 least significant bits of the binary representation of the downlink NAS COUNT value applicable when
                                                                  this information element is sent*/
  };

  type record NAS_SecurityParameterstoEUTRA {                         /* 24.301 cl. 9.9.2.7 */
    IEI8_Type                   iei                   optional, /* present in case of TV; omit in case of V */
    O4_Type                     noncevalue,                     /*NonceMME value */
    B1_Type                     spare1,                         /*  are spare and shall be coded as zero */
    B3_Type                     cipherAlgorithmType,            /* type of ciphering algorithm in the NAS security algorithms information element   */
    B1_Type                     spare2,                         /*  are spare and shall be coded as zero */
    B3_Type                     integrityAlgorithmType,         /* as the type of integrity protection algorithm  */
    B4_Type                     spare3,                         /*  are spare and shall be coded as zero*/
    B1_Type                     tsc,                            /*  type of security context flag (TSC) */
    B3_Type                     naskeysetid                     /*  Nas key set identifier*/
  };


  //----------------------------------------------------------------------------
  // EPS Mobility Management (EMM) information elements (24.301 cl. 9.9.3)
  //----------------------------------------------------------------------------

  type record SMSServicesStatus {                               // 24.301 cl. 9.9.3.4b
    IEI4_Type                   iei,                            // currently only used as TV
    B1_Type                     spare,
    B3_Type                     smsServicesStatusValue          //0 = CS fallback rejected, 1 = accepted by UE
  };

  type record CSFBResponse {                                    // 24.301 cl. 9.9.3.5
    IEI4_Type                   iei,                            // currently only used as TV
    B1_Type                     spare,
    B3_Type                     csfbValue                       //0 = CS fallback rejected, 1 = accepted by UE
  };

  type record EMM_Cause {                                       /* 24.301 cl. 9.9.3.9 */
    IEI8_Type                   iei                   optional, /* present in case of TV; omit in case of V */
    NAS_CauseValue_Type         causeValue
  };

  type record Extd_EMM_Cause {                                       /* 24.301 cl. 9.9.3.26A */
    IEI4_Type                   iei                   optional, /* present in case of TV; omit in case of V  @sic R5s170597 Baseline Moving sic@ */
    B1_Type                     spare,
    B1_Type                     nbIoTAllowed,                  /*  @sic R5s180552 Baseline Moving 2018 Phase 2 sic@ */
    B1_Type                     epsOptimizationInfo,           // @sic R5s170597 Baseline Moving sic@
    B1_Type                     eutranAllowed
  };

  type record EPS_AttachResult {                                /* 24.301 cl. 9.9.3.10 */
    // IEI is always skipped
    B1_Type                     spare,
    NAS_AttDetValue_Type        resultValue
  };

  type record EPS_AttachType {                                  /* 24.301 cl. 9.9.3.11 */
    // IEI is always skipped
    B1_Type                     spare,
    NAS_AttDetValue_Type        typeValue
  };

  type record EPS_NetworkFeatureSupport {                       /* 24.301 cl 9.9.3.12A @sic R5s100135 sic@ */
    IEI8_Type                   iei                   optional, /* present in case of TV; omit in case of V */
    Type4Length_Type            iel                   optional, /* present in case of LV or TLV; omit in case of V */
    B1_Type                     cp_CIOT,                        // @sic R5s160711 Baseline Moving sic@
    B1_Type                     emmRegistered_withoutPDN,       // @sic R5s160711 Baseline Moving sic@
    B1_Type                     esrps,                          /* @sic R5s120178 Baseline Moving sic@ */
    B2_Type                     csLCS,                          /* @sic R5s110176, R5s120178 Baseline Moving sic@ */
    B1_Type                     epcLCS,                         /* @sic R5s110176 Baseline Moving sic@ */
    B1_Type                     emcBS,                          /* @sic R5s110176, R5s120178 Baseline Moving sic@ */
    B1_Type                     imsVoPS,
    B1_Type                     bearers15             optional, // @sic R5s160711 Baseline Moving, R5s170597 Baseline Moving, R5s180271 Baseline Moving 2018 Phase 1, R5s180552 Baseline Moving 2018 Phase 2 sic@
    B1_Type                     iwkN26                optional, // @sic R5s180271 Baseline Moving 2018 Phase 1, R5s180552 Baseline Moving 2018 Phase 2 sic@
    B1_Type                     restrictDCNR          optional, // @sic R5s180271 Baseline Moving 2018 Phase 1 sic@
    B1_Type                     restrictEC            optional, // @sic R5s170597 Baseline Moving sic@
    B1_Type                     extdPCO               optional, // @sic R5s160711 Baseline Moving sic@
    B1_Type                     headerComp_CP_CIOT    optional, // @sic R5s160711 Baseline Moving sic@
    B1_Type                     s1_U_data             optional, // @sic R5s160711 Baseline Moving sic@
    B1_Type                     up_CIOT               optional, // @sic R5s160711 Baseline Moving sic@
    B3_Type                     spare                 optional, /* Sep22 @sic R5s221178 Baseline Moving sic@ */
    B1_Type                     ptcc                  optional, /* Sep22 @sic R5s221178 Baseline Moving sic@ */
    B1_Type                     pr                    optional, /* Sep22 @sic R5s221178 Baseline Moving sic@ */
    B1_Type                     rpr                   optional, /* Sep22 @sic R5s221178 Baseline Moving sic@ */
    B1_Type                     piv                   optional, /* Sep22 @sic R5s221178 Baseline Moving sic@ */
    B1_Type                     ncr                   optional  /* Sep22 @sic R5s221178 Baseline Moving sic@ */
  };

  type record PagingIdentity {                                  /* 24.301 cl. 9.9.93.25A @sic R5s100135 sic@ */
    IEI8_Type                   iei                   optional, /* present in case of TV; omit in case of V */
    B7_Type                     spareBits,
    B1_Type                     pagingId
  };

  type record AdditionalUpdateResult {                          /* 24.301 cl. 9.9.3.0A @sic R5s100135 sic@ */
    IEI4_Type                   iei,                            // currently only used as TV
    B2_Type                     spareBits,                    // @sic R5s170597 Baseline Moving sic@
    B2_Type                     addUpdateResultValue
  };

  type record EPS_UpdateResult {                                /* 24.301 cl. 9.9.3.13 */
    // IEI is always skipped
    B1_Type                     spare,
    NAS_AttDetValue_Type        resultValue
  };

  type record EPS_UpdateType {                                  /* 24.301 cl. 9.9.3.14 */
    // IEI is always skipped
    B1_Type                     activeFlag,
    NAS_AttDetValue_Type        typeValue
  };

  type record ESM_MessageContainer {                            /* 24.301 cl. 9.9.3.15 */
    IEI8_Type                   iei                   optional, /* present in case of TLV; omit in case of LV */
    Type6Length_Type            iel,
    octetstring                 esmPdu                          /* ESM PDU without NAS security header*/
  };

  type record KSIandSN {                                        /* 24.301 cl. 9.9.3.19 */
    IEI8_Type                   iei                   optional, /* present in case of TV; omit in case of V */
    B3_Type                     ksi,
    B5_Type                     sn
  };

  type record NAS_MessageContainer {                            // 24.301 cl. 9.9.3.22
    IEI8_Type                   iei                   optional, /* present in case of TLV; omit in case of LV */
    Type4Length_Type            iel,
    octetstring                 smsmessage length(2..251)       /* can contain an SMS message (i.e. CP-DATA, CP-ACK or CP-ERROR)
                                                                   as defined in subclause 7.2 in 3GPP TS 24.011 */
  };

  type record NetworkPolicy {                      // 24.301 cl. 9.9.3.52
    IEI4_Type                   iei                   optional, /* present in case of TV; omit in case of V */
    B3_Type                     spare,
    B1_Type                     redirPolicy
  };

  type record Nonce {                                           /* 24.301 cl. 9.9.3.25 */
    IEI8_Type                   iei                   optional, /* present in case of TV; omit in case of V */
    O4_Type                     nonceValue
  };

  type record EPS_ServiceType {                                     // 24.301 cl. 9.9.3.27
    IEI4_Type                   iei                   optional, /* present in case of TV; omit in case of V */
    EPS_ServiceTypeValue        serviceValue
  };

  type record ShortMAC {                                        /* 24.301 cl. 9.9.3.28 */
    IEI8_Type                   iei                   optional, /* present in case of TV; omit in case of V */
    B16_Type                    macValue
  };

  type record UERadioCapInfoUpdateNeeded {                      // 24.301 cl. 9.9.3.35
    IEI4_Type                   iei                   optional, /* present in case of TV; omit in case of V */
    B3_Type                     spare,
    B1_Type                     urcUpdate
  };

  type record UE_AdditionalSecurityCapability {                           /* 24.301 cl. 9.9.3.53 */
    IEI8_Type                   iei                   optional, /* present in case of TV; omit in case of V */
    Type4Length_Type            iel,
    O1_Type                     eaCap5G_0_7,
    O1_Type                     eaCap5G_8_15,
    O1_Type                     iaCap5G_0_7,
    O1_Type                     iaCap5G_8_15
  };

  type record AdditionalInfoReq {                                       /* 24.301 cl. 9.9.3.55 */
    IEI8_Type                   iei                   optional, /* present in case of TV; omit in case of V */
    B7_Type                     spare,
    B1_Type                     cipherKey
  };
  
  type record CipheringKey {
    O2_Type                     id,
    O16_Type                    key,
    B3_Type                     spare,
    B5_Type                     c0Length,
    octetstring                 c0 length (1..16),
    B8_Type                     posSIBType1_1to2_1,
    B8_Type                     posSIBType2_2to9,
    B8_Type                     posSIBType2_10to17,
    B8_Type                     posSIBType2_18to3_1,
    O5_Type                     validityStartTime,
    O2_Type                     validityDuration,
    TrackingAreaIdList          taiList
  };
  
  type record CipheringKeyData {                                     /* 24.301 cl. 9.9.3.56 */
    IEI8_Type                   iei                   optional, /* present in case of TV; omit in case of V */
    Type6Length_Type            iel,
    record of CipheringKey      cipherKey
  };
  
  type record CLI {                           /* 24.301 cl. 9.9.3.38 */
    IEI8_Type                   iei                   optional, /* present in case of TLV; omit in case of LV */
    Type4Length_Type            iel,
    octetstring                 cliValue length(1..12)      /* The coding of the CLI value part is the same as for octets 3 to
                                                               14 of the Calling party BCD number information element defined
                                                               in subclause 10.5.4.9 of 3GPP TS 24.008 */
  };

  type record SsCode {                           /* 24.301 cl. 9.9.3.39 */
    IEI8_Type                   iei                   optional, /* present in case of TV; omit in case of V */
    O1_Type                     ssCodeValue      /*The coding of the SS Code value is given in subclause 17.7.5 of 3GPP TS 29.002 */
  };

  type record LcsIndicator {                           /* 24.301 cl. 9.9.3.40 */
    IEI8_Type                   iei                   optional, /* present in case of TV; omit in case of V */
    O1_Type                     lcsIndicator
  };

  type record LcsClientIdentity {                           /* 24.301 cl. 9.9.3.41 */
    IEI8_Type                   iei                   optional, /* present in case of TLV; omit in case of LV */
    Type4Length_Type            iel,
    octetstring                 lcsClientIdentityValue length(1..255)      /* The coding of the value part of the LCS client
                                                                              identity is given in subclause 17.7.13 of 3GPP TS 29.002  */
  };

  type B8_Type GenericMessageContainerType;   /* 24.301 cl. 9.9.3.42 M V 1  @sic R5s110176 Baseline Moving sic@ */

  type record GenericMessageContainer{        /* 24.301 cl. 9.9.3.43 M LV-E 3-n @sic R5s110176 Baseline Moving sic@*/
    IEI8_Type                   iei optional,
    Type6Length_Type            iel,
    octetstring                 genericMsgContainerValue
  };

  type record GUTI_Type{        /* 24.301 cl. 9.9.3.45 @sic R5s110178 Baseline Moving sic@*/
    IEI4_Type                   iei,
    B3_Type                     spare,
    B1_Type                     gutiType
  };

  type record ControlPlaneServiceType{        /* 24.301 cl. 9.9.3.47 @sic R5s160711 Baseline Moving sic@*/
    IEI4_Type                   iei                  optional, // @sic R5s160758 sic@
    B1_Type                     activeFlag,
    B3_Type                     controlPlaneServiceType // @sic R5s170597 Baseline Moving sic@
  };

  //----------------------------------------------------------------------------
  // EPS Session Management (ESM) information elements (24.301 cl. 9.9.4)
  //----------------------------------------------------------------------------

  type record APN_AMBR {                                        // 24.301 cl. 9.9.4.2
    IEI8_Type                   iei                   optional, /* present in case of TLV; omit in case of LV */
    Type4Length_Type            iel                   optional, /* present in case of LV or TLV; omit in case of V */
    B8_Type                     downlink,
    B8_Type                     uplink,
    B8_Type                     downlinkExt           optional,
    B8_Type                     uplinkExt             optional,
    B8_Type                     downlinkExt2          optional,
    B8_Type                     uplinkExt2            optional
  };

  type record Extd_APN_AMBR {                                        // 24.301 cl. 9.9.4.29
    IEI8_Type                   iei                   optional, /* present in case of TLV; omit in case of LV */
    Type4Length_Type            iel                   optional, /* present in case of LV or TLV; omit in case of V */
    B8_Type                     unitDL,
    B8_Type                     downlink_1,
    B8_Type                     downlink_2,
    B8_Type                     unitUL,
    B8_Type                     uplink_1,
    B8_Type                     uplink_2
  };

  type record ESM_Cause {                                       /* 24.301 cl. 9.9.4.4 */
    IEI8_Type                   iei                   optional, /* present in case of TLV; omit in case of LV */
    NAS_CauseValue_Type         causeValue
  };

  type record ESM_InfoTransferFlag {                           /* 24.301 cl. 9.9.4.5 */
    IEI4_Type                   iei                   optional,
    B3_Type                     spare,
    B1_Type                     eitValue
  };

  type record LinkedEpsBearerIdentity {                        /* 24.301 cl. 9.9.4.6 */
    // IEI is always skipped
    B4_Type                     idValue
  };

  type record NotificationIndicator{                  /* 24.301 cl. 9.9.4.7A @sic R5s110176 Baseline Moving sic@ */
    IEI8_Type            iei  optional,
    Type4Length_Type     iel,
    B8_Type              notificationInd
  };

  type record PDN_Type {                                        /* 24.301 cl. 9.9.4.10 */
    // IEI is always skipped
    B1_Type                     spare,
    PdnTypeValue                typeValue
  };

  type record TransactionIdentifier {                           /* 24.301 cl. 9.9.4.17 */
    IEI8_Type                   iei                   optional,
    Type4Length_Type            iel,
    B1_Type                     tiFlag,
    B3_Type                     tiValue,
    B4_Type                     spare,
    B1_Type                     ext                   optional, // @sic R5s110176 sic@
    B7_Type                     tiValue_2             optional  //  @sic R5s110176 sic@
  };

  type O8_Type       EllipsoidPointWithAltitude_Type;
  type O3_Type       HorizontalVelocity_Type;
  type O3_Type       Gnss_TOD_msec_Type;
  
  type record RemoteUEContextList {                           /* 24.301 cl. 9.9.4.20 */
    IEI8_Type                   iei                   optional,
    Type6Length_Type            iel,
    O1_Type                     numberOfContexts,
    ListOfRemoteUEContext       remoteUEContexts
  };

  type record of RemoteUEContext ListOfRemoteUEContext;
 
  type record RemoteUEContext {
    O1_Type                     lengthOfContext,
    O1_Type                     numberOfUserIds,
    UserIdentityList            userIdentities,
    B5_Type                     spare,
    B3_Type                     addressType,
    octetstring                 addressInfo   optional
  };

  type record of UserIdentity UserIdentityList;

  type record UserIdentity {
    O1_Type                     lengthOfUserId,
    B4_Type                     firstDigit,
    B1_Type                     odd_even,
    B3_Type                     typeOfUserId,
    record of B4_Type           digits
  };
 
  type record PKMF_Address {                           /* 24.301 cl. 9.9.4.21 */
    IEI8_Type                   iei                   optional,
    Type4Length_Type            iel,
    B5_Type                     spare,
    B3_Type                     addressType,
    octetstring                 addressInfo
  };

  type record HeaderCompressConfig {                           /* 24.301 cl. 9.9.4.22 */
    IEI8_Type                   iei                   optional,
    Type4Length_Type            iel,
    B1_Type                     spare,
    B1_Type                     profileP0x0104,
    B1_Type                     profileP0x0103,
    B1_Type                     profileP0x0102,
    B1_Type                     profileP0x0006,
    B1_Type                     profileP0x0004,
    B1_Type                     profileP0x0003,
    B1_Type                     profileP0x0002,
    O2_Type                     maxCID,
    O1_Type                     addHeaderCompressContextSetupParamsType  optional, // @sic R5s170597 Baseline Moving sic@
    octetstring                 addHeaderCompressContextSetupParams  optional    // @sic R5s170597 Baseline Moving sic@
  };

  type record UserDataContainer {                           /* 24.301 cl. 9.9.4.24 */
    IEI8_Type                   iei                   optional,
    Type6Length_Type            iel,                      // @sic R5s160758 sic@
    octetstring                 dataContainer
  };

  type record HeaderCompressConfigStatus {                           /* 24.301 cl. 9.9.4.27 */
    IEI8_Type                   iei                   optional,
    Type4Length_Type            iel,
    O1_Type                     epsBearerInd_0_7,
    O1_Type                     epsBearerInd_8_15
  };

  type record N1_UENetworkCap {                           /* 24.301 cl. 9.9.3.57 */
    IEI8_Type                   iei                   optional,
    Type4Length_Type            iel,
    B1_Type                     spare,               // Sep22 @sic R5s221178 Baseline Moving sic@
    B1_Type                     ehc_CP_CIoT,         // Sep22 @sic R5s221178 Baseline Moving sic@
    B2_Type                     ngPNB_CIoT,
    B1_Type                     ngUP_CIoT,
    B1_Type                     ngHC_CP_CIoT,
    B1_Type                     n3Data,
    B1_Type                     ngCP_CIoT
  };

  type record UERadioCapIdAvailability  {                 /* 24.301 cl. 9.9.3.58 */
    IEI8_Type                   iei                   optional,
    Type4Length_Type            iel                   optional,
    B5_Type                     spare,
    B3_Type                     availability
  };

  type record UERadioCapIdRequest  {                      /* 24.301 cl. 9.9.3.59 */
    IEI8_Type                   iei                   optional,
    Type4Length_Type            iel                   optional,
    B7_Type                     spare,
    B1_Type                     radioCapIdReq
  };

  type DRXParamCommon NB_S1_DRXParam;                     /* 24.301 cl. 9.9.3.63 */

  type record IMSI_Offset  {                              /* 24.301 cl. 9.9.3.64 */
    IEI8_Type                   iei                   optional,
    Type4Length_Type            iel                   optional,
    O2_Type                     offsetValue
  };

  type record PagingRestriction  {                        /* 24.301 cl. 9.9.3.66 */
    IEI8_Type                   iei                   optional,
    Type4Length_Type            iel                   optional,
    B4_Type                     spare,
    B4_Type                     prType,
    O1_Type                     ebi7_0                optional,
    O1_Type                     ebi15_8               optional
  };

  type record EPS_AddReqResult  {                         /* 24.301 cl. 9.9.3.67 */
    IEI8_Type                   iei                   optional,
    Type4Length_Type            iel                   optional,
    B7_Type                     spare,
    B1_Type                     prd
  };

  // =============================================================================
  // Update UE Location Information
  // 3G TS 36.509 cl. 6.12
  // Direction:     SS to UE
  // -----------------------------------------------------------------------------
  type record UPDATE_UE_LOCATION_INFORMATION {
    SkipIndicator                       skipIndicator,                          /*    M V 1/2    */
    ProtocolDiscriminator               protocolDiscriminator,                  /*    M V 1/2    */
    MessageType                         messageType,                            /*    M V 1      */
    EllipsoidPointWithAltitude_Type     ellipsoidPointWithAltitude,             /*    M V 8      */
    HorizontalVelocity_Type             horizontalVelocity,                     /*    M V 3      */
    Gnss_TOD_msec_Type                  gnss_TOD_msec                           /*    M V 3      */
  };
  
} with { encode "NAS Types"}
