diff --git a/VERSION b/VERSION
index 511a76e..84cc529 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.17.1
+1.18.0
diff --git a/cpp/dmi/hw_events_mgmt_service.pb.cc b/cpp/dmi/hw_events_mgmt_service.pb.cc
index 9a534e6..26a87ad 100644
--- a/cpp/dmi/hw_events_mgmt_service.pb.cc
+++ b/cpp/dmi/hw_events_mgmt_service.pb.cc
@@ -19,6 +19,7 @@
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Uuid_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_AdminStateChange_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_AlarmStateChange_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_GenericEventInfo_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_OperStateChange_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_StandbyStateChange_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_UsageStateChange_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto;
@@ -108,6 +109,10 @@
   const ::dmi::UsageStateChange* usage_state_change_;
   const ::dmi::StandbyStateChange* standby_state_change_;
 } _StateChangeInfo_default_instance_;
+class GenericEventInfoDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<GenericEventInfo> _instance;
+} _GenericEventInfo_default_instance_;
 class EventDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<Event> _instance;
@@ -353,6 +358,20 @@
       &scc_info_UsageStateChange_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base,
       &scc_info_StandbyStateChange_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base,}};
 
+static void InitDefaultsGenericEventInfo_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::dmi::_GenericEventInfo_default_instance_;
+    new (ptr) ::dmi::GenericEventInfo();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::dmi::GenericEventInfo::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_GenericEventInfo_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsGenericEventInfo_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto}, {}};
+
 static void InitDefaultsEvent_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
@@ -364,12 +383,13 @@
   ::dmi::Event::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<4> scc_info_Event_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 4, InitDefaultsEvent_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto}, {
+::google::protobuf::internal::SCCInfo<5> scc_info_Event_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 5, InitDefaultsEvent_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto}, {
       &scc_info_EventMetaData_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base,
       &scc_info_Timestamp_google_2fprotobuf_2ftimestamp_2eproto.base,
       &scc_info_ThresholdInformation_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base,
-      &scc_info_StateChangeInfo_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base,}};
+      &scc_info_StateChangeInfo_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base,
+      &scc_info_GenericEventInfo_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base,}};
 
 void InitDefaults_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto() {
   ::google::protobuf::internal::InitSCC(&scc_info_ValueType_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base);
@@ -388,11 +408,12 @@
   ::google::protobuf::internal::InitSCC(&scc_info_UsageStateChange_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_StandbyStateChange_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_StateChangeInfo_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_GenericEventInfo_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_Event_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base);
 }
 
-::google::protobuf::Metadata file_level_metadata_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto[17];
-const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto[3];
+::google::protobuf::Metadata file_level_metadata_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto[18];
+const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto[4];
 constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto = nullptr;
 
 const ::google::protobuf::uint32 TableStruct_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
@@ -524,6 +545,14 @@
   offsetof(::dmi::StateChangeInfoDefaultTypeInternal, standby_state_change_),
   PROTOBUF_FIELD_OFFSET(::dmi::StateChangeInfo, state_change_),
   ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::dmi::GenericEventInfo, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::dmi::GenericEventInfo, message_),
+  PROTOBUF_FIELD_OFFSET(::dmi::GenericEventInfo, message_code_),
+  PROTOBUF_FIELD_OFFSET(::dmi::GenericEventInfo, severity_),
+  ~0u,  // no _has_bits_
   PROTOBUF_FIELD_OFFSET(::dmi::Event, _internal_metadata_),
   ~0u,  // no _extensions_
   ~0u,  // no _oneof_case_
@@ -534,6 +563,7 @@
   PROTOBUF_FIELD_OFFSET(::dmi::Event, threshold_info_),
   PROTOBUF_FIELD_OFFSET(::dmi::Event, add_info_),
   PROTOBUF_FIELD_OFFSET(::dmi::Event, state_change_info_),
+  PROTOBUF_FIELD_OFFSET(::dmi::Event, generic_event_info_),
 };
 static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
   { 0, -1, sizeof(::dmi::ValueType)},
@@ -552,7 +582,8 @@
   { 102, -1, sizeof(::dmi::UsageStateChange)},
   { 109, -1, sizeof(::dmi::StandbyStateChange)},
   { 116, -1, sizeof(::dmi::StateChangeInfo)},
-  { 127, -1, sizeof(::dmi::Event)},
+  { 127, -1, sizeof(::dmi::GenericEventInfo)},
+  { 135, -1, sizeof(::dmi::Event)},
 };
 
 static ::google::protobuf::Message const * const file_default_instances[] = {
@@ -572,13 +603,14 @@
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_UsageStateChange_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_StandbyStateChange_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_StateChangeInfo_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_GenericEventInfo_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_Event_default_instance_),
 };
 
 ::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto = {
   {}, AddDescriptors_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto, "dmi/hw_events_mgmt_service.proto", schemas,
   file_default_instances, TableStruct_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto::offsets,
-  file_level_metadata_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto, 17, file_level_enum_descriptors_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto, file_level_service_descriptors_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto,
+  file_level_metadata_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto, 18, file_level_enum_descriptors_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto, file_level_service_descriptors_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto,
 };
 
 const char descriptor_table_protodef_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto[] =
@@ -638,91 +670,99 @@
   "ateChangeH\000\0223\n\022usage_state_change\030\004 \001(\0132"
   "\025.dmi.UsageStateChangeH\000\0227\n\024standby_stat"
   "e_change\030\005 \001(\0132\027.dmi.StandbyStateChangeH"
-  "\000B\016\n\014state_change\"\371\001\n\005Event\022*\n\016event_met"
-  "adata\030\001 \001(\0132\022.dmi.EventMetaData\022\037\n\010event"
-  "_id\030\002 \001(\0162\r.dmi.EventIds\022-\n\traised_ts\030\003 "
-  "\001(\0132\032.google.protobuf.Timestamp\0221\n\016thres"
-  "hold_info\030\004 \001(\0132\031.dmi.ThresholdInformati"
-  "on\022\020\n\010add_info\030\005 \001(\t\022/\n\021state_change_inf"
-  "o\030\006 \001(\0132\024.dmi.StateChangeInfo*\265\024\n\010EventI"
-  "ds\022\030\n\024EVENT_NAME_UNDEFINED\020\000\022\036\n\032EVENT_TR"
-  "ANSCEIVER_PLUG_OUT\020d\022\035\n\031EVENT_TRANSCEIVE"
-  "R_PLUG_IN\020e\022-\n)EVENT_TRANSCEIVER_VOLTAGE"
-  "_ABOVE_THRESHOLD\020f\022-\n)EVENT_TRANSCEIVER_"
-  "VOLTAGE_BELOW_THRESHOLD\020g\0221\n-EVENT_TRANS"
-  "CEIVER_TEMPERATURE_ABOVE_THRESHOLD\020h\0221\n-"
-  "EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRE"
-  "SHOLD\020i\022-\n)EVENT_TRANSCEIVER_CURRENT_ABO"
-  "VE_THRESHOLD\020j\022-\n)EVENT_TRANSCEIVER_CURR"
-  "ENT_BELOW_THRESHOLD\020k\022.\n*EVENT_TRANSCEIV"
-  "ER_RX_POWER_ABOVE_THRESHOLD\020l\022.\n*EVENT_T"
-  "RANSCEIVER_RX_POWER_BELOW_THRESHOLD\020m\022.\n"
-  "*EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESH"
-  "OLD\020n\022.\n*EVENT_TRANSCEIVER_TX_POWER_BELO"
-  "W_THRESHOLD\020o\022\035\n\031EVENT_TRANSCEIVER_FAILU"
-  "RE\020p\0227\n3EVENT_TRANSCEIVER_VOLTAGE_ABOVE_"
-  "THRESHOLD_RECOVERED\020q\0227\n3EVENT_TRANSCEIV"
-  "ER_VOLTAGE_BELOW_THRESHOLD_RECOVERED\020r\022;"
-  "\n7EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_TH"
-  "RESHOLD_RECOVERED\020s\022;\n7EVENT_TRANSCEIVER"
-  "_TEMPERATURE_BELOW_THRESHOLD_RECOVERED\020t"
-  "\0227\n3EVENT_TRANSCEIVER_CURRENT_ABOVE_THRE"
-  "SHOLD_RECOVERED\020u\0227\n3EVENT_TRANSCEIVER_C"
-  "URRENT_BELOW_THRESHOLD_RECOVERED\020v\0228\n4EV"
-  "ENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD"
-  "_RECOVERED\020w\0228\n4EVENT_TRANSCEIVER_RX_POW"
-  "ER_BELOW_THRESHOLD_RECOVERED\020x\0228\n4EVENT_"
-  "TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_REC"
-  "OVERED\020y\0228\n4EVENT_TRANSCEIVER_TX_POWER_B"
-  "ELOW_THRESHOLD_RECOVERED\020z\022\'\n#EVENT_TRAN"
-  "SCEIVER_FAILURE_RECOVERED\020{\022\027\n\022EVENT_PSU"
-  "_PLUG_OUT\020\310\001\022\026\n\021EVENT_PSU_PLUG_IN\020\311\001\022\026\n\021"
-  "EVENT_PSU_FAILURE\020\312\001\022 \n\033EVENT_PSU_FAILUR"
-  "E_RECOVERED\020\313\001\022\026\n\021EVENT_FAN_FAILURE\020\254\002\022\027"
-  "\n\022EVENT_FAN_PLUG_OUT\020\255\002\022\026\n\021EVENT_FAN_PLU"
-  "G_IN\020\256\002\022 \n\033EVENT_FAN_FAILURE_RECOVERED\020\257"
-  "\002\022)\n$EVENT_CPU_TEMPERATURE_ABOVE_CRITICA"
-  "L\020\220\003\022&\n!EVENT_CPU_TEMPERATURE_ABOVE_FATA"
-  "L\020\221\003\0223\n.EVENT_CPU_TEMPERATURE_ABOVE_CRIT"
-  "ICAL_RECOVERED\020\222\003\0220\n+EVENT_CPU_TEMPERATU"
-  "RE_ABOVE_FATAL_RECOVERED\020\223\003\022$\n\037EVENT_CPU"
-  "_USAGE_ABOVE_THRESHOLD\020\224\003\022.\n)EVENT_CPU_U"
-  "SAGE_ABOVE_THRESHOLD_RECOVERED\020\225\003\022\032\n\025EVE"
-  "NT_HW_DEVICE_RESET\020\364\003\022/\n*EVENT_HW_DEVICE"
-  "_TEMPERATURE_ABOVE_CRITICAL\020\365\003\022,\n\'EVENT_"
-  "HW_DEVICE_TEMPERATURE_ABOVE_FATAL\020\366\003\0229\n4"
-  "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITIC"
-  "AL_RECOVERED\020\367\003\0226\n1EVENT_HW_DEVICE_TEMPE"
-  "RATURE_ABOVE_FATAL_RECOVERED\020\370\003\022\033\n\026EVENT"
-  "_HW_DEVICE_REBOOT\020\371\003\022\'\n\"EVENT_HW_TEMPERA"
-  "TURE_SENSOR_FAILED\020\372\003\022,\n\'EVENT_HW_ALL_TE"
-  "MPERATURE_SENSORS_FAILED\020\373\003\022(\n#EVENT_HW_"
-  "DISK_USAGE_ABOVE_THRESHOLD\020\374\003\0222\n-EVENT_H"
-  "W_DISK_USAGE_ABOVE_THRESHOLD_RECOVERED\020\375"
-  "\003\022*\n%EVENT_HW_MEMORY_USAGE_ABOVE_THRESHO"
-  "LD\020\376\003\0224\n/EVENT_HW_MEMORY_USAGE_ABOVE_THR"
-  "ESHOLD_RECOVERED\020\377\003\022\036\n\031EVENT_HW_NTP_SYNC"
-  "_FAILURE\020\200\004\022(\n#EVENT_HW_NTP_SYNC_FAILURE"
-  "_RECOVERED\020\201\004\022\035\n\030EVENT_LINE_CARD_PLUG_OU"
-  "T\020\330\004\022\034\n\027EVENT_LINE_CARD_PLUG_IN\020\331\004\022(\n#EV"
-  "ENT_COMPONENT_ADMIN_STATE_CHANGED\020\274\005\022\'\n\""
-  "EVENT_COMPONENT_OPER_STATE_CHANGED\020\275\005\022(\n"
-  "#EVENT_COMPONENT_ALARM_STATE_CHANGED\020\276\005\022"
-  "(\n#EVENT_COMPONENT_USAGE_STATE_CHANGED\020\277"
-  "\005\022*\n%EVENT_COMPONENT_STANDBY_STATE_CHANG"
-  "ED\020\300\0052\355\001\n\035NativeEventsManagementService\022"
-  "6\n\nListEvents\022\017.dmi.HardwareID\032\027.dmi.Lis"
-  "tEventsResponse\022^\n\031UpdateEventsConfigura"
-  "tion\022\037.dmi.EventsConfigurationRequest\032 ."
-  "dmi.EventsConfigurationResponse\0224\n\014Strea"
-  "mEvents\022\026.google.protobuf.Empty\032\n.dmi.Ev"
-  "ent0\001B;Z9github.com/opencord/device-mana"
-  "gement-interface/v3/go/dmib\006proto3"
+  "\000B\016\n\014state_change\"\333\001\n\020GenericEventInfo\022\017"
+  "\n\007message\030\001 \001(\t\022\024\n\014message_code\030\002 \001(\t\0225\n"
+  "\010severity\030\003 \001(\0162#.dmi.GenericEventInfo.E"
+  "ventSeverity\"i\n\rEventSeverity\022\036\n\032EVENT_S"
+  "EVERITY_UNSPECIFIED\020\000\022\014\n\010CRITICAL\020\001\022\t\n\005M"
+  "AJOR\020\002\022\t\n\005MINOR\020\003\022\n\n\006NORMAL\020\004\022\010\n\004INFO\020\005\""
+  "\254\002\n\005Event\022*\n\016event_metadata\030\001 \001(\0132\022.dmi."
+  "EventMetaData\022\037\n\010event_id\030\002 \001(\0162\r.dmi.Ev"
+  "entIds\022-\n\traised_ts\030\003 \001(\0132\032.google.proto"
+  "buf.Timestamp\0221\n\016threshold_info\030\004 \001(\0132\031."
+  "dmi.ThresholdInformation\022\020\n\010add_info\030\005 \001"
+  "(\t\022/\n\021state_change_info\030\006 \001(\0132\024.dmi.Stat"
+  "eChangeInfo\0221\n\022generic_event_info\030\007 \001(\0132"
+  "\025.dmi.GenericEventInfo*\331\024\n\010EventIds\022\030\n\024E"
+  "VENT_NAME_UNDEFINED\020\000\022\036\n\032EVENT_TRANSCEIV"
+  "ER_PLUG_OUT\020d\022\035\n\031EVENT_TRANSCEIVER_PLUG_"
+  "IN\020e\022-\n)EVENT_TRANSCEIVER_VOLTAGE_ABOVE_"
+  "THRESHOLD\020f\022-\n)EVENT_TRANSCEIVER_VOLTAGE"
+  "_BELOW_THRESHOLD\020g\0221\n-EVENT_TRANSCEIVER_"
+  "TEMPERATURE_ABOVE_THRESHOLD\020h\0221\n-EVENT_T"
+  "RANSCEIVER_TEMPERATURE_BELOW_THRESHOLD\020i"
+  "\022-\n)EVENT_TRANSCEIVER_CURRENT_ABOVE_THRE"
+  "SHOLD\020j\022-\n)EVENT_TRANSCEIVER_CURRENT_BEL"
+  "OW_THRESHOLD\020k\022.\n*EVENT_TRANSCEIVER_RX_P"
+  "OWER_ABOVE_THRESHOLD\020l\022.\n*EVENT_TRANSCEI"
+  "VER_RX_POWER_BELOW_THRESHOLD\020m\022.\n*EVENT_"
+  "TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD\020n\022."
+  "\n*EVENT_TRANSCEIVER_TX_POWER_BELOW_THRES"
+  "HOLD\020o\022\035\n\031EVENT_TRANSCEIVER_FAILURE\020p\0227\n"
+  "3EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHO"
+  "LD_RECOVERED\020q\0227\n3EVENT_TRANSCEIVER_VOLT"
+  "AGE_BELOW_THRESHOLD_RECOVERED\020r\022;\n7EVENT"
+  "_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD"
+  "_RECOVERED\020s\022;\n7EVENT_TRANSCEIVER_TEMPER"
+  "ATURE_BELOW_THRESHOLD_RECOVERED\020t\0227\n3EVE"
+  "NT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_R"
+  "ECOVERED\020u\0227\n3EVENT_TRANSCEIVER_CURRENT_"
+  "BELOW_THRESHOLD_RECOVERED\020v\0228\n4EVENT_TRA"
+  "NSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVE"
+  "RED\020w\0228\n4EVENT_TRANSCEIVER_RX_POWER_BELO"
+  "W_THRESHOLD_RECOVERED\020x\0228\n4EVENT_TRANSCE"
+  "IVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED\020"
+  "y\0228\n4EVENT_TRANSCEIVER_TX_POWER_BELOW_TH"
+  "RESHOLD_RECOVERED\020z\022\'\n#EVENT_TRANSCEIVER"
+  "_FAILURE_RECOVERED\020{\022\027\n\022EVENT_PSU_PLUG_O"
+  "UT\020\310\001\022\026\n\021EVENT_PSU_PLUG_IN\020\311\001\022\026\n\021EVENT_P"
+  "SU_FAILURE\020\312\001\022 \n\033EVENT_PSU_FAILURE_RECOV"
+  "ERED\020\313\001\022\026\n\021EVENT_FAN_FAILURE\020\254\002\022\027\n\022EVENT"
+  "_FAN_PLUG_OUT\020\255\002\022\026\n\021EVENT_FAN_PLUG_IN\020\256\002"
+  "\022 \n\033EVENT_FAN_FAILURE_RECOVERED\020\257\002\022)\n$EV"
+  "ENT_CPU_TEMPERATURE_ABOVE_CRITICAL\020\220\003\022&\n"
+  "!EVENT_CPU_TEMPERATURE_ABOVE_FATAL\020\221\003\0223\n"
+  ".EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RE"
+  "COVERED\020\222\003\0220\n+EVENT_CPU_TEMPERATURE_ABOV"
+  "E_FATAL_RECOVERED\020\223\003\022$\n\037EVENT_CPU_USAGE_"
+  "ABOVE_THRESHOLD\020\224\003\022.\n)EVENT_CPU_USAGE_AB"
+  "OVE_THRESHOLD_RECOVERED\020\225\003\022\032\n\025EVENT_HW_D"
+  "EVICE_RESET\020\364\003\022/\n*EVENT_HW_DEVICE_TEMPER"
+  "ATURE_ABOVE_CRITICAL\020\365\003\022,\n\'EVENT_HW_DEVI"
+  "CE_TEMPERATURE_ABOVE_FATAL\020\366\003\0229\n4EVENT_H"
+  "W_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECO"
+  "VERED\020\367\003\0226\n1EVENT_HW_DEVICE_TEMPERATURE_"
+  "ABOVE_FATAL_RECOVERED\020\370\003\022\033\n\026EVENT_HW_DEV"
+  "ICE_REBOOT\020\371\003\022\'\n\"EVENT_HW_TEMPERATURE_SE"
+  "NSOR_FAILED\020\372\003\022,\n\'EVENT_HW_ALL_TEMPERATU"
+  "RE_SENSORS_FAILED\020\373\003\022(\n#EVENT_HW_DISK_US"
+  "AGE_ABOVE_THRESHOLD\020\374\003\0222\n-EVENT_HW_DISK_"
+  "USAGE_ABOVE_THRESHOLD_RECOVERED\020\375\003\022*\n%EV"
+  "ENT_HW_MEMORY_USAGE_ABOVE_THRESHOLD\020\376\003\0224"
+  "\n/EVENT_HW_MEMORY_USAGE_ABOVE_THRESHOLD_"
+  "RECOVERED\020\377\003\022\036\n\031EVENT_HW_NTP_SYNC_FAILUR"
+  "E\020\200\004\022(\n#EVENT_HW_NTP_SYNC_FAILURE_RECOVE"
+  "RED\020\201\004\022\035\n\030EVENT_LINE_CARD_PLUG_OUT\020\330\004\022\034\n"
+  "\027EVENT_LINE_CARD_PLUG_IN\020\331\004\022(\n#EVENT_COM"
+  "PONENT_ADMIN_STATE_CHANGED\020\274\005\022\'\n\"EVENT_C"
+  "OMPONENT_OPER_STATE_CHANGED\020\275\005\022(\n#EVENT_"
+  "COMPONENT_ALARM_STATE_CHANGED\020\276\005\022(\n#EVEN"
+  "T_COMPONENT_USAGE_STATE_CHANGED\020\277\005\022*\n%EV"
+  "ENT_COMPONENT_STANDBY_STATE_CHANGED\020\300\005\022\""
+  "\n\035EVENT_COMPONENT_GENERIC_EVENT\020\301\0052\355\001\n\035N"
+  "ativeEventsManagementService\0226\n\nListEven"
+  "ts\022\017.dmi.HardwareID\032\027.dmi.ListEventsResp"
+  "onse\022^\n\031UpdateEventsConfiguration\022\037.dmi."
+  "EventsConfigurationRequest\032 .dmi.EventsC"
+  "onfigurationResponse\0224\n\014StreamEvents\022\026.g"
+  "oogle.protobuf.Empty\032\n.dmi.Event0\001B;Z9gi"
+  "thub.com/opencord/device-management-inte"
+  "rface/v3/go/dmib\006proto3"
   ;
 ::google::protobuf::internal::DescriptorTable descriptor_table_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto = {
   false, InitDefaults_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto, 
   descriptor_table_protodef_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto,
-  "dmi/hw_events_mgmt_service.proto", &assign_descriptors_table_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto, 5434,
+  "dmi/hw_events_mgmt_service.proto", &assign_descriptors_table_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto, 5743,
 };
 
 void AddDescriptors_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto() {
@@ -791,10 +831,39 @@
 const EventsConfigurationResponse_Reason EventsConfigurationResponse::Reason_MAX;
 const int EventsConfigurationResponse::Reason_ARRAYSIZE;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
-const ::google::protobuf::EnumDescriptor* EventIds_descriptor() {
+const ::google::protobuf::EnumDescriptor* GenericEventInfo_EventSeverity_descriptor() {
   ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto);
   return file_level_enum_descriptors_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto[2];
 }
+bool GenericEventInfo_EventSeverity_IsValid(int value) {
+  switch (value) {
+    case 0:
+    case 1:
+    case 2:
+    case 3:
+    case 4:
+    case 5:
+      return true;
+    default:
+      return false;
+  }
+}
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const GenericEventInfo_EventSeverity GenericEventInfo::EVENT_SEVERITY_UNSPECIFIED;
+const GenericEventInfo_EventSeverity GenericEventInfo::CRITICAL;
+const GenericEventInfo_EventSeverity GenericEventInfo::MAJOR;
+const GenericEventInfo_EventSeverity GenericEventInfo::MINOR;
+const GenericEventInfo_EventSeverity GenericEventInfo::NORMAL;
+const GenericEventInfo_EventSeverity GenericEventInfo::INFO;
+const GenericEventInfo_EventSeverity GenericEventInfo::EventSeverity_MIN;
+const GenericEventInfo_EventSeverity GenericEventInfo::EventSeverity_MAX;
+const int GenericEventInfo::EventSeverity_ARRAYSIZE;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+const ::google::protobuf::EnumDescriptor* EventIds_descriptor() {
+  ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto);
+  return file_level_enum_descriptors_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto[3];
+}
 bool EventIds_IsValid(int value) {
   switch (value) {
     case 0:
@@ -857,6 +926,7 @@
     case 702:
     case 703:
     case 704:
+    case 705:
       return true;
     default:
       return false;
@@ -7140,6 +7210,424 @@
 
 // ===================================================================
 
+void GenericEventInfo::InitAsDefaultInstance() {
+}
+class GenericEventInfo::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int GenericEventInfo::kMessageFieldNumber;
+const int GenericEventInfo::kMessageCodeFieldNumber;
+const int GenericEventInfo::kSeverityFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+GenericEventInfo::GenericEventInfo()
+  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:dmi.GenericEventInfo)
+}
+GenericEventInfo::GenericEventInfo(const GenericEventInfo& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(nullptr) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  message_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.message().size() > 0) {
+    message_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.message_);
+  }
+  message_code_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.message_code().size() > 0) {
+    message_code_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.message_code_);
+  }
+  severity_ = from.severity_;
+  // @@protoc_insertion_point(copy_constructor:dmi.GenericEventInfo)
+}
+
+void GenericEventInfo::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_GenericEventInfo_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base);
+  message_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  message_code_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  severity_ = 0;
+}
+
+GenericEventInfo::~GenericEventInfo() {
+  // @@protoc_insertion_point(destructor:dmi.GenericEventInfo)
+  SharedDtor();
+}
+
+void GenericEventInfo::SharedDtor() {
+  message_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  message_code_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void GenericEventInfo::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const GenericEventInfo& GenericEventInfo::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_GenericEventInfo_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void GenericEventInfo::Clear() {
+// @@protoc_insertion_point(message_clear_start:dmi.GenericEventInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  message_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  message_code_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  severity_ = 0;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* GenericEventInfo::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<GenericEventInfo*>(object);
+  ::google::protobuf::int32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::uint32 tag;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string message = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("dmi.GenericEventInfo.message");
+        object = msg->mutable_message();
+        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
+          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
+          goto string_till_end;
+        }
+        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
+        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
+        ptr += size;
+        break;
+      }
+      // string message_code = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("dmi.GenericEventInfo.message_code");
+        object = msg->mutable_message_code();
+        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
+          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
+          goto string_till_end;
+        }
+        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
+        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
+        ptr += size;
+        break;
+      }
+      // .dmi.GenericEventInfo.EventSeverity severity = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val = ::google::protobuf::internal::ReadVarint(&ptr);
+        msg->set_severity(static_cast<::dmi::GenericEventInfo_EventSeverity>(val));
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        break;
+      }
+      default: {
+      handle_unusual:
+        if ((tag & 7) == 4 || tag == 0) {
+          ctx->EndGroup(tag);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+string_till_end:
+  static_cast<::std::string*>(object)->clear();
+  static_cast<::std::string*>(object)->reserve(size);
+  goto len_delim_till_end;
+len_delim_till_end:
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                               {parser_till_end, object}, size);
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool GenericEventInfo::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:dmi.GenericEventInfo)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string message = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_message()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->message().data(), static_cast<int>(this->message().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "dmi.GenericEventInfo.message"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string message_code = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_message_code()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->message_code().data(), static_cast<int>(this->message_code().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "dmi.GenericEventInfo.message_code"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .dmi.GenericEventInfo.EventSeverity severity = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_severity(static_cast< ::dmi::GenericEventInfo_EventSeverity >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:dmi.GenericEventInfo)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:dmi.GenericEventInfo)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void GenericEventInfo::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:dmi.GenericEventInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string message = 1;
+  if (this->message().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->message().data(), static_cast<int>(this->message().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "dmi.GenericEventInfo.message");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->message(), output);
+  }
+
+  // string message_code = 2;
+  if (this->message_code().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->message_code().data(), static_cast<int>(this->message_code().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "dmi.GenericEventInfo.message_code");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->message_code(), output);
+  }
+
+  // .dmi.GenericEventInfo.EventSeverity severity = 3;
+  if (this->severity() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      3, this->severity(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:dmi.GenericEventInfo)
+}
+
+::google::protobuf::uint8* GenericEventInfo::InternalSerializeWithCachedSizesToArray(
+    ::google::protobuf::uint8* target) const {
+  // @@protoc_insertion_point(serialize_to_array_start:dmi.GenericEventInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string message = 1;
+  if (this->message().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->message().data(), static_cast<int>(this->message().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "dmi.GenericEventInfo.message");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->message(), target);
+  }
+
+  // string message_code = 2;
+  if (this->message_code().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->message_code().data(), static_cast<int>(this->message_code().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "dmi.GenericEventInfo.message_code");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->message_code(), target);
+  }
+
+  // .dmi.GenericEventInfo.EventSeverity severity = 3;
+  if (this->severity() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      3, this->severity(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:dmi.GenericEventInfo)
+  return target;
+}
+
+size_t GenericEventInfo::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:dmi.GenericEventInfo)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string message = 1;
+  if (this->message().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->message());
+  }
+
+  // string message_code = 2;
+  if (this->message_code().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->message_code());
+  }
+
+  // .dmi.GenericEventInfo.EventSeverity severity = 3;
+  if (this->severity() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->severity());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void GenericEventInfo::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:dmi.GenericEventInfo)
+  GOOGLE_DCHECK_NE(&from, this);
+  const GenericEventInfo* source =
+      ::google::protobuf::DynamicCastToGenerated<GenericEventInfo>(
+          &from);
+  if (source == nullptr) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:dmi.GenericEventInfo)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:dmi.GenericEventInfo)
+    MergeFrom(*source);
+  }
+}
+
+void GenericEventInfo::MergeFrom(const GenericEventInfo& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:dmi.GenericEventInfo)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.message().size() > 0) {
+
+    message_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.message_);
+  }
+  if (from.message_code().size() > 0) {
+
+    message_code_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.message_code_);
+  }
+  if (from.severity() != 0) {
+    set_severity(from.severity());
+  }
+}
+
+void GenericEventInfo::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:dmi.GenericEventInfo)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void GenericEventInfo::CopyFrom(const GenericEventInfo& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:dmi.GenericEventInfo)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool GenericEventInfo::IsInitialized() const {
+  return true;
+}
+
+void GenericEventInfo::Swap(GenericEventInfo* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void GenericEventInfo::InternalSwap(GenericEventInfo* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  message_.Swap(&other->message_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  message_code_.Swap(&other->message_code_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(severity_, other->severity_);
+}
+
+::google::protobuf::Metadata GenericEventInfo::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto);
+  return ::file_level_metadata_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
 void Event::InitAsDefaultInstance() {
   ::dmi::_Event_default_instance_._instance.get_mutable()->event_metadata_ = const_cast< ::dmi::EventMetaData*>(
       ::dmi::EventMetaData::internal_default_instance());
@@ -7149,6 +7637,8 @@
       ::dmi::ThresholdInformation::internal_default_instance());
   ::dmi::_Event_default_instance_._instance.get_mutable()->state_change_info_ = const_cast< ::dmi::StateChangeInfo*>(
       ::dmi::StateChangeInfo::internal_default_instance());
+  ::dmi::_Event_default_instance_._instance.get_mutable()->generic_event_info_ = const_cast< ::dmi::GenericEventInfo*>(
+      ::dmi::GenericEventInfo::internal_default_instance());
 }
 class Event::HasBitSetters {
  public:
@@ -7156,6 +7646,7 @@
   static const ::google::protobuf::Timestamp& raised_ts(const Event* msg);
   static const ::dmi::ThresholdInformation& threshold_info(const Event* msg);
   static const ::dmi::StateChangeInfo& state_change_info(const Event* msg);
+  static const ::dmi::GenericEventInfo& generic_event_info(const Event* msg);
 };
 
 const ::dmi::EventMetaData&
@@ -7174,6 +7665,10 @@
 Event::HasBitSetters::state_change_info(const Event* msg) {
   return *msg->state_change_info_;
 }
+const ::dmi::GenericEventInfo&
+Event::HasBitSetters::generic_event_info(const Event* msg) {
+  return *msg->generic_event_info_;
+}
 void Event::clear_raised_ts() {
   if (GetArenaNoVirtual() == nullptr && raised_ts_ != nullptr) {
     delete raised_ts_;
@@ -7187,6 +7682,7 @@
 const int Event::kThresholdInfoFieldNumber;
 const int Event::kAddInfoFieldNumber;
 const int Event::kStateChangeInfoFieldNumber;
+const int Event::kGenericEventInfoFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 Event::Event()
@@ -7222,6 +7718,11 @@
   } else {
     state_change_info_ = nullptr;
   }
+  if (from.has_generic_event_info()) {
+    generic_event_info_ = new ::dmi::GenericEventInfo(*from.generic_event_info_);
+  } else {
+    generic_event_info_ = nullptr;
+  }
   event_id_ = from.event_id_;
   // @@protoc_insertion_point(copy_constructor:dmi.Event)
 }
@@ -7246,6 +7747,7 @@
   if (this != internal_default_instance()) delete raised_ts_;
   if (this != internal_default_instance()) delete threshold_info_;
   if (this != internal_default_instance()) delete state_change_info_;
+  if (this != internal_default_instance()) delete generic_event_info_;
 }
 
 void Event::SetCachedSize(int size) const {
@@ -7280,6 +7782,10 @@
     delete state_change_info_;
   }
   state_change_info_ = nullptr;
