diff --git a/asn1/ranap/RANAP-CommonDataTypes.asn b/asn1/ranap/RANAP-CommonDataTypes.asn
new file mode 100644
index 0000000..7aef32d
--- /dev/null
+++ b/asn1/ranap/RANAP-CommonDataTypes.asn
@@ -0,0 +1,32 @@
+-- **************************************************************
+--
+-- Common definitions
+--
+-- **************************************************************
+
+RANAP-CommonDataTypes {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) ranap (0) version1 (1) ranap-CommonDataTypes (3) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+Criticality		::= ENUMERATED { reject, ignore, notify }
+
+Presence		::= ENUMERATED { optional, conditional, mandatory }
+
+PrivateIE-ID	::= CHOICE {
+	local			INTEGER (0..65535),
+	global			OBJECT IDENTIFIER
+}
+
+ProcedureCode		::= INTEGER (0..255)
+
+ProtocolExtensionID	::= INTEGER (0..65535)
+
+ProtocolIE-ID		::= INTEGER (0..65535)
+
+TriggeringMessage	::= ENUMERATED { initiating-message, successful-outcome, unsuccessfull-outcome, outcome }
+
+END
diff --git a/asn1/ranap/RANAP-Constants.asn b/asn1/ranap/RANAP-Constants.asn
new file mode 100644
index 0000000..9a768c9
--- /dev/null
+++ b/asn1/ranap/RANAP-Constants.asn
@@ -0,0 +1,399 @@
+-- **************************************************************
+--
+-- Constant definitions
+--
+-- **************************************************************
+
+RANAP-Constants {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) ranap (0) version1 (1) ranap-Constants (4) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- **************************************************************
+--
+-- Elementary Procedures
+--
+-- **************************************************************
+
+id-RAB-Assignment			INTEGER ::= 0
+id-Iu-Release				INTEGER ::= 1
+id-RelocationPreparation		INTEGER ::= 2
+id-RelocationResourceAllocation		INTEGER ::= 3
+id-RelocationCancel			INTEGER ::= 4
+id-SRNS-ContextTransfer			INTEGER ::= 5
+id-SecurityModeControl			INTEGER ::= 6
+id-DataVolumeReport			INTEGER ::= 7
+id-Reset				INTEGER ::= 9
+id-RAB-ReleaseRequest			INTEGER ::= 10
+id-Iu-ReleaseRequest			INTEGER ::= 11
+id-RelocationDetect			INTEGER ::= 12
+id-RelocationComplete			INTEGER ::= 13
+id-Paging				INTEGER ::= 14
+id-CommonID				INTEGER ::= 15
+id-CN-InvokeTrace			INTEGER ::= 16
+id-LocationReportingControl		INTEGER ::= 17
+id-LocationReport			INTEGER ::= 18
+id-InitialUE-Message			INTEGER ::= 19
+id-DirectTransfer			INTEGER ::= 20
+id-OverloadControl			INTEGER ::= 21
+id-ErrorIndication			INTEGER ::= 22
+id-SRNS-DataForward			INTEGER ::= 23
+id-ForwardSRNS-Context			INTEGER ::= 24
+id-privateMessage			INTEGER ::= 25
+id-CN-DeactivateTrace			INTEGER ::= 26
+id-ResetResource			INTEGER ::= 27
+id-RANAP-Relocation			INTEGER ::= 28
+id-RAB-ModifyRequest			INTEGER ::= 29
+id-LocationRelatedData			INTEGER ::= 30
+id-InformationTransfer			INTEGER ::= 31
+id-UESpecificInformation		INTEGER ::= 32
+id-UplinkInformationExchange		INTEGER ::= 33
+id-DirectInformationTransfer		INTEGER ::= 34
+id-MBMSSessionStart			INTEGER ::= 35
+id-MBMSSessionUpdate			INTEGER ::= 36
+id-MBMSSessionStop			INTEGER ::= 37
+id-MBMSUELinking			INTEGER ::= 38
+id-MBMSRegistration			INTEGER ::= 39
+id-MBMSCNDe-Registration-Procedure	INTEGER ::= 40
+id-MBMSRABEstablishmentIndication	INTEGER ::= 41
+id-MBMSRABRelease			INTEGER ::= 42
+id-enhancedRelocationComplete		INTEGER ::= 43
+id-enhancedRelocationCompleteConfirm	INTEGER ::= 44
+id-RANAPenhancedRelocation		INTEGER ::= 45
+id-SRVCCPreparation			INTEGER ::= 46
+id-UeRadioCapabilityMatch		INTEGER ::= 47
+
+
+-- **************************************************************
+--
+-- Extension constants
+--
+-- **************************************************************
+
+maxPrivateIEs 				INTEGER ::= 65535
+maxProtocolExtensions 			INTEGER ::= 65535
+maxProtocolIEs				INTEGER ::= 65535
+
+-- **************************************************************
+--
+-- Lists
+--
+-- **************************************************************
+
+maxNrOfDTs				INTEGER ::= 15
+maxNrOfErrors				INTEGER ::= 256
+maxNrOfIuSigConIds			INTEGER ::= 250
+maxNrOfPDPDirections			INTEGER ::= 2
+maxNrOfPoints				INTEGER ::= 15
+maxNrOfRABs				INTEGER ::= 256
+maxNrOfSeparateTrafficDirections	INTEGER ::= 2
+maxNrOfSRBs				INTEGER ::= 8
+maxNrOfVol				INTEGER ::= 2
+maxNrOfLevels				INTEGER ::= 256
+maxNrOfAltValues			INTEGER ::= 16
+maxNrOfPLMNsSN				INTEGER ::= 32
+maxNrOfLAs				INTEGER ::= 65536
+maxNrOfSNAs				INTEGER ::= 65536
+maxNrOfUEsToBeTraced			INTEGER ::= 64
+maxNrOfInterfaces			INTEGER ::= 16
+maxRAB-Subflows				INTEGER ::= 7
+maxRAB-SubflowCombination		INTEGER ::= 64
+maxSet					INTEGER ::= 9
+maxNrOfHSDSCHMACdFlows-1		INTEGER	::= 7
+maxnoofMulticastServicesPerUE		INTEGER ::= 128
+maxnoofMulticastServicesPerRNC		INTEGER ::= 512
+maxMBMSSA				INTEGER ::= 256
+maxMBMSRA				INTEGER ::= 65536
+maxNrOfEDCHMACdFlows-1			INTEGER ::= 7
+maxGANSSSet				INTEGER ::= 9
+maxNrOfCSGs				INTEGER ::= 256
+maxNrOfEUTRAFreqs			INTEGER ::= 8
+maxNrOfCellIds				INTEGER ::= 32
+maxNrOfRAIs				INTEGER ::= 8
+maxNrOfLAIs				INTEGER ::= 8
+maxSizeOfIMSInfo			INTEGER ::= 32
+maxnoofMDTPLMNs				INTEGER ::= 16
+
+-- **************************************************************
+--
+-- IEs
+--
+-- **************************************************************
+
+id-AreaIdentity 						INTEGER ::= 0
+id-CN-DomainIndicator 						INTEGER ::= 3
+id-Cause 							INTEGER ::= 4
+id-ChosenEncryptionAlgorithm 					INTEGER ::= 5
+id-ChosenIntegrityProtectionAlgorithm 				INTEGER ::= 6
+id-ClassmarkInformation2 					INTEGER ::= 7
+id-ClassmarkInformation3 					INTEGER ::= 8
+id-CriticalityDiagnostics 					INTEGER ::= 9
+id-DL-GTP-PDU-SequenceNumber 					INTEGER ::= 10
+id-EncryptionInformation 					INTEGER ::= 11
+id-IntegrityProtectionInformation 				INTEGER ::= 12
+id-IuTransportAssociation 					INTEGER ::= 13
+id-L3-Information 						INTEGER ::= 14
+id-LAI 								INTEGER ::= 15
+id-NAS-PDU 							INTEGER ::= 16
+id-NonSearchingIndication 					INTEGER ::= 17
+id-NumberOfSteps 						INTEGER ::= 18
+id-OMC-ID 							INTEGER ::= 19
+id-OldBSS-ToNewBSS-Information 					INTEGER ::= 20
+id-PagingAreaID 						INTEGER ::= 21
+id-PagingCause 							INTEGER ::= 22
+id-PermanentNAS-UE-ID 						INTEGER ::= 23
+id-RAB-ContextItem 						INTEGER ::= 24
+id-RAB-ContextList 						INTEGER ::= 25
+id-RAB-DataForwardingItem 					INTEGER ::= 26
+id-RAB-DataForwardingItem-SRNS-CtxReq 				INTEGER ::= 27
+id-RAB-DataForwardingList 					INTEGER ::= 28
+id-RAB-DataForwardingList-SRNS-CtxReq 				INTEGER ::= 29
+id-RAB-DataVolumeReportItem 					INTEGER ::= 30
+id-RAB-DataVolumeReportList 					INTEGER ::= 31
+id-RAB-DataVolumeReportRequestItem 				INTEGER ::= 32
+id-RAB-DataVolumeReportRequestList 				INTEGER ::= 33
+id-RAB-FailedItem 						INTEGER ::= 34
+id-RAB-FailedList 						INTEGER ::= 35
+id-RAB-ID 							INTEGER ::= 36
+id-RAB-QueuedItem 						INTEGER ::= 37
+id-RAB-QueuedList 						INTEGER ::= 38
+id-RAB-ReleaseFailedList 					INTEGER ::= 39
+id-RAB-ReleaseItem 						INTEGER ::= 40
+id-RAB-ReleaseList 						INTEGER ::= 41
+id-RAB-ReleasedItem 						INTEGER ::= 42
+id-RAB-ReleasedList 						INTEGER ::= 43
+id-RAB-ReleasedList-IuRelComp 					INTEGER ::= 44
+id-RAB-RelocationReleaseItem 					INTEGER ::= 45
+id-RAB-RelocationReleaseList 					INTEGER ::= 46
+id-RAB-SetupItem-RelocReq 					INTEGER ::= 47
+id-RAB-SetupItem-RelocReqAck 					INTEGER ::= 48
+id-RAB-SetupList-RelocReq 					INTEGER ::= 49
+id-RAB-SetupList-RelocReqAck 					INTEGER ::= 50
+id-RAB-SetupOrModifiedItem 					INTEGER ::= 51
+id-RAB-SetupOrModifiedList 					INTEGER ::= 52
+id-RAB-SetupOrModifyItem 					INTEGER ::= 53
+id-RAB-SetupOrModifyList 					INTEGER ::= 54
+id-RAC 								INTEGER ::= 55
+id-RelocationType 						INTEGER ::= 56
+id-RequestType 							INTEGER ::= 57
+id-SAI 								INTEGER ::= 58
+id-SAPI 							INTEGER ::= 59
+id-SourceID 							INTEGER ::= 60
+id-Source-ToTarget-TransparentContainer 			INTEGER ::= 61
+id-TargetID 							INTEGER ::= 62
+id-Target-ToSource-TransparentContainer 			INTEGER ::= 63
+id-TemporaryUE-ID 						INTEGER ::= 64
+id-TraceReference 						INTEGER ::= 65
+id-TraceType 							INTEGER ::= 66
+id-TransportLayerAddress 					INTEGER ::= 67
+id-TriggerID 							INTEGER ::= 68
+id-UE-ID 							INTEGER ::= 69
+id-UL-GTP-PDU-SequenceNumber 					INTEGER ::= 70
+id-RAB-FailedtoReportItem					INTEGER ::= 71
+id-RAB-FailedtoReportList 					INTEGER ::= 72
+id-KeyStatus							INTEGER ::= 75
+id-DRX-CycleLengthCoefficient 					INTEGER ::= 76
+id-IuSigConIdList						INTEGER ::= 77
+id-IuSigConIdItem						INTEGER ::= 78
+id-IuSigConId							INTEGER ::= 79
+id-DirectTransferInformationItem-RANAP-RelocInf			INTEGER ::= 80
+id-DirectTransferInformationList-RANAP-RelocInf			INTEGER ::= 81
+id-RAB-ContextItem-RANAP-RelocInf				INTEGER ::= 82
+id-RAB-ContextList-RANAP-RelocInf				INTEGER ::= 83
+id-RAB-ContextFailedtoTransferItem				INTEGER ::= 84
+id-RAB-ContextFailedtoTransferList				INTEGER ::= 85
+id-GlobalRNC-ID							INTEGER ::= 86
+id-RAB-ReleasedItem-IuRelComp					INTEGER ::= 87
+id-MessageStructure						INTEGER ::= 88
+id-Alt-RAB-Parameters						INTEGER ::= 89
+id-Ass-RAB-Parameters						INTEGER ::= 90
+id-RAB-ModifyList						INTEGER ::= 91
+id-RAB-ModifyItem						INTEGER ::= 92
+id-TypeOfError							INTEGER ::= 93
+id-BroadcastAssistanceDataDecipheringKeys			INTEGER ::= 94
+id-LocationRelatedDataRequestType				INTEGER ::= 95
+id-GlobalCN-ID							INTEGER ::= 96
+id-LastKnownServiceArea						INTEGER ::= 97
+id-SRB-TrCH-Mapping						INTEGER ::= 98
+id-InterSystemInformation-TransparentContainer			INTEGER ::= 99
+id-NewBSS-To-OldBSS-Information			 		INTEGER ::= 100
+id-SourceRNC-PDCP-context-info					INTEGER ::= 103
+id-InformationTransferID					INTEGER ::= 104
+id-SNA-Access-Information					INTEGER ::= 105
+id-ProvidedData							INTEGER ::= 106
+id-GERAN-BSC-Container						INTEGER ::= 107
+id-GERAN-Classmark						INTEGER ::= 108
+id-GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item		INTEGER ::= 109
+id-GERAN-Iumode-RAB-FailedList-RABAssgntResponse		INTEGER ::= 110
+id-VerticalAccuracyCode						INTEGER ::= 111
+id-ResponseTime							INTEGER ::= 112
+id-PositioningPriority						INTEGER ::= 113
+id-ClientType							INTEGER ::= 114
+id-LocationRelatedDataRequestTypeSpecificToGERANIuMode		INTEGER ::= 115
+id-SignallingIndication						INTEGER ::= 116
+id-hS-DSCH-MAC-d-Flow-ID					INTEGER ::= 117
+id-UESBI-Iu							INTEGER ::= 118
+id-PositionData							INTEGER ::= 119
+id-PositionDataSpecificToGERANIuMode				INTEGER ::= 120
+id-CellLoadInformationGroup					INTEGER ::= 121
+id-AccuracyFulfilmentIndicator					INTEGER ::= 122
+id-InformationTransferType					INTEGER ::= 123
+id-TraceRecordingSessionInformation				INTEGER ::= 124
+id-TracePropagationParameters					INTEGER ::= 125
+id-InterSystemInformationTransferType				INTEGER ::= 126
+id-SelectedPLMN-ID						INTEGER ::= 127
+id-RedirectionCompleted						INTEGER ::= 128
+id-RedirectionIndication					INTEGER ::= 129
+id-NAS-SequenceNumber						INTEGER ::= 130
+id-RejectCauseValue						INTEGER ::= 131
+id-APN								INTEGER ::= 132
+id-CNMBMSLinkingInformation					INTEGER ::= 133
+id-DeltaRAListofIdleModeUEs					INTEGER ::= 134
+id-FrequenceLayerConvergenceFlag				INTEGER ::= 135
+id-InformationExchangeID					INTEGER ::= 136
+id-InformationExchangeType					INTEGER ::= 137
+id-InformationRequested						INTEGER ::= 138
+id-InformationRequestType					INTEGER ::= 139
+id-IPMulticastAddress						INTEGER ::= 140
+id-JoinedMBMSBearerServicesList					INTEGER ::= 141
+id-LeftMBMSBearerServicesList					INTEGER ::= 142
+id-MBMSBearerServiceType					INTEGER ::= 143
+id-MBMSCNDe-Registration					INTEGER ::= 144
+id-MBMSServiceArea						INTEGER ::= 145
+id-MBMSSessionDuration						INTEGER ::= 146
+id-MBMSSessionIdentity						INTEGER ::= 147
+id-PDP-TypeInformation						INTEGER ::= 148
+id-RAB-Parameters						INTEGER ::= 149
+id-RAListofIdleModeUEs						INTEGER ::= 150
+id-MBMSRegistrationRequestType					INTEGER ::= 151
+id-SessionUpdateID						INTEGER ::= 152
+id-TMGI								INTEGER ::= 153
+id-TransportLayerInformation					INTEGER ::= 154
+id-UnsuccessfulLinkingList					INTEGER ::= 155
+id-MBMSLinkingInformation					INTEGER ::= 156
+id-MBMSSessionRepetitionNumber					INTEGER ::= 157
+id-AlternativeRABConfiguration					INTEGER ::= 158
+id-AlternativeRABConfigurationRequest				INTEGER ::= 159
+id-E-DCH-MAC-d-Flow-ID						INTEGER ::= 160
+id-SourceBSS-ToTargetBSS-TransparentContainer			INTEGER ::= 161
+id-TargetBSS-ToSourceBSS-TransparentContainer			INTEGER ::= 162
+id-TimeToMBMSDataTransfer					INTEGER ::= 163
+id-IncludeVelocity						INTEGER ::= 164
+id-VelocityEstimate						INTEGER ::= 165
+id-RedirectAttemptFlag						INTEGER ::= 166
+id-RAT-Type							INTEGER ::= 167
+id-PeriodicLocationInfo						INTEGER ::= 168
+id-MBMSCountingInformation					INTEGER ::= 169
+id-170-not-to-be-used-for-IE-ids				INTEGER ::= 170
+id-ExtendedRNC-ID						INTEGER ::= 171
+id-Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf		INTEGER ::= 172
+id-Alt-RAB-Parameter-ExtendedMaxBitrateInf			INTEGER ::= 173
+id-Ass-RAB-Parameter-ExtendedGuaranteedBitrateList		INTEGER ::= 174
+id-Ass-RAB-Parameter-ExtendedMaxBitrateList			INTEGER ::= 175
+id-RAB-Parameter-ExtendedGuaranteedBitrateList			INTEGER ::= 176
+id-RAB-Parameter-ExtendedMaxBitrateList				INTEGER ::= 177
+id-Requested-RAB-Parameter-ExtendedMaxBitrateList		INTEGER ::= 178
+id-Requested-RAB-Parameter-ExtendedGuaranteedBitrateList	INTEGER ::= 179
+id-LAofIdleModeUEs						INTEGER ::= 180
+id-newLAListofIdleModeUEs					INTEGER ::= 181
+id-LAListwithNoIdleModeUEsAnyMore				INTEGER ::= 182
+id-183-not-to-be-used-for-IE-ids				INTEGER ::= 183
+id-GANSS-PositioningDataSet					INTEGER ::= 184
+id-RequestedGANSSAssistanceData					INTEGER ::= 185
+id-BroadcastGANSSAssistanceDataDecipheringKeys			INTEGER ::= 186
+id-d-RNTI-for-NoIuCSUP						INTEGER ::= 187
+id-RAB-SetupList-EnhancedRelocCompleteReq			INTEGER ::= 188
+id-RAB-SetupItem-EnhancedRelocCompleteReq			INTEGER ::= 189
+id-RAB-SetupList-EnhancedRelocCompleteRes			INTEGER ::= 190
+id-RAB-SetupItem-EnhancedRelocCompleteRes			INTEGER ::= 191
+id-RAB-SetupList-EnhRelocInfoReq				INTEGER ::= 192
+id-RAB-SetupItem-EnhRelocInfoReq				INTEGER ::= 193
+id-RAB-SetupList-EnhRelocInfoRes				INTEGER ::= 194
+id-RAB-SetupItem-EnhRelocInfoRes				INTEGER ::= 195
+id-OldIuSigConId						INTEGER ::= 196
+id-RAB-FailedList-EnhRelocInfoRes				INTEGER ::= 197
+id-RAB-FailedItem-EnhRelocInfoRes				INTEGER ::= 198
+id-Global-ENB-ID						INTEGER ::= 199
+id-UE-History-Information					INTEGER ::= 200
+id-MBMSSynchronisationInformation				INTEGER ::= 201
+id-SubscriberProfileIDforRFP					INTEGER ::= 202
+id-CSG-Id							INTEGER ::= 203
+id-OldIuSigConIdCS						INTEGER ::= 204
+id-OldIuSigConIdPS						INTEGER ::= 205
+id-GlobalCN-IDCS						INTEGER ::= 206
+id-GlobalCN-IDPS						INTEGER ::= 207
+id-SourceExtendedRNC-ID						INTEGER ::= 208
+id-RAB-ToBeReleasedItem-EnhancedRelocCompleteRes		INTEGER ::= 209
+id-RAB-ToBeReleasedList-EnhancedRelocCompleteRes		INTEGER ::= 210
+id-SourceRNC-ID							INTEGER ::= 211
+id-Relocation-TargetRNC-ID					INTEGER ::= 212
+id-Relocation-TargetExtendedRNC-ID				INTEGER ::= 213
+id-Alt-RAB-Parameter-SupportedGuaranteedBitrateInf		INTEGER ::= 214
+id-Alt-RAB-Parameter-SupportedMaxBitrateInf			INTEGER ::= 215
+id-Ass-RAB-Parameter-SupportedGuaranteedBitrateList		INTEGER ::= 216
+id-Ass-RAB-Parameter-SupportedMaxBitrateList			INTEGER ::= 217
+id-RAB-Parameter-SupportedGuaranteedBitrateList			INTEGER ::= 218
+id-RAB-Parameter-SupportedMaxBitrateList			INTEGER ::= 219
+id-Requested-RAB-Parameter-SupportedMaxBitrateList		INTEGER ::= 220
+id-Requested-RAB-Parameter-SupportedGuaranteedBitrateList	INTEGER ::= 221
+id-Relocation-SourceRNC-ID					INTEGER ::= 222
+id-Relocation-SourceExtendedRNC-ID				INTEGER ::= 223
+id-EncryptionKey						INTEGER ::= 224
+id-IntegrityProtectionKey					INTEGER ::= 225
+id-SRVCC-HO-Indication						INTEGER ::= 226
+id-SRVCC-Information						INTEGER ::= 227
+id-SRVCC-Operation-Possible					INTEGER ::= 228
+id-CSG-Id-List							INTEGER ::= 229
+id-PSRABtobeReplaced						INTEGER ::= 230
+id-E-UTRAN-Service-Handover					INTEGER ::= 231
+id-UE-AggregateMaximumBitRate					INTEGER ::= 233
+id-CSG-Membership-Status 					INTEGER ::= 234
+id-Cell-Access-Mode						INTEGER ::= 235
+id-IP-Source-Address						INTEGER ::= 236
+id-CSFB-Information						INTEGER ::= 237
+id-PDP-TypeInformation-extension				INTEGER ::= 238
+id-MSISDN							INTEGER ::= 239
+id-Offload-RAB-Parameters					INTEGER ::= 240
+id-LGW-TransportLayerAddress					INTEGER ::= 241
+id-Correlation-ID						INTEGER ::= 242
+id-IRAT-Measurement-Configuration				INTEGER ::= 243
+id-MDT-Configuration						INTEGER ::= 244
+id-Priority-Class-Indicator					INTEGER ::= 245
+id-RNSAPRelocationParameters					INTEGER ::= 247
+id-RABParametersList						INTEGER ::= 248
+id-Management-Based-MDT-Allowed					INTEGER ::= 249
+id-HigherBitratesThan16MbpsFlag					INTEGER ::= 250
+id-Trace-Collection-Entity-IP-Addess				INTEGER ::= 251
+id-End-Of-CSFB							INTEGER ::= 252
+id-Time-UE-StayedInCell-EnhancedGranularity			INTEGER ::= 253
+id-Out-Of-UTRAN							INTEGER ::= 254
+id-TraceRecordingSessionReference				INTEGER ::= 255
+id-IMSI								INTEGER ::= 256
+id-HO-Cause							INTEGER ::= 257
+id-VoiceSupportMatchIndicator					INTEGER ::= 258
+id-RSRVCC-HO-Indication						INTEGER ::= 259
+id-RSRVCC-Information						INTEGER ::= 260
+id-AnchorPLMN-ID						INTEGER ::= 261
+id-Tunnel-Information-for-BBF					INTEGER ::= 262
+id-Management-Based-MDT-PLMN-List				INTEGER ::= 263
+id-SignallingBasedMDTPLMNList					INTEGER ::= 264
+id-M4Report							INTEGER ::= 265
+id-M5Report							INTEGER ::= 266
+id-M6Report							INTEGER ::= 267
+id-M7Report							INTEGER ::= 268
+id-TimingDifferenceULDL						INTEGER ::= 269
+id-Serving-Cell-Identifier					INTEGER ::= 270
+id-EARFCN-Extended						INTEGER ::= 271
+id-RSRVCC-Operation-Possible					INTEGER ::= 272
+id-SIPTO-LGW-TransportLayerAddress				INTEGER ::= 273
+id-SIPTO-Correlation-ID						INTEGER ::= 274
+id-LHN-ID							INTEGER ::= 275
+id-Session-Re-establishment-Indicator				INTEGER ::= 276
+id-LastE-UTRANPLMNIdentity					INTEGER ::= 277
+id-RSRQ-Type							INTEGER ::= 278
+id-RSRQ-Extension						INTEGER ::= 279
+
+END
diff --git a/asn1/ranap/RANAP-Containers.asn b/asn1/ranap/RANAP-Containers.asn
new file mode 100644
index 0000000..e31d847
--- /dev/null
+++ b/asn1/ranap/RANAP-Containers.asn
@@ -0,0 +1,194 @@
+-- **************************************************************
+--
+-- Container definitions
+--
+-- **************************************************************
+
+RANAP-Containers {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) ranap (0) version1 (1) ranap-Containers (5) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+	Criticality,
+	Presence,
+	PrivateIE-ID,
+	ProtocolExtensionID,
+	ProtocolIE-ID
+FROM RANAP-CommonDataTypes
+
+	maxPrivateIEs,
+	maxProtocolExtensions,
+	maxProtocolIEs
+FROM RANAP-Constants;
+
+-- **************************************************************
+--
+-- Class Definition for Protocol IEs
+--
+-- **************************************************************
+
+RANAP-PROTOCOL-IES ::= CLASS {
+	&id				ProtocolIE-ID 					UNIQUE,
+	&criticality			Criticality,
+	&Value,
+	&presence			Presence
+}
+WITH SYNTAX {
+	ID				&id
+	CRITICALITY			&criticality
+	TYPE				&Value
+	PRESENCE			&presence
+}
+
+-- **************************************************************
+--
+-- Class Definition for Protocol IEs
+--
+-- **************************************************************
+
+RANAP-PROTOCOL-IES-PAIR ::= CLASS {
+	&id				ProtocolIE-ID 			UNIQUE,
+	&firstCriticality		Criticality,
+	&FirstValue,
+	&secondCriticality		Criticality,
+	&SecondValue,
+	&presence			Presence
+}
+WITH SYNTAX {
+	ID				&id
+	FIRST CRITICALITY 		&firstCriticality
+	FIRST TYPE			&FirstValue
+	SECOND CRITICALITY 		&secondCriticality
+	SECOND TYPE			&SecondValue
+	PRESENCE			&presence
+}
+
+-- **************************************************************
+--
+-- Class Definition for Protocol Extensions
+--
+-- **************************************************************
+
+RANAP-PROTOCOL-EXTENSION ::= CLASS {
+	&id				ProtocolExtensionID 		UNIQUE,
+	&criticality			Criticality,
+	&Extension,
+	&presence			Presence
+}
+WITH SYNTAX {
+	ID				&id
+	CRITICALITY			&criticality
+	EXTENSION			&Extension
+	PRESENCE			&presence
+}
+
+-- **************************************************************
+--
+-- Class Definition for Private IEs
+--
+-- **************************************************************
+
+RANAP-PRIVATE-IES ::= CLASS {
+	&id				PrivateIE-ID,
+	&criticality			Criticality,
+	&Value,
+	&presence		Presence
+}
+WITH SYNTAX {
+	ID				&id
+	CRITICALITY			&criticality
+	TYPE			&Value
+	PRESENCE		&presence
+}
+
+-- **************************************************************
+--
+-- Container for Protocol IEs
+--
+-- **************************************************************
+
+ProtocolIE-Container {RANAP-PROTOCOL-IES : IEsSetParam} ::=
+	SEQUENCE (SIZE (0..maxProtocolIEs)) OF
+	ProtocolIE-Field {{IEsSetParam}}
+
+ProtocolIE-Field {RANAP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE {
+	id		RANAP-PROTOCOL-IES.&id 		({IEsSetParam}),
+	criticality	RANAP-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}),
+	value		RANAP-PROTOCOL-IES.&Value	 ({IEsSetParam}{@id})
+}
+
+-- **************************************************************
+--
+-- Container for Protocol IE Pairs
+--
+-- **************************************************************
+
+ProtocolIE-ContainerPair {RANAP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
+	SEQUENCE (SIZE (0..maxProtocolIEs)) OF
+	ProtocolIE-FieldPair {{IEsSetParam}}
+
+ProtocolIE-FieldPair {RANAP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE {
+	id			RANAP-PROTOCOL-IES-PAIR.&id				({IEsSetParam}),
+	firstCriticality	RANAP-PROTOCOL-IES-PAIR.&firstCriticality		({IEsSetParam}{@id}),
+	firstValue		RANAP-PROTOCOL-IES-PAIR.&FirstValue			({IEsSetParam}{@id}),
+	secondCriticality	RANAP-PROTOCOL-IES-PAIR.&secondCriticality		({IEsSetParam}{@id}),
+	secondValue		RANAP-PROTOCOL-IES-PAIR.&SecondValue			({IEsSetParam}{@id})
+}
+
+-- **************************************************************
+--
+-- Container Lists for Protocol IE Containers
+--
+-- **************************************************************
+
+ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, RANAP-PROTOCOL-IES : IEsSetParam} ::=
+	SEQUENCE (SIZE (lowerBound..upperBound)) OF
+	ProtocolIE-Container {{IEsSetParam}}
+
+ProtocolIE-ContainerPairList {INTEGER : lowerBound, INTEGER : upperBound, RANAP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
+	SEQUENCE (SIZE (lowerBound..upperBound)) OF
+	ProtocolIE-ContainerPair {{IEsSetParam}}
+
+-- **************************************************************
+--
+-- Container for Protocol Extensions
+--
+-- **************************************************************
+
+ProtocolExtensionContainer {RANAP-PROTOCOL-EXTENSION : ExtensionSetParam} ::=
+	SEQUENCE (SIZE (1..maxProtocolExtensions)) OF
+	ProtocolExtensionField {{ExtensionSetParam}}
+
+ProtocolExtensionField {RANAP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE {
+	id			RANAP-PROTOCOL-EXTENSION.&id			({ExtensionSetParam}),
+	criticality		RANAP-PROTOCOL-EXTENSION.&criticality		({ExtensionSetParam}{@id}),
+	extensionValue		RANAP-PROTOCOL-EXTENSION.&Extension		({ExtensionSetParam}{@id})
+}
+
+-- **************************************************************
+--
+-- Container for Private IEs
+--
+-- **************************************************************
+
+PrivateIE-Container {RANAP-PRIVATE-IES : IEsSetParam } ::=
+	SEQUENCE (SIZE (1.. maxPrivateIEs)) OF
+	PrivateIE-Field {{IEsSetParam}}
+
+PrivateIE-Field {RANAP-PRIVATE-IES : IEsSetParam} ::= SEQUENCE {
+	id			RANAP-PRIVATE-IES.&id			({IEsSetParam}),
+	criticality		RANAP-PRIVATE-IES.&criticality		({IEsSetParam}{@id}),
+	value			RANAP-PRIVATE-IES.&Value		({IEsSetParam}{@id})
+}
+
+END
diff --git a/asn1/ranap/RANAP-IEs.asn b/asn1/ranap/RANAP-IEs.asn
new file mode 100644
index 0000000..684606e
--- /dev/null
+++ b/asn1/ranap/RANAP-IEs.asn
@@ -0,0 +1,2677 @@
+-- **************************************************************
+--
+-- Information Element Definitions
+--
+-- **************************************************************
+
+RANAP-IEs {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) ranap (0) version1 (1) ranap-IEs (2) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+IMPORTS
+	maxNrOfCSGs,
+	maxNrOfErrors,
+	maxNrOfPDPDirections,
+	maxNrOfPoints,
+	maxNrOfRABs,
+	maxNrOfSRBs,
+	maxNrOfSeparateTrafficDirections,
+	maxRAB-Subflows,
+	maxRAB-SubflowCombination,
+	maxNrOfLevels,
+	maxNrOfAltValues,
+	maxNrOfSNAs,
+	maxNrOfLAs,
+	maxNrOfPLMNsSN,
+	maxSet,
+	maxNrOfHSDSCHMACdFlows-1,
+	maxNrOfUEsToBeTraced,
+	maxNrOfInterfaces,
+	maxnoofMulticastServicesPerRNC,
+	maxMBMSSA,
+	maxMBMSRA,
+	maxnoofMulticastServicesPerUE,
+	maxNrOfEDCHMACdFlows-1,
+	maxGANSSSet,
+	maxNrOfEUTRAFreqs,
+	maxNrOfCellIds,
+	maxNrOfRAIs,
+	maxNrOfLAIs,
+	maxNrOfVol,
+	maxSizeOfIMSInfo,
+	maxnoofMDTPLMNs,
+
+	id-CN-DomainIndicator,
+	id-MessageStructure,
+	id-SRB-TrCH-Mapping,
+	id-TypeOfError,
+	id-hS-DSCH-MAC-d-Flow-ID,
+	id-SignallingIndication,
+	id-CellLoadInformationGroup,
+	id-TraceRecordingSessionInformation,
+	id-MBMSLinkingInformation,
+	id-AlternativeRABConfiguration,
+	id-AlternativeRABConfigurationRequest,
+	id-E-DCH-MAC-d-Flow-ID,
+	id-RAC,
+	id-Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf,
+	id-Alt-RAB-Parameter-ExtendedMaxBitrateInf,
+	id-Ass-RAB-Parameter-ExtendedGuaranteedBitrateList,
+	id-Ass-RAB-Parameter-ExtendedMaxBitrateList,
+	id-RAB-Parameter-ExtendedGuaranteedBitrateList,
+	id-RAB-Parameter-ExtendedMaxBitrateList,
+	id-Requested-RAB-Parameter-ExtendedMaxBitrateList,
+	id-Requested-RAB-Parameter-ExtendedGuaranteedBitrateList,
+	id-LAofIdleModeUEs,
+	id-newLAListofIdleModeUEs,
+	id-LAListwithNoIdleModeUEsAnyMore,
+	id-ExtendedRNC-ID,
+	id-GANSS-PositioningDataSet,
+	id-d-RNTI-for-NoIuCSUP,
+	id-UE-History-Information,
+	id-SubscriberProfileIDforRFP,
+	id-Alt-RAB-Parameter-SupportedGuaranteedBitrateInf,
+	id-Alt-RAB-Parameter-SupportedMaxBitrateInf,
+	id-Ass-RAB-Parameter-SupportedGuaranteedBitrateList,
+	id-Ass-RAB-Parameter-SupportedMaxBitrateList,
+	id-RAB-Parameter-SupportedGuaranteedBitrateList,
+	id-RAB-Parameter-SupportedMaxBitrateList,
+	id-Requested-RAB-Parameter-SupportedMaxBitrateList,
+	id-Requested-RAB-Parameter-SupportedGuaranteedBitrateList,
+	id-PSRABtobeReplaced,
+	id-SRVCC-Information,
+	id-CSG-Id,
+	id-CSFB-Information,
+	id-IRAT-Measurement-Configuration,
+	id-Management-Based-MDT-Allowed,
+	id-Time-UE-StayedInCell-EnhancedGranularity,
+	id-HO-Cause,
+	id-TraceRecordingSessionReference,
+	id-IMSI,
+	id-Management-Based-MDT-PLMN-List,
+	id-SignallingBasedMDTPLMNList,
+	id-M4Report,
+	id-M5Report,
+	id-M6Report,
+	id-M7Report,
+	id-TimingDifferenceULDL,
+	id-Trace-Collection-Entity-IP-Addess,
+	id-Serving-Cell-Identifier,
+	id-EARFCN-Extended,
+	id-LastE-UTRANPLMNIdentity,
+	id-RSRQ-Type,
+	id-RSRQ-Extension
+
+
+FROM RANAP-Constants
+
+	Criticality,
+	ProcedureCode,
+	ProtocolIE-ID,
+	TriggeringMessage
+FROM RANAP-CommonDataTypes
+
+	ProtocolExtensionContainer{},
+	RANAP-PROTOCOL-EXTENSION
+FROM RANAP-Containers;
+
+-- A
+
+AccuracyFulfilmentIndicator ::= ENUMERATED{
+	requested-Accuracy-Fulfilled,
+	requested-Accuracy-Not-Fulfilled,
+	...
+}
+
+AllocationOrRetentionPriority ::= SEQUENCE {
+	priorityLevel			PriorityLevel,
+	pre-emptionCapability		Pre-emptionCapability,
+	pre-emptionVulnerability	Pre-emptionVulnerability,
+	queuingAllowed			QueuingAllowed,
+	iE-Extensions			ProtocolExtensionContainer { {AllocationOrRetentionPriority-ExtIEs} } OPTIONAL,
+	...
+}
+
+AllocationOrRetentionPriority-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+Alt-RAB-Parameters ::= SEQUENCE {
+	altMaxBitrateInf		Alt-RAB-Parameter-MaxBitrateInf 				OPTIONAL,
+	altGuaranteedBitRateInf		Alt-RAB-Parameter-GuaranteedBitrateInf 				OPTIONAL,
+	iE-Extensions			ProtocolExtensionContainer { {Alt-RAB-Parameters-ExtIEs} } 	OPTIONAL,
+	...
+}
+
+Alt-RAB-Parameters-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 6 to indicate an alternative RAB configuration --
+	{ ID id-AlternativeRABConfiguration		CRITICALITY ignore	EXTENSION RAB-Parameters	PRESENCE optional }|
+-- Extension for Release 7 to indicate an alternative list of Extended Guaranteed Bitrates --
+{ ID id-Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf	CRITICALITY ignore	EXTENSION Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf 	PRESENCE optional }|
+-- Extension for Release 7 to indicate an alternative list of Extended Maximum Bitrates --
+{ ID id-Alt-RAB-Parameter-ExtendedMaxBitrateInf		CRITICALITY ignore	EXTENSION Alt-RAB-Parameter-ExtendedMaxBitrateInf 	PRESENCE optional }|
+-- Extension for Release 8 to indicate an alternative list of Supported Maximum Bitrates --
+{ ID id-Alt-RAB-Parameter-SupportedMaxBitrateInf	CRITICALITY reject	EXTENSION Alt-RAB-Parameter-SupportedMaxBitrateInf 	PRESENCE optional }|
+-- Extension for Release 8 to indicate an alternative list of Supported Guaranteed Bitrates --
+{ ID id-Alt-RAB-Parameter-SupportedGuaranteedBitrateInf	CRITICALITY reject	EXTENSION Alt-RAB-Parameter-SupportedGuaranteedBitrateInf 	PRESENCE optional },
+	...
+}
+
+Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf ::= SEQUENCE {
+	altExtendedGuaranteedBitrateType	Alt-RAB-Parameter-GuaranteedBitrateType,
+	altExtendedGuaranteedBitrates		Alt-RAB-Parameter-ExtendedGuaranteedBitrates	OPTIONAL
+	-- This IE shall be present if the Type of Extended Guaranteed Bit Rates Information IE is set to "Value range" or "Discrete values" --,
+	...
+}
+
+Alt-RAB-Parameter-ExtendedGuaranteedBitrates ::= SEQUENCE (SIZE (1..maxNrOfAltValues)) OF
+	Alt-RAB-Parameter-ExtendedGuaranteedBitrateList
+
+Alt-RAB-Parameter-ExtendedGuaranteedBitrateList	::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF ExtendedGuaranteedBitrate
+
+Alt-RAB-Parameter-GuaranteedBitrateInf ::= SEQUENCE {
+	altGuaranteedBitrateType	Alt-RAB-Parameter-GuaranteedBitrateType,
+	altGuaranteedBitrates		Alt-RAB-Parameter-GuaranteedBitrates			OPTIONAL
+	-- This IE shall be present if the Type of Guaranteed Bit Rates Information IE is set to "Value range" or "Discrete values" --,
+	...
+}
+
+Alt-RAB-Parameter-GuaranteedBitrateType ::= ENUMERATED{
+	unspecified,
+	value-range,
+	discrete-values,
+	...
+}
+
+Alt-RAB-Parameter-GuaranteedBitrates ::= SEQUENCE (SIZE (1..maxNrOfAltValues)) OF
+	Alt-RAB-Parameter-GuaranteedBitrateList
+
+
+Alt-RAB-Parameter-GuaranteedBitrateList	::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF GuaranteedBitrate
+
+Alt-RAB-Parameter-SupportedGuaranteedBitrateInf ::= SEQUENCE {
+	altSupportedGuaranteedBitrateType	Alt-RAB-Parameter-GuaranteedBitrateType,
+	altSupportedGuaranteedBitrates		Alt-RAB-Parameter-SupportedGuaranteedBitrates	OPTIONAL
+	-- This IE shall be present if the Type of Supported Guaranteed Bit Rates Information IE is set to "Value range" or "Discrete values" --,
+	iE-Extensions			ProtocolExtensionContainer { { Alt-RAB-Parameter-SupportedGuaranteedBitrateInf-ExtIEs} } OPTIONAL,
+	...
+}
+
+Alt-RAB-Parameter-SupportedGuaranteedBitrateInf-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+...
+}
+
+Alt-RAB-Parameter-SupportedGuaranteedBitrates ::= SEQUENCE (SIZE (1..maxNrOfAltValues)) OF
+	SupportedRAB-ParameterBitrateList
+
+
+Alt-RAB-Parameter-ExtendedMaxBitrateInf ::= SEQUENCE {
+	altExtendedMaxBitrateType	Alt-RAB-Parameter-MaxBitrateType,
+	altExtendedMaxBitrates		Alt-RAB-Parameter-ExtendedMaxBitrates			OPTIONAL
+	-- This IE shall be present if the Type of Extended Alternative Maximum Bit Rates Information IE is set to "Value range" or "Discrete values" --,
+	...
+}
+
+Alt-RAB-Parameter-ExtendedMaxBitrates ::= SEQUENCE (SIZE (1..maxNrOfAltValues)) OF
+	Alt-RAB-Parameter-ExtendedMaxBitrateList
+
+Alt-RAB-Parameter-ExtendedMaxBitrateList	::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF ExtendedMaxBitrate
+
+Alt-RAB-Parameter-MaxBitrateInf ::= SEQUENCE {
+	altMaxBitrateType	Alt-RAB-Parameter-MaxBitrateType,
+	altMaxBitrates		Alt-RAB-Parameter-MaxBitrates			OPTIONAL
+	-- This IE shall be present if the Type of Alternative Maximun Bit Rates Information IE is set to "Value range" or "Discrete values" --,
+	...
+}
+
+Alt-RAB-Parameter-MaxBitrateType ::= ENUMERATED{
+	unspecified,
+	value-range,
+	discrete-values,
+	...
+}
+
+Alt-RAB-Parameter-MaxBitrates ::= SEQUENCE (SIZE (1..maxNrOfAltValues)) OF
+	Alt-RAB-Parameter-MaxBitrateList
+
+
+Alt-RAB-Parameter-MaxBitrateList ::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF MaxBitrate
+
+
+Alt-RAB-Parameter-SupportedMaxBitrateInf ::= SEQUENCE {
+	altSupportedMaxBitrateType	Alt-RAB-Parameter-MaxBitrateType,
+	altSupportedMaxBitrates		Alt-RAB-Parameter-SupportedMaxBitrates			OPTIONAL
+	-- This IE shall be present if the Type of Supported Alternative Maximun Bit Rates Information IE is set to "Value range" or "Discrete values" --,
+	 iE-Extensions			ProtocolExtensionContainer { { Alt-RAB-Parameter-SupportedMaxBitrateInf-ExtIEs} } 	OPTIONAL,
+...
+}
+
+Alt-RAB-Parameter-SupportedMaxBitrateInf-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+...
+}
+
+
+Alt-RAB-Parameter-SupportedMaxBitrates ::= SEQUENCE (SIZE (1..maxNrOfAltValues)) OF
+	SupportedRAB-ParameterBitrateList
+
+AlternativeRABConfigurationRequest ::= ENUMERATED{
+	alternative-RAB-configuration-Requested,
+	...
+}
+
+APN	::= OCTET STRING (SIZE (1..255))
+-- Reference: 23.003
+
+AreaIdentity ::= CHOICE {
+	sAI				SAI,
+	geographicalArea		GeographicalArea,
+	...
+}
+
+Ass-RAB-Parameters ::= SEQUENCE {
+	assMaxBitrateInf		Ass-RAB-Parameter-MaxBitrateList 				OPTIONAL,
+	assGuaranteedBitRateInf		Ass-RAB-Parameter-GuaranteedBitrateList 			OPTIONAL,
+	iE-Extensions			ProtocolExtensionContainer { {Ass-RAB-Parameters-ExtIEs} } 	OPTIONAL,
+	...
+}
+
+Ass-RAB-Parameters-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 7 to indicate an extended assigned Guaranteed Bitrate --
+	{ ID id-Ass-RAB-Parameter-ExtendedGuaranteedBitrateList		CRITICALITY reject	EXTENSION Ass-RAB-Parameter-ExtendedGuaranteedBitrateList  PRESENCE optional }|
+-- Extension for Release 7 to indicate an extended assigned Maximum Bitrate --
+	{ ID id-Ass-RAB-Parameter-ExtendedMaxBitrateList		CRITICALITY reject	EXTENSION Ass-RAB-Parameter-ExtendedMaxBitrateList 	PRESENCE optional }|
+-- Extension for Release 8 to indicate an supported assigned Maximum Bitrate --
+	{ ID id-Ass-RAB-Parameter-SupportedMaxBitrateList		CRITICALITY ignore	EXTENSION SupportedRAB-ParameterBitrateList 	PRESENCE optional }|
+-- Extension for Release 8 to indicate an supported assigned Guaranteed Bitrate --
+	{ ID id-Ass-RAB-Parameter-SupportedGuaranteedBitrateList	CRITICALITY ignore	EXTENSION SupportedRAB-ParameterBitrateList	PRESENCE optional },
+	...
+}
+
+Ass-RAB-Parameter-ExtendedGuaranteedBitrateList	::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF ExtendedGuaranteedBitrate
+
+Ass-RAB-Parameter-ExtendedMaxBitrateList ::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF ExtendedMaxBitrate
+
+
+Ass-RAB-Parameter-GuaranteedBitrateList	::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF GuaranteedBitrate
+
+
+Ass-RAB-Parameter-MaxBitrateList ::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF MaxBitrate
+
+AuthorisedPLMNs ::= SEQUENCE (SIZE (1..maxNrOfPLMNsSN)) OF
+	SEQUENCE {
+		pLMNidentity		PLMNidentity,
+		authorisedSNAsList	AuthorisedSNAs		OPTIONAL,
+		iE-Extensions		ProtocolExtensionContainer { {AuthorisedPLMNs-ExtIEs} } OPTIONAL,
+		...
+	}
+
+AuthorisedPLMNs-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+AuthorisedSNAs ::= SEQUENCE (SIZE (1..maxNrOfSNAs)) OF SNAC
+
+
+-- B
+
+BindingID ::= OCTET STRING (SIZE (4))
+
+BroadcastAssistanceDataDecipheringKeys	::= SEQUENCE {
+	cipheringKeyFlag	BIT STRING (SIZE (1)),
+	currentDecipheringKey	BIT STRING (SIZE (56)),
+	nextDecipheringKey	BIT STRING (SIZE (56)),
+	...
+}
+
+-- C
+
+
+Cause ::= CHOICE {
+	radioNetwork		CauseRadioNetwork,
+	transmissionNetwork	CauseTransmissionNetwork,
+	nAS			CauseNAS,
+	protocol		CauseProtocol,
+	misc			CauseMisc,
+	non-Standard		CauseNon-Standard,
+	...,
+	radioNetworkExtension	CauseRadioNetworkExtension
+}
+
+CauseMisc ::= INTEGER {
+	om-intervention (113),
+	no-resource-available (114),
+	unspecified-failure (115),
+	network-optimisation (116)
+} (113..128)
+
+CauseNAS ::= INTEGER {
+	user-restriction-start-indication (81),
+	user-restriction-end-indication (82),
+	normal-release (83),
+	csg-subscription-expiry(84)
+} (81..96)
+
+CauseProtocol ::= INTEGER {
+	transfer-syntax-error (97),
+	semantic-error (98),
+	message-not-compatible-with-receiver-state (99),
+	abstract-syntax-error-reject (100),
+	abstract-syntax-error-ignore-and-notify (101),
+	abstract-syntax-error-falsely-constructed-message (102)
+} (97..112)
+
+CauseRadioNetwork ::= INTEGER {
+	rab-pre-empted (1),
+	trelocoverall-expiry (2),
+	trelocprep-expiry (3),
+	treloccomplete-expiry (4),
+	tqueing-expiry (5),
+	relocation-triggered (6),
+	trellocalloc-expiry(7),
+	unable-to-establish-during-relocation (8),
+	unknown-target-rnc (9),
+	relocation-cancelled (10),
+	successful-relocation (11),
+	requested-ciphering-and-or-integrity-protection-algorithms-not-supported (12),
+	conflict-with-already-existing-integrity-protection-and-or-ciphering-information (13),
+	failure-in-the-radio-interface-procedure (14),
+	release-due-to-utran-generated-reason (15),
+	user-inactivity (16),
+	time-critical-relocation (17),
+	requested-traffic-class-not-available (18),
+	invalid-rab-parameters-value (19),
+	requested-maximum-bit-rate-not-available (20),
+	requested-guaranteed-bit-rate-not-available (21),
+	requested-transfer-delay-not-achievable (22),
+	invalid-rab-parameters-combination (23),
+	condition-violation-for-sdu-parameters (24),
+	condition-violation-for-traffic-handling-priority (25),
+	condition-violation-for-guaranteed-bit-rate (26),
+	user-plane-versions-not-supported (27),
+	iu-up-failure (28),
+	relocation-failure-in-target-CN-RNC-or-target-system(29),
+	invalid-RAB-ID (30),
+	no-remaining-rab (31),
+	interaction-with-other-procedure (32),
+	requested-maximum-bit-rate-for-dl-not-available (33),
+	requested-maximum-bit-rate-for-ul-not-available (34),
+	requested-guaranteed-bit-rate-for-dl-not-available (35),
+	requested-guaranteed-bit-rate-for-ul-not-available (36),
+	repeated-integrity-checking-failure (37),
+	requested-request-type-not-supported (38),
+	request-superseded (39),
+	release-due-to-UE-generated-signalling-connection-release (40),
+	resource-optimisation-relocation (41),
+	requested-information-not-available (42),
+	relocation-desirable-for-radio-reasons (43),
+	relocation-not-supported-in-target-RNC-or-target-system (44),
+	directed-retry (45),
+	radio-connection-with-UE-Lost (46),
+	rNC-unable-to-establish-all-RFCs (47),
+	deciphering-keys-not-available(48),
+	dedicated-assistance-data-not-available(49),
+	relocation-target-not-allowed (50),
+	location-reporting-congestion (51),
+	reduce-load-in-serving-cell (52),
+	no-radio-resources-available-in-target-cell (53),
+	gERAN-Iumode-failure (54),
+	access-restricted-due-to-shared-networks (55),
+	incoming-relocation-not-supported-due-to-PUESBINE-feature (56),
+	traffic-load-in-the-target-cell-higher-than-in-the-source-cell (57),
+	mBMS-no-multicast-service-for-this-UE(58),
+	mBMS-unknown-UE-ID(59),
+	successful-MBMS-session-start-no-data-bearer-necessary(60),
+	mBMS-superseded-due-to-NNSF(61),
+	mBMS-UE-linking-already-done(62),
+	mBMS-UE-de-linking-failure-no-existing-UE-linking(63),
+	tMGI-unknown(64)
+} (1..64)
+
+CauseRadioNetworkExtension ::= INTEGER {
+	iP-multicast-address-and-APN-not-valid(257),
+	mBMS-de-registration-rejected-due-to-implicit-registration(258),
+	mBMS-request-superseded(259),
+	mBMS-de-registration-during-session-not-allowed(260),
+	mBMS-no-data-bearer-necessary(261),
+	periodicLocationInformationNotAvailable(262),
+	gTP-Resources-Unavailable(263),
+	tMGI-inUse-overlapping-MBMS-service-area(264),
+	mBMS-no-cell-in-MBMS-service-area(265),
+	no-Iu-CS-UP-relocation(266),
+	successful-MBMS-Session-Start-IP-Multicast-Bearer-established(267),
+	cS-fallback-triggered(268),
+	invalid-CSG-Id(269)
+} (257..512)
+
+CauseNon-Standard ::= INTEGER (129..256)
+-- Cause value 256 shall not be used --
+
+CauseTransmissionNetwork ::= INTEGER {
+	signalling-transport-resource-failure (65),
+	iu-transport-connection-failed-to-establish (66)
+} (65..80)
+
+Cell-Access-Mode::= ENUMERATED {
+	hybrid,
+	... 
+}
+
+CellBased::= SEQUENCE {
+	cellIdList		CellIdList,
+	iE-Extensions		ProtocolExtensionContainer { {CellBased-ExtIEs} } OPTIONAL,
+	...
+}
+
+CellBased-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+CellIdList ::= SEQUENCE (SIZE (1..maxNrOfCellIds)) OF
+	Cell-Id
+
+Cell-Id		::= INTEGER (0..268435455)
+
+Cell-Capacity-Class-Value ::= INTEGER (1..100,...)
+
+CellLoadInformation ::= SEQUENCE {
+	cell-Capacity-Class-Value	Cell-Capacity-Class-Value,
+	loadValue			LoadValue,
+	rTLoadValue			RTLoadValue				OPTIONAL,
+	nRTLoadInformationValue		NRTLoadInformationValue			OPTIONAL,
+	iE-Extensions			ProtocolExtensionContainer { { CellLoadInformation-ExtIEs } }	OPTIONAL,
+	...
+}
+
+CellLoadInformation-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+CellLoadInformationGroup ::= SEQUENCE {
+	sourceCellID					SourceCellID,
+	uplinkCellLoadInformation			CellLoadInformation		OPTIONAL,
+	downlinkCellLoadInformation			CellLoadInformation		OPTIONAL,
+	iE-Extensions	ProtocolExtensionContainer { { CellLoadInformationGroup-ExtIEs } }	OPTIONAL,
+	...
+}
+
+CellLoadInformationGroup-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+CellType ::= ENUMERATED{
+	macro,
+	micro,
+	pico,
+	femto,
+	...
+}
+
+ClientType ::= ENUMERATED {
+	emergency-Services,
+	value-Added-Services,
+	pLMN-Operator-Services,
+	lawful-Intercept-Services,
+	pLMN-Operator-Broadcast-Services,
+	pLMN-Operator-O-et-M,
+	pLMN-Operator-Anonymous-Statistics,
+	pLMN-Operator-Target-MS-Service-Support,
+	...
+}
+
+CriticalityDiagnostics ::= SEQUENCE {
+	procedureCode			ProcedureCode			OPTIONAL,
+	triggeringMessage		TriggeringMessage		OPTIONAL,
+	procedureCriticality		Criticality			OPTIONAL,
+	iEsCriticalityDiagnostics	CriticalityDiagnostics-IE-List 	OPTIONAL,
+	iE-Extensions			ProtocolExtensionContainer { {CriticalityDiagnostics-ExtIEs} } OPTIONAL,
+	...
+}
+
+CriticalityDiagnostics-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+CriticalityDiagnostics-IE-List ::= SEQUENCE (SIZE (1..maxNrOfErrors)) OF
+	SEQUENCE {
+		iECriticality		Criticality,
+		iE-ID			ProtocolIE-ID,
+		repetitionNumber	RepetitionNumber0		OPTIONAL,
+		iE-Extensions		ProtocolExtensionContainer { {CriticalityDiagnostics-IE-List-ExtIEs} } OPTIONAL,
+		...
+	}
+
+CriticalityDiagnostics-IE-List-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 99 to enable reporting the message structure down to the erroneous IE --
+	{	ID id-MessageStructure	CRITICALITY ignore		EXTENSION MessageStructure	PRESENCE optional	} |
+-- Extension for Release 99 to enable reporting if a reported error is due to a not understood or a missing IE --
+	{	ID id-TypeOfError	CRITICALITY ignore		EXTENSION TypeOfError		PRESENCE mandatory	},
+	...
+}
+
+MessageStructure ::= SEQUENCE (SIZE (1..maxNrOfLevels)) OF
+	SEQUENCE {
+		iE-ID			ProtocolIE-ID,
+		repetitionNumber	RepetitionNumber1		OPTIONAL,
+		iE-Extensions		ProtocolExtensionContainer { {MessageStructure-ExtIEs} } OPTIONAL,
+		...
+	}
+
+MessageStructure-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+CGI ::= SEQUENCE {
+	pLMNidentity	PLMNidentity,
+	lAC		LAC,
+	cI		CI,
+	iE-Extensions	ProtocolExtensionContainer { {CGI-ExtIEs} } OPTIONAL
+}
+
+CGI-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 6 to enable Inter-RAT PS Handover between UTRAN and GERAN A/Gb --
+	{	ID id-RAC	CRITICALITY ignore		EXTENSION RAC	PRESENCE optional	},
+	...
+}
+
+ChosenEncryptionAlgorithm 		::= EncryptionAlgorithm
+
+ChosenIntegrityProtectionAlgorithm 	::= IntegrityProtectionAlgorithm
+
+CI					::= OCTET STRING (SIZE (2))
+
+ClassmarkInformation2			::= OCTET STRING
+
+ClassmarkInformation3			::= OCTET STRING
+
+CN-DomainIndicator ::= ENUMERATED {
+	cs-domain,
+	ps-domain
+}
+
+CN-ID	::= INTEGER (0..4095)
+
+Correlation-ID	::= OCTET STRING (SIZE (4))
+
+CSFB-Information ::= ENUMERATED {
+	csfb,
+	csfb-high-priority,
+	...
+}
+
+CSG-Id		::= BIT STRING (SIZE (27))
+
+CSG-Id-List ::= SEQUENCE (SIZE (1..maxNrOfCSGs)) OF
+	CSG-Id
+
+CSG-Membership-Status ::= ENUMERATED { 
+	member, 
+	non-member,
+	...
+}
+
+-- D
+
+DataPDUType		::=	ENUMERATED {
+	pDUtype0,
+	pDUtype1,
+	...
+}
+
+DataVolumeReference	::= INTEGER (0..255)
+
+DataVolumeReportingIndication ::= ENUMERATED {
+	do-report,
+	do-not-report
+}
+
+DCH-ID ::= INTEGER (0..255)
+
+DeliveryOfErroneousSDU ::= ENUMERATED {
+	yes,
+	no,
+	no-error-detection-consideration
+}
+
+DeliveryOrder::= ENUMERATED {
+	delivery-order-requested,
+	delivery-order-not-requested
+}
+
+DeltaRAListofIdleModeUEs ::= SEQUENCE {
+	newRAListofIdleModeUEs		NewRAListofIdleModeUEs	OPTIONAL,
+	rAListwithNoIdleModeUEsAnyMore	RAListwithNoIdleModeUEsAnyMore	OPTIONAL,
+	iE-Extensions			ProtocolExtensionContainer { {DeltaRAListofIdleModeUEs-ExtIEs} } OPTIONAL
+}
+
+NewRAListofIdleModeUEs ::= SEQUENCE (SIZE (1..maxMBMSRA)) OF
+	RAC
+
+RAListwithNoIdleModeUEsAnyMore ::= SEQUENCE (SIZE (1..maxMBMSRA)) OF
+	RAC
+
+DeltaRAListofIdleModeUEs-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+{ ID id-newLAListofIdleModeUEs		CRITICALITY reject	EXTENSION LAListofIdleModeUEs	PRESENCE conditional	}|
+	-- This IE shall be present if the New RA List of Idle Mode UEs IE is included. --
+{ ID id-LAListwithNoIdleModeUEsAnyMore	CRITICALITY reject	EXTENSION LAListofIdleModeUEs	PRESENCE conditional	},
+	-- This IE shall be presentif the RA List with No Idle Mode UEs Any More IE is included. --
+	...
+}
+
+ForwardingIndication::=ENUMERATED{
+	forwarding-admitted,
+	...
+}
+
+DL-GTP-PDU-SequenceNumber		::= INTEGER (0..65535)
+
+DL-N-PDU-SequenceNumber 		::= INTEGER (0..65535)
+
+D-RNTI					::= INTEGER (0..1048575)
+
+DRX-CycleLengthCoefficient		::= INTEGER (6..9)
+
+DSCH-ID ::= INTEGER (0..255)
+
+
+-- E
+
+EARFCN-Extended		::= INTEGER (65536..262143, ...)
+
+E-DCH-MAC-d-Flow-ID	::= INTEGER (0.. maxNrOfEDCHMACdFlows-1)
+
+ENB-ID ::= CHOICE {
+	macroENB-ID	BIT STRING (SIZE(20)),
+	homeENB-ID	BIT STRING (SIZE(28)),
+	...
+}
+
+EncryptionAlgorithm ::= INTEGER { no-encryption (0), standard-UMTS-encryption-algorith-UEA1 (1), standard-UMTS-encryption-algorithm-UEA2 (2) } (0..15)
+
+EncryptionInformation ::= SEQUENCE {
+	permittedAlgorithms	PermittedEncryptionAlgorithms,
+	key			EncryptionKey,
+	iE-Extensions		ProtocolExtensionContainer { {EncryptionInformation-ExtIEs} } OPTIONAL
+}
+
+EncryptionInformation-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+EncryptionKey ::= BIT STRING (SIZE (128))
+-- Reference: 33.102
+
+End-Of-CSFB ::= ENUMERATED{
+	end-of-CSFB,
+	...
+}
+
+EquipmentsToBeTraced ::= CHOICE {
+	iMEIlist	IMEIList,
+	iMEISVlist	IMEISVList,
+	iMEIgroup	IMEIGroup,
+	iMEISVgroup	IMEISVGroup,
+	...
+}
+
+E-UTRAN-Service-Handover ::= ENUMERATED {
+	handover-to-E-UTRAN-shall-not-be-performed,
+	...
+}
+
+Event ::= ENUMERATED {
+	stop-change-of-service-area,
+	direct,
+	change-of-servicearea,
+	...,
+	stop-direct,
+	periodic,
+	stop-periodic
+}
+
+Event1F-Parameters ::= SEQUENCE {
+	measurementQuantity	MeasurementQuantity,
+	threshold		INTEGER(-120..165),
+	...
+}
+
+Event1I-Parameters ::= SEQUENCE {
+	threshold	INTEGER(-120..-25),
+	...
+}
+
+ExtendedGuaranteedBitrate	::= INTEGER (16000001..256000000)
+-- Unit is bits per sec
+
+ExtendedMaxBitrate		::= INTEGER (16000001..256000000)
+-- Unit is bits per sec
+
+ExtendedRNC-ID			::= INTEGER (4096..65535)
+
+-- F
+
+FrameSequenceNumber		::=	INTEGER(0..15)
+
+FrequenceLayerConvergenceFlag ::= ENUMERATED {
+	no-FLC-flag,
+	...
+}
+
+-- G
+
+GANSS-PositioningDataSet ::= SEQUENCE(SIZE(1..maxGANSSSet)) OF GANSS-PositioningMethodAndUsage
+
+GANSS-PositioningMethodAndUsage ::= OCTET STRING (SIZE(1))
+
+GeographicalArea ::= CHOICE {
+	point				GA-Point,
+	pointWithUnCertainty		GA-PointWithUnCertainty,
+	polygon				GA-Polygon,
+	...,
+	pointWithUncertaintyEllipse	GA-PointWithUnCertaintyEllipse,
+	pointWithAltitude		GA-PointWithAltitude,
+	pointWithAltitudeAndUncertaintyEllipsoid		GA-PointWithAltitudeAndUncertaintyEllipsoid,
+	ellipsoidArc			GA-EllipsoidArc
+}
+
+GeographicalCoordinates ::= SEQUENCE {
+	latitudeSign	ENUMERATED { north, south },
+	latitude	INTEGER (0..8388607),
+	longitude	INTEGER (-8388608..8388607),
+	iE-Extensions	ProtocolExtensionContainer { {GeographicalCoordinates-ExtIEs} } OPTIONAL,
+	...
+}
+
+GeographicalCoordinates-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+GA-AltitudeAndDirection ::= SEQUENCE {
+	directionOfAltitude	ENUMERATED {height, depth},
+	altitude		INTEGER (0..32767),
+	...
+}
+
+GA-EllipsoidArc ::= SEQUENCE {
+	geographicalCoordinates	GeographicalCoordinates,
+	innerRadius		INTEGER (0..65535),
+	uncertaintyRadius	INTEGER (0..127),
+	offsetAngle		INTEGER (0..179),
+	includedAngle		INTEGER(0..179),
+	confidence		INTEGER (0..127),
+	iE-Extensions		ProtocolExtensionContainer { { GA-EllipsoidArc-ExtIEs} } OPTIONAL,
+	...
+}
+
+GA-EllipsoidArc-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+GA-Point ::= SEQUENCE {
+	geographicalCoordinates	GeographicalCoordinates,
+	iE-Extensions		ProtocolExtensionContainer { {GA-Point-ExtIEs} } OPTIONAL,
+	...
+}
+
+GA-Point-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+GA-PointWithAltitude ::= SEQUENCE {
+	geographicalCoordinates	GeographicalCoordinates,
+	altitudeAndDirection	GA-AltitudeAndDirection,
+	iE-Extensions		ProtocolExtensionContainer { { GA-PointWithAltitude-ExtIEs} } OPTIONAL,
+	...
+}
+
+GA-PointWithAltitude-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+GA-PointWithAltitudeAndUncertaintyEllipsoid ::= SEQUENCE {
+	geographicalCoordinates	GeographicalCoordinates,
+	altitudeAndDirection	GA-AltitudeAndDirection,
+	uncertaintyEllipse	GA-UncertaintyEllipse,
+	uncertaintyAltitude	INTEGER (0..127),
+	confidence		INTEGER (0..127),
+	iE-Extensions		ProtocolExtensionContainer { { GA-PointWithAltitudeAndUncertaintyEllipsoid-ExtIEs} } OPTIONAL,
+	...
+}
+
+GA-PointWithAltitudeAndUncertaintyEllipsoid-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+GA-PointWithUnCertainty ::=SEQUENCE {
+	geographicalCoordinates	GeographicalCoordinates,
+	iE-Extensions		ProtocolExtensionContainer { {GA-PointWithUnCertainty-ExtIEs} } OPTIONAL,
+	uncertaintyCode		INTEGER (0..127)
+}
+
+GA-PointWithUnCertainty-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+GA-PointWithUnCertaintyEllipse ::= SEQUENCE {
+	geographicalCoordinates	GeographicalCoordinates,
+	uncertaintyEllipse	GA-UncertaintyEllipse,
+	confidence		INTEGER (0..127),
+	iE-Extensions		ProtocolExtensionContainer { { GA-PointWithUnCertaintyEllipse-ExtIEs} } OPTIONAL,
+	...
+}
+
+GA-PointWithUnCertaintyEllipse-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+GA-Polygon ::= SEQUENCE (SIZE (1..maxNrOfPoints)) OF
+	SEQUENCE {
+		geographicalCoordinates	GeographicalCoordinates,
+		iE-Extensions		ProtocolExtensionContainer { {GA-Polygon-ExtIEs} } OPTIONAL,
+		...
+	}
+
+GA-Polygon-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+GA-UncertaintyEllipse ::= SEQUENCE {
+	uncertaintySemi-major	INTEGER (0..127),
+	uncertaintySemi-minor	INTEGER (0..127),
+	orientationOfMajorAxis	INTEGER (0..179), 	-- The values 90..179 shall not be used.
+	...
+}
+
+GERAN-BSC-Container				::= OCTET STRING
+	-- GERAN BSC Container as defined in TS 48.008 [11] --
+
+
+GERAN-Cell-ID ::= SEQUENCE {
+	lAI		LAI,
+	rAC		RAC,
+	cI		CI,
+	iE-Extensions	ProtocolExtensionContainer { {GERAN-Cell-ID-ExtIEs} } OPTIONAL
+}
+
+GERAN-Cell-ID-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+GERAN-Classmark	 				::= OCTET STRING
+	-- GERAN Classmark as defined in TS 48.008 [11] --
+
+GlobalCN-ID ::= SEQUENCE {
+	pLMNidentity	PLMNidentity,
+	cN-ID		CN-ID
+}
+
+
+GlobalRNC-ID ::= SEQUENCE {
+	pLMNidentity	PLMNidentity,
+	rNC-ID		RNC-ID
+}
+
+GTP-TEI	::= OCTET STRING (SIZE (4))
+
+GuaranteedBitrate ::= INTEGER (0..16000000)
+-- Unit is bits per sec
+
+-- H
+
+HigherBitratesThan16MbpsFlag ::= ENUMERATED{
+	allowed,
+	not-allowed,
+	...
+}
+
+HS-DSCH-MAC-d-Flow-ID	::= INTEGER (0.. maxNrOfHSDSCHMACdFlows-1)
+
+-- I
+
+
+IMEI	::= OCTET STRING (SIZE (8))
+-- Reference: 23.003
+
+IMEIGroup	::= SEQUENCE {
+	iMEI		IMEI,
+	iMEIMask	BIT STRING (SIZE (7)),
+	iE-Extensions	ProtocolExtensionContainer { { IMEIGroup-ExtIEs} } OPTIONAL
+}
+
+IMEIGroup-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+IMEIList	::= SEQUENCE (SIZE (1..maxNrOfUEsToBeTraced)) OF IMEI
+
+IMEISV		::= OCTET STRING (SIZE (8))
+-- Reference: 23.003
+
+IMEISVGroup	::= SEQUENCE {
+	iMEISV		IMEISV,
+	iMEISVMask	BIT STRING (SIZE (7)),
+	iE-Extensions	ProtocolExtensionContainer { { IMEISVGroup-ExtIEs} } OPTIONAL
+}
+
+IMEISVGroup-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+IMEISVList	::= SEQUENCE (SIZE (1..maxNrOfUEsToBeTraced)) OF IMEISV
+
+ImmediateMDT	::= SEQUENCE {
+	measurementsToActivate	MeasurementsToActivate,
+	m1report		M1Report				OPTIONAL,
+	-- Included in case of event-triggered reporting for measurement M1
+	m2report		M2Report				OPTIONAL,
+	-- Included in case of event-triggered reporting for measurement M2
+	...,
+	iE-Extensions		ProtocolExtensionContainer { { ImmediateMDT-ExtIEs} } OPTIONAL
+}
+
+ImmediateMDT-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {	
+	{ID id-M4Report		CRITICALITY ignore	EXTENSION M4Report		PRESENCE optional}|
+	-- Included in case that measurement M4 is activated
+	{ID id-M5Report		CRITICALITY ignore	EXTENSION M5Report		PRESENCE optional}|
+	-- Included in case that measurement M5 is activated
+	{ID id-M6Report		CRITICALITY ignore	EXTENSION M6Report		PRESENCE optional}|
+	-- Included in case that measurement M6 is activated
+	{ID id-M7Report		CRITICALITY ignore	EXTENSION M7Report		PRESENCE optional},
+	-- Included in case that measurement M7 is activated
+	...
+}
+
+IMSI	::= TBCD-STRING (SIZE (3..8))
+-- Reference: 23.003
+
+IncludeVelocity		::= ENUMERATED {
+	requested
+}
+
+InformationExchangeID ::= INTEGER (0.. 1048575)
+
+InformationExchangeType ::= ENUMERATED {
+	transfer,
+	request,
+	...
+}
+
+InformationRequested ::= CHOICE {
+	requestedMBMSIPMulticastAddressandAPNRequest	RequestedMBMSIPMulticastAddressandAPNRequest,
+	requestedMulticastServiceList			RequestedMulticastServiceList,
+	...
+}
+
+
+InformationRequestType ::= CHOICE {
+	mBMSIPMulticastAddressandAPNRequest		MBMSIPMulticastAddressandAPNRequest,
+	permanentNAS-UE-ID				PermanentNAS-UE-ID,
+	...
+}
+
+InformationTransferID ::= INTEGER (0.. 1048575)
+
+InformationTransferType ::= CHOICE {
+	rNCTraceInformation			RNCTraceInformation,
+	...
+}
+
+IntegrityProtectionAlgorithm		::= INTEGER {
+	standard-UMTS-integrity-algorithm-UIA1 (0), standard-UMTS-integrity-algorithm-UIA2 (1),
+	no-value (15)
+} (0..15)
+
+IntegrityProtectionInformation ::= SEQUENCE {
+	permittedAlgorithms		PermittedIntegrityProtectionAlgorithms,
+	key				IntegrityProtectionKey,
+	iE-Extensions			ProtocolExtensionContainer { {IntegrityProtectionInformation-ExtIEs} } OPTIONAL
+}
+
+IntegrityProtectionInformation-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+IntegrityProtectionKey			::= BIT STRING (SIZE (128))
+
+InterSystemInformationTransferType ::= CHOICE {
+	rIM-Transfer			RIM-Transfer,
+	...
+}
+
+InterSystemInformation-TransparentContainer ::= SEQUENCE {
+	downlinkCellLoadInformation	CellLoadInformation		OPTIONAL,
+	uplinkCellLoadInformation	CellLoadInformation		OPTIONAL,
+	iE-Extensions			ProtocolExtensionContainer { { InterSystemInformation-TransparentContainer-ExtIEs} } OPTIONAL,
+	...
+}
+
+InterSystemInformation-TransparentContainer-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+...
+}
+
+IPMulticastAddress ::= OCTET STRING (SIZE (4..16))
+-- Reference: 23.003
+
+IuSignallingConnectionIdentifier	::= BIT STRING (SIZE (24))
+
+IuTransportAssociation ::= CHOICE {
+	gTP-TEI				GTP-TEI,
+	bindingID			BindingID,
+	...
+}
+
+-- J
+-- K
+
+KeyStatus	::= ENUMERATED {
+	old,
+	new,
+	...
+}
+-- L
+
+LA-LIST ::= SEQUENCE (SIZE (1..maxNrOfLAs)) OF
+	SEQUENCE {
+		lAC			LAC,
+		listOF-SNAs		ListOF-SNAs,
+		iE-Extensions		ProtocolExtensionContainer { { LA-LIST-ExtIEs} } OPTIONAL,
+		...
+	}
+
+LA-LIST-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+LAC					::= OCTET STRING (SIZE (2))
+
+LAI ::= SEQUENCE {
+	pLMNidentity			PLMNidentity,
+	lAC				LAC,
+	iE-Extensions			ProtocolExtensionContainer { {LAI-ExtIEs} } OPTIONAL
+}
+
+LAI-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+LastKnownServiceArea	::= SEQUENCE {
+	sAI		SAI,
+	ageOfSAI	INTEGER (0..32767),
+	iE-Extensions	ProtocolExtensionContainer { {LastKnownServiceArea-ExtIEs} } OPTIONAL,	
+	...
+}
+
+LastKnownServiceArea-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+LastVisitedUTRANCell-Item ::= SEQUENCE {
+	uTRAN-CellID		UTRAN-CellID,
+	cellType		CellType,
+	time-UE-StayedInCell	Time-UE-StayedInCell,
+	iE-Extensions		ProtocolExtensionContainer { {LastVisitedUTRANCell-Item-ExtIEs} } OPTIONAL,
+	...
+}
+
+LastVisitedUTRANCell-Item-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Rel-11 to support enhanced granularity for time UE stayed in cell --
+	{ ID id-Time-UE-StayedInCell-EnhancedGranularity	CRITICALITY ignore	EXTENSION Time-UE-StayedInCell-EnhancedGranularity	PRESENCE	optional }|
+	{ ID id-HO-Cause					CRITICALITY ignore	EXTENSION Cause						PRESENCE	optional },
+	...
+}
+
+LHN-ID ::= OCTET STRING (SIZE (32..256))
+
+Links-to-log ::= ENUMERATED {uplink, downlink, both-uplink-and-downlink, ...}
+
+ListOF-SNAs ::= SEQUENCE (SIZE (1..maxNrOfSNAs)) OF SNAC
+
+ListOfInterfacesToTrace ::= SEQUENCE (SIZE (1..maxNrOfInterfaces)) OF InterfacesToTraceItem
+
+InterfacesToTraceItem ::= SEQUENCE {
+	interface	ENUMERATED {iu-cs, iu-ps, iur, iub, uu, ...},
+	iE-Extensions	ProtocolExtensionContainer { {InterfacesToTraceItem-ExtIEs} }	OPTIONAL,
+	...
+}
+
+InterfacesToTraceItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+LoadValue	::= INTEGER (0..100)
+
+LocationRelatedDataRequestType	::= SEQUENCE {
+	requestedLocationRelatedDataType	RequestedLocationRelatedDataType,
+	requestedGPSAssistanceData		RequestedGPSAssistanceData	OPTIONAL,
+	-- This IE shall be present if the Requested Location Related Data Type IE is set to ‘Dedicated Assistance Data for Assisted GPS’ or
+	-- `Dedicated Assistance Data for Assisted GPS and GANSS’
+	...
+}
+
+LocationRelatedDataRequestTypeSpecificToGERANIuMode	::= ENUMERATED {
+	decipheringKeysEOTD,
+	dedicatedMobileAssistedEOTDAssistanceData,
+	dedicatedMobileBasedEOTDAssistanceData,
+	...
+}
+
+LocationReportingTransferInformation	::=	SEQUENCE {
+	reportChangeOfSAI		ReportChangeOfSAI		OPTIONAL,
+	periodicReportingIndicator	PeriodicReportingIndicator	OPTIONAL,
+	directReportingIndicator	DirectReportingIndicator	OPTIONAL,
+	verticalAccuracyCode		VerticalAccuracyCode		OPTIONAL,
+	positioningPriorityChangeSAI	PositioningPriority		OPTIONAL,
+	positioningPriorityDirect	PositioningPriority		OPTIONAL,
+	clientTypePeriodic		ClientType			OPTIONAL,
+	clientTypeDirect		ClientType			OPTIONAL,
+	responseTime			ResponseTime			OPTIONAL,
+	includeVelocity			IncludeVelocity			OPTIONAL,
+	periodicLocationInfo		PeriodicLocationInfo		OPTIONAL,
+	iE-Extensions		ProtocolExtensionContainer { { LocationReportingTransferInformation-ExtIEs } }		OPTIONAL,
+	...
+}
+
+LocationReportingTransferInformation-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+ReportChangeOfSAI ::=	ENUMERATED {
+	requested,
+	...
+}
+
+PeriodicReportingIndicator ::=	ENUMERATED {
+	periodicSAI,
+	periodicGeo,
+	...
+}
+
+DirectReportingIndicator ::=	ENUMERATED {
+	directSAI,
+	directGeo,
+	...
+}
+
+L3-Information	::= OCTET STRING
+
+-- M
+
+M1Report	::= CHOICE {
+	periodic			MDT-Report-Parameters,
+	event1F				Event1F-Parameters,
+	...
+}
+
+M2Report	::= CHOICE {
+	periodic			MDT-Report-Parameters,
+	event1I				Event1I-Parameters,
+	...
+}
+
+M4Report	::= CHOICE {
+	all				NULL,
+	m4-collection-parameters	M4-Collection-Parameters,
+	...
+}
+
+M4-Collection-Parameters ::= SEQUENCE {
+	m4-period	M4-Period,
+	m4-threshold	M4-Threshold	OPTIONAL,
+	iE-Extensions	ProtocolExtensionContainer { { M4-Collection-Parameters-ExtIEs} } OPTIONAL,
+	...
+}
+
+M4-Collection-Parameters-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+M4-Period  ::= ENUMERATED {ms100, ms250, ms500, ms1000, ms2000, ms3000, ms4000, ms6000, ...}
+
+
+M4-Threshold ::= INTEGER (0..31)
+
+
+M5Report	::= CHOICE {
+	when-available	NULL,
+	m5-period	M5-Period,
+	...
+}
+M5-Period ::= ENUMERATED {ms100, ms250, ms500, ms1000, ms2000, ms3000, ms4000, ms6000, ...}
+
+
+
+M6Report ::= SEQUENCE {
+	m6-period	M6-Period,
+	m6-links-to-log	Links-to-log,
+	iE-Extensions	ProtocolExtensionContainer { { M6Report-ExtIEs} } OPTIONAL,
+	...
+}
+
+M6Report-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+M6-Period ::= ENUMERATED {ms1000, ms2000, ms3000, ms4000, ms6000, ms8000, ms12000, ms16000, ms20000, ms24000, ms28000, ms32000, ms64000, ...}
+
+M7Report ::= SEQUENCE {
+	m7-period	M7-Period,
+	m7-links-to-log	Links-to-log,
+	iE-Extensions	ProtocolExtensionContainer { { M7Report-ExtIEs} } OPTIONAL,
+	...
+}
+
+M7Report-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+M7-Period ::= ENUMERATED {ms1000, ms2000, ms3000, ms4000, ms6000, ms8000, ms12000, ms16000, ms20000, ms24000, ms28000, ms32000, ms64000, ...}
+
+Management-Based-MDT-Allowed ::= ENUMERATED { 
+	allowed, ... }
+
+MaxBitrate				::= INTEGER (1..16000000)
+-- Unit is bits per sec
+
+MaxSDU-Size				::= INTEGER (0..32768)
+-- MaxSDU-Size
+-- Unit isBIT STRING (SIZE (8))
+
+MBMS-PTP-RAB-ID ::= BIT STRING (SIZE (8))
+
+MBMSBearerServiceType ::= ENUMERATED {
+	multicast,
+	broadcast,
+	...
+}
+
+MBMSCNDe-Registration ::= ENUMERATED {
+	normalsessionstop,
+	deregister,
+	...
+}
+
+
+MBMSCountingInformation ::= ENUMERATED {
+	counting,
+	notcounting,
+	...
+}
+
+MBMSHCIndicator ::= ENUMERATED {
+	uncompressed-header,
+	compressed-header,
+	...
+}
+
+MBMSIPMulticastAddressandAPNRequest ::= SEQUENCE (SIZE (1..maxnoofMulticastServicesPerRNC)) OF
+	TMGI
+
+MBMSLinkingInformation ::= ENUMERATED {
+	uE-has-joined-multicast-services,
+	...
+}
+
+MBMSRegistrationRequestType ::= ENUMERATED {
+	register,
+	deregister,
+	...
+}
+
+MBMSServiceArea ::= OCTET STRING
+
+MBMSSessionDuration ::= OCTET STRING (SIZE (3))
+
+
+
+MBMSSessionIdentity ::= OCTET STRING (SIZE (1))
+
+MBMSSessionRepetitionNumber ::= OCTET STRING (SIZE (1))
+
+MDT-Activation	::= ENUMERATED {
+	immediateMDTonly,
+	loggedMDTonly,
+	immediateMDTandTrace,
+	...
+}
+
+MDTAreaScope ::= CHOICE {
+	cellbased	CellBased,
+	labased		LABased,
+	rabased		RABased,
+	plmn-area-based	NULL,
+	...
+}
+
+MDT-Configuration	::= SEQUENCE {
+	mdtActivation		MDT-Activation,
+	mdtAreaScope		MDTAreaScope,
+	mdtMode			MDTMode,
+	iE-Extensions		ProtocolExtensionContainer { { MDT-Configuration-ExtIEs} } OPTIONAL,
+	...
+}
+
+MDT-Configuration-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	{ ID id-SignallingBasedMDTPLMNList	CRITICALITY ignore	EXTENSION MDT-PLMN-List		PRESENCE optional },
+...
+}
+
+MDTMode	::= CHOICE {
+	immediateMDT		ImmediateMDT,
+	loggedMDT		LoggedMDT,
+	...
+}
+
+MDT-PLMN-List ::= SEQUENCE (SIZE (1..maxnoofMDTPLMNs)) OF PLMNidentity
+
+MDT-Report-Parameters ::= SEQUENCE {
+	reportInterval	ReportInterval,
+	reportAmount	ReportAmount,
+	...
+}
+
+MeasurementQuantity ::= ENUMERATED {
+	cpichEcNo,
+	cpichRSCP,
+	pathloss,
+	...
+}
+
+MeasurementsToActivate::= BIT STRING (SIZE (8))
+
+MSISDN ::= OCTET STRING (SIZE (1..9))
+
+-- N
+
+
+NAS-PDU				::= OCTET STRING
+
+NAS-SequenceNumber		::= BIT STRING (SIZE (2))
+-- Reference: 24.008
+
+NAS-SynchronisationIndicator	::= BIT STRING (SIZE (4))
+
+NewBSS-To-OldBSS-Information	::= OCTET STRING
+
+NonSearchingIndication ::= ENUMERATED {
+	non-searching,
+	searching
+}
+
+NRTLoadInformationValue	::= INTEGER (0..3)
+
+NumberOfIuInstances	::= INTEGER (1..2)
+
+NumberOfSteps		::= INTEGER (1..16)
+
+-- O
+
+Offload-RAB-Parameters ::= SEQUENCE {
+	accessPointName			Offload-RAB-Parameters-APN,
+	chargingCharacteristics		Offload-RAB-Parameters-ChargingCharacteristics,
+	iE-Extensions			ProtocolExtensionContainer { { Offload-RAB-Parameters-ExtIEs} } 	OPTIONAL,
+	...
+}
+
+Offload-RAB-Parameters-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+Offload-RAB-Parameters-APN ::= OCTET STRING (SIZE (1..255))
+
+Offload-RAB-Parameters-ChargingCharacteristics ::= OCTET STRING (SIZE (2))
+
+OldBSS-ToNewBSS-Information		::= OCTET STRING
+
+OMC-ID					::= OCTET STRING (SIZE (3..22))
+-- Reference: GSM TS 12.20 [25]
+
+Out-Of-UTRAN ::= ENUMERATED{
+	cell-reselection-to-EUTRAN,
+	...
+}
+
+-- P
+
+PagingAreaID ::= CHOICE {
+	lAI				LAI,
+	rAI				RAI,
+	...
+}
+
+PagingCause ::= ENUMERATED {
+	terminating-conversational-call,
+	terminating-streaming-call,
+	terminating-interactive-call,
+	terminating-background-call,
+	terminating-low-priority-signalling,
+	...,
+	terminating-high-priority-signalling
+}
+
+PDP-TypeInformation ::= SEQUENCE (SIZE (1..maxNrOfPDPDirections)) OF
+	PDP-Type
+
+PDP-Type ::= ENUMERATED {
+	empty,
+	ppp,
+	osp-ihoss	-- this value shall not be used -- ,
+	ipv4,
+	ipv6,
+	...
+}
+
+PDP-TypeInformation-extension ::= SEQUENCE (SIZE (1..maxNrOfPDPDirections)) OF
+	PDP-Type-extension
+
+PDP-Type-extension ::= ENUMERATED {
+	ipv4-and-ipv6,
+	...
+}
+
+PDUType14FrameSequenceNumber		::=	INTEGER(0..3)
+
+PeriodicLocationInfo ::= SEQUENCE {
+	reportingAmount		INTEGER (1..8639999, ...),
+	reportingInterval	INTEGER (1..8639999, ...),
+	iE-Extensions		ProtocolExtensionContainer { { PeriodicLocationInfo-ExtIEs } }	OPTIONAL,
+	...
+}
+
+PeriodicLocationInfo-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+PermanentNAS-UE-ID ::= CHOICE {
+	iMSI			IMSI,
+	...
+}
+
+PermittedEncryptionAlgorithms ::= SEQUENCE (SIZE (1..16)) OF
+	EncryptionAlgorithm
+
+PermittedIntegrityProtectionAlgorithms ::= SEQUENCE (SIZE (1..16)) OF
+	IntegrityProtectionAlgorithm
+
+LABased	::= SEQUENCE {
+	laiList			LAI-List,
+	iE-Extensions		ProtocolExtensionContainer { {LABased-ExtIEs} } OPTIONAL,
+	...
+}
+
+LABased-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+LAI-List	::= SEQUENCE (SIZE (1..maxNrOfLAIs)) OF
+	LAI
+
+
+
+LoggedMDT	::=	SEQUENCE {
+	loggingInterval		LoggingInterval,
+	loggingDuration		LoggingDuration,
+	iE-Extensions		ProtocolExtensionContainer { {LoggedMDT-ExtIEs} } OPTIONAL,
+	...
+}
+
+LoggedMDT-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+LoggingInterval	::=	ENUMERATED {
+	s1d28,
+	s2d56,
+	s5d12,
+	s10d24,
+	s20d48,
+	s30d72,
+	s40d96,
+	s61d44,
+	...
+	}
+
+LoggingDuration	::=	ENUMERATED {
+		min10,
+		min20,
+		min40,
+		min60,
+		min90,
+		min120,
+...}
+
+
+
+PLMNidentity 				::= TBCD-STRING (SIZE (3))
+
+PLMNs-in-shared-network ::= SEQUENCE (SIZE (1..maxNrOfPLMNsSN)) OF
+	SEQUENCE {
+		pLMNidentity	PLMNidentity,
+		lA-LIST		LA-LIST,
+		iE-Extensions	ProtocolExtensionContainer { { PLMNs-in-shared-network-ExtIEs} } OPTIONAL,
+		...
+	}
+
+PLMNs-in-shared-network-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+Port-Number ::= OCTET STRING (SIZE (2))
+
+PositioningDataDiscriminator ::= BIT STRING (SIZE(4))
+
+PositioningDataSet ::= SEQUENCE(SIZE(1..maxSet)) OF PositioningMethodAndUsage
+
+PositioningMethodAndUsage ::= OCTET STRING (SIZE(1))
+
+PositioningPriority	::= ENUMERATED {
+	high-Priority,
+	normal-Priority,
+...
+}
+
+PositionData ::= SEQUENCE {
+	positioningDataDiscriminator	PositioningDataDiscriminator,
+	positioningDataSet		PositioningDataSet			OPTIONAL,
+-- This IE shall be present if the PositioningDataDiscriminator IE is set to the value "0000" --
+	iE-Extensions			ProtocolExtensionContainer { {PositionData-ExtIEs} } OPTIONAL,
+	...
+}
+
+PositionData-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	{ ID id-GANSS-PositioningDataSet	CRITICALITY ignore	EXTENSION GANSS-PositioningDataSet				PRESENCE optional },
+	...
+}
+
+PositionDataSpecificToGERANIuMode ::= OCTET STRING
+
+Pre-emptionCapability ::= ENUMERATED {
+	shall-not-trigger-pre-emption,
+	may-trigger-pre-emption
+}
+
+Pre-emptionVulnerability ::= ENUMERATED {
+	not-pre-emptable,
+	pre-emptable
+}
+
+PriorityLevel	::= INTEGER { spare (0), highest (1), lowest (14), no-priority (15) } (0..15)
+
+Priority-Class-Indicator ::= BIT STRING (SIZE(8))
+
+ProvidedData ::= CHOICE {
+	shared-network-information	Shared-Network-Information,
+	...
+}
+
+P-TMSI	::= OCTET STRING (SIZE (4))
+
+-- Q
+
+QueuingAllowed ::= ENUMERATED {
+	queueing-not-allowed,
+	queueing-allowed
+}
+
+-- R
+RAB-AsymmetryIndicator::= ENUMERATED {
+	symmetric-bidirectional,
+	asymmetric-unidirectional-downlink,
+	asymmetric-unidirectional-uplink,
+	asymmetric-bidirectional,
+	...
+}
+
+RABased	::= SEQUENCE {
+	raiList		RAI-List,
+	iE-Extensions	ProtocolExtensionContainer { {RABased-ExtIEs} } OPTIONAL,
+	...
+}
+
+RABased-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+RAI-List	::= SEQUENCE (SIZE (1..maxNrOfRAIs)) OF
+	RAI
+
+RABDataVolumeReport ::= SEQUENCE (SIZE (1..maxNrOfVol)) OF
+	SEQUENCE {
+		dl-UnsuccessfullyTransmittedDataVolume	UnsuccessfullyTransmittedDataVolume,
+		dataVolumeReference			DataVolumeReference	OPTIONAL,
+		iE-Extensions				ProtocolExtensionContainer { {RABDataVolumeReport-ExtIEs} }		OPTIONAL,
+		...
+	}
+
+RABDataVolumeReport-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RAB-ID	::= BIT STRING (SIZE (8))
+
+RAB-Parameter-ExtendedGuaranteedBitrateList	::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF ExtendedGuaranteedBitrate
+
+RAB-Parameter-ExtendedMaxBitrateList		::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF ExtendedMaxBitrate
+
+
+RAB-Parameter-GuaranteedBitrateList	::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF GuaranteedBitrate
+--This IE shall be ignored if Supported Guaranteed Bit rate is present--
+
+RAB-Parameter-MaxBitrateList		::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF MaxBitrate
+--This IE shall be ignored if Supported Maximum Bit rate is present--
+
+RAB-Parameters ::= SEQUENCE {
+	trafficClass			TrafficClass,
+	rAB-AsymmetryIndicator		RAB-AsymmetryIndicator,
+	maxBitrate			RAB-Parameter-MaxBitrateList,
+	guaranteedBitRate		RAB-Parameter-GuaranteedBitrateList OPTIONAL
+	-- This IE shall be present the traffic class IE is set to "Conversational" or "Streaming" --,
+	deliveryOrder			DeliveryOrder,
+	maxSDU-Size			MaxSDU-Size,
+	sDU-Parameters			SDU-Parameters,
+	transferDelay			TransferDelay OPTIONAL
+	-- This IE shall be present the traffic class IE is set to "Conversational" or "Streaming" --,
+	trafficHandlingPriority		TrafficHandlingPriority OPTIONAL
+	-- This IE shall be present the traffic class IE is set to "Interactive" --,
+	allocationOrRetentionPriority	AllocationOrRetentionPriority OPTIONAL,
+	sourceStatisticsDescriptor	SourceStatisticsDescriptor OPTIONAL
+	-- This IE shall be present the traffic class IE is set to "Conversational" or "Streaming" --,
+	relocationRequirement	RelocationRequirement OPTIONAL,
+	iE-Extensions			ProtocolExtensionContainer { {RAB-Parameters-ExtIEs} } OPTIONAL,
+	...
+}
+
+RAB-Parameters-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 5 to enable indication that Interactive User Plane data is of a signalling nature --
+	{ ID id-SignallingIndication	CRITICALITY ignore		EXTENSION SignallingIndication		PRESENCE optional }|
+-- Extension for Release 7 to indicate an Extended Guaranteed Bitrate --
+{ ID id-RAB-Parameter-ExtendedGuaranteedBitrateList	CRITICALITY reject	EXTENSION RAB-Parameter-ExtendedGuaranteedBitrateList		PRESENCE optional }|
+-- Extension for Release 7 to indicate an Extended Maximum Bitrate --
+{ ID id-RAB-Parameter-ExtendedMaxBitrateList	CRITICALITY reject		EXTENSION RAB-Parameter-ExtendedMaxBitrateList		PRESENCE optional }|
+-- Extension for Release 8 to indicate an Supported Maximum Bitrate --
+{ ID id-RAB-Parameter-SupportedMaxBitrateList	CRITICALITY reject		EXTENSION SupportedRAB-ParameterBitrateList		PRESENCE optional }|
+-- Extension for Release 8 to indicate an Supported Guaranteed Bitrate --
+{ ID id-RAB-Parameter-SupportedGuaranteedBitrateList	CRITICALITY reject	EXTENSION SupportedRAB-ParameterBitrateList		PRESENCE optional },
+	...
+}
+
+RABParametersList	::=	SEQUENCE (SIZE (1.. maxNrOfRABs)) OF SEQUENCE	{
+	rab-Id			RAB-ID,
+	cn-domain		CN-DomainIndicator,
+	rabDataVolumeReport	RABDataVolumeReport	OPTIONAL,
+	upInformation		UPInformation	OPTIONAL,
+	iE-Extensions		ProtocolExtensionContainer { { RABParametersList-ExtIEs } }		OPTIONAL,
+	...
+}
+
+RABParametersList-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RAB-SubflowCombinationBitRate 	::= INTEGER (0..16000000)
+
+RAB-TrCH-Mapping ::=	SEQUENCE ( SIZE (1..maxNrOfRABs)) OF
+	RAB-TrCH-MappingItem
+
+RAB-TrCH-MappingItem ::= SEQUENCE {
+	rAB-ID		RAB-ID,
+	trCH-ID-List	TrCH-ID-List,
+	iE-Extensions	ProtocolExtensionContainer { { RAB-TrCH-MappingItem-ExtIEs} } OPTIONAL,
+	...
+}
+
+RAB-TrCH-MappingItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 99 to enable transfer of RAB Subflow mapping onto Iur transport channel Ids for a given indicated domain --
+	{	ID id-CN-DomainIndicator	CRITICALITY ignore		EXTENSION CN-DomainIndicator	PRESENCE optional	},
+	...
+}
+
+RAC ::= OCTET STRING (SIZE (1))
+
+RAI ::= SEQUENCE {
+	lAI		LAI,
+	rAC		RAC,
+	iE-Extensions	ProtocolExtensionContainer { {RAI-ExtIEs} } OPTIONAL,
+	...
+}
+
+RAI-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RAListofIdleModeUEs ::= CHOICE {
+	notEmptyRAListofIdleModeUEs	NotEmptyRAListofIdleModeUEs,
+	emptyFullRAListofIdleModeUEs	ENUMERATED {emptylist,fulllist,...},
+	...
+}
+
+NotEmptyRAListofIdleModeUEs ::= SEQUENCE {
+	rAofIdleModeUEs	RAofIdleModeUEs,
+	iE-Extensions	ProtocolExtensionContainer { {NotEmptyRAListofIdleModeUEs-ExtIEs} } OPTIONAL
+}
+
+RAofIdleModeUEs ::= SEQUENCE (SIZE (1..maxMBMSRA)) OF
+	RAC
+
+NotEmptyRAListofIdleModeUEs-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+{ ID id-LAofIdleModeUEs		CRITICALITY reject	EXTENSION LAListofIdleModeUEs PRESENCE conditional },
+	-- This IE shall be present if the RA of Idle Mode UEs IE is included. --
+	...
+}
+
+LAListofIdleModeUEs ::= SEQUENCE (SIZE (1..maxMBMSRA)) OF
+	LAI
+
+RAT-Type ::= ENUMERATED {
+	utran,
+	geran,
+	...
+}
+
+RateControlAllowed ::= ENUMERATED {
+	not-allowed,
+	allowed
+}
+
+RedirectAttemptFlag 	::= NULL
+
+RedirectionCompleted	::= ENUMERATED {
+	redirection-completed,
+	...
+}
+
+RejectCauseValue ::= ENUMERATED {
+	pLMN-Not-Allowed,
+	location-Area-Not-Allowed,
+	roaming-Not-Allowed-In-This-Location-Area,
+	no-Suitable-Cell-In-Location-Area,
+	gPRS-Services-Not-Allowed-In-This-PLMN,
+	cS-PS-coordination-required,
+	...,
+	network-failure,
+	not-authorized-for-this-CSG
+}
+
+
+RelocationRequirement ::= ENUMERATED {
+	lossless,
+	none,
+	...,
+	realtime
+}
+
+RelocationType ::= ENUMERATED {
+	ue-not-involved,
+	ue-involved,
+	...
+}
+
+RepetitionNumber0 ::= INTEGER (0..255)
+
+RepetitionNumber1 ::= INTEGER (1..256)
+
+
+ReportArea ::= ENUMERATED {
+	service-area,
+	geographical-area,
+	...
+}
+
+ReportInterval		::=	ENUMERATED {
+	ms250,
+	ms500,
+	ms1000,
+	ms2000,
+	ms3000,
+	ms4000,
+	ms6000,
+	ms12000,
+	ms16000,
+	ms20000,
+	ms24000,
+	ms32000,
+	ms64000,
+	...,
+	ms8000,
+	ms28000
+}
+
+ReportAmount		::=	ENUMERATED { n1, n2, n4, n8, n16, n32, n64, infinity, ... }
+
+RequestedGPSAssistanceData 	::= OCTET STRING (SIZE (1 .. 38 ))
+	-- gpsAssistanceData as defined in 24.080 --
+
+RequestedGANSSAssistanceData 	::= OCTET STRING (SIZE (1 .. 201 ))
+	-- ganssAssistanceData as defined in 24.080 --
+
+RequestedLocationRelatedDataType ::= ENUMERATED {
+	decipheringKeysUEBasedOTDOA,
+	decipheringKeysAssistedGPS,
+	dedicatedAssistanceDataUEBasedOTDOA,
+	dedicatedAssistanceDataAssistedGPS,
+	...,
+-- Release 7 extension elements --
+	decipheringKeysAssistedGANSS,
+	dedicatedAssistanceDataAssistedGANSS,
+	decipheringKeysAssistedGPSandGANSS,
+	dedicatedAssistanceDataAssistedGPSandGANSS
+}
+
+RequestedMBMSIPMulticastAddressandAPNRequest ::= SEQUENCE (SIZE (1..maxnoofMulticastServicesPerRNC)) OF
+	MBMSIPMulticastAddressandAPNlist
+
+MBMSIPMulticastAddressandAPNlist ::= SEQUENCE {
+	tMGI			TMGI,
+	iPMulticastAddress	IPMulticastAddress,
+	aPN			APN,
+	iE-Extensions		ProtocolExtensionContainer { {MBMSIPMulticastAddressandAPNlist-ExtIEs} } 	OPTIONAL,
+	...
+}
+
+MBMSIPMulticastAddressandAPNlist-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RequestedMulticastServiceList ::= SEQUENCE (SIZE (1.. maxnoofMulticastServicesPerUE)) OF
+	TMGI
+
+Requested-RAB-Parameter-Values ::= SEQUENCE {
+	requestedMaxBitrates		Requested-RAB-Parameter-MaxBitrateList			OPTIONAL,
+	requestedGuaranteedBitrates	Requested-RAB-Parameter-GuaranteedBitrateList			OPTIONAL,
+	iE-Extensions			ProtocolExtensionContainer { { Requested-RAB-Parameter-Values-ExtIEs} } 	OPTIONAL,
+	...
+}
+
+Requested-RAB-Parameter-Values-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 6 to enable RNC to request the execution of an alternative RAB configuration --
+	{ ID id-AlternativeRABConfigurationRequest		CRITICALITY ignore	EXTENSION AlternativeRABConfigurationRequest	PRESENCE optional }|
+-- Extension for Release 7 to request an Extended Maximum Bitrate --
+	{ ID id-Requested-RAB-Parameter-ExtendedMaxBitrateList		CRITICALITY reject	EXTENSION Requested-RAB-Parameter-ExtendedMaxBitrateList	PRESENCE optional }|
+-- Extension for Release 7 to request an Extended Guaranteed Bitrate --
+	{ ID id-Requested-RAB-Parameter-ExtendedGuaranteedBitrateList	CRITICALITY reject	EXTENSION Requested-RAB-Parameter-ExtendedGuaranteedBitrateList	PRESENCE optional }|
+-- Extension for Release 8 to request an Supported Maximum Bitrate --
+	{ ID id-Requested-RAB-Parameter-SupportedMaxBitrateList		CRITICALITY reject	EXTENSION SupportedRAB-ParameterBitrateList		PRESENCE optional }|
+-- Extension for Release 8 to request an Supported Guaranteed Bitrate --
+	{ ID id-Requested-RAB-Parameter-SupportedGuaranteedBitrateList CRITICALITY reject	EXTENSION SupportedRAB-ParameterBitrateList		PRESENCE optional },
+	...
+}
+
+Requested-RAB-Parameter-ExtendedMaxBitrateList ::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF ExtendedMaxBitrate
+
+Requested-RAB-Parameter-ExtendedGuaranteedBitrateList	::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF ExtendedGuaranteedBitrate
+
+Requested-RAB-Parameter-MaxBitrateList ::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF MaxBitrate
+
+Requested-RAB-Parameter-GuaranteedBitrateList	::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF GuaranteedBitrate
+
+
+RequestType ::= SEQUENCE {
+	event		Event,
+	reportArea	ReportArea,
+	accuracyCode	INTEGER (0..127)	OPTIONAL,
+	...
+}
+
+ResidualBitErrorRatio ::= SEQUENCE {
+	mantissa	INTEGER (1..9),
+	exponent	INTEGER (1..8),
+	iE-Extensions	ProtocolExtensionContainer { {ResidualBitErrorRatio-ExtIEs} } OPTIONAL
+}
+-- ResidualBitErrorRatio = mantissa * 10^-exponent
+
+ResidualBitErrorRatio-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+ResponseTime	::= ENUMERATED {
+	lowdelay,
+	delaytolerant,
+	...
+}
+
+RIMInformation	::= OCTET STRING
+
+RIM-Transfer ::= SEQUENCE {
+	rIMInformation		RIMInformation,
+	rIMRoutingAddress	RIMRoutingAddress	OPTIONAL,
+	iE-Extensions		ProtocolExtensionContainer { {RIM-Transfer-ExtIEs} } OPTIONAL
+}
+
+RIM-Transfer-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RIMRoutingAddress ::= CHOICE {
+	targetRNC-ID		TargetRNC-ID,
+	gERAN-Cell-ID		GERAN-Cell-ID,
+	... ,
+	targeteNB-ID		TargetENB-ID
+}
+
+
+RNC-ID	::= INTEGER (0..4095)
+-- RNC-ID					::= BIT STRING (SIZE (12))
+-- Harmonized with RNSAP and NBAP definitions
+
+
+RNCTraceInformation::= SEQUENCE {
+	traceReference			TraceReference,
+	traceActivationIndicato		ENUMERATED {activated,deactivated},
+	equipmentsToBeTraced		EquipmentsToBeTraced						OPTIONAL,
+	-- This IE shall be present if the Trace Activation Indicator IE is set to "Activated".
+	iE-Extensions			ProtocolExtensionContainer { { RNCTraceInformation-ExtIEs} }	OPTIONAL
+}
+
+RNCTraceInformation-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 11 to enable anonymization MDT for area based MDT --
+	{ID id-TraceRecordingSessionReference		CRITICALITY ignore	EXTENSION TraceRecordingSessionReference	PRESENCE optional}|
+	{ID id-IMSI					CRITICALITY ignore	EXTENSION IMSI					PRESENCE optional}|
+	{ID id-Trace-Collection-Entity-IP-Addess	CRITICALITY ignore	EXTENSION TransportLayerAddress			PRESENCE optional}|
+	{ID id-Serving-Cell-Identifier			CRITICALITY ignore	EXTENSION UTRAN-CellID				PRESENCE optional},
+	...
+}
+
+RNSAPRelocationParameters ::=	SEQUENCE {
+	rabParmetersList	RABParametersList 			OPTIONAL,
+	locationReporting	LocationReportingTransferInformation	OPTIONAL,
+	traceInformation	TraceInformation 			OPTIONAL,
+	sourceSAI		SAI					OPTIONAL,
+	iE-Extensions		ProtocolExtensionContainer { { RNSAPRelocationParameters-ExtIEs } }	OPTIONAL,
+	...
+}
+
+RNSAPRelocationParameters-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RRC-Container	::= OCTET STRING
+
+RTLoadValue	::= INTEGER (0..100)
+
+RSRVCC-HO-Indication ::= ENUMERATED {
+	ps-only,
+	...
+}
+
+RSRVCC-Information ::= SEQUENCE {
+	nonce		BIT STRING (SIZE (128)),
+	iMSInformation	OCTET STRING(SIZE(1.. maxSizeOfIMSInfo)),
+	iE-Extensions	ProtocolExtensionContainer { { RSRVCC-Information-ExtIEs} } OPTIONAL,
+	...
+
+}
+
+RSRVCC-Information-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RSRVCC-Operation-Possible ::= ENUMERATED {
+	rsrvcc-possible,
+	...
+}
+
+-- S
+
+SAC	::= OCTET STRING (SIZE (2))
+SAI ::= SEQUENCE {
+	pLMNidentity	PLMNidentity,
+	lAC		LAC,
+	sAC		SAC,
+	iE-Extensions	ProtocolExtensionContainer { {SAI-ExtIEs} } OPTIONAL
+}
+
+SAI-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+SAPI ::= ENUMERATED {
+	sapi-0,
+	sapi-3,
+	...
+}
+
+SessionUpdateID ::= INTEGER (0.. 1048575)
+Shared-Network-Information ::= SEQUENCE {
+	pLMNs-in-shared-network		PLMNs-in-shared-network,
+	iE-Extensions			ProtocolExtensionContainer { {Shared-Network-Information-ExtIEs} } OPTIONAL,
+	...
+}
+
+Session-Re-establishment-Indicator	::= ENUMERATED {true, ...}
+
+Shared-Network-Information-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+SignallingIndication ::= ENUMERATED {
+	signalling,
+	...
+}
+
+SDU-ErrorRatio ::= SEQUENCE {
+	mantissa	INTEGER (1..9),
+	exponent	INTEGER (1..6),
+	iE-Extensions	ProtocolExtensionContainer { {SDU-ErrorRatio-ExtIEs} } OPTIONAL
+}
+-- SDU-ErrorRatio = mantissa * 10^-exponent
+
+SDU-ErrorRatio-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+SDU-FormatInformationParameters ::= SEQUENCE (SIZE (1..maxRAB-SubflowCombination)) OF
+	SEQUENCE {
+		subflowSDU-Size			SubflowSDU-Size 	OPTIONAL,
+		rAB-SubflowCombinationBitRate	RAB-SubflowCombinationBitRate 	OPTIONAL,
+		iE-Extensions			ProtocolExtensionContainer { {SDU-FormatInformationParameters-ExtIEs} } OPTIONAL,
+		...
+	}
+
+SDU-FormatInformationParameters-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+SDU-Parameters ::= SEQUENCE (SIZE (1..maxRAB-Subflows)) OF
+	SEQUENCE {
+		sDU-ErrorRatio			SDU-ErrorRatio OPTIONAL
+		-- This IE shall be present if the Delivery Of Erroneous SDU IE is set to "Yes" or "No" --,
+		residualBitErrorRatio		ResidualBitErrorRatio,
+		deliveryOfErroneousSDU		DeliveryOfErroneousSDU,
+		sDU-FormatInformationParameters	SDU-FormatInformationParameters OPTIONAL,
+		iE-Extensions			ProtocolExtensionContainer { {SDU-Parameters-ExtIEs} } OPTIONAL,
+		...
+	}
+
+SDU-Parameters-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+SNA-Access-Information ::= SEQUENCE {
+		authorisedPLMNs	AuthorisedPLMNs,
+		iE-Extensions	ProtocolExtensionContainer { {SNA-Access-Information-ExtIEs} } OPTIONAL,
+		...
+	}
+
+SNA-Access-Information-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+SNAC ::= INTEGER (0..65535)
+
+Service-Handover ::= ENUMERATED {
+	handover-to-GSM-should-be-performed,
+	handover-to-GSM-should-not-be-performed,
+	handover-to-GSM-shall-not-be-performed,
+	...
+}
+
+Source-ToTarget-TransparentContainer ::= OCTET STRING
+-- This IE is a transparent container, the IE shall be encoded not as an OCTET STRING but according to the type specifications of the target system.
+-- Note: In the current version of this specification, this IE may either carry the Source RNC to
+-- Target RNC Transparent Container or the Source eNB to Target eNB Transparent Container IE as
+-- defined in TS 36.413 [49]
+
+SourceeNodeB-ToTargeteNodeB-TransparentContainer ::= OCTET STRING
+
+
+SourceCellID ::= CHOICE {
+	sourceUTRANCellID	SourceUTRANCellID,
+	sourceGERANCellID	CGI,
+	...
+}
+
+SourceBSS-ToTargetBSS-TransparentContainer		::= OCTET STRING
+
+SourceID ::= CHOICE {
+	sourceRNC-ID	SourceRNC-ID,
+	sAI		SAI,
+	...
+}
+
+
+SourceRNC-ID ::= SEQUENCE {
+	pLMNidentity	PLMNidentity,
+	rNC-ID		RNC-ID,
+	iE-Extensions	ProtocolExtensionContainer { {SourceRNC-ID-ExtIEs} } OPTIONAL
+}
+
+SourceRNC-ID-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 7 to indicate extended RNC-ID --
+	{ ID id-ExtendedRNC-ID	CRITICALITY reject	EXTENSION ExtendedRNC-ID		PRESENCE optional	},
+	...
+}
+
+SourceRNC-ToTargetRNC-TransparentContainer ::= SEQUENCE {
+	rRC-Container			RRC-Container,
+	numberOfIuInstances		NumberOfIuInstances,
+	relocationType 			RelocationType,
+	chosenIntegrityProtectionAlgorithm ChosenIntegrityProtectionAlgorithm	OPTIONAL,
+	integrityProtectionKey		IntegrityProtectionKey			OPTIONAL,
+	chosenEncryptionAlgorithForSignalling ChosenEncryptionAlgorithm		OPTIONAL,
+	cipheringKey			EncryptionKey				OPTIONAL,
+	chosenEncryptionAlgorithForCS	ChosenEncryptionAlgorithm		OPTIONAL,
+	chosenEncryptionAlgorithForPS	ChosenEncryptionAlgorithm		OPTIONAL,
+	d-RNTI				D-RNTI 					OPTIONAL
+	-- This IE shall be present if the Relocation type IE is set to "UE not involved in relocation of SRNS" --,
+	targetCellId			TargetCellId				OPTIONAL
+	-- This IE shall be present if the Relocation type IE is set to "UE involved in relocation of SRNS" --,
+	rAB-TrCH-Mapping		RAB-TrCH-Mapping			OPTIONAL,
+	iE-Extensions			ProtocolExtensionContainer { {SourceRNC-ToTargetRNC-TransparentContainer-ExtIEs} } OPTIONAL,
+	...
+}
+
+SourceRNC-ToTargetRNC-TransparentContainer-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 99 to enable transfer of SRB mapping onto Iur transport channel Ids --
+	{ID id-SRB-TrCH-Mapping			CRITICALITY reject	EXTENSION SRB-TrCH-Mapping			PRESENCE optional}|
+-- Extension for Release 5 to enable Inter RAN Load Information Exchange over Iu --
+	{ID id-CellLoadInformationGroup		CRITICALITY ignore	EXTENSION CellLoadInformationGroup		PRESENCE optional}|
+-- Extension for Release 6 to provide Trace Recording Session Information to the Target RNC --
+	{ID id-TraceRecordingSessionInformation	CRITICALITY ignore	EXTENSION TraceRecordingSessionInformation	PRESENCE optional}|
+-- Extension for Release 6 to indicate to the Target RNC that the UE has activated Multicast Service --
+	{ID id-MBMSLinkingInformation		CRITICALITY ignore	EXTENSION MBMSLinkingInformation		PRESENCE optional}|
+	{ID id-d-RNTI-for-NoIuCSUP		CRITICALITY reject	EXTENSION D-RNTI				PRESENCE optional}|
+	{ID id-UE-History-Information		CRITICALITY ignore	EXTENSION UE-History-Information		PRESENCE optional}|
+	{ID id-SubscriberProfileIDforRFP	CRITICALITY ignore	EXTENSION SubscriberProfileIDforRFP		PRESENCE optional}|
+-- Extension for Release 8 to transfer to the Target RNC parameters required for SRVCC operation --
+	{ID id-SRVCC-Information 		CRITICALITY reject	EXTENSION SRVCC-Information			PRESENCE optional}|
+	{ID id-PSRABtobeReplaced 		CRITICALITY reject	EXTENSION RAB-ID				PRESENCE optional}|
+-- Extension for Release 9 to transfer to the Target RNC parameters required for CSFB operation --
+	{ID id-CSFB-Information 		CRITICALITY ignore	EXTENSION CSFB-Information 			PRESENCE optional}|
+-- Extension for Release 10 to indicate to the Target RNC the need of continued IRAT measurement --
+	{ID id-IRAT-Measurement-Configuration	CRITICALITY ignore	EXTENSION IRAT-Measurement-Configuration	PRESENCE optional}|
+-- Extension for Release 10 to indicate Management Based MDT Allowed --
+	{ID id-Management-Based-MDT-Allowed	CRITICALITY ignore	EXTENSION Management-Based-MDT-Allowed		PRESENCE optional}|
+-- Extension for Release 11 to indicate Management Based MDT PLMN List --
+	{ID id-Management-Based-MDT-PLMN-List	CRITICALITY ignore	EXTENSION MDT-PLMN-List				PRESENCE optional}|
+-- Extension for Release 11 to indicate the last E-UTRAN PLMN Identity --
+	{ID id-LastE-UTRANPLMNIdentity		CRITICALITY ignore	EXTENSION PLMNidentity				PRESENCE optional},
+	...
+}
+
+IRAT-Measurement-Configuration ::= SEQUENCE {
+	rSRP				INTEGER (0..97)			OPTIONAL,
+	rSRQ				INTEGER (0..34)			OPTIONAL,
+	iRATmeasurementParameters	IRATmeasurementParameters,
+	iE-Extensions			ProtocolExtensionContainer { {IRAT-Measurement-Configuration-ExtIEs} } OPTIONAL}
+
+IRAT-Measurement-Configuration-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	{ID id-RSRQ-Type		CRITICALITY ignore	EXTENSION RSRQ-Type				PRESENCE optional}|
+	{ID id-RSRQ-Extension		CRITICALITY ignore	EXTENSION RSRQ-Extension			PRESENCE optional},
+	...
+}
+
+IRATmeasurementParameters::= SEQUENCE {
+	measurementDuration	INTEGER (1..100),
+	eUTRANFrequencies	EUTRANFrequencies		OPTIONAL,
+	iE-Extensions		ProtocolExtensionContainer { { IRATmeasurementParameters-ExtIEs} } OPTIONAL}
+
+IRATmeasurementParameters-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RSRQ-Type ::= SEQUENCE {
+	allSymbols		BOOLEAN,
+	wideBand		BOOLEAN
+}
+
+RSRQ-Extension ::= INTEGER (-30..46, ...)
+
+EUTRANFrequencies ::= SEQUENCE (SIZE (1..maxNrOfEUTRAFreqs)) OF SEQUENCE {
+	earfcn			INTEGER (0..65535),
+	measBand		MeasBand			OPTIONAL,
+	iE-Extensions		ProtocolExtensionContainer { {EUTRANFrequencies-ExtIEs} } OPTIONAL}
+
+MeasBand ::= ENUMERATED {
+	v6,
+	v15,
+	v25,
+	v50,
+	v75,
+	v100
+}
+
+EUTRANFrequencies-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	{ ID id-EARFCN-Extended		CRITICALITY reject	EXTENSION EARFCN-Extended		PRESENCE optional},
+	...
+}
+
+SubscriberProfileIDforRFP ::= INTEGER (1..256)
+
+SourceStatisticsDescriptor ::= ENUMERATED {
+	speech,
+	unknown,
+	...
+}
+
+SupportedRAB-ParameterBitrateList ::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF SupportedBitrate
+
+SupportedBitrate ::= INTEGER (1..1000000000, ...)
+-- Unit is bits per sec
+
+SourceUTRANCellID ::= SEQUENCE {
+	pLMNidentity	PLMNidentity,
+	uTRANcellID	TargetCellId,
+	iE-Extensions	ProtocolExtensionContainer { {SourceUTRANCellID-ExtIEs} } OPTIONAL
+}
+
+SourceUTRANCellID-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+SRB-ID ::= INTEGER (1..32)
+
+SRB-TrCH-Mapping ::=	SEQUENCE ( SIZE (1..maxNrOfSRBs)) OF
+	SRB-TrCH-MappingItem
+
+SRB-TrCH-MappingItem ::= SEQUENCE {
+	sRB-ID		SRB-ID,
+	trCH-ID		TrCH-ID,
+	iE-Extensions	ProtocolExtensionContainer { { SRB-TrCH-MappingItem-ExtIEs} } OPTIONAL,
+	...
+}
+
+
+SRB-TrCH-MappingItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+SRVCC-HO-Indication ::= ENUMERATED {
+	ps-and-cs,
+	cs-only,
+	...
+}
+
+SRVCC-Information ::= SEQUENCE {
+	nonce		BIT STRING (SIZE (128)),
+	iE-Extensions	ProtocolExtensionContainer { { SRVCC-Information-ExtIEs} } OPTIONAL,
+	...
+}
+
+SRVCC-Information-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+SRVCC-Operation-Possible ::= ENUMERATED {
+	srvcc-possible,
+	...
+}
+
+SubflowSDU-Size				::= INTEGER (0..4095)
+-- Unit is bit
+
+
+-- T
+TAC ::= OCTET STRING (SIZE (2))
+
+TAI ::= SEQUENCE {
+	pLMNidentity	PLMNidentity,
+	tAC		TAC,
+	iE-Extensions	ProtocolExtensionContainer { {TAI-ExtIEs} } OPTIONAL
+}
+
+TAI-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+Target-ToSource-TransparentContainer ::= OCTET STRING
+-- This IE is a transparent container, the IE shall be encoded not as an OCTET STRING but according to the type specifications of the target system.
+-- Note: In the current version of this specification, this IE may either carry the Target RNC to
+-- Source RNC Transparent Container or the Target eNB to Source eNB Transparent Container IE as
+-- defined in TS 36.413 [49]
+
+TargeteNodeB-ToSourceeNodeB-TransparentContainer ::= OCTET STRING
+
+TargetBSS-ToSourceBSS-TransparentContainer		::= OCTET STRING
+
+TargetCellId		::= INTEGER (0..268435455)
+
+TargetID ::= CHOICE {
+	targetRNC-ID	TargetRNC-ID,
+	cGI		CGI,
+	
+	...,
+	targeteNB-ID	TargetENB-ID
+}
+
+TargetENB-ID ::= SEQUENCE {
+	pLMNidentity	PLMNidentity,
+	eNB-ID		ENB-ID,
+	iE-Extensions	ProtocolExtensionContainer { {TargetENB-ID-ExtIEs} } OPTIONAL,
+	selectedTAI	TAI,
+	...
+}
+
+TargetENB-ID-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+TargetRNC-ID ::= SEQUENCE {
+	lAI		LAI,
+	rAC		RAC 		OPTIONAL,
+	rNC-ID		RNC-ID,
+	iE-Extensions	ProtocolExtensionContainer { {TargetRNC-ID-ExtIEs} } OPTIONAL
+}
+
+TargetRNC-ID-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 7 to indicate extended RNC-ID --
+	{ ID id-ExtendedRNC-ID				CRITICALITY reject	EXTENSION ExtendedRNC-ID		PRESENCE optional	},
+	...
+}
+
+TargetRNC-ToSourceRNC-TransparentContainer ::= SEQUENCE {
+	rRC-Container	RRC-Container,
+	d-RNTI		D-RNTI 		OPTIONAL
+	-- May be included to allow the triggering of the Relocation Detect procedure from the Iur Interface --,
+	iE-Extensions	ProtocolExtensionContainer { {TargetRNC-ToSourceRNC-TransparentContainer-ExtIEs} } OPTIONAL,
+	...
+}
+
+TargetRNC-ToSourceRNC-TransparentContainer-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+TBCD-STRING 		::= OCTET STRING
+
+TemporaryUE-ID ::= CHOICE {
+	tMSI		TMSI,
+	p-TMSI		P-TMSI,
+	...
+}
+
+Time-UE-StayedInCell ::= INTEGER (0..4095)
+
+Time-UE-StayedInCell-EnhancedGranularity ::= INTEGER (0..40950)
+
+TimeToMBMSDataTransfer	::= OCTET STRING(SIZE(1))
+
+TimingDifferenceULDL	::= OCTET STRING (SIZE(1))
+
+TMGI ::= SEQUENCE {
+	pLMNidentity	PLMNidentity,
+	serviceID	OCTET STRING (SIZE (3)),
+	iE-Extensions	ProtocolExtensionContainer { {TMGI-ExtIEs} } OPTIONAL
+}
+
+TMGI-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+TMSI ::= OCTET STRING (SIZE (4))
+
+TraceDepth ::= ENUMERATED {
+	minimum,
+	medium,
+	maximum,
+	...
+}
+
+TraceInformation	::= SEQUENCE {
+	traceReference			TraceReference,
+	ue-identity			UE-ID,
+	tracePropagationParameters	TracePropagationParameters OPTIONAL,
+	iE-Extensions			ProtocolExtensionContainer { { TraceInformation-ExtIEs } } OPTIONAL,
+	...
+}
+
+TraceInformation-ExtIEs	RANAP-PROTOCOL-EXTENSION ::= {
+...
+}
+
+TracePropagationParameters ::= SEQUENCE {
+	traceRecordingSessionReference	TraceRecordingSessionReference,
+	traceDepth			TraceDepth,
+	listOfInterfacesToTrace		ListOfInterfacesToTrace		OPTIONAL,
+	iE-Extensions			ProtocolExtensionContainer { { TracePropagationParameters-ExtIEs} } OPTIONAL,
+	...
+}
+
+TracePropagationParameters-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+TraceRecordingSessionInformation	::= SEQUENCE {
+	traceReference			TraceReference,
+	traceRecordingSessionReference	TraceRecordingSessionReference,
+	iE-Extensions			ProtocolExtensionContainer { { TraceRecordingSessionInformation-ExtIEs} } OPTIONAL,
+	...
+}
+
+TraceRecordingSessionInformation-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+TraceRecordingSessionReference		::= INTEGER (0..65535)
+
+TraceReference				::= OCTET STRING (SIZE (2..3))
+
+TraceType				::= OCTET STRING (SIZE (1))
+-- Reference: GSM TS 12.08
+
+TrafficClass ::= ENUMERATED {
+	conversational,
+	streaming,
+	interactive,
+	background,
+	...
+}
+
+TrafficHandlingPriority 		::= INTEGER { spare (0), highest (1), lowest (14), no-priority-used (15) } (0..15)
+
+TransferDelay 				::= INTEGER (0..65535)
+-- Unit is millisecond
+
+UnsuccessfullyTransmittedDataVolume	::= INTEGER (0..4294967295)
+
+TransportLayerAddress 			::= BIT STRING (SIZE (1..160, ...))
+
+TrCH-ID ::= SEQUENCE {
+	dCH-ID		DCH-ID		OPTIONAL,
+	dSCH-ID		DSCH-ID		OPTIONAL,
+	uSCH-ID		USCH-ID		OPTIONAL,
+	iE-Extensions	ProtocolExtensionContainer { { TrCH-ID-ExtIEs} } OPTIONAL,
+	...
+}
+
+TrCH-ID-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 5 to enable transfer of HS-DSCH-MAC-d-Flow-ID onto Iur transport channel ID --
+	{ID id-hS-DSCH-MAC-d-Flow-ID	CRITICALITY ignore	EXTENSION HS-DSCH-MAC-d-Flow-ID	PRESENCE optional}|
+-- Extension for Release 6 to enable transfer of E-DCH-MAC-d-Flow-ID onto Iur transport channel ID --
+	{ID id-E-DCH-MAC-d-Flow-ID	CRITICALITY ignore	EXTENSION E-DCH-MAC-d-Flow-ID 	PRESENCE optional},
+	...
+}
+
+TrCH-ID-List ::= SEQUENCE (SIZE (1..maxRAB-Subflows)) OF
+	TrCH-ID
+
+TriggerID				::= OCTET STRING (SIZE (3..22))
+
+TunnelInformation ::= SEQUENCE {
+	transportLayerAddress	TransportLayerAddress,
+	uDP-Port-Number		Port-Number				OPTIONAL,
+	iE-Extensions		ProtocolExtensionContainer { {Tunnel-Information-ExtIEs} } OPTIONAL,
+	...
+}
+
+Tunnel-Information-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+TypeOfError ::= ENUMERATED {
+	not-understood,
+	missing,
+	...
+}
+
+
+-- U
+
+UE-AggregateMaximumBitRate ::= SEQUENCE {
+	uE-AggregateMaximumBitRateDownlink	UE-AggregateMaximumBitRateDownlink	OPTIONAL,
+	uE-AggregateMaximumBitRateUplink	UE-AggregateMaximumBitRateUplink	OPTIONAL,
+	...
+}
+
+UE-AggregateMaximumBitRateDownlink	::= INTEGER (1..1000000000)
+-- Unit is bits per sec
+
+UE-AggregateMaximumBitRateUplink	::= INTEGER (1..1000000000)
+-- Unit is bits per sec
+
+
+UE-History-Information ::= OCTET STRING
+
+UE-ID ::= CHOICE {
+	imsi	IMSI,
+	imei	IMEI,
+	...,
+	imeisv	IMEISV
+
+}
+
+UESBI-Iu ::= SEQUENCE {
+	uESBI-IuA	UESBI-IuA	OPTIONAL,
+	uESBI-IuB	UESBI-IuB	OPTIONAL,
+	iE-Extensions	ProtocolExtensionContainer { {UESBI-Iu-ExtIEs} } OPTIONAL,
+	...
+}
+
+UESBI-Iu-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+UESBI-IuA				::= BIT STRING (SIZE(1..128))
+-- Reference: TR25.994 --
+UESBI-IuB				::= BIT STRING (SIZE(1..128))
+-- Reference: TR25.995 --
+
+UL-GTP-PDU-SequenceNumber		::= INTEGER (0..65535)
+
+UL-N-PDU-SequenceNumber 		::= INTEGER (0..65535)
+
+UPInformation		::=		SEQUENCE {
+	frameSeqNoUL		FrameSequenceNumber,
+	frameSeqNoDL		FrameSequenceNumber,
+	pdu14FrameSeqNoUL	PDUType14FrameSequenceNumber,
+	pdu14FrameSeqNoDL	PDUType14FrameSequenceNumber,
+	dataPDUType		DataPDUType,
+	upinitialisationFrame	UPInitialisationFrame,
+	iE-Extensions		ProtocolExtensionContainer { { UPInformation-ExtIEs } }		OPTIONAL,
+	...
+}
+
+UPInformation-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	{ID id-TimingDifferenceULDL	CRITICALITY ignore	EXTENSION TimingDifferenceULDL		PRESENCE optional},
+
+	...
+}
+
+UPInitialisationFrame	::= OCTET STRING
+
+UP-ModeVersions		::= BIT STRING (SIZE (16))
+
+USCH-ID			::= INTEGER (0..255)
+
+UserPlaneMode ::= ENUMERATED {
+	transparent-mode,
+	support-mode-for-predefined-SDU-sizes,
+	...
+}
+
+UTRAN-CellID ::= SEQUENCE {
+	pLMNidentity	PLMNidentity,
+	cellID		TargetCellId,
+	iE-Extensions	ProtocolExtensionContainer { { UTRAN-CellID-ExtIEs} } OPTIONAL
+}
+
+UTRAN-CellID-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+-- V
+
+VelocityEstimate ::= CHOICE {
+	horizontalVelocity			HorizontalVelocity,
+	horizontalWithVerticalVelocity		HorizontalWithVerticalVelocity,
+	horizontalVelocityWithUncertainty	HorizontalVelocityWithUncertainty,
+	horizontalWithVeritcalVelocityAndUncertainty	HorizontalWithVerticalVelocityAndUncertainty,
+	...
+}
+
+HorizontalVelocity	::= SEQUENCE {
+	horizontalSpeedAndBearing	HorizontalSpeedAndBearing,
+	iE-Extensions			ProtocolExtensionContainer { { HorizontalVelocity-ExtIEs} } OPTIONAL,
+	...
+}
+
+HorizontalVelocity-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+HorizontalWithVerticalVelocity ::= SEQUENCE {
+	horizontalSpeedAndBearing	HorizontalSpeedAndBearing,
+	veritcalVelocity		VerticalVelocity,
+	iE-Extensions			ProtocolExtensionContainer { { HorizontalWithVerticalVelocity-ExtIEs} } OPTIONAL,
+	...
+}
+
+HorizontalWithVerticalVelocity-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+HorizontalVelocityWithUncertainty ::= SEQUENCE {
+	horizontalSpeedAndBearing	HorizontalSpeedAndBearing,
+	uncertaintySpeed		INTEGER (0..255),
+	iE-Extensions			ProtocolExtensionContainer { { HorizontalVelocityWithUncertainty-ExtIEs} } OPTIONAL,
+	...
+}
+
+HorizontalVelocityWithUncertainty-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+HorizontalWithVerticalVelocityAndUncertainty ::= SEQUENCE {
+	horizontalSpeedAndBearing	HorizontalSpeedAndBearing,
+	veritcalVelocity		VerticalVelocity,
+	horizontalUncertaintySpeed	INTEGER (0..255),
+	verticalUncertaintySpeed	INTEGER (0..255),
+	iE-Extensions			ProtocolExtensionContainer { { HorizontalWithVerticalVelocityAndUncertainty-ExtIEs} } OPTIONAL,
+	...
+}
+
+HorizontalWithVerticalVelocityAndUncertainty-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+HorizontalSpeedAndBearing ::= SEQUENCE {
+	bearing		INTEGER (0..359),
+	horizontalSpeed	INTEGER (0..2047)
+}
+
+VerticalVelocity ::= SEQUENCE {
+	veritcalSpeed		INTEGER (0..255),
+	veritcalSpeedDirection	VerticalSpeedDirection
+}
+
+VerticalSpeedDirection ::= ENUMERATED {
+	upward,
+	downward
+}
+
+VerticalAccuracyCode	::= INTEGER (0..127)
+
+VoiceSupportMatchIndicator ::= ENUMERATED { 
+	supported,
+	not-supported,
+	...
+}
+
+END
diff --git a/asn1/ranap/RANAP-PDU-Contents.asn b/asn1/ranap/RANAP-PDU-Contents.asn
new file mode 100644
index 0000000..8aa9f51
--- /dev/null
+++ b/asn1/ranap/RANAP-PDU-Contents.asn
@@ -0,0 +1,3595 @@
+-- **************************************************************
+--
+-- PDU definitions for RANAP.
+--
+-- **************************************************************
+
+RANAP-PDU-Contents {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) ranap (0) version1 (1) ranap-PDU-Contents (1) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+	AccuracyFulfilmentIndicator,
+	APN,
+	BroadcastAssistanceDataDecipheringKeys,
+	LocationRelatedDataRequestType,
+	LocationRelatedDataRequestTypeSpecificToGERANIuMode,
+	DataVolumeReference,
+	CellLoadInformation,
+	AreaIdentity,
+	CN-DomainIndicator,
+	Cause,
+	Cell-Access-Mode,
+	ClientType,
+	CriticalityDiagnostics,
+	ChosenEncryptionAlgorithm,
+	ChosenIntegrityProtectionAlgorithm,
+	ClassmarkInformation2,
+	ClassmarkInformation3,
+	CSG-Id,
+	CSG-Id-List,
+	CSG-Membership-Status,
+	DL-GTP-PDU-SequenceNumber,
+	DL-N-PDU-SequenceNumber,
+	DataVolumeReportingIndication,
+	DeltaRAListofIdleModeUEs,
+	DRX-CycleLengthCoefficient,
+	EncryptionInformation,
+	EncryptionKey,
+	E-UTRAN-Service-Handover,
+	ExtendedRNC-ID,
+	FrequenceLayerConvergenceFlag,
+	GERAN-BSC-Container,
+	GERAN-Classmark,
+	GlobalCN-ID,
+	GlobalRNC-ID,
+	GTP-TEI,
+	IncludeVelocity,
+	InformationExchangeID,
+	InformationExchangeType,
+	InformationRequested,
+	InformationRequestType,
+	InformationTransferID,
+	InformationTransferType,
+	InterSystemInformationTransferType,
+	IntegrityProtectionInformation,
+	IntegrityProtectionKey,
+	InterSystemInformation-TransparentContainer,
+	IPMulticastAddress,
+	IuSignallingConnectionIdentifier,
+	IuTransportAssociation,
+	KeyStatus,
+	L3-Information,
+	LAI,
+	LastKnownServiceArea,
+	Correlation-ID,
+	MBMS-PTP-RAB-ID,
+	MBMSBearerServiceType,
+	MBMSCountingInformation,
+	MBMSCNDe-Registration,
+	MBMSHCIndicator,
+	MBMSRegistrationRequestType,
+	MBMSServiceArea,
+	MBMSSessionDuration,
+	MBMSSessionIdentity,
+	MBMSSessionRepetitionNumber,
+	MSISDN,
+	NAS-PDU,
+	NAS-SequenceNumber,
+	NAS-SynchronisationIndicator,
+	NewBSS-To-OldBSS-Information,
+	NonSearchingIndication,
+	NumberOfSteps,
+	Offload-RAB-Parameters,
+	Offload-RAB-Parameters-APN,
+	Offload-RAB-Parameters-ChargingCharacteristics,
+	OMC-ID,
+	OldBSS-ToNewBSS-Information,
+	PagingAreaID,
+	PagingCause,
+	PDP-TypeInformation, 
+	PDP-TypeInformation-extension,
+	PermanentNAS-UE-ID,
+	PLMNidentity,
+	PositionData,
+	PositionDataSpecificToGERANIuMode,
+	PositioningPriority,
+	ProvidedData,
+	RAB-ID,
+	RAB-Parameters,
+	RAC,
+	RAListofIdleModeUEs,
+	RAT-Type,
+	RedirectAttemptFlag,
+	RedirectionCompleted,
+	RejectCauseValue,
+	RelocationType,
+	RequestedGANSSAssistanceData,
+	RequestType,
+	Requested-RAB-Parameter-Values,
+	ResponseTime,
+	RRC-Container,
+	RSRVCC-Operation-Possible,
+	RSRQ-Type,
+	RSRQ-Extension,
+	SAI,
+	SAPI,
+	Service-Handover,
+	SessionUpdateID,
+	SNA-Access-Information,
+	SourceBSS-ToTargetBSS-TransparentContainer,
+	SourceID,
+	Source-ToTarget-TransparentContainer,
+	SourceRNC-ToTargetRNC-TransparentContainer,
+	SRVCC-HO-Indication,
+	SRVCC-Information,
+	SRVCC-Operation-Possible,
+	TargetBSS-ToSourceBSS-TransparentContainer,
+	TargetID,
+	Target-ToSource-TransparentContainer,
+	TargetRNC-ToSourceRNC-TransparentContainer,
+	TemporaryUE-ID,
+	TimeToMBMSDataTransfer,
+	TMGI,
+	TracePropagationParameters,
+	TraceReference,
+	TraceType,
+	UnsuccessfullyTransmittedDataVolume,
+	TransportLayerAddress,
+	TriggerID,
+	UE-AggregateMaximumBitRate,
+	UE-ID,
+	UESBI-Iu,
+	UL-GTP-PDU-SequenceNumber,
+	UL-N-PDU-SequenceNumber,
+	UP-ModeVersions,
+	UserPlaneMode,
+	VelocityEstimate,
+	VerticalAccuracyCode,
+	VoiceSupportMatchIndicator,
+	Alt-RAB-Parameters,
+	Ass-RAB-Parameters,
+	PeriodicLocationInfo,
+	SubscriberProfileIDforRFP,
+	RNSAPRelocationParameters,
+	RABParametersList,
+	MDT-Configuration,
+	Priority-Class-Indicator,
+	Management-Based-MDT-Allowed,
+	HigherBitratesThan16MbpsFlag,
+	End-Of-CSFB,
+	Out-Of-UTRAN,
+	RSRVCC-HO-Indication,
+	RSRVCC-Information,
+	MDT-PLMN-List,
+	TunnelInformation,
+	LHN-ID,
+	Session-Re-establishment-Indicator
+
+FROM RANAP-IEs
+
+	PrivateIE-Container{},
+	ProtocolExtensionContainer{},
+	ProtocolIE-ContainerList{},
+	ProtocolIE-ContainerPair{},
+	ProtocolIE-ContainerPairList{},
+	ProtocolIE-Container{},
+	RANAP-PRIVATE-IES,
+	RANAP-PROTOCOL-EXTENSION,
+	RANAP-PROTOCOL-IES,
+	RANAP-PROTOCOL-IES-PAIR
+FROM RANAP-Containers
+
+	maxNrOfDTs,
+	maxNrOfErrors,
+	maxNrOfIuSigConIds,
+	maxNrOfRABs,
+	maxNrOfVol,
+	maxnoofMulticastServicesPerUE,
+
+	id-AccuracyFulfilmentIndicator,
+	id-APN,
+	id-AreaIdentity,
+	id-Alt-RAB-Parameters,
+	id-Ass-RAB-Parameters,
+	id-BroadcastAssistanceDataDecipheringKeys,
+	id-LocationRelatedDataRequestType,
+	id-CN-DomainIndicator,
+	id-Cause,
+	id-Cell-Access-Mode,
+	id-ChosenEncryptionAlgorithm,
+	id-ChosenIntegrityProtectionAlgorithm,
+	id-ClassmarkInformation2,
+	id-ClassmarkInformation3,
+	id-ClientType,
+	id-CNMBMSLinkingInformation,
+	id-CriticalityDiagnostics,
+	id-CSG-Id,
+	id-CSG-Id-List,
+	id-CSG-Membership-Status,
+	id-DeltaRAListofIdleModeUEs,
+	id-DRX-CycleLengthCoefficient,
+	id-DirectTransferInformationItem-RANAP-RelocInf,
+	id-DirectTransferInformationList-RANAP-RelocInf,
+	id-DL-GTP-PDU-SequenceNumber,
+	id-EncryptionInformation,
+	id-EncryptionKey,
+	id-ExtendedRNC-ID,
+	id-FrequenceLayerConvergenceFlag,
+	id-GERAN-BSC-Container,
+	id-GERAN-Classmark,
+	id-GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item,
+	id-GERAN-Iumode-RAB-FailedList-RABAssgntResponse,
+	id-GlobalCN-ID,
+	id-GlobalCN-IDCS,
+	id-GlobalCN-IDPS,
+	id-GlobalRNC-ID,
+	id-IncludeVelocity,
+	id-InformationExchangeID,
+	id-InformationExchangeType,
+	id-InformationRequested,
+	id-InformationRequestType,
+	id-InformationTransferID,
+	id-InformationTransferType,
+	id-IntegrityProtectionInformation,
+	id-IntegrityProtectionKey,
+	id-InterSystemInformationTransferType,
+	id-InterSystemInformation-TransparentContainer,
+	id-IPMulticastAddress,
+	id-IuSigConId,
+	id-OldIuSigConId,
+	id-OldIuSigConIdCS,
+	id-OldIuSigConIdPS,
+	id-IuSigConIdItem,
+	id-IuSigConIdList,
+	id-IuTransportAssociation,
+	id-JoinedMBMSBearerServicesList,
+	id-KeyStatus,
+	id-L3-Information,
+	id-LAI,
+	id-LastKnownServiceArea,
+	id-LeftMBMSBearerServicesList,
+	id-LocationRelatedDataRequestTypeSpecificToGERANIuMode,
+	id-MBMSBearerServiceType,
+	id-MBMSCountingInformation,
+	id-MBMSCNDe-Registration,
+	id-MBMSRegistrationRequestType,
+	id-MBMSSynchronisationInformation,
+	id-MBMSServiceArea,
+	id-MBMSSessionDuration,
+	id-MBMSSessionIdentity,
+	id-MBMSSessionRepetitionNumber,
+	id-MSISDN,
+	id-NAS-PDU,
+	id-NAS-SequenceNumber,
+	id-NewBSS-To-OldBSS-Information,
+	id-NonSearchingIndication,
+	id-NumberOfSteps,
+	id-Offload-RAB-Parameters,
+	id-OMC-ID,
+	id-OldBSS-ToNewBSS-Information,
+	id-PagingAreaID,
+	id-PagingCause,
+	id-PDP-TypeInformation,
+	id-PDP-TypeInformation-extension,
+	id-PermanentNAS-UE-ID,
+	id-PositionData,
+	id-PositionDataSpecificToGERANIuMode,
+	id-PositioningPriority,
+	id-ProvidedData,
+	id-RAB-ContextItem,
+	id-RAB-ContextList,
+	id-RAB-ContextFailedtoTransferItem,
+	id-RAB-ContextFailedtoTransferList,
+	id-RAB-ContextItem-RANAP-RelocInf,
+	id-RAB-ContextList-RANAP-RelocInf,
+	id-RAB-DataForwardingItem,
+	id-RAB-DataForwardingItem-SRNS-CtxReq,
+	id-RAB-DataForwardingList,
+	id-RAB-DataForwardingList-SRNS-CtxReq,
+	id-RAB-DataVolumeReportItem,
+	id-RAB-DataVolumeReportList,
+	id-RAB-DataVolumeReportRequestItem,
+	id-RAB-DataVolumeReportRequestList,
+	id-RAB-FailedItem,
+	id-RAB-FailedList,
+	id-RAB-FailedList-EnhRelocInfoRes,
+	id-RAB-FailedItem-EnhRelocInfoRes,
+	id-RAB-FailedtoReportItem,
+	id-RAB-FailedtoReportList,
+	id-RAB-ID,
+	id-RAB-ModifyList,
+	id-RAB-ModifyItem,
+	id-RAB-Parameters,
+	id-RAB-QueuedItem,
+	id-RAB-QueuedList,
+	id-RAB-ReleaseFailedList,
+	id-RAB-ReleaseItem,
+	id-RAB-ReleasedItem-IuRelComp,
+	id-RAB-ReleaseList,
+	id-RAB-ReleasedItem,
+	id-RAB-ReleasedList,
+	id-RAB-ReleasedList-IuRelComp,
+	id-RAB-RelocationReleaseItem,
+	id-RAB-RelocationReleaseList,
+	id-RAB-SetupItem-RelocReq,
+	id-RAB-SetupItem-RelocReqAck,
+	id-RAB-SetupList-RelocReq,
+	id-RAB-SetupList-RelocReqAck,
+	id-RAB-SetupList-EnhRelocInfoReq,
+	id-RAB-SetupItem-EnhRelocInfoReq,
+	id-RAB-SetupList-EnhRelocInfoRes,
+	id-RAB-SetupItem-EnhRelocInfoRes,
+	id-RAB-SetupList-EnhancedRelocCompleteReq,
+	id-RAB-SetupItem-EnhancedRelocCompleteReq,
+	id-RAB-SetupList-EnhancedRelocCompleteRes,
+	id-RAB-SetupItem-EnhancedRelocCompleteRes,
+	id-RAB-SetupOrModifiedItem,
+	id-RAB-SetupOrModifiedList,
+	id-RAB-SetupOrModifyItem,
+	id-RAB-SetupOrModifyList,
+	id-RAB-ToBeReleasedItem-EnhancedRelocCompleteRes,
+	id-RAB-ToBeReleasedList-EnhancedRelocCompleteRes,
+	id-RAC,
+	id-RAListofIdleModeUEs,
+	id-RAT-Type,
+	id-RedirectAttemptFlag,
+	id-RedirectionCompleted,
+	id-RedirectionIndication,
+	id-RejectCauseValue,
+	id-RelocationType,
+	id-Relocation-SourceRNC-ID,
+	id-Relocation-SourceExtendedRNC-ID,
+	id-Relocation-TargetRNC-ID,
+	id-Relocation-TargetExtendedRNC-ID,
+	id-RequestedGANSSAssistanceData,
+	id-RequestType,
+	id-ResponseTime,
+	id-RSRVCC-Operation-Possible,
+	id-SAI,
+	id-SAPI,
+	id-SelectedPLMN-ID,
+	id-SessionUpdateID,
+	id-SNA-Access-Information,
+	id-SourceBSS-ToTargetBSS-TransparentContainer,
+	id-SourceRNC-ID,
+	id-SourceExtendedRNC-ID,
+	id-SourceID,
+	id-Source-ToTarget-TransparentContainer,
+	id-SourceRNC-PDCP-context-info,
+	id-SRVCC-HO-Indication,
+	id-SRVCC-Information,
+	id-SRVCC-Operation-Possible,
+	id-TargetBSS-ToSourceBSS-TransparentContainer,
+	id-TargetID,
+	id-Target-ToSource-TransparentContainer,
+	id-TemporaryUE-ID,
+	id-TimeToMBMSDataTransfer,
+	id-TMGI,
+	id-TracePropagationParameters,
+	id-TraceReference,
+	id-TraceType,
+	id-TransportLayerAddress,
+	id-TransportLayerInformation,
+	id-TriggerID,
+	id-UE-AggregateMaximumBitRate,
+	id-UE-ID,
+	id-UESBI-Iu,
+	id-UL-GTP-PDU-SequenceNumber,
+	id-UnsuccessfulLinkingList,
+	id-VelocityEstimate,
+	id-VerticalAccuracyCode,
+	id-VoiceSupportMatchIndicator,
+	id-PeriodicLocationInfo,
+	id-BroadcastGANSSAssistanceDataDecipheringKeys,
+	id-SubscriberProfileIDforRFP,
+	id-E-UTRAN-Service-Handover,
+	id-IP-Source-Address,
+	id-LGW-TransportLayerAddress,
+	id-Correlation-ID,
+	id-MDT-Configuration,
+	id-RNSAPRelocationParameters,
+	id-RABParametersList,
+	id-Priority-Class-Indicator,
+	id-Management-Based-MDT-Allowed,
+	id-HigherBitratesThan16MbpsFlag,
+	id-Trace-Collection-Entity-IP-Addess,
+	id-End-Of-CSFB,
+	id-Out-Of-UTRAN,
+	id-RSRVCC-HO-Indication,
+	id-RSRVCC-Information,
+	id-AnchorPLMN-ID,
+	id-Management-Based-MDT-PLMN-List,
+	id-Tunnel-Information-for-BBF,
+	id-SIPTO-Correlation-ID,
+	id-SIPTO-LGW-TransportLayerAddress,
+	id-LHN-ID,
+	id-LastE-UTRANPLMNIdentity,
+	id-Session-Re-establishment-Indicator
+
+FROM RANAP-Constants;
+
+-- **************************************************************
+--
+-- Common Container Lists
+--
+-- **************************************************************
+
+RAB-IE-ContainerList		{ RANAP-PROTOCOL-IES		: IEsSetParam }	::= ProtocolIE-ContainerList		{ 1, maxNrOfRABs,		{IEsSetParam} }
+RAB-IE-ContainerPairList	{ RANAP-PROTOCOL-IES-PAIR	: IEsSetParam }	::= ProtocolIE-ContainerPairList	{ 1, maxNrOfRABs,		{IEsSetParam} }
+ProtocolError-IE-ContainerList	{ RANAP-PROTOCOL-IES		: IEsSetParam }	::= ProtocolIE-ContainerList		{ 1, maxNrOfRABs,		{IEsSetParam} }
+IuSigConId-IE-ContainerList	{ RANAP-PROTOCOL-IES		: IEsSetParam }	::= ProtocolIE-ContainerList		{ 1, maxNrOfIuSigConIds,	{IEsSetParam} }
+DirectTransfer-IE-ContainerList	{ RANAP-PROTOCOL-IES		: IEsSetParam }	::= ProtocolIE-ContainerList		{ 1, maxNrOfDTs,		{IEsSetParam} }
+
+-- **************************************************************
+--
+-- Iu RELEASE ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Iu Release Command
+--
+-- **************************************************************
+
+Iu-ReleaseCommand ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {Iu-ReleaseCommandIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {Iu-ReleaseCommandExtensions} } 	OPTIONAL,
+	...
+}
+
+Iu-ReleaseCommandIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-Cause		CRITICALITY ignore	TYPE Cause	 PRESENCE mandatory	},
+	...
+}
+
+Iu-ReleaseCommandExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	{ ID id-End-Of-CSFB		CRITICALITY ignore	EXTENSION End-Of-CSFB		PRESENCE optional }|
+	{ ID id-Out-Of-UTRAN		CRITICALITY ignore	EXTENSION Out-Of-UTRAN		PRESENCE optional }|
+	{ ID id-LastE-UTRANPLMNIdentity	CRITICALITY ignore	EXTENSION PLMNidentity		PRESENCE optional },
+	...
+}
+
+-- **************************************************************
+--
+-- Iu Release Complete
+--
+-- **************************************************************
+
+Iu-ReleaseComplete ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {Iu-ReleaseCompleteIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {Iu-ReleaseCompleteExtensions} }	OPTIONAL,
+	...
+}
+
+Iu-ReleaseCompleteIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-DataVolumeReportList	CRITICALITY ignore	TYPE RAB-DataVolumeReportList 	PRESENCE optional	} |
+	{ ID id-RAB-ReleasedList-IuRelComp	CRITICALITY ignore	TYPE RAB-ReleasedList-IuRelComp	PRESENCE optional	} |
+	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics 	PRESENCE optional 	},
+	...
+}
+
+RAB-DataVolumeReportList ::= RAB-IE-ContainerList { {RAB-DataVolumeReportItemIEs} }
+
+RAB-DataVolumeReportItemIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-DataVolumeReportItem	CRITICALITY ignore	TYPE RAB-DataVolumeReportItem	PRESENCE mandatory	},
+	...
+}
+
+RAB-DataVolumeReportItem ::= SEQUENCE {
+	rAB-ID					RAB-ID,
+	dl-UnsuccessfullyTransmittedDataVolume	DataVolumeList		OPTIONAL
+	-- This IE shall always be present although its presence is optional --,
+	iE-Extensions				ProtocolExtensionContainer { {RAB-DataVolumeReportItem-ExtIEs} } OPTIONAL,
+	...
+}
+
+RAB-DataVolumeReportItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RAB-ReleasedList-IuRelComp	::= RAB-IE-ContainerList { {RAB-ReleasedItem-IuRelComp-IEs} }
+
+RAB-ReleasedItem-IuRelComp-IEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-ReleasedItem-IuRelComp	CRITICALITY ignore	TYPE RAB-ReleasedItem-IuRelComp				PRESENCE mandatory	},
+	...
+}
+
+RAB-ReleasedItem-IuRelComp	::= SEQUENCE {
+		rAB-ID				RAB-ID,
+		dL-GTP-PDU-SequenceNumber	DL-GTP-PDU-SequenceNumber 	OPTIONAL,
+		uL-GTP-PDU-SequenceNumber	UL-GTP-PDU-SequenceNumber 	OPTIONAL,
+		iE-Extensions			ProtocolExtensionContainer { {RAB-ReleasedItem-IuRelComp-ExtIEs} }			OPTIONAL,
+	...
+}
+
+RAB-ReleasedItem-IuRelComp-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+Iu-ReleaseCompleteExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- RELOCATION PREPARATION ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Relocation Required
+--
+-- **************************************************************
+
+RelocationRequired ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container			{ {RelocationRequiredIEs} },
+	protocolExtensions		ProtocolExtensionContainer	{ {RelocationRequiredExtensions} }				OPTIONAL,
+...
+}
+
+RelocationRequiredIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RelocationType				CRITICALITY reject	TYPE RelocationType 				PRESENCE mandatory	} |
+	{ ID id-Cause					CRITICALITY ignore	TYPE Cause		 			PRESENCE mandatory	} |
+	{ ID id-SourceID				CRITICALITY ignore	TYPE SourceID	 				PRESENCE mandatory	} |
+	{ ID id-TargetID				CRITICALITY reject	TYPE TargetID	 				PRESENCE mandatory	} |
+	{ ID id-ClassmarkInformation2			CRITICALITY reject	TYPE ClassmarkInformation2			PRESENCE conditional
+	-- This IE shall be present if the Target ID IE contains a CGI IE and Source BSS To Target BSS Transparent Container is not included --		} |
+	{ ID id-ClassmarkInformation3			CRITICALITY ignore	TYPE ClassmarkInformation3			PRESENCE conditional
+	-- This IE shall be present if the Target ID IE contains a CGI IE and Source BSS To Target BSS Transparent Container is not included --		} |
+	{ ID id-Source-ToTarget-TransparentContainer	CRITICALITY reject	TYPE Source-ToTarget-TransparentContainer PRESENCE conditional
+	-- This IE shall be present if the Target ID IE contains a RNC-ID IE or eNB-ID --								} |
+	{ ID id-OldBSS-ToNewBSS-Information		CRITICALITY ignore	TYPE OldBSS-ToNewBSS-Information		PRESENCE optional	} ,
+	...
+}
+
+RelocationRequiredExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 5 to enable GERAN support over Iu-cs --
+	{ ID id-GERAN-Classmark					CRITICALITY ignore	EXTENSION GERAN-Classmark		PRESENCE optional} |
+-- Extension for Release 6 to enable Inter-RAT PS Handover between UTRAN and GERAN A/Gb --
+	{ ID id-SourceBSS-ToTargetBSS-TransparentContainer	CRITICALITY ignore	EXTENSION SourceBSS-ToTargetBSS-TransparentContainer	PRESENCE optional} |
+-- Extension for Release 8 for SRVCC operation --
+	{ ID id-SRVCC-HO-Indication				CRITICALITY reject	EXTENSION SRVCC-HO-Indication		PRESENCE optional} |
+-- Extension for Release 9 to communicate to the CN the CSG id of the target cell --
+	{ ID id-CSG-Id						CRITICALITY reject	EXTENSION CSG-Id 			PRESENCE optional} |
+-- Extension for Release 9 to communicate to the CN the hybrid access status of the target cell --
+	{ ID id-Cell-Access-Mode				CRITICALITY reject	EXTENSION Cell-Access-Mode		PRESENCE optional} |
+-- Extension for Release 11 for rSRVCC operation --
+	{ ID id-RSRVCC-HO-Indication				CRITICALITY reject	EXTENSION RSRVCC-HO-Indication		PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- Relocation Command
+--
+-- **************************************************************
+
+RelocationCommand ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container			{ {RelocationCommandIEs} },
+	protocolExtensions		ProtocolExtensionContainer	{ {RelocationCommandExtensions} }				OPTIONAL,
+	...
+}
+
+RelocationCommandIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-Target-ToSource-TransparentContainer	
+							CRITICALITY reject	TYPE Target-ToSource-TransparentContainer PRESENCE optional	} |
+	{ ID id-L3-Information				CRITICALITY ignore	TYPE L3-Information				PRESENCE optional	} |
+	{ ID id-RAB-RelocationReleaseList		CRITICALITY ignore	TYPE RAB-RelocationReleaseList 			PRESENCE optional	} |
+	{ ID id-RAB-DataForwardingList			CRITICALITY ignore	TYPE RAB-DataForwardingList			PRESENCE optional	} |
+	{ ID id-CriticalityDiagnostics			CRITICALITY ignore	TYPE CriticalityDiagnostics 			PRESENCE optional	},
+	...
+}
+
+RAB-RelocationReleaseList 				::= RAB-IE-ContainerList { {RAB-RelocationReleaseItemIEs} }
+
+RAB-RelocationReleaseItemIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-RelocationReleaseItem		CRITICALITY ignore	TYPE RAB-RelocationReleaseItem			PRESENCE mandatory	},
+	...
+}
+
+RAB-RelocationReleaseItem ::= SEQUENCE {
+	rAB-ID						RAB-ID,
+	iE-Extensions					ProtocolExtensionContainer { {RAB-RelocationReleaseItem-ExtIEs} }			OPTIONAL,
+	...
+}
+
+RAB-RelocationReleaseItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RAB-DataForwardingList 					::= RAB-IE-ContainerList { {RAB-DataForwardingItemIEs} }
+
+RAB-DataForwardingItemIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-DataForwardingItem			CRITICALITY ignore	TYPE RAB-DataForwardingItem			PRESENCE mandatory	},
+	...
+}
+
+RAB-DataForwardingItem ::= SEQUENCE {
+	rAB-ID						RAB-ID,
+	transportLayerAddress				TransportLayerAddress,
+	iuTransportAssociation				IuTransportAssociation,
+	iE-Extensions					ProtocolExtensionContainer { {RAB-DataForwardingItem-ExtIEs} }			OPTIONAL,
+	...
+}
+
+RAB-DataForwardingItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 5 to allow transfer of a second pair of TLA and association --
+	{ID id-TransportLayerAddress	CRITICALITY ignore	EXTENSION TransportLayerAddress	PRESENCE optional} |
+	{ID id-IuTransportAssociation	CRITICALITY ignore	EXTENSION IuTransportAssociation	PRESENCE optional},
+	...
+}
+
+RelocationCommandExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 5 to enable Inter RAN Load Information Exchange over Iu --
+	{ ID id-InterSystemInformation-TransparentContainer	CRITICALITY ignore	EXTENSION InterSystemInformation-TransparentContainer	PRESENCE optional} |
+-- Extension for Release 6 to enable Inter-RAT PS Handover between UTRAN and GERAN A/Gb --
+	{ ID id-TargetBSS-ToSourceBSS-TransparentContainer	CRITICALITY ignore	EXTENSION TargetBSS-ToSourceBSS-TransparentContainer	PRESENCE optional} |
+-- Extension for Release 8 for SRVCC operation --
+	{ ID id-SRVCC-Information				CRITICALITY reject	EXTENSION SRVCC-Information				PRESENCE optional} |
+-- Extension for Release 11 for rSRVCC operation --
+	{ ID id-RSRVCC-Information				CRITICALITY reject	EXTENSION RSRVCC-Information				PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- Relocation Preparation Failure
+--
+-- **************************************************************
+
+RelocationPreparationFailure ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container		{ {RelocationPreparationFailureIEs} },
+	protocolExtensions		ProtocolExtensionContainer	{ {RelocationPreparationFailureExtensions} }			OPTIONAL,
+...
+}
+
+RelocationPreparationFailureIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-Cause			CRITICALITY ignore	TYPE Cause			PRESENCE mandatory	} |
+	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics 	PRESENCE optional	},
+	...
+}
+
+RelocationPreparationFailureExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 5 to enable Inter RAN Load Information Exchange over Iu --
+	{ ID id-InterSystemInformation-TransparentContainer	CRITICALITY ignore	EXTENSION InterSystemInformation-TransparentContainer	PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- RELOCATION RESOURCE ALLOCATION ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Relocation Request
+--
+-- **************************************************************
+
+RelocationRequest ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container			{ {RelocationRequestIEs} },
+	protocolExtensions		ProtocolExtensionContainer	{ {RelocationRequestExtensions} }				OPTIONAL,
+	...
+}
+
+RelocationRequestIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-PermanentNAS-UE-ID			CRITICALITY ignore	TYPE PermanentNAS-UE-ID 			PRESENCE optional	} |
+	{ ID id-Cause					CRITICALITY ignore	TYPE Cause					PRESENCE mandatory	} |
+	{ ID id-CN-DomainIndicator			CRITICALITY reject	TYPE CN-DomainIndicator				PRESENCE mandatory	} |
+	{ ID id-Source-ToTarget-TransparentContainer	CRITICALITY reject	TYPE SourceRNC-ToTargetRNC-TransparentContainer	PRESENCE mandatory	} |
+	{ ID id-RAB-SetupList-RelocReq			CRITICALITY reject	TYPE RAB-SetupList-RelocReq			PRESENCE optional	} |
+	{ ID id-IntegrityProtectionInformation		CRITICALITY ignore	TYPE IntegrityProtectionInformation 		PRESENCE optional	} |
+	{ ID id-EncryptionInformation			CRITICALITY ignore	TYPE EncryptionInformation 			PRESENCE optional	} |
+	{ ID id-IuSigConId				CRITICALITY ignore 	TYPE IuSignallingConnectionIdentifier 		PRESENCE mandatory	},
+	...
+}
+
+RAB-SetupList-RelocReq 					::= RAB-IE-ContainerList { {RAB-SetupItem-RelocReq-IEs} }
+
+RAB-SetupItem-RelocReq-IEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-SetupItem-RelocReq			CRITICALITY reject	TYPE RAB-SetupItem-RelocReq			PRESENCE mandatory 	},
+	...
+}
+
+RAB-SetupItem-RelocReq ::= SEQUENCE {
+	rAB-ID				RAB-ID,
+	nAS-SynchronisationIndicator	NAS-SynchronisationIndicator	OPTIONAL,
+	rAB-Parameters			RAB-Parameters,
+	dataVolumeReportingIndication	DataVolumeReportingIndication 	OPTIONAL
+	-- This IE shall be present if the CN domain indicator IE is set to "PS domain" --,
+	pDP-TypeInformation		PDP-TypeInformation		OPTIONAL
+	-- This IE shall be present if the CN domain indicator IE is set to "PS domain" --,
+	userPlaneInformation		UserPlaneInformation,
+	transportLayerAddress		TransportLayerAddress,
+	iuTransportAssociation		IuTransportAssociation,
+	service-Handover		Service-Handover		OPTIONAL,
+	iE-Extensions			ProtocolExtensionContainer { {RAB-SetupItem-RelocReq-ExtIEs} }			OPTIONAL,
+	...
+}
+
+RAB-SetupItem-RelocReq-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 4 to enable RAB Quality of Service negotiation over Iu --
+	{ ID id-Alt-RAB-Parameters		CRITICALITY ignore	EXTENSION Alt-RAB-Parameters		PRESENCE optional}|
+-- Extension for Release 5 to enable GERAN support over Iu-cs --
+	{ ID id-GERAN-BSC-Container		CRITICALITY ignore	EXTENSION GERAN-BSC-Container		PRESENCE optional}|
+-- Extension for Release 8 to enable handover restriction to E-UTRAN --
+	{ ID id-E-UTRAN-Service-Handover	CRITICALITY ignore	EXTENSION E-UTRAN-Service-Handover	PRESENCE optional}|
+-- Extension for Release 9 to enable a new value --
+	{ ID id-PDP-TypeInformation-extension 	CRITICALITY ignore	EXTENSION PDP-TypeInformation-extension	PRESENCE optional}|
+-- Extension for Release 10 to enable offload at Iu-PS for UTRAN --
+	{ ID id-Offload-RAB-Parameters		CRITICALITY ignore	EXTENSION Offload-RAB-Parameters	PRESENCE optional},
+	...
+}
+
+UserPlaneInformation ::= SEQUENCE {
+	userPlaneMode		UserPlaneMode,
+	uP-ModeVersions		UP-ModeVersions,
+	iE-Extensions		ProtocolExtensionContainer { {UserPlaneInformation-ExtIEs} }			OPTIONAL,
+	...
+}
+
+UserPlaneInformation-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RelocationRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 4 --
+	{ ID id-GlobalCN-ID			CRITICALITY reject	EXTENSION GlobalCN-ID			PRESENCE optional}|
+-- Extension for Release 5 to enable shared networks in connected mode --
+	{ ID id-SNA-Access-Information		CRITICALITY ignore	EXTENSION SNA-Access-Information	PRESENCE optional}|
+-- Extension for Release 5 to enable specific behaviour by the RNC in relation with early UE handling --
+	{ ID id-UESBI-Iu			CRITICALITY ignore	EXTENSION UESBI-Iu			PRESENCE optional}|
+-- Extension for Release 6 to convey the selected PLMN id in network sharing mobility scenarios --
+	{ ID id-SelectedPLMN-ID	 		CRITICALITY ignore	EXTENSION PLMNidentity			PRESENCE optional}|
+-- Extension for Release 6 to enable MBMS UE linking at relocation --
+	{ ID id-CNMBMSLinkingInformation	CRITICALITY ignore	EXTENSION CNMBMSLinkingInformation	PRESENCE optional}|
+	{ ID id-UE-AggregateMaximumBitRate	CRITICALITY ignore	EXTENSION UE-AggregateMaximumBitRate	PRESENCE optional}|
+-- Extension for Release 9 to communicate to the target cell the CSG id reported by the source --
+	{ ID id-CSG-Id 				CRITICALITY reject	EXTENSION CSG-Id 			PRESENCE optional}|
+-- Extension for Release 9 for enabling UE prioritisation during access to hybrid cells --
+	{ ID id-CSG-Membership-Status		CRITICALITY ignore	EXTENSION CSG-Membership-Status		PRESENCE optional}|
+-- Extension for Release 10 to enable offload at Iu-PS for UTRAN --
+	{ ID id-MSISDN				CRITICALITY ignore	EXTENSION MSISDN			PRESENCE optional}|
+-- Extension for Release 11 to support rSRVCC in case of network sharing –
+	{ ID id-AnchorPLMN-ID			CRITICALITY ignore	EXTENSION PLMNidentity			PRESENCE optional},
+	...
+}
+
+CNMBMSLinkingInformation ::= SEQUENCE {
+	joinedMBMSBearerService-IEs	JoinedMBMSBearerService-IEs,
+	iE-Extensions			ProtocolExtensionContainer { {CNMBMSLinkingInformation-ExtIEs} }		OPTIONAL,
+	...
+}
+
+CNMBMSLinkingInformation-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+JoinedMBMSBearerService-IEs ::= SEQUENCE (SIZE (1.. maxnoofMulticastServicesPerUE)) OF
+	SEQUENCE {
+		tMGI			TMGI,
+		mBMS-PTP-RAB-ID		MBMS-PTP-RAB-ID,
+		iE-Extensions		ProtocolExtensionContainer { {JoinedMBMSBearerService-ExtIEs} } OPTIONAL,
+		...
+	}
+
+JoinedMBMSBearerService-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- Relocation Request Acknowledge
+--
+-- **************************************************************
+
+RelocationRequestAcknowledge ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {RelocationRequestAcknowledgeIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {RelocationRequestAcknowledgeExtensions} }			OPTIONAL,
+	...
+}
+
+RelocationRequestAcknowledgeIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-Target-ToSource-TransparentContainer	CRITICALITY ignore	TYPE TargetRNC-ToSourceRNC-TransparentContainer PRESENCE optional	} |
+	{ ID id-RAB-SetupList-RelocReqAck		CRITICALITY ignore	TYPE RAB-SetupList-RelocReqAck			PRESENCE optional	} |
+	{ ID id-RAB-FailedList				CRITICALITY ignore	TYPE RAB-FailedList				PRESENCE optional	} |
+	{ ID id-ChosenIntegrityProtectionAlgorithm	CRITICALITY ignore	TYPE ChosenIntegrityProtectionAlgorithm		PRESENCE optional	} |
+	{ ID id-ChosenEncryptionAlgorithm		CRITICALITY ignore	TYPE ChosenEncryptionAlgorithm			PRESENCE optional	} |
+	{ ID id-CriticalityDiagnostics			CRITICALITY ignore	TYPE CriticalityDiagnostics 			PRESENCE optional	},
+	...
+}
+
+RAB-SetupList-RelocReqAck 				::= RAB-IE-ContainerList { {RAB-SetupItem-RelocReqAck-IEs} }
+
+RAB-SetupItem-RelocReqAck-IEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-SetupItem-RelocReqAck		CRITICALITY reject	TYPE RAB-SetupItem-RelocReqAck			PRESENCE mandatory 	},
+	...
+}
+
+RAB-SetupItem-RelocReqAck ::= SEQUENCE {
+	rAB-ID			RAB-ID,
+	transportLayerAddress	TransportLayerAddress	OPTIONAL,
+	iuTransportAssociation	IuTransportAssociation	OPTIONAL,
+	iE-Extensions		ProtocolExtensionContainer { {RAB-SetupItem-RelocReqAck-ExtIEs} }			OPTIONAL,
+	...
+}
+
+RAB-SetupItem-RelocReqAck-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 4 to enable RAB Quality of Service negotiation over Iu --
+	{ID id-Ass-RAB-Parameters	CRITICALITY ignore	EXTENSION Ass-RAB-Parameters		PRESENCE optional	} |
+-- Extension for Release 5 to allow transfer of a second pair of TLA and association --
+	{ID id-TransportLayerAddress	CRITICALITY ignore	EXTENSION TransportLayerAddress		PRESENCE optional	} |
+	{ID id-IuTransportAssociation	CRITICALITY ignore	EXTENSION IuTransportAssociation	PRESENCE optional	},
+	...
+}
+
+RAB-FailedList 						::= RAB-IE-ContainerList { {RAB-FailedItemIEs} }
+
+RAB-FailedItemIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-FailedItem		CRITICALITY ignore	TYPE RAB-FailedItem			PRESENCE mandatory	},
+	...
+}
+
+RAB-FailedItem ::= SEQUENCE {
+	rAB-ID		RAB-ID,
+	cause		Cause,
+	iE-Extensions	ProtocolExtensionContainer { {RAB-FailedItem-ExtIEs} }			OPTIONAL,
+	...
+}
+
+RAB-FailedItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RelocationRequestAcknowledgeExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 5 to enable Inter RAN Load Information Exchange over Iu --
+	{ID id-NewBSS-To-OldBSS-Information	CRITICALITY ignore	EXTENSION NewBSS-To-OldBSS-Information	PRESENCE optional	 }|
+	{ID id-CSG-Id				CRITICALITY ignore	EXTENSION CSG-Id			PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- Relocation Failure
+--
+-- **************************************************************
+
+RelocationFailure ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {RelocationFailureIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {RelocationFailureExtensions} }				OPTIONAL,
+	...
+}
+
+RelocationFailureIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-Cause			CRITICALITY ignore	TYPE Cause			PRESENCE mandatory	} |
+	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics 	PRESENCE optional	},
+	...
+}
+
+RelocationFailureExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 5 to enable Inter RAN Load Information Exchange over Iu --
+	{ ID id-NewBSS-To-OldBSS-Information	CRITICALITY ignore	EXTENSION NewBSS-To-OldBSS-Information		PRESENCE optional	} |
+-- Extension for Release 5 to enable GERAN support over Iu-cs --
+	{ ID id-GERAN-Classmark			CRITICALITY ignore	EXTENSION GERAN-Classmark			PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- RELOCATION CANCEL ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Relocation Cancel
+--
+-- **************************************************************
+
+RelocationCancel ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {RelocationCancelIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {RelocationCancelExtensions} }				OPTIONAL,
+	...
+}
+
+RelocationCancelIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-Cause		CRITICALITY ignore	TYPE Cause	PRESENCE mandatory	},
+	...
+}
+
+RelocationCancelExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- Relocation Cancel Acknowledge
+--
+-- **************************************************************
+
+RelocationCancelAcknowledge ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {RelocationCancelAcknowledgeIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {RelocationCancelAcknowledgeExtensions} } 			OPTIONAL,
+	...
+}
+
+RelocationCancelAcknowledgeIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional	},
+	...
+}
+
+RelocationCancelAcknowledgeExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- SRNS CONTEXT TRANSFER OPEARATION
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- SRNS Context Request
+--
+-- **************************************************************
+
+SRNS-ContextRequest ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {SRNS-ContextRequestIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {SRNS-ContextRequestExtensions} }				OPTIONAL,
+	...
+}
+
+SRNS-ContextRequestIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-DataForwardingList-SRNS-CtxReq	CRITICALITY ignore	TYPE RAB-DataForwardingList-SRNS-CtxReq		PRESENCE mandatory	},
+	...
+}
+
+RAB-DataForwardingList-SRNS-CtxReq ::= RAB-IE-ContainerList { {RAB-DataForwardingItem-SRNS-CtxReq-IEs} }
+
+RAB-DataForwardingItem-SRNS-CtxReq-IEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-DataForwardingItem-SRNS-CtxReq	CRITICALITY reject	TYPE RAB-DataForwardingItem-SRNS-CtxReq		PRESENCE mandatory	},
+	...
+}
+
+RAB-DataForwardingItem-SRNS-CtxReq ::= SEQUENCE {
+	rAB-ID		RAB-ID,
+	iE-Extensions	ProtocolExtensionContainer { {RAB-DataForwardingItem-SRNS-CtxReq-ExtIEs} }			OPTIONAL,
+	...
+}
+
+RAB-DataForwardingItem-SRNS-CtxReq-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+SRNS-ContextRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- The SGSN may include the IE, when available to indicate the RAT from which the context request originates, to correct measurement points in SRNC. --
+	{ID id-RAT-Type		CRITICALITY ignore	EXTENSION 	RAT-Type		PRESENCE optional },
+	...
+}
+
+-- **************************************************************
+--
+-- SRNS Context Response
+--
+-- **************************************************************
+
+SRNS-ContextResponse ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {SRNS-ContextResponseIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {SRNS-ContextResponseExtensions} }				OPTIONAL,
+	...
+}
+
+SRNS-ContextResponseIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-ContextList			CRITICALITY ignore	TYPE RAB-ContextList			PRESENCE optional	} |
+	{ ID id-RAB-ContextFailedtoTransferList	CRITICALITY ignore	TYPE RAB-ContextFailedtoTransferList	PRESENCE optional	}|
+	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics		PRESENCE optional	},
+	...
+}
+
+RAB-ContextList 					::= RAB-IE-ContainerList { {RAB-ContextItemIEs} }
+
+RAB-ContextItemIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-ContextItem			CRITICALITY ignore	TYPE RAB-ContextItem		PRESENCE mandatory	},
+	...
+}
+
+RAB-ContextItem ::= SEQUENCE {
+	rAB-ID				RAB-ID,
+	dl-GTP-PDU-SequenceNumber	DL-GTP-PDU-SequenceNumber 	OPTIONAL,
+	ul-GTP-PDU-SequenceNumber	UL-GTP-PDU-SequenceNumber 	OPTIONAL,
+	dl-N-PDU-SequenceNumber		DL-N-PDU-SequenceNumber 	OPTIONAL,
+	ul-N-PDU-SequenceNumber		UL-N-PDU-SequenceNumber 	OPTIONAL,
+	iE-Extensions			ProtocolExtensionContainer { {RAB-ContextItem-ExtIEs} }			OPTIONAL,
+	...
+}
+
+RAB-ContextItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RAB-ContextFailedtoTransferList ::= RAB-IE-ContainerList { {RABs-ContextFailedtoTransferItemIEs} }
+
+RABs-ContextFailedtoTransferItemIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-ContextFailedtoTransferItem		CRITICALITY ignore	TYPE RABs-ContextFailedtoTransferItem			PRESENCE mandatory	},
+	...
+}
+
+RABs-ContextFailedtoTransferItem::= SEQUENCE {
+	rAB-ID		RAB-ID,
+	cause		Cause,
+	iE-Extensions	ProtocolExtensionContainer { { RABs-ContextFailedtoTransferItem-ExtIEs} }			OPTIONAL,
+	...
+}
+
+
+RABs-ContextFailedtoTransferItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+SRNS-ContextResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- SECURITY MODE CONTROL ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Security Mode Command
+--
+-- **************************************************************
+
+SecurityModeCommand ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {SecurityModeCommandIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {SecurityModeCommandExtensions} }				OPTIONAL,
+	...
+}
+
+SecurityModeCommandIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-IntegrityProtectionInformation	CRITICALITY reject	TYPE IntegrityProtectionInformation	PRESENCE mandatory	} |
+	{ ID id-EncryptionInformation		CRITICALITY ignore	TYPE EncryptionInformation		PRESENCE optional	} |
+	{ ID id-KeyStatus			CRITICALITY reject	TYPE KeyStatus				PRESENCE mandatory},
+	...
+}
+
+SecurityModeCommandExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- Security Mode Complete
+--
+-- **************************************************************
+
+SecurityModeComplete ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {SecurityModeCompleteIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {SecurityModeCompleteExtensions} }				OPTIONAL,
+	...
+}
+
+SecurityModeCompleteIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-ChosenIntegrityProtectionAlgorithm	CRITICALITY reject	TYPE ChosenIntegrityProtectionAlgorithm 	PRESENCE mandatory	} |
+	{ ID id-ChosenEncryptionAlgorithm		CRITICALITY ignore	TYPE ChosenEncryptionAlgorithm			PRESENCE optional	} |
+	{ ID id-CriticalityDiagnostics			CRITICALITY ignore	TYPE CriticalityDiagnostics			PRESENCE optional	},
+	...
+}
+
+SecurityModeCompleteExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- Security Mode Reject
+--
+-- **************************************************************
+
+SecurityModeReject ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {SecurityModeRejectIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {SecurityModeRejectExtensions} }				OPTIONAL,
+	...
+}
+
+SecurityModeRejectIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-Cause			CRITICALITY ignore	TYPE Cause			PRESENCE mandatory	} |
+	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics 	PRESENCE optional	},
+	...
+}
+
+SecurityModeRejectExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- DATA VOLUME REPORT ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Data Volume Report Request
+--
+-- **************************************************************
+
+DataVolumeReportRequest ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {DataVolumeReportRequestIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {DataVolumeReportRequestExtensions} }			OPTIONAL,
+	...
+}
+
+DataVolumeReportRequestIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-DataVolumeReportRequestList		CRITICALITY ignore	TYPE RAB-DataVolumeReportRequestList		PRESENCE mandatory	},
+	...
+}
+
+RAB-DataVolumeReportRequestList ::= RAB-IE-ContainerList { {RAB-DataVolumeReportRequestItemIEs} }
+
+RAB-DataVolumeReportRequestItemIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-DataVolumeReportRequestItem		CRITICALITY reject	TYPE RAB-DataVolumeReportRequestItem		PRESENCE mandatory	},
+	...
+}
+
+RAB-DataVolumeReportRequestItem ::= SEQUENCE {
+	rAB-ID		RAB-ID,
+	iE-Extensions	ProtocolExtensionContainer { {RAB-DataVolumeReportRequestItem-ExtIEs} }			OPTIONAL,
+	...
+}
+
+RAB-DataVolumeReportRequestItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+DataVolumeReportRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- Data Volume Report
+--
+-- **************************************************************
+
+DataVolumeReport ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {DataVolumeReportIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {DataVolumeReportExtensions} }				OPTIONAL,
+	...
+}
+
+DataVolumeReportIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-DataVolumeReportList	CRITICALITY ignore	TYPE RAB-DataVolumeReportList	PRESENCE optional	} |
+	{ ID id-RAB-FailedtoReportList		CRITICALITY ignore	TYPE RAB-FailedtoReportList	PRESENCE optional	} |
+	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional	},
+	...
+}
+
+DataVolumeReportExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RAB-FailedtoReportList 	::= RAB-IE-ContainerList { {RABs-failed-to-reportItemIEs} }
+
+RABs-failed-to-reportItemIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-FailedtoReportItem		CRITICALITY ignore	TYPE RABs-failed-to-reportItem			PRESENCE mandatory	},
+	...
+}
+
+RABs-failed-to-reportItem::= SEQUENCE {
+	rAB-ID		RAB-ID,
+	cause		Cause,
+	iE-Extensions	ProtocolExtensionContainer { { RABs-failed-to-reportItem-ExtIEs} }			OPTIONAL,
+	...
+}
+
+
+RABs-failed-to-reportItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+-- **************************************************************
+--
+-- RESET ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Reset
+--
+-- **************************************************************
+
+Reset ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container			{ {ResetIEs} },
+	protocolExtensions		ProtocolExtensionContainer	{ {ResetExtensions} }					OPTIONAL,
+	...
+}
+
+ResetIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-Cause					CRITICALITY ignore	TYPE Cause					PRESENCE mandatory	} |
+	{ ID id-CN-DomainIndicator			CRITICALITY reject	TYPE CN-DomainIndicator				PRESENCE mandatory	} |
+	{ ID id-GlobalRNC-ID				CRITICALITY ignore	TYPE GlobalRNC-ID				PRESENCE optional	},
+	...
+}
+
+ResetExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 4 --
+	{ ID id-GlobalCN-ID				CRITICALITY ignore		EXTENSION GlobalCN-ID				PRESENCE optional}|
+-- Extension for Release 7 to indicate extended RNC-ID --
+	{ ID id-ExtendedRNC-ID				CRITICALITY reject	EXTENSION ExtendedRNC-ID		PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- Reset Acknowledge
+--
+-- **************************************************************
+
+ResetAcknowledge ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {ResetAcknowledgeIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {ResetAcknowledgeExtensions} }				OPTIONAL,
+	...
+}
+
+ResetAcknowledgeIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-CN-DomainIndicator	CRITICALITY reject	TYPE CN-DomainIndicator		PRESENCE mandatory	} |
+	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional	} |
+	{ ID id-GlobalRNC-ID		CRITICALITY ignore	TYPE GlobalRNC-ID		PRESENCE optional	},
+	...
+}
+
+ResetAcknowledgeExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 4 --
+	{ ID id-GlobalCN-ID		CRITICALITY ignore	EXTENSION GlobalCN-ID		PRESENCE optional}|
+-- Extension for Release 7 to indicate extended RNC-ID --
+	{ ID id-ExtendedRNC-ID		CRITICALITY reject	EXTENSION ExtendedRNC-ID	PRESENCE optional	},
+	...
+}
+-- **************************************************************
+--
+-- RESET RESOURCE ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+
+-- **************************************************************
+--
+-- Reset Resource
+--
+-- **************************************************************
+
+ResetResource ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {ResetResourceIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {ResetResourceExtensions} }					OPTIONAL,
+	...
+}
+
+ResetResourceIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-CN-DomainIndicator	CRITICALITY reject	TYPE CN-DomainIndicator				PRESENCE mandatory	} |
+	{ ID id-Cause			CRITICALITY ignore	TYPE Cause					PRESENCE mandatory	} |
+	{ ID id-IuSigConIdList		CRITICALITY ignore	TYPE ResetResourceList				PRESENCE mandatory	} |
+	{ ID id-GlobalRNC-ID		CRITICALITY ignore	TYPE GlobalRNC-ID				PRESENCE optional	},
+	...
+}
+
+ResetResourceList 	::=	IuSigConId-IE-ContainerList{ {ResetResourceItemIEs} }
+
+ResetResourceItemIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-IuSigConIdItem		CRITICALITY reject	TYPE	ResetResourceItem			PRESENCE mandatory	},
+	...
+}
+
+ResetResourceItem ::= SEQUENCE {
+	iuSigConId		IuSignallingConnectionIdentifier,
+	iE-Extensions		ProtocolExtensionContainer { { ResetResourceItem-ExtIEs} }			OPTIONAL,
+	...
+}
+
+ResetResourceItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+ResetResourceExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 4 --
+	{ ID id-GlobalCN-ID	CRITICALITY ignore	EXTENSION GlobalCN-ID		PRESENCE optional}|
+-- Extension for Release 7 to indicate extended RNC-ID --
+	{ ID id-ExtendedRNC-ID	CRITICALITY reject	EXTENSION ExtendedRNC-ID	PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- Reset Resource Acknowledge
+--
+-- **************************************************************
+
+ResetResourceAcknowledge ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {ResetResourceAcknowledgeIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {ResetResourceAcknowledgeExtensions} }				OPTIONAL,
+	...
+}
+
+ResetResourceAcknowledgeIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-CN-DomainIndicator	CRITICALITY reject	TYPE CN-DomainIndicator		PRESENCE mandatory	} |
+	{ ID id-IuSigConIdList		CRITICALITY ignore	TYPE ResetResourceAckList	PRESENCE mandatory	} |
+	{ ID id-GlobalRNC-ID		CRITICALITY ignore	TYPE GlobalRNC-ID		PRESENCE optional	} |
+	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional	},
+	...
+}
+ResetResourceAckList 	::=	IuSigConId-IE-ContainerList{ {ResetResourceAckItemIEs} }
+
+ResetResourceAckItemIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-IuSigConIdItem		CRITICALITY reject	TYPE	ResetResourceAckItem	PRESENCE mandatory	},
+	...
+}
+
+ResetResourceAckItem ::= SEQUENCE {
+	iuSigConId		IuSignallingConnectionIdentifier,
+	iE-Extensions		ProtocolExtensionContainer { { ResetResourceAckItem-ExtIEs} }			OPTIONAL,
+	...
+}
+
+ResetResourceAckItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+ResetResourceAcknowledgeExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 4 --
+	{ ID id-GlobalCN-ID	CRITICALITY ignore	EXTENSION GlobalCN-ID		PRESENCE optional}|
+-- Extension for Release 7 to indicate extended RNC-ID --
+	{ ID id-ExtendedRNC-ID	CRITICALITY reject	EXTENSION ExtendedRNC-ID	PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- RAB RELEASE REQUEST ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- RAB Release Request
+--
+-- **************************************************************
+
+RAB-ReleaseRequest ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {RAB-ReleaseRequestIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {RAB-ReleaseRequestExtensions} }				OPTIONAL,
+	...
+}
+
+RAB-ReleaseRequestIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-ReleaseList	CRITICALITY ignore	TYPE RAB-ReleaseList	PRESENCE mandatory	},
+	...
+}
+
+RAB-ReleaseList	::= RAB-IE-ContainerList { {RAB-ReleaseItemIEs} }
+
+RAB-ReleaseItemIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-ReleaseItem	CRITICALITY ignore	TYPE RAB-ReleaseItem	PRESENCE mandatory	},
+	...
+}
+
+RAB-ReleaseItem ::= SEQUENCE {
+	rAB-ID		RAB-ID,
+	cause		Cause,
+	iE-Extensions	ProtocolExtensionContainer { {RAB-ReleaseItem-ExtIEs} }			OPTIONAL,
+	...
+}
+
+RAB-ReleaseItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RAB-ReleaseRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- Iu RELEASE REQUEST ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Iu Release Request
+--
+-- **************************************************************
+
+Iu-ReleaseRequest ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {Iu-ReleaseRequestIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {Iu-ReleaseRequestExtensions} }				OPTIONAL,
+	...
+}
+
+Iu-ReleaseRequestIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-Cause		CRITICALITY ignore	TYPE Cause	PRESENCE mandatory	},
+	...
+}
+
+Iu-ReleaseRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- RELOCATION DETECT ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Relocation Detect
+--
+-- **************************************************************
+
+RelocationDetect ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {RelocationDetectIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {RelocationDetectExtensions} }				OPTIONAL,
+	...
+}
+
+RelocationDetectIEs RANAP-PROTOCOL-IES ::= {
+	...
+}
+
+RelocationDetectExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- RELOCATION COMPLETE ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Relocation Complete
+--
+-- **************************************************************
+
+RelocationComplete ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container			{ {RelocationCompleteIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {RelocationCompleteExtensions} }				OPTIONAL,
+	...
+}
+
+RelocationCompleteIEs RANAP-PROTOCOL-IES ::= {
+	...
+}
+
+RelocationCompleteExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 9 to enable the CN to handle potential UE NAS QoS issues related to higher bitrates -- 
+	{ ID id-HigherBitratesThan16MbpsFlag		CRITICALITY ignore	EXTENSION HigherBitratesThan16MbpsFlag	PRESENCE optional}|
+-- Extension for Release 11 to support BBAI -- 
+	{ ID id-Tunnel-Information-for-BBF		CRITICALITY ignore	EXTENSION TunnelInformation		PRESENCE optional}|
+-- Extension for Release 12 to support SIPTO@LN Stand-Alone --
+	{ ID id-LHN-ID					CRITICALITY ignore	EXTENSION LHN-ID			PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- ENHANCED RELOCATION COMPLETE ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Enhanced Relocation Complete Request
+--
+-- **************************************************************
+
+EnhancedRelocationCompleteRequest ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {EnhancedRelocationCompleteRequestIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {EnhancedRelocationCompleteRequestExtensions} }		OPTIONAL,
+	...
+}
+
+EnhancedRelocationCompleteRequestIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-OldIuSigConId				CRITICALITY reject	TYPE IuSignallingConnectionIdentifier		PRESENCE mandatory } |
+	{ ID id-IuSigConId				CRITICALITY reject	TYPE IuSignallingConnectionIdentifier		PRESENCE mandatory } |
+	{ ID id-Relocation-SourceRNC-ID			CRITICALITY ignore	TYPE GlobalRNC-ID				PRESENCE mandatory } |
+	{ ID id-Relocation-SourceExtendedRNC-ID		CRITICALITY ignore	TYPE ExtendedRNC-ID				PRESENCE optional } |
+	{ ID id-Relocation-TargetRNC-ID			CRITICALITY reject	TYPE GlobalRNC-ID				PRESENCE mandatory } |
+	{ ID id-Relocation-TargetExtendedRNC-ID		CRITICALITY reject	TYPE ExtendedRNC-ID				PRESENCE optional } |
+	{ ID id-RAB-SetupList-EnhancedRelocCompleteReq	CRITICALITY reject	TYPE RAB-SetupList-EnhancedRelocCompleteReq	PRESENCE optional },
+	...
+}
+
+RAB-SetupList-EnhancedRelocCompleteReq 				::= RAB-IE-ContainerList { { RAB-SetupItem-EnhancedRelocCompleteReq-IEs} }
+
+RAB-SetupItem-EnhancedRelocCompleteReq-IEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-SetupItem-EnhancedRelocCompleteReq	CRITICALITY reject	TYPE RAB-SetupItem-EnhancedRelocCompleteReq	PRESENCE mandatory 	},
+	...
+}
+
+RAB-SetupItem-EnhancedRelocCompleteReq ::= SEQUENCE {
+	rAB-ID				RAB-ID,
+	transportLayerAddressReq1	TransportLayerAddress	OPTIONAL,
+	iuTransportAssociationReq1	IuTransportAssociation	OPTIONAL,
+	ass-RAB-Parameters		Ass-RAB-Parameters OPTIONAL,
+	iE-Extensions			ProtocolExtensionContainer { { RAB-SetupItem-EnhancedRelocCompleteReq-ExtIEs} }			OPTIONAL,
+	...
+}
+
+RAB-SetupItem-EnhancedRelocCompleteReq-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+EnhancedRelocationCompleteRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	{ ID id-ChosenIntegrityProtectionAlgorithm	CRITICALITY ignore	EXTENSION ChosenIntegrityProtectionAlgorithm	PRESENCE optional}|
+	{ ID id-ChosenEncryptionAlgorithm		CRITICALITY ignore	EXTENSION ChosenEncryptionAlgorithm		PRESENCE optional}|
+-- Extension for Release 9 to enable the CN to handle potential UE NAS QoS issues related to higher bitrates -- 
+	{ ID id-HigherBitratesThan16MbpsFlag		CRITICALITY ignore	EXTENSION HigherBitratesThan16MbpsFlag		PRESENCE optional}|
+-- Extensions for Release 11 to enable enhanced relocation from RNC to hybrid cell –
+	{ ID id-CSG-Id					CRITICALITY reject	EXTENSION CSG-Id				PRESENCE optional}|
+	{ ID id-Cell-Access-Mode			CRITICALITY reject	EXTENSION Cell-Access-Mode			PRESENCE optional}|
+-- Extension for Release 11 to support BBAI -- 
+	{ ID id-Tunnel-Information-for-BBF		CRITICALITY ignore	EXTENSION TunnelInformation			PRESENCE optional}|
+-- Extension for Release 12 to support SIPTO@LN Stand-Alone --
+	{ ID id-LHN-ID					CRITICALITY ignore	EXTENSION LHN-ID				PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- Enhanced Relocation Complete Response
+--
+-- **************************************************************
+
+EnhancedRelocationCompleteResponse ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {EnhancedRelocationCompleteResponseIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {EnhancedRelocationCompleteResponseExtensions} }			OPTIONAL,
+	...
+}
+
+EnhancedRelocationCompleteResponseIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-SetupList-EnhancedRelocCompleteRes		CRITICALITY ignore	TYPE RAB-SetupList-EnhancedRelocCompleteRes	PRESENCE optional} |
+	{ ID id-RAB-ToBeReleasedList-EnhancedRelocCompleteRes	CRITICALITY ignore	TYPE RAB-ToBeReleasedList-EnhancedRelocCompleteRes	PRESENCE optional} |
+	{ ID id-CriticalityDiagnostics				CRITICALITY ignore	TYPE CriticalityDiagnostics 			PRESENCE optional	},
+	...
+}
+
+RAB-SetupList-EnhancedRelocCompleteRes ::= RAB-IE-ContainerList { {RAB-SetupItem-EnhancedRelocCompleteRes-IEs} }
+
+RAB-SetupItem-EnhancedRelocCompleteRes-IEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-SetupItem-EnhancedRelocCompleteRes		CRITICALITY reject	TYPE RAB-SetupItem-EnhancedRelocCompleteRes		PRESENCE mandatory 	},
+	...
+}
+
+RAB-SetupItem-EnhancedRelocCompleteRes ::= SEQUENCE {
+	rAB-ID				RAB-ID,
+	rAB-Parameters			RAB-Parameters	OPTIONAL,
+	userPlaneInformation		UserPlaneInformation,
+	transportLayerAddressRes1	TransportLayerAddress	OPTIONAL,
+	iuTransportAssociationRes1	IuTransportAssociation	OPTIONAL,
+	rab2beReleasedList		RAB-ToBeReleasedList-EnhancedRelocCompleteRes OPTIONAL,
+	iE-Extensions			ProtocolExtensionContainer { { RAB-SetupItem-EnhancedRelocCompleteRes-ExtIEs} }			OPTIONAL,
+	...
+}
+
+RAB-SetupItem-EnhancedRelocCompleteRes-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	-- Extension for Release 10 to enable Offload at Iu-ps for UTRAN --
+	{ ID id-Offload-RAB-Parameters	CRITICALITY ignore	EXTENSION Offload-RAB-Parameters			PRESENCE optional},
+	...
+}
+
+RAB-ToBeReleasedList-EnhancedRelocCompleteRes ::= RAB-IE-ContainerList { {RAB-ToBeReleasedItem-EnhancedRelocCompleteRes-IEs} }
+
+RAB-ToBeReleasedItem-EnhancedRelocCompleteRes-IEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-ToBeReleasedItem-EnhancedRelocCompleteRes		CRITICALITY ignore	TYPE RAB-ToBeReleasedItem-EnhancedRelocCompleteRes		PRESENCE mandatory 	},
+	...
+}
+
+RAB-ToBeReleasedItem-EnhancedRelocCompleteRes ::= SEQUENCE {
+	rAB-ID		RAB-ID,
+	cause		Cause,
+	iE-Extensions	ProtocolExtensionContainer { { RAB-ToBeReleasedItem-EnhancedRelocCompleteRes-ExtIEs} }			OPTIONAL,
+	...
+}
+
+RAB-ToBeReleasedItem-EnhancedRelocCompleteRes-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+EnhancedRelocationCompleteResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	{ ID id-UE-AggregateMaximumBitRate	CRITICALITY ignore	EXTENSION UE-AggregateMaximumBitRate	PRESENCE optional}|
+-- Extension for Release 10 to enable Offload at Iu-ps for UTRAN --
+	{ ID id-MSISDN				CRITICALITY ignore	EXTENSION MSISDN			PRESENCE optional}|
+-- Extension for Release 11 to enable ehnahced relocation from RNC to hybrid cell –
+	{ ID id-CSG-Membership-Status		CRITICALITY ignore	EXTENSION CSG-Membership-Status		PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- Enhanced Relocation Complete Failure
+--
+-- **************************************************************
+
+EnhancedRelocationCompleteFailure ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {EnhancedRelocationCompleteFailureIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {EnhancedRelocationCompleteFailureExtensions} }				OPTIONAL,
+	...
+}
+
+EnhancedRelocationCompleteFailureIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-Cause			CRITICALITY ignore	TYPE Cause			PRESENCE mandatory	} |
+	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics 	PRESENCE optional	},
+	...
+}
+
+EnhancedRelocationCompleteFailureExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- Enhanced Relocation Complete Confirm
+--
+-- **************************************************************
+
+EnhancedRelocationCompleteConfirm ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {EnhancedRelocationCompleteConfirmIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {EnhancedRelocationCompleteConfirmExtensions} }				OPTIONAL,
+	...
+}
+
+EnhancedRelocationCompleteConfirmIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-FailedList	CRITICALITY ignore	TYPE RAB-FailedList				PRESENCE optional },
+	...
+}
+
+EnhancedRelocationCompleteConfirmExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+-- **************************************************************
+--
+-- PAGING ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Paging
+--
+-- **************************************************************
+
+Paging ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {PagingIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {PagingExtensions} }					OPTIONAL,
+	...
+}
+
+PagingIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-CN-DomainIndicator		CRITICALITY ignore	TYPE CN-DomainIndicator			PRESENCE mandatory	} |
+	{ ID id-PermanentNAS-UE-ID 		CRITICALITY ignore	TYPE PermanentNAS-UE-ID			PRESENCE mandatory	} |
+	{ ID id-TemporaryUE-ID			CRITICALITY ignore	TYPE TemporaryUE-ID			PRESENCE optional	} |
+	{ ID id-PagingAreaID			CRITICALITY ignore	TYPE PagingAreaID			PRESENCE optional	} |
+	{ ID id-PagingCause			CRITICALITY ignore	TYPE PagingCause			PRESENCE optional	} |
+	{ ID id-NonSearchingIndication		CRITICALITY ignore	TYPE NonSearchingIndication		PRESENCE optional	} |
+	{ ID id-DRX-CycleLengthCoefficient	CRITICALITY ignore	TYPE DRX-CycleLengthCoefficient		PRESENCE optional	} ,
+	...
+}
+
+PagingExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 5 to enable NNSF --
+	{ ID id-GlobalCN-ID			CRITICALITY ignore	EXTENSION GlobalCN-ID			PRESENCE optional	} |
+-- Extension for Release 8 to support CSG --
+	{ ID id-CSG-Id-List			CRITICALITY ignore	EXTENSION CSG-Id-List			PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- COMMON ID ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Common ID
+--
+-- **************************************************************
+
+CommonID ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {CommonID-IEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {CommonIDExtensions} }					OPTIONAL,
+	...
+}
+
+CommonID-IEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-PermanentNAS-UE-ID	CRITICALITY ignore	TYPE PermanentNAS-UE-ID				PRESENCE mandatory	},
+	...
+}
+
+CommonIDExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 5 to enable shared networks in connected mode --
+	{ ID id-SNA-Access-Information		CRITICALITY ignore	EXTENSION SNA-Access-Information	PRESENCE optional }|
+-- Extension for Release 5 to enable specific behaviour by the RNC in relation with early UE handling --
+	{ ID id-UESBI-Iu			CRITICALITY ignore	EXTENSION UESBI-Iu			PRESENCE optional }|
+-- Extension for Release 6 to indicate the selected plmn in GWCN configuration for network sharing non-supporting UEs --
+	{ ID id-SelectedPLMN-ID			CRITICALITY ignore	EXTENSION PLMNidentity			PRESENCE optional }|
+-- Extension for Release 8 to indicate the Subscriber Profile ID for RAT/Frequency Selection Priority --
+	{ID id-SubscriberProfileIDforRFP	CRITICALITY ignore	EXTENSION SubscriberProfileIDforRFP	PRESENCE optional }|
+-- Extension for Release 8 for SRVCC operation --
+	{ ID id-SRVCC-Operation-Possible	CRITICALITY ignore	EXTENSION SRVCC-Operation-Possible	PRESENCE optional }|
+-- Extension for Release 9 to allow for UE prioritisation during access to hybrid cells --
+	{ ID id-CSG-Membership-Status		CRITICALITY ignore	EXTENSION CSG-Membership-Status		PRESENCE optional }|
+-- Extension for Release 10 to indicate Management Based MDT Allowed --
+	{ ID id-Management-Based-MDT-Allowed	CRITICALITY ignore	EXTENSION Management-Based-MDT-Allowed	PRESENCE optional }|
+-- Extension for Release 11 to indicate MDT PLMN List --
+	{ ID id-Management-Based-MDT-PLMN-List	CRITICALITY ignore	EXTENSION MDT-PLMN-List			PRESENCE optional }|
+-- Extension for Release 11 rSRVCC operation --
+	{ ID id-RSRVCC-Operation-Possible	CRITICALITY ignore	EXTENSION RSRVCC-Operation-Possible	PRESENCE optional }|
+-- Extension for Release 11 to inidcate the last E-UTRAN PLMN Identity --
+	{ ID id-LastE-UTRANPLMNIdentity		CRITICALITY ignore	EXTENSION PLMNidentity			PRESENCE optional },
+	...
+}
+
+-- **************************************************************
+--
+-- CN INVOKE TRACE ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- CN Invoke Trace
+--
+-- **************************************************************
+
+CN-InvokeTrace ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {CN-InvokeTraceIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {CN-InvokeTraceExtensions} }				OPTIONAL,
+	...
+}
+
+CN-InvokeTraceIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-TraceType 	CRITICALITY ignore	TYPE TraceType 		PRESENCE optional	} |
+	-- This information is mandatory for GERAN Iu Mode, not applicable to UTRAN --
+	{ ID id-TraceReference	CRITICALITY ignore	TYPE TraceReference	PRESENCE mandatory	} |
+	{ ID id-TriggerID	CRITICALITY ignore	TYPE TriggerID		PRESENCE optional	} |
+	-- This information is mandatory for GERAN Iu Mode, not applicable to UTRAN --
+	{ ID id-UE-ID		CRITICALITY ignore	TYPE UE-ID		PRESENCE optional	} |
+	-- This information is mandatory for UTRAN, optional for GERAN Iu mode --
+	{ ID id-OMC-ID		CRITICALITY ignore	TYPE OMC-ID		PRESENCE optional	},
+	-- This information is mandatory for GERAN Iu Mode, not applicable to UTRAN --
+	...
+}
+
+CN-InvokeTraceExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 6 to enable signalling based activation for Subscriber and Equipment Trace over Iu interface --
+	{ ID id-TracePropagationParameters		CRITICALITY ignore	EXTENSION TracePropagationParameters	PRESENCE optional}|
+-- Extension for Release 10 to support MDT--
+	{ ID id-MDT-Configuration			CRITICALITY ignore	EXTENSION MDT-Configuration		PRESENCE optional}|
+-- Extension for Release 10 to support MDT--
+	{ ID id-Trace-Collection-Entity-IP-Addess	CRITICALITY ignore	EXTENSION TransportLayerAddress		PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- CN DEACTIVATE TRACE ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- CN Deactivate Trace
+--
+-- **************************************************************
+
+CN-DeactivateTrace ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {CN-DeactivateTraceIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {CN-DeactivateTraceExtensions} }				OPTIONAL,
+	...
+}
+
+CN-DeactivateTraceIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-TraceReference	CRITICALITY ignore	TYPE TraceReference		PRESENCE mandatory } |
+	{ ID id-TriggerID	CRITICALITY ignore	TYPE TriggerID			PRESENCE optional },
+	-- This information is optional for GERAN Iu Mode, not applicable to UTRAN --
+	...
+}
+
+CN-DeactivateTraceExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- LOCATION REPORTING CONTROL ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Location Reporting Control
+--
+-- **************************************************************
+
+LocationReportingControl ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {LocationReportingControlIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {LocationReportingControlExtensions} }			OPTIONAL,
+	...
+}
+
+LocationReportingControlIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RequestType 	CRITICALITY ignore	TYPE RequestType 	PRESENCE mandatory	},
+	...
+}
+
+LocationReportingControlExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 4 to enhance the location request over Iu --
+	{ ID id-VerticalAccuracyCode 	CRITICALITY ignore	EXTENSION VerticalAccuracyCode 	PRESENCE optional	} |
+-- Extension for Release 4 to enhance the location request over Iu --
+	{ ID id-ResponseTime 		CRITICALITY ignore	EXTENSION ResponseTime 		PRESENCE optional	} |
+-- Extension for Release 4 to enhance the location request over Iu --
+	{ ID id-PositioningPriority 	CRITICALITY ignore	EXTENSION PositioningPriority 	PRESENCE optional	} |
+-- Extension for Release 4 to enhance the location request over Iu --
+	{ ID id-ClientType 		CRITICALITY ignore	EXTENSION ClientType 		PRESENCE optional	} |
+-- Extension for Release 7 to allow the request of velocity over Iu --
+	{ ID id-IncludeVelocity 	CRITICALITY ignore	EXTENSION IncludeVelocity 	PRESENCE optional } |
+-- Extension for Release 7 to allow periodic reporting over Iu --
+	{ ID id-PeriodicLocationInfo 	CRITICALITY ignore	EXTENSION PeriodicLocationInfo 	PRESENCE optional },
+	...
+}
+
+-- **************************************************************
+--
+-- LOCATION REPORT ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Location Report
+--
+-- **************************************************************
+
+LocationReport ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {LocationReportIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {LocationReportExtensions} }				OPTIONAL,
+	...
+}
+
+LocationReportIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-AreaIdentity	CRITICALITY ignore	TYPE AreaIdentity	PRESENCE optional	} |
+	{ ID id-Cause		CRITICALITY ignore	TYPE Cause		PRESENCE optional	} |
+	{ ID id-RequestType 	CRITICALITY ignore	TYPE RequestType 	PRESENCE optional	}	,
+	...
+}
+
+LocationReportExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 4 to enable report of Last Known Service Area with its Age over Iu --
+	{ ID id-LastKnownServiceArea			CRITICALITY ignore	EXTENSION LastKnownServiceArea		PRESENCE optional} |
+-- Extension for Release 5 to pass the positioning methods that have been used --
+	{ ID id-PositionData				CRITICALITY ignore	EXTENSION PositionData			PRESENCE optional}|
+-- Extension for Release 5 to pass the positioning methods that have been used for GERAN Iu mode --
+	{ ID id-PositionDataSpecificToGERANIuMode	CRITICALITY ignore	EXTENSION PositionDataSpecificToGERANIuMode	PRESENCE optional	}|
+	-- This extension is optional for GERAN Iu mode only, not applicable for UTRAN --
+-- Extension for Release 6 to indicate whether the returned position estimate satisfies the requested accuracy or not --
+	{ ID id-AccuracyFulfilmentIndicator		CRITICALITY ignore	EXTENSION AccuracyFulfilmentIndicator	PRESENCE optional}|
+-- Extension for Release 7 to provide a velocity estimate --
+	{ ID id-VelocityEstimate			CRITICALITY ignore	EXTENSION VelocityEstimate		PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- INITIAL UE MESSAGE ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Initial UE Message
+--
+-- **************************************************************
+
+InitialUE-Message ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {InitialUE-MessageIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {InitialUE-MessageExtensions} }				OPTIONAL,
+	...
+}
+
+InitialUE-MessageIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-CN-DomainIndicator	CRITICALITY ignore	TYPE CN-DomainIndicator		PRESENCE mandatory	} |
+	{ ID id-LAI			CRITICALITY ignore	TYPE LAI			PRESENCE mandatory	} |
+	{ ID id-RAC			CRITICALITY ignore	TYPE RAC			PRESENCE conditional
+	-- This IE shall be present if the CN Domain Indicator IE is set to "PS domain"		--			} |
+	{ ID id-SAI			CRITICALITY ignore	TYPE SAI			PRESENCE mandatory	} |
+	{ ID id-NAS-PDU			CRITICALITY ignore	TYPE NAS-PDU			PRESENCE mandatory	} |
+	{ ID id-IuSigConId		CRITICALITY ignore 	TYPE IuSignallingConnectionIdentifier	PRESENCE mandatory 	} |
+	{ ID id-GlobalRNC-ID		CRITICALITY ignore	TYPE GlobalRNC-ID		PRESENCE mandatory 	},
+	...
+}
+
+InitialUE-MessageExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 5 to enable GERAN support over Iu-cs --
+	{ ID id-GERAN-Classmark			CRITICALITY ignore	EXTENSION GERAN-Classmark		PRESENCE optional}|
+-- Extension for Release 6 to convey the selected PLMN id in shared networks --
+	{ ID id-SelectedPLMN-ID	 		CRITICALITY ignore	EXTENSION PLMNidentity			PRESENCE optional}|
+-- Extension for Release 6 to enable rerouting in MOCN configuration for network sharing non-supporting UEs --
+	{ ID id-PermanentNAS-UE-ID		CRITICALITY ignore	EXTENSION PermanentNAS-UE-ID		PRESENCE optional}|
+-- Extension for Release 6 to enable rerouting in MOCN configuration for network sharing non-supporting UEs --
+	{ ID id-NAS-SequenceNumber		CRITICALITY ignore	EXTENSION NAS-SequenceNumber		PRESENCE optional}|
+-- Extension for Release 6 to indicate rerouting in MOCN configuration for network sharing non-supporting UEs --
+	{ ID id-RedirectAttemptFlag		CRITICALITY ignore	EXTENSION RedirectAttemptFlag		PRESENCE optional}|
+-- Extension for Release 7 to indicate extended RNC-ID --
+	{ ID id-ExtendedRNC-ID			CRITICALITY reject	EXTENSION ExtendedRNC-ID		PRESENCE optional}|
+-- Extension for Release 8 to support CSG --
+	{ ID id-CSG-Id				CRITICALITY reject	EXTENSION CSG-Id			PRESENCE optional}|
+-- Extension for Release 9 to allow communication of the cell access mode -- 
+	{ ID id-Cell-Access-Mode		CRITICALITY reject	EXTENSION Cell-Access-Mode		PRESENCE optional}|
+-- Extension for Release 10 to support LIPA -- 
+	{ ID id-LGW-TransportLayerAddress	CRITICALITY ignore	EXTENSION TransportLayerAddress		PRESENCE optional}|
+-- Extension for Release 9 to enable the CN to handle potential UE NAS QoS issues related to higher bitrates -- 
+	{ ID id-HigherBitratesThan16MbpsFlag	CRITICALITY ignore	EXTENSION HigherBitratesThan16MbpsFlag	PRESENCE optional}|
+-- Extension for Release 11 to support BBAI -- 
+	{ ID id-Tunnel-Information-for-BBF	CRITICALITY ignore	EXTENSION TunnelInformation		PRESENCE optional}|
+-- Extension for Release 12 to support SIPTO@LN with collocated L-GW-- 
+	{ ID id-SIPTO-LGW-TransportLayerAddress	CRITICALITY ignore	EXTENSION TransportLayerAddress		PRESENCE optional}|
+-- Extension for Release 12 to support SIPTO@LN Stand-Alone --
+	{ ID id-LHN-ID				CRITICALITY ignore	EXTENSION LHN-ID			PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- DIRECT TRANSFER ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Direct Transfer
+--
+-- **************************************************************
+
+DirectTransfer ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {DirectTransferIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {DirectTransferExtensions} }				OPTIONAL,
+	...
+}
+
+DirectTransferIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-NAS-PDU		CRITICALITY ignore	TYPE NAS-PDU		PRESENCE mandatory}|
+	{ ID id-LAI		CRITICALITY ignore	TYPE LAI		PRESENCE optional}|
+	{ ID id-RAC		CRITICALITY ignore	TYPE RAC		PRESENCE optional}|
+	{ ID id-SAI		CRITICALITY ignore	TYPE SAI		PRESENCE optional}|
+	{ ID id-SAPI		CRITICALITY ignore	TYPE SAPI		PRESENCE optional},
+	...
+}
+
+DirectTransferExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 6 to enable rerouting in MOCN configuration for network sharing non-supporting UEs --
+	{ ID id-RedirectionIndication			CRITICALITY ignore	EXTENSION RedirectionIndication		PRESENCE optional}|
+-- Extension for Release 6 to indicate the MOCN rerouting is completed --
+	{ ID id-RedirectionCompleted			CRITICALITY ignore	EXTENSION RedirectionCompleted		PRESENCE optional}|
+-- Extension for Release 8 to indicate the Subscriber Profile ID for RAT/Frequency Selection Priority --
+	{ ID id-SubscriberProfileIDforRFP		CRITICALITY ignore	EXTENSION SubscriberProfileIDforRFP	PRESENCE optional}|
+-- Extension for Release 10 to support LIPA -- 
+	{ ID id-LGW-TransportLayerAddress		CRITICALITY ignore	EXTENSION TransportLayerAddress		PRESENCE optional}|
+-- Extension for Release 12 to support SIPTO@LN with collocated L-GW -- 
+	{ ID id-SIPTO-LGW-TransportLayerAddress		CRITICALITY ignore	EXTENSION TransportLayerAddress		PRESENCE optional}|
+-- Extension for Release 12 to support SIPTO@LN Stand-Alone --
+	{ ID id-LHN-ID					CRITICALITY ignore	EXTENSION LHN-ID			PRESENCE optional},
+	...
+}
+
+RedirectionIndication ::= ProtocolIE-Container { {RedirectionIndication-IEs} }
+
+RedirectionIndication-IEs RANAP-PROTOCOL-IES ::= {
+	{	ID id-NAS-PDU			CRITICALITY ignore TYPE NAS-PDU			PRESENCE mandatory }|
+	{	ID id-RejectCauseValue		CRITICALITY ignore TYPE RejectCauseValue	PRESENCE mandatory}|
+	{	ID id-NAS-SequenceNumber	CRITICALITY ignore TYPE NAS-SequenceNumber	PRESENCE optional}|
+	{	ID id-PermanentNAS-UE-ID	CRITICALITY ignore TYPE PermanentNAS-UE-ID	PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- OVERLOAD CONTROL ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Overload
+--
+-- **************************************************************
+
+Overload ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {OverloadIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {OverloadExtensions} }					OPTIONAL,
+	...
+}
+
+OverloadIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-NumberOfSteps		CRITICALITY ignore	TYPE NumberOfSteps				PRESENCE optional	} |
+	{ ID id-GlobalRNC-ID		CRITICALITY ignore	TYPE GlobalRNC-ID				PRESENCE optional	},
+	...
+}
+
+OverloadExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 99 to enable the indication to the RNC which CN domain is suffering the signalling traffic overload --
+	{ ID id-CN-DomainIndicator	CRITICALITY ignore	EXTENSION CN-DomainIndicator		PRESENCE optional} |
+-- Extension for Release 5 to enable NNSF --
+	{ ID id-GlobalCN-ID		CRITICALITY ignore	EXTENSION GlobalCN-ID			PRESENCE optional} |
+-- Extension for Release 7 to indicate extended RNC-ID --
+	{ ID id-ExtendedRNC-ID		CRITICALITY reject	EXTENSION ExtendedRNC-ID		PRESENCE optional} |
+-- Extension for Release 10 to support Low Priority overload --
+	{ ID id-Priority-Class-Indicator CRITICALITY ignore	EXTENSION Priority-Class-Indicator	PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- ERROR INDICATION ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Error Indication
+--
+-- **************************************************************
+
+ErrorIndication ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {ErrorIndicationIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {ErrorIndicationExtensions} }				OPTIONAL,
+	...
+}
+
+ErrorIndicationIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-Cause			CRITICALITY ignore	TYPE Cause			PRESENCE optional	} |
+	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional	} |
+	{ ID id-CN-DomainIndicator	CRITICALITY ignore	TYPE CN-DomainIndicator		PRESENCE optional	} |
+	{ ID id-GlobalRNC-ID		CRITICALITY ignore	TYPE GlobalRNC-ID		PRESENCE optional	},
+	...
+}
+
+ErrorIndicationExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 4 --
+	{ ID id-GlobalCN-ID		CRITICALITY ignore	EXTENSION GlobalCN-ID		PRESENCE optional}|
+-- Extension for Release 7 to indicate extended RNC-ID --
+	{ ID id-ExtendedRNC-ID		CRITICALITY reject	EXTENSION ExtendedRNC-ID	PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- SRNS DATA FORWARD ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- SRNS Data Forward Command
+--
+-- **************************************************************
+
+SRNS-DataForwardCommand ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {SRNS-DataForwardCommandIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {SRNS-DataForwardCommandExtensions} }			OPTIONAL,
+	...
+}
+
+SRNS-DataForwardCommandIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-DataForwardingList	CRITICALITY ignore	TYPE RAB-DataForwardingList	PRESENCE optional	},
+	...
+}
+
+SRNS-DataForwardCommandExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- FORWARD SRNS CONTEXT ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Forward SRNS Context
+--
+-- **************************************************************
+
+ForwardSRNS-Context ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {ForwardSRNS-ContextIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {ForwardSRNS-ContextExtensions} }				OPTIONAL,
+	...
+}
+
+ForwardSRNS-ContextIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-ContextList	CRITICALITY ignore	TYPE RAB-ContextList		PRESENCE mandatory	},
+	...
+}
+
+ForwardSRNS-ContextExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 5 to enable relocation of Source RNC PDCP context info --
+	{ ID id-SourceRNC-PDCP-context-info	CRITICALITY ignore	EXTENSION RRC-Container	PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- RAB ASSIGNMENT ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- RAB Assignment Request
+--
+-- **************************************************************
+
+RAB-AssignmentRequest ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {RAB-AssignmentRequestIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {RAB-AssignmentRequestExtensions} }			OPTIONAL,
+	...
+}
+
+RAB-AssignmentRequestIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-SetupOrModifyList	CRITICALITY ignore	TYPE RAB-SetupOrModifyList	PRESENCE optional	} |
+	{ ID id-RAB-ReleaseList		CRITICALITY ignore	TYPE RAB-ReleaseList		PRESENCE optional	},
+	...
+}
+
+RAB-SetupOrModifyList 	::= RAB-IE-ContainerPairList { {RAB-SetupOrModifyItem-IEs} }
+
+RAB-SetupOrModifyItem-IEs RANAP-PROTOCOL-IES-PAIR ::= {
+	{ ID id-RAB-SetupOrModifyItem	FIRST CRITICALITY reject	FIRST TYPE RAB-SetupOrModifyItemFirst
+	 				SECOND CRITICALITY ignore	SECOND TYPE RAB-SetupOrModifyItemSecond	
+													PRESENCE mandatory	},
+	...
+}
+
+RAB-SetupOrModifyItemFirst ::= SEQUENCE {
+	rAB-ID				RAB-ID,
+	nAS-SynchronisationIndicator	NAS-SynchronisationIndicator	OPTIONAL,
+	rAB-Parameters			RAB-Parameters			OPTIONAL,
+	userPlaneInformation		UserPlaneInformation		OPTIONAL,
+	transportLayerInformation	TransportLayerInformation	OPTIONAL,
+	service-Handover		Service-Handover		OPTIONAL,
+	iE-Extensions			ProtocolExtensionContainer { {RAB-SetupOrModifyItemFirst-ExtIEs} } OPTIONAL,
+	...
+}
+
+TransportLayerInformation ::= SEQUENCE {
+	transportLayerAddress	TransportLayerAddress,
+	iuTransportAssociation	IuTransportAssociation,
+	iE-Extensions		ProtocolExtensionContainer { {TransportLayerInformation-ExtIEs} } OPTIONAL,
+	...
+}
+
+TransportLayerInformation-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RAB-SetupOrModifyItemFirst-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 8 to enable handover restriction to E-UTRAN --
+	{ ID id-E-UTRAN-Service-Handover	CRITICALITY ignore	EXTENSION E-UTRAN-Service-Handover	PRESENCE optional}|
+-- Extension for Release 10 to support LIPA --
+	{ ID id-Correlation-ID			CRITICALITY ignore	EXTENSION Correlation-ID		PRESENCE optional}|
+-- Extension for Release 12 to support SIPTO@LN with collocated L-GW --
+	{ ID id-SIPTO-Correlation-ID		CRITICALITY ignore	EXTENSION Correlation-ID		PRESENCE optional},
+	...
+}
+
+RAB-SetupOrModifyItemSecond ::= SEQUENCE {
+	pDP-TypeInformation				PDP-TypeInformation 		OPTIONAL,
+	dataVolumeReportingIndication			DataVolumeReportingIndication 	OPTIONAL,
+	dl-GTP-PDU-SequenceNumber			DL-GTP-PDU-SequenceNumber 	OPTIONAL,
+	ul-GTP-PDU-SequenceNumber			UL-GTP-PDU-SequenceNumber 	OPTIONAL,
+	dl-N-PDU-SequenceNumber				DL-N-PDU-SequenceNumber 	OPTIONAL,
+	ul-N-PDU-SequenceNumber				UL-N-PDU-SequenceNumber		OPTIONAL,
+	iE-Extensions					ProtocolExtensionContainer { {RAB-SetupOrModifyItemSecond-ExtIEs} } OPTIONAL,
+	...
+}
+
+RAB-SetupOrModifyItemSecond-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 4 to enable RAB Quality of Service negotiation over Iu --
+	{ ID id-Alt-RAB-Parameters		CRITICALITY ignore	EXTENSION Alt-RAB-Parameters		PRESENCE optional}|
+-- Extension for Release 5 to enable GERAN support over Iu-cs --
+	{ ID id-GERAN-BSC-Container		CRITICALITY ignore	EXTENSION GERAN-BSC-Container		PRESENCE optional}|
+-- Extension for Release Release 9 to enable a new value --
+	{ ID id-PDP-TypeInformation-extension	CRITICALITY ignore	EXTENSION PDP-TypeInformation-extension	PRESENCE optional}|
+-- Extension for Release 10 to enable Offload at Iu-ps for UTRAN --
+	{ ID id-Offload-RAB-Parameters		CRITICALITY ignore	EXTENSION Offload-RAB-Parameters	PRESENCE optional},
+	...
+}
+
+RAB-AssignmentRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	{ ID id-UE-AggregateMaximumBitRate	CRITICALITY ignore	EXTENSION UE-AggregateMaximumBitRate	PRESENCE optional}|
+-- Extension for Release 10 to enable Offload at Iu-ps for UTRAN --
+	{ ID id-MSISDN				CRITICALITY ignore	EXTENSION MSISDN			PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- RAB Assignment Response
+--
+-- **************************************************************
+
+RAB-AssignmentResponse ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {RAB-AssignmentResponseIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {RAB-AssignmentResponseExtensions} }			OPTIONAL,
+	...
+}
+
+RAB-AssignmentResponseIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-SetupOrModifiedList	CRITICALITY ignore	TYPE RAB-SetupOrModifiedList	PRESENCE optional	} |
+	{ ID id-RAB-ReleasedList	CRITICALITY ignore	TYPE RAB-ReleasedList		PRESENCE optional	} |
+	{ ID id-RAB-QueuedList		CRITICALITY ignore	TYPE RAB-QueuedList		PRESENCE optional	} |
+	{ ID id-RAB-FailedList		CRITICALITY ignore	TYPE RAB-FailedList		PRESENCE optional	} |
+	{ ID id-RAB-ReleaseFailedList	CRITICALITY ignore	TYPE RAB-ReleaseFailedList	PRESENCE optional	} |
+	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional },
+	...
+}
+
+RAB-SetupOrModifiedList 				::= RAB-IE-ContainerList { {RAB-SetupOrModifiedItemIEs} }
+
+RAB-SetupOrModifiedItemIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-SetupOrModifiedItem	CRITICALITY ignore	TYPE RAB-SetupOrModifiedItem	PRESENCE mandatory	},
+	...
+}
+
+RAB-SetupOrModifiedItem ::= SEQUENCE {
+	rAB-ID			RAB-ID,
+	transportLayerAddress	TransportLayerAddress	OPTIONAL,
+	iuTransportAssociation	IuTransportAssociation	OPTIONAL,
+	dl-dataVolumes		DataVolumeList		OPTIONAL,
+	iE-Extensions		ProtocolExtensionContainer { {RAB-SetupOrModifiedItem-ExtIEs} }			OPTIONAL,
+	...
+}
+
+RAB-SetupOrModifiedItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 4 to enable RAB Quality of Service negotiation over Iu --
+	{	ID id-Ass-RAB-Parameters	CRITICALITY ignore		EXTENSION Ass-RAB-Parameters		PRESENCE optional	},
+	...
+}
+
+RAB-ReleasedList 					::= RAB-IE-ContainerList { {RAB-ReleasedItemIEs} }
+
+RAB-ReleasedItemIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-ReleasedItem	CRITICALITY ignore	TYPE RAB-ReleasedItem				PRESENCE mandatory	},
+	...
+}
+
+RAB-ReleasedItem ::= SEQUENCE {
+	rAB-ID				RAB-ID,
+	dl-dataVolumes			DataVolumeList		OPTIONAL,
+	dL-GTP-PDU-SequenceNumber	DL-GTP-PDU-SequenceNumber			OPTIONAL,
+	uL-GTP-PDU-SequenceNumber	UL-GTP-PDU-SequenceNumber			OPTIONAL,
+	iE-Extensions			ProtocolExtensionContainer { {RAB-ReleasedItem-ExtIEs} }			OPTIONAL,
+	...
+}
+
+RAB-ReleasedItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+DataVolumeList ::= SEQUENCE (SIZE (1..maxNrOfVol)) OF
+	SEQUENCE {
+		dl-UnsuccessfullyTransmittedDataVolume	UnsuccessfullyTransmittedDataVolume,
+		dataVolumeReference			DataVolumeReference	OPTIONAL,
+		iE-Extensions				ProtocolExtensionContainer { {DataVolumeList-ExtIEs} }			OPTIONAL,
+		...
+	}
+
+DataVolumeList-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RAB-QueuedList 						::= RAB-IE-ContainerList { {RAB-QueuedItemIEs} }
+
+RAB-QueuedItemIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-QueuedItem	CRITICALITY ignore	TYPE RAB-QueuedItem				PRESENCE mandatory	},
+	...
+}
+
+RAB-QueuedItem ::= SEQUENCE {
+	rAB-ID		RAB-ID,
+	iE-Extensions	ProtocolExtensionContainer { {RAB-QueuedItem-ExtIEs} }			OPTIONAL,
+	...
+}
+
+RAB-QueuedItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RAB-ReleaseFailedList ::= RAB-FailedList
+
+RAB-AssignmentResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 5 to enable GERAN support over Iu-cs --
+	{ ID id-GERAN-Iumode-RAB-FailedList-RABAssgntResponse		CRITICALITY ignore	EXTENSION GERAN-Iumode-RAB-FailedList-RABAssgntResponse			PRESENCE optional} ,
+	...
+}
+
+GERAN-Iumode-RAB-FailedList-RABAssgntResponse		::= RAB-IE-ContainerList { {GERAN-Iumode-RAB-Failed-RABAssgntResponse-ItemIEs} }
+
+GERAN-Iumode-RAB-Failed-RABAssgntResponse-ItemIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item		CRITICALITY ignore	TYPE GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item			PRESENCE mandatory	},
+	...
+}
+
+GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item ::= SEQUENCE {
+	rAB-ID		RAB-ID,
+	cause		Cause,
+	gERAN-Classmark	GERAN-Classmark		OPTIONAL,
+	iE-Extensions	ProtocolExtensionContainer { {GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item-ExtIEs} }			OPTIONAL,
+	...
+}
+
+GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- PRIVATE MESSAGE
+--
+-- **************************************************************
+
+PrivateMessage ::= SEQUENCE {
+	privateIEs	PrivateIE-Container		{ {PrivateMessage-IEs } },
+	...
+}
+
+PrivateMessage-IEs RANAP-PRIVATE-IES ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- RANAP RELOCATION INFORMATION ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+RANAP-RelocationInformation ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {RANAP-RelocationInformationIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {RANAP-RelocationInformationExtensions} }			OPTIONAL,
+	...
+}
+
+RANAP-RelocationInformationIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-DirectTransferInformationList-RANAP-RelocInf	
+							CRITICALITY ignore	TYPE DirectTransferInformationList-RANAP-RelocInf		
+																PRESENCE optional	} |
+	{ ID id-RAB-ContextList-RANAP-RelocInf		CRITICALITY ignore	TYPE RAB-ContextList-RANAP-RelocInf		PRESENCE optional	},
+	...
+}
+
+DirectTransferInformationList-RANAP-RelocInf		::= DirectTransfer-IE-ContainerList { {DirectTransferInformationItemIEs-RANAP-RelocInf} }
+
+DirectTransferInformationItemIEs-RANAP-RelocInf RANAP-PROTOCOL-IES ::= {
+	{ ID id-DirectTransferInformationItem-RANAP-RelocInf
+							CRITICALITY ignore	TYPE DirectTransferInformationItem-RANAP-RelocInf
+																PRESENCE mandatory	},
+	...
+}
+
+DirectTransferInformationItem-RANAP-RelocInf ::= SEQUENCE {
+	nAS-PDU			NAS-PDU,
+	sAPI			SAPI,
+	cN-DomainIndicator	CN-DomainIndicator,
+	iE-Extensions		ProtocolExtensionContainer { {RANAP-DirectTransferInformationItem-ExtIEs-RANAP-RelocInf} }			OPTIONAL,
+	...
+}
+
+RANAP-DirectTransferInformationItem-ExtIEs-RANAP-RelocInf RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RAB-ContextList-RANAP-RelocInf 				::= RAB-IE-ContainerList { {RAB-ContextItemIEs-RANAP-RelocInf} }
+
+RAB-ContextItemIEs-RANAP-RelocInf RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-ContextItem-RANAP-RelocInf		CRITICALITY ignore	TYPE RAB-ContextItem-RANAP-RelocInf			PRESENCE mandatory	},
+	...
+}
+
+RAB-ContextItem-RANAP-RelocInf ::= SEQUENCE {
+	rAB-ID				RAB-ID,
+	dl-GTP-PDU-SequenceNumber	DL-GTP-PDU-SequenceNumber 	OPTIONAL,
+	ul-GTP-PDU-SequenceNumber	UL-GTP-PDU-SequenceNumber 	OPTIONAL,
+	dl-N-PDU-SequenceNumber		DL-N-PDU-SequenceNumber		OPTIONAL,
+	ul-N-PDU-SequenceNumber		UL-N-PDU-SequenceNumber		OPTIONAL,
+	iE-Extensions			ProtocolExtensionContainer { {RAB-ContextItem-ExtIEs-RANAP-RelocInf} }		OPTIONAL,
+	...
+}
+
+RAB-ContextItem-ExtIEs-RANAP-RelocInf RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RANAP-RelocationInformationExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 5 to enable relocation of Source RNC PDCP context info --
+	{ ID id-SourceRNC-PDCP-context-info		CRITICALITY ignore	EXTENSION RRC-Container					PRESENCE optional} |
+-- Extension for Release 10 to enable RNSAP Relocation --
+	{ ID id-RNSAPRelocationParameters		CRITICALITY reject	EXTENSION RNSAPRelocationParameters	PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- RANAP ENHANCED RELOCATION INFORMATION ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- RANAP Enhanced Relocation Information Request
+--
+-- **************************************************************
+
+RANAP-EnhancedRelocationInformationRequest ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {RANAP-EnhancedRelocationInformationRequestIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {RANAP-EnhancedRelocationInformationRequestExtensions} }			OPTIONAL,
+	...
+}
+
+RANAP-EnhancedRelocationInformationRequestIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-Source-ToTarget-TransparentContainer 	CRITICALITY reject TYPE SourceRNC-ToTargetRNC-TransparentContainer	PRESENCE mandatory }|
+	{ ID id-OldIuSigConIdCS				CRITICALITY ignore TYPE IuSignallingConnectionIdentifier		PRESENCE optional }|
+	{ ID id-GlobalCN-IDCS				CRITICALITY reject TYPE GlobalCN-ID					PRESENCE optional }|
+	{ ID id-OldIuSigConIdPS				CRITICALITY ignore TYPE IuSignallingConnectionIdentifier		PRESENCE optional }|
+	{ ID id-GlobalCN-IDPS				CRITICALITY reject TYPE GlobalCN-ID					PRESENCE optional }|
+	{ ID id-RAB-SetupList-EnhRelocInfoReq		CRITICALITY reject TYPE RAB-SetupList-EnhRelocInfoReq			PRESENCE optional }|
+	{ ID id-SNA-Access-Information			CRITICALITY ignore TYPE SNA-Access-Information				PRESENCE optional }|
+	{ ID id-UESBI-Iu				CRITICALITY ignore TYPE UESBI-Iu					PRESENCE optional }|
+	{ ID id-SelectedPLMN-ID	 			CRITICALITY ignore TYPE PLMNidentity					PRESENCE optional }|
+	{ ID id-CNMBMSLinkingInformation		CRITICALITY ignore TYPE CNMBMSLinkingInformation			PRESENCE optional },
+	...
+}
+
+RAB-SetupList-EnhRelocInfoReq 					::= RAB-IE-ContainerList { { RAB-SetupItem-EnhRelocInfoReq-IEs} }
+
+RAB-SetupItem-EnhRelocInfoReq-IEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-SetupItem-EnhRelocInfoReq		CRITICALITY reject	TYPE RAB-SetupItem-EnhRelocInfoReq		PRESENCE mandatory 	},
+	...
+}
+
+RAB-SetupItem-EnhRelocInfoReq ::= SEQUENCE {
+	rAB-ID				RAB-ID,
+	cN-DomainIndicator		CN-DomainIndicator,
+	rAB-Parameters			RAB-Parameters,
+	dataVolumeReportingIndication	DataVolumeReportingIndication 	OPTIONAL
+	-- This IE shall be present if the CN domain indicator IE is set to "PS domain" --,
+	pDP-TypeInformation		PDP-TypeInformation		OPTIONAL
+	-- This IE shall be present if the CN domain indicator IE is set to "PS domain" --,
+	userPlaneInformation		UserPlaneInformation,
+	dataForwardingInformation	TNLInformationEnhRelInfoReq	OPTIONAL,
+	sourceSideIuULTNLInfo		TNLInformationEnhRelInfoReq	OPTIONAL,
+	
+	service-Handover		Service-Handover		OPTIONAL,
+	alt-RAB-Parameters		Alt-RAB-Parameters		OPTIONAL,
+	iE-Extensions			ProtocolExtensionContainer { { RAB-SetupItem-EnhRelocInfoReq-ExtIEs} }			OPTIONAL,
+	...
+}
+
+RAB-SetupItem-EnhRelocInfoReq-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 8 to enable handover restriction to E-UTRAN --
+	{ ID id-E-UTRAN-Service-Handover	CRITICALITY ignore	EXTENSION E-UTRAN-Service-Handover	PRESENCE optional	}|
+-- Extension for Release Release 9 to enable a new value --
+	{ ID id-PDP-TypeInformation-extension	CRITICALITY ignore	EXTENSION PDP-TypeInformation-extension	PRESENCE optional	},
+	...
+}
+
+TNLInformationEnhRelInfoReq ::=SEQUENCE{
+	transportLayerAddress	TransportLayerAddress,
+	iuTransportAssociation	IuTransportAssociation,
+	iE-Extensions		ProtocolExtensionContainer { { TNLInformationEnhRelInfoReq-ExtIEs} }			OPTIONAL,
+	...
+}
+
+TNLInformationEnhRelInfoReq-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+
+RANAP-EnhancedRelocationInformationRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	{ ID id-IntegrityProtectionInformation	CRITICALITY ignore	EXTENSION IntegrityProtectionInformation	PRESENCE optional} |
+	{ ID id-EncryptionInformation		CRITICALITY ignore	EXTENSION EncryptionInformation			PRESENCE optional} |
+	{ ID id-UE-AggregateMaximumBitRate	CRITICALITY ignore	EXTENSION UE-AggregateMaximumBitRate		PRESENCE optional} |
+-- Extension for Release 10 to enable RNSAP Relocation --
+	{ ID id-RABParametersList		CRITICALITY reject	EXTENSION RABParametersList			PRESENCE optional} |
+	{ ID id-CSG-Id				CRITICALITY reject	EXTENSION CSG-Id				PRESENCE optional} |
+	{ ID id-CSG-Membership-Status		CRITICALITY reject	EXTENSION CSG-Membership-Status			PRESENCE optional} |
+-- Extension for Release 11 to support rSRVCC in case of network sharing –
+	{ ID id-AnchorPLMN-ID			CRITICALITY ignore	EXTENSION PLMNidentity				PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- RANAP Enhanced Relocation Information Response
+--
+-- **************************************************************
+
+RANAP-EnhancedRelocationInformationResponse ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {RANAP-EnhancedRelocationInformationResponseIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {RANAP-EnhancedRelocationInformationResponseExtensions} }			OPTIONAL,
+	...
+}
+
+RANAP-EnhancedRelocationInformationResponseIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-Target-ToSource-TransparentContainer	CRITICALITY ignore	TYPE TargetRNC-ToSourceRNC-TransparentContainer PRESENCE optional	} |
+	{ ID id-RAB-SetupList-EnhRelocInfoRes		CRITICALITY ignore	TYPE RAB-SetupList-EnhRelocInfoRes		PRESENCE optional	} |
+	{ ID id-RAB-FailedList-EnhRelocInfoRes		CRITICALITY ignore	TYPE RAB-FailedList-EnhRelocInfoRes		PRESENCE optional 	} |
+	{ ID id-CriticalityDiagnostics			CRITICALITY ignore	TYPE CriticalityDiagnostics 			PRESENCE optional	},
+	...
+}
+
+RAB-SetupList-EnhRelocInfoRes 				::= RAB-IE-ContainerList { { RAB-SetupItem-EnhRelocInfoRes-IEs} }
+
+RAB-SetupItem-EnhRelocInfoRes-IEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-SetupItem-EnhRelocInfoRes		CRITICALITY reject	TYPE RAB-SetupItem-EnhRelocInfoRes		PRESENCE mandatory 	},
+	...
+}
+
+RAB-SetupItem-EnhRelocInfoRes ::= SEQUENCE {
+	cN-DomainIndicator		CN-DomainIndicator,
+	rAB-ID				RAB-ID,
+	dataForwardingInformation	TNLInformationEnhRelInfoRes	OPTIONAL,
+	ass-RAB-Parameters		Ass-RAB-Parameters		OPTIONAL,
+	iE-Extensions			ProtocolExtensionContainer { { RAB-SetupItem-EnhRelocInfoRes-ExtIEs} }			OPTIONAL,
+	...
+}
+
+RAB-SetupItem-EnhRelocInfoRes-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RAB-FailedList-EnhRelocInfoRes 	::= RAB-IE-ContainerList { { RAB-FailedItem-EnhRelocInfoRes-IEs} }
+
+RAB-FailedItem-EnhRelocInfoRes-IEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-FailedItem-EnhRelocInfoRes		CRITICALITY reject	TYPE RAB-FailedItem-EnhRelocInfoRes			PRESENCE mandatory 	},
+	...
+}
+
+RAB-FailedItem-EnhRelocInfoRes ::= SEQUENCE {
+	cN-DomainIndicator	CN-DomainIndicator,
+	rAB-ID			RAB-ID,
+	cause			Cause,
+	iE-Extensions		ProtocolExtensionContainer { { RAB-FailedItem-EnhRelocInfoRes-ExtIEs} }			OPTIONAL,
+	...
+}
+
+RAB-FailedItem-EnhRelocInfoRes-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+TNLInformationEnhRelInfoRes ::=SEQUENCE{
+	dl-forwardingTransportLayerAddress	TransportLayerAddress,
+	dl-forwardingTransportAssociation	IuTransportAssociation,
+	iE-Extensions				ProtocolExtensionContainer { { TNLInformationEnhRelInfoRes-ExtIEs} }			OPTIONAL,
+	...
+}
+
+TNLInformationEnhRelInfoRes-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RANAP-EnhancedRelocationInformationResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+-- **************************************************************
+--
+-- RAB MODIFICATION REQUEST ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- RAB Modify Request
+--
+-- **************************************************************
+
+RAB-ModifyRequest ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {RAB-ModifyRequestIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {RAB-ModifyRequestExtensions} }				OPTIONAL,
+	...
+}
+
+RAB-ModifyRequestIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-ModifyList			CRITICALITY ignore	TYPE RAB-ModifyList			PRESENCE mandatory},
+	...
+}
+
+RAB-ModifyList 	::= RAB-IE-ContainerList { {RAB-ModifyItemIEs} }
+
+RAB-ModifyItemIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-RAB-ModifyItem		CRITICALITY ignore	TYPE RAB-ModifyItem		PRESENCE mandatory	},
+	...
+}
+
+RAB-ModifyItem ::= SEQUENCE {
+	rAB-ID				RAB-ID,
+	requested-RAB-Parameter-Values	Requested-RAB-Parameter-Values,
+	iE-Extensions			ProtocolExtensionContainer { {RAB-ModifyItem-ExtIEs} }			OPTIONAL,
+	...
+}
+
+RAB-ModifyItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+RAB-ModifyRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- LOCATION RELATED DATA ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Location Related Data Request
+--
+-- **************************************************************
+
+LocationRelatedDataRequest ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {LocationRelatedDataRequestIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {LocationRelatedDataRequestExtensions} }				OPTIONAL,
+	...
+}
+
+LocationRelatedDataRequestIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-LocationRelatedDataRequestType		CRITICALITY reject	TYPE LocationRelatedDataRequestType		PRESENCE optional	},
+	-- This IE is mandatory for UTRAN, optional for GERAN Iu Mode –-
+	...
+}
+
+LocationRelatedDataRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 5 to enable LCS support for GERAN Iu mode --
+	{ ID id-LocationRelatedDataRequestTypeSpecificToGERANIuMode		CRITICALITY reject	EXTENSION LocationRelatedDataRequestTypeSpecificToGERANIuMode	PRESENCE optional	}|
+	-- The previous extension is optional for GERAN Iu Mode only, not applicable for UTRAN --
+	-- Extension for Release 7 to request GANSS Assistance Data. This IE shall be present if the Requested Location Related Data Type IE is set to
+	-- ‘Dedicated Assistance Data for Assisted GANSS’ or `Dedicated Assistance Data for Assisted GPS and GANSS’--
+	{ ID id-RequestedGANSSAssistanceData					CRITICALITY reject	EXTENSION RequestedGANSSAssistanceData				PRESENCE conditional	},
+	...
+}
+
+-- **************************************************************
+--
+-- Location Related Data Response
+--
+-- **************************************************************
+
+LocationRelatedDataResponse ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ { LocationRelatedDataResponseIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ { LocationRelatedDataResponseExtensions} }				OPTIONAL,
+	...
+}
+
+LocationRelatedDataResponseIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-BroadcastAssistanceDataDecipheringKeys		CRITICALITY ignore	TYPE BroadcastAssistanceDataDecipheringKeys		PRESENCE optional	},
+	...
+}
+
+LocationRelatedDataResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for error handling
+	{ ID id-CriticalityDiagnostics				CRITICALITY ignore	EXTENSION CriticalityDiagnostics			PRESENCE optional	}|
+	{ ID id-BroadcastGANSSAssistanceDataDecipheringKeys	CRITICALITY ignore	EXTENSION BroadcastAssistanceDataDecipheringKeys	PRESENCE optional},
+	...
+}
+
+-- **************************************************************
+--
+-- Location Related Data Failure
+--
+-- **************************************************************
+
+LocationRelatedDataFailure ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ { LocationRelatedDataFailureIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ { LocationRelatedDataFailureExtensions} }				OPTIONAL,
+	...
+}
+
+LocationRelatedDataFailureIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-Cause		CRITICALITY ignore	TYPE Cause					PRESENCE mandatory	},
+	...
+}
+
+LocationRelatedDataFailureExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for error handling
+	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	EXTENSION CriticalityDiagnostics		PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- INFORMATION TRANSFER ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Information Transfer Indication
+--
+-- **************************************************************
+
+InformationTransferIndication ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ { InformationTransferIndicationIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ { InformationTransferIndicationExtensions} }				OPTIONAL,
+	...
+}
+
+InformationTransferIndicationIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-InformationTransferID	CRITICALITY reject	TYPE InformationTransferID	PRESENCE mandatory	} |
+	{ ID id-ProvidedData		CRITICALITY reject	TYPE ProvidedData		PRESENCE mandatory	} |
+	{ ID id-CN-DomainIndicator	CRITICALITY reject	TYPE CN-DomainIndicator		PRESENCE mandatory	} |
+	{ ID id-GlobalCN-ID		CRITICALITY ignore	TYPE GlobalCN-ID		PRESENCE optional},
+	...
+}
+
+InformationTransferIndicationExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- Information Transfer Confirmation
+--
+-- **************************************************************
+
+InformationTransferConfirmation ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ { InformationTransferConfirmationIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ { InformationTransferConfirmationExtensions} }				OPTIONAL,
+	...
+}
+
+InformationTransferConfirmationIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-InformationTransferID	CRITICALITY ignore	TYPE InformationTransferID	PRESENCE mandatory	} |
+	{ ID id-CN-DomainIndicator	CRITICALITY ignore	TYPE CN-DomainIndicator		PRESENCE mandatory	} |
+	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional 	} |
+	{ ID id-GlobalRNC-ID		CRITICALITY ignore	TYPE GlobalRNC-ID		PRESENCE mandatory	},
+	...
+}
+
+InformationTransferConfirmationExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 7 to indicate extended RNC-ID --
+	{ ID id-ExtendedRNC-ID		CRITICALITY reject	EXTENSION ExtendedRNC-ID	PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- Information Transfer Failure
+--
+-- **************************************************************
+
+InformationTransferFailure ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ { InformationTransferFailureIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ { InformationTransferFailureExtensions} }				OPTIONAL,
+	...
+}
+
+InformationTransferFailureIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-InformationTransferID	CRITICALITY ignore	TYPE InformationTransferID	PRESENCE mandatory	} |
+	{ ID id-CN-DomainIndicator	CRITICALITY ignore	TYPE CN-DomainIndicator		PRESENCE mandatory	} |
+	{ ID id-Cause			CRITICALITY ignore	TYPE Cause			PRESENCE mandatory	} |
+	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional 	} |
+	{ ID id-GlobalRNC-ID		CRITICALITY ignore	TYPE GlobalRNC-ID		PRESENCE mandatory	},
+	...
+}
+
+InformationTransferFailureExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 7 to indicate extended RNC-ID --
+	{ ID id-ExtendedRNC-ID		CRITICALITY reject	EXTENSION ExtendedRNC-ID	PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- UE SPECIFIC INFORMATION ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- UE Specific Information Indication
+--
+-- **************************************************************
+
+UESpecificInformationIndication ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {UESpecificInformationIndicationIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {UESpecificInformationIndicationExtensions} }					OPTIONAL,
+	...
+}
+
+UESpecificInformationIndicationIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-UESBI-Iu	CRITICALITY ignore	TYPE UESBI-Iu				PRESENCE optional	},
+	...
+}
+
+UESpecificInformationIndicationExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- DIRECT INFORMATION TRANSFER ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Direct Information Transfer
+--
+-- **************************************************************
+
+DirectInformationTransfer ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ { DirectInformationTransferIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ { DirectInformationTransferExtensions} }				OPTIONAL,
+	...
+}
+
+DirectInformationTransferIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-InterSystemInformationTransferType	CRITICALITY ignore	TYPE InterSystemInformationTransferType		PRESENCE optional } |
+	{ ID id-CN-DomainIndicator			CRITICALITY ignore	TYPE CN-DomainIndicator				PRESENCE mandatory } |
+	{ ID id-GlobalRNC-ID 				CRITICALITY ignore	TYPE GlobalRNC-ID				PRESENCE optional } |
+	{ ID id-GlobalCN-ID 				CRITICALITY ignore	TYPE GlobalCN-ID				PRESENCE optional },
+	...
+}
+
+DirectInformationTransferExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 7 to indicate extended RNC-ID --
+	{ ID id-ExtendedRNC-ID			CRITICALITY reject	EXTENSION ExtendedRNC-ID		PRESENCE optional },
+	...
+}
+
+-- **************************************************************
+--
+-- UPLINK INFORMATION EXCHANGE ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Uplink Information Exchange Request
+--
+-- **************************************************************
+
+UplinkInformationExchangeRequest ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ { UplinkInformationExchangeRequestIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ { UplinkInformationExchangeRequestExtensions} }			OPTIONAL,
+	...
+}
+
+UplinkInformationExchangeRequestIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-InformationExchangeID		CRITICALITY reject	TYPE InformationExchangeID	PRESENCE mandatory	} |
+	{ ID id-InformationExchangeType		CRITICALITY reject	TYPE InformationExchangeType	PRESENCE mandatory	} |
+	{ ID id-InformationTransferType		CRITICALITY reject	TYPE InformationTransferType	PRESENCE conditional
+	-- This IE shall be present if the Information Exchange Type IE is set to "transfer"	--				} |
+	{ ID id-InformationRequestType		CRITICALITY reject	TYPE InformationRequestType	PRESENCE conditional
+	-- This IE shall be present if the Information Exchange Type IE is set to "request"		--			} |
+	{ ID id-CN-DomainIndicator		CRITICALITY reject	TYPE CN-DomainIndicator		PRESENCE mandatory	} |
+	{ ID id-GlobalRNC-ID			CRITICALITY reject	TYPE GlobalRNC-ID		PRESENCE mandatory	},
+	...
+}
+
+UplinkInformationExchangeRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 7 to indicate extended RNC-ID --
+	{ ID id-ExtendedRNC-ID			CRITICALITY reject	EXTENSION ExtendedRNC-ID	PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- Uplink Information Exchange Response
+--
+-- **************************************************************
+
+UplinkInformationExchangeResponse ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ { UplinkInformationExchangeResponseIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ { UplinkInformationExchangeResponseExtensions} }		OPTIONAL,
+	...
+}
+
+UplinkInformationExchangeResponseIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-InformationExchangeID		CRITICALITY ignore	TYPE InformationExchangeID		PRESENCE mandatory	} |
+	{ ID id-InformationRequested		CRITICALITY ignore	TYPE InformationRequested		PRESENCE optional	} |
+	{ ID id-CN-DomainIndicator		CRITICALITY ignore	TYPE CN-DomainIndicator			PRESENCE mandatory	} |
+	{ ID id-GlobalCN-ID			CRITICALITY ignore	TYPE GlobalCN-ID			PRESENCE optional	} |
+	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics		PRESENCE optional	} ,
+	...
+}
+
+UplinkInformationExchangeResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- Uplink Information Exchange Failure
+--
+-- **************************************************************
+
+UplinkInformationExchangeFailure ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ { UplinkInformationExchangeFailureIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ { UplinkInformationExchangeFailureExtensions} }				OPTIONAL,
+	...
+}
+
+UplinkInformationExchangeFailureIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-InformationExchangeID	CRITICALITY ignore	TYPE InformationExchangeID	PRESENCE mandatory	} |
+	{ ID id-CN-DomainIndicator	CRITICALITY ignore	TYPE CN-DomainIndicator		PRESENCE mandatory	} |
+	{ ID id-GlobalCN-ID		CRITICALITY ignore	TYPE GlobalCN-ID		PRESENCE optional	} |
+	{ ID id-Cause			CRITICALITY ignore	TYPE Cause			PRESENCE mandatory	} |
+	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional	} ,
+	...
+}
+
+UplinkInformationExchangeFailureExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- MBMS SESSION START PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- MBMS Session Start
+--
+-- **************************************************************
+
+MBMSSessionStart ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ { MBMSSessionStartIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ { MBMSSessionStartExtensions} }			OPTIONAL,
+	...
+}
+
+MBMSSessionStartIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-TMGI				CRITICALITY reject	TYPE TMGI				PRESENCE mandatory	} |
+	{ ID id-MBMSSessionIdentity		CRITICALITY ignore	TYPE MBMSSessionIdentity		PRESENCE optional	} |
+	{ ID id-MBMSBearerServiceType		CRITICALITY reject	TYPE MBMSBearerServiceType		PRESENCE mandatory	} |
+	{ ID id-IuSigConId			CRITICALITY reject 	TYPE IuSignallingConnectionIdentifier	PRESENCE mandatory	} |
+	{ ID id-RAB-Parameters			CRITICALITY reject 	TYPE RAB-Parameters			PRESENCE mandatory	} |
+	{ ID id-PDP-TypeInformation		CRITICALITY ignore	TYPE PDP-TypeInformation		PRESENCE optional	} |
+	{ ID id-MBMSSessionDuration		CRITICALITY reject	TYPE MBMSSessionDuration		PRESENCE mandatory	} |
+	{ ID id-MBMSServiceArea			CRITICALITY reject	TYPE MBMSServiceArea			PRESENCE mandatory	} |
+	{ ID id-FrequenceLayerConvergenceFlag	CRITICALITY ignore	TYPE FrequenceLayerConvergenceFlag	PRESENCE optional	} |
+	{ ID id-RAListofIdleModeUEs		CRITICALITY ignore	TYPE RAListofIdleModeUEs		PRESENCE optional	} |
+	{ ID id-GlobalCN-ID			CRITICALITY reject	TYPE GlobalCN-ID			PRESENCE optional	} |
+	{ ID id-MBMSSessionRepetitionNumber	CRITICALITY ignore	TYPE MBMSSessionRepetitionNumber	PRESENCE optional	} |
+	{ ID id-TimeToMBMSDataTransfer		CRITICALITY reject	TYPE TimeToMBMSDataTransfer		PRESENCE mandatory	},
+	...
+}
+
+MBMSSessionStartExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 6 to enable MBMS counting in broadcast mode --
+	{ ID id-MBMSCountingInformation			CRITICALITY ignore	EXTENSION MBMSCountingInformation		PRESENCE optional}|
+	{ ID id-MBMSSynchronisationInformation		CRITICALITY ignore	EXTENSION MBMSSynchronisationInformation	PRESENCE optional}|
+-- Extension for Release Release 9 to enable a new value --
+	{ ID id-PDP-TypeInformation-extension		CRITICALITY ignore	EXTENSION PDP-TypeInformation-extension		PRESENCE optional}|
+-- Extension for Release 12 to support Session re-establishment --
+	{ ID id-Session-Re-establishment-Indicator	CRITICALITY ignore	EXTENSION Session-Re-establishment-Indicator	PRESENCE optional},
+	...
+}
+
+MBMSSynchronisationInformation ::= SEQUENCE {
+	mBMSHCIndicator		MBMSHCIndicator,
+	iPMulticastAddress	IPMulticastAddress,
+	gTPDLTEID		GTP-TEI,
+	iE-Extensions		ProtocolExtensionContainer { {MBMSSynchronisationInformation-ExtIEs} }			OPTIONAL,
+	...
+}
+
+MBMSSynchronisationInformation-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	{ ID id-IP-Source-Address	CRITICALITY reject		EXTENSION IPMulticastAddress				PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- MBMS Session Start Response
+--
+-- **************************************************************
+
+MBMSSessionStartResponse::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {MBMSSessionStartResponseIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {MBMSSessionStartResponseExtensions} }		OPTIONAL,
+	...
+}
+
+MBMSSessionStartResponseIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-TransportLayerInformation	CRITICALITY ignore	TYPE TransportLayerInformation	PRESENCE optional	} |
+	{ ID id-Cause				CRITICALITY ignore 	TYPE Cause			PRESENCE optional	} |
+	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional	} ,
+	...
+}
+
+MBMSSessionStartResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- MBMS Session Start Failure
+--
+-- **************************************************************
+
+MBMSSessionStartFailure ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ { MBMSSessionStartFailureIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ { MBMSSessionStartFailureExtensions} }		OPTIONAL,
+	...
+}
+
+MBMSSessionStartFailureIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-Cause			CRITICALITY ignore	TYPE Cause			PRESENCE mandatory	} |
+	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional	} ,
+	...
+}
+
+MBMSSessionStartFailureExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- MBMS SESSION UPDATE PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- MBMS Session Update
+--
+-- **************************************************************
+
+MBMSSessionUpdate ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ { MBMSSessionUpdateIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ { MBMSSessionUpdateExtensions} }	OPTIONAL,
+	...
+}
+
+MBMSSessionUpdateIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-SessionUpdateID			CRITICALITY reject	TYPE SessionUpdateID		PRESENCE mandatory	} |
+	{ ID id-DeltaRAListofIdleModeUEs	CRITICALITY reject	TYPE DeltaRAListofIdleModeUEs	PRESENCE mandatory	},
+	...
+}
+
+MBMSSessionUpdateExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- MBMS Session Update Response
+--
+-- **************************************************************
+
+MBMSSessionUpdateResponse ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ { MBMSSessionUpdateResponseIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ { MBMSSessionUpdateResponseExtensions} }		OPTIONAL,
+	...
+}
+
+MBMSSessionUpdateResponseIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-SessionUpdateID			CRITICALITY ignore	TYPE SessionUpdateID		PRESENCE mandatory	} |
+	{ ID id-TransportLayerInformation	CRITICALITY ignore	TYPE TransportLayerInformation	PRESENCE optional	} |
+	{ ID id-Cause				CRITICALITY ignore	TYPE Cause			PRESENCE optional	} |
+	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional	} ,
+	...
+}
+
+MBMSSessionUpdateResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- MBMS Session Update Failure
+--
+-- **************************************************************
+
+MBMSSessionUpdateFailure ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ { MBMSSessionUpdateFailureIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ { MBMSSessionUpdateFailureExtensions} }		OPTIONAL,
+	...
+}
+
+MBMSSessionUpdateFailureIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-SessionUpdateID		CRITICALITY ignore	TYPE SessionUpdateID		PRESENCE mandatory	} |
+	{ ID id-Cause			CRITICALITY ignore	TYPE Cause			PRESENCE mandatory	} |
+	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional	} ,
+	...
+}
+
+MBMSSessionUpdateFailureExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- MBMS SESSIE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- MBMS Session Stop
+--
+-- **************************************************************
+
+MBMSSessionStop ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ { MBMSSessionStopIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ { MBMSSessionStopExtensions} }			OPTIONAL,
+	...
+}
+
+MBMSSessionStopIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-MBMSCNDe-Registration	CRITICALITY reject	TYPE MBMSCNDe-Registration				PRESENCE mandatory	},
+	...
+}
+
+MBMSSessionStopExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- MBMS Session Stop Response
+--
+-- **************************************************************
+
+MBMSSessionStopResponse ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ { MBMSSessionStopResponseIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ { MBMSSessionStopResponseExtensions} }		OPTIONAL,
+	...
+}
+
+MBMSSessionStopResponseIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-Cause			CRITICALITY ignore	TYPE Cause				PRESENCE optional		} |
+	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics		PRESENCE optional		} ,
+	...
+}
+
+MBMSSessionStopResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- MBMS UE LINKING PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- MBMS UE Linking Request
+--
+-- **************************************************************
+
+MBMSUELinkingRequest ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ { MBMSUELinkingRequestIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ { MBMSUELinkingRequestExtensions} }			OPTIONAL,
+	...
+}
+
+MBMSUELinkingRequestIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-JoinedMBMSBearerServicesList	CRITICALITY reject	TYPE JoinedMBMSBearerService-IEs		PRESENCE optional	} |
+	{ ID id-LeftMBMSBearerServicesList	CRITICALITY reject	TYPE LeftMBMSBearerService-IEs			PRESENCE optional	},
+	...
+}
+
+LeftMBMSBearerService-IEs ::= SEQUENCE (SIZE (1.. maxnoofMulticastServicesPerUE)) OF
+	SEQUENCE {
+		tMGI		TMGI,
+		iE-Extensions	ProtocolExtensionContainer { {LeftMBMSBearerService-ExtIEs} } OPTIONAL,
+		...
+	}
+
+LeftMBMSBearerService-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+MBMSUELinkingRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- MBMS UE Linking Response
+--
+-- **************************************************************
+
+MBMSUELinkingResponse ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ { MBMSUELinkingResponseIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ { MBMSUELinkingResponseExtensions} }		OPTIONAL,
+	...
+}
+
+MBMSUELinkingResponseIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-UnsuccessfulLinkingList	CRITICALITY ignore	TYPE UnsuccessfulLinking-IEs	PRESENCE optional	} |
+	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional	} ,
+	...
+}
+
+UnsuccessfulLinking-IEs ::= SEQUENCE (SIZE (1.. maxnoofMulticastServicesPerUE)) OF
+	SEQUENCE {
+		tMGI		TMGI,
+		cause		Cause,
+		iE-Extensions	ProtocolExtensionContainer { {UnsuccessfulLinking-ExtIEs} } OPTIONAL,
+		...
+	}
+
+UnsuccessfulLinking-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+MBMSUELinkingResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- *************************************************
+--
+-- MBMS REGISTRATION PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- MBMS Registration Request
+--
+-- **************************************************************
+
+MBMSRegistrationRequest ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ { MBMSRegistrationRequestIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ { MBMSRegistrationRequestExtensions} }			OPTIONAL,
+	...
+}
+
+MBMSRegistrationRequestIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-MBMSRegistrationRequestType	CRITICALITY reject	TYPE MBMSRegistrationRequestType	PRESENCE mandatory	} |
+	{ ID id-TMGI				CRITICALITY reject	TYPE TMGI				PRESENCE mandatory	} |
+	{ ID id-IPMulticastAddress		CRITICALITY reject	TYPE IPMulticastAddress			PRESENCE conditional
+	-- This IE shall be present if the MBMS Registration Request Type IE is set to "register"	--				} |
+	{ ID id-APN				CRITICALITY reject	TYPE APN				PRESENCE conditional
+	-- This IE shall be present if the MBMS Registration Request Type IE is set to "register"	--				} |
+	{ ID id-GlobalRNC-ID			CRITICALITY reject	TYPE GlobalRNC-ID			PRESENCE optional	},
+	...
+}
+
+MBMSRegistrationRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 7 to indicate extended RNC-ID --
+	{ ID id-ExtendedRNC-ID			CRITICALITY reject	EXTENSION ExtendedRNC-ID		PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- MBMS Registration Response
+--
+-- **************************************************************
+
+MBMSRegistrationResponse ::= SEQUENCE {
+	protocolIEs				ProtocolIE-Container		{ { MBMSRegistrationResponseIEs} },
+	protocolExtensions		ProtocolExtensionContainer	{ { MBMSRegistrationResponseExtensions} }		OPTIONAL,
+	...
+}
+
+MBMSRegistrationResponseIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-TMGI							CRITICALITY ignore	TYPE TMGI							PRESENCE optional		} |
+	{ ID id-GlobalCN-ID						CRITICALITY ignore	TYPE GlobalCN-ID					PRESENCE optional		} |
+	{ ID id-CriticalityDiagnostics			CRITICALITY ignore	TYPE CriticalityDiagnostics			PRESENCE optional		} ,
+	...
+}
+
+MBMSRegistrationResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- MBMS Registration Failure
+--
+-- **************************************************************
+
+MBMSRegistrationFailure ::= SEQUENCE {
+	protocolIEs			ProtocolIE-Container		{ { MBMSRegistrationFailureIEs} },
+	protocolExtensions		ProtocolExtensionContainer	{ { MBMSRegistrationFailureExtensions} }		OPTIONAL,
+	...
+}
+
+MBMSRegistrationFailureIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-TMGI			CRITICALITY ignore	TYPE TMGI			PRESENCE optional	} |
+	{ ID id-GlobalCN-ID		CRITICALITY ignore	TYPE GlobalCN-ID		PRESENCE optional	} |
+	{ ID id-Cause			CRITICALITY ignore	TYPE Cause			PRESENCE mandatory	} |
+	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional	} ,
+	...
+}
+
+MBMSRegistrationFailureExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- MBMS CN DE-REGISTRATION PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- MBMS CN De-Registration Request
+--
+-- **************************************************************
+
+MBMSCNDe-RegistrationRequest ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ { MBMSCNDe-RegistrationRequestIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ { MBMSCNDe-RegistrationRequestExtensions} }			OPTIONAL,
+	...
+}
+
+MBMSCNDe-RegistrationRequestIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-TMGI		CRITICALITY reject	TYPE TMGI		PRESENCE mandatory	} |
+	{ ID id-GlobalCN-ID	CRITICALITY reject	TYPE GlobalCN-ID	PRESENCE optional	},
+	...
+}
+
+MBMSCNDe-RegistrationRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- MBMS CN De-Registration Response
+--
+-- **************************************************************
+
+MBMSCNDe-RegistrationResponse ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ { MBMSCNDe-RegistrationResponseIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ { MBMSCNDe-RegistrationResponseExtensions} }		OPTIONAL,
+	...
+}
+
+MBMSCNDe-RegistrationResponseIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-TMGI			CRITICALITY ignore	TYPE TMGI				PRESENCE mandatory	} |
+	{ ID id-GlobalRNC-ID		CRITICALITY ignore	TYPE GlobalRNC-ID			PRESENCE mandatory	} |
+	{ ID id-Cause			CRITICALITY ignore	TYPE Cause				PRESENCE optional	} |
+	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics		PRESENCE optional	} ,
+	...
+}
+
+MBMSCNDe-RegistrationResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 7 to indicate extended RNC-ID --
+	{ ID id-ExtendedRNC-ID		CRITICALITY reject	EXTENSION ExtendedRNC-ID		PRESENCE optional	},
+	...
+}
+
+-- **************************************************************
+--
+-- MBMS RAB ESTABLISHMENT INDICATION PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- MBMS RAB Establishment Indication
+--
+-- **************************************************************
+
+MBMSRABEstablishmentIndication ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ { MBMSRABEstablishmentIndicationIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ { MBMSRABEstablishmentIndicationExtensions} }			OPTIONAL,
+	...
+}
+
+MBMSRABEstablishmentIndicationIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-TransportLayerInformation		CRITICALITY ignore	TYPE TransportLayerInformation		PRESENCE mandatory	} ,
+	...
+}
+
+MBMSRABEstablishmentIndicationExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- MBMS RAB RELEASE PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- MBMS RAB Release Request
+--
+-- **************************************************************
+
+MBMSRABReleaseRequest ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {MBMSRABReleaseRequestIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {MBMSRABReleaseRequestExtensions} }			OPTIONAL,
+	...
+}
+
+MBMSRABReleaseRequestIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-Cause		CRITICALITY ignore	TYPE Cause				PRESENCE mandatory	},
+	...
+}
+
+
+MBMSRABReleaseRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- MBMS RAB Release
+--
+-- **************************************************************
+
+MBMSRABRelease ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {MBMSRABReleaseIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {MBMSRABReleaseExtensions} }			OPTIONAL,
+	...
+}
+
+MBMSRABReleaseIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-Cause		CRITICALITY ignore	TYPE Cause	 			PRESENCE mandatory	}|
+	{ ID id-CriticalityDiagnostics			CRITICALITY ignore	TYPE CriticalityDiagnostics			PRESENCE optional		},
+	...
+}
+
+MBMSRABReleaseExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- MBMS RAB Release Failure
+--
+-- **************************************************************
+
+MBMSRABReleaseFailure ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {MBMSRABReleaseFailureIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {MBMSRABReleaseFailureExtensions} }			OPTIONAL,
+	...
+}
+
+MBMSRABReleaseFailureIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-Cause		CRITICALITY ignore	TYPE Cause				PRESENCE mandatory	}|
+	{ ID id-CriticalityDiagnostics			CRITICALITY ignore	TYPE CriticalityDiagnostics			PRESENCE optional		},
+	...
+}
+
+MBMSRABReleaseFailureExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- SRVCC PREPARATION ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- SRVCC CS Keys Request
+--
+-- **************************************************************
+
+SRVCC-CSKeysRequest ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container			{ {SRVCC-CSKeysRequestIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {SRVCC-CSKeysRequestExtensions} }				OPTIONAL,
+	...
+}
+
+SRVCC-CSKeysRequestIEs RANAP-PROTOCOL-IES ::= {
+	...
+}
+
+SRVCC-CSKeysRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- SRVCC CS Keys Response
+--
+-- **************************************************************
+
+SRVCC-CSKeysResponse ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container			{ {SRVCC-CSKeysResponseIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {SRVCC-CSKeysResponseExtensions} }				OPTIONAL,
+	...
+}
+
+SRVCC-CSKeysResponseIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-IntegrityProtectionKey		CRITICALITY reject	TYPE IntegrityProtectionKey		PRESENCE mandatory	}|
+	{ ID id-EncryptionKey				CRITICALITY reject	TYPE EncryptionKey				PRESENCE mandatory	}|
+	{ ID id-SRVCC-Information			CRITICALITY reject	TYPE SRVCC-Information			PRESENCE mandatory	}|
+	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics		PRESENCE optional		},
+	...
+}
+
+SRVCC-CSKeysResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- UE RADIO CAPABILITY MATCH PROCEDURE
+--
+-- **************************************************************
+
+
+-- **************************************************************
+--
+-- UE Radio Capability Match Request
+--
+-- **************************************************************
+
+UeRadioCapabilityMatchRequest ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {UeRadioCapabilityMatchRequestIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {UeRadioCapabilityMatchRequestExtensions} }			OPTIONAL,
+	...
+}
+
+UeRadioCapabilityMatchRequestIEs RANAP-PROTOCOL-IES ::= {
+	...
+}
+
+UeRadioCapabilityMatchRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+-- **************************************************************
+--
+-- UE Radio Capability Match Response
+--
+-- **************************************************************
+
+UeRadioCapabilityMatchResponse ::= SEQUENCE {
+	protocolIEs		ProtocolIE-Container		{ {UeRadioCapabilityMatchResponseIEs} },
+	protocolExtensions	ProtocolExtensionContainer	{ {UeRadioCapabilityMatchResponseExtensions} }				OPTIONAL,
+	...
+}
+
+UeRadioCapabilityMatchResponseIEs RANAP-PROTOCOL-IES ::= {
+	{ ID id-VoiceSupportMatchIndicator		CRITICALITY reject	TYPE VoiceSupportMatchIndicator		PRESENCE mandatory	},
+	...
+}
+
+UeRadioCapabilityMatchResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
+	...
+}
+
+END
diff --git a/asn1/ranap/RANAP-PDU-Descriptions.asn b/asn1/ranap/RANAP-PDU-Descriptions.asn
new file mode 100644
index 0000000..f4253b7
--- /dev/null
+++ b/asn1/ranap/RANAP-PDU-Descriptions.asn
@@ -0,0 +1,617 @@
+-- **************************************************************
+--
+-- Elementary Procedure definitions
+--
+-- **************************************************************
+
+RANAP-PDU-Descriptions {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) ranap (0) version1 (1) ranap-PDU-Descriptions (0)}
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+	Criticality,
+	ProcedureCode
+FROM RANAP-CommonDataTypes
+
+	Iu-ReleaseCommand,
+	Iu-ReleaseComplete,
+	RelocationCommand,
+	RelocationPreparationFailure,
+	RelocationRequired,
+	RelocationRequest,
+	RelocationRequestAcknowledge,
+	RelocationFailure,
+	RelocationCancel,
+	RelocationCancelAcknowledge,
+	EnhancedRelocationCompleteRequest,
+	EnhancedRelocationCompleteResponse,
+	EnhancedRelocationCompleteFailure,
+	EnhancedRelocationCompleteConfirm,
+	SRNS-ContextRequest,
+	SRNS-ContextResponse,
+	SecurityModeCommand,
+	SecurityModeComplete,
+	SecurityModeReject,
+	DataVolumeReportRequest,
+	DataVolumeReport,
+	Reset,
+	ResetAcknowledge,
+	RAB-ReleaseRequest,
+	Iu-ReleaseRequest,
+	RelocationDetect,
+	RelocationComplete,
+	Paging,
+	CommonID,
+	CN-InvokeTrace,
+	CN-DeactivateTrace,
+	LocationReportingControl,
+	LocationReport,
+	InitialUE-Message,
+	DirectTransfer,
+	Overload,
+	ErrorIndication,
+	SRNS-DataForwardCommand,
+	ForwardSRNS-Context,
+	RAB-AssignmentRequest,
+	RAB-AssignmentResponse,
+	RAB-ModifyRequest,
+	PrivateMessage,
+	ResetResource,
+	ResetResourceAcknowledge,
+	RANAP-RelocationInformation,
+	RANAP-EnhancedRelocationInformationRequest,
+	RANAP-EnhancedRelocationInformationResponse,
+	LocationRelatedDataRequest,
+	LocationRelatedDataResponse,
+	LocationRelatedDataFailure,
+	InformationTransferIndication,
+	InformationTransferConfirmation,
+	InformationTransferFailure,
+	UESpecificInformationIndication,
+	DirectInformationTransfer,
+	UplinkInformationExchangeRequest,
+	UplinkInformationExchangeResponse,
+	UplinkInformationExchangeFailure,
+	MBMSSessionStart,
+	MBMSSessionStartResponse,
+	MBMSSessionStartFailure,
+	MBMSSessionUpdate,
+	MBMSSessionUpdateResponse,
+	MBMSSessionUpdateFailure,
+	MBMSSessionStop,
+	MBMSSessionStopResponse,
+	MBMSUELinkingRequest,
+	MBMSUELinkingResponse,
+	MBMSRegistrationRequest,
+	MBMSRegistrationResponse,
+	MBMSRegistrationFailure,
+	MBMSCNDe-RegistrationRequest,
+	MBMSCNDe-RegistrationResponse,
+	MBMSRABEstablishmentIndication,
+	MBMSRABReleaseRequest,
+	MBMSRABRelease,
+	MBMSRABReleaseFailure,
+	SRVCC-CSKeysRequest,
+	SRVCC-CSKeysResponse,
+	UeRadioCapabilityMatchRequest,
+	UeRadioCapabilityMatchResponse
+FROM RANAP-PDU-Contents
+
+	id-LocationRelatedData,
+	id-CN-DeactivateTrace,
+	id-CN-InvokeTrace,
+	id-CommonID,
+	id-DataVolumeReport,
+	id-DirectTransfer,
+	id-ErrorIndication,
+	id-ForwardSRNS-Context,
+	id-InformationTransfer,
+	id-InitialUE-Message,
+	id-Iu-Release,
+	id-Iu-ReleaseRequest,
+	id-LocationReport,
+	id-LocationReportingControl,
+	id-OverloadControl,
+	id-Paging,
+	id-privateMessage,
+	id-RAB-Assignment,
+	id-RAB-ReleaseRequest,
+	id-RAB-ModifyRequest,
+	id-RANAP-Relocation,
+	id-RANAPenhancedRelocation,
+	id-RelocationCancel,
+	id-RelocationComplete,
+	id-RelocationDetect,
+	id-RelocationPreparation,
+	id-RelocationResourceAllocation,
+	id-enhancedRelocationComplete,
+	id-enhancedRelocationCompleteConfirm,
+	id-Reset,
+	id-SRNS-ContextTransfer,
+	id-SRNS-DataForward,
+	id-SecurityModeControl,
+	id-ResetResource,
+	id-UESpecificInformation,
+	id-DirectInformationTransfer,
+	id-UplinkInformationExchange,
+	id-MBMSSessionStart,
+	id-MBMSSessionUpdate,
+	id-MBMSSessionStop,
+	id-MBMSUELinking,
+	id-MBMSRegistration,
+	id-MBMSCNDe-Registration-Procedure,
+	id-MBMSRABEstablishmentIndication,
+	id-MBMSRABRelease,
+	id-SRVCCPreparation,
+	id-UeRadioCapabilityMatch
+
+FROM RANAP-Constants;
+
+-- **************************************************************
+--
+-- Interface Elementary Procedure Class
+--
+-- **************************************************************
+
+RANAP-ELEMENTARY-PROCEDURE ::= CLASS {
+	&InitiatingMessage				,
+	&SuccessfulOutcome				OPTIONAL,
+	&UnsuccessfulOutcome				OPTIONAL,
+	&Outcome					OPTIONAL,
+	&procedureCode			ProcedureCode 	UNIQUE,
+	&criticality			Criticality 	DEFAULT ignore
+}
+WITH SYNTAX {
+	INITIATING MESSAGE		&InitiatingMessage
+	[SUCCESSFUL OUTCOME		&SuccessfulOutcome]
+	[UNSUCCESSFUL OUTCOME		&UnsuccessfulOutcome]
+	[OUTCOME			&Outcome]
+	PROCEDURE CODE			&procedureCode
+	[CRITICALITY			&criticality]
+}
+
+-- **************************************************************
+--
+-- Interface PDU Definition
+--
+-- **************************************************************
+
+RANAP-PDU ::= CHOICE {
+	initiatingMessage	InitiatingMessage,
+	successfulOutcome	SuccessfulOutcome,
+	unsuccessfulOutcome	UnsuccessfulOutcome,
+	outcome			Outcome,
+	...
+}
+
+InitiatingMessage ::= SEQUENCE {
+	procedureCode	RANAP-ELEMENTARY-PROCEDURE.&procedureCode	({RANAP-ELEMENTARY-PROCEDURES}),
+	criticality	RANAP-ELEMENTARY-PROCEDURE.&criticality		({RANAP-ELEMENTARY-PROCEDURES}{@procedureCode}),
+	value		RANAP-ELEMENTARY-PROCEDURE.&InitiatingMessage	({RANAP-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+SuccessfulOutcome ::= SEQUENCE {
+	procedureCode	RANAP-ELEMENTARY-PROCEDURE.&procedureCode	({RANAP-ELEMENTARY-PROCEDURES}),
+	criticality	RANAP-ELEMENTARY-PROCEDURE.&criticality		({RANAP-ELEMENTARY-PROCEDURES}{@procedureCode}),
+	value		RANAP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome	({RANAP-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+UnsuccessfulOutcome ::= SEQUENCE {
+	procedureCode	RANAP-ELEMENTARY-PROCEDURE.&procedureCode	({RANAP-ELEMENTARY-PROCEDURES}),
+	criticality	RANAP-ELEMENTARY-PROCEDURE.&criticality		({RANAP-ELEMENTARY-PROCEDURES}{@procedureCode}),
+	value		RANAP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome	({RANAP-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+Outcome ::= SEQUENCE {
+	procedureCode	RANAP-ELEMENTARY-PROCEDURE.&procedureCode	({RANAP-ELEMENTARY-PROCEDURES}),
+	criticality	RANAP-ELEMENTARY-PROCEDURE.&criticality		({RANAP-ELEMENTARY-PROCEDURES}{@procedureCode}),
+	value		RANAP-ELEMENTARY-PROCEDURE.&Outcome		({RANAP-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+-- **************************************************************
+--
+-- Interface Elementary Procedure List
+--
+-- **************************************************************
+
+RANAP-ELEMENTARY-PROCEDURES RANAP-ELEMENTARY-PROCEDURE ::= {
+	RANAP-ELEMENTARY-PROCEDURES-CLASS-1	|
+	RANAP-ELEMENTARY-PROCEDURES-CLASS-2	|
+	RANAP-ELEMENTARY-PROCEDURES-CLASS-3	,
+	...
+}
+
+
+RANAP-ELEMENTARY-PROCEDURES-CLASS-1 RANAP-ELEMENTARY-PROCEDURE ::= {
+	iu-Release			|
+	relocationPreparation		|
+	relocationResourceAllocation	|
+	relocationCancel		|
+	sRNS-ContextTransfer		|
+	securityModeControl		|
+	dataVolumeReport		|
+	reset				|
+	resetResource			,
+	...,
+	locationRelatedData		|
+	informationTransfer		|
+	uplinkInformationExchange	|
+	mBMSSessionStart		|
+	mBMSSessionUpdate		|
+	mBMSSessionStop			|
+	mBMSUELinking			|
+	mBMSRegistration		|
+	mBMSCNDe-Registration		|
+	mBMSRABRelease			|
+	enhancedRelocationComplete	|
+	rANAP-enhancedRelocation	|
+	sRVCCPreparation		|
+	ueRadioCapabilityMatch }
+
+RANAP-ELEMENTARY-PROCEDURES-CLASS-2 RANAP-ELEMENTARY-PROCEDURE ::= {
+	rAB-ReleaseRequest		|
+	iu-ReleaseRequest		|
+	relocationDetect		|
+	relocationComplete		|
+	paging				|
+	commonID			|
+	cN-InvokeTrace			|
+	cN-DeactivateTrace		|
+	locationReportingControl	|
+	locationReport			|
+	initialUE-Message		|
+	directTransfer			|
+	overloadControl			|
+	errorIndication			|
+	sRNS-DataForward		|
+	forwardSRNS-Context		|
+	privateMessage			|
+	rANAP-Relocation		,
+	...,
+	rAB-ModifyRequest		|
+	uESpecificInformation		|
+	directInformationTransfer	|
+	mBMSRABEstablishmentIndication	|
+	enhancedRelocationCompleteConfirm
+}
+
+RANAP-ELEMENTARY-PROCEDURES-CLASS-3 RANAP-ELEMENTARY-PROCEDURE ::= {
+	rAB-Assignment			,
+	...
+}
+
+-- **************************************************************
+--
+-- Interface Elementary Procedures
+--
+-- **************************************************************
+
+iu-Release RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	Iu-ReleaseCommand
+	SUCCESSFUL OUTCOME	Iu-ReleaseComplete
+	PROCEDURE CODE		id-Iu-Release
+	CRITICALITY		reject
+}
+
+relocationPreparation RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	RelocationRequired
+	SUCCESSFUL OUTCOME	RelocationCommand
+	UNSUCCESSFUL OUTCOME	RelocationPreparationFailure
+	PROCEDURE CODE		id-RelocationPreparation
+	CRITICALITY		reject
+}
+
+relocationResourceAllocation RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	RelocationRequest
+	SUCCESSFUL OUTCOME	RelocationRequestAcknowledge
+	UNSUCCESSFUL OUTCOME	RelocationFailure
+	PROCEDURE CODE		id-RelocationResourceAllocation
+	CRITICALITY		reject
+}
+
+relocationCancel RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	RelocationCancel
+	SUCCESSFUL OUTCOME	RelocationCancelAcknowledge
+	PROCEDURE CODE		id-RelocationCancel
+	CRITICALITY		reject
+}
+
+sRNS-ContextTransfer RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	SRNS-ContextRequest
+	SUCCESSFUL OUTCOME	SRNS-ContextResponse
+	PROCEDURE CODE		id-SRNS-ContextTransfer
+	CRITICALITY		reject
+}
+
+securityModeControl RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	SecurityModeCommand
+	SUCCESSFUL OUTCOME	SecurityModeComplete
+	UNSUCCESSFUL OUTCOME	SecurityModeReject
+	PROCEDURE CODE		id-SecurityModeControl
+	CRITICALITY		reject
+}
+
+dataVolumeReport RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	DataVolumeReportRequest
+	SUCCESSFUL OUTCOME	DataVolumeReport
+	PROCEDURE CODE		id-DataVolumeReport
+	CRITICALITY		reject
+}
+
+
+reset RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	Reset
+	SUCCESSFUL OUTCOME	ResetAcknowledge
+	PROCEDURE CODE		id-Reset
+	CRITICALITY		reject
+}
+
+rAB-ReleaseRequest RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	RAB-ReleaseRequest
+	PROCEDURE CODE		id-RAB-ReleaseRequest
+	CRITICALITY		ignore
+}
+
+iu-ReleaseRequest RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	Iu-ReleaseRequest
+	PROCEDURE CODE		id-Iu-ReleaseRequest
+	CRITICALITY		ignore
+}
+
+relocationDetect RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	RelocationDetect
+	PROCEDURE CODE		id-RelocationDetect
+	CRITICALITY		ignore
+}
+
+relocationComplete RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	RelocationComplete
+	PROCEDURE CODE		id-RelocationComplete
+	CRITICALITY		ignore
+}
+
+paging RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	Paging
+	PROCEDURE CODE		id-Paging
+	CRITICALITY		ignore
+}
+
+commonID RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	CommonID
+	PROCEDURE CODE		id-CommonID
+	CRITICALITY		ignore
+}
+
+cN-InvokeTrace RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	CN-InvokeTrace
+	PROCEDURE CODE		id-CN-InvokeTrace
+	CRITICALITY		ignore
+}
+
+cN-DeactivateTrace RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	CN-DeactivateTrace
+	PROCEDURE CODE		id-CN-DeactivateTrace
+	CRITICALITY		ignore
+}
+
+locationReportingControl RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	LocationReportingControl
+	PROCEDURE CODE		id-LocationReportingControl
+	CRITICALITY		ignore
+}
+
+locationReport RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	LocationReport
+	PROCEDURE CODE		id-LocationReport
+	CRITICALITY		ignore
+}
+
+initialUE-Message RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	InitialUE-Message
+	PROCEDURE CODE		id-InitialUE-Message
+	CRITICALITY		ignore
+}
+
+directTransfer RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	DirectTransfer
+	PROCEDURE CODE		id-DirectTransfer
+	CRITICALITY		ignore
+}
+
+overloadControl RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	Overload
+	PROCEDURE CODE		id-OverloadControl
+	CRITICALITY		ignore
+}
+
+errorIndication RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	ErrorIndication
+	PROCEDURE CODE		id-ErrorIndication
+	CRITICALITY		ignore
+}
+
+sRNS-DataForward RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	SRNS-DataForwardCommand
+	PROCEDURE CODE		id-SRNS-DataForward
+	CRITICALITY		ignore
+}
+
+forwardSRNS-Context RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	ForwardSRNS-Context
+	PROCEDURE CODE		id-ForwardSRNS-Context
+	CRITICALITY		ignore
+}
+
+rAB-Assignment RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	RAB-AssignmentRequest
+	OUTCOME			RAB-AssignmentResponse
+	PROCEDURE CODE		id-RAB-Assignment
+	CRITICALITY		reject
+}
+
+privateMessage RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	PrivateMessage
+
+	PROCEDURE CODE		id-privateMessage
+	CRITICALITY		ignore
+}
+
+resetResource RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	ResetResource
+	SUCCESSFUL OUTCOME	ResetResourceAcknowledge
+	PROCEDURE CODE		id-ResetResource
+	CRITICALITY		reject
+}
+
+rANAP-Relocation RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	RANAP-RelocationInformation
+	PROCEDURE CODE		id-RANAP-Relocation
+	CRITICALITY		ignore
+}
+
+rAB-ModifyRequest RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	RAB-ModifyRequest
+	PROCEDURE CODE		id-RAB-ModifyRequest
+	CRITICALITY		ignore
+}
+
+locationRelatedData RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	LocationRelatedDataRequest
+	SUCCESSFUL OUTCOME	LocationRelatedDataResponse
+	UNSUCCESSFUL OUTCOME	LocationRelatedDataFailure
+	PROCEDURE CODE		id-LocationRelatedData
+	CRITICALITY		reject
+}
+
+informationTransfer RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	InformationTransferIndication
+	SUCCESSFUL OUTCOME	InformationTransferConfirmation
+	UNSUCCESSFUL OUTCOME	InformationTransferFailure
+	PROCEDURE CODE		id-InformationTransfer
+	CRITICALITY		reject
+}
+
+uESpecificInformation RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	UESpecificInformationIndication
+	PROCEDURE CODE		id-UESpecificInformation
+	CRITICALITY		ignore
+}
+
+directInformationTransfer RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	DirectInformationTransfer
+	PROCEDURE CODE		id-DirectInformationTransfer
+	CRITICALITY		ignore
+}
+
+uplinkInformationExchange RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	UplinkInformationExchangeRequest
+	SUCCESSFUL OUTCOME	UplinkInformationExchangeResponse
+	UNSUCCESSFUL OUTCOME	UplinkInformationExchangeFailure
+	PROCEDURE CODE		id-UplinkInformationExchange
+	CRITICALITY		reject
+}
+
+mBMSSessionStart RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	MBMSSessionStart
+	SUCCESSFUL OUTCOME	MBMSSessionStartResponse
+	UNSUCCESSFUL OUTCOME	MBMSSessionStartFailure
+	PROCEDURE CODE		id-MBMSSessionStart
+	CRITICALITY		reject
+}
+
+mBMSSessionUpdate RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	MBMSSessionUpdate
+	SUCCESSFUL OUTCOME	MBMSSessionUpdateResponse
+	UNSUCCESSFUL OUTCOME	MBMSSessionUpdateFailure
+	PROCEDURE CODE		id-MBMSSessionUpdate
+	CRITICALITY		reject
+}
+
+mBMSSessionStop RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	MBMSSessionStop
+	SUCCESSFUL OUTCOME	MBMSSessionStopResponse
+	PROCEDURE CODE		id-MBMSSessionStop
+	CRITICALITY		reject
+}
+
+mBMSUELinking RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	MBMSUELinkingRequest
+	OUTCOME			MBMSUELinkingResponse
+	PROCEDURE CODE		id-MBMSUELinking
+	CRITICALITY		reject
+}
+
+mBMSRegistration RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	MBMSRegistrationRequest
+	SUCCESSFUL OUTCOME	MBMSRegistrationResponse
+	UNSUCCESSFUL OUTCOME	MBMSRegistrationFailure
+	PROCEDURE CODE		id-MBMSRegistration
+	CRITICALITY		reject
+}
+
+mBMSCNDe-Registration RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	MBMSCNDe-RegistrationRequest
+	SUCCESSFUL OUTCOME	MBMSCNDe-RegistrationResponse
+	PROCEDURE CODE		id-MBMSCNDe-Registration-Procedure
+	CRITICALITY		reject
+}
+
+mBMSRABEstablishmentIndication RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	MBMSRABEstablishmentIndication
+	PROCEDURE CODE		id-MBMSRABEstablishmentIndication
+	CRITICALITY		ignore
+}
+
+mBMSRABRelease RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	MBMSRABReleaseRequest
+	SUCCESSFUL OUTCOME	MBMSRABRelease
+	UNSUCCESSFUL OUTCOME	MBMSRABReleaseFailure
+	PROCEDURE CODE		id-MBMSRABRelease
+	CRITICALITY		reject
+}
+enhancedRelocationComplete RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	EnhancedRelocationCompleteRequest
+	SUCCESSFUL OUTCOME	EnhancedRelocationCompleteResponse
+	UNSUCCESSFUL OUTCOME	EnhancedRelocationCompleteFailure
+	PROCEDURE CODE		id-enhancedRelocationComplete
+	CRITICALITY		reject
+}
+
+enhancedRelocationCompleteConfirm RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	EnhancedRelocationCompleteConfirm
+	PROCEDURE CODE		id-enhancedRelocationCompleteConfirm
+	CRITICALITY		ignore
+}
+
+rANAP-enhancedRelocation RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	RANAP-EnhancedRelocationInformationRequest
+	SUCCESSFUL OUTCOME	RANAP-EnhancedRelocationInformationResponse
+	PROCEDURE CODE		id-RANAPenhancedRelocation
+	CRITICALITY		reject
+}
+
+sRVCCPreparation RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	SRVCC-CSKeysRequest
+	OUTCOME			SRVCC-CSKeysResponse
+	PROCEDURE CODE		id-SRVCCPreparation
+	CRITICALITY		reject
+}
+
+ueRadioCapabilityMatch RANAP-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE	UeRadioCapabilityMatchRequest
+	OUTCOME			UeRadioCapabilityMatchResponse
+	PROCEDURE CODE		id-UeRadioCapabilityMatch
+	CRITICALITY		ignore
+}
+
+END
