initial commit

Signed-off-by: rajalakshmisv <rajalakshmisv@gmail.com>
Change-Id: I34ce1f748971307ba2e9823f68d173fa87398ad0
diff --git a/e2sm/headers/BIT_STRING.h b/e2sm/headers/BIT_STRING.h
new file mode 100644
index 0000000..c1bdbbc
--- /dev/null
+++ b/e2sm/headers/BIT_STRING.h
@@ -0,0 +1,48 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_BIT_STRING_H_
+#define	_BIT_STRING_H_
+
+#include <OCTET_STRING.h>	/* Some help from OCTET STRING */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct BIT_STRING_s {
+	uint8_t *buf;	/* BIT STRING body */
+	size_t size;	/* Size of the above buffer */
+
+	int bits_unused;/* Unused trailing bits in the last octet (0..7) */
+
+	asn_struct_ctx_t _asn_ctx;	/* Parsing across buffer boundaries */
+} BIT_STRING_t;
+
+extern asn_TYPE_descriptor_t asn_DEF_BIT_STRING;
+extern asn_TYPE_operation_t asn_OP_BIT_STRING;
+extern asn_OCTET_STRING_specifics_t asn_SPC_BIT_STRING_specs;
+
+asn_struct_print_f BIT_STRING_print;	/* Human-readable output */
+asn_struct_compare_f BIT_STRING_compare;
+asn_constr_check_f BIT_STRING_constraint;
+xer_type_encoder_f BIT_STRING_encode_xer;
+oer_type_decoder_f BIT_STRING_decode_oer;
+oer_type_encoder_f BIT_STRING_encode_oer;
+per_type_decoder_f BIT_STRING_decode_uper;
+per_type_encoder_f BIT_STRING_encode_uper;
+asn_random_fill_f  BIT_STRING_random_fill;
+
+#define BIT_STRING_free              OCTET_STRING_free
+#define BIT_STRING_decode_ber        OCTET_STRING_decode_ber
+#define BIT_STRING_encode_der        OCTET_STRING_encode_der
+#define BIT_STRING_decode_xer        OCTET_STRING_decode_xer_binary
+#define BIT_STRING_decode_aper       OCTET_STRING_decode_aper
+#define BIT_STRING_encode_aper       OCTET_STRING_encode_aper
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _BIT_STRING_H_ */
diff --git a/e2sm/headers/BOOLEAN.h b/e2sm/headers/BOOLEAN.h
new file mode 100644
index 0000000..620acf7
--- /dev/null
+++ b/e2sm/headers/BOOLEAN.h
@@ -0,0 +1,45 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_BOOLEAN_H_
+#define	_BOOLEAN_H_
+
+#include <asn_application.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * The underlying integer may contain various values, but everything
+ * non-zero is capped to 0xff by the DER encoder. The BER decoder may
+ * yield non-zero values different from 1, beware.
+ */
+typedef int BOOLEAN_t;
+
+extern asn_TYPE_descriptor_t asn_DEF_BOOLEAN;
+extern asn_TYPE_operation_t asn_OP_BOOLEAN;
+
+asn_struct_free_f BOOLEAN_free;
+asn_struct_print_f BOOLEAN_print;
+asn_struct_compare_f BOOLEAN_compare;
+ber_type_decoder_f BOOLEAN_decode_ber;
+der_type_encoder_f BOOLEAN_encode_der;
+oer_type_decoder_f BOOLEAN_decode_oer;
+oer_type_encoder_f BOOLEAN_encode_oer;
+per_type_decoder_f BOOLEAN_decode_uper;
+per_type_encoder_f BOOLEAN_encode_uper;
+per_type_decoder_f BOOLEAN_decode_aper;
+per_type_encoder_f BOOLEAN_encode_aper;
+xer_type_decoder_f BOOLEAN_decode_xer;
+xer_type_encoder_f BOOLEAN_encode_xer;
+asn_random_fill_f  BOOLEAN_random_fill;
+
+#define BOOLEAN_constraint     asn_generic_no_constraint
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _BOOLEAN_H_ */
diff --git a/e2sm/headers/CSI-RS-Index.h b/e2sm/headers/CSI-RS-Index.h
new file mode 100644
index 0000000..12169da
--- /dev/null
+++ b/e2sm/headers/CSI-RS-Index.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_CSI_RS_Index_H_
+#define	_CSI_RS_Index_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CSI-RS-Index */
+typedef long	 CSI_RS_Index_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_CSI_RS_Index_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_CSI_RS_Index;
+asn_struct_free_f CSI_RS_Index_free;
+asn_struct_print_f CSI_RS_Index_print;
+asn_constr_check_f CSI_RS_Index_constraint;
+ber_type_decoder_f CSI_RS_Index_decode_ber;
+der_type_encoder_f CSI_RS_Index_encode_der;
+xer_type_decoder_f CSI_RS_Index_decode_xer;
+xer_type_encoder_f CSI_RS_Index_encode_xer;
+oer_type_decoder_f CSI_RS_Index_decode_oer;
+oer_type_encoder_f CSI_RS_Index_encode_oer;
+per_type_decoder_f CSI_RS_Index_decode_uper;
+per_type_encoder_f CSI_RS_Index_encode_uper;
+per_type_decoder_f CSI_RS_Index_decode_aper;
+per_type_encoder_f CSI_RS_Index_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _CSI_RS_Index_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/CUUPMeasurement-Container.h b/e2sm/headers/CUUPMeasurement-Container.h
new file mode 100644
index 0000000..1bd12fd
--- /dev/null
+++ b/e2sm/headers/CUUPMeasurement-Container.h
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_CUUPMeasurement_Container_H_
+#define	_CUUPMeasurement_Container_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct PlmnID_Item;
+
+/* CUUPMeasurement-Container */
+typedef struct CUUPMeasurement_Container {
+	struct CUUPMeasurement_Container__plmnList {
+		A_SEQUENCE_OF(struct PlmnID_Item) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} plmnList;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} CUUPMeasurement_Container_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CUUPMeasurement_Container;
+extern asn_SEQUENCE_specifics_t asn_SPC_CUUPMeasurement_Container_specs_1;
+extern asn_TYPE_member_t asn_MBR_CUUPMeasurement_Container_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _CUUPMeasurement_Container_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/CellObjectID.h b/e2sm/headers/CellObjectID.h
new file mode 100644
index 0000000..36c987e
--- /dev/null
+++ b/e2sm/headers/CellObjectID.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_CellObjectID_H_
+#define	_CellObjectID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <PrintableString.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CellObjectID */
+typedef PrintableString_t	 CellObjectID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_CellObjectID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_CellObjectID;
+asn_struct_free_f CellObjectID_free;
+asn_struct_print_f CellObjectID_print;
+asn_constr_check_f CellObjectID_constraint;
+ber_type_decoder_f CellObjectID_decode_ber;
+der_type_encoder_f CellObjectID_encode_der;
+xer_type_decoder_f CellObjectID_decode_xer;
+xer_type_encoder_f CellObjectID_encode_xer;
+oer_type_decoder_f CellObjectID_decode_oer;
+oer_type_encoder_f CellObjectID_encode_oer;
+per_type_decoder_f CellObjectID_decode_uper;
+per_type_encoder_f CellObjectID_encode_uper;
+per_type_decoder_f CellObjectID_decode_aper;
+per_type_encoder_f CellObjectID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _CellObjectID_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/CellResourceReportListItem.h b/e2sm/headers/CellResourceReportListItem.h
new file mode 100644
index 0000000..85275f3
--- /dev/null
+++ b/e2sm/headers/CellResourceReportListItem.h
@@ -0,0 +1,58 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_CellResourceReportListItem_H_
+#define	_CellResourceReportListItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "NRCGI.h"
+#include <NativeInteger.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct ServedPlmnPerCellListItem;
+
+/* CellResourceReportListItem */
+typedef struct CellResourceReportListItem {
+	NRCGI_t	 nRCGI;
+	long	*dl_TotalofAvailablePRBs;	/* OPTIONAL */
+	long	*ul_TotalofAvailablePRBs;	/* OPTIONAL */
+	struct CellResourceReportListItem__servedPlmnPerCellList {
+		A_SEQUENCE_OF(struct ServedPlmnPerCellListItem) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} servedPlmnPerCellList;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} CellResourceReportListItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CellResourceReportListItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_CellResourceReportListItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_CellResourceReportListItem_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _CellResourceReportListItem_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/Criticality.h b/e2sm/headers/Criticality.h
new file mode 100644
index 0000000..9e817d4
--- /dev/null
+++ b/e2sm/headers/Criticality.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_Criticality_H_
+#define	_Criticality_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum Criticality {
+	Criticality_reject	= 0,
+	Criticality_ignore	= 1,
+	Criticality_notify	= 2
+} e_Criticality;
+
+/* Criticality */
+typedef long	 Criticality_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_Criticality;
+asn_struct_free_f Criticality_free;
+asn_struct_print_f Criticality_print;
+asn_constr_check_f Criticality_constraint;
+ber_type_decoder_f Criticality_decode_ber;
+der_type_encoder_f Criticality_encode_der;
+xer_type_decoder_f Criticality_decode_xer;
+xer_type_encoder_f Criticality_encode_xer;
+oer_type_decoder_f Criticality_decode_oer;
+oer_type_encoder_f Criticality_encode_oer;
+per_type_decoder_f Criticality_decode_uper;
+per_type_encoder_f Criticality_encode_uper;
+per_type_decoder_f Criticality_decode_aper;
+per_type_encoder_f Criticality_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _Criticality_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/E2SM-KPM-ActionDefinition-Format1.h b/e2sm/headers/E2SM-KPM-ActionDefinition-Format1.h
new file mode 100644
index 0000000..4a0e06a
--- /dev/null
+++ b/e2sm/headers/E2SM-KPM-ActionDefinition-Format1.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_E2SM_KPM_ActionDefinition_Format1_H_
+#define	_E2SM_KPM_ActionDefinition_Format1_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "CellObjectID.h"
+#include "MeasurementInfoList.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* E2SM-KPM-ActionDefinition-Format1 */
+typedef struct E2SM_KPM_ActionDefinition_Format1 {
+	CellObjectID_t	 cellObjID;
+	MeasurementInfoList_t	 measInfoList;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_ActionDefinition_Format1_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format1;
+extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format1_specs_1;
+extern asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format1_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _E2SM_KPM_ActionDefinition_Format1_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/E2SM-KPM-ActionDefinition.h b/e2sm/headers/E2SM-KPM-ActionDefinition.h
new file mode 100644
index 0000000..f5bf906
--- /dev/null
+++ b/e2sm/headers/E2SM-KPM-ActionDefinition.h
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_E2SM_KPM_ActionDefinition_H_
+#define	_E2SM_KPM_ActionDefinition_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RIC-Style-Type.h"
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum E2SM_KPM_ActionDefinition__actionDefinition_formats_PR {
+	E2SM_KPM_ActionDefinition__actionDefinition_formats_PR_NOTHING,	/* No components present */
+	E2SM_KPM_ActionDefinition__actionDefinition_formats_PR_actionDefinition_Format1
+	/* Extensions may appear below */
+	
+} E2SM_KPM_ActionDefinition__actionDefinition_formats_PR;
+
+/* Forward declarations */
+struct E2SM_KPM_ActionDefinition_Format1;
+
+/* E2SM-KPM-ActionDefinition */
+typedef struct E2SM_KPM_ActionDefinition {
+	RIC_Style_Type_t	 ric_ReportStyle_Type;
+	struct E2SM_KPM_ActionDefinition__actionDefinition_formats {
+		E2SM_KPM_ActionDefinition__actionDefinition_formats_PR present;
+		union E2SM_KPM_ActionDefinition__actionDefinition_formats_u {
+			struct E2SM_KPM_ActionDefinition_Format1	*actionDefinition_Format1;
+			/*
+			 * This type is extensible,
+			 * possible extensions are below.
+			 */
+		} choice;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} actionDefinition_formats;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_ActionDefinition_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _E2SM_KPM_ActionDefinition_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/E2SM-KPM-EventTriggerDefinition-Format1.h b/e2sm/headers/E2SM-KPM-EventTriggerDefinition-Format1.h
new file mode 100644
index 0000000..6fae26e
--- /dev/null
+++ b/e2sm/headers/E2SM-KPM-EventTriggerDefinition-Format1.h
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_E2SM_KPM_EventTriggerDefinition_Format1_H_
+#define	_E2SM_KPM_EventTriggerDefinition_Format1_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct Trigger_ConditionIE_Item;
+
+/* E2SM-KPM-EventTriggerDefinition-Format1 */
+typedef struct E2SM_KPM_EventTriggerDefinition_Format1 {
+	struct E2SM_KPM_EventTriggerDefinition_Format1__policyTest_List {
+		A_SEQUENCE_OF(struct Trigger_ConditionIE_Item) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} *policyTest_List;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_EventTriggerDefinition_Format1_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1;
+extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_EventTriggerDefinition_Format1_specs_1;
+extern asn_TYPE_member_t asn_MBR_E2SM_KPM_EventTriggerDefinition_Format1_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _E2SM_KPM_EventTriggerDefinition_Format1_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/E2SM-KPM-EventTriggerDefinition.h b/e2sm/headers/E2SM-KPM-EventTriggerDefinition.h
new file mode 100644
index 0000000..2db9552
--- /dev/null
+++ b/e2sm/headers/E2SM-KPM-EventTriggerDefinition.h
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_E2SM_KPM_EventTriggerDefinition_H_
+#define	_E2SM_KPM_EventTriggerDefinition_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum E2SM_KPM_EventTriggerDefinition_PR {
+	E2SM_KPM_EventTriggerDefinition_PR_NOTHING,	/* No components present */
+	E2SM_KPM_EventTriggerDefinition_PR_eventDefinition_Format1
+	/* Extensions may appear below */
+	
+} E2SM_KPM_EventTriggerDefinition_PR;
+
+/* Forward declarations */
+struct E2SM_KPM_EventTriggerDefinition_Format1;
+
+/* E2SM-KPM-EventTriggerDefinition */
+typedef struct E2SM_KPM_EventTriggerDefinition {
+	E2SM_KPM_EventTriggerDefinition_PR present;
+	union E2SM_KPM_EventTriggerDefinition_u {
+		struct E2SM_KPM_EventTriggerDefinition_Format1	*eventDefinition_Format1;
+		/*
+		 * This type is extensible,
+		 * possible extensions are below.
+		 */
+	} choice;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_EventTriggerDefinition_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_EventTriggerDefinition;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _E2SM_KPM_EventTriggerDefinition_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/E2SM-KPM-IndicationHeader-Format1.h b/e2sm/headers/E2SM-KPM-IndicationHeader-Format1.h
new file mode 100644
index 0000000..677d458
--- /dev/null
+++ b/e2sm/headers/E2SM-KPM-IndicationHeader-Format1.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_E2SM_KPM_IndicationHeader_Format1_H_
+#define	_E2SM_KPM_IndicationHeader_Format1_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "TimeStamp.h"
+#include "GlobalE2node-ID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* E2SM-KPM-IndicationHeader-Format1 */
+typedef struct E2SM_KPM_IndicationHeader_Format1 {
+	TimeStamp_t	 collectionStartTime;
+	GlobalE2node_ID_t	 id_GlobalE2node_ID;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_IndicationHeader_Format1_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationHeader_Format1;
+extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationHeader_Format1_specs_1;
+extern asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationHeader_Format1_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _E2SM_KPM_IndicationHeader_Format1_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/E2SM-KPM-IndicationHeader.h b/e2sm/headers/E2SM-KPM-IndicationHeader.h
new file mode 100644
index 0000000..9c6670c
--- /dev/null
+++ b/e2sm/headers/E2SM-KPM-IndicationHeader.h
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_E2SM_KPM_IndicationHeader_H_
+#define	_E2SM_KPM_IndicationHeader_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum E2SM_KPM_IndicationHeader_PR {
+	E2SM_KPM_IndicationHeader_PR_NOTHING,	/* No components present */
+	E2SM_KPM_IndicationHeader_PR_indicationHeader_Format1
+	/* Extensions may appear below */
+	
+} E2SM_KPM_IndicationHeader_PR;
+
+/* Forward declarations */
+struct E2SM_KPM_IndicationHeader_Format1;
+
+/* E2SM-KPM-IndicationHeader */
+typedef struct E2SM_KPM_IndicationHeader {
+	E2SM_KPM_IndicationHeader_PR present;
+	union E2SM_KPM_IndicationHeader_u {
+		struct E2SM_KPM_IndicationHeader_Format1	*indicationHeader_Format1;
+		/*
+		 * This type is extensible,
+		 * possible extensions are below.
+		 */
+	} choice;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_IndicationHeader_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationHeader;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _E2SM_KPM_IndicationHeader_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/E2SM-KPM-IndicationMessage-Format1.h b/e2sm/headers/E2SM-KPM-IndicationMessage-Format1.h
new file mode 100644
index 0000000..ad255ab
--- /dev/null
+++ b/e2sm/headers/E2SM-KPM-IndicationMessage-Format1.h
@@ -0,0 +1,69 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_E2SM_KPM_IndicationMessage_Format1_H_
+#define	_E2SM_KPM_IndicationMessage_Format1_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "CellObjectID.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct PM_Containers_Item;
+struct PM_Info_Item;
+struct PerUE_PM_Item;
+
+/* E2SM-KPM-IndicationMessage-Format1 */
+typedef struct E2SM_KPM_IndicationMessage_Format1 {
+	struct E2SM_KPM_IndicationMessage_Format1__pm_Containers {
+		A_SEQUENCE_OF(struct PM_Containers_Item) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} pm_Containers;
+	CellObjectID_t	 cellObjectID;
+	struct E2SM_KPM_IndicationMessage_Format1__list_of_PM_Information {
+		A_SEQUENCE_OF(struct PM_Info_Item) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} *list_of_PM_Information;
+	struct E2SM_KPM_IndicationMessage_Format1__list_of_matched_UEs {
+		A_SEQUENCE_OF(struct PerUE_PM_Item) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} *list_of_matched_UEs;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_IndicationMessage_Format1_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage_Format1;
+extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_Format1_specs_1;
+extern asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_Format1_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _E2SM_KPM_IndicationMessage_Format1_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/E2SM-KPM-IndicationMessage.h b/e2sm/headers/E2SM-KPM-IndicationMessage.h
new file mode 100644
index 0000000..30bd902
--- /dev/null
+++ b/e2sm/headers/E2SM-KPM-IndicationMessage.h
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_E2SM_KPM_IndicationMessage_H_
+#define	_E2SM_KPM_IndicationMessage_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum E2SM_KPM_IndicationMessage_PR {
+	E2SM_KPM_IndicationMessage_PR_NOTHING,	/* No components present */
+	E2SM_KPM_IndicationMessage_PR_indicationMessage_Format1
+	/* Extensions may appear below */
+	
+} E2SM_KPM_IndicationMessage_PR;
+
+/* Forward declarations */
+struct E2SM_KPM_IndicationMessage_Format1;
+
+/* E2SM-KPM-IndicationMessage */
+typedef struct E2SM_KPM_IndicationMessage {
+	E2SM_KPM_IndicationMessage_PR present;
+	union E2SM_KPM_IndicationMessage_u {
+		struct E2SM_KPM_IndicationMessage_Format1	*indicationMessage_Format1;
+		/*
+		 * This type is extensible,
+		 * possible extensions are below.
+		 */
+	} choice;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_IndicationMessage_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _E2SM_KPM_IndicationMessage_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/E2SM-KPM-RANFunctionDefinition.h b/e2sm/headers/E2SM-KPM-RANFunctionDefinition.h
new file mode 100644
index 0000000..51118f8
--- /dev/null
+++ b/e2sm/headers/E2SM-KPM-RANFunctionDefinition.h
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_E2SM_KPM_RANFunctionDefinition_H_
+#define	_E2SM_KPM_RANFunctionDefinition_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RANfunction-Name.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct RIC_EventTriggerStyle_Item;
+struct RIC_ReportStyle_Item;
+
+/* E2SM-KPM-RANFunctionDefinition */
+typedef struct E2SM_KPM_RANFunctionDefinition {
+	RANfunction_Name_t	 ranFunction_Name;
+	struct E2SM_KPM_RANFunctionDefinition__ric_EventTriggerStyle_List {
+		A_SEQUENCE_OF(struct RIC_EventTriggerStyle_Item) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} *ric_EventTriggerStyle_List;
+	struct E2SM_KPM_RANFunctionDefinition__ric_ReportStyle_List {
+		A_SEQUENCE_OF(struct RIC_ReportStyle_Item) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} *ric_ReportStyle_List;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_RANFunctionDefinition_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_RANFunctionDefinition;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _E2SM_KPM_RANFunctionDefinition_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/E2SM-RC-ControlHeader-Format1.h b/e2sm/headers/E2SM-RC-ControlHeader-Format1.h
new file mode 100644
index 0000000..641739c
--- /dev/null
+++ b/e2sm/headers/E2SM-RC-ControlHeader-Format1.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_E2SM_RC_ControlHeader_Format1_H_
+#define	_E2SM_RC_ControlHeader_Format1_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "UE-Identity.h"
+#include "RIC-Style-Type.h"
+#include "RIC-ControlAction-ID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* E2SM-RC-ControlHeader-Format1 */
+typedef struct E2SM_RC_ControlHeader_Format1 {
+	UE_Identity_t	 ueId;
+	RIC_Style_Type_t	 ric_ControlStyle_Type;
+	RIC_ControlAction_ID_t	 ric_ControlAction_ID;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} E2SM_RC_ControlHeader_Format1_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_RC_ControlHeader_Format1;
+extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_ControlHeader_Format1_specs_1;
+extern asn_TYPE_member_t asn_MBR_E2SM_RC_ControlHeader_Format1_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _E2SM_RC_ControlHeader_Format1_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/E2SM-RC-ControlHeader.h b/e2sm/headers/E2SM-RC-ControlHeader.h
new file mode 100644
index 0000000..aead9e3
--- /dev/null
+++ b/e2sm/headers/E2SM-RC-ControlHeader.h
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_E2SM_RC_ControlHeader_H_
+#define	_E2SM_RC_ControlHeader_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum E2SM_RC_ControlHeader_PR {
+	E2SM_RC_ControlHeader_PR_NOTHING,	/* No components present */
+	E2SM_RC_ControlHeader_PR_controlHeader_Format1
+	/* Extensions may appear below */
+	
+} E2SM_RC_ControlHeader_PR;
+
+/* Forward declarations */
+struct E2SM_RC_ControlHeader_Format1;
+
+/* E2SM-RC-ControlHeader */
+typedef struct E2SM_RC_ControlHeader {
+	E2SM_RC_ControlHeader_PR present;
+	union E2SM_RC_ControlHeader_u {
+		struct E2SM_RC_ControlHeader_Format1	*controlHeader_Format1;
+		/*
+		 * This type is extensible,
+		 * possible extensions are below.
+		 */
+	} choice;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} E2SM_RC_ControlHeader_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_RC_ControlHeader;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _E2SM_RC_ControlHeader_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/E2SM-RC-ControlMessage-Format1.h b/e2sm/headers/E2SM-RC-ControlMessage-Format1.h
new file mode 100644
index 0000000..ba58297
--- /dev/null
+++ b/e2sm/headers/E2SM-RC-ControlMessage-Format1.h
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_E2SM_RC_ControlMessage_Format1_H_
+#define	_E2SM_RC_ControlMessage_Format1_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct RANParameter_Item;
+
+/* E2SM-RC-ControlMessage-Format1 */
+typedef struct E2SM_RC_ControlMessage_Format1 {
+	struct E2SM_RC_ControlMessage_Format1__ranParameters_List {
+		A_SEQUENCE_OF(struct RANParameter_Item) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} *ranParameters_List;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} E2SM_RC_ControlMessage_Format1_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_RC_ControlMessage_Format1;
+extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_ControlMessage_Format1_specs_1;
+extern asn_TYPE_member_t asn_MBR_E2SM_RC_ControlMessage_Format1_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _E2SM_RC_ControlMessage_Format1_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/E2SM-RC-ControlMessage.h b/e2sm/headers/E2SM-RC-ControlMessage.h
new file mode 100644
index 0000000..9e3d76a
--- /dev/null
+++ b/e2sm/headers/E2SM-RC-ControlMessage.h
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_E2SM_RC_ControlMessage_H_
+#define	_E2SM_RC_ControlMessage_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum E2SM_RC_ControlMessage_PR {
+	E2SM_RC_ControlMessage_PR_NOTHING,	/* No components present */
+	E2SM_RC_ControlMessage_PR_controlMessage_Format1
+	/* Extensions may appear below */
+	
+} E2SM_RC_ControlMessage_PR;
+
+/* Forward declarations */
+struct E2SM_RC_ControlMessage_Format1;
+
+/* E2SM-RC-ControlMessage */
+typedef struct E2SM_RC_ControlMessage {
+	E2SM_RC_ControlMessage_PR present;
+	union E2SM_RC_ControlMessage_u {
+		struct E2SM_RC_ControlMessage_Format1	*controlMessage_Format1;
+		/*
+		 * This type is extensible,
+		 * possible extensions are below.
+		 */
+	} choice;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} E2SM_RC_ControlMessage_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_RC_ControlMessage;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _E2SM_RC_ControlMessage_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/E2SM-RC-RANFunctionDefinition.h b/e2sm/headers/E2SM-RC-RANFunctionDefinition.h
new file mode 100644
index 0000000..112fc9e
--- /dev/null
+++ b/e2sm/headers/E2SM-RC-RANFunctionDefinition.h
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_E2SM_RC_RANFunctionDefinition_H_
+#define	_E2SM_RC_RANFunctionDefinition_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RANfunction-Name.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct RIC_EventTriggerStyle_Item;
+struct RIC_ControlStyle_Item;
+
+/* E2SM-RC-RANFunctionDefinition */
+typedef struct E2SM_RC_RANFunctionDefinition {
+	RANfunction_Name_t	 ranFunction_Name;
+	struct E2SM_RC_RANFunctionDefinition__ric_EventTriggerStyle_List {
+		A_SEQUENCE_OF(struct RIC_EventTriggerStyle_Item) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} *ric_EventTriggerStyle_List;
+	struct E2SM_RC_RANFunctionDefinition__ric_ControlStyle_List {
+		A_SEQUENCE_OF(struct RIC_ControlStyle_Item) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} *ric_ControlStyle_List;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} E2SM_RC_RANFunctionDefinition_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_RC_RANFunctionDefinition;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _E2SM_RC_RANFunctionDefinition_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/ENB-ID-Choice.h b/e2sm/headers/ENB-ID-Choice.h
new file mode 100644
index 0000000..06a6ade
--- /dev/null
+++ b/e2sm/headers/ENB-ID-Choice.h
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_ENB_ID_Choice_H_
+#define	_ENB_ID_Choice_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum ENB_ID_Choice_PR {
+	ENB_ID_Choice_PR_NOTHING,	/* No components present */
+	ENB_ID_Choice_PR_enb_ID_macro,
+	ENB_ID_Choice_PR_enb_ID_shortmacro,
+	ENB_ID_Choice_PR_enb_ID_longmacro
+	/* Extensions may appear below */
+	
+} ENB_ID_Choice_PR;
+
+/* ENB-ID-Choice */
+typedef struct ENB_ID_Choice {
+	ENB_ID_Choice_PR present;
+	union ENB_ID_Choice_u {
+		BIT_STRING_t	 enb_ID_macro;
+		BIT_STRING_t	 enb_ID_shortmacro;
+		BIT_STRING_t	 enb_ID_longmacro;
+		/*
+		 * This type is extensible,
+		 * possible extensions are below.
+		 */
+	} choice;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} ENB_ID_Choice_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ENB_ID_Choice;
+extern asn_CHOICE_specifics_t asn_SPC_ENB_ID_Choice_specs_1;
+extern asn_TYPE_member_t asn_MBR_ENB_ID_Choice_1[3];
+extern asn_per_constraints_t asn_PER_type_ENB_ID_Choice_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _ENB_ID_Choice_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/ENB-ID.h b/e2sm/headers/ENB-ID.h
new file mode 100644
index 0000000..d3593b2
--- /dev/null
+++ b/e2sm/headers/ENB-ID.h
@@ -0,0 +1,61 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_ENB_ID_H_
+#define	_ENB_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum ENB_ID_PR {
+	ENB_ID_PR_NOTHING,	/* No components present */
+	ENB_ID_PR_macro_eNB_ID,
+	ENB_ID_PR_home_eNB_ID,
+	/* Extensions may appear below */
+	ENB_ID_PR_short_Macro_eNB_ID,
+	ENB_ID_PR_long_Macro_eNB_ID
+} ENB_ID_PR;
+
+/* ENB-ID */
+typedef struct ENB_ID {
+	ENB_ID_PR present;
+	union ENB_ID_u {
+		BIT_STRING_t	 macro_eNB_ID;
+		BIT_STRING_t	 home_eNB_ID;
+		/*
+		 * This type is extensible,
+		 * possible extensions are below.
+		 */
+		BIT_STRING_t	 short_Macro_eNB_ID;
+		BIT_STRING_t	 long_Macro_eNB_ID;
+	} choice;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} ENB_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ENB_ID;
+extern asn_CHOICE_specifics_t asn_SPC_ENB_ID_specs_1;
+extern asn_TYPE_member_t asn_MBR_ENB_ID_1[4];
+extern asn_per_constraints_t asn_PER_type_ENB_ID_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _ENB_ID_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/ENGNB-ID.h b/e2sm/headers/ENGNB-ID.h
new file mode 100644
index 0000000..8f1994c
--- /dev/null
+++ b/e2sm/headers/ENGNB-ID.h
@@ -0,0 +1,56 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_ENGNB_ID_H_
+#define	_ENGNB_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum ENGNB_ID_PR {
+	ENGNB_ID_PR_NOTHING,	/* No components present */
+	ENGNB_ID_PR_gNB_ID
+	/* Extensions may appear below */
+	
+} ENGNB_ID_PR;
+
+/* ENGNB-ID */
+typedef struct ENGNB_ID {
+	ENGNB_ID_PR present;
+	union ENGNB_ID_u {
+		BIT_STRING_t	 gNB_ID;
+		/*
+		 * This type is extensible,
+		 * possible extensions are below.
+		 */
+	} choice;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} ENGNB_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ENGNB_ID;
+extern asn_CHOICE_specifics_t asn_SPC_ENGNB_ID_specs_1;
+extern asn_TYPE_member_t asn_MBR_ENGNB_ID_1[1];
+extern asn_per_constraints_t asn_PER_type_ENGNB_ID_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _ENGNB_ID_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/EPC-CUUP-PM-Format.h b/e2sm/headers/EPC-CUUP-PM-Format.h
new file mode 100644
index 0000000..0846bdc
--- /dev/null
+++ b/e2sm/headers/EPC-CUUP-PM-Format.h
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_EPC_CUUP_PM_Format_H_
+#define	_EPC_CUUP_PM_Format_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct PerQCIReportListItemFormat;
+
+/* EPC-CUUP-PM-Format */
+typedef struct EPC_CUUP_PM_Format {
+	struct EPC_CUUP_PM_Format__perQCIReportList_cuup {
+		A_SEQUENCE_OF(struct PerQCIReportListItemFormat) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} perQCIReportList_cuup;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} EPC_CUUP_PM_Format_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_EPC_CUUP_PM_Format;
+extern asn_SEQUENCE_specifics_t asn_SPC_EPC_CUUP_PM_Format_specs_1;
+extern asn_TYPE_member_t asn_MBR_EPC_CUUP_PM_Format_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _EPC_CUUP_PM_Format_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/EPC-DU-PM-Container.h b/e2sm/headers/EPC-DU-PM-Container.h
new file mode 100644
index 0000000..354e3fd
--- /dev/null
+++ b/e2sm/headers/EPC-DU-PM-Container.h
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_EPC_DU_PM_Container_H_
+#define	_EPC_DU_PM_Container_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct PerQCIReportListItem;
+
+/* EPC-DU-PM-Container */
+typedef struct EPC_DU_PM_Container {
+	struct EPC_DU_PM_Container__perQCIReportList_du {
+		A_SEQUENCE_OF(struct PerQCIReportListItem) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} perQCIReportList_du;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} EPC_DU_PM_Container_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_EPC_DU_PM_Container;
+extern asn_SEQUENCE_specifics_t asn_SPC_EPC_DU_PM_Container_specs_1;
+extern asn_TYPE_member_t asn_MBR_EPC_DU_PM_Container_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _EPC_DU_PM_Container_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/FGC-CUUP-PM-Format.h b/e2sm/headers/FGC-CUUP-PM-Format.h
new file mode 100644
index 0000000..73b91e8
--- /dev/null
+++ b/e2sm/headers/FGC-CUUP-PM-Format.h
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_FGC_CUUP_PM_Format_H_
+#define	_FGC_CUUP_PM_Format_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct SliceToReportListItem;
+
+/* FGC-CUUP-PM-Format */
+typedef struct FGC_CUUP_PM_Format {
+	struct FGC_CUUP_PM_Format__sliceToReportList {
+		A_SEQUENCE_OF(struct SliceToReportListItem) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} sliceToReportList;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} FGC_CUUP_PM_Format_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_FGC_CUUP_PM_Format;
+extern asn_SEQUENCE_specifics_t asn_SPC_FGC_CUUP_PM_Format_specs_1;
+extern asn_TYPE_member_t asn_MBR_FGC_CUUP_PM_Format_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _FGC_CUUP_PM_Format_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/FGC-DU-PM-Container.h b/e2sm/headers/FGC-DU-PM-Container.h
new file mode 100644
index 0000000..0d7c224
--- /dev/null
+++ b/e2sm/headers/FGC-DU-PM-Container.h
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_FGC_DU_PM_Container_H_
+#define	_FGC_DU_PM_Container_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct SlicePerPlmnPerCellListItem;
+
+/* FGC-DU-PM-Container */
+typedef struct FGC_DU_PM_Container {
+	struct FGC_DU_PM_Container__slicePerPlmnPerCellList {
+		A_SEQUENCE_OF(struct SlicePerPlmnPerCellListItem) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} slicePerPlmnPerCellList;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} FGC_DU_PM_Container_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_FGC_DU_PM_Container;
+extern asn_SEQUENCE_specifics_t asn_SPC_FGC_DU_PM_Container_specs_1;
+extern asn_TYPE_member_t asn_MBR_FGC_DU_PM_Container_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _FGC_DU_PM_Container_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/FQIPERSlicesPerPlmnListItem.h b/e2sm/headers/FQIPERSlicesPerPlmnListItem.h
new file mode 100644
index 0000000..93cbd5f
--- /dev/null
+++ b/e2sm/headers/FQIPERSlicesPerPlmnListItem.h
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_FQIPERSlicesPerPlmnListItem_H_
+#define	_FQIPERSlicesPerPlmnListItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "FiveQI.h"
+#include <INTEGER.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* FQIPERSlicesPerPlmnListItem */
+typedef struct FQIPERSlicesPerPlmnListItem {
+	FiveQI_t	 fiveQI;
+	INTEGER_t	*pDCPBytesDL;	/* OPTIONAL */
+	INTEGER_t	*pDCPBytesUL;	/* OPTIONAL */
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} FQIPERSlicesPerPlmnListItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_FQIPERSlicesPerPlmnListItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_FQIPERSlicesPerPlmnListItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_FQIPERSlicesPerPlmnListItem_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _FQIPERSlicesPerPlmnListItem_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/FQIPERSlicesPerPlmnPerCellListItem.h b/e2sm/headers/FQIPERSlicesPerPlmnPerCellListItem.h
new file mode 100644
index 0000000..c805b5f
--- /dev/null
+++ b/e2sm/headers/FQIPERSlicesPerPlmnPerCellListItem.h
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_FQIPERSlicesPerPlmnPerCellListItem_H_
+#define	_FQIPERSlicesPerPlmnPerCellListItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "FiveQI.h"
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* FQIPERSlicesPerPlmnPerCellListItem */
+typedef struct FQIPERSlicesPerPlmnPerCellListItem {
+	FiveQI_t	 fiveQI;
+	long	*dl_PRBUsage;	/* OPTIONAL */
+	long	*ul_PRBUsage;	/* OPTIONAL */
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} FQIPERSlicesPerPlmnPerCellListItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_FQIPERSlicesPerPlmnPerCellListItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_FQIPERSlicesPerPlmnPerCellListItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_FQIPERSlicesPerPlmnPerCellListItem_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _FQIPERSlicesPerPlmnPerCellListItem_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/FiveQI.h b/e2sm/headers/FiveQI.h
new file mode 100644
index 0000000..79e7340
--- /dev/null
+++ b/e2sm/headers/FiveQI.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_FiveQI_H_
+#define	_FiveQI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* FiveQI */
+typedef long	 FiveQI_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_FiveQI_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_FiveQI;
+asn_struct_free_f FiveQI_free;
+asn_struct_print_f FiveQI_print;
+asn_constr_check_f FiveQI_constraint;
+ber_type_decoder_f FiveQI_decode_ber;
+der_type_encoder_f FiveQI_encode_der;
+xer_type_decoder_f FiveQI_decode_xer;
+xer_type_encoder_f FiveQI_encode_xer;
+oer_type_decoder_f FiveQI_decode_oer;
+oer_type_encoder_f FiveQI_encode_oer;
+per_type_decoder_f FiveQI_decode_uper;
+per_type_encoder_f FiveQI_encode_uper;
+per_type_decoder_f FiveQI_decode_aper;
+per_type_encoder_f FiveQI_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _FiveQI_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/GNB-CU-UP-ID.h b/e2sm/headers/GNB-CU-UP-ID.h
new file mode 100644
index 0000000..23b6f3b
--- /dev/null
+++ b/e2sm/headers/GNB-CU-UP-ID.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_GNB_CU_UP_ID_H_
+#define	_GNB_CU_UP_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <INTEGER.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GNB-CU-UP-ID */
+typedef INTEGER_t	 GNB_CU_UP_ID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_GNB_CU_UP_ID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_GNB_CU_UP_ID;
+asn_struct_free_f GNB_CU_UP_ID_free;
+asn_struct_print_f GNB_CU_UP_ID_print;
+asn_constr_check_f GNB_CU_UP_ID_constraint;
+ber_type_decoder_f GNB_CU_UP_ID_decode_ber;
+der_type_encoder_f GNB_CU_UP_ID_encode_der;
+xer_type_decoder_f GNB_CU_UP_ID_decode_xer;
+xer_type_encoder_f GNB_CU_UP_ID_encode_xer;
+oer_type_decoder_f GNB_CU_UP_ID_decode_oer;
+oer_type_encoder_f GNB_CU_UP_ID_encode_oer;
+per_type_decoder_f GNB_CU_UP_ID_decode_uper;
+per_type_encoder_f GNB_CU_UP_ID_encode_uper;
+per_type_decoder_f GNB_CU_UP_ID_decode_aper;
+per_type_encoder_f GNB_CU_UP_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _GNB_CU_UP_ID_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/GNB-DU-ID.h b/e2sm/headers/GNB-DU-ID.h
new file mode 100644
index 0000000..d97a542
--- /dev/null
+++ b/e2sm/headers/GNB-DU-ID.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_GNB_DU_ID_H_
+#define	_GNB_DU_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <INTEGER.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GNB-DU-ID */
+typedef INTEGER_t	 GNB_DU_ID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_GNB_DU_ID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_GNB_DU_ID;
+asn_struct_free_f GNB_DU_ID_free;
+asn_struct_print_f GNB_DU_ID_print;
+asn_constr_check_f GNB_DU_ID_constraint;
+ber_type_decoder_f GNB_DU_ID_decode_ber;
+der_type_encoder_f GNB_DU_ID_encode_der;
+xer_type_decoder_f GNB_DU_ID_decode_xer;
+xer_type_encoder_f GNB_DU_ID_encode_xer;
+oer_type_decoder_f GNB_DU_ID_decode_oer;
+oer_type_encoder_f GNB_DU_ID_encode_oer;
+per_type_decoder_f GNB_DU_ID_decode_uper;
+per_type_encoder_f GNB_DU_ID_encode_uper;
+per_type_decoder_f GNB_DU_ID_decode_aper;
+per_type_encoder_f GNB_DU_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _GNB_DU_ID_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/GNB-ID-Choice.h b/e2sm/headers/GNB-ID-Choice.h
new file mode 100644
index 0000000..fd8b7ca
--- /dev/null
+++ b/e2sm/headers/GNB-ID-Choice.h
@@ -0,0 +1,56 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_GNB_ID_Choice_H_
+#define	_GNB_ID_Choice_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum GNB_ID_Choice_PR {
+	GNB_ID_Choice_PR_NOTHING,	/* No components present */
+	GNB_ID_Choice_PR_gnb_ID
+	/* Extensions may appear below */
+	
+} GNB_ID_Choice_PR;
+
+/* GNB-ID-Choice */
+typedef struct GNB_ID_Choice {
+	GNB_ID_Choice_PR present;
+	union GNB_ID_Choice_u {
+		BIT_STRING_t	 gnb_ID;
+		/*
+		 * This type is extensible,
+		 * possible extensions are below.
+		 */
+	} choice;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} GNB_ID_Choice_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GNB_ID_Choice;
+extern asn_CHOICE_specifics_t asn_SPC_GNB_ID_Choice_specs_1;
+extern asn_TYPE_member_t asn_MBR_GNB_ID_Choice_1[1];
+extern asn_per_constraints_t asn_PER_type_GNB_ID_Choice_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _GNB_ID_Choice_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/GlobalE2node-ID.h b/e2sm/headers/GlobalE2node-ID.h
new file mode 100644
index 0000000..4c1f1be
--- /dev/null
+++ b/e2sm/headers/GlobalE2node-ID.h
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_GlobalE2node_ID_H_
+#define	_GlobalE2node_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum GlobalE2node_ID_PR {
+	GlobalE2node_ID_PR_NOTHING,	/* No components present */
+	GlobalE2node_ID_PR_gNB,
+	GlobalE2node_ID_PR_en_gNB,
+	GlobalE2node_ID_PR_ng_eNB,
+	GlobalE2node_ID_PR_eNB
+	/* Extensions may appear below */
+	
+} GlobalE2node_ID_PR;
+
+/* Forward declarations */
+struct GlobalE2node_gNB_ID;
+struct GlobalE2node_en_gNB_ID;
+struct GlobalE2node_ng_eNB_ID;
+struct GlobalE2node_eNB_ID;
+
+/* GlobalE2node-ID */
+typedef struct GlobalE2node_ID {
+	GlobalE2node_ID_PR present;
+	union GlobalE2node_ID_u {
+		struct GlobalE2node_gNB_ID	*gNB;
+		struct GlobalE2node_en_gNB_ID	*en_gNB;
+		struct GlobalE2node_ng_eNB_ID	*ng_eNB;
+		struct GlobalE2node_eNB_ID	*eNB;
+		/*
+		 * This type is extensible,
+		 * possible extensions are below.
+		 */
+	} choice;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} GlobalE2node_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_ID;
+extern asn_CHOICE_specifics_t asn_SPC_GlobalE2node_ID_specs_1;
+extern asn_TYPE_member_t asn_MBR_GlobalE2node_ID_1[4];
+extern asn_per_constraints_t asn_PER_type_GlobalE2node_ID_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _GlobalE2node_ID_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/GlobalE2node-eNB-ID.h b/e2sm/headers/GlobalE2node-eNB-ID.h
new file mode 100644
index 0000000..c38f8e7
--- /dev/null
+++ b/e2sm/headers/GlobalE2node-eNB-ID.h
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_GlobalE2node_eNB_ID_H_
+#define	_GlobalE2node_eNB_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "GlobalENB-ID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GlobalE2node-eNB-ID */
+typedef struct GlobalE2node_eNB_ID {
+	GlobalENB_ID_t	 global_eNB_ID;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} GlobalE2node_eNB_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_eNB_ID;
+extern asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_eNB_ID_specs_1;
+extern asn_TYPE_member_t asn_MBR_GlobalE2node_eNB_ID_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _GlobalE2node_eNB_ID_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/GlobalE2node-en-gNB-ID.h b/e2sm/headers/GlobalE2node-en-gNB-ID.h
new file mode 100644
index 0000000..795bc84
--- /dev/null
+++ b/e2sm/headers/GlobalE2node-en-gNB-ID.h
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_GlobalE2node_en_gNB_ID_H_
+#define	_GlobalE2node_en_gNB_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "GlobalenGNB-ID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GlobalE2node-en-gNB-ID */
+typedef struct GlobalE2node_en_gNB_ID {
+	GlobalenGNB_ID_t	 global_gNB_ID;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} GlobalE2node_en_gNB_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_en_gNB_ID;
+extern asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_en_gNB_ID_specs_1;
+extern asn_TYPE_member_t asn_MBR_GlobalE2node_en_gNB_ID_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _GlobalE2node_en_gNB_ID_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/GlobalE2node-gNB-ID.h b/e2sm/headers/GlobalE2node-gNB-ID.h
new file mode 100644
index 0000000..d8121fe
--- /dev/null
+++ b/e2sm/headers/GlobalE2node-gNB-ID.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_GlobalE2node_gNB_ID_H_
+#define	_GlobalE2node_gNB_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "GlobalgNB-ID.h"
+#include "GNB-CU-UP-ID.h"
+#include "GNB-DU-ID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GlobalE2node-gNB-ID */
+typedef struct GlobalE2node_gNB_ID {
+	GlobalgNB_ID_t	 global_gNB_ID;
+	GNB_CU_UP_ID_t	*gNB_CU_UP_ID;	/* OPTIONAL */
+	GNB_DU_ID_t	*gNB_DU_ID;	/* OPTIONAL */
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} GlobalE2node_gNB_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_gNB_ID;
+extern asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_gNB_ID_specs_1;
+extern asn_TYPE_member_t asn_MBR_GlobalE2node_gNB_ID_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _GlobalE2node_gNB_ID_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/GlobalE2node-ng-eNB-ID.h b/e2sm/headers/GlobalE2node-ng-eNB-ID.h
new file mode 100644
index 0000000..f959fb8
--- /dev/null
+++ b/e2sm/headers/GlobalE2node-ng-eNB-ID.h
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_GlobalE2node_ng_eNB_ID_H_
+#define	_GlobalE2node_ng_eNB_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "GlobalngeNB-ID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GlobalE2node-ng-eNB-ID */
+typedef struct GlobalE2node_ng_eNB_ID {
+	GlobalngeNB_ID_t	 global_ng_eNB_ID;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} GlobalE2node_ng_eNB_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_ng_eNB_ID;
+extern asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_ng_eNB_ID_specs_1;
+extern asn_TYPE_member_t asn_MBR_GlobalE2node_ng_eNB_ID_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _GlobalE2node_ng_eNB_ID_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/GlobalENB-ID.h b/e2sm/headers/GlobalENB-ID.h
new file mode 100644
index 0000000..274bd8c
--- /dev/null
+++ b/e2sm/headers/GlobalENB-ID.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_GlobalENB_ID_H_
+#define	_GlobalENB_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PLMN-Identity.h"
+#include "ENB-ID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GlobalENB-ID */
+typedef struct GlobalENB_ID {
+	PLMN_Identity_t	 pLMN_Identity;
+	ENB_ID_t	 eNB_ID;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} GlobalENB_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GlobalENB_ID;
+extern asn_SEQUENCE_specifics_t asn_SPC_GlobalENB_ID_specs_1;
+extern asn_TYPE_member_t asn_MBR_GlobalENB_ID_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _GlobalENB_ID_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/GlobalKPMnode-ID.h b/e2sm/headers/GlobalKPMnode-ID.h
new file mode 100644
index 0000000..bbac962
--- /dev/null
+++ b/e2sm/headers/GlobalKPMnode-ID.h
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * 	found in "E2SM-KPM-Prespec.asn"
+ * 	`asn1c -D ./e2sm-kpm -gen-PER`
+ */
+
+#ifndef	_GlobalKPMnode_ID_H_
+#define	_GlobalKPMnode_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "GlobalKPMnode-gNB-ID.h"
+#include "GlobalKPMnode-en-gNB-ID.h"
+#include "GlobalKPMnode-ng-eNB-ID.h"
+#include "GlobalKPMnode-eNB-ID.h"
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum GlobalKPMnode_ID_PR {
+	GlobalKPMnode_ID_PR_NOTHING,	/* No components present */
+	GlobalKPMnode_ID_PR_gNB,
+	GlobalKPMnode_ID_PR_en_gNB,
+	GlobalKPMnode_ID_PR_ng_eNB,
+	GlobalKPMnode_ID_PR_eNB
+	/* Extensions may appear below */
+	
+} GlobalKPMnode_ID_PR;
+
+/* GlobalKPMnode-ID */
+typedef struct GlobalKPMnode_ID {
+	GlobalKPMnode_ID_PR present;
+	union GlobalKPMnode_ID_u {
+		GlobalKPMnode_gNB_ID_t	 gNB;
+		GlobalKPMnode_en_gNB_ID_t	 en_gNB;
+		GlobalKPMnode_ng_eNB_ID_t	 ng_eNB;
+		GlobalKPMnode_eNB_ID_t	 eNB;
+		/*
+		 * This type is extensible,
+		 * possible extensions are below.
+		 */
+	} choice;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} GlobalKPMnode_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GlobalKPMnode_ID;
+extern asn_CHOICE_specifics_t asn_SPC_GlobalKPMnode_ID_specs_1;
+extern asn_TYPE_member_t asn_MBR_GlobalKPMnode_ID_1[4];
+extern asn_per_constraints_t asn_PER_type_GlobalKPMnode_ID_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _GlobalKPMnode_ID_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/GlobalKPMnode-eNB-ID.h b/e2sm/headers/GlobalKPMnode-eNB-ID.h
new file mode 100644
index 0000000..7ebf223
--- /dev/null
+++ b/e2sm/headers/GlobalKPMnode-eNB-ID.h
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * 	found in "E2SM-KPM-Prespec.asn"
+ * 	`asn1c -D ./e2sm-kpm -gen-PER`
+ */
+
+#ifndef	_GlobalKPMnode_eNB_ID_H_
+#define	_GlobalKPMnode_eNB_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "GlobalENB-ID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GlobalKPMnode-eNB-ID */
+typedef struct GlobalKPMnode_eNB_ID {
+	GlobalENB_ID_t	 global_eNB_ID;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} GlobalKPMnode_eNB_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GlobalKPMnode_eNB_ID;
+extern asn_SEQUENCE_specifics_t asn_SPC_GlobalKPMnode_eNB_ID_specs_1;
+extern asn_TYPE_member_t asn_MBR_GlobalKPMnode_eNB_ID_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _GlobalKPMnode_eNB_ID_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/GlobalKPMnode-en-gNB-ID.h b/e2sm/headers/GlobalKPMnode-en-gNB-ID.h
new file mode 100644
index 0000000..37f8a0d
--- /dev/null
+++ b/e2sm/headers/GlobalKPMnode-en-gNB-ID.h
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * 	found in "E2SM-KPM-Prespec.asn"
+ * 	`asn1c -D ./e2sm-kpm -gen-PER`
+ */
+
+#ifndef	_GlobalKPMnode_en_gNB_ID_H_
+#define	_GlobalKPMnode_en_gNB_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "GlobalenGNB-ID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GlobalKPMnode-en-gNB-ID */
+typedef struct GlobalKPMnode_en_gNB_ID {
+	GlobalenGNB_ID_t	 global_gNB_ID;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} GlobalKPMnode_en_gNB_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GlobalKPMnode_en_gNB_ID;
+extern asn_SEQUENCE_specifics_t asn_SPC_GlobalKPMnode_en_gNB_ID_specs_1;
+extern asn_TYPE_member_t asn_MBR_GlobalKPMnode_en_gNB_ID_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _GlobalKPMnode_en_gNB_ID_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/GlobalKPMnode-gNB-ID.h b/e2sm/headers/GlobalKPMnode-gNB-ID.h
new file mode 100644
index 0000000..f0dcc67
--- /dev/null
+++ b/e2sm/headers/GlobalKPMnode-gNB-ID.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * 	found in "E2SM-KPM-Prespec.asn"
+ * 	`asn1c -D ./e2sm-kpm -gen-PER`
+ */
+
+#ifndef	_GlobalKPMnode_gNB_ID_H_
+#define	_GlobalKPMnode_gNB_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "GlobalgNB-ID.h"
+#include "GNB-CU-UP-ID.h"
+#include "GNB-DU-ID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GlobalKPMnode-gNB-ID */
+typedef struct GlobalKPMnode_gNB_ID {
+	GlobalgNB_ID_t	 global_gNB_ID;
+	GNB_CU_UP_ID_t	*gNB_CU_UP_ID;	/* OPTIONAL */
+	GNB_DU_ID_t	*gNB_DU_ID;	/* OPTIONAL */
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} GlobalKPMnode_gNB_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GlobalKPMnode_gNB_ID;
+extern asn_SEQUENCE_specifics_t asn_SPC_GlobalKPMnode_gNB_ID_specs_1;
+extern asn_TYPE_member_t asn_MBR_GlobalKPMnode_gNB_ID_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _GlobalKPMnode_gNB_ID_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/GlobalKPMnode-ng-eNB-ID.h b/e2sm/headers/GlobalKPMnode-ng-eNB-ID.h
new file mode 100644
index 0000000..faa0a22
--- /dev/null
+++ b/e2sm/headers/GlobalKPMnode-ng-eNB-ID.h
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * 	found in "E2SM-KPM-Prespec.asn"
+ * 	`asn1c -D ./e2sm-kpm -gen-PER`
+ */
+
+#ifndef	_GlobalKPMnode_ng_eNB_ID_H_
+#define	_GlobalKPMnode_ng_eNB_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "GlobalngeNB-ID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GlobalKPMnode-ng-eNB-ID */
+typedef struct GlobalKPMnode_ng_eNB_ID {
+	GlobalngeNB_ID_t	 global_ng_eNB_ID;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} GlobalKPMnode_ng_eNB_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GlobalKPMnode_ng_eNB_ID;
+extern asn_SEQUENCE_specifics_t asn_SPC_GlobalKPMnode_ng_eNB_ID_specs_1;
+extern asn_TYPE_member_t asn_MBR_GlobalKPMnode_ng_eNB_ID_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _GlobalKPMnode_ng_eNB_ID_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/GlobalenGNB-ID.h b/e2sm/headers/GlobalenGNB-ID.h
new file mode 100644
index 0000000..40f06c8
--- /dev/null
+++ b/e2sm/headers/GlobalenGNB-ID.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_GlobalenGNB_ID_H_
+#define	_GlobalenGNB_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PLMN-Identity.h"
+#include "ENGNB-ID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GlobalenGNB-ID */
+typedef struct GlobalenGNB_ID {
+	PLMN_Identity_t	 pLMN_Identity;
+	ENGNB_ID_t	 gNB_ID;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} GlobalenGNB_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GlobalenGNB_ID;
+extern asn_SEQUENCE_specifics_t asn_SPC_GlobalenGNB_ID_specs_1;
+extern asn_TYPE_member_t asn_MBR_GlobalenGNB_ID_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _GlobalenGNB_ID_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/GlobalgNB-ID.h b/e2sm/headers/GlobalgNB-ID.h
new file mode 100644
index 0000000..7b0364d
--- /dev/null
+++ b/e2sm/headers/GlobalgNB-ID.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_GlobalgNB_ID_H_
+#define	_GlobalgNB_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PLMN-Identity.h"
+#include "GNB-ID-Choice.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GlobalgNB-ID */
+typedef struct GlobalgNB_ID {
+	PLMN_Identity_t	 plmn_id;
+	GNB_ID_Choice_t	 gnb_id;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} GlobalgNB_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GlobalgNB_ID;
+extern asn_SEQUENCE_specifics_t asn_SPC_GlobalgNB_ID_specs_1;
+extern asn_TYPE_member_t asn_MBR_GlobalgNB_ID_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _GlobalgNB_ID_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/GlobalngeNB-ID.h b/e2sm/headers/GlobalngeNB-ID.h
new file mode 100644
index 0000000..a6ab832
--- /dev/null
+++ b/e2sm/headers/GlobalngeNB-ID.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_GlobalngeNB_ID_H_
+#define	_GlobalngeNB_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PLMN-Identity.h"
+#include "ENB-ID-Choice.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GlobalngeNB-ID */
+typedef struct GlobalngeNB_ID {
+	PLMN_Identity_t	 plmn_id;
+	ENB_ID_Choice_t	 enb_id;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} GlobalngeNB_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GlobalngeNB_ID;
+extern asn_SEQUENCE_specifics_t asn_SPC_GlobalngeNB_ID_specs_1;
+extern asn_TYPE_member_t asn_MBR_GlobalngeNB_ID_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _GlobalngeNB_ID_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/INTEGER.h b/e2sm/headers/INTEGER.h
new file mode 100644
index 0000000..f776c07
--- /dev/null
+++ b/e2sm/headers/INTEGER.h
@@ -0,0 +1,108 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_INTEGER_H_
+#define	_INTEGER_H_
+
+#include <asn_application.h>
+#include <asn_codecs_prim.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef ASN__PRIMITIVE_TYPE_t INTEGER_t;
+
+extern asn_TYPE_descriptor_t asn_DEF_INTEGER;
+extern asn_TYPE_operation_t asn_OP_INTEGER;
+
+/* Map with <tag> to integer value association */
+typedef struct asn_INTEGER_enum_map_s {
+	long		 nat_value;	/* associated native integer value */
+	size_t		 enum_len;	/* strlen("tag") */
+	const char	*enum_name;	/* "tag" */
+} asn_INTEGER_enum_map_t;
+
+/* This type describes an enumeration for INTEGER and ENUMERATED types */
+typedef struct asn_INTEGER_specifics_s {
+	const asn_INTEGER_enum_map_t *value2enum;	/* N -> "tag"; sorted by N */
+	const unsigned int *enum2value;		/* "tag" => N; sorted by tag */
+	int map_count;				/* Elements in either map */
+	int extension;				/* This map is extensible */
+	int strict_enumeration;			/* Enumeration set is fixed */
+	int field_width;			/* Size of native integer */
+	int field_unsigned;			/* Signed=0, unsigned=1 */
+} asn_INTEGER_specifics_t;
+
+#define INTEGER_free    ASN__PRIMITIVE_TYPE_free
+#define INTEGER_decode_ber	ber_decode_primitive
+#define INTEGER_constraint	asn_generic_no_constraint
+asn_struct_print_f INTEGER_print;
+asn_struct_compare_f INTEGER_compare;
+der_type_encoder_f INTEGER_encode_der;
+xer_type_decoder_f INTEGER_decode_xer;
+xer_type_encoder_f INTEGER_encode_xer;
+oer_type_decoder_f INTEGER_decode_oer;
+oer_type_encoder_f INTEGER_encode_oer;
+per_type_decoder_f INTEGER_decode_uper;
+per_type_encoder_f INTEGER_encode_uper;
+per_type_decoder_f INTEGER_decode_aper;
+per_type_encoder_f INTEGER_encode_aper;
+asn_random_fill_f  INTEGER_random_fill;
+
+/***********************************
+ * Some handy conversion routines. *
+ ***********************************/
+
+/*
+ * Natiwe size-independent conversion of native integers to/from INTEGER.
+ * (l_size) is in bytes.
+ * Returns 0 if it was possible to convert, -1 otherwise.
+ * -1/EINVAL: Mandatory argument missing
+ * -1/ERANGE: Value encoded is out of range for long representation
+ * -1/ENOMEM: Memory allocation failed (in asn_*2INTEGER()).
+ */
+int asn_INTEGER2imax(const INTEGER_t *i, intmax_t *l);
+int asn_INTEGER2umax(const INTEGER_t *i, uintmax_t *l);
+int asn_imax2INTEGER(INTEGER_t *i, intmax_t l);
+int asn_umax2INTEGER(INTEGER_t *i, uintmax_t l);
+
+/*
+ * Size-specific conversion helpers.
+ */
+int asn_INTEGER2long(const INTEGER_t *i, long *l);
+int asn_INTEGER2ulong(const INTEGER_t *i, unsigned long *l);
+int asn_long2INTEGER(INTEGER_t *i, long l);
+int asn_ulong2INTEGER(INTEGER_t *i, unsigned long l);
+int asn_int642INTEGER(INTEGER_t *i, int64_t l);
+int asn_uint642INTEGER(INTEGER_t *i, uint64_t l);
+
+/* A version of strtol/strtoimax(3) with nicer error reporting. */
+enum asn_strtox_result_e {
+    ASN_STRTOX_ERROR_RANGE = -3,  /* Input outside of supported numeric range */
+    ASN_STRTOX_ERROR_INVAL = -2,  /* Invalid data encountered (e.g., "+-") */
+    ASN_STRTOX_EXPECT_MORE = -1,  /* More data expected (e.g. "+") */
+    ASN_STRTOX_OK          =  0,  /* Conversion succeded, number ends at (*end) */
+    ASN_STRTOX_EXTRA_DATA  =  1   /* Conversion succeded, but the string has extra stuff */
+};
+enum asn_strtox_result_e asn_strtol_lim(const char *str, const char **end,
+                                        long *l);
+enum asn_strtox_result_e asn_strtoul_lim(const char *str, const char **end,
+                                         unsigned long *l);
+enum asn_strtox_result_e asn_strtoimax_lim(const char *str, const char **end,
+                                           intmax_t *l);
+enum asn_strtox_result_e asn_strtoumax_lim(const char *str, const char **end,
+                                           uintmax_t *l);
+
+/*
+ * Convert the integer value into the corresponding enumeration map entry.
+ */
+const asn_INTEGER_enum_map_t *INTEGER_map_value2enum(
+    const asn_INTEGER_specifics_t *specs, long value);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _INTEGER_H_ */
diff --git a/e2sm/headers/L3-RRC-Measurements.h b/e2sm/headers/L3-RRC-Measurements.h
new file mode 100644
index 0000000..eb51c5c
--- /dev/null
+++ b/e2sm/headers/L3-RRC-Measurements.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_L3_RRC_Measurements_H_
+#define	_L3_RRC_Measurements_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RRCEvent.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct ServingCellMeasurements;
+struct MeasResultNeighCells;
+
+/* L3-RRC-Measurements */
+typedef struct L3_RRC_Measurements {
+	RRCEvent_t	 rrcEvent;
+	struct ServingCellMeasurements	*servingCellMeasurements;	/* OPTIONAL */
+	struct MeasResultNeighCells	*measResultNeighCells;	/* OPTIONAL */
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} L3_RRC_Measurements_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_L3_RRC_Measurements;
+extern asn_SEQUENCE_specifics_t asn_SPC_L3_RRC_Measurements_specs_1;
+extern asn_TYPE_member_t asn_MBR_L3_RRC_Measurements_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _L3_RRC_Measurements_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/Makefile.am.libasncodec b/e2sm/headers/Makefile.am.libasncodec
new file mode 100644
index 0000000..accc816
--- /dev/null
+++ b/e2sm/headers/Makefile.am.libasncodec
@@ -0,0 +1,344 @@
+ASN_MODULE_SRCS=	\
+	./gen_files/Criticality.c	\
+	./gen_files/Presence.c	\
+	./gen_files/ProcedureCode.c	\
+	./gen_files/ProtocolIE-ID.c	\
+	./gen_files/TriggeringMessage.c	\
+	./gen_files/E2SM-KPM-RANFunctionDefinition.c	\
+	./gen_files/RIC-ReportStyle-Item.c	\
+	./gen_files/E2SM-KPM-ActionDefinition.c	\
+	./gen_files/E2SM-KPM-ActionDefinition-Format1.c	\
+	./gen_files/E2SM-KPM-IndicationHeader.c	\
+	./gen_files/E2SM-KPM-IndicationHeader-Format1.c	\
+	./gen_files/E2SM-KPM-IndicationMessage.c	\
+	./gen_files/E2SM-KPM-IndicationMessage-Format1.c	\
+	./gen_files/PM-Containers-Item.c	\
+	./gen_files/PerUE-PM-Item.c	\
+	./gen_files/PM-Info-Item.c	\
+	./gen_files/PF-Container.c	\
+	./gen_files/ODU-PF-Container.c	\
+	./gen_files/CellResourceReportListItem.c	\
+	./gen_files/ServedPlmnPerCellListItem.c	\
+	./gen_files/FGC-DU-PM-Container.c	\
+	./gen_files/SlicePerPlmnPerCellListItem.c	\
+	./gen_files/FQIPERSlicesPerPlmnPerCellListItem.c	\
+	./gen_files/EPC-DU-PM-Container.c	\
+	./gen_files/PerQCIReportListItem.c	\
+	./gen_files/OCUCP-PF-Container.c	\
+	./gen_files/OCUUP-PF-Container.c	\
+	./gen_files/PF-ContainerListItem.c	\
+	./gen_files/CUUPMeasurement-Container.c	\
+	./gen_files/PlmnID-Item.c	\
+	./gen_files/FGC-CUUP-PM-Format.c	\
+	./gen_files/SliceToReportListItem.c	\
+	./gen_files/FQIPERSlicesPerPlmnListItem.c	\
+	./gen_files/EPC-CUUP-PM-Format.c	\
+	./gen_files/PerQCIReportListItemFormat.c	\
+	./gen_files/MeasurementValue.c	\
+	./gen_files/L3-RRC-Measurements.c	\
+	./gen_files/RRCEvent.c	\
+	./gen_files/ServingCellMeasurements.c	\
+	./gen_files/MeasResultServMOList.c	\
+	./gen_files/MeasResultServMO.c	\
+	./gen_files/MeasResultNR.c	\
+	./gen_files/MeasResultListEUTRA.c	\
+	./gen_files/MeasResultEUTRA.c	\
+	./gen_files/MeasResultPCell.c	\
+	./gen_files/MeasResultNeighCells.c	\
+	./gen_files/MeasResultListNR.c	\
+	./gen_files/PhysCellId.c	\
+	./gen_files/ServCellIndex.c	\
+	./gen_files/MeasQuantityResults.c	\
+	./gen_files/MeasQuantityResultsEUTRA.c	\
+	./gen_files/RSRP-RangeEUTRA.c	\
+	./gen_files/RSRQ-RangeEUTRA.c	\
+	./gen_files/SINR-RangeEUTRA.c	\
+	./gen_files/ResultsPerSSB-IndexList.c	\
+	./gen_files/ResultsPerSSB-Index.c	\
+	./gen_files/ResultsPerCSI-RS-IndexList.c	\
+	./gen_files/ResultsPerCSI-RS-Index.c	\
+	./gen_files/SSB-Index.c	\
+	./gen_files/CSI-RS-Index.c	\
+	./gen_files/RSRP-Range.c	\
+	./gen_files/RSRQ-Range.c	\
+	./gen_files/SINR-Range.c	\
+	./gen_files/TimeStamp.c	\
+	./gen_files/CellObjectID.c	\
+	./gen_files/MeasurementInfoList.c	\
+	./gen_files/MeasurementInfoItem.c	\
+	./gen_files/MeasurementType.c	\
+	./gen_files/NRCGI.c	\
+	./gen_files/NRCellIdentity.c	\
+	./gen_files/S-NSSAI.c	\
+	./gen_files/MeasurementTypeName.c	\
+	./gen_files/MeasurementTypeID.c	\
+	./gen_files/FiveQI.c	\
+	./gen_files/QCI.c	\
+	./gen_files/NI-Type.c	\
+	./gen_files/RAN-Container.c	\
+	./gen_files/E2SM-RC-RANFunctionDefinition.c	\
+	./gen_files/RANfunction-Name.c	\
+	./gen_files/RIC-EventTriggerStyle-Item.c	\
+	./gen_files/RIC-ControlStyle-Item.c	\
+	./gen_files/RIC-ControlAction-Item.c	\
+	./gen_files/RAN-ControlParameter-Item.c	\
+	./gen_files/E2SM-RC-ControlHeader.c	\
+	./gen_files/E2SM-RC-ControlHeader-Format1.c	\
+	./gen_files/E2SM-RC-ControlMessage.c	\
+	./gen_files/E2SM-RC-ControlMessage-Format1.c	\
+	./gen_files/RANParameter-Item.c	\
+	./gen_files/RANParameter-ValueType.c	\
+	./gen_files/RANParameter-ELEMENT.c	\
+	./gen_files/RANParameter-STRUCTURE.c	\
+	./gen_files/RANParameter-LIST.c	\
+	./gen_files/RANParameter-Value.c	\
+	./gen_files/UE-Identity.c	\
+	./gen_files/RIC-Style-Type.c	\
+	./gen_files/RIC-Style-Name.c	\
+	./gen_files/RIC-Format-Type.c	\
+	./gen_files/RANParameter-ID.c	\
+	./gen_files/RANParameter-Name.c	\
+	./gen_files/RIC-ControlAction-ID.c	\
+	./gen_files/RIC-ControlAction-Name.c	\
+	./gen_files/E2SM-KPM-EventTriggerDefinition.c	\
+	./gen_files/E2SM-KPM-EventTriggerDefinition-Format1.c	\
+	./gen_files/Trigger-ConditionIE-Item.c	\
+	./gen_files/RT-Period-IE.c	\
+	./gen_files/RANcallProcess-ID-string.c	\
+	./gen_files/PLMN-Identity.c	\
+	./gen_files/GlobalE2node-ID.c	\
+	./gen_files/GlobalE2node-en-gNB-ID.c	\
+	./gen_files/GlobalE2node-eNB-ID.c	\
+	./gen_files/GlobalE2node-gNB-ID.c	\
+	./gen_files/GlobalE2node-ng-eNB-ID.c	\
+	./gen_files/GlobalENB-ID.c	\
+	./gen_files/GlobalenGNB-ID.c	\
+	./gen_files/GlobalgNB-ID.c	\
+	./gen_files/GlobalngeNB-ID.c	\
+	./gen_files/GNB-ID-Choice.c	\
+	./gen_files/ENB-ID-Choice.c	\
+	./gen_files/ENB-ID.c	\
+	./gen_files/ENGNB-ID.c	\
+	./gen_files/GNB-CU-UP-ID.c	\
+	./gen_files/GNB-DU-ID.c
+
+ASN_MODULE_HDRS=	\
+	./gen_files/Criticality.h	\
+	./gen_files/Presence.h	\
+	./gen_files/ProcedureCode.h	\
+	./gen_files/ProtocolIE-ID.h	\
+	./gen_files/TriggeringMessage.h	\
+	./gen_files/E2SM-KPM-RANFunctionDefinition.h	\
+	./gen_files/RIC-ReportStyle-Item.h	\
+	./gen_files/E2SM-KPM-ActionDefinition.h	\
+	./gen_files/E2SM-KPM-ActionDefinition-Format1.h	\
+	./gen_files/E2SM-KPM-IndicationHeader.h	\
+	./gen_files/E2SM-KPM-IndicationHeader-Format1.h	\
+	./gen_files/E2SM-KPM-IndicationMessage.h	\
+	./gen_files/E2SM-KPM-IndicationMessage-Format1.h	\
+	./gen_files/PM-Containers-Item.h	\
+	./gen_files/PerUE-PM-Item.h	\
+	./gen_files/PM-Info-Item.h	\
+	./gen_files/PF-Container.h	\
+	./gen_files/ODU-PF-Container.h	\
+	./gen_files/CellResourceReportListItem.h	\
+	./gen_files/ServedPlmnPerCellListItem.h	\
+	./gen_files/FGC-DU-PM-Container.h	\
+	./gen_files/SlicePerPlmnPerCellListItem.h	\
+	./gen_files/FQIPERSlicesPerPlmnPerCellListItem.h	\
+	./gen_files/EPC-DU-PM-Container.h	\
+	./gen_files/PerQCIReportListItem.h	\
+	./gen_files/OCUCP-PF-Container.h	\
+	./gen_files/OCUUP-PF-Container.h	\
+	./gen_files/PF-ContainerListItem.h	\
+	./gen_files/CUUPMeasurement-Container.h	\
+	./gen_files/PlmnID-Item.h	\
+	./gen_files/FGC-CUUP-PM-Format.h	\
+	./gen_files/SliceToReportListItem.h	\
+	./gen_files/FQIPERSlicesPerPlmnListItem.h	\
+	./gen_files/EPC-CUUP-PM-Format.h	\
+	./gen_files/PerQCIReportListItemFormat.h	\
+	./gen_files/MeasurementValue.h	\
+	./gen_files/L3-RRC-Measurements.h	\
+	./gen_files/RRCEvent.h	\
+	./gen_files/ServingCellMeasurements.h	\
+	./gen_files/MeasResultServMOList.h	\
+	./gen_files/MeasResultServMO.h	\
+	./gen_files/MeasResultNR.h	\
+	./gen_files/MeasResultListEUTRA.h	\
+	./gen_files/MeasResultEUTRA.h	\
+	./gen_files/MeasResultPCell.h	\
+	./gen_files/MeasResultNeighCells.h	\
+	./gen_files/MeasResultListNR.h	\
+	./gen_files/PhysCellId.h	\
+	./gen_files/ServCellIndex.h	\
+	./gen_files/MeasQuantityResults.h	\
+	./gen_files/MeasQuantityResultsEUTRA.h	\
+	./gen_files/RSRP-RangeEUTRA.h	\
+	./gen_files/RSRQ-RangeEUTRA.h	\
+	./gen_files/SINR-RangeEUTRA.h	\
+	./gen_files/ResultsPerSSB-IndexList.h	\
+	./gen_files/ResultsPerSSB-Index.h	\
+	./gen_files/ResultsPerCSI-RS-IndexList.h	\
+	./gen_files/ResultsPerCSI-RS-Index.h	\
+	./gen_files/SSB-Index.h	\
+	./gen_files/CSI-RS-Index.h	\
+	./gen_files/RSRP-Range.h	\
+	./gen_files/RSRQ-Range.h	\
+	./gen_files/SINR-Range.h	\
+	./gen_files/TimeStamp.h	\
+	./gen_files/CellObjectID.h	\
+	./gen_files/MeasurementInfoList.h	\
+	./gen_files/MeasurementInfoItem.h	\
+	./gen_files/MeasurementType.h	\
+	./gen_files/NRCGI.h	\
+	./gen_files/NRCellIdentity.h	\
+	./gen_files/S-NSSAI.h	\
+	./gen_files/MeasurementTypeName.h	\
+	./gen_files/MeasurementTypeID.h	\
+	./gen_files/FiveQI.h	\
+	./gen_files/QCI.h	\
+	./gen_files/NI-Type.h	\
+	./gen_files/RAN-Container.h	\
+	./gen_files/E2SM-RC-RANFunctionDefinition.h	\
+	./gen_files/RANfunction-Name.h	\
+	./gen_files/RIC-EventTriggerStyle-Item.h	\
+	./gen_files/RIC-ControlStyle-Item.h	\
+	./gen_files/RIC-ControlAction-Item.h	\
+	./gen_files/RAN-ControlParameter-Item.h	\
+	./gen_files/E2SM-RC-ControlHeader.h	\
+	./gen_files/E2SM-RC-ControlHeader-Format1.h	\
+	./gen_files/E2SM-RC-ControlMessage.h	\
+	./gen_files/E2SM-RC-ControlMessage-Format1.h	\
+	./gen_files/RANParameter-Item.h	\
+	./gen_files/RANParameter-ValueType.h	\
+	./gen_files/RANParameter-ELEMENT.h	\
+	./gen_files/RANParameter-STRUCTURE.h	\
+	./gen_files/RANParameter-LIST.h	\
+	./gen_files/RANParameter-Value.h	\
+	./gen_files/UE-Identity.h	\
+	./gen_files/RIC-Style-Type.h	\
+	./gen_files/RIC-Style-Name.h	\
+	./gen_files/RIC-Format-Type.h	\
+	./gen_files/RANParameter-ID.h	\
+	./gen_files/RANParameter-Name.h	\
+	./gen_files/RIC-ControlAction-ID.h	\
+	./gen_files/RIC-ControlAction-Name.h	\
+	./gen_files/E2SM-KPM-EventTriggerDefinition.h	\
+	./gen_files/E2SM-KPM-EventTriggerDefinition-Format1.h	\
+	./gen_files/Trigger-ConditionIE-Item.h	\
+	./gen_files/RT-Period-IE.h	\
+	./gen_files/RANcallProcess-ID-string.h	\
+	./gen_files/PLMN-Identity.h	\
+	./gen_files/GlobalE2node-ID.h	\
+	./gen_files/GlobalE2node-en-gNB-ID.h	\
+	./gen_files/GlobalE2node-eNB-ID.h	\
+	./gen_files/GlobalE2node-gNB-ID.h	\
+	./gen_files/GlobalE2node-ng-eNB-ID.h	\
+	./gen_files/GlobalENB-ID.h	\
+	./gen_files/GlobalenGNB-ID.h	\
+	./gen_files/GlobalgNB-ID.h	\
+	./gen_files/GlobalngeNB-ID.h	\
+	./gen_files/GNB-ID-Choice.h	\
+	./gen_files/ENB-ID-Choice.h	\
+	./gen_files/ENB-ID.h	\
+	./gen_files/ENGNB-ID.h	\
+	./gen_files/GNB-CU-UP-ID.h	\
+	./gen_files/GNB-DU-ID.h
+
+ASN_MODULE_HDRS+=./gen_files/OPEN_TYPE.h
+ASN_MODULE_SRCS+=./gen_files/OPEN_TYPE.c
+ASN_MODULE_HDRS+=./gen_files/constr_CHOICE.h
+ASN_MODULE_HDRS+=./gen_files/BOOLEAN.h
+ASN_MODULE_SRCS+=./gen_files/BOOLEAN.c
+ASN_MODULE_HDRS+=./gen_files/INTEGER.h
+ASN_MODULE_SRCS+=./gen_files/INTEGER.c
+ASN_MODULE_HDRS+=./gen_files/NULL.h
+ASN_MODULE_SRCS+=./gen_files/NULL.c
+ASN_MODULE_HDRS+=./gen_files/NativeEnumerated.h
+ASN_MODULE_SRCS+=./gen_files/NativeEnumerated.c
+ASN_MODULE_HDRS+=./gen_files/NativeInteger.h
+ASN_MODULE_SRCS+=./gen_files/NativeInteger.c
+ASN_MODULE_HDRS+=./gen_files/NativeReal.h
+ASN_MODULE_SRCS+=./gen_files/NativeReal.c
+ASN_MODULE_HDRS+=./gen_files/REAL.h
+ASN_MODULE_HDRS+=./gen_files/PrintableString.h
+ASN_MODULE_SRCS+=./gen_files/PrintableString.c
+ASN_MODULE_HDRS+=./gen_files/OCTET_STRING.h
+ASN_MODULE_SRCS+=./gen_files/REAL.c
+ASN_MODULE_HDRS+=./gen_files/asn_SEQUENCE_OF.h
+ASN_MODULE_SRCS+=./gen_files/asn_SEQUENCE_OF.c
+ASN_MODULE_HDRS+=./gen_files/asn_SET_OF.h
+ASN_MODULE_SRCS+=./gen_files/asn_SET_OF.c
+ASN_MODULE_SRCS+=./gen_files/constr_CHOICE.c
+ASN_MODULE_HDRS+=./gen_files/constr_SEQUENCE.h
+ASN_MODULE_SRCS+=./gen_files/constr_SEQUENCE.c
+ASN_MODULE_HDRS+=./gen_files/constr_SEQUENCE_OF.h
+ASN_MODULE_SRCS+=./gen_files/constr_SEQUENCE_OF.c
+ASN_MODULE_HDRS+=./gen_files/constr_SET_OF.h
+ASN_MODULE_SRCS+=./gen_files/constr_SET_OF.c
+ASN_MODULE_HDRS+=./gen_files/asn_application.h
+ASN_MODULE_SRCS+=./gen_files/asn_application.c
+ASN_MODULE_HDRS+=./gen_files/asn_ioc.h
+ASN_MODULE_HDRS+=./gen_files/asn_system.h
+ASN_MODULE_HDRS+=./gen_files/asn_codecs.h
+ASN_MODULE_HDRS+=./gen_files/asn_internal.h
+ASN_MODULE_SRCS+=./gen_files/asn_internal.c
+ASN_MODULE_HDRS+=./gen_files/asn_random_fill.h
+ASN_MODULE_SRCS+=./gen_files/asn_random_fill.c
+ASN_MODULE_HDRS+=./gen_files/asn_bit_data.h
+ASN_MODULE_SRCS+=./gen_files/asn_bit_data.c
+ASN_MODULE_SRCS+=./gen_files/OCTET_STRING.c
+ASN_MODULE_HDRS+=./gen_files/BIT_STRING.h
+ASN_MODULE_SRCS+=./gen_files/BIT_STRING.c
+ASN_MODULE_SRCS+=./gen_files/asn_codecs_prim.c
+ASN_MODULE_HDRS+=./gen_files/asn_codecs_prim.h
+ASN_MODULE_HDRS+=./gen_files/ber_tlv_length.h
+ASN_MODULE_SRCS+=./gen_files/ber_tlv_length.c
+ASN_MODULE_HDRS+=./gen_files/ber_tlv_tag.h
+ASN_MODULE_SRCS+=./gen_files/ber_tlv_tag.c
+ASN_MODULE_HDRS+=./gen_files/ber_decoder.h
+ASN_MODULE_SRCS+=./gen_files/ber_decoder.c
+ASN_MODULE_HDRS+=./gen_files/der_encoder.h
+ASN_MODULE_SRCS+=./gen_files/der_encoder.c
+ASN_MODULE_HDRS+=./gen_files/constr_TYPE.h
+ASN_MODULE_SRCS+=./gen_files/constr_TYPE.c
+ASN_MODULE_HDRS+=./gen_files/constraints.h
+ASN_MODULE_SRCS+=./gen_files/constraints.c
+ASN_MODULE_HDRS+=./gen_files/xer_support.h
+ASN_MODULE_SRCS+=./gen_files/xer_support.c
+ASN_MODULE_HDRS+=./gen_files/xer_decoder.h
+ASN_MODULE_SRCS+=./gen_files/xer_decoder.c
+ASN_MODULE_HDRS+=./gen_files/xer_encoder.h
+ASN_MODULE_SRCS+=./gen_files/xer_encoder.c
+ASN_MODULE_HDRS+=./gen_files/per_support.h
+ASN_MODULE_SRCS+=./gen_files/per_support.c
+ASN_MODULE_HDRS+=./gen_files/per_decoder.h
+ASN_MODULE_SRCS+=./gen_files/per_decoder.c
+ASN_MODULE_HDRS+=./gen_files/per_encoder.h
+ASN_MODULE_SRCS+=./gen_files/per_encoder.c
+ASN_MODULE_HDRS+=./gen_files/per_opentype.h
+ASN_MODULE_SRCS+=./gen_files/per_opentype.c
+ASN_MODULE_HDRS+=./gen_files/oer_decoder.h
+ASN_MODULE_HDRS+=./gen_files/oer_encoder.h
+ASN_MODULE_HDRS+=./gen_files/oer_support.h
+ASN_MODULE_SRCS+=./gen_files/oer_decoder.c
+ASN_MODULE_SRCS+=./gen_files/oer_encoder.c
+ASN_MODULE_SRCS+=./gen_files/oer_support.c
+ASN_MODULE_SRCS+=./gen_files/OPEN_TYPE_oer.c
+ASN_MODULE_SRCS+=./gen_files/INTEGER_oer.c
+ASN_MODULE_SRCS+=./gen_files/BIT_STRING_oer.c
+ASN_MODULE_SRCS+=./gen_files/OCTET_STRING_oer.c
+ASN_MODULE_SRCS+=./gen_files/NativeInteger_oer.c
+ASN_MODULE_SRCS+=./gen_files/NativeEnumerated_oer.c
+ASN_MODULE_SRCS+=./gen_files/constr_CHOICE_oer.c
+ASN_MODULE_SRCS+=./gen_files/constr_SEQUENCE_oer.c
+ASN_MODULE_SRCS+=./gen_files/constr_SET_OF_oer.c
+
+ASN_MODULE_CFLAGS=
+
+lib_LTLIBRARIES+=libasncodec.la
+libasncodec_la_SOURCES=$(ASN_MODULE_SRCS) $(ASN_MODULE_HDRS)
+libasncodec_la_CPPFLAGS=-I$(top_srcdir)/./gen_files/
+libasncodec_la_CFLAGS=$(ASN_MODULE_CFLAGS)
+libasncodec_la_LDFLAGS=-lm
diff --git a/e2sm/headers/MatchingUEidList.h b/e2sm/headers/MatchingUEidList.h
new file mode 100644
index 0000000..b03c075
--- /dev/null
+++ b/e2sm/headers/MatchingUEidList.h
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * 	found in "E2SM-KPM-v02.00.03.asn"
+ * 	`asn1c -pdu=auto -fno-include-deps -fcompound-names -findirect-choice -gen-PER -gen-OER -no-gen-example -D E2SM-KPM-v02.00.03`
+ */
+
+#ifndef	_MatchingUEidList_H_
+#define	_MatchingUEidList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MatchingUEidItem;
+
+/* MatchingUEidList */
+typedef struct MatchingUEidList {
+	A_SEQUENCE_OF(struct MatchingUEidItem) list;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} MatchingUEidList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MatchingUEidList;
+extern asn_SET_OF_specifics_t asn_SPC_MatchingUEidList_specs_1;
+extern asn_TYPE_member_t asn_MBR_MatchingUEidList_1[1];
+extern asn_per_constraints_t asn_PER_type_MatchingUEidList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _MatchingUEidList_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/MeasQuantityResults.h b/e2sm/headers/MeasQuantityResults.h
new file mode 100644
index 0000000..a597b72
--- /dev/null
+++ b/e2sm/headers/MeasQuantityResults.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_MeasQuantityResults_H_
+#define	_MeasQuantityResults_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RSRP-Range.h"
+#include "RSRQ-Range.h"
+#include "SINR-Range.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MeasQuantityResults */
+typedef struct MeasQuantityResults {
+	RSRP_Range_t	*rsrp;	/* OPTIONAL */
+	RSRQ_Range_t	*rsrq;	/* OPTIONAL */
+	SINR_Range_t	*sinr;	/* OPTIONAL */
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} MeasQuantityResults_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasQuantityResults;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasQuantityResults_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasQuantityResults_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _MeasQuantityResults_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/MeasQuantityResultsEUTRA.h b/e2sm/headers/MeasQuantityResultsEUTRA.h
new file mode 100644
index 0000000..1be9197
--- /dev/null
+++ b/e2sm/headers/MeasQuantityResultsEUTRA.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_MeasQuantityResultsEUTRA_H_
+#define	_MeasQuantityResultsEUTRA_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RSRP-RangeEUTRA.h"
+#include "RSRQ-RangeEUTRA.h"
+#include "SINR-RangeEUTRA.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MeasQuantityResultsEUTRA */
+typedef struct MeasQuantityResultsEUTRA {
+	RSRP_RangeEUTRA_t	*rsrp;	/* OPTIONAL */
+	RSRQ_RangeEUTRA_t	*rsrq;	/* OPTIONAL */
+	SINR_RangeEUTRA_t	*sinr;	/* OPTIONAL */
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} MeasQuantityResultsEUTRA_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasQuantityResultsEUTRA;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasQuantityResultsEUTRA_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasQuantityResultsEUTRA_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _MeasQuantityResultsEUTRA_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/MeasResultEUTRA.h b/e2sm/headers/MeasResultEUTRA.h
new file mode 100644
index 0000000..61e8b9a
--- /dev/null
+++ b/e2sm/headers/MeasResultEUTRA.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_MeasResultEUTRA_H_
+#define	_MeasResultEUTRA_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PhysCellId.h"
+#include "MeasQuantityResultsEUTRA.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MeasResultEUTRA */
+typedef struct MeasResultEUTRA {
+	PhysCellId_t	 eutra_PhysCellId;
+	MeasQuantityResultsEUTRA_t	 measResult;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} MeasResultEUTRA_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasResultEUTRA;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasResultEUTRA_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasResultEUTRA_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _MeasResultEUTRA_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/MeasResultListEUTRA.h b/e2sm/headers/MeasResultListEUTRA.h
new file mode 100644
index 0000000..5f9d8e6
--- /dev/null
+++ b/e2sm/headers/MeasResultListEUTRA.h
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_MeasResultListEUTRA_H_
+#define	_MeasResultListEUTRA_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MeasResultEUTRA;
+
+/* MeasResultListEUTRA */
+typedef struct MeasResultListEUTRA {
+	A_SEQUENCE_OF(struct MeasResultEUTRA) list;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} MeasResultListEUTRA_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasResultListEUTRA;
+extern asn_SET_OF_specifics_t asn_SPC_MeasResultListEUTRA_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasResultListEUTRA_1[1];
+extern asn_per_constraints_t asn_PER_type_MeasResultListEUTRA_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _MeasResultListEUTRA_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/MeasResultListNR.h b/e2sm/headers/MeasResultListNR.h
new file mode 100644
index 0000000..3617658
--- /dev/null
+++ b/e2sm/headers/MeasResultListNR.h
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_MeasResultListNR_H_
+#define	_MeasResultListNR_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MeasResultNR;
+
+/* MeasResultListNR */
+typedef struct MeasResultListNR {
+	A_SEQUENCE_OF(struct MeasResultNR) list;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} MeasResultListNR_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasResultListNR;
+extern asn_SET_OF_specifics_t asn_SPC_MeasResultListNR_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasResultListNR_1[1];
+extern asn_per_constraints_t asn_PER_type_MeasResultListNR_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _MeasResultListNR_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/MeasResultNR.h b/e2sm/headers/MeasResultNR.h
new file mode 100644
index 0000000..8f9e1d4
--- /dev/null
+++ b/e2sm/headers/MeasResultNR.h
@@ -0,0 +1,68 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_MeasResultNR_H_
+#define	_MeasResultNR_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PhysCellId.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MeasQuantityResults;
+struct ResultsPerSSB_IndexList;
+struct ResultsPerCSI_RS_IndexList;
+
+/* MeasResultNR */
+typedef struct MeasResultNR {
+	PhysCellId_t	*physCellId;	/* OPTIONAL */
+	struct MeasResultNR__measResult {
+		struct MeasResultNR__measResult__cellResults {
+			struct MeasQuantityResults	*resultsSSB_Cell;	/* OPTIONAL */
+			struct MeasQuantityResults	*resultsCSI_RS_Cell;	/* OPTIONAL */
+			
+			/* Context for parsing across buffer boundaries */
+			asn_struct_ctx_t _asn_ctx;
+		} cellResults;
+		struct MeasResultNR__measResult__rsIndexResults {
+			struct ResultsPerSSB_IndexList	*resultsSSB_Indexes;	/* OPTIONAL */
+			struct ResultsPerCSI_RS_IndexList	*resultsCSI_RS_Indexes;	/* OPTIONAL */
+			
+			/* Context for parsing across buffer boundaries */
+			asn_struct_ctx_t _asn_ctx;
+		} *rsIndexResults;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} measResult;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} MeasResultNR_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasResultNR;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasResultNR_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasResultNR_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _MeasResultNR_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/MeasResultNeighCells.h b/e2sm/headers/MeasResultNeighCells.h
new file mode 100644
index 0000000..f841bb5
--- /dev/null
+++ b/e2sm/headers/MeasResultNeighCells.h
@@ -0,0 +1,61 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_MeasResultNeighCells_H_
+#define	_MeasResultNeighCells_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasResultNeighCells_PR {
+	MeasResultNeighCells_PR_NOTHING,	/* No components present */
+	MeasResultNeighCells_PR_measResultListNR,
+	MeasResultNeighCells_PR_measResultListEUTRA
+	/* Extensions may appear below */
+	
+} MeasResultNeighCells_PR;
+
+/* Forward declarations */
+struct MeasResultListNR;
+struct MeasResultListEUTRA;
+
+/* MeasResultNeighCells */
+typedef struct MeasResultNeighCells {
+	MeasResultNeighCells_PR present;
+	union MeasResultNeighCells_u {
+		struct MeasResultListNR	*measResultListNR;
+		struct MeasResultListEUTRA	*measResultListEUTRA;
+		/*
+		 * This type is extensible,
+		 * possible extensions are below.
+		 */
+	} choice;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} MeasResultNeighCells_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasResultNeighCells;
+extern asn_CHOICE_specifics_t asn_SPC_MeasResultNeighCells_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasResultNeighCells_1[2];
+extern asn_per_constraints_t asn_PER_type_MeasResultNeighCells_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _MeasResultNeighCells_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/MeasResultPCell.h b/e2sm/headers/MeasResultPCell.h
new file mode 100644
index 0000000..ad0fb7e
--- /dev/null
+++ b/e2sm/headers/MeasResultPCell.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_MeasResultPCell_H_
+#define	_MeasResultPCell_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PhysCellId.h"
+#include "RSRP-Range.h"
+#include "RSRQ-Range.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MeasResultPCell */
+typedef struct MeasResultPCell {
+	PhysCellId_t	 eutra_PhysCellId;
+	RSRP_Range_t	 rsrpResult;
+	RSRQ_Range_t	 rsrqResult;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} MeasResultPCell_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasResultPCell;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasResultPCell_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasResultPCell_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _MeasResultPCell_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/MeasResultServMO.h b/e2sm/headers/MeasResultServMO.h
new file mode 100644
index 0000000..67e3676
--- /dev/null
+++ b/e2sm/headers/MeasResultServMO.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_MeasResultServMO_H_
+#define	_MeasResultServMO_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ServCellIndex.h"
+#include "MeasResultNR.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MeasResultNR;
+
+/* MeasResultServMO */
+typedef struct MeasResultServMO {
+	ServCellIndex_t	 servCellId;
+	MeasResultNR_t	 measResultServingCell;
+	struct MeasResultNR	*measResultBestNeighCell;	/* OPTIONAL */
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} MeasResultServMO_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasResultServMO;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasResultServMO_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasResultServMO_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _MeasResultServMO_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/MeasResultServMOList.h b/e2sm/headers/MeasResultServMOList.h
new file mode 100644
index 0000000..422db0f
--- /dev/null
+++ b/e2sm/headers/MeasResultServMOList.h
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_MeasResultServMOList_H_
+#define	_MeasResultServMOList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MeasResultServMO;
+
+/* MeasResultServMOList */
+typedef struct MeasResultServMOList {
+	A_SEQUENCE_OF(struct MeasResultServMO) list;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} MeasResultServMOList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasResultServMOList;
+extern asn_SET_OF_specifics_t asn_SPC_MeasResultServMOList_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasResultServMOList_1[1];
+extern asn_per_constraints_t asn_PER_type_MeasResultServMOList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _MeasResultServMOList_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/MeasurementCondUEidItem.h b/e2sm/headers/MeasurementCondUEidItem.h
new file mode 100644
index 0000000..e49d2b9
--- /dev/null
+++ b/e2sm/headers/MeasurementCondUEidItem.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * 	found in "E2SM-KPM-v02.00.03.asn"
+ * 	`asn1c -pdu=auto -fno-include-deps -fcompound-names -findirect-choice -gen-PER -gen-OER -no-gen-example -D E2SM-KPM-v02.00.03`
+ */
+
+#ifndef	_MeasurementCondUEidItem_H_
+#define	_MeasurementCondUEidItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasurementType.h"
+#include "MatchingCondList.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MatchingUEidList;
+
+/* MeasurementCondUEidItem */
+typedef struct MeasurementCondUEidItem {
+	MeasurementType_t	 measType;
+	MatchingCondList_t	 matchingCond;
+	struct MatchingUEidList	*matchingUEidList;	/* OPTIONAL */
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} MeasurementCondUEidItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementCondUEidItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementCondUEidItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementCondUEidItem_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _MeasurementCondUEidItem_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/MeasurementCondUEidList.h b/e2sm/headers/MeasurementCondUEidList.h
new file mode 100644
index 0000000..88768c1
--- /dev/null
+++ b/e2sm/headers/MeasurementCondUEidList.h
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * 	found in "E2SM-KPM-v02.00.03.asn"
+ * 	`asn1c -pdu=auto -fno-include-deps -fcompound-names -findirect-choice -gen-PER -gen-OER -no-gen-example -D E2SM-KPM-v02.00.03`
+ */
+
+#ifndef	_MeasurementCondUEidList_H_
+#define	_MeasurementCondUEidList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MeasurementCondUEidItem;
+
+/* MeasurementCondUEidList */
+typedef struct MeasurementCondUEidList {
+	A_SEQUENCE_OF(struct MeasurementCondUEidItem) list;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} MeasurementCondUEidList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementCondUEidList;
+extern asn_SET_OF_specifics_t asn_SPC_MeasurementCondUEidList_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementCondUEidList_1[1];
+extern asn_per_constraints_t asn_PER_type_MeasurementCondUEidList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _MeasurementCondUEidList_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/MeasurementInfoItem.h b/e2sm/headers/MeasurementInfoItem.h
new file mode 100644
index 0000000..171c1c5
--- /dev/null
+++ b/e2sm/headers/MeasurementInfoItem.h
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_MeasurementInfoItem_H_
+#define	_MeasurementInfoItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasurementType.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MeasurementInfoItem */
+typedef struct MeasurementInfoItem {
+	MeasurementType_t	 measType;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} MeasurementInfoItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementInfoItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementInfoItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementInfoItem_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _MeasurementInfoItem_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/MeasurementInfoList.h b/e2sm/headers/MeasurementInfoList.h
new file mode 100644
index 0000000..f58fabe
--- /dev/null
+++ b/e2sm/headers/MeasurementInfoList.h
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_MeasurementInfoList_H_
+#define	_MeasurementInfoList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MeasurementInfoItem;
+
+/* MeasurementInfoList */
+typedef struct MeasurementInfoList {
+	A_SEQUENCE_OF(struct MeasurementInfoItem) list;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} MeasurementInfoList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementInfoList;
+extern asn_SET_OF_specifics_t asn_SPC_MeasurementInfoList_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementInfoList_1[1];
+extern asn_per_constraints_t asn_PER_type_MeasurementInfoList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _MeasurementInfoList_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/MeasurementType.h b/e2sm/headers/MeasurementType.h
new file mode 100644
index 0000000..89b0266
--- /dev/null
+++ b/e2sm/headers/MeasurementType.h
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_MeasurementType_H_
+#define	_MeasurementType_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasurementTypeName.h"
+#include "MeasurementTypeID.h"
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasurementType_PR {
+	MeasurementType_PR_NOTHING,	/* No components present */
+	MeasurementType_PR_measName,
+	MeasurementType_PR_measID
+	/* Extensions may appear below */
+	
+} MeasurementType_PR;
+
+/* MeasurementType */
+typedef struct MeasurementType {
+	MeasurementType_PR present;
+	union MeasurementType_u {
+		MeasurementTypeName_t	 measName;
+		MeasurementTypeID_t	 measID;
+		/*
+		 * This type is extensible,
+		 * possible extensions are below.
+		 */
+	} choice;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} MeasurementType_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementType;
+extern asn_CHOICE_specifics_t asn_SPC_MeasurementType_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementType_1[2];
+extern asn_per_constraints_t asn_PER_type_MeasurementType_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _MeasurementType_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/MeasurementTypeID.h b/e2sm/headers/MeasurementTypeID.h
new file mode 100644
index 0000000..bec93a3
--- /dev/null
+++ b/e2sm/headers/MeasurementTypeID.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_MeasurementTypeID_H_
+#define	_MeasurementTypeID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MeasurementTypeID */
+typedef long	 MeasurementTypeID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_MeasurementTypeID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementTypeID;
+asn_struct_free_f MeasurementTypeID_free;
+asn_struct_print_f MeasurementTypeID_print;
+asn_constr_check_f MeasurementTypeID_constraint;
+ber_type_decoder_f MeasurementTypeID_decode_ber;
+der_type_encoder_f MeasurementTypeID_encode_der;
+xer_type_decoder_f MeasurementTypeID_decode_xer;
+xer_type_encoder_f MeasurementTypeID_encode_xer;
+oer_type_decoder_f MeasurementTypeID_decode_oer;
+oer_type_encoder_f MeasurementTypeID_encode_oer;
+per_type_decoder_f MeasurementTypeID_decode_uper;
+per_type_encoder_f MeasurementTypeID_encode_uper;
+per_type_decoder_f MeasurementTypeID_decode_aper;
+per_type_encoder_f MeasurementTypeID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _MeasurementTypeID_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/MeasurementTypeName.h b/e2sm/headers/MeasurementTypeName.h
new file mode 100644
index 0000000..0d21344
--- /dev/null
+++ b/e2sm/headers/MeasurementTypeName.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_MeasurementTypeName_H_
+#define	_MeasurementTypeName_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <PrintableString.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MeasurementTypeName */
+typedef PrintableString_t	 MeasurementTypeName_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_MeasurementTypeName_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementTypeName;
+asn_struct_free_f MeasurementTypeName_free;
+asn_struct_print_f MeasurementTypeName_print;
+asn_constr_check_f MeasurementTypeName_constraint;
+ber_type_decoder_f MeasurementTypeName_decode_ber;
+der_type_encoder_f MeasurementTypeName_encode_der;
+xer_type_decoder_f MeasurementTypeName_decode_xer;
+xer_type_encoder_f MeasurementTypeName_encode_xer;
+oer_type_decoder_f MeasurementTypeName_decode_oer;
+oer_type_encoder_f MeasurementTypeName_encode_oer;
+per_type_decoder_f MeasurementTypeName_decode_uper;
+per_type_encoder_f MeasurementTypeName_encode_uper;
+per_type_decoder_f MeasurementTypeName_decode_aper;
+per_type_encoder_f MeasurementTypeName_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _MeasurementTypeName_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/MeasurementValue.h b/e2sm/headers/MeasurementValue.h
new file mode 100644
index 0000000..f1d874a
--- /dev/null
+++ b/e2sm/headers/MeasurementValue.h
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_MeasurementValue_H_
+#define	_MeasurementValue_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <NativeReal.h>
+#include <NULL.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasurementValue_PR {
+	MeasurementValue_PR_NOTHING,	/* No components present */
+	MeasurementValue_PR_valueInt,
+	MeasurementValue_PR_valueReal,
+	MeasurementValue_PR_noValue,
+	MeasurementValue_PR_valueRRC
+	/* Extensions may appear below */
+	
+} MeasurementValue_PR;
+
+/* Forward declarations */
+struct L3_RRC_Measurements;
+
+/* MeasurementValue */
+typedef struct MeasurementValue {
+	MeasurementValue_PR present;
+	union MeasurementValue_u {
+		long	 valueInt;
+		double	 valueReal;
+		NULL_t	 noValue;
+		struct L3_RRC_Measurements	*valueRRC;
+		/*
+		 * This type is extensible,
+		 * possible extensions are below.
+		 */
+	} choice;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} MeasurementValue_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementValue;
+extern asn_CHOICE_specifics_t asn_SPC_MeasurementValue_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementValue_1[4];
+extern asn_per_constraints_t asn_PER_type_MeasurementValue_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _MeasurementValue_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/NI-Type.h b/e2sm/headers/NI-Type.h
new file mode 100644
index 0000000..f57d977
--- /dev/null
+++ b/e2sm/headers/NI-Type.h
@@ -0,0 +1,57 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_NI_Type_H_
+#define	_NI_Type_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum NI_Type {
+	NI_Type_x2_u	= 0,
+	NI_Type_xn_u	= 1,
+	NI_Type_f1_u	= 2
+	/*
+	 * Enumeration is extensible
+	 */
+} e_NI_Type;
+
+/* NI-Type */
+typedef long	 NI_Type_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_NI_Type_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_NI_Type;
+extern const asn_INTEGER_specifics_t asn_SPC_NI_Type_specs_1;
+asn_struct_free_f NI_Type_free;
+asn_struct_print_f NI_Type_print;
+asn_constr_check_f NI_Type_constraint;
+ber_type_decoder_f NI_Type_decode_ber;
+der_type_encoder_f NI_Type_encode_der;
+xer_type_decoder_f NI_Type_decode_xer;
+xer_type_encoder_f NI_Type_encode_xer;
+oer_type_decoder_f NI_Type_decode_oer;
+oer_type_encoder_f NI_Type_encode_oer;
+per_type_decoder_f NI_Type_decode_uper;
+per_type_encoder_f NI_Type_encode_uper;
+per_type_decoder_f NI_Type_decode_aper;
+per_type_encoder_f NI_Type_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _NI_Type_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/NRCGI.h b/e2sm/headers/NRCGI.h
new file mode 100644
index 0000000..11239c7
--- /dev/null
+++ b/e2sm/headers/NRCGI.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_NRCGI_H_
+#define	_NRCGI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PLMN-Identity.h"
+#include "NRCellIdentity.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* NRCGI */
+typedef struct NRCGI {
+	PLMN_Identity_t	 pLMN_Identity;
+	NRCellIdentity_t	 nRCellIdentity;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} NRCGI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_NRCGI;
+extern asn_SEQUENCE_specifics_t asn_SPC_NRCGI_specs_1;
+extern asn_TYPE_member_t asn_MBR_NRCGI_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _NRCGI_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/NRCellIdentity.h b/e2sm/headers/NRCellIdentity.h
new file mode 100644
index 0000000..fc489c7
--- /dev/null
+++ b/e2sm/headers/NRCellIdentity.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_NRCellIdentity_H_
+#define	_NRCellIdentity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* NRCellIdentity */
+typedef BIT_STRING_t	 NRCellIdentity_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_NRCellIdentity_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_NRCellIdentity;
+asn_struct_free_f NRCellIdentity_free;
+asn_struct_print_f NRCellIdentity_print;
+asn_constr_check_f NRCellIdentity_constraint;
+ber_type_decoder_f NRCellIdentity_decode_ber;
+der_type_encoder_f NRCellIdentity_encode_der;
+xer_type_decoder_f NRCellIdentity_decode_xer;
+xer_type_encoder_f NRCellIdentity_encode_xer;
+oer_type_decoder_f NRCellIdentity_decode_oer;
+oer_type_encoder_f NRCellIdentity_encode_oer;
+per_type_decoder_f NRCellIdentity_decode_uper;
+per_type_encoder_f NRCellIdentity_encode_uper;
+per_type_decoder_f NRCellIdentity_decode_aper;
+per_type_encoder_f NRCellIdentity_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _NRCellIdentity_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/NULL.h b/e2sm/headers/NULL.h
new file mode 100644
index 0000000..802d12c
--- /dev/null
+++ b/e2sm/headers/NULL.h
@@ -0,0 +1,45 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	ASN_TYPE_NULL_H
+#define	ASN_TYPE_NULL_H
+
+#include <asn_application.h>
+#include <BOOLEAN.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * The value of the NULL type is meaningless: see BOOLEAN if you want to
+ * carry true/false semantics.
+ */
+typedef int NULL_t;
+
+extern asn_TYPE_descriptor_t asn_DEF_NULL;
+extern asn_TYPE_operation_t asn_OP_NULL;
+
+asn_struct_print_f NULL_print;
+asn_struct_compare_f NULL_compare;
+der_type_encoder_f NULL_encode_der;
+xer_type_decoder_f NULL_decode_xer;
+xer_type_encoder_f NULL_encode_xer;
+oer_type_decoder_f NULL_decode_oer;
+oer_type_encoder_f NULL_encode_oer;
+per_type_decoder_f NULL_decode_uper;
+per_type_encoder_f NULL_encode_uper;
+per_type_decoder_f NULL_decode_aper;
+per_type_encoder_f NULL_encode_aper;
+asn_random_fill_f  NULL_random_fill;
+
+#define NULL_free	BOOLEAN_free
+#define NULL_decode_ber	BOOLEAN_decode_ber
+#define NULL_constraint	asn_generic_no_constraint
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* NULL_H */
diff --git a/e2sm/headers/NativeEnumerated.h b/e2sm/headers/NativeEnumerated.h
new file mode 100644
index 0000000..459f0e6
--- /dev/null
+++ b/e2sm/headers/NativeEnumerated.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2004-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+/*
+ * This type differs from the standard ENUMERATED in that it is modelled using
+ * the fixed machine type (long, int, short), so it can hold only values of
+ * limited length. There is no type (i.e., NativeEnumerated_t, any integer type
+ * will do).
+ * This type may be used when integer range is limited by subtype constraints.
+ */
+#ifndef	_NativeEnumerated_H_
+#define	_NativeEnumerated_H_
+
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern asn_TYPE_descriptor_t asn_DEF_NativeEnumerated;
+extern asn_TYPE_operation_t asn_OP_NativeEnumerated;
+
+xer_type_encoder_f NativeEnumerated_encode_xer;
+oer_type_decoder_f NativeEnumerated_decode_oer;
+oer_type_encoder_f NativeEnumerated_encode_oer;
+per_type_decoder_f NativeEnumerated_decode_uper;
+per_type_encoder_f NativeEnumerated_encode_uper;
+per_type_decoder_f NativeEnumerated_decode_aper;
+per_type_encoder_f NativeEnumerated_encode_aper;
+
+#define NativeEnumerated_free       NativeInteger_free
+#define NativeEnumerated_print      NativeInteger_print
+#define NativeEnumerated_compare    NativeInteger_compare
+#define NativeEnumerated_random_fill NativeInteger_random_fill
+#define NativeEnumerated_constraint asn_generic_no_constraint
+#define NativeEnumerated_decode_ber NativeInteger_decode_ber
+#define NativeEnumerated_encode_der NativeInteger_encode_der
+#define NativeEnumerated_decode_xer NativeInteger_decode_xer
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _NativeEnumerated_H_ */
diff --git a/e2sm/headers/NativeInteger.h b/e2sm/headers/NativeInteger.h
new file mode 100644
index 0000000..c74406a
--- /dev/null
+++ b/e2sm/headers/NativeInteger.h
@@ -0,0 +1,46 @@
+/*-
+ * Copyright (c) 2004-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+/*
+ * This type differs from the standard INTEGER in that it is modelled using
+ * the fixed machine type (long, int, short), so it can hold only values of
+ * limited length. There is no type (i.e., NativeInteger_t, any integer type
+ * will do).
+ * This type may be used when integer range is limited by subtype constraints.
+ */
+#ifndef	_NativeInteger_H_
+#define	_NativeInteger_H_
+
+#include <asn_application.h>
+#include <INTEGER.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern asn_TYPE_descriptor_t asn_DEF_NativeInteger;
+extern asn_TYPE_operation_t asn_OP_NativeInteger;
+
+asn_struct_free_f  NativeInteger_free;
+asn_struct_print_f NativeInteger_print;
+asn_struct_compare_f NativeInteger_compare;
+ber_type_decoder_f NativeInteger_decode_ber;
+der_type_encoder_f NativeInteger_encode_der;
+xer_type_decoder_f NativeInteger_decode_xer;
+xer_type_encoder_f NativeInteger_encode_xer;
+oer_type_decoder_f NativeInteger_decode_oer;
+oer_type_encoder_f NativeInteger_encode_oer;
+per_type_decoder_f NativeInteger_decode_uper;
+per_type_encoder_f NativeInteger_encode_uper;
+per_type_decoder_f NativeInteger_decode_aper;
+per_type_encoder_f NativeInteger_encode_aper;
+asn_random_fill_f  NativeInteger_random_fill;
+
+#define NativeInteger_constraint  asn_generic_no_constraint
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _NativeInteger_H_ */
diff --git a/e2sm/headers/NativeReal.h b/e2sm/headers/NativeReal.h
new file mode 100644
index 0000000..1bfdc96
--- /dev/null
+++ b/e2sm/headers/NativeReal.h
@@ -0,0 +1,48 @@
+/*-
+ * Copyright (c) 2004-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+/*
+ * This type differs from the standard REAL in that it is modelled using
+ * the fixed machine type (double), so it can hold only values of
+ * limited precision. There is no explicit type (i.e., NativeReal_t).
+ * Use of this type is normally enabled by -fnative-types.
+ */
+#ifndef	ASN_TYPE_NativeReal_H
+#define	ASN_TYPE_NativeReal_H
+
+#include <asn_application.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct asn_NativeReal_specifics_s {
+    unsigned float_size; /* sizeof(float) or sizeof(double) */
+} asn_NativeReal_specifics_t;
+
+extern asn_TYPE_descriptor_t asn_DEF_NativeReal;
+extern asn_TYPE_operation_t asn_OP_NativeReal;
+
+asn_struct_free_f  NativeReal_free;
+asn_struct_print_f NativeReal_print;
+asn_struct_compare_f NativeReal_compare;
+ber_type_decoder_f NativeReal_decode_ber;
+der_type_encoder_f NativeReal_encode_der;
+per_type_decoder_f NativeReal_decode_uper;
+per_type_encoder_f NativeReal_encode_uper;
+per_type_decoder_f NativeReal_decode_aper;
+per_type_encoder_f NativeReal_encode_aper;
+oer_type_decoder_f NativeReal_decode_oer;
+oer_type_encoder_f NativeReal_encode_oer;
+xer_type_decoder_f NativeReal_decode_xer;
+xer_type_encoder_f NativeReal_encode_xer;
+asn_random_fill_f  NativeReal_random_fill;
+
+#define NativeReal_constraint  asn_generic_no_constraint
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* ASN_TYPE_NativeReal_H */
diff --git a/e2sm/headers/OCTET_STRING.h b/e2sm/headers/OCTET_STRING.h
new file mode 100644
index 0000000..c2f8bae
--- /dev/null
+++ b/e2sm/headers/OCTET_STRING.h
@@ -0,0 +1,102 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_OCTET_STRING_H_
+#define	_OCTET_STRING_H_
+
+#include <asn_application.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct OCTET_STRING {
+	uint8_t *buf;	/* Buffer with consecutive OCTET_STRING bits */
+	size_t size;	/* Size of the buffer */
+
+	asn_struct_ctx_t _asn_ctx;	/* Parsing across buffer boundaries */
+} OCTET_STRING_t;
+
+extern asn_TYPE_descriptor_t asn_DEF_OCTET_STRING;
+extern asn_TYPE_operation_t asn_OP_OCTET_STRING;
+
+asn_struct_free_f OCTET_STRING_free;
+asn_struct_print_f OCTET_STRING_print;
+asn_struct_print_f OCTET_STRING_print_utf8;
+asn_struct_compare_f OCTET_STRING_compare;
+ber_type_decoder_f OCTET_STRING_decode_ber;
+der_type_encoder_f OCTET_STRING_encode_der;
+xer_type_decoder_f OCTET_STRING_decode_xer_hex;		/* Hexadecimal */
+xer_type_decoder_f OCTET_STRING_decode_xer_binary;	/* 01010111010 */
+xer_type_decoder_f OCTET_STRING_decode_xer_utf8;	/* ASCII/UTF-8 */
+xer_type_encoder_f OCTET_STRING_encode_xer;
+xer_type_encoder_f OCTET_STRING_encode_xer_utf8;
+oer_type_decoder_f OCTET_STRING_decode_oer;
+oer_type_encoder_f OCTET_STRING_encode_oer;
+per_type_decoder_f OCTET_STRING_decode_uper;
+per_type_encoder_f OCTET_STRING_encode_uper;
+per_type_decoder_f OCTET_STRING_decode_aper;
+per_type_encoder_f OCTET_STRING_encode_aper;
+asn_random_fill_f  OCTET_STRING_random_fill;
+
+#define OCTET_STRING_constraint  asn_generic_no_constraint
+#define OCTET_STRING_decode_xer  OCTET_STRING_decode_xer_hex
+
+/******************************
+ * Handy conversion routines. *
+ ******************************/
+
+/*
+ * This function clears the previous value of the OCTET STRING (if any)
+ * and then allocates a new memory with the specified content (str/size).
+ * If size = -1, the size of the original string will be determined
+ * using strlen(str).
+ * If str equals to NULL, the function will silently clear the
+ * current contents of the OCTET STRING.
+ * Returns 0 if it was possible to perform operation, -1 otherwise.
+ */
+int OCTET_STRING_fromBuf(OCTET_STRING_t *s, const char *str, int size);
+
+/* Handy conversion from the C string into the OCTET STRING. */
+#define	OCTET_STRING_fromString(s, str)	OCTET_STRING_fromBuf(s, str, -1)
+
+/*
+ * Allocate and fill the new OCTET STRING and return a pointer to the newly
+ * allocated object. NULL is permitted in str: the function will just allocate
+ * empty OCTET STRING.
+ */
+OCTET_STRING_t *OCTET_STRING_new_fromBuf(const asn_TYPE_descriptor_t *td,
+                                         const char *str, int size);
+
+/****************************
+ * Internally useful stuff. *
+ ****************************/
+
+typedef struct asn_OCTET_STRING_specifics_s {
+    /*
+     * Target structure description.
+     */
+    unsigned struct_size;   /* Size of the structure */
+    unsigned ctx_offset;    /* Offset of the asn_struct_ctx_t member */
+
+    enum asn_OS_Subvariant {
+        ASN_OSUBV_ANY, /* The open type (ANY) */
+        ASN_OSUBV_BIT, /* BIT STRING */
+        ASN_OSUBV_STR, /* String types, not {BMP,Universal}String  */
+        ASN_OSUBV_U16, /* 16-bit character (BMPString) */
+        ASN_OSUBV_U32  /* 32-bit character (UniversalString) */
+    } subvariant;
+} asn_OCTET_STRING_specifics_t;
+
+extern asn_OCTET_STRING_specifics_t asn_SPC_OCTET_STRING_specs;
+
+size_t OCTET_STRING_random_length_constrained(
+    const asn_TYPE_descriptor_t *, const asn_encoding_constraints_t *,
+    size_t max_length);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _OCTET_STRING_H_ */
diff --git a/e2sm/headers/OCUCP-PF-Container.h b/e2sm/headers/OCUCP-PF-Container.h
new file mode 100644
index 0000000..5c1adfe
--- /dev/null
+++ b/e2sm/headers/OCUCP-PF-Container.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_OCUCP_PF_Container_H_
+#define	_OCUCP_PF_Container_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* OCUCP-PF-Container */
+typedef struct OCUCP_PF_Container {
+	struct OCUCP_PF_Container__cu_CP_Resource_Status {
+		long	*numberOfActive_UEs;	/* OPTIONAL */
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} cu_CP_Resource_Status;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} OCUCP_PF_Container_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_OCUCP_PF_Container;
+extern asn_SEQUENCE_specifics_t asn_SPC_OCUCP_PF_Container_specs_1;
+extern asn_TYPE_member_t asn_MBR_OCUCP_PF_Container_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _OCUCP_PF_Container_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/OCUUP-PF-Container.h b/e2sm/headers/OCUUP-PF-Container.h
new file mode 100644
index 0000000..c1fc638
--- /dev/null
+++ b/e2sm/headers/OCUUP-PF-Container.h
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_OCUUP_PF_Container_H_
+#define	_OCUUP_PF_Container_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct PF_ContainerListItem;
+
+/* OCUUP-PF-Container */
+typedef struct OCUUP_PF_Container {
+	struct OCUUP_PF_Container__pf_ContainerList {
+		A_SEQUENCE_OF(struct PF_ContainerListItem) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} pf_ContainerList;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} OCUUP_PF_Container_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_OCUUP_PF_Container;
+extern asn_SEQUENCE_specifics_t asn_SPC_OCUUP_PF_Container_specs_1;
+extern asn_TYPE_member_t asn_MBR_OCUUP_PF_Container_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _OCUUP_PF_Container_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/ODU-PF-Container.h b/e2sm/headers/ODU-PF-Container.h
new file mode 100644
index 0000000..c49a4f7
--- /dev/null
+++ b/e2sm/headers/ODU-PF-Container.h
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_ODU_PF_Container_H_
+#define	_ODU_PF_Container_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct CellResourceReportListItem;
+
+/* ODU-PF-Container */
+typedef struct ODU_PF_Container {
+	struct ODU_PF_Container__cellResourceReportList {
+		A_SEQUENCE_OF(struct CellResourceReportListItem) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} cellResourceReportList;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} ODU_PF_Container_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ODU_PF_Container;
+extern asn_SEQUENCE_specifics_t asn_SPC_ODU_PF_Container_specs_1;
+extern asn_TYPE_member_t asn_MBR_ODU_PF_Container_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _ODU_PF_Container_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/OPEN_TYPE.h b/e2sm/headers/OPEN_TYPE.h
new file mode 100644
index 0000000..b0d023c
--- /dev/null
+++ b/e2sm/headers/OPEN_TYPE.h
@@ -0,0 +1,77 @@
+/*-
+ * Copyright (c) 2017-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef ASN_OPEN_TYPE_H
+#define ASN_OPEN_TYPE_H
+
+#include <asn_application.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define OPEN_TYPE_free CHOICE_free
+#define OPEN_TYPE_print CHOICE_print
+#define OPEN_TYPE_compare CHOICE_compare
+#define OPEN_TYPE_constraint CHOICE_constraint
+#define OPEN_TYPE_decode_ber NULL
+#define OPEN_TYPE_encode_der CHOICE_encode_der
+#define OPEN_TYPE_decode_xer NULL
+#define OPEN_TYPE_encode_xer CHOICE_encode_xer
+#define OPEN_TYPE_decode_oer NULL
+#define OPEN_TYPE_encode_oer CHOICE_encode_oer
+#define OPEN_TYPE_decode_uper NULL
+#define OPEN_TYPE_decode_aper NULL
+
+extern asn_TYPE_operation_t asn_OP_OPEN_TYPE;
+
+/*
+ * Decode an Open Type which is potentially constraiend
+ * by the other members of the parent structure.
+ */
+asn_dec_rval_t OPEN_TYPE_ber_get(const asn_codec_ctx_t *opt_codec_ctx,
+                                 const asn_TYPE_descriptor_t *parent_type,
+                                 void *parent_structure,
+                                 const asn_TYPE_member_t *element,
+                                 const void *ptr, size_t size);
+
+asn_dec_rval_t OPEN_TYPE_xer_get(const asn_codec_ctx_t *opt_codec_ctx,
+                                 const asn_TYPE_descriptor_t *parent_type,
+                                 void *parent_structure,
+                                 const asn_TYPE_member_t *element,
+                                 const void *ptr, size_t size);
+
+asn_dec_rval_t OPEN_TYPE_oer_get(const asn_codec_ctx_t *opt_codec_ctx,
+                                 const asn_TYPE_descriptor_t *parent_type,
+                                 void *parent_structure,
+                                 asn_TYPE_member_t *element, const void *ptr,
+                                 size_t size);
+
+asn_dec_rval_t OPEN_TYPE_uper_get(const asn_codec_ctx_t *opt_codec_ctx,
+                                  const asn_TYPE_descriptor_t *parent_type,
+                                  void *parent_structure,
+                                  const asn_TYPE_member_t *element,
+                                  asn_per_data_t *pd);
+
+asn_dec_rval_t OPEN_TYPE_aper_get(const asn_codec_ctx_t *opt_codec_ctx,
+                                  const asn_TYPE_descriptor_t *parent_type,
+                                  void *parent_structure,
+                                  const asn_TYPE_member_t *element,
+                                  asn_per_data_t *pd);
+
+asn_enc_rval_t OPEN_TYPE_encode_uper(
+    const asn_TYPE_descriptor_t *type_descriptor,
+    const asn_per_constraints_t *constraints, const void *struct_ptr,
+    asn_per_outp_t *per_output);
+
+asn_enc_rval_t OPEN_TYPE_encode_aper(
+    const asn_TYPE_descriptor_t *type_descriptor,
+    const asn_per_constraints_t *constraints, const void *struct_ptr,
+    asn_per_outp_t *per_output);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* ASN_OPEN_TYPE_H */
diff --git a/e2sm/headers/PF-Container.h b/e2sm/headers/PF-Container.h
new file mode 100644
index 0000000..4dd9e95
--- /dev/null
+++ b/e2sm/headers/PF-Container.h
@@ -0,0 +1,58 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_PF_Container_H_
+#define	_PF_Container_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PF_Container_PR {
+	PF_Container_PR_NOTHING,	/* No components present */
+	PF_Container_PR_oDU,
+	PF_Container_PR_oCU_CP,
+	PF_Container_PR_oCU_UP
+} PF_Container_PR;
+
+/* Forward declarations */
+struct ODU_PF_Container;
+struct OCUCP_PF_Container;
+struct OCUUP_PF_Container;
+
+/* PF-Container */
+typedef struct PF_Container {
+	PF_Container_PR present;
+	union PF_Container_u {
+		struct ODU_PF_Container	*oDU;
+		struct OCUCP_PF_Container	*oCU_CP;
+		struct OCUUP_PF_Container	*oCU_UP;
+	} choice;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} PF_Container_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PF_Container;
+extern asn_CHOICE_specifics_t asn_SPC_PF_Container_specs_1;
+extern asn_TYPE_member_t asn_MBR_PF_Container_1[3];
+extern asn_per_constraints_t asn_PER_type_PF_Container_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _PF_Container_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/PF-ContainerListItem.h b/e2sm/headers/PF-ContainerListItem.h
new file mode 100644
index 0000000..9d12f97
--- /dev/null
+++ b/e2sm/headers/PF-ContainerListItem.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_PF_ContainerListItem_H_
+#define	_PF_ContainerListItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "NI-Type.h"
+#include "CUUPMeasurement-Container.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PF-ContainerListItem */
+typedef struct PF_ContainerListItem {
+	NI_Type_t	 interface_type;
+	CUUPMeasurement_Container_t	 o_CU_UP_PM_Container;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} PF_ContainerListItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PF_ContainerListItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_PF_ContainerListItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_PF_ContainerListItem_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _PF_ContainerListItem_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/PLMN-Identity.h b/e2sm/headers/PLMN-Identity.h
new file mode 100644
index 0000000..c35c11f
--- /dev/null
+++ b/e2sm/headers/PLMN-Identity.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_PLMN_Identity_H_
+#define	_PLMN_Identity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PLMN-Identity */
+typedef OCTET_STRING_t	 PLMN_Identity_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_PLMN_Identity_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_PLMN_Identity;
+asn_struct_free_f PLMN_Identity_free;
+asn_struct_print_f PLMN_Identity_print;
+asn_constr_check_f PLMN_Identity_constraint;
+ber_type_decoder_f PLMN_Identity_decode_ber;
+der_type_encoder_f PLMN_Identity_encode_der;
+xer_type_decoder_f PLMN_Identity_decode_xer;
+xer_type_encoder_f PLMN_Identity_encode_xer;
+oer_type_decoder_f PLMN_Identity_decode_oer;
+oer_type_encoder_f PLMN_Identity_encode_oer;
+per_type_decoder_f PLMN_Identity_decode_uper;
+per_type_encoder_f PLMN_Identity_encode_uper;
+per_type_decoder_f PLMN_Identity_decode_aper;
+per_type_encoder_f PLMN_Identity_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _PLMN_Identity_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/PM-Containers-Item.h b/e2sm/headers/PM-Containers-Item.h
new file mode 100644
index 0000000..2525e83
--- /dev/null
+++ b/e2sm/headers/PM-Containers-Item.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_PM_Containers_Item_H_
+#define	_PM_Containers_Item_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RAN-Container.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct PF_Container;
+
+/* PM-Containers-Item */
+typedef struct PM_Containers_Item {
+	struct PF_Container	*performanceContainer;	/* OPTIONAL */
+	RAN_Container_t	*theRANContainer;	/* OPTIONAL */
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} PM_Containers_Item_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PM_Containers_Item;
+extern asn_SEQUENCE_specifics_t asn_SPC_PM_Containers_Item_specs_1;
+extern asn_TYPE_member_t asn_MBR_PM_Containers_Item_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _PM_Containers_Item_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/PM-Info-Item.h b/e2sm/headers/PM-Info-Item.h
new file mode 100644
index 0000000..2716d8e
--- /dev/null
+++ b/e2sm/headers/PM-Info-Item.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_PM_Info_Item_H_
+#define	_PM_Info_Item_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasurementType.h"
+#include "MeasurementValue.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PM-Info-Item */
+typedef struct PM_Info_Item {
+	MeasurementType_t	 pmType;
+	MeasurementValue_t	 pmVal;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} PM_Info_Item_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PM_Info_Item;
+extern asn_SEQUENCE_specifics_t asn_SPC_PM_Info_Item_specs_1;
+extern asn_TYPE_member_t asn_MBR_PM_Info_Item_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _PM_Info_Item_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/PerQCIReportListItem.h b/e2sm/headers/PerQCIReportListItem.h
new file mode 100644
index 0000000..1f4c6bb
--- /dev/null
+++ b/e2sm/headers/PerQCIReportListItem.h
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_PerQCIReportListItem_H_
+#define	_PerQCIReportListItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "QCI.h"
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PerQCIReportListItem */
+typedef struct PerQCIReportListItem {
+	QCI_t	 qci;
+	long	*dl_PRBUsage;	/* OPTIONAL */
+	long	*ul_PRBUsage;	/* OPTIONAL */
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} PerQCIReportListItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PerQCIReportListItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_PerQCIReportListItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_PerQCIReportListItem_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _PerQCIReportListItem_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/PerQCIReportListItemFormat.h b/e2sm/headers/PerQCIReportListItemFormat.h
new file mode 100644
index 0000000..46b588e
--- /dev/null
+++ b/e2sm/headers/PerQCIReportListItemFormat.h
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_PerQCIReportListItemFormat_H_
+#define	_PerQCIReportListItemFormat_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "QCI.h"
+#include <INTEGER.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PerQCIReportListItemFormat */
+typedef struct PerQCIReportListItemFormat {
+	QCI_t	 drbqci;
+	INTEGER_t	*pDCPBytesDL;	/* OPTIONAL */
+	INTEGER_t	*pDCPBytesUL;	/* OPTIONAL */
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} PerQCIReportListItemFormat_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PerQCIReportListItemFormat;
+extern asn_SEQUENCE_specifics_t asn_SPC_PerQCIReportListItemFormat_specs_1;
+extern asn_TYPE_member_t asn_MBR_PerQCIReportListItemFormat_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _PerQCIReportListItemFormat_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/PerUE-PM-Item.h b/e2sm/headers/PerUE-PM-Item.h
new file mode 100644
index 0000000..b2b2c4f
--- /dev/null
+++ b/e2sm/headers/PerUE-PM-Item.h
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_PerUE_PM_Item_H_
+#define	_PerUE_PM_Item_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "UE-Identity.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct PM_Info_Item;
+
+/* PerUE-PM-Item */
+typedef struct PerUE_PM_Item {
+	UE_Identity_t	 ueId;
+	struct PerUE_PM_Item__list_of_PM_Information {
+		A_SEQUENCE_OF(struct PM_Info_Item) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} *list_of_PM_Information;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} PerUE_PM_Item_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PerUE_PM_Item;
+extern asn_SEQUENCE_specifics_t asn_SPC_PerUE_PM_Item_specs_1;
+extern asn_TYPE_member_t asn_MBR_PerUE_PM_Item_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _PerUE_PM_Item_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/PhysCellId.h b/e2sm/headers/PhysCellId.h
new file mode 100644
index 0000000..c5de886
--- /dev/null
+++ b/e2sm/headers/PhysCellId.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_PhysCellId_H_
+#define	_PhysCellId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PhysCellId */
+typedef long	 PhysCellId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_PhysCellId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_PhysCellId;
+asn_struct_free_f PhysCellId_free;
+asn_struct_print_f PhysCellId_print;
+asn_constr_check_f PhysCellId_constraint;
+ber_type_decoder_f PhysCellId_decode_ber;
+der_type_encoder_f PhysCellId_encode_der;
+xer_type_decoder_f PhysCellId_decode_xer;
+xer_type_encoder_f PhysCellId_encode_xer;
+oer_type_decoder_f PhysCellId_decode_oer;
+oer_type_encoder_f PhysCellId_encode_oer;
+per_type_decoder_f PhysCellId_decode_uper;
+per_type_encoder_f PhysCellId_encode_uper;
+per_type_decoder_f PhysCellId_decode_aper;
+per_type_encoder_f PhysCellId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _PhysCellId_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/PlmnID-Item.h b/e2sm/headers/PlmnID-Item.h
new file mode 100644
index 0000000..803068c
--- /dev/null
+++ b/e2sm/headers/PlmnID-Item.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_PlmnID_Item_H_
+#define	_PlmnID_Item_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PLMN-Identity.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct FGC_CUUP_PM_Format;
+struct EPC_CUUP_PM_Format;
+
+/* PlmnID-Item */
+typedef struct PlmnID_Item {
+	PLMN_Identity_t	 pLMN_Identity;
+	struct FGC_CUUP_PM_Format	*cu_UP_PM_5GC;	/* OPTIONAL */
+	struct EPC_CUUP_PM_Format	*cu_UP_PM_EPC;	/* OPTIONAL */
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} PlmnID_Item_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PlmnID_Item;
+extern asn_SEQUENCE_specifics_t asn_SPC_PlmnID_Item_specs_1;
+extern asn_TYPE_member_t asn_MBR_PlmnID_Item_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _PlmnID_Item_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/Presence.h b/e2sm/headers/Presence.h
new file mode 100644
index 0000000..40bf8ff
--- /dev/null
+++ b/e2sm/headers/Presence.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_Presence_H_
+#define	_Presence_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum Presence {
+	Presence_optional	= 0,
+	Presence_conditional	= 1,
+	Presence_mandatory	= 2
+} e_Presence;
+
+/* Presence */
+typedef long	 Presence_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_Presence;
+asn_struct_free_f Presence_free;
+asn_struct_print_f Presence_print;
+asn_constr_check_f Presence_constraint;
+ber_type_decoder_f Presence_decode_ber;
+der_type_encoder_f Presence_encode_der;
+xer_type_decoder_f Presence_decode_xer;
+xer_type_encoder_f Presence_encode_xer;
+oer_type_decoder_f Presence_decode_oer;
+oer_type_encoder_f Presence_encode_oer;
+per_type_decoder_f Presence_decode_uper;
+per_type_encoder_f Presence_encode_uper;
+per_type_decoder_f Presence_decode_aper;
+per_type_encoder_f Presence_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _Presence_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/PrintableString.h b/e2sm/headers/PrintableString.h
new file mode 100644
index 0000000..8c2b61a
--- /dev/null
+++ b/e2sm/headers/PrintableString.h
@@ -0,0 +1,37 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_PrintableString_H_
+#define	_PrintableString_H_
+
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef OCTET_STRING_t PrintableString_t;  /* Implemented via OCTET STRING */
+
+extern asn_TYPE_descriptor_t asn_DEF_PrintableString;
+extern asn_TYPE_operation_t asn_OP_PrintableString;
+
+asn_constr_check_f PrintableString_constraint;
+
+#define PrintableString_free            OCTET_STRING_free
+#define PrintableString_print           OCTET_STRING_print_utf8
+#define PrintableString_compare         OCTET_STRING_compare
+#define PrintableString_decode_ber      OCTET_STRING_decode_ber
+#define PrintableString_encode_der      OCTET_STRING_encode_der
+#define PrintableString_decode_xer      OCTET_STRING_decode_xer_utf8
+#define PrintableString_encode_xer      OCTET_STRING_encode_xer_utf8
+#define PrintableString_decode_uper     OCTET_STRING_decode_uper
+#define PrintableString_encode_uper     OCTET_STRING_encode_uper
+#define PrintableString_decode_aper     OCTET_STRING_decode_aper
+#define PrintableString_encode_aper     OCTET_STRING_encode_aper
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _PrintableString_H_ */
diff --git a/e2sm/headers/ProcedureCode.h b/e2sm/headers/ProcedureCode.h
new file mode 100644
index 0000000..61daec2
--- /dev/null
+++ b/e2sm/headers/ProcedureCode.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_ProcedureCode_H_
+#define	_ProcedureCode_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ProcedureCode */
+typedef long	 ProcedureCode_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ProcedureCode;
+asn_struct_free_f ProcedureCode_free;
+asn_struct_print_f ProcedureCode_print;
+asn_constr_check_f ProcedureCode_constraint;
+ber_type_decoder_f ProcedureCode_decode_ber;
+der_type_encoder_f ProcedureCode_encode_der;
+xer_type_decoder_f ProcedureCode_decode_xer;
+xer_type_encoder_f ProcedureCode_encode_xer;
+oer_type_decoder_f ProcedureCode_decode_oer;
+oer_type_encoder_f ProcedureCode_encode_oer;
+per_type_decoder_f ProcedureCode_decode_uper;
+per_type_encoder_f ProcedureCode_encode_uper;
+per_type_decoder_f ProcedureCode_decode_aper;
+per_type_encoder_f ProcedureCode_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _ProcedureCode_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/ProtocolIE-ID.h b/e2sm/headers/ProtocolIE-ID.h
new file mode 100644
index 0000000..c306f09
--- /dev/null
+++ b/e2sm/headers/ProtocolIE-ID.h
@@ -0,0 +1,92 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_ProtocolIE_ID_H_
+#define	_ProtocolIE_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ProtocolIE-ID */
+typedef long	 ProtocolIE_ID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_ProtocolIE_ID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_ID;
+asn_struct_free_f ProtocolIE_ID_free;
+asn_struct_print_f ProtocolIE_ID_print;
+asn_constr_check_f ProtocolIE_ID_constraint;
+ber_type_decoder_f ProtocolIE_ID_decode_ber;
+der_type_encoder_f ProtocolIE_ID_encode_der;
+xer_type_decoder_f ProtocolIE_ID_decode_xer;
+xer_type_encoder_f ProtocolIE_ID_encode_xer;
+oer_type_decoder_f ProtocolIE_ID_decode_oer;
+oer_type_encoder_f ProtocolIE_ID_encode_oer;
+per_type_decoder_f ProtocolIE_ID_decode_uper;
+per_type_encoder_f ProtocolIE_ID_encode_uper;
+per_type_decoder_f ProtocolIE_ID_decode_aper;
+per_type_encoder_f ProtocolIE_ID_encode_aper;
+#define ProtocolIE_ID_id_Cause	((ProtocolIE_ID_t)1)
+#define ProtocolIE_ID_id_CriticalityDiagnostics	((ProtocolIE_ID_t)2)
+#define ProtocolIE_ID_id_GlobalE2node_ID	((ProtocolIE_ID_t)3)
+#define ProtocolIE_ID_id_GlobalRIC_ID	((ProtocolIE_ID_t)4)
+#define ProtocolIE_ID_id_RANfunctionID	((ProtocolIE_ID_t)5)
+#define ProtocolIE_ID_id_RANfunctionID_Item	((ProtocolIE_ID_t)6)
+#define ProtocolIE_ID_id_RANfunctionIEcause_Item	((ProtocolIE_ID_t)7)
+#define ProtocolIE_ID_id_RANfunction_Item	((ProtocolIE_ID_t)8)
+#define ProtocolIE_ID_id_RANfunctionsAccepted	((ProtocolIE_ID_t)9)
+#define ProtocolIE_ID_id_RANfunctionsAdded	((ProtocolIE_ID_t)10)
+#define ProtocolIE_ID_id_RANfunctionsDeleted	((ProtocolIE_ID_t)11)
+#define ProtocolIE_ID_id_RANfunctionsModified	((ProtocolIE_ID_t)12)
+#define ProtocolIE_ID_id_RANfunctionsRejected	((ProtocolIE_ID_t)13)
+#define ProtocolIE_ID_id_RICaction_Admitted_Item	((ProtocolIE_ID_t)14)
+#define ProtocolIE_ID_id_RICactionID	((ProtocolIE_ID_t)15)
+#define ProtocolIE_ID_id_RICaction_NotAdmitted_Item	((ProtocolIE_ID_t)16)
+#define ProtocolIE_ID_id_RICactions_Admitted	((ProtocolIE_ID_t)17)
+#define ProtocolIE_ID_id_RICactions_NotAdmitted	((ProtocolIE_ID_t)18)
+#define ProtocolIE_ID_id_RICaction_ToBeSetup_Item	((ProtocolIE_ID_t)19)
+#define ProtocolIE_ID_id_RICcallProcessID	((ProtocolIE_ID_t)20)
+#define ProtocolIE_ID_id_RICcontrolAckRequest	((ProtocolIE_ID_t)21)
+#define ProtocolIE_ID_id_RICcontrolHeader	((ProtocolIE_ID_t)22)
+#define ProtocolIE_ID_id_RICcontrolMessage	((ProtocolIE_ID_t)23)
+#define ProtocolIE_ID_id_RICcontrolStatus	((ProtocolIE_ID_t)24)
+#define ProtocolIE_ID_id_RICindicationHeader	((ProtocolIE_ID_t)25)
+#define ProtocolIE_ID_id_RICindicationMessage	((ProtocolIE_ID_t)26)
+#define ProtocolIE_ID_id_RICindicationSN	((ProtocolIE_ID_t)27)
+#define ProtocolIE_ID_id_RICindicationType	((ProtocolIE_ID_t)28)
+#define ProtocolIE_ID_id_RICrequestID	((ProtocolIE_ID_t)29)
+#define ProtocolIE_ID_id_RICsubscriptionDetails	((ProtocolIE_ID_t)30)
+#define ProtocolIE_ID_id_TimeToWait	((ProtocolIE_ID_t)31)
+#define ProtocolIE_ID_id_RICcontrolOutcome	((ProtocolIE_ID_t)32)
+#define ProtocolIE_ID_id_E2nodeComponentConfigUpdate	((ProtocolIE_ID_t)33)
+#define ProtocolIE_ID_id_E2nodeComponentConfigUpdate_Item	((ProtocolIE_ID_t)34)
+#define ProtocolIE_ID_id_E2nodeComponentConfigUpdateAck	((ProtocolIE_ID_t)35)
+#define ProtocolIE_ID_id_E2nodeComponentConfigUpdateAck_Item	((ProtocolIE_ID_t)36)
+#define ProtocolIE_ID_id_E2connectionSetup	((ProtocolIE_ID_t)39)
+#define ProtocolIE_ID_id_E2connectionSetupFailed	((ProtocolIE_ID_t)40)
+#define ProtocolIE_ID_id_E2connectionSetupFailed_Item	((ProtocolIE_ID_t)41)
+#define ProtocolIE_ID_id_E2connectionFailed_Item	((ProtocolIE_ID_t)42)
+#define ProtocolIE_ID_id_E2connectionUpdate_Item	((ProtocolIE_ID_t)43)
+#define ProtocolIE_ID_id_E2connectionUpdateAdd	((ProtocolIE_ID_t)44)
+#define ProtocolIE_ID_id_E2connectionUpdateModify	((ProtocolIE_ID_t)45)
+#define ProtocolIE_ID_id_E2connectionUpdateRemove	((ProtocolIE_ID_t)46)
+#define ProtocolIE_ID_id_E2connectionUpdateRemove_Item	((ProtocolIE_ID_t)47)
+#define ProtocolIE_ID_id_TNLinformation	((ProtocolIE_ID_t)48)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _ProtocolIE_ID_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/QCI.h b/e2sm/headers/QCI.h
new file mode 100644
index 0000000..41fd4c0
--- /dev/null
+++ b/e2sm/headers/QCI.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_QCI_H_
+#define	_QCI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* QCI */
+typedef long	 QCI_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_QCI_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_QCI;
+asn_struct_free_f QCI_free;
+asn_struct_print_f QCI_print;
+asn_constr_check_f QCI_constraint;
+ber_type_decoder_f QCI_decode_ber;
+der_type_encoder_f QCI_encode_der;
+xer_type_decoder_f QCI_decode_xer;
+xer_type_encoder_f QCI_encode_xer;
+oer_type_decoder_f QCI_decode_oer;
+oer_type_encoder_f QCI_encode_oer;
+per_type_decoder_f QCI_decode_uper;
+per_type_encoder_f QCI_encode_uper;
+per_type_decoder_f QCI_decode_aper;
+per_type_encoder_f QCI_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _QCI_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/RAN-Container.h b/e2sm/headers/RAN-Container.h
new file mode 100644
index 0000000..ad65e6f
--- /dev/null
+++ b/e2sm/headers/RAN-Container.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_RAN_Container_H_
+#define	_RAN_Container_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RAN-Container */
+typedef OCTET_STRING_t	 RAN_Container_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RAN_Container;
+asn_struct_free_f RAN_Container_free;
+asn_struct_print_f RAN_Container_print;
+asn_constr_check_f RAN_Container_constraint;
+ber_type_decoder_f RAN_Container_decode_ber;
+der_type_encoder_f RAN_Container_encode_der;
+xer_type_decoder_f RAN_Container_decode_xer;
+xer_type_encoder_f RAN_Container_encode_xer;
+oer_type_decoder_f RAN_Container_decode_oer;
+oer_type_encoder_f RAN_Container_encode_oer;
+per_type_decoder_f RAN_Container_decode_uper;
+per_type_encoder_f RAN_Container_encode_uper;
+per_type_decoder_f RAN_Container_decode_aper;
+per_type_encoder_f RAN_Container_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RAN_Container_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/RAN-ControlParameter-Item.h b/e2sm/headers/RAN-ControlParameter-Item.h
new file mode 100644
index 0000000..68f5082
--- /dev/null
+++ b/e2sm/headers/RAN-ControlParameter-Item.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_RAN_ControlParameter_Item_H_
+#define	_RAN_ControlParameter_Item_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RANParameter-ID.h"
+#include "RANParameter-Name.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RAN-ControlParameter-Item */
+typedef struct RAN_ControlParameter_Item {
+	RANParameter_ID_t	 ranParameter_ID;
+	RANParameter_Name_t	 ranParameter_Name;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RAN_ControlParameter_Item_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RAN_ControlParameter_Item;
+extern asn_SEQUENCE_specifics_t asn_SPC_RAN_ControlParameter_Item_specs_1;
+extern asn_TYPE_member_t asn_MBR_RAN_ControlParameter_Item_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RAN_ControlParameter_Item_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/RANParameter-ELEMENT.h b/e2sm/headers/RANParameter-ELEMENT.h
new file mode 100644
index 0000000..200e3ed
--- /dev/null
+++ b/e2sm/headers/RANParameter-ELEMENT.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_RANParameter_ELEMENT_H_
+#define	_RANParameter_ELEMENT_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BOOLEAN.h>
+#include "RANParameter-Value.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANParameter-ELEMENT */
+typedef struct RANParameter_ELEMENT {
+	BOOLEAN_t	 keyFlag;
+	RANParameter_Value_t	 ranParameter_Value;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RANParameter_ELEMENT_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANParameter_ELEMENT;
+extern asn_SEQUENCE_specifics_t asn_SPC_RANParameter_ELEMENT_specs_1;
+extern asn_TYPE_member_t asn_MBR_RANParameter_ELEMENT_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RANParameter_ELEMENT_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/RANParameter-ID.h b/e2sm/headers/RANParameter-ID.h
new file mode 100644
index 0000000..74f3479
--- /dev/null
+++ b/e2sm/headers/RANParameter-ID.h
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_RANParameter_ID_H_
+#define	_RANParameter_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANParameter-ID */
+typedef unsigned long	 RANParameter_ID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_RANParameter_ID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_RANParameter_ID;
+extern const asn_INTEGER_specifics_t asn_SPC_RANParameter_ID_specs_1;
+asn_struct_free_f RANParameter_ID_free;
+asn_struct_print_f RANParameter_ID_print;
+asn_constr_check_f RANParameter_ID_constraint;
+ber_type_decoder_f RANParameter_ID_decode_ber;
+der_type_encoder_f RANParameter_ID_encode_der;
+xer_type_decoder_f RANParameter_ID_decode_xer;
+xer_type_encoder_f RANParameter_ID_encode_xer;
+oer_type_decoder_f RANParameter_ID_decode_oer;
+oer_type_encoder_f RANParameter_ID_encode_oer;
+per_type_decoder_f RANParameter_ID_decode_uper;
+per_type_encoder_f RANParameter_ID_encode_uper;
+per_type_decoder_f RANParameter_ID_decode_aper;
+per_type_encoder_f RANParameter_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RANParameter_ID_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/RANParameter-Item.h b/e2sm/headers/RANParameter-Item.h
new file mode 100644
index 0000000..922c61a
--- /dev/null
+++ b/e2sm/headers/RANParameter-Item.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_RANParameter_Item_H_
+#define	_RANParameter_Item_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RANParameter-ID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct RANParameter_ValueType;
+
+/* RANParameter-Item */
+typedef struct RANParameter_Item {
+	RANParameter_ID_t	 ranParameterItem_ID;
+	struct RANParameter_ValueType	*ranParameterItem_valueType;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RANParameter_Item_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANParameter_Item;
+extern asn_SEQUENCE_specifics_t asn_SPC_RANParameter_Item_specs_1;
+extern asn_TYPE_member_t asn_MBR_RANParameter_Item_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RANParameter_Item_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/RANParameter-LIST.h b/e2sm/headers/RANParameter-LIST.h
new file mode 100644
index 0000000..603482c
--- /dev/null
+++ b/e2sm/headers/RANParameter-LIST.h
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_RANParameter_LIST_H_
+#define	_RANParameter_LIST_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct RANParameter_STRUCTURE;
+
+/* RANParameter-LIST */
+typedef struct RANParameter_LIST {
+	struct RANParameter_LIST__list_of_ranParameter_Structures {
+		A_SEQUENCE_OF(struct RANParameter_STRUCTURE) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} list_of_ranParameter_Structures;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RANParameter_LIST_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANParameter_LIST;
+extern asn_SEQUENCE_specifics_t asn_SPC_RANParameter_LIST_specs_1;
+extern asn_TYPE_member_t asn_MBR_RANParameter_LIST_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RANParameter_LIST_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/RANParameter-Name.h b/e2sm/headers/RANParameter-Name.h
new file mode 100644
index 0000000..5f1b997
--- /dev/null
+++ b/e2sm/headers/RANParameter-Name.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_RANParameter_Name_H_
+#define	_RANParameter_Name_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <PrintableString.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANParameter-Name */
+typedef PrintableString_t	 RANParameter_Name_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_RANParameter_Name_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_RANParameter_Name;
+asn_struct_free_f RANParameter_Name_free;
+asn_struct_print_f RANParameter_Name_print;
+asn_constr_check_f RANParameter_Name_constraint;
+ber_type_decoder_f RANParameter_Name_decode_ber;
+der_type_encoder_f RANParameter_Name_encode_der;
+xer_type_decoder_f RANParameter_Name_decode_xer;
+xer_type_encoder_f RANParameter_Name_encode_xer;
+oer_type_decoder_f RANParameter_Name_decode_oer;
+oer_type_encoder_f RANParameter_Name_encode_oer;
+per_type_decoder_f RANParameter_Name_decode_uper;
+per_type_encoder_f RANParameter_Name_encode_uper;
+per_type_decoder_f RANParameter_Name_decode_aper;
+per_type_encoder_f RANParameter_Name_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RANParameter_Name_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/RANParameter-STRUCTURE.h b/e2sm/headers/RANParameter-STRUCTURE.h
new file mode 100644
index 0000000..7904936
--- /dev/null
+++ b/e2sm/headers/RANParameter-STRUCTURE.h
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_RANParameter_STRUCTURE_H_
+#define	_RANParameter_STRUCTURE_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct RANParameter_Item;
+
+/* RANParameter-STRUCTURE */
+typedef struct RANParameter_STRUCTURE {
+	struct RANParameter_STRUCTURE__sequence_of_ranParameters {
+		A_SEQUENCE_OF(struct RANParameter_Item) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} sequence_of_ranParameters;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RANParameter_STRUCTURE_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANParameter_STRUCTURE;
+extern asn_SEQUENCE_specifics_t asn_SPC_RANParameter_STRUCTURE_specs_1;
+extern asn_TYPE_member_t asn_MBR_RANParameter_STRUCTURE_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RANParameter_STRUCTURE_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/RANParameter-Value.h b/e2sm/headers/RANParameter-Value.h
new file mode 100644
index 0000000..92e3759
--- /dev/null
+++ b/e2sm/headers/RANParameter-Value.h
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_RANParameter_Value_H_
+#define	_RANParameter_Value_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <OCTET_STRING.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANParameter_Value_PR {
+	RANParameter_Value_PR_NOTHING,	/* No components present */
+	RANParameter_Value_PR_valueInt,
+	RANParameter_Value_PR_valueOctS
+	/* Extensions may appear below */
+	
+} RANParameter_Value_PR;
+
+/* RANParameter-Value */
+typedef struct RANParameter_Value {
+	RANParameter_Value_PR present;
+	union RANParameter_Value_u {
+		long	 valueInt;
+		OCTET_STRING_t	 valueOctS;
+		/*
+		 * This type is extensible,
+		 * possible extensions are below.
+		 */
+	} choice;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RANParameter_Value_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANParameter_Value;
+extern asn_CHOICE_specifics_t asn_SPC_RANParameter_Value_specs_1;
+extern asn_TYPE_member_t asn_MBR_RANParameter_Value_1[2];
+extern asn_per_constraints_t asn_PER_type_RANParameter_Value_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RANParameter_Value_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/RANParameter-ValueType.h b/e2sm/headers/RANParameter-ValueType.h
new file mode 100644
index 0000000..162ad29
--- /dev/null
+++ b/e2sm/headers/RANParameter-ValueType.h
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_RANParameter_ValueType_H_
+#define	_RANParameter_ValueType_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANParameter_ValueType_PR {
+	RANParameter_ValueType_PR_NOTHING,	/* No components present */
+	RANParameter_ValueType_PR_ranParameter_Element,
+	RANParameter_ValueType_PR_ranParameter_Structure,
+	RANParameter_ValueType_PR_ranParameter_List
+	/* Extensions may appear below */
+	
+} RANParameter_ValueType_PR;
+
+/* Forward declarations */
+struct RANParameter_ELEMENT;
+struct RANParameter_STRUCTURE;
+struct RANParameter_LIST;
+
+/* RANParameter-ValueType */
+typedef struct RANParameter_ValueType {
+	RANParameter_ValueType_PR present;
+	union RANParameter_ValueType_u {
+		struct RANParameter_ELEMENT	*ranParameter_Element;
+		struct RANParameter_STRUCTURE	*ranParameter_Structure;
+		struct RANParameter_LIST	*ranParameter_List;
+		/*
+		 * This type is extensible,
+		 * possible extensions are below.
+		 */
+	} choice;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RANParameter_ValueType_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANParameter_ValueType;
+extern asn_CHOICE_specifics_t asn_SPC_RANParameter_ValueType_specs_1;
+extern asn_TYPE_member_t asn_MBR_RANParameter_ValueType_1[3];
+extern asn_per_constraints_t asn_PER_type_RANParameter_ValueType_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RANParameter_ValueType_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/RANcallProcess-ID-string.h b/e2sm/headers/RANcallProcess-ID-string.h
new file mode 100644
index 0000000..c24a061
--- /dev/null
+++ b/e2sm/headers/RANcallProcess-ID-string.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_RANcallProcess_ID_string_H_
+#define	_RANcallProcess_ID_string_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <PrintableString.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANcallProcess-ID-string */
+typedef PrintableString_t	 RANcallProcess_ID_string_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANcallProcess_ID_string;
+asn_struct_free_f RANcallProcess_ID_string_free;
+asn_struct_print_f RANcallProcess_ID_string_print;
+asn_constr_check_f RANcallProcess_ID_string_constraint;
+ber_type_decoder_f RANcallProcess_ID_string_decode_ber;
+der_type_encoder_f RANcallProcess_ID_string_encode_der;
+xer_type_decoder_f RANcallProcess_ID_string_decode_xer;
+xer_type_encoder_f RANcallProcess_ID_string_encode_xer;
+oer_type_decoder_f RANcallProcess_ID_string_decode_oer;
+oer_type_encoder_f RANcallProcess_ID_string_encode_oer;
+per_type_decoder_f RANcallProcess_ID_string_decode_uper;
+per_type_encoder_f RANcallProcess_ID_string_encode_uper;
+per_type_decoder_f RANcallProcess_ID_string_decode_aper;
+per_type_encoder_f RANcallProcess_ID_string_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RANcallProcess_ID_string_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/RANfunction-Name.h b/e2sm/headers/RANfunction-Name.h
new file mode 100644
index 0000000..22f5c95
--- /dev/null
+++ b/e2sm/headers/RANfunction-Name.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_RANfunction_Name_H_
+#define	_RANfunction_Name_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <PrintableString.h>
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANfunction-Name */
+typedef struct RANfunction_Name {
+	PrintableString_t	 ranFunction_ShortName;
+	PrintableString_t	 ranFunction_E2SM_OID;
+	PrintableString_t	 ranFunction_Description;
+	long	*ranFunction_Instance;	/* OPTIONAL */
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RANfunction_Name_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANfunction_Name;
+extern asn_SEQUENCE_specifics_t asn_SPC_RANfunction_Name_specs_1;
+extern asn_TYPE_member_t asn_MBR_RANfunction_Name_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RANfunction_Name_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/REAL.h b/e2sm/headers/REAL.h
new file mode 100644
index 0000000..fce6714
--- /dev/null
+++ b/e2sm/headers/REAL.h
@@ -0,0 +1,67 @@
+/*-
+ * Copyright (c) 2004-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	ASN_TYPE_REAL_H
+#define	ASN_TYPE_REAL_H
+
+#include <asn_application.h>
+#include <asn_codecs_prim.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef ASN__PRIMITIVE_TYPE_t REAL_t;
+
+extern asn_TYPE_descriptor_t asn_DEF_REAL;
+extern asn_TYPE_operation_t asn_OP_REAL;
+
+asn_struct_print_f REAL_print;
+asn_struct_compare_f REAL_compare;
+oer_type_decoder_f REAL_decode_oer;
+oer_type_encoder_f REAL_encode_oer;
+per_type_decoder_f REAL_decode_uper;
+per_type_encoder_f REAL_encode_uper;
+per_type_decoder_f REAL_decode_aper;
+per_type_encoder_f REAL_encode_aper;
+xer_type_decoder_f REAL_decode_xer;
+xer_type_encoder_f REAL_encode_xer;
+asn_random_fill_f  REAL_random_fill;
+
+#define REAL_free          ASN__PRIMITIVE_TYPE_free,
+#define REAL_constraint    asn_generic_no_constraint
+#define REAL_decode_ber    ber_decode_primitive
+#define REAL_encode_der    der_encode_primitive
+
+/***********************************
+ * Some handy conversion routines. *
+ ***********************************/
+
+ssize_t REAL__dump(double d, int canonical, asn_app_consume_bytes_f *cb, void *app_key);
+
+/*
+ * Convert between native double type and REAL representation (DER).
+ * RETURN VALUES:
+ *  0: Value converted successfully
+ * -1: An error occured while converting the value: invalid format.
+ */
+int asn_REAL2double(const REAL_t *real_ptr, double *d);
+int asn_double2REAL(REAL_t *real_ptr, double d);
+
+/*
+ * Downcast double to float while checking that no overflow occurs.
+ * This allows stricter control of the input data.
+ * RETURN VALUES:
+ *  0: The conversion was successful (perhaps with a loss of precision)
+ * -1: The conversion created overflow into infinities.
+ * The (outcome) is ALWAYS set to a value you'd expect from the
+ * standard silent float to double conversion behavior.
+ */
+int asn_double2float(double d, float *outcome);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* ASN_TYPE_REAL_H */
diff --git a/e2sm/headers/RIC-ControlAction-ID.h b/e2sm/headers/RIC-ControlAction-ID.h
new file mode 100644
index 0000000..78dab02
--- /dev/null
+++ b/e2sm/headers/RIC-ControlAction-ID.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_RIC_ControlAction_ID_H_
+#define	_RIC_ControlAction_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RIC-ControlAction-ID */
+typedef long	 RIC_ControlAction_ID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_RIC_ControlAction_ID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_RIC_ControlAction_ID;
+asn_struct_free_f RIC_ControlAction_ID_free;
+asn_struct_print_f RIC_ControlAction_ID_print;
+asn_constr_check_f RIC_ControlAction_ID_constraint;
+ber_type_decoder_f RIC_ControlAction_ID_decode_ber;
+der_type_encoder_f RIC_ControlAction_ID_encode_der;
+xer_type_decoder_f RIC_ControlAction_ID_decode_xer;
+xer_type_encoder_f RIC_ControlAction_ID_encode_xer;
+oer_type_decoder_f RIC_ControlAction_ID_decode_oer;
+oer_type_encoder_f RIC_ControlAction_ID_encode_oer;
+per_type_decoder_f RIC_ControlAction_ID_decode_uper;
+per_type_encoder_f RIC_ControlAction_ID_encode_uper;
+per_type_decoder_f RIC_ControlAction_ID_decode_aper;
+per_type_encoder_f RIC_ControlAction_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RIC_ControlAction_ID_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/RIC-ControlAction-Item.h b/e2sm/headers/RIC-ControlAction-Item.h
new file mode 100644
index 0000000..c064c3a
--- /dev/null
+++ b/e2sm/headers/RIC-ControlAction-Item.h
@@ -0,0 +1,57 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_RIC_ControlAction_Item_H_
+#define	_RIC_ControlAction_Item_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RIC-ControlAction-ID.h"
+#include "RIC-ControlAction-Name.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct RAN_ControlParameter_Item;
+
+/* RIC-ControlAction-Item */
+typedef struct RIC_ControlAction_Item {
+	RIC_ControlAction_ID_t	 ric_ControlAction_ID;
+	RIC_ControlAction_Name_t	 ric_ControlAction_Name;
+	struct RIC_ControlAction_Item__ran_ControlParameters_List {
+		A_SEQUENCE_OF(struct RAN_ControlParameter_Item) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} *ran_ControlParameters_List;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RIC_ControlAction_Item_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RIC_ControlAction_Item;
+extern asn_SEQUENCE_specifics_t asn_SPC_RIC_ControlAction_Item_specs_1;
+extern asn_TYPE_member_t asn_MBR_RIC_ControlAction_Item_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RIC_ControlAction_Item_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/RIC-ControlAction-Name.h b/e2sm/headers/RIC-ControlAction-Name.h
new file mode 100644
index 0000000..7e2d351
--- /dev/null
+++ b/e2sm/headers/RIC-ControlAction-Name.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_RIC_ControlAction_Name_H_
+#define	_RIC_ControlAction_Name_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <PrintableString.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RIC-ControlAction-Name */
+typedef PrintableString_t	 RIC_ControlAction_Name_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_RIC_ControlAction_Name_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_RIC_ControlAction_Name;
+asn_struct_free_f RIC_ControlAction_Name_free;
+asn_struct_print_f RIC_ControlAction_Name_print;
+asn_constr_check_f RIC_ControlAction_Name_constraint;
+ber_type_decoder_f RIC_ControlAction_Name_decode_ber;
+der_type_encoder_f RIC_ControlAction_Name_encode_der;
+xer_type_decoder_f RIC_ControlAction_Name_decode_xer;
+xer_type_encoder_f RIC_ControlAction_Name_encode_xer;
+oer_type_decoder_f RIC_ControlAction_Name_decode_oer;
+oer_type_encoder_f RIC_ControlAction_Name_encode_oer;
+per_type_decoder_f RIC_ControlAction_Name_decode_uper;
+per_type_encoder_f RIC_ControlAction_Name_encode_uper;
+per_type_decoder_f RIC_ControlAction_Name_decode_aper;
+per_type_encoder_f RIC_ControlAction_Name_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RIC_ControlAction_Name_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/RIC-ControlStyle-Item.h b/e2sm/headers/RIC-ControlStyle-Item.h
new file mode 100644
index 0000000..a24d639
--- /dev/null
+++ b/e2sm/headers/RIC-ControlStyle-Item.h
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_RIC_ControlStyle_Item_H_
+#define	_RIC_ControlStyle_Item_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RIC-Style-Type.h"
+#include "RIC-Style-Name.h"
+#include "RIC-Format-Type.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct RIC_ControlAction_Item;
+
+/* RIC-ControlStyle-Item */
+typedef struct RIC_ControlStyle_Item {
+	RIC_Style_Type_t	 ric_ControlStyle_Type;
+	RIC_Style_Name_t	 ric_ControlStyle_Name;
+	struct RIC_ControlStyle_Item__ric_ControlAction_List {
+		A_SEQUENCE_OF(struct RIC_ControlAction_Item) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} *ric_ControlAction_List;
+	RIC_Format_Type_t	 ric_ControlHeaderFormat_Type;
+	RIC_Format_Type_t	 ric_ControlMessageFormat_Type;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RIC_ControlStyle_Item_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RIC_ControlStyle_Item;
+extern asn_SEQUENCE_specifics_t asn_SPC_RIC_ControlStyle_Item_specs_1;
+extern asn_TYPE_member_t asn_MBR_RIC_ControlStyle_Item_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RIC_ControlStyle_Item_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/RIC-EventTriggerStyle-Item.h b/e2sm/headers/RIC-EventTriggerStyle-Item.h
new file mode 100644
index 0000000..dbff4fc
--- /dev/null
+++ b/e2sm/headers/RIC-EventTriggerStyle-Item.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_RIC_EventTriggerStyle_Item_H_
+#define	_RIC_EventTriggerStyle_Item_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RIC-Style-Type.h"
+#include "RIC-Style-Name.h"
+#include "RIC-Format-Type.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RIC-EventTriggerStyle-Item */
+typedef struct RIC_EventTriggerStyle_Item {
+	RIC_Style_Type_t	 ric_EventTriggerStyle_Type;
+	RIC_Style_Name_t	 ric_EventTriggerStyle_Name;
+	RIC_Format_Type_t	 ric_EventTriggerFormat_Type;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RIC_EventTriggerStyle_Item_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RIC_EventTriggerStyle_Item;
+extern asn_SEQUENCE_specifics_t asn_SPC_RIC_EventTriggerStyle_Item_specs_1;
+extern asn_TYPE_member_t asn_MBR_RIC_EventTriggerStyle_Item_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RIC_EventTriggerStyle_Item_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/RIC-Format-Type.h b/e2sm/headers/RIC-Format-Type.h
new file mode 100644
index 0000000..7d06e5f
--- /dev/null
+++ b/e2sm/headers/RIC-Format-Type.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_RIC_Format_Type_H_
+#define	_RIC_Format_Type_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RIC-Format-Type */
+typedef long	 RIC_Format_Type_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RIC_Format_Type;
+asn_struct_free_f RIC_Format_Type_free;
+asn_struct_print_f RIC_Format_Type_print;
+asn_constr_check_f RIC_Format_Type_constraint;
+ber_type_decoder_f RIC_Format_Type_decode_ber;
+der_type_encoder_f RIC_Format_Type_encode_der;
+xer_type_decoder_f RIC_Format_Type_decode_xer;
+xer_type_encoder_f RIC_Format_Type_encode_xer;
+oer_type_decoder_f RIC_Format_Type_decode_oer;
+oer_type_encoder_f RIC_Format_Type_encode_oer;
+per_type_decoder_f RIC_Format_Type_decode_uper;
+per_type_encoder_f RIC_Format_Type_encode_uper;
+per_type_decoder_f RIC_Format_Type_decode_aper;
+per_type_encoder_f RIC_Format_Type_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RIC_Format_Type_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/RIC-ReportStyle-Item.h b/e2sm/headers/RIC-ReportStyle-Item.h
new file mode 100644
index 0000000..7e963fb
--- /dev/null
+++ b/e2sm/headers/RIC-ReportStyle-Item.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_RIC_ReportStyle_Item_H_
+#define	_RIC_ReportStyle_Item_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RIC-Style-Type.h"
+#include "RIC-Style-Name.h"
+#include "RIC-Format-Type.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RIC-ReportStyle-Item */
+typedef struct RIC_ReportStyle_Item {
+	RIC_Style_Type_t	 ric_ReportStyle_Type;
+	RIC_Style_Name_t	 ric_ReportStyle_Name;
+	RIC_Format_Type_t	 ric_ReportIndicationHeaderFormat_Type;
+	RIC_Format_Type_t	 ric_ReportIndicationMessageFormat_Type;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RIC_ReportStyle_Item_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RIC_ReportStyle_Item;
+extern asn_SEQUENCE_specifics_t asn_SPC_RIC_ReportStyle_Item_specs_1;
+extern asn_TYPE_member_t asn_MBR_RIC_ReportStyle_Item_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RIC_ReportStyle_Item_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/RIC-Style-Name.h b/e2sm/headers/RIC-Style-Name.h
new file mode 100644
index 0000000..95f3cdd
--- /dev/null
+++ b/e2sm/headers/RIC-Style-Name.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_RIC_Style_Name_H_
+#define	_RIC_Style_Name_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <PrintableString.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RIC-Style-Name */
+typedef PrintableString_t	 RIC_Style_Name_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_RIC_Style_Name_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_RIC_Style_Name;
+asn_struct_free_f RIC_Style_Name_free;
+asn_struct_print_f RIC_Style_Name_print;
+asn_constr_check_f RIC_Style_Name_constraint;
+ber_type_decoder_f RIC_Style_Name_decode_ber;
+der_type_encoder_f RIC_Style_Name_encode_der;
+xer_type_decoder_f RIC_Style_Name_decode_xer;
+xer_type_encoder_f RIC_Style_Name_encode_xer;
+oer_type_decoder_f RIC_Style_Name_decode_oer;
+oer_type_encoder_f RIC_Style_Name_encode_oer;
+per_type_decoder_f RIC_Style_Name_decode_uper;
+per_type_encoder_f RIC_Style_Name_encode_uper;
+per_type_decoder_f RIC_Style_Name_decode_aper;
+per_type_encoder_f RIC_Style_Name_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RIC_Style_Name_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/RIC-Style-Type.h b/e2sm/headers/RIC-Style-Type.h
new file mode 100644
index 0000000..aad553e
--- /dev/null
+++ b/e2sm/headers/RIC-Style-Type.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_RIC_Style_Type_H_
+#define	_RIC_Style_Type_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RIC-Style-Type */
+typedef long	 RIC_Style_Type_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RIC_Style_Type;
+asn_struct_free_f RIC_Style_Type_free;
+asn_struct_print_f RIC_Style_Type_print;
+asn_constr_check_f RIC_Style_Type_constraint;
+ber_type_decoder_f RIC_Style_Type_decode_ber;
+der_type_encoder_f RIC_Style_Type_encode_der;
+xer_type_decoder_f RIC_Style_Type_decode_xer;
+xer_type_encoder_f RIC_Style_Type_encode_xer;
+oer_type_decoder_f RIC_Style_Type_decode_oer;
+oer_type_encoder_f RIC_Style_Type_encode_oer;
+per_type_decoder_f RIC_Style_Type_decode_uper;
+per_type_encoder_f RIC_Style_Type_encode_uper;
+per_type_decoder_f RIC_Style_Type_decode_aper;
+per_type_encoder_f RIC_Style_Type_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RIC_Style_Type_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/RRCEvent.h b/e2sm/headers/RRCEvent.h
new file mode 100644
index 0000000..ea91c31
--- /dev/null
+++ b/e2sm/headers/RRCEvent.h
@@ -0,0 +1,58 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_RRCEvent_H_
+#define	_RRCEvent_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RRCEvent {
+	RRCEvent_b1	= 0,
+	RRCEvent_a3	= 1,
+	RRCEvent_a5	= 2,
+	RRCEvent_periodic	= 3
+	/*
+	 * Enumeration is extensible
+	 */
+} e_RRCEvent;
+
+/* RRCEvent */
+typedef long	 RRCEvent_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_RRCEvent_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_RRCEvent;
+extern const asn_INTEGER_specifics_t asn_SPC_RRCEvent_specs_1;
+asn_struct_free_f RRCEvent_free;
+asn_struct_print_f RRCEvent_print;
+asn_constr_check_f RRCEvent_constraint;
+ber_type_decoder_f RRCEvent_decode_ber;
+der_type_encoder_f RRCEvent_encode_der;
+xer_type_decoder_f RRCEvent_decode_xer;
+xer_type_encoder_f RRCEvent_encode_xer;
+oer_type_decoder_f RRCEvent_decode_oer;
+oer_type_encoder_f RRCEvent_encode_oer;
+per_type_decoder_f RRCEvent_decode_uper;
+per_type_encoder_f RRCEvent_encode_uper;
+per_type_decoder_f RRCEvent_decode_aper;
+per_type_encoder_f RRCEvent_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RRCEvent_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/RSRP-Range.h b/e2sm/headers/RSRP-Range.h
new file mode 100644
index 0000000..1d1caa4
--- /dev/null
+++ b/e2sm/headers/RSRP-Range.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_RSRP_Range_H_
+#define	_RSRP_Range_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RSRP-Range */
+typedef long	 RSRP_Range_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_RSRP_Range_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_RSRP_Range;
+asn_struct_free_f RSRP_Range_free;
+asn_struct_print_f RSRP_Range_print;
+asn_constr_check_f RSRP_Range_constraint;
+ber_type_decoder_f RSRP_Range_decode_ber;
+der_type_encoder_f RSRP_Range_encode_der;
+xer_type_decoder_f RSRP_Range_decode_xer;
+xer_type_encoder_f RSRP_Range_encode_xer;
+oer_type_decoder_f RSRP_Range_decode_oer;
+oer_type_encoder_f RSRP_Range_encode_oer;
+per_type_decoder_f RSRP_Range_decode_uper;
+per_type_encoder_f RSRP_Range_encode_uper;
+per_type_decoder_f RSRP_Range_decode_aper;
+per_type_encoder_f RSRP_Range_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RSRP_Range_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/RSRP-RangeEUTRA.h b/e2sm/headers/RSRP-RangeEUTRA.h
new file mode 100644
index 0000000..98352ab
--- /dev/null
+++ b/e2sm/headers/RSRP-RangeEUTRA.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_RSRP_RangeEUTRA_H_
+#define	_RSRP_RangeEUTRA_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RSRP-RangeEUTRA */
+typedef long	 RSRP_RangeEUTRA_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_RSRP_RangeEUTRA_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_RSRP_RangeEUTRA;
+asn_struct_free_f RSRP_RangeEUTRA_free;
+asn_struct_print_f RSRP_RangeEUTRA_print;
+asn_constr_check_f RSRP_RangeEUTRA_constraint;
+ber_type_decoder_f RSRP_RangeEUTRA_decode_ber;
+der_type_encoder_f RSRP_RangeEUTRA_encode_der;
+xer_type_decoder_f RSRP_RangeEUTRA_decode_xer;
+xer_type_encoder_f RSRP_RangeEUTRA_encode_xer;
+oer_type_decoder_f RSRP_RangeEUTRA_decode_oer;
+oer_type_encoder_f RSRP_RangeEUTRA_encode_oer;
+per_type_decoder_f RSRP_RangeEUTRA_decode_uper;
+per_type_encoder_f RSRP_RangeEUTRA_encode_uper;
+per_type_decoder_f RSRP_RangeEUTRA_decode_aper;
+per_type_encoder_f RSRP_RangeEUTRA_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RSRP_RangeEUTRA_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/RSRQ-Range.h b/e2sm/headers/RSRQ-Range.h
new file mode 100644
index 0000000..81543fb
--- /dev/null
+++ b/e2sm/headers/RSRQ-Range.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_RSRQ_Range_H_
+#define	_RSRQ_Range_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RSRQ-Range */
+typedef long	 RSRQ_Range_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_RSRQ_Range_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_RSRQ_Range;
+asn_struct_free_f RSRQ_Range_free;
+asn_struct_print_f RSRQ_Range_print;
+asn_constr_check_f RSRQ_Range_constraint;
+ber_type_decoder_f RSRQ_Range_decode_ber;
+der_type_encoder_f RSRQ_Range_encode_der;
+xer_type_decoder_f RSRQ_Range_decode_xer;
+xer_type_encoder_f RSRQ_Range_encode_xer;
+oer_type_decoder_f RSRQ_Range_decode_oer;
+oer_type_encoder_f RSRQ_Range_encode_oer;
+per_type_decoder_f RSRQ_Range_decode_uper;
+per_type_encoder_f RSRQ_Range_encode_uper;
+per_type_decoder_f RSRQ_Range_decode_aper;
+per_type_encoder_f RSRQ_Range_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RSRQ_Range_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/RSRQ-RangeEUTRA.h b/e2sm/headers/RSRQ-RangeEUTRA.h
new file mode 100644
index 0000000..28a4e2b
--- /dev/null
+++ b/e2sm/headers/RSRQ-RangeEUTRA.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_RSRQ_RangeEUTRA_H_
+#define	_RSRQ_RangeEUTRA_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RSRQ-RangeEUTRA */
+typedef long	 RSRQ_RangeEUTRA_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_RSRQ_RangeEUTRA_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_RSRQ_RangeEUTRA;
+asn_struct_free_f RSRQ_RangeEUTRA_free;
+asn_struct_print_f RSRQ_RangeEUTRA_print;
+asn_constr_check_f RSRQ_RangeEUTRA_constraint;
+ber_type_decoder_f RSRQ_RangeEUTRA_decode_ber;
+der_type_encoder_f RSRQ_RangeEUTRA_encode_der;
+xer_type_decoder_f RSRQ_RangeEUTRA_decode_xer;
+xer_type_encoder_f RSRQ_RangeEUTRA_encode_xer;
+oer_type_decoder_f RSRQ_RangeEUTRA_decode_oer;
+oer_type_encoder_f RSRQ_RangeEUTRA_encode_oer;
+per_type_decoder_f RSRQ_RangeEUTRA_decode_uper;
+per_type_encoder_f RSRQ_RangeEUTRA_encode_uper;
+per_type_decoder_f RSRQ_RangeEUTRA_decode_aper;
+per_type_encoder_f RSRQ_RangeEUTRA_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RSRQ_RangeEUTRA_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/RT-Period-IE.h b/e2sm/headers/RT-Period-IE.h
new file mode 100644
index 0000000..33bcf46
--- /dev/null
+++ b/e2sm/headers/RT-Period-IE.h
@@ -0,0 +1,74 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_RT_Period_IE_H_
+#define	_RT_Period_IE_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RT_Period_IE {
+	RT_Period_IE_ms10	= 0,
+	RT_Period_IE_ms20	= 1,
+	RT_Period_IE_ms32	= 2,
+	RT_Period_IE_ms40	= 3,
+	RT_Period_IE_ms60	= 4,
+	RT_Period_IE_ms64	= 5,
+	RT_Period_IE_ms70	= 6,
+	RT_Period_IE_ms80	= 7,
+	RT_Period_IE_ms128	= 8,
+	RT_Period_IE_ms160	= 9,
+	RT_Period_IE_ms256	= 10,
+	RT_Period_IE_ms320	= 11,
+	RT_Period_IE_ms512	= 12,
+	RT_Period_IE_ms640	= 13,
+	RT_Period_IE_ms1024	= 14,
+	RT_Period_IE_ms1280	= 15,
+	RT_Period_IE_ms2048	= 16,
+	RT_Period_IE_ms2560	= 17,
+	RT_Period_IE_ms5120	= 18,
+	RT_Period_IE_ms10240	= 19
+	/*
+	 * Enumeration is extensible
+	 */
+} e_RT_Period_IE;
+
+/* RT-Period-IE */
+typedef long	 RT_Period_IE_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_RT_Period_IE_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_RT_Period_IE;
+extern const asn_INTEGER_specifics_t asn_SPC_RT_Period_IE_specs_1;
+asn_struct_free_f RT_Period_IE_free;
+asn_struct_print_f RT_Period_IE_print;
+asn_constr_check_f RT_Period_IE_constraint;
+ber_type_decoder_f RT_Period_IE_decode_ber;
+der_type_encoder_f RT_Period_IE_encode_der;
+xer_type_decoder_f RT_Period_IE_decode_xer;
+xer_type_encoder_f RT_Period_IE_encode_xer;
+oer_type_decoder_f RT_Period_IE_decode_oer;
+oer_type_encoder_f RT_Period_IE_encode_oer;
+per_type_decoder_f RT_Period_IE_decode_uper;
+per_type_encoder_f RT_Period_IE_encode_uper;
+per_type_decoder_f RT_Period_IE_decode_aper;
+per_type_encoder_f RT_Period_IE_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RT_Period_IE_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/ResultsPerCSI-RS-Index.h b/e2sm/headers/ResultsPerCSI-RS-Index.h
new file mode 100644
index 0000000..ba43d10
--- /dev/null
+++ b/e2sm/headers/ResultsPerCSI-RS-Index.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_ResultsPerCSI_RS_Index_H_
+#define	_ResultsPerCSI_RS_Index_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "CSI-RS-Index.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MeasQuantityResults;
+
+/* ResultsPerCSI-RS-Index */
+typedef struct ResultsPerCSI_RS_Index {
+	CSI_RS_Index_t	 csi_RS_Index;
+	struct MeasQuantityResults	*csi_RS_Results;	/* OPTIONAL */
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} ResultsPerCSI_RS_Index_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ResultsPerCSI_RS_Index;
+extern asn_SEQUENCE_specifics_t asn_SPC_ResultsPerCSI_RS_Index_specs_1;
+extern asn_TYPE_member_t asn_MBR_ResultsPerCSI_RS_Index_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _ResultsPerCSI_RS_Index_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/ResultsPerCSI-RS-IndexList.h b/e2sm/headers/ResultsPerCSI-RS-IndexList.h
new file mode 100644
index 0000000..5cde4f3
--- /dev/null
+++ b/e2sm/headers/ResultsPerCSI-RS-IndexList.h
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_ResultsPerCSI_RS_IndexList_H_
+#define	_ResultsPerCSI_RS_IndexList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct ResultsPerCSI_RS_Index;
+
+/* ResultsPerCSI-RS-IndexList */
+typedef struct ResultsPerCSI_RS_IndexList {
+	A_SEQUENCE_OF(struct ResultsPerCSI_RS_Index) list;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} ResultsPerCSI_RS_IndexList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ResultsPerCSI_RS_IndexList;
+extern asn_SET_OF_specifics_t asn_SPC_ResultsPerCSI_RS_IndexList_specs_1;
+extern asn_TYPE_member_t asn_MBR_ResultsPerCSI_RS_IndexList_1[1];
+extern asn_per_constraints_t asn_PER_type_ResultsPerCSI_RS_IndexList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _ResultsPerCSI_RS_IndexList_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/ResultsPerSSB-Index.h b/e2sm/headers/ResultsPerSSB-Index.h
new file mode 100644
index 0000000..df936b6
--- /dev/null
+++ b/e2sm/headers/ResultsPerSSB-Index.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_ResultsPerSSB_Index_H_
+#define	_ResultsPerSSB_Index_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "SSB-Index.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MeasQuantityResults;
+
+/* ResultsPerSSB-Index */
+typedef struct ResultsPerSSB_Index {
+	SSB_Index_t	 ssb_Index;
+	struct MeasQuantityResults	*ssb_Results;	/* OPTIONAL */
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} ResultsPerSSB_Index_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ResultsPerSSB_Index;
+extern asn_SEQUENCE_specifics_t asn_SPC_ResultsPerSSB_Index_specs_1;
+extern asn_TYPE_member_t asn_MBR_ResultsPerSSB_Index_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _ResultsPerSSB_Index_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/ResultsPerSSB-IndexList.h b/e2sm/headers/ResultsPerSSB-IndexList.h
new file mode 100644
index 0000000..209f40c
--- /dev/null
+++ b/e2sm/headers/ResultsPerSSB-IndexList.h
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_ResultsPerSSB_IndexList_H_
+#define	_ResultsPerSSB_IndexList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct ResultsPerSSB_Index;
+
+/* ResultsPerSSB-IndexList */
+typedef struct ResultsPerSSB_IndexList {
+	A_SEQUENCE_OF(struct ResultsPerSSB_Index) list;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} ResultsPerSSB_IndexList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ResultsPerSSB_IndexList;
+extern asn_SET_OF_specifics_t asn_SPC_ResultsPerSSB_IndexList_specs_1;
+extern asn_TYPE_member_t asn_MBR_ResultsPerSSB_IndexList_1[1];
+extern asn_per_constraints_t asn_PER_type_ResultsPerSSB_IndexList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _ResultsPerSSB_IndexList_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/S-NSSAI.h b/e2sm/headers/S-NSSAI.h
new file mode 100644
index 0000000..c379f99
--- /dev/null
+++ b/e2sm/headers/S-NSSAI.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_S_NSSAI_H_
+#define	_S_NSSAI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* S-NSSAI */
+typedef struct S_NSSAI {
+	OCTET_STRING_t	 sST;
+	OCTET_STRING_t	*sD;	/* OPTIONAL */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} S_NSSAI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_S_NSSAI;
+extern asn_SEQUENCE_specifics_t asn_SPC_S_NSSAI_specs_1;
+extern asn_TYPE_member_t asn_MBR_S_NSSAI_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _S_NSSAI_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/SINR-Range.h b/e2sm/headers/SINR-Range.h
new file mode 100644
index 0000000..8caa08b
--- /dev/null
+++ b/e2sm/headers/SINR-Range.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_SINR_Range_H_
+#define	_SINR_Range_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SINR-Range */
+typedef long	 SINR_Range_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_SINR_Range_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_SINR_Range;
+asn_struct_free_f SINR_Range_free;
+asn_struct_print_f SINR_Range_print;
+asn_constr_check_f SINR_Range_constraint;
+ber_type_decoder_f SINR_Range_decode_ber;
+der_type_encoder_f SINR_Range_encode_der;
+xer_type_decoder_f SINR_Range_decode_xer;
+xer_type_encoder_f SINR_Range_encode_xer;
+oer_type_decoder_f SINR_Range_decode_oer;
+oer_type_encoder_f SINR_Range_encode_oer;
+per_type_decoder_f SINR_Range_decode_uper;
+per_type_encoder_f SINR_Range_encode_uper;
+per_type_decoder_f SINR_Range_decode_aper;
+per_type_encoder_f SINR_Range_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SINR_Range_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/SINR-RangeEUTRA.h b/e2sm/headers/SINR-RangeEUTRA.h
new file mode 100644
index 0000000..5cbb7dc
--- /dev/null
+++ b/e2sm/headers/SINR-RangeEUTRA.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_SINR_RangeEUTRA_H_
+#define	_SINR_RangeEUTRA_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SINR-RangeEUTRA */
+typedef long	 SINR_RangeEUTRA_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_SINR_RangeEUTRA_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_SINR_RangeEUTRA;
+asn_struct_free_f SINR_RangeEUTRA_free;
+asn_struct_print_f SINR_RangeEUTRA_print;
+asn_constr_check_f SINR_RangeEUTRA_constraint;
+ber_type_decoder_f SINR_RangeEUTRA_decode_ber;
+der_type_encoder_f SINR_RangeEUTRA_encode_der;
+xer_type_decoder_f SINR_RangeEUTRA_decode_xer;
+xer_type_encoder_f SINR_RangeEUTRA_encode_xer;
+oer_type_decoder_f SINR_RangeEUTRA_decode_oer;
+oer_type_encoder_f SINR_RangeEUTRA_encode_oer;
+per_type_decoder_f SINR_RangeEUTRA_decode_uper;
+per_type_encoder_f SINR_RangeEUTRA_encode_uper;
+per_type_decoder_f SINR_RangeEUTRA_decode_aper;
+per_type_encoder_f SINR_RangeEUTRA_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SINR_RangeEUTRA_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/SSB-Index.h b/e2sm/headers/SSB-Index.h
new file mode 100644
index 0000000..3d9d6fc
--- /dev/null
+++ b/e2sm/headers/SSB-Index.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_SSB_Index_H_
+#define	_SSB_Index_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SSB-Index */
+typedef long	 SSB_Index_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_SSB_Index_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_SSB_Index;
+asn_struct_free_f SSB_Index_free;
+asn_struct_print_f SSB_Index_print;
+asn_constr_check_f SSB_Index_constraint;
+ber_type_decoder_f SSB_Index_decode_ber;
+der_type_encoder_f SSB_Index_encode_der;
+xer_type_decoder_f SSB_Index_decode_xer;
+xer_type_encoder_f SSB_Index_encode_xer;
+oer_type_decoder_f SSB_Index_decode_oer;
+oer_type_encoder_f SSB_Index_encode_oer;
+per_type_decoder_f SSB_Index_decode_uper;
+per_type_encoder_f SSB_Index_encode_uper;
+per_type_decoder_f SSB_Index_decode_aper;
+per_type_encoder_f SSB_Index_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SSB_Index_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/ServCellIndex.h b/e2sm/headers/ServCellIndex.h
new file mode 100644
index 0000000..27f2d62
--- /dev/null
+++ b/e2sm/headers/ServCellIndex.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_ServCellIndex_H_
+#define	_ServCellIndex_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ServCellIndex */
+typedef long	 ServCellIndex_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_ServCellIndex_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_ServCellIndex;
+asn_struct_free_f ServCellIndex_free;
+asn_struct_print_f ServCellIndex_print;
+asn_constr_check_f ServCellIndex_constraint;
+ber_type_decoder_f ServCellIndex_decode_ber;
+der_type_encoder_f ServCellIndex_encode_der;
+xer_type_decoder_f ServCellIndex_decode_xer;
+xer_type_encoder_f ServCellIndex_encode_xer;
+oer_type_decoder_f ServCellIndex_decode_oer;
+oer_type_encoder_f ServCellIndex_encode_oer;
+per_type_decoder_f ServCellIndex_decode_uper;
+per_type_encoder_f ServCellIndex_encode_uper;
+per_type_decoder_f ServCellIndex_decode_aper;
+per_type_encoder_f ServCellIndex_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _ServCellIndex_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/ServedPlmnPerCellListItem.h b/e2sm/headers/ServedPlmnPerCellListItem.h
new file mode 100644
index 0000000..fbde179
--- /dev/null
+++ b/e2sm/headers/ServedPlmnPerCellListItem.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_ServedPlmnPerCellListItem_H_
+#define	_ServedPlmnPerCellListItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PLMN-Identity.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct FGC_DU_PM_Container;
+struct EPC_DU_PM_Container;
+
+/* ServedPlmnPerCellListItem */
+typedef struct ServedPlmnPerCellListItem {
+	PLMN_Identity_t	 pLMN_Identity;
+	struct FGC_DU_PM_Container	*du_PM_5GC;	/* OPTIONAL */
+	struct EPC_DU_PM_Container	*du_PM_EPC;	/* OPTIONAL */
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} ServedPlmnPerCellListItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ServedPlmnPerCellListItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_ServedPlmnPerCellListItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_ServedPlmnPerCellListItem_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _ServedPlmnPerCellListItem_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/ServingCellMeasurements.h b/e2sm/headers/ServingCellMeasurements.h
new file mode 100644
index 0000000..22f8aa2
--- /dev/null
+++ b/e2sm/headers/ServingCellMeasurements.h
@@ -0,0 +1,61 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_ServingCellMeasurements_H_
+#define	_ServingCellMeasurements_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum ServingCellMeasurements_PR {
+	ServingCellMeasurements_PR_NOTHING,	/* No components present */
+	ServingCellMeasurements_PR_nr_measResultServingMOList,
+	ServingCellMeasurements_PR_eutra_measResultPCell
+	/* Extensions may appear below */
+	
+} ServingCellMeasurements_PR;
+
+/* Forward declarations */
+struct MeasResultServMOList;
+struct MeasResultPCell;
+
+/* ServingCellMeasurements */
+typedef struct ServingCellMeasurements {
+	ServingCellMeasurements_PR present;
+	union ServingCellMeasurements_u {
+		struct MeasResultServMOList	*nr_measResultServingMOList;
+		struct MeasResultPCell	*eutra_measResultPCell;
+		/*
+		 * This type is extensible,
+		 * possible extensions are below.
+		 */
+	} choice;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} ServingCellMeasurements_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ServingCellMeasurements;
+extern asn_CHOICE_specifics_t asn_SPC_ServingCellMeasurements_specs_1;
+extern asn_TYPE_member_t asn_MBR_ServingCellMeasurements_1[2];
+extern asn_per_constraints_t asn_PER_type_ServingCellMeasurements_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _ServingCellMeasurements_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/SlicePerPlmnPerCellListItem.h b/e2sm/headers/SlicePerPlmnPerCellListItem.h
new file mode 100644
index 0000000..406a845
--- /dev/null
+++ b/e2sm/headers/SlicePerPlmnPerCellListItem.h
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_SlicePerPlmnPerCellListItem_H_
+#define	_SlicePerPlmnPerCellListItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "S-NSSAI.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct FQIPERSlicesPerPlmnPerCellListItem;
+
+/* SlicePerPlmnPerCellListItem */
+typedef struct SlicePerPlmnPerCellListItem {
+	S_NSSAI_t	 sliceID;
+	struct SlicePerPlmnPerCellListItem__fQIPERSlicesPerPlmnPerCellList {
+		A_SEQUENCE_OF(struct FQIPERSlicesPerPlmnPerCellListItem) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} fQIPERSlicesPerPlmnPerCellList;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SlicePerPlmnPerCellListItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SlicePerPlmnPerCellListItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_SlicePerPlmnPerCellListItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_SlicePerPlmnPerCellListItem_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SlicePerPlmnPerCellListItem_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/SliceToReportListItem.h b/e2sm/headers/SliceToReportListItem.h
new file mode 100644
index 0000000..9bc8c7e
--- /dev/null
+++ b/e2sm/headers/SliceToReportListItem.h
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_SliceToReportListItem_H_
+#define	_SliceToReportListItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "S-NSSAI.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct FQIPERSlicesPerPlmnListItem;
+
+/* SliceToReportListItem */
+typedef struct SliceToReportListItem {
+	S_NSSAI_t	 sliceID;
+	struct SliceToReportListItem__fQIPERSlicesPerPlmnList {
+		A_SEQUENCE_OF(struct FQIPERSlicesPerPlmnListItem) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} fQIPERSlicesPerPlmnList;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SliceToReportListItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SliceToReportListItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_SliceToReportListItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_SliceToReportListItem_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SliceToReportListItem_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/TimeStamp.h b/e2sm/headers/TimeStamp.h
new file mode 100644
index 0000000..71f9724
--- /dev/null
+++ b/e2sm/headers/TimeStamp.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_TimeStamp_H_
+#define	_TimeStamp_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* TimeStamp */
+typedef OCTET_STRING_t	 TimeStamp_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_TimeStamp_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_TimeStamp;
+asn_struct_free_f TimeStamp_free;
+asn_struct_print_f TimeStamp_print;
+asn_constr_check_f TimeStamp_constraint;
+ber_type_decoder_f TimeStamp_decode_ber;
+der_type_encoder_f TimeStamp_encode_der;
+xer_type_decoder_f TimeStamp_decode_xer;
+xer_type_encoder_f TimeStamp_encode_xer;
+oer_type_decoder_f TimeStamp_decode_oer;
+oer_type_encoder_f TimeStamp_encode_oer;
+per_type_decoder_f TimeStamp_decode_uper;
+per_type_encoder_f TimeStamp_encode_uper;
+per_type_decoder_f TimeStamp_decode_aper;
+per_type_encoder_f TimeStamp_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _TimeStamp_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/Trigger-ConditionIE-Item.h b/e2sm/headers/Trigger-ConditionIE-Item.h
new file mode 100644
index 0000000..fda0039
--- /dev/null
+++ b/e2sm/headers/Trigger-ConditionIE-Item.h
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_Trigger_ConditionIE_Item_H_
+#define	_Trigger_ConditionIE_Item_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RT-Period-IE.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Trigger-ConditionIE-Item */
+typedef struct Trigger_ConditionIE_Item {
+	RT_Period_IE_t	 report_Period_IE;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} Trigger_ConditionIE_Item_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_Trigger_ConditionIE_Item;
+extern asn_SEQUENCE_specifics_t asn_SPC_Trigger_ConditionIE_Item_specs_1;
+extern asn_TYPE_member_t asn_MBR_Trigger_ConditionIE_Item_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _Trigger_ConditionIE_Item_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/TriggeringMessage.h b/e2sm/headers/TriggeringMessage.h
new file mode 100644
index 0000000..c2c1987
--- /dev/null
+++ b/e2sm/headers/TriggeringMessage.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_TriggeringMessage_H_
+#define	_TriggeringMessage_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum TriggeringMessage {
+	TriggeringMessage_initiating_message	= 0,
+	TriggeringMessage_successful_outcome	= 1,
+	TriggeringMessage_unsuccessfull_outcome	= 2
+} e_TriggeringMessage;
+
+/* TriggeringMessage */
+typedef long	 TriggeringMessage_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_TriggeringMessage;
+asn_struct_free_f TriggeringMessage_free;
+asn_struct_print_f TriggeringMessage_print;
+asn_constr_check_f TriggeringMessage_constraint;
+ber_type_decoder_f TriggeringMessage_decode_ber;
+der_type_encoder_f TriggeringMessage_encode_der;
+xer_type_decoder_f TriggeringMessage_decode_xer;
+xer_type_encoder_f TriggeringMessage_encode_xer;
+oer_type_decoder_f TriggeringMessage_decode_oer;
+oer_type_encoder_f TriggeringMessage_encode_oer;
+per_type_decoder_f TriggeringMessage_decode_uper;
+per_type_encoder_f TriggeringMessage_encode_uper;
+per_type_decoder_f TriggeringMessage_decode_aper;
+per_type_encoder_f TriggeringMessage_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _TriggeringMessage_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/UE-Identity.h b/e2sm/headers/UE-Identity.h
new file mode 100644
index 0000000..9f62ee5
--- /dev/null
+++ b/e2sm/headers/UE-Identity.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-RC"
+ * 	found in "e2sm-kpm-rc.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#ifndef	_UE_Identity_H_
+#define	_UE_Identity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UE-Identity */
+typedef OCTET_STRING_t	 UE_Identity_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UE_Identity;
+asn_struct_free_f UE_Identity_free;
+asn_struct_print_f UE_Identity_print;
+asn_constr_check_f UE_Identity_constraint;
+ber_type_decoder_f UE_Identity_decode_ber;
+der_type_encoder_f UE_Identity_encode_der;
+xer_type_decoder_f UE_Identity_decode_xer;
+xer_type_encoder_f UE_Identity_encode_xer;
+oer_type_decoder_f UE_Identity_decode_oer;
+oer_type_encoder_f UE_Identity_encode_oer;
+per_type_decoder_f UE_Identity_decode_uper;
+per_type_encoder_f UE_Identity_encode_uper;
+per_type_decoder_f UE_Identity_decode_aper;
+per_type_encoder_f UE_Identity_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _UE_Identity_H_ */
+#include <asn_internal.h>
diff --git a/e2sm/headers/asn_SEQUENCE_OF.h b/e2sm/headers/asn_SEQUENCE_OF.h
new file mode 100644
index 0000000..e35bc44
--- /dev/null
+++ b/e2sm/headers/asn_SEQUENCE_OF.h
@@ -0,0 +1,52 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	ASN_SEQUENCE_OF_H
+#define	ASN_SEQUENCE_OF_H
+
+#include <asn_SET_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * SEQUENCE OF is the same as SET OF with a tiny difference:
+ * the delete operation preserves the initial order of elements
+ * and thus MAY operate in non-constant time.
+ */
+#define	A_SEQUENCE_OF(type)	A_SET_OF(type)
+
+#define	ASN_SEQUENCE_ADD(headptr, ptr)		\
+	asn_sequence_add((headptr), (ptr))
+
+/***********************************************
+ * Implementation of the SEQUENCE OF structure.
+ */
+
+#define	asn_sequence_add	asn_set_add
+#define	asn_sequence_empty	asn_set_empty
+
+/*
+ * Delete the element from the set by its number (base 0).
+ * This is NOT a constant-time operation.
+ * The order of elements is preserved.
+ * If _do_free is given AND the (*free) is initialized, the element
+ * will be freed using the custom (*free) function as well.
+ */
+void asn_sequence_del(void *asn_sequence_of_x, int number, int _do_free);
+
+/*
+ * Cope with different conversions requirements to/from void in C and C++.
+ * This is mostly useful for support library.
+ */
+typedef A_SEQUENCE_OF(void) asn_anonymous_sequence_;
+#define _A_SEQUENCE_FROM_VOID(ptr)	((asn_anonymous_sequence_ *)(ptr))
+#define _A_CSEQUENCE_FROM_VOID(ptr) 	((const asn_anonymous_sequence_ *)(ptr))
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* ASN_SEQUENCE_OF_H */
diff --git a/e2sm/headers/asn_SET_OF.h b/e2sm/headers/asn_SET_OF.h
new file mode 100644
index 0000000..882e1a4
--- /dev/null
+++ b/e2sm/headers/asn_SET_OF.h
@@ -0,0 +1,72 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	ASN_SET_OF_H
+#define	ASN_SET_OF_H
+
+#ifdef __cplusplus
+#define A_SET_OF(type)                   \
+    struct {                             \
+        type **array;                    \
+        int count; /* Meaningful size */ \
+        int size;  /* Allocated size */  \
+        void (*free)(decltype(*array));  \
+    }
+#else   /* C */
+#define A_SET_OF(type)                   \
+    struct {                             \
+        type **array;                    \
+        int count; /* Meaningful size */ \
+        int size;  /* Allocated size */  \
+        void (*free)(type *);    \
+    }
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define	ASN_SET_ADD(headptr, ptr)		\
+	asn_set_add((headptr), (ptr))
+
+/*******************************************
+ * Implementation of the SET OF structure.
+ */
+
+/*
+ * Add another structure into the set by its pointer.
+ * RETURN VALUES:
+ * 0 for success and -1/errno for failure.
+ */
+int  asn_set_add(void *asn_set_of_x, void *ptr);
+
+/*
+ * Delete the element from the set by its number (base 0).
+ * This is a constant-time operation. The order of elements before the
+ * deleted ones is guaranteed, the order of elements after the deleted
+ * one is NOT guaranteed.
+ * If _do_free is given AND the (*free) is initialized, the element
+ * will be freed using the custom (*free) function as well.
+ */
+void asn_set_del(void *asn_set_of_x, int number, int _do_free);
+
+/*
+ * Empty the contents of the set. Will free the elements, if (*free) is given.
+ * Will NOT free the set itself.
+ */
+void asn_set_empty(void *asn_set_of_x);
+
+/*
+ * Cope with different conversions requirements to/from void in C and C++.
+ * This is mostly useful for support library.
+ */
+typedef A_SET_OF(void) asn_anonymous_set_;
+#define _A_SET_FROM_VOID(ptr)		((asn_anonymous_set_ *)(ptr))
+#define _A_CSET_FROM_VOID(ptr)		((const asn_anonymous_set_ *)(ptr))
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* ASN_SET_OF_H */
diff --git a/e2sm/headers/asn_application.h b/e2sm/headers/asn_application.h
new file mode 100644
index 0000000..034f646
--- /dev/null
+++ b/e2sm/headers/asn_application.h
@@ -0,0 +1,171 @@
+/*-
+ * Copyright (c) 2004-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+/*
+ * Application-level ASN.1 callbacks.
+ */
+#ifndef	ASN_APPLICATION_H
+#define	ASN_APPLICATION_H
+
+#include "asn_system.h"		/* for platform-dependent types */
+#include "asn_codecs.h"		/* for ASN.1 codecs specifics */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * A selection of ASN.1 Transfer Syntaxes to use with generalized
+ * encoders and decoders declared further in this .h file.
+ */
+enum asn_transfer_syntax {
+    /* Avoid appearance of a default transfer syntax. */
+    ATS_INVALID = 0,
+    /* Plaintext output (not conforming to any standard), for debugging. */
+    ATS_NONSTANDARD_PLAINTEXT,
+    /* Returns a randomly generated structure. */
+    ATS_RANDOM,
+    /*
+     * X.690:
+     * BER: Basic Encoding Rules.
+     * DER: Distinguished Encoding Rules.
+     * CER: Canonical Encoding Rules.
+     * DER and CER are more strict variants of BER.
+     */
+    ATS_BER,
+    ATS_DER,
+    ATS_CER, /* Only decoding is supported */
+    /*
+     * X.696:
+     * OER: Octet Encoding Rules.
+     * CANONICAL-OER is a more strict variant of BASIC-OER.
+     */
+    ATS_BASIC_OER,
+    ATS_CANONICAL_OER,
+    /*
+     * X.691:
+     * PER: Packed Encoding Rules.
+     * CANONICAL-PER is a more strict variant of BASIC-PER.
+     * NOTE: Produces or consumes a complete encoding (X.691 (08/2015) #11.1).
+     */
+    ATS_UNALIGNED_BASIC_PER,
+    ATS_UNALIGNED_CANONICAL_PER,
+    ATS_ALIGNED_BASIC_PER,
+    ATS_ALIGNED_CANONICAL_PER,
+    /*
+     * X.693:
+     * XER: XML Encoding Rules.
+     * CANONICAL-XER is a more strict variant of BASIC-XER.
+     */
+    ATS_BASIC_XER,
+    ATS_CANONICAL_XER
+};
+
+/*
+ * A generic encoder for any supported transfer syntax.
+ * RETURN VALUES:
+ * The (.encoded) field of the return value is REDEFINED to mean the following:
+ * >=0: The computed size of the encoded data. Can exceed the (buffer_size).
+ *  -1: Error encoding the structure. See the error code in (errno):
+ *      EINVAL: Incorrect parameters to the function, such as NULLs.
+ *      ENOENT: Encoding transfer syntax is not defined (for this type).
+ *      EBADF:  The structure has invalid form or content constraint failed.
+ *      The (.failed_type) and (.structure_ptr) MIGHT be set to the appropriate
+ *      values at the place of failure, if at all possible.
+ * WARNING: The (.encoded) field of the return value can exceed the buffer_size.
+ * This is similar to snprintf(3) contract which might return values
+ * greater than the buffer size.
+ */
+asn_enc_rval_t asn_encode_to_buffer(
+    const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */
+    enum asn_transfer_syntax,
+    const struct asn_TYPE_descriptor_s *type_to_encode,
+    const void *structure_to_encode, void *buffer, size_t buffer_size);
+
+/*
+ * A variant of asn_encode_to_buffer() with automatically allocated buffer.
+ * RETURN VALUES:
+ * On success, returns a newly allocated (.buffer) containing the whole message.
+ * The message size is returned in (.result.encoded).
+ * On failure:
+ *  (.buffer) is NULL,
+ *  (.result.encoded) as in asn_encode_to_buffer(),
+ *  The errno codes as in asn_encode_to_buffer(), plus the following:
+ *      ENOMEM: Memory allocation failed due to system or internal limits.
+ * The user is responsible for freeing the (.buffer).
+ */
+typedef struct asn_encode_to_new_buffer_result_s {
+    void *buffer;   /* NULL if failed to encode. */
+    asn_enc_rval_t result;
+} asn_encode_to_new_buffer_result_t;
+asn_encode_to_new_buffer_result_t asn_encode_to_new_buffer(
+    const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */
+    enum asn_transfer_syntax,
+    const struct asn_TYPE_descriptor_s *type_to_encode,
+    const void *structure_to_encode);
+
+
+/*
+ * Generic type of an application-defined callback to return various
+ * types of data to the application.
+ * EXPECTED RETURN VALUES:
+ *  -1: Failed to consume bytes. Abort the mission.
+ * Non-negative return values indicate success, and ignored.
+ */
+typedef int(asn_app_consume_bytes_f)(const void *buffer, size_t size,
+                                     void *application_specific_key);
+
+
+/*
+ * A generic encoder for any supported transfer syntax.
+ * Returns the comprehensive encoding result descriptor (see asn_codecs.h).
+ * RETURN VALUES:
+ * The negative (.encoded) field of the return values is accompanied with the
+ * following error codes (errno):
+ *      EINVAL: Incorrect parameters to the function, such as NULLs.
+ *      ENOENT: Encoding transfer syntax is not defined (for this type).
+ *      EBADF:  The structure has invalid form or content constraint failed.
+ *      EIO:    The (callback) has returned negative value during encoding.
+ */
+asn_enc_rval_t asn_encode(
+    const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */
+    enum asn_transfer_syntax,
+    const struct asn_TYPE_descriptor_s *type_to_encode,
+    const void *structure_to_encode,
+    asn_app_consume_bytes_f *callback, void *callback_key);
+
+
+/*
+ * A generic decoder for any supported transfer syntax.
+ */
+asn_dec_rval_t asn_decode(
+    const asn_codec_ctx_t *opt_codec_parameters, enum asn_transfer_syntax,
+    const struct asn_TYPE_descriptor_s *type_to_decode,
+    void **structure_ptr, /* Pointer to a target structure's pointer */
+    const void *buffer,   /* Data to be decoded */
+    size_t size           /* Size of that buffer */
+);
+
+
+/*
+ * A callback of this type is called whenever constraint validation fails
+ * on some ASN.1 type. See "constraints.h" for more details on constraint
+ * validation.
+ * This callback specifies a descriptor of the ASN.1 type which failed
+ * the constraint check, as well as human readable message on what
+ * particular constraint has failed.
+ */
+typedef void (asn_app_constraint_failed_f)(void *application_specific_key,
+	const struct asn_TYPE_descriptor_s *type_descriptor_which_failed,
+	const void *structure_which_failed_ptr,
+	const char *error_message_format, ...) CC_PRINTFLIKE(4, 5);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#include "constr_TYPE.h"	/* for asn_TYPE_descriptor_t */
+
+#endif	/* ASN_APPLICATION_H */
diff --git a/e2sm/headers/asn_bit_data.h b/e2sm/headers/asn_bit_data.h
new file mode 100644
index 0000000..59de7af
--- /dev/null
+++ b/e2sm/headers/asn_bit_data.h
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2005-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	ASN_BIT_DATA
+#define	ASN_BIT_DATA
+
+#include <asn_system.h>		/* Platform-specific types */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * This structure describes a position inside an incoming PER bit stream.
+ */
+typedef struct asn_bit_data_s {
+  const uint8_t *buffer;  /* Pointer to the octet stream */
+         size_t  nboff;   /* Bit offset to the meaningful bit */
+         size_t  nbits;   /* Number of bits in the stream */
+         size_t  moved;   /* Number of bits moved through this bit stream */
+  int (*refill)(struct asn_bit_data_s *);
+  void *refill_key;
+} asn_bit_data_t;
+
+/*
+ * Create a contiguous non-refillable bit data structure.
+ * Can be freed by FREEMEM().
+ */
+asn_bit_data_t *asn_bit_data_new_contiguous(const void *data, size_t size_bits);
+
+/*
+ * Extract a small number of bits (<= 31) from the specified PER data pointer.
+ * This function returns -1 if the specified number of bits could not be
+ * extracted due to EOD or other conditions.
+ */
+int32_t asn_get_few_bits(asn_bit_data_t *, int get_nbits);
+
+/* Undo the immediately preceeding "get_few_bits" operation */
+void asn_get_undo(asn_bit_data_t *, int get_nbits);
+
+/*
+ * Extract a large number of bits from the specified PER data pointer.
+ * This function returns -1 if the specified number of bits could not be
+ * extracted due to EOD or other conditions.
+ */
+int asn_get_many_bits(asn_bit_data_t *, uint8_t *dst, int right_align,
+			int get_nbits);
+
+/* Non-thread-safe debugging function, don't use it */
+char *asn_bit_data_string(asn_bit_data_t *);
+
+/*
+ * This structure supports forming bit output.
+ */
+typedef struct asn_bit_outp_s {
+	uint8_t *buffer;	/* Pointer into the (tmpspace) */
+	size_t nboff;		/* Bit offset to the meaningful bit */
+	size_t nbits;		/* Number of bits left in (tmpspace) */
+	uint8_t tmpspace[32];	/* Preliminary storage to hold data */
+	int (*output)(const void *data, size_t size, void *op_key);
+	void *op_key;		/* Key for (output) data callback */
+	size_t flushed_bytes;	/* Bytes already flushed through (output) */
+} asn_bit_outp_t;
+
+/* Output a small number of bits (<= 31) */
+int asn_put_few_bits(asn_bit_outp_t *, uint32_t bits, int obits);
+
+/* Output a large number of bits */
+int asn_put_many_bits(asn_bit_outp_t *, const uint8_t *src, int put_nbits);
+
+/*
+ * Flush whole bytes (0 or more) through (outper) member.
+ * The least significant bits which are not used are guaranteed to be set to 0.
+ * Returns -1 if callback returns -1. Otherwise, 0.
+ */
+int asn_put_aligned_flush(asn_bit_outp_t *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* ASN_BIT_DATA */
diff --git a/e2sm/headers/asn_codecs.h b/e2sm/headers/asn_codecs.h
new file mode 100644
index 0000000..e75c270
--- /dev/null
+++ b/e2sm/headers/asn_codecs.h
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	ASN_CODECS_H
+#define	ASN_CODECS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct asn_TYPE_descriptor_s;	/* Forward declaration */
+
+/*
+ * This structure defines a set of parameters that may be passed
+ * to every ASN.1 encoder or decoder function.
+ * WARNING: if max_stack_size member is set, and you are calling the
+ *   function pointers of the asn_TYPE_descriptor_t directly,
+ *   this structure must be ALLOCATED ON THE STACK!
+ *   If you can't always satisfy this requirement, use ber_decode(),
+ *   xer_decode() and uper_decode() functions instead.
+ */
+typedef struct asn_codec_ctx_s {
+	/*
+	 * Limit the decoder routines to use no (much) more stack than a given
+	 * number of bytes. Most of decoders are stack-based, and this
+	 * would protect against stack overflows if the number of nested
+	 * encodings is high.
+	 * The OCTET STRING, BIT STRING and ANY BER decoders are heap-based,
+	 * and are safe from this kind of overflow.
+	 * A value from getrlimit(RLIMIT_STACK) may be used to initialize
+	 * this variable. Be careful in multithreaded environments, as the
+	 * stack size is rather limited.
+	 */
+	size_t  max_stack_size; /* 0 disables stack bounds checking */
+} asn_codec_ctx_t;
+
+/*
+ * Type of the return value of the encoding functions (der_encode, xer_encode).
+ */
+typedef struct asn_enc_rval_s {
+	/*
+	 * Number of bytes encoded.
+	 * -1 indicates failure to encode the structure.
+	 * In this case, the members below this one are meaningful.
+	 */
+	ssize_t encoded;
+
+	/*
+	 * Members meaningful when (encoded == -1), for post mortem analysis.
+	 */
+
+	/* Type which cannot be encoded */
+	const struct asn_TYPE_descriptor_s *failed_type;
+
+	/* Pointer to the structure of that type */
+	const void *structure_ptr;
+} asn_enc_rval_t;
+#define	ASN__ENCODE_FAILED do {					\
+	asn_enc_rval_t tmp_error;				\
+	tmp_error.encoded = -1;					\
+	tmp_error.failed_type = td;				\
+	tmp_error.structure_ptr = sptr;				\
+	ASN_DEBUG("Failed to encode element %s", td ? td->name : "");	\
+	return tmp_error;					\
+} while(0)
+#define	ASN__ENCODED_OK(rval) do {				\
+	rval.structure_ptr = 0;					\
+	rval.failed_type = 0;					\
+	return rval;						\
+} while(0)
+
+/*
+ * Type of the return value of the decoding functions (ber_decode, xer_decode)
+ * 
+ * Please note that the number of consumed bytes is ALWAYS meaningful,
+ * even if code==RC_FAIL. This is to indicate the number of successfully
+ * decoded bytes, hence providing a possibility to fail with more diagnostics
+ * (i.e., print the offending remainder of the buffer).
+ */
+enum asn_dec_rval_code_e {
+	RC_OK,		/* Decoded successfully */
+	RC_WMORE,	/* More data expected, call again */
+	RC_FAIL		/* Failure to decode data */
+};
+typedef struct asn_dec_rval_s {
+	enum asn_dec_rval_code_e code;	/* Result code */
+	size_t consumed;		/* Number of bytes consumed */
+} asn_dec_rval_t;
+#define	ASN__DECODE_FAILED do {					\
+	asn_dec_rval_t tmp_error;				\
+	tmp_error.code = RC_FAIL;				\
+	tmp_error.consumed = 0;					\
+	ASN_DEBUG("Failed to decode element %s", td ? td->name : "");	\
+	return tmp_error;					\
+} while(0)
+#define	ASN__DECODE_STARVED do {				\
+	asn_dec_rval_t tmp_error;				\
+	tmp_error.code = RC_WMORE;				\
+	tmp_error.consumed = 0;					\
+	return tmp_error;					\
+} while(0)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* ASN_CODECS_H */
diff --git a/e2sm/headers/asn_codecs_prim.h b/e2sm/headers/asn_codecs_prim.h
new file mode 100644
index 0000000..fbc5576
--- /dev/null
+++ b/e2sm/headers/asn_codecs_prim.h
@@ -0,0 +1,51 @@
+/*-
+ * Copyright (c) 2004-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	ASN_CODECS_PRIM_H
+#define	ASN_CODECS_PRIM_H
+
+#include <asn_application.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct ASN__PRIMITIVE_TYPE_s {
+    uint8_t *buf;   /* Buffer with consecutive primitive encoding bytes */
+    size_t size;    /* Size of the buffer */
+} ASN__PRIMITIVE_TYPE_t;	/* Do not use this type directly! */
+
+asn_struct_free_f ASN__PRIMITIVE_TYPE_free;
+ber_type_decoder_f ber_decode_primitive;
+der_type_encoder_f der_encode_primitive;
+
+/*
+ * A callback specification for the xer_decode_primitive() function below.
+ */
+enum xer_pbd_rval {
+    XPBD_SYSTEM_FAILURE,  /* System failure (memory shortage, etc) */
+    XPBD_DECODER_LIMIT,   /* Hit some decoder limitation or deficiency */
+    XPBD_BROKEN_ENCODING, /* Encoding of a primitive body is broken */
+    XPBD_NOT_BODY_IGNORE, /* Not a body format, but safe to ignore */
+    XPBD_BODY_CONSUMED    /* Body is recognized and consumed */
+};
+typedef enum xer_pbd_rval(xer_primitive_body_decoder_f)(
+    const asn_TYPE_descriptor_t *td, void *struct_ptr, const void *chunk_buf,
+    size_t chunk_size);
+
+/*
+ * Specific function to decode simple primitive types.
+ * Also see xer_decode_general() in xer_decoder.h
+ */
+asn_dec_rval_t xer_decode_primitive(
+    const asn_codec_ctx_t *opt_codec_ctx,
+    const asn_TYPE_descriptor_t *type_descriptor, void **struct_ptr,
+    size_t struct_size, const char *opt_mname, const void *buf_ptr, size_t size,
+    xer_primitive_body_decoder_f *prim_body_decoder);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* ASN_CODECS_PRIM_H */
diff --git a/e2sm/headers/asn_constant.h b/e2sm/headers/asn_constant.h
new file mode 100644
index 0000000..df0a143
--- /dev/null
+++ b/e2sm/headers/asn_constant.h
@@ -0,0 +1,40 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ */
+
+#ifndef _ASN_CONSTANT_H
+#define _ASN_CONSTANT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define maxCellReport (8)
+#define maxNrofSSBs_1 (63)
+#define maxNrofCSI_RS_ResourcesRRM_1 (95)
+#define maxNrofServingCells (32)
+#define maxNrofServingCells_1 (31)
+#define maxNrofIndexesToReport2 (64)
+#define maxnoofMeasurementInfo (65535)
+#define maxofMessageProtocolTests (15)
+#define maxnoofQCI (256)
+#define maxnoofQoSFlows (64)
+#define maxnoofSliceItems (1024)
+#define maxnoofContainerListItems (3)
+#define maxCellingNBDU (512)
+#define maxofContainers (8)
+#define maxPLMN (12)
+#define maxnoofUEs (65535)
+#define maxnoofPMMeasurements (2147483647)
+#define maxnoofRICStyles (63)
+#define maxnoofAssociatedRANInfo (4294967295)
+#define maxnoofParametersInStructure (4294967295)
+#define maxnoofItemsInList (4294967295)
+#define maxnoofControlAction (65535)
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ASN_CONSTANT_H */
diff --git a/e2sm/headers/asn_internal.h b/e2sm/headers/asn_internal.h
new file mode 100644
index 0000000..c4105ad
--- /dev/null
+++ b/e2sm/headers/asn_internal.h
@@ -0,0 +1,159 @@
+/*
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+/*
+ * Declarations internally useful for the ASN.1 support code.
+ */
+#ifndef	ASN_INTERNAL_H
+#define	ASN_INTERNAL_H
+#define __EXTENSIONS__          /* for Sun */
+
+#include "asn_application.h"	/* Application-visible API */
+
+#ifndef	__NO_ASSERT_H__		/* Include assert.h only for internal use. */
+#include <assert.h>		/* for assert() macro */
+#endif
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+/* Environment version might be used to avoid running with the old library */
+#define	ASN1C_ENVIRONMENT_VERSION	923	/* Compile-time version */
+int get_asn1c_environment_version(void);	/* Run-time version */
+
+#define	CALLOC(nmemb, size)	calloc(nmemb, size)
+#define	MALLOC(size)		malloc(size)
+#define	REALLOC(oldptr, size)	realloc(oldptr, size)
+#define	FREEMEM(ptr)		free(ptr)
+
+#define	asn_debug_indent	0
+#define ASN_DEBUG_INDENT_ADD(i) do{}while(0)
+
+#ifdef  EMIT_ASN_DEBUG
+#warning "Use ASN_EMIT_DEBUG instead of EMIT_ASN_DEBUG"
+#define ASN_EMIT_DEBUG  EMIT_ASN_DEBUG
+#endif
+
+/*
+ * A macro for debugging the ASN.1 internals.
+ * You may enable or override it.
+ */
+#ifndef	ASN_DEBUG	/* If debugging code is not defined elsewhere... */
+#if	ASN_EMIT_DEBUG == 1	/* And it was asked to emit this code... */
+#if !defined(BELL_LABS) /* Bell Labs */
+  //#if __STDC_VERSION__ >= 199901L
+#ifdef	ASN_THREAD_SAFE
+/* Thread safety requires sacrifice in output indentation:
+ * Retain empty definition of ASN_DEBUG_INDENT_ADD. */
+#else	/* !ASN_THREAD_SAFE */
+#undef  ASN_DEBUG_INDENT_ADD
+#undef  asn_debug_indent
+int asn_debug_indent;
+#define ASN_DEBUG_INDENT_ADD(i) do { asn_debug_indent += i; } while(0)
+#endif	/* ASN_THREAD_SAFE */
+#if defined(BELL_LABS) /* Bell Labs version */
+extern int logAsn1c(const char *filename, int linenumber, const char *format, ...);  
+#define	ASN_DEBUG(fmt, args...)	do {		        \
+    (void) logAsn1c(__FILE__, __LINE__, fmt, ##args);	\
+  } while(0)
+#else  
+#define	ASN_DEBUG(fmt, args...)	do {			\
+		int adi = asn_debug_indent;		\
+		while(adi--) fprintf(stderr, " ");	\
+		fprintf(stderr, fmt, ##args);		\
+		fprintf(stderr, " (%s:%d)\n",		\
+			__FILE__, __LINE__);		\
+	} while(0)
+#endif /* BELL_LABS */  
+#else	/* !C99 */
+void CC_PRINTFLIKE(1, 2) ASN_DEBUG_f(const char *fmt, ...);
+#define	ASN_DEBUG	ASN_DEBUG_f
+#endif	/* C99 */
+#else	/* ASN_EMIT_DEBUG != 1 */
+#if __STDC_VERSION__ >= 199901L
+#define ASN_DEBUG(...) do{}while(0)
+#else   /* not C99 */
+static void CC_PRINTFLIKE(1, 2) ASN_DEBUG(const char *fmt, ...) { (void)fmt; }
+#endif  /* C99 or better */
+#endif	/* ASN_EMIT_DEBUG */
+#endif	/* ASN_DEBUG */
+
+/*
+ * Print to a callback.
+ * The callback is expected to return negative values on error.
+ * 0 and positive values are treated as success.
+ * RETURN VALUES:
+ *  -1: Failed to format or invoke the callback.
+ *  >0: Size of the data that got delivered to the callback.
+ */
+ssize_t CC_PRINTFLIKE(3, 4)
+asn__format_to_callback(
+    int (*callback)(const void *, size_t, void *key), void *key,
+    const char *fmt, ...);
+
+/*
+ * Invoke the application-supplied callback and fail, if something is wrong.
+ */
+#define ASN__E_cbc(buf, size) (cb((buf), (size), app_key) < 0)
+#define ASN__E_CALLBACK(size, foo) \
+    do {                           \
+        if(foo) goto cb_failed;    \
+        er.encoded += (size);      \
+    } while(0)
+#define ASN__CALLBACK(buf, size) ASN__E_CALLBACK(size, ASN__E_cbc(buf, size))
+#define ASN__CALLBACK2(buf1, size1, buf2, size2) \
+    ASN__E_CALLBACK((size1) + (size2),           \
+                    ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2))
+#define ASN__CALLBACK3(buf1, size1, buf2, size2, buf3, size3)          \
+    ASN__E_CALLBACK((size1) + (size2) + (size3),                       \
+                    ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2) \
+                        || ASN__E_cbc(buf3, size3))
+
+#define ASN__TEXT_INDENT(nl, level)                                          \
+    do {                                                                     \
+        int tmp_level = (level);                                             \
+        int tmp_nl = ((nl) != 0);                                            \
+        int tmp_i;                                                           \
+        if(tmp_nl) ASN__CALLBACK("\n", 1);                                   \
+        if(tmp_level < 0) tmp_level = 0;                                     \
+        for(tmp_i = 0; tmp_i < tmp_level; tmp_i++) ASN__CALLBACK("    ", 4); \
+    } while(0)
+
+#define	_i_INDENT(nl)	do {                        \
+        int tmp_i;                                  \
+        if((nl) && cb("\n", 1, app_key) < 0)        \
+            return -1;                              \
+        for(tmp_i = 0; tmp_i < ilevel; tmp_i++)     \
+            if(cb("    ", 4, app_key) < 0)          \
+                return -1;                          \
+    } while(0)
+
+/*
+ * Check stack against overflow, if limit is set.
+ */
+#define	ASN__DEFAULT_STACK_MAX	(30000)
+static int CC_NOTUSED
+ASN__STACK_OVERFLOW_CHECK(const asn_codec_ctx_t *ctx) {
+	if(ctx && ctx->max_stack_size) {
+
+		/* ctx MUST be allocated on the stack */
+		ptrdiff_t usedstack = ((const char *)ctx - (const char *)&ctx);
+		if(usedstack > 0) usedstack = -usedstack; /* grows up! */
+
+		/* double negative required to avoid int wrap-around */
+		if(usedstack < -(ptrdiff_t)ctx->max_stack_size) {
+			ASN_DEBUG("Stack limit %ld reached",
+				(long)ctx->max_stack_size);
+			return -1;
+		}
+	}
+	return 0;
+}
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* ASN_INTERNAL_H */
diff --git a/e2sm/headers/asn_ioc.h b/e2sm/headers/asn_ioc.h
new file mode 100644
index 0000000..7de210e
--- /dev/null
+++ b/e2sm/headers/asn_ioc.h
@@ -0,0 +1,51 @@
+/*
+ * Run-time support for Information Object Classes.
+ * Copyright (c) 2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	ASN_IOC_H
+#define	ASN_IOC_H
+
+#include <asn_system.h>		/* Platform-specific types */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct asn_TYPE_descriptor_s;
+struct asn_ioc_cell_s;
+
+/*
+ * X.681, #13
+ */
+typedef struct asn_ioc_set_s {
+    size_t rows_count;
+    size_t columns_count;
+    const struct asn_ioc_cell_s *rows;
+} asn_ioc_set_t;
+
+
+typedef struct asn_ioc_cell_s {
+    const char *field_name; /* Is equal to corresponding column_name */
+    enum {
+        aioc__undefined = 0,
+        aioc__value,
+        aioc__type,
+        aioc__open_type,
+    } cell_kind;
+    struct asn_TYPE_descriptor_s *type_descriptor;
+    const void *value_sptr;
+    struct {
+        size_t types_count;
+        struct {
+            unsigned choice_position;
+        } *types;
+    } open_type;
+} asn_ioc_cell_t;
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* ASN_IOC_H */
diff --git a/e2sm/headers/asn_random_fill.h b/e2sm/headers/asn_random_fill.h
new file mode 100644
index 0000000..47f9b8a
--- /dev/null
+++ b/e2sm/headers/asn_random_fill.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	ASN_RANDOM_FILL
+#define	ASN_RANDOM_FILL
+
+/* Forward declarations */
+struct asn_TYPE_descriptor_s;
+struct asn_encoding_constraints_s;
+
+/*
+ * Initialize a structure with random data according to the type specification
+ * and optional member constraints.
+ * ARGUMENTS:
+ *  (max_length)        - See (approx_max_length_limit).
+ *  (memb_constraints)  - Member constraints, if exist.
+ *                        The type can be constrained differently according
+ *                        to PER and OER specifications, so we find a value
+ *                        at the intersection of these constraints.
+ * In case the return differs from ARFILL_OK, the (struct_ptr) contents
+ * and (current_length) value remain in their original state.
+ */
+typedef struct asn_random_fill_result_s {
+    enum {
+        ARFILL_FAILED = -1, /* System error (memory?) */
+        ARFILL_OK = 0,      /* Initialization succeeded */
+        ARFILL_SKIPPED = 1  /* Not done due to (length?) constraint */
+    } code;
+    size_t length; /* Approximate number of bytes created. */
+} asn_random_fill_result_t;
+typedef asn_random_fill_result_t(asn_random_fill_f)(
+    const struct asn_TYPE_descriptor_s *td, void **struct_ptr,
+    const struct asn_encoding_constraints_s *memb_constraints,
+    size_t max_length);
+
+/*
+ * Returns 0 if the structure was properly initialized, -1 otherwise.
+ * The (approx_max_length_limit) specifies the approximate limit of the
+ * resulting structure in units closely resembling bytes. The actual result
+ * might be several times larger or smaller than the length limit.
+ */
+int asn_random_fill(const struct asn_TYPE_descriptor_s *td, void **struct_ptr,
+                    size_t approx_max_length_limit);
+
+/*
+ * Returns a random number between min and max.
+ */
+intmax_t asn_random_between(intmax_t min, intmax_t max);
+
+#endif	/* ASN_RANDOM_FILL */
diff --git a/e2sm/headers/asn_system.h b/e2sm/headers/asn_system.h
new file mode 100644
index 0000000..898f122
--- /dev/null
+++ b/e2sm/headers/asn_system.h
@@ -0,0 +1,154 @@
+/*
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+/*
+ * Miscellaneous system-dependent types.
+ */
+#ifndef	ASN_SYSTEM_H
+#define	ASN_SYSTEM_H
+
+#ifdef	HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef _DEFAULT_SOURCE
+#define _DEFAULT_SOURCE 1
+#endif
+
+#ifndef _BSD_SOURCE
+#define _BSD_SOURCE /* for snprintf() on some linux systems  */
+#endif
+
+#include <stdio.h>	/* For snprintf(3) */
+#include <stdlib.h>	/* For *alloc(3) */
+#include <string.h>	/* For memcpy(3) */
+#include <sys/types.h>	/* For size_t */
+#include <limits.h>	/* For LONG_MAX */
+#include <stdarg.h>	/* For va_start */
+#include <stddef.h>	/* for offsetof and ptrdiff_t */
+
+#ifdef	_WIN32
+
+#include <malloc.h>
+#define	 snprintf	_snprintf
+#define	 vsnprintf	_vsnprintf
+
+/* To avoid linking with ws2_32.lib, here's the definition of ntohl() */
+#define sys_ntohl(l)	((((l) << 24)  & 0xff000000)	\
+			| (((l) << 8) & 0xff0000)	\
+			| (((l) >> 8)  & 0xff00)	\
+			| ((l >> 24) & 0xff))
+
+#ifdef _MSC_VER			/* MSVS.Net */
+#ifndef __cplusplus
+#define inline __inline
+#endif
+#ifndef	ASSUMESTDTYPES	/* Standard types have been defined elsewhere */
+#define	ssize_t		SSIZE_T
+#if _MSC_VER < 1600
+typedef	char		int8_t;
+typedef	short		int16_t;
+typedef	int		int32_t;
+typedef	unsigned char	uint8_t;
+typedef	unsigned short	uint16_t;
+typedef	unsigned int	uint32_t;
+#else /* _MSC_VER >= 1600 */
+#include <stdint.h>
+#endif /* _MSC_VER < 1600 */
+#endif	/* ASSUMESTDTYPES */
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <float.h>
+#define isnan _isnan
+#define finite _finite
+#define copysign _copysign
+#ifdef WIN32	//MCHECK
+	#define ilogb ilogb
+#else
+	#define	ilogb	_logb
+#endif
+#else	/* !_MSC_VER */
+#include <stdint.h>
+#endif	/* _MSC_VER */
+
+#else	/* !_WIN32 */
+
+#if defined(__vxworks)
+#include <types/vxTypes.h>
+#else	/* !defined(__vxworks) */
+
+#include <inttypes.h>	/* C99 specifies this file */
+#include <netinet/in.h> /* for ntohl() */
+#define	sys_ntohl(foo)	ntohl(foo)
+#endif	/* defined(__vxworks) */
+
+#endif	/* _WIN32 */
+
+#if	__GNUC__ >= 3 || defined(__clang__)
+#define CC_ATTRIBUTE(attr)    __attribute__((attr))
+#else
+#define CC_ATTRIBUTE(attr)
+#endif
+#define CC_PRINTFLIKE(fmt, var)     CC_ATTRIBUTE(format(printf, fmt, var))
+#define	CC_NOTUSED                  CC_ATTRIBUTE(unused)
+#ifndef CC_ATTR_NO_SANITIZE
+#define CC_ATTR_NO_SANITIZE(what)   CC_ATTRIBUTE(no_sanitize(what))
+#endif
+
+/* Figure out if thread safety is requested */
+#if !defined(ASN_THREAD_SAFE) && (defined(THREAD_SAFE) || defined(_REENTRANT))
+#define	ASN_THREAD_SAFE
+#endif	/* Thread safety */
+
+#ifndef	offsetof	/* If not defined by <stddef.h> */
+#define	offsetof(s, m)	((ptrdiff_t)&(((s *)0)->m) - (ptrdiff_t)((s *)0))
+#endif	/* offsetof */
+
+#ifndef	MIN		/* Suitable for comparing primitive types (integers) */
+#if defined(__GNUC__)
+#define	MIN(a,b)	({ __typeof a _a = a; __typeof b _b = b;	\
+	((_a)<(_b)?(_a):(_b)); })
+#else	/* !__GNUC__ */
+#define	MIN(a,b)	((a)<(b)?(a):(b))	/* Unsafe variant */
+#endif /* __GNUC__ */
+#endif	/* MIN */
+
+#if __STDC_VERSION__ >= 199901L
+#ifndef SIZE_MAX
+#define SIZE_MAX   ((~((size_t)0)) >> 1)
+#endif
+
+#ifndef RSIZE_MAX   /* C11, Annex K */
+#define RSIZE_MAX   (SIZE_MAX >> 1)
+#endif
+#ifndef RSSIZE_MAX   /* Halve signed size even further than unsigned */
+#define RSSIZE_MAX   ((ssize_t)(RSIZE_MAX >> 1))
+#endif
+#else   /* Old compiler */
+#undef  SIZE_MAX
+#undef  RSIZE_MAX
+#undef  RSSIZE_MAX
+#define SIZE_MAX   ((~((size_t)0)) >> 1)
+#define RSIZE_MAX   (SIZE_MAX >> 1)
+#define RSSIZE_MAX   ((ssize_t)(RSIZE_MAX >> 1))
+#endif
+
+#if __STDC_VERSION__ >= 199901L
+#define ASN_PRI_SIZE "zu"
+#define ASN_PRI_SSIZE "zd"
+#define ASN_PRIuMAX PRIuMAX
+#define ASN_PRIdMAX PRIdMAX
+#else
+#define ASN_PRI_SIZE "lu"
+#define ASN_PRI_SSIZE "ld"
+#if LLONG_MAX > LONG_MAX
+#define ASN_PRIuMAX "llu"
+#define ASN_PRIdMAX "lld"
+#else
+#define ASN_PRIuMAX "lu"
+#define ASN_PRIdMAX "ld"
+#endif
+#endif
+
+#endif	/* ASN_SYSTEM_H */
diff --git a/e2sm/headers/ber_decoder.h b/e2sm/headers/ber_decoder.h
new file mode 100644
index 0000000..1ac2a5e
--- /dev/null
+++ b/e2sm/headers/ber_decoder.h
@@ -0,0 +1,66 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_BER_DECODER_H_
+#define	_BER_DECODER_H_
+
+#include <asn_application.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct asn_TYPE_descriptor_s;	/* Forward declaration */
+struct asn_codec_ctx_s;		/* Forward declaration */
+
+/*
+ * The BER decoder of any type.
+ * This function may be invoked directly from the application.
+ * Decodes BER, DER and CER data (DER and CER are different subsets of BER).
+ *
+ * NOTE: Use the der_encode() function (der_encoder.h) to produce encoding
+ * which is compliant with ber_decode().
+ */
+asn_dec_rval_t ber_decode(
+    const struct asn_codec_ctx_s *opt_codec_ctx,
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    void **struct_ptr,  /* Pointer to a target structure's pointer */
+    const void *buffer, /* Data to be decoded */
+    size_t size         /* Size of that buffer */
+);
+
+/*
+ * Type of generic function which decodes the byte stream into the structure.
+ */
+typedef asn_dec_rval_t(ber_type_decoder_f)(
+    const struct asn_codec_ctx_s *opt_codec_ctx,
+    const struct asn_TYPE_descriptor_s *type_descriptor, void **struct_ptr,
+    const void *buf_ptr, size_t size, int tag_mode);
+
+/*******************************
+ * INTERNALLY USEFUL FUNCTIONS *
+ *******************************/
+
+/*
+ * Check that all tags correspond to the type definition (as given in head).
+ * On return, last_length would contain either a non-negative length of the
+ * value part of the last TLV, or the negative number of expected
+ * "end of content" sequences. The number may only be negative if the
+ * head->last_tag_form is non-zero.
+ */
+asn_dec_rval_t ber_check_tags(
+    const struct asn_codec_ctx_s *opt_codec_ctx, /* codec options */
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    asn_struct_ctx_t *opt_ctx, /* saved decoding context */
+    const void *ptr, size_t size,
+    int tag_mode,      /* {-1,0,1}: IMPLICIT, no, EXPLICIT */
+    int last_tag_form, /* {-1,0:1}: any, primitive, constr */
+    ber_tlv_len_t *last_length, int *opt_tlv_form /* optional tag form */
+);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _BER_DECODER_H_ */
diff --git a/e2sm/headers/ber_tlv_length.h b/e2sm/headers/ber_tlv_length.h
new file mode 100644
index 0000000..d1e4d48
--- /dev/null
+++ b/e2sm/headers/ber_tlv_length.h
@@ -0,0 +1,50 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_BER_TLV_LENGTH_H_
+#define	_BER_TLV_LENGTH_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef ssize_t ber_tlv_len_t;
+
+/*
+ * This function tries to fetch the length of the BER TLV value and place it
+ * in *len_r.
+ * RETURN VALUES:
+ *	 0:	More data expected than bufptr contains.
+ *	-1:	Fatal error deciphering length.
+ *	>0:	Number of bytes used from bufptr.
+ * On return with >0, len_r is constrained as -1..MAX, where -1 mean
+ * that the value is of indefinite length.
+ */
+ssize_t ber_fetch_length(int _is_constructed, const void *bufptr, size_t size,
+	ber_tlv_len_t *len_r);
+
+/*
+ * This function expects bufptr to be positioned over L in TLV.
+ * It returns number of bytes occupied by L and V together, suitable
+ * for skipping. The function properly handles indefinite length.
+ * RETURN VALUES:
+ * 	Standard {-1,0,>0} convention.
+ */
+ssize_t ber_skip_length(
+	const struct asn_codec_ctx_s *opt_codec_ctx,	/* optional context */
+	int _is_constructed, const void *bufptr, size_t size);
+
+/*
+ * This function serializes the length (L from TLV) in DER format.
+ * It always returns number of bytes necessary to represent the length,
+ * it is a caller's responsibility to check the return value
+ * against the supplied buffer's size.
+ */
+size_t der_tlv_length_serialize(ber_tlv_len_t len, void *bufptr, size_t size);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _BER_TLV_LENGTH_H_ */
diff --git a/e2sm/headers/ber_tlv_tag.h b/e2sm/headers/ber_tlv_tag.h
new file mode 100644
index 0000000..ce227ad
--- /dev/null
+++ b/e2sm/headers/ber_tlv_tag.h
@@ -0,0 +1,60 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_BER_TLV_TAG_H_
+#define	_BER_TLV_TAG_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum asn_tag_class {
+	ASN_TAG_CLASS_UNIVERSAL		= 0,	/* 0b00 */
+	ASN_TAG_CLASS_APPLICATION	= 1,	/* 0b01 */
+	ASN_TAG_CLASS_CONTEXT		= 2,	/* 0b10 */
+	ASN_TAG_CLASS_PRIVATE		= 3	/* 0b11 */
+};
+typedef unsigned ber_tlv_tag_t;	/* BER TAG from Tag-Length-Value */
+
+/*
+ * Tag class is encoded together with tag value for optimization purposes.
+ */
+#define	BER_TAG_CLASS(tag)	((tag) & 0x3)
+#define	BER_TAG_VALUE(tag)	((tag) >> 2)
+#define	BER_TLV_CONSTRUCTED(tagptr)	(((*(const uint8_t *)tagptr)&0x20)?1:0)
+
+#define	BER_TAGS_EQUAL(tag1, tag2)	((tag1) == (tag2))
+
+/*
+ * Several functions for printing the TAG in the canonical form
+ * (i.e. "[PRIVATE 0]").
+ * Return values correspond to their libc counterparts (if any).
+ */
+ssize_t ber_tlv_tag_snprint(ber_tlv_tag_t tag, char *buf, size_t buflen);
+ssize_t ber_tlv_tag_fwrite(ber_tlv_tag_t tag, FILE *);
+char *ber_tlv_tag_string(ber_tlv_tag_t tag);
+
+
+/*
+ * This function tries to fetch the tag from the input stream.
+ * RETURN VALUES:
+ * 	 0:	More data expected than bufptr contains.
+ * 	-1:	Fatal error deciphering tag.
+ *	>0:	Number of bytes used from bufptr. tag_r will contain the tag.
+ */
+ssize_t ber_fetch_tag(const void *bufptr, size_t size, ber_tlv_tag_t *tag_r);
+
+/*
+ * This function serializes the tag (T from TLV) in BER format.
+ * It always returns number of bytes necessary to represent the tag,
+ * it is a caller's responsibility to check the return value
+ * against the supplied buffer's size.
+ */
+size_t ber_tlv_tag_serialize(ber_tlv_tag_t tag, void *bufptr, size_t size);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _BER_TLV_TAG_H_ */
diff --git a/e2sm/headers/constr_CHOICE.h b/e2sm/headers/constr_CHOICE.h
new file mode 100644
index 0000000..a1999ed
--- /dev/null
+++ b/e2sm/headers/constr_CHOICE.h
@@ -0,0 +1,80 @@
+/*
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_CONSTR_CHOICE_H_
+#define	_CONSTR_CHOICE_H_
+
+#include <asn_application.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct asn_CHOICE_specifics_s {
+	/*
+	 * Target structure description.
+	 */
+	unsigned struct_size;       /* Size of the target structure. */
+	unsigned ctx_offset;        /* Offset of the asn_codec_ctx_t member */
+	unsigned pres_offset;       /* Identifier of the present member */
+	unsigned pres_size;         /* Size of the identifier (enum) */
+
+	/*
+	 * Tags to members mapping table.
+	 */
+	const asn_TYPE_tag2member_t *tag2el;
+	unsigned tag2el_count;
+
+	/* Canonical ordering of CHOICE elements, for PER */
+	const unsigned *to_canonical_order;
+	const unsigned *from_canonical_order;
+
+	/*
+	 * Extensions-related stuff.
+	 */
+	signed ext_start; /* First member of extensions, or -1 */
+} asn_CHOICE_specifics_t;
+
+/*
+ * A set specialized functions dealing with the CHOICE type.
+ */
+asn_struct_free_f CHOICE_free;
+asn_struct_print_f CHOICE_print;
+asn_struct_compare_f CHOICE_compare;
+asn_constr_check_f CHOICE_constraint;
+ber_type_decoder_f CHOICE_decode_ber;
+der_type_encoder_f CHOICE_encode_der;
+xer_type_decoder_f CHOICE_decode_xer;
+xer_type_encoder_f CHOICE_encode_xer;
+oer_type_decoder_f CHOICE_decode_oer;
+oer_type_encoder_f CHOICE_encode_oer;
+per_type_decoder_f CHOICE_decode_uper;
+per_type_encoder_f CHOICE_encode_uper;
+per_type_decoder_f CHOICE_decode_aper;
+per_type_encoder_f CHOICE_encode_aper;
+asn_outmost_tag_f CHOICE_outmost_tag;
+asn_random_fill_f CHOICE_random_fill;
+extern asn_TYPE_operation_t asn_OP_CHOICE;
+
+/*
+ * Return the 1-based choice variant presence index.
+ * Returns 0 in case of error.
+ */
+unsigned CHOICE_variant_get_presence(const asn_TYPE_descriptor_t *td,
+                                     const void *structure_ptr);
+
+/*
+ * Sets or resets the 1-based choice variant presence index.
+ * In case a previous index is not zero, the currently selected structure
+ * member is freed and zeroed-out first.
+ * Returns 0 on success and -1 on error.
+ */
+int CHOICE_variant_set_presence(const asn_TYPE_descriptor_t *td,
+                                void *structure_ptr, unsigned present);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _CONSTR_CHOICE_H_ */
diff --git a/e2sm/headers/constr_SEQUENCE.h b/e2sm/headers/constr_SEQUENCE.h
new file mode 100644
index 0000000..a22ed3a
--- /dev/null
+++ b/e2sm/headers/constr_SEQUENCE.h
@@ -0,0 +1,68 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_CONSTR_SEQUENCE_H_
+#define	_CONSTR_SEQUENCE_H_
+
+#include <asn_application.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct asn_SEQUENCE_specifics_s {
+	/*
+	 * Target structure description.
+	 */
+	unsigned struct_size;	/* Size of the target structure. */
+	unsigned ctx_offset;	/* Offset of the asn_struct_ctx_t member */
+
+	/*
+	 * Tags to members mapping table (sorted).
+	 */
+	const asn_TYPE_tag2member_t *tag2el;
+	unsigned tag2el_count;
+
+	/*
+	 * Optional members of the extensions root (roms) or additions (aoms).
+	 * Meaningful for PER.
+	 */
+	const int *oms;         /* Optional MemberS */
+	unsigned roms_count;    /* Root optional members count */
+	unsigned aoms_count;    /* Additions optional members count */
+
+	/*
+	 * Description of an extensions group.
+	 * Root components are clustered at the beginning of the structure,
+	 * whereas extensions are clustered at the end. -1 means not extensible.
+	 */
+	signed first_extension;       /* First extension addition */
+} asn_SEQUENCE_specifics_t;
+
+
+/*
+ * A set specialized functions dealing with the SEQUENCE type.
+ */
+asn_struct_free_f SEQUENCE_free;
+asn_struct_print_f SEQUENCE_print;
+asn_struct_compare_f SEQUENCE_compare;
+asn_constr_check_f SEQUENCE_constraint;
+ber_type_decoder_f SEQUENCE_decode_ber;
+der_type_encoder_f SEQUENCE_encode_der;
+xer_type_decoder_f SEQUENCE_decode_xer;
+xer_type_encoder_f SEQUENCE_encode_xer;
+oer_type_decoder_f SEQUENCE_decode_oer;
+oer_type_encoder_f SEQUENCE_encode_oer;
+per_type_decoder_f SEQUENCE_decode_uper;
+per_type_encoder_f SEQUENCE_encode_uper;
+per_type_decoder_f SEQUENCE_decode_aper;
+per_type_encoder_f SEQUENCE_encode_aper;
+asn_random_fill_f  SEQUENCE_random_fill;
+extern asn_TYPE_operation_t asn_OP_SEQUENCE;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _CONSTR_SEQUENCE_H_ */
diff --git a/e2sm/headers/constr_SEQUENCE_OF.h b/e2sm/headers/constr_SEQUENCE_OF.h
new file mode 100644
index 0000000..6857f0f
--- /dev/null
+++ b/e2sm/headers/constr_SEQUENCE_OF.h
@@ -0,0 +1,41 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_CONSTR_SEQUENCE_OF_H_
+#define	_CONSTR_SEQUENCE_OF_H_
+
+#include <asn_application.h>
+#include <constr_SET_OF.h>		/* Implemented using SET OF */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * A set specialized functions dealing with the SEQUENCE OF type.
+ * Generally implemented using SET OF.
+ */
+asn_struct_compare_f SEQUENCE_OF_compare;
+der_type_encoder_f SEQUENCE_OF_encode_der;
+xer_type_encoder_f SEQUENCE_OF_encode_xer;
+per_type_encoder_f SEQUENCE_OF_encode_uper;
+per_type_encoder_f SEQUENCE_OF_encode_aper;
+extern asn_TYPE_operation_t asn_OP_SEQUENCE_OF;
+
+#define	SEQUENCE_OF_free	SET_OF_free
+#define	SEQUENCE_OF_print	SET_OF_print
+#define	SEQUENCE_OF_constraint	SET_OF_constraint
+#define	SEQUENCE_OF_decode_ber	SET_OF_decode_ber
+#define	SEQUENCE_OF_decode_xer	SET_OF_decode_xer
+#define	SEQUENCE_OF_decode_oer  SET_OF_decode_oer
+#define	SEQUENCE_OF_encode_oer  SET_OF_encode_oer
+#define	SEQUENCE_OF_decode_uper	SET_OF_decode_uper
+#define	SEQUENCE_OF_decode_aper	SET_OF_decode_aper
+#define	SEQUENCE_OF_random_fill SET_OF_random_fill
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _CONSTR_SET_OF_H_ */
diff --git a/e2sm/headers/constr_SET_OF.h b/e2sm/headers/constr_SET_OF.h
new file mode 100644
index 0000000..7681062
--- /dev/null
+++ b/e2sm/headers/constr_SET_OF.h
@@ -0,0 +1,49 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	CONSTR_SET_OF_H
+#define	CONSTR_SET_OF_H
+
+#include <asn_application.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct asn_SET_OF_specifics_s {
+    /*
+     * Target structure description.
+     */
+    unsigned struct_size;       /* Size of the target structure. */
+    unsigned ctx_offset;        /* Offset of the asn_struct_ctx_t member */
+
+    /* XER-specific stuff */
+    int as_XMLValueList; /* The member type must be encoded like this */
+} asn_SET_OF_specifics_t;
+
+/*
+ * A set specialized functions dealing with the SET OF type.
+ */
+asn_struct_free_f SET_OF_free;
+asn_struct_print_f SET_OF_print;
+asn_struct_compare_f SET_OF_compare;
+asn_constr_check_f SET_OF_constraint;
+ber_type_decoder_f SET_OF_decode_ber;
+der_type_encoder_f SET_OF_encode_der;
+xer_type_decoder_f SET_OF_decode_xer;
+xer_type_encoder_f SET_OF_encode_xer;
+oer_type_decoder_f SET_OF_decode_oer;
+oer_type_encoder_f SET_OF_encode_oer;
+per_type_decoder_f SET_OF_decode_uper;
+per_type_encoder_f SET_OF_encode_uper;
+per_type_decoder_f SET_OF_decode_aper;
+per_type_encoder_f SET_OF_encode_aper;
+asn_random_fill_f  SET_OF_random_fill;
+extern asn_TYPE_operation_t asn_OP_SET_OF;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* CONSTR_SET_OF_H */
diff --git a/e2sm/headers/constr_TYPE.h b/e2sm/headers/constr_TYPE.h
new file mode 100644
index 0000000..d80dea5
--- /dev/null
+++ b/e2sm/headers/constr_TYPE.h
@@ -0,0 +1,262 @@
+/*
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+/*
+ * This file contains the declaration structure called "ASN.1 Type Definition",
+ * which holds all information necessary for encoding and decoding routines.
+ * This structure even contains pointer to these encoding and decoding routines
+ * for each defined ASN.1 type.
+ */
+#ifndef	_CONSTR_TYPE_H_
+#define	_CONSTR_TYPE_H_
+
+#include <ber_tlv_length.h>
+#include <ber_tlv_tag.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct asn_TYPE_descriptor_s;	/* Forward declaration */
+struct asn_TYPE_member_s;	/* Forward declaration */
+
+/*
+ * This type provides the context information for various ASN.1 routines,
+ * primarily ones doing decoding. A member _asn_ctx of this type must be
+ * included into certain target language's structures, such as compound types.
+ */
+typedef struct asn_struct_ctx_s {
+	short phase;		/* Decoding phase */
+	short step;		/* Elementary step of a phase */
+	int context;		/* Other context information */
+	void *ptr;		/* Decoder-specific stuff (stack elements) */
+	ber_tlv_len_t left;	/* Number of bytes left, -1 for indefinite */
+} asn_struct_ctx_t;
+
+#include <ber_decoder.h>	/* Basic Encoding Rules decoder */
+#include <der_encoder.h>	/* Distinguished Encoding Rules encoder */
+#include <xer_decoder.h>	/* Decoder of XER (XML, text) */
+#include <xer_encoder.h>	/* Encoder into XER (XML, text) */
+#include <per_decoder.h>	/* Packet Encoding Rules decoder */
+#include <per_encoder.h>	/* Packet Encoding Rules encoder */
+#include <constraints.h>	/* Subtype constraints support */
+#include <asn_random_fill.h>	/* Random structures support */
+
+#ifdef  ASN_DISABLE_OER_SUPPORT
+typedef void (oer_type_decoder_f)(void);
+typedef void (oer_type_encoder_f)(void);
+typedef void asn_oer_constraints_t;
+#else
+#include <oer_decoder.h>	/* Octet Encoding Rules encoder */
+#include <oer_encoder.h>	/* Octet Encoding Rules encoder */
+#endif
+
+/*
+ * Free the structure according to its specification.
+ * Use one of ASN_STRUCT_{FREE,RESET,CONTENTS_ONLY} macros instead.
+ * Do not use directly.
+ */
+enum asn_struct_free_method {
+    ASFM_FREE_EVERYTHING,   /* free(struct_ptr) and underlying members */
+    ASFM_FREE_UNDERLYING,   /* free underlying members */
+    ASFM_FREE_UNDERLYING_AND_RESET   /* FREE_UNDERLYING + memset(0) */
+};
+typedef void (asn_struct_free_f)(
+		const struct asn_TYPE_descriptor_s *type_descriptor,
+		void *struct_ptr, enum asn_struct_free_method);
+
+/*
+ * Free the structure including freeing the memory pointed to by ptr itself.
+ */
+#define ASN_STRUCT_FREE(asn_DEF, ptr) \
+    (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_EVERYTHING)
+
+/*
+ * Free the memory used by the members of the structure without freeing the
+ * the structure pointer itself.
+ * ZERO-OUT the structure to the safe clean state.
+ * (Retaining the pointer may be useful in case the structure is allocated
+ *  statically or arranged on the stack, yet its elements are dynamic.)
+ */
+#define ASN_STRUCT_RESET(asn_DEF, ptr) \
+    (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_UNDERLYING_AND_RESET)
+
+/*
+ * Free memory used by the members of the structure without freeing
+ * the structure pointer itself.
+ * (Retaining the pointer may be useful in case the structure is allocated
+ *  statically or arranged on the stack, yet its elements are dynamic.)
+ * AVOID using it in the application code;
+ * Use a safer ASN_STRUCT_RESET() instead.
+ */
+#define ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF, ptr) \
+    (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_UNDERLYING)
+
+/*
+ * Print the structure according to its specification.
+ */
+typedef int(asn_struct_print_f)(
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    const void *struct_ptr,
+    int level, /* Indentation level */
+    asn_app_consume_bytes_f *callback, void *app_key);
+
+/*
+ * Compare two structs between each other.
+ * Returns <0 if struct_A is "smaller" than struct_B, >0 if "greater",
+ * and =0 if "equal to", for some type-specific, stable definition of
+ * "smaller", "greater" and "equal to".
+ */
+typedef int (asn_struct_compare_f)(
+		const struct asn_TYPE_descriptor_s *type_descriptor,
+		const void *struct_A,
+		const void *struct_B);
+
+/*
+ * Return the outmost tag of the type.
+ * If the type is untagged CHOICE, the dynamic operation is performed.
+ * NOTE: This function pointer type is only useful internally.
+ * Do not use it in your application.
+ */
+typedef ber_tlv_tag_t (asn_outmost_tag_f)(
+		const struct asn_TYPE_descriptor_s *type_descriptor,
+		const void *struct_ptr, int tag_mode, ber_tlv_tag_t tag);
+/* The instance of the above function type; used internally. */
+asn_outmost_tag_f asn_TYPE_outmost_tag;
+
+/*
+ * Fetch the desired type of the Open Type based on the
+ * Information Object Set driven constraints.
+ */
+typedef struct asn_type_selector_result_s {
+    const struct asn_TYPE_descriptor_s *type_descriptor; /* Type encoded. */
+    unsigned presence_index; /* Associated choice variant. */
+} asn_type_selector_result_t;
+typedef asn_type_selector_result_t(asn_type_selector_f)(
+    const struct asn_TYPE_descriptor_s *parent_type_descriptor,
+    const void *parent_structure_ptr);
+
+/*
+ * Generalized functions for dealing with the speciic type.
+ * May be directly invoked by applications.
+ */
+typedef struct asn_TYPE_operation_s {
+    asn_struct_free_f *free_struct;     /* Free the structure */
+    asn_struct_print_f *print_struct;   /* Human readable output */
+    asn_struct_compare_f *compare_struct; /* Compare two structures */
+    ber_type_decoder_f *ber_decoder;      /* Generic BER decoder */
+    der_type_encoder_f *der_encoder;      /* Canonical DER encoder */
+    xer_type_decoder_f *xer_decoder;      /* Generic XER decoder */
+    xer_type_encoder_f *xer_encoder;      /* [Canonical] XER encoder */
+    oer_type_decoder_f *oer_decoder;      /* Generic OER decoder */
+    oer_type_encoder_f *oer_encoder;      /* Canonical OER encoder */
+    per_type_decoder_f *uper_decoder;     /* Unaligned PER decoder */
+    per_type_encoder_f *uper_encoder;     /* Unaligned PER encoder */
+    per_type_decoder_f *aper_decoder;     /* Aligned PER decoder */
+    per_type_encoder_f *aper_encoder;     /* Aligned PER encoder */
+    asn_random_fill_f *random_fill;       /* Initialize with a random value */
+    asn_outmost_tag_f *outmost_tag;       /* <optional, internal> */
+} asn_TYPE_operation_t;
+
+/*
+ * A constraints tuple specifying both the OER and PER constraints.
+ */
+typedef struct asn_encoding_constraints_s {
+    const struct asn_oer_constraints_s *oer_constraints;
+    const struct asn_per_constraints_s *per_constraints;
+    asn_constr_check_f *general_constraints;
+} asn_encoding_constraints_t;
+
+/*
+ * The definitive description of the destination language's structure.
+ */
+typedef struct asn_TYPE_descriptor_s {
+    const char *name;       /* A name of the ASN.1 type. "" in some cases. */
+    const char *xml_tag;    /* Name used in XML tag */
+
+    /*
+     * Generalized functions for dealing with the specific type.
+     * May be directly invoked by applications.
+     */
+    asn_TYPE_operation_t *op;
+
+    /***********************************************************************
+     * Internally useful members. Not to be used by applications directly. *
+     **********************************************************************/
+
+    /*
+     * Tags that are expected to occur.
+     */
+    const ber_tlv_tag_t *tags;      /* Effective tags sequence for this type */
+    unsigned tags_count;            /* Number of tags which are expected */
+    const ber_tlv_tag_t *all_tags;  /* Every tag for BER/containment */
+    unsigned all_tags_count;        /* Number of tags */
+
+    /* OER, PER, and general constraints */
+    asn_encoding_constraints_t encoding_constraints;
+
+    /*
+     * An ASN.1 production type members (members of SEQUENCE, SET, CHOICE).
+     */
+    struct asn_TYPE_member_s *elements;
+    unsigned elements_count;
+
+    /*
+     * Additional information describing the type, used by appropriate
+     * functions above.
+     */
+    const void *specifics;
+} asn_TYPE_descriptor_t;
+
+/*
+ * This type describes an element of the constructed type,
+ * i.e. SEQUENCE, SET, CHOICE, etc.
+ */
+  enum asn_TYPE_flags_e {
+    ATF_NOFLAGS,
+    ATF_POINTER = 0x01,   /* Represented by the pointer */
+    ATF_OPEN_TYPE = 0x02, /* Open Type */
+    ATF_ANY_TYPE = 0x04   /* ANY type (deprecated!) */
+  };
+typedef struct asn_TYPE_member_s {
+    enum asn_TYPE_flags_e flags; /* Element's presentation flags */
+    unsigned optional;      /* Following optional members, including current */
+    unsigned memb_offset;   /* Offset of the element */
+    ber_tlv_tag_t tag;      /* Outmost (most immediate) tag */
+    int tag_mode;           /* IMPLICIT/no/EXPLICIT tag at current level */
+    asn_TYPE_descriptor_t *type;            /* Member type descriptor */
+    asn_type_selector_f *type_selector;     /* IoS runtime type selector */
+    asn_encoding_constraints_t encoding_constraints;
+    int (*default_value_cmp)(const void *sptr); /* Compare DEFAULT <value> */
+    int (*default_value_set)(void **sptr);      /* Set DEFAULT <value> */
+    const char *name; /* ASN.1 identifier of the element */
+} asn_TYPE_member_t;
+
+/*
+ * BER tag to element number mapping.
+ */
+typedef struct asn_TYPE_tag2member_s {
+    ber_tlv_tag_t el_tag;   /* Outmost tag of the member */
+    unsigned el_no;         /* Index of the associated member, base 0 */
+    int toff_first;         /* First occurence of the el_tag, relative */
+    int toff_last;          /* Last occurence of the el_tag, relative */
+} asn_TYPE_tag2member_t;
+
+/*
+ * This function prints out the contents of the target language's structure
+ * (struct_ptr) into the file pointer (stream) in human readable form.
+ * RETURN VALUES:
+ * 	 0: The structure is printed.
+ * 	-1: Problem dumping the structure.
+ * (See also xer_fprint() in xer_encoder.h)
+ */
+int asn_fprint(FILE *stream, /* Destination stream descriptor */
+               const asn_TYPE_descriptor_t *td, /* ASN.1 type descriptor */
+               const void *struct_ptr);         /* Structure to be printed */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _CONSTR_TYPE_H_ */
diff --git a/e2sm/headers/constraints.h b/e2sm/headers/constraints.h
new file mode 100644
index 0000000..0bd86a9
--- /dev/null
+++ b/e2sm/headers/constraints.h
@@ -0,0 +1,62 @@
+/*-
+ * Copyright (c) 2004-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	ASN1_CONSTRAINTS_VALIDATOR_H
+#define	ASN1_CONSTRAINTS_VALIDATOR_H
+
+#include <asn_system.h>		/* Platform-dependent types */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct asn_TYPE_descriptor_s;		/* Forward declaration */
+
+/*
+ * Validate the structure according to the ASN.1 constraints.
+ * If errbuf and errlen are given, they shall be pointing to the appropriate
+ * buffer space and its length before calling this function. Alternatively,
+ * they could be passed as NULL's. If constraints validation fails,
+ * errlen will contain the actual number of bytes taken from the errbuf
+ * to encode an error message (properly 0-terminated).
+ * 
+ * RETURN VALUES:
+ * This function returns 0 in case all ASN.1 constraints are met
+ * and -1 if one or more constraints were failed.
+ */
+int asn_check_constraints(
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    const void *struct_ptr, /* Target language's structure */
+    char *errbuf,           /* Returned error description */
+    size_t *errlen          /* Length of the error description */
+);
+
+
+/*
+ * Generic type for constraint checking callback,
+ * associated with every type descriptor.
+ */
+typedef int(asn_constr_check_f)(
+    const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct_ptr,
+    asn_app_constraint_failed_f *optional_callback, /* Log the error */
+    void *optional_app_key /* Opaque key passed to a callback */
+);
+
+/*******************************
+ * INTERNALLY USEFUL FUNCTIONS *
+ *******************************/
+
+asn_constr_check_f asn_generic_no_constraint;	/* No constraint whatsoever */
+asn_constr_check_f asn_generic_unknown_constraint; /* Not fully supported */
+
+/*
+ * Invoke the callback with a complete error message.
+ */
+#define	ASN__CTFAIL	if(ctfailcb) ctfailcb
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* ASN1_CONSTRAINTS_VALIDATOR_H */
diff --git a/e2sm/headers/der_encoder.h b/e2sm/headers/der_encoder.h
new file mode 100644
index 0000000..e93944e
--- /dev/null
+++ b/e2sm/headers/der_encoder.h
@@ -0,0 +1,68 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_DER_ENCODER_H_
+#define	_DER_ENCODER_H_
+
+#include <asn_application.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct asn_TYPE_descriptor_s;	/* Forward declaration */
+
+/*
+ * The DER encoder of any type. May be invoked by the application.
+ * Produces DER- and BER-compliant encoding. (DER is a subset of BER).
+ *
+ * NOTE: Use the ber_decode() function (ber_decoder.h) to decode data
+ * produced by der_encode().
+ */
+asn_enc_rval_t der_encode(const struct asn_TYPE_descriptor_s *type_descriptor,
+                          const void *struct_ptr, /* Structure to be encoded */
+                          asn_app_consume_bytes_f *consume_bytes_cb,
+                          void *app_key /* Arbitrary callback argument */
+);
+
+/* A variant of der_encode() which encodes data into the pre-allocated buffer */
+asn_enc_rval_t der_encode_to_buffer(
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    const void *struct_ptr, /* Structure to be encoded */
+    void *buffer,           /* Pre-allocated buffer */
+    size_t buffer_size      /* Initial buffer size (maximum) */
+);
+
+/*
+ * Type of the generic DER encoder.
+ */
+typedef asn_enc_rval_t(der_type_encoder_f)(
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    const void *struct_ptr, /* Structure to be encoded */
+    int tag_mode,           /* {-1,0,1}: IMPLICIT, no, EXPLICIT */
+    ber_tlv_tag_t tag, asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */
+    void *app_key /* Arbitrary callback argument */
+);
+
+
+/*******************************
+ * INTERNALLY USEFUL FUNCTIONS *
+ *******************************/
+
+/*
+ * Write out leading TL[v] sequence according to the type definition.
+ */
+ssize_t der_write_tags(const struct asn_TYPE_descriptor_s *type_descriptor,
+                       size_t struct_length,
+                       int tag_mode,      /* {-1,0,1}: IMPLICIT, no, EXPLICIT */
+                       int last_tag_form, /* {0,!0}: prim, constructed */
+                       ber_tlv_tag_t tag,
+                       asn_app_consume_bytes_f *consume_bytes_cb,
+                       void *app_key);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _DER_ENCODER_H_ */
diff --git a/e2sm/headers/oer_decoder.h b/e2sm/headers/oer_decoder.h
new file mode 100644
index 0000000..40992e9
--- /dev/null
+++ b/e2sm/headers/oer_decoder.h
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	OER_DECODER_H
+#define	OER_DECODER_H
+
+#include <asn_application.h>
+#include <oer_support.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct asn_TYPE_descriptor_s;	/* Forward declaration */
+struct asn_codec_ctx_s;		/* Forward declaration */
+
+/*
+ * The Octet Encoding Rules (OER, X.696 08/2015) decoder for any given type.
+ * This function may be invoked directly by the application.
+ * Parses CANONICAL-OER and BASIC-OER.
+ */
+asn_dec_rval_t oer_decode(const struct asn_codec_ctx_s *opt_codec_ctx,
+	const struct asn_TYPE_descriptor_s *type_descriptor,
+	void **struct_ptr,	/* Pointer to a target structure's pointer */
+	const void *buffer,	/* Data to be decoded */
+	size_t size		/* Size of that buffer */
+	);
+
+/*
+ * Type of generic function which decodes the byte stream into the structure.
+ */
+typedef asn_dec_rval_t(oer_type_decoder_f)(
+    const struct asn_codec_ctx_s *opt_codec_ctx,
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    const asn_oer_constraints_t *constraints,
+    void **struct_ptr,
+    const void *buf_ptr,
+    size_t size);
+
+/*
+ * Swallow the Open Type (X.696 (08/2015), #30) into /dev/null.
+ * RETURN VALUES:
+ *      -1:     Fatal error deciphering length.
+ *       0:     More data expected than bufptr contains.
+ *      >0:     Number of bytes used from bufptr.
+ */
+ssize_t oer_open_type_skip(const void *bufptr, size_t size);
+
+/*
+ * Read the Open Type (X.696 (08/2015), #30).
+ * RETURN VALUES:
+ *       0:     More data expected than bufptr contains.
+ *      -1:     Fatal error deciphering length.
+ *      >0:     Number of bytes used from bufptr.
+ */
+ssize_t oer_open_type_get(const asn_codec_ctx_t *opt_codec_ctx,
+                          const struct asn_TYPE_descriptor_s *td,
+                          const asn_oer_constraints_t *constraints,
+                          void **struct_ptr, const void *bufptr, size_t size);
+
+/*
+ * Length-prefixed buffer decoding for primitive types.
+ */
+oer_type_decoder_f oer_decode_primitive;
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* OER_DECODER_H */
diff --git a/e2sm/headers/oer_encoder.h b/e2sm/headers/oer_encoder.h
new file mode 100644
index 0000000..6a7b681
--- /dev/null
+++ b/e2sm/headers/oer_encoder.h
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	OER_ENCODER_H
+#define	OER_ENCODER_H
+
+#include <asn_application.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct asn_TYPE_descriptor_s;	/* Forward declaration */
+
+/*
+ * The Octet Encoding Rules (OER, X.696 08/2015) encoder for any type.
+ * This function may be invoked directly by the application.
+ * Produces CANONICAL-OER output compatible with CANONICAL-OER
+ * and BASIC-OER decoders.
+ */
+asn_enc_rval_t oer_encode(const struct asn_TYPE_descriptor_s *type_descriptor,
+                          const void *struct_ptr, /* Structure to be encoded */
+                          asn_app_consume_bytes_f *consume_bytes_cb,
+                          void *app_key /* Arbitrary callback argument */
+);
+
+/* A variant of oer_encode() which encodes data into the pre-allocated buffer */
+asn_enc_rval_t oer_encode_to_buffer(
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    const asn_oer_constraints_t *constraints,
+    const void *struct_ptr, /* Structure to be encoded */
+    void *buffer,           /* Pre-allocated buffer */
+    size_t buffer_size      /* Initial buffer size (maximum) */
+);
+
+/*
+ * Type of the generic OER encoder.
+ */
+typedef asn_enc_rval_t(oer_type_encoder_f)(
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    const asn_oer_constraints_t *constraints,
+    const void *struct_ptr,                    /* Structure to be encoded */
+    asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */
+    void *app_key                              /* Arbitrary callback argument */
+);
+
+/*
+ * Write out the Open Type (X.696 (08/2015), #30).
+ * RETURN VALUES:
+ *  -1: Fatal error encoding the type.
+ *  >0: Number of bytes serialized.
+ */
+ssize_t oer_open_type_put(const struct asn_TYPE_descriptor_s *td,
+                          const asn_oer_constraints_t *constraints,
+                          const void *struct_ptr,
+                          asn_app_consume_bytes_f *consume_bytes_cb,
+                          void *app_key);
+
+
+/*
+ * Length-prefixed buffer encoding for primitive types.
+ */
+oer_type_encoder_f oer_encode_primitive;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* OER_ENCODER_H */
diff --git a/e2sm/headers/oer_support.h b/e2sm/headers/oer_support.h
new file mode 100644
index 0000000..dbc9b5f
--- /dev/null
+++ b/e2sm/headers/oer_support.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	OER_SUPPORT_H
+#define	OER_SUPPORT_H
+
+#include <asn_system.h>		/* Platform-specific types */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Pre-computed OER constraints.
+ */
+typedef struct asn_oer_constraint_number_s {
+    unsigned width;    /* ±8,4,2,1 fixed bytes */
+    unsigned positive; /* 1 for unsigned number, 0 for signed */
+} asn_oer_constraint_number_t;
+typedef struct asn_oer_constraints_s {
+    asn_oer_constraint_number_t value;
+    ssize_t size;    /* -1 (no constraint) or >= 0 */
+} asn_oer_constraints_t;
+
+
+/*
+ * Fetch the length determinant (X.696 (08/2015), #8.6) into *len_r.
+ * RETURN VALUES:
+ *       0:     More data expected than bufptr contains.
+ *      -1:     Fatal error deciphering length.
+ *      >0:     Number of bytes used from bufptr.
+ */
+ssize_t oer_fetch_length(const void *bufptr, size_t size, size_t *len_r);
+
+/*
+ * Serialize OER length. Returns the number of bytes serialized
+ * or -1 if a given callback returned with negative result.
+ */
+ssize_t oer_serialize_length(size_t length, asn_app_consume_bytes_f *cb, void *app_key);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* OER_SUPPORT_H */
diff --git a/e2sm/headers/per_decoder.h b/e2sm/headers/per_decoder.h
new file mode 100644
index 0000000..eea474a
--- /dev/null
+++ b/e2sm/headers/per_decoder.h
@@ -0,0 +1,82 @@
+/*-
+ * Copyright (c) 2005-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_PER_DECODER_H_
+#define	_PER_DECODER_H_
+
+#include <asn_application.h>
+#include <per_support.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct asn_TYPE_descriptor_s;	/* Forward declaration */
+
+/*
+ * Unaligned PER decoder of a "complete encoding" as per X.691 (08/2015) #11.1.
+ * On success, this call always returns (.consumed >= 1), as per #11.1.3.
+ */
+asn_dec_rval_t uper_decode_complete(
+    const struct asn_codec_ctx_s *opt_codec_ctx,
+    const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */
+    void **struct_ptr,  /* Pointer to a target structure's pointer */
+    const void *buffer, /* Data to be decoded */
+    size_t size         /* Size of data buffer */
+);
+
+/*
+ * Unaligned PER decoder of any ASN.1 type. May be invoked by the application.
+ * WARNING: This call returns the number of BITS read from the stream. Beware.
+ */
+asn_dec_rval_t uper_decode(
+    const struct asn_codec_ctx_s *opt_codec_ctx,
+    const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */
+    void **struct_ptr,  /* Pointer to a target structure's pointer */
+    const void *buffer, /* Data to be decoded */
+    size_t size,        /* Size of the input data buffer, in bytes */
+    int skip_bits,      /* Number of unused leading bits, 0..7 */
+    int unused_bits     /* Number of unused tailing bits, 0..7 */
+);
+
+/*
+ * Aligned PER decoder of a "complete encoding" as per X.691#10.1.
+ * On success, this call always returns (.consumed >= 1), in BITS, as per X.691#10.1.3.
+ */
+asn_dec_rval_t aper_decode_complete(
+       const struct asn_codec_ctx_s *opt_codec_ctx,
+       const struct asn_TYPE_descriptor_s *type_descriptor,	/* Type to decode */
+       void **struct_ptr,	/* Pointer to a target structure's pointer */
+       const void *buffer,	/* Data to be decoded */
+       size_t size		/* Size of data buffer */
+									);
+
+/*
+ * Aligned PER decoder of any ASN.1 type. May be invoked by the application.
+ * WARNING: This call returns the number of BITS read from the stream. Beware.
+ */
+asn_dec_rval_t aper_decode(
+      const struct asn_codec_ctx_s *opt_codec_ctx,
+      const struct asn_TYPE_descriptor_s *type_descriptor,	/* Type to decode */
+      void **struct_ptr,	/* Pointer to a target structure's pointer */
+      const void *buffer,	/* Data to be decoded */
+      size_t size,		/* Size of data buffer */
+      int skip_bits,		/* Number of unused leading bits, 0..7 */
+      int unused_bits		/* Number of unused tailing bits, 0..7 */
+      );
+
+/*
+ * Type of the type-specific PER decoder function.
+ */
+typedef asn_dec_rval_t(per_type_decoder_f)(
+    const asn_codec_ctx_t *opt_codec_ctx,
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    const asn_per_constraints_t *constraints, void **struct_ptr,
+    asn_per_data_t *per_data);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _PER_DECODER_H_ */
diff --git a/e2sm/headers/per_encoder.h b/e2sm/headers/per_encoder.h
new file mode 100644
index 0000000..b615ef0
--- /dev/null
+++ b/e2sm/headers/per_encoder.h
@@ -0,0 +1,93 @@
+/*-
+ * Copyright (c) 2006-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_PER_ENCODER_H_
+#define	_PER_ENCODER_H_
+
+#include <asn_application.h>
+#include <per_support.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct asn_TYPE_descriptor_s;	/* Forward declaration */
+
+/*
+ * Unaligned PER encoder of any ASN.1 type. May be invoked by the application.
+ * WARNING: This function returns the number of encoded bits in the .encoded
+ * field of the return value. Use the following formula to convert to bytes:
+ * 	bytes = ((.encoded + 7) / 8)
+ */
+asn_enc_rval_t uper_encode(
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    const asn_per_constraints_t *constraints,
+    const void *struct_ptr,                    /* Structure to be encoded */
+    asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */
+    void *app_key                              /* Arbitrary callback argument */
+);
+
+asn_enc_rval_t aper_encode(
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    const asn_per_constraints_t *constraints,
+    const void *struct_ptr,                     /* Structure to be encoded */
+    asn_app_consume_bytes_f *consume_bytes_cb,  /* Data collector */
+    void *app_key                               /* Arbitrary callback argument */
+);
+
+/*
+ * A variant of uper_encode() which encodes data into the existing buffer
+ * WARNING: This function returns the number of encoded bits in the .encoded
+ * field of the return value.
+ */
+asn_enc_rval_t uper_encode_to_buffer(
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    const asn_per_constraints_t *constraints,
+    const void *struct_ptr, /* Structure to be encoded */
+    void *buffer,           /* Pre-allocated buffer */
+    size_t buffer_size      /* Initial buffer size (max) */
+);
+
+asn_enc_rval_t aper_encode_to_buffer(
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    const asn_per_constraints_t *constraints,
+    const void *struct_ptr,  /* Structure to be encoded */
+    void *buffer,            /* Pre-allocated buffer */
+    size_t buffer_size       /* Initial buffer size (max) */
+);
+/*
+ * A variant of uper_encode_to_buffer() which allocates buffer itself.
+ * Returns the number of bytes in the buffer or -1 in case of failure.
+ * WARNING: This function produces a "Production of the complete encoding",
+ * with length of at least one octet. Contrast this to precise bit-packing
+ * encoding of uper_encode() and uper_encode_to_buffer().
+ */
+ssize_t uper_encode_to_new_buffer(
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    const asn_per_constraints_t *constraints,
+    const void *struct_ptr, /* Structure to be encoded */
+    void **buffer_r         /* Buffer allocated and returned */
+);
+
+ssize_t
+aper_encode_to_new_buffer(
+    const struct asn_TYPE_descriptor_s *td,
+    const asn_per_constraints_t *constraints,
+    const void *sptr,
+    void **buffer_r
+);
+
+/*
+ * Type of the generic PER encoder function.
+ */
+typedef asn_enc_rval_t(per_type_encoder_f)(
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    const asn_per_constraints_t *constraints, const void *struct_ptr,
+    asn_per_outp_t *per_output);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _PER_ENCODER_H_ */
diff --git a/e2sm/headers/per_opentype.h b/e2sm/headers/per_opentype.h
new file mode 100644
index 0000000..1493b2d
--- /dev/null
+++ b/e2sm/headers/per_opentype.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2007-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_PER_OPENTYPE_H_
+#define	_PER_OPENTYPE_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+asn_dec_rval_t uper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx,
+                                  const asn_TYPE_descriptor_t *td,
+                                  const asn_per_constraints_t *constraints,
+                                  void **sptr, asn_per_data_t *pd);
+
+int uper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx,
+                        asn_per_data_t *pd);
+
+/*
+ * X.691 (2015/08), #11.2
+ * Returns -1 if error is encountered. 0 if all OK.
+ */
+int uper_open_type_put(const asn_TYPE_descriptor_t *td,
+                       const asn_per_constraints_t *constraints,
+                       const void *sptr, asn_per_outp_t *po);
+
+asn_dec_rval_t aper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx,
+                                  const asn_TYPE_descriptor_t *td,
+                                  const asn_per_constraints_t *constraints,
+                                  void **sptr, asn_per_data_t *pd);
+
+
+int aper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, asn_per_data_t *pd);
+
+int aper_open_type_put(const asn_TYPE_descriptor_t *td,
+                       const asn_per_constraints_t *constraints,
+                       const void *sptr, asn_per_outp_t *po);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _PER_OPENTYPE_H_ */
diff --git a/e2sm/headers/per_support.h b/e2sm/headers/per_support.h
new file mode 100644
index 0000000..23079c9
--- /dev/null
+++ b/e2sm/headers/per_support.h
@@ -0,0 +1,127 @@
+/*
+ * Copyright (c) 2005-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_PER_SUPPORT_H_
+#define	_PER_SUPPORT_H_
+
+#include <asn_system.h>		/* Platform-specific types */
+#include <asn_bit_data.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Pre-computed PER constraints.
+ */
+typedef struct asn_per_constraint_s {
+	enum asn_per_constraint_flags {
+		APC_UNCONSTRAINED	= 0x0,	/* No PER visible constraints */
+		APC_SEMI_CONSTRAINED	= 0x1,	/* Constrained at "lb" */
+		APC_CONSTRAINED		= 0x2,	/* Fully constrained */
+		APC_EXTENSIBLE		= 0x4	/* May have extension */
+	} flags;
+	int  range_bits;		/* Full number of bits in the range */
+	int  effective_bits;		/* Effective bits */
+	long lower_bound;		/* "lb" value */
+	long upper_bound;		/* "ub" value */
+} asn_per_constraint_t;
+typedef struct asn_per_constraints_s {
+	asn_per_constraint_t value;
+	asn_per_constraint_t size;
+	int (*value2code)(unsigned int value);
+	int (*code2value)(unsigned int code);
+} asn_per_constraints_t;
+
+/* Temporary compatibility layer. Will get removed. */
+typedef struct asn_bit_data_s asn_per_data_t;
+#define per_get_few_bits(data, bits)   asn_get_few_bits(data, bits)
+#define per_get_undo(data, bits)   asn_get_undo(data, bits)
+#define per_get_many_bits(data, dst, align, bits) \
+    asn_get_many_bits(data, dst, align, bits)
+
+/*
+ * X.691 (08/2015) #11.9 "General rules for encoding a length determinant"
+ * Get the length "n" from the Unaligned PER stream.
+ */
+ssize_t uper_get_length(asn_per_data_t *pd, int effective_bound_bits,
+                        size_t lower_bound, int *repeat);
+
+ssize_t aper_get_length(asn_per_data_t *pd, int range,
+                        int effective_bound_bits, int *repeat);
+
+/*
+ * Get the normally small length "n".
+ */
+ssize_t uper_get_nslength(asn_per_data_t *pd);
+ssize_t aper_get_nslength(asn_per_data_t *pd);
+
+/*
+ * Get the normally small non-negative whole number.
+ */
+ssize_t uper_get_nsnnwn(asn_per_data_t *pd);
+ssize_t aper_get_nsnnwn(asn_per_data_t *pd, int range);
+
+/* X.691-2008/11, #11.5.6 */
+int uper_get_constrained_whole_number(asn_per_data_t *pd, unsigned long *v, int nbits);
+
+
+/* Temporary compatibility layer. Will get removed. */
+typedef struct asn_bit_outp_s asn_per_outp_t;
+#define per_put_few_bits(out, bits, obits) asn_put_few_bits(out, bits, obits)
+#define per_put_many_bits(out, src, nbits) asn_put_many_bits(out, src, nbits)
+#define per_put_aligned_flush(out) asn_put_aligned_flush(out)
+
+
+/*
+ * Rebase the given value as an offset into the range specified by the
+ * lower bound (lb) and upper bound (ub).
+ * RETURN VALUES:
+ *  -1: Conversion failed due to range problems.
+ *   0: Conversion was successful.
+ */
+int per_long_range_rebase(long v, long lb, long ub, unsigned long *output);
+/* The inverse operation: restores the value by the offset and its bounds. */
+int per_long_range_unrebase(unsigned long inp, long lb, long ub, long *outp);
+
+/* X.691-2008/11, #11.5 */
+int uper_put_constrained_whole_number_u(asn_per_outp_t *po, unsigned long v, int nbits);
+
+/*
+ * X.691 (08/2015) #11.9 "General rules for encoding a length determinant"
+ * Put the length "whole_length" to the Unaligned PER stream.
+ * If (opt_need_eom) is given, it will be set to 1 if final 0-length is needed.
+ * In that case, invoke uper_put_length(po, 0, 0) after encoding the last block.
+ * This function returns the number of units which may be flushed
+ * in the next units saving iteration.
+ */
+ssize_t uper_put_length(asn_per_outp_t *po, size_t whole_length,
+                        int *opt_need_eom);
+
+ssize_t aper_put_length(asn_per_outp_t *po, int range, size_t length);
+
+/* Align the current bit position to octet bundary */
+int aper_put_align(asn_per_outp_t *po);
+int32_t aper_get_align(asn_per_data_t *pd);
+
+/*
+ * Put the normally small length "n" to the Unaligned PER stream.
+ * Returns 0 or -1.
+ */
+int uper_put_nslength(asn_per_outp_t *po, size_t length);
+
+int aper_put_nslength(asn_per_outp_t *po, size_t length);
+
+/*
+ * Put the normally small non-negative whole number.
+ */
+int uper_put_nsnnwn(asn_per_outp_t *po, int n);
+
+int aper_put_nsnnwn(asn_per_outp_t *po, int range, int number);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _PER_SUPPORT_H_ */
diff --git a/e2sm/headers/xer_decoder.h b/e2sm/headers/xer_decoder.h
new file mode 100644
index 0000000..b951c41
--- /dev/null
+++ b/e2sm/headers/xer_decoder.h
@@ -0,0 +1,106 @@
+/*-
+ * Copyright (c) 2004-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_XER_DECODER_H_
+#define	_XER_DECODER_H_
+
+#include <asn_application.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct asn_TYPE_descriptor_s;	/* Forward declaration */
+
+/*
+ * The XER decoder of any ASN.1 type. May be invoked by the application.
+ * Decodes CANONICAL-XER and BASIC-XER.
+ */
+asn_dec_rval_t xer_decode(
+    const struct asn_codec_ctx_s *opt_codec_ctx,
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    void **struct_ptr,  /* Pointer to a target structure's pointer */
+    const void *buffer, /* Data to be decoded */
+    size_t size         /* Size of data buffer */
+);
+
+/*
+ * Type of the type-specific XER decoder function.
+ */
+typedef asn_dec_rval_t(xer_type_decoder_f)(
+    const asn_codec_ctx_t *opt_codec_ctx,
+    const struct asn_TYPE_descriptor_s *type_descriptor, void **struct_ptr,
+    const char *opt_mname, /* Member name */
+    const void *buf_ptr, size_t size);
+
+/*******************************
+ * INTERNALLY USEFUL FUNCTIONS *
+ *******************************/
+
+/*
+ * Generalized function for decoding the primitive values.
+ * Used by more specialized functions, such as OCTET_STRING_decode_xer_utf8
+ * and others. This function should not be used by applications, as its API
+ * is subject to changes.
+ */
+asn_dec_rval_t xer_decode_general(
+    const asn_codec_ctx_t *opt_codec_ctx,
+    asn_struct_ctx_t *ctx, /* Type decoder context */
+    void *struct_key,      /* Treated as opaque pointer */
+    const char *xml_tag,   /* Expected XML tag name */
+    const void *buf_ptr, size_t size,
+    int (*opt_unexpected_tag_decoder)(void *struct_key, const void *chunk_buf,
+                                      size_t chunk_size),
+    ssize_t (*body_receiver)(void *struct_key, const void *chunk_buf,
+                             size_t chunk_size, int have_more));
+
+
+/*
+ * Fetch the next XER (XML) token from the stream.
+ * The function returns the number of bytes occupied by the chunk type,
+ * returned in the _ch_type. The _ch_type is only set (and valid) when
+ * the return value is >= 0.
+ */
+  typedef enum pxer_chunk_type {
+	PXER_WMORE,     /* Chunk type is not clear, more data expected. */
+	PXER_TAG,	    /* Complete XER tag */
+	PXER_TEXT,	    /* Plain text between XER tags */
+	PXER_COMMENT	/* A comment, may be part of */
+  } pxer_chunk_type_e;
+ssize_t xer_next_token(int *stateContext,
+	const void *buffer, size_t size, pxer_chunk_type_e *_ch_type);
+
+/*
+ * This function checks the buffer against the tag name is expected to occur.
+ */
+  typedef enum xer_check_tag {
+	XCT_BROKEN	= 0,	/* The tag is broken */
+	XCT_OPENING	= 1,	/* This is the <opening> tag */
+	XCT_CLOSING	= 2,	/* This is the </closing> tag */
+	XCT_BOTH	= 3,	/* This is the <modified/> tag */
+	XCT__UNK__MASK	= 4,	/* Mask of everything unexpected */
+	XCT_UNKNOWN_OP	= 5,	/* Unexpected <opening> tag */
+	XCT_UNKNOWN_CL	= 6,	/* Unexpected </closing> tag */
+	XCT_UNKNOWN_BO	= 7	/* Unexpected <modified/> tag */
+  } xer_check_tag_e;
+xer_check_tag_e xer_check_tag(const void *buf_ptr, int size,
+		const char *need_tag);
+
+/*
+ * Get the number of bytes consisting entirely of XER whitespace characters.
+ * RETURN VALUES:
+ * >=0:	Number of whitespace characters in the string.
+ */
+size_t xer_whitespace_span(const void *chunk_buf, size_t chunk_size);
+
+/*
+ * Skip the series of anticipated extensions.
+ */
+int xer_skip_unknown(xer_check_tag_e tcv, ber_tlv_len_t *depth);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _XER_DECODER_H_ */
diff --git a/e2sm/headers/xer_encoder.h b/e2sm/headers/xer_encoder.h
new file mode 100644
index 0000000..9d75922
--- /dev/null
+++ b/e2sm/headers/xer_encoder.h
@@ -0,0 +1,83 @@
+/*-
+ * Copyright (c) 2004-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_XER_ENCODER_H_
+#define	_XER_ENCODER_H_
+
+#include <asn_application.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct asn_TYPE_descriptor_s;	/* Forward declaration */
+
+/* Flags used by the xer_encode() and (*xer_type_encoder_f), defined below */
+enum xer_encoder_flags_e {
+	/* Mode of encoding */
+	XER_F_BASIC	= 0x01,	/* BASIC-XER (pretty-printing) */
+	XER_F_CANONICAL	= 0x02	/* Canonical XER (strict rules) */
+};
+
+/*
+ * The XER encoder of any type. May be invoked by the application.
+ * Produces CANONICAL-XER and BASIC-XER depending on the (xer_flags).
+ */
+asn_enc_rval_t xer_encode(const struct asn_TYPE_descriptor_s *type_descriptor,
+                          const void *struct_ptr, /* Structure to be encoded */
+                          enum xer_encoder_flags_e xer_flags,
+                          asn_app_consume_bytes_f *consume_bytes_cb,
+                          void *app_key /* Arbitrary callback argument */
+);
+
+/*
+ * The variant of the above function which dumps the BASIC-XER (XER_F_BASIC)
+ * output into the chosen file pointer.
+ * RETURN VALUES:
+ * 	 0: The structure is printed.
+ * 	-1: Problem printing the structure.
+ * WARNING: No sensible errno value is returned.
+ */
+int xer_fprint(FILE *stream, const struct asn_TYPE_descriptor_s *td,
+               const void *struct_ptr);
+
+/*
+ * A helper function that uses XER encoding/decoding to verify that:
+ * - Both structures encode into the same BASIC XER.
+ * - Both resulting XER byte streams can be decoded back.
+ * - Both decoded structures encode into the same BASIC XER (round-trip).
+ * All of this verifies equivalence between structures and a round-trip.
+ * ARGUMENTS:
+ *  (opt_debug_stream)  - If specified, prints ongoing details.
+ */
+enum xer_equivalence_e {
+    XEQ_SUCCESS,          /* The only completely positive return value */
+    XEQ_FAILURE,          /* General failure */
+    XEQ_ENCODE1_FAILED,   /* First sructure XER encoding failed */
+    XEQ_ENCODE2_FAILED,   /* Second structure XER encoding failed */
+    XEQ_DIFFERENT,        /* Structures encoded into different XER */
+    XEQ_DECODE_FAILED,    /* Decode of the XER data failed */
+    XEQ_ROUND_TRIP_FAILED /* Bad round-trip */
+};
+enum xer_equivalence_e xer_equivalent(
+    const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct1,
+    const void *struct2, FILE *opt_debug_stream);
+
+/*
+ * Type of the generic XER encoder.
+ */
+typedef asn_enc_rval_t(xer_type_encoder_f)(
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    const void *struct_ptr, /* Structure to be encoded */
+    int ilevel,             /* Level of indentation */
+    enum xer_encoder_flags_e xer_flags,
+    asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */
+    void *app_key                              /* Arbitrary callback argument */
+);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _XER_ENCODER_H_ */
diff --git a/e2sm/headers/xer_support.h b/e2sm/headers/xer_support.h
new file mode 100644
index 0000000..c3a36e7
--- /dev/null
+++ b/e2sm/headers/xer_support.h
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com.
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_XER_SUPPORT_H_
+#define	_XER_SUPPORT_H_
+
+#include <asn_system.h>		/* Platform-specific types */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Types of data transferred to the application.
+ */
+typedef enum {
+	PXML_TEXT,	/* Plain text between XML tags. */
+	PXML_TAG,	/* A tag, starting with '<'. */
+	PXML_COMMENT,	/* An XML comment, including "<!--" and "-->". */
+	/* 
+	 * The following chunk types are reported if the chunk
+	 * terminates the specified XML element.
+	 */
+	PXML_TAG_END,		/* Tag ended */
+	PXML_COMMENT_END	/* Comment ended */
+} pxml_chunk_type_e;
+
+/*
+ * Callback function that is called by the parser when parsed data is
+ * available. The _opaque is the pointer to a field containing opaque user 
+ * data specified in pxml_create() call. The chunk type is _type and the text 
+ * data is the piece of buffer identified by _bufid (as supplied to
+ * pxml_feed() call) starting at offset _offset and of _size bytes size. 
+ * The chunk is NOT '\0'-terminated.
+ */
+typedef int (pxml_callback_f)(pxml_chunk_type_e _type,
+	const void *_chunk_data, size_t _chunk_size, void *_key);
+
+/*
+ * Parse the given buffer as it were a chunk of XML data.
+ * Invoke the specified callback each time the meaninful data is found.
+ * This function returns number of bytes consumed from the bufer.
+ * It will always be lesser than or equal to the specified _size.
+ * The next invocation of this function must account the difference.
+ */
+ssize_t pxml_parse(int *_stateContext, const void *_buf, size_t _size,
+	pxml_callback_f *cb, void *_key);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _XER_SUPPORT_H_ */