/*
 * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
 * From ASN.1 module "S1AP-Containers"
 * 	found in "./asn1c/S1AP-Containers.asn"
 * 	`asn1c -fcompound-names -fno-include-deps -gen-PER -findirect-choice`
 */

#ifndef	_ProtocolIE_Field_H_
#define	_ProtocolIE_Field_H_


#include <asn_application.h>

/* Including external dependencies */
#include "ProtocolIE-ID.h"
#include "Criticality.h"
#include <ANY.h>
#include <asn_ioc.h>
#include "Bearers-SubjectToStatusTransfer-Item.h"
#include "Presence.h"
#include <OPEN_TYPE.h>
#include <constr_CHOICE.h>
#include <constr_SEQUENCE.h>
#include "E-RABInformationListItem.h"
#include "E-RABItem.h"
#include "E-RABUsageReportItem.h"
#include "LoggedMBSFNMDT.h"
#include "RecommendedCellItem.h"
#include "RecommendedENBItem.h"
#include "SecondaryRATDataUsageReportItem.h"
#include "SONInformationReport.h"
#include "E-RABToBeSetupItemBearerSUReq.h"
#include "E-RABSetupItemBearerSURes.h"
#include "E-RABToBeModifiedItemBearerModReq.h"
#include "E-RABModifyItemBearerModRes.h"
#include "E-RABReleaseItemBearerRelComp.h"
#include "E-RABToBeSetupItemCtxtSUReq.h"
#include "E-RABSetupItemCtxtSURes.h"
#include "TAIItem.h"
#include "UE-associatedLogicalS1-ConnectionItem.h"
#include "E-RABModifyItemBearerModConf.h"
#include "MME-UE-S1AP-ID.h"
#include "ENB-UE-S1AP-ID.h"
#include "HandoverType.h"
#include "Cause.h"
#include "TargetID.h"
#include "Direct-Forwarding-Path-Availability.h"
#include "SRVCCHOIndication.h"
#include "Source-ToTarget-TransparentContainer.h"
#include "MSClassmark2.h"
#include "MSClassmark3.h"
#include "CSG-Id.h"
#include "CellAccessMode.h"
#include "PS-ServiceNotAvailable.h"
#include "NASSecurityParametersfromE-UTRAN.h"
#include "E-RABSubjecttoDataForwardingList.h"
#include "E-RABList.h"
#include "Target-ToSource-TransparentContainer.h"
#include "CriticalityDiagnostics.h"
#include "UEAggregateMaximumBitrate.h"
#include "E-RABToBeSetupListHOReq.h"
#include "UESecurityCapabilities.h"
#include "HandoverRestrictionList.h"
#include "TraceActivation.h"
#include "RequestType.h"
#include "SRVCCOperationPossible.h"
#include "SecurityContext.h"
#include "NASSecurityParameterstoE-UTRAN.h"
#include "CSGMembershipStatus.h"
#include "GUMMEI.h"
#include "ManagementBasedMDTAllowed.h"
#include "MDTPLMNList.h"
#include "Masked-IMEISV.h"
#include "ExpectedUEBehaviour.h"
#include "ProSeAuthorized.h"
#include "UEUserPlaneCIoTSupportIndicator.h"
#include "V2XServicesAuthorized.h"
#include "UESidelinkAggregateMaximumBitrate.h"
#include "EnhancedCoverageRestricted.h"
#include "NRUESecurityCapabilities.h"
#include "CE-ModeBRestricted.h"
#include "AerialUEsubscriptionInformation.h"
#include "PendingDataIndication.h"
#include "Subscription-Based-UE-DifferentiationInfo.h"
#include "E-RABAdmittedList.h"
#include "E-RABFailedtoSetupListHOReqAck.h"
#include "CE-mode-B-SupportIndicator.h"
#include "EUTRAN-CGI.h"
#include "TAI.h"
#include "TunnelInformation.h"
#include "LHN-ID.h"
#include "PSCellInformation.h"
#include "E-RABToBeSwitchedDLList.h"
#include "RRC-Establishment-Cause.h"
#include "E-RABToBeSwitchedULList.h"
#include "E-RABToBeSetupListBearerSUReq.h"
#include "E-RABSetupListBearerSURes.h"
#include "E-RABToBeModifiedListBearerModReq.h"
#include "SecondaryRATDataUsageRequest.h"
#include "E-RABModifyListBearerModRes.h"
#include "SecondaryRATDataUsageReportList.h"
#include "NAS-PDU.h"
#include "E-RABReleaseListBearerRelComp.h"
#include "UserLocationInformation.h"
#include "E-RABToBeSetupListCtxtSUReq.h"
#include "SecurityKey.h"
#include "UERadioCapability.h"
#include "SubscriberProfileIDforRFP.h"
#include "CSFallbackIndicator.h"
#include "LAI.h"
#include "AdditionalCSFallbackIndicator.h"
#include "E-RABSetupListCtxtSURes.h"
#include "UEIdentityIndexValue.h"
#include "UEPagingID.h"
#include "PagingDRX.h"
#include "CNDomain.h"
#include "TAIList.h"
#include "CSG-IdList.h"
#include "PagingPriority.h"
#include "UERadioCapabilityForPaging.h"
#include "AssistanceDataForPaging.h"
#include "Paging-eDRXInformation.h"
#include "Extended-UEIdentityIndexValue.h"
#include "NB-IoT-Paging-eDRXInformation.h"
#include "NB-IoT-UEIdentityIndexValue.h"
#include "GWContextReleaseIndication.h"
#include "UE-S1AP-IDs.h"
#include "InformationOnRecommendedCellsAndENBsForPaging.h"
#include "CellIdentifierAndCELevelForCECapableUEs.h"
#include "TimeSinceSecondaryNodeRelease.h"
#include "SRVCCOperationNotPossible.h"
#include "VoiceSupportMatchIndicator.h"
#include "DLNASPDUDeliveryAckRequest.h"
#include "UECapabilityInfoRequest.h"
#include "EndIndication.h"
#include "S-TMSI.h"
#include "TransportLayerAddress.h"
#include "RelayNode-Indicator.h"
#include "GUMMEIType.h"
#include "MME-Group-ID.h"
#include "UE-Usage-Type.h"
#include "DCN-ID.h"
#include "Coverage-Level.h"
#include "UE-Application-Layer-Measurement-Capability.h"
#include "EDT-Session.h"
#include <OCTET_STRING.h>
#include "Additional-GUTI.h"
#include "ResetType.h"
#include "UE-associatedLogicalS1-ConnectionListResAck.h"
#include "Global-ENB-ID.h"
#include "ENBname.h"
#include "SupportedTAs.h"
#include "UE-RetentionInformation.h"
#include "NB-IoT-DefaultPagingDRX.h"
#include "ConnectedengNBList.h"
#include "MMEname.h"
#include "ServedGUMMEIs.h"
#include "RelativeMMECapacity.h"
#include "MMERelaySupportIndicator.h"
#include "ServedDCNs.h"
#include "TimeToWait.h"
#include "Cdma2000HOStatus.h"
#include "Cdma2000RATType.h"
#include "Cdma2000PDU.h"
#include "Cdma2000SectorID.h"
#include "Cdma2000HORequiredIndication.h"
#include "Cdma2000OneXSRVCCInfo.h"
#include "Cdma2000OneXRAND.h"
#include "EUTRANRoundTripDelayEstimationInfo.h"
#include "LTE-M-Indication.h"
#include "ENB-StatusTransfer-TransparentContainer.h"
#include "E-UTRAN-Trace-ID.h"
#include "PrivacyIndicator.h"
#include "OverloadResponse.h"
#include "GUMMEIList.h"
#include "TrafficLoadReductionIndication.h"
#include "MessageIdentifier.h"
#include "SerialNumber.h"
#include "WarningAreaList.h"
#include "RepetitionPeriod.h"
#include "ExtendedRepetitionPeriod.h"
#include "NumberofBroadcastRequest.h"
#include "WarningType.h"
#include "WarningSecurityInfo.h"
#include "DataCodingScheme.h"
#include "WarningMessageContents.h"
#include "ConcurrentWarningMessageIndicator.h"
#include "WarningAreaCoordinates.h"
#include "BroadcastCompletedAreaList.h"
#include "Inter-SystemInformationTransferType.h"
#include "SONConfigurationTransfer.h"
#include "EN-DCSONConfigurationTransfer.h"
#include "KillAllWarningMessages.h"
#include "BroadcastCancelledAreaList.h"
#include "ECGIListForRestart.h"
#include "TAIListForRestart.h"
#include "EmergencyAreaIDListForRestart.h"
#include "PWSfailedECGIList.h"
#include "Routing-ID.h"
#include "LPPa-PDU.h"
#include "E-RABToBeModifiedListBearerModInd.h"
#include "E-RABNotToBeModifiedListBearerModInd.h"
#include "CSGMembershipInfo.h"
#include "E-RABModifyListBearerModConf.h"
#include "E-RABFailedToResumeListResumeReq.h"
#include "E-RABFailedToResumeListResumeRes.h"
#include "DL-CP-SecurityInformation.h"
#include "E-RABLevelQoSParameters.h"
#include "UL-CP-SecurityInformation.h"
#include "HandoverFlag.h"
#include "E-RABDataForwardingItem.h"
#include "E-RABToBeSetupItemHOReq.h"
#include "E-RABAdmittedItem.h"
#include "E-RABFailedToSetupItemHOReqAck.h"
#include "E-RABToBeSwitchedDLItem.h"
#include "E-RABToBeSwitchedULItem.h"
#include "E-RABToBeModifiedItemBearerModInd.h"
#include "E-RABNotToBeModifiedItemBearerModInd.h"
#include "E-RABFailedToResumeItemResumeReq.h"
#include "E-RABFailedToResumeItemResumeRes.h"

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum Bearers_SubjectToStatusTransfer_ItemIEs__value_PR {
	Bearers_SubjectToStatusTransfer_ItemIEs__value_PR_NOTHING,	/* No components present */
	Bearers_SubjectToStatusTransfer_ItemIEs__value_PR_Bearers_SubjectToStatusTransfer_Item
} Bearers_SubjectToStatusTransfer_ItemIEs__value_PR;
typedef enum E_RABInformationListIEs__value_PR {
	E_RABInformationListIEs__value_PR_NOTHING,	/* No components present */
	E_RABInformationListIEs__value_PR_E_RABInformationListItem
} E_RABInformationListIEs__value_PR;
typedef enum E_RABItemIEs__value_PR {
	E_RABItemIEs__value_PR_NOTHING,	/* No components present */
	E_RABItemIEs__value_PR_E_RABItem
} E_RABItemIEs__value_PR;
typedef enum E_RABUsageReportItemIEs__value_PR {
	E_RABUsageReportItemIEs__value_PR_NOTHING,	/* No components present */
	E_RABUsageReportItemIEs__value_PR_E_RABUsageReportItem
} E_RABUsageReportItemIEs__value_PR;
typedef enum MDTMode_ExtensionIE__value_PR {
	MDTMode_ExtensionIE__value_PR_NOTHING,	/* No components present */
	MDTMode_ExtensionIE__value_PR_LoggedMBSFNMDT
} MDTMode_ExtensionIE__value_PR;
typedef enum RecommendedCellItemIEs__value_PR {
	RecommendedCellItemIEs__value_PR_NOTHING,	/* No components present */
	RecommendedCellItemIEs__value_PR_RecommendedCellItem
} RecommendedCellItemIEs__value_PR;
typedef enum RecommendedENBItemIEs__value_PR {
	RecommendedENBItemIEs__value_PR_NOTHING,	/* No components present */
	RecommendedENBItemIEs__value_PR_RecommendedENBItem
} RecommendedENBItemIEs__value_PR;
typedef enum SecondaryRATDataUsageReportItemIEs__value_PR {
	SecondaryRATDataUsageReportItemIEs__value_PR_NOTHING,	/* No components present */
	SecondaryRATDataUsageReportItemIEs__value_PR_SecondaryRATDataUsageReportItem
} SecondaryRATDataUsageReportItemIEs__value_PR;
typedef enum SONInformation_ExtensionIE__value_PR {
	SONInformation_ExtensionIE__value_PR_NOTHING,	/* No components present */
	SONInformation_ExtensionIE__value_PR_SONInformationReport
} SONInformation_ExtensionIE__value_PR;
typedef enum E_RABToBeSetupItemBearerSUReqIEs__value_PR {
	E_RABToBeSetupItemBearerSUReqIEs__value_PR_NOTHING,	/* No components present */
	E_RABToBeSetupItemBearerSUReqIEs__value_PR_E_RABToBeSetupItemBearerSUReq
} E_RABToBeSetupItemBearerSUReqIEs__value_PR;
typedef enum E_RABSetupItemBearerSUResIEs__value_PR {
	E_RABSetupItemBearerSUResIEs__value_PR_NOTHING,	/* No components present */
	E_RABSetupItemBearerSUResIEs__value_PR_E_RABSetupItemBearerSURes
} E_RABSetupItemBearerSUResIEs__value_PR;
typedef enum E_RABToBeModifiedItemBearerModReqIEs__value_PR {
	E_RABToBeModifiedItemBearerModReqIEs__value_PR_NOTHING,	/* No components present */
	E_RABToBeModifiedItemBearerModReqIEs__value_PR_E_RABToBeModifiedItemBearerModReq
} E_RABToBeModifiedItemBearerModReqIEs__value_PR;
typedef enum E_RABModifyItemBearerModResIEs__value_PR {
	E_RABModifyItemBearerModResIEs__value_PR_NOTHING,	/* No components present */
	E_RABModifyItemBearerModResIEs__value_PR_E_RABModifyItemBearerModRes
} E_RABModifyItemBearerModResIEs__value_PR;
typedef enum E_RABReleaseItemBearerRelCompIEs__value_PR {
	E_RABReleaseItemBearerRelCompIEs__value_PR_NOTHING,	/* No components present */
	E_RABReleaseItemBearerRelCompIEs__value_PR_E_RABReleaseItemBearerRelComp
} E_RABReleaseItemBearerRelCompIEs__value_PR;
typedef enum E_RABToBeSetupItemCtxtSUReqIEs__value_PR {
	E_RABToBeSetupItemCtxtSUReqIEs__value_PR_NOTHING,	/* No components present */
	E_RABToBeSetupItemCtxtSUReqIEs__value_PR_E_RABToBeSetupItemCtxtSUReq
} E_RABToBeSetupItemCtxtSUReqIEs__value_PR;
typedef enum E_RABSetupItemCtxtSUResIEs__value_PR {
	E_RABSetupItemCtxtSUResIEs__value_PR_NOTHING,	/* No components present */
	E_RABSetupItemCtxtSUResIEs__value_PR_E_RABSetupItemCtxtSURes
} E_RABSetupItemCtxtSUResIEs__value_PR;
typedef enum TAIItemIEs__value_PR {
	TAIItemIEs__value_PR_NOTHING,	/* No components present */
	TAIItemIEs__value_PR_TAIItem
} TAIItemIEs__value_PR;
typedef enum UE_associatedLogicalS1_ConnectionItemRes__value_PR {
	UE_associatedLogicalS1_ConnectionItemRes__value_PR_NOTHING,	/* No components present */
	UE_associatedLogicalS1_ConnectionItemRes__value_PR_UE_associatedLogicalS1_ConnectionItem
} UE_associatedLogicalS1_ConnectionItemRes__value_PR;
typedef enum UE_associatedLogicalS1_ConnectionItemResAck__value_PR {
	UE_associatedLogicalS1_ConnectionItemResAck__value_PR_NOTHING,	/* No components present */
	UE_associatedLogicalS1_ConnectionItemResAck__value_PR_UE_associatedLogicalS1_ConnectionItem
} UE_associatedLogicalS1_ConnectionItemResAck__value_PR;
typedef enum E_RABModifyItemBearerModConfIEs__value_PR {
	E_RABModifyItemBearerModConfIEs__value_PR_NOTHING,	/* No components present */
	E_RABModifyItemBearerModConfIEs__value_PR_E_RABModifyItemBearerModConf
} E_RABModifyItemBearerModConfIEs__value_PR;
typedef enum HandoverRequiredIEs__value_PR {
	HandoverRequiredIEs__value_PR_NOTHING,	/* No components present */
	HandoverRequiredIEs__value_PR_MME_UE_S1AP_ID,
	HandoverRequiredIEs__value_PR_ENB_UE_S1AP_ID,
	HandoverRequiredIEs__value_PR_HandoverType,
	HandoverRequiredIEs__value_PR_Cause,
	HandoverRequiredIEs__value_PR_TargetID,
	HandoverRequiredIEs__value_PR_Direct_Forwarding_Path_Availability,
	HandoverRequiredIEs__value_PR_SRVCCHOIndication,
	HandoverRequiredIEs__value_PR_Source_ToTarget_TransparentContainer,
	HandoverRequiredIEs__value_PR_Source_ToTarget_TransparentContainer_1,
	HandoverRequiredIEs__value_PR_MSClassmark2,
	HandoverRequiredIEs__value_PR_MSClassmark3,
	HandoverRequiredIEs__value_PR_CSG_Id,
	HandoverRequiredIEs__value_PR_CellAccessMode,
	HandoverRequiredIEs__value_PR_PS_ServiceNotAvailable
} HandoverRequiredIEs__value_PR;
typedef enum HandoverCommandIEs__value_PR {
	HandoverCommandIEs__value_PR_NOTHING,	/* No components present */
	HandoverCommandIEs__value_PR_MME_UE_S1AP_ID,
	HandoverCommandIEs__value_PR_ENB_UE_S1AP_ID,
	HandoverCommandIEs__value_PR_HandoverType,
	HandoverCommandIEs__value_PR_NASSecurityParametersfromE_UTRAN,
	HandoverCommandIEs__value_PR_E_RABSubjecttoDataForwardingList,
	HandoverCommandIEs__value_PR_E_RABList,
	HandoverCommandIEs__value_PR_Target_ToSource_TransparentContainer,
	HandoverCommandIEs__value_PR_Target_ToSource_TransparentContainer_1,
	HandoverCommandIEs__value_PR_CriticalityDiagnostics
} HandoverCommandIEs__value_PR;
typedef enum HandoverPreparationFailureIEs__value_PR {
	HandoverPreparationFailureIEs__value_PR_NOTHING,	/* No components present */
	HandoverPreparationFailureIEs__value_PR_MME_UE_S1AP_ID,
	HandoverPreparationFailureIEs__value_PR_ENB_UE_S1AP_ID,
	HandoverPreparationFailureIEs__value_PR_Cause,
	HandoverPreparationFailureIEs__value_PR_CriticalityDiagnostics
} HandoverPreparationFailureIEs__value_PR;
typedef enum HandoverRequestIEs__value_PR {
	HandoverRequestIEs__value_PR_NOTHING,	/* No components present */
	HandoverRequestIEs__value_PR_MME_UE_S1AP_ID,
	HandoverRequestIEs__value_PR_HandoverType,
	HandoverRequestIEs__value_PR_Cause,
	HandoverRequestIEs__value_PR_UEAggregateMaximumBitrate,
	HandoverRequestIEs__value_PR_E_RABToBeSetupListHOReq,
	HandoverRequestIEs__value_PR_Source_ToTarget_TransparentContainer,
	HandoverRequestIEs__value_PR_UESecurityCapabilities,
	HandoverRequestIEs__value_PR_HandoverRestrictionList,
	HandoverRequestIEs__value_PR_TraceActivation,
	HandoverRequestIEs__value_PR_RequestType,
	HandoverRequestIEs__value_PR_SRVCCOperationPossible,
	HandoverRequestIEs__value_PR_SecurityContext,
	HandoverRequestIEs__value_PR_NASSecurityParameterstoE_UTRAN,
	HandoverRequestIEs__value_PR_CSG_Id,
	HandoverRequestIEs__value_PR_CSGMembershipStatus,
	HandoverRequestIEs__value_PR_GUMMEI,
	HandoverRequestIEs__value_PR_MME_UE_S1AP_ID_1,
	HandoverRequestIEs__value_PR_ManagementBasedMDTAllowed,
	HandoverRequestIEs__value_PR_MDTPLMNList,
	HandoverRequestIEs__value_PR_Masked_IMEISV,
	HandoverRequestIEs__value_PR_ExpectedUEBehaviour,
	HandoverRequestIEs__value_PR_ProSeAuthorized,
	HandoverRequestIEs__value_PR_UEUserPlaneCIoTSupportIndicator,
	HandoverRequestIEs__value_PR_V2XServicesAuthorized,
	HandoverRequestIEs__value_PR_UESidelinkAggregateMaximumBitrate,
	HandoverRequestIEs__value_PR_EnhancedCoverageRestricted,
	HandoverRequestIEs__value_PR_NRUESecurityCapabilities,
	HandoverRequestIEs__value_PR_CE_ModeBRestricted,
	HandoverRequestIEs__value_PR_AerialUEsubscriptionInformation,
	HandoverRequestIEs__value_PR_PendingDataIndication,
	HandoverRequestIEs__value_PR_Subscription_Based_UE_DifferentiationInfo
} HandoverRequestIEs__value_PR;
typedef enum HandoverRequestAcknowledgeIEs__value_PR {
	HandoverRequestAcknowledgeIEs__value_PR_NOTHING,	/* No components present */
	HandoverRequestAcknowledgeIEs__value_PR_MME_UE_S1AP_ID,
	HandoverRequestAcknowledgeIEs__value_PR_ENB_UE_S1AP_ID,
	HandoverRequestAcknowledgeIEs__value_PR_E_RABAdmittedList,
	HandoverRequestAcknowledgeIEs__value_PR_E_RABFailedtoSetupListHOReqAck,
	HandoverRequestAcknowledgeIEs__value_PR_Target_ToSource_TransparentContainer,
	HandoverRequestAcknowledgeIEs__value_PR_CSG_Id,
	HandoverRequestAcknowledgeIEs__value_PR_CriticalityDiagnostics,
	HandoverRequestAcknowledgeIEs__value_PR_CellAccessMode,
	HandoverRequestAcknowledgeIEs__value_PR_CE_mode_B_SupportIndicator
} HandoverRequestAcknowledgeIEs__value_PR;
typedef enum HandoverFailureIEs__value_PR {
	HandoverFailureIEs__value_PR_NOTHING,	/* No components present */
	HandoverFailureIEs__value_PR_MME_UE_S1AP_ID,
	HandoverFailureIEs__value_PR_Cause,
	HandoverFailureIEs__value_PR_CriticalityDiagnostics
} HandoverFailureIEs__value_PR;
typedef enum HandoverNotifyIEs__value_PR {
	HandoverNotifyIEs__value_PR_NOTHING,	/* No components present */
	HandoverNotifyIEs__value_PR_MME_UE_S1AP_ID,
	HandoverNotifyIEs__value_PR_ENB_UE_S1AP_ID,
	HandoverNotifyIEs__value_PR_EUTRAN_CGI,
	HandoverNotifyIEs__value_PR_TAI,
	HandoverNotifyIEs__value_PR_TunnelInformation,
	HandoverNotifyIEs__value_PR_LHN_ID,
	HandoverNotifyIEs__value_PR_PSCellInformation
} HandoverNotifyIEs__value_PR;
typedef enum PathSwitchRequestIEs__value_PR {
	PathSwitchRequestIEs__value_PR_NOTHING,	/* No components present */
	PathSwitchRequestIEs__value_PR_ENB_UE_S1AP_ID,
	PathSwitchRequestIEs__value_PR_E_RABToBeSwitchedDLList,
	PathSwitchRequestIEs__value_PR_MME_UE_S1AP_ID,
	PathSwitchRequestIEs__value_PR_EUTRAN_CGI,
	PathSwitchRequestIEs__value_PR_TAI,
	PathSwitchRequestIEs__value_PR_UESecurityCapabilities,
	PathSwitchRequestIEs__value_PR_CSG_Id,
	PathSwitchRequestIEs__value_PR_CellAccessMode,
	PathSwitchRequestIEs__value_PR_GUMMEI,
	PathSwitchRequestIEs__value_PR_CSGMembershipStatus,
	PathSwitchRequestIEs__value_PR_TunnelInformation,
	PathSwitchRequestIEs__value_PR_LHN_ID,
	PathSwitchRequestIEs__value_PR_RRC_Establishment_Cause,
	PathSwitchRequestIEs__value_PR_NRUESecurityCapabilities,
	PathSwitchRequestIEs__value_PR_PSCellInformation
} PathSwitchRequestIEs__value_PR;
typedef enum PathSwitchRequestAcknowledgeIEs__value_PR {
	PathSwitchRequestAcknowledgeIEs__value_PR_NOTHING,	/* No components present */
	PathSwitchRequestAcknowledgeIEs__value_PR_MME_UE_S1AP_ID,
	PathSwitchRequestAcknowledgeIEs__value_PR_ENB_UE_S1AP_ID,
	PathSwitchRequestAcknowledgeIEs__value_PR_UEAggregateMaximumBitrate,
	PathSwitchRequestAcknowledgeIEs__value_PR_E_RABToBeSwitchedULList,
	PathSwitchRequestAcknowledgeIEs__value_PR_E_RABList,
	PathSwitchRequestAcknowledgeIEs__value_PR_SecurityContext,
	PathSwitchRequestAcknowledgeIEs__value_PR_CriticalityDiagnostics,
	PathSwitchRequestAcknowledgeIEs__value_PR_MME_UE_S1AP_ID_1,
	PathSwitchRequestAcknowledgeIEs__value_PR_CSGMembershipStatus,
	PathSwitchRequestAcknowledgeIEs__value_PR_ProSeAuthorized,
	PathSwitchRequestAcknowledgeIEs__value_PR_UEUserPlaneCIoTSupportIndicator,
	PathSwitchRequestAcknowledgeIEs__value_PR_V2XServicesAuthorized,
	PathSwitchRequestAcknowledgeIEs__value_PR_UESidelinkAggregateMaximumBitrate,
	PathSwitchRequestAcknowledgeIEs__value_PR_EnhancedCoverageRestricted,
	PathSwitchRequestAcknowledgeIEs__value_PR_NRUESecurityCapabilities,
	PathSwitchRequestAcknowledgeIEs__value_PR_CE_ModeBRestricted,
	PathSwitchRequestAcknowledgeIEs__value_PR_AerialUEsubscriptionInformation,
	PathSwitchRequestAcknowledgeIEs__value_PR_PendingDataIndication,
	PathSwitchRequestAcknowledgeIEs__value_PR_Subscription_Based_UE_DifferentiationInfo
} PathSwitchRequestAcknowledgeIEs__value_PR;
typedef enum PathSwitchRequestFailureIEs__value_PR {
	PathSwitchRequestFailureIEs__value_PR_NOTHING,	/* No components present */
	PathSwitchRequestFailureIEs__value_PR_MME_UE_S1AP_ID,
	PathSwitchRequestFailureIEs__value_PR_ENB_UE_S1AP_ID,
	PathSwitchRequestFailureIEs__value_PR_Cause,
	PathSwitchRequestFailureIEs__value_PR_CriticalityDiagnostics
} PathSwitchRequestFailureIEs__value_PR;
typedef enum HandoverCancelIEs__value_PR {
	HandoverCancelIEs__value_PR_NOTHING,	/* No components present */
	HandoverCancelIEs__value_PR_MME_UE_S1AP_ID,
	HandoverCancelIEs__value_PR_ENB_UE_S1AP_ID,
	HandoverCancelIEs__value_PR_Cause
} HandoverCancelIEs__value_PR;
typedef enum HandoverCancelAcknowledgeIEs__value_PR {
	HandoverCancelAcknowledgeIEs__value_PR_NOTHING,	/* No components present */
	HandoverCancelAcknowledgeIEs__value_PR_MME_UE_S1AP_ID,
	HandoverCancelAcknowledgeIEs__value_PR_ENB_UE_S1AP_ID,
	HandoverCancelAcknowledgeIEs__value_PR_CriticalityDiagnostics
} HandoverCancelAcknowledgeIEs__value_PR;
typedef enum E_RABSetupRequestIEs__value_PR {
	E_RABSetupRequestIEs__value_PR_NOTHING,	/* No components present */
	E_RABSetupRequestIEs__value_PR_MME_UE_S1AP_ID,
	E_RABSetupRequestIEs__value_PR_ENB_UE_S1AP_ID,
	E_RABSetupRequestIEs__value_PR_UEAggregateMaximumBitrate,
	E_RABSetupRequestIEs__value_PR_E_RABToBeSetupListBearerSUReq
} E_RABSetupRequestIEs__value_PR;
typedef enum E_RABSetupResponseIEs__value_PR {
	E_RABSetupResponseIEs__value_PR_NOTHING,	/* No components present */
	E_RABSetupResponseIEs__value_PR_MME_UE_S1AP_ID,
	E_RABSetupResponseIEs__value_PR_ENB_UE_S1AP_ID,
	E_RABSetupResponseIEs__value_PR_E_RABSetupListBearerSURes,
	E_RABSetupResponseIEs__value_PR_E_RABList,
	E_RABSetupResponseIEs__value_PR_CriticalityDiagnostics
} E_RABSetupResponseIEs__value_PR;
typedef enum E_RABModifyRequestIEs__value_PR {
	E_RABModifyRequestIEs__value_PR_NOTHING,	/* No components present */
	E_RABModifyRequestIEs__value_PR_MME_UE_S1AP_ID,
	E_RABModifyRequestIEs__value_PR_ENB_UE_S1AP_ID,
	E_RABModifyRequestIEs__value_PR_UEAggregateMaximumBitrate,
	E_RABModifyRequestIEs__value_PR_E_RABToBeModifiedListBearerModReq,
	E_RABModifyRequestIEs__value_PR_SecondaryRATDataUsageRequest
} E_RABModifyRequestIEs__value_PR;
typedef enum E_RABModifyResponseIEs__value_PR {
	E_RABModifyResponseIEs__value_PR_NOTHING,	/* No components present */
	E_RABModifyResponseIEs__value_PR_MME_UE_S1AP_ID,
	E_RABModifyResponseIEs__value_PR_ENB_UE_S1AP_ID,
	E_RABModifyResponseIEs__value_PR_E_RABModifyListBearerModRes,
	E_RABModifyResponseIEs__value_PR_E_RABList,
	E_RABModifyResponseIEs__value_PR_CriticalityDiagnostics,
	E_RABModifyResponseIEs__value_PR_SecondaryRATDataUsageReportList
} E_RABModifyResponseIEs__value_PR;
typedef enum E_RABReleaseCommandIEs__value_PR {
	E_RABReleaseCommandIEs__value_PR_NOTHING,	/* No components present */
	E_RABReleaseCommandIEs__value_PR_MME_UE_S1AP_ID,
	E_RABReleaseCommandIEs__value_PR_ENB_UE_S1AP_ID,
	E_RABReleaseCommandIEs__value_PR_UEAggregateMaximumBitrate,
	E_RABReleaseCommandIEs__value_PR_E_RABList,
	E_RABReleaseCommandIEs__value_PR_NAS_PDU
} E_RABReleaseCommandIEs__value_PR;
typedef enum E_RABReleaseResponseIEs__value_PR {
	E_RABReleaseResponseIEs__value_PR_NOTHING,	/* No components present */
	E_RABReleaseResponseIEs__value_PR_MME_UE_S1AP_ID,
	E_RABReleaseResponseIEs__value_PR_ENB_UE_S1AP_ID,
	E_RABReleaseResponseIEs__value_PR_E_RABReleaseListBearerRelComp,
	E_RABReleaseResponseIEs__value_PR_E_RABList,
	E_RABReleaseResponseIEs__value_PR_CriticalityDiagnostics,
	E_RABReleaseResponseIEs__value_PR_UserLocationInformation,
	E_RABReleaseResponseIEs__value_PR_SecondaryRATDataUsageReportList
} E_RABReleaseResponseIEs__value_PR;
typedef enum E_RABReleaseIndicationIEs__value_PR {
	E_RABReleaseIndicationIEs__value_PR_NOTHING,	/* No components present */
	E_RABReleaseIndicationIEs__value_PR_MME_UE_S1AP_ID,
	E_RABReleaseIndicationIEs__value_PR_ENB_UE_S1AP_ID,
	E_RABReleaseIndicationIEs__value_PR_E_RABList,
	E_RABReleaseIndicationIEs__value_PR_UserLocationInformation,
	E_RABReleaseIndicationIEs__value_PR_SecondaryRATDataUsageReportList
} E_RABReleaseIndicationIEs__value_PR;
typedef enum InitialContextSetupRequestIEs__value_PR {
	InitialContextSetupRequestIEs__value_PR_NOTHING,	/* No components present */
	InitialContextSetupRequestIEs__value_PR_MME_UE_S1AP_ID,
	InitialContextSetupRequestIEs__value_PR_ENB_UE_S1AP_ID,
	InitialContextSetupRequestIEs__value_PR_UEAggregateMaximumBitrate,
	InitialContextSetupRequestIEs__value_PR_E_RABToBeSetupListCtxtSUReq,
	InitialContextSetupRequestIEs__value_PR_UESecurityCapabilities,
	InitialContextSetupRequestIEs__value_PR_SecurityKey,
	InitialContextSetupRequestIEs__value_PR_TraceActivation,
	InitialContextSetupRequestIEs__value_PR_HandoverRestrictionList,
	InitialContextSetupRequestIEs__value_PR_UERadioCapability,
	InitialContextSetupRequestIEs__value_PR_SubscriberProfileIDforRFP,
	InitialContextSetupRequestIEs__value_PR_CSFallbackIndicator,
	InitialContextSetupRequestIEs__value_PR_SRVCCOperationPossible,
	InitialContextSetupRequestIEs__value_PR_CSGMembershipStatus,
	InitialContextSetupRequestIEs__value_PR_LAI,
	InitialContextSetupRequestIEs__value_PR_GUMMEI,
	InitialContextSetupRequestIEs__value_PR_MME_UE_S1AP_ID_1,
	InitialContextSetupRequestIEs__value_PR_ManagementBasedMDTAllowed,
	InitialContextSetupRequestIEs__value_PR_MDTPLMNList,
	InitialContextSetupRequestIEs__value_PR_AdditionalCSFallbackIndicator,
	InitialContextSetupRequestIEs__value_PR_Masked_IMEISV,
	InitialContextSetupRequestIEs__value_PR_ExpectedUEBehaviour,
	InitialContextSetupRequestIEs__value_PR_ProSeAuthorized,
	InitialContextSetupRequestIEs__value_PR_UEUserPlaneCIoTSupportIndicator,
	InitialContextSetupRequestIEs__value_PR_V2XServicesAuthorized,
	InitialContextSetupRequestIEs__value_PR_UESidelinkAggregateMaximumBitrate,
	InitialContextSetupRequestIEs__value_PR_EnhancedCoverageRestricted,
	InitialContextSetupRequestIEs__value_PR_NRUESecurityCapabilities,
	InitialContextSetupRequestIEs__value_PR_CE_ModeBRestricted,
	InitialContextSetupRequestIEs__value_PR_AerialUEsubscriptionInformation,
	InitialContextSetupRequestIEs__value_PR_PendingDataIndication,
	InitialContextSetupRequestIEs__value_PR_Subscription_Based_UE_DifferentiationInfo
} InitialContextSetupRequestIEs__value_PR;
typedef enum InitialContextSetupResponseIEs__value_PR {
	InitialContextSetupResponseIEs__value_PR_NOTHING,	/* No components present */
	InitialContextSetupResponseIEs__value_PR_MME_UE_S1AP_ID,
	InitialContextSetupResponseIEs__value_PR_ENB_UE_S1AP_ID,
	InitialContextSetupResponseIEs__value_PR_E_RABSetupListCtxtSURes,
	InitialContextSetupResponseIEs__value_PR_E_RABList,
	InitialContextSetupResponseIEs__value_PR_CriticalityDiagnostics
} InitialContextSetupResponseIEs__value_PR;
typedef enum InitialContextSetupFailureIEs__value_PR {
	InitialContextSetupFailureIEs__value_PR_NOTHING,	/* No components present */
	InitialContextSetupFailureIEs__value_PR_MME_UE_S1AP_ID,
	InitialContextSetupFailureIEs__value_PR_ENB_UE_S1AP_ID,
	InitialContextSetupFailureIEs__value_PR_Cause,
	InitialContextSetupFailureIEs__value_PR_CriticalityDiagnostics
} InitialContextSetupFailureIEs__value_PR;
typedef enum PagingIEs__value_PR {
	PagingIEs__value_PR_NOTHING,	/* No components present */
	PagingIEs__value_PR_UEIdentityIndexValue,
	PagingIEs__value_PR_UEPagingID,
	PagingIEs__value_PR_PagingDRX,
	PagingIEs__value_PR_CNDomain,
	PagingIEs__value_PR_TAIList,
	PagingIEs__value_PR_CSG_IdList,
	PagingIEs__value_PR_PagingPriority,
	PagingIEs__value_PR_UERadioCapabilityForPaging,
	PagingIEs__value_PR_AssistanceDataForPaging,
	PagingIEs__value_PR_Paging_eDRXInformation,
	PagingIEs__value_PR_Extended_UEIdentityIndexValue,
	PagingIEs__value_PR_NB_IoT_Paging_eDRXInformation,
	PagingIEs__value_PR_NB_IoT_UEIdentityIndexValue,
	PagingIEs__value_PR_EnhancedCoverageRestricted,
	PagingIEs__value_PR_CE_ModeBRestricted
} PagingIEs__value_PR;
typedef enum UEContextReleaseRequest_IEs__value_PR {
	UEContextReleaseRequest_IEs__value_PR_NOTHING,	/* No components present */
	UEContextReleaseRequest_IEs__value_PR_MME_UE_S1AP_ID,
	UEContextReleaseRequest_IEs__value_PR_ENB_UE_S1AP_ID,
	UEContextReleaseRequest_IEs__value_PR_Cause,
	UEContextReleaseRequest_IEs__value_PR_GWContextReleaseIndication,
	UEContextReleaseRequest_IEs__value_PR_SecondaryRATDataUsageReportList
} UEContextReleaseRequest_IEs__value_PR;
typedef enum UEContextReleaseCommand_IEs__value_PR {
	UEContextReleaseCommand_IEs__value_PR_NOTHING,	/* No components present */
	UEContextReleaseCommand_IEs__value_PR_UE_S1AP_IDs,
	UEContextReleaseCommand_IEs__value_PR_Cause
} UEContextReleaseCommand_IEs__value_PR;
typedef enum UEContextReleaseComplete_IEs__value_PR {
	UEContextReleaseComplete_IEs__value_PR_NOTHING,	/* No components present */
	UEContextReleaseComplete_IEs__value_PR_MME_UE_S1AP_ID,
	UEContextReleaseComplete_IEs__value_PR_ENB_UE_S1AP_ID,
	UEContextReleaseComplete_IEs__value_PR_CriticalityDiagnostics,
	UEContextReleaseComplete_IEs__value_PR_UserLocationInformation,
	UEContextReleaseComplete_IEs__value_PR_InformationOnRecommendedCellsAndENBsForPaging,
	UEContextReleaseComplete_IEs__value_PR_CellIdentifierAndCELevelForCECapableUEs,
	UEContextReleaseComplete_IEs__value_PR_SecondaryRATDataUsageReportList,
	UEContextReleaseComplete_IEs__value_PR_TimeSinceSecondaryNodeRelease
} UEContextReleaseComplete_IEs__value_PR;
typedef enum UEContextModificationRequestIEs__value_PR {
	UEContextModificationRequestIEs__value_PR_NOTHING,	/* No components present */
	UEContextModificationRequestIEs__value_PR_MME_UE_S1AP_ID,
	UEContextModificationRequestIEs__value_PR_ENB_UE_S1AP_ID,
	UEContextModificationRequestIEs__value_PR_SecurityKey,
	UEContextModificationRequestIEs__value_PR_SubscriberProfileIDforRFP,
	UEContextModificationRequestIEs__value_PR_UEAggregateMaximumBitrate,
	UEContextModificationRequestIEs__value_PR_CSFallbackIndicator,
	UEContextModificationRequestIEs__value_PR_UESecurityCapabilities,
	UEContextModificationRequestIEs__value_PR_CSGMembershipStatus,
	UEContextModificationRequestIEs__value_PR_LAI,
	UEContextModificationRequestIEs__value_PR_AdditionalCSFallbackIndicator,
	UEContextModificationRequestIEs__value_PR_ProSeAuthorized,
	UEContextModificationRequestIEs__value_PR_SRVCCOperationPossible,
	UEContextModificationRequestIEs__value_PR_SRVCCOperationNotPossible,
	UEContextModificationRequestIEs__value_PR_V2XServicesAuthorized,
	UEContextModificationRequestIEs__value_PR_UESidelinkAggregateMaximumBitrate,
	UEContextModificationRequestIEs__value_PR_NRUESecurityCapabilities,
	UEContextModificationRequestIEs__value_PR_AerialUEsubscriptionInformation
} UEContextModificationRequestIEs__value_PR;
typedef enum UEContextModificationResponseIEs__value_PR {
	UEContextModificationResponseIEs__value_PR_NOTHING,	/* No components present */
	UEContextModificationResponseIEs__value_PR_MME_UE_S1AP_ID,
	UEContextModificationResponseIEs__value_PR_ENB_UE_S1AP_ID,
	UEContextModificationResponseIEs__value_PR_CriticalityDiagnostics
} UEContextModificationResponseIEs__value_PR;
typedef enum UEContextModificationFailureIEs__value_PR {
	UEContextModificationFailureIEs__value_PR_NOTHING,	/* No components present */
	UEContextModificationFailureIEs__value_PR_MME_UE_S1AP_ID,
	UEContextModificationFailureIEs__value_PR_ENB_UE_S1AP_ID,
	UEContextModificationFailureIEs__value_PR_Cause,
	UEContextModificationFailureIEs__value_PR_CriticalityDiagnostics
} UEContextModificationFailureIEs__value_PR;
typedef enum UERadioCapabilityMatchRequestIEs__value_PR {
	UERadioCapabilityMatchRequestIEs__value_PR_NOTHING,	/* No components present */
	UERadioCapabilityMatchRequestIEs__value_PR_MME_UE_S1AP_ID,
	UERadioCapabilityMatchRequestIEs__value_PR_ENB_UE_S1AP_ID,
	UERadioCapabilityMatchRequestIEs__value_PR_UERadioCapability
} UERadioCapabilityMatchRequestIEs__value_PR;
typedef enum UERadioCapabilityMatchResponseIEs__value_PR {
	UERadioCapabilityMatchResponseIEs__value_PR_NOTHING,	/* No components present */
	UERadioCapabilityMatchResponseIEs__value_PR_MME_UE_S1AP_ID,
	UERadioCapabilityMatchResponseIEs__value_PR_ENB_UE_S1AP_ID,
	UERadioCapabilityMatchResponseIEs__value_PR_VoiceSupportMatchIndicator,
	UERadioCapabilityMatchResponseIEs__value_PR_CriticalityDiagnostics
} UERadioCapabilityMatchResponseIEs__value_PR;
typedef enum DownlinkNASTransport_IEs__value_PR {
	DownlinkNASTransport_IEs__value_PR_NOTHING,	/* No components present */
	DownlinkNASTransport_IEs__value_PR_MME_UE_S1AP_ID,
	DownlinkNASTransport_IEs__value_PR_ENB_UE_S1AP_ID,
	DownlinkNASTransport_IEs__value_PR_NAS_PDU,
	DownlinkNASTransport_IEs__value_PR_HandoverRestrictionList,
	DownlinkNASTransport_IEs__value_PR_SubscriberProfileIDforRFP,
	DownlinkNASTransport_IEs__value_PR_SRVCCOperationPossible,
	DownlinkNASTransport_IEs__value_PR_UERadioCapability,
	DownlinkNASTransport_IEs__value_PR_DLNASPDUDeliveryAckRequest,
	DownlinkNASTransport_IEs__value_PR_EnhancedCoverageRestricted,
	DownlinkNASTransport_IEs__value_PR_NRUESecurityCapabilities,
	DownlinkNASTransport_IEs__value_PR_CE_ModeBRestricted,
	DownlinkNASTransport_IEs__value_PR_UECapabilityInfoRequest,
	DownlinkNASTransport_IEs__value_PR_EndIndication,
	DownlinkNASTransport_IEs__value_PR_PendingDataIndication,
	DownlinkNASTransport_IEs__value_PR_Subscription_Based_UE_DifferentiationInfo
} DownlinkNASTransport_IEs__value_PR;
typedef enum InitialUEMessage_IEs__value_PR {
	InitialUEMessage_IEs__value_PR_NOTHING,	/* No components present */
	InitialUEMessage_IEs__value_PR_ENB_UE_S1AP_ID,
	InitialUEMessage_IEs__value_PR_NAS_PDU,
	InitialUEMessage_IEs__value_PR_TAI,
	InitialUEMessage_IEs__value_PR_EUTRAN_CGI,
	InitialUEMessage_IEs__value_PR_RRC_Establishment_Cause,
	InitialUEMessage_IEs__value_PR_S_TMSI,
	InitialUEMessage_IEs__value_PR_CSG_Id,
	InitialUEMessage_IEs__value_PR_GUMMEI,
	InitialUEMessage_IEs__value_PR_CellAccessMode,
	InitialUEMessage_IEs__value_PR_TransportLayerAddress,
	InitialUEMessage_IEs__value_PR_RelayNode_Indicator,
	InitialUEMessage_IEs__value_PR_GUMMEIType,
	InitialUEMessage_IEs__value_PR_TunnelInformation,
	InitialUEMessage_IEs__value_PR_TransportLayerAddress_1,
	InitialUEMessage_IEs__value_PR_LHN_ID,
	InitialUEMessage_IEs__value_PR_MME_Group_ID,
	InitialUEMessage_IEs__value_PR_UE_Usage_Type,
	InitialUEMessage_IEs__value_PR_CE_mode_B_SupportIndicator,
	InitialUEMessage_IEs__value_PR_DCN_ID,
	InitialUEMessage_IEs__value_PR_Coverage_Level,
	InitialUEMessage_IEs__value_PR_UE_Application_Layer_Measurement_Capability,
	InitialUEMessage_IEs__value_PR_EDT_Session
} InitialUEMessage_IEs__value_PR;
typedef enum UplinkNASTransport_IEs__value_PR {
	UplinkNASTransport_IEs__value_PR_NOTHING,	/* No components present */
	UplinkNASTransport_IEs__value_PR_MME_UE_S1AP_ID,
	UplinkNASTransport_IEs__value_PR_ENB_UE_S1AP_ID,
	UplinkNASTransport_IEs__value_PR_NAS_PDU,
	UplinkNASTransport_IEs__value_PR_EUTRAN_CGI,
	UplinkNASTransport_IEs__value_PR_TAI,
	UplinkNASTransport_IEs__value_PR_TransportLayerAddress,
	UplinkNASTransport_IEs__value_PR_TransportLayerAddress_1,
	UplinkNASTransport_IEs__value_PR_LHN_ID,
	UplinkNASTransport_IEs__value_PR_PSCellInformation
} UplinkNASTransport_IEs__value_PR;
typedef enum NASNonDeliveryIndication_IEs__value_PR {
	NASNonDeliveryIndication_IEs__value_PR_NOTHING,	/* No components present */
	NASNonDeliveryIndication_IEs__value_PR_MME_UE_S1AP_ID,
	NASNonDeliveryIndication_IEs__value_PR_ENB_UE_S1AP_ID,
	NASNonDeliveryIndication_IEs__value_PR_NAS_PDU,
	NASNonDeliveryIndication_IEs__value_PR_Cause
} NASNonDeliveryIndication_IEs__value_PR;
typedef enum RerouteNASRequest_IEs__value_PR {
	RerouteNASRequest_IEs__value_PR_NOTHING,	/* No components present */
	RerouteNASRequest_IEs__value_PR_ENB_UE_S1AP_ID,
	RerouteNASRequest_IEs__value_PR_MME_UE_S1AP_ID,
	RerouteNASRequest_IEs__value_PR_OCTET_STRING,
	RerouteNASRequest_IEs__value_PR_MME_Group_ID,
	RerouteNASRequest_IEs__value_PR_Additional_GUTI,
	RerouteNASRequest_IEs__value_PR_UE_Usage_Type
} RerouteNASRequest_IEs__value_PR;
typedef enum NASDeliveryIndicationIEs__value_PR {
	NASDeliveryIndicationIEs__value_PR_NOTHING,	/* No components present */
	NASDeliveryIndicationIEs__value_PR_MME_UE_S1AP_ID,
	NASDeliveryIndicationIEs__value_PR_ENB_UE_S1AP_ID
} NASDeliveryIndicationIEs__value_PR;
typedef enum ResetIEs__value_PR {
	ResetIEs__value_PR_NOTHING,	/* No components present */
	ResetIEs__value_PR_Cause,
	ResetIEs__value_PR_ResetType
} ResetIEs__value_PR;
typedef enum ResetAcknowledgeIEs__value_PR {
	ResetAcknowledgeIEs__value_PR_NOTHING,	/* No components present */
	ResetAcknowledgeIEs__value_PR_UE_associatedLogicalS1_ConnectionListResAck,
	ResetAcknowledgeIEs__value_PR_CriticalityDiagnostics
} ResetAcknowledgeIEs__value_PR;
typedef enum ErrorIndicationIEs__value_PR {
	ErrorIndicationIEs__value_PR_NOTHING,	/* No components present */
	ErrorIndicationIEs__value_PR_MME_UE_S1AP_ID,
	ErrorIndicationIEs__value_PR_ENB_UE_S1AP_ID,
	ErrorIndicationIEs__value_PR_Cause,
	ErrorIndicationIEs__value_PR_CriticalityDiagnostics
} ErrorIndicationIEs__value_PR;
typedef enum S1SetupRequestIEs__value_PR {
	S1SetupRequestIEs__value_PR_NOTHING,	/* No components present */
	S1SetupRequestIEs__value_PR_Global_ENB_ID,
	S1SetupRequestIEs__value_PR_ENBname,
	S1SetupRequestIEs__value_PR_SupportedTAs,
	S1SetupRequestIEs__value_PR_PagingDRX,
	S1SetupRequestIEs__value_PR_CSG_IdList,
	S1SetupRequestIEs__value_PR_UE_RetentionInformation,
	S1SetupRequestIEs__value_PR_NB_IoT_DefaultPagingDRX,
	S1SetupRequestIEs__value_PR_ConnectedengNBList
} S1SetupRequestIEs__value_PR;
typedef enum S1SetupResponseIEs__value_PR {
	S1SetupResponseIEs__value_PR_NOTHING,	/* No components present */
	S1SetupResponseIEs__value_PR_MMEname,
	S1SetupResponseIEs__value_PR_ServedGUMMEIs,
	S1SetupResponseIEs__value_PR_RelativeMMECapacity,
	S1SetupResponseIEs__value_PR_MMERelaySupportIndicator,
	S1SetupResponseIEs__value_PR_CriticalityDiagnostics,
	S1SetupResponseIEs__value_PR_UE_RetentionInformation,
	S1SetupResponseIEs__value_PR_ServedDCNs
} S1SetupResponseIEs__value_PR;
typedef enum S1SetupFailureIEs__value_PR {
	S1SetupFailureIEs__value_PR_NOTHING,	/* No components present */
	S1SetupFailureIEs__value_PR_Cause,
	S1SetupFailureIEs__value_PR_TimeToWait,
	S1SetupFailureIEs__value_PR_CriticalityDiagnostics
} S1SetupFailureIEs__value_PR;
typedef enum ENBConfigurationUpdateIEs__value_PR {
	ENBConfigurationUpdateIEs__value_PR_NOTHING,	/* No components present */
	ENBConfigurationUpdateIEs__value_PR_ENBname,
	ENBConfigurationUpdateIEs__value_PR_SupportedTAs,
	ENBConfigurationUpdateIEs__value_PR_CSG_IdList,
	ENBConfigurationUpdateIEs__value_PR_PagingDRX,
	ENBConfigurationUpdateIEs__value_PR_NB_IoT_DefaultPagingDRX,
	ENBConfigurationUpdateIEs__value_PR_ConnectedengNBList,
	ENBConfigurationUpdateIEs__value_PR_ConnectedengNBList_1
} ENBConfigurationUpdateIEs__value_PR;
typedef enum ENBConfigurationUpdateAcknowledgeIEs__value_PR {
	ENBConfigurationUpdateAcknowledgeIEs__value_PR_NOTHING,	/* No components present */
	ENBConfigurationUpdateAcknowledgeIEs__value_PR_CriticalityDiagnostics
} ENBConfigurationUpdateAcknowledgeIEs__value_PR;
typedef enum ENBConfigurationUpdateFailureIEs__value_PR {
	ENBConfigurationUpdateFailureIEs__value_PR_NOTHING,	/* No components present */
	ENBConfigurationUpdateFailureIEs__value_PR_Cause,
	ENBConfigurationUpdateFailureIEs__value_PR_TimeToWait,
	ENBConfigurationUpdateFailureIEs__value_PR_CriticalityDiagnostics
} ENBConfigurationUpdateFailureIEs__value_PR;
typedef enum MMEConfigurationUpdateIEs__value_PR {
	MMEConfigurationUpdateIEs__value_PR_NOTHING,	/* No components present */
	MMEConfigurationUpdateIEs__value_PR_MMEname,
	MMEConfigurationUpdateIEs__value_PR_ServedGUMMEIs,
	MMEConfigurationUpdateIEs__value_PR_RelativeMMECapacity,
	MMEConfigurationUpdateIEs__value_PR_ServedDCNs
} MMEConfigurationUpdateIEs__value_PR;
typedef enum MMEConfigurationUpdateAcknowledgeIEs__value_PR {
	MMEConfigurationUpdateAcknowledgeIEs__value_PR_NOTHING,	/* No components present */
	MMEConfigurationUpdateAcknowledgeIEs__value_PR_CriticalityDiagnostics
} MMEConfigurationUpdateAcknowledgeIEs__value_PR;
typedef enum MMEConfigurationUpdateFailureIEs__value_PR {
	MMEConfigurationUpdateFailureIEs__value_PR_NOTHING,	/* No components present */
	MMEConfigurationUpdateFailureIEs__value_PR_Cause,
	MMEConfigurationUpdateFailureIEs__value_PR_TimeToWait,
	MMEConfigurationUpdateFailureIEs__value_PR_CriticalityDiagnostics
} MMEConfigurationUpdateFailureIEs__value_PR;
typedef enum DownlinkS1cdma2000tunnellingIEs__value_PR {
	DownlinkS1cdma2000tunnellingIEs__value_PR_NOTHING,	/* No components present */
	DownlinkS1cdma2000tunnellingIEs__value_PR_MME_UE_S1AP_ID,
	DownlinkS1cdma2000tunnellingIEs__value_PR_ENB_UE_S1AP_ID,
	DownlinkS1cdma2000tunnellingIEs__value_PR_E_RABSubjecttoDataForwardingList,
	DownlinkS1cdma2000tunnellingIEs__value_PR_Cdma2000HOStatus,
	DownlinkS1cdma2000tunnellingIEs__value_PR_Cdma2000RATType,
	DownlinkS1cdma2000tunnellingIEs__value_PR_Cdma2000PDU
} DownlinkS1cdma2000tunnellingIEs__value_PR;
typedef enum UplinkS1cdma2000tunnellingIEs__value_PR {
	UplinkS1cdma2000tunnellingIEs__value_PR_NOTHING,	/* No components present */
	UplinkS1cdma2000tunnellingIEs__value_PR_MME_UE_S1AP_ID,
	UplinkS1cdma2000tunnellingIEs__value_PR_ENB_UE_S1AP_ID,
	UplinkS1cdma2000tunnellingIEs__value_PR_Cdma2000RATType,
	UplinkS1cdma2000tunnellingIEs__value_PR_Cdma2000SectorID,
	UplinkS1cdma2000tunnellingIEs__value_PR_Cdma2000HORequiredIndication,
	UplinkS1cdma2000tunnellingIEs__value_PR_Cdma2000OneXSRVCCInfo,
	UplinkS1cdma2000tunnellingIEs__value_PR_Cdma2000OneXRAND,
	UplinkS1cdma2000tunnellingIEs__value_PR_Cdma2000PDU,
	UplinkS1cdma2000tunnellingIEs__value_PR_EUTRANRoundTripDelayEstimationInfo
} UplinkS1cdma2000tunnellingIEs__value_PR;
typedef enum UECapabilityInfoIndicationIEs__value_PR {
	UECapabilityInfoIndicationIEs__value_PR_NOTHING,	/* No components present */
	UECapabilityInfoIndicationIEs__value_PR_MME_UE_S1AP_ID,
	UECapabilityInfoIndicationIEs__value_PR_ENB_UE_S1AP_ID,
	UECapabilityInfoIndicationIEs__value_PR_UERadioCapability,
	UECapabilityInfoIndicationIEs__value_PR_UERadioCapabilityForPaging,
	UECapabilityInfoIndicationIEs__value_PR_UE_Application_Layer_Measurement_Capability,
	UECapabilityInfoIndicationIEs__value_PR_LTE_M_Indication
} UECapabilityInfoIndicationIEs__value_PR;
typedef enum ENBStatusTransferIEs__value_PR {
	ENBStatusTransferIEs__value_PR_NOTHING,	/* No components present */
	ENBStatusTransferIEs__value_PR_MME_UE_S1AP_ID,
	ENBStatusTransferIEs__value_PR_ENB_UE_S1AP_ID,
	ENBStatusTransferIEs__value_PR_ENB_StatusTransfer_TransparentContainer
} ENBStatusTransferIEs__value_PR;
typedef enum MMEStatusTransferIEs__value_PR {
	MMEStatusTransferIEs__value_PR_NOTHING,	/* No components present */
	MMEStatusTransferIEs__value_PR_MME_UE_S1AP_ID,
	MMEStatusTransferIEs__value_PR_ENB_UE_S1AP_ID,
	MMEStatusTransferIEs__value_PR_ENB_StatusTransfer_TransparentContainer
} MMEStatusTransferIEs__value_PR;
typedef enum TraceStartIEs__value_PR {
	TraceStartIEs__value_PR_NOTHING,	/* No components present */
	TraceStartIEs__value_PR_MME_UE_S1AP_ID,
	TraceStartIEs__value_PR_ENB_UE_S1AP_ID,
	TraceStartIEs__value_PR_TraceActivation
} TraceStartIEs__value_PR;
typedef enum TraceFailureIndicationIEs__value_PR {
	TraceFailureIndicationIEs__value_PR_NOTHING,	/* No components present */
	TraceFailureIndicationIEs__value_PR_MME_UE_S1AP_ID,
	TraceFailureIndicationIEs__value_PR_ENB_UE_S1AP_ID,
	TraceFailureIndicationIEs__value_PR_E_UTRAN_Trace_ID,
	TraceFailureIndicationIEs__value_PR_Cause
} TraceFailureIndicationIEs__value_PR;
typedef enum DeactivateTraceIEs__value_PR {
	DeactivateTraceIEs__value_PR_NOTHING,	/* No components present */
	DeactivateTraceIEs__value_PR_MME_UE_S1AP_ID,
	DeactivateTraceIEs__value_PR_ENB_UE_S1AP_ID,
	DeactivateTraceIEs__value_PR_E_UTRAN_Trace_ID
} DeactivateTraceIEs__value_PR;
typedef enum CellTrafficTraceIEs__value_PR {
	CellTrafficTraceIEs__value_PR_NOTHING,	/* No components present */
	CellTrafficTraceIEs__value_PR_MME_UE_S1AP_ID,
	CellTrafficTraceIEs__value_PR_ENB_UE_S1AP_ID,
	CellTrafficTraceIEs__value_PR_E_UTRAN_Trace_ID,
	CellTrafficTraceIEs__value_PR_EUTRAN_CGI,
	CellTrafficTraceIEs__value_PR_TransportLayerAddress,
	CellTrafficTraceIEs__value_PR_PrivacyIndicator
} CellTrafficTraceIEs__value_PR;
typedef enum LocationReportingControlIEs__value_PR {
	LocationReportingControlIEs__value_PR_NOTHING,	/* No components present */
	LocationReportingControlIEs__value_PR_MME_UE_S1AP_ID,
	LocationReportingControlIEs__value_PR_ENB_UE_S1AP_ID,
	LocationReportingControlIEs__value_PR_RequestType
} LocationReportingControlIEs__value_PR;
typedef enum LocationReportingFailureIndicationIEs__value_PR {
	LocationReportingFailureIndicationIEs__value_PR_NOTHING,	/* No components present */
	LocationReportingFailureIndicationIEs__value_PR_MME_UE_S1AP_ID,
	LocationReportingFailureIndicationIEs__value_PR_ENB_UE_S1AP_ID,
	LocationReportingFailureIndicationIEs__value_PR_Cause
} LocationReportingFailureIndicationIEs__value_PR;
typedef enum LocationReportIEs__value_PR {
	LocationReportIEs__value_PR_NOTHING,	/* No components present */
	LocationReportIEs__value_PR_MME_UE_S1AP_ID,
	LocationReportIEs__value_PR_ENB_UE_S1AP_ID,
	LocationReportIEs__value_PR_EUTRAN_CGI,
	LocationReportIEs__value_PR_TAI,
	LocationReportIEs__value_PR_RequestType,
	LocationReportIEs__value_PR_PSCellInformation
} LocationReportIEs__value_PR;
typedef enum OverloadStartIEs__value_PR {
	OverloadStartIEs__value_PR_NOTHING,	/* No components present */
	OverloadStartIEs__value_PR_OverloadResponse,
	OverloadStartIEs__value_PR_GUMMEIList,
	OverloadStartIEs__value_PR_TrafficLoadReductionIndication
} OverloadStartIEs__value_PR;
typedef enum OverloadStopIEs__value_PR {
	OverloadStopIEs__value_PR_NOTHING,	/* No components present */
	OverloadStopIEs__value_PR_GUMMEIList
} OverloadStopIEs__value_PR;
typedef enum WriteReplaceWarningRequestIEs__value_PR {
	WriteReplaceWarningRequestIEs__value_PR_NOTHING,	/* No components present */
	WriteReplaceWarningRequestIEs__value_PR_MessageIdentifier,
	WriteReplaceWarningRequestIEs__value_PR_SerialNumber,
	WriteReplaceWarningRequestIEs__value_PR_WarningAreaList,
	WriteReplaceWarningRequestIEs__value_PR_RepetitionPeriod,
	WriteReplaceWarningRequestIEs__value_PR_ExtendedRepetitionPeriod,
	WriteReplaceWarningRequestIEs__value_PR_NumberofBroadcastRequest,
	WriteReplaceWarningRequestIEs__value_PR_WarningType,
	WriteReplaceWarningRequestIEs__value_PR_WarningSecurityInfo,
	WriteReplaceWarningRequestIEs__value_PR_DataCodingScheme,
	WriteReplaceWarningRequestIEs__value_PR_WarningMessageContents,
	WriteReplaceWarningRequestIEs__value_PR_ConcurrentWarningMessageIndicator,
	WriteReplaceWarningRequestIEs__value_PR_WarningAreaCoordinates
} WriteReplaceWarningRequestIEs__value_PR;
typedef enum WriteReplaceWarningResponseIEs__value_PR {
	WriteReplaceWarningResponseIEs__value_PR_NOTHING,	/* No components present */
	WriteReplaceWarningResponseIEs__value_PR_MessageIdentifier,
	WriteReplaceWarningResponseIEs__value_PR_SerialNumber,
	WriteReplaceWarningResponseIEs__value_PR_BroadcastCompletedAreaList,
	WriteReplaceWarningResponseIEs__value_PR_CriticalityDiagnostics
} WriteReplaceWarningResponseIEs__value_PR;
typedef enum ENBDirectInformationTransferIEs__value_PR {
	ENBDirectInformationTransferIEs__value_PR_NOTHING,	/* No components present */
	ENBDirectInformationTransferIEs__value_PR_Inter_SystemInformationTransferType
} ENBDirectInformationTransferIEs__value_PR;
typedef enum MMEDirectInformationTransferIEs__value_PR {
	MMEDirectInformationTransferIEs__value_PR_NOTHING,	/* No components present */
	MMEDirectInformationTransferIEs__value_PR_Inter_SystemInformationTransferType
} MMEDirectInformationTransferIEs__value_PR;
typedef enum ENBConfigurationTransferIEs__value_PR {
	ENBConfigurationTransferIEs__value_PR_NOTHING,	/* No components present */
	ENBConfigurationTransferIEs__value_PR_SONConfigurationTransfer,
	ENBConfigurationTransferIEs__value_PR_EN_DCSONConfigurationTransfer
} ENBConfigurationTransferIEs__value_PR;
typedef enum MMEConfigurationTransferIEs__value_PR {
	MMEConfigurationTransferIEs__value_PR_NOTHING,	/* No components present */
	MMEConfigurationTransferIEs__value_PR_SONConfigurationTransfer,
	MMEConfigurationTransferIEs__value_PR_EN_DCSONConfigurationTransfer
} MMEConfigurationTransferIEs__value_PR;
typedef enum KillRequestIEs__value_PR {
	KillRequestIEs__value_PR_NOTHING,	/* No components present */
	KillRequestIEs__value_PR_MessageIdentifier,
	KillRequestIEs__value_PR_SerialNumber,
	KillRequestIEs__value_PR_WarningAreaList,
	KillRequestIEs__value_PR_KillAllWarningMessages
} KillRequestIEs__value_PR;
typedef enum KillResponseIEs__value_PR {
	KillResponseIEs__value_PR_NOTHING,	/* No components present */
	KillResponseIEs__value_PR_MessageIdentifier,
	KillResponseIEs__value_PR_SerialNumber,
	KillResponseIEs__value_PR_BroadcastCancelledAreaList,
	KillResponseIEs__value_PR_CriticalityDiagnostics
} KillResponseIEs__value_PR;
typedef enum PWSRestartIndicationIEs__value_PR {
	PWSRestartIndicationIEs__value_PR_NOTHING,	/* No components present */
	PWSRestartIndicationIEs__value_PR_ECGIListForRestart,
	PWSRestartIndicationIEs__value_PR_Global_ENB_ID,
	PWSRestartIndicationIEs__value_PR_TAIListForRestart,
	PWSRestartIndicationIEs__value_PR_EmergencyAreaIDListForRestart
} PWSRestartIndicationIEs__value_PR;
typedef enum PWSFailureIndicationIEs__value_PR {
	PWSFailureIndicationIEs__value_PR_NOTHING,	/* No components present */
	PWSFailureIndicationIEs__value_PR_PWSfailedECGIList,
	PWSFailureIndicationIEs__value_PR_Global_ENB_ID
} PWSFailureIndicationIEs__value_PR;
typedef enum DownlinkUEAssociatedLPPaTransport_IEs__value_PR {
	DownlinkUEAssociatedLPPaTransport_IEs__value_PR_NOTHING,	/* No components present */
	DownlinkUEAssociatedLPPaTransport_IEs__value_PR_MME_UE_S1AP_ID,
	DownlinkUEAssociatedLPPaTransport_IEs__value_PR_ENB_UE_S1AP_ID,
	DownlinkUEAssociatedLPPaTransport_IEs__value_PR_Routing_ID,
	DownlinkUEAssociatedLPPaTransport_IEs__value_PR_LPPa_PDU
} DownlinkUEAssociatedLPPaTransport_IEs__value_PR;
typedef enum UplinkUEAssociatedLPPaTransport_IEs__value_PR {
	UplinkUEAssociatedLPPaTransport_IEs__value_PR_NOTHING,	/* No components present */
	UplinkUEAssociatedLPPaTransport_IEs__value_PR_MME_UE_S1AP_ID,
	UplinkUEAssociatedLPPaTransport_IEs__value_PR_ENB_UE_S1AP_ID,
	UplinkUEAssociatedLPPaTransport_IEs__value_PR_Routing_ID,
	UplinkUEAssociatedLPPaTransport_IEs__value_PR_LPPa_PDU
} UplinkUEAssociatedLPPaTransport_IEs__value_PR;
typedef enum DownlinkNonUEAssociatedLPPaTransport_IEs__value_PR {
	DownlinkNonUEAssociatedLPPaTransport_IEs__value_PR_NOTHING,	/* No components present */
	DownlinkNonUEAssociatedLPPaTransport_IEs__value_PR_Routing_ID,
	DownlinkNonUEAssociatedLPPaTransport_IEs__value_PR_LPPa_PDU
} DownlinkNonUEAssociatedLPPaTransport_IEs__value_PR;
typedef enum UplinkNonUEAssociatedLPPaTransport_IEs__value_PR {
	UplinkNonUEAssociatedLPPaTransport_IEs__value_PR_NOTHING,	/* No components present */
	UplinkNonUEAssociatedLPPaTransport_IEs__value_PR_Routing_ID,
	UplinkNonUEAssociatedLPPaTransport_IEs__value_PR_LPPa_PDU
} UplinkNonUEAssociatedLPPaTransport_IEs__value_PR;
typedef enum E_RABModificationIndicationIEs__value_PR {
	E_RABModificationIndicationIEs__value_PR_NOTHING,	/* No components present */
	E_RABModificationIndicationIEs__value_PR_MME_UE_S1AP_ID,
	E_RABModificationIndicationIEs__value_PR_ENB_UE_S1AP_ID,
	E_RABModificationIndicationIEs__value_PR_E_RABToBeModifiedListBearerModInd,
	E_RABModificationIndicationIEs__value_PR_E_RABNotToBeModifiedListBearerModInd,
	E_RABModificationIndicationIEs__value_PR_CSGMembershipInfo,
	E_RABModificationIndicationIEs__value_PR_TunnelInformation,
	E_RABModificationIndicationIEs__value_PR_SecondaryRATDataUsageReportList
} E_RABModificationIndicationIEs__value_PR;
typedef enum E_RABModificationConfirmIEs__value_PR {
	E_RABModificationConfirmIEs__value_PR_NOTHING,	/* No components present */
	E_RABModificationConfirmIEs__value_PR_MME_UE_S1AP_ID,
	E_RABModificationConfirmIEs__value_PR_ENB_UE_S1AP_ID,
	E_RABModificationConfirmIEs__value_PR_E_RABModifyListBearerModConf,
	E_RABModificationConfirmIEs__value_PR_E_RABList,
	E_RABModificationConfirmIEs__value_PR_E_RABList_1,
	E_RABModificationConfirmIEs__value_PR_CriticalityDiagnostics,
	E_RABModificationConfirmIEs__value_PR_CSGMembershipStatus
} E_RABModificationConfirmIEs__value_PR;
typedef enum UEContextModificationIndicationIEs__value_PR {
	UEContextModificationIndicationIEs__value_PR_NOTHING,	/* No components present */
	UEContextModificationIndicationIEs__value_PR_MME_UE_S1AP_ID,
	UEContextModificationIndicationIEs__value_PR_ENB_UE_S1AP_ID,
	UEContextModificationIndicationIEs__value_PR_CSGMembershipInfo
} UEContextModificationIndicationIEs__value_PR;
typedef enum UEContextModificationConfirmIEs__value_PR {
	UEContextModificationConfirmIEs__value_PR_NOTHING,	/* No components present */
	UEContextModificationConfirmIEs__value_PR_MME_UE_S1AP_ID,
	UEContextModificationConfirmIEs__value_PR_ENB_UE_S1AP_ID,
	UEContextModificationConfirmIEs__value_PR_CSGMembershipStatus,
	UEContextModificationConfirmIEs__value_PR_CriticalityDiagnostics
} UEContextModificationConfirmIEs__value_PR;
typedef enum UEContextSuspendRequestIEs__value_PR {
	UEContextSuspendRequestIEs__value_PR_NOTHING,	/* No components present */
	UEContextSuspendRequestIEs__value_PR_MME_UE_S1AP_ID,
	UEContextSuspendRequestIEs__value_PR_ENB_UE_S1AP_ID,
	UEContextSuspendRequestIEs__value_PR_InformationOnRecommendedCellsAndENBsForPaging,
	UEContextSuspendRequestIEs__value_PR_CellIdentifierAndCELevelForCECapableUEs,
	UEContextSuspendRequestIEs__value_PR_SecondaryRATDataUsageReportList,
	UEContextSuspendRequestIEs__value_PR_UserLocationInformation,
	UEContextSuspendRequestIEs__value_PR_TimeSinceSecondaryNodeRelease
} UEContextSuspendRequestIEs__value_PR;
typedef enum UEContextSuspendResponseIEs__value_PR {
	UEContextSuspendResponseIEs__value_PR_NOTHING,	/* No components present */
	UEContextSuspendResponseIEs__value_PR_MME_UE_S1AP_ID,
	UEContextSuspendResponseIEs__value_PR_ENB_UE_S1AP_ID,
	UEContextSuspendResponseIEs__value_PR_CriticalityDiagnostics,
	UEContextSuspendResponseIEs__value_PR_SecurityContext
} UEContextSuspendResponseIEs__value_PR;
typedef enum UEContextResumeRequestIEs__value_PR {
	UEContextResumeRequestIEs__value_PR_NOTHING,	/* No components present */
	UEContextResumeRequestIEs__value_PR_MME_UE_S1AP_ID,
	UEContextResumeRequestIEs__value_PR_ENB_UE_S1AP_ID,
	UEContextResumeRequestIEs__value_PR_E_RABFailedToResumeListResumeReq,
	UEContextResumeRequestIEs__value_PR_RRC_Establishment_Cause
} UEContextResumeRequestIEs__value_PR;
typedef enum UEContextResumeResponseIEs__value_PR {
	UEContextResumeResponseIEs__value_PR_NOTHING,	/* No components present */
	UEContextResumeResponseIEs__value_PR_MME_UE_S1AP_ID,
	UEContextResumeResponseIEs__value_PR_ENB_UE_S1AP_ID,
	UEContextResumeResponseIEs__value_PR_E_RABFailedToResumeListResumeRes,
	UEContextResumeResponseIEs__value_PR_CriticalityDiagnostics,
	UEContextResumeResponseIEs__value_PR_SecurityContext,
	UEContextResumeResponseIEs__value_PR_PendingDataIndication
} UEContextResumeResponseIEs__value_PR;
typedef enum UEContextResumeFailureIEs__value_PR {
	UEContextResumeFailureIEs__value_PR_NOTHING,	/* No components present */
	UEContextResumeFailureIEs__value_PR_MME_UE_S1AP_ID,
	UEContextResumeFailureIEs__value_PR_ENB_UE_S1AP_ID,
	UEContextResumeFailureIEs__value_PR_Cause,
	UEContextResumeFailureIEs__value_PR_CriticalityDiagnostics
} UEContextResumeFailureIEs__value_PR;
typedef enum ConnectionEstablishmentIndicationIEs__value_PR {
	ConnectionEstablishmentIndicationIEs__value_PR_NOTHING,	/* No components present */
	ConnectionEstablishmentIndicationIEs__value_PR_MME_UE_S1AP_ID,
	ConnectionEstablishmentIndicationIEs__value_PR_ENB_UE_S1AP_ID,
	ConnectionEstablishmentIndicationIEs__value_PR_UERadioCapability,
	ConnectionEstablishmentIndicationIEs__value_PR_EnhancedCoverageRestricted,
	ConnectionEstablishmentIndicationIEs__value_PR_DL_CP_SecurityInformation,
	ConnectionEstablishmentIndicationIEs__value_PR_CE_ModeBRestricted,
	ConnectionEstablishmentIndicationIEs__value_PR_EndIndication,
	ConnectionEstablishmentIndicationIEs__value_PR_Subscription_Based_UE_DifferentiationInfo
} ConnectionEstablishmentIndicationIEs__value_PR;
typedef enum RetrieveUEInformationIEs__value_PR {
	RetrieveUEInformationIEs__value_PR_NOTHING,	/* No components present */
	RetrieveUEInformationIEs__value_PR_S_TMSI
} RetrieveUEInformationIEs__value_PR;
typedef enum UEInformationTransferIEs__value_PR {
	UEInformationTransferIEs__value_PR_NOTHING,	/* No components present */
	UEInformationTransferIEs__value_PR_S_TMSI,
	UEInformationTransferIEs__value_PR_E_RABLevelQoSParameters,
	UEInformationTransferIEs__value_PR_UERadioCapability,
	UEInformationTransferIEs__value_PR_Subscription_Based_UE_DifferentiationInfo,
	UEInformationTransferIEs__value_PR_PendingDataIndication
} UEInformationTransferIEs__value_PR;
typedef enum ENBCPRelocationIndicationIEs__value_PR {
	ENBCPRelocationIndicationIEs__value_PR_NOTHING,	/* No components present */
	ENBCPRelocationIndicationIEs__value_PR_ENB_UE_S1AP_ID,
	ENBCPRelocationIndicationIEs__value_PR_S_TMSI,
	ENBCPRelocationIndicationIEs__value_PR_EUTRAN_CGI,
	ENBCPRelocationIndicationIEs__value_PR_TAI,
	ENBCPRelocationIndicationIEs__value_PR_UL_CP_SecurityInformation
} ENBCPRelocationIndicationIEs__value_PR;
typedef enum MMECPRelocationIndicationIEs__value_PR {
	MMECPRelocationIndicationIEs__value_PR_NOTHING,	/* No components present */
	MMECPRelocationIndicationIEs__value_PR_MME_UE_S1AP_ID,
	MMECPRelocationIndicationIEs__value_PR_ENB_UE_S1AP_ID
} MMECPRelocationIndicationIEs__value_PR;
typedef enum SecondaryRATDataUsageReportIEs__value_PR {
	SecondaryRATDataUsageReportIEs__value_PR_NOTHING,	/* No components present */
	SecondaryRATDataUsageReportIEs__value_PR_MME_UE_S1AP_ID,
	SecondaryRATDataUsageReportIEs__value_PR_ENB_UE_S1AP_ID,
	SecondaryRATDataUsageReportIEs__value_PR_SecondaryRATDataUsageReportList,
	SecondaryRATDataUsageReportIEs__value_PR_HandoverFlag,
	SecondaryRATDataUsageReportIEs__value_PR_UserLocationInformation,
	SecondaryRATDataUsageReportIEs__value_PR_TimeSinceSecondaryNodeRelease
} SecondaryRATDataUsageReportIEs__value_PR;
typedef enum E_RABDataForwardingItemIEs__value_PR {
	E_RABDataForwardingItemIEs__value_PR_NOTHING,	/* No components present */
	E_RABDataForwardingItemIEs__value_PR_E_RABDataForwardingItem
} E_RABDataForwardingItemIEs__value_PR;
typedef enum E_RABToBeSetupItemHOReqIEs__value_PR {
	E_RABToBeSetupItemHOReqIEs__value_PR_NOTHING,	/* No components present */
	E_RABToBeSetupItemHOReqIEs__value_PR_E_RABToBeSetupItemHOReq
} E_RABToBeSetupItemHOReqIEs__value_PR;
typedef enum E_RABAdmittedItemIEs__value_PR {
	E_RABAdmittedItemIEs__value_PR_NOTHING,	/* No components present */
	E_RABAdmittedItemIEs__value_PR_E_RABAdmittedItem
} E_RABAdmittedItemIEs__value_PR;
typedef enum E_RABFailedtoSetupItemHOReqAckIEs__value_PR {
	E_RABFailedtoSetupItemHOReqAckIEs__value_PR_NOTHING,	/* No components present */
	E_RABFailedtoSetupItemHOReqAckIEs__value_PR_E_RABFailedToSetupItemHOReqAck
} E_RABFailedtoSetupItemHOReqAckIEs__value_PR;
typedef enum E_RABToBeSwitchedDLItemIEs__value_PR {
	E_RABToBeSwitchedDLItemIEs__value_PR_NOTHING,	/* No components present */
	E_RABToBeSwitchedDLItemIEs__value_PR_E_RABToBeSwitchedDLItem
} E_RABToBeSwitchedDLItemIEs__value_PR;
typedef enum E_RABToBeSwitchedULItemIEs__value_PR {
	E_RABToBeSwitchedULItemIEs__value_PR_NOTHING,	/* No components present */
	E_RABToBeSwitchedULItemIEs__value_PR_E_RABToBeSwitchedULItem
} E_RABToBeSwitchedULItemIEs__value_PR;
typedef enum E_RABToBeModifiedItemBearerModIndIEs__value_PR {
	E_RABToBeModifiedItemBearerModIndIEs__value_PR_NOTHING,	/* No components present */
	E_RABToBeModifiedItemBearerModIndIEs__value_PR_E_RABToBeModifiedItemBearerModInd
} E_RABToBeModifiedItemBearerModIndIEs__value_PR;
typedef enum E_RABNotToBeModifiedItemBearerModIndIEs__value_PR {
	E_RABNotToBeModifiedItemBearerModIndIEs__value_PR_NOTHING,	/* No components present */
	E_RABNotToBeModifiedItemBearerModIndIEs__value_PR_E_RABNotToBeModifiedItemBearerModInd
} E_RABNotToBeModifiedItemBearerModIndIEs__value_PR;
typedef enum E_RABFailedToResumeItemResumeReqIEs__value_PR {
	E_RABFailedToResumeItemResumeReqIEs__value_PR_NOTHING,	/* No components present */
	E_RABFailedToResumeItemResumeReqIEs__value_PR_E_RABFailedToResumeItemResumeReq
} E_RABFailedToResumeItemResumeReqIEs__value_PR;
typedef enum E_RABFailedToResumeItemResumeResIEs__value_PR {
	E_RABFailedToResumeItemResumeResIEs__value_PR_NOTHING,	/* No components present */
	E_RABFailedToResumeItemResumeResIEs__value_PR_E_RABFailedToResumeItemResumeRes
} E_RABFailedToResumeItemResumeResIEs__value_PR;

