VOL-1537 : Create the Alarm Framework in golang openolt adapter

           Added event proxy to publish generic events which can
           be device events a.k.a alarms or KPIs. These events are
           published to the KAFKA bus to the topic "voltha.events"

           As event_proxy.go is a dependency for the alarm framework
           and it is utilized by the openolt golang adapter so this
           code changes needs to be merged first so the dependencies
           could be resolved.

Change-Id: Ib82003e449e605349eeb10af1c8405b78ac30f7d
diff --git a/vendor/github.com/opencord/voltha-protos/Makefile b/vendor/github.com/opencord/voltha-protos/Makefile
index a0f1ad6..b9083d5 100644
--- a/vendor/github.com/opencord/voltha-protos/Makefile
+++ b/vendor/github.com/opencord/voltha-protos/Makefile
@@ -32,16 +32,8 @@
 PROTO_GO_DEST_DIR := go
 PROTO_GO_PB:= $(foreach f, $(PROTO_FILES), $(patsubst protos/voltha_protos/%.proto,$(PROTO_GO_DEST_DIR)/$(call go_package_path,$(f))/%.pb.go,$(f)))
 
-PROTOC_PREFIX := /usr/local
-PROTOC_VERSION := "3.7.0"
-PROTOC_DOWNLOAD_PREFIX := "https://github.com/google/protobuf/releases/download"
-PROTOC_DIR := protobuf-$(PROTOC_VERSION)
-PROTOC_TARBALL := protobuf-python-$(PROTOC_VERSION).tar.gz
-PROTOC_DOWNLOAD_URI := $(PROTOC_DOWNLOAD_PREFIX)/v$(PROTOC_VERSION)/$(PROTOC_TARBALL)
-PROTOC_BUILD_TMP_DIR := "/tmp/protobuf-build-$(shell uname -s | tr '[:upper:]' '[:lower:]')"
-
-# Force pb file to be regenrated every time.  Otherwise the make process assumes whats there is still ok
-.PHONY: go/voltha.pb
+# Force pb file to be regenrated every time.  Otherwise the make process assumes generated version is still valid
+.PHONY: go/voltha.pb protoc_check
 
 print:
 	@echo "Proto files: $(PROTO_FILES)"
@@ -58,7 +50,7 @@
 clean: python-clean go-clean
 
 # Python targets
-python-protos: $(PROTO_PYTHON_PB2)
+python-protos: protoc_check $(PROTO_PYTHON_PB2)
 
 venv_protos:
 	virtualenv $@;\
@@ -77,6 +69,7 @@
     $<
 
 python-build: setup.py python-protos
+	rm -rf dist/
 	python ./setup.py sdist
 
 python-test: tox.ini setup.py python-protos
@@ -99,17 +92,7 @@
     $(PROTO_PYTHON_PB2_GRPC)
 
 # Go targets
-go-protos: protoc_check_version $(PROTO_GO_PB) go/voltha.pb
-
-protoc_check_version:
-ifeq ("", "$(shell which protoc)")
-	@echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
-	@echo "It looks like you don't have a version of protocol buffer tools."
-	@echo "To install the protocol buffer toolchain, you can run:"
-	@echo "    make install-protoc"
-	@echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
-	exit 1
-endif
+go-protos: protoc_check $(PROTO_GO_PB) go/voltha.pb
 
 go_temp:
 	mkdir -p go_temp
@@ -129,32 +112,50 @@
     --descriptor_set_out=$@ \
     ${PROTO_FILES}
 
-go-test:
-ifneq ("libprotoc 3.7.0", "$(shell protoc --version)")
-	@echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
-	@echo "It looks like you don't have protocol buffer tools ${PROTOC_VERSION} installed."
-	@echo "To install this version, you can run:"
-	@echo "    make install-protoc"
-	@echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
-	exit 1
-endif
+go-test: protoc_check
 	test/test-go-proto-consistency.sh
 
 go-clean:
 	rm -rf go_temp
 
+# Protobuf compiler helper functions
+protoc_check:
+ifeq ("", "$(shell which protoc)")
+	@echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
+	@echo "It looks like you don't have a version of protocol buffer tools."
+	@echo "To install the protocol buffer toolchain on Linux, you can run:"
+	@echo "    make install-protoc"
+	@echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
+	exit 1
+endif
+ifneq ("libprotoc 3.7.0", "$(shell protoc --version)")
+	@echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
+	@echo "You have the wrong version of protoc installed"
+	@echo "Please install version 3.7.0"
+	@echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
+	exit 1
+endif
+
 install-protoc:
-	@echo "Downloading and installing protocol buffer support."
+	@echo "Downloading and installing protocol buffer support (Linux amd64 only)"
+ifneq ("Linux", "$(shell uname -s)")
+	@echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
+	@echo "Automated installation of protoc not supported on $(shell uname -s)"
+	@echo "Please install protoc v3.7.0 from:"
+	@echo "  https://github.com/protocolbuffers/protobuf/releases"
+	@echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
+	exit 1
+endif
 	@echo "Installation will require sudo priviledges"
 	@echo "This will take a few minutes."
-	mkdir -p $(PROTOC_BUILD_TMP_DIR)
-	@echo "We ask for sudo credentials now so we can install at the end"; \
+	@echo "Asking for sudo credentials now so we can install at the end"
 	sudo echo "Thanks"; \