+  if (GetArenaNoVirtual() == nullptr && generic_event_info_ != nullptr) {
+    delete generic_event_info_;
+  }
+  generic_event_info_ = nullptr;
   event_id_ = 0;
   _internal_metadata_.Clear();
 }
@@ -7373,6 +7879,19 @@
             {parser_till_end, object}, ptr - size, ptr));
         break;
       }
+      // .dmi.GenericEventInfo generic_event_info = 7;
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 58) goto handle_unusual;
+        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::dmi::GenericEventInfo::_InternalParse;
+        object = msg->mutable_generic_event_info();
+        if (size > end - ptr) goto len_delim_till_end;
+        ptr += size;
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
+            {parser_till_end, object}, ptr - size, ptr));
+        break;
+      }
       default: {
       handle_unusual:
         if ((tag & 7) == 4 || tag == 0) {
@@ -7480,6 +7999,17 @@
         break;
       }
 
+      // .dmi.GenericEventInfo generic_event_info = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (58 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_generic_event_info()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
       default: {
       handle_unusual:
         if (tag == 0) {
@@ -7547,6 +8077,12 @@
       6, HasBitSetters::state_change_info(this), output);
   }
 
+  // .dmi.GenericEventInfo generic_event_info = 7;
+  if (this->has_generic_event_info()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      7, HasBitSetters::generic_event_info(this), output);
+  }
+
   if (_internal_metadata_.have_unknown_fields()) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         _internal_metadata_.unknown_fields(), output);
@@ -7605,6 +8141,13 @@
         6, HasBitSetters::state_change_info(this), target);
   }
 
+  // .dmi.GenericEventInfo generic_event_info = 7;
+  if (this->has_generic_event_info()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        7, HasBitSetters::generic_event_info(this), target);
+  }
+
   if (_internal_metadata_.have_unknown_fields()) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         _internal_metadata_.unknown_fields(), target);
@@ -7661,6 +8204,13 @@
         *state_change_info_);
   }
 
+  // .dmi.GenericEventInfo generic_event_info = 7;
+  if (this->has_generic_event_info()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *generic_event_info_);
+  }
+
   // .dmi.EventIds event_id = 2;
   if (this->event_id() != 0) {
     total_size += 1 +
@@ -7710,6 +8260,9 @@
   if (from.has_state_change_info()) {
     mutable_state_change_info()->::dmi::StateChangeInfo::MergeFrom(from.state_change_info());
   }
+  if (from.has_generic_event_info()) {
+    mutable_generic_event_info()->::dmi::GenericEventInfo::MergeFrom(from.generic_event_info());
+  }
   if (from.event_id() != 0) {
     set_event_id(from.event_id());
   }
@@ -7746,6 +8299,7 @@
   swap(raised_ts_, other->raised_ts_);
   swap(threshold_info_, other->threshold_info_);
   swap(state_change_info_, other->state_change_info_);
+  swap(generic_event_info_, other->generic_event_info_);
   swap(event_id_, other->event_id_);
 }
 
@@ -7807,6 +8361,9 @@
 template<> PROTOBUF_NOINLINE ::dmi::StateChangeInfo* Arena::CreateMaybeMessage< ::dmi::StateChangeInfo >(Arena* arena) {
   return Arena::CreateInternal< ::dmi::StateChangeInfo >(arena);
 }
+template<> PROTOBUF_NOINLINE ::dmi::GenericEventInfo* Arena::CreateMaybeMessage< ::dmi::GenericEventInfo >(Arena* arena) {
+  return Arena::CreateInternal< ::dmi::GenericEventInfo >(arena);
+}
 template<> PROTOBUF_NOINLINE ::dmi::Event* Arena::CreateMaybeMessage< ::dmi::Event >(Arena* arena) {
   return Arena::CreateInternal< ::dmi::Event >(arena);
 }
diff --git a/cpp/dmi/hw_events_mgmt_service.pb.h b/cpp/dmi/hw_events_mgmt_service.pb.h
index 7e3e8bd..b4e0463 100644
--- a/cpp/dmi/hw_events_mgmt_service.pb.h
+++ b/cpp/dmi/hw_events_mgmt_service.pb.h
@@ -46,7 +46,7 @@
     PROTOBUF_SECTION_VARIABLE(protodesc_cold);
   static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
     PROTOBUF_SECTION_VARIABLE(protodesc_cold);
-  static const ::google::protobuf::internal::ParseTable schema[17]
+  static const ::google::protobuf::internal::ParseTable schema[18]
     PROTOBUF_SECTION_VARIABLE(protodesc_cold);
   static const ::google::protobuf::internal::FieldMetadata field_metadata[];
   static const ::google::protobuf::internal::SerializationTable serialization_table[];
@@ -78,6 +78,9 @@
 class EventsConfigurationResponse;
 class EventsConfigurationResponseDefaultTypeInternal;
 extern EventsConfigurationResponseDefaultTypeInternal _EventsConfigurationResponse_default_instance_;
+class GenericEventInfo;
+class GenericEventInfoDefaultTypeInternal;
+extern GenericEventInfoDefaultTypeInternal _GenericEventInfo_default_instance_;
 class ListEventsResponse;
 class ListEventsResponseDefaultTypeInternal;
 extern ListEventsResponseDefaultTypeInternal _ListEventsResponse_default_instance_;
@@ -116,6 +119,7 @@
 template<> ::dmi::EventsCfg* Arena::CreateMaybeMessage<::dmi::EventsCfg>(Arena*);
 template<> ::dmi::EventsConfigurationRequest* Arena::CreateMaybeMessage<::dmi::EventsConfigurationRequest>(Arena*);
 template<> ::dmi::EventsConfigurationResponse* Arena::CreateMaybeMessage<::dmi::EventsConfigurationResponse>(Arena*);
+template<> ::dmi::GenericEventInfo* Arena::CreateMaybeMessage<::dmi::GenericEventInfo>(Arena*);
 template<> ::dmi::ListEventsResponse* Arena::CreateMaybeMessage<::dmi::ListEventsResponse>(Arena*);
 template<> ::dmi::OperStateChange* Arena::CreateMaybeMessage<::dmi::OperStateChange>(Arena*);
 template<> ::dmi::StandbyStateChange* Arena::CreateMaybeMessage<::dmi::StandbyStateChange>(Arena*);
@@ -176,6 +180,31 @@
   return ::google::protobuf::internal::ParseNamedEnum<EventsConfigurationResponse_Reason>(
     EventsConfigurationResponse_Reason_descriptor(), name, value);
 }
+enum GenericEventInfo_EventSeverity {
+  GenericEventInfo_EventSeverity_EVENT_SEVERITY_UNSPECIFIED = 0,
+  GenericEventInfo_EventSeverity_CRITICAL = 1,
+  GenericEventInfo_EventSeverity_MAJOR = 2,
+  GenericEventInfo_EventSeverity_MINOR = 3,
+  GenericEventInfo_EventSeverity_NORMAL = 4,
+  GenericEventInfo_EventSeverity_INFO = 5,
+  GenericEventInfo_EventSeverity_GenericEventInfo_EventSeverity_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(),
+  GenericEventInfo_EventSeverity_GenericEventInfo_EventSeverity_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max()
+};
+bool GenericEventInfo_EventSeverity_IsValid(int value);
+const GenericEventInfo_EventSeverity GenericEventInfo_EventSeverity_EventSeverity_MIN = GenericEventInfo_EventSeverity_EVENT_SEVERITY_UNSPECIFIED;
+const GenericEventInfo_EventSeverity GenericEventInfo_EventSeverity_EventSeverity_MAX = GenericEventInfo_EventSeverity_INFO;
+const int GenericEventInfo_EventSeverity_EventSeverity_ARRAYSIZE = GenericEventInfo_EventSeverity_EventSeverity_MAX + 1;
+
+const ::google::protobuf::EnumDescriptor* GenericEventInfo_EventSeverity_descriptor();
+inline const ::std::string& GenericEventInfo_EventSeverity_Name(GenericEventInfo_EventSeverity value) {
+  return ::google::protobuf::internal::NameOfEnum(
+    GenericEventInfo_EventSeverity_descriptor(), value);
+}
+inline bool GenericEventInfo_EventSeverity_Parse(
+    const ::std::string& name, GenericEventInfo_EventSeverity* value) {
+  return ::google::protobuf::internal::ParseNamedEnum<GenericEventInfo_EventSeverity>(
+    GenericEventInfo_EventSeverity_descriptor(), name, value);
+}
 enum EventIds {
   EVENT_NAME_UNDEFINED = 0,
   EVENT_TRANSCEIVER_PLUG_OUT = 100,
@@ -237,12 +266,13 @@
   EVENT_COMPONENT_ALARM_STATE_CHANGED = 702,
   EVENT_COMPONENT_USAGE_STATE_CHANGED = 703,
   EVENT_COMPONENT_STANDBY_STATE_CHANGED = 704,
+  EVENT_COMPONENT_GENERIC_EVENT = 705,
   EventIds_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(),
   EventIds_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max()
 };
 bool EventIds_IsValid(int value);
 const EventIds EventIds_MIN = EVENT_NAME_UNDEFINED;
-const EventIds EventIds_MAX = EVENT_COMPONENT_STANDBY_STATE_CHANGED;
+const EventIds EventIds_MAX = EVENT_COMPONENT_GENERIC_EVENT;
 const int EventIds_ARRAYSIZE = EventIds_MAX + 1;
 
 const ::google::protobuf::EnumDescriptor* EventIds_descriptor();
@@ -2476,6 +2506,182 @@
 };
 // -------------------------------------------------------------------
 
+class GenericEventInfo final :
+    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:dmi.GenericEventInfo) */ {
+ public:
+  GenericEventInfo();
+  virtual ~GenericEventInfo();
+
+  GenericEventInfo(const GenericEventInfo& from);
+
+  inline GenericEventInfo& operator=(const GenericEventInfo& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  GenericEventInfo(GenericEventInfo&& from) noexcept
+    : GenericEventInfo() {
+    *this = ::std::move(from);
+  }
+
+  inline GenericEventInfo& operator=(GenericEventInfo&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const GenericEventInfo& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const GenericEventInfo* internal_default_instance() {
+    return reinterpret_cast<const GenericEventInfo*>(
+               &_GenericEventInfo_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    16;
+
+  void Swap(GenericEventInfo* other);
+  friend void swap(GenericEventInfo& a, GenericEventInfo& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline GenericEventInfo* New() const final {
+    return CreateMaybeMessage<GenericEventInfo>(nullptr);
+  }
+
+  GenericEventInfo* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<GenericEventInfo>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const GenericEventInfo& from);
+  void MergeFrom(const GenericEventInfo& from);
+  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(GenericEventInfo* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return nullptr;
+  }
+  inline void* MaybeArenaPtr() const {
+    return nullptr;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  typedef GenericEventInfo_EventSeverity EventSeverity;
+  static const EventSeverity EVENT_SEVERITY_UNSPECIFIED =
+    GenericEventInfo_EventSeverity_EVENT_SEVERITY_UNSPECIFIED;
+  static const EventSeverity CRITICAL =
+    GenericEventInfo_EventSeverity_CRITICAL;
+  static const EventSeverity MAJOR =
+    GenericEventInfo_EventSeverity_MAJOR;
+  static const EventSeverity MINOR =
+    GenericEventInfo_EventSeverity_MINOR;
+  static const EventSeverity NORMAL =
+    GenericEventInfo_EventSeverity_NORMAL;
+  static const EventSeverity INFO =
+    GenericEventInfo_EventSeverity_INFO;
+  static inline bool EventSeverity_IsValid(int value) {
+    return GenericEventInfo_EventSeverity_IsValid(value);
+  }
+  static const EventSeverity EventSeverity_MIN =
+    GenericEventInfo_EventSeverity_EventSeverity_MIN;
+  static const EventSeverity EventSeverity_MAX =
+    GenericEventInfo_EventSeverity_EventSeverity_MAX;
+  static const int EventSeverity_ARRAYSIZE =
+    GenericEventInfo_EventSeverity_EventSeverity_ARRAYSIZE;
+  static inline const ::google::protobuf::EnumDescriptor*
+  EventSeverity_descriptor() {
+    return GenericEventInfo_EventSeverity_descriptor();
+  }
+  static inline const ::std::string& EventSeverity_Name(EventSeverity value) {
+    return GenericEventInfo_EventSeverity_Name(value);
+  }
+  static inline bool EventSeverity_Parse(const ::std::string& name,
+      EventSeverity* value) {
+    return GenericEventInfo_EventSeverity_Parse(name, value);
+  }
+
+  // accessors -------------------------------------------------------
+
+  // string message = 1;
+  void clear_message();
+  static const int kMessageFieldNumber = 1;
+  const ::std::string& message() const;
+  void set_message(const ::std::string& value);
+  #if LANG_CXX11
+  void set_message(::std::string&& value);
+  #endif
+  void set_message(const char* value);
+  void set_message(const char* value, size_t size);
+  ::std::string* mutable_message();
+  ::std::string* release_message();
+  void set_allocated_message(::std::string* message);
+
+  // string message_code = 2;
+  void clear_message_code();
+  static const int kMessageCodeFieldNumber = 2;
+  const ::std::string& message_code() const;
+  void set_message_code(const ::std::string& value);
+  #if LANG_CXX11
+  void set_message_code(::std::string&& value);
+  #endif
+  void set_message_code(const char* value);
+  void set_message_code(const char* value, size_t size);
+  ::std::string* mutable_message_code();
+  ::std::string* release_message_code();
+  void set_allocated_message_code(::std::string* message_code);
+
+  // .dmi.GenericEventInfo.EventSeverity severity = 3;
+  void clear_severity();
+  static const int kSeverityFieldNumber = 3;
+  ::dmi::GenericEventInfo_EventSeverity severity() const;
+  void set_severity(::dmi::GenericEventInfo_EventSeverity value);
+
+  // @@protoc_insertion_point(class_scope:dmi.GenericEventInfo)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::internal::ArenaStringPtr message_;
+  ::google::protobuf::internal::ArenaStringPtr message_code_;
+  int severity_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto;
+};
+// -------------------------------------------------------------------
+
 class Event final :
     public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:dmi.Event) */ {
  public:
@@ -2514,7 +2720,7 @@
                &_Event_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    16;
+    17;
 
   void Swap(Event* other);
   friend void swap(Event& a, Event& b) {
@@ -2621,6 +2827,15 @@
   ::dmi::StateChangeInfo* mutable_state_change_info();
   void set_allocated_state_change_info(::dmi::StateChangeInfo* state_change_info);
 
+  // .dmi.GenericEventInfo generic_event_info = 7;
+  bool has_generic_event_info() const;
+  void clear_generic_event_info();
+  static const int kGenericEventInfoFieldNumber = 7;
+  const ::dmi::GenericEventInfo& generic_event_info() const;
+  ::dmi::GenericEventInfo* release_generic_event_info();
+  ::dmi::GenericEventInfo* mutable_generic_event_info();
+  void set_allocated_generic_event_info(::dmi::GenericEventInfo* generic_event_info);
+
   // .dmi.EventIds event_id = 2;
   void clear_event_id();
   static const int kEventIdFieldNumber = 2;
@@ -2637,6 +2852,7 @@
   ::google::protobuf::Timestamp* raised_ts_;
   ::dmi::ThresholdInformation* threshold_info_;
   ::dmi::StateChangeInfo* state_change_info_;
+  ::dmi::GenericEventInfo* generic_event_info_;
   int event_id_;
   mutable ::google::protobuf::internal::CachedSize _cached_size_;
   friend struct ::TableStruct_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto;
@@ -4107,6 +4323,130 @@
 }
 // -------------------------------------------------------------------
 
+// GenericEventInfo
+
+// string message = 1;
+inline void GenericEventInfo::clear_message() {
+  message_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline const ::std::string& GenericEventInfo::message() const {
+  // @@protoc_insertion_point(field_get:dmi.GenericEventInfo.message)
+  return message_.GetNoArena();
+}
+inline void GenericEventInfo::set_message(const ::std::string& value) {
+  
+  message_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:dmi.GenericEventInfo.message)
+}
+#if LANG_CXX11
+inline void GenericEventInfo::set_message(::std::string&& value) {
+  
+  message_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:dmi.GenericEventInfo.message)
+}
+#endif
+inline void GenericEventInfo::set_message(const char* value) {
+  GOOGLE_DCHECK(value != nullptr);
+  
+  message_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:dmi.GenericEventInfo.message)
+}
+inline void GenericEventInfo::set_message(const char* value, size_t size) {
+  
+  message_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:dmi.GenericEventInfo.message)
+}
+inline ::std::string* GenericEventInfo::mutable_message() {
+  
+  // @@protoc_insertion_point(field_mutable:dmi.GenericEventInfo.message)
+  return message_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline ::std::string* GenericEventInfo::release_message() {
+  // @@protoc_insertion_point(field_release:dmi.GenericEventInfo.message)
+  
+  return message_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline void GenericEventInfo::set_allocated_message(::std::string* message) {
+  if (message != nullptr) {
+    
+  } else {
+    
+  }
+  message_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), message);
+  // @@protoc_insertion_point(field_set_allocated:dmi.GenericEventInfo.message)
+}
+
+// string message_code = 2;
+inline void GenericEventInfo::clear_message_code() {
+  message_code_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline const ::std::string& GenericEventInfo::message_code() const {
+  // @@protoc_insertion_point(field_get:dmi.GenericEventInfo.message_code)
+  return message_code_.GetNoArena();
+}
+inline void GenericEventInfo::set_message_code(const ::std::string& value) {
+  
+  message_code_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:dmi.GenericEventInfo.message_code)
+}
+#if LANG_CXX11
+inline void GenericEventInfo::set_message_code(::std::string&& value) {
+  
+  message_code_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:dmi.GenericEventInfo.message_code)
+}
+#endif
+inline void GenericEventInfo::set_message_code(const char* value) {
+  GOOGLE_DCHECK(value != nullptr);
+  
+  message_code_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:dmi.GenericEventInfo.message_code)
+}
+inline void GenericEventInfo::set_message_code(const char* value, size_t size) {
+  
+  message_code_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:dmi.GenericEventInfo.message_code)
+}
+inline ::std::string* GenericEventInfo::mutable_message_code() {
+  
+  // @@protoc_insertion_point(field_mutable:dmi.GenericEventInfo.message_code)
+  return message_code_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline ::std::string* GenericEventInfo::release_message_code() {
+  // @@protoc_insertion_point(field_release:dmi.GenericEventInfo.message_code)
+  
+  return message_code_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline void GenericEventInfo::set_allocated_message_code(::std::string* message_code) {
+  if (message_code != nullptr) {
+    
+  } else {
+    
+  }
+  message_code_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), message_code);
+  // @@protoc_insertion_point(field_set_allocated:dmi.GenericEventInfo.message_code)
+}
+
+// .dmi.GenericEventInfo.EventSeverity severity = 3;
+inline void GenericEventInfo::clear_severity() {
+  severity_ = 0;
+}
+inline ::dmi::GenericEventInfo_EventSeverity GenericEventInfo::severity() const {
+  // @@protoc_insertion_point(field_get:dmi.GenericEventInfo.severity)
+  return static_cast< ::dmi::GenericEventInfo_EventSeverity >(severity_);
+}
+inline void GenericEventInfo::set_severity(::dmi::GenericEventInfo_EventSeverity value) {
+  
+  severity_ = value;
+  // @@protoc_insertion_point(field_set:dmi.GenericEventInfo.severity)
+}
+
+// -------------------------------------------------------------------
+
 // Event
 
 // .dmi.EventMetaData event_metadata = 1;
@@ -4375,6 +4715,57 @@
   // @@protoc_insertion_point(field_set_allocated:dmi.Event.state_change_info)
 }
 
+// .dmi.GenericEventInfo generic_event_info = 7;
+inline bool Event::has_generic_event_info() const {
+  return this != internal_default_instance() && generic_event_info_ != nullptr;
+}
+inline void Event::clear_generic_event_info() {
+  if (GetArenaNoVirtual() == nullptr && generic_event_info_ != nullptr) {
+    delete generic_event_info_;
+  }
+  generic_event_info_ = nullptr;
+}
+inline const ::dmi::GenericEventInfo& Event::generic_event_info() const {
+  const ::dmi::GenericEventInfo* p = generic_event_info_;
+  // @@protoc_insertion_point(field_get:dmi.Event.generic_event_info)
+  return p != nullptr ? *p : *reinterpret_cast<const ::dmi::GenericEventInfo*>(
+      &::dmi::_GenericEventInfo_default_instance_);
+}
+inline ::dmi::GenericEventInfo* Event::release_generic_event_info() {
+  // @@protoc_insertion_point(field_release:dmi.Event.generic_event_info)
+  
+  ::dmi::GenericEventInfo* temp = generic_event_info_;
+  generic_event_info_ = nullptr;
+  return temp;
+}
+inline ::dmi::GenericEventInfo* Event::mutable_generic_event_info() {
+  
+  if (generic_event_info_ == nullptr) {
+    auto* p = CreateMaybeMessage<::dmi::GenericEventInfo>(GetArenaNoVirtual());
+    generic_event_info_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:dmi.Event.generic_event_info)
+  return generic_event_info_;
+}
+inline void Event::set_allocated_generic_event_info(::dmi::GenericEventInfo* generic_event_info) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == nullptr) {
+    delete generic_event_info_;
+  }
+  if (generic_event_info) {
+    ::google::protobuf::Arena* submessage_arena = nullptr;
+    if (message_arena != submessage_arena) {
+      generic_event_info = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, generic_event_info, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  generic_event_info_ = generic_event_info;
+  // @@protoc_insertion_point(field_set_allocated:dmi.Event.generic_event_info)
+}
+
 #ifdef __GNUC__
   #pragma GCC diagnostic pop
 #endif  // __GNUC__
@@ -4410,6 +4801,8 @@
 
 // -------------------------------------------------------------------
 
+// -------------------------------------------------------------------
+
 
 // @@protoc_insertion_point(namespace_scope)
 
@@ -4428,6 +4821,11 @@
 inline const EnumDescriptor* GetEnumDescriptor< ::dmi::EventsConfigurationResponse_Reason>() {
   return ::dmi::EventsConfigurationResponse_Reason_descriptor();
 }
+template <> struct is_proto_enum< ::dmi::GenericEventInfo_EventSeverity> : ::std::true_type {};
+template <>
+inline const EnumDescriptor* GetEnumDescriptor< ::dmi::GenericEventInfo_EventSeverity>() {
+  return ::dmi::GenericEventInfo_EventSeverity_descriptor();
+}
 template <> struct is_proto_enum< ::dmi::EventIds> : ::std::true_type {};
 template <>
 inline const EnumDescriptor* GetEnumDescriptor< ::dmi::EventIds>() {
diff --git a/dmi.pb b/dmi.pb
index db36a67..0e1558f 100644
--- a/dmi.pb
+++ b/dmi.pb
Binary files differ
diff --git a/docs/EventsMetrics.md b/docs/EventsMetrics.md
index 84c85ca..c5a2d7d 100644
--- a/docs/EventsMetrics.md
+++ b/docs/EventsMetrics.md
@@ -18,6 +18,7 @@
     ComponentSensorData value = 3;
 }
 
+// Asynchronous event message
 message Event {
     EventMetaData event_metadata = 1;
     EventIds event_id = 2;
@@ -28,6 +29,8 @@
     string add_info = 5;
     // For component state change events, conveys the old and new states
     StateChangeInfo state_change_info = 6;
+    // For generic events (event_id = EVENT_COMPONENT_GENERIC_EVENT)
+    GenericEventInfo generic_event_info = 7;
 }
 ```
 
@@ -48,9 +51,26 @@
     ComponentAdminState old = 1;
     ComponentAdminState new = 2;
 }
-// ... similar for OperStateChange, AlarmStateChange, UsageStateChange, StandbyStateChange
+message OperStateChange {
+    ComponentOperState old = 1;
+    ComponentOperState new = 2;
+}
+message AlarmStateChange {
+    ComponentAlarmState old = 1;
+    ComponentAlarmState new = 2;
+}
+message UsageStateChange {
+    ComponentUsageState old = 1;
+    ComponentUsageState new = 2;
+}
+message StandbyStateChange {
+    ComponentStandbyState old = 1;
+    ComponentStandbyState new = 2;
+}
 ```
 
+> See [protos/dmi/hw_events_mgmt_service.proto](protos/dmi/hw_events_mgmt_service.proto) for the authoritative definitions.
+
 Note: The on-demand metrics query using the API `GetMetric` is returned over gRPC and not over the Kafka bus.
 
 The device/device manager implementations shall persist the active events across device reboot. On device reboot, the alarms which are no longer active shall be cleared.
diff --git a/go/dmi/hw_events_mgmt_service.pb.go b/go/dmi/hw_events_mgmt_service.pb.go
index b2fffa4..64dab0a 100644
--- a/go/dmi/hw_events_mgmt_service.pb.go
+++ b/go/dmi/hw_events_mgmt_service.pb.go
@@ -103,6 +103,9 @@
 	EventIds_EVENT_COMPONENT_ALARM_STATE_CHANGED   EventIds = 702
 	EventIds_EVENT_COMPONENT_USAGE_STATE_CHANGED   EventIds = 703
 	EventIds_EVENT_COMPONENT_STANDBY_STATE_CHANGED EventIds = 704
+	// Generic event about a component, the payload contains GenericEventInfo in this case
+	// Use this event id only for events which do not have already a specific event id
+	EventIds_EVENT_COMPONENT_GENERIC_EVENT EventIds = 705
 )
 
 var EventIds_name = map[int32]string{
@@ -166,6 +169,7 @@
 	702: "EVENT_COMPONENT_ALARM_STATE_CHANGED",
 	703: "EVENT_COMPONENT_USAGE_STATE_CHANGED",
 	704: "EVENT_COMPONENT_STANDBY_STATE_CHANGED",
+	705: "EVENT_COMPONENT_GENERIC_EVENT",
 }
 
 var EventIds_value = map[string]int32{
@@ -229,6 +233,7 @@
 	"EVENT_COMPONENT_ALARM_STATE_CHANGED":                     702,
 	"EVENT_COMPONENT_USAGE_STATE_CHANGED":                     703,
 	"EVENT_COMPONENT_STANDBY_STATE_CHANGED":                   704,
+	"EVENT_COMPONENT_GENERIC_EVENT":                           705,
 }
 
 func (x EventIds) String() string {
@@ -304,6 +309,43 @@
 	return fileDescriptor_8962d785556e9979, []int{8, 0}
 }
 
+type GenericEventInfo_EventSeverity int32
+
+const (
+	GenericEventInfo_EVENT_SEVERITY_UNSPECIFIED GenericEventInfo_EventSeverity = 0
+	GenericEventInfo_CRITICAL                   GenericEventInfo_EventSeverity = 1
+	GenericEventInfo_MAJOR                      GenericEventInfo_EventSeverity = 2
+	GenericEventInfo_MINOR                      GenericEventInfo_EventSeverity = 3
+	GenericEventInfo_NORMAL                     GenericEventInfo_EventSeverity = 4
+	GenericEventInfo_INFO                       GenericEventInfo_EventSeverity = 5
+)
+
+var GenericEventInfo_EventSeverity_name = map[int32]string{
+	0: "EVENT_SEVERITY_UNSPECIFIED",
+	1: "CRITICAL",
+	2: "MAJOR",
+	3: "MINOR",
+	4: "NORMAL",
+	5: "INFO",
+}
+
+var GenericEventInfo_EventSeverity_value = map[string]int32{
+	"EVENT_SEVERITY_UNSPECIFIED": 0,
+	"CRITICAL":                   1,
+	"MAJOR":                      2,
+	"MINOR":                      3,
+	"NORMAL":                     4,
+	"INFO":                       5,
+}
+
+func (x GenericEventInfo_EventSeverity) String() string {
+	return proto.EnumName(GenericEventInfo_EventSeverity_name, int32(x))
+}
+
+func (GenericEventInfo_EventSeverity) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_8962d785556e9979, []int{16, 0}
+}
+
 type ValueType struct {
 	// For val no multiples of units shall be used.
 	// For example, for memory val should be in bytes and not in kilobytes or any
@@ -1315,6 +1357,61 @@
 	}
 }
 
+type GenericEventInfo struct {
+	Message              string                         `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"`
+	MessageCode          string                         `protobuf:"bytes,2,opt,name=message_code,json=messageCode,proto3" json:"message_code,omitempty"`
+	Severity             GenericEventInfo_EventSeverity `protobuf:"varint,3,opt,name=severity,proto3,enum=dmi.GenericEventInfo_EventSeverity" json:"severity,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                       `json:"-"`
+	XXX_unrecognized     []byte                         `json:"-"`
+	XXX_sizecache        int32                          `json:"-"`
+}
+
+func (m *GenericEventInfo) Reset()         { *m = GenericEventInfo{} }
+func (m *GenericEventInfo) String() string { return proto.CompactTextString(m) }
+func (*GenericEventInfo) ProtoMessage()    {}
+func (*GenericEventInfo) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8962d785556e9979, []int{16}
+}
+
+func (m *GenericEventInfo) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GenericEventInfo.Unmarshal(m, b)
+}
+func (m *GenericEventInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GenericEventInfo.Marshal(b, m, deterministic)
+}
+func (m *GenericEventInfo) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GenericEventInfo.Merge(m, src)
+}
+func (m *GenericEventInfo) XXX_Size() int {
+	return xxx_messageInfo_GenericEventInfo.Size(m)
+}
+func (m *GenericEventInfo) XXX_DiscardUnknown() {
+	xxx_messageInfo_GenericEventInfo.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GenericEventInfo proto.InternalMessageInfo
+
+func (m *GenericEventInfo) GetMessage() string {
+	if m != nil {
+		return m.Message
+	}
+	return ""
+}
+
+func (m *GenericEventInfo) GetMessageCode() string {
+	if m != nil {
+		return m.MessageCode
+	}
+	return ""
+}
+
+func (m *GenericEventInfo) GetSeverity() GenericEventInfo_EventSeverity {
+	if m != nil {
+		return m.Severity
+	}
+	return GenericEventInfo_EVENT_SEVERITY_UNSPECIFIED
+}
+
 type Event struct {
 	EventMetadata *EventMetaData       `protobuf:"bytes,1,opt,name=event_metadata,json=eventMetadata,proto3" json:"event_metadata,omitempty"`
 	EventId       EventIds             `protobuf:"varint,2,opt,name=event_id,json=eventId,proto3,enum=dmi.EventIds" json:"event_id,omitempty"`
@@ -1322,18 +1419,19 @@
 	// Optional threshold information for an event
 	ThresholdInfo *ThresholdInformation `protobuf:"bytes,4,opt,name=threshold_info,json=thresholdInfo,proto3" json:"threshold_info,omitempty"`
 	// Any additional info regarding the event
-	AddInfo              string           `protobuf:"bytes,5,opt,name=add_info,json=addInfo,proto3" json:"add_info,omitempty"`
-	StateChangeInfo      *StateChangeInfo `protobuf:"bytes,6,opt,name=state_change_info,json=stateChangeInfo,proto3" json:"state_change_info,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	AddInfo              string            `protobuf:"bytes,5,opt,name=add_info,json=addInfo,proto3" json:"add_info,omitempty"`
+	StateChangeInfo      *StateChangeInfo  `protobuf:"bytes,6,opt,name=state_change_info,json=stateChangeInfo,proto3" json:"state_change_info,omitempty"`
+	GenericEventInfo     *GenericEventInfo `protobuf:"bytes,7,opt,name=generic_event_info,json=genericEventInfo,proto3" json:"generic_event_info,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
+	XXX_unrecognized     []byte            `json:"-"`
+	XXX_sizecache        int32             `json:"-"`
 }
 
 func (m *Event) Reset()         { *m = Event{} }
 func (m *Event) String() string { return proto.CompactTextString(m) }
 func (*Event) ProtoMessage()    {}
 func (*Event) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8962d785556e9979, []int{16}
+	return fileDescriptor_8962d785556e9979, []int{17}
 }
 
 func (m *Event) XXX_Unmarshal(b []byte) error {
@@ -1396,10 +1494,18 @@
 	return nil
 }
 
+func (m *Event) GetGenericEventInfo() *GenericEventInfo {
+	if m != nil {
+		return m.GenericEventInfo
+	}
+	return nil
+}
+
 func init() {
 	proto.RegisterEnum("dmi.EventIds", EventIds_name, EventIds_value)
 	proto.RegisterEnum("dmi.ListEventsResponse_Reason", ListEventsResponse_Reason_name, ListEventsResponse_Reason_value)
 	proto.RegisterEnum("dmi.EventsConfigurationResponse_Reason", EventsConfigurationResponse_Reason_name, EventsConfigurationResponse_Reason_value)
+	proto.RegisterEnum("dmi.GenericEventInfo_EventSeverity", GenericEventInfo_EventSeverity_name, GenericEventInfo_EventSeverity_value)
 	proto.RegisterType((*ValueType)(nil), "dmi.ValueType")
 	proto.RegisterType((*WaterMarks)(nil), "dmi.WaterMarks")
 	proto.RegisterType((*Thresholds)(nil), "dmi.Thresholds")
@@ -1416,139 +1522,151 @@
 	proto.RegisterType((*UsageStateChange)(nil), "dmi.UsageStateChange")
 	proto.RegisterType((*StandbyStateChange)(nil), "dmi.StandbyStateChange")
 	proto.RegisterType((*StateChangeInfo)(nil), "dmi.StateChangeInfo")
+	proto.RegisterType((*GenericEventInfo)(nil), "dmi.GenericEventInfo")
 	proto.RegisterType((*Event)(nil), "dmi.Event")
 }
 
 func init() { proto.RegisterFile("dmi/hw_events_mgmt_service.proto", fileDescriptor_8962d785556e9979) }
 
 var fileDescriptor_8962d785556e9979 = []byte{
-	// 2015 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x4b, 0x73, 0xdb, 0xc8,
-	0x11, 0x26, 0x09, 0x51, 0x96, 0x5a, 0x16, 0x0d, 0x4f, 0x69, 0x2d, 0x89, 0x8a, 0x6d, 0x85, 0xde,
-	0x5d, 0xc9, 0x8a, 0x4d, 0x6a, 0x65, 0xc7, 0x8e, 0x6b, 0x0f, 0x59, 0x90, 0x84, 0x4c, 0x96, 0x49,
-	0x40, 0x35, 0x04, 0xa9, 0x38, 0x87, 0x45, 0x41, 0xc2, 0x90, 0xc2, 0x9a, 0x00, 0xb8, 0x00, 0x28,
-	0x45, 0x49, 0x55, 0x2a, 0x39, 0xe5, 0x9a, 0xc7, 0xe6, 0x94, 0x54, 0x7e, 0x41, 0x36, 0x39, 0xe5,
-	0xb6, 0x79, 0x1c, 0x72, 0xc8, 0xe3, 0x0f, 0x24, 0x3f, 0x22, 0xb7, 0xbc, 0xdf, 0x05, 0x0c, 0x48,
-	0x0c, 0xc1, 0x97, 0x5c, 0xb5, 0x37, 0xb1, 0xfb, 0xeb, 0xef, 0xeb, 0x99, 0xee, 0x69, 0x8c, 0x06,
-	0xb6, 0x75, 0xd3, 0x28, 0x9c, 0x5d, 0xa8, 0xe4, 0x9c, 0x58, 0x9e, 0xab, 0x9a, 0x1d, 0xd3, 0x53,
-	0x5d, 0xe2, 0x9c, 0x1b, 0xa7, 0x24, 0xdf, 0x73, 0x6c, 0xcf, 0x46, 0x9c, 0x6e, 0x1a, 0xd9, 0x9b,
-	0x3e, 0xec, 0xd4, 0x36, 0x4d, 0xdb, 0x72, 0xa9, 0x3d, 0x7b, 0x9d, 0x46, 0x86, 0xbf, 0xee, 0x76,
-	0x6c, 0xbb, 0xd3, 0x25, 0x85, 0xe0, 0xd7, 0x49, 0xbf, 0x5d, 0xf0, 0x0c, 0x93, 0xb8, 0x9e, 0x66,
-	0xf6, 0x42, 0xc0, 0x56, 0x1c, 0x40, 0xcc, 0x9e, 0x77, 0x49, 0x9d, 0xb9, 0x1f, 0x24, 0x61, 0xb9,
-	0xa5, 0x75, 0xfb, 0x44, 0xb9, 0xec, 0x11, 0xb4, 0x09, 0xd7, 0x0c, 0xcb, 0x53, 0xcf, 0xb5, 0xee,
-	0x46, 0x72, 0x3b, 0xb9, 0xcb, 0x55, 0x12, 0x78, 0xd1, 0xb0, 0xbc, 0x96, 0xd6, 0x45, 0x5b, 0xb0,
-	0xd4, 0x1f, 0xf8, 0x52, 0xdb, 0xc9, 0xdd, 0x85, 0x4a, 0x02, 0x5f, 0xeb, 0x87, 0xce, 0xdb, 0xb0,
-	0xdc, 0xee, 0xda, 0x1a, 0xf5, 0x72, 0xdb, 0xc9, 0xdd, 0x54, 0x25, 0x81, 0x97, 0x02, 0x93, 0xef,
-	0xde, 0x87, 0x65, 0xef, 0xb2, 0x47, 0xe4, 0x76, 0x4b, 0xeb, 0x6e, 0x2c, 0x6c, 0x27, 0x77, 0x33,
-	0x07, 0x28, 0xaf, 0x9b, 0x46, 0xbe, 0xac, 0x79, 0xda, 0x50, 0x1d, 0x47, 0xa0, 0x62, 0x1a, 0xb8,
-	0x73, 0xad, 0x9b, 0xc3, 0x00, 0xc7, 0x9a, 0x47, 0x9c, 0xba, 0xe6, 0xbc, 0x72, 0x51, 0x0e, 0x16,
-	0xce, 0x8c, 0xce, 0x59, 0x90, 0xda, 0xca, 0x41, 0x26, 0x60, 0x88, 0xa2, 0x03, 0x1f, 0xda, 0x06,
-	0xae, 0x6b, 0x5f, 0x04, 0x19, 0x8e, 0x43, 0x7c, 0x57, 0xee, 0x15, 0x80, 0x72, 0xe6, 0x10, 0xf7,
-	0xcc, 0xee, 0xea, 0x2e, 0xda, 0x81, 0x74, 0xbf, 0xd7, 0x23, 0x4e, 0x48, 0x7a, 0x23, 0x88, 0x88,
-	0x34, 0x2b, 0x09, 0x4c, 0xfd, 0x3e, 0xb0, 0x6b, 0x5f, 0x10, 0x27, 0xa4, 0x9e, 0x04, 0x0c, 0xfc,
-	0xc5, 0x15, 0x58, 0xf6, 0x06, 0xfc, 0xb9, 0xaf, 0xc3, 0xda, 0x50, 0xac, 0x6a, 0xb5, 0x6d, 0xc7,
-	0xd4, 0x3c, 0xc3, 0xb6, 0xd0, 0xe7, 0x21, 0x63, 0x9f, 0xf8, 0xd5, 0x26, 0xba, 0xbf, 0x67, 0x7d,
-	0x32, 0x65, 0x51, 0xab, 0x03, 0x54, 0x60, 0x42, 0x05, 0x80, 0x21, 0xb7, 0x3b, 0x92, 0x49, 0xb4,
-	0x24, 0xcc, 0x40, 0x72, 0x9f, 0x24, 0x61, 0x49, 0xf4, 0x1b, 0xac, 0xd4, 0xee, 0xa0, 0x5d, 0x58,
-	0x0a, 0x9a, 0x4d, 0x35, 0xf4, 0x40, 0x2e, 0x73, 0xb0, 0x1a, 0xc4, 0x06, 0x80, 0xaa, 0xee, 0xe2,
-	0x6b, 0x84, 0xfe, 0x85, 0xee, 0xc1, 0xaa, 0xe1, 0xaa, 0xa7, 0xb6, 0xd5, 0x36, 0x3a, 0x7d, 0x87,
-	0xe8, 0x81, 0xd4, 0x12, 0xbe, 0x6e, 0xb8, 0xa5, 0xa1, 0x2d, 0x96, 0x0c, 0x37, 0x37, 0x19, 0xb4,
-	0x0f, 0x99, 0x53, 0xdb, 0xec, 0xd9, 0x96, 0x9f, 0x43, 0xbf, 0x6f, 0xe8, 0x41, 0x2f, 0xac, 0x1c,
-	0x2c, 0x07, 0x41, 0xcd, 0xbe, 0xa1, 0xe3, 0xd5, 0x21, 0xc0, 0xff, 0x99, 0xdb, 0x87, 0xe5, 0x20,
-	0x39, 0xd7, 0x4f, 0xff, 0x1e, 0xa4, 0x0d, 0x8f, 0x98, 0xee, 0x46, 0x72, 0x9b, 0xdb, 0x5d, 0x61,
-	0x73, 0x2f, 0xb5, 0x3b, 0x98, 0xfa, 0x72, 0x3f, 0x4a, 0x01, 0xaa, 0x19, 0xae, 0x47, 0xc3, 0x30,
-	0x71, 0x7b, 0xb6, 0xe5, 0x12, 0x74, 0x0f, 0x16, 0x5d, 0x4f, 0xf3, 0xfa, 0x6e, 0xb8, 0xf0, 0x95,
-	0x20, 0xb8, 0x11, 0x98, 0x70, 0xe8, 0x42, 0x4f, 0x60, 0xd1, 0x21, 0x9a, 0x6b, 0x5b, 0xc1, 0x72,
-	0x33, 0x07, 0x77, 0x02, 0xd0, 0x38, 0x5b, 0x1e, 0x07, 0x28, 0x1c, 0xa2, 0xd1, 0xdb, 0xb0, 0x48,
-	0x0f, 0x71, 0xb8, 0x09, 0x99, 0x28, 0x33, 0x3f, 0x71, 0x1c, 0x7a, 0xfd, 0x5d, 0xa5, 0x11, 0xaa,
-	0x4e, 0x3c, 0xcd, 0xa0, 0x47, 0x61, 0x19, 0x5f, 0xa7, 0xc6, 0x72, 0x60, 0xcb, 0xbd, 0x0f, 0x8b,
-	0x94, 0x1e, 0xad, 0x01, 0xdf, 0x94, 0xca, 0xe2, 0x61, 0x55, 0x12, 0xcb, 0x2a, 0x16, 0x85, 0x86,
-	0x2c, 0xf1, 0x09, 0x84, 0x20, 0xd3, 0x94, 0x5e, 0x48, 0xf2, 0xb1, 0xa4, 0x96, 0xc5, 0x56, 0xb5,
-	0x24, 0xf2, 0x49, 0xdf, 0x56, 0x95, 0x14, 0x11, 0x4b, 0x42, 0x4d, 0x15, 0x31, 0x96, 0x31, 0x9f,
-	0x42, 0xb7, 0x00, 0x51, 0xbf, 0xda, 0x94, 0xb0, 0x28, 0x94, 0x2a, 0x42, 0xb1, 0x26, 0xf2, 0x5c,
-	0xee, 0xe3, 0x24, 0x64, 0xc3, 0xd4, 0xc2, 0x52, 0x06, 0x1d, 0x89, 0xc9, 0x87, 0x7d, 0xe2, 0x7a,
-	0x68, 0x0f, 0x56, 0x74, 0xe2, 0xcf, 0x20, 0x5a, 0xa0, 0x64, 0xbc, 0x40, 0x40, 0xbd, 0xfe, 0xdf,
-	0x68, 0x0f, 0xae, 0x9d, 0x9e, 0x69, 0x56, 0x87, 0xb8, 0x23, 0xe7, 0x6d, 0xb8, 0x70, 0x7f, 0x42,
-	0x84, 0x00, 0xb4, 0x07, 0xbc, 0x43, 0x5c, 0xe2, 0xa9, 0x9e, 0xad, 0xea, 0xa4, 0xad, 0xf5, 0xbb,
-	0x5e, 0xb0, 0x5b, 0x4b, 0x95, 0x04, 0xce, 0x04, 0x1e, 0xc5, 0x2e, 0x53, 0xbb, 0x7f, 0x82, 0xec,
-	0x1e, 0xa1, 0x79, 0xe5, 0x7e, 0x98, 0x82, 0xad, 0x89, 0xf9, 0xbe, 0x4e, 0x65, 0xbf, 0x18, 0xab,
-	0xec, 0x0e, 0x9b, 0xe8, 0x24, 0xda, 0x78, 0x89, 0xc7, 0x4a, 0xc7, 0x4d, 0x28, 0x9d, 0xf3, 0x29,
-	0x95, 0x2e, 0xb0, 0xb5, 0x84, 0x5a, 0xb5, 0xac, 0x96, 0x64, 0xe9, 0xb0, 0xfa, 0x9c, 0xe7, 0xa6,
-	0x94, 0x73, 0x21, 0xf7, 0x51, 0x12, 0x56, 0x83, 0x75, 0xd4, 0x89, 0xa7, 0xf9, 0xe3, 0xf4, 0xb5,
-	0x2a, 0x38, 0x7e, 0x22, 0x53, 0xb3, 0x4f, 0x24, 0x7a, 0x8b, 0x8d, 0xb0, 0x34, 0x93, 0x84, 0x3b,
-	0x11, 0xc1, 0x24, 0xcd, 0x24, 0xb9, 0x0f, 0x80, 0x17, 0x74, 0xd3, 0xb0, 0xfc, 0x3a, 0x90, 0x52,
-	0xd0, 0x03, 0x68, 0x0f, 0x38, 0xbb, 0x3b, 0x98, 0x3c, 0x1b, 0x81, 0x42, 0x69, 0x10, 0x14, 0x81,
-	0xb1, 0x0f, 0xf2, 0xb1, 0x16, 0xb9, 0x08, 0xab, 0x35, 0x03, 0x6b, 0x91, 0x8b, 0x5c, 0x07, 0x6e,
-	0xc8, 0x3d, 0xe2, 0xb0, 0x52, 0xf7, 0x59, 0xa9, 0xf5, 0xd1, 0xf0, 0x21, 0x96, 0x2a, 0xdd, 0x67,
-	0x95, 0xa6, 0x43, 0x7d, 0x21, 0x7f, 0x51, 0x5d, 0xcd, 0x31, 0xaf, 0xbc, 0xa8, 0x21, 0xf8, 0x0a,
-	0x8b, 0x62, 0xb0, 0xa1, 0x56, 0xd3, 0xd5, 0x3a, 0xe4, 0xaa, 0x5a, 0x11, 0x78, 0xbe, 0x16, 0x8b,
-	0xf5, 0xb5, 0x7a, 0x80, 0x1a, 0x9e, 0x66, 0xe9, 0x27, 0x97, 0xac, 0xda, 0x03, 0x56, 0x2d, 0x3b,
-	0xca, 0xc0, 0xc2, 0xa9, 0xde, 0x03, 0x56, 0x6f, 0x26, 0xda, 0x57, 0xfc, 0x16, 0x07, 0x37, 0x18,
-	0x2d, 0xff, 0xcb, 0x88, 0x44, 0x40, 0x9a, 0x5f, 0x59, 0xd5, 0x3f, 0xb3, 0x44, 0xa5, 0x83, 0x23,
-	0x6c, 0xdf, 0x37, 0x02, 0xc2, 0x78, 0x47, 0x55, 0x12, 0x98, 0xd7, 0xe2, 0x5d, 0x56, 0x84, 0x9b,
-	0xfe, 0xf0, 0x18, 0x65, 0xa1, 0x5d, 0xbd, 0x16, 0xb0, 0xc4, 0x7a, 0xa5, 0x92, 0xc0, 0x37, 0xec,
-	0x58, 0xfb, 0xf8, 0xa9, 0xf8, 0xf5, 0x18, 0x25, 0xe1, 0xd8, 0x54, 0x62, 0x7d, 0x10, 0xa4, 0x12,
-	0xef, 0x0d, 0x11, 0x50, 0xdf, 0xdf, 0xea, 0x51, 0x9a, 0x05, 0x86, 0x26, 0x5e, 0x62, 0x9f, 0xa6,
-	0x1f, 0x2f, 0xfb, 0x0b, 0x58, 0x73, 0xe9, 0x0e, 0x8e, 0x12, 0xa5, 0x03, 0xa2, 0xf5, 0xc1, 0xbc,
-	0x8b, 0xd5, 0xaf, 0x92, 0xc0, 0xc8, 0x1d, 0xb3, 0x16, 0x33, 0x70, 0x9d, 0x25, 0xc9, 0xfd, 0x3a,
-	0x05, 0xe9, 0x60, 0x7e, 0xa0, 0x67, 0x90, 0xa1, 0xb7, 0x03, 0x93, 0x78, 0x9a, 0xae, 0x79, 0x5a,
-	0xb8, 0xf7, 0x28, 0x9a, 0x95, 0x83, 0x19, 0x83, 0x57, 0xc9, 0xe0, 0xa7, 0x0f, 0x1c, 0xb9, 0x58,
-	0xa4, 0x66, 0x5e, 0x2c, 0x9e, 0xc2, 0xb2, 0xa3, 0x19, 0x2e, 0xd1, 0xd5, 0xe1, 0xd7, 0x32, 0x9b,
-	0xa7, 0xf7, 0xd3, 0xfc, 0xe0, 0x7e, 0x9a, 0x57, 0x06, 0x17, 0x58, 0xbc, 0x44, 0xc1, 0x8a, 0x8b,
-	0xde, 0x83, 0xcc, 0xf0, 0x26, 0xa1, 0x1a, 0x56, 0xdb, 0x0e, 0xf7, 0x71, 0x73, 0xf4, 0xc2, 0xc1,
-	0xdc, 0xb1, 0xf0, 0xaa, 0xc7, 0x5a, 0xd1, 0x26, 0x2c, 0x69, 0x7a, 0x18, 0x9b, 0x0e, 0x66, 0xd6,
-	0x35, 0x4d, 0xa7, 0xae, 0xf7, 0xe0, 0x26, 0xbb, 0x29, 0x14, 0xb3, 0xc8, 0xf4, 0x4c, 0xac, 0x57,
-	0xf1, 0x0d, 0x77, 0xd4, 0xb0, 0xf7, 0xb3, 0xb5, 0xf0, 0x9e, 0x55, 0xd5, 0x5d, 0xb4, 0x01, 0x6b,
-	0x62, 0x4b, 0x94, 0x14, 0x55, 0x12, 0xea, 0xfe, 0xbc, 0x0e, 0x3f, 0x04, 0x7c, 0x02, 0xdd, 0x81,
-	0x2c, 0xf5, 0x28, 0x58, 0x90, 0x1a, 0x25, 0xb1, 0xda, 0x12, 0xb1, 0x7a, 0x54, 0x6b, 0x3e, 0x57,
-	0xe5, 0xa6, 0xc2, 0xeb, 0xe8, 0x36, 0x6c, 0x4e, 0xf1, 0x57, 0x25, 0x9e, 0xa0, 0x87, 0x70, 0x7f,
-	0xdc, 0xdd, 0x92, 0x6b, 0x8a, 0xf0, 0x5c, 0x54, 0x85, 0xa2, 0xdc, 0x12, 0x55, 0xa5, 0x82, 0xc5,
-	0x46, 0x45, 0xae, 0x95, 0xf9, 0xf6, 0x6c, 0x78, 0x51, 0xac, 0xc9, 0xc7, 0x0c, 0xbc, 0x83, 0xde,
-	0x81, 0x87, 0xe3, 0x70, 0x45, 0xac, 0x1f, 0x89, 0x58, 0x50, 0x9a, 0x78, 0x5c, 0xe1, 0x6c, 0x7e,
-	0x48, 0x5c, 0xc5, 0x98, 0x9c, 0x54, 0xa9, 0x89, 0xb1, 0x6f, 0x8b, 0x2b, 0x7c, 0x30, 0x1b, 0x1e,
-	0x67, 0x7f, 0x85, 0xf2, 0xb0, 0x37, 0x0e, 0xc7, 0x5f, 0x52, 0x8f, 0xe4, 0x63, 0x11, 0x8f, 0xd1,
-	0x77, 0xe7, 0xe0, 0xe3, 0xfc, 0xe6, 0x64, 0xbc, 0x32, 0x8d, 0xdf, 0x9a, 0x83, 0x8f, 0xf3, 0xdb,
-	0x93, 0x1b, 0xe0, 0x50, 0xa8, 0xd6, 0x9a, 0x58, 0xe4, 0x7b, 0xe8, 0x29, 0x3c, 0xba, 0x72, 0x03,
-	0xa8, 0x58, 0x2c, 0xc9, 0x2d, 0x11, 0x8b, 0x65, 0xfe, 0xc3, 0xd9, 0x81, 0xb1, 0x34, 0x98, 0x40,
-	0x07, 0xbd, 0x0b, 0x4f, 0x5f, 0xab, 0x29, 0x98, 0x60, 0x77, 0x7e, 0xf0, 0x74, 0x65, 0x6f, 0x72,
-	0xca, 0x53, 0x1a, 0x85, 0x09, 0xec, 0xcf, 0x0e, 0x9c, 0xae, 0x78, 0x8e, 0xbe, 0x00, 0x8f, 0xaf,
-	0xde, 0x3c, 0x4c, 0xe4, 0xc5, 0x9c, 0xc8, 0xe9, 0x9a, 0x5f, 0x99, 0x1c, 0xa9, 0xcc, 0xd7, 0xbc,
-	0x9c, 0x13, 0x39, 0x5d, 0xf3, 0xab, 0x68, 0x07, 0xee, 0x4d, 0x6d, 0x32, 0x06, 0xf8, 0x35, 0xb4,
-	0x0e, 0x88, 0x02, 0x8f, 0x1a, 0xcd, 0x68, 0x4c, 0xfd, 0x26, 0x89, 0x6e, 0xc1, 0xcd, 0x98, 0xa3,
-	0x2a, 0xf1, 0xbf, 0x8d, 0xd9, 0x07, 0x6d, 0xfb, 0xbb, 0x24, 0xda, 0x86, 0xad, 0x31, 0x3b, 0xa3,
-	0xf4, 0x7b, 0x26, 0xf2, 0x50, 0x90, 0x86, 0x91, 0x3f, 0x4e, 0x45, 0x29, 0xf8, 0xf6, 0x61, 0x0a,
-	0x1f, 0xa7, 0x46, 0x03, 0x06, 0x29, 0xfc, 0x24, 0x15, 0x49, 0x31, 0x44, 0x8c, 0xd4, 0x4f, 0x53,
-	0xe8, 0x3e, 0xbc, 0x49, 0x11, 0xa5, 0xa3, 0xe6, 0x84, 0x56, 0x2e, 0xe1, 0xaa, 0x52, 0x2d, 0x09,
-	0x35, 0xfe, 0xdb, 0x1c, 0x7a, 0x1b, 0x3e, 0x3b, 0x0b, 0x7a, 0x28, 0x28, 0x42, 0x8d, 0xff, 0x0e,
-	0x87, 0x1e, 0x41, 0xfe, 0x2a, 0x94, 0x4c, 0x1e, 0xdf, 0xe5, 0xd0, 0x3e, 0x7c, 0x6e, 0x2e, 0x39,
-	0x13, 0xf1, 0x3d, 0x0e, 0xbd, 0x09, 0x77, 0xa3, 0x88, 0x66, 0x63, 0xd2, 0xd4, 0xff, 0x88, 0x43,
-	0xf9, 0xc1, 0xc8, 0x9c, 0x8a, 0x62, 0x58, 0xbf, 0xcf, 0xa1, 0x2c, 0xbc, 0x41, 0xf1, 0x95, 0xe3,
-	0xf0, 0xff, 0x12, 0x15, 0x8b, 0x0d, 0x51, 0xe1, 0xff, 0xcc, 0xa1, 0xc2, 0x60, 0x7e, 0x45, 0xbe,
-	0x19, 0x3b, 0xf6, 0x17, 0x0e, 0x3d, 0x80, 0x9d, 0xf9, 0x01, 0x74, 0xdf, 0xfe, 0xca, 0xa1, 0x67,
-	0x83, 0x1e, 0xbe, 0x0a, 0x3d, 0x93, 0xf5, 0xdf, 0x38, 0xf4, 0x04, 0xde, 0xb9, 0xa2, 0x10, 0x13,
-	0xf7, 0x77, 0x0e, 0x6d, 0xc1, 0xad, 0xf1, 0xd5, 0x16, 0x65, 0x59, 0xe1, 0xff, 0xc1, 0xa1, 0x1d,
-	0xc8, 0x0d, 0x9d, 0x2c, 0x5b, 0x43, 0x94, 0x1a, 0x32, 0x3d, 0x23, 0x62, 0x99, 0xff, 0xe7, 0xe8,
-	0x32, 0x85, 0x5a, 0x6d, 0x02, 0xb8, 0x31, 0x40, 0xff, 0x8b, 0x43, 0xbb, 0x83, 0x03, 0xe7, 0x6b,
-	0x56, 0x1b, 0x2f, 0xa6, 0xd4, 0xee, 0xdf, 0x1c, 0x3a, 0x18, 0x7c, 0x50, 0x67, 0x22, 0x99, 0x15,
-	0xfd, 0x87, 0x43, 0x7b, 0xf0, 0xd6, 0x30, 0xa6, 0x2e, 0xd6, 0x65, 0xfc, 0x72, 0x0a, 0xff, 0x7f,
-	0x39, 0xf4, 0x18, 0x0a, 0x57, 0xc2, 0x32, 0x0a, 0xff, 0xe3, 0xd0, 0x9d, 0xc1, 0x57, 0xa9, 0x72,
-	0xac, 0x4a, 0xca, 0x91, 0xda, 0x78, 0x29, 0x95, 0x86, 0x87, 0xf4, 0x1b, 0x0b, 0x23, 0xeb, 0x8b,
-	0xfb, 0x19, 0xa6, 0x6f, 0x2e, 0xa0, 0xdb, 0xb0, 0x41, 0x91, 0xb5, 0xaa, 0x24, 0xaa, 0x25, 0x01,
-	0x97, 0xa3, 0x43, 0xfd, 0x87, 0x05, 0xf4, 0x19, 0x58, 0x9f, 0xe8, 0xae, 0x4a, 0xfc, 0x1f, 0x19,
-	0x99, 0x92, 0x5c, 0x3f, 0x92, 0xa5, 0xe0, 0x3b, 0x50, 0xae, 0x57, 0x25, 0xb5, 0xa1, 0x08, 0x8a,
-	0xa8, 0x96, 0x2a, 0x82, 0xf4, 0x5c, 0x2c, 0xf3, 0x9f, 0xa4, 0xa3, 0x3a, 0x46, 0x48, 0xf9, 0x48,
-	0xc4, 0x31, 0xe0, 0xcf, 0xd3, 0x13, 0x29, 0x6b, 0x02, 0xae, 0xc7, 0x90, 0xbf, 0x98, 0x88, 0xa4,
-	0x3b, 0x37, 0x8a, 0xfc, 0x65, 0x3a, 0xaa, 0x47, 0x84, 0x6c, 0x28, 0x82, 0x54, 0x2e, 0xbe, 0x8c,
-	0x61, 0x7f, 0x95, 0x3e, 0xf8, 0x53, 0x12, 0x6e, 0x4b, 0x9a, 0x67, 0x9c, 0x13, 0xfa, 0x18, 0x51,
-	0xd7, 0x2c, 0xad, 0x43, 0x4c, 0xff, 0x9f, 0x26, 0xfa, 0x14, 0x8c, 0x9e, 0x00, 0x44, 0x2f, 0x50,
-	0x88, 0xbe, 0xaf, 0x55, 0x34, 0x47, 0xbf, 0xd0, 0x1c, 0x52, 0x2d, 0x67, 0xd7, 0xa7, 0xbc, 0x51,
-	0xa1, 0xf7, 0x61, 0xb3, 0xd9, 0xd3, 0x35, 0x8f, 0x4c, 0x78, 0xe5, 0x40, 0x77, 0xa7, 0xbf, 0x7f,
-	0x04, 0xcf, 0x40, 0xd9, 0xed, 0x79, 0x0f, 0x24, 0xe8, 0x31, 0x5c, 0x6f, 0x78, 0x0e, 0xd1, 0xcc,
-	0x30, 0xb3, 0x5b, 0x63, 0xd7, 0x78, 0xd1, 0xec, 0x79, 0x97, 0x59, 0x88, 0x98, 0xf6, 0x93, 0xc5,
-	0x77, 0xbf, 0xfc, 0xac, 0x63, 0x78, 0x67, 0xfd, 0x93, 0xfc, 0xa9, 0x6d, 0x16, 0xec, 0x1e, 0xb1,
-	0x4e, 0x6d, 0x47, 0x2f, 0xd0, 0x27, 0x89, 0x87, 0xe6, 0x70, 0xf5, 0x0f, 0x0d, 0xcb, 0x23, 0x4e,
-	0x5b, 0x3b, 0x25, 0x85, 0xf3, 0x47, 0x85, 0x8e, 0x5d, 0xd0, 0x4d, 0xe3, 0x64, 0x31, 0xa0, 0x7e,
-	0xf4, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1c, 0x32, 0xf3, 0xdf, 0x3a, 0x17, 0x00, 0x00,
+	// 2184 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x5b, 0x73, 0xdb, 0xc6,
+	0x15, 0x16, 0x05, 0x51, 0x12, 0x8f, 0x24, 0x1a, 0xde, 0x51, 0x6c, 0x59, 0xae, 0x6d, 0x85, 0x4e,
+	0x62, 0x59, 0xb5, 0x49, 0x47, 0x76, 0xed, 0x7a, 0xf2, 0x90, 0x40, 0x20, 0x24, 0xa2, 0x26, 0x01,
+	0xcd, 0x12, 0xa4, 0xea, 0x3e, 0x04, 0x03, 0x0b, 0x4b, 0x0a, 0x31, 0x01, 0x30, 0x00, 0x28, 0x55,
+	0xed, 0x4c, 0xa7, 0x7d, 0xea, 0xf4, 0xad, 0x97, 0xf4, 0xa9, 0x9d, 0xfe, 0x82, 0xa6, 0xfd, 0x03,
+	0xe9, 0xed, 0xad, 0x97, 0x3f, 0xd0, 0xfc, 0x88, 0xbe, 0xf5, 0x9e, 0xde, 0x06, 0xbb, 0x20, 0x01,
+	0x82, 0x37, 0x79, 0xa6, 0x6f, 0xc4, 0x39, 0xdf, 0xf9, 0xbe, 0xb3, 0x7b, 0xce, 0x5e, 0xb8, 0xb0,
+	0x65, 0xda, 0x56, 0xe9, 0xe4, 0x4c, 0x27, 0xa7, 0xc4, 0x09, 0x7c, 0xdd, 0x6e, 0xdb, 0x81, 0xee,
+	0x13, 0xef, 0xd4, 0x3a, 0x26, 0xc5, 0xae, 0xe7, 0x06, 0x2e, 0xe2, 0x4c, 0xdb, 0xda, 0xbc, 0x1c,
+	0xc2, 0x8e, 0x5d, 0xdb, 0x76, 0x1d, 0x9f, 0xd9, 0x37, 0x57, 0x59, 0x64, 0xf4, 0x75, 0xab, 0xed,
+	0xba, 0xed, 0x0e, 0x29, 0xd1, 0xaf, 0x17, 0xbd, 0x56, 0x29, 0xb0, 0x6c, 0xe2, 0x07, 0x86, 0xdd,
+	0x8d, 0x00, 0xd7, 0xd3, 0x00, 0x62, 0x77, 0x83, 0x73, 0xe6, 0x2c, 0xfc, 0x28, 0x03, 0xb9, 0xa6,
+	0xd1, 0xe9, 0x11, 0xed, 0xbc, 0x4b, 0xd0, 0x35, 0x58, 0xb2, 0x9c, 0x40, 0x3f, 0x35, 0x3a, 0x1b,
+	0x99, 0xad, 0xcc, 0x36, 0x57, 0x99, 0xc3, 0x8b, 0x96, 0x13, 0x34, 0x8d, 0x0e, 0xba, 0x0e, 0xcb,
+	0xbd, 0xbe, 0x6f, 0x7e, 0x2b, 0xb3, 0xbd, 0x50, 0x99, 0xc3, 0x4b, 0xbd, 0xc8, 0x79, 0x03, 0x72,
+	0xad, 0x8e, 0x6b, 0x30, 0x2f, 0xb7, 0x95, 0xd9, 0x9e, 0xaf, 0xcc, 0xe1, 0x65, 0x6a, 0x0a, 0xdd,
+	0x0f, 0x20, 0x17, 0x9c, 0x77, 0x89, 0xda, 0x6a, 0x1a, 0x9d, 0x8d, 0x85, 0xad, 0xcc, 0x76, 0x7e,
+	0x17, 0x15, 0x4d, 0xdb, 0x2a, 0x96, 0x8d, 0xc0, 0x18, 0xa8, 0xe3, 0x18, 0xb4, 0x97, 0x05, 0xee,
+	0xd4, 0xe8, 0x14, 0x30, 0xc0, 0x91, 0x11, 0x10, 0xaf, 0x66, 0x78, 0x2f, 0x7d, 0x54, 0x80, 0x85,
+	0x13, 0xab, 0x7d, 0x42, 0x53, 0x5b, 0xd9, 0xcd, 0x53, 0x86, 0x38, 0x9a, 0xfa, 0xd0, 0x16, 0x70,
+	0x1d, 0xf7, 0x8c, 0x66, 0x38, 0x0a, 0x09, 0x5d, 0x85, 0x97, 0x00, 0xda, 0x89, 0x47, 0xfc, 0x13,
+	0xb7, 0x63, 0xfa, 0xe8, 0x0e, 0x64, 0x7b, 0xdd, 0x2e, 0xf1, 0x22, 0xd2, 0x4b, 0x34, 0x22, 0xd6,
+	0xac, 0xcc, 0x61, 0xe6, 0x0f, 0x81, 0x1d, 0xf7, 0x8c, 0x78, 0x11, 0xf5, 0x38, 0x20, 0xf5, 0xef,
+	0xad, 0x40, 0x2e, 0xe8, 0xf3, 0x17, 0xbe, 0x01, 0xeb, 0x03, 0x31, 0xd9, 0x69, 0xb9, 0x9e, 0x6d,
+	0x04, 0x96, 0xeb, 0xa0, 0x2f, 0x40, 0xde, 0x7d, 0x11, 0x56, 0x9b, 0x98, 0xe1, 0x9c, 0xf5, 0xc8,
+	0x84, 0x41, 0xad, 0xf5, 0x51, 0xd4, 0x84, 0x4a, 0x00, 0x03, 0x6e, 0x7f, 0x28, 0x93, 0x78, 0x48,
+	0x38, 0x01, 0x29, 0x7c, 0x92, 0x81, 0x65, 0x29, 0x6c, 0x30, 0xb1, 0xd5, 0x46, 0xdb, 0xb0, 0x4c,
+	0x9b, 0x4d, 0xb7, 0x4c, 0x2a, 0x97, 0xdf, 0x5d, 0xa3, 0xb1, 0x14, 0x20, 0x9b, 0x3e, 0x5e, 0x22,
+	0xec, 0x17, 0xba, 0x0d, 0x6b, 0x96, 0xaf, 0x1f, 0xbb, 0x4e, 0xcb, 0x6a, 0xf7, 0x3c, 0x62, 0x52,
+	0xa9, 0x65, 0xbc, 0x6a, 0xf9, 0xe2, 0xc0, 0x96, 0x4a, 0x86, 0x9b, 0x99, 0x0c, 0x7a, 0x00, 0xf9,
+	0x63, 0xd7, 0xee, 0xba, 0x4e, 0x98, 0x43, 0xaf, 0x67, 0x99, 0xb4, 0x17, 0x56, 0x76, 0x73, 0x34,
+	0xa8, 0xd1, 0xb3, 0x4c, 0xbc, 0x36, 0x00, 0x84, 0x9f, 0x85, 0x07, 0x90, 0xa3, 0xc9, 0xf9, 0x61,
+	0xfa, 0xb7, 0x21, 0x6b, 0x05, 0xc4, 0xf6, 0x37, 0x32, 0x5b, 0xdc, 0xf6, 0x4a, 0x32, 0x77, 0xb1,
+	0xd5, 0xc6, 0xcc, 0x57, 0xf8, 0xc9, 0x3c, 0xa0, 0xaa, 0xe5, 0x07, 0x2c, 0x0c, 0x13, 0xbf, 0xeb,
+	0x3a, 0x3e, 0x41, 0xb7, 0x61, 0xd1, 0x0f, 0x8c, 0xa0, 0xe7, 0x47, 0x03, 0x5f, 0xa1, 0xc1, 0x75,
+	0x6a, 0xc2, 0x91, 0x0b, 0x3d, 0x86, 0x45, 0x8f, 0x18, 0xbe, 0xeb, 0xd0, 0xe1, 0xe6, 0x77, 0x6f,
+	0x52, 0xd0, 0x28, 0x5b, 0x11, 0x53, 0x14, 0x8e, 0xd0, 0xe8, 0x2d, 0x58, 0x64, 0x8b, 0x38, 0x9a,
+	0x84, 0x7c, 0x9c, 0x59, 0x98, 0x38, 0x8e, 0xbc, 0xe1, 0xac, 0xb2, 0x08, 0xdd, 0x24, 0x81, 0x61,
+	0xb1, 0xa5, 0x90, 0xc3, 0xab, 0xcc, 0x58, 0xa6, 0xb6, 0xc2, 0xfb, 0xb0, 0xc8, 0xe8, 0xd1, 0x3a,
+	0xf0, 0x0d, 0xa5, 0x2c, 0xed, 0xcb, 0x8a, 0x54, 0xd6, 0xb1, 0x24, 0xd4, 0x55, 0x85, 0x9f, 0x43,
+	0x08, 0xf2, 0x0d, 0xe5, 0x99, 0xa2, 0x1e, 0x29, 0x7a, 0x59, 0x6a, 0xca, 0xa2, 0xc4, 0x67, 0x42,
+	0x9b, 0xac, 0x68, 0x12, 0x56, 0x84, 0xaa, 0x2e, 0x61, 0xac, 0x62, 0x7e, 0x1e, 0x5d, 0x01, 0xc4,
+	0xfc, 0x7a, 0x43, 0xc1, 0x92, 0x20, 0x56, 0x84, 0xbd, 0xaa, 0xc4, 0x73, 0x85, 0x8f, 0x33, 0xb0,
+	0x19, 0xa5, 0x16, 0x95, 0x92, 0x76, 0x24, 0x26, 0x1f, 0xf6, 0x88, 0x1f, 0xa0, 0x1d, 0x58, 0x31,
+	0x49, 0xb8, 0x07, 0xb1, 0x02, 0x65, 0xd2, 0x05, 0x02, 0xe6, 0x0d, 0x7f, 0xa3, 0x1d, 0x58, 0x3a,
+	0x3e, 0x31, 0x9c, 0x36, 0xf1, 0x87, 0xd6, 0xdb, 0x60, 0xe0, 0xe1, 0x0e, 0x11, 0x01, 0xd0, 0x0e,
+	0xf0, 0x1e, 0xf1, 0x49, 0xa0, 0x07, 0xae, 0x6e, 0x92, 0x96, 0xd1, 0xeb, 0x04, 0x74, 0xb6, 0x96,
+	0x2b, 0x73, 0x38, 0x4f, 0x3d, 0x9a, 0x5b, 0x66, 0xf6, 0x70, 0x05, 0xb9, 0x5d, 0xc2, 0xf2, 0x2a,
+	0xfc, 0x78, 0x1e, 0xae, 0x8f, 0xcd, 0xf7, 0x55, 0x2a, 0xfb, 0x6e, 0xaa, 0xb2, 0x77, 0x92, 0x89,
+	0x8e, 0xa3, 0x4d, 0x97, 0x78, 0xa4, 0x74, 0xdc, 0x98, 0xd2, 0x79, 0xff, 0xa7, 0xd2, 0x51, 0x5b,
+	0x53, 0xa8, 0xca, 0x65, 0x5d, 0x54, 0x95, 0x7d, 0xf9, 0x80, 0xe7, 0x26, 0x94, 0x73, 0xa1, 0xf0,
+	0x51, 0x06, 0xd6, 0xe8, 0x38, 0x6a, 0x24, 0x30, 0xc2, 0xed, 0xf4, 0x95, 0x2a, 0x38, 0xba, 0x22,
+	0xe7, 0xa7, 0xaf, 0x48, 0xf4, 0x66, 0x32, 0xc2, 0x31, 0x6c, 0x12, 0xcd, 0x44, 0x0c, 0x53, 0x0c,
+	0x9b, 0x14, 0x3e, 0x00, 0x5e, 0x30, 0x6d, 0xcb, 0x09, 0xeb, 0x40, 0x44, 0xda, 0x03, 0x68, 0x07,
+	0x38, 0xb7, 0xd3, 0xdf, 0x79, 0x36, 0xa8, 0x82, 0xd8, 0x0f, 0x8a, 0xc1, 0x38, 0x04, 0x85, 0x58,
+	0x87, 0x9c, 0x45, 0xd5, 0x9a, 0x82, 0x75, 0xc8, 0x59, 0xa1, 0x0d, 0x97, 0xd4, 0x2e, 0xf1, 0x92,
+	0x52, 0x77, 0x93, 0x52, 0x57, 0x87, 0xc3, 0x07, 0x58, 0xa6, 0x74, 0x37, 0xa9, 0x34, 0x19, 0x1a,
+	0x0a, 0x85, 0x83, 0xea, 0x18, 0x9e, 0x7d, 0xe1, 0x41, 0x0d, 0xc0, 0x17, 0x18, 0x54, 0x02, 0x1b,
+	0x69, 0x35, 0x7c, 0xa3, 0x4d, 0x2e, 0xaa, 0x15, 0x83, 0x67, 0x6b, 0x25, 0xb1, 0xa1, 0x56, 0x17,
+	0x50, 0x3d, 0x30, 0x1c, 0xf3, 0xc5, 0x79, 0x52, 0xed, 0x5e, 0x52, 0x6d, 0x73, 0x98, 0x21, 0x09,
+	0x67, 0x7a, 0xf7, 0x92, 0x7a, 0x53, 0xd1, 0xa1, 0xe2, 0xb7, 0x39, 0xb8, 0x94, 0xd0, 0x0a, 0x4f,
+	0x46, 0x24, 0x01, 0x32, 0xc2, 0xca, 0xea, 0xe1, 0x9a, 0x25, 0x3a, 0xdb, 0x38, 0xa2, 0xf6, 0x7d,
+	0x8d, 0x12, 0xa6, 0x3b, 0xaa, 0x32, 0x87, 0x79, 0x23, 0xdd, 0x65, 0x7b, 0x70, 0x39, 0xdc, 0x3c,
+	0x86, 0x59, 0x58, 0x57, 0xaf, 0x53, 0x96, 0x54, 0xaf, 0x54, 0xe6, 0xf0, 0x25, 0x37, 0xd5, 0x3e,
+	0x61, 0x2a, 0x61, 0x3d, 0x86, 0x49, 0xb8, 0x64, 0x2a, 0xa9, 0x3e, 0xa0, 0xa9, 0xa4, 0x7b, 0x43,
+	0x02, 0xd4, 0x0b, 0xa7, 0x7a, 0x98, 0x66, 0x21, 0x41, 0x93, 0x2e, 0x71, 0x48, 0xd3, 0x4b, 0x97,
+	0xfd, 0x19, 0xac, 0xfb, 0x6c, 0x06, 0x87, 0x89, 0xb2, 0x94, 0xe8, 0x6a, 0x7f, 0xbf, 0x4b, 0xd5,
+	0xaf, 0x32, 0x87, 0x91, 0x3f, 0x62, 0xdd, 0xcb, 0xc3, 0x6a, 0x92, 0xa4, 0xf0, 0x59, 0x06, 0xf8,
+	0x03, 0xe2, 0x10, 0xcf, 0x3a, 0x66, 0xd7, 0x80, 0xb0, 0x14, 0x1b, 0xb0, 0x64, 0x13, 0x3f, 0xcc,
+	0x83, 0xce, 0x7f, 0x0e, 0xf7, 0x3f, 0xd1, 0xeb, 0xb0, 0x1a, 0xfd, 0xd4, 0x8f, 0x5d, 0x93, 0x4d,
+	0x6c, 0x0e, 0xaf, 0x44, 0x36, 0xd1, 0x35, 0x09, 0x7a, 0x17, 0x96, 0x7d, 0x72, 0x4a, 0x3c, 0x2b,
+	0x38, 0xa7, 0x53, 0x96, 0xdf, 0xbd, 0x4d, 0x53, 0x4c, 0xab, 0xb0, 0xed, 0xb7, 0x1e, 0x41, 0xf1,
+	0x20, 0xa8, 0x60, 0x45, 0x3b, 0x5a, 0xdf, 0x85, 0x6e, 0xc2, 0xa6, 0xd4, 0x94, 0x14, 0x4d, 0xaf,
+	0x4b, 0x4d, 0x09, 0xcb, 0xda, 0x73, 0xbd, 0xa1, 0xd4, 0x0f, 0x25, 0x51, 0xde, 0x97, 0xa5, 0x32,
+	0x3f, 0x87, 0x56, 0x61, 0x59, 0xc4, 0xb2, 0x26, 0x8b, 0x42, 0x95, 0xcf, 0xa0, 0x1c, 0x64, 0x6b,
+	0xc2, 0x97, 0xe8, 0x46, 0x1a, 0xfe, 0x94, 0x15, 0x15, 0xf3, 0x1c, 0x02, 0x58, 0x54, 0x54, 0x5c,
+	0x13, 0xaa, 0xfc, 0x02, 0x5a, 0x86, 0x05, 0x59, 0xd9, 0x57, 0xf9, 0x6c, 0xe1, 0x3b, 0x1c, 0x64,
+	0xa9, 0x16, 0x7a, 0x0a, 0x79, 0x76, 0x37, 0xb2, 0x49, 0x60, 0x98, 0x46, 0x60, 0x44, 0x9d, 0x87,
+	0xe2, 0x93, 0xa2, 0xbf, 0xc3, 0xe2, 0x35, 0xd2, 0xff, 0x0c, 0x81, 0x43, 0xd7, 0xaa, 0xf9, 0xa9,
+	0xd7, 0xaa, 0x27, 0x90, 0xf3, 0x0c, 0xcb, 0x27, 0xa6, 0x3e, 0xb8, 0x2b, 0x6c, 0x16, 0xd9, 0xed,
+	0xbc, 0xd8, 0xbf, 0x9d, 0x17, 0xb5, 0xfe, 0xf5, 0x1d, 0x2f, 0x33, 0xb0, 0xe6, 0xa3, 0xf7, 0x20,
+	0x3f, 0xb8, 0x47, 0xe9, 0x96, 0xd3, 0x72, 0xa3, 0x2e, 0xba, 0x36, 0x7c, 0xdd, 0x4a, 0xdc, 0x30,
+	0xf1, 0x5a, 0x90, 0xb4, 0xa2, 0x6b, 0xb0, 0x6c, 0x98, 0x51, 0x6c, 0x96, 0xd5, 0xd4, 0x30, 0x99,
+	0xeb, 0x3d, 0xb8, 0x9c, 0x6c, 0x09, 0x86, 0x59, 0x4c, 0xac, 0x98, 0xd4, 0x4a, 0xc5, 0x97, 0xfc,
+	0xd4, 0xd2, 0x15, 0x01, 0xb5, 0x59, 0x75, 0xf5, 0x68, 0x26, 0x42, 0x8a, 0xa5, 0x44, 0xa3, 0xa7,
+	0x8b, 0x8f, 0xf9, 0x76, 0xca, 0xb2, 0xf3, 0xe9, 0x7a, 0x74, 0x55, 0x95, 0x4d, 0x1f, 0x6d, 0xc0,
+	0x3a, 0x2b, 0xb9, 0x22, 0xd4, 0xc2, 0x23, 0x2f, 0x3a, 0x4b, 0xf9, 0xb9, 0xb8, 0x19, 0x34, 0x2c,
+	0x28, 0x75, 0x51, 0x92, 0x9b, 0x12, 0xd6, 0x0f, 0xab, 0x8d, 0x03, 0x5d, 0x6d, 0x68, 0xbc, 0x89,
+	0x6e, 0xc0, 0xb5, 0x09, 0x7e, 0x59, 0xe1, 0x09, 0xba, 0x0f, 0x77, 0x47, 0xdd, 0x4d, 0xb5, 0xaa,
+	0x09, 0x07, 0x92, 0x2e, 0xec, 0xa9, 0x4d, 0x49, 0xd7, 0x2a, 0x58, 0xaa, 0x57, 0xd4, 0x6a, 0x99,
+	0x6f, 0x4d, 0x87, 0xef, 0x49, 0x55, 0xf5, 0x28, 0x01, 0x6f, 0xa3, 0xb7, 0xe1, 0xfe, 0x28, 0x5c,
+	0x93, 0x6a, 0x87, 0x12, 0x16, 0xb4, 0x06, 0x1e, 0x55, 0x38, 0x99, 0x1d, 0x92, 0x56, 0xb1, 0xc6,
+	0x27, 0x25, 0x36, 0x30, 0x0e, 0x6d, 0x69, 0x85, 0x0f, 0xa6, 0xc3, 0xd3, 0xec, 0x2f, 0x51, 0x11,
+	0x76, 0x46, 0xe1, 0xf8, 0xcb, 0xfa, 0xa1, 0x7a, 0x24, 0xe1, 0x11, 0xfa, 0xce, 0x0c, 0x7c, 0x9a,
+	0xdf, 0x1e, 0x8f, 0xd7, 0x26, 0xf1, 0x3b, 0x33, 0xf0, 0x69, 0x7e, 0x77, 0x7c, 0x03, 0xec, 0x0b,
+	0x72, 0xb5, 0x81, 0x25, 0xbe, 0x8b, 0x9e, 0xc0, 0xc3, 0x0b, 0x37, 0x80, 0x8e, 0x25, 0x51, 0x6d,
+	0x4a, 0x58, 0x2a, 0xf3, 0x1f, 0x4e, 0x0f, 0x4c, 0xa5, 0x91, 0x08, 0xf4, 0xd0, 0x3b, 0xf0, 0xe4,
+	0x95, 0x9a, 0x22, 0x11, 0xec, 0xcf, 0x0e, 0x9e, 0xac, 0x1c, 0x8c, 0x4f, 0x79, 0x42, 0xa3, 0x24,
+	0x02, 0x7b, 0xd3, 0x03, 0x27, 0x2b, 0x9e, 0xa2, 0x2f, 0xc2, 0xa3, 0x8b, 0x37, 0x4f, 0x22, 0xf2,
+	0x6c, 0x46, 0xe4, 0x64, 0xcd, 0xaf, 0x8e, 0x8f, 0xd4, 0x66, 0x6b, 0x9e, 0xcf, 0x88, 0x9c, 0xac,
+	0xf9, 0x35, 0x74, 0x07, 0x6e, 0x4f, 0x6c, 0xb2, 0x04, 0xf0, 0xeb, 0xe8, 0x2a, 0x20, 0x06, 0x3c,
+	0xac, 0x37, 0xe2, 0x6d, 0xea, 0xb7, 0x19, 0x74, 0x05, 0x2e, 0xa7, 0x1c, 0xb2, 0xc2, 0xff, 0x2e,
+	0x65, 0xef, 0xb7, 0xed, 0xef, 0x33, 0x68, 0x0b, 0xae, 0x8f, 0xd8, 0x13, 0x4a, 0x7f, 0x48, 0x44,
+	0xee, 0x0b, 0xca, 0x20, 0xf2, 0xa7, 0xf3, 0x71, 0x0a, 0xa1, 0x7d, 0x90, 0xc2, 0xc7, 0xf3, 0xc3,
+	0x01, 0xfd, 0x14, 0x7e, 0x36, 0x1f, 0x4b, 0x25, 0x88, 0x12, 0x52, 0x3f, 0x9f, 0x47, 0x77, 0xe1,
+	0x0d, 0x86, 0x10, 0x0f, 0x1b, 0x63, 0x5a, 0x79, 0x70, 0x1a, 0x7f, 0x97, 0x43, 0x6f, 0xc1, 0xeb,
+	0xd3, 0xa0, 0xfb, 0x82, 0x26, 0x54, 0xf9, 0xef, 0x71, 0xe8, 0x21, 0x14, 0x2f, 0x42, 0x99, 0xc8,
+	0xe3, 0xfb, 0x1c, 0x7a, 0x00, 0x9f, 0x9f, 0x49, 0x9e, 0x88, 0xf8, 0x01, 0x87, 0xde, 0x80, 0x5b,
+	0x71, 0x44, 0xa3, 0x3e, 0x6e, 0xd7, 0xff, 0x88, 0x43, 0xc5, 0xfe, 0x96, 0x39, 0x11, 0x95, 0x60,
+	0xfd, 0x21, 0x87, 0x36, 0xe1, 0x35, 0x86, 0xaf, 0x1c, 0x45, 0x7f, 0xed, 0x74, 0x2c, 0xd5, 0x25,
+	0x8d, 0xff, 0x33, 0x87, 0x4a, 0xfd, 0xfd, 0x2b, 0xf6, 0x4d, 0x99, 0xb1, 0xbf, 0x70, 0xe8, 0x1e,
+	0xdc, 0x99, 0x1d, 0xc0, 0xe6, 0xed, 0xaf, 0x1c, 0x7a, 0xda, 0xef, 0xe1, 0x8b, 0xd0, 0x27, 0xb2,
+	0xfe, 0x1b, 0x87, 0x1e, 0xc3, 0xdb, 0x17, 0x14, 0x4a, 0xc4, 0xfd, 0x9d, 0x43, 0xd7, 0xe1, 0xca,
+	0xe8, 0x68, 0xf7, 0x54, 0x55, 0xe3, 0xff, 0xc1, 0xa1, 0x3b, 0x50, 0x18, 0x38, 0x93, 0x6c, 0x75,
+	0x49, 0xa9, 0xab, 0x6c, 0x8d, 0x48, 0x65, 0xfe, 0x9f, 0xc3, 0xc3, 0x14, 0xaa, 0xd5, 0x31, 0xe0,
+	0x7a, 0x1f, 0xfd, 0x19, 0x87, 0xb6, 0xfb, 0x0b, 0x2e, 0xd4, 0x94, 0xeb, 0xcf, 0x26, 0xd4, 0xee,
+	0x5f, 0x1c, 0xda, 0xed, 0x1f, 0xa8, 0x53, 0x91, 0x89, 0x11, 0xfd, 0x9b, 0x43, 0x3b, 0xf0, 0xe6,
+	0x20, 0xa6, 0x26, 0xd5, 0x54, 0xfc, 0x7c, 0x02, 0xff, 0x7f, 0x38, 0xf4, 0x08, 0x4a, 0x17, 0xc2,
+	0x26, 0x14, 0xfe, 0xcb, 0xa1, 0x9b, 0xfd, 0x53, 0xa9, 0x72, 0xa4, 0x2b, 0xda, 0xa1, 0x5e, 0x7f,
+	0xae, 0x88, 0x83, 0x45, 0xfa, 0xcd, 0x85, 0xa1, 0xf1, 0xa5, 0xfd, 0x09, 0xa6, 0x6f, 0x2d, 0xa0,
+	0x1b, 0xb0, 0xc1, 0x90, 0x55, 0x59, 0x91, 0x74, 0x51, 0xc0, 0xe5, 0x78, 0x51, 0xff, 0x71, 0x01,
+	0x7d, 0x0e, 0xae, 0x8e, 0x75, 0xcb, 0x0a, 0xff, 0x69, 0x42, 0x46, 0x54, 0x6b, 0x87, 0xaa, 0x42,
+	0xcf, 0x81, 0x72, 0x4d, 0x56, 0xf4, 0xba, 0x26, 0x68, 0x92, 0x2e, 0x56, 0x04, 0xe5, 0x40, 0x2a,
+	0xf3, 0x9f, 0x64, 0xe3, 0x3a, 0xc6, 0x48, 0xf5, 0x50, 0xc2, 0x29, 0xe0, 0x2f, 0xb2, 0x63, 0x29,
+	0xab, 0x02, 0xae, 0xa5, 0x90, 0xbf, 0x1c, 0x8b, 0x64, 0x33, 0x37, 0x8c, 0xfc, 0x55, 0x36, 0xae,
+	0x47, 0x8c, 0xac, 0x6b, 0x82, 0x52, 0xde, 0x7b, 0x9e, 0xc2, 0xfe, 0x3a, 0x8b, 0x0a, 0x70, 0x23,
+	0x8d, 0x3d, 0x90, 0x14, 0x09, 0xcb, 0xa2, 0x4e, 0xed, 0xfc, 0x6f, 0xb2, 0xbb, 0x7f, 0xca, 0xc0,
+	0x0d, 0xc5, 0x08, 0xac, 0x53, 0xc2, 0xde, 0x7c, 0x6a, 0x86, 0x63, 0xb4, 0x89, 0x4d, 0xff, 0x64,
+	0xd0, 0x17, 0x77, 0xf4, 0x18, 0x20, 0x7e, 0xe8, 0x43, 0xec, 0x19, 0xb3, 0x62, 0x78, 0xe6, 0x99,
+	0xe1, 0x11, 0xb9, 0xbc, 0x79, 0x75, 0xc2, 0x53, 0x20, 0x7a, 0x1f, 0xae, 0x35, 0xba, 0xa6, 0x11,
+	0x90, 0x31, 0x8f, 0x49, 0xe8, 0xd6, 0xe4, 0x67, 0x26, 0xfa, 0xda, 0xb6, 0xb9, 0x35, 0xeb, 0x1d,
+	0x0a, 0x3d, 0x82, 0xd5, 0x7a, 0xe0, 0x11, 0xc3, 0x8e, 0x32, 0xbb, 0x32, 0xf2, 0x7f, 0x41, 0xb2,
+	0xbb, 0xc1, 0xf9, 0x26, 0xc4, 0x4c, 0x0f, 0x32, 0x7b, 0xef, 0x7c, 0xe5, 0x69, 0xdb, 0x0a, 0x4e,
+	0x7a, 0x2f, 0x8a, 0xc7, 0xae, 0x5d, 0x72, 0xbb, 0xc4, 0x39, 0x76, 0x3d, 0xb3, 0xc4, 0x5e, 0x7e,
+	0xee, 0xdb, 0x83, 0xd1, 0xdf, 0xb7, 0x9c, 0x80, 0x78, 0x2d, 0xe3, 0x98, 0x94, 0x4e, 0x1f, 0x96,
+	0xda, 0x6e, 0xc9, 0xb4, 0xad, 0x17, 0x8b, 0x94, 0xfa, 0xe1, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff,
+	0x70, 0xec, 0xeb, 0x17, 0xa1, 0x18, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
diff --git a/protos/dmi/hw_events_mgmt_service.proto b/protos/dmi/hw_events_mgmt_service.proto
index 7cde7d9..f6b78dd 100644
--- a/protos/dmi/hw_events_mgmt_service.proto
+++ b/protos/dmi/hw_events_mgmt_service.proto
@@ -92,7 +92,9 @@
     EVENT_COMPONENT_ALARM_STATE_CHANGED = 702;
     EVENT_COMPONENT_USAGE_STATE_CHANGED = 703;
     EVENT_COMPONENT_STANDBY_STATE_CHANGED = 704;
-
+    // Generic event about a component, the payload contains GenericEventInfo in this case
+    // Use this event id only for events which do not have already a specific event id
+    EVENT_COMPONENT_GENERIC_EVENT = 705; 
     // More to be added
 }
 
@@ -218,6 +220,22 @@
         StandbyStateChange standby_state_change = 5;
     }
 }
+
+message GenericEventInfo {
+    string message = 1;                // Human-readable message
+    string message_code = 2;           // Related events should have the same code
+ 
+    enum EventSeverity {
+        EVENT_SEVERITY_UNSPECIFIED = 0;
+        CRITICAL = 1;
+        MAJOR = 2;
+        MINOR = 3;
+        NORMAL = 4;
+        INFO = 5;
+    }
+
+    EventSeverity severity = 3;        // Severity of the event       
+}
 // The Events are conveyed to external systems either by submitting them on a message bus or using gRPC server streaming.
 // The message bus topic to which are Events are submitted would be configured as startup
 // configuration of the components
@@ -229,8 +247,9 @@
     // Optional threshold information for an event
     ThresholdInformation threshold_info = 4;
     // Any additional info regarding the event
-    string add_info = 5;
+    string add_info = 5; // Stringified JSON with extra details
     StateChangeInfo state_change_info = 6; // Only set for state change events
+    GenericEventInfo generic_event_info = 7; // Only set for event_id = EVENT_COMPONENT_GENERIC_EVENT
 }
 
 service NativeEventsManagementService {
diff --git a/python/dmi/hw_events_mgmt_service_pb2.py b/python/dmi/hw_events_mgmt_service_pb2.py
index ce3500d..d3cf63c 100644
--- a/python/dmi/hw_events_mgmt_service_pb2.py
+++ b/python/dmi/hw_events_mgmt_service_pb2.py
@@ -19,7 +19,7 @@
 from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
 
 
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n dmi/hw_events_mgmt_service.proto\x12\x03\x64mi\x1a\x11\x64mi/commons.proto\x1a\x0c\x64mi/hw.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\"u\n\tValueType\x12\x11\n\x07int_val\x18\x01 \x01(\x03H\x00\x12\x12\n\x08uint_val\x18\x02 \x01(\x04H\x00\x12\x13\n\tfloat_val\x18\x03 \x01(\x02H\x00\x12%\n\ttypeOfVal\x18\x04 \x01(\x0e\x32\x12.dmi.DataValueTypeB\x05\n\x03val\"G\n\nWaterMarks\x12\x1c\n\x04high\x18\x01 \x01(\x0b\x32\x0e.dmi.ValueType\x12\x1b\n\x03low\x18\x02 \x01(\x0b\x32\x0e.dmi.ValueType\"]\n\nThresholds\x12 \n\x05upper\x18\x01 \x01(\x0b\x32\x0f.dmi.WaterMarksH\x00\x12 \n\x05lower\x18\x02 \x01(\x0b\x32\x0f.dmi.WaterMarksH\x00\x42\x0b\n\tthreshold\"c\n\x14ThresholdInformation\x12&\n\x0eobserved_value\x18\x01 \x01(\x0b\x32\x0e.dmi.ValueType\x12#\n\nthresholds\x18\x02 \x01(\x0b\x32\x0f.dmi.Thresholds\"\x8a\x01\n\x08\x45ventCfg\x12\x1f\n\x08\x65vent_id\x18\x01 \x01(\x0e\x32\r.dmi.EventIds\x12\x15\n\ris_configured\x18\x02 \x01(\x08\x12#\n\nthresholds\x18\x03 \x01(\x0b\x32\x0f.dmi.Thresholds\x12!\n\x0e\x63omponent_uuid\x18\x04 \x01(\x0b\x32\t.dmi.Uuid\")\n\tEventsCfg\x12\x1c\n\x05items\x18\x01 \x03(\x0b\x32\r.dmi.EventCfg\"\xf8\x01\n\x12ListEventsResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12.\n\x06reason\x18\x02 \x01(\x0e\x32\x1e.dmi.ListEventsResponse.Reason\x12\x1e\n\x06\x65vents\x18\x03 \x01(\x0b\x32\x0e.dmi.EventsCfg\x12\x15\n\rreason_detail\x18\x04 \x01(\t\"^\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x03\"\x88\x01\n\x1a\x45ventsConfigurationRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12!\n\x07\x63hanges\x18\x02 \x01(\x0b\x32\x0e.dmi.EventsCfgH\x00\x12\x1a\n\x10reset_to_default\x18\x03 \x01(\x08H\x00\x42\x0b\n\toperation\"\xfe\x01\n\x1b\x45ventsConfigurationResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x37\n\x06reason\x18\x02 \x01(\x0e\x32\'.dmi.EventsConfigurationResponse.Reason\x12\x15\n\rreason_detail\x18\x03 \x01(\t\"r\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x12\n\x0eINVALID_CONFIG\x10\x03\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x04\"j\n\rEventMetaData\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12!\n\x0e\x63omponent_uuid\x18\x02 \x01(\x0b\x32\t.dmi.Uuid\x12\x16\n\x0e\x63omponent_name\x18\x03 \x01(\t\"`\n\x10\x41\x64minStateChange\x12%\n\x03old\x18\x01 \x01(\x0e\x32\x18.dmi.ComponentAdminState\x12%\n\x03new\x18\x02 \x01(\x0e\x32\x18.dmi.ComponentAdminState\"]\n\x0fOperStateChange\x12$\n\x03old\x18\x01 \x01(\x0e\x32\x17.dmi.ComponentOperState\x12$\n\x03new\x18\x02 \x01(\x0e\x32\x17.dmi.ComponentOperState\"`\n\x10\x41larmStateChange\x12%\n\x03old\x18\x01 \x01(\x0e\x32\x18.dmi.ComponentAlarmState\x12%\n\x03new\x18\x02 \x01(\x0e\x32\x18.dmi.ComponentAlarmState\"`\n\x10UsageStateChange\x12%\n\x03old\x18\x01 \x01(\x0e\x32\x18.dmi.ComponentUsageState\x12%\n\x03new\x18\x02 \x01(\x0e\x32\x18.dmi.ComponentUsageState\"f\n\x12StandbyStateChange\x12\'\n\x03old\x18\x01 \x01(\x0e\x32\x1a.dmi.ComponentStandbyState\x12\'\n\x03new\x18\x02 \x01(\x0e\x32\x1a.dmi.ComponentStandbyState\"\xac\x02\n\x0fStateChangeInfo\x12\x33\n\x12\x61\x64min_state_change\x18\x01 \x01(\x0b\x32\x15.dmi.AdminStateChangeH\x00\x12\x31\n\x11oper_state_change\x18\x02 \x01(\x0b\x32\x14.dmi.OperStateChangeH\x00\x12\x33\n\x12\x61larm_state_change\x18\x03 \x01(\x0b\x32\x15.dmi.AlarmStateChangeH\x00\x12\x33\n\x12usage_state_change\x18\x04 \x01(\x0b\x32\x15.dmi.UsageStateChangeH\x00\x12\x37\n\x14standby_state_change\x18\x05 \x01(\x0b\x32\x17.dmi.StandbyStateChangeH\x00\x42\x0e\n\x0cstate_change\"\xf9\x01\n\x05\x45vent\x12*\n\x0e\x65vent_metadata\x18\x01 \x01(\x0b\x32\x12.dmi.EventMetaData\x12\x1f\n\x08\x65vent_id\x18\x02 \x01(\x0e\x32\r.dmi.EventIds\x12-\n\traised_ts\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x31\n\x0ethreshold_info\x18\x04 \x01(\x0b\x32\x19.dmi.ThresholdInformation\x12\x10\n\x08\x61\x64\x64_info\x18\x05 \x01(\t\x12/\n\x11state_change_info\x18\x06 \x01(\x0b\x32\x14.dmi.StateChangeInfo*\xb5\x14\n\x08\x45ventIds\x12\x18\n\x14\x45VENT_NAME_UNDEFINED\x10\x00\x12\x1e\n\x1a\x45VENT_TRANSCEIVER_PLUG_OUT\x10\x64\x12\x1d\n\x19\x45VENT_TRANSCEIVER_PLUG_IN\x10\x65\x12-\n)EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD\x10\x66\x12-\n)EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD\x10g\x12\x31\n-EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD\x10h\x12\x31\n-EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD\x10i\x12-\n)EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD\x10j\x12-\n)EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD\x10k\x12.\n*EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD\x10l\x12.\n*EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD\x10m\x12.\n*EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD\x10n\x12.\n*EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD\x10o\x12\x1d\n\x19\x45VENT_TRANSCEIVER_FAILURE\x10p\x12\x37\n3EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED\x10q\x12\x37\n3EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED\x10r\x12;\n7EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED\x10s\x12;\n7EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED\x10t\x12\x37\n3EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED\x10u\x12\x37\n3EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED\x10v\x12\x38\n4EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED\x10w\x12\x38\n4EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED\x10x\x12\x38\n4EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED\x10y\x12\x38\n4EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED\x10z\x12\'\n#EVENT_TRANSCEIVER_FAILURE_RECOVERED\x10{\x12\x17\n\x12\x45VENT_PSU_PLUG_OUT\x10\xc8\x01\x12\x16\n\x11\x45VENT_PSU_PLUG_IN\x10\xc9\x01\x12\x16\n\x11\x45VENT_PSU_FAILURE\x10\xca\x01\x12 \n\x1b\x45VENT_PSU_FAILURE_RECOVERED\x10\xcb\x01\x12\x16\n\x11\x45VENT_FAN_FAILURE\x10\xac\x02\x12\x17\n\x12\x45VENT_FAN_PLUG_OUT\x10\xad\x02\x12\x16\n\x11\x45VENT_FAN_PLUG_IN\x10\xae\x02\x12 \n\x1b\x45VENT_FAN_FAILURE_RECOVERED\x10\xaf\x02\x12)\n$EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL\x10\x90\x03\x12&\n!EVENT_CPU_TEMPERATURE_ABOVE_FATAL\x10\x91\x03\x12\x33\n.EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED\x10\x92\x03\x12\x30\n+EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED\x10\x93\x03\x12$\n\x1f\x45VENT_CPU_USAGE_ABOVE_THRESHOLD\x10\x94\x03\x12.\n)EVENT_CPU_USAGE_ABOVE_THRESHOLD_RECOVERED\x10\x95\x03\x12\x1a\n\x15\x45VENT_HW_DEVICE_RESET\x10\xf4\x03\x12/\n*EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL\x10\xf5\x03\x12,\n\'EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL\x10\xf6\x03\x12\x39\n4EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED\x10\xf7\x03\x12\x36\n1EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED\x10\xf8\x03\x12\x1b\n\x16\x45VENT_HW_DEVICE_REBOOT\x10\xf9\x03\x12\'\n\"EVENT_HW_TEMPERATURE_SENSOR_FAILED\x10\xfa\x03\x12,\n\'EVENT_HW_ALL_TEMPERATURE_SENSORS_FAILED\x10\xfb\x03\x12(\n#EVENT_HW_DISK_USAGE_ABOVE_THRESHOLD\x10\xfc\x03\x12\x32\n-EVENT_HW_DISK_USAGE_ABOVE_THRESHOLD_RECOVERED\x10\xfd\x03\x12*\n%EVENT_HW_MEMORY_USAGE_ABOVE_THRESHOLD\x10\xfe\x03\x12\x34\n/EVENT_HW_MEMORY_USAGE_ABOVE_THRESHOLD_RECOVERED\x10\xff\x03\x12\x1e\n\x19\x45VENT_HW_NTP_SYNC_FAILURE\x10\x80\x04\x12(\n#EVENT_HW_NTP_SYNC_FAILURE_RECOVERED\x10\x81\x04\x12\x1d\n\x18\x45VENT_LINE_CARD_PLUG_OUT\x10\xd8\x04\x12\x1c\n\x17\x45VENT_LINE_CARD_PLUG_IN\x10\xd9\x04\x12(\n#EVENT_COMPONENT_ADMIN_STATE_CHANGED\x10\xbc\x05\x12\'\n\"EVENT_COMPONENT_OPER_STATE_CHANGED\x10\xbd\x05\x12(\n#EVENT_COMPONENT_ALARM_STATE_CHANGED\x10\xbe\x05\x12(\n#EVENT_COMPONENT_USAGE_STATE_CHANGED\x10\xbf\x05\x12*\n%EVENT_COMPONENT_STANDBY_STATE_CHANGED\x10\xc0\x05\x32\xed\x01\n\x1dNativeEventsManagementService\x12\x36\n\nListEvents\x12\x0f.dmi.HardwareID\x1a\x17.dmi.ListEventsResponse\x12^\n\x19UpdateEventsConfiguration\x12\x1f.dmi.EventsConfigurationRequest\x1a .dmi.EventsConfigurationResponse\x12\x34\n\x0cStreamEvents\x12\x16.google.protobuf.Empty\x1a\n.dmi.Event0\x01\x42;Z9github.com/opencord/device-management-interface/v3/go/dmib\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n dmi/hw_events_mgmt_service.proto\x12\x03\x64mi\x1a\x11\x64mi/commons.proto\x1a\x0c\x64mi/hw.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\"u\n\tValueType\x12\x11\n\x07int_val\x18\x01 \x01(\x03H\x00\x12\x12\n\x08uint_val\x18\x02 \x01(\x04H\x00\x12\x13\n\tfloat_val\x18\x03 \x01(\x02H\x00\x12%\n\ttypeOfVal\x18\x04 \x01(\x0e\x32\x12.dmi.DataValueTypeB\x05\n\x03val\"G\n\nWaterMarks\x12\x1c\n\x04high\x18\x01 \x01(\x0b\x32\x0e.dmi.ValueType\x12\x1b\n\x03low\x18\x02 \x01(\x0b\x32\x0e.dmi.ValueType\"]\n\nThresholds\x12 \n\x05upper\x18\x01 \x01(\x0b\x32\x0f.dmi.WaterMarksH\x00\x12 \n\x05lower\x18\x02 \x01(\x0b\x32\x0f.dmi.WaterMarksH\x00\x42\x0b\n\tthreshold\"c\n\x14ThresholdInformation\x12&\n\x0eobserved_value\x18\x01 \x01(\x0b\x32\x0e.dmi.ValueType\x12#\n\nthresholds\x18\x02 \x01(\x0b\x32\x0f.dmi.Thresholds\"\x8a\x01\n\x08\x45ventCfg\x12\x1f\n\x08\x65vent_id\x18\x01 \x01(\x0e\x32\r.dmi.EventIds\x12\x15\n\ris_configured\x18\x02 \x01(\x08\x12#\n\nthresholds\x18\x03 \x01(\x0b\x32\x0f.dmi.Thresholds\x12!\n\x0e\x63omponent_uuid\x18\x04 \x01(\x0b\x32\t.dmi.Uuid\")\n\tEventsCfg\x12\x1c\n\x05items\x18\x01 \x03(\x0b\x32\r.dmi.EventCfg\"\xf8\x01\n\x12ListEventsResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12.\n\x06reason\x18\x02 \x01(\x0e\x32\x1e.dmi.ListEventsResponse.Reason\x12\x1e\n\x06\x65vents\x18\x03 \x01(\x0b\x32\x0e.dmi.EventsCfg\x12\x15\n\rreason_detail\x18\x04 \x01(\t\"^\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x03\"\x88\x01\n\x1a\x45ventsConfigurationRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12!\n\x07\x63hanges\x18\x02 \x01(\x0b\x32\x0e.dmi.EventsCfgH\x00\x12\x1a\n\x10reset_to_default\x18\x03 \x01(\x08H\x00\x42\x0b\n\toperation\"\xfe\x01\n\x1b\x45ventsConfigurationResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x37\n\x06reason\x18\x02 \x01(\x0e\x32\'.dmi.EventsConfigurationResponse.Reason\x12\x15\n\rreason_detail\x18\x03 \x01(\t\"r\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x12\n\x0eINVALID_CONFIG\x10\x03\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x04\"j\n\rEventMetaData\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12!\n\x0e\x63omponent_uuid\x18\x02 \x01(\x0b\x32\t.dmi.Uuid\x12\x16\n\x0e\x63omponent_name\x18\x03 \x01(\t\"`\n\x10\x41\x64minStateChange\x12%\n\x03old\x18\x01 \x01(\x0e\x32\x18.dmi.ComponentAdminState\x12%\n\x03new\x18\x02 \x01(\x0e\x32\x18.dmi.ComponentAdminState\"]\n\x0fOperStateChange\x12$\n\x03old\x18\x01 \x01(\x0e\x32\x17.dmi.ComponentOperState\x12$\n\x03new\x18\x02 \x01(\x0e\x32\x17.dmi.ComponentOperState\"`\n\x10\x41larmStateChange\x12%\n\x03old\x18\x01 \x01(\x0e\x32\x18.dmi.ComponentAlarmState\x12%\n\x03new\x18\x02 \x01(\x0e\x32\x18.dmi.ComponentAlarmState\"`\n\x10UsageStateChange\x12%\n\x03old\x18\x01 \x01(\x0e\x32\x18.dmi.ComponentUsageState\x12%\n\x03new\x18\x02 \x01(\x0e\x32\x18.dmi.ComponentUsageState\"f\n\x12StandbyStateChange\x12\'\n\x03old\x18\x01 \x01(\x0e\x32\x1a.dmi.ComponentStandbyState\x12\'\n\x03new\x18\x02 \x01(\x0e\x32\x1a.dmi.ComponentStandbyState\"\xac\x02\n\x0fStateChangeInfo\x12\x33\n\x12\x61\x64min_state_change\x18\x01 \x01(\x0b\x32\x15.dmi.AdminStateChangeH\x00\x12\x31\n\x11oper_state_change\x18\x02 \x01(\x0b\x32\x14.dmi.OperStateChangeH\x00\x12\x33\n\x12\x61larm_state_change\x18\x03 \x01(\x0b\x32\x15.dmi.AlarmStateChangeH\x00\x12\x33\n\x12usage_state_change\x18\x04 \x01(\x0b\x32\x15.dmi.UsageStateChangeH\x00\x12\x37\n\x14standby_state_change\x18\x05 \x01(\x0b\x32\x17.dmi.StandbyStateChangeH\x00\x42\x0e\n\x0cstate_change\"\xdb\x01\n\x10GenericEventInfo\x12\x0f\n\x07message\x18\x01 \x01(\t\x12\x14\n\x0cmessage_code\x18\x02 \x01(\t\x12\x35\n\x08severity\x18\x03 \x01(\x0e\x32#.dmi.GenericEventInfo.EventSeverity\"i\n\rEventSeverity\x12\x1e\n\x1a\x45VENT_SEVERITY_UNSPECIFIED\x10\x00\x12\x0c\n\x08\x43RITICAL\x10\x01\x12\t\n\x05MAJOR\x10\x02\x12\t\n\x05MINOR\x10\x03\x12\n\n\x06NORMAL\x10\x04\x12\x08\n\x04INFO\x10\x05\"\xac\x02\n\x05\x45vent\x12*\n\x0e\x65vent_metadata\x18\x01 \x01(\x0b\x32\x12.dmi.EventMetaData\x12\x1f\n\x08\x65vent_id\x18\x02 \x01(\x0e\x32\r.dmi.EventIds\x12-\n\traised_ts\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x31\n\x0ethreshold_info\x18\x04 \x01(\x0b\x32\x19.dmi.ThresholdInformation\x12\x10\n\x08\x61\x64\x64_info\x18\x05 \x01(\t\x12/\n\x11state_change_info\x18\x06 \x01(\x0b\x32\x14.dmi.StateChangeInfo\x12\x31\n\x12generic_event_info\x18\x07 \x01(\x0b\x32\x15.dmi.GenericEventInfo*\xd9\x14\n\x08\x45ventIds\x12\x18\n\x14\x45VENT_NAME_UNDEFINED\x10\x00\x12\x1e\n\x1a\x45VENT_TRANSCEIVER_PLUG_OUT\x10\x64\x12\x1d\n\x19\x45VENT_TRANSCEIVER_PLUG_IN\x10\x65\x12-\n)EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD\x10\x66\x12-\n)EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD\x10g\x12\x31\n-EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD\x10h\x12\x31\n-EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD\x10i\x12-\n)EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD\x10j\x12-\n)EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD\x10k\x12.\n*EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD\x10l\x12.\n*EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD\x10m\x12.\n*EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD\x10n\x12.\n*EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD\x10o\x12\x1d\n\x19\x45VENT_TRANSCEIVER_FAILURE\x10p\x12\x37\n3EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED\x10q\x12\x37\n3EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED\x10r\x12;\n7EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED\x10s\x12;\n7EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED\x10t\x12\x37\n3EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED\x10u\x12\x37\n3EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED\x10v\x12\x38\n4EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED\x10w\x12\x38\n4EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED\x10x\x12\x38\n4EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED\x10y\x12\x38\n4EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED\x10z\x12\'\n#EVENT_TRANSCEIVER_FAILURE_RECOVERED\x10{\x12\x17\n\x12\x45VENT_PSU_PLUG_OUT\x10\xc8\x01\x12\x16\n\x11\x45VENT_PSU_PLUG_IN\x10\xc9\x01\x12\x16\n\x11\x45VENT_PSU_FAILURE\x10\xca\x01\x12 \n\x1b\x45VENT_PSU_FAILURE_RECOVERED\x10\xcb\x01\x12\x16\n\x11\x45VENT_FAN_FAILURE\x10\xac\x02\x12\x17\n\x12\x45VENT_FAN_PLUG_OUT\x10\xad\x02\x12\x16\n\x11\x45VENT_FAN_PLUG_IN\x10\xae\x02\x12 \n\x1b\x45VENT_FAN_FAILURE_RECOVERED\x10\xaf\x02\x12)\n$EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL\x10\x90\x03\x12&\n!EVENT_CPU_TEMPERATURE_ABOVE_FATAL\x10\x91\x03\x12\x33\n.EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED\x10\x92\x03\x12\x30\n+EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED\x10\x93\x03\x12$\n\x1f\x45VENT_CPU_USAGE_ABOVE_THRESHOLD\x10\x94\x03\x12.\n)EVENT_CPU_USAGE_ABOVE_THRESHOLD_RECOVERED\x10\x95\x03\x12\x1a\n\x15\x45VENT_HW_DEVICE_RESET\x10\xf4\x03\x12/\n*EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL\x10\xf5\x03\x12,\n\'EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL\x10\xf6\x03\x12\x39\n4EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED\x10\xf7\x03\x12\x36\n1EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED\x10\xf8\x03\x12\x1b\n\x16\x45VENT_HW_DEVICE_REBOOT\x10\xf9\x03\x12\'\n\"EVENT_HW_TEMPERATURE_SENSOR_FAILED\x10\xfa\x03\x12,\n\'EVENT_HW_ALL_TEMPERATURE_SENSORS_FAILED\x10\xfb\x03\x12(\n#EVENT_HW_DISK_USAGE_ABOVE_THRESHOLD\x10\xfc\x03\x12\x32\n-EVENT_HW_DISK_USAGE_ABOVE_THRESHOLD_RECOVERED\x10\xfd\x03\x12*\n%EVENT_HW_MEMORY_USAGE_ABOVE_THRESHOLD\x10\xfe\x03\x12\x34\n/EVENT_HW_MEMORY_USAGE_ABOVE_THRESHOLD_RECOVERED\x10\xff\x03\x12\x1e\n\x19\x45VENT_HW_NTP_SYNC_FAILURE\x10\x80\x04\x12(\n#EVENT_HW_NTP_SYNC_FAILURE_RECOVERED\x10\x81\x04\x12\x1d\n\x18\x45VENT_LINE_CARD_PLUG_OUT\x10\xd8\x04\x12\x1c\n\x17\x45VENT_LINE_CARD_PLUG_IN\x10\xd9\x04\x12(\n#EVENT_COMPONENT_ADMIN_STATE_CHANGED\x10\xbc\x05\x12\'\n\"EVENT_COMPONENT_OPER_STATE_CHANGED\x10\xbd\x05\x12(\n#EVENT_COMPONENT_ALARM_STATE_CHANGED\x10\xbe\x05\x12(\n#EVENT_COMPONENT_USAGE_STATE_CHANGED\x10\xbf\x05\x12*\n%EVENT_COMPONENT_STANDBY_STATE_CHANGED\x10\xc0\x05\x12\"\n\x1d\x45VENT_COMPONENT_GENERIC_EVENT\x10\xc1\x05\x32\xed\x01\n\x1dNativeEventsManagementService\x12\x36\n\nListEvents\x12\x0f.dmi.HardwareID\x1a\x17.dmi.ListEventsResponse\x12^\n\x19UpdateEventsConfiguration\x12\x1f.dmi.EventsConfigurationRequest\x1a .dmi.EventsConfigurationResponse\x12\x34\n\x0cStreamEvents\x12\x16.google.protobuf.Empty\x1a\n.dmi.Event0\x01\x42;Z9github.com/opencord/device-management-interface/v3/go/dmib\x06proto3')
 
 _EVENTIDS = DESCRIPTOR.enum_types_by_name['EventIds']
 EventIds = enum_type_wrapper.EnumTypeWrapper(_EVENTIDS)
@@ -83,6 +83,7 @@
 EVENT_COMPONENT_ALARM_STATE_CHANGED = 702
 EVENT_COMPONENT_USAGE_STATE_CHANGED = 703
 EVENT_COMPONENT_STANDBY_STATE_CHANGED = 704
+EVENT_COMPONENT_GENERIC_EVENT = 705
 
 
 _VALUETYPE = DESCRIPTOR.message_types_by_name['ValueType']
@@ -101,9 +102,11 @@
 _USAGESTATECHANGE = DESCRIPTOR.message_types_by_name['UsageStateChange']
 _STANDBYSTATECHANGE = DESCRIPTOR.message_types_by_name['StandbyStateChange']
 _STATECHANGEINFO = DESCRIPTOR.message_types_by_name['StateChangeInfo']
+_GENERICEVENTINFO = DESCRIPTOR.message_types_by_name['GenericEventInfo']
 _EVENT = DESCRIPTOR.message_types_by_name['Event']
 _LISTEVENTSRESPONSE_REASON = _LISTEVENTSRESPONSE.enum_types_by_name['Reason']
 _EVENTSCONFIGURATIONRESPONSE_REASON = _EVENTSCONFIGURATIONRESPONSE.enum_types_by_name['Reason']
+_GENERICEVENTINFO_EVENTSEVERITY = _GENERICEVENTINFO.enum_types_by_name['EventSeverity']
 ValueType = _reflection.GeneratedProtocolMessageType('ValueType', (_message.Message,), {
   'DESCRIPTOR' : _VALUETYPE,
   '__module__' : 'dmi.hw_events_mgmt_service_pb2'
@@ -216,6 +219,13 @@
   })
 _sym_db.RegisterMessage(StateChangeInfo)
 
+GenericEventInfo = _reflection.GeneratedProtocolMessageType('GenericEventInfo', (_message.Message,), {
+  'DESCRIPTOR' : _GENERICEVENTINFO,
+  '__module__' : 'dmi.hw_events_mgmt_service_pb2'
+  # @@protoc_insertion_point(class_scope:dmi.GenericEventInfo)
+  })
+_sym_db.RegisterMessage(GenericEventInfo)
+
 Event = _reflection.GeneratedProtocolMessageType('Event', (_message.Message,), {
   'DESCRIPTOR' : _EVENT,
   '__module__' : 'dmi.hw_events_mgmt_service_pb2'
@@ -228,8 +238,8 @@
 
   DESCRIPTOR._options = None
   DESCRIPTOR._serialized_options = b'Z9github.com/opencord/device-management-interface/v3/go/dmi'
-  _EVENTIDS._serialized_start=2512
-  _EVENTIDS._serialized_end=5125
+  _EVENTIDS._serialized_start=2785
+  _EVENTIDS._serialized_end=5434
   _VALUETYPE._serialized_start=136
   _VALUETYPE._serialized_end=253
   _WATERMARKS._serialized_start=255
@@ -266,8 +276,12 @@
   _STANDBYSTATECHANGE._serialized_end=1954
   _STATECHANGEINFO._serialized_start=1957
   _STATECHANGEINFO._serialized_end=2257
-  _EVENT._serialized_start=2260
-  _EVENT._serialized_end=2509
-  _NATIVEEVENTSMANAGEMENTSERVICE._serialized_start=5128
-  _NATIVEEVENTSMANAGEMENTSERVICE._serialized_end=5365
+  _GENERICEVENTINFO._serialized_start=2260
+  _GENERICEVENTINFO._serialized_end=2479
+  _GENERICEVENTINFO_EVENTSEVERITY._serialized_start=2374
+  _GENERICEVENTINFO_EVENTSEVERITY._serialized_end=2479
+  _EVENT._serialized_start=2482
+  _EVENT._serialized_end=2782
+  _NATIVEEVENTSMANAGEMENTSERVICE._serialized_start=5437
+  _NATIVEEVENTSMANAGEMENTSERVICE._serialized_end=5674
 # @@protoc_insertion_point(module_scope)