/* ProtocolIE-Field */
typedef struct Bearers_SubjectToStatusTransfer_ItemIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct Bearers_SubjectToStatusTransfer_ItemIEs__value {
		Bearers_SubjectToStatusTransfer_ItemIEs__value_PR present;
		union Bearers_SubjectToStatusTransfer_ItemIEs__value_u {
			Bearers_SubjectToStatusTransfer_Item_t	 Bearers_SubjectToStatusTransfer_Item;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} Bearers_SubjectToStatusTransfer_ItemIEs_t;
typedef struct E_RABInformationListIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct E_RABInformationListIEs__value {
		E_RABInformationListIEs__value_PR present;
		union E_RABInformationListIEs__value_u {
			E_RABInformationListItem_t	 E_RABInformationListItem;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABInformationListIEs_t;
typedef struct E_RABItemIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct E_RABItemIEs__value {
		E_RABItemIEs__value_PR present;
		union E_RABItemIEs__value_u {
			E_RABItem_t	 E_RABItem;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABItemIEs_t;
typedef struct E_RABUsageReportItemIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct E_RABUsageReportItemIEs__value {
		E_RABUsageReportItemIEs__value_PR present;
		union E_RABUsageReportItemIEs__value_u {
			E_RABUsageReportItem_t	 E_RABUsageReportItem;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABUsageReportItemIEs_t;
typedef struct MDTMode_ExtensionIE {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct MDTMode_ExtensionIE__value {
		MDTMode_ExtensionIE__value_PR present;
		union MDTMode_ExtensionIE__value_u {
			LoggedMBSFNMDT_t	 LoggedMBSFNMDT;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} MDTMode_ExtensionIE_t;
typedef struct RecommendedCellItemIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct RecommendedCellItemIEs__value {
		RecommendedCellItemIEs__value_PR present;
		union RecommendedCellItemIEs__value_u {
			RecommendedCellItem_t	 RecommendedCellItem;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RecommendedCellItemIEs_t;
typedef struct RecommendedENBItemIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct RecommendedENBItemIEs__value {
		RecommendedENBItemIEs__value_PR present;
		union RecommendedENBItemIEs__value_u {
			RecommendedENBItem_t	 RecommendedENBItem;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RecommendedENBItemIEs_t;
typedef struct SecondaryRATDataUsageReportItemIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct SecondaryRATDataUsageReportItemIEs__value {
		SecondaryRATDataUsageReportItemIEs__value_PR present;
		union SecondaryRATDataUsageReportItemIEs__value_u {
			SecondaryRATDataUsageReportItem_t	 SecondaryRATDataUsageReportItem;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} SecondaryRATDataUsageReportItemIEs_t;
typedef struct SONInformation_ExtensionIE {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct SONInformation_ExtensionIE__value {
		SONInformation_ExtensionIE__value_PR present;
		union SONInformation_ExtensionIE__value_u {
			SONInformationReport_t	 SONInformationReport;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} SONInformation_ExtensionIE_t;
typedef struct E_RABToBeSetupItemBearerSUReqIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct E_RABToBeSetupItemBearerSUReqIEs__value {
		E_RABToBeSetupItemBearerSUReqIEs__value_PR present;
		union E_RABToBeSetupItemBearerSUReqIEs__value_u {
			E_RABToBeSetupItemBearerSUReq_t	 E_RABToBeSetupItemBearerSUReq;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABToBeSetupItemBearerSUReqIEs_t;
typedef struct E_RABSetupItemBearerSUResIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct E_RABSetupItemBearerSUResIEs__value {
		E_RABSetupItemBearerSUResIEs__value_PR present;
		union E_RABSetupItemBearerSUResIEs__value_u {
			E_RABSetupItemBearerSURes_t	 E_RABSetupItemBearerSURes;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABSetupItemBearerSUResIEs_t;
typedef struct E_RABToBeModifiedItemBearerModReqIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct E_RABToBeModifiedItemBearerModReqIEs__value {
		E_RABToBeModifiedItemBearerModReqIEs__value_PR present;
		union E_RABToBeModifiedItemBearerModReqIEs__value_u {
			E_RABToBeModifiedItemBearerModReq_t	 E_RABToBeModifiedItemBearerModReq;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABToBeModifiedItemBearerModReqIEs_t;
typedef struct E_RABModifyItemBearerModResIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct E_RABModifyItemBearerModResIEs__value {
		E_RABModifyItemBearerModResIEs__value_PR present;
		union E_RABModifyItemBearerModResIEs__value_u {
			E_RABModifyItemBearerModRes_t	 E_RABModifyItemBearerModRes;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABModifyItemBearerModResIEs_t;
typedef struct E_RABReleaseItemBearerRelCompIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct E_RABReleaseItemBearerRelCompIEs__value {
		E_RABReleaseItemBearerRelCompIEs__value_PR present;
		union E_RABReleaseItemBearerRelCompIEs__value_u {
			E_RABReleaseItemBearerRelComp_t	 E_RABReleaseItemBearerRelComp;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABReleaseItemBearerRelCompIEs_t;
typedef struct E_RABToBeSetupItemCtxtSUReqIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct E_RABToBeSetupItemCtxtSUReqIEs__value {
		E_RABToBeSetupItemCtxtSUReqIEs__value_PR present;
		union E_RABToBeSetupItemCtxtSUReqIEs__value_u {
			E_RABToBeSetupItemCtxtSUReq_t	 E_RABToBeSetupItemCtxtSUReq;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABToBeSetupItemCtxtSUReqIEs_t;
typedef struct E_RABSetupItemCtxtSUResIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct E_RABSetupItemCtxtSUResIEs__value {
		E_RABSetupItemCtxtSUResIEs__value_PR present;
		union E_RABSetupItemCtxtSUResIEs__value_u {
			E_RABSetupItemCtxtSURes_t	 E_RABSetupItemCtxtSURes;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABSetupItemCtxtSUResIEs_t;
typedef struct TAIItemIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct TAIItemIEs__value {
		TAIItemIEs__value_PR present;
		union TAIItemIEs__value_u {
			TAIItem_t	 TAIItem;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} TAIItemIEs_t;
typedef struct UE_associatedLogicalS1_ConnectionItemRes {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct UE_associatedLogicalS1_ConnectionItemRes__value {
		UE_associatedLogicalS1_ConnectionItemRes__value_PR present;
		union UE_associatedLogicalS1_ConnectionItemRes__value_u {
			UE_associatedLogicalS1_ConnectionItem_t	 UE_associatedLogicalS1_ConnectionItem;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UE_associatedLogicalS1_ConnectionItemRes_t;
typedef struct UE_associatedLogicalS1_ConnectionItemResAck {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct UE_associatedLogicalS1_ConnectionItemResAck__value {
		UE_associatedLogicalS1_ConnectionItemResAck__value_PR present;
		union UE_associatedLogicalS1_ConnectionItemResAck__value_u {
			UE_associatedLogicalS1_ConnectionItem_t	 UE_associatedLogicalS1_ConnectionItem;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UE_associatedLogicalS1_ConnectionItemResAck_t;
typedef struct E_RABModifyItemBearerModConfIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct E_RABModifyItemBearerModConfIEs__value {
		E_RABModifyItemBearerModConfIEs__value_PR present;
		union E_RABModifyItemBearerModConfIEs__value_u {
			E_RABModifyItemBearerModConf_t	 E_RABModifyItemBearerModConf;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABModifyItemBearerModConfIEs_t;
typedef struct HandoverRequiredIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct HandoverRequiredIEs__value {
		HandoverRequiredIEs__value_PR present;
		union HandoverRequiredIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			HandoverType_t	 HandoverType;
			Cause_t	 Cause;
			TargetID_t	 TargetID;
			Direct_Forwarding_Path_Availability_t	 Direct_Forwarding_Path_Availability;
			SRVCCHOIndication_t	 SRVCCHOIndication;
			Source_ToTarget_TransparentContainer_t	 Source_ToTarget_TransparentContainer;
			Source_ToTarget_TransparentContainer_t	 Source_ToTarget_TransparentContainer_1;
			MSClassmark2_t	 MSClassmark2;
			MSClassmark3_t	 MSClassmark3;
			CSG_Id_t	 CSG_Id;
			CellAccessMode_t	 CellAccessMode;
			PS_ServiceNotAvailable_t	 PS_ServiceNotAvailable;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} HandoverRequiredIEs_t;
typedef struct HandoverCommandIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct HandoverCommandIEs__value {
		HandoverCommandIEs__value_PR present;
		union HandoverCommandIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			HandoverType_t	 HandoverType;
			NASSecurityParametersfromE_UTRAN_t	 NASSecurityParametersfromE_UTRAN;
			E_RABSubjecttoDataForwardingList_t	 E_RABSubjecttoDataForwardingList;
			E_RABList_t	 E_RABList;
			Target_ToSource_TransparentContainer_t	 Target_ToSource_TransparentContainer;
			Target_ToSource_TransparentContainer_t	 Target_ToSource_TransparentContainer_1;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} HandoverCommandIEs_t;
typedef struct HandoverPreparationFailureIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct HandoverPreparationFailureIEs__value {
		HandoverPreparationFailureIEs__value_PR present;
		union HandoverPreparationFailureIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			Cause_t	 Cause;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} HandoverPreparationFailureIEs_t;
typedef struct HandoverRequestIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct HandoverRequestIEs__value {
		HandoverRequestIEs__value_PR present;
		union HandoverRequestIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			HandoverType_t	 HandoverType;
			Cause_t	 Cause;
			UEAggregateMaximumBitrate_t	 UEAggregateMaximumBitrate;
			E_RABToBeSetupListHOReq_t	 E_RABToBeSetupListHOReq;
			Source_ToTarget_TransparentContainer_t	 Source_ToTarget_TransparentContainer;
			UESecurityCapabilities_t	 UESecurityCapabilities;
			HandoverRestrictionList_t	 HandoverRestrictionList;
			TraceActivation_t	 TraceActivation;
			RequestType_t	 RequestType;
			SRVCCOperationPossible_t	 SRVCCOperationPossible;
			SecurityContext_t	 SecurityContext;
			NASSecurityParameterstoE_UTRAN_t	 NASSecurityParameterstoE_UTRAN;
			CSG_Id_t	 CSG_Id;
			CSGMembershipStatus_t	 CSGMembershipStatus;
			GUMMEI_t	 GUMMEI;
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID_1;
			ManagementBasedMDTAllowed_t	 ManagementBasedMDTAllowed;
			MDTPLMNList_t	 MDTPLMNList;
			Masked_IMEISV_t	 Masked_IMEISV;
			ExpectedUEBehaviour_t	 ExpectedUEBehaviour;
			ProSeAuthorized_t	 ProSeAuthorized;
			UEUserPlaneCIoTSupportIndicator_t	 UEUserPlaneCIoTSupportIndicator;
			V2XServicesAuthorized_t	 V2XServicesAuthorized;
			UESidelinkAggregateMaximumBitrate_t	 UESidelinkAggregateMaximumBitrate;
			EnhancedCoverageRestricted_t	 EnhancedCoverageRestricted;
			NRUESecurityCapabilities_t	 NRUESecurityCapabilities;
			CE_ModeBRestricted_t	 CE_ModeBRestricted;
			AerialUEsubscriptionInformation_t	 AerialUEsubscriptionInformation;
			PendingDataIndication_t	 PendingDataIndication;
			Subscription_Based_UE_DifferentiationInfo_t	 Subscription_Based_UE_DifferentiationInfo;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} HandoverRequestIEs_t;
typedef struct HandoverRequestAcknowledgeIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct HandoverRequestAcknowledgeIEs__value {
		HandoverRequestAcknowledgeIEs__value_PR present;
		union HandoverRequestAcknowledgeIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			E_RABAdmittedList_t	 E_RABAdmittedList;
			E_RABFailedtoSetupListHOReqAck_t	 E_RABFailedtoSetupListHOReqAck;
			Target_ToSource_TransparentContainer_t	 Target_ToSource_TransparentContainer;
			CSG_Id_t	 CSG_Id;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
			CellAccessMode_t	 CellAccessMode;
			CE_mode_B_SupportIndicator_t	 CE_mode_B_SupportIndicator;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} HandoverRequestAcknowledgeIEs_t;
typedef struct HandoverFailureIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct HandoverFailureIEs__value {
		HandoverFailureIEs__value_PR present;
		union HandoverFailureIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			Cause_t	 Cause;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} HandoverFailureIEs_t;
typedef struct HandoverNotifyIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct HandoverNotifyIEs__value {
		HandoverNotifyIEs__value_PR present;
		union HandoverNotifyIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			EUTRAN_CGI_t	 EUTRAN_CGI;
			TAI_t	 TAI;
			TunnelInformation_t	 TunnelInformation;
			LHN_ID_t	 LHN_ID;
			PSCellInformation_t	 PSCellInformation;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} HandoverNotifyIEs_t;
typedef struct PathSwitchRequestIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct PathSwitchRequestIEs__value {
		PathSwitchRequestIEs__value_PR present;
		union PathSwitchRequestIEs__value_u {
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			E_RABToBeSwitchedDLList_t	 E_RABToBeSwitchedDLList;
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			EUTRAN_CGI_t	 EUTRAN_CGI;
			TAI_t	 TAI;
			UESecurityCapabilities_t	 UESecurityCapabilities;
			CSG_Id_t	 CSG_Id;
			CellAccessMode_t	 CellAccessMode;
			GUMMEI_t	 GUMMEI;
			CSGMembershipStatus_t	 CSGMembershipStatus;
			TunnelInformation_t	 TunnelInformation;
			LHN_ID_t	 LHN_ID;
			RRC_Establishment_Cause_t	 RRC_Establishment_Cause;
			NRUESecurityCapabilities_t	 NRUESecurityCapabilities;
			PSCellInformation_t	 PSCellInformation;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} PathSwitchRequestIEs_t;
typedef struct PathSwitchRequestAcknowledgeIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct PathSwitchRequestAcknowledgeIEs__value {
		PathSwitchRequestAcknowledgeIEs__value_PR present;
		union PathSwitchRequestAcknowledgeIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			UEAggregateMaximumBitrate_t	 UEAggregateMaximumBitrate;
			E_RABToBeSwitchedULList_t	 E_RABToBeSwitchedULList;
			E_RABList_t	 E_RABList;
			SecurityContext_t	 SecurityContext;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID_1;
			CSGMembershipStatus_t	 CSGMembershipStatus;
			ProSeAuthorized_t	 ProSeAuthorized;
			UEUserPlaneCIoTSupportIndicator_t	 UEUserPlaneCIoTSupportIndicator;
			V2XServicesAuthorized_t	 V2XServicesAuthorized;
			UESidelinkAggregateMaximumBitrate_t	 UESidelinkAggregateMaximumBitrate;
			EnhancedCoverageRestricted_t	 EnhancedCoverageRestricted;
			NRUESecurityCapabilities_t	 NRUESecurityCapabilities;
			CE_ModeBRestricted_t	 CE_ModeBRestricted;
			AerialUEsubscriptionInformation_t	 AerialUEsubscriptionInformation;
			PendingDataIndication_t	 PendingDataIndication;
			Subscription_Based_UE_DifferentiationInfo_t	 Subscription_Based_UE_DifferentiationInfo;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} PathSwitchRequestAcknowledgeIEs_t;
typedef struct PathSwitchRequestFailureIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct PathSwitchRequestFailureIEs__value {
		PathSwitchRequestFailureIEs__value_PR present;
		union PathSwitchRequestFailureIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			Cause_t	 Cause;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} PathSwitchRequestFailureIEs_t;
typedef struct HandoverCancelIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct HandoverCancelIEs__value {
		HandoverCancelIEs__value_PR present;
		union HandoverCancelIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			Cause_t	 Cause;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} HandoverCancelIEs_t;
typedef struct HandoverCancelAcknowledgeIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct HandoverCancelAcknowledgeIEs__value {
		HandoverCancelAcknowledgeIEs__value_PR present;
		union HandoverCancelAcknowledgeIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} HandoverCancelAcknowledgeIEs_t;
typedef struct E_RABSetupRequestIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct E_RABSetupRequestIEs__value {
		E_RABSetupRequestIEs__value_PR present;
		union E_RABSetupRequestIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			UEAggregateMaximumBitrate_t	 UEAggregateMaximumBitrate;
			E_RABToBeSetupListBearerSUReq_t	 E_RABToBeSetupListBearerSUReq;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABSetupRequestIEs_t;
typedef struct E_RABSetupResponseIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct E_RABSetupResponseIEs__value {
		E_RABSetupResponseIEs__value_PR present;
		union E_RABSetupResponseIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			E_RABSetupListBearerSURes_t	 E_RABSetupListBearerSURes;
			E_RABList_t	 E_RABList;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABSetupResponseIEs_t;
typedef struct E_RABModifyRequestIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct E_RABModifyRequestIEs__value {
		E_RABModifyRequestIEs__value_PR present;
		union E_RABModifyRequestIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			UEAggregateMaximumBitrate_t	 UEAggregateMaximumBitrate;
			E_RABToBeModifiedListBearerModReq_t	 E_RABToBeModifiedListBearerModReq;
			SecondaryRATDataUsageRequest_t	 SecondaryRATDataUsageRequest;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABModifyRequestIEs_t;
typedef struct E_RABModifyResponseIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct E_RABModifyResponseIEs__value {
		E_RABModifyResponseIEs__value_PR present;
		union E_RABModifyResponseIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			E_RABModifyListBearerModRes_t	 E_RABModifyListBearerModRes;
			E_RABList_t	 E_RABList;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
			SecondaryRATDataUsageReportList_t	 SecondaryRATDataUsageReportList;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABModifyResponseIEs_t;
typedef struct E_RABReleaseCommandIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct E_RABReleaseCommandIEs__value {
		E_RABReleaseCommandIEs__value_PR present;
		union E_RABReleaseCommandIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			UEAggregateMaximumBitrate_t	 UEAggregateMaximumBitrate;
			E_RABList_t	 E_RABList;
			NAS_PDU_t	 NAS_PDU;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABReleaseCommandIEs_t;
typedef struct E_RABReleaseResponseIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct E_RABReleaseResponseIEs__value {
		E_RABReleaseResponseIEs__value_PR present;
		union E_RABReleaseResponseIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			E_RABReleaseListBearerRelComp_t	 E_RABReleaseListBearerRelComp;
			E_RABList_t	 E_RABList;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
			UserLocationInformation_t	 UserLocationInformation;
			SecondaryRATDataUsageReportList_t	 SecondaryRATDataUsageReportList;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABReleaseResponseIEs_t;
typedef struct E_RABReleaseIndicationIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct E_RABReleaseIndicationIEs__value {
		E_RABReleaseIndicationIEs__value_PR present;
		union E_RABReleaseIndicationIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			E_RABList_t	 E_RABList;
			UserLocationInformation_t	 UserLocationInformation;
			SecondaryRATDataUsageReportList_t	 SecondaryRATDataUsageReportList;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABReleaseIndicationIEs_t;
typedef struct InitialContextSetupRequestIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct InitialContextSetupRequestIEs__value {
		InitialContextSetupRequestIEs__value_PR present;
		union InitialContextSetupRequestIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			UEAggregateMaximumBitrate_t	 UEAggregateMaximumBitrate;
			E_RABToBeSetupListCtxtSUReq_t	 E_RABToBeSetupListCtxtSUReq;
			UESecurityCapabilities_t	 UESecurityCapabilities;
			SecurityKey_t	 SecurityKey;
			TraceActivation_t	 TraceActivation;
			HandoverRestrictionList_t	 HandoverRestrictionList;
			UERadioCapability_t	 UERadioCapability;
			SubscriberProfileIDforRFP_t	 SubscriberProfileIDforRFP;
			CSFallbackIndicator_t	 CSFallbackIndicator;
			SRVCCOperationPossible_t	 SRVCCOperationPossible;
			CSGMembershipStatus_t	 CSGMembershipStatus;
			LAI_t	 LAI;
			GUMMEI_t	 GUMMEI;
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID_1;
			ManagementBasedMDTAllowed_t	 ManagementBasedMDTAllowed;
			MDTPLMNList_t	 MDTPLMNList;
			AdditionalCSFallbackIndicator_t	 AdditionalCSFallbackIndicator;
			Masked_IMEISV_t	 Masked_IMEISV;
			ExpectedUEBehaviour_t	 ExpectedUEBehaviour;
			ProSeAuthorized_t	 ProSeAuthorized;
			UEUserPlaneCIoTSupportIndicator_t	 UEUserPlaneCIoTSupportIndicator;
			V2XServicesAuthorized_t	 V2XServicesAuthorized;
			UESidelinkAggregateMaximumBitrate_t	 UESidelinkAggregateMaximumBitrate;
			EnhancedCoverageRestricted_t	 EnhancedCoverageRestricted;
			NRUESecurityCapabilities_t	 NRUESecurityCapabilities;
			CE_ModeBRestricted_t	 CE_ModeBRestricted;
			AerialUEsubscriptionInformation_t	 AerialUEsubscriptionInformation;
			PendingDataIndication_t	 PendingDataIndication;
			Subscription_Based_UE_DifferentiationInfo_t	 Subscription_Based_UE_DifferentiationInfo;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} InitialContextSetupRequestIEs_t;
typedef struct InitialContextSetupResponseIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct InitialContextSetupResponseIEs__value {
		InitialContextSetupResponseIEs__value_PR present;
		union InitialContextSetupResponseIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			E_RABSetupListCtxtSURes_t	 E_RABSetupListCtxtSURes;
			E_RABList_t	 E_RABList;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} InitialContextSetupResponseIEs_t;
typedef struct InitialContextSetupFailureIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct InitialContextSetupFailureIEs__value {
		InitialContextSetupFailureIEs__value_PR present;
		union InitialContextSetupFailureIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			Cause_t	 Cause;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} InitialContextSetupFailureIEs_t;
typedef struct PagingIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct PagingIEs__value {
		PagingIEs__value_PR present;
		union PagingIEs__value_u {
			UEIdentityIndexValue_t	 UEIdentityIndexValue;
			UEPagingID_t	 UEPagingID;
			PagingDRX_t	 PagingDRX;
			CNDomain_t	 CNDomain;
			TAIList_t	 TAIList;
			CSG_IdList_t	 CSG_IdList;
			PagingPriority_t	 PagingPriority;
			UERadioCapabilityForPaging_t	 UERadioCapabilityForPaging;
			AssistanceDataForPaging_t	 AssistanceDataForPaging;
			Paging_eDRXInformation_t	 Paging_eDRXInformation;
			Extended_UEIdentityIndexValue_t	 Extended_UEIdentityIndexValue;
			NB_IoT_Paging_eDRXInformation_t	 NB_IoT_Paging_eDRXInformation;
			NB_IoT_UEIdentityIndexValue_t	 NB_IoT_UEIdentityIndexValue;
			EnhancedCoverageRestricted_t	 EnhancedCoverageRestricted;
			CE_ModeBRestricted_t	 CE_ModeBRestricted;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} PagingIEs_t;
typedef struct UEContextReleaseRequest_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct UEContextReleaseRequest_IEs__value {
		UEContextReleaseRequest_IEs__value_PR present;
		union UEContextReleaseRequest_IEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			Cause_t	 Cause;
			GWContextReleaseIndication_t	 GWContextReleaseIndication;
			SecondaryRATDataUsageReportList_t	 SecondaryRATDataUsageReportList;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UEContextReleaseRequest_IEs_t;
typedef struct UEContextReleaseCommand_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct UEContextReleaseCommand_IEs__value {
		UEContextReleaseCommand_IEs__value_PR present;
		union UEContextReleaseCommand_IEs__value_u {
			UE_S1AP_IDs_t	 UE_S1AP_IDs;
			Cause_t	 Cause;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UEContextReleaseCommand_IEs_t;
typedef struct UEContextReleaseComplete_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct UEContextReleaseComplete_IEs__value {
		UEContextReleaseComplete_IEs__value_PR present;
		union UEContextReleaseComplete_IEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
			UserLocationInformation_t	 UserLocationInformation;
			InformationOnRecommendedCellsAndENBsForPaging_t	 InformationOnRecommendedCellsAndENBsForPaging;
			CellIdentifierAndCELevelForCECapableUEs_t	 CellIdentifierAndCELevelForCECapableUEs;
			SecondaryRATDataUsageReportList_t	 SecondaryRATDataUsageReportList;
			TimeSinceSecondaryNodeRelease_t	 TimeSinceSecondaryNodeRelease;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UEContextReleaseComplete_IEs_t;
typedef struct UEContextModificationRequestIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct UEContextModificationRequestIEs__value {
		UEContextModificationRequestIEs__value_PR present;
		union UEContextModificationRequestIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			SecurityKey_t	 SecurityKey;
			SubscriberProfileIDforRFP_t	 SubscriberProfileIDforRFP;
			UEAggregateMaximumBitrate_t	 UEAggregateMaximumBitrate;
			CSFallbackIndicator_t	 CSFallbackIndicator;
			UESecurityCapabilities_t	 UESecurityCapabilities;
			CSGMembershipStatus_t	 CSGMembershipStatus;
			LAI_t	 LAI;
			AdditionalCSFallbackIndicator_t	 AdditionalCSFallbackIndicator;
			ProSeAuthorized_t	 ProSeAuthorized;
			SRVCCOperationPossible_t	 SRVCCOperationPossible;
			SRVCCOperationNotPossible_t	 SRVCCOperationNotPossible;
			V2XServicesAuthorized_t	 V2XServicesAuthorized;
			UESidelinkAggregateMaximumBitrate_t	 UESidelinkAggregateMaximumBitrate;
			NRUESecurityCapabilities_t	 NRUESecurityCapabilities;
			AerialUEsubscriptionInformation_t	 AerialUEsubscriptionInformation;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UEContextModificationRequestIEs_t;
typedef struct UEContextModificationResponseIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct UEContextModificationResponseIEs__value {
		UEContextModificationResponseIEs__value_PR present;
		union UEContextModificationResponseIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UEContextModificationResponseIEs_t;
typedef struct UEContextModificationFailureIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct UEContextModificationFailureIEs__value {
		UEContextModificationFailureIEs__value_PR present;
		union UEContextModificationFailureIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			Cause_t	 Cause;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UEContextModificationFailureIEs_t;
typedef struct UERadioCapabilityMatchRequestIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct UERadioCapabilityMatchRequestIEs__value {
		UERadioCapabilityMatchRequestIEs__value_PR present;
		union UERadioCapabilityMatchRequestIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			UERadioCapability_t	 UERadioCapability;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UERadioCapabilityMatchRequestIEs_t;
typedef struct UERadioCapabilityMatchResponseIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct UERadioCapabilityMatchResponseIEs__value {
		UERadioCapabilityMatchResponseIEs__value_PR present;
		union UERadioCapabilityMatchResponseIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			VoiceSupportMatchIndicator_t	 VoiceSupportMatchIndicator;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UERadioCapabilityMatchResponseIEs_t;
typedef struct DownlinkNASTransport_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct DownlinkNASTransport_IEs__value {
		DownlinkNASTransport_IEs__value_PR present;
		union DownlinkNASTransport_IEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			NAS_PDU_t	 NAS_PDU;
			HandoverRestrictionList_t	 HandoverRestrictionList;
			SubscriberProfileIDforRFP_t	 SubscriberProfileIDforRFP;
			SRVCCOperationPossible_t	 SRVCCOperationPossible;
			UERadioCapability_t	 UERadioCapability;
			DLNASPDUDeliveryAckRequest_t	 DLNASPDUDeliveryAckRequest;
			EnhancedCoverageRestricted_t	 EnhancedCoverageRestricted;
			NRUESecurityCapabilities_t	 NRUESecurityCapabilities;
			CE_ModeBRestricted_t	 CE_ModeBRestricted;
			UECapabilityInfoRequest_t	 UECapabilityInfoRequest;
			EndIndication_t	 EndIndication;
			PendingDataIndication_t	 PendingDataIndication;
			Subscription_Based_UE_DifferentiationInfo_t	 Subscription_Based_UE_DifferentiationInfo;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} DownlinkNASTransport_IEs_t;
typedef struct InitialUEMessage_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct InitialUEMessage_IEs__value {
		InitialUEMessage_IEs__value_PR present;
		union InitialUEMessage_IEs__value_u {
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			NAS_PDU_t	 NAS_PDU;
			TAI_t	 TAI;
			EUTRAN_CGI_t	 EUTRAN_CGI;
			RRC_Establishment_Cause_t	 RRC_Establishment_Cause;
			S_TMSI_t	 S_TMSI;
			CSG_Id_t	 CSG_Id;
			GUMMEI_t	 GUMMEI;
			CellAccessMode_t	 CellAccessMode;
			TransportLayerAddress_t	 TransportLayerAddress;
			RelayNode_Indicator_t	 RelayNode_Indicator;
			GUMMEIType_t	 GUMMEIType;
			TunnelInformation_t	 TunnelInformation;
			TransportLayerAddress_t	 TransportLayerAddress_1;
			LHN_ID_t	 LHN_ID;
			MME_Group_ID_t	 MME_Group_ID;
			UE_Usage_Type_t	 UE_Usage_Type;
			CE_mode_B_SupportIndicator_t	 CE_mode_B_SupportIndicator;
			DCN_ID_t	 DCN_ID;
			Coverage_Level_t	 Coverage_Level;
			UE_Application_Layer_Measurement_Capability_t	 UE_Application_Layer_Measurement_Capability;
			EDT_Session_t	 EDT_Session;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} InitialUEMessage_IEs_t;
typedef struct UplinkNASTransport_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct UplinkNASTransport_IEs__value {
		UplinkNASTransport_IEs__value_PR present;
		union UplinkNASTransport_IEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			NAS_PDU_t	 NAS_PDU;
			EUTRAN_CGI_t	 EUTRAN_CGI;
			TAI_t	 TAI;
			TransportLayerAddress_t	 TransportLayerAddress;
			TransportLayerAddress_t	 TransportLayerAddress_1;
			LHN_ID_t	 LHN_ID;
			PSCellInformation_t	 PSCellInformation;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UplinkNASTransport_IEs_t;
typedef struct NASNonDeliveryIndication_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct NASNonDeliveryIndication_IEs__value {
		NASNonDeliveryIndication_IEs__value_PR present;
		union NASNonDeliveryIndication_IEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			NAS_PDU_t	 NAS_PDU;
			Cause_t	 Cause;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} NASNonDeliveryIndication_IEs_t;
typedef struct RerouteNASRequest_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct RerouteNASRequest_IEs__value {
		RerouteNASRequest_IEs__value_PR present;
		union RerouteNASRequest_IEs__value_u {
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			OCTET_STRING_t	 OCTET_STRING;
			MME_Group_ID_t	 MME_Group_ID;
			Additional_GUTI_t	 Additional_GUTI;
			UE_Usage_Type_t	 UE_Usage_Type;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RerouteNASRequest_IEs_t;
typedef struct NASDeliveryIndicationIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct NASDeliveryIndicationIEs__value {
		NASDeliveryIndicationIEs__value_PR present;
		union NASDeliveryIndicationIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} NASDeliveryIndicationIEs_t;
typedef struct ResetIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ResetIEs__value {
		ResetIEs__value_PR present;
		union ResetIEs__value_u {
			Cause_t	 Cause;
			ResetType_t	 ResetType;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ResetIEs_t;
typedef struct ResetAcknowledgeIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ResetAcknowledgeIEs__value {
		ResetAcknowledgeIEs__value_PR present;
		union ResetAcknowledgeIEs__value_u {
			UE_associatedLogicalS1_ConnectionListResAck_t	 UE_associatedLogicalS1_ConnectionListResAck;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ResetAcknowledgeIEs_t;
typedef struct ErrorIndicationIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ErrorIndicationIEs__value {
		ErrorIndicationIEs__value_PR present;
		union ErrorIndicationIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			Cause_t	 Cause;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ErrorIndicationIEs_t;
typedef struct S1SetupRequestIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct S1SetupRequestIEs__value {
		S1SetupRequestIEs__value_PR present;
		union S1SetupRequestIEs__value_u {
			Global_ENB_ID_t	 Global_ENB_ID;
			ENBname_t	 ENBname;
			SupportedTAs_t	 SupportedTAs;
			PagingDRX_t	 PagingDRX;
			CSG_IdList_t	 CSG_IdList;
			UE_RetentionInformation_t	 UE_RetentionInformation;
			NB_IoT_DefaultPagingDRX_t	 NB_IoT_DefaultPagingDRX;
			ConnectedengNBList_t	 ConnectedengNBList;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} S1SetupRequestIEs_t;
typedef struct S1SetupResponseIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct S1SetupResponseIEs__value {
		S1SetupResponseIEs__value_PR present;
		union S1SetupResponseIEs__value_u {
			MMEname_t	 MMEname;
			ServedGUMMEIs_t	 ServedGUMMEIs;
			RelativeMMECapacity_t	 RelativeMMECapacity;
			MMERelaySupportIndicator_t	 MMERelaySupportIndicator;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
			UE_RetentionInformation_t	 UE_RetentionInformation;
			ServedDCNs_t	 ServedDCNs;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} S1SetupResponseIEs_t;
typedef struct S1SetupFailureIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct S1SetupFailureIEs__value {
		S1SetupFailureIEs__value_PR present;
		union S1SetupFailureIEs__value_u {
			Cause_t	 Cause;
			TimeToWait_t	 TimeToWait;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} S1SetupFailureIEs_t;
typedef struct ENBConfigurationUpdateIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ENBConfigurationUpdateIEs__value {
		ENBConfigurationUpdateIEs__value_PR present;
		union ENBConfigurationUpdateIEs__value_u {
			ENBname_t	 ENBname;
			SupportedTAs_t	 SupportedTAs;
			CSG_IdList_t	 CSG_IdList;
			PagingDRX_t	 PagingDRX;
			NB_IoT_DefaultPagingDRX_t	 NB_IoT_DefaultPagingDRX;
			ConnectedengNBList_t	 ConnectedengNBList;
			ConnectedengNBList_t	 ConnectedengNBList_1;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ENBConfigurationUpdateIEs_t;
typedef struct ENBConfigurationUpdateAcknowledgeIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ENBConfigurationUpdateAcknowledgeIEs__value {
		ENBConfigurationUpdateAcknowledgeIEs__value_PR present;
		union ENBConfigurationUpdateAcknowledgeIEs__value_u {
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ENBConfigurationUpdateAcknowledgeIEs_t;
typedef struct ENBConfigurationUpdateFailureIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ENBConfigurationUpdateFailureIEs__value {
		ENBConfigurationUpdateFailureIEs__value_PR present;
		union ENBConfigurationUpdateFailureIEs__value_u {
			Cause_t	 Cause;
			TimeToWait_t	 TimeToWait;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ENBConfigurationUpdateFailureIEs_t;
typedef struct MMEConfigurationUpdateIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct MMEConfigurationUpdateIEs__value {
		MMEConfigurationUpdateIEs__value_PR present;
		union MMEConfigurationUpdateIEs__value_u {
			MMEname_t	 MMEname;
			ServedGUMMEIs_t	 ServedGUMMEIs;
			RelativeMMECapacity_t	 RelativeMMECapacity;
			ServedDCNs_t	 ServedDCNs;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} MMEConfigurationUpdateIEs_t;
typedef struct MMEConfigurationUpdateAcknowledgeIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct MMEConfigurationUpdateAcknowledgeIEs__value {
		MMEConfigurationUpdateAcknowledgeIEs__value_PR present;
		union MMEConfigurationUpdateAcknowledgeIEs__value_u {
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} MMEConfigurationUpdateAcknowledgeIEs_t;
typedef struct MMEConfigurationUpdateFailureIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct MMEConfigurationUpdateFailureIEs__value {
		MMEConfigurationUpdateFailureIEs__value_PR present;
		union MMEConfigurationUpdateFailureIEs__value_u {
			Cause_t	 Cause;
			TimeToWait_t	 TimeToWait;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} MMEConfigurationUpdateFailureIEs_t;
typedef struct DownlinkS1cdma2000tunnellingIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct DownlinkS1cdma2000tunnellingIEs__value {
		DownlinkS1cdma2000tunnellingIEs__value_PR present;
		union DownlinkS1cdma2000tunnellingIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			E_RABSubjecttoDataForwardingList_t	 E_RABSubjecttoDataForwardingList;
			Cdma2000HOStatus_t	 Cdma2000HOStatus;
			Cdma2000RATType_t	 Cdma2000RATType;
			Cdma2000PDU_t	 Cdma2000PDU;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} DownlinkS1cdma2000tunnellingIEs_t;
typedef struct UplinkS1cdma2000tunnellingIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct UplinkS1cdma2000tunnellingIEs__value {
		UplinkS1cdma2000tunnellingIEs__value_PR present;
		union UplinkS1cdma2000tunnellingIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			Cdma2000RATType_t	 Cdma2000RATType;
			Cdma2000SectorID_t	 Cdma2000SectorID;
			Cdma2000HORequiredIndication_t	 Cdma2000HORequiredIndication;
			Cdma2000OneXSRVCCInfo_t	 Cdma2000OneXSRVCCInfo;
			Cdma2000OneXRAND_t	 Cdma2000OneXRAND;
			Cdma2000PDU_t	 Cdma2000PDU;
			EUTRANRoundTripDelayEstimationInfo_t	 EUTRANRoundTripDelayEstimationInfo;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UplinkS1cdma2000tunnellingIEs_t;
typedef struct UECapabilityInfoIndicationIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct UECapabilityInfoIndicationIEs__value {
		UECapabilityInfoIndicationIEs__value_PR present;
		union UECapabilityInfoIndicationIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			UERadioCapability_t	 UERadioCapability;
			UERadioCapabilityForPaging_t	 UERadioCapabilityForPaging;
			UE_Application_Layer_Measurement_Capability_t	 UE_Application_Layer_Measurement_Capability;
			LTE_M_Indication_t	 LTE_M_Indication;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UECapabilityInfoIndicationIEs_t;
typedef struct ENBStatusTransferIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ENBStatusTransferIEs__value {
		ENBStatusTransferIEs__value_PR present;
		union ENBStatusTransferIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			ENB_StatusTransfer_TransparentContainer_t	 ENB_StatusTransfer_TransparentContainer;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ENBStatusTransferIEs_t;
typedef struct MMEStatusTransferIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct MMEStatusTransferIEs__value {
		MMEStatusTransferIEs__value_PR present;
		union MMEStatusTransferIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			ENB_StatusTransfer_TransparentContainer_t	 ENB_StatusTransfer_TransparentContainer;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} MMEStatusTransferIEs_t;
typedef struct TraceStartIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct TraceStartIEs__value {
		TraceStartIEs__value_PR present;
		union TraceStartIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			TraceActivation_t	 TraceActivation;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} TraceStartIEs_t;
typedef struct TraceFailureIndicationIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct TraceFailureIndicationIEs__value {
		TraceFailureIndicationIEs__value_PR present;
		union TraceFailureIndicationIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			E_UTRAN_Trace_ID_t	 E_UTRAN_Trace_ID;
			Cause_t	 Cause;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} TraceFailureIndicationIEs_t;
typedef struct DeactivateTraceIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct DeactivateTraceIEs__value {
		DeactivateTraceIEs__value_PR present;
		union DeactivateTraceIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			E_UTRAN_Trace_ID_t	 E_UTRAN_Trace_ID;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} DeactivateTraceIEs_t;
typedef struct CellTrafficTraceIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct CellTrafficTraceIEs__value {
		CellTrafficTraceIEs__value_PR present;
		union CellTrafficTraceIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			E_UTRAN_Trace_ID_t	 E_UTRAN_Trace_ID;
			EUTRAN_CGI_t	 EUTRAN_CGI;
			TransportLayerAddress_t	 TransportLayerAddress;
			PrivacyIndicator_t	 PrivacyIndicator;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CellTrafficTraceIEs_t;
typedef struct LocationReportingControlIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct LocationReportingControlIEs__value {
		LocationReportingControlIEs__value_PR present;
		union LocationReportingControlIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			RequestType_t	 RequestType;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} LocationReportingControlIEs_t;
typedef struct LocationReportingFailureIndicationIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct LocationReportingFailureIndicationIEs__value {
		LocationReportingFailureIndicationIEs__value_PR present;
		union LocationReportingFailureIndicationIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			Cause_t	 Cause;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} LocationReportingFailureIndicationIEs_t;
typedef struct LocationReportIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct LocationReportIEs__value {
		LocationReportIEs__value_PR present;
		union LocationReportIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			EUTRAN_CGI_t	 EUTRAN_CGI;
			TAI_t	 TAI;
			RequestType_t	 RequestType;
			PSCellInformation_t	 PSCellInformation;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} LocationReportIEs_t;
typedef struct OverloadStartIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct OverloadStartIEs__value {
		OverloadStartIEs__value_PR present;
		union OverloadStartIEs__value_u {
			OverloadResponse_t	 OverloadResponse;
			GUMMEIList_t	 GUMMEIList;
			TrafficLoadReductionIndication_t	 TrafficLoadReductionIndication;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} OverloadStartIEs_t;
typedef struct OverloadStopIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct OverloadStopIEs__value {
		OverloadStopIEs__value_PR present;
		union OverloadStopIEs__value_u {
			GUMMEIList_t	 GUMMEIList;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} OverloadStopIEs_t;
typedef struct WriteReplaceWarningRequestIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct WriteReplaceWarningRequestIEs__value {
		WriteReplaceWarningRequestIEs__value_PR present;
		union WriteReplaceWarningRequestIEs__value_u {
			MessageIdentifier_t	 MessageIdentifier;
			SerialNumber_t	 SerialNumber;
			WarningAreaList_t	 WarningAreaList;
			RepetitionPeriod_t	 RepetitionPeriod;
			ExtendedRepetitionPeriod_t	 ExtendedRepetitionPeriod;
			NumberofBroadcastRequest_t	 NumberofBroadcastRequest;
			WarningType_t	 WarningType;
			WarningSecurityInfo_t	 WarningSecurityInfo;
			DataCodingScheme_t	 DataCodingScheme;
			WarningMessageContents_t	 WarningMessageContents;
			ConcurrentWarningMessageIndicator_t	 ConcurrentWarningMessageIndicator;
			WarningAreaCoordinates_t	 WarningAreaCoordinates;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} WriteReplaceWarningRequestIEs_t;
typedef struct WriteReplaceWarningResponseIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct WriteReplaceWarningResponseIEs__value {
		WriteReplaceWarningResponseIEs__value_PR present;
		union WriteReplaceWarningResponseIEs__value_u {
			MessageIdentifier_t	 MessageIdentifier;
			SerialNumber_t	 SerialNumber;
			BroadcastCompletedAreaList_t	 BroadcastCompletedAreaList;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} WriteReplaceWarningResponseIEs_t;
typedef struct ENBDirectInformationTransferIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ENBDirectInformationTransferIEs__value {
		ENBDirectInformationTransferIEs__value_PR present;
		union ENBDirectInformationTransferIEs__value_u {
			Inter_SystemInformationTransferType_t	 Inter_SystemInformationTransferType;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ENBDirectInformationTransferIEs_t;
typedef struct MMEDirectInformationTransferIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct MMEDirectInformationTransferIEs__value {
		MMEDirectInformationTransferIEs__value_PR present;
		union MMEDirectInformationTransferIEs__value_u {
			Inter_SystemInformationTransferType_t	 Inter_SystemInformationTransferType;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} MMEDirectInformationTransferIEs_t;
typedef struct ENBConfigurationTransferIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ENBConfigurationTransferIEs__value {
		ENBConfigurationTransferIEs__value_PR present;
		union ENBConfigurationTransferIEs__value_u {
			SONConfigurationTransfer_t	 SONConfigurationTransfer;
			EN_DCSONConfigurationTransfer_t	 EN_DCSONConfigurationTransfer;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ENBConfigurationTransferIEs_t;
typedef struct MMEConfigurationTransferIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct MMEConfigurationTransferIEs__value {
		MMEConfigurationTransferIEs__value_PR present;
		union MMEConfigurationTransferIEs__value_u {
			SONConfigurationTransfer_t	 SONConfigurationTransfer;
			EN_DCSONConfigurationTransfer_t	 EN_DCSONConfigurationTransfer;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} MMEConfigurationTransferIEs_t;
typedef struct KillRequestIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct KillRequestIEs__value {
		KillRequestIEs__value_PR present;
		union KillRequestIEs__value_u {
			MessageIdentifier_t	 MessageIdentifier;
			SerialNumber_t	 SerialNumber;
			WarningAreaList_t	 WarningAreaList;
			KillAllWarningMessages_t	 KillAllWarningMessages;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} KillRequestIEs_t;
typedef struct KillResponseIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct KillResponseIEs__value {
		KillResponseIEs__value_PR present;
		union KillResponseIEs__value_u {
			MessageIdentifier_t	 MessageIdentifier;
			SerialNumber_t	 SerialNumber;
			BroadcastCancelledAreaList_t	 BroadcastCancelledAreaList;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} KillResponseIEs_t;
typedef struct PWSRestartIndicationIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct PWSRestartIndicationIEs__value {
		PWSRestartIndicationIEs__value_PR present;
		union PWSRestartIndicationIEs__value_u {
			ECGIListForRestart_t	 ECGIListForRestart;
			Global_ENB_ID_t	 Global_ENB_ID;
			TAIListForRestart_t	 TAIListForRestart;
			EmergencyAreaIDListForRestart_t	 EmergencyAreaIDListForRestart;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} PWSRestartIndicationIEs_t;
typedef struct PWSFailureIndicationIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct PWSFailureIndicationIEs__value {
		PWSFailureIndicationIEs__value_PR present;
		union PWSFailureIndicationIEs__value_u {
			PWSfailedECGIList_t	 PWSfailedECGIList;
			Global_ENB_ID_t	 Global_ENB_ID;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} PWSFailureIndicationIEs_t;
typedef struct DownlinkUEAssociatedLPPaTransport_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct DownlinkUEAssociatedLPPaTransport_IEs__value {
		DownlinkUEAssociatedLPPaTransport_IEs__value_PR present;
		union DownlinkUEAssociatedLPPaTransport_IEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			Routing_ID_t	 Routing_ID;
			LPPa_PDU_t	 LPPa_PDU;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} DownlinkUEAssociatedLPPaTransport_IEs_t;
typedef struct UplinkUEAssociatedLPPaTransport_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct UplinkUEAssociatedLPPaTransport_IEs__value {
		UplinkUEAssociatedLPPaTransport_IEs__value_PR present;
		union UplinkUEAssociatedLPPaTransport_IEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			Routing_ID_t	 Routing_ID;
			LPPa_PDU_t	 LPPa_PDU;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UplinkUEAssociatedLPPaTransport_IEs_t;
typedef struct DownlinkNonUEAssociatedLPPaTransport_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct DownlinkNonUEAssociatedLPPaTransport_IEs__value {
		DownlinkNonUEAssociatedLPPaTransport_IEs__value_PR present;
		union DownlinkNonUEAssociatedLPPaTransport_IEs__value_u {
			Routing_ID_t	 Routing_ID;
			LPPa_PDU_t	 LPPa_PDU;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} DownlinkNonUEAssociatedLPPaTransport_IEs_t;
typedef struct UplinkNonUEAssociatedLPPaTransport_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct UplinkNonUEAssociatedLPPaTransport_IEs__value {
		UplinkNonUEAssociatedLPPaTransport_IEs__value_PR present;
		union UplinkNonUEAssociatedLPPaTransport_IEs__value_u {
			Routing_ID_t	 Routing_ID;
			LPPa_PDU_t	 LPPa_PDU;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UplinkNonUEAssociatedLPPaTransport_IEs_t;
typedef struct E_RABModificationIndicationIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct E_RABModificationIndicationIEs__value {
		E_RABModificationIndicationIEs__value_PR present;
		union E_RABModificationIndicationIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			E_RABToBeModifiedListBearerModInd_t	 E_RABToBeModifiedListBearerModInd;
			E_RABNotToBeModifiedListBearerModInd_t	 E_RABNotToBeModifiedListBearerModInd;
			CSGMembershipInfo_t	 CSGMembershipInfo;
			TunnelInformation_t	 TunnelInformation;
			SecondaryRATDataUsageReportList_t	 SecondaryRATDataUsageReportList;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABModificationIndicationIEs_t;
typedef struct E_RABModificationConfirmIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct E_RABModificationConfirmIEs__value {
		E_RABModificationConfirmIEs__value_PR present;
		union E_RABModificationConfirmIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			E_RABModifyListBearerModConf_t	 E_RABModifyListBearerModConf;
			E_RABList_t	 E_RABList;
			E_RABList_t	 E_RABList_1;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
			CSGMembershipStatus_t	 CSGMembershipStatus;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABModificationConfirmIEs_t;
typedef struct UEContextModificationIndicationIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct UEContextModificationIndicationIEs__value {
		UEContextModificationIndicationIEs__value_PR present;
		union UEContextModificationIndicationIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			CSGMembershipInfo_t	 CSGMembershipInfo;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UEContextModificationIndicationIEs_t;
typedef struct UEContextModificationConfirmIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct UEContextModificationConfirmIEs__value {
		UEContextModificationConfirmIEs__value_PR present;
		union UEContextModificationConfirmIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			CSGMembershipStatus_t	 CSGMembershipStatus;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UEContextModificationConfirmIEs_t;
typedef struct UEContextSuspendRequestIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct UEContextSuspendRequestIEs__value {
		UEContextSuspendRequestIEs__value_PR present;
		union UEContextSuspendRequestIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			InformationOnRecommendedCellsAndENBsForPaging_t	 InformationOnRecommendedCellsAndENBsForPaging;
			CellIdentifierAndCELevelForCECapableUEs_t	 CellIdentifierAndCELevelForCECapableUEs;
			SecondaryRATDataUsageReportList_t	 SecondaryRATDataUsageReportList;
			UserLocationInformation_t	 UserLocationInformation;
			TimeSinceSecondaryNodeRelease_t	 TimeSinceSecondaryNodeRelease;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UEContextSuspendRequestIEs_t;
typedef struct UEContextSuspendResponseIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct UEContextSuspendResponseIEs__value {
		UEContextSuspendResponseIEs__value_PR present;
		union UEContextSuspendResponseIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
			SecurityContext_t	 SecurityContext;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UEContextSuspendResponseIEs_t;
typedef struct UEContextResumeRequestIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct UEContextResumeRequestIEs__value {
		UEContextResumeRequestIEs__value_PR present;
		union UEContextResumeRequestIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			E_RABFailedToResumeListResumeReq_t	 E_RABFailedToResumeListResumeReq;
			RRC_Establishment_Cause_t	 RRC_Establishment_Cause;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UEContextResumeRequestIEs_t;
typedef struct UEContextResumeResponseIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct UEContextResumeResponseIEs__value {
		UEContextResumeResponseIEs__value_PR present;
		union UEContextResumeResponseIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			E_RABFailedToResumeListResumeRes_t	 E_RABFailedToResumeListResumeRes;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
			SecurityContext_t	 SecurityContext;
			PendingDataIndication_t	 PendingDataIndication;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UEContextResumeResponseIEs_t;
typedef struct UEContextResumeFailureIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct UEContextResumeFailureIEs__value {
		UEContextResumeFailureIEs__value_PR present;
		union UEContextResumeFailureIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			Cause_t	 Cause;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UEContextResumeFailureIEs_t;
typedef struct ConnectionEstablishmentIndicationIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ConnectionEstablishmentIndicationIEs__value {
		ConnectionEstablishmentIndicationIEs__value_PR present;
		union ConnectionEstablishmentIndicationIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			UERadioCapability_t	 UERadioCapability;
			EnhancedCoverageRestricted_t	 EnhancedCoverageRestricted;
			DL_CP_SecurityInformation_t	 DL_CP_SecurityInformation;
			CE_ModeBRestricted_t	 CE_ModeBRestricted;
			EndIndication_t	 EndIndication;
			Subscription_Based_UE_DifferentiationInfo_t	 Subscription_Based_UE_DifferentiationInfo;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ConnectionEstablishmentIndicationIEs_t;
typedef struct RetrieveUEInformationIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct RetrieveUEInformationIEs__value {
		RetrieveUEInformationIEs__value_PR present;
		union RetrieveUEInformationIEs__value_u {
			S_TMSI_t	 S_TMSI;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RetrieveUEInformationIEs_t;
typedef struct UEInformationTransferIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct UEInformationTransferIEs__value {
		UEInformationTransferIEs__value_PR present;
		union UEInformationTransferIEs__value_u {
			S_TMSI_t	 S_TMSI;
			E_RABLevelQoSParameters_t	 E_RABLevelQoSParameters;
			UERadioCapability_t	 UERadioCapability;
			Subscription_Based_UE_DifferentiationInfo_t	 Subscription_Based_UE_DifferentiationInfo;
			PendingDataIndication_t	 PendingDataIndication;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UEInformationTransferIEs_t;
typedef struct ENBCPRelocationIndicationIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ENBCPRelocationIndicationIEs__value {
		ENBCPRelocationIndicationIEs__value_PR present;
		union ENBCPRelocationIndicationIEs__value_u {
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			S_TMSI_t	 S_TMSI;
			EUTRAN_CGI_t	 EUTRAN_CGI;
			TAI_t	 TAI;
			UL_CP_SecurityInformation_t	 UL_CP_SecurityInformation;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ENBCPRelocationIndicationIEs_t;
typedef struct MMECPRelocationIndicationIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct MMECPRelocationIndicationIEs__value {
		MMECPRelocationIndicationIEs__value_PR present;
		union MMECPRelocationIndicationIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} MMECPRelocationIndicationIEs_t;
typedef struct SecondaryRATDataUsageReportIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct SecondaryRATDataUsageReportIEs__value {
		SecondaryRATDataUsageReportIEs__value_PR present;
		union SecondaryRATDataUsageReportIEs__value_u {
			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
			SecondaryRATDataUsageReportList_t	 SecondaryRATDataUsageReportList;
			HandoverFlag_t	 HandoverFlag;
			UserLocationInformation_t	 UserLocationInformation;
			TimeSinceSecondaryNodeRelease_t	 TimeSinceSecondaryNodeRelease;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} SecondaryRATDataUsageReportIEs_t;
typedef struct E_RABDataForwardingItemIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct E_RABDataForwardingItemIEs__value {
		E_RABDataForwardingItemIEs__value_PR present;
		union E_RABDataForwardingItemIEs__value_u {
			E_RABDataForwardingItem_t	 E_RABDataForwardingItem;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABDataForwardingItemIEs_t;
typedef struct E_RABToBeSetupItemHOReqIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct E_RABToBeSetupItemHOReqIEs__value {
		E_RABToBeSetupItemHOReqIEs__value_PR present;
		union E_RABToBeSetupItemHOReqIEs__value_u {
			E_RABToBeSetupItemHOReq_t	 E_RABToBeSetupItemHOReq;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABToBeSetupItemHOReqIEs_t;
typedef struct E_RABAdmittedItemIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct E_RABAdmittedItemIEs__value {
		E_RABAdmittedItemIEs__value_PR present;
		union E_RABAdmittedItemIEs__value_u {
			E_RABAdmittedItem_t	 E_RABAdmittedItem;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABAdmittedItemIEs_t;
typedef struct E_RABFailedtoSetupItemHOReqAckIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct E_RABFailedtoSetupItemHOReqAckIEs__value {
		E_RABFailedtoSetupItemHOReqAckIEs__value_PR present;
		union E_RABFailedtoSetupItemHOReqAckIEs__value_u {
			E_RABFailedToSetupItemHOReqAck_t	 E_RABFailedToSetupItemHOReqAck;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABFailedtoSetupItemHOReqAckIEs_t;
typedef struct E_RABToBeSwitchedDLItemIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct E_RABToBeSwitchedDLItemIEs__value {
		E_RABToBeSwitchedDLItemIEs__value_PR present;
		union E_RABToBeSwitchedDLItemIEs__value_u {
			E_RABToBeSwitchedDLItem_t	 E_RABToBeSwitchedDLItem;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABToBeSwitchedDLItemIEs_t;
typedef struct E_RABToBeSwitchedULItemIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct E_RABToBeSwitchedULItemIEs__value {
		E_RABToBeSwitchedULItemIEs__value_PR present;
		union E_RABToBeSwitchedULItemIEs__value_u {
			E_RABToBeSwitchedULItem_t	 E_RABToBeSwitchedULItem;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABToBeSwitchedULItemIEs_t;
typedef struct E_RABToBeModifiedItemBearerModIndIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct E_RABToBeModifiedItemBearerModIndIEs__value {
		E_RABToBeModifiedItemBearerModIndIEs__value_PR present;
		union E_RABToBeModifiedItemBearerModIndIEs__value_u {
			E_RABToBeModifiedItemBearerModInd_t	 E_RABToBeModifiedItemBearerModInd;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABToBeModifiedItemBearerModIndIEs_t;
typedef struct E_RABNotToBeModifiedItemBearerModIndIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct E_RABNotToBeModifiedItemBearerModIndIEs__value {
		E_RABNotToBeModifiedItemBearerModIndIEs__value_PR present;
		union E_RABNotToBeModifiedItemBearerModIndIEs__value_u {
			E_RABNotToBeModifiedItemBearerModInd_t	 E_RABNotToBeModifiedItemBearerModInd;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABNotToBeModifiedItemBearerModIndIEs_t;
typedef struct E_RABFailedToResumeItemResumeReqIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct E_RABFailedToResumeItemResumeReqIEs__value {
		E_RABFailedToResumeItemResumeReqIEs__value_PR present;
		union E_RABFailedToResumeItemResumeReqIEs__value_u {
			E_RABFailedToResumeItemResumeReq_t	 E_RABFailedToResumeItemResumeReq;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABFailedToResumeItemResumeReqIEs_t;
typedef struct E_RABFailedToResumeItemResumeResIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct E_RABFailedToResumeItemResumeResIEs__value {
		E_RABFailedToResumeItemResumeResIEs__value_PR present;
		union E_RABFailedToResumeItemResumeResIEs__value_u {
			E_RABFailedToResumeItemResumeRes_t	 E_RABFailedToResumeItemResumeRes;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABFailedToResumeItemResumeResIEs_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_Bearers_SubjectToStatusTransfer_ItemIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_Bearers_SubjectToStatusTransfer_ItemIEs_specs_1;
extern asn_TYPE_member_t asn_MBR_Bearers_SubjectToStatusTransfer_ItemIEs_1[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABInformationListIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABInformationListIEs_specs_5;
extern asn_TYPE_member_t asn_MBR_E_RABInformationListIEs_5[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABItemIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABItemIEs_specs_9;
extern asn_TYPE_member_t asn_MBR_E_RABItemIEs_9[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABUsageReportItemIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABUsageReportItemIEs_specs_13;
extern asn_TYPE_member_t asn_MBR_E_RABUsageReportItemIEs_13[3];
extern asn_TYPE_descriptor_t asn_DEF_MDTMode_ExtensionIE;
extern asn_SEQUENCE_specifics_t asn_SPC_MDTMode_ExtensionIE_specs_17;
extern asn_TYPE_member_t asn_MBR_MDTMode_ExtensionIE_17[3];
extern asn_TYPE_descriptor_t asn_DEF_RecommendedCellItemIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RecommendedCellItemIEs_specs_21;
extern asn_TYPE_member_t asn_MBR_RecommendedCellItemIEs_21[3];
extern asn_TYPE_descriptor_t asn_DEF_RecommendedENBItemIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RecommendedENBItemIEs_specs_25;
extern asn_TYPE_member_t asn_MBR_RecommendedENBItemIEs_25[3];
extern asn_TYPE_descriptor_t asn_DEF_SecondaryRATDataUsageReportItemIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_SecondaryRATDataUsageReportItemIEs_specs_29;
extern asn_TYPE_member_t asn_MBR_SecondaryRATDataUsageReportItemIEs_29[3];
extern asn_TYPE_descriptor_t asn_DEF_SONInformation_ExtensionIE;
extern asn_SEQUENCE_specifics_t asn_SPC_SONInformation_ExtensionIE_specs_33;
extern asn_TYPE_member_t asn_MBR_SONInformation_ExtensionIE_33[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABToBeSetupItemBearerSUReqIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABToBeSetupItemBearerSUReqIEs_specs_37;
extern asn_TYPE_member_t asn_MBR_E_RABToBeSetupItemBearerSUReqIEs_37[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABSetupItemBearerSUResIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABSetupItemBearerSUResIEs_specs_41;
extern asn_TYPE_member_t asn_MBR_E_RABSetupItemBearerSUResIEs_41[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABToBeModifiedItemBearerModReqIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABToBeModifiedItemBearerModReqIEs_specs_45;
extern asn_TYPE_member_t asn_MBR_E_RABToBeModifiedItemBearerModReqIEs_45[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABModifyItemBearerModResIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABModifyItemBearerModResIEs_specs_49;
extern asn_TYPE_member_t asn_MBR_E_RABModifyItemBearerModResIEs_49[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABReleaseItemBearerRelCompIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABReleaseItemBearerRelCompIEs_specs_53;
extern asn_TYPE_member_t asn_MBR_E_RABReleaseItemBearerRelCompIEs_53[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABToBeSetupItemCtxtSUReqIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABToBeSetupItemCtxtSUReqIEs_specs_57;
extern asn_TYPE_member_t asn_MBR_E_RABToBeSetupItemCtxtSUReqIEs_57[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABSetupItemCtxtSUResIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABSetupItemCtxtSUResIEs_specs_61;
extern asn_TYPE_member_t asn_MBR_E_RABSetupItemCtxtSUResIEs_61[3];
extern asn_TYPE_descriptor_t asn_DEF_TAIItemIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_TAIItemIEs_specs_65;
extern asn_TYPE_member_t asn_MBR_TAIItemIEs_65[3];
extern asn_TYPE_descriptor_t asn_DEF_UE_associatedLogicalS1_ConnectionItemRes;
extern asn_SEQUENCE_specifics_t asn_SPC_UE_associatedLogicalS1_ConnectionItemRes_specs_69;
extern asn_TYPE_member_t asn_MBR_UE_associatedLogicalS1_ConnectionItemRes_69[3];
extern asn_TYPE_descriptor_t asn_DEF_UE_associatedLogicalS1_ConnectionItemResAck;
extern asn_SEQUENCE_specifics_t asn_SPC_UE_associatedLogicalS1_ConnectionItemResAck_specs_73;
extern asn_TYPE_member_t asn_MBR_UE_associatedLogicalS1_ConnectionItemResAck_73[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABModifyItemBearerModConfIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABModifyItemBearerModConfIEs_specs_77;
extern asn_TYPE_member_t asn_MBR_E_RABModifyItemBearerModConfIEs_77[3];
extern asn_TYPE_descriptor_t asn_DEF_HandoverRequiredIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_HandoverRequiredIEs_specs_81;
extern asn_TYPE_member_t asn_MBR_HandoverRequiredIEs_81[3];
extern asn_TYPE_descriptor_t asn_DEF_HandoverCommandIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_HandoverCommandIEs_specs_85;
extern asn_TYPE_member_t asn_MBR_HandoverCommandIEs_85[3];
extern asn_TYPE_descriptor_t asn_DEF_HandoverPreparationFailureIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_HandoverPreparationFailureIEs_specs_89;
extern asn_TYPE_member_t asn_MBR_HandoverPreparationFailureIEs_89[3];
extern asn_TYPE_descriptor_t asn_DEF_HandoverRequestIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_HandoverRequestIEs_specs_93;
extern asn_TYPE_member_t asn_MBR_HandoverRequestIEs_93[3];
extern asn_TYPE_descriptor_t asn_DEF_HandoverRequestAcknowledgeIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_HandoverRequestAcknowledgeIEs_specs_97;
extern asn_TYPE_member_t asn_MBR_HandoverRequestAcknowledgeIEs_97[3];
extern asn_TYPE_descriptor_t asn_DEF_HandoverFailureIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_HandoverFailureIEs_specs_101;
extern asn_TYPE_member_t asn_MBR_HandoverFailureIEs_101[3];
extern asn_TYPE_descriptor_t asn_DEF_HandoverNotifyIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_HandoverNotifyIEs_specs_105;
extern asn_TYPE_member_t asn_MBR_HandoverNotifyIEs_105[3];
extern asn_TYPE_descriptor_t asn_DEF_PathSwitchRequestIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_PathSwitchRequestIEs_specs_109;
extern asn_TYPE_member_t asn_MBR_PathSwitchRequestIEs_109[3];
extern asn_TYPE_descriptor_t asn_DEF_PathSwitchRequestAcknowledgeIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_PathSwitchRequestAcknowledgeIEs_specs_113;
extern asn_TYPE_member_t asn_MBR_PathSwitchRequestAcknowledgeIEs_113[3];
extern asn_TYPE_descriptor_t asn_DEF_PathSwitchRequestFailureIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_PathSwitchRequestFailureIEs_specs_117;
extern asn_TYPE_member_t asn_MBR_PathSwitchRequestFailureIEs_117[3];
extern asn_TYPE_descriptor_t asn_DEF_HandoverCancelIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_HandoverCancelIEs_specs_121;
extern asn_TYPE_member_t asn_MBR_HandoverCancelIEs_121[3];
extern asn_TYPE_descriptor_t asn_DEF_HandoverCancelAcknowledgeIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_HandoverCancelAcknowledgeIEs_specs_125;
extern asn_TYPE_member_t asn_MBR_HandoverCancelAcknowledgeIEs_125[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABSetupRequestIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABSetupRequestIEs_specs_129;
extern asn_TYPE_member_t asn_MBR_E_RABSetupRequestIEs_129[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABSetupResponseIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABSetupResponseIEs_specs_133;
extern asn_TYPE_member_t asn_MBR_E_RABSetupResponseIEs_133[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABModifyRequestIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABModifyRequestIEs_specs_137;
extern asn_TYPE_member_t asn_MBR_E_RABModifyRequestIEs_137[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABModifyResponseIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABModifyResponseIEs_specs_141;
extern asn_TYPE_member_t asn_MBR_E_RABModifyResponseIEs_141[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABReleaseCommandIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABReleaseCommandIEs_specs_145;
extern asn_TYPE_member_t asn_MBR_E_RABReleaseCommandIEs_145[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABReleaseResponseIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABReleaseResponseIEs_specs_149;
extern asn_TYPE_member_t asn_MBR_E_RABReleaseResponseIEs_149[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABReleaseIndicationIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABReleaseIndicationIEs_specs_153;
extern asn_TYPE_member_t asn_MBR_E_RABReleaseIndicationIEs_153[3];
extern asn_TYPE_descriptor_t asn_DEF_InitialContextSetupRequestIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_InitialContextSetupRequestIEs_specs_157;
extern asn_TYPE_member_t asn_MBR_InitialContextSetupRequestIEs_157[3];
extern asn_TYPE_descriptor_t asn_DEF_InitialContextSetupResponseIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_InitialContextSetupResponseIEs_specs_161;
extern asn_TYPE_member_t asn_MBR_InitialContextSetupResponseIEs_161[3];
extern asn_TYPE_descriptor_t asn_DEF_InitialContextSetupFailureIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_InitialContextSetupFailureIEs_specs_165;
extern asn_TYPE_member_t asn_MBR_InitialContextSetupFailureIEs_165[3];
extern asn_TYPE_descriptor_t asn_DEF_PagingIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_PagingIEs_specs_169;
extern asn_TYPE_member_t asn_MBR_PagingIEs_169[3];
extern asn_TYPE_descriptor_t asn_DEF_UEContextReleaseRequest_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UEContextReleaseRequest_IEs_specs_173;
extern asn_TYPE_member_t asn_MBR_UEContextReleaseRequest_IEs_173[3];
extern asn_TYPE_descriptor_t asn_DEF_UEContextReleaseCommand_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UEContextReleaseCommand_IEs_specs_177;
extern asn_TYPE_member_t asn_MBR_UEContextReleaseCommand_IEs_177[3];
extern asn_TYPE_descriptor_t asn_DEF_UEContextReleaseComplete_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UEContextReleaseComplete_IEs_specs_181;
extern asn_TYPE_member_t asn_MBR_UEContextReleaseComplete_IEs_181[3];
extern asn_TYPE_descriptor_t asn_DEF_UEContextModificationRequestIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UEContextModificationRequestIEs_specs_185;
extern asn_TYPE_member_t asn_MBR_UEContextModificationRequestIEs_185[3];
extern asn_TYPE_descriptor_t asn_DEF_UEContextModificationResponseIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UEContextModificationResponseIEs_specs_189;
extern asn_TYPE_member_t asn_MBR_UEContextModificationResponseIEs_189[3];
extern asn_TYPE_descriptor_t asn_DEF_UEContextModificationFailureIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UEContextModificationFailureIEs_specs_193;
extern asn_TYPE_member_t asn_MBR_UEContextModificationFailureIEs_193[3];
extern asn_TYPE_descriptor_t asn_DEF_UERadioCapabilityMatchRequestIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UERadioCapabilityMatchRequestIEs_specs_197;
extern asn_TYPE_member_t asn_MBR_UERadioCapabilityMatchRequestIEs_197[3];
extern asn_TYPE_descriptor_t asn_DEF_UERadioCapabilityMatchResponseIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UERadioCapabilityMatchResponseIEs_specs_201;
extern asn_TYPE_member_t asn_MBR_UERadioCapabilityMatchResponseIEs_201[3];
extern asn_TYPE_descriptor_t asn_DEF_DownlinkNASTransport_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_DownlinkNASTransport_IEs_specs_205;
extern asn_TYPE_member_t asn_MBR_DownlinkNASTransport_IEs_205[3];
extern asn_TYPE_descriptor_t asn_DEF_InitialUEMessage_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_InitialUEMessage_IEs_specs_209;
extern asn_TYPE_member_t asn_MBR_InitialUEMessage_IEs_209[3];
extern asn_TYPE_descriptor_t asn_DEF_UplinkNASTransport_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UplinkNASTransport_IEs_specs_213;
extern asn_TYPE_member_t asn_MBR_UplinkNASTransport_IEs_213[3];
extern asn_TYPE_descriptor_t asn_DEF_NASNonDeliveryIndication_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_NASNonDeliveryIndication_IEs_specs_217;
extern asn_TYPE_member_t asn_MBR_NASNonDeliveryIndication_IEs_217[3];
extern asn_TYPE_descriptor_t asn_DEF_RerouteNASRequest_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RerouteNASRequest_IEs_specs_221;
extern asn_TYPE_member_t asn_MBR_RerouteNASRequest_IEs_221[3];
extern asn_TYPE_descriptor_t asn_DEF_NASDeliveryIndicationIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_NASDeliveryIndicationIEs_specs_225;
extern asn_TYPE_member_t asn_MBR_NASDeliveryIndicationIEs_225[3];
extern asn_TYPE_descriptor_t asn_DEF_ResetIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ResetIEs_specs_229;
extern asn_TYPE_member_t asn_MBR_ResetIEs_229[3];
extern asn_TYPE_descriptor_t asn_DEF_ResetAcknowledgeIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ResetAcknowledgeIEs_specs_233;
extern asn_TYPE_member_t asn_MBR_ResetAcknowledgeIEs_233[3];
extern asn_TYPE_descriptor_t asn_DEF_ErrorIndicationIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ErrorIndicationIEs_specs_237;
extern asn_TYPE_member_t asn_MBR_ErrorIndicationIEs_237[3];
extern asn_TYPE_descriptor_t asn_DEF_S1SetupRequestIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_S1SetupRequestIEs_specs_241;
extern asn_TYPE_member_t asn_MBR_S1SetupRequestIEs_241[3];
extern asn_TYPE_descriptor_t asn_DEF_S1SetupResponseIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_S1SetupResponseIEs_specs_245;
extern asn_TYPE_member_t asn_MBR_S1SetupResponseIEs_245[3];
extern asn_TYPE_descriptor_t asn_DEF_S1SetupFailureIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_S1SetupFailureIEs_specs_249;
extern asn_TYPE_member_t asn_MBR_S1SetupFailureIEs_249[3];
extern asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdateIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdateIEs_specs_253;
extern asn_TYPE_member_t asn_MBR_ENBConfigurationUpdateIEs_253[3];
extern asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdateAcknowledgeIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdateAcknowledgeIEs_specs_257;
extern asn_TYPE_member_t asn_MBR_ENBConfigurationUpdateAcknowledgeIEs_257[3];
extern asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdateFailureIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdateFailureIEs_specs_261;
extern asn_TYPE_member_t asn_MBR_ENBConfigurationUpdateFailureIEs_261[3];
extern asn_TYPE_descriptor_t asn_DEF_MMEConfigurationUpdateIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_MMEConfigurationUpdateIEs_specs_265;
extern asn_TYPE_member_t asn_MBR_MMEConfigurationUpdateIEs_265[3];
extern asn_TYPE_descriptor_t asn_DEF_MMEConfigurationUpdateAcknowledgeIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_MMEConfigurationUpdateAcknowledgeIEs_specs_269;
extern asn_TYPE_member_t asn_MBR_MMEConfigurationUpdateAcknowledgeIEs_269[3];
extern asn_TYPE_descriptor_t asn_DEF_MMEConfigurationUpdateFailureIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_MMEConfigurationUpdateFailureIEs_specs_273;
extern asn_TYPE_member_t asn_MBR_MMEConfigurationUpdateFailureIEs_273[3];
extern asn_TYPE_descriptor_t asn_DEF_DownlinkS1cdma2000tunnellingIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_DownlinkS1cdma2000tunnellingIEs_specs_277;
extern asn_TYPE_member_t asn_MBR_DownlinkS1cdma2000tunnellingIEs_277[3];
extern asn_TYPE_descriptor_t asn_DEF_UplinkS1cdma2000tunnellingIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UplinkS1cdma2000tunnellingIEs_specs_281;
extern asn_TYPE_member_t asn_MBR_UplinkS1cdma2000tunnellingIEs_281[3];
extern asn_TYPE_descriptor_t asn_DEF_UECapabilityInfoIndicationIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UECapabilityInfoIndicationIEs_specs_285;
extern asn_TYPE_member_t asn_MBR_UECapabilityInfoIndicationIEs_285[3];
extern asn_TYPE_descriptor_t asn_DEF_ENBStatusTransferIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ENBStatusTransferIEs_specs_289;
extern asn_TYPE_member_t asn_MBR_ENBStatusTransferIEs_289[3];
extern asn_TYPE_descriptor_t asn_DEF_MMEStatusTransferIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_MMEStatusTransferIEs_specs_293;
extern asn_TYPE_member_t asn_MBR_MMEStatusTransferIEs_293[3];
extern asn_TYPE_descriptor_t asn_DEF_TraceStartIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_TraceStartIEs_specs_297;
extern asn_TYPE_member_t asn_MBR_TraceStartIEs_297[3];
extern asn_TYPE_descriptor_t asn_DEF_TraceFailureIndicationIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_TraceFailureIndicationIEs_specs_301;
extern asn_TYPE_member_t asn_MBR_TraceFailureIndicationIEs_301[3];
extern asn_TYPE_descriptor_t asn_DEF_DeactivateTraceIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_DeactivateTraceIEs_specs_305;
extern asn_TYPE_member_t asn_MBR_DeactivateTraceIEs_305[3];
extern asn_TYPE_descriptor_t asn_DEF_CellTrafficTraceIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CellTrafficTraceIEs_specs_309;
extern asn_TYPE_member_t asn_MBR_CellTrafficTraceIEs_309[3];
extern asn_TYPE_descriptor_t asn_DEF_LocationReportingControlIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_LocationReportingControlIEs_specs_313;
extern asn_TYPE_member_t asn_MBR_LocationReportingControlIEs_313[3];
extern asn_TYPE_descriptor_t asn_DEF_LocationReportingFailureIndicationIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_LocationReportingFailureIndicationIEs_specs_317;
extern asn_TYPE_member_t asn_MBR_LocationReportingFailureIndicationIEs_317[3];
extern asn_TYPE_descriptor_t asn_DEF_LocationReportIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_LocationReportIEs_specs_321;
extern asn_TYPE_member_t asn_MBR_LocationReportIEs_321[3];
extern asn_TYPE_descriptor_t asn_DEF_OverloadStartIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_OverloadStartIEs_specs_325;
extern asn_TYPE_member_t asn_MBR_OverloadStartIEs_325[3];
extern asn_TYPE_descriptor_t asn_DEF_OverloadStopIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_OverloadStopIEs_specs_329;
extern asn_TYPE_member_t asn_MBR_OverloadStopIEs_329[3];
extern asn_TYPE_descriptor_t asn_DEF_WriteReplaceWarningRequestIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_WriteReplaceWarningRequestIEs_specs_333;
extern asn_TYPE_member_t asn_MBR_WriteReplaceWarningRequestIEs_333[3];
extern asn_TYPE_descriptor_t asn_DEF_WriteReplaceWarningResponseIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_WriteReplaceWarningResponseIEs_specs_337;
extern asn_TYPE_member_t asn_MBR_WriteReplaceWarningResponseIEs_337[3];
extern asn_TYPE_descriptor_t asn_DEF_ENBDirectInformationTransferIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ENBDirectInformationTransferIEs_specs_341;
extern asn_TYPE_member_t asn_MBR_ENBDirectInformationTransferIEs_341[3];
extern asn_TYPE_descriptor_t asn_DEF_MMEDirectInformationTransferIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_MMEDirectInformationTransferIEs_specs_345;
extern asn_TYPE_member_t asn_MBR_MMEDirectInformationTransferIEs_345[3];
extern asn_TYPE_descriptor_t asn_DEF_ENBConfigurationTransferIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationTransferIEs_specs_349;
extern asn_TYPE_member_t asn_MBR_ENBConfigurationTransferIEs_349[3];
extern asn_TYPE_descriptor_t asn_DEF_MMEConfigurationTransferIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_MMEConfigurationTransferIEs_specs_353;
extern asn_TYPE_member_t asn_MBR_MMEConfigurationTransferIEs_353[3];
extern asn_TYPE_descriptor_t asn_DEF_KillRequestIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_KillRequestIEs_specs_357;
extern asn_TYPE_member_t asn_MBR_KillRequestIEs_357[3];
extern asn_TYPE_descriptor_t asn_DEF_KillResponseIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_KillResponseIEs_specs_361;
extern asn_TYPE_member_t asn_MBR_KillResponseIEs_361[3];
extern asn_TYPE_descriptor_t asn_DEF_PWSRestartIndicationIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_PWSRestartIndicationIEs_specs_365;
extern asn_TYPE_member_t asn_MBR_PWSRestartIndicationIEs_365[3];
extern asn_TYPE_descriptor_t asn_DEF_PWSFailureIndicationIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_PWSFailureIndicationIEs_specs_369;
extern asn_TYPE_member_t asn_MBR_PWSFailureIndicationIEs_369[3];
extern asn_TYPE_descriptor_t asn_DEF_DownlinkUEAssociatedLPPaTransport_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_DownlinkUEAssociatedLPPaTransport_IEs_specs_373;
extern asn_TYPE_member_t asn_MBR_DownlinkUEAssociatedLPPaTransport_IEs_373[3];
extern asn_TYPE_descriptor_t asn_DEF_UplinkUEAssociatedLPPaTransport_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UplinkUEAssociatedLPPaTransport_IEs_specs_377;
extern asn_TYPE_member_t asn_MBR_UplinkUEAssociatedLPPaTransport_IEs_377[3];
extern asn_TYPE_descriptor_t asn_DEF_DownlinkNonUEAssociatedLPPaTransport_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_DownlinkNonUEAssociatedLPPaTransport_IEs_specs_381;
extern asn_TYPE_member_t asn_MBR_DownlinkNonUEAssociatedLPPaTransport_IEs_381[3];
extern asn_TYPE_descriptor_t asn_DEF_UplinkNonUEAssociatedLPPaTransport_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UplinkNonUEAssociatedLPPaTransport_IEs_specs_385;
extern asn_TYPE_member_t asn_MBR_UplinkNonUEAssociatedLPPaTransport_IEs_385[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABModificationIndicationIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABModificationIndicationIEs_specs_389;
extern asn_TYPE_member_t asn_MBR_E_RABModificationIndicationIEs_389[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABModificationConfirmIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABModificationConfirmIEs_specs_393;
extern asn_TYPE_member_t asn_MBR_E_RABModificationConfirmIEs_393[3];
extern asn_TYPE_descriptor_t asn_DEF_UEContextModificationIndicationIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UEContextModificationIndicationIEs_specs_397;
extern asn_TYPE_member_t asn_MBR_UEContextModificationIndicationIEs_397[3];
extern asn_TYPE_descriptor_t asn_DEF_UEContextModificationConfirmIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UEContextModificationConfirmIEs_specs_401;
extern asn_TYPE_member_t asn_MBR_UEContextModificationConfirmIEs_401[3];
extern asn_TYPE_descriptor_t asn_DEF_UEContextSuspendRequestIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UEContextSuspendRequestIEs_specs_405;
extern asn_TYPE_member_t asn_MBR_UEContextSuspendRequestIEs_405[3];
extern asn_TYPE_descriptor_t asn_DEF_UEContextSuspendResponseIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UEContextSuspendResponseIEs_specs_409;
extern asn_TYPE_member_t asn_MBR_UEContextSuspendResponseIEs_409[3];
extern asn_TYPE_descriptor_t asn_DEF_UEContextResumeRequestIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UEContextResumeRequestIEs_specs_413;
extern asn_TYPE_member_t asn_MBR_UEContextResumeRequestIEs_413[3];
extern asn_TYPE_descriptor_t asn_DEF_UEContextResumeResponseIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UEContextResumeResponseIEs_specs_417;
extern asn_TYPE_member_t asn_MBR_UEContextResumeResponseIEs_417[3];
extern asn_TYPE_descriptor_t asn_DEF_UEContextResumeFailureIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UEContextResumeFailureIEs_specs_421;
extern asn_TYPE_member_t asn_MBR_UEContextResumeFailureIEs_421[3];
extern asn_TYPE_descriptor_t asn_DEF_ConnectionEstablishmentIndicationIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ConnectionEstablishmentIndicationIEs_specs_425;
extern asn_TYPE_member_t asn_MBR_ConnectionEstablishmentIndicationIEs_425[3];
extern asn_TYPE_descriptor_t asn_DEF_RetrieveUEInformationIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RetrieveUEInformationIEs_specs_429;
extern asn_TYPE_member_t asn_MBR_RetrieveUEInformationIEs_429[3];
extern asn_TYPE_descriptor_t asn_DEF_UEInformationTransferIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UEInformationTransferIEs_specs_433;
extern asn_TYPE_member_t asn_MBR_UEInformationTransferIEs_433[3];
extern asn_TYPE_descriptor_t asn_DEF_ENBCPRelocationIndicationIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ENBCPRelocationIndicationIEs_specs_437;
extern asn_TYPE_member_t asn_MBR_ENBCPRelocationIndicationIEs_437[3];
extern asn_TYPE_descriptor_t asn_DEF_MMECPRelocationIndicationIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_MMECPRelocationIndicationIEs_specs_441;
extern asn_TYPE_member_t asn_MBR_MMECPRelocationIndicationIEs_441[3];
extern asn_TYPE_descriptor_t asn_DEF_SecondaryRATDataUsageReportIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_SecondaryRATDataUsageReportIEs_specs_445;
extern asn_TYPE_member_t asn_MBR_SecondaryRATDataUsageReportIEs_445[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABDataForwardingItemIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABDataForwardingItemIEs_specs_449;
extern asn_TYPE_member_t asn_MBR_E_RABDataForwardingItemIEs_449[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABToBeSetupItemHOReqIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABToBeSetupItemHOReqIEs_specs_453;
extern asn_TYPE_member_t asn_MBR_E_RABToBeSetupItemHOReqIEs_453[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABAdmittedItemIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABAdmittedItemIEs_specs_457;
extern asn_TYPE_member_t asn_MBR_E_RABAdmittedItemIEs_457[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABFailedtoSetupItemHOReqAckIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABFailedtoSetupItemHOReqAckIEs_specs_461;
extern asn_TYPE_member_t asn_MBR_E_RABFailedtoSetupItemHOReqAckIEs_461[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABToBeSwitchedDLItemIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABToBeSwitchedDLItemIEs_specs_465;
extern asn_TYPE_member_t asn_MBR_E_RABToBeSwitchedDLItemIEs_465[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABToBeSwitchedULItemIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABToBeSwitchedULItemIEs_specs_469;
extern asn_TYPE_member_t asn_MBR_E_RABToBeSwitchedULItemIEs_469[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABToBeModifiedItemBearerModIndIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABToBeModifiedItemBearerModIndIEs_specs_473;
extern asn_TYPE_member_t asn_MBR_E_RABToBeModifiedItemBearerModIndIEs_473[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABNotToBeModifiedItemBearerModIndIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABNotToBeModifiedItemBearerModIndIEs_specs_477;
extern asn_TYPE_member_t asn_MBR_E_RABNotToBeModifiedItemBearerModIndIEs_477[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABFailedToResumeItemResumeReqIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABFailedToResumeItemResumeReqIEs_specs_481;
extern asn_TYPE_member_t asn_MBR_E_RABFailedToResumeItemResumeReqIEs_481[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABFailedToResumeItemResumeResIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABFailedToResumeItemResumeResIEs_specs_485;
extern asn_TYPE_member_t asn_MBR_E_RABFailedToResumeItemResumeResIEs_485[3];

#ifdef __cplusplus
}
#endif

#endif	/* _ProtocolIE_Field_H_ */
#include <asn_internal.h>