-    cd $(PROTOC_BUILD_TMP_DIR); \
-    wget $(PROTOC_DOWNLOAD_URI); \
-    tar xzvf $(PROTOC_TARBALL); \
-    cd $(PROTOC_DIR); \
-    ./configure --prefix=$(PROTOC_PREFIX); \
-    make; \
-    sudo make install; \
-    sudo ldconfig
+    PROTOC_VERSION="3.7.0" ;\
+    PROTOC_SHA256SUM="a1b8ed22d6dc53c5b8680a6f1760a305b33ef471bece482e92728f00ba2a2969" ;\
+    curl -L -o /tmp/protoc-$${PROTOC_VERSION}-linux-x86_64.zip https://github.com/google/protobuf/releases/download/v$${PROTOC_VERSION}/protoc-$${PROTOC_VERSION}-linux-x86_64.zip ;\
+    echo "$${PROTOC_SHA256SUM}  /tmp/protoc-$${PROTOC_VERSION}-linux-x86_64.zip" | sha256sum -c - ;\
+    unzip /tmp/protoc-$${PROTOC_VERSION}-linux-x86_64.zip -d /tmp/protoc3 ;\
+    sudo mv /tmp/protoc3/bin/* /usr/local/bin/ ;\
+    sudo mv /tmp/protoc3/include/* /usr/local/include/ ;\
+    sudo chmod -R a+rx /usr/local/bin/* ;\
+    sudo chmod -R a+rX /usr/local/include/
diff --git a/vendor/github.com/opencord/voltha-protos/README.md b/vendor/github.com/opencord/voltha-protos/README.md
index 6bcf0f0..352398e 100644
--- a/vendor/github.com/opencord/voltha-protos/README.md
+++ b/vendor/github.com/opencord/voltha-protos/README.md
@@ -5,6 +5,9 @@
 Currently this is used to generate both Golang and Python protobufs and gRPC
 stubs.
 
+The testing process is dependent on specific versions of the protobuf tools, so
+make sure to use the versions of `protoc` and `protoc-gen-go` specified below.
+
 Protobuf definition files are located in `protos/voltha_protos` directory. This
 directory hierarchy and import scheme is required to allow the python code
 generated by the gRPC compiler to [have the correct import
@@ -48,17 +51,16 @@
 Checkout and go install correct version of protoc-gen-go:
 
 ```sh
-cd $GOPATH/src/github.com/opencord/voltha-protos
-go get -d github.com/golang/protobuf/
-cd $GOPATH/src/github.com/golang/protobuf
-git checkout v1.3.1
-make install
+GIT_TAG="v1.3.1"
+go get -d -u github.com/golang/protobuf/protoc-gen-go
+git -C "$(go env GOPATH)"/src/github.com/golang/protobuf checkout $GIT_TAG
+go install github.com/golang/protobuf/protoc-gen-go
 ```
 
 ## Building locally
 
-Install libprotoc 3.7.0 manually or use the Makefile target install it.  Then
-build the python and golang stubs:
+Install the protobuf compiler (protoc) 3.7.0 either manually or via the
+Makefile target (if on Linux amd64).  Then build the python and golang stubs:
 
 ```sh
 cd $GOPATH/src/github.com/opencord/voltha-protos
diff --git a/vendor/github.com/opencord/voltha-protos/VERSION b/vendor/github.com/opencord/voltha-protos/VERSION
index b1e80bb..70426f8 100644
--- a/vendor/github.com/opencord/voltha-protos/VERSION
+++ b/vendor/github.com/opencord/voltha-protos/VERSION
@@ -1 +1 @@
-0.1.3
+0.2.0-dev
diff --git a/vendor/github.com/opencord/voltha-protos/go/inter_container/inter_container.pb.go b/vendor/github.com/opencord/voltha-protos/go/inter_container/inter_container.pb.go
index 4b6af02..29859af 100644
--- a/vendor/github.com/opencord/voltha-protos/go/inter_container/inter_container.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/go/inter_container/inter_container.pb.go
@@ -7,6 +7,7 @@
 	fmt "fmt"
 	proto "github.com/golang/protobuf/proto"
 	any "github.com/golang/protobuf/ptypes/any"
+	common "github.com/opencord/voltha-protos/go/common"
 	openflow_13 "github.com/opencord/voltha-protos/go/openflow_13"
 	voltha "github.com/opencord/voltha-protos/go/voltha"
 	math "math"
@@ -23,6 +24,157 @@
 // proto package needs to be updated.
 const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
+// ID from public import voltha_protos/common.proto
+type ID = common.ID
+
+// IDs from public import voltha_protos/common.proto
+type IDs = common.IDs
+
+// LogLevel from public import voltha_protos/common.proto
+type LogLevel = common.LogLevel
+
+// AdminState from public import voltha_protos/common.proto
+type AdminState = common.AdminState
+
+// OperStatus from public import voltha_protos/common.proto
+type OperStatus = common.OperStatus
+
+// ConnectStatus from public import voltha_protos/common.proto
+type ConnectStatus = common.ConnectStatus
+
+// OperationResp from public import voltha_protos/common.proto
+type OperationResp = common.OperationResp
+
+// TestModeKeys from public import voltha_protos/common.proto
+type TestModeKeys = common.TestModeKeys
+
+var TestModeKeys_name = common.TestModeKeys_name
+var TestModeKeys_value = common.TestModeKeys_value
+
+const TestModeKeys_api_test = TestModeKeys(common.TestModeKeys_api_test)
+
+// LogLevel_LogLevel from public import voltha_protos/common.proto
+type LogLevel_LogLevel = common.LogLevel_LogLevel
+
+var LogLevel_LogLevel_name = common.LogLevel_LogLevel_name
+var LogLevel_LogLevel_value = common.LogLevel_LogLevel_value
+
+const LogLevel_DEBUG = LogLevel_LogLevel(common.LogLevel_DEBUG)
+const LogLevel_INFO = LogLevel_LogLevel(common.LogLevel_INFO)
+const LogLevel_WARNING = LogLevel_LogLevel(common.LogLevel_WARNING)
+const LogLevel_ERROR = LogLevel_LogLevel(common.LogLevel_ERROR)
+const LogLevel_CRITICAL = LogLevel_LogLevel(common.LogLevel_CRITICAL)
+const LogLevel_FATAL = LogLevel_LogLevel(common.LogLevel_FATAL)
+
+// AdminState_AdminState from public import voltha_protos/common.proto
+type AdminState_AdminState = common.AdminState_AdminState
+
+var AdminState_AdminState_name = common.AdminState_AdminState_name
+var AdminState_AdminState_value = common.AdminState_AdminState_value
+
+const AdminState_UNKNOWN = AdminState_AdminState(common.AdminState_UNKNOWN)
+const AdminState_PREPROVISIONED = AdminState_AdminState(common.AdminState_PREPROVISIONED)
+const AdminState_ENABLED = AdminState_AdminState(common.AdminState_ENABLED)
+const AdminState_DISABLED = AdminState_AdminState(common.AdminState_DISABLED)
+const AdminState_DOWNLOADING_IMAGE = AdminState_AdminState(common.AdminState_DOWNLOADING_IMAGE)
+const AdminState_DELETED = AdminState_AdminState(common.AdminState_DELETED)
+
+// OperStatus_OperStatus from public import voltha_protos/common.proto
+type OperStatus_OperStatus = common.OperStatus_OperStatus
+
+var OperStatus_OperStatus_name = common.OperStatus_OperStatus_name
+var OperStatus_OperStatus_value = common.OperStatus_OperStatus_value
+
+const OperStatus_UNKNOWN = OperStatus_OperStatus(common.OperStatus_UNKNOWN)
+const OperStatus_DISCOVERED = OperStatus_OperStatus(common.OperStatus_DISCOVERED)
+const OperStatus_ACTIVATING = OperStatus_OperStatus(common.OperStatus_ACTIVATING)
+const OperStatus_TESTING = OperStatus_OperStatus(common.OperStatus_TESTING)
+const OperStatus_ACTIVE = OperStatus_OperStatus(common.OperStatus_ACTIVE)
+const OperStatus_FAILED = OperStatus_OperStatus(common.OperStatus_FAILED)
+
+// ConnectStatus_ConnectStatus from public import voltha_protos/common.proto
+type ConnectStatus_ConnectStatus = common.ConnectStatus_ConnectStatus
+
+var ConnectStatus_ConnectStatus_name = common.ConnectStatus_ConnectStatus_name
+var ConnectStatus_ConnectStatus_value = common.ConnectStatus_ConnectStatus_value
+
+const ConnectStatus_UNKNOWN = ConnectStatus_ConnectStatus(common.ConnectStatus_UNKNOWN)
+const ConnectStatus_UNREACHABLE = ConnectStatus_ConnectStatus(common.ConnectStatus_UNREACHABLE)
+const ConnectStatus_REACHABLE = ConnectStatus_ConnectStatus(common.ConnectStatus_REACHABLE)
+
+// OperationResp_OperationReturnCode from public import voltha_protos/common.proto
+type OperationResp_OperationReturnCode = common.OperationResp_OperationReturnCode
+
+var OperationResp_OperationReturnCode_name = common.OperationResp_OperationReturnCode_name
+var OperationResp_OperationReturnCode_value = common.OperationResp_OperationReturnCode_value
+
+const OperationResp_OPERATION_SUCCESS = OperationResp_OperationReturnCode(common.OperationResp_OPERATION_SUCCESS)
+const OperationResp_OPERATION_FAILURE = OperationResp_OperationReturnCode(common.OperationResp_OPERATION_FAILURE)
+const OperationResp_OPERATION_UNSUPPORTED = OperationResp_OperationReturnCode(common.OperationResp_OPERATION_UNSUPPORTED)
+
+// DeviceGroup from public import voltha_protos/voltha.proto
+type DeviceGroup = voltha.DeviceGroup
+
+// DeviceGroups from public import voltha_protos/voltha.proto
+type DeviceGroups = voltha.DeviceGroups
+
+// AlarmFilterRuleKey from public import voltha_protos/voltha.proto
+type AlarmFilterRuleKey = voltha.AlarmFilterRuleKey
+
+// AlarmFilterRule from public import voltha_protos/voltha.proto
+type AlarmFilterRule = voltha.AlarmFilterRule
+
+// AlarmFilter from public import voltha_protos/voltha.proto
+type AlarmFilter = voltha.AlarmFilter
+
+// AlarmFilters from public import voltha_protos/voltha.proto
+type AlarmFilters = voltha.AlarmFilters
+
+// Logging from public import voltha_protos/voltha.proto
+type Logging = voltha.Logging
+
+// CoreInstance from public import voltha_protos/voltha.proto
+type CoreInstance = voltha.CoreInstance
+
+// CoreInstances from public import voltha_protos/voltha.proto
+type CoreInstances = voltha.CoreInstances
+
+// Voltha from public import voltha_protos/voltha.proto
+type Voltha = voltha.Voltha
+
+// SelfTestResponse from public import voltha_protos/voltha.proto
+type SelfTestResponse = voltha.SelfTestResponse
+
+// OfAgentSubscriber from public import voltha_protos/voltha.proto
+type OfAgentSubscriber = voltha.OfAgentSubscriber
+
+// Membership from public import voltha_protos/voltha.proto
+type Membership = voltha.Membership
+
+// AlarmFilterRuleKey_AlarmFilterRuleKey from public import voltha_protos/voltha.proto
+type AlarmFilterRuleKey_AlarmFilterRuleKey = voltha.AlarmFilterRuleKey_AlarmFilterRuleKey
+
+var AlarmFilterRuleKey_AlarmFilterRuleKey_name = voltha.AlarmFilterRuleKey_AlarmFilterRuleKey_name
+var AlarmFilterRuleKey_AlarmFilterRuleKey_value = voltha.AlarmFilterRuleKey_AlarmFilterRuleKey_value
+
+const AlarmFilterRuleKey_id = AlarmFilterRuleKey_AlarmFilterRuleKey(voltha.AlarmFilterRuleKey_id)
+const AlarmFilterRuleKey_type = AlarmFilterRuleKey_AlarmFilterRuleKey(voltha.AlarmFilterRuleKey_type)
+const AlarmFilterRuleKey_severity = AlarmFilterRuleKey_AlarmFilterRuleKey(voltha.AlarmFilterRuleKey_severity)
+const AlarmFilterRuleKey_resource_id = AlarmFilterRuleKey_AlarmFilterRuleKey(voltha.AlarmFilterRuleKey_resource_id)
+const AlarmFilterRuleKey_category = AlarmFilterRuleKey_AlarmFilterRuleKey(voltha.AlarmFilterRuleKey_category)
+const AlarmFilterRuleKey_device_id = AlarmFilterRuleKey_AlarmFilterRuleKey(voltha.AlarmFilterRuleKey_device_id)
+
+// SelfTestResponse_SelfTestResult from public import voltha_protos/voltha.proto
+type SelfTestResponse_SelfTestResult = voltha.SelfTestResponse_SelfTestResult
+
+var SelfTestResponse_SelfTestResult_name = voltha.SelfTestResponse_SelfTestResult_name
+var SelfTestResponse_SelfTestResult_value = voltha.SelfTestResponse_SelfTestResult_value
+
+const SelfTestResponse_SUCCESS = SelfTestResponse_SelfTestResult(voltha.SelfTestResponse_SUCCESS)
+const SelfTestResponse_FAILURE = SelfTestResponse_SelfTestResult(voltha.SelfTestResponse_FAILURE)
+const SelfTestResponse_NOT_SUPPORTED = SelfTestResponse_SelfTestResult(voltha.SelfTestResponse_NOT_SUPPORTED)
+const SelfTestResponse_UNKNOWN_ERROR = SelfTestResponse_SelfTestResult(voltha.SelfTestResponse_UNKNOWN_ERROR)
+
 // LogicalPortId from public import voltha_protos/logical_device.proto
 type LogicalPortId = voltha.LogicalPortId
 
@@ -922,10 +1074,12 @@
 }
 
 type InterAdapterOmciMessage struct {
-	Message              []byte   `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Message              []byte                             `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"`
+	ConnectStatus        common.ConnectStatus_ConnectStatus `protobuf:"varint,2,opt,name=connect_status,json=connectStatus,proto3,enum=common.ConnectStatus_ConnectStatus" json:"connect_status,omitempty"`
+	ProxyAddress         *voltha.Device_ProxyAddress        `protobuf:"bytes,3,opt,name=proxy_address,json=proxyAddress,proto3" json:"proxy_address,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                           `json:"-"`
+	XXX_unrecognized     []byte                             `json:"-"`
+	XXX_sizecache        int32                              `json:"-"`
 }
 
 func (m *InterAdapterOmciMessage) Reset()         { *m = InterAdapterOmciMessage{} }
@@ -960,6 +1114,20 @@
 	return nil
 }
 
+func (m *InterAdapterOmciMessage) GetConnectStatus() common.ConnectStatus_ConnectStatus {
+	if m != nil {
+		return m.ConnectStatus
+	}
+	return common.ConnectStatus_UNKNOWN
+}
+
+func (m *InterAdapterOmciMessage) GetProxyAddress() *voltha.Device_ProxyAddress {
+	if m != nil {
+		return m.ProxyAddress
+	}
+	return nil
+}
+
 type InterAdapterTechProfileDownloadMessage struct {
 	UniId                uint32   `protobuf:"varint,1,opt,name=uni_id,json=uniId,proto3" json:"uni_id,omitempty"`
 	Path                 string   `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
@@ -1175,76 +1343,81 @@
 }
 
 var fileDescriptor_941f0031a549667f = []byte{
-	// 1136 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xcd, 0x6e, 0xdb, 0x46,
-	0x17, 0x8d, 0xfe, 0xa5, 0x2b, 0x47, 0x91, 0xc7, 0x71, 0xa2, 0x38, 0x09, 0xec, 0x8f, 0x5f, 0xe2,
-	0xb8, 0x6e, 0x2b, 0xa3, 0x76, 0x5b, 0x34, 0xab, 0x42, 0x96, 0x68, 0x98, 0x80, 0x2d, 0xa9, 0x94,
-	0xec, 0x00, 0xdd, 0x10, 0x14, 0x39, 0x92, 0x08, 0x53, 0x1c, 0x66, 0x38, 0xb4, 0xcb, 0x4d, 0x81,
-	0xee, 0xfa, 0x18, 0x5d, 0xf5, 0x11, 0xfa, 0x10, 0x7d, 0x90, 0x3e, 0x47, 0x31, 0x3f, 0xd4, 0x5f,
-	0xed, 0x16, 0x68, 0x77, 0x33, 0xe7, 0x9c, 0xb9, 0x33, 0x73, 0xef, 0x9d, 0x43, 0xc2, 0xff, 0x6f,
-	0x89, 0xcf, 0xa6, 0xb6, 0x15, 0x52, 0xc2, 0x48, 0x74, 0xe4, 0x05, 0x0c, 0x53, 0xcb, 0x21, 0x01,
-	0xb3, 0xbd, 0x00, 0xd3, 0xa6, 0x80, 0x51, 0x51, 0x8a, 0x76, 0x5e, 0x4c, 0x08, 0x99, 0xf8, 0xf8,
-	0x48, 0xa0, 0xa3, 0x78, 0x7c, 0x64, 0x07, 0x89, 0x94, 0xec, 0xec, 0xae, 0xc6, 0x21, 0x21, 0x0e,
-	0xc6, 0x3e, 0xb9, 0xb3, 0xbe, 0x38, 0x51, 0x02, 0x6d, 0x55, 0xe0, 0x93, 0x89, 0xe7, 0xd8, 0xbe,
-	0xe5, 0xe2, 0x5b, 0xcf, 0xc1, 0x52, 0xa3, 0xbd, 0x84, 0xd2, 0x80, 0xd1, 0x61, 0x12, 0x62, 0x54,
-	0x87, 0xdc, 0xad, 0xed, 0x37, 0x32, 0x7b, 0x99, 0x83, 0x8a, 0xc9, 0x87, 0x9c, 0x34, 0x02, 0xb6,
-	0x4e, 0xe6, 0x24, 0xf9, 0x0a, 0xca, 0xa7, 0x84, 0xf8, 0xeb, 0x6c, 0x59, 0xb2, 0x1a, 0x14, 0xfb,
-	0xb6, 0x73, 0x83, 0x19, 0x6a, 0x40, 0x29, 0xb4, 0x13, 0x9f, 0xd8, 0xae, 0xe0, 0x37, 0xcc, 0x74,
-	0xaa, 0xe9, 0x50, 0xd1, 0x29, 0x25, 0xb4, 0x4d, 0x5c, 0xac, 0x7d, 0x03, 0x05, 0x87, 0xb8, 0x38,
-	0x42, 0xcf, 0x61, 0xeb, 0xaa, 0x3b, 0xb8, 0xea, 0xf7, 0x7b, 0xe6, 0x50, 0xef, 0x58, 0xa6, 0xfe,
-	0xdd, 0x95, 0x3e, 0x18, 0xd6, 0x1f, 0xa1, 0x67, 0x80, 0x8c, 0xee, 0x75, 0xeb, 0xc2, 0xe8, 0x58,
-	0xfd, 0x96, 0xd9, 0xba, 0xd4, 0x87, 0xba, 0x39, 0xa8, 0x67, 0xb4, 0x33, 0x28, 0x88, 0x30, 0xe8,
-	0x2d, 0xe4, 0x79, 0x08, 0xb1, 0x4d, 0xf5, 0x78, 0xb3, 0x29, 0xaf, 0xdf, 0x9c, 0xef, 0x61, 0x0a,
-	0x1a, 0x3d, 0x83, 0x22, 0xc5, 0x76, 0x44, 0x82, 0x46, 0x56, 0x5c, 0x55, 0xcd, 0xb4, 0xdf, 0x32,
-	0x50, 0x3c, 0xc7, 0xb6, 0x8b, 0x29, 0xaa, 0x41, 0xd6, 0x73, 0x55, 0x26, 0xb2, 0x9e, 0x8b, 0xde,
-	0x41, 0x9e, 0x25, 0x21, 0x16, 0x0b, 0x6a, 0xc7, 0x5b, 0x69, 0xe4, 0x4b, 0x1c, 0x45, 0xf6, 0x04,
-	0xf3, 0x14, 0x98, 0x42, 0x80, 0x5e, 0x03, 0x8c, 0x29, 0x99, 0x59, 0x8c, 0x84, 0x9e, 0xd3, 0xc8,
-	0x89, 0x00, 0x15, 0x8e, 0x0c, 0x39, 0x80, 0x5e, 0x40, 0x99, 0x11, 0x45, 0xe6, 0x05, 0x59, 0x62,
-	0x44, 0x52, 0x2f, 0xa1, 0x72, 0x83, 0x13, 0xc5, 0x15, 0x04, 0x57, 0xbe, 0xc1, 0x89, 0x24, 0x5f,
-	0x41, 0x85, 0x79, 0x33, 0x1c, 0x31, 0x7b, 0x16, 0x36, 0x8a, 0xa2, 0x06, 0x0b, 0x40, 0x3b, 0x87,
-	0x72, 0x8b, 0x4e, 0xe2, 0x19, 0x0e, 0x18, 0xaf, 0xc4, 0x0d, 0x4e, 0xd2, 0x22, 0xde, 0xe0, 0x04,
-	0x1d, 0x42, 0xe1, 0xd6, 0xf6, 0x63, 0x79, 0xf8, 0xea, 0xf1, 0xd3, 0xa6, 0xec, 0xa8, 0x66, 0xda,
-	0x51, 0xcd, 0x56, 0x90, 0x98, 0x52, 0xa2, 0x79, 0xb0, 0x6d, 0xf0, 0x76, 0x6c, 0xa7, 0xdd, 0xa8,
-	0x6e, 0x88, 0xf6, 0xa1, 0x38, 0x15, 0xa9, 0x51, 0xc9, 0xad, 0xa5, 0x29, 0x90, 0x09, 0x33, 0x15,
-	0x8b, 0x0e, 0x20, 0x3f, 0x22, 0x6e, 0xf2, 0xb7, 0x7b, 0x09, 0x85, 0xf6, 0x6b, 0x06, 0x5e, 0xac,
-	0xee, 0x65, 0xe2, 0x8f, 0x31, 0x8e, 0xd8, 0x29, 0x71, 0x13, 0x7e, 0x0d, 0x1a, 0x3a, 0xaa, 0x40,
-	0x7c, 0x88, 0xde, 0x40, 0xde, 0xa6, 0x93, 0xa8, 0x91, 0xdb, 0xcb, 0x1d, 0x54, 0x8f, 0xeb, 0xe9,
-	0xfe, 0xe9, 0xc5, 0x4d, 0xc1, 0xa2, 0x4f, 0x61, 0x93, 0xe2, 0x28, 0x24, 0x41, 0x84, 0x2d, 0x8a,
-	0x3f, 0xc6, 0x1e, 0xc5, 0xae, 0xc8, 0x74, 0xd9, 0xac, 0xa7, 0x84, 0xa9, 0x70, 0xf4, 0x06, 0x6a,
-	0x14, 0x87, 0x3e, 0x4f, 0xfa, 0x4a, 0xde, 0x37, 0x04, 0x3a, 0x94, 0x85, 0xd1, 0x5c, 0xd8, 0x59,
-	0x3f, 0xa7, 0x8c, 0x23, 0x0e, 0xda, 0x80, 0x52, 0x14, 0x3b, 0x0e, 0x8e, 0x22, 0xd5, 0xfd, 0xe9,
-	0x14, 0x7d, 0xc6, 0xdb, 0x2c, 0x8a, 0x7d, 0x26, 0xda, 0xe0, 0xa1, 0x64, 0x28, 0x8d, 0xf6, 0x73,
-	0x06, 0xea, 0x83, 0x3b, 0x8f, 0x39, 0xd3, 0xb6, 0x1d, 0xda, 0x23, 0xcf, 0xf7, 0x58, 0x82, 0x3e,
-	0x81, 0xbc, 0x8b, 0x23, 0x47, 0xe5, 0x7c, 0xbb, 0xb9, 0xfc, 0xc4, 0xc9, 0x38, 0xb4, 0x38, 0x69,
-	0x0a, 0x09, 0x32, 0xe0, 0x49, 0x24, 0x96, 0x5b, 0x63, 0x6c, 0xb3, 0x98, 0xe2, 0x48, 0xd5, 0x60,
-	0xef, 0x2f, 0xab, 0xd6, 0x74, 0x66, 0x4d, 0x02, 0x67, 0x6a, 0xae, 0xbd, 0x87, 0x5a, 0x9f, 0x50,
-	0xb6, 0x74, 0x8e, 0x77, 0x90, 0x0f, 0x09, 0x65, 0xea, 0x1c, 0xf3, 0xf6, 0xbf, 0x90, 0x86, 0xc2,
-	0xc5, 0xa6, 0x10, 0x68, 0x3f, 0x42, 0xbd, 0x23, 0xdc, 0xa5, 0xe3, 0x45, 0x0e, 0xb9, 0xc5, 0x3c,
-	0xcb, 0xeb, 0x6f, 0xe9, 0x25, 0x54, 0x42, 0x9b, 0xe2, 0x80, 0x59, 0x9e, 0xab, 0x0a, 0x5c, 0x96,
-	0x80, 0xe1, 0xa2, 0x5d, 0xa8, 0x4a, 0x7b, 0xb2, 0xc4, 0x7b, 0x93, 0x0f, 0x08, 0x24, 0x24, 0x9c,
-	0xe6, 0x15, 0x54, 0xc2, 0x78, 0xe4, 0x7b, 0xd1, 0x14, 0x53, 0xf5, 0x84, 0x16, 0x80, 0xf6, 0x47,
-	0x06, 0x9e, 0x8b, 0x62, 0xb5, 0x5c, 0x3b, 0x64, 0xf3, 0xf6, 0xe5, 0x2b, 0xb5, 0xdf, 0x33, 0x50,
-	0xe0, 0x83, 0x08, 0xd5, 0x61, 0xe3, 0xec, 0xa2, 0xf7, 0x61, 0xc9, 0x5a, 0x36, 0xe1, 0xb1, 0x42,
-	0x06, 0xfd, 0x5e, 0x77, 0xa0, 0xd7, 0x33, 0x5c, 0xd4, 0xbb, 0x6c, 0x1b, 0x73, 0x51, 0x96, 0x8b,
-	0x14, 0xa2, 0x44, 0x39, 0xb4, 0x05, 0x4f, 0x2e, 0xf5, 0xa1, 0x69, 0xb4, 0x07, 0x73, 0x5d, 0x1e,
-	0x3d, 0x85, 0xfa, 0x02, 0x54, 0xd2, 0x02, 0x97, 0xf6, 0xba, 0x57, 0x96, 0xd1, 0x5d, 0x58, 0x5a,
-	0x91, 0x4b, 0x17, 0xa0, 0x92, 0x96, 0xd0, 0xff, 0xe0, 0xf5, 0x50, 0x6f, 0x9f, 0x5b, 0x7d, 0xb3,
-	0x77, 0x66, 0x5c, 0xe8, 0x56, 0xa7, 0xf7, 0xa1, 0x7b, 0xd1, 0x6b, 0x2d, 0x16, 0x96, 0xb5, 0x9f,
-	0xb2, 0x80, 0x96, 0x2f, 0xfa, 0x80, 0x6f, 0xbd, 0x5f, 0xf1, 0xad, 0xb7, 0x69, 0xe1, 0x1e, 0x48,
-	0x51, 0x53, 0xa4, 0xe7, 0x3f, 0x3b, 0xd9, 0x1e, 0x6c, 0x30, 0xa2, 0xbe, 0x32, 0xbc, 0xc6, 0xf2,
-	0x51, 0x01, 0x23, 0xb2, 0x35, 0x0c, 0x17, 0xed, 0xc3, 0x93, 0x90, 0x92, 0x1f, 0x92, 0x25, 0x51,
-	0x51, 0x88, 0x1e, 0x0b, 0x78, 0xae, 0x5b, 0xb1, 0xbd, 0xd2, 0xba, 0xed, 0x9d, 0xac, 0xd6, 0xba,
-	0x37, 0x73, 0xbc, 0xd4, 0xae, 0x1a, 0x50, 0x9a, 0xc9, 0x61, 0xfa, 0xcd, 0x51, 0x53, 0x6d, 0x00,
-	0xfb, 0xcb, 0x8b, 0x86, 0xd8, 0x99, 0xf6, 0x29, 0x19, 0x7b, 0x3e, 0xee, 0x90, 0xbb, 0x80, 0x7f,
-	0x96, 0xd2, 0x18, 0xdb, 0x50, 0x8c, 0x03, 0xcf, 0x52, 0xf9, 0x7c, 0x6c, 0x16, 0xe2, 0xc0, 0x33,
-	0x5c, 0x84, 0x20, 0x1f, 0xda, 0x6c, 0xaa, 0x3a, 0x57, 0x8c, 0xb5, 0x5f, 0x32, 0xd0, 0x58, 0x8e,
-	0xba, 0xe2, 0x10, 0xcf, 0xa0, 0x18, 0x31, 0x9b, 0xc5, 0xa9, 0x41, 0xa8, 0x19, 0x3a, 0xfc, 0x67,
-	0xab, 0x3c, 0x7f, 0x24, 0xcd, 0x12, 0x7d, 0x05, 0x79, 0x32, 0x73, 0x3c, 0xe5, 0x24, 0xbb, 0xf7,
-	0xd5, 0x71, 0xe9, 0xfa, 0x7c, 0x19, 0x97, 0x9f, 0x56, 0xe6, 0x9f, 0x5e, 0x2d, 0x82, 0xad, 0x7b,
-	0xaa, 0x8e, 0x8e, 0xd7, 0x7c, 0x7d, 0xe7, 0xbe, 0xd0, 0xff, 0xd6, 0xe3, 0x0f, 0xbf, 0x85, 0xea,
-	0x52, 0x7b, 0xa1, 0x2a, 0x94, 0x16, 0x4f, 0x6e, 0x03, 0xca, 0x4b, 0xaf, 0x6d, 0x1b, 0x36, 0x3b,
-	0xfa, 0xb5, 0xd1, 0xd6, 0xad, 0x8e, 0x31, 0x68, 0xf7, 0xae, 0x75, 0x53, 0xef, 0xd4, 0xb3, 0xa7,
-	0x5f, 0x7f, 0xff, 0xe5, 0xc4, 0x63, 0xd3, 0x78, 0xd4, 0x74, 0xc8, 0x4c, 0xfc, 0xe1, 0x38, 0x84,
-	0xba, 0x47, 0xf2, 0x8c, 0x9f, 0xab, 0xff, 0x9a, 0x09, 0x59, 0xff, 0x87, 0xea, 0x67, 0x47, 0x45,
-	0x41, 0x9e, 0xfc, 0x19, 0x00, 0x00, 0xff, 0xff, 0x1a, 0xaf, 0x50, 0xc3, 0x6d, 0x09, 0x00, 0x00,
+	// 1207 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xcb, 0x6e, 0xdb, 0x46,
+	0x17, 0x8e, 0x6c, 0x5d, 0x8f, 0x64, 0x45, 0x1e, 0xc7, 0x89, 0x62, 0x27, 0x88, 0x7f, 0xe6, 0xfa,
+	0xa7, 0xad, 0x82, 0x3a, 0x6d, 0xd1, 0xac, 0x5a, 0x59, 0xa2, 0x61, 0x16, 0xb6, 0xc4, 0x52, 0x72,
+	0x02, 0x74, 0x43, 0x50, 0xe4, 0x48, 0x22, 0x4c, 0x71, 0x98, 0xe1, 0xd0, 0x29, 0x37, 0x05, 0xba,
+	0xeb, 0x63, 0x74, 0xd5, 0x47, 0xe8, 0xbe, 0xdb, 0x3e, 0x48, 0x9f, 0xa3, 0x98, 0x0b, 0x25, 0x4a,
+	0x4d, 0x5a, 0xa0, 0xdd, 0xcd, 0x39, 0xdf, 0x37, 0x97, 0x73, 0x99, 0x6f, 0x06, 0x1e, 0x5e, 0x93,
+	0x80, 0xcd, 0x1d, 0x3b, 0xa2, 0x84, 0x91, 0xf8, 0x85, 0x1f, 0x32, 0x4c, 0x6d, 0x97, 0x84, 0xcc,
+	0xf1, 0x43, 0x4c, 0x3b, 0xc2, 0x8d, 0xca, 0x92, 0x74, 0x70, 0xb0, 0x4e, 0x76, 0xc9, 0x62, 0x41,
+	0x42, 0xc9, 0xd9, 0xc4, 0xa4, 0xa5, 0xb0, 0xbb, 0x33, 0x42, 0x66, 0x01, 0x7e, 0x21, 0xac, 0x49,
+	0x32, 0x7d, 0xe1, 0x84, 0xa9, 0x82, 0x1e, 0xac, 0x4f, 0x23, 0x11, 0x0e, 0xa7, 0x01, 0x79, 0x67,
+	0x7f, 0xfa, 0x52, 0x11, 0xb4, 0x75, 0x42, 0x40, 0x66, 0xbe, 0xeb, 0x04, 0xb6, 0x87, 0xaf, 0x7d,
+	0x17, 0x4b, 0x8e, 0x76, 0x08, 0x95, 0x11, 0xa3, 0xe3, 0x34, 0xc2, 0xa8, 0x05, 0xdb, 0xd7, 0x4e,
+	0xd0, 0x2e, 0x1c, 0x15, 0x9e, 0xd5, 0x2c, 0x3e, 0xe4, 0xa0, 0x11, 0xb2, 0x4d, 0x70, 0x5b, 0x82,
+	0xf7, 0xa0, 0x7a, 0x42, 0x48, 0xb0, 0x89, 0x56, 0x25, 0xaa, 0x41, 0xd9, 0x74, 0xdc, 0x2b, 0xcc,
+	0x50, 0x1b, 0x2a, 0x91, 0x93, 0x06, 0xc4, 0xf1, 0x04, 0xde, 0xb0, 0x32, 0x53, 0xd3, 0xa1, 0xa6,
+	0x53, 0x4a, 0x68, 0x8f, 0x78, 0x58, 0xfb, 0x12, 0x4a, 0x2e, 0xf1, 0x70, 0x8c, 0xee, 0xc0, 0xde,
+	0xe5, 0x60, 0x74, 0x69, 0x9a, 0x43, 0x6b, 0xac, 0xf7, 0x6d, 0x4b, 0xff, 0xf6, 0x52, 0x1f, 0x8d,
+	0x5b, 0x37, 0xd0, 0x6d, 0x40, 0xc6, 0xe0, 0x75, 0xf7, 0xdc, 0xe8, 0xdb, 0x66, 0xd7, 0xea, 0x5e,
+	0xe8, 0x63, 0xdd, 0x1a, 0xb5, 0x0a, 0xda, 0x29, 0x94, 0xc4, 0x32, 0xe8, 0x31, 0x14, 0xf9, 0x12,
+	0x62, 0x9b, 0xfa, 0xf1, 0x6e, 0x47, 0x25, 0x72, 0xb9, 0x87, 0x25, 0x60, 0x74, 0x1b, 0xca, 0x14,
+	0x3b, 0x31, 0x09, 0xdb, 0x5b, 0x22, 0x54, 0x65, 0x69, 0xbf, 0x16, 0xa0, 0x7c, 0x86, 0x1d, 0x0f,
+	0x53, 0xd4, 0x84, 0x2d, 0xdf, 0x53, 0x99, 0xd8, 0xf2, 0x3d, 0xf4, 0x14, 0x8a, 0x2c, 0x8d, 0xb0,
+	0x98, 0xd0, 0x3c, 0xde, 0xcb, 0x56, 0xbe, 0xc0, 0x71, 0xec, 0xcc, 0x30, 0x4f, 0x81, 0x25, 0x08,
+	0xe8, 0x3e, 0xc0, 0x94, 0x92, 0x85, 0xcd, 0x48, 0xe4, 0xbb, 0xed, 0x6d, 0xb1, 0x40, 0x8d, 0x7b,
+	0xc6, 0xdc, 0x81, 0xee, 0x42, 0x95, 0x11, 0x05, 0x16, 0x05, 0x58, 0x61, 0x44, 0x42, 0x87, 0x50,
+	0xbb, 0xc2, 0xa9, 0xc2, 0x4a, 0x02, 0xab, 0x5e, 0xe1, 0x54, 0x82, 0xf7, 0xa0, 0xc6, 0xfc, 0x05,
+	0x8e, 0x99, 0xb3, 0x88, 0xda, 0x65, 0x51, 0x83, 0x95, 0x43, 0x3b, 0x83, 0x6a, 0x97, 0xce, 0x92,
+	0x05, 0x0e, 0x19, 0xaf, 0xc4, 0x15, 0x4e, 0xb3, 0x22, 0x5e, 0xe1, 0x14, 0x3d, 0x87, 0xd2, 0xb5,
+	0x13, 0x24, 0xf2, 0xf0, 0xf5, 0xe3, 0x5b, 0x1d, 0xd9, 0x51, 0x9d, 0xac, 0xa3, 0x3a, 0xdd, 0x30,
+	0xb5, 0x24, 0x45, 0xf3, 0x61, 0xdf, 0xe0, 0x6d, 0xdc, 0xcb, 0xba, 0x58, 0x45, 0x88, 0x9e, 0x40,
+	0x79, 0x2e, 0x52, 0xa3, 0x92, 0xdb, 0xcc, 0x52, 0x20, 0x13, 0x66, 0x29, 0x14, 0x3d, 0x83, 0xe2,
+	0x84, 0x78, 0xe9, 0xdf, 0xee, 0x25, 0x18, 0xda, 0x2f, 0x05, 0xb8, 0xbb, 0xbe, 0x97, 0x85, 0xdf,
+	0x26, 0x38, 0x66, 0x27, 0xc4, 0x4b, 0x79, 0x18, 0x34, 0x72, 0x55, 0x81, 0xf8, 0x10, 0x3d, 0x82,
+	0xa2, 0x43, 0x67, 0x71, 0x7b, 0xfb, 0x68, 0xfb, 0x59, 0xfd, 0xb8, 0x95, 0xed, 0x9f, 0x05, 0x6e,
+	0x09, 0x14, 0x7d, 0x04, 0xbb, 0x14, 0xc7, 0x11, 0x09, 0x63, 0x6c, 0x53, 0xfc, 0x36, 0xf1, 0x29,
+	0xf6, 0x44, 0xa6, 0xab, 0x56, 0x2b, 0x03, 0x2c, 0xe5, 0x47, 0x8f, 0xa0, 0x49, 0x71, 0x14, 0xf0,
+	0xa4, 0xaf, 0xe5, 0xbd, 0x21, 0xbc, 0x63, 0x59, 0x18, 0xcd, 0x83, 0x83, 0xcd, 0x73, 0xca, 0x75,
+	0xc4, 0x41, 0xdb, 0x50, 0x89, 0x13, 0xd7, 0xc5, 0x71, 0xac, 0xba, 0x3f, 0x33, 0xd1, 0xc7, 0xbc,
+	0xcd, 0xe2, 0x24, 0x60, 0xa2, 0x0d, 0x3e, 0x94, 0x0c, 0xc5, 0xd1, 0x7e, 0x2a, 0x40, 0x6b, 0xf4,
+	0xce, 0x67, 0xee, 0xbc, 0xe7, 0x44, 0xce, 0xc4, 0x0f, 0x7c, 0x96, 0xa2, 0xff, 0x43, 0xd1, 0xc3,
+	0xb1, 0xab, 0x72, 0xbe, 0xdf, 0xc9, 0x5f, 0x71, 0x32, 0x8d, 0x6c, 0x0e, 0x5a, 0x82, 0x82, 0x0c,
+	0xb8, 0x19, 0x8b, 0xe9, 0xf6, 0x14, 0x3b, 0x2c, 0xa1, 0x38, 0x56, 0x35, 0x38, 0xfa, 0xcb, 0xac,
+	0x0d, 0x9e, 0xd5, 0x94, 0x8e, 0x53, 0x65, 0x6b, 0xaf, 0xa0, 0x69, 0x12, 0xca, 0x72, 0xe7, 0x78,
+	0x0a, 0xc5, 0x88, 0x50, 0xa6, 0xce, 0xb1, 0x6c, 0xff, 0x73, 0x29, 0x28, 0x9c, 0x6c, 0x09, 0x82,
+	0xf6, 0x03, 0xb4, 0xfa, 0x42, 0x5d, 0xfa, 0x7e, 0xec, 0x92, 0x6b, 0xcc, 0xb3, 0xbc, 0x79, 0x97,
+	0x0e, 0xa1, 0x16, 0x39, 0x14, 0x87, 0xcc, 0xf6, 0x3d, 0x55, 0xe0, 0xaa, 0x74, 0x18, 0x1e, 0x7a,
+	0x00, 0x75, 0x29, 0x4f, 0xb6, 0xb8, 0x6f, 0xf2, 0x02, 0x81, 0x74, 0x09, 0xa5, 0xb9, 0x07, 0xb5,
+	0x28, 0x99, 0x04, 0x7e, 0x3c, 0xc7, 0x54, 0x5d, 0xa1, 0x95, 0x43, 0xfb, 0xa3, 0x00, 0x77, 0x44,
+	0xb1, 0xba, 0x9e, 0x13, 0xb1, 0x65, 0xfb, 0xf2, 0x99, 0xda, 0xef, 0x05, 0x28, 0xf1, 0x41, 0x8c,
+	0x5a, 0xd0, 0x38, 0x3d, 0x1f, 0xbe, 0xc9, 0x49, 0xcb, 0x2e, 0xec, 0x28, 0xcf, 0xc8, 0x1c, 0x0e,
+	0x46, 0x7a, 0xab, 0xc0, 0x49, 0xc3, 0x8b, 0x9e, 0xb1, 0x24, 0x6d, 0x71, 0x92, 0xf2, 0x28, 0xd2,
+	0x36, 0xda, 0x83, 0x9b, 0x17, 0xfa, 0xd8, 0x32, 0x7a, 0xa3, 0x25, 0xaf, 0x88, 0x6e, 0x41, 0x6b,
+	0xe5, 0x54, 0xd4, 0x12, 0xa7, 0x0e, 0x07, 0x97, 0xb6, 0x31, 0x58, 0x49, 0x5a, 0x99, 0x53, 0x57,
+	0x4e, 0x45, 0xad, 0xa0, 0xff, 0xc1, 0xfd, 0xb1, 0xde, 0x3b, 0xb3, 0x4d, 0x6b, 0x78, 0x6a, 0x9c,
+	0xeb, 0x76, 0x7f, 0xf8, 0x66, 0x70, 0x3e, 0xec, 0xae, 0x26, 0x56, 0xb5, 0x1f, 0xb7, 0x00, 0xe5,
+	0x03, 0xfd, 0x80, 0x6e, 0xbd, 0x5a, 0xd3, 0xad, 0xc7, 0x59, 0xe1, 0x3e, 0x90, 0xa2, 0x8e, 0x48,
+	0xcf, 0x7f, 0x56, 0xb2, 0x23, 0x68, 0x30, 0xa2, 0x5e, 0x19, 0x5e, 0x63, 0x79, 0xa9, 0x80, 0x11,
+	0xd9, 0x1a, 0x86, 0x87, 0x9e, 0xc0, 0xcd, 0x88, 0x92, 0xef, 0xd3, 0x1c, 0xa9, 0x2c, 0x48, 0x3b,
+	0xc2, 0xbd, 0xe4, 0xad, 0xc9, 0x5e, 0x65, 0x53, 0xf6, 0x7e, 0xdb, 0x28, 0xf6, 0x70, 0xe1, 0xfa,
+	0x99, 0x5e, 0xb5, 0xa1, 0xb2, 0x90, 0xc3, 0xec, 0xd1, 0x51, 0x26, 0xfa, 0x06, 0x9a, 0x2e, 0x09,
+	0x43, 0xec, 0x32, 0x3b, 0x66, 0x0e, 0x4b, 0x62, 0x95, 0x9c, 0x87, 0x1d, 0xf5, 0x26, 0xf7, 0x24,
+	0x3a, 0x12, 0xe0, 0xba, 0x65, 0xed, 0xb8, 0x79, 0x13, 0x7d, 0x0d, 0xf2, 0xc0, 0xb6, 0xe3, 0x79,
+	0x94, 0x4b, 0x80, 0xbc, 0xe9, 0x87, 0x59, 0x9e, 0x65, 0x20, 0x1d, 0x93, 0x73, 0xba, 0x92, 0x62,
+	0x35, 0xa2, 0x9c, 0xa5, 0x8d, 0xe0, 0x49, 0x3e, 0x84, 0x31, 0x76, 0xe7, 0x26, 0x25, 0x53, 0x3f,
+	0xc0, 0x7d, 0xf2, 0x2e, 0xe4, 0xaf, 0x64, 0x16, 0xd1, 0x3e, 0x94, 0x93, 0xd0, 0xb7, 0x55, 0x79,
+	0x77, 0xac, 0x52, 0x12, 0xfa, 0x86, 0x87, 0x10, 0x14, 0x23, 0x87, 0xcd, 0xd5, 0x45, 0x12, 0x63,
+	0xed, 0xe7, 0x02, 0xb4, 0xf3, 0xab, 0xae, 0x09, 0xd6, 0x6d, 0x28, 0xab, 0xb8, 0xa5, 0x5e, 0x29,
+	0x0b, 0x3d, 0xff, 0x67, 0xe5, 0x3e, 0xbb, 0x21, 0xb5, 0x1b, 0x7d, 0x0e, 0x45, 0xb2, 0x70, 0x7d,
+	0x15, 0xee, 0x83, 0xf7, 0xb5, 0x55, 0xae, 0x18, 0x7c, 0x1a, 0xa7, 0x9f, 0xd4, 0x96, 0x3f, 0x01,
+	0x2d, 0x86, 0xbd, 0xf7, 0x34, 0x21, 0x3a, 0xde, 0x78, 0x66, 0x0e, 0xde, 0xb7, 0xf4, 0xbf, 0x7d,
+	0x72, 0x9e, 0x7f, 0x05, 0xf5, 0x5c, 0xb7, 0xa3, 0x3a, 0x54, 0x56, 0x0a, 0xd0, 0x80, 0x6a, 0xee,
+	0xf2, 0xef, 0xc3, 0x6e, 0x5f, 0x7f, 0x6d, 0xf4, 0x74, 0xbb, 0x6f, 0x8c, 0x7a, 0xc3, 0xd7, 0xba,
+	0xa5, 0xf7, 0x5b, 0x5b, 0x27, 0x5f, 0x7c, 0xf7, 0xd9, 0xcc, 0x67, 0xf3, 0x64, 0xc2, 0x7b, 0x45,
+	0x7c, 0xb8, 0x5c, 0x42, 0x3d, 0xf5, 0x61, 0xfb, 0x44, 0x7d, 0xb3, 0x66, 0x64, 0xf3, 0x2b, 0x68,
+	0xde, 0x30, 0x0b, 0x66, 0x71, 0x52, 0x16, 0x84, 0x97, 0x7f, 0x06, 0x00, 0x00, 0xff, 0xff, 0x7b,
+	0xf2, 0xdb, 0xf1, 0x38, 0x0a, 0x00, 0x00,
 }
diff --git a/vendor/github.com/opencord/voltha-protos/go/voltha.pb b/vendor/github.com/opencord/voltha-protos/go/voltha.pb
index 312da51..3aaf45e 100644
--- a/vendor/github.com/opencord/voltha-protos/go/voltha.pb
+++ b/vendor/github.com/opencord/voltha-protos/go/voltha.pb
Binary files differ
diff --git a/vendor/github.com/opencord/voltha-protos/go/voltha/events.pb.go b/vendor/github.com/opencord/voltha-protos/go/voltha/events.pb.go
index 43e5a48..0a43011 100644
--- a/vendor/github.com/opencord/voltha-protos/go/voltha/events.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/go/voltha/events.pb.go
@@ -205,6 +205,108 @@
 	return fileDescriptor_e63e6c07044fd2c4, []int{11, 0}
 }
 
+type EventCategory_EventCategory int32
+
+const (
+	EventCategory_COMMUNICATION EventCategory_EventCategory = 0
+	EventCategory_ENVIRONMENT   EventCategory_EventCategory = 1
+	EventCategory_EQUIPMENT     EventCategory_EventCategory = 2
+	EventCategory_SERVICE       EventCategory_EventCategory = 3
+	EventCategory_PROCESSING    EventCategory_EventCategory = 4
+	EventCategory_SECURITY      EventCategory_EventCategory = 5
+)
+
+var EventCategory_EventCategory_name = map[int32]string{
+	0: "COMMUNICATION",
+	1: "ENVIRONMENT",
+	2: "EQUIPMENT",
+	3: "SERVICE",
+	4: "PROCESSING",
+	5: "SECURITY",
+}
+
+var EventCategory_EventCategory_value = map[string]int32{
+	"COMMUNICATION": 0,
+	"ENVIRONMENT":   1,
+	"EQUIPMENT":     2,
+	"SERVICE":       3,
+	"PROCESSING":    4,
+	"SECURITY":      5,
+}
+
+func (x EventCategory_EventCategory) String() string {
+	return proto.EnumName(EventCategory_EventCategory_name, int32(x))
+}
+
+func (EventCategory_EventCategory) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_e63e6c07044fd2c4, []int{14, 0}
+}
+
+type EventSubCategory_EventSubCategory int32
+
+const (
+	EventSubCategory_PON EventSubCategory_EventSubCategory = 0
+	EventSubCategory_OLT EventSubCategory_EventSubCategory = 1
+	EventSubCategory_ONT EventSubCategory_EventSubCategory = 2
+	EventSubCategory_ONU EventSubCategory_EventSubCategory = 3
+	EventSubCategory_NNI EventSubCategory_EventSubCategory = 4
+)
+
+var EventSubCategory_EventSubCategory_name = map[int32]string{
+	0: "PON",
+	1: "OLT",
+	2: "ONT",
+	3: "ONU",
+	4: "NNI",
+}
+
+var EventSubCategory_EventSubCategory_value = map[string]int32{
+	"PON": 0,
+	"OLT": 1,
+	"ONT": 2,
+	"ONU": 3,
+	"NNI": 4,
+}
+
+func (x EventSubCategory_EventSubCategory) String() string {
+	return proto.EnumName(EventSubCategory_EventSubCategory_name, int32(x))
+}
+
+func (EventSubCategory_EventSubCategory) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_e63e6c07044fd2c4, []int{15, 0}
+}
+
+type EventType_EventType int32
+
+const (
+	EventType_CONFIG_EVENT EventType_EventType = 0
+	EventType_KPI_EVENT    EventType_EventType = 1
+	EventType_KPI_EVENT2   EventType_EventType = 2
+	EventType_DEVICE_EVENT EventType_EventType = 3
+)
+
+var EventType_EventType_name = map[int32]string{
+	0: "CONFIG_EVENT",
+	1: "KPI_EVENT",
+	2: "KPI_EVENT2",
+	3: "DEVICE_EVENT",
+}
+
+var EventType_EventType_value = map[string]int32{
+	"CONFIG_EVENT": 0,
+	"KPI_EVENT":    1,
+	"KPI_EVENT2":   2,
+	"DEVICE_EVENT": 3,
+}
+
+func (x EventType_EventType) String() string {
+	return proto.EnumName(EventType_EventType_name, int32(x))
+}
+
+func (EventType_EventType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_e63e6c07044fd2c4, []int{16, 0}
+}
+
 type ConfigEventType struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -617,6 +719,8 @@
 
 //
 // Identify to the area of the system impacted by the alarm
+// To be deprecated once python version of OpenOLT adapter
+// moves to the new event defination for device alarms
 type AlarmEventType struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -650,6 +754,9 @@
 
 //
 // Identify to the functional category originating the alarm
+// To be deprecated once python version of OpenOLT adapter
+// as well as OpenONU adapter moves to the new event
+// defination for device alarms
 type AlarmEventCategory struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -683,6 +790,9 @@
 
 //
 // Active state of the alarm
+// To be deprecated once python version of OpenOLT adapter
+// as well as OpenONU adapter moves to the new event
+// defination for device alarms
 type AlarmEventState struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -716,6 +826,9 @@
 
 //
 // Identify the overall impact of the alarm on the system
+// To be deprecated once python version of OpenOLT adapter
+// as well as OpenONU adapter moves to the new event
+// defination for device alarms
 type AlarmEventSeverity struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -748,7 +861,9 @@
 var xxx_messageInfo_AlarmEventSeverity proto.InternalMessageInfo
 
 //
-//
+// To be deprecated once python version of OpenOLT adapter
+// as well as OpenONU adapter moves to the new event
+// defination for device alarms
 type AlarmEvent struct {
 	// Unique ID for this alarm.  e.g. voltha.some_olt.1234
 	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
@@ -897,6 +1012,404 @@
 	return ""
 }
 
+//
+// Describes the events specific to device
+type DeviceEvent struct {
+	// Identifier of the originating resource of the event, for ex: device_id
+	ResourceId string `protobuf:"bytes,1,opt,name=resource_id,json=resourceId,proto3" json:"resource_id,omitempty"`
+	// device_event_name indicates clearly the name of the device event
+	DeviceEventName string `protobuf:"bytes,2,opt,name=device_event_name,json=deviceEventName,proto3" json:"device_event_name,omitempty"`
+	// Textual explanation of the device event
+	Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
+	// Key/Value storage for extra information that may give context to the event
+	Context              map[string]string `protobuf:"bytes,4,rep,name=context,proto3" json:"context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
+	XXX_unrecognized     []byte            `json:"-"`
+	XXX_sizecache        int32             `json:"-"`
+}
+
+func (m *DeviceEvent) Reset()         { *m = DeviceEvent{} }
+func (m *DeviceEvent) String() string { return proto.CompactTextString(m) }
+func (*DeviceEvent) ProtoMessage()    {}
+func (*DeviceEvent) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e63e6c07044fd2c4, []int{13}
+}
+
+func (m *DeviceEvent) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DeviceEvent.Unmarshal(m, b)
+}
+func (m *DeviceEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DeviceEvent.Marshal(b, m, deterministic)
+}
+func (m *DeviceEvent) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DeviceEvent.Merge(m, src)
+}
+func (m *DeviceEvent) XXX_Size() int {
+	return xxx_messageInfo_DeviceEvent.Size(m)
+}
+func (m *DeviceEvent) XXX_DiscardUnknown() {
+	xxx_messageInfo_DeviceEvent.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DeviceEvent proto.InternalMessageInfo
+
+func (m *DeviceEvent) GetResourceId() string {
+	if m != nil {
+		return m.ResourceId
+	}
+	return ""
+}
+
+func (m *DeviceEvent) GetDeviceEventName() string {
+	if m != nil {
+		return m.DeviceEventName
+	}
+	return ""
+}
+
+func (m *DeviceEvent) GetDescription() string {
+	if m != nil {
+		return m.Description
+	}
+	return ""
+}
+
+func (m *DeviceEvent) GetContext() map[string]string {
+	if m != nil {
+		return m.Context
+	}
+	return nil
+}
+
+//
+// Identify the area of the system impacted by the event.
+type EventCategory struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *EventCategory) Reset()         { *m = EventCategory{} }
+func (m *EventCategory) String() string { return proto.CompactTextString(m) }
+func (*EventCategory) ProtoMessage()    {}
+func (*EventCategory) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e63e6c07044fd2c4, []int{14}
+}
+
+func (m *EventCategory) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_EventCategory.Unmarshal(m, b)
+}
+func (m *EventCategory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_EventCategory.Marshal(b, m, deterministic)
+}
+func (m *EventCategory) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_EventCategory.Merge(m, src)
+}
+func (m *EventCategory) XXX_Size() int {
+	return xxx_messageInfo_EventCategory.Size(m)
+}
+func (m *EventCategory) XXX_DiscardUnknown() {
+	xxx_messageInfo_EventCategory.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_EventCategory proto.InternalMessageInfo
+
+//
+// Identify the functional category originating the event
+type EventSubCategory struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *EventSubCategory) Reset()         { *m = EventSubCategory{} }
+func (m *EventSubCategory) String() string { return proto.CompactTextString(m) }
+func (*EventSubCategory) ProtoMessage()    {}
+func (*EventSubCategory) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e63e6c07044fd2c4, []int{15}
+}
+
+func (m *EventSubCategory) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_EventSubCategory.Unmarshal(m, b)
+}
+func (m *EventSubCategory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_EventSubCategory.Marshal(b, m, deterministic)
+}
+func (m *EventSubCategory) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_EventSubCategory.Merge(m, src)
+}
+func (m *EventSubCategory) XXX_Size() int {
+	return xxx_messageInfo_EventSubCategory.Size(m)
+}
+func (m *EventSubCategory) XXX_DiscardUnknown() {
+	xxx_messageInfo_EventSubCategory.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_EventSubCategory proto.InternalMessageInfo
+
+//
+// Identify the type of event
+type EventType struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *EventType) Reset()         { *m = EventType{} }
+func (m *EventType) String() string { return proto.CompactTextString(m) }
+func (*EventType) ProtoMessage()    {}
+func (*EventType) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e63e6c07044fd2c4, []int{16}
+}
+
+func (m *EventType) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_EventType.Unmarshal(m, b)
+}
+func (m *EventType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_EventType.Marshal(b, m, deterministic)
+}
+func (m *EventType) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_EventType.Merge(m, src)
+}
+func (m *EventType) XXX_Size() int {
+	return xxx_messageInfo_EventType.Size(m)
+}
+func (m *EventType) XXX_DiscardUnknown() {
+	xxx_messageInfo_EventType.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_EventType proto.InternalMessageInfo
+
+//
+// Identify the functional category originating the event
+type EventHeader struct {
+	// Unique ID for this event.  e.g. voltha.some_olt.1234
+	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	// Refers to the functional area affect by the event
+	Category EventCategory_EventCategory `protobuf:"varint,2,opt,name=category,proto3,enum=voltha.EventCategory_EventCategory" json:"category,omitempty"`
+	// Refers to functional category of the event
+	SubCategory EventSubCategory_EventSubCategory `protobuf:"varint,3,opt,name=sub_category,json=subCategory,proto3,enum=voltha.EventSubCategory_EventSubCategory" json:"sub_category,omitempty"`
+	// Refers to the type of the event
+	Type EventType_EventType `protobuf:"varint,4,opt,name=type,proto3,enum=voltha.EventType_EventType" json:"type,omitempty"`
+	// The version identifier for this event type, thus allowing each
+	// event type to evolve independently. The version should be in the
+	// format “MAJOR.MINOR” format and minor changes must only be additive
+	// and non-breaking.
+	TypeVersion string `protobuf:"bytes,5,opt,name=type_version,json=typeVersion,proto3" json:"type_version,omitempty"`
+	// Timestamp at which the event was first raised.
+	// This represents the UTC time stamp since epoch (in seconds) when the
+	// the event was first raised from the source entity.
+	// If the source entity doesn't send the raised_ts, this shall be set
+	// to timestamp when the event was received.
+	RaisedTs float32 `protobuf:"fixed32,6,opt,name=raised_ts,json=raisedTs,proto3" json:"raised_ts,omitempty"`
+	// Timestamp at which the event was reported.
+	// This represents the UTC time stamp since epoch (in seconds) when the
+	// the event was reported (this time stamp is >= raised_ts).
+	// If the source entity that reported this event doesn't send the
+	// reported_ts, this shall be set to the same value as raised_ts.
+	ReportedTs           float32  `protobuf:"fixed32,7,opt,name=reported_ts,json=reportedTs,proto3" json:"reported_ts,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *EventHeader) Reset()         { *m = EventHeader{} }
+func (m *EventHeader) String() string { return proto.CompactTextString(m) }
+func (*EventHeader) ProtoMessage()    {}
+func (*EventHeader) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e63e6c07044fd2c4, []int{17}
+}
+
+func (m *EventHeader) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_EventHeader.Unmarshal(m, b)
+}
+func (m *EventHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_EventHeader.Marshal(b, m, deterministic)
+}
+func (m *EventHeader) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_EventHeader.Merge(m, src)
+}
+func (m *EventHeader) XXX_Size() int {
+	return xxx_messageInfo_EventHeader.Size(m)
+}
+func (m *EventHeader) XXX_DiscardUnknown() {
+	xxx_messageInfo_EventHeader.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_EventHeader proto.InternalMessageInfo
+
+func (m *EventHeader) GetId() string {
+	if m != nil {
+		return m.Id
+	}
+	return ""
+}
+
+func (m *EventHeader) GetCategory() EventCategory_EventCategory {
+	if m != nil {
+		return m.Category
+	}
+	return EventCategory_COMMUNICATION
+}
+
+func (m *EventHeader) GetSubCategory() EventSubCategory_EventSubCategory {
+	if m != nil {
+		return m.SubCategory
+	}
+	return EventSubCategory_PON
+}
+
+func (m *EventHeader) GetType() EventType_EventType {
+	if m != nil {
+		return m.Type
+	}
+	return EventType_CONFIG_EVENT
+}
+
+func (m *EventHeader) GetTypeVersion() string {
+	if m != nil {
+		return m.TypeVersion
+	}
+	return ""
+}
+
+func (m *EventHeader) GetRaisedTs() float32 {
+	if m != nil {
+		return m.RaisedTs
+	}
+	return 0
+}
+
+func (m *EventHeader) GetReportedTs() float32 {
+	if m != nil {
+		return m.ReportedTs
+	}
+	return 0
+}
+
+//
+// Event Structure
+type Event struct {
+	// event header
+	Header *EventHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"`
+	// oneof event types referred by EventType.
+	//
+	// Types that are valid to be assigned to EventType:
+	//	*Event_ConfigEvent
+	//	*Event_KpiEvent
+	//	*Event_KpiEvent2
+	//	*Event_DeviceEvent
+	EventType            isEvent_EventType `protobuf_oneof:"event_type"`
+	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_e63e6c07044fd2c4, []int{18}
+}
+
+func (m *Event) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Event.Unmarshal(m, b)
+}
+func (m *Event) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Event.Marshal(b, m, deterministic)
+}
+func (m *Event) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Event.Merge(m, src)
+}
+func (m *Event) XXX_Size() int {
+	return xxx_messageInfo_Event.Size(m)
+}
+func (m *Event) XXX_DiscardUnknown() {
+	xxx_messageInfo_Event.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Event proto.InternalMessageInfo
+
+func (m *Event) GetHeader() *EventHeader {
+	if m != nil {
+		return m.Header
+	}
+	return nil
+}
+
+type isEvent_EventType interface {
+	isEvent_EventType()
+}
+
+type Event_ConfigEvent struct {
+	ConfigEvent *ConfigEvent `protobuf:"bytes,2,opt,name=config_event,json=configEvent,proto3,oneof"`
+}
+
+type Event_KpiEvent struct {
+	KpiEvent *KpiEvent `protobuf:"bytes,3,opt,name=kpi_event,json=kpiEvent,proto3,oneof"`
+}
+
+type Event_KpiEvent2 struct {
+	KpiEvent2 *KpiEvent2 `protobuf:"bytes,4,opt,name=kpi_event2,json=kpiEvent2,proto3,oneof"`
+}
+
+type Event_DeviceEvent struct {
+	DeviceEvent *DeviceEvent `protobuf:"bytes,5,opt,name=device_event,json=deviceEvent,proto3,oneof"`
+}
+
+func (*Event_ConfigEvent) isEvent_EventType() {}
+
+func (*Event_KpiEvent) isEvent_EventType() {}
+
+func (*Event_KpiEvent2) isEvent_EventType() {}
+
+func (*Event_DeviceEvent) isEvent_EventType() {}
+
+func (m *Event) GetEventType() isEvent_EventType {
+	if m != nil {
+		return m.EventType
+	}
+	return nil
+}
+
+func (m *Event) GetConfigEvent() *ConfigEvent {
+	if x, ok := m.GetEventType().(*Event_ConfigEvent); ok {
+		return x.ConfigEvent
+	}
+	return nil
+}
+
+func (m *Event) GetKpiEvent() *KpiEvent {
+	if x, ok := m.GetEventType().(*Event_KpiEvent); ok {
+		return x.KpiEvent
+	}
+	return nil
+}
+
+func (m *Event) GetKpiEvent2() *KpiEvent2 {
+	if x, ok := m.GetEventType().(*Event_KpiEvent2); ok {
+		return x.KpiEvent2
+	}
+	return nil
+}
+
+func (m *Event) GetDeviceEvent() *DeviceEvent {
+	if x, ok := m.GetEventType().(*Event_DeviceEvent); ok {
+		return x.DeviceEvent
+	}
+	return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*Event) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*Event_ConfigEvent)(nil),
+		(*Event_KpiEvent)(nil),
+		(*Event_KpiEvent2)(nil),
+		(*Event_DeviceEvent)(nil),
+	}
+}
+
 func init() {
 	proto.RegisterEnum("voltha.ConfigEventType_ConfigEventType", ConfigEventType_ConfigEventType_name, ConfigEventType_ConfigEventType_value)
 	proto.RegisterEnum("voltha.KpiEventType_KpiEventType", KpiEventType_KpiEventType_name, KpiEventType_KpiEventType_value)
@@ -904,6 +1417,9 @@
 	proto.RegisterEnum("voltha.AlarmEventCategory_AlarmEventCategory", AlarmEventCategory_AlarmEventCategory_name, AlarmEventCategory_AlarmEventCategory_value)
 	proto.RegisterEnum("voltha.AlarmEventState_AlarmEventState", AlarmEventState_AlarmEventState_name, AlarmEventState_AlarmEventState_value)
 	proto.RegisterEnum("voltha.AlarmEventSeverity_AlarmEventSeverity", AlarmEventSeverity_AlarmEventSeverity_name, AlarmEventSeverity_AlarmEventSeverity_value)
+	proto.RegisterEnum("voltha.EventCategory_EventCategory", EventCategory_EventCategory_name, EventCategory_EventCategory_value)
+	proto.RegisterEnum("voltha.EventSubCategory_EventSubCategory", EventSubCategory_EventSubCategory_name, EventSubCategory_EventSubCategory_value)
+	proto.RegisterEnum("voltha.EventType_EventType", EventType_EventType_name, EventType_EventType_value)
 	proto.RegisterType((*ConfigEventType)(nil), "voltha.ConfigEventType")
 	proto.RegisterType((*ConfigEvent)(nil), "voltha.ConfigEvent")
 	proto.RegisterType((*KpiEventType)(nil), "voltha.KpiEventType")
@@ -922,75 +1438,102 @@
 	proto.RegisterType((*AlarmEventSeverity)(nil), "voltha.AlarmEventSeverity")
 	proto.RegisterType((*AlarmEvent)(nil), "voltha.AlarmEvent")
 	proto.RegisterMapType((map[string]string)(nil), "voltha.AlarmEvent.ContextEntry")
+	proto.RegisterType((*DeviceEvent)(nil), "voltha.DeviceEvent")
+	proto.RegisterMapType((map[string]string)(nil), "voltha.DeviceEvent.ContextEntry")
+	proto.RegisterType((*EventCategory)(nil), "voltha.EventCategory")
+	proto.RegisterType((*EventSubCategory)(nil), "voltha.EventSubCategory")
+	proto.RegisterType((*EventType)(nil), "voltha.EventType")
+	proto.RegisterType((*EventHeader)(nil), "voltha.EventHeader")
+	proto.RegisterType((*Event)(nil), "voltha.Event")
 }
 
 func init() { proto.RegisterFile("voltha_protos/events.proto", fileDescriptor_e63e6c07044fd2c4) }
 
 var fileDescriptor_e63e6c07044fd2c4 = []byte{
-	// 1033 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xdd, 0x6e, 0xe3, 0x44,
-	0x14, 0xae, 0x9d, 0xff, 0x93, 0x36, 0xf5, 0x8e, 0x10, 0x32, 0xe5, 0x67, 0xbb, 0x46, 0x2c, 0xd5,
-	0xa2, 0xa6, 0x22, 0x08, 0x69, 0xb7, 0xa8, 0x82, 0xe0, 0x5a, 0xc8, 0xd0, 0x38, 0x65, 0x92, 0x76,
-	0x81, 0x9b, 0x68, 0xd6, 0x9e, 0xa6, 0x16, 0x89, 0xc7, 0xb2, 0xa7, 0xd1, 0xe6, 0x8e, 0x07, 0x40,
-	0xe2, 0x72, 0x9f, 0x88, 0x37, 0xe1, 0x41, 0xd0, 0xcc, 0xd8, 0xb5, 0x93, 0x7a, 0xc5, 0xc5, 0x8a,
-	0xbb, 0x39, 0xdf, 0xf9, 0xf1, 0x77, 0xce, 0x9c, 0x39, 0xc7, 0x70, 0xb0, 0x62, 0x0b, 0x7e, 0x4b,
-	0x66, 0x71, 0xc2, 0x38, 0x4b, 0x4f, 0xe8, 0x8a, 0x46, 0x3c, 0xed, 0x4b, 0x09, 0x35, 0x95, 0xee,
-	0xc0, 0xdc, 0xb4, 0x59, 0x52, 0x4e, 0x94, 0xc5, 0xc1, 0x47, 0x73, 0xc6, 0xe6, 0x0b, 0x7a, 0x42,
-	0xe2, 0xf0, 0x84, 0x44, 0x11, 0xe3, 0x84, 0x87, 0x2c, 0xca, 0xfc, 0x2d, 0x07, 0xf6, 0x6d, 0x16,
-	0xdd, 0x84, 0x73, 0x47, 0x44, 0x9d, 0xae, 0x63, 0x6a, 0x0d, 0x1e, 0x40, 0xa8, 0x05, 0x35, 0x12,
-	0x04, 0xc6, 0x0e, 0x02, 0x68, 0x26, 0x74, 0xc9, 0x56, 0xd4, 0xd0, 0xc4, 0xf9, 0x2e, 0x0e, 0x08,
-	0xa7, 0x86, 0x6e, 0x25, 0xd0, 0x2d, 0xf9, 0xa0, 0x6f, 0xa0, 0xce, 0xd7, 0x31, 0x35, 0xb5, 0x43,
-	0xed, 0xa8, 0x37, 0xf8, 0xbc, 0xaf, 0xc8, 0xf5, 0xb7, 0xc2, 0x6e, 0xcb, 0x58, 0x3a, 0x21, 0x04,
-	0xf5, 0x5b, 0x92, 0xde, 0x9a, 0xfa, 0xa1, 0x76, 0xd4, 0xc1, 0xf2, 0x2c, 0xb0, 0x80, 0x70, 0x62,
-	0xd6, 0x14, 0x26, 0xce, 0xd6, 0x97, 0xb0, 0xfb, 0x53, 0x1c, 0x16, 0xbc, 0x9f, 0x6c, 0xca, 0xa8,
-	0x03, 0x8d, 0x74, 0x11, 0xfa, 0xd4, 0xd8, 0x41, 0x4d, 0xd0, 0x79, 0x6a, 0x68, 0xd6, 0x1b, 0x1d,
-	0x7a, 0x23, 0xca, 0x93, 0xd0, 0x1f, 0x51, 0x4e, 0xce, 0x09, 0x27, 0xe8, 0x3d, 0x68, 0xf0, 0x90,
-	0x2f, 0x14, 0xd7, 0x0e, 0x56, 0x02, 0xea, 0x09, 0x07, 0xc9, 0x40, 0xc3, 0x3a, 0x4f, 0xd1, 0x33,
-	0x78, 0xb4, 0x60, 0xf3, 0xd0, 0x27, 0x8b, 0x59, 0x40, 0x57, 0xa1, 0x4f, 0x67, 0x61, 0x90, 0x91,
-	0xd9, 0xcf, 0x14, 0xe7, 0x12, 0x77, 0x03, 0xf4, 0x21, 0x74, 0x52, 0x9a, 0x84, 0x64, 0x31, 0x8b,
-	0x98, 0x59, 0x97, 0x36, 0x6d, 0x05, 0x78, 0x4c, 0x28, 0x8b, 0x00, 0x0d, 0xa5, 0x0c, 0x72, 0xcf,
-	0x33, 0x68, 0xf9, 0x2c, 0xe2, 0xf4, 0x35, 0x37, 0x9b, 0x87, 0xb5, 0xa3, 0xee, 0xe0, 0xd3, 0xbc,
-	0x72, 0x9b, 0xa4, 0x45, 0xe1, 0x84, 0x95, 0x13, 0xf1, 0x64, 0x8d, 0x73, 0x9f, 0x83, 0x53, 0xd8,
-	0x2d, 0x2b, 0x90, 0x01, 0xb5, 0xdf, 0xe9, 0x3a, 0x4b, 0x4c, 0x1c, 0x45, 0xb2, 0x2b, 0xb2, 0xb8,
-	0xa3, 0x59, 0x6d, 0x95, 0x70, 0xaa, 0x3f, 0xd7, 0xac, 0xbf, 0x34, 0x30, 0xd4, 0x47, 0xae, 0x05,
-	0x76, 0x49, 0xc2, 0x24, 0x45, 0xdf, 0x42, 0x6b, 0x29, 0xb1, 0xd4, 0xd4, 0x24, 0x9f, 0xcf, 0x36,
-	0xf9, 0x14, 0xa6, 0x19, 0x90, 0x66, 0x8c, 0x32, 0x2f, 0xc1, 0xa8, 0xac, 0xf8, 0x2f, 0x46, 0x7a,
-	0x99, 0xd1, 0xdf, 0x1a, 0x3c, 0x52, 0xce, 0x6e, 0x74, 0xc3, 0x92, 0xa5, 0x6c, 0x5b, 0x34, 0x80,
-	0xb6, 0xe8, 0x6d, 0xd9, 0x0c, 0x22, 0x4c, 0x77, 0xf0, 0x7e, 0x75, 0x8d, 0xf0, 0xbd, 0x1d, 0xfa,
-	0xae, 0x48, 0x43, 0x97, 0x69, 0x3c, 0xdd, 0x74, 0x29, 0xc5, 0xff, 0x1f, 0xf2, 0xf8, 0x47, 0x83,
-	0x76, 0xde, 0x97, 0xe8, 0xeb, 0x8d, 0x87, 0xf1, 0x24, 0xe7, 0x51, 0xee, 0xdb, 0x0d, 0x21, 0x7b,
-	0x12, 0x45, 0x3b, 0xea, 0xb2, 0x1d, 0x4f, 0xa1, 0x1d, 0x27, 0xf4, 0x26, 0x7c, 0x4d, 0x53, 0xb3,
-	0x26, 0x53, 0xfa, 0x64, 0x3b, 0x54, 0xff, 0x32, 0x33, 0x50, 0xa9, 0xdc, 0xdb, 0x1f, 0x5c, 0xc1,
-	0xde, 0x86, 0xaa, 0x22, 0x99, 0x7e, 0x39, 0x99, 0xee, 0xc0, 0x7c, 0xdb, 0xad, 0x97, 0xd3, 0xfc,
-	0x53, 0x83, 0x4e, 0xfe, 0xed, 0xc1, 0xbb, 0xe7, 0xa9, 0x9e, 0xdd, 0x73, 0x00, 0xf9, 0x84, 0x67,
-	0xd9, 0xe3, 0x17, 0x99, 0x7e, 0xf0, 0xd6, 0xcb, 0xc3, 0x1d, 0x69, 0x2c, 0x6e, 0xdf, 0xfa, 0x43,
-	0x83, 0xde, 0x70, 0x41, 0x92, 0x65, 0x31, 0x1f, 0xa2, 0x6d, 0x04, 0x3d, 0x82, 0x3d, 0x7b, 0x3c,
-	0x1a, 0x5d, 0x79, 0xae, 0x3d, 0x9c, 0xba, 0x63, 0xcf, 0xd8, 0x41, 0xfb, 0xd0, 0x75, 0xbc, 0x6b,
-	0x17, 0x8f, 0xbd, 0x91, 0xe3, 0x4d, 0x0d, 0x0d, 0xed, 0x41, 0xc7, 0xf9, 0xf9, 0xca, 0xbd, 0x94,
-	0xa2, 0x8e, 0xba, 0xd0, 0x9a, 0x38, 0xf8, 0xda, 0xb5, 0x1d, 0xa3, 0x86, 0x7a, 0x00, 0x97, 0x78,
-	0x6c, 0x3b, 0x93, 0x89, 0xeb, 0xfd, 0x60, 0xd4, 0xd1, 0x2e, 0xb4, 0x27, 0x8e, 0x7d, 0x85, 0xdd,
-	0xe9, 0xaf, 0x46, 0xc3, 0x7a, 0x09, 0xa8, 0xf8, 0x9e, 0x4d, 0x38, 0x9d, 0xb3, 0x64, 0x6d, 0x0d,
-	0xab, 0x50, 0x31, 0x60, 0x2f, 0xe5, 0xf7, 0x5b, 0x50, 0x1b, 0x5f, 0x88, 0xef, 0x8a, 0x83, 0xfc,
-	0xa2, 0x3c, 0x5c, 0x19, 0x35, 0x71, 0xf0, 0x3c, 0xd7, 0xa8, 0x5b, 0x67, 0xb0, 0x5f, 0x84, 0x98,
-	0x70, 0xc2, 0xa9, 0xf5, 0xec, 0x01, 0x24, 0xc6, 0x33, 0x1e, 0xba, 0x13, 0xe7, 0xdc, 0xd8, 0x11,
-	0xac, 0xed, 0x0b, 0x67, 0x88, 0x9d, 0x73, 0x43, 0xb3, 0xa2, 0x32, 0x83, 0x09, 0x5d, 0xd1, 0x24,
-	0xe4, 0x6b, 0xeb, 0x97, 0x2a, 0x54, 0x54, 0xc8, 0xf5, 0xce, 0x9d, 0xa9, 0x83, 0x47, 0xae, 0x37,
-	0x9c, 0x3a, 0x2a, 0xd6, 0xcb, 0x21, 0xf6, 0x44, 0xc6, 0x9a, 0x98, 0xb1, 0x23, 0xd7, 0x1b, 0x63,
-	0x43, 0x97, 0xc7, 0xe1, 0x8f, 0x63, 0x6c, 0xd4, 0x44, 0x1d, 0x6c, 0xec, 0x4e, 0x5d, 0x7b, 0x78,
-	0x61, 0xd4, 0xad, 0x37, 0x0d, 0x80, 0x22, 0xb4, 0xb8, 0xe3, 0x30, 0xc8, 0xba, 0x4d, 0x0f, 0x03,
-	0xf4, 0x22, 0x6b, 0x15, 0x5d, 0xb6, 0xca, 0xfd, 0x84, 0xd9, 0xbc, 0xaa, 0x2d, 0x31, 0x6b, 0x17,
-	0x17, 0xda, 0x7e, 0x56, 0x41, 0x39, 0x8c, 0x7b, 0x83, 0xe3, 0x87, 0xee, 0x79, 0x8d, 0x2b, 0x20,
-	0x7c, 0xef, 0x8e, 0xce, 0xa0, 0x91, 0x8a, 0xb2, 0xc9, 0x81, 0x5d, 0x5a, 0x59, 0x5b, 0x55, 0xdd,
-	0x96, 0xb1, 0xf2, 0x12, 0x4c, 0xd2, 0xac, 0x66, 0x72, 0xaa, 0x57, 0x32, 0xc9, 0xab, 0x5a, 0x01,
-	0xe1, 0x7b, 0x77, 0xb1, 0x21, 0x12, 0x12, 0xa6, 0x34, 0x98, 0xf1, 0xd4, 0x6c, 0xca, 0x27, 0xdf,
-	0x56, 0xc0, 0x34, 0x45, 0x8f, 0xa1, 0x9b, 0xd0, 0x98, 0x25, 0x5c, 0xa9, 0x5b, 0x52, 0x0d, 0x39,
-	0x34, 0x4d, 0xd1, 0xc7, 0x00, 0xfe, 0x2d, 0x89, 0xe6, 0x4a, 0xdf, 0x96, 0xfa, 0x4e, 0x86, 0xe4,
-	0xfe, 0x29, 0xbb, 0x4b, 0xd4, 0x02, 0xea, 0xc8, 0x5b, 0x80, 0x1c, 0x72, 0x03, 0x74, 0x08, 0xdd,
-	0x80, 0xa6, 0x7e, 0x12, 0xc6, 0xe2, 0x45, 0x99, 0x20, 0x0d, 0xca, 0x10, 0x7a, 0x51, 0x2c, 0xa9,
-	0xae, 0x7c, 0x90, 0x8f, 0x1f, 0x66, 0x5a, 0xbd, 0xa0, 0xaa, 0xb7, 0xe8, 0x6e, 0xf5, 0x16, 0x7d,
-	0x0a, 0xfb, 0x44, 0xc4, 0x9b, 0x89, 0x9b, 0x9e, 0x45, 0x64, 0x49, 0xcd, 0x3d, 0x69, 0xb9, 0x27,
-	0x61, 0xd1, 0x05, 0x1e, 0x59, 0xd2, 0x77, 0x59, 0x7a, 0xdf, 0x1f, 0xff, 0xf6, 0xc5, 0x3c, 0xe4,
-	0xb7, 0x77, 0xaf, 0xfa, 0x3e, 0x5b, 0x9e, 0xb0, 0x98, 0x46, 0x3e, 0x4b, 0x82, 0x13, 0x95, 0xce,
-	0x71, 0xf6, 0x2b, 0x35, 0x67, 0x19, 0xf0, 0xaa, 0x29, 0x91, 0xaf, 0xfe, 0x0d, 0x00, 0x00, 0xff,
-	0xff, 0xba, 0xd4, 0xc8, 0xc8, 0x90, 0x09, 0x00, 0x00,
+	// 1350 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0xdb, 0x6e, 0xdb, 0x46,
+	0x13, 0x16, 0xa9, 0x83, 0xa5, 0xa1, 0x6c, 0xd3, 0x9b, 0x1f, 0x3f, 0xf4, 0x3b, 0x7f, 0x1b, 0x87,
+	0x45, 0xd3, 0x34, 0x41, 0x2c, 0x54, 0x45, 0x01, 0xc7, 0x45, 0x90, 0x2a, 0x32, 0x1b, 0xb3, 0xb1,
+	0x28, 0x77, 0x25, 0x3b, 0x3d, 0x5c, 0x08, 0x6b, 0x71, 0x23, 0x13, 0x96, 0x48, 0x81, 0x5c, 0x0b,
+	0xf1, 0x4d, 0xd1, 0x07, 0x28, 0xd0, 0xcb, 0x5c, 0xf4, 0x5d, 0x7a, 0xd7, 0x37, 0xe9, 0x23, 0xf4,
+	0x01, 0x8a, 0x3d, 0x48, 0x3c, 0x48, 0x41, 0x51, 0x04, 0xb9, 0xdb, 0xfd, 0x76, 0x66, 0xf8, 0xcd,
+	0xec, 0xec, 0xb7, 0x4b, 0xd8, 0x9d, 0x87, 0x13, 0x76, 0x49, 0x86, 0xb3, 0x28, 0x64, 0x61, 0xdc,
+	0xa4, 0x73, 0x1a, 0xb0, 0x78, 0x5f, 0xcc, 0x50, 0x45, 0xae, 0xed, 0x36, 0xb2, 0x36, 0x53, 0xca,
+	0x88, 0xb4, 0xd8, 0xfd, 0xff, 0x38, 0x0c, 0xc7, 0x13, 0xda, 0x24, 0x33, 0xbf, 0x49, 0x82, 0x20,
+	0x64, 0x84, 0xf9, 0x61, 0xa0, 0xfc, 0x2d, 0x1b, 0xb6, 0x3b, 0x61, 0xf0, 0xca, 0x1f, 0xdb, 0x3c,
+	0xea, 0xe0, 0x66, 0x46, 0xad, 0xd6, 0x0a, 0x84, 0x36, 0xa0, 0x48, 0x3c, 0xcf, 0x2c, 0x20, 0x80,
+	0x4a, 0x44, 0xa7, 0xe1, 0x9c, 0x9a, 0x1a, 0x1f, 0x5f, 0xcf, 0x3c, 0xc2, 0xa8, 0xa9, 0x5b, 0x11,
+	0x18, 0x29, 0x1f, 0xf4, 0x25, 0x94, 0xd8, 0xcd, 0x8c, 0x36, 0xb4, 0x3d, 0xed, 0xfe, 0x56, 0xeb,
+	0x93, 0x7d, 0x49, 0x6e, 0x3f, 0x17, 0x36, 0x3f, 0xc7, 0xc2, 0x09, 0x21, 0x28, 0x5d, 0x92, 0xf8,
+	0xb2, 0xa1, 0xef, 0x69, 0xf7, 0x6b, 0x58, 0x8c, 0x39, 0xe6, 0x11, 0x46, 0x1a, 0x45, 0x89, 0xf1,
+	0xb1, 0xf5, 0x19, 0xd4, 0x5f, 0xcc, 0xfc, 0x84, 0xf7, 0xdd, 0xec, 0x1c, 0xd5, 0xa0, 0x1c, 0x4f,
+	0xfc, 0x11, 0x35, 0x0b, 0xa8, 0x02, 0x3a, 0x8b, 0x4d, 0xcd, 0x7a, 0xa3, 0xc3, 0x56, 0x97, 0xb2,
+	0xc8, 0x1f, 0x75, 0x29, 0x23, 0x47, 0x84, 0x11, 0xf4, 0x1f, 0x28, 0x33, 0x9f, 0x4d, 0x24, 0xd7,
+	0x1a, 0x96, 0x13, 0xb4, 0xc5, 0x1d, 0x04, 0x03, 0x0d, 0xeb, 0x2c, 0x46, 0x0f, 0x60, 0x67, 0x12,
+	0x8e, 0xfd, 0x11, 0x99, 0x0c, 0x3d, 0x3a, 0xf7, 0x47, 0x74, 0xe8, 0x7b, 0x8a, 0xcc, 0xb6, 0x5a,
+	0x38, 0x12, 0xb8, 0xe3, 0xa1, 0xdb, 0x50, 0x8b, 0x69, 0xe4, 0x93, 0xc9, 0x30, 0x08, 0x1b, 0x25,
+	0x61, 0x53, 0x95, 0x80, 0x1b, 0xf2, 0xc5, 0x24, 0x40, 0x59, 0x2e, 0x7a, 0x0b, 0xcf, 0x27, 0xb0,
+	0x31, 0x0a, 0x03, 0x46, 0x5f, 0xb3, 0x46, 0x65, 0xaf, 0x78, 0xdf, 0x68, 0x7d, 0xb4, 0xa8, 0x5c,
+	0x96, 0x34, 0x2f, 0x1c, 0xb7, 0xb2, 0x03, 0x16, 0xdd, 0xe0, 0x85, 0xcf, 0xee, 0x21, 0xd4, 0xd3,
+	0x0b, 0xc8, 0x84, 0xe2, 0x15, 0xbd, 0x51, 0x89, 0xf1, 0x21, 0x4f, 0x76, 0x4e, 0x26, 0xd7, 0x54,
+	0xd5, 0x56, 0x4e, 0x0e, 0xf5, 0x03, 0xcd, 0xfa, 0x55, 0x03, 0x53, 0x7e, 0xe4, 0x9c, 0x63, 0xa7,
+	0xc4, 0x8f, 0x62, 0xf4, 0x14, 0x36, 0xa6, 0x02, 0x8b, 0x1b, 0x9a, 0xe0, 0xf3, 0x71, 0x96, 0x4f,
+	0x62, 0xaa, 0x80, 0x58, 0x31, 0x52, 0x5e, 0x9c, 0x51, 0x7a, 0xe1, 0x9f, 0x18, 0xe9, 0x69, 0x46,
+	0x7f, 0x68, 0xb0, 0x23, 0x9d, 0x9d, 0xe0, 0x55, 0x18, 0x4d, 0x45, 0xdb, 0xa2, 0x16, 0x54, 0x79,
+	0x6f, 0x8b, 0x66, 0xe0, 0x61, 0x8c, 0xd6, 0x7f, 0xd7, 0xd7, 0x08, 0x2f, 0xed, 0xd0, 0x57, 0x49,
+	0x1a, 0xba, 0x48, 0xe3, 0x5e, 0xd6, 0x25, 0x15, 0xff, 0x3d, 0xe4, 0xf1, 0xa7, 0x06, 0xd5, 0x45,
+	0x5f, 0xa2, 0x2f, 0x32, 0x07, 0xe3, 0xee, 0x82, 0x47, 0xba, 0x6f, 0x33, 0x13, 0x75, 0x24, 0x92,
+	0x76, 0xd4, 0x45, 0x3b, 0x1e, 0x42, 0x75, 0x16, 0xd1, 0x57, 0xfe, 0x6b, 0x1a, 0x37, 0x8a, 0x22,
+	0xa5, 0x0f, 0xf3, 0xa1, 0xf6, 0x4f, 0x95, 0x81, 0x4c, 0x65, 0x69, 0xbf, 0x7b, 0x06, 0x9b, 0x99,
+	0xa5, 0x35, 0xc9, 0xec, 0xa7, 0x93, 0x31, 0x5a, 0x8d, 0xb7, 0xed, 0x7a, 0x3a, 0xcd, 0x5f, 0x34,
+	0xa8, 0x2d, 0xbe, 0xdd, 0x7a, 0xf7, 0x3c, 0xe5, 0xb1, 0x3b, 0x00, 0x10, 0x47, 0x78, 0xa8, 0x0e,
+	0x3f, 0xcf, 0xf4, 0x7f, 0x6f, 0xdd, 0x3c, 0x5c, 0x13, 0xc6, 0x7c, 0xf7, 0xad, 0x9f, 0x35, 0xd8,
+	0x6a, 0x4f, 0x48, 0x34, 0x4d, 0xf4, 0x21, 0xc8, 0x23, 0x68, 0x07, 0x36, 0x3b, 0xbd, 0x6e, 0xf7,
+	0xcc, 0x75, 0x3a, 0xed, 0x81, 0xd3, 0x73, 0xcd, 0x02, 0xda, 0x06, 0xc3, 0x76, 0xcf, 0x1d, 0xdc,
+	0x73, 0xbb, 0xb6, 0x3b, 0x30, 0x35, 0xb4, 0x09, 0x35, 0xfb, 0xdb, 0x33, 0xe7, 0x54, 0x4c, 0x75,
+	0x64, 0xc0, 0x46, 0xdf, 0xc6, 0xe7, 0x4e, 0xc7, 0x36, 0x8b, 0x68, 0x0b, 0xe0, 0x14, 0xf7, 0x3a,
+	0x76, 0xbf, 0xef, 0xb8, 0xcf, 0xcd, 0x12, 0xaa, 0x43, 0xb5, 0x6f, 0x77, 0xce, 0xb0, 0x33, 0xf8,
+	0xde, 0x2c, 0x5b, 0x2f, 0x01, 0x25, 0xdf, 0xeb, 0x10, 0x46, 0xc7, 0x61, 0x74, 0x63, 0xb5, 0xd7,
+	0xa1, 0x5c, 0x60, 0x4f, 0xc5, 0xf7, 0x37, 0xa0, 0xd8, 0x3b, 0xe1, 0xdf, 0xe5, 0x03, 0xf1, 0x45,
+	0x31, 0x38, 0x33, 0x8b, 0x7c, 0xe0, 0xba, 0x8e, 0x59, 0xb2, 0x9e, 0xc0, 0x76, 0x12, 0xa2, 0xcf,
+	0x08, 0xa3, 0xd6, 0x83, 0x15, 0x88, 0xcb, 0x33, 0x6e, 0x3b, 0x7d, 0xfb, 0xc8, 0x2c, 0x70, 0xd6,
+	0x9d, 0x13, 0xbb, 0x8d, 0xed, 0x23, 0x53, 0xb3, 0x82, 0x34, 0x83, 0x3e, 0x9d, 0xd3, 0xc8, 0x67,
+	0x37, 0xd6, 0x77, 0xeb, 0x50, 0x5e, 0x21, 0xc7, 0x3d, 0xb2, 0x07, 0x36, 0xee, 0x3a, 0x6e, 0x7b,
+	0x60, 0xcb, 0x58, 0x2f, 0xdb, 0xd8, 0xe5, 0x19, 0x6b, 0x5c, 0x63, 0xbb, 0x8e, 0xdb, 0xc3, 0xa6,
+	0x2e, 0x86, 0xed, 0x6f, 0x7a, 0xd8, 0x2c, 0xf2, 0x3a, 0x74, 0xb0, 0x33, 0x70, 0x3a, 0xed, 0x13,
+	0xb3, 0x64, 0xbd, 0x29, 0x03, 0x24, 0xa1, 0xf9, 0x1e, 0xfb, 0x9e, 0xea, 0x36, 0xdd, 0xf7, 0xd0,
+	0x63, 0xd5, 0x2a, 0xba, 0x68, 0x95, 0xa5, 0xc2, 0x64, 0xb7, 0x2a, 0x37, 0x55, 0xed, 0xe2, 0x40,
+	0x75, 0xa4, 0x2a, 0x28, 0xc4, 0x78, 0xab, 0xf5, 0x68, 0xd5, 0x7d, 0x51, 0xe3, 0x35, 0x10, 0x5e,
+	0xba, 0xa3, 0x27, 0x50, 0x8e, 0x79, 0xd9, 0x84, 0x60, 0xa7, 0xae, 0xac, 0x5c, 0x55, 0xf3, 0x73,
+	0x2c, 0xbd, 0x38, 0x93, 0x58, 0xd5, 0x4c, 0xa8, 0xfa, 0x5a, 0x26, 0x8b, 0xaa, 0xae, 0x81, 0xf0,
+	0xd2, 0x9d, 0xdf, 0x10, 0x11, 0xf1, 0x63, 0xea, 0x0d, 0x59, 0xdc, 0xa8, 0x88, 0x23, 0x5f, 0x95,
+	0xc0, 0x20, 0x46, 0x77, 0xc0, 0x88, 0xe8, 0x2c, 0x8c, 0x98, 0x5c, 0xde, 0x10, 0xcb, 0xb0, 0x80,
+	0x06, 0x31, 0xfa, 0x00, 0x60, 0x74, 0x49, 0x82, 0xb1, 0x5c, 0xaf, 0x8a, 0xf5, 0x9a, 0x42, 0x16,
+	0xfe, 0x71, 0x78, 0x1d, 0xc9, 0x0b, 0xa8, 0x26, 0x76, 0x01, 0x16, 0x90, 0xe3, 0xa1, 0x3d, 0x30,
+	0x3c, 0x1a, 0x8f, 0x22, 0x7f, 0xc6, 0x4f, 0x54, 0x03, 0x84, 0x41, 0x1a, 0x42, 0x8f, 0x93, 0x4b,
+	0xca, 0x10, 0x07, 0xf2, 0xce, 0x6a, 0xa6, 0xeb, 0x2f, 0xa8, 0xf5, 0xb7, 0x68, 0x7d, 0xfd, 0x2d,
+	0x7a, 0x0f, 0xb6, 0x09, 0x8f, 0x37, 0xe4, 0x3b, 0x3d, 0x0c, 0xc8, 0x94, 0x36, 0x36, 0x85, 0xe5,
+	0xa6, 0x80, 0x79, 0x17, 0xb8, 0x64, 0x4a, 0xdf, 0xe9, 0xd2, 0xfb, 0x4b, 0x03, 0x43, 0x7e, 0x50,
+	0xb6, 0x66, 0xae, 0x3a, 0xda, 0x4a, 0x75, 0x1e, 0xc0, 0x8e, 0x22, 0x2e, 0x1e, 0x61, 0x92, 0x96,
+	0x0c, 0xbb, 0xed, 0x25, 0x81, 0x38, 0xb1, 0x7c, 0x25, 0x8b, 0xab, 0x95, 0x3c, 0x4c, 0x2a, 0x59,
+	0x12, 0x95, 0xdc, 0x5b, 0x54, 0x32, 0x45, 0xea, 0x3d, 0xdc, 0xf5, 0x3f, 0xc1, 0x66, 0x56, 0x93,
+	0xa6, 0x39, 0xe0, 0x3d, 0x0b, 0x63, 0x1f, 0x4c, 0xd9, 0xfc, 0xd7, 0x17, 0x4b, 0x0a, 0x4f, 0x57,
+	0xb1, 0x7f, 0x27, 0x8a, 0x3f, 0x42, 0x2d, 0x91, 0x7a, 0x37, 0x35, 0x41, 0x26, 0xd4, 0x3b, 0x3d,
+	0xf7, 0x6b, 0xe7, 0xf9, 0xd0, 0x3e, 0xe7, 0x5c, 0x0b, 0x9c, 0xfa, 0x8b, 0x53, 0x47, 0x4d, 0x35,
+	0xce, 0x76, 0x39, 0x6d, 0x99, 0x3a, 0x77, 0x38, 0xb2, 0x79, 0x26, 0xca, 0xa2, 0x68, 0xfd, 0xae,
+	0x83, 0x21, 0x02, 0x1e, 0x53, 0xe2, 0xd1, 0x68, 0x45, 0xc3, 0x9e, 0xa6, 0x84, 0x48, 0xea, 0xd8,
+	0xf2, 0xe5, 0x96, 0xd5, 0xa0, 0xb7, 0xc9, 0xcf, 0x09, 0xd4, 0xe3, 0xeb, 0x8b, 0x61, 0x4e, 0xcd,
+	0x3e, 0xcd, 0x04, 0x49, 0x95, 0x66, 0x05, 0xc0, 0x46, 0x9c, 0x2a, 0x5c, 0x53, 0x49, 0xaa, 0xd4,
+	0xb2, 0xdb, 0x99, 0x28, 0x42, 0x4d, 0xf3, 0x42, 0x7a, 0x17, 0xea, 0xe2, 0x98, 0xcd, 0x69, 0x14,
+	0xf3, 0x66, 0x95, 0x0f, 0x53, 0x83, 0x63, 0xe7, 0x12, 0x7a, 0x37, 0x59, 0xb2, 0x7e, 0xd3, 0xa1,
+	0x2c, 0xcf, 0xd8, 0x43, 0xa8, 0x5c, 0x8a, 0x22, 0xaa, 0xe7, 0xdb, 0xad, 0x0c, 0x3b, 0x59, 0x5f,
+	0xac, 0x4c, 0xd0, 0x01, 0xd4, 0x47, 0xe2, 0x1f, 0x41, 0x9e, 0x37, 0xf5, 0x1e, 0xb9, 0xb5, 0xe6,
+	0x7f, 0xe2, 0xb8, 0x80, 0x8d, 0x51, 0xea, 0x0f, 0xa4, 0x09, 0xb5, 0xab, 0x99, 0xaf, 0xdc, 0x8a,
+	0xc2, 0xcd, 0xcc, 0xbf, 0x42, 0x8e, 0x0b, 0xb8, 0x7a, 0xb5, 0x78, 0x99, 0xb5, 0x00, 0x96, 0x0e,
+	0x2d, 0x51, 0x39, 0xa3, 0xb5, 0x93, 0xf7, 0x68, 0x1d, 0x17, 0x70, 0xed, 0x6a, 0xf9, 0xca, 0x39,
+	0x80, 0x7a, 0x5a, 0x0e, 0x44, 0xd9, 0x52, 0xf4, 0x52, 0xa7, 0x98, 0xd3, 0x4b, 0x09, 0xc4, 0xb3,
+	0x3a, 0x80, 0x54, 0x10, 0x5e, 0xe2, 0x67, 0x8f, 0x7e, 0x78, 0x38, 0xf6, 0xd9, 0xe5, 0xf5, 0xc5,
+	0xfe, 0x28, 0x9c, 0x36, 0xc3, 0x19, 0x0d, 0x46, 0x61, 0xe4, 0x35, 0x65, 0x98, 0x47, 0xea, 0x97,
+	0x6e, 0x1c, 0x2a, 0xe0, 0xa2, 0x22, 0x90, 0xcf, 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xa8, 0xa0,
+	0xf6, 0xcb, 0x18, 0x0e, 0x00, 0x00,
 }
diff --git a/vendor/github.com/opencord/voltha-protos/protos/voltha_protos/events.proto b/vendor/github.com/opencord/voltha-protos/protos/voltha_protos/events.proto
index 0a2c0e4..6c93a02 100644
--- a/vendor/github.com/opencord/voltha-protos/protos/voltha_protos/events.proto
+++ b/vendor/github.com/opencord/voltha-protos/protos/voltha_protos/events.proto
@@ -102,6 +102,8 @@
 
 /*
  * Identify to the area of the system impacted by the alarm
+ * To be deprecated once python version of OpenOLT adapter
+ * moves to the new event defination for device alarms
  */
 message AlarmEventType {
     enum AlarmEventType {
@@ -116,6 +118,9 @@
 
 /*
  * Identify to the functional category originating the alarm
+ * To be deprecated once python version of OpenOLT adapter
+ * as well as OpenONU adapter moves to the new event
+ * defination for device alarms
  */
 message AlarmEventCategory {
     enum AlarmEventCategory {
@@ -129,6 +134,9 @@
 
 /*
  * Active state of the alarm
+ * To be deprecated once python version of OpenOLT adapter
+ * as well as OpenONU adapter moves to the new event
+ * defination for device alarms
  */
 message AlarmEventState {
     enum AlarmEventState {
@@ -139,6 +147,9 @@
 
 /*
  * Identify the overall impact of the alarm on the system
+ * To be deprecated once python version of OpenOLT adapter
+ * as well as OpenONU adapter moves to the new event
+ * defination for device alarms
  */
 message AlarmEventSeverity {
     enum AlarmEventSeverity {
@@ -151,7 +162,9 @@
 }
 
 /*
- *
+ * To be deprecated once python version of OpenOLT adapter
+ * as well as OpenONU adapter moves to the new event
+ * defination for device alarms
  */
 message AlarmEvent {
     // Unique ID for this alarm.  e.g. voltha.some_olt.1234
@@ -193,3 +206,128 @@
     // alarm_type  name indicates clearly the name of the alarm
     string alarm_type_name = 13;
 }
+/*
+ * Describes the events specific to device
+ */
+message DeviceEvent {
+    // Identifier of the originating resource of the event, for ex: device_id
+    string resource_id = 1;
+
+    // device_event_name indicates clearly the name of the device event
+    string device_event_name = 2;
+
+    // Textual explanation of the device event
+    string description = 3;
+
+    // Key/Value storage for extra information that may give context to the event
+    map<string, string> context = 4;
+
+}
+
+/*
+ * Identify the area of the system impacted by the event.
+ */
+message EventCategory {
+    enum EventCategory {
+        COMMUNICATION = 0;
+        ENVIRONMENT = 1;
+        EQUIPMENT = 2;
+        SERVICE = 3;
+        PROCESSING = 4;
+        SECURITY = 5;
+        // Add new event areas here
+    }
+}
+
+/*
+ * Identify the functional category originating the event
+ */
+message EventSubCategory {
+    enum EventSubCategory {
+        PON = 0;
+        OLT = 1;
+        ONT = 2;
+        ONU = 3;
+        NNI = 4;
+        // Add new event categories here.
+    }
+}
+
+/*
+ * Identify the type of event
+*/
+message EventType {
+   enum EventType {
+       CONFIG_EVENT = 0;
+       KPI_EVENT    = 1;
+       KPI_EVENT2   = 2;
+       DEVICE_EVENT = 3;
+
+   }
+}
+
+/*
+ * Identify the functional category originating the event
+ */
+message EventHeader {
+    // Unique ID for this event.  e.g. voltha.some_olt.1234
+    string id = 1;
+
+    // Refers to the functional area affect by the event
+    EventCategory.EventCategory category = 2;
+
+    // Refers to functional category of the event
+    EventSubCategory.EventSubCategory sub_category = 3;
+
+    // Refers to the type of the event
+    EventType.EventType type = 4;
+
+    // The version identifier for this event type, thus allowing each
+    // event type to evolve independently. The version should be in the
+    // format “MAJOR.MINOR” format and minor changes must only be additive
+    // and non-breaking.
+    string type_version = 5;
+
+    // Timestamp at which the event was first raised.
+    // This represents the UTC time stamp since epoch (in seconds) when the
+    // the event was first raised from the source entity.
+    // If the source entity doesn't send the raised_ts, this shall be set
+    // to timestamp when the event was received.
+    float raised_ts = 6;
+
+    // Timestamp at which the event was reported.
+    // This represents the UTC time stamp since epoch (in seconds) when the
+    // the event was reported (this time stamp is >= raised_ts).
+    // If the source entity that reported this event doesn't send the 
+    // reported_ts, this shall be set to the same value as raised_ts.
+    float reported_ts = 7;
+
+
+}
+
+/*
+ * Event Structure
+ */
+message Event {
+    // event header
+    EventHeader header = 1;
+
+    // oneof event types referred by EventType.
+    oneof event_type {
+        // Refers to ConfigEvent
+        ConfigEvent config_event = 2;
+
+        // Refers to KpiEvent
+        KpiEvent    kpi_event = 3;
+
+        // Refers to KpiEvent2
+        KpiEvent2   kpi_event2 = 4;
+
+        // Refers to DeviceEvent
+        DeviceEvent device_event = 5;
+
+        // Add other event types here.
+
+    }
+}
+
diff --git a/vendor/github.com/opencord/voltha-protos/protos/voltha_protos/inter_container.proto b/vendor/github.com/opencord/voltha-protos/protos/voltha_protos/inter_container.proto
index 8f33a85..28af2bf 100644
--- a/vendor/github.com/opencord/voltha-protos/protos/voltha_protos/inter_container.proto
+++ b/vendor/github.com/opencord/voltha-protos/protos/voltha_protos/inter_container.proto
@@ -2,6 +2,8 @@
 
 option go_package = "github.com/opencord/voltha-protos/go/inter_container";
 
+import public "voltha_protos/common.proto";
+import public "voltha_protos/voltha.proto";
 import "google/protobuf/any.proto";
 import "voltha_protos/openflow_13.proto";
 import public "voltha_protos/logical_device.proto";
@@ -115,6 +117,8 @@
 
 message InterAdapterOmciMessage {
     bytes message = 1; // OMCI_REQUEST or OMCI_RESPONSE
+    common.ConnectStatus.ConnectStatus connect_status = 2;
+    voltha.Device.ProxyAddress proxy_address = 3;
 }
 
 message InterAdapterTechProfileDownloadMessage {
diff --git a/vendor/github.com/opencord/voltha-protos/test/test-go-proto-consistency.sh b/vendor/github.com/opencord/voltha-protos/test/test-go-proto-consistency.sh
index 76ac7b1..9d238df 100755
--- a/vendor/github.com/opencord/voltha-protos/test/test-go-proto-consistency.sh
+++ b/vendor/github.com/opencord/voltha-protos/test/test-go-proto-consistency.sh
@@ -28,6 +28,7 @@
 
 if [ "$STAGED" == "staged" ] || [ "$UNTRACKED" != "" ]; then
     echo "Please commit or ignore local changes before executing this test"
+    git status
     exit 1
 fi
 
@@ -43,6 +44,7 @@
 if [ "$STAGED_POST" == "staged" ] || [ "$UNTRACKED_POST" != "" ] ; then
     echo "You have go proto build outputs that are not committed."
     echo "Check git status and commit updated files."
+    git status
     exit 1
 else
     echo "Test successful. All go proto build outputs are committed"