[VOL-2778] Handling IGMP

Change-Id: I54c26bc438a144c7d4c64a9b3d543461fc743ab2
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/common/common.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/common/common.pb.go
new file mode 100644
index 0000000..3975047
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/common/common.pb.go
@@ -0,0 +1,642 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: voltha_protos/common.proto
+
+package common
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+type TestModeKeys int32
+
+const (
+	TestModeKeys_api_test TestModeKeys = 0
+)
+
+var TestModeKeys_name = map[int32]string{
+	0: "api_test",
+}
+
+var TestModeKeys_value = map[string]int32{
+	"api_test": 0,
+}
+
+func (x TestModeKeys) String() string {
+	return proto.EnumName(TestModeKeys_name, int32(x))
+}
+
+func (TestModeKeys) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{0}
+}
+
+// Administrative State
+type AdminState_Types int32
+
+const (
+	// The administrative state of the device is unknown
+	AdminState_UNKNOWN AdminState_Types = 0
+	// The device is pre-provisioned into Voltha, but not contacted by it
+	AdminState_PREPROVISIONED AdminState_Types = 1
+	// The device is enabled for activation and operation
+	AdminState_ENABLED AdminState_Types = 2
+	// The device is disabled and shall not perform its intended forwarding
+	// functions other than being available for re-activation.
+	AdminState_DISABLED AdminState_Types = 3
+	// The device is in the state of image download
+	AdminState_DOWNLOADING_IMAGE AdminState_Types = 4
+	// The device is marked to be deleted
+	AdminState_DELETED AdminState_Types = 5
+)
+
+var AdminState_Types_name = map[int32]string{
+	0: "UNKNOWN",
+	1: "PREPROVISIONED",
+	2: "ENABLED",
+	3: "DISABLED",
+	4: "DOWNLOADING_IMAGE",
+	5: "DELETED",
+}
+
+var AdminState_Types_value = map[string]int32{
+	"UNKNOWN":           0,
+	"PREPROVISIONED":    1,
+	"ENABLED":           2,
+	"DISABLED":          3,
+	"DOWNLOADING_IMAGE": 4,
+	"DELETED":           5,
+}
+
+func (x AdminState_Types) String() string {
+	return proto.EnumName(AdminState_Types_name, int32(x))
+}
+
+func (AdminState_Types) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{2, 0}
+}
+
+// Operational Status
+type OperStatus_Types int32
+
+const (
+	// The status of the device is unknown at this point
+	OperStatus_UNKNOWN OperStatus_Types = 0
+	// The device has been discovered, but not yet activated
+	OperStatus_DISCOVERED OperStatus_Types = 1
+	// The device is being activated (booted, rebooted, upgraded, etc.)
+	OperStatus_ACTIVATING OperStatus_Types = 2
+	// Service impacting tests are being conducted
+	OperStatus_TESTING OperStatus_Types = 3
+	// The device is up and active
+	OperStatus_ACTIVE OperStatus_Types = 4
+	// The device has failed and cannot fulfill its intended role
+	OperStatus_FAILED OperStatus_Types = 5
+)
+
+var OperStatus_Types_name = map[int32]string{
+	0: "UNKNOWN",
+	1: "DISCOVERED",
+	2: "ACTIVATING",
+	3: "TESTING",
+	4: "ACTIVE",
+	5: "FAILED",
+}
+
+var OperStatus_Types_value = map[string]int32{
+	"UNKNOWN":    0,
+	"DISCOVERED": 1,
+	"ACTIVATING": 2,
+	"TESTING":    3,
+	"ACTIVE":     4,
+	"FAILED":     5,
+}
+
+func (x OperStatus_Types) String() string {
+	return proto.EnumName(OperStatus_Types_name, int32(x))
+}
+
+func (OperStatus_Types) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{3, 0}
+}
+
+// Connectivity Status
+type ConnectStatus_Types int32
+
+const (
+	// The device connectivity status is unknown
+	ConnectStatus_UNKNOWN ConnectStatus_Types = 0
+	// The device cannot be reached by Voltha
+	ConnectStatus_UNREACHABLE ConnectStatus_Types = 1
+	// There is live communication between device and Voltha
+	ConnectStatus_REACHABLE ConnectStatus_Types = 2
+)
+
+var ConnectStatus_Types_name = map[int32]string{
+	0: "UNKNOWN",
+	1: "UNREACHABLE",
+	2: "REACHABLE",
+}
+
+var ConnectStatus_Types_value = map[string]int32{
+	"UNKNOWN":     0,
+	"UNREACHABLE": 1,
+	"REACHABLE":   2,
+}
+
+func (x ConnectStatus_Types) String() string {
+	return proto.EnumName(ConnectStatus_Types_name, int32(x))
+}
+
+func (ConnectStatus_Types) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{4, 0}
+}
+
+type OperationResp_OperationReturnCode int32
+
+const (
+	OperationResp_OPERATION_SUCCESS     OperationResp_OperationReturnCode = 0
+	OperationResp_OPERATION_FAILURE     OperationResp_OperationReturnCode = 1
+	OperationResp_OPERATION_UNSUPPORTED OperationResp_OperationReturnCode = 2
+)
+
+var OperationResp_OperationReturnCode_name = map[int32]string{
+	0: "OPERATION_SUCCESS",
+	1: "OPERATION_FAILURE",
+	2: "OPERATION_UNSUPPORTED",
+}
+
+var OperationResp_OperationReturnCode_value = map[string]int32{
+	"OPERATION_SUCCESS":     0,
+	"OPERATION_FAILURE":     1,
+	"OPERATION_UNSUPPORTED": 2,
+}
+
+func (x OperationResp_OperationReturnCode) String() string {
+	return proto.EnumName(OperationResp_OperationReturnCode_name, int32(x))
+}
+
+func (OperationResp_OperationReturnCode) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{5, 0}
+}
+
+type ValueType_Type int32
+
+const (
+	ValueType_EMPTY    ValueType_Type = 0
+	ValueType_DISTANCE ValueType_Type = 1
+)
+
+var ValueType_Type_name = map[int32]string{
+	0: "EMPTY",
+	1: "DISTANCE",
+}
+
+var ValueType_Type_value = map[string]int32{
+	"EMPTY":    0,
+	"DISTANCE": 1,
+}
+
+func (x ValueType_Type) String() string {
+	return proto.EnumName(ValueType_Type_name, int32(x))
+}
+
+func (ValueType_Type) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{6, 0}
+}
+
+// Convey a resource identifier
+type ID struct {
+	Id                   string   `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ID) Reset()         { *m = ID{} }
+func (m *ID) String() string { return proto.CompactTextString(m) }
+func (*ID) ProtoMessage()    {}
+func (*ID) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{0}
+}
+
+func (m *ID) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ID.Unmarshal(m, b)
+}
+func (m *ID) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ID.Marshal(b, m, deterministic)
+}
+func (m *ID) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ID.Merge(m, src)
+}
+func (m *ID) XXX_Size() int {
+	return xxx_messageInfo_ID.Size(m)
+}
+func (m *ID) XXX_DiscardUnknown() {
+	xxx_messageInfo_ID.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ID proto.InternalMessageInfo
+
+func (m *ID) GetId() string {
+	if m != nil {
+		return m.Id
+	}
+	return ""
+}
+
+// Represents a list of IDs
+type IDs struct {
+	Items                []*ID    `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *IDs) Reset()         { *m = IDs{} }
+func (m *IDs) String() string { return proto.CompactTextString(m) }
+func (*IDs) ProtoMessage()    {}
+func (*IDs) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{1}
+}
+
+func (m *IDs) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_IDs.Unmarshal(m, b)
+}
+func (m *IDs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_IDs.Marshal(b, m, deterministic)
+}
+func (m *IDs) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_IDs.Merge(m, src)
+}
+func (m *IDs) XXX_Size() int {
+	return xxx_messageInfo_IDs.Size(m)
+}
+func (m *IDs) XXX_DiscardUnknown() {
+	xxx_messageInfo_IDs.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_IDs proto.InternalMessageInfo
+
+func (m *IDs) GetItems() []*ID {
+	if m != nil {
+		return m.Items
+	}
+	return nil
+}
+
+type AdminState struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *AdminState) Reset()         { *m = AdminState{} }
+func (m *AdminState) String() string { return proto.CompactTextString(m) }
+func (*AdminState) ProtoMessage()    {}
+func (*AdminState) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{2}
+}
+
+func (m *AdminState) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_AdminState.Unmarshal(m, b)
+}
+func (m *AdminState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_AdminState.Marshal(b, m, deterministic)
+}
+func (m *AdminState) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AdminState.Merge(m, src)
+}
+func (m *AdminState) XXX_Size() int {
+	return xxx_messageInfo_AdminState.Size(m)
+}
+func (m *AdminState) XXX_DiscardUnknown() {
+	xxx_messageInfo_AdminState.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AdminState proto.InternalMessageInfo
+
+type OperStatus struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *OperStatus) Reset()         { *m = OperStatus{} }
+func (m *OperStatus) String() string { return proto.CompactTextString(m) }
+func (*OperStatus) ProtoMessage()    {}
+func (*OperStatus) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{3}
+}
+
+func (m *OperStatus) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OperStatus.Unmarshal(m, b)
+}
+func (m *OperStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OperStatus.Marshal(b, m, deterministic)
+}
+func (m *OperStatus) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OperStatus.Merge(m, src)
+}
+func (m *OperStatus) XXX_Size() int {
+	return xxx_messageInfo_OperStatus.Size(m)
+}
+func (m *OperStatus) XXX_DiscardUnknown() {
+	xxx_messageInfo_OperStatus.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OperStatus proto.InternalMessageInfo
+
+type ConnectStatus struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ConnectStatus) Reset()         { *m = ConnectStatus{} }
+func (m *ConnectStatus) String() string { return proto.CompactTextString(m) }
+func (*ConnectStatus) ProtoMessage()    {}
+func (*ConnectStatus) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{4}
+}
+
+func (m *ConnectStatus) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ConnectStatus.Unmarshal(m, b)
+}
+func (m *ConnectStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ConnectStatus.Marshal(b, m, deterministic)
+}
+func (m *ConnectStatus) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ConnectStatus.Merge(m, src)
+}
+func (m *ConnectStatus) XXX_Size() int {
+	return xxx_messageInfo_ConnectStatus.Size(m)
+}
+func (m *ConnectStatus) XXX_DiscardUnknown() {
+	xxx_messageInfo_ConnectStatus.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ConnectStatus proto.InternalMessageInfo
+
+type OperationResp struct {
+	// Return code
+	Code OperationResp_OperationReturnCode `protobuf:"varint,1,opt,name=code,proto3,enum=common.OperationResp_OperationReturnCode" json:"code,omitempty"`
+	// Additional Info
+	AdditionalInfo       string   `protobuf:"bytes,2,opt,name=additional_info,json=additionalInfo,proto3" json:"additional_info,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *OperationResp) Reset()         { *m = OperationResp{} }
+func (m *OperationResp) String() string { return proto.CompactTextString(m) }
+func (*OperationResp) ProtoMessage()    {}
+func (*OperationResp) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{5}
+}
+
+func (m *OperationResp) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OperationResp.Unmarshal(m, b)
+}
+func (m *OperationResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OperationResp.Marshal(b, m, deterministic)
+}
+func (m *OperationResp) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OperationResp.Merge(m, src)
+}
+func (m *OperationResp) XXX_Size() int {
+	return xxx_messageInfo_OperationResp.Size(m)
+}
+func (m *OperationResp) XXX_DiscardUnknown() {
+	xxx_messageInfo_OperationResp.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OperationResp proto.InternalMessageInfo
+
+func (m *OperationResp) GetCode() OperationResp_OperationReturnCode {
+	if m != nil {
+		return m.Code
+	}
+	return OperationResp_OPERATION_SUCCESS
+}
+
+func (m *OperationResp) GetAdditionalInfo() string {
+	if m != nil {
+		return m.AdditionalInfo
+	}
+	return ""
+}
+
+type ValueType struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ValueType) Reset()         { *m = ValueType{} }
+func (m *ValueType) String() string { return proto.CompactTextString(m) }
+func (*ValueType) ProtoMessage()    {}
+func (*ValueType) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{6}
+}
+
+func (m *ValueType) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ValueType.Unmarshal(m, b)
+}
+func (m *ValueType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ValueType.Marshal(b, m, deterministic)
+}
+func (m *ValueType) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ValueType.Merge(m, src)
+}
+func (m *ValueType) XXX_Size() int {
+	return xxx_messageInfo_ValueType.Size(m)
+}
+func (m *ValueType) XXX_DiscardUnknown() {
+	xxx_messageInfo_ValueType.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ValueType proto.InternalMessageInfo
+
+type ValueSpecifier struct {
+	Id                   string         `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	Value                ValueType_Type `protobuf:"varint,2,opt,name=value,proto3,enum=common.ValueType_Type" json:"value,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
+	XXX_unrecognized     []byte         `json:"-"`
+	XXX_sizecache        int32          `json:"-"`
+}
+
+func (m *ValueSpecifier) Reset()         { *m = ValueSpecifier{} }
+func (m *ValueSpecifier) String() string { return proto.CompactTextString(m) }
+func (*ValueSpecifier) ProtoMessage()    {}
+func (*ValueSpecifier) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{7}
+}
+
+func (m *ValueSpecifier) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ValueSpecifier.Unmarshal(m, b)
+}
+func (m *ValueSpecifier) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ValueSpecifier.Marshal(b, m, deterministic)
+}
+func (m *ValueSpecifier) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ValueSpecifier.Merge(m, src)
+}
+func (m *ValueSpecifier) XXX_Size() int {
+	return xxx_messageInfo_ValueSpecifier.Size(m)
+}
+func (m *ValueSpecifier) XXX_DiscardUnknown() {
+	xxx_messageInfo_ValueSpecifier.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ValueSpecifier proto.InternalMessageInfo
+
+func (m *ValueSpecifier) GetId() string {
+	if m != nil {
+		return m.Id
+	}
+	return ""
+}
+
+func (m *ValueSpecifier) GetValue() ValueType_Type {
+	if m != nil {
+		return m.Value
+	}
+	return ValueType_EMPTY
+}
+
+type ReturnValues struct {
+	Set                  uint32   `protobuf:"varint,1,opt,name=Set,proto3" json:"Set,omitempty"`
+	Unsupported          uint32   `protobuf:"varint,2,opt,name=Unsupported,proto3" json:"Unsupported,omitempty"`
+	Error                uint32   `protobuf:"varint,3,opt,name=Error,proto3" json:"Error,omitempty"`
+	Distance             uint32   `protobuf:"varint,4,opt,name=Distance,proto3" json:"Distance,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ReturnValues) Reset()         { *m = ReturnValues{} }
+func (m *ReturnValues) String() string { return proto.CompactTextString(m) }
+func (*ReturnValues) ProtoMessage()    {}
+func (*ReturnValues) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{8}
+}
+
+func (m *ReturnValues) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ReturnValues.Unmarshal(m, b)
+}
+func (m *ReturnValues) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ReturnValues.Marshal(b, m, deterministic)
+}
+func (m *ReturnValues) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ReturnValues.Merge(m, src)
+}
+func (m *ReturnValues) XXX_Size() int {
+	return xxx_messageInfo_ReturnValues.Size(m)
+}
+func (m *ReturnValues) XXX_DiscardUnknown() {
+	xxx_messageInfo_ReturnValues.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ReturnValues proto.InternalMessageInfo
+
+func (m *ReturnValues) GetSet() uint32 {
+	if m != nil {
+		return m.Set
+	}
+	return 0
+}
+
+func (m *ReturnValues) GetUnsupported() uint32 {
+	if m != nil {
+		return m.Unsupported
+	}
+	return 0
+}
+
+func (m *ReturnValues) GetError() uint32 {
+	if m != nil {
+		return m.Error
+	}
+	return 0
+}
+
+func (m *ReturnValues) GetDistance() uint32 {
+	if m != nil {
+		return m.Distance
+	}
+	return 0
+}
+
+func init() {
+	proto.RegisterEnum("common.TestModeKeys", TestModeKeys_name, TestModeKeys_value)
+	proto.RegisterEnum("common.AdminState_Types", AdminState_Types_name, AdminState_Types_value)
+	proto.RegisterEnum("common.OperStatus_Types", OperStatus_Types_name, OperStatus_Types_value)
+	proto.RegisterEnum("common.ConnectStatus_Types", ConnectStatus_Types_name, ConnectStatus_Types_value)
+	proto.RegisterEnum("common.OperationResp_OperationReturnCode", OperationResp_OperationReturnCode_name, OperationResp_OperationReturnCode_value)
+	proto.RegisterEnum("common.ValueType_Type", ValueType_Type_name, ValueType_Type_value)
+	proto.RegisterType((*ID)(nil), "common.ID")
+	proto.RegisterType((*IDs)(nil), "common.IDs")
+	proto.RegisterType((*AdminState)(nil), "common.AdminState")
+	proto.RegisterType((*OperStatus)(nil), "common.OperStatus")
+	proto.RegisterType((*ConnectStatus)(nil), "common.ConnectStatus")
+	proto.RegisterType((*OperationResp)(nil), "common.OperationResp")
+	proto.RegisterType((*ValueType)(nil), "common.ValueType")
+	proto.RegisterType((*ValueSpecifier)(nil), "common.ValueSpecifier")
+	proto.RegisterType((*ReturnValues)(nil), "common.ReturnValues")
+}
+
+func init() { proto.RegisterFile("voltha_protos/common.proto", fileDescriptor_c2e3fd231961e826) }
+
+var fileDescriptor_c2e3fd231961e826 = []byte{
+	// 606 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x53, 0x4d, 0x4f, 0xdb, 0x4a,
+	0x14, 0x8d, 0x9d, 0x8f, 0x47, 0x6e, 0x88, 0xf1, 0x1b, 0xe0, 0x29, 0x0f, 0x55, 0x6a, 0xe4, 0x0d,
+	0xb4, 0xa2, 0x89, 0x04, 0xdd, 0x76, 0x61, 0xec, 0x29, 0x1d, 0x11, 0xc6, 0xd1, 0xd8, 0x0e, 0xa2,
+	0x8b, 0x46, 0x26, 0x1e, 0x82, 0x25, 0xe2, 0xb1, 0xec, 0x09, 0x12, 0xbf, 0xb4, 0x7f, 0xa7, 0x9a,
+	0x71, 0xf8, 0xaa, 0xd8, 0x24, 0x3e, 0xf7, 0xdc, 0xb9, 0xc7, 0xe7, 0x8c, 0x2f, 0x1c, 0x3c, 0x88,
+	0x7b, 0x79, 0x97, 0xcc, 0x8b, 0x52, 0x48, 0x51, 0x8d, 0x17, 0x62, 0xb5, 0x12, 0xf9, 0x48, 0x23,
+	0xd4, 0xa9, 0x91, 0xb3, 0x07, 0x26, 0xf1, 0x91, 0x05, 0x66, 0x96, 0x0e, 0x8c, 0xa1, 0x71, 0xd4,
+	0x65, 0x66, 0x96, 0x3a, 0x87, 0xd0, 0x24, 0x7e, 0x85, 0x86, 0xd0, 0xce, 0x24, 0x5f, 0x55, 0x03,
+	0x63, 0xd8, 0x3c, 0xea, 0x9d, 0xc0, 0x68, 0x33, 0x82, 0xf8, 0xac, 0x26, 0x9c, 0x35, 0x80, 0x9b,
+	0xae, 0xb2, 0x3c, 0x94, 0x89, 0xe4, 0xce, 0x12, 0xda, 0xd1, 0x63, 0xc1, 0x2b, 0xd4, 0x83, 0x7f,
+	0x62, 0x7a, 0x41, 0x83, 0x2b, 0x6a, 0x37, 0x10, 0x02, 0x6b, 0xca, 0xf0, 0x94, 0x05, 0x33, 0x12,
+	0x92, 0x80, 0x62, 0xdf, 0x36, 0x54, 0x03, 0xa6, 0xee, 0xd9, 0x04, 0xfb, 0xb6, 0x89, 0xb6, 0x61,
+	0xcb, 0x27, 0x61, 0x8d, 0x9a, 0x68, 0x1f, 0xfe, 0xf5, 0x83, 0x2b, 0x3a, 0x09, 0x5c, 0x9f, 0xd0,
+	0xf3, 0x39, 0xb9, 0x74, 0xcf, 0xb1, 0xdd, 0x52, 0x27, 0x7c, 0x3c, 0xc1, 0x11, 0xf6, 0xed, 0xb6,
+	0xb3, 0x04, 0x08, 0x0a, 0x5e, 0x2a, 0xd5, 0x75, 0xe5, 0x5c, 0xbf, 0x2b, 0x6b, 0x01, 0xf8, 0x24,
+	0xf4, 0x82, 0x19, 0x66, 0x5a, 0xd2, 0x02, 0x70, 0xbd, 0x88, 0xcc, 0xdc, 0x88, 0xd0, 0x73, 0xdb,
+	0x54, 0xcd, 0x11, 0x0e, 0x35, 0x68, 0x22, 0x80, 0x8e, 0x26, 0x95, 0x12, 0x40, 0xe7, 0xbb, 0x4b,
+	0x26, 0x5a, 0x08, 0x43, 0xdf, 0x13, 0x79, 0xce, 0x17, 0x72, 0xa3, 0xf5, 0xf5, 0x5d, 0xad, 0x1d,
+	0xe8, 0xc5, 0x94, 0x61, 0xd7, 0xfb, 0xa1, 0x5c, 0xd8, 0x06, 0xea, 0x43, 0xf7, 0x05, 0x9a, 0xce,
+	0x6f, 0x03, 0xfa, 0xea, 0x85, 0x13, 0x99, 0x89, 0x9c, 0xf1, 0xaa, 0x40, 0xdf, 0xa0, 0xb5, 0x10,
+	0x29, 0xd7, 0x99, 0x5b, 0x27, 0x9f, 0x9e, 0x92, 0x7d, 0xd3, 0xf4, 0x1a, 0xc9, 0x75, 0x99, 0x7b,
+	0x22, 0xe5, 0x4c, 0x1f, 0x43, 0x87, 0xb0, 0x93, 0xa4, 0x69, 0xa6, 0xb8, 0xe4, 0x7e, 0x9e, 0xe5,
+	0xb7, 0x62, 0x60, 0xea, 0xdb, 0xb3, 0x5e, 0xca, 0x24, 0xbf, 0x15, 0xce, 0x2f, 0xd8, 0x7d, 0x67,
+	0x8a, 0x0a, 0x39, 0x98, 0x62, 0xe6, 0x46, 0x24, 0xa0, 0xf3, 0x30, 0xf6, 0x3c, 0x1c, 0x86, 0x76,
+	0xe3, 0x6d, 0x59, 0x85, 0x10, 0x33, 0xe5, 0xe6, 0x7f, 0xd8, 0x7f, 0x29, 0xc7, 0x34, 0x8c, 0xa7,
+	0xd3, 0x80, 0xa9, 0x9b, 0x30, 0x9d, 0x63, 0xe8, 0xce, 0x92, 0xfb, 0x35, 0x57, 0xa1, 0x38, 0x1f,
+	0xa1, 0xa5, 0xfe, 0x51, 0x17, 0xda, 0xf8, 0x72, 0x1a, 0x5d, 0xdb, 0x8d, 0xcd, 0xdd, 0x46, 0x2e,
+	0xf5, 0xb0, 0x6d, 0x38, 0x14, 0x2c, 0xdd, 0x1d, 0x16, 0x7c, 0x91, 0xdd, 0x66, 0xbc, 0xfc, 0xfb,
+	0xcb, 0x43, 0xc7, 0xd0, 0x7e, 0x50, 0x1d, 0xda, 0x8e, 0x75, 0xf2, 0xdf, 0x53, 0x30, 0xcf, 0x22,
+	0x23, 0xf5, 0xc3, 0xea, 0x26, 0x47, 0xc2, 0x76, 0x6d, 0x4a, 0xd3, 0x15, 0xb2, 0xa1, 0x19, 0x72,
+	0xa9, 0xc7, 0xf5, 0x99, 0x7a, 0x44, 0x43, 0xe8, 0xc5, 0x79, 0xb5, 0x2e, 0x0a, 0x51, 0x4a, 0x9e,
+	0xea, 0xa9, 0x7d, 0xf6, 0xba, 0x84, 0xf6, 0xa0, 0x8d, 0xcb, 0x52, 0x94, 0x83, 0xa6, 0xe6, 0x6a,
+	0x80, 0x0e, 0x60, 0xcb, 0xcf, 0x2a, 0x99, 0xe4, 0x0b, 0x3e, 0x68, 0x69, 0xe2, 0x19, 0x7f, 0xfe,
+	0x00, 0xdb, 0x11, 0xaf, 0xe4, 0xa5, 0x48, 0xf9, 0x05, 0x7f, 0xac, 0x94, 0xc7, 0xa4, 0xc8, 0xe6,
+	0x92, 0x57, 0xd2, 0x6e, 0x9c, 0x61, 0xd8, 0x15, 0xe5, 0x72, 0x24, 0x0a, 0x9e, 0x2f, 0x44, 0x99,
+	0x8e, 0xea, 0x25, 0xfc, 0x39, 0x5a, 0x66, 0xf2, 0x6e, 0x7d, 0xa3, 0xfc, 0x8c, 0x9f, 0xb8, 0x71,
+	0xcd, 0x7d, 0xd9, 0x2c, 0xe8, 0xc3, 0xe9, 0x78, 0x29, 0x36, 0x6b, 0x7a, 0xd3, 0xd1, 0xc5, 0xd3,
+	0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xb5, 0x2a, 0xdd, 0x48, 0xc5, 0x03, 0x00, 0x00,
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/common/meta.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/common/meta.pb.go
new file mode 100644
index 0000000..8fbd621
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/common/meta.pb.go
@@ -0,0 +1,142 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: voltha_protos/meta.proto
+
+package common
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	descriptor "github.com/golang/protobuf/protoc-gen-go/descriptor"
+	math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+type Access int32
+
+const (
+	// read-write, stored attribute
+	Access_CONFIG Access = 0
+	// read-only field, stored with the model, covered by its hash
+	Access_READ_ONLY Access = 1
+	// A read-only attribute that is not stored in the model, not covered
+	// by its hash, its value is filled real-time upon each request.
+	Access_REAL_TIME Access = 2
+)
+
+var Access_name = map[int32]string{
+	0: "CONFIG",
+	1: "READ_ONLY",
+	2: "REAL_TIME",
+}
+
+var Access_value = map[string]int32{
+	"CONFIG":    0,
+	"READ_ONLY": 1,
+	"REAL_TIME": 2,
+}
+
+func (x Access) String() string {
+	return proto.EnumName(Access_name, int32(x))
+}
+
+func (Access) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_96b320e8a67781f3, []int{0}
+}
+
+type ChildNode struct {
+	Key                  string   `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ChildNode) Reset()         { *m = ChildNode{} }
+func (m *ChildNode) String() string { return proto.CompactTextString(m) }
+func (*ChildNode) ProtoMessage()    {}
+func (*ChildNode) Descriptor() ([]byte, []int) {
+	return fileDescriptor_96b320e8a67781f3, []int{0}
+}
+
+func (m *ChildNode) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ChildNode.Unmarshal(m, b)
+}
+func (m *ChildNode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ChildNode.Marshal(b, m, deterministic)
+}
+func (m *ChildNode) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ChildNode.Merge(m, src)
+}
+func (m *ChildNode) XXX_Size() int {
+	return xxx_messageInfo_ChildNode.Size(m)
+}
+func (m *ChildNode) XXX_DiscardUnknown() {
+	xxx_messageInfo_ChildNode.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ChildNode proto.InternalMessageInfo
+
+func (m *ChildNode) GetKey() string {
+	if m != nil {
+		return m.Key
+	}
+	return ""
+}
+
+var E_ChildNode = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.FieldOptions)(nil),
+	ExtensionType: (*ChildNode)(nil),
+	Field:         7761772,
+	Name:          "voltha.child_node",
+	Tag:           "bytes,7761772,opt,name=child_node",
+	Filename:      "voltha_protos/meta.proto",
+}
+
+var E_Access = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.FieldOptions)(nil),
+	ExtensionType: (*Access)(nil),
+	Field:         7761773,
+	Name:          "voltha.access",
+	Tag:           "varint,7761773,opt,name=access,enum=voltha.Access",
+	Filename:      "voltha_protos/meta.proto",
+}
+
+func init() {
+	proto.RegisterEnum("voltha.Access", Access_name, Access_value)
+	proto.RegisterType((*ChildNode)(nil), "voltha.ChildNode")
+	proto.RegisterExtension(E_ChildNode)
+	proto.RegisterExtension(E_Access)
+}
+
+func init() { proto.RegisterFile("voltha_protos/meta.proto", fileDescriptor_96b320e8a67781f3) }
+
+var fileDescriptor_96b320e8a67781f3 = []byte{
+	// 281 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x90, 0xc1, 0x4a, 0xc3, 0x40,
+	0x10, 0x86, 0x8d, 0x85, 0x40, 0x46, 0x2c, 0x31, 0xa7, 0x52, 0x28, 0x04, 0x4f, 0x45, 0x70, 0x17,
+	0xd2, 0x5b, 0x6f, 0xb5, 0xb6, 0x5a, 0x88, 0x09, 0x04, 0x2f, 0x7a, 0x09, 0xc9, 0x66, 0x4d, 0x82,
+	0x49, 0x26, 0x64, 0xb7, 0x05, 0x1f, 0xd5, 0x8b, 0x4f, 0xa0, 0xef, 0x20, 0xc9, 0x66, 0xbd, 0x7a,
+	0xfb, 0x67, 0xf6, 0xdf, 0x8f, 0x8f, 0x81, 0xd9, 0x09, 0x2b, 0x59, 0x24, 0x71, 0xdb, 0xa1, 0x44,
+	0x41, 0x6b, 0x2e, 0x13, 0x32, 0x64, 0xc7, 0x54, 0x2f, 0x73, 0x37, 0x47, 0xcc, 0x2b, 0x4e, 0x87,
+	0x6d, 0x7a, 0x7c, 0xa3, 0x19, 0x17, 0xac, 0x2b, 0x5b, 0x89, 0x9d, 0x6a, 0x5e, 0x2f, 0xc0, 0xda,
+	0x16, 0x65, 0x95, 0x05, 0x98, 0x71, 0xc7, 0x86, 0xc9, 0x3b, 0xff, 0x98, 0x19, 0xae, 0xb1, 0xb4,
+	0xa2, 0x3e, 0xde, 0x78, 0x60, 0x6e, 0x18, 0xe3, 0x42, 0x38, 0x00, 0xe6, 0x36, 0x0c, 0xf6, 0x87,
+	0x07, 0xfb, 0xcc, 0xb9, 0x04, 0x2b, 0xda, 0x6d, 0xee, 0xe3, 0x30, 0xf0, 0x5f, 0x6c, 0x63, 0x1c,
+	0xfd, 0xf8, 0xf9, 0xf0, 0xb4, 0xb3, 0xcf, 0xd7, 0x11, 0x00, 0xeb, 0x91, 0x71, 0xd3, 0x33, 0x17,
+	0x44, 0x39, 0x10, 0xed, 0x40, 0xf6, 0x25, 0xaf, 0xb2, 0xb0, 0x95, 0x25, 0x36, 0x62, 0xf6, 0xfd,
+	0xf5, 0x39, 0x71, 0x8d, 0xe5, 0x85, 0x77, 0x45, 0x94, 0x33, 0xf9, 0xd3, 0x89, 0x2c, 0xa6, 0xe3,
+	0xfa, 0x11, 0xcc, 0x44, 0x79, 0xfc, 0xc3, 0xfb, 0x51, 0xbc, 0xa9, 0x37, 0xd5, 0x3c, 0xe5, 0x1f,
+	0x8d, 0xff, 0xef, 0x7c, 0x98, 0x63, 0x97, 0x13, 0x6c, 0x79, 0xc3, 0xb0, 0xcb, 0x74, 0x8b, 0x61,
+	0x5d, 0x63, 0xf3, 0x4a, 0xf2, 0x52, 0x16, 0xc7, 0xb4, 0x1f, 0xa9, 0xae, 0x50, 0x55, 0xb9, 0x1d,
+	0xcf, 0x7c, 0x5a, 0xd1, 0x1c, 0xa9, 0xea, 0xa7, 0xe6, 0xb0, 0x5c, 0xfd, 0x06, 0x00, 0x00, 0xff,
+	0xff, 0x45, 0x61, 0x57, 0xbf, 0x8b, 0x01, 0x00, 0x00,
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/ext/config/ext_config.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/ext/config/ext_config.pb.go
new file mode 100644
index 0000000..4f68fd0
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/ext/config/ext_config.pb.go
@@ -0,0 +1,523 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: voltha_protos/ext_config.proto
+
+package config
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+type OnuItuPonAlarm_AlarmID int32
+
+const (
+	OnuItuPonAlarm_RDI_ERRORS OnuItuPonAlarm_AlarmID = 0
+)
+
+var OnuItuPonAlarm_AlarmID_name = map[int32]string{
+	0: "RDI_ERRORS",
+}
+
+var OnuItuPonAlarm_AlarmID_value = map[string]int32{
+	"RDI_ERRORS": 0,
+}
+
+func (x OnuItuPonAlarm_AlarmID) String() string {
+	return proto.EnumName(OnuItuPonAlarm_AlarmID_name, int32(x))
+}
+
+func (OnuItuPonAlarm_AlarmID) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_fb43b44b7fa3aba9, []int{1, 0}
+}
+
+type OnuItuPonAlarm_AlarmReportingCondition int32
+
+const (
+	OnuItuPonAlarm_RATE_THRESHOLD  OnuItuPonAlarm_AlarmReportingCondition = 0
+	OnuItuPonAlarm_RATE_RANGE      OnuItuPonAlarm_AlarmReportingCondition = 1
+	OnuItuPonAlarm_VALUE_THRESHOLD OnuItuPonAlarm_AlarmReportingCondition = 2
+)
+
+var OnuItuPonAlarm_AlarmReportingCondition_name = map[int32]string{
+	0: "RATE_THRESHOLD",
+	1: "RATE_RANGE",
+	2: "VALUE_THRESHOLD",
+}
+
+var OnuItuPonAlarm_AlarmReportingCondition_value = map[string]int32{
+	"RATE_THRESHOLD":  0,
+	"RATE_RANGE":      1,
+	"VALUE_THRESHOLD": 2,
+}
+
+func (x OnuItuPonAlarm_AlarmReportingCondition) String() string {
+	return proto.EnumName(OnuItuPonAlarm_AlarmReportingCondition_name, int32(x))
+}
+
+func (OnuItuPonAlarm_AlarmReportingCondition) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_fb43b44b7fa3aba9, []int{1, 1}
+}
+
+type AlarmConfig struct {
+	// Types that are valid to be assigned to Config:
+	//	*AlarmConfig_OnuItuPonAlarmConfig
+	Config               isAlarmConfig_Config `protobuf_oneof:"config"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
+}
+
+func (m *AlarmConfig) Reset()         { *m = AlarmConfig{} }
+func (m *AlarmConfig) String() string { return proto.CompactTextString(m) }
+func (*AlarmConfig) ProtoMessage()    {}
+func (*AlarmConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_fb43b44b7fa3aba9, []int{0}
+}
+
+func (m *AlarmConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_AlarmConfig.Unmarshal(m, b)
+}
+func (m *AlarmConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_AlarmConfig.Marshal(b, m, deterministic)
+}
+func (m *AlarmConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AlarmConfig.Merge(m, src)
+}
+func (m *AlarmConfig) XXX_Size() int {
+	return xxx_messageInfo_AlarmConfig.Size(m)
+}
+func (m *AlarmConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_AlarmConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AlarmConfig proto.InternalMessageInfo
+
+type isAlarmConfig_Config interface {
+	isAlarmConfig_Config()
+}
+
+type AlarmConfig_OnuItuPonAlarmConfig struct {
+	OnuItuPonAlarmConfig *OnuItuPonAlarm `protobuf:"bytes,1,opt,name=onu_itu_pon_alarm_config,json=onuItuPonAlarmConfig,proto3,oneof"`
+}
+
+func (*AlarmConfig_OnuItuPonAlarmConfig) isAlarmConfig_Config() {}
+
+func (m *AlarmConfig) GetConfig() isAlarmConfig_Config {
+	if m != nil {
+		return m.Config
+	}
+	return nil
+}
+
+func (m *AlarmConfig) GetOnuItuPonAlarmConfig() *OnuItuPonAlarm {
+	if x, ok := m.GetConfig().(*AlarmConfig_OnuItuPonAlarmConfig); ok {
+		return x.OnuItuPonAlarmConfig
+	}
+	return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*AlarmConfig) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*AlarmConfig_OnuItuPonAlarmConfig)(nil),
+	}
+}
+
+type OnuItuPonAlarm struct {
+	PonNi                   uint32                                 `protobuf:"fixed32,1,opt,name=pon_ni,json=ponNi,proto3" json:"pon_ni,omitempty"`
+	OnuId                   uint32                                 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+	AlarmId                 OnuItuPonAlarm_AlarmID                 `protobuf:"varint,3,opt,name=alarm_id,json=alarmId,proto3,enum=config.OnuItuPonAlarm_AlarmID" json:"alarm_id,omitempty"`
+	AlarmReportingCondition OnuItuPonAlarm_AlarmReportingCondition `protobuf:"varint,4,opt,name=alarm_reporting_condition,json=alarmReportingCondition,proto3,enum=config.OnuItuPonAlarm_AlarmReportingCondition" json:"alarm_reporting_condition,omitempty"`
+	// Types that are valid to be assigned to Config:
+	//	*OnuItuPonAlarm_RateThresholdConfig_
+	//	*OnuItuPonAlarm_RateRangeConfig_
+	//	*OnuItuPonAlarm_ValueThresholdConfig_
+	Config               isOnuItuPonAlarm_Config `protobuf_oneof:"config"`
+	XXX_NoUnkeyedLiteral struct{}                `json:"-"`
+	XXX_unrecognized     []byte                  `json:"-"`
+	XXX_sizecache        int32                   `json:"-"`
+}
+
+func (m *OnuItuPonAlarm) Reset()         { *m = OnuItuPonAlarm{} }
+func (m *OnuItuPonAlarm) String() string { return proto.CompactTextString(m) }
+func (*OnuItuPonAlarm) ProtoMessage()    {}
+func (*OnuItuPonAlarm) Descriptor() ([]byte, []int) {
+	return fileDescriptor_fb43b44b7fa3aba9, []int{1}
+}
+
+func (m *OnuItuPonAlarm) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OnuItuPonAlarm.Unmarshal(m, b)
+}
+func (m *OnuItuPonAlarm) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OnuItuPonAlarm.Marshal(b, m, deterministic)
+}
+func (m *OnuItuPonAlarm) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OnuItuPonAlarm.Merge(m, src)
+}
+func (m *OnuItuPonAlarm) XXX_Size() int {
+	return xxx_messageInfo_OnuItuPonAlarm.Size(m)
+}
+func (m *OnuItuPonAlarm) XXX_DiscardUnknown() {
+	xxx_messageInfo_OnuItuPonAlarm.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuItuPonAlarm proto.InternalMessageInfo
+
+func (m *OnuItuPonAlarm) GetPonNi() uint32 {
+	if m != nil {
+		return m.PonNi
+	}
+	return 0
+}
+
+func (m *OnuItuPonAlarm) GetOnuId() uint32 {
+	if m != nil {
+		return m.OnuId
+	}
+	return 0
+}
+
+func (m *OnuItuPonAlarm) GetAlarmId() OnuItuPonAlarm_AlarmID {
+	if m != nil {
+		return m.AlarmId
+	}
+	return OnuItuPonAlarm_RDI_ERRORS
+}
+
+func (m *OnuItuPonAlarm) GetAlarmReportingCondition() OnuItuPonAlarm_AlarmReportingCondition {
+	if m != nil {
+		return m.AlarmReportingCondition
+	}
+	return OnuItuPonAlarm_RATE_THRESHOLD
+}
+
+type isOnuItuPonAlarm_Config interface {
+	isOnuItuPonAlarm_Config()
+}
+
+type OnuItuPonAlarm_RateThresholdConfig_ struct {
+	RateThresholdConfig *OnuItuPonAlarm_RateThresholdConfig `protobuf:"bytes,5,opt,name=rate_threshold_config,json=rateThresholdConfig,proto3,oneof"`
+}
+
+type OnuItuPonAlarm_RateRangeConfig_ struct {
+	RateRangeConfig *OnuItuPonAlarm_RateRangeConfig `protobuf:"bytes,6,opt,name=rate_range_config,json=rateRangeConfig,proto3,oneof"`
+}
+
+type OnuItuPonAlarm_ValueThresholdConfig_ struct {
+	ValueThresholdConfig *OnuItuPonAlarm_ValueThresholdConfig `protobuf:"bytes,7,opt,name=value_threshold_config,json=valueThresholdConfig,proto3,oneof"`
+}
+
+func (*OnuItuPonAlarm_RateThresholdConfig_) isOnuItuPonAlarm_Config() {}
+
+func (*OnuItuPonAlarm_RateRangeConfig_) isOnuItuPonAlarm_Config() {}
+
+func (*OnuItuPonAlarm_ValueThresholdConfig_) isOnuItuPonAlarm_Config() {}
+
+func (m *OnuItuPonAlarm) GetConfig() isOnuItuPonAlarm_Config {
+	if m != nil {
+		return m.Config
+	}
+	return nil
+}
+
+func (m *OnuItuPonAlarm) GetRateThresholdConfig() *OnuItuPonAlarm_RateThresholdConfig {
+	if x, ok := m.GetConfig().(*OnuItuPonAlarm_RateThresholdConfig_); ok {
+		return x.RateThresholdConfig
+	}
+	return nil
+}
+
+func (m *OnuItuPonAlarm) GetRateRangeConfig() *OnuItuPonAlarm_RateRangeConfig {
+	if x, ok := m.GetConfig().(*OnuItuPonAlarm_RateRangeConfig_); ok {
+		return x.RateRangeConfig
+	}
+	return nil
+}
+
+func (m *OnuItuPonAlarm) GetValueThresholdConfig() *OnuItuPonAlarm_ValueThresholdConfig {
+	if x, ok := m.GetConfig().(*OnuItuPonAlarm_ValueThresholdConfig_); ok {
+		return x.ValueThresholdConfig
+	}
+	return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*OnuItuPonAlarm) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*OnuItuPonAlarm_RateThresholdConfig_)(nil),
+		(*OnuItuPonAlarm_RateRangeConfig_)(nil),
+		(*OnuItuPonAlarm_ValueThresholdConfig_)(nil),
+	}
+}
+
+type OnuItuPonAlarm_SoakTime struct {
+	ActiveSoakTime       uint32   `protobuf:"fixed32,1,opt,name=active_soak_time,json=activeSoakTime,proto3" json:"active_soak_time,omitempty"`
+	ClearSoakTime        uint32   `protobuf:"fixed32,2,opt,name=clear_soak_time,json=clearSoakTime,proto3" json:"clear_soak_time,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *OnuItuPonAlarm_SoakTime) Reset()         { *m = OnuItuPonAlarm_SoakTime{} }
+func (m *OnuItuPonAlarm_SoakTime) String() string { return proto.CompactTextString(m) }
+func (*OnuItuPonAlarm_SoakTime) ProtoMessage()    {}
+func (*OnuItuPonAlarm_SoakTime) Descriptor() ([]byte, []int) {
+	return fileDescriptor_fb43b44b7fa3aba9, []int{1, 0}
+}
+
+func (m *OnuItuPonAlarm_SoakTime) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OnuItuPonAlarm_SoakTime.Unmarshal(m, b)
+}
+func (m *OnuItuPonAlarm_SoakTime) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OnuItuPonAlarm_SoakTime.Marshal(b, m, deterministic)
+}
+func (m *OnuItuPonAlarm_SoakTime) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OnuItuPonAlarm_SoakTime.Merge(m, src)
+}
+func (m *OnuItuPonAlarm_SoakTime) XXX_Size() int {
+	return xxx_messageInfo_OnuItuPonAlarm_SoakTime.Size(m)
+}
+func (m *OnuItuPonAlarm_SoakTime) XXX_DiscardUnknown() {
+	xxx_messageInfo_OnuItuPonAlarm_SoakTime.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuItuPonAlarm_SoakTime proto.InternalMessageInfo
+
+func (m *OnuItuPonAlarm_SoakTime) GetActiveSoakTime() uint32 {
+	if m != nil {
+		return m.ActiveSoakTime
+	}
+	return 0
+}
+
+func (m *OnuItuPonAlarm_SoakTime) GetClearSoakTime() uint32 {
+	if m != nil {
+		return m.ClearSoakTime
+	}
+	return 0
+}
+
+type OnuItuPonAlarm_RateThresholdConfig struct {
+	RateThresholdRising  uint64                   `protobuf:"fixed64,1,opt,name=rate_threshold_rising,json=rateThresholdRising,proto3" json:"rate_threshold_rising,omitempty"`
+	RateThresholdFalling uint64                   `protobuf:"fixed64,2,opt,name=rate_threshold_falling,json=rateThresholdFalling,proto3" json:"rate_threshold_falling,omitempty"`
+	SoakTime             *OnuItuPonAlarm_SoakTime `protobuf:"bytes,3,opt,name=soak_time,json=soakTime,proto3" json:"soak_time,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
+	XXX_unrecognized     []byte                   `json:"-"`
+	XXX_sizecache        int32                    `json:"-"`
+}
+
+func (m *OnuItuPonAlarm_RateThresholdConfig) Reset()         { *m = OnuItuPonAlarm_RateThresholdConfig{} }
+func (m *OnuItuPonAlarm_RateThresholdConfig) String() string { return proto.CompactTextString(m) }
+func (*OnuItuPonAlarm_RateThresholdConfig) ProtoMessage()    {}
+func (*OnuItuPonAlarm_RateThresholdConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_fb43b44b7fa3aba9, []int{1, 1}
+}
+
+func (m *OnuItuPonAlarm_RateThresholdConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OnuItuPonAlarm_RateThresholdConfig.Unmarshal(m, b)
+}
+func (m *OnuItuPonAlarm_RateThresholdConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OnuItuPonAlarm_RateThresholdConfig.Marshal(b, m, deterministic)
+}
+func (m *OnuItuPonAlarm_RateThresholdConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OnuItuPonAlarm_RateThresholdConfig.Merge(m, src)
+}
+func (m *OnuItuPonAlarm_RateThresholdConfig) XXX_Size() int {
+	return xxx_messageInfo_OnuItuPonAlarm_RateThresholdConfig.Size(m)
+}
+func (m *OnuItuPonAlarm_RateThresholdConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_OnuItuPonAlarm_RateThresholdConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuItuPonAlarm_RateThresholdConfig proto.InternalMessageInfo
+
+func (m *OnuItuPonAlarm_RateThresholdConfig) GetRateThresholdRising() uint64 {
+	if m != nil {
+		return m.RateThresholdRising
+	}
+	return 0
+}
+
+func (m *OnuItuPonAlarm_RateThresholdConfig) GetRateThresholdFalling() uint64 {
+	if m != nil {
+		return m.RateThresholdFalling
+	}
+	return 0
+}
+
+func (m *OnuItuPonAlarm_RateThresholdConfig) GetSoakTime() *OnuItuPonAlarm_SoakTime {
+	if m != nil {
+		return m.SoakTime
+	}
+	return nil
+}
+
+type OnuItuPonAlarm_RateRangeConfig struct {
+	RateRangeLower       uint64                   `protobuf:"fixed64,1,opt,name=rate_range_lower,json=rateRangeLower,proto3" json:"rate_range_lower,omitempty"`
+	RateRangeUpper       uint64                   `protobuf:"fixed64,2,opt,name=rate_range_upper,json=rateRangeUpper,proto3" json:"rate_range_upper,omitempty"`
+	SoakTime             *OnuItuPonAlarm_SoakTime `protobuf:"bytes,3,opt,name=soak_time,json=soakTime,proto3" json:"soak_time,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
+	XXX_unrecognized     []byte                   `json:"-"`
+	XXX_sizecache        int32                    `json:"-"`
+}
+
+func (m *OnuItuPonAlarm_RateRangeConfig) Reset()         { *m = OnuItuPonAlarm_RateRangeConfig{} }
+func (m *OnuItuPonAlarm_RateRangeConfig) String() string { return proto.CompactTextString(m) }
+func (*OnuItuPonAlarm_RateRangeConfig) ProtoMessage()    {}
+func (*OnuItuPonAlarm_RateRangeConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_fb43b44b7fa3aba9, []int{1, 2}
+}
+
+func (m *OnuItuPonAlarm_RateRangeConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OnuItuPonAlarm_RateRangeConfig.Unmarshal(m, b)
+}
+func (m *OnuItuPonAlarm_RateRangeConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OnuItuPonAlarm_RateRangeConfig.Marshal(b, m, deterministic)
+}
+func (m *OnuItuPonAlarm_RateRangeConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OnuItuPonAlarm_RateRangeConfig.Merge(m, src)
+}
+func (m *OnuItuPonAlarm_RateRangeConfig) XXX_Size() int {
+	return xxx_messageInfo_OnuItuPonAlarm_RateRangeConfig.Size(m)
+}
+func (m *OnuItuPonAlarm_RateRangeConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_OnuItuPonAlarm_RateRangeConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuItuPonAlarm_RateRangeConfig proto.InternalMessageInfo
+
+func (m *OnuItuPonAlarm_RateRangeConfig) GetRateRangeLower() uint64 {
+	if m != nil {
+		return m.RateRangeLower
+	}
+	return 0
+}
+
+func (m *OnuItuPonAlarm_RateRangeConfig) GetRateRangeUpper() uint64 {
+	if m != nil {
+		return m.RateRangeUpper
+	}
+	return 0
+}
+
+func (m *OnuItuPonAlarm_RateRangeConfig) GetSoakTime() *OnuItuPonAlarm_SoakTime {
+	if m != nil {
+		return m.SoakTime
+	}
+	return nil
+}
+
+type OnuItuPonAlarm_ValueThresholdConfig struct {
+	ThresholdLimit       uint64                   `protobuf:"fixed64,1,opt,name=threshold_limit,json=thresholdLimit,proto3" json:"threshold_limit,omitempty"`
+	SoakTime             *OnuItuPonAlarm_SoakTime `protobuf:"bytes,2,opt,name=soak_time,json=soakTime,proto3" json:"soak_time,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
+	XXX_unrecognized     []byte                   `json:"-"`
+	XXX_sizecache        int32                    `json:"-"`
+}
+
+func (m *OnuItuPonAlarm_ValueThresholdConfig) Reset()         { *m = OnuItuPonAlarm_ValueThresholdConfig{} }
+func (m *OnuItuPonAlarm_ValueThresholdConfig) String() string { return proto.CompactTextString(m) }
+func (*OnuItuPonAlarm_ValueThresholdConfig) ProtoMessage()    {}
+func (*OnuItuPonAlarm_ValueThresholdConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_fb43b44b7fa3aba9, []int{1, 3}
+}
+
+func (m *OnuItuPonAlarm_ValueThresholdConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OnuItuPonAlarm_ValueThresholdConfig.Unmarshal(m, b)
+}
+func (m *OnuItuPonAlarm_ValueThresholdConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OnuItuPonAlarm_ValueThresholdConfig.Marshal(b, m, deterministic)
+}
+func (m *OnuItuPonAlarm_ValueThresholdConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OnuItuPonAlarm_ValueThresholdConfig.Merge(m, src)
+}
+func (m *OnuItuPonAlarm_ValueThresholdConfig) XXX_Size() int {
+	return xxx_messageInfo_OnuItuPonAlarm_ValueThresholdConfig.Size(m)
+}
+func (m *OnuItuPonAlarm_ValueThresholdConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_OnuItuPonAlarm_ValueThresholdConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuItuPonAlarm_ValueThresholdConfig proto.InternalMessageInfo
+
+func (m *OnuItuPonAlarm_ValueThresholdConfig) GetThresholdLimit() uint64 {
+	if m != nil {
+		return m.ThresholdLimit
+	}
+	return 0
+}
+
+func (m *OnuItuPonAlarm_ValueThresholdConfig) GetSoakTime() *OnuItuPonAlarm_SoakTime {
+	if m != nil {
+		return m.SoakTime
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterEnum("config.OnuItuPonAlarm_AlarmID", OnuItuPonAlarm_AlarmID_name, OnuItuPonAlarm_AlarmID_value)
+	proto.RegisterEnum("config.OnuItuPonAlarm_AlarmReportingCondition", OnuItuPonAlarm_AlarmReportingCondition_name, OnuItuPonAlarm_AlarmReportingCondition_value)
+	proto.RegisterType((*AlarmConfig)(nil), "config.AlarmConfig")
+	proto.RegisterType((*OnuItuPonAlarm)(nil), "config.OnuItuPonAlarm")
+	proto.RegisterType((*OnuItuPonAlarm_SoakTime)(nil), "config.OnuItuPonAlarm.SoakTime")
+	proto.RegisterType((*OnuItuPonAlarm_RateThresholdConfig)(nil), "config.OnuItuPonAlarm.RateThresholdConfig")
+	proto.RegisterType((*OnuItuPonAlarm_RateRangeConfig)(nil), "config.OnuItuPonAlarm.RateRangeConfig")
+	proto.RegisterType((*OnuItuPonAlarm_ValueThresholdConfig)(nil), "config.OnuItuPonAlarm.ValueThresholdConfig")
+}
+
+func init() { proto.RegisterFile("voltha_protos/ext_config.proto", fileDescriptor_fb43b44b7fa3aba9) }
+
+var fileDescriptor_fb43b44b7fa3aba9 = []byte{
+	// 609 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0xd1, 0x4e, 0x1a, 0x41,
+	0x14, 0x05, 0xac, 0x80, 0xd7, 0x14, 0xe8, 0x80, 0x8a, 0x3e, 0x58, 0xe3, 0x83, 0x35, 0x6d, 0xba,
+	0x24, 0xd8, 0x97, 0x26, 0x7d, 0x41, 0xa5, 0x85, 0x84, 0xa8, 0x19, 0xd1, 0x87, 0xa6, 0xc9, 0x76,
+	0x64, 0xc7, 0x65, 0xea, 0x32, 0xb3, 0x19, 0x66, 0x69, 0x5f, 0xfa, 0x35, 0xfd, 0x8e, 0xf6, 0xdb,
+	0x9a, 0x99, 0xd9, 0x05, 0x81, 0xc5, 0xa4, 0xe9, 0x0b, 0xc9, 0x9e, 0x7b, 0xcf, 0xb9, 0x87, 0x73,
+	0x67, 0x06, 0xf6, 0x27, 0x22, 0x50, 0x43, 0xe2, 0x86, 0x52, 0x28, 0x31, 0x6e, 0xd0, 0x1f, 0xca,
+	0x1d, 0x08, 0x7e, 0xcf, 0x7c, 0xc7, 0x20, 0x28, 0x6f, 0xbf, 0x0e, 0x19, 0x6c, 0xb6, 0x02, 0x22,
+	0x47, 0x67, 0xe6, 0x13, 0x5d, 0x41, 0x5d, 0xf0, 0xc8, 0x65, 0x2a, 0x72, 0x43, 0xc1, 0x5d, 0xa2,
+	0x4b, 0x31, 0xb1, 0x9e, 0x3d, 0xc8, 0x1e, 0x6f, 0x36, 0xb7, 0x9d, 0x58, 0xe7, 0x92, 0x47, 0x5d,
+	0x15, 0x5d, 0x09, 0x6e, 0xf8, 0x9d, 0x0c, 0xae, 0x89, 0x39, 0xc4, 0x2a, 0x9e, 0x16, 0x21, 0x19,
+	0xf5, 0x67, 0x03, 0x4a, 0xf3, 0x24, 0xb4, 0x05, 0x79, 0x3d, 0x86, 0x33, 0x23, 0x5e, 0xc0, 0xeb,
+	0xa1, 0xe0, 0x17, 0x4c, 0xc3, 0xc6, 0x85, 0x57, 0xcf, 0x59, 0x58, 0x2b, 0x7b, 0xe8, 0x3d, 0x14,
+	0xad, 0x21, 0xe6, 0xd5, 0xd7, 0x0e, 0xb2, 0xc7, 0xa5, 0xe6, 0x7e, 0xba, 0x19, 0xc7, 0xfc, 0x76,
+	0xcf, 0x71, 0xc1, 0xf4, 0x77, 0x3d, 0xf4, 0x0d, 0x76, 0x2d, 0x55, 0xd2, 0x50, 0x48, 0xc5, 0xb8,
+	0xaf, 0xff, 0x95, 0xc7, 0x14, 0x13, 0xbc, 0xfe, 0xcc, 0x68, 0x39, 0x4f, 0x69, 0xe1, 0x84, 0x76,
+	0x96, 0xb0, 0xf0, 0x0e, 0x49, 0x2f, 0xa0, 0xaf, 0xb0, 0x25, 0x89, 0xa2, 0xae, 0x1a, 0x4a, 0x3a,
+	0x1e, 0x8a, 0xc0, 0x4b, 0x02, 0x5c, 0x37, 0x01, 0xbe, 0x5e, 0x31, 0x07, 0x13, 0x45, 0xfb, 0x09,
+	0xc5, 0x86, 0xd7, 0xc9, 0xe0, 0xaa, 0x5c, 0x86, 0x51, 0x1f, 0x5e, 0x98, 0x09, 0x92, 0x70, 0x9f,
+	0x26, 0xea, 0x79, 0xa3, 0x7e, 0xf4, 0x84, 0x3a, 0xd6, 0xed, 0x53, 0xe5, 0xb2, 0x9c, 0x87, 0xd0,
+	0x00, 0xb6, 0x27, 0x24, 0x88, 0x52, 0x8c, 0x17, 0x8c, 0xf4, 0x9b, 0x15, 0xd2, 0xb7, 0x9a, 0xb4,
+	0xec, 0xbc, 0x36, 0x49, 0xc1, 0xf7, 0xbe, 0x40, 0xf1, 0x5a, 0x90, 0x87, 0x3e, 0x1b, 0x51, 0x74,
+	0x0c, 0x15, 0x32, 0x50, 0x6c, 0x42, 0xdd, 0xb1, 0x20, 0x0f, 0xae, 0x62, 0x23, 0x1a, 0x9f, 0x83,
+	0x92, 0xc5, 0xa7, 0x9d, 0x47, 0x50, 0x1e, 0x04, 0x94, 0xc8, 0x47, 0x8d, 0xf6, 0x64, 0x3c, 0x37,
+	0x70, 0xd2, 0xb7, 0xf7, 0x3b, 0x0b, 0xd5, 0x94, 0x1c, 0x51, 0x73, 0x69, 0x25, 0x92, 0x8d, 0x19,
+	0xb7, 0x67, 0x3a, 0xbf, 0x10, 0x32, 0x36, 0x25, 0xf4, 0x0e, 0xb6, 0x17, 0x38, 0xf7, 0x24, 0x08,
+	0x34, 0x29, 0x67, 0x48, 0xb5, 0x39, 0xd2, 0x47, 0x5b, 0x43, 0x1f, 0x60, 0x63, 0xe6, 0x71, 0xcd,
+	0xe4, 0xf6, 0x72, 0x45, 0x6e, 0x89, 0x6b, 0x5c, 0x1c, 0x27, 0xfe, 0x7f, 0x65, 0xa1, 0xbc, 0xb0,
+	0x29, 0x9d, 0xd2, 0xa3, 0x65, 0x07, 0xe2, 0x3b, 0x95, 0xb1, 0xed, 0xd2, 0x74, 0x83, 0x3d, 0x8d,
+	0x2e, 0x74, 0x46, 0x61, 0x48, 0x65, 0xec, 0x75, 0xd6, 0x79, 0xa3, 0xd1, 0xff, 0x74, 0xf9, 0x13,
+	0x6a, 0x69, 0x3b, 0x47, 0xaf, 0xa0, 0x3c, 0x0b, 0x2b, 0x60, 0x23, 0xa6, 0x12, 0xa3, 0x53, 0xb8,
+	0xa7, 0xd1, 0xf9, 0xf1, 0xb9, 0x7f, 0x1c, 0x7f, 0xb8, 0x0b, 0x85, 0xf8, 0x7e, 0xa3, 0x12, 0x00,
+	0x3e, 0xef, 0xba, 0x6d, 0x8c, 0x2f, 0xf1, 0x75, 0x25, 0x73, 0x88, 0x61, 0x67, 0xc5, 0x75, 0x45,
+	0x08, 0x4a, 0xb8, 0xd5, 0x6f, 0xbb, 0xfd, 0x0e, 0x6e, 0x5f, 0x77, 0x2e, 0x7b, 0xe7, 0x95, 0x8c,
+	0xa1, 0x6b, 0x0c, 0xb7, 0x2e, 0x3e, 0xb5, 0x2b, 0x59, 0x54, 0x85, 0xf2, 0x6d, 0xab, 0x77, 0xf3,
+	0xb8, 0x29, 0x37, 0x7b, 0xc0, 0x4e, 0xbb, 0x50, 0x15, 0xd2, 0x77, 0x44, 0x48, 0xf9, 0x40, 0x48,
+	0xcf, 0xb1, 0x4f, 0xec, 0xe7, 0xa6, 0xcf, 0xd4, 0x30, 0xba, 0x73, 0x06, 0x62, 0xd4, 0x48, 0x6a,
+	0x0d, 0x5b, 0x7b, 0x1b, 0x3f, 0xbf, 0x93, 0x93, 0x86, 0x2f, 0xf4, 0x23, 0xdc, 0xb0, 0x52, 0x77,
+	0x79, 0x53, 0x38, 0xf9, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x4c, 0xef, 0xae, 0x7e, 0xa7, 0x05, 0x00,
+	0x00,
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v2/go/openolt/openolt.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/openolt/openolt.pb.go
similarity index 64%
rename from vendor/github.com/opencord/voltha-protos/v2/go/openolt/openolt.pb.go
rename to vendor/github.com/opencord/voltha-protos/v3/go/openolt/openolt.pb.go
index f46f33a..5ab9cbe 100644
--- a/vendor/github.com/opencord/voltha-protos/v2/go/openolt/openolt.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/openolt/openolt.pb.go
@@ -7,7 +7,9 @@
 	context "context"
 	fmt "fmt"
 	proto "github.com/golang/protobuf/proto"
-	tech_profile "github.com/opencord/voltha-protos/v2/go/tech_profile"
+	common "github.com/opencord/voltha-protos/v3/go/common"
+	config "github.com/opencord/voltha-protos/v3/go/ext/config"
+	tech_profile "github.com/opencord/voltha-protos/v3/go/tech_profile"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
 	grpc "google.golang.org/grpc"
 	math "math"
@@ -109,6 +111,134 @@
 const InferredAdditionBWIndication_InferredAdditionBWIndication_Assured = InferredAdditionBWIndication(tech_profile.InferredAdditionBWIndication_InferredAdditionBWIndication_Assured)
 const InferredAdditionBWIndication_InferredAdditionBWIndication_BestEffort = InferredAdditionBWIndication(tech_profile.InferredAdditionBWIndication_InferredAdditionBWIndication_BestEffort)
 
+// ID from public import voltha_protos/common.proto
+type ID = common.ID
+
+// IDs from public import voltha_protos/common.proto
+type IDs = common.IDs
+
+// 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
+
+// ValueType from public import voltha_protos/common.proto
+type ValueType = common.ValueType
+
+// ValueSpecifier from public import voltha_protos/common.proto
+type ValueSpecifier = common.ValueSpecifier
+
+// ReturnValues from public import voltha_protos/common.proto
+type ReturnValues = common.ReturnValues
+
+// 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)
+
+// AdminState_Types from public import voltha_protos/common.proto
+type AdminState_Types = common.AdminState_Types
+
+var AdminState_Types_name = common.AdminState_Types_name
+var AdminState_Types_value = common.AdminState_Types_value
+
+const AdminState_UNKNOWN = AdminState_Types(common.AdminState_UNKNOWN)
+const AdminState_PREPROVISIONED = AdminState_Types(common.AdminState_PREPROVISIONED)
+const AdminState_ENABLED = AdminState_Types(common.AdminState_ENABLED)
+const AdminState_DISABLED = AdminState_Types(common.AdminState_DISABLED)
+const AdminState_DOWNLOADING_IMAGE = AdminState_Types(common.AdminState_DOWNLOADING_IMAGE)
+const AdminState_DELETED = AdminState_Types(common.AdminState_DELETED)
+
+// OperStatus_Types from public import voltha_protos/common.proto
+type OperStatus_Types = common.OperStatus_Types
+
+var OperStatus_Types_name = common.OperStatus_Types_name
+var OperStatus_Types_value = common.OperStatus_Types_value
+
+const OperStatus_UNKNOWN = OperStatus_Types(common.OperStatus_UNKNOWN)
+const OperStatus_DISCOVERED = OperStatus_Types(common.OperStatus_DISCOVERED)
+const OperStatus_ACTIVATING = OperStatus_Types(common.OperStatus_ACTIVATING)
+const OperStatus_TESTING = OperStatus_Types(common.OperStatus_TESTING)
+const OperStatus_ACTIVE = OperStatus_Types(common.OperStatus_ACTIVE)
+const OperStatus_FAILED = OperStatus_Types(common.OperStatus_FAILED)
+
+// ConnectStatus_Types from public import voltha_protos/common.proto
+type ConnectStatus_Types = common.ConnectStatus_Types
+
+var ConnectStatus_Types_name = common.ConnectStatus_Types_name
+var ConnectStatus_Types_value = common.ConnectStatus_Types_value
+
+const ConnectStatus_UNKNOWN = ConnectStatus_Types(common.ConnectStatus_UNKNOWN)
+const ConnectStatus_UNREACHABLE = ConnectStatus_Types(common.ConnectStatus_UNREACHABLE)
+const ConnectStatus_REACHABLE = ConnectStatus_Types(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)
+
+// ValueType_Type from public import voltha_protos/common.proto
+type ValueType_Type = common.ValueType_Type
+
+var ValueType_Type_name = common.ValueType_Type_name
+var ValueType_Type_value = common.ValueType_Type_value
+
+const ValueType_EMPTY = ValueType_Type(common.ValueType_EMPTY)
+const ValueType_DISTANCE = ValueType_Type(common.ValueType_DISTANCE)
+
+//* activation fail reason.
+type OnuIndication_ActivationFailReason int32
+
+const (
+	OnuIndication_ONU_ACTIVATION_FAIL_REASON_NONE                    OnuIndication_ActivationFailReason = 0
+	OnuIndication_ONU_ACTIVATION_FAIL_REASON_RANGING                 OnuIndication_ActivationFailReason = 1
+	OnuIndication_ONU_ACTIVATION_FAIL_REASON_PASSWORD_AUTHENTICATION OnuIndication_ActivationFailReason = 2
+	OnuIndication_ONU_ACTIVATION_FAIL_REASON_LOS                     OnuIndication_ActivationFailReason = 3
+	OnuIndication_ONU_ACTIVATION_FAIL_ONU_ALARM                      OnuIndication_ActivationFailReason = 4
+	OnuIndication_ONU_ACTIVATION_FAIL_SWITCH_OVER                    OnuIndication_ActivationFailReason = 5
+)
+
+var OnuIndication_ActivationFailReason_name = map[int32]string{
+	0: "ONU_ACTIVATION_FAIL_REASON_NONE",
+	1: "ONU_ACTIVATION_FAIL_REASON_RANGING",
+	2: "ONU_ACTIVATION_FAIL_REASON_PASSWORD_AUTHENTICATION",
+	3: "ONU_ACTIVATION_FAIL_REASON_LOS",
+	4: "ONU_ACTIVATION_FAIL_ONU_ALARM",
+	5: "ONU_ACTIVATION_FAIL_SWITCH_OVER",
+}
+
+var OnuIndication_ActivationFailReason_value = map[string]int32{
+	"ONU_ACTIVATION_FAIL_REASON_NONE":                    0,
+	"ONU_ACTIVATION_FAIL_REASON_RANGING":                 1,
+	"ONU_ACTIVATION_FAIL_REASON_PASSWORD_AUTHENTICATION": 2,
+	"ONU_ACTIVATION_FAIL_REASON_LOS":                     3,
+	"ONU_ACTIVATION_FAIL_ONU_ALARM":                      4,
+	"ONU_ACTIVATION_FAIL_SWITCH_OVER":                    5,
+}
+
+func (x OnuIndication_ActivationFailReason) String() string {
+	return proto.EnumName(OnuIndication_ActivationFailReason_name, int32(x))
+}
+
+func (OnuIndication_ActivationFailReason) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_c072e7aa0dfd74d5, []int{5, 0}
+}
+
 type DeviceInfo_DeviceResourceRanges_Pool_PoolType int32
 
 const (
@@ -137,7 +267,7 @@
 }
 
 func (DeviceInfo_DeviceResourceRanges_Pool_PoolType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{15, 0, 0, 0}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{16, 0, 0, 0}
 }
 
 type DeviceInfo_DeviceResourceRanges_Pool_SharingType int32
@@ -165,7 +295,63 @@
 }
 
 func (DeviceInfo_DeviceResourceRanges_Pool_SharingType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{15, 0, 0, 1}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{16, 0, 0, 1}
+}
+
+type GroupMember_InterfaceType int32
+
+const (
+	GroupMember_PON           GroupMember_InterfaceType = 0
+	GroupMember_EPON_1G_PATH  GroupMember_InterfaceType = 1
+	GroupMember_EPON_10G_PATH GroupMember_InterfaceType = 2
+)
+
+var GroupMember_InterfaceType_name = map[int32]string{
+	0: "PON",
+	1: "EPON_1G_PATH",
+	2: "EPON_10G_PATH",
+}
+
+var GroupMember_InterfaceType_value = map[string]int32{
+	"PON":           0,
+	"EPON_1G_PATH":  1,
+	"EPON_10G_PATH": 2,
+}
+
+func (x GroupMember_InterfaceType) String() string {
+	return proto.EnumName(GroupMember_InterfaceType_name, int32(x))
+}
+
+func (GroupMember_InterfaceType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_c072e7aa0dfd74d5, []int{44, 0}
+}
+
+type Group_GroupMembersCommand int32
+
+const (
+	Group_ADD_MEMBERS    Group_GroupMembersCommand = 0
+	Group_REMOVE_MEMBERS Group_GroupMembersCommand = 1
+	Group_SET_MEMBERS    Group_GroupMembersCommand = 2
+)
+
+var Group_GroupMembersCommand_name = map[int32]string{
+	0: "ADD_MEMBERS",
+	1: "REMOVE_MEMBERS",
+	2: "SET_MEMBERS",
+}
+
+var Group_GroupMembersCommand_value = map[string]int32{
+	"ADD_MEMBERS":    0,
+	"REMOVE_MEMBERS": 1,
+	"SET_MEMBERS":    2,
+}
+
+func (x Group_GroupMembersCommand) String() string {
+	return proto.EnumName(Group_GroupMembersCommand_name, int32(x))
+}
+
+func (Group_GroupMembersCommand) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_c072e7aa0dfd74d5, []int{45, 0}
 }
 
 type Indication struct {
@@ -383,6 +569,12 @@
 	//	*AlarmIndication_OnuProcessingErrorInd
 	//	*AlarmIndication_OnuLossOfSyncFailInd
 	//	*AlarmIndication_OnuItuPonStatsInd
+	//	*AlarmIndication_OnuDeactivationFailureInd
+	//	*AlarmIndication_OnuRemoteDefectInd
+	//	*AlarmIndication_OnuLossGemDelineationInd
+	//	*AlarmIndication_OnuPhysicalEquipmentErrorInd
+	//	*AlarmIndication_OnuLossOfAckInd
+	//	*AlarmIndication_OnuDiffReachExceededInd
 	Data                 isAlarmIndication_Data `protobuf_oneof:"data"`
 	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
 	XXX_unrecognized     []byte                 `json:"-"`
@@ -470,6 +662,30 @@
 	OnuItuPonStatsInd *OnuItuPonStatsIndication `protobuf:"bytes,13,opt,name=onu_itu_pon_stats_ind,json=onuItuPonStatsInd,proto3,oneof"`
 }
 
+type AlarmIndication_OnuDeactivationFailureInd struct {
+	OnuDeactivationFailureInd *OnuDeactivationFailureIndication `protobuf:"bytes,14,opt,name=onu_deactivation_failure_ind,json=onuDeactivationFailureInd,proto3,oneof"`
+}
+
+type AlarmIndication_OnuRemoteDefectInd struct {
+	OnuRemoteDefectInd *OnuRemoteDefectIndication `protobuf:"bytes,15,opt,name=onu_remote_defect_ind,json=onuRemoteDefectInd,proto3,oneof"`
+}
+
+type AlarmIndication_OnuLossGemDelineationInd struct {
+	OnuLossGemDelineationInd *OnuLossOfGEMChannelDelineationIndication `protobuf:"bytes,16,opt,name=onu_loss_gem_delineation_ind,json=onuLossGemDelineationInd,proto3,oneof"`
+}
+
+type AlarmIndication_OnuPhysicalEquipmentErrorInd struct {
+	OnuPhysicalEquipmentErrorInd *OnuPhysicalEquipmentErrorIndication `protobuf:"bytes,17,opt,name=onu_physical_equipment_error_ind,json=onuPhysicalEquipmentErrorInd,proto3,oneof"`
+}
+
+type AlarmIndication_OnuLossOfAckInd struct {
+	OnuLossOfAckInd *OnuLossOfAcknowledgementIndication `protobuf:"bytes,18,opt,name=onu_loss_of_ack_ind,json=onuLossOfAckInd,proto3,oneof"`
+}
+
+type AlarmIndication_OnuDiffReachExceededInd struct {
+	OnuDiffReachExceededInd *OnuDifferentialReachExceededIndication `protobuf:"bytes,19,opt,name=onu_diff_reach_exceeded_ind,json=onuDiffReachExceededInd,proto3,oneof"`
+}
+
 func (*AlarmIndication_LosInd) isAlarmIndication_Data() {}
 
 func (*AlarmIndication_DyingGaspInd) isAlarmIndication_Data() {}
@@ -496,6 +712,18 @@
 
 func (*AlarmIndication_OnuItuPonStatsInd) isAlarmIndication_Data() {}
 
+func (*AlarmIndication_OnuDeactivationFailureInd) isAlarmIndication_Data() {}
+
+func (*AlarmIndication_OnuRemoteDefectInd) isAlarmIndication_Data() {}
+
+func (*AlarmIndication_OnuLossGemDelineationInd) isAlarmIndication_Data() {}
+
+func (*AlarmIndication_OnuPhysicalEquipmentErrorInd) isAlarmIndication_Data() {}
+
+func (*AlarmIndication_OnuLossOfAckInd) isAlarmIndication_Data() {}
+
+func (*AlarmIndication_OnuDiffReachExceededInd) isAlarmIndication_Data() {}
+
 func (m *AlarmIndication) GetData() isAlarmIndication_Data {
 	if m != nil {
 		return m.Data
@@ -594,6 +822,48 @@
 	return nil
 }
 
+func (m *AlarmIndication) GetOnuDeactivationFailureInd() *OnuDeactivationFailureIndication {
+	if x, ok := m.GetData().(*AlarmIndication_OnuDeactivationFailureInd); ok {
+		return x.OnuDeactivationFailureInd
+	}
+	return nil
+}
+
+func (m *AlarmIndication) GetOnuRemoteDefectInd() *OnuRemoteDefectIndication {
+	if x, ok := m.GetData().(*AlarmIndication_OnuRemoteDefectInd); ok {
+		return x.OnuRemoteDefectInd
+	}
+	return nil
+}
+
+func (m *AlarmIndication) GetOnuLossGemDelineationInd() *OnuLossOfGEMChannelDelineationIndication {
+	if x, ok := m.GetData().(*AlarmIndication_OnuLossGemDelineationInd); ok {
+		return x.OnuLossGemDelineationInd
+	}
+	return nil
+}
+
+func (m *AlarmIndication) GetOnuPhysicalEquipmentErrorInd() *OnuPhysicalEquipmentErrorIndication {
+	if x, ok := m.GetData().(*AlarmIndication_OnuPhysicalEquipmentErrorInd); ok {
+		return x.OnuPhysicalEquipmentErrorInd
+	}
+	return nil
+}
+
+func (m *AlarmIndication) GetOnuLossOfAckInd() *OnuLossOfAcknowledgementIndication {
+	if x, ok := m.GetData().(*AlarmIndication_OnuLossOfAckInd); ok {
+		return x.OnuLossOfAckInd
+	}
+	return nil
+}
+
+func (m *AlarmIndication) GetOnuDiffReachExceededInd() *OnuDifferentialReachExceededIndication {
+	if x, ok := m.GetData().(*AlarmIndication_OnuDiffReachExceededInd); ok {
+		return x.OnuDiffReachExceededInd
+	}
+	return nil
+}
+
 // XXX_OneofWrappers is for the internal use of the proto package.
 func (*AlarmIndication) XXX_OneofWrappers() []interface{} {
 	return []interface{}{
@@ -610,6 +880,12 @@
 		(*AlarmIndication_OnuProcessingErrorInd)(nil),
 		(*AlarmIndication_OnuLossOfSyncFailInd)(nil),
 		(*AlarmIndication_OnuItuPonStatsInd)(nil),
+		(*AlarmIndication_OnuDeactivationFailureInd)(nil),
+		(*AlarmIndication_OnuRemoteDefectInd)(nil),
+		(*AlarmIndication_OnuLossGemDelineationInd)(nil),
+		(*AlarmIndication_OnuPhysicalEquipmentErrorInd)(nil),
+		(*AlarmIndication_OnuLossOfAckInd)(nil),
+		(*AlarmIndication_OnuDiffReachExceededInd)(nil),
 	}
 }
 
@@ -747,14 +1023,15 @@
 }
 
 type OnuIndication struct {
-	IntfId               uint32        `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
-	OnuId                uint32        `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
-	OperState            string        `protobuf:"bytes,3,opt,name=oper_state,json=operState,proto3" json:"oper_state,omitempty"`
-	AdminState           string        `protobuf:"bytes,5,opt,name=admin_state,json=adminState,proto3" json:"admin_state,omitempty"`
-	SerialNumber         *SerialNumber `protobuf:"bytes,4,opt,name=serial_number,json=serialNumber,proto3" json:"serial_number,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
-	XXX_unrecognized     []byte        `json:"-"`
-	XXX_sizecache        int32         `json:"-"`
+	IntfId               uint32                             `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	OnuId                uint32                             `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+	OperState            string                             `protobuf:"bytes,3,opt,name=oper_state,json=operState,proto3" json:"oper_state,omitempty"`
+	AdminState           string                             `protobuf:"bytes,5,opt,name=admin_state,json=adminState,proto3" json:"admin_state,omitempty"`
+	SerialNumber         *SerialNumber                      `protobuf:"bytes,4,opt,name=serial_number,json=serialNumber,proto3" json:"serial_number,omitempty"`
+	FailReason           OnuIndication_ActivationFailReason `protobuf:"varint,6,opt,name=fail_reason,json=failReason,proto3,enum=openolt.OnuIndication_ActivationFailReason" json:"fail_reason,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                           `json:"-"`
+	XXX_unrecognized     []byte                             `json:"-"`
+	XXX_sizecache        int32                              `json:"-"`
 }
 
 func (m *OnuIndication) Reset()         { *m = OnuIndication{} }
@@ -817,6 +1094,13 @@
 	return nil
 }
 
+func (m *OnuIndication) GetFailReason() OnuIndication_ActivationFailReason {
+	if m != nil {
+		return m.FailReason
+	}
+	return OnuIndication_ONU_ACTIVATION_FAIL_REASON_NONE
+}
+
 type IntfOperIndication struct {
 	Type                 string   `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
 	IntfId               uint32   `protobuf:"fixed32,2,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
@@ -1097,6 +1381,7 @@
 	OnuId                uint32        `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
 	SerialNumber         *SerialNumber `protobuf:"bytes,3,opt,name=serial_number,json=serialNumber,proto3" json:"serial_number,omitempty"`
 	Pir                  uint32        `protobuf:"fixed32,4,opt,name=pir,proto3" json:"pir,omitempty"`
+	OmccEncryption       bool          `protobuf:"varint,5,opt,name=omcc_encryption,json=omccEncryption,proto3" json:"omcc_encryption,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
 	XXX_unrecognized     []byte        `json:"-"`
 	XXX_sizecache        int32         `json:"-"`
@@ -1155,6 +1440,76 @@
 	return 0
 }
 
+func (m *Onu) GetOmccEncryption() bool {
+	if m != nil {
+		return m.OmccEncryption
+	}
+	return false
+}
+
+type OnuLogicalDistance struct {
+	IntfId                 uint32   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	OnuId                  uint32   `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+	LogicalOnuDistanceZero uint32   `protobuf:"fixed32,3,opt,name=logical_onu_distance_zero,json=logicalOnuDistanceZero,proto3" json:"logical_onu_distance_zero,omitempty"`
+	LogicalOnuDistance     uint32   `protobuf:"fixed32,4,opt,name=logical_onu_distance,json=logicalOnuDistance,proto3" json:"logical_onu_distance,omitempty"`
+	XXX_NoUnkeyedLiteral   struct{} `json:"-"`
+	XXX_unrecognized       []byte   `json:"-"`
+	XXX_sizecache          int32    `json:"-"`
+}
+
+func (m *OnuLogicalDistance) Reset()         { *m = OnuLogicalDistance{} }
+func (m *OnuLogicalDistance) String() string { return proto.CompactTextString(m) }
+func (*OnuLogicalDistance) ProtoMessage()    {}
+func (*OnuLogicalDistance) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c072e7aa0dfd74d5, []int{12}
+}
+
+func (m *OnuLogicalDistance) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OnuLogicalDistance.Unmarshal(m, b)
+}
+func (m *OnuLogicalDistance) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OnuLogicalDistance.Marshal(b, m, deterministic)
+}
+func (m *OnuLogicalDistance) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OnuLogicalDistance.Merge(m, src)
+}
+func (m *OnuLogicalDistance) XXX_Size() int {
+	return xxx_messageInfo_OnuLogicalDistance.Size(m)
+}
+func (m *OnuLogicalDistance) XXX_DiscardUnknown() {
+	xxx_messageInfo_OnuLogicalDistance.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuLogicalDistance proto.InternalMessageInfo
+
+func (m *OnuLogicalDistance) GetIntfId() uint32 {
+	if m != nil {
+		return m.IntfId
+	}
+	return 0
+}
+
+func (m *OnuLogicalDistance) GetOnuId() uint32 {
+	if m != nil {
+		return m.OnuId
+	}
+	return 0
+}
+
+func (m *OnuLogicalDistance) GetLogicalOnuDistanceZero() uint32 {
+	if m != nil {
+		return m.LogicalOnuDistanceZero
+	}
+	return 0
+}
+
+func (m *OnuLogicalDistance) GetLogicalOnuDistance() uint32 {
+	if m != nil {
+		return m.LogicalOnuDistance
+	}
+	return 0
+}
+
 type OmciMsg struct {
 	IntfId               uint32   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
 	OnuId                uint32   `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
@@ -1168,7 +1523,7 @@
 func (m *OmciMsg) String() string { return proto.CompactTextString(m) }
 func (*OmciMsg) ProtoMessage()    {}
 func (*OmciMsg) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{12}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{13}
 }
 
 func (m *OmciMsg) XXX_Unmarshal(b []byte) error {
@@ -1225,7 +1580,7 @@
 func (m *OnuPacket) String() string { return proto.CompactTextString(m) }
 func (*OnuPacket) ProtoMessage()    {}
 func (*OnuPacket) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{13}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{14}
 }
 
 func (m *OnuPacket) XXX_Unmarshal(b []byte) error {
@@ -1293,7 +1648,7 @@
 func (m *UplinkPacket) String() string { return proto.CompactTextString(m) }
 func (*UplinkPacket) ProtoMessage()    {}
 func (*UplinkPacket) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{14}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{15}
 }
 
 func (m *UplinkPacket) XXX_Unmarshal(b []byte) error {
@@ -1357,7 +1712,7 @@
 func (m *DeviceInfo) String() string { return proto.CompactTextString(m) }
 func (*DeviceInfo) ProtoMessage()    {}
 func (*DeviceInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{15}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{16}
 }
 
 func (m *DeviceInfo) XXX_Unmarshal(b []byte) error {
@@ -1513,7 +1868,7 @@
 func (m *DeviceInfo_DeviceResourceRanges) String() string { return proto.CompactTextString(m) }
 func (*DeviceInfo_DeviceResourceRanges) ProtoMessage()    {}
 func (*DeviceInfo_DeviceResourceRanges) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{15, 0}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{16, 0}
 }
 
 func (m *DeviceInfo_DeviceResourceRanges) XXX_Unmarshal(b []byte) error {
@@ -1569,7 +1924,7 @@
 func (m *DeviceInfo_DeviceResourceRanges_Pool) String() string { return proto.CompactTextString(m) }
 func (*DeviceInfo_DeviceResourceRanges_Pool) ProtoMessage()    {}
 func (*DeviceInfo_DeviceResourceRanges_Pool) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{15, 0, 0}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{16, 0, 0}
 }
 
 func (m *DeviceInfo_DeviceResourceRanges_Pool) XXX_Unmarshal(b []byte) error {
@@ -1643,7 +1998,7 @@
 func (m *Classifier) String() string { return proto.CompactTextString(m) }
 func (*Classifier) ProtoMessage()    {}
 func (*Classifier) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{16}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{17}
 }
 
 func (m *Classifier) XXX_Unmarshal(b []byte) error {
@@ -1773,6 +2128,12 @@
 	AddOuterTag          bool     `protobuf:"varint,1,opt,name=add_outer_tag,json=addOuterTag,proto3" json:"add_outer_tag,omitempty"`
 	RemoveOuterTag       bool     `protobuf:"varint,2,opt,name=remove_outer_tag,json=removeOuterTag,proto3" json:"remove_outer_tag,omitempty"`
 	TrapToHost           bool     `protobuf:"varint,3,opt,name=trap_to_host,json=trapToHost,proto3" json:"trap_to_host,omitempty"`
+	RemarkOuterPbits     bool     `protobuf:"varint,4,opt,name=remark_outer_pbits,json=remarkOuterPbits,proto3" json:"remark_outer_pbits,omitempty"`
+	RemarkInnerPbits     bool     `protobuf:"varint,5,opt,name=remark_inner_pbits,json=remarkInnerPbits,proto3" json:"remark_inner_pbits,omitempty"`
+	AddInnerTag          bool     `protobuf:"varint,6,opt,name=add_inner_tag,json=addInnerTag,proto3" json:"add_inner_tag,omitempty"`
+	RemoveInnerTag       bool     `protobuf:"varint,7,opt,name=remove_inner_tag,json=removeInnerTag,proto3" json:"remove_inner_tag,omitempty"`
+	TranslateInnerTag    bool     `protobuf:"varint,8,opt,name=translate_inner_tag,json=translateInnerTag,proto3" json:"translate_inner_tag,omitempty"`
+	TranslateOuterTag    bool     `protobuf:"varint,9,opt,name=translate_outer_tag,json=translateOuterTag,proto3" json:"translate_outer_tag,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -1782,7 +2143,7 @@
 func (m *ActionCmd) String() string { return proto.CompactTextString(m) }
 func (*ActionCmd) ProtoMessage()    {}
 func (*ActionCmd) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{17}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{18}
 }
 
 func (m *ActionCmd) XXX_Unmarshal(b []byte) error {
@@ -1824,6 +2185,48 @@
 	return false
 }
 
+func (m *ActionCmd) GetRemarkOuterPbits() bool {
+	if m != nil {
+		return m.RemarkOuterPbits
+	}
+	return false
+}
+
+func (m *ActionCmd) GetRemarkInnerPbits() bool {
+	if m != nil {
+		return m.RemarkInnerPbits
+	}
+	return false
+}
+
+func (m *ActionCmd) GetAddInnerTag() bool {
+	if m != nil {
+		return m.AddInnerTag
+	}
+	return false
+}
+
+func (m *ActionCmd) GetRemoveInnerTag() bool {
+	if m != nil {
+		return m.RemoveInnerTag
+	}
+	return false
+}
+
+func (m *ActionCmd) GetTranslateInnerTag() bool {
+	if m != nil {
+		return m.TranslateInnerTag
+	}
+	return false
+}
+
+func (m *ActionCmd) GetTranslateOuterTag() bool {
+	if m != nil {
+		return m.TranslateOuterTag
+	}
+	return false
+}
+
 type Action struct {
 	Cmd                  *ActionCmd `protobuf:"bytes,1,opt,name=cmd,proto3" json:"cmd,omitempty"`
 	OVid                 uint32     `protobuf:"fixed32,2,opt,name=o_vid,json=oVid,proto3" json:"o_vid,omitempty"`
@@ -1841,7 +2244,7 @@
 func (m *Action) String() string { return proto.CompactTextString(m) }
 func (*Action) ProtoMessage()    {}
 func (*Action) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{18}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{19}
 }
 
 func (m *Action) XXX_Unmarshal(b []byte) error {
@@ -1925,6 +2328,8 @@
 	Priority             int32       `protobuf:"fixed32,9,opt,name=priority,proto3" json:"priority,omitempty"`
 	Cookie               uint64      `protobuf:"fixed64,12,opt,name=cookie,proto3" json:"cookie,omitempty"`
 	PortNo               uint32      `protobuf:"fixed32,13,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+	GroupId              uint32      `protobuf:"fixed32,14,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
+	TechProfileId        uint32      `protobuf:"fixed32,15,opt,name=tech_profile_id,json=techProfileId,proto3" json:"tech_profile_id,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
 	XXX_unrecognized     []byte      `json:"-"`
 	XXX_sizecache        int32       `json:"-"`
@@ -1934,7 +2339,7 @@
 func (m *Flow) String() string { return proto.CompactTextString(m) }
 func (*Flow) ProtoMessage()    {}
 func (*Flow) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{19}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{20}
 }
 
 func (m *Flow) XXX_Unmarshal(b []byte) error {
@@ -2046,6 +2451,20 @@
 	return 0
 }
 
+func (m *Flow) GetGroupId() uint32 {
+	if m != nil {
+		return m.GroupId
+	}
+	return 0
+}
+
+func (m *Flow) GetTechProfileId() uint32 {
+	if m != nil {
+		return m.TechProfileId
+	}
+	return 0
+}
+
 type SerialNumber struct {
 	VendorId             []byte   `protobuf:"bytes,1,opt,name=vendor_id,json=vendorId,proto3" json:"vendor_id,omitempty"`
 	VendorSpecific       []byte   `protobuf:"bytes,2,opt,name=vendor_specific,json=vendorSpecific,proto3" json:"vendor_specific,omitempty"`
@@ -2058,7 +2477,7 @@
 func (m *SerialNumber) String() string { return proto.CompactTextString(m) }
 func (*SerialNumber) ProtoMessage()    {}
 func (*SerialNumber) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{20}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{21}
 }
 
 func (m *SerialNumber) XXX_Unmarshal(b []byte) error {
@@ -2119,7 +2538,7 @@
 func (m *PortStatistics) String() string { return proto.CompactTextString(m) }
 func (*PortStatistics) ProtoMessage()    {}
 func (*PortStatistics) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{21}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{22}
 }
 
 func (m *PortStatistics) XXX_Unmarshal(b []byte) error {
@@ -2268,7 +2687,7 @@
 func (m *FlowStatistics) String() string { return proto.CompactTextString(m) }
 func (*FlowStatistics) ProtoMessage()    {}
 func (*FlowStatistics) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{22}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{23}
 }
 
 func (m *FlowStatistics) XXX_Unmarshal(b []byte) error {
@@ -2343,7 +2762,7 @@
 func (m *LosIndication) String() string { return proto.CompactTextString(m) }
 func (*LosIndication) ProtoMessage()    {}
 func (*LosIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{23}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{24}
 }
 
 func (m *LosIndication) XXX_Unmarshal(b []byte) error {
@@ -2391,7 +2810,7 @@
 func (m *DyingGaspIndication) String() string { return proto.CompactTextString(m) }
 func (*DyingGaspIndication) ProtoMessage()    {}
 func (*DyingGaspIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{24}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{25}
 }
 
 func (m *DyingGaspIndication) XXX_Unmarshal(b []byte) error {
@@ -2451,7 +2870,7 @@
 func (m *OnuAlarmIndication) String() string { return proto.CompactTextString(m) }
 func (*OnuAlarmIndication) ProtoMessage()    {}
 func (*OnuAlarmIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{25}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{26}
 }
 
 func (m *OnuAlarmIndication) XXX_Unmarshal(b []byte) error {
@@ -2541,7 +2960,7 @@
 func (m *OnuStartupFailureIndication) String() string { return proto.CompactTextString(m) }
 func (*OnuStartupFailureIndication) ProtoMessage()    {}
 func (*OnuStartupFailureIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{26}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{27}
 }
 
 func (m *OnuStartupFailureIndication) XXX_Unmarshal(b []byte) error {
@@ -2597,7 +3016,7 @@
 func (m *OnuSignalDegradeIndication) String() string { return proto.CompactTextString(m) }
 func (*OnuSignalDegradeIndication) ProtoMessage()    {}
 func (*OnuSignalDegradeIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{27}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{28}
 }
 
 func (m *OnuSignalDegradeIndication) XXX_Unmarshal(b []byte) error {
@@ -2661,7 +3080,7 @@
 func (m *OnuDriftOfWindowIndication) String() string { return proto.CompactTextString(m) }
 func (*OnuDriftOfWindowIndication) ProtoMessage()    {}
 func (*OnuDriftOfWindowIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{28}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{29}
 }
 
 func (m *OnuDriftOfWindowIndication) XXX_Unmarshal(b []byte) error {
@@ -2730,7 +3149,7 @@
 func (m *OnuLossOfOmciChannelIndication) String() string { return proto.CompactTextString(m) }
 func (*OnuLossOfOmciChannelIndication) ProtoMessage()    {}
 func (*OnuLossOfOmciChannelIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{29}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{30}
 }
 
 func (m *OnuLossOfOmciChannelIndication) XXX_Unmarshal(b []byte) error {
@@ -2786,7 +3205,7 @@
 func (m *OnuSignalsFailureIndication) String() string { return proto.CompactTextString(m) }
 func (*OnuSignalsFailureIndication) ProtoMessage()    {}
 func (*OnuSignalsFailureIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{30}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{31}
 }
 
 func (m *OnuSignalsFailureIndication) XXX_Unmarshal(b []byte) error {
@@ -2849,7 +3268,7 @@
 func (m *OnuTransmissionInterferenceWarning) String() string { return proto.CompactTextString(m) }
 func (*OnuTransmissionInterferenceWarning) ProtoMessage()    {}
 func (*OnuTransmissionInterferenceWarning) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{31}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{32}
 }
 
 func (m *OnuTransmissionInterferenceWarning) XXX_Unmarshal(b []byte) error {
@@ -2911,7 +3330,7 @@
 func (m *OnuActivationFailureIndication) String() string { return proto.CompactTextString(m) }
 func (*OnuActivationFailureIndication) ProtoMessage()    {}
 func (*OnuActivationFailureIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{32}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{33}
 }
 
 func (m *OnuActivationFailureIndication) XXX_Unmarshal(b []byte) error {
@@ -2966,7 +3385,7 @@
 func (m *OnuLossOfKeySyncFailureIndication) String() string { return proto.CompactTextString(m) }
 func (*OnuLossOfKeySyncFailureIndication) ProtoMessage()    {}
 func (*OnuLossOfKeySyncFailureIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{33}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{34}
 }
 
 func (m *OnuLossOfKeySyncFailureIndication) XXX_Unmarshal(b []byte) error {
@@ -3008,20 +3427,69 @@
 	return ""
 }
 
-type OnuItuPonStatsIndication struct {
-	IntfId               uint32   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
-	OnuId                uint32   `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
-	RdiErrors            uint32   `protobuf:"fixed32,3,opt,name=rdi_errors,json=rdiErrors,proto3" json:"rdi_errors,omitempty"`
+type RdiErrorIndication struct {
+	RdiErrorCount        uint64   `protobuf:"fixed64,1,opt,name=rdi_error_count,json=rdiErrorCount,proto3" json:"rdi_error_count,omitempty"`
+	Status               string   `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
 }
 
+func (m *RdiErrorIndication) Reset()         { *m = RdiErrorIndication{} }
+func (m *RdiErrorIndication) String() string { return proto.CompactTextString(m) }
+func (*RdiErrorIndication) ProtoMessage()    {}
+func (*RdiErrorIndication) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c072e7aa0dfd74d5, []int{35}
+}
+
+func (m *RdiErrorIndication) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_RdiErrorIndication.Unmarshal(m, b)
+}
+func (m *RdiErrorIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_RdiErrorIndication.Marshal(b, m, deterministic)
+}
+func (m *RdiErrorIndication) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_RdiErrorIndication.Merge(m, src)
+}
+func (m *RdiErrorIndication) XXX_Size() int {
+	return xxx_messageInfo_RdiErrorIndication.Size(m)
+}
+func (m *RdiErrorIndication) XXX_DiscardUnknown() {
+	xxx_messageInfo_RdiErrorIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_RdiErrorIndication proto.InternalMessageInfo
+
+func (m *RdiErrorIndication) GetRdiErrorCount() uint64 {
+	if m != nil {
+		return m.RdiErrorCount
+	}
+	return 0
+}
+
+func (m *RdiErrorIndication) GetStatus() string {
+	if m != nil {
+		return m.Status
+	}
+	return ""
+}
+
+type OnuItuPonStatsIndication struct {
+	IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	OnuId  uint32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+	// Types that are valid to be assigned to Stats:
+	//	*OnuItuPonStatsIndication_RdiErrorInd
+	Stats                isOnuItuPonStatsIndication_Stats `protobuf_oneof:"stats"`
+	XXX_NoUnkeyedLiteral struct{}                         `json:"-"`
+	XXX_unrecognized     []byte                           `json:"-"`
+	XXX_sizecache        int32                            `json:"-"`
+}
+
 func (m *OnuItuPonStatsIndication) Reset()         { *m = OnuItuPonStatsIndication{} }
 func (m *OnuItuPonStatsIndication) String() string { return proto.CompactTextString(m) }
 func (*OnuItuPonStatsIndication) ProtoMessage()    {}
 func (*OnuItuPonStatsIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{34}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{36}
 }
 
 func (m *OnuItuPonStatsIndication) XXX_Unmarshal(b []byte) error {
@@ -3056,11 +3524,35 @@
 	return 0
 }
 
-func (m *OnuItuPonStatsIndication) GetRdiErrors() uint32 {
+type isOnuItuPonStatsIndication_Stats interface {
+	isOnuItuPonStatsIndication_Stats()
+}
+
+type OnuItuPonStatsIndication_RdiErrorInd struct {
+	RdiErrorInd *RdiErrorIndication `protobuf:"bytes,3,opt,name=rdi_error_ind,json=rdiErrorInd,proto3,oneof"`
+}
+
+func (*OnuItuPonStatsIndication_RdiErrorInd) isOnuItuPonStatsIndication_Stats() {}
+
+func (m *OnuItuPonStatsIndication) GetStats() isOnuItuPonStatsIndication_Stats {
 	if m != nil {
-		return m.RdiErrors
+		return m.Stats
 	}
-	return 0
+	return nil
+}
+
+func (m *OnuItuPonStatsIndication) GetRdiErrorInd() *RdiErrorIndication {
+	if x, ok := m.GetStats().(*OnuItuPonStatsIndication_RdiErrorInd); ok {
+		return x.RdiErrorInd
+	}
+	return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*OnuItuPonStatsIndication) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*OnuItuPonStatsIndication_RdiErrorInd)(nil),
+	}
 }
 
 type OnuProcessingErrorIndication struct {
@@ -3075,7 +3567,7 @@
 func (m *OnuProcessingErrorIndication) String() string { return proto.CompactTextString(m) }
 func (*OnuProcessingErrorIndication) ProtoMessage()    {}
 func (*OnuProcessingErrorIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{35}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{37}
 }
 
 func (m *OnuProcessingErrorIndication) XXX_Unmarshal(b []byte) error {
@@ -3110,6 +3602,529 @@
 	return 0
 }
 
+type OnuDeactivationFailureIndication struct {
+	IntfId               uint32   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	OnuId                uint32   `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+	Status               string   `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *OnuDeactivationFailureIndication) Reset()         { *m = OnuDeactivationFailureIndication{} }
+func (m *OnuDeactivationFailureIndication) String() string { return proto.CompactTextString(m) }
+func (*OnuDeactivationFailureIndication) ProtoMessage()    {}
+func (*OnuDeactivationFailureIndication) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c072e7aa0dfd74d5, []int{38}
+}
+
+func (m *OnuDeactivationFailureIndication) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OnuDeactivationFailureIndication.Unmarshal(m, b)
+}
+func (m *OnuDeactivationFailureIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OnuDeactivationFailureIndication.Marshal(b, m, deterministic)
+}
+func (m *OnuDeactivationFailureIndication) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OnuDeactivationFailureIndication.Merge(m, src)
+}
+func (m *OnuDeactivationFailureIndication) XXX_Size() int {
+	return xxx_messageInfo_OnuDeactivationFailureIndication.Size(m)
+}
+func (m *OnuDeactivationFailureIndication) XXX_DiscardUnknown() {
+	xxx_messageInfo_OnuDeactivationFailureIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuDeactivationFailureIndication proto.InternalMessageInfo
+
+func (m *OnuDeactivationFailureIndication) GetIntfId() uint32 {
+	if m != nil {
+		return m.IntfId
+	}
+	return 0
+}
+
+func (m *OnuDeactivationFailureIndication) GetOnuId() uint32 {
+	if m != nil {
+		return m.OnuId
+	}
+	return 0
+}
+
+func (m *OnuDeactivationFailureIndication) GetStatus() string {
+	if m != nil {
+		return m.Status
+	}
+	return ""
+}
+
+type OnuRemoteDefectIndication struct {
+	IntfId               uint32   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	OnuId                uint32   `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+	RdiErrors            uint64   `protobuf:"fixed64,3,opt,name=rdi_errors,json=rdiErrors,proto3" json:"rdi_errors,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *OnuRemoteDefectIndication) Reset()         { *m = OnuRemoteDefectIndication{} }
+func (m *OnuRemoteDefectIndication) String() string { return proto.CompactTextString(m) }
+func (*OnuRemoteDefectIndication) ProtoMessage()    {}
+func (*OnuRemoteDefectIndication) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c072e7aa0dfd74d5, []int{39}
+}
+
+func (m *OnuRemoteDefectIndication) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OnuRemoteDefectIndication.Unmarshal(m, b)
+}
+func (m *OnuRemoteDefectIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OnuRemoteDefectIndication.Marshal(b, m, deterministic)
+}
+func (m *OnuRemoteDefectIndication) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OnuRemoteDefectIndication.Merge(m, src)
+}
+func (m *OnuRemoteDefectIndication) XXX_Size() int {
+	return xxx_messageInfo_OnuRemoteDefectIndication.Size(m)
+}
+func (m *OnuRemoteDefectIndication) XXX_DiscardUnknown() {
+	xxx_messageInfo_OnuRemoteDefectIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuRemoteDefectIndication proto.InternalMessageInfo
+
+func (m *OnuRemoteDefectIndication) GetIntfId() uint32 {
+	if m != nil {
+		return m.IntfId
+	}
+	return 0
+}
+
+func (m *OnuRemoteDefectIndication) GetOnuId() uint32 {
+	if m != nil {
+		return m.OnuId
+	}
+	return 0
+}
+
+func (m *OnuRemoteDefectIndication) GetRdiErrors() uint64 {
+	if m != nil {
+		return m.RdiErrors
+	}
+	return 0
+}
+
+type OnuLossOfGEMChannelDelineationIndication struct {
+	IntfId               uint32   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	OnuId                uint32   `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+	Status               string   `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
+	DelineationErrors    uint32   `protobuf:"fixed32,4,opt,name=delineation_errors,json=delineationErrors,proto3" json:"delineation_errors,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *OnuLossOfGEMChannelDelineationIndication) Reset() {
+	*m = OnuLossOfGEMChannelDelineationIndication{}
+}
+func (m *OnuLossOfGEMChannelDelineationIndication) String() string { return proto.CompactTextString(m) }
+func (*OnuLossOfGEMChannelDelineationIndication) ProtoMessage()    {}
+func (*OnuLossOfGEMChannelDelineationIndication) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c072e7aa0dfd74d5, []int{40}
+}
+
+func (m *OnuLossOfGEMChannelDelineationIndication) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OnuLossOfGEMChannelDelineationIndication.Unmarshal(m, b)
+}
+func (m *OnuLossOfGEMChannelDelineationIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OnuLossOfGEMChannelDelineationIndication.Marshal(b, m, deterministic)
+}
+func (m *OnuLossOfGEMChannelDelineationIndication) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OnuLossOfGEMChannelDelineationIndication.Merge(m, src)
+}
+func (m *OnuLossOfGEMChannelDelineationIndication) XXX_Size() int {
+	return xxx_messageInfo_OnuLossOfGEMChannelDelineationIndication.Size(m)
+}
+func (m *OnuLossOfGEMChannelDelineationIndication) XXX_DiscardUnknown() {
+	xxx_messageInfo_OnuLossOfGEMChannelDelineationIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuLossOfGEMChannelDelineationIndication proto.InternalMessageInfo
+
+func (m *OnuLossOfGEMChannelDelineationIndication) GetIntfId() uint32 {
+	if m != nil {
+		return m.IntfId
+	}
+	return 0
+}
+
+func (m *OnuLossOfGEMChannelDelineationIndication) GetOnuId() uint32 {
+	if m != nil {
+		return m.OnuId
+	}
+	return 0
+}
+
+func (m *OnuLossOfGEMChannelDelineationIndication) GetStatus() string {
+	if m != nil {
+		return m.Status
+	}
+	return ""
+}
+
+func (m *OnuLossOfGEMChannelDelineationIndication) GetDelineationErrors() uint32 {
+	if m != nil {
+		return m.DelineationErrors
+	}
+	return 0
+}
+
+type OnuPhysicalEquipmentErrorIndication struct {
+	IntfId               uint32   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	OnuId                uint32   `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+	Status               string   `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *OnuPhysicalEquipmentErrorIndication) Reset()         { *m = OnuPhysicalEquipmentErrorIndication{} }
+func (m *OnuPhysicalEquipmentErrorIndication) String() string { return proto.CompactTextString(m) }
+func (*OnuPhysicalEquipmentErrorIndication) ProtoMessage()    {}
+func (*OnuPhysicalEquipmentErrorIndication) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c072e7aa0dfd74d5, []int{41}
+}
+
+func (m *OnuPhysicalEquipmentErrorIndication) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OnuPhysicalEquipmentErrorIndication.Unmarshal(m, b)
+}
+func (m *OnuPhysicalEquipmentErrorIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OnuPhysicalEquipmentErrorIndication.Marshal(b, m, deterministic)
+}
+func (m *OnuPhysicalEquipmentErrorIndication) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OnuPhysicalEquipmentErrorIndication.Merge(m, src)
+}
+func (m *OnuPhysicalEquipmentErrorIndication) XXX_Size() int {
+	return xxx_messageInfo_OnuPhysicalEquipmentErrorIndication.Size(m)
+}
+func (m *OnuPhysicalEquipmentErrorIndication) XXX_DiscardUnknown() {
+	xxx_messageInfo_OnuPhysicalEquipmentErrorIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuPhysicalEquipmentErrorIndication proto.InternalMessageInfo
+
+func (m *OnuPhysicalEquipmentErrorIndication) GetIntfId() uint32 {
+	if m != nil {
+		return m.IntfId
+	}
+	return 0
+}
+
+func (m *OnuPhysicalEquipmentErrorIndication) GetOnuId() uint32 {
+	if m != nil {
+		return m.OnuId
+	}
+	return 0
+}
+
+func (m *OnuPhysicalEquipmentErrorIndication) GetStatus() string {
+	if m != nil {
+		return m.Status
+	}
+	return ""
+}
+
+type OnuLossOfAcknowledgementIndication struct {
+	IntfId               uint32   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	OnuId                uint32   `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+	Status               string   `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *OnuLossOfAcknowledgementIndication) Reset()         { *m = OnuLossOfAcknowledgementIndication{} }
+func (m *OnuLossOfAcknowledgementIndication) String() string { return proto.CompactTextString(m) }
+func (*OnuLossOfAcknowledgementIndication) ProtoMessage()    {}
+func (*OnuLossOfAcknowledgementIndication) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c072e7aa0dfd74d5, []int{42}
+}
+
+func (m *OnuLossOfAcknowledgementIndication) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OnuLossOfAcknowledgementIndication.Unmarshal(m, b)
+}
+func (m *OnuLossOfAcknowledgementIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OnuLossOfAcknowledgementIndication.Marshal(b, m, deterministic)
+}
+func (m *OnuLossOfAcknowledgementIndication) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OnuLossOfAcknowledgementIndication.Merge(m, src)
+}
+func (m *OnuLossOfAcknowledgementIndication) XXX_Size() int {
+	return xxx_messageInfo_OnuLossOfAcknowledgementIndication.Size(m)
+}
+func (m *OnuLossOfAcknowledgementIndication) XXX_DiscardUnknown() {
+	xxx_messageInfo_OnuLossOfAcknowledgementIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuLossOfAcknowledgementIndication proto.InternalMessageInfo
+
+func (m *OnuLossOfAcknowledgementIndication) GetIntfId() uint32 {
+	if m != nil {
+		return m.IntfId
+	}
+	return 0
+}
+
+func (m *OnuLossOfAcknowledgementIndication) GetOnuId() uint32 {
+	if m != nil {
+		return m.OnuId
+	}
+	return 0
+}
+
+func (m *OnuLossOfAcknowledgementIndication) GetStatus() string {
+	if m != nil {
+		return m.Status
+	}
+	return ""
+}
+
+type OnuDifferentialReachExceededIndication struct {
+	IntfId               uint32   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	OnuId                uint32   `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+	Status               string   `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
+	Distance             uint32   `protobuf:"fixed32,4,opt,name=distance,proto3" json:"distance,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *OnuDifferentialReachExceededIndication) Reset() {
+	*m = OnuDifferentialReachExceededIndication{}
+}
+func (m *OnuDifferentialReachExceededIndication) String() string { return proto.CompactTextString(m) }
+func (*OnuDifferentialReachExceededIndication) ProtoMessage()    {}
+func (*OnuDifferentialReachExceededIndication) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c072e7aa0dfd74d5, []int{43}
+}
+
+func (m *OnuDifferentialReachExceededIndication) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OnuDifferentialReachExceededIndication.Unmarshal(m, b)
+}
+func (m *OnuDifferentialReachExceededIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OnuDifferentialReachExceededIndication.Marshal(b, m, deterministic)
+}
+func (m *OnuDifferentialReachExceededIndication) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OnuDifferentialReachExceededIndication.Merge(m, src)
+}
+func (m *OnuDifferentialReachExceededIndication) XXX_Size() int {
+	return xxx_messageInfo_OnuDifferentialReachExceededIndication.Size(m)
+}
+func (m *OnuDifferentialReachExceededIndication) XXX_DiscardUnknown() {
+	xxx_messageInfo_OnuDifferentialReachExceededIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuDifferentialReachExceededIndication proto.InternalMessageInfo
+
+func (m *OnuDifferentialReachExceededIndication) GetIntfId() uint32 {
+	if m != nil {
+		return m.IntfId
+	}
+	return 0
+}
+
+func (m *OnuDifferentialReachExceededIndication) GetOnuId() uint32 {
+	if m != nil {
+		return m.OnuId
+	}
+	return 0
+}
+
+func (m *OnuDifferentialReachExceededIndication) GetStatus() string {
+	if m != nil {
+		return m.Status
+	}
+	return ""
+}
+
+func (m *OnuDifferentialReachExceededIndication) GetDistance() uint32 {
+	if m != nil {
+		return m.Distance
+	}
+	return 0
+}
+
+type GroupMember struct {
+	InterfaceId          uint32                    `protobuf:"varint,1,opt,name=interface_id,json=interfaceId,proto3" json:"interface_id,omitempty"`
+	InterfaceType        GroupMember_InterfaceType `protobuf:"varint,2,opt,name=interface_type,json=interfaceType,proto3,enum=openolt.GroupMember_InterfaceType" json:"interface_type,omitempty"`
+	GemPortId            uint32                    `protobuf:"varint,3,opt,name=gem_port_id,json=gemPortId,proto3" json:"gem_port_id,omitempty"`
+	Priority             uint32                    `protobuf:"varint,4,opt,name=priority,proto3" json:"priority,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
+	XXX_unrecognized     []byte                    `json:"-"`
+	XXX_sizecache        int32                     `json:"-"`
+}
+
+func (m *GroupMember) Reset()         { *m = GroupMember{} }
+func (m *GroupMember) String() string { return proto.CompactTextString(m) }
+func (*GroupMember) ProtoMessage()    {}
+func (*GroupMember) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c072e7aa0dfd74d5, []int{44}
+}
+
+func (m *GroupMember) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GroupMember.Unmarshal(m, b)
+}
+func (m *GroupMember) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GroupMember.Marshal(b, m, deterministic)
+}
+func (m *GroupMember) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GroupMember.Merge(m, src)
+}
+func (m *GroupMember) XXX_Size() int {
+	return xxx_messageInfo_GroupMember.Size(m)
+}
+func (m *GroupMember) XXX_DiscardUnknown() {
+	xxx_messageInfo_GroupMember.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GroupMember proto.InternalMessageInfo
+
+func (m *GroupMember) GetInterfaceId() uint32 {
+	if m != nil {
+		return m.InterfaceId
+	}
+	return 0
+}
+
+func (m *GroupMember) GetInterfaceType() GroupMember_InterfaceType {
+	if m != nil {
+		return m.InterfaceType
+	}
+	return GroupMember_PON
+}
+
+func (m *GroupMember) GetGemPortId() uint32 {
+	if m != nil {
+		return m.GemPortId
+	}
+	return 0
+}
+
+func (m *GroupMember) GetPriority() uint32 {
+	if m != nil {
+		return m.Priority
+	}
+	return 0
+}
+
+type Group struct {
+	GroupId              uint32                    `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
+	Command              Group_GroupMembersCommand `protobuf:"varint,2,opt,name=command,proto3,enum=openolt.Group_GroupMembersCommand" json:"command,omitempty"`
+	Members              []*GroupMember            `protobuf:"bytes,3,rep,name=members,proto3" json:"members,omitempty"`
+	Action               *Action                   `protobuf:"bytes,4,opt,name=action,proto3" json:"action,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
+	XXX_unrecognized     []byte                    `json:"-"`
+	XXX_sizecache        int32                     `json:"-"`
+}
+
+func (m *Group) Reset()         { *m = Group{} }
+func (m *Group) String() string { return proto.CompactTextString(m) }
+func (*Group) ProtoMessage()    {}
+func (*Group) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c072e7aa0dfd74d5, []int{45}
+}
+
+func (m *Group) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Group.Unmarshal(m, b)
+}
+func (m *Group) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Group.Marshal(b, m, deterministic)
+}
+func (m *Group) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Group.Merge(m, src)
+}
+func (m *Group) XXX_Size() int {
+	return xxx_messageInfo_Group.Size(m)
+}
+func (m *Group) XXX_DiscardUnknown() {
+	xxx_messageInfo_Group.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Group proto.InternalMessageInfo
+
+func (m *Group) GetGroupId() uint32 {
+	if m != nil {
+		return m.GroupId
+	}
+	return 0
+}
+
+func (m *Group) GetCommand() Group_GroupMembersCommand {
+	if m != nil {
+		return m.Command
+	}
+	return Group_ADD_MEMBERS
+}
+
+func (m *Group) GetMembers() []*GroupMember {
+	if m != nil {
+		return m.Members
+	}
+	return nil
+}
+
+func (m *Group) GetAction() *Action {
+	if m != nil {
+		return m.Action
+	}
+	return nil
+}
+
+type ValueParam struct {
+	Onu                  *Onu                  `protobuf:"bytes,1,opt,name=onu,proto3" json:"onu,omitempty"`
+	Value                common.ValueType_Type `protobuf:"varint,2,opt,name=value,proto3,enum=common.ValueType_Type" json:"value,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
+	XXX_unrecognized     []byte                `json:"-"`
+	XXX_sizecache        int32                 `json:"-"`
+}
+
+func (m *ValueParam) Reset()         { *m = ValueParam{} }
+func (m *ValueParam) String() string { return proto.CompactTextString(m) }
+func (*ValueParam) ProtoMessage()    {}
+func (*ValueParam) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c072e7aa0dfd74d5, []int{46}
+}
+
+func (m *ValueParam) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ValueParam.Unmarshal(m, b)
+}
+func (m *ValueParam) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ValueParam.Marshal(b, m, deterministic)
+}
+func (m *ValueParam) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ValueParam.Merge(m, src)
+}
+func (m *ValueParam) XXX_Size() int {
+	return xxx_messageInfo_ValueParam.Size(m)
+}
+func (m *ValueParam) XXX_DiscardUnknown() {
+	xxx_messageInfo_ValueParam.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ValueParam proto.InternalMessageInfo
+
+func (m *ValueParam) GetOnu() *Onu {
+	if m != nil {
+		return m.Onu
+	}
+	return nil
+}
+
+func (m *ValueParam) GetValue() common.ValueType_Type {
+	if m != nil {
+		return m.Value
+	}
+	return common.ValueType_EMPTY
+}
+
 type Empty struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -3120,7 +4135,7 @@
 func (m *Empty) String() string { return proto.CompactTextString(m) }
 func (*Empty) ProtoMessage()    {}
 func (*Empty) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{36}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{47}
 }
 
 func (m *Empty) XXX_Unmarshal(b []byte) error {
@@ -3142,8 +4157,11 @@
 var xxx_messageInfo_Empty proto.InternalMessageInfo
 
 func init() {
+	proto.RegisterEnum("openolt.OnuIndication_ActivationFailReason", OnuIndication_ActivationFailReason_name, OnuIndication_ActivationFailReason_value)
 	proto.RegisterEnum("openolt.DeviceInfo_DeviceResourceRanges_Pool_PoolType", DeviceInfo_DeviceResourceRanges_Pool_PoolType_name, DeviceInfo_DeviceResourceRanges_Pool_PoolType_value)
 	proto.RegisterEnum("openolt.DeviceInfo_DeviceResourceRanges_Pool_SharingType", DeviceInfo_DeviceResourceRanges_Pool_SharingType_name, DeviceInfo_DeviceResourceRanges_Pool_SharingType_value)
+	proto.RegisterEnum("openolt.GroupMember_InterfaceType", GroupMember_InterfaceType_name, GroupMember_InterfaceType_value)
+	proto.RegisterEnum("openolt.Group_GroupMembersCommand", Group_GroupMembersCommand_name, Group_GroupMembersCommand_value)
 	proto.RegisterType((*Indication)(nil), "openolt.Indication")
 	proto.RegisterType((*AlarmIndication)(nil), "openolt.AlarmIndication")
 	proto.RegisterType((*OltIndication)(nil), "openolt.OltIndication")
@@ -3156,6 +4174,7 @@
 	proto.RegisterType((*Interface)(nil), "openolt.Interface")
 	proto.RegisterType((*Heartbeat)(nil), "openolt.Heartbeat")
 	proto.RegisterType((*Onu)(nil), "openolt.Onu")
+	proto.RegisterType((*OnuLogicalDistance)(nil), "openolt.OnuLogicalDistance")
 	proto.RegisterType((*OmciMsg)(nil), "openolt.OmciMsg")
 	proto.RegisterType((*OnuPacket)(nil), "openolt.OnuPacket")
 	proto.RegisterType((*UplinkPacket)(nil), "openolt.UplinkPacket")
@@ -3180,211 +4199,291 @@
 	proto.RegisterType((*OnuTransmissionInterferenceWarning)(nil), "openolt.OnuTransmissionInterferenceWarning")
 	proto.RegisterType((*OnuActivationFailureIndication)(nil), "openolt.OnuActivationFailureIndication")
 	proto.RegisterType((*OnuLossOfKeySyncFailureIndication)(nil), "openolt.OnuLossOfKeySyncFailureIndication")
+	proto.RegisterType((*RdiErrorIndication)(nil), "openolt.RdiErrorIndication")
 	proto.RegisterType((*OnuItuPonStatsIndication)(nil), "openolt.OnuItuPonStatsIndication")
 	proto.RegisterType((*OnuProcessingErrorIndication)(nil), "openolt.OnuProcessingErrorIndication")
+	proto.RegisterType((*OnuDeactivationFailureIndication)(nil), "openolt.OnuDeactivationFailureIndication")
+	proto.RegisterType((*OnuRemoteDefectIndication)(nil), "openolt.OnuRemoteDefectIndication")
+	proto.RegisterType((*OnuLossOfGEMChannelDelineationIndication)(nil), "openolt.OnuLossOfGEMChannelDelineationIndication")
+	proto.RegisterType((*OnuPhysicalEquipmentErrorIndication)(nil), "openolt.OnuPhysicalEquipmentErrorIndication")
+	proto.RegisterType((*OnuLossOfAcknowledgementIndication)(nil), "openolt.OnuLossOfAcknowledgementIndication")
+	proto.RegisterType((*OnuDifferentialReachExceededIndication)(nil), "openolt.OnuDifferentialReachExceededIndication")
+	proto.RegisterType((*GroupMember)(nil), "openolt.GroupMember")
+	proto.RegisterType((*Group)(nil), "openolt.Group")
+	proto.RegisterType((*ValueParam)(nil), "openolt.ValueParam")
 	proto.RegisterType((*Empty)(nil), "openolt.Empty")
 }
 
 func init() { proto.RegisterFile("voltha_protos/openolt.proto", fileDescriptor_c072e7aa0dfd74d5) }
 
 var fileDescriptor_c072e7aa0dfd74d5 = []byte{
-	// 3127 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0xdd, 0x72, 0x1c, 0x47,
-	0xf5, 0xf7, 0x4a, 0xab, 0x9d, 0xdd, 0xb3, 0x1f, 0x92, 0x5b, 0xd6, 0xb7, 0x62, 0x2b, 0xf3, 0xf7,
-	0x3f, 0x31, 0xa1, 0x62, 0xc5, 0x4e, 0x0a, 0x48, 0xa0, 0x20, 0xb2, 0x24, 0x47, 0x4b, 0x2c, 0xaf,
-	0x18, 0xc9, 0x31, 0x84, 0xa2, 0x26, 0xa3, 0x99, 0xde, 0x55, 0x97, 0x66, 0xa7, 0x27, 0xd3, 0xbd,
-	0xfa, 0x28, 0xee, 0x02, 0xbc, 0x00, 0x29, 0x2e, 0xa0, 0x8a, 0x2b, 0x5e, 0x82, 0x2a, 0x2e, 0x73,
-	0x4b, 0x71, 0xc3, 0x2b, 0x70, 0xc3, 0x3b, 0x70, 0x41, 0xf5, 0xe9, 0x9e, 0xd9, 0x99, 0x5d, 0x49,
-	0xb6, 0x8c, 0x29, 0x6e, 0x54, 0xd3, 0xe7, 0xfc, 0xce, 0xef, 0xf4, 0xe9, 0x3e, 0x7d, 0xfa, 0x63,
-	0x05, 0x2b, 0x27, 0x3c, 0x94, 0x47, 0x9e, 0x1b, 0x27, 0x5c, 0x72, 0xb1, 0xce, 0x63, 0x1a, 0xf1,
-	0x50, 0xde, 0xc7, 0x26, 0xb1, 0x4c, 0x73, 0x79, 0xb5, 0xc7, 0x79, 0x2f, 0xa4, 0xeb, 0x5e, 0xcc,
-	0xd6, 0xbd, 0x28, 0xe2, 0xd2, 0x93, 0x8c, 0x47, 0x42, 0xc3, 0x96, 0xd7, 0x8a, 0x1c, 0x92, 0xfa,
-	0x47, 0xea, 0xbb, 0xcb, 0x42, 0xaa, 0x11, 0xf6, 0x5f, 0xcb, 0x00, 0xed, 0x28, 0x60, 0x3e, 0xda,
-	0x91, 0x07, 0x60, 0xf1, 0x50, 0xba, 0x2c, 0x0a, 0x16, 0x4b, 0x6b, 0xa5, 0x7b, 0xf5, 0x87, 0xf3,
-	0xf7, 0x53, 0xc7, 0x9d, 0x50, 0x0e, 0x81, 0x3b, 0x37, 0x9c, 0x0a, 0x47, 0x01, 0xf9, 0x00, 0xaa,
-	0x2c, 0x92, 0x5d, 0xb4, 0x99, 0x40, 0x9b, 0x85, 0xcc, 0xa6, 0x1d, 0xc9, 0x6e, 0xc1, 0xc8, 0x62,
-	0x5a, 0x42, 0x36, 0xa0, 0x89, 0x56, 0x3c, 0xa6, 0x09, 0x9a, 0x4e, 0xa2, 0xe9, 0x4a, 0xc1, 0xb4,
-	0x13, 0xd3, 0xa4, 0x60, 0x5e, 0x67, 0x43, 0x29, 0xf9, 0x21, 0x34, 0x78, 0x34, 0x70, 0x03, 0x26,
-	0x7c, 0x64, 0x28, 0x23, 0xc3, 0xf2, 0xb0, 0xc3, 0xd1, 0x60, 0x8b, 0x09, 0xbf, 0x40, 0x00, 0x3c,
-	0x13, 0x62, 0xac, 0xd1, 0x00, 0x4d, 0xa7, 0x46, 0x63, 0x8d, 0x06, 0x23, 0xb1, 0xa2, 0x40, 0xc5,
-	0xca, 0xfb, 0x3e, 0x43, 0x9b, 0xca, 0x48, 0xac, 0x9d, 0xbe, 0xcf, 0x8a, 0xb1, 0x72, 0x2d, 0x21,
-	0x1f, 0x80, 0x15, 0x1f, 0xeb, 0x41, 0xb5, 0xd0, 0x68, 0x29, 0x33, 0xda, 0xf3, 0xfc, 0x63, 0x3a,
-	0x32, 0xae, 0xf1, 0x31, 0x8e, 0xeb, 0xf7, 0x00, 0x62, 0x9e, 0x48, 0x57, 0x48, 0x4f, 0x8a, 0xc5,
-	0xea, 0x88, 0xb7, 0x3d, 0x9e, 0xc8, 0x7d, 0x35, 0xd9, 0x42, 0x32, 0x5f, 0xec, 0xdc, 0x70, 0x6a,
-	0xb1, 0x91, 0x08, 0x65, 0xd9, 0x0d, 0xf9, 0xa9, 0xb1, 0xac, 0x8d, 0x58, 0x3e, 0x0e, 0xf9, 0x69,
-	0xd1, 0xb2, 0x6b, 0x24, 0x82, 0x7c, 0x17, 0x6a, 0x5e, 0xe8, 0x25, 0x7d, 0xec, 0x2b, 0xa0, 0xe1,
-	0x62, 0x66, 0xb8, 0xa1, 0x34, 0x85, 0xae, 0x56, 0x3d, 0x23, 0x7a, 0x54, 0x81, 0x72, 0xe0, 0x49,
-	0xcf, 0xfe, 0x67, 0x15, 0xa6, 0x47, 0x70, 0x6a, 0x9c, 0x43, 0x2e, 0x2e, 0xcc, 0xa9, 0x27, 0x5c,
-	0x14, 0x63, 0x0f, 0x51, 0x40, 0xb6, 0xa0, 0x15, 0x9c, 0xb3, 0xa8, 0xe7, 0xf6, 0x3c, 0x11, 0xe7,
-	0x32, 0x6b, 0x35, 0xb3, 0xdc, 0x52, 0xea, 0x4f, 0x3c, 0x11, 0x17, 0xec, 0x1b, 0x41, 0x4e, 0xac,
-	0x72, 0x4c, 0x4d, 0xf0, 0x30, 0xa2, 0xd1, 0x1c, 0xeb, 0x44, 0x83, 0xf1, 0xa0, 0xea, 0x7c, 0x28,
-	0x25, 0xcf, 0xe1, 0x96, 0xa2, 0x10, 0xd2, 0x4b, 0xe4, 0x20, 0x76, 0xbb, 0x1e, 0x0b, 0x73, 0xb9,
-	0x76, 0x37, 0xcf, 0xb4, 0xaf, 0x31, 0x8f, 0x3d, 0x16, 0x0e, 0x12, 0x5a, 0xa0, 0xbc, 0xc9, 0x0b,
-	0x6a, 0x45, 0xfc, 0x39, 0xcc, 0x23, 0x31, 0xeb, 0x45, 0x5e, 0xe8, 0x06, 0xb4, 0x97, 0x78, 0x01,
-	0xcd, 0xe5, 0xe2, 0xff, 0x15, 0xa8, 0x11, 0xb5, 0xa5, 0x41, 0x05, 0xe6, 0x59, 0x3e, 0xae, 0x25,
-	0x3f, 0x87, 0x05, 0x5c, 0x18, 0x09, 0xeb, 0x4a, 0x97, 0x77, 0xdd, 0x53, 0x16, 0x05, 0xfc, 0x34,
-	0x97, 0xb4, 0x05, 0xf2, 0x2d, 0x05, 0xeb, 0x74, 0x9f, 0x23, 0x68, 0x8c, 0x7c, 0x54, 0x4b, 0x0e,
-	0x40, 0x45, 0xe3, 0x86, 0x5c, 0x08, 0x37, 0x5b, 0x0b, 0x3a, 0xad, 0xdf, 0xce, 0xd3, 0x3e, 0xe1,
-	0x42, 0x74, 0xba, 0x6a, 0x51, 0x6c, 0x1e, 0x79, 0x51, 0x44, 0xc3, 0x02, 0x75, 0x8b, 0x1b, 0x84,
-	0x59, 0x22, 0xe9, 0x38, 0x63, 0x28, 0x62, 0x38, 0xce, 0xd5, 0x0b, 0xc6, 0x59, 0x63, 0x2e, 0x1d,
-	0xe7, 0xa1, 0x5a, 0x11, 0x77, 0x74, 0x91, 0x90, 0xec, 0x54, 0xf7, 0x54, 0xaf, 0x86, 0x6f, 0xe7,
-	0x09, 0x0f, 0x12, 0x2f, 0x12, 0x7d, 0x26, 0x04, 0xe3, 0x51, 0x3b, 0x92, 0x34, 0xe9, 0xd2, 0x84,
-	0x46, 0x3e, 0x7d, 0xee, 0x25, 0x11, 0x8b, 0x7a, 0xa6, 0x6a, 0x1c, 0xb0, 0x53, 0xec, 0xe9, 0x17,
-	0x7a, 0x70, 0x3d, 0x5f, 0xb2, 0x13, 0xf4, 0x3b, 0xec, 0x2c, 0x8c, 0x8f, 0xc2, 0x46, 0x06, 0xbb,
-	0xa8, 0xbf, 0x2a, 0xe6, 0x22, 0x42, 0x7b, 0x58, 0x54, 0x1e, 0xe2, 0x84, 0xfb, 0x54, 0x08, 0xb5,
-	0x0a, 0x68, 0x92, 0x70, 0x5d, 0x25, 0xeb, 0xe8, 0xe2, 0xff, 0xf3, 0x2e, 0xf6, 0x32, 0xdc, 0xb6,
-	0x82, 0x15, 0x1c, 0xcc, 0xf1, 0x8b, 0xf4, 0x84, 0xc2, 0xd2, 0x70, 0x0e, 0xbb, 0xae, 0x38, 0x8f,
-	0xfc, 0x61, 0x14, 0x0d, 0x74, 0xf1, 0xce, 0xf8, 0x5c, 0x7e, 0x4a, 0xcf, 0xf7, 0xcf, 0x23, 0xff,
-	0xb2, 0x40, 0x34, 0x28, 0x45, 0x28, 0x37, 0xcf, 0x60, 0x0e, 0x0b, 0xac, 0x1c, 0xb8, 0x31, 0x8f,
-	0x74, 0x39, 0x42, 0x17, 0x4d, 0x74, 0xf1, 0x66, 0xa1, 0xdc, 0xca, 0xc1, 0x1e, 0x8f, 0xb0, 0x0a,
-	0x8d, 0x4d, 0x69, 0x51, 0x97, 0xd5, 0x9a, 0xfb, 0xd0, 0x2c, 0xec, 0x49, 0xe4, 0x0d, 0x00, 0xdc,
-	0x4e, 0x94, 0x23, 0x8a, 0xb5, 0xa6, 0xe6, 0xd4, 0x94, 0x44, 0x99, 0x52, 0x7b, 0x07, 0x5a, 0xc5,
-	0xfd, 0x88, 0x2c, 0x80, 0xa5, 0xb7, 0x2e, 0x5d, 0x99, 0x2c, 0xa7, 0x82, 0xdb, 0x53, 0x30, 0xc2,
-	0x34, 0x31, 0xca, 0x74, 0x04, 0x37, 0xc7, 0x36, 0x97, 0xcb, 0xc9, 0x3e, 0x82, 0xa6, 0xa0, 0x09,
-	0xf3, 0x42, 0x37, 0x1a, 0xf4, 0x0f, 0x69, 0x62, 0x6a, 0xd9, 0x5c, 0x16, 0xfe, 0x3e, 0x6a, 0x9f,
-	0xa2, 0xd2, 0x69, 0x88, 0x5c, 0xcb, 0xfe, 0x4b, 0x09, 0x9a, 0x85, 0xcd, 0xe8, 0x72, 0x37, 0x73,
-	0x50, 0xc1, 0xd1, 0xd6, 0xb5, 0xd2, 0x72, 0xa6, 0xd4, 0xc8, 0x8d, 0x86, 0x32, 0x39, 0x12, 0x0a,
-	0xb9, 0x03, 0x75, 0x2f, 0xe8, 0xb3, 0xc8, 0xe8, 0xa7, 0x50, 0x0f, 0x28, 0xd2, 0x80, 0xb1, 0xde,
-	0x97, 0x5f, 0xbe, 0xf7, 0x5f, 0x00, 0x19, 0xdf, 0xc6, 0x09, 0x81, 0xb2, 0x3c, 0x8f, 0xd3, 0x09,
-	0xc2, 0xef, 0x7c, 0x54, 0x13, 0x57, 0xcc, 0xc4, 0x68, 0xf7, 0x6d, 0x07, 0x5a, 0xc5, 0x7d, 0xf7,
-	0xda, 0xe3, 0x33, 0x03, 0x93, 0xf1, 0xb1, 0x44, 0xe6, 0x86, 0xa3, 0x3e, 0xed, 0x6f, 0x4a, 0x30,
-	0x33, 0xba, 0x2f, 0x93, 0x15, 0xa8, 0x21, 0x2d, 0xf6, 0x5c, 0x8f, 0x12, 0x1e, 0x7b, 0x0e, 0x46,
-	0x7a, 0x3f, 0x96, 0x47, 0x3d, 0xda, 0xc7, 0x6d, 0x3c, 0xf3, 0x5b, 0x33, 0x92, 0x76, 0xa0, 0xec,
-	0x70, 0xa3, 0x66, 0x7a, 0x6b, 0xb2, 0x9c, 0x8a, 0x6a, 0x6a, 0x05, 0x1a, 0x45, 0x1c, 0x2b, 0xb6,
-	0xe5, 0x54, 0x54, 0xf3, 0x29, 0x27, 0xf3, 0x50, 0xf1, 0x39, 0x3f, 0x66, 0x14, 0x4b, 0x6e, 0xc5,
-	0x31, 0xad, 0x34, 0x8a, 0xf2, 0x30, 0x8a, 0xbb, 0x50, 0xd3, 0xc5, 0xcc, 0xf3, 0x2f, 0xef, 0xa0,
-	0xfd, 0x03, 0xa8, 0xed, 0x50, 0x2f, 0x91, 0x87, 0xd4, 0x93, 0x64, 0x1d, 0x66, 0x8f, 0xd2, 0x86,
-	0x2e, 0xc5, 0x72, 0x90, 0x50, 0x63, 0x41, 0x32, 0xd5, 0x7e, 0xaa, 0xb1, 0x7f, 0x55, 0x82, 0xc9,
-	0x4e, 0x34, 0xb8, 0xf6, 0x98, 0x8f, 0xe5, 0xd4, 0xe4, 0x4b, 0xe7, 0x14, 0x46, 0xca, 0x74, 0x16,
-	0x5a, 0x8e, 0xfa, 0xb4, 0x3f, 0x05, 0x4b, 0xe5, 0xc0, 0xae, 0xe8, 0xbd, 0x86, 0xc9, 0xff, 0x4d,
-	0x09, 0x6a, 0xaa, 0xa8, 0xe2, 0xfc, 0x5f, 0x9b, 0x2f, 0x37, 0x6f, 0xe5, 0xc2, 0xbc, 0x15, 0x13,
-	0x61, 0x6a, 0x34, 0x11, 0xc6, 0xfb, 0xf1, 0x21, 0x34, 0x9e, 0xc5, 0x21, 0x8b, 0x8e, 0x5f, 0xd4,
-	0x13, 0x63, 0x3a, 0x31, 0x34, 0xfd, 0x6d, 0x0d, 0x60, 0x8b, 0x9e, 0x30, 0x9f, 0xb6, 0xa3, 0x2e,
-	0xa6, 0xcc, 0x09, 0x8d, 0x02, 0x9e, 0x98, 0x05, 0x67, 0x5a, 0xe4, 0x16, 0x4c, 0xf5, 0x79, 0x40,
-	0x43, 0x53, 0xde, 0x74, 0x83, 0x7c, 0x0b, 0x66, 0x8e, 0xbc, 0x24, 0x38, 0xf5, 0x12, 0xea, 0x9e,
-	0xd0, 0x44, 0xed, 0x89, 0x66, 0xd5, 0x4d, 0xa7, 0xf2, 0xcf, 0xb4, 0x58, 0x41, 0xbb, 0x2c, 0xe9,
-	0x17, 0xa0, 0x65, 0x0d, 0x4d, 0xe5, 0x29, 0x74, 0x05, 0x6a, 0x01, 0xf6, 0x48, 0xf5, 0x7f, 0x46,
-	0xaf, 0x1e, 0x2d, 0x68, 0x07, 0xe4, 0x3d, 0xb8, 0x65, 0x94, 0xc5, 0xa4, 0xb8, 0x89, 0x38, 0xa2,
-	0x75, 0xf9, 0x8c, 0x50, 0x74, 0x6a, 0x43, 0x51, 0x83, 0x27, 0x70, 0xbf, 0xb2, 0x9c, 0x6a, 0xcc,
-	0x23, 0x75, 0x26, 0x16, 0xe4, 0x36, 0x80, 0xba, 0xe7, 0x44, 0x3c, 0xe4, 0xbd, 0xf3, 0xb4, 0xa0,
-	0x0d, 0x25, 0x64, 0x4d, 0x9f, 0x08, 0x58, 0xa0, 0x4f, 0x75, 0x66, 0x81, 0x01, 0x4e, 0x20, 0x1e,
-	0xd2, 0xc8, 0x2a, 0x80, 0x41, 0x50, 0x73, 0xb6, 0xb1, 0x9c, 0x2a, 0xea, 0xb7, 0xa3, 0x80, 0xdc,
-	0x85, 0x96, 0x17, 0x86, 0xdc, 0x1f, 0x32, 0x54, 0x11, 0xd1, 0x40, 0x69, 0xca, 0xb1, 0x06, 0x8d,
-	0x0c, 0x45, 0xcd, 0xb9, 0xc3, 0x72, 0xc0, 0x60, 0x14, 0xcf, 0x3d, 0x98, 0x19, 0xa6, 0x84, 0x61,
-	0x02, 0x44, 0xb5, 0xb2, 0xc4, 0xd0, 0x5c, 0x77, 0xa1, 0x95, 0x43, 0x52, 0x73, 0x0c, 0xb0, 0x9c,
-	0x46, 0x86, 0x53, 0x7c, 0x36, 0x34, 0x4d, 0x31, 0x31, 0x64, 0x4d, 0x04, 0xd5, 0x75, 0x49, 0xd1,
-	0x4c, 0xb7, 0xa1, 0x9e, 0x62, 0x14, 0x4d, 0x4b, 0xe7, 0xa1, 0x46, 0x28, 0x8e, 0x8f, 0xa1, 0x92,
-	0x78, 0x51, 0x8f, 0x8a, 0xc5, 0xe9, 0xb5, 0xc9, 0x7b, 0xf5, 0x87, 0xf7, 0x86, 0xe7, 0xed, 0x2c,
-	0xa1, 0xcc, 0xa7, 0x43, 0x05, 0x1f, 0x24, 0x3e, 0x75, 0x10, 0xef, 0x18, 0xbb, 0xe5, 0xdf, 0x95,
-	0xe1, 0xd6, 0x45, 0x00, 0xb2, 0x94, 0x5e, 0x13, 0x03, 0xb1, 0x58, 0x5a, 0x9b, 0xbc, 0x67, 0x99,
-	0xbb, 0x60, 0x30, 0x3a, 0x63, 0x13, 0x63, 0x33, 0xb6, 0x09, 0x53, 0x31, 0xe7, 0xa1, 0x58, 0x9c,
-	0xc4, 0x4e, 0xbd, 0xfb, 0xb2, 0x9d, 0xba, 0xbf, 0xc7, 0x79, 0xe8, 0x68, 0xdb, 0xe5, 0x7f, 0x4d,
-	0x40, 0x59, 0xb5, 0xc9, 0x8f, 0x73, 0xdb, 0x4f, 0xeb, 0xe1, 0x77, 0xae, 0x45, 0x86, 0x7f, 0x54,
-	0xc9, 0x37, 0xdb, 0xd6, 0x3e, 0x58, 0xe2, 0xc8, 0x4b, 0x58, 0xd4, 0xc3, 0x6e, 0xb7, 0x1e, 0x7e,
-	0x78, 0x3d, 0xba, 0x7d, 0x6d, 0x8c, 0x8c, 0x29, 0x93, 0x5a, 0x98, 0x7a, 0x02, 0xf5, 0x9e, 0xa0,
-	0x1b, 0x6a, 0x9d, 0x53, 0x73, 0xf1, 0xb0, 0x1c, 0xf5, 0x69, 0x6f, 0x40, 0x35, 0xed, 0x0e, 0x01,
-	0xa8, 0x74, 0x9e, 0x3e, 0x73, 0xdb, 0x5b, 0x33, 0x37, 0x48, 0x03, 0xaa, 0x1b, 0x4f, 0x9e, 0x74,
-	0x36, 0x55, 0xab, 0x44, 0x5a, 0x00, 0x9f, 0x6c, 0xef, 0xee, 0x75, 0x9c, 0x03, 0xd5, 0x9e, 0x20,
-	0x75, 0xb0, 0x1e, 0x3f, 0xe9, 0x3c, 0x57, 0x8d, 0x49, 0xfb, 0x08, 0xea, 0xb9, 0x2e, 0x90, 0x79,
-	0x20, 0x5b, 0xdb, 0x5b, 0xed, 0xcd, 0x8d, 0x83, 0xed, 0x2d, 0x77, 0x6f, 0xdb, 0x71, 0xdb, 0x4f,
-	0x0f, 0x1e, 0xcf, 0xdc, 0x20, 0x77, 0x60, 0x65, 0x7f, 0x67, 0xc3, 0xd9, 0xde, 0x72, 0x1f, 0xfd,
-	0xcc, 0xdd, 0x78, 0xf2, 0x04, 0xe5, 0xf8, 0x71, 0xb0, 0xbd, 0xb9, 0x33, 0x53, 0x22, 0x6b, 0xb0,
-	0x7a, 0x01, 0x60, 0x7f, 0x63, 0x77, 0x5b, 0x23, 0x26, 0xec, 0x5f, 0x4f, 0x02, 0x6c, 0x86, 0x9e,
-	0x10, 0xac, 0xcb, 0x68, 0x82, 0xf5, 0xd3, 0x95, 0x71, 0x56, 0xcd, 0xa6, 0xf8, 0x41, 0xcc, 0x02,
-	0x32, 0x0b, 0x53, 0xdc, 0x3d, 0xc9, 0xaa, 0x6a, 0x99, 0x7f, 0xc6, 0xb0, 0xd6, 0x32, 0x8d, 0x35,
-	0x03, 0xc2, 0x52, 0x2c, 0x43, 0xac, 0x1e, 0x92, 0x32, 0x53, 0xd8, 0x05, 0xb0, 0xb8, 0x1b, 0x1f,
-	0x32, 0x29, 0x4c, 0x91, 0xad, 0xf0, 0x3d, 0xd5, 0xc2, 0xfa, 0x69, 0x14, 0x66, 0x47, 0x65, 0x5a,
-	0xb1, 0x04, 0x55, 0x2a, 0x8f, 0xf4, 0xbe, 0xae, 0x97, 0xba, 0x45, 0xe5, 0x51, 0xba, 0xad, 0x07,
-	0x42, 0xba, 0x7d, 0xcf, 0xc7, 0x25, 0xde, 0x70, 0x2a, 0x81, 0x90, 0xbb, 0x9e, 0xaf, 0x14, 0x22,
-	0xf1, 0x51, 0x51, 0xd3, 0x0a, 0x91, 0xf8, 0x4a, 0xa1, 0x92, 0x3c, 0xd6, 0xaf, 0x2d, 0x66, 0x2d,
-	0x5b, 0x2c, 0xde, 0xc3, 0x17, 0x9b, 0x39, 0x50, 0xd6, 0x2e, 0x8b, 0xcd, 0xe2, 0x9d, 0x0a, 0x84,
-	0x6c, 0xc7, 0x4a, 0xac, 0xa8, 0x58, 0x6c, 0xea, 0xd8, 0x94, 0x48, 0xfc, 0x76, 0xac, 0x88, 0x94,
-	0x58, 0xad, 0x6e, 0xb3, 0x8e, 0x95, 0x47, 0x55, 0xe0, 0x94, 0x4a, 0x11, 0xa1, 0x4a, 0x2f, 0x60,
-	0xd5, 0x4b, 0x54, 0xad, 0x41, 0x23, 0x3e, 0x96, 0xae, 0xf4, 0x7a, 0x3a, 0x9e, 0x69, 0xbd, 0x94,
-	0xe2, 0x63, 0x79, 0xe0, 0xe1, 0x0c, 0xdb, 0xbf, 0x84, 0x9a, 0xba, 0x70, 0xf0, 0x68, 0xb3, 0x8f,
-	0x15, 0xc3, 0x0b, 0x02, 0x97, 0x0f, 0x24, 0x4d, 0x94, 0x11, 0xce, 0x45, 0xd5, 0xa9, 0x7b, 0x41,
-	0xd0, 0x51, 0xb2, 0x03, 0xaf, 0xa7, 0xaa, 0x54, 0x42, 0xfb, 0xfc, 0x84, 0xe6, 0x60, 0x13, 0x08,
-	0x6b, 0x69, 0x79, 0x86, 0x5c, 0x83, 0x86, 0x4c, 0xbc, 0xd8, 0x95, 0xdc, 0x3d, 0xe2, 0x42, 0x67,
-	0x6f, 0xd5, 0x01, 0x25, 0x3b, 0xe0, 0x3b, 0x5c, 0x48, 0xfb, 0xcf, 0x25, 0xa8, 0x68, 0xef, 0xe4,
-	0x2e, 0x4c, 0xfa, 0xfd, 0xf4, 0x3d, 0x80, 0x0c, 0x9f, 0x18, 0xd2, 0xbe, 0x39, 0x4a, 0x7d, 0x71,
-	0x3a, 0xe4, 0xa6, 0x78, 0xb2, 0x30, 0xc5, 0xc3, 0x9c, 0x2a, 0x8f, 0xe4, 0x94, 0xce, 0x93, 0xa9,
-	0x62, 0x9e, 0x5c, 0x9c, 0x0e, 0xc3, 0x64, 0xb3, 0x72, 0xc9, 0x66, 0xff, 0x71, 0x12, 0xca, 0x8f,
-	0x43, 0x7e, 0x8a, 0xd5, 0xdf, 0x57, 0xf7, 0x29, 0x37, 0xbf, 0x1d, 0x4f, 0x3b, 0x0d, 0x2d, 0x6d,
-	0x5f, 0x74, 0x3c, 0x98, 0x4e, 0x8f, 0x07, 0x73, 0x50, 0x19, 0x44, 0x4c, 0x89, 0xeb, 0x5a, 0x3c,
-	0x88, 0xd8, 0x55, 0xc7, 0xc0, 0x15, 0xc0, 0xda, 0xac, 0x27, 0x53, 0x6f, 0xad, 0x55, 0x25, 0xc0,
-	0xec, 0x5c, 0x82, 0x6a, 0xba, 0xc3, 0x60, 0xae, 0x4d, 0x3b, 0x96, 0xd9, 0x5d, 0xc8, 0x5b, 0x30,
-	0x1d, 0x51, 0x79, 0xca, 0x93, 0xe3, 0xac, 0x97, 0x53, 0x88, 0x68, 0x1a, 0x71, 0xfb, 0xa2, 0xe3,
-	0x69, 0x05, 0x21, 0xb9, 0x53, 0xc9, 0xfb, 0x00, 0x7e, 0xb6, 0x64, 0xcd, 0x1d, 0x7f, 0x36, 0x9b,
-	0xab, 0xe1, 0x6a, 0x76, 0x72, 0x30, 0xf2, 0x36, 0x54, 0x3c, 0x9c, 0x45, 0x73, 0x77, 0x9f, 0x1e,
-	0x99, 0x5c, 0xc7, 0xa8, 0xc9, 0x32, 0x54, 0xe3, 0x84, 0xf1, 0x84, 0xc9, 0x73, 0x5c, 0x45, 0xd3,
-	0x4e, 0xd6, 0xce, 0x1d, 0x73, 0x1b, 0x85, 0x63, 0x6e, 0xee, 0x7c, 0xd5, 0xcc, 0x9f, 0xaf, 0xec,
-	0x03, 0x68, 0x8c, 0x9e, 0x10, 0xf4, 0x31, 0x27, 0x9d, 0xa1, 0x86, 0x53, 0xd5, 0x82, 0x76, 0x40,
-	0xde, 0x86, 0x69, 0xa3, 0x14, 0x31, 0xf5, 0x59, 0x97, 0xf9, 0xe6, 0xf8, 0xd4, 0xd2, 0xe2, 0x7d,
-	0x23, 0xb5, 0xff, 0x56, 0x86, 0x56, 0xf1, 0xa1, 0xed, 0xf2, 0x73, 0xd8, 0x12, 0x54, 0x93, 0x33,
-	0xf7, 0xf0, 0x5c, 0x52, 0x81, 0x6c, 0x15, 0xc7, 0x4a, 0xce, 0x1e, 0xa9, 0xa6, 0x1a, 0xe6, 0xe4,
-	0xcc, 0x8d, 0xf1, 0x20, 0xa7, 0x93, 0xb6, 0xe2, 0xd4, 0x92, 0x33, 0x7d, 0xb2, 0x13, 0xb8, 0xc4,
-	0xce, 0xdc, 0x81, 0xef, 0xa9, 0x55, 0x6d, 0x40, 0x65, 0x04, 0xb5, 0x92, 0xb3, 0x67, 0x4a, 0x5c,
-	0x44, 0xf6, 0x0b, 0xc8, 0xa9, 0x14, 0xb9, 0x3b, 0x8e, 0x3c, 0x2c, 0x20, 0x2b, 0x29, 0xf2, 0xd1,
-	0x38, 0x52, 0xbf, 0x30, 0xa4, 0x48, 0x2b, 0x45, 0xe2, 0x8b, 0x41, 0x8a, 0x5c, 0x82, 0xaa, 0x4c,
-	0x23, 0xac, 0xea, 0x08, 0xe5, 0x30, 0x42, 0x39, 0x8c, 0xb0, 0xa6, 0x23, 0x94, 0xf9, 0x08, 0xe5,
-	0x68, 0x84, 0xa0, 0x7d, 0xc8, 0xb1, 0x08, 0xe5, 0x68, 0x84, 0xf5, 0x14, 0xb9, 0x3b, 0x8e, 0x2c,
-	0x46, 0xd8, 0x48, 0x91, 0x8f, 0xc6, 0x91, 0xc5, 0x08, 0x9b, 0x29, 0xb2, 0x10, 0xa1, 0x0d, 0xcd,
-	0xe4, 0xcc, 0xf5, 0x13, 0x5f, 0xa3, 0x05, 0xd6, 0xd7, 0x8a, 0x53, 0x4f, 0xce, 0x36, 0x13, 0x1f,
-	0x91, 0x18, 0xea, 0x21, 0x8b, 0x53, 0xc0, 0xb4, 0x0e, 0xf5, 0x90, 0xc5, 0x46, 0xbd, 0x0a, 0x35,
-	0xc9, 0xfa, 0x54, 0x48, 0xaf, 0x1f, 0xe3, 0x49, 0xd7, 0x72, 0x86, 0x02, 0x75, 0x9d, 0x6f, 0x15,
-	0xdf, 0x5f, 0xf3, 0x8b, 0xbf, 0x54, 0x58, 0xfc, 0xaf, 0x9e, 0x50, 0xaf, 0x3e, 0x51, 0x57, 0xf7,
-	0xfe, 0x63, 0x68, 0x16, 0x1e, 0x6c, 0x2f, 0x5f, 0x0c, 0xf3, 0x50, 0x51, 0x17, 0xf6, 0x81, 0x30,
-	0xa7, 0x39, 0xd3, 0xb2, 0x7f, 0x01, 0xb3, 0x17, 0x3c, 0xdc, 0x5e, 0xfb, 0x9a, 0x35, 0xa4, 0x9f,
-	0x2c, 0xd0, 0xff, 0x69, 0x02, 0xc8, 0xf8, 0x9b, 0xee, 0xab, 0x3c, 0x99, 0x84, 0x5c, 0xb8, 0x05,
-	0x17, 0xb5, 0x90, 0x8b, 0x7d, 0x14, 0x68, 0xf5, 0x61, 0xaa, 0x2e, 0xa7, 0xea, 0x43, 0xa3, 0xbe,
-	0x07, 0x33, 0x21, 0x8f, 0x7d, 0xb7, 0xcf, 0x44, 0xc6, 0xa1, 0x6f, 0x21, 0x2d, 0x25, 0xdf, 0x65,
-	0x22, 0x25, 0x7a, 0x00, 0x73, 0x06, 0x69, 0x12, 0x2e, 0x85, 0x57, 0xf4, 0xcd, 0x47, 0xc3, 0x75,
-	0xe2, 0x19, 0x93, 0x3b, 0x50, 0x0f, 0x79, 0x97, 0xa5, 0x40, 0x4b, 0x6f, 0xf0, 0x4a, 0x64, 0x00,
-	0x6f, 0x42, 0x23, 0xe4, 0x5e, 0x3f, 0x43, 0x54, 0x11, 0x51, 0x47, 0x99, 0x86, 0xd8, 0x14, 0x56,
-	0xae, 0x78, 0xae, 0x7e, 0x6d, 0x93, 0xf1, 0xfb, 0x12, 0x2c, 0x5f, 0xfe, 0x76, 0xfd, 0xba, 0xdc,
-	0x90, 0xf7, 0x61, 0x9e, 0x45, 0xea, 0xfa, 0x49, 0xdd, 0x43, 0x26, 0xcd, 0x38, 0x26, 0x9e, 0xa4,
-	0xe6, 0x14, 0x30, 0x6b, 0xb4, 0x8f, 0x98, 0xc4, 0x81, 0x74, 0x3c, 0x49, 0xed, 0xaf, 0x75, 0xdf,
-	0x2e, 0x79, 0xfa, 0x7e, 0x6d, 0x7d, 0xbb, 0x05, 0x53, 0xf8, 0x08, 0x9f, 0x1e, 0x48, 0xb0, 0xa1,
-	0xd8, 0x23, 0x7a, 0xea, 0xd2, 0x2f, 0xd3, 0x23, 0x49, 0x25, 0xa2, 0xa7, 0xdb, 0x5f, 0x06, 0xf6,
-	0x11, 0xdc, 0xbe, 0xfa, 0xe1, 0xfc, 0xb5, 0xcd, 0xcd, 0x1f, 0x4a, 0x3a, 0x07, 0x2e, 0x79, 0x4a,
-	0xff, 0xdf, 0x4e, 0xce, 0x57, 0x25, 0xb0, 0x5f, 0xfc, 0x2c, 0xff, 0xdf, 0x9d, 0x24, 0xfb, 0x4b,
-	0x9c, 0x8b, 0x2b, 0x9e, 0xef, 0xaf, 0xed, 0xff, 0x0e, 0xd4, 0xf1, 0x8d, 0x3d, 0xa1, 0x9e, 0x30,
-	0x8f, 0x2a, 0x96, 0x03, 0x4a, 0xe4, 0xa0, 0xc4, 0x3e, 0x86, 0x37, 0x5f, 0xf8, 0xd6, 0xfe, 0xda,
-	0x32, 0x80, 0xc1, 0xe2, 0x65, 0xaf, 0xee, 0xaf, 0x52, 0x2f, 0x93, 0x80, 0xa5, 0x5b, 0xa2, 0x0e,
-	0xac, 0x96, 0x04, 0x4c, 0x6f, 0x89, 0xf6, 0x53, 0x58, 0xbd, 0xea, 0x67, 0x8a, 0xeb, 0xba, 0xb3,
-	0x2d, 0x98, 0xda, 0xee, 0xc7, 0xf2, 0xfc, 0xe1, 0x37, 0x4d, 0xb0, 0x3a, 0xfa, 0x70, 0x49, 0xb6,
-	0x00, 0xb6, 0x98, 0xf0, 0x0e, 0x43, 0xda, 0x09, 0x25, 0x69, 0x65, 0x87, 0x4e, 0x44, 0x2e, 0x8f,
-	0xb4, 0xed, 0xf9, 0xaf, 0xfe, 0xfe, 0x8f, 0xaf, 0x27, 0x66, 0xec, 0xfa, 0xfa, 0xc9, 0x83, 0x75,
-	0x63, 0xf7, 0x51, 0xe9, 0x1d, 0xf2, 0x18, 0xea, 0x0e, 0xa5, 0xd1, 0xcb, 0xd2, 0x2c, 0x20, 0xcd,
-	0x4d, 0xbb, 0xa1, 0x68, 0x52, 0x43, 0xc5, 0xb3, 0x0d, 0x75, 0x93, 0x3a, 0xb4, 0x13, 0x0d, 0x48,
-	0x23, 0xff, 0x4b, 0xc7, 0x18, 0xcb, 0x22, 0xb2, 0x10, 0xbb, 0xa9, 0x58, 0xb6, 0xb5, 0xf3, 0x68,
-	0xa0, 0x68, 0x76, 0xa0, 0xb9, 0x45, 0xbd, 0x97, 0x26, 0x5a, 0x42, 0xa2, 0x59, 0xbb, 0x95, 0x8b,
-	0xca, 0x30, 0x6d, 0x42, 0x6d, 0x8b, 0x86, 0xf4, 0xda, 0xdd, 0xc9, 0x8c, 0x14, 0x49, 0x1b, 0xc0,
-	0x3c, 0xb4, 0x76, 0x06, 0x92, 0xcc, 0x14, 0x7e, 0xf9, 0xde, 0x15, 0xbd, 0xab, 0xfb, 0x33, 0xb4,
-	0x54, 0x54, 0x1d, 0x68, 0x64, 0xaf, 0xac, 0x8a, 0x8c, 0x14, 0x7e, 0xd1, 0x42, 0xf1, 0x18, 0xdd,
-	0x0a, 0xd2, 0xcd, 0xd9, 0x33, 0x48, 0x97, 0xb3, 0x56, 0x84, 0x3f, 0x85, 0xe9, 0xfc, 0x7b, 0xa9,
-	0xe2, 0x1c, 0x3e, 0x27, 0xe7, 0x35, 0x63, 0xb4, 0xb7, 0x91, 0x76, 0xd1, 0x9e, 0x55, 0xb4, 0x23,
-	0x1c, 0x8a, 0xf9, 0x63, 0xb0, 0xd4, 0x91, 0x6d, 0x23, 0x08, 0x48, 0xb3, 0xf0, 0x23, 0xfa, 0xd5,
-	0x59, 0x65, 0x6c, 0x74, 0x56, 0x81, 0x6a, 0x39, 0x78, 0x5f, 0x7e, 0x11, 0x49, 0x61, 0xd0, 0x86,
-	0x66, 0x8a, 0x67, 0x1f, 0x5a, 0xd9, 0x63, 0xfd, 0xe6, 0x11, 0xf5, 0x8f, 0xc7, 0x12, 0x74, 0x38,
-	0x8c, 0x19, 0xd0, 0x7e, 0x03, 0x09, 0x17, 0x6c, 0xa2, 0x08, 0x8b, 0xf6, 0x8a, 0x74, 0x17, 0xea,
-	0x3a, 0xe7, 0xf6, 0x78, 0xd4, 0xee, 0xe6, 0x26, 0x22, 0xfb, 0xf5, 0x60, 0xac, 0x8b, 0xcb, 0xc8,
-	0x78, 0xcb, 0x9e, 0x1e, 0x26, 0x2c, 0x1a, 0x9b, 0x89, 0x35, 0x99, 0xf7, 0xf2, 0x7c, 0x85, 0x89,
-	0xcd, 0x5b, 0x2b, 0x42, 0x07, 0x9a, 0x9f, 0x50, 0x99, 0x7b, 0xcf, 0x1e, 0x8d, 0x79, 0xf6, 0x82,
-	0x27, 0x37, 0x7b, 0x15, 0x29, 0xe7, 0xed, 0x9b, 0x8a, 0xb2, 0x60, 0xaf, 0x38, 0x7f, 0x04, 0x15,
-	0x87, 0x1e, 0x72, 0xfe, 0xe2, 0x15, 0x3e, 0x87, 0x3c, 0xd3, 0x36, 0xe8, 0x15, 0xae, 0x6c, 0x14,
-	0xc1, 0x33, 0xb8, 0xb9, 0xc9, 0xc3, 0x90, 0xfa, 0xf9, 0xab, 0xe1, 0x8b, 0xb8, 0xd6, 0x90, 0x6b,
-	0xd9, 0x9e, 0x53, 0x5c, 0x63, 0xe6, 0x8a, 0x36, 0x81, 0x85, 0xcd, 0x84, 0x7a, 0x92, 0x1e, 0x24,
-	0x5e, 0xb7, 0xcb, 0xfc, 0x7d, 0xff, 0x88, 0x06, 0x83, 0x90, 0x26, 0x82, 0xdc, 0xb9, 0x5f, 0xf8,
-	0xe7, 0x9d, 0x31, 0xc0, 0x98, 0xb7, 0xb7, 0xd0, 0xdb, 0x9a, 0xbd, 0x82, 0xde, 0x2e, 0x66, 0x35,
-	0x3e, 0x75, 0x86, 0xbd, 0x6e, 0x9f, 0x97, 0xb0, 0x2a, 0x9f, 0x5d, 0x98, 0x2d, 0xf4, 0xe8, 0x27,
-	0x03, 0x3a, 0xa0, 0x82, 0xac, 0x5c, 0xe8, 0x4f, 0x2b, 0xc7, 0x7c, 0xd9, 0xe8, 0x6b, 0xd5, 0x5e,
-	0x18, 0x8b, 0x4f, 0x1b, 0x18, 0x3f, 0x85, 0x5e, 0xfc, 0xc7, 0x7e, 0x2e, 0x60, 0x53, 0x7e, 0xbe,
-	0x0f, 0x33, 0x7a, 0x19, 0xe4, 0x76, 0xb5, 0xcb, 0xd3, 0x74, 0x08, 0xb2, 0x6f, 0xbc, 0x57, 0x7a,
-	0xf4, 0xe0, 0xf3, 0xf5, 0x1e, 0x93, 0x47, 0x83, 0xc3, 0xfb, 0x3e, 0xef, 0xe3, 0xbf, 0x79, 0xf9,
-	0x3c, 0x09, 0xd6, 0xf5, 0x7f, 0x6e, 0xbd, 0x6b, 0xfe, 0x73, 0xeb, 0xe4, 0xe1, 0x7a, 0x8f, 0xa7,
-	0xff, 0x03, 0xb6, 0x57, 0x3a, 0xac, 0xa0, 0xfc, 0xfd, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0x3c,
-	0x63, 0xa1, 0x96, 0x25, 0x26, 0x00, 0x00,
+	// 4245 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5b, 0xcd, 0x73, 0x23, 0x49,
+	0x56, 0x6f, 0xd9, 0xb2, 0x24, 0x3f, 0x7d, 0x58, 0x4e, 0xb7, 0xbb, 0xfd, 0xd1, 0xd3, 0xed, 0xa9,
+	0x69, 0x66, 0x7a, 0x87, 0x19, 0x7b, 0xba, 0x67, 0x63, 0x61, 0x86, 0x05, 0x46, 0xb6, 0xd4, 0xb6,
+	0x18, 0xdb, 0x12, 0x25, 0x75, 0x37, 0xcc, 0xc6, 0x44, 0x6d, 0xb9, 0x2a, 0x25, 0xd7, 0xba, 0x54,
+	0x59, 0x53, 0x95, 0xf2, 0x07, 0xc7, 0x0d, 0x16, 0x2e, 0x9c, 0x98, 0x80, 0x08, 0xb8, 0x11, 0x5c,
+	0xb9, 0x70, 0x23, 0x82, 0x23, 0x57, 0x82, 0x0b, 0xff, 0x00, 0x07, 0x6e, 0xdc, 0x39, 0x11, 0x04,
+	0x91, 0x2f, 0xb3, 0xbe, 0x24, 0xd9, 0xdd, 0x1e, 0x4c, 0x70, 0x71, 0x28, 0xdf, 0xfb, 0xbd, 0xdf,
+	0xcb, 0x97, 0xf9, 0x32, 0xeb, 0x65, 0x65, 0x19, 0x36, 0xcf, 0x99, 0xcb, 0x4f, 0x4d, 0xc3, 0x0f,
+	0x18, 0x67, 0xe1, 0x0e, 0xf3, 0xa9, 0xc7, 0x5c, 0xbe, 0x8d, 0x4d, 0x52, 0x54, 0xcd, 0x8d, 0x47,
+	0x43, 0xc6, 0x86, 0x2e, 0xdd, 0x31, 0x7d, 0x67, 0xc7, 0xf4, 0x3c, 0xc6, 0x4d, 0xee, 0x30, 0x2f,
+	0x94, 0xb0, 0x8d, 0xad, 0x2c, 0x07, 0xa7, 0xd6, 0xa9, 0xf8, 0x3d, 0x70, 0x5c, 0xaa, 0x10, 0x1b,
+	0x59, 0x84, 0xc5, 0x46, 0x23, 0xe6, 0x29, 0xdd, 0xe3, 0xac, 0x8e, 0x5e, 0x72, 0xc3, 0x62, 0xde,
+	0xc0, 0x19, 0x4a, 0xbd, 0xf6, 0xcf, 0x79, 0x80, 0xb6, 0x67, 0x3b, 0x16, 0xfa, 0x24, 0xcf, 0xa1,
+	0xc8, 0x5c, 0x6e, 0x38, 0x9e, 0xbd, 0x96, 0xdb, 0xca, 0x3d, 0x2b, 0xbf, 0x78, 0xb0, 0x1d, 0x75,
+	0xba, 0xe3, 0xf2, 0x04, 0x78, 0x70, 0x4f, 0x2f, 0x30, 0x14, 0x90, 0x1f, 0x43, 0xc9, 0xf1, 0xf8,
+	0x00, 0x6d, 0xe6, 0xd0, 0xe6, 0x61, 0x6c, 0xd3, 0xf6, 0xf8, 0x20, 0x63, 0x54, 0x74, 0xa4, 0x84,
+	0x34, 0xa0, 0x8a, 0x56, 0xcc, 0xa7, 0x01, 0x9a, 0xce, 0xa3, 0xe9, 0x66, 0xc6, 0xb4, 0xe3, 0xd3,
+	0x20, 0x63, 0x5e, 0x76, 0x12, 0x29, 0xf9, 0x1d, 0xa8, 0x30, 0x6f, 0x6c, 0xd8, 0x4e, 0x68, 0x21,
+	0x43, 0x1e, 0x19, 0x36, 0x92, 0x0e, 0x7b, 0xe3, 0xa6, 0x13, 0x5a, 0x19, 0x02, 0x60, 0xb1, 0x10,
+	0x63, 0xf5, 0xc6, 0x68, 0xba, 0x30, 0x19, 0xab, 0x37, 0x9e, 0x88, 0x15, 0x05, 0x22, 0x56, 0x36,
+	0xb2, 0x1c, 0xb4, 0x29, 0x4c, 0xc4, 0xda, 0x19, 0x59, 0x4e, 0x36, 0x56, 0x26, 0x25, 0xe4, 0xc7,
+	0x50, 0xf4, 0xcf, 0xe4, 0xa0, 0x16, 0xd1, 0x68, 0x3d, 0x36, 0xea, 0x9a, 0xd6, 0x19, 0x9d, 0x18,
+	0x57, 0xff, 0x0c, 0xc7, 0xf5, 0x37, 0x01, 0x7c, 0x16, 0x70, 0x23, 0xe4, 0x26, 0x0f, 0xd7, 0x4a,
+	0x13, 0xde, 0xba, 0x2c, 0xe0, 0x3d, 0x91, 0x28, 0x21, 0x77, 0xac, 0xf0, 0xe0, 0x9e, 0xbe, 0xe8,
+	0x2b, 0x49, 0x28, 0x2c, 0x07, 0x2e, 0xbb, 0x50, 0x96, 0x8b, 0x13, 0x96, 0x2f, 0x5d, 0x76, 0x91,
+	0xb5, 0x1c, 0x28, 0x49, 0x48, 0x7e, 0x03, 0x16, 0x4d, 0xd7, 0x0c, 0x46, 0xd8, 0x57, 0x40, 0xc3,
+	0xb5, 0xd8, 0xb0, 0x21, 0x34, 0x99, 0xae, 0x96, 0x4c, 0x25, 0xda, 0x2d, 0x40, 0xde, 0x36, 0xb9,
+	0xa9, 0xfd, 0x47, 0x15, 0x96, 0x26, 0x70, 0x62, 0x9c, 0x5d, 0x16, 0xce, 0xcc, 0xa9, 0x43, 0x16,
+	0x66, 0x63, 0x77, 0x51, 0x40, 0x9a, 0x50, 0xb3, 0xaf, 0x1c, 0x6f, 0x68, 0x0c, 0xcd, 0xd0, 0x4f,
+	0x65, 0xd6, 0xa3, 0xd8, 0xb2, 0x29, 0xd4, 0xfb, 0x66, 0xe8, 0x67, 0xec, 0x2b, 0x76, 0x4a, 0x2c,
+	0x72, 0x4c, 0x4c, 0x70, 0x12, 0xd1, 0x64, 0x8e, 0x75, 0xbc, 0xf1, 0x74, 0x50, 0x65, 0x96, 0x48,
+	0xc9, 0x1b, 0xb8, 0x2f, 0x28, 0x42, 0x6e, 0x06, 0x7c, 0xec, 0x1b, 0x03, 0xd3, 0x71, 0x53, 0xb9,
+	0xf6, 0x34, 0xcd, 0xd4, 0x93, 0x98, 0x97, 0xa6, 0xe3, 0x8e, 0x03, 0x9a, 0xa1, 0x5c, 0x66, 0x19,
+	0xb5, 0x20, 0xfe, 0x06, 0x1e, 0x20, 0xb1, 0x33, 0xf4, 0x4c, 0xd7, 0xb0, 0xe9, 0x30, 0x30, 0x6d,
+	0x9a, 0xca, 0xc5, 0x0f, 0x32, 0xd4, 0x88, 0x6a, 0x4a, 0x50, 0x86, 0x79, 0x85, 0x4d, 0x6b, 0xc9,
+	0xcf, 0xe0, 0x21, 0x2e, 0x8c, 0xc0, 0x19, 0x70, 0x83, 0x0d, 0x8c, 0x0b, 0xc7, 0xb3, 0xd9, 0x45,
+	0x2a, 0x69, 0x33, 0xe4, 0x4d, 0x01, 0xeb, 0x0c, 0xde, 0x20, 0x68, 0x8a, 0x7c, 0x52, 0x4b, 0xfa,
+	0x20, 0xa2, 0x31, 0x5c, 0x16, 0x86, 0x46, 0xbc, 0x16, 0x64, 0x5a, 0x7f, 0x94, 0xa6, 0x3d, 0x64,
+	0x61, 0xd8, 0x19, 0x88, 0x45, 0xb1, 0x77, 0x6a, 0x7a, 0x1e, 0x75, 0x33, 0xd4, 0x35, 0xa6, 0x10,
+	0x6a, 0x89, 0x44, 0xe3, 0x8c, 0xa1, 0x84, 0xc9, 0x38, 0x97, 0x66, 0x8c, 0xb3, 0xc4, 0x5c, 0x3b,
+	0xce, 0x89, 0x5a, 0x10, 0x77, 0xe4, 0x26, 0xc1, 0x9d, 0x0b, 0xd9, 0x53, 0xb9, 0x1a, 0x7e, 0x3d,
+	0x4d, 0xd8, 0x0f, 0x4c, 0x2f, 0x1c, 0x39, 0x61, 0xe8, 0x30, 0xaf, 0xed, 0x71, 0x1a, 0x0c, 0x68,
+	0x40, 0x3d, 0x8b, 0xbe, 0x31, 0x03, 0xcf, 0xf1, 0x86, 0x6a, 0xd7, 0xe8, 0x3b, 0x17, 0xd8, 0xd3,
+	0x9f, 0xcb, 0xc1, 0x35, 0x2d, 0xee, 0x9c, 0xa3, 0xdf, 0xa4, 0xb3, 0x30, 0x3d, 0x0a, 0x8d, 0x18,
+	0x36, 0xab, 0xbf, 0x22, 0xe6, 0x2c, 0x42, 0x7a, 0x58, 0x13, 0x1e, 0xfc, 0x80, 0x59, 0x34, 0x0c,
+	0xc5, 0x2a, 0xa0, 0x41, 0xc0, 0xe4, 0x2e, 0x59, 0x46, 0x17, 0xbf, 0x96, 0x76, 0xd1, 0x8d, 0x71,
+	0x2d, 0x01, 0xcb, 0x38, 0x58, 0x65, 0xb3, 0xf4, 0x84, 0xc2, 0x7a, 0x32, 0x87, 0x03, 0x23, 0xbc,
+	0xf2, 0xac, 0x24, 0x8a, 0x0a, 0xba, 0xf8, 0x78, 0x7a, 0x2e, 0xbf, 0xa6, 0x57, 0xbd, 0x2b, 0xcf,
+	0xba, 0x2e, 0x10, 0x09, 0x8a, 0x10, 0xc2, 0xcd, 0x2b, 0x58, 0xc5, 0x0d, 0x96, 0x8f, 0x0d, 0x9f,
+	0x79, 0x72, 0x3b, 0x42, 0x17, 0x55, 0x74, 0xf1, 0x7e, 0x66, 0xbb, 0xe5, 0xe3, 0x2e, 0xf3, 0x70,
+	0x17, 0x9a, 0x9a, 0xd2, 0xac, 0x8e, 0xb8, 0xf0, 0x08, 0xd3, 0x9b, 0x4e, 0xcc, 0xc1, 0x38, 0x90,
+	0x0b, 0xa8, 0x86, 0xec, 0x3f, 0xca, 0xe4, 0x78, 0x0a, 0x3b, 0xab, 0xff, 0x62, 0x38, 0x66, 0x63,
+	0xc8, 0x1b, 0x19, 0x44, 0x40, 0x47, 0x8c, 0x53, 0xc3, 0xa6, 0x03, 0x6a, 0xc9, 0xad, 0x7c, 0x09,
+	0xdd, 0x68, 0x69, 0x37, 0x3a, 0x82, 0x9a, 0x88, 0xc9, 0xf0, 0x13, 0x36, 0xa5, 0x24, 0xa1, 0x0c,
+	0x03, 0x27, 0x61, 0x48, 0x47, 0x86, 0x4d, 0x5d, 0xc7, 0xa3, 0x32, 0x1c, 0xc1, 0x5f, 0x47, 0xfe,
+	0xe7, 0xd3, 0xf3, 0xb0, 0xdf, 0x3a, 0x52, 0x4b, 0xaa, 0x99, 0x98, 0x64, 0xdc, 0xad, 0xa9, 0xe9,
+	0xd8, 0xa7, 0xa3, 0x2c, 0x84, 0x9c, 0xc3, 0x16, 0xe6, 0xd6, 0xe9, 0x55, 0xe8, 0x58, 0xa6, 0x6b,
+	0xd0, 0xef, 0xc6, 0x8e, 0x3f, 0xa2, 0x1e, 0x4f, 0xe5, 0xd8, 0x32, 0x3a, 0xfe, 0x24, 0x93, 0x63,
+	0x0a, 0xdf, 0x8a, 0xe0, 0xd3, 0xa9, 0x26, 0x82, 0xb9, 0x16, 0x46, 0x7e, 0x06, 0x2b, 0xe9, 0x8c,
+	0x33, 0xad, 0x33, 0x74, 0x45, 0xa6, 0x57, 0xa3, 0x8c, 0xb1, 0x61, 0x9d, 0x79, 0xec, 0xc2, 0xa5,
+	0xf6, 0x90, 0x0a, 0x9e, 0x8c, 0xa7, 0x25, 0x96, 0x42, 0x09, 0x72, 0x06, 0x9b, 0xb2, 0x10, 0x18,
+	0x0c, 0x8c, 0x80, 0x9a, 0xd6, 0xa9, 0x41, 0x2f, 0x2d, 0x4a, 0x6d, 0x6a, 0xa3, 0x93, 0x15, 0x74,
+	0xb2, 0x93, 0xad, 0x0b, 0x06, 0xb8, 0xc8, 0xb9, 0x63, 0xba, 0xba, 0xb0, 0x68, 0x29, 0x83, 0x8c,
+	0xa3, 0x87, 0x4c, 0x22, 0x27, 0x11, 0xf1, 0xd3, 0x6e, 0x1b, 0xaa, 0x99, 0xaa, 0x88, 0xbc, 0x07,
+	0x80, 0x05, 0x8d, 0x48, 0x75, 0x8a, 0x4f, 0xbb, 0x45, 0x7d, 0x51, 0x48, 0x44, 0xf2, 0x52, 0xed,
+	0x00, 0x6a, 0xd9, 0x8a, 0x88, 0x3c, 0x84, 0xa2, 0x2c, 0x9e, 0xe4, 0xb3, 0xb1, 0xa8, 0x17, 0xb0,
+	0x40, 0xb2, 0x27, 0x98, 0xe6, 0x26, 0x99, 0x4e, 0x61, 0x79, 0xaa, 0xbc, 0xb9, 0x9e, 0xec, 0x4b,
+	0xa8, 0x86, 0x34, 0x70, 0x4c, 0xd7, 0xf0, 0xc6, 0xa3, 0x13, 0x1a, 0xa8, 0xa7, 0xe9, 0x6a, 0x3c,
+	0x24, 0x3d, 0xd4, 0x1e, 0xa3, 0x52, 0xaf, 0x84, 0xa9, 0x96, 0xf6, 0x7d, 0x1e, 0xaa, 0x99, 0x72,
+	0xe8, 0x7a, 0x37, 0xab, 0x50, 0xc0, 0xf5, 0x2e, 0x9f, 0xd6, 0x45, 0x7d, 0x41, 0xac, 0xdd, 0xc9,
+	0x50, 0xe6, 0x27, 0x42, 0x21, 0x4f, 0xa0, 0x6c, 0xda, 0x23, 0xc7, 0x53, 0xfa, 0x05, 0xd4, 0x03,
+	0x8a, 0x24, 0x60, 0xaa, 0xf7, 0xf9, 0x77, 0xee, 0x3d, 0x39, 0x84, 0x32, 0x6e, 0x6c, 0x01, 0x35,
+	0x43, 0xe6, 0xe1, 0xe3, 0xaf, 0x96, 0xcd, 0xb7, 0x24, 0xb0, 0xed, 0xec, 0x56, 0xac, 0xa3, 0x89,
+	0x0e, 0x83, 0xf8, 0xb7, 0xf6, 0xa7, 0x73, 0x70, 0x7f, 0x16, 0x88, 0x7c, 0x00, 0x4f, 0x3a, 0xc7,
+	0xaf, 0x8c, 0xc6, 0x5e, 0xbf, 0xfd, 0xba, 0xd1, 0x6f, 0x77, 0x8e, 0x8d, 0x97, 0x8d, 0xf6, 0xa1,
+	0xa1, 0xb7, 0x1a, 0xbd, 0xce, 0xb1, 0x71, 0xdc, 0x39, 0x6e, 0xd5, 0xef, 0x91, 0x0f, 0x41, 0xbb,
+	0x01, 0xa4, 0x37, 0x8e, 0xf7, 0xdb, 0xc7, 0xfb, 0xf5, 0x1c, 0xf9, 0x09, 0xbc, 0xb8, 0x01, 0xd7,
+	0x6d, 0xf4, 0x7a, 0x6f, 0x3a, 0x7a, 0xd3, 0x68, 0xbc, 0xea, 0x1f, 0xb4, 0x8e, 0xfb, 0xed, 0x3d,
+	0xc4, 0xd4, 0xe7, 0x88, 0x06, 0x8f, 0x6f, 0xb0, 0x3b, 0xec, 0xf4, 0xea, 0xf3, 0xe4, 0x7d, 0x78,
+	0x6f, 0x16, 0x06, 0x65, 0x87, 0x0d, 0xfd, 0xa8, 0x9e, 0xbf, 0x2e, 0x96, 0xde, 0x9b, 0x76, 0x7f,
+	0xef, 0xc0, 0xe8, 0xbc, 0x6e, 0xe9, 0xf5, 0x05, 0xed, 0xe7, 0x40, 0xa6, 0x0b, 0x74, 0x42, 0x20,
+	0xcf, 0xaf, 0xfc, 0x28, 0xf1, 0xf1, 0x77, 0x3a, 0x5b, 0xe6, 0x6e, 0xc8, 0xf0, 0xc9, 0xb4, 0xd0,
+	0x74, 0xa8, 0x65, 0x2b, 0xea, 0x5b, 0xe7, 0x5d, 0x1d, 0xe6, 0xfd, 0x33, 0x8e, 0xcc, 0x15, 0x5d,
+	0xfc, 0xd4, 0xfe, 0x29, 0x07, 0xf5, 0xc9, 0x8a, 0x9b, 0x6c, 0xc2, 0x22, 0xd2, 0x62, 0xcf, 0x65,
+	0xf6, 0xe1, 0x81, 0xa6, 0x3f, 0xd1, 0xfb, 0xa9, 0xf5, 0x39, 0xa4, 0x23, 0x2c, 0xd0, 0x63, 0xbf,
+	0x8b, 0x4a, 0xd2, 0xb6, 0x85, 0x1d, 0x96, 0xe0, 0x8e, 0x2c, 0x3a, 0x8b, 0x7a, 0x41, 0x34, 0xa5,
+	0x02, 0x8d, 0x3c, 0x86, 0xc9, 0x58, 0xd4, 0x0b, 0xa2, 0x79, 0xcc, 0xc8, 0x03, 0x28, 0x58, 0x8c,
+	0x9d, 0x39, 0x14, 0x8b, 0xa9, 0x82, 0xae, 0x5a, 0x51, 0x14, 0xf9, 0x24, 0x8a, 0xa7, 0xb0, 0x28,
+	0xcb, 0x14, 0xd3, 0xba, 0xbe, 0x83, 0xda, 0x4f, 0x61, 0xf1, 0x80, 0x9a, 0x01, 0x3f, 0xa1, 0x26,
+	0x27, 0x3b, 0xb0, 0x72, 0x1a, 0x35, 0x64, 0x91, 0xc5, 0xc7, 0x01, 0x55, 0x16, 0x24, 0x56, 0xf5,
+	0x22, 0x8d, 0xf6, 0x77, 0x39, 0x98, 0xef, 0x78, 0xe3, 0x5b, 0x8f, 0xf9, 0xd4, 0x5a, 0x9d, 0x7f,
+	0xf7, 0xb5, 0x2a, 0x22, 0x75, 0xe4, 0xea, 0x2e, 0xea, 0xe2, 0x27, 0xf9, 0x08, 0x96, 0xd8, 0xc8,
+	0xb2, 0x0c, 0xea, 0x59, 0xc1, 0x95, 0x2f, 0x66, 0x0b, 0x27, 0xa8, 0xa4, 0xd7, 0x84, 0xb8, 0x15,
+	0x4b, 0xb5, 0xbf, 0xcf, 0x01, 0xc1, 0x67, 0xc7, 0x50, 0x3c, 0x7e, 0x9a, 0x4e, 0xc8, 0x4d, 0xef,
+	0x86, 0xc1, 0xb9, 0xae, 0xf7, 0x5f, 0xc0, 0xba, 0x2b, 0x29, 0x0c, 0x75, 0xb2, 0x44, 0x1e, 0xe3,
+	0x8f, 0x68, 0xc0, 0xd4, 0x3c, 0x3e, 0x50, 0x00, 0xb9, 0xfb, 0xa2, 0xfa, 0x1b, 0x1a, 0x30, 0xf2,
+	0x19, 0xdc, 0x9f, 0x65, 0xaa, 0xa2, 0x21, 0xd3, 0x56, 0xda, 0xd7, 0x50, 0x14, 0x09, 0x7e, 0x14,
+	0x0e, 0xef, 0x20, 0xb3, 0x7f, 0x95, 0x83, 0x45, 0xf1, 0x9c, 0xc6, 0xe4, 0xbe, 0x35, 0x5f, 0x2a,
+	0x29, 0xf3, 0x99, 0xa4, 0xcc, 0x66, 0xf9, 0xc2, 0x64, 0x96, 0x4f, 0xf7, 0xe3, 0x0b, 0xa8, 0xbc,
+	0xf2, 0x5d, 0xc7, 0x3b, 0x7b, 0x5b, 0x4f, 0x94, 0xe9, 0x5c, 0x62, 0xfa, 0xe7, 0x8b, 0x00, 0x4d,
+	0x7a, 0xee, 0x58, 0xb4, 0xed, 0x0d, 0x70, 0x3d, 0x9c, 0x53, 0xcf, 0x66, 0x81, 0xda, 0x4d, 0x54,
+	0x8b, 0xdc, 0x87, 0x85, 0x11, 0xb3, 0xa9, 0xab, 0x9e, 0x89, 0xb2, 0x41, 0x7e, 0x04, 0xf5, 0x53,
+	0x33, 0xb0, 0x2f, 0xcc, 0x80, 0x1a, 0xe7, 0x34, 0x10, 0xa5, 0xbc, 0xda, 0x52, 0x96, 0x22, 0xf9,
+	0x6b, 0x29, 0x16, 0xd0, 0x81, 0x13, 0x8c, 0x32, 0xd0, 0xbc, 0x84, 0x46, 0xf2, 0x08, 0xba, 0x09,
+	0x8b, 0x36, 0xf6, 0x48, 0xf4, 0xbf, 0x2e, 0xb7, 0x06, 0x29, 0x68, 0xdb, 0x62, 0xc6, 0x95, 0x32,
+	0x9b, 0xf1, 0xcb, 0x88, 0x23, 0x52, 0x97, 0x4e, 0x77, 0x41, 0x27, 0xea, 0x60, 0x31, 0x78, 0x21,
+	0x96, 0xd9, 0x45, 0xbd, 0xe4, 0x33, 0x4f, 0x1c, 0xe5, 0x43, 0xf2, 0x18, 0x80, 0x53, 0xeb, 0xd4,
+	0x63, 0x2e, 0x1b, 0x5e, 0x45, 0x4f, 0xc1, 0x44, 0x42, 0xb6, 0xe4, 0x41, 0xc6, 0xb1, 0xe5, 0x61,
+	0x54, 0xed, 0x1e, 0x80, 0x13, 0x88, 0x67, 0x4b, 0xf2, 0x08, 0x40, 0x21, 0xa8, 0x3a, 0x92, 0x15,
+	0xf5, 0x12, 0xea, 0x5b, 0x9e, 0x4d, 0x9e, 0x42, 0xcd, 0x74, 0x5d, 0x66, 0x25, 0x0c, 0x25, 0x44,
+	0x54, 0x50, 0x1a, 0x71, 0x6c, 0x41, 0x25, 0x46, 0x51, 0x75, 0x5c, 0x2a, 0xea, 0xa0, 0x30, 0x82,
+	0xe7, 0x19, 0xd4, 0x93, 0x94, 0x50, 0x4c, 0x80, 0xa8, 0x5a, 0x9c, 0x18, 0x92, 0xeb, 0x29, 0xd4,
+	0x52, 0x48, 0xaa, 0x4e, 0x2f, 0x45, 0xbd, 0x12, 0xe3, 0x04, 0x9f, 0x06, 0x55, 0xb5, 0x53, 0x2a,
+	0xb2, 0x2a, 0x82, 0xca, 0x72, 0xbf, 0x94, 0x4c, 0x8f, 0xa1, 0x1c, 0x61, 0xa8, 0x2a, 0xf0, 0x8b,
+	0xf2, 0xb5, 0x85, 0xe4, 0xf8, 0x0a, 0x0a, 0x81, 0xe9, 0x0d, 0x69, 0xb8, 0xb6, 0xb4, 0x35, 0xff,
+	0xac, 0xfc, 0xe2, 0x59, 0xf2, 0x9a, 0x20, 0x4e, 0x28, 0xf5, 0x53, 0xa7, 0x21, 0x1b, 0x07, 0x16,
+	0xd5, 0x11, 0xaf, 0x2b, 0xbb, 0x8d, 0xbf, 0xc8, 0xc3, 0xfd, 0x59, 0x00, 0xb2, 0x1e, 0xbd, 0xdd,
+	0xb2, 0xc3, 0xb5, 0xdc, 0xd6, 0xfc, 0xb3, 0xa2, 0x7a, 0x85, 0x65, 0x4f, 0xce, 0xd8, 0xdc, 0xd4,
+	0x8c, 0xed, 0xc1, 0x82, 0xcf, 0x98, 0x1b, 0xae, 0xcd, 0x63, 0xa7, 0x3e, 0x7d, 0xd7, 0x4e, 0x6d,
+	0x77, 0x19, 0x73, 0x75, 0x69, 0xbb, 0xf1, 0x5f, 0x73, 0x90, 0x17, 0x6d, 0xf2, 0x7b, 0xa9, 0x67,
+	0x6b, 0xed, 0xc5, 0x4f, 0x6e, 0x45, 0x86, 0x7f, 0xc4, 0xf3, 0x4c, 0x3d, 0x93, 0x7b, 0x50, 0x0c,
+	0x4f, 0xcd, 0xc0, 0xf1, 0x86, 0xd8, 0xed, 0xda, 0x8b, 0x2f, 0x6e, 0x47, 0xd7, 0x93, 0xc6, 0xc8,
+	0x18, 0x31, 0x89, 0x85, 0x29, 0x27, 0x50, 0x6e, 0x94, 0xb2, 0x21, 0xd6, 0x39, 0x55, 0xef, 0x4b,
+	0x8a, 0xba, 0xf8, 0xa9, 0x35, 0xa0, 0x14, 0x75, 0x87, 0x00, 0x14, 0x44, 0xad, 0xd1, 0x6e, 0xd6,
+	0xef, 0x91, 0x0a, 0x94, 0x1a, 0x87, 0x87, 0x9d, 0x3d, 0xd1, 0xca, 0x91, 0x1a, 0xc0, 0x7e, 0xeb,
+	0xa8, 0xdb, 0xd1, 0xfb, 0xa2, 0x3d, 0x47, 0xca, 0x50, 0x7c, 0x79, 0xd8, 0x79, 0x23, 0x1a, 0xf3,
+	0xda, 0x29, 0x94, 0x53, 0x5d, 0x20, 0x0f, 0x80, 0x34, 0x5b, 0x4d, 0x51, 0x08, 0xb5, 0x9a, 0x46,
+	0xb7, 0xa5, 0x1b, 0xed, 0xe3, 0xfe, 0xcb, 0xfa, 0x3d, 0xf2, 0x04, 0x36, 0x7b, 0x07, 0x0d, 0xbd,
+	0xd5, 0x34, 0x76, 0xff, 0xd0, 0x68, 0x1c, 0x1e, 0xa2, 0x1c, 0x7f, 0xf4, 0x5b, 0x7b, 0x07, 0xf5,
+	0x1c, 0xd9, 0x82, 0x47, 0x33, 0x00, 0xbd, 0xc6, 0x51, 0x4b, 0x22, 0xe6, 0xb4, 0x3f, 0x9e, 0x07,
+	0xd8, 0x73, 0xcd, 0x30, 0x74, 0x06, 0x0e, 0x0d, 0x70, 0xff, 0x34, 0xb8, 0x1f, 0xef, 0x66, 0x0b,
+	0xac, 0xef, 0x3b, 0x36, 0x59, 0x81, 0x05, 0x66, 0x9c, 0xc7, 0xbb, 0x6a, 0x9e, 0xbd, 0x76, 0x70,
+	0xaf, 0x75, 0x24, 0x56, 0x0d, 0x88, 0x13, 0x61, 0x1d, 0xc4, 0xca, 0x21, 0xc9, 0x3b, 0x02, 0xfb,
+	0x10, 0x8a, 0xcc, 0xf0, 0x4f, 0x1c, 0x1e, 0xaa, 0x4d, 0xb6, 0xc0, 0xba, 0xa2, 0x85, 0xfb, 0xa7,
+	0x52, 0xa8, 0x72, 0xc1, 0x91, 0x8a, 0x75, 0x28, 0x51, 0x7e, 0x2a, 0x8b, 0x16, 0xb9, 0xd4, 0x8b,
+	0x94, 0x9f, 0x46, 0x35, 0x8b, 0x1d, 0x72, 0x63, 0x64, 0x5a, 0xb8, 0xc4, 0x2b, 0x7a, 0xc1, 0x0e,
+	0xf9, 0x91, 0x69, 0x09, 0x45, 0x18, 0x58, 0xa8, 0x58, 0x94, 0x8a, 0x30, 0xb0, 0x84, 0x42, 0x24,
+	0xb9, 0x2f, 0x5f, 0x11, 0xab, 0xb5, 0x5c, 0x74, 0xfc, 0x2e, 0xbe, 0xa4, 0x5e, 0x05, 0x61, 0x6d,
+	0x38, 0xbe, 0x5a, 0xbc, 0x0b, 0x76, 0xc8, 0xdb, 0xbe, 0x10, 0x0b, 0x2a, 0xc7, 0x57, 0xfb, 0xd8,
+	0x42, 0x18, 0x58, 0x6d, 0x5f, 0x10, 0x09, 0xb1, 0x58, 0xdd, 0x6a, 0x1d, 0x0b, 0x8f, 0x62, 0x83,
+	0x13, 0x2a, 0x41, 0x84, 0x2a, 0xb9, 0x80, 0x45, 0x2f, 0x51, 0xb5, 0x05, 0x15, 0xff, 0x8c, 0x1b,
+	0xdc, 0x1c, 0xca, 0x78, 0x96, 0xe4, 0x52, 0xf2, 0xcf, 0x78, 0xdf, 0xc4, 0x19, 0xd6, 0x7e, 0x35,
+	0x0f, 0x8b, 0xa2, 0xf0, 0x66, 0xde, 0xde, 0x08, 0xb7, 0x0c, 0xd3, 0xb6, 0x0d, 0x36, 0xe6, 0x34,
+	0x10, 0x56, 0x38, 0x19, 0x25, 0xbd, 0x6c, 0xda, 0x76, 0x47, 0xc8, 0xfa, 0xe6, 0x50, 0x6c, 0x53,
+	0xe2, 0xc8, 0x7e, 0x4e, 0x53, 0xb0, 0x39, 0x59, 0x3b, 0x48, 0x79, 0x8c, 0xdc, 0x82, 0x0a, 0x0f,
+	0x4c, 0xdf, 0xe0, 0xcc, 0x38, 0x65, 0xa1, 0x4c, 0xdf, 0x92, 0x0e, 0x42, 0xd6, 0x67, 0x07, 0x2c,
+	0xe4, 0xe4, 0x13, 0x20, 0x01, 0x1d, 0x99, 0xc1, 0x99, 0xe2, 0x92, 0xf3, 0x91, 0x47, 0x5c, 0x5d,
+	0x6a, 0x90, 0x4d, 0xce, 0x4c, 0x82, 0x76, 0x3c, 0x2f, 0x46, 0x2f, 0xa4, 0xd1, 0x6d, 0xa1, 0x90,
+	0x68, 0x15, 0x8b, 0x84, 0x8a, 0x4e, 0x16, 0xe2, 0x58, 0x10, 0x95, 0x8d, 0x25, 0x81, 0x15, 0xd3,
+	0xb1, 0xc4, 0xc8, 0x6d, 0x58, 0xe1, 0x81, 0xe9, 0x85, 0xae, 0xc9, 0xd3, 0xe0, 0x12, 0x82, 0x97,
+	0x63, 0xd5, 0x6c, 0x7c, 0x32, 0x50, 0x8b, 0x13, 0xf8, 0x68, 0xac, 0xb4, 0x7f, 0xc8, 0x41, 0x41,
+	0xce, 0x03, 0x79, 0x0a, 0xf3, 0xd6, 0x28, 0x7a, 0xa3, 0x4b, 0x92, 0x97, 0xc4, 0xd1, 0x2c, 0xe9,
+	0x42, 0x3d, 0x7b, 0x65, 0xa4, 0xb2, 0x7d, 0x3e, 0x93, 0xed, 0xc9, 0xf2, 0xca, 0x4f, 0x2c, 0x2f,
+	0xb9, 0x64, 0x16, 0xb2, 0x4b, 0x66, 0xf6, 0xca, 0x48, 0xd6, 0x5d, 0x31, 0xb5, 0xee, 0xb4, 0x7f,
+	0x9b, 0x87, 0xfc, 0x4b, 0x97, 0x5d, 0xe0, 0x83, 0xd0, 0xb2, 0x68, 0x18, 0x1a, 0xe9, 0xca, 0x64,
+	0x49, 0xaf, 0x48, 0x69, 0x7b, 0x56, 0xa5, 0xb4, 0x14, 0x55, 0x4a, 0xab, 0x50, 0x18, 0x7b, 0x8e,
+	0x10, 0x97, 0xa5, 0x78, 0xec, 0x39, 0x37, 0x95, 0xfb, 0x9b, 0x80, 0x8f, 0x29, 0x99, 0xd7, 0xb2,
+	0xca, 0x28, 0x09, 0x01, 0x2e, 0xd4, 0x75, 0x28, 0x45, 0x0f, 0x5b, 0x5c, 0x76, 0x4b, 0x7a, 0x51,
+	0x3d, 0x68, 0xc9, 0x87, 0xb0, 0xe4, 0x51, 0x7e, 0xc1, 0x30, 0x8b, 0x64, 0x2f, 0x17, 0x10, 0x51,
+	0x55, 0xe2, 0xf6, 0xac, 0x63, 0x48, 0x01, 0x21, 0xa9, 0x02, 0xed, 0x73, 0x00, 0x2b, 0xde, 0xbd,
+	0xd4, 0x5b, 0xda, 0x95, 0x78, 0xae, 0x92, 0x8d, 0x4d, 0x4f, 0xc1, 0xc8, 0x47, 0x50, 0x30, 0x71,
+	0x16, 0xd5, 0xdb, 0xd7, 0xa5, 0x89, 0xc9, 0xd5, 0x95, 0x9a, 0x6c, 0x40, 0xc9, 0x0f, 0x1c, 0x16,
+	0x38, 0xfc, 0x0a, 0x53, 0x66, 0x49, 0x8f, 0xdb, 0xa9, 0xe3, 0x4c, 0x25, 0x73, 0x9c, 0x49, 0x95,
+	0x9a, 0xd5, 0x4c, 0xa9, 0xb9, 0x0e, 0xa5, 0x61, 0xc0, 0xc6, 0xbe, 0x88, 0x43, 0xed, 0x0f, 0xd8,
+	0x96, 0x83, 0x91, 0xbe, 0xf5, 0x12, 0x88, 0x25, 0x44, 0x54, 0x85, 0xb8, 0x2b, 0xa5, 0x6d, 0x5b,
+	0xeb, 0x43, 0x65, 0xb2, 0xde, 0x92, 0x45, 0x63, 0x34, 0xc9, 0x15, 0xbd, 0x24, 0x05, 0x6d, 0x5b,
+	0x9c, 0x2d, 0x94, 0x32, 0xf4, 0xa9, 0xe5, 0x0c, 0x1c, 0x4b, 0x15, 0xa3, 0x35, 0x29, 0xee, 0x29,
+	0xa9, 0xf6, 0x2f, 0x79, 0xa8, 0x65, 0x6f, 0x5b, 0xae, 0xaf, 0x6a, 0xd7, 0xa1, 0x14, 0x5c, 0x1a,
+	0x27, 0x57, 0x9c, 0x86, 0xc8, 0x56, 0xd0, 0x8b, 0xc1, 0xe5, 0xae, 0x68, 0x8a, 0x99, 0x0a, 0x2e,
+	0x0d, 0x1f, 0xcb, 0x62, 0x99, 0xf7, 0x05, 0x7d, 0x31, 0xb8, 0x94, 0x75, 0x72, 0x88, 0x6b, 0xfc,
+	0xd2, 0x18, 0x5b, 0xa6, 0xd8, 0x23, 0x15, 0x28, 0x8f, 0xa0, 0x5a, 0x70, 0xf9, 0x4a, 0x88, 0xb3,
+	0xc8, 0x51, 0x06, 0xb9, 0x10, 0x21, 0x8f, 0xa6, 0x91, 0x27, 0x19, 0x64, 0x21, 0x42, 0xee, 0x4e,
+	0x23, 0xe5, 0x2b, 0xc0, 0x08, 0x59, 0x8c, 0x90, 0xf8, 0x12, 0x2f, 0x42, 0xae, 0x43, 0x89, 0x47,
+	0x11, 0x96, 0x64, 0x84, 0x3c, 0x89, 0x90, 0x27, 0x11, 0x2e, 0xca, 0x08, 0x79, 0x3a, 0x42, 0x3e,
+	0x19, 0x21, 0x48, 0x1f, 0x7c, 0x2a, 0x42, 0x3e, 0x19, 0x61, 0x39, 0x42, 0x1e, 0x4d, 0x23, 0xb3,
+	0x11, 0x56, 0x22, 0xe4, 0xee, 0x34, 0x32, 0x1b, 0x61, 0x35, 0x42, 0x66, 0x22, 0xd4, 0xa0, 0x1a,
+	0x5c, 0x1a, 0x56, 0x60, 0x49, 0x74, 0x88, 0xd9, 0x58, 0xd0, 0xcb, 0xc1, 0xe5, 0x5e, 0x60, 0x21,
+	0x12, 0x43, 0x3d, 0x71, 0xfc, 0x08, 0xb0, 0x24, 0x43, 0x3d, 0x71, 0x7c, 0xa5, 0x7e, 0x04, 0x8b,
+	0xdc, 0x19, 0xd1, 0x90, 0x9b, 0x23, 0x1f, 0xcf, 0x0d, 0x45, 0x3d, 0x11, 0x68, 0xff, 0x98, 0x83,
+	0x5a, 0xf6, 0x12, 0x2e, 0xbd, 0x7f, 0xe4, 0x32, 0xfb, 0xc7, 0x0f, 0x4f, 0xa8, 0x1f, 0x3e, 0x51,
+	0x37, 0xf7, 0xfe, 0x2b, 0xa8, 0x66, 0x6e, 0xed, 0xae, 0x5f, 0x0c, 0x0f, 0xa0, 0x10, 0x72, 0x93,
+	0x8f, 0x43, 0x55, 0x1b, 0xab, 0x96, 0xf6, 0x2d, 0xac, 0xcc, 0xb8, 0xbd, 0xbb, 0xf5, 0xa1, 0x35,
+	0xa1, 0x9f, 0xcf, 0xd0, 0xff, 0xed, 0x1c, 0xbe, 0x0b, 0x98, 0xbc, 0x85, 0xfc, 0x01, 0x6f, 0x2d,
+	0x5d, 0x16, 0x1a, 0x19, 0x17, 0x8b, 0x2e, 0x0b, 0x7b, 0x28, 0x90, 0xea, 0x93, 0x48, 0x9d, 0x8f,
+	0xd4, 0x27, 0x4a, 0xfd, 0x0c, 0xea, 0x2e, 0xf3, 0x2d, 0x63, 0xe4, 0x84, 0x31, 0x87, 0x3c, 0xd3,
+	0xd5, 0x84, 0xfc, 0xc8, 0x09, 0x23, 0xa2, 0xe7, 0xb0, 0xaa, 0x90, 0x2a, 0xe1, 0x22, 0x78, 0x41,
+	0x9e, 0x23, 0x25, 0x5c, 0x26, 0x9e, 0x32, 0x79, 0x02, 0x65, 0x97, 0x0d, 0x9c, 0x08, 0x58, 0x94,
+	0xe5, 0x92, 0x10, 0x29, 0xc0, 0xfb, 0x50, 0x71, 0x99, 0x39, 0x8a, 0x11, 0x25, 0x44, 0x94, 0x51,
+	0x26, 0x21, 0x1a, 0x85, 0xcd, 0x1b, 0xee, 0x2c, 0xef, 0x6c, 0x32, 0xfe, 0x2a, 0x07, 0x1b, 0xd7,
+	0x5f, 0x60, 0xde, 0x95, 0x1b, 0xf2, 0x39, 0x3c, 0x70, 0x3c, 0x71, 0x98, 0xa7, 0xc6, 0x89, 0x13,
+	0xdd, 0x65, 0x04, 0x26, 0x8f, 0xde, 0xbf, 0xac, 0x28, 0xed, 0xae, 0x23, 0xaf, 0x24, 0x74, 0x93,
+	0x53, 0xed, 0x7b, 0xd9, 0xb7, 0x6b, 0xee, 0x3f, 0xef, 0xac, 0x6f, 0xf7, 0x61, 0x01, 0x6f, 0x62,
+	0xa3, 0x9a, 0x06, 0x1b, 0x82, 0xdd, 0xa3, 0x17, 0x06, 0xfd, 0x2e, 0xaa, 0x6a, 0x0a, 0x1e, 0xbd,
+	0x68, 0x7d, 0x67, 0x6b, 0xa7, 0xf0, 0xf8, 0xe6, 0xdb, 0xd3, 0x3b, 0x9b, 0x9b, 0xbf, 0xce, 0xc9,
+	0x1c, 0xb8, 0xe6, 0x3e, 0xf5, 0xff, 0x77, 0x72, 0x7e, 0x99, 0x03, 0xed, 0xed, 0x77, 0xb3, 0xff,
+	0xb7, 0x93, 0xa4, 0x7d, 0x87, 0x73, 0x71, 0xc3, 0x1d, 0xee, 0xad, 0xfd, 0x3f, 0xc9, 0xde, 0x47,
+	0xc8, 0x62, 0x31, 0x7d, 0xc5, 0x70, 0x06, 0xef, 0xbf, 0xf5, 0xc2, 0xf5, 0xce, 0x32, 0xa0, 0x0f,
+	0x44, 0xb7, 0x9d, 0x89, 0xbb, 0x3c, 0x51, 0x6e, 0x05, 0xb6, 0xa3, 0xe6, 0xc9, 0x62, 0x63, 0x8f,
+	0xa3, 0x97, 0x82, 0x5e, 0x0d, 0x14, 0x78, 0x4f, 0x08, 0xaf, 0xdd, 0xdf, 0xff, 0x32, 0x07, 0x6b,
+	0xd7, 0xdd, 0xe8, 0xde, 0xba, 0xeb, 0x0d, 0xa8, 0x26, 0x9d, 0x99, 0xf5, 0x0d, 0xc7, 0x74, 0x00,
+	0x07, 0xf7, 0xf4, 0x72, 0x90, 0x48, 0x77, 0x8b, 0xf8, 0x62, 0x82, 0x87, 0xda, 0x31, 0x3c, 0xba,
+	0xe9, 0xbe, 0xfc, 0xb6, 0x7d, 0xd3, 0x7e, 0x01, 0x5b, 0x6f, 0xbb, 0x5b, 0xbe, 0xb3, 0xa9, 0xfa,
+	0x05, 0xac, 0x5f, 0x7b, 0xc1, 0xfc, 0x43, 0x9e, 0x6d, 0xf1, 0xa0, 0x26, 0xa5, 0x83, 0x1a, 0xb2,
+	0x50, 0xfb, 0x9b, 0x1c, 0x3c, 0x7b, 0xd7, 0xdb, 0xe6, 0x3b, 0x5b, 0x81, 0x9f, 0x02, 0x49, 0xdf,
+	0x80, 0xab, 0xbe, 0xc9, 0xe5, 0xb8, 0x9c, 0xd2, 0xa8, 0x3e, 0x8e, 0xe0, 0x83, 0x77, 0xb8, 0x97,
+	0xbe, 0xb3, 0xe1, 0x77, 0x71, 0x37, 0x7a, 0xcb, 0xdd, 0xf4, 0x9d, 0x79, 0xfb, 0xb3, 0x1c, 0x7c,
+	0xf8, 0x6e, 0xb7, 0xd4, 0x77, 0x36, 0xfc, 0x1b, 0x50, 0x9a, 0xb8, 0xb3, 0x88, 0xdb, 0xda, 0x7f,
+	0xe6, 0xa0, 0xbc, 0x2f, 0xce, 0x62, 0x47, 0x14, 0xcf, 0x55, 0xef, 0x43, 0xc5, 0x89, 0x2e, 0xa0,
+	0x22, 0xc7, 0x55, 0xfc, 0x36, 0x4f, 0xca, 0xda, 0x36, 0x69, 0x43, 0x2d, 0x81, 0xe0, 0xe1, 0x57,
+	0xbe, 0x68, 0x4c, 0x3e, 0x97, 0x48, 0x11, 0x6e, 0xc7, 0xd7, 0x59, 0xf8, 0x46, 0xb1, 0xea, 0xa4,
+	0x9b, 0xe4, 0x31, 0x94, 0x87, 0x74, 0x64, 0x44, 0x67, 0xdc, 0x79, 0x74, 0x26, 0xce, 0xb8, 0x5d,
+	0x79, 0xc6, 0x4d, 0x9f, 0x42, 0xf3, 0xa8, 0x8c, 0xdb, 0xda, 0x6f, 0x43, 0x35, 0xc3, 0x4d, 0x8a,
+	0x30, 0xdf, 0xed, 0x1c, 0xd7, 0xef, 0x91, 0x3a, 0x54, 0x5a, 0xdd, 0xce, 0xb1, 0xf1, 0x7c, 0xdf,
+	0xe8, 0x36, 0xfa, 0x07, 0xf5, 0x1c, 0x59, 0x86, 0xaa, 0x94, 0x7c, 0xa6, 0x44, 0x73, 0xda, 0x9f,
+	0xcc, 0xc1, 0x02, 0xf6, 0x33, 0x73, 0x3a, 0x95, 0xe1, 0xc6, 0xa7, 0xd3, 0x9f, 0x42, 0xd1, 0x62,
+	0xa3, 0x91, 0xa9, 0x3e, 0x52, 0x9b, 0x8a, 0x31, 0x1d, 0x69, 0xb8, 0x27, 0x91, 0x7a, 0x64, 0x42,
+	0xb6, 0xa1, 0x38, 0x92, 0x2a, 0xf5, 0x9a, 0xf8, 0xfe, 0xac, 0x11, 0xd2, 0x23, 0x50, 0xea, 0x70,
+	0x9e, 0xbf, 0xf1, 0x70, 0xae, 0x7d, 0x0d, 0x2b, 0x33, 0x1c, 0x93, 0x25, 0x28, 0x37, 0x9a, 0x4d,
+	0xe3, 0xa8, 0x75, 0xb4, 0xdb, 0xd2, 0x7b, 0xf5, 0x7b, 0x84, 0x40, 0x4d, 0x6f, 0x1d, 0x75, 0x5e,
+	0xb7, 0x62, 0x59, 0x4e, 0x80, 0x7a, 0xad, 0x7e, 0x2c, 0x98, 0xd3, 0xbe, 0x01, 0x78, 0x6d, 0xba,
+	0x63, 0xda, 0x35, 0x03, 0x73, 0x44, 0x1e, 0xc3, 0x3c, 0xf3, 0xc6, 0xea, 0xd5, 0x4f, 0x25, 0xf3,
+	0x01, 0x8c, 0x50, 0x90, 0x4f, 0x60, 0xe1, 0x5c, 0xa0, 0xd5, 0x78, 0x3c, 0xd8, 0x56, 0x5f, 0xa4,
+	0x22, 0x85, 0x98, 0x86, 0x6d, 0x9c, 0x67, 0x09, 0xd2, 0x8a, 0xb0, 0xd0, 0x1a, 0xf9, 0xfc, 0xea,
+	0xc5, 0x7f, 0x2f, 0x43, 0xb1, 0x23, 0xb9, 0x48, 0x13, 0xa0, 0xe9, 0x84, 0xe6, 0x89, 0x4b, 0x3b,
+	0x2e, 0x27, 0xb5, 0xd8, 0x07, 0x22, 0x37, 0x26, 0xda, 0xda, 0x83, 0x5f, 0xfe, 0xeb, 0xbf, 0x7f,
+	0x3f, 0x57, 0xd7, 0xca, 0x3b, 0xe7, 0xcf, 0x77, 0x94, 0xdd, 0x97, 0xb9, 0x8f, 0xc9, 0x4b, 0x28,
+	0xeb, 0x94, 0x7a, 0xef, 0x4a, 0xf3, 0x10, 0x69, 0x96, 0xb5, 0x8a, 0xa0, 0x89, 0x0c, 0x05, 0x4f,
+	0x0b, 0xca, 0xaa, 0x08, 0xa0, 0x1d, 0x6f, 0x4c, 0x32, 0x21, 0x4f, 0xb1, 0xac, 0x21, 0x0b, 0xd1,
+	0xaa, 0x82, 0xa5, 0x25, 0x9d, 0x7b, 0x63, 0x41, 0x73, 0x00, 0xd5, 0xf8, 0x61, 0xf1, 0x0e, 0x44,
+	0xeb, 0x48, 0xb4, 0xa2, 0xd5, 0x52, 0x51, 0x29, 0xa6, 0x3d, 0x58, 0x6c, 0x52, 0x97, 0xde, 0xba,
+	0x3b, 0xb1, 0x91, 0x20, 0x69, 0x03, 0xa8, 0x0b, 0xc8, 0xce, 0x98, 0x93, 0x7a, 0xe6, 0x43, 0xd6,
+	0xa3, 0x70, 0x78, 0x73, 0x7f, 0x12, 0x4b, 0x41, 0xd5, 0x81, 0x4a, 0x7c, 0xfb, 0x28, 0xc8, 0x48,
+	0xe6, 0xe3, 0x21, 0x14, 0x4f, 0xd1, 0x6d, 0x22, 0xdd, 0xaa, 0x56, 0x47, 0xba, 0x94, 0xb5, 0x20,
+	0xfc, 0x03, 0x58, 0x4a, 0xdf, 0x23, 0x0a, 0xce, 0xe4, 0x0e, 0x39, 0xad, 0x99, 0xa2, 0x7d, 0x8c,
+	0xb4, 0x6b, 0xda, 0x8a, 0xa0, 0x9d, 0xe0, 0x10, 0xcc, 0x5f, 0x41, 0x51, 0x1c, 0xbe, 0x1b, 0xb6,
+	0x4d, 0xaa, 0x99, 0x6f, 0x62, 0x6f, 0xce, 0x2a, 0x65, 0x23, 0xb3, 0x0a, 0x44, 0x4b, 0xc7, 0x57,
+	0xaf, 0x6f, 0x23, 0xc9, 0x0c, 0x5a, 0x62, 0x26, 0x78, 0x7a, 0x50, 0x8b, 0x6f, 0xe8, 0xf7, 0x4e,
+	0xa9, 0x75, 0x36, 0x95, 0xa0, 0xc9, 0x30, 0xc6, 0x40, 0xed, 0x3d, 0x24, 0x7c, 0xa8, 0x11, 0x41,
+	0x98, 0xb5, 0x17, 0xa4, 0x47, 0x50, 0x96, 0x39, 0xd7, 0x65, 0x5e, 0x7b, 0x90, 0x9a, 0x88, 0x78,
+	0x1f, 0x9c, 0xea, 0xe2, 0x06, 0x32, 0xde, 0xd7, 0x96, 0x92, 0x84, 0x45, 0x63, 0x35, 0xb1, 0x2a,
+	0xf3, 0xde, 0x9d, 0x2f, 0x33, 0xb1, 0x69, 0x6b, 0x41, 0xa8, 0x43, 0x75, 0x9f, 0xf2, 0xd4, 0x3d,
+	0xef, 0x64, 0xcc, 0x2b, 0x33, 0xae, 0xa2, 0xb4, 0x47, 0x48, 0xf9, 0x40, 0x5b, 0x16, 0x94, 0x19,
+	0x7b, 0xc1, 0xf9, 0xbb, 0x50, 0xd0, 0xe9, 0x09, 0x63, 0x6f, 0x5f, 0xe1, 0xab, 0xc8, 0xb3, 0xa4,
+	0x81, 0x5c, 0xe1, 0xc2, 0x46, 0x10, 0xbc, 0x82, 0xe5, 0x3d, 0xe6, 0xba, 0xd4, 0x4a, 0xbf, 0xe4,
+	0x7b, 0x1b, 0xd7, 0x16, 0x72, 0x6d, 0x68, 0xab, 0x82, 0x6b, 0xca, 0x5c, 0xd0, 0x06, 0xf0, 0x70,
+	0x2f, 0xa0, 0x26, 0xa7, 0xfd, 0xc0, 0x1c, 0x0c, 0x1c, 0xab, 0x67, 0x9d, 0x52, 0x7b, 0xec, 0x8a,
+	0x6d, 0xfc, 0xc9, 0x76, 0xe6, 0x3b, 0xfe, 0x29, 0xc0, 0x94, 0xb7, 0x0f, 0xd1, 0xdb, 0x96, 0xb6,
+	0x89, 0xde, 0x66, 0xb3, 0x2a, 0x9f, 0x32, 0xc3, 0xee, 0xda, 0xe7, 0x35, 0xac, 0xc2, 0xe7, 0x00,
+	0x56, 0x32, 0x3d, 0xfa, 0xfd, 0x31, 0x1d, 0xd3, 0x90, 0x6c, 0xce, 0xf4, 0x27, 0x95, 0x53, 0xbe,
+	0x34, 0xf4, 0xf5, 0x48, 0x7b, 0x38, 0x15, 0x9f, 0x34, 0x50, 0x7e, 0x32, 0xbd, 0xf8, 0x5f, 0xfb,
+	0x99, 0xc1, 0x26, 0xfc, 0xfc, 0x16, 0xd4, 0xe5, 0x32, 0x48, 0xd5, 0x59, 0xd7, 0xa7, 0x69, 0x02,
+	0xd2, 0xee, 0x7d, 0x96, 0x23, 0xdf, 0xc2, 0x6a, 0x97, 0x06, 0x03, 0x16, 0x8c, 0xf0, 0xf1, 0xdb,
+	0xf1, 0x69, 0x30, 0xc9, 0x80, 0x8a, 0xa9, 0x9e, 0x3d, 0xc5, 0x9e, 0x3d, 0xd6, 0xd6, 0x45, 0xcf,
+	0x66, 0x52, 0xc8, 0x4d, 0xbb, 0x2c, 0x37, 0x71, 0x59, 0x97, 0xbc, 0x8d, 0x34, 0xb3, 0xb6, 0x53,
+	0x86, 0x82, 0xaa, 0x0f, 0xe5, 0x7d, 0xca, 0x5b, 0x97, 0x1c, 0x9f, 0xcb, 0x24, 0x89, 0x28, 0x79,
+	0xd4, 0x6f, 0xdc, 0x8f, 0x9e, 0xdd, 0x3a, 0xe5, 0xe3, 0xc0, 0x43, 0x4d, 0x98, 0x65, 0x4d, 0x71,
+	0x08, 0xd6, 0x6f, 0xf1, 0xcb, 0x44, 0x79, 0xf8, 0xc3, 0x77, 0x70, 0x3d, 0xca, 0x89, 0x28, 0x01,
+	0xf0, 0x9f, 0x4e, 0xb2, 0xaa, 0x9b, 0xd7, 0xd4, 0x14, 0x8d, 0xa0, 0xf7, 0x61, 0x7d, 0x9f, 0xf2,
+	0xc3, 0xd9, 0x1f, 0xe1, 0x64, 0x9f, 0x84, 0x9b, 0xd9, 0xcf, 0x4a, 0x33, 0x9f, 0x06, 0x69, 0xcf,
+	0xd0, 0x93, 0xa6, 0xbd, 0xa7, 0x42, 0x98, 0xcd, 0x28, 0x3c, 0x9e, 0xc2, 0xea, 0x4c, 0xfd, 0x6d,
+	0xbc, 0x65, 0xe6, 0x76, 0x26, 0xdb, 0x97, 0xb9, 0x8f, 0x77, 0xbf, 0x85, 0x4d, 0x16, 0x0c, 0x91,
+	0xc7, 0x62, 0x81, 0xbd, 0x2d, 0xff, 0x75, 0x27, 0xe2, 0xdd, 0xad, 0xbe, 0xc6, 0xb6, 0x28, 0x91,
+	0x3a, 0x87, 0xfd, 0x6f, 0x76, 0x86, 0x0e, 0x3f, 0x1d, 0x9f, 0x88, 0x09, 0xda, 0x89, 0x4c, 0x76,
+	0xa4, 0xc9, 0xa7, 0xea, 0xbf, 0x7d, 0xce, 0x3f, 0xdf, 0x19, 0xb2, 0xe8, 0xbf, 0x8e, 0xba, 0xb9,
+	0xee, 0xdc, 0x49, 0x01, 0x35, 0x9f, 0xff, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x26, 0x5c, 0xa8,
+	0x33, 0x99, 0x34, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -3420,6 +4519,12 @@
 	CreateTrafficQueues(ctx context.Context, in *tech_profile.TrafficQueues, opts ...grpc.CallOption) (*Empty, error)
 	RemoveTrafficQueues(ctx context.Context, in *tech_profile.TrafficQueues, opts ...grpc.CallOption) (*Empty, error)
 	EnableIndication(ctx context.Context, in *Empty, opts ...grpc.CallOption) (Openolt_EnableIndicationClient, error)
+	PerformGroupOperation(ctx context.Context, in *Group, opts ...grpc.CallOption) (*Empty, error)
+	DeleteGroup(ctx context.Context, in *Group, opts ...grpc.CallOption) (*Empty, error)
+	GetExtValue(ctx context.Context, in *ValueParam, opts ...grpc.CallOption) (*common.ReturnValues, error)
+	OnuItuPonAlarmSet(ctx context.Context, in *config.OnuItuPonAlarm, opts ...grpc.CallOption) (*Empty, error)
+	GetLogicalOnuDistanceZero(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*OnuLogicalDistance, error)
+	GetLogicalOnuDistance(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*OnuLogicalDistance, error)
 }
 
 type openoltClient struct {
@@ -3642,6 +4747,60 @@
 	return m, nil
 }
 
+func (c *openoltClient) PerformGroupOperation(ctx context.Context, in *Group, opts ...grpc.CallOption) (*Empty, error) {
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, "/openolt.Openolt/PerformGroupOperation", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) DeleteGroup(ctx context.Context, in *Group, opts ...grpc.CallOption) (*Empty, error) {
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, "/openolt.Openolt/DeleteGroup", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) GetExtValue(ctx context.Context, in *ValueParam, opts ...grpc.CallOption) (*common.ReturnValues, error) {
+	out := new(common.ReturnValues)
+	err := c.cc.Invoke(ctx, "/openolt.Openolt/GetExtValue", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) OnuItuPonAlarmSet(ctx context.Context, in *config.OnuItuPonAlarm, opts ...grpc.CallOption) (*Empty, error) {
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, "/openolt.Openolt/OnuItuPonAlarmSet", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) GetLogicalOnuDistanceZero(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*OnuLogicalDistance, error) {
+	out := new(OnuLogicalDistance)
+	err := c.cc.Invoke(ctx, "/openolt.Openolt/GetLogicalOnuDistanceZero", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) GetLogicalOnuDistance(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*OnuLogicalDistance, error) {
+	out := new(OnuLogicalDistance)
+	err := c.cc.Invoke(ctx, "/openolt.Openolt/GetLogicalOnuDistance", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 // OpenoltServer is the server API for Openolt service.
 type OpenoltServer interface {
 	DisableOlt(context.Context, *Empty) (*Empty, error)
@@ -3665,6 +4824,12 @@
 	CreateTrafficQueues(context.Context, *tech_profile.TrafficQueues) (*Empty, error)
 	RemoveTrafficQueues(context.Context, *tech_profile.TrafficQueues) (*Empty, error)
 	EnableIndication(*Empty, Openolt_EnableIndicationServer) error
+	PerformGroupOperation(context.Context, *Group) (*Empty, error)
+	DeleteGroup(context.Context, *Group) (*Empty, error)
+	GetExtValue(context.Context, *ValueParam) (*common.ReturnValues, error)
+	OnuItuPonAlarmSet(context.Context, *config.OnuItuPonAlarm) (*Empty, error)
+	GetLogicalOnuDistanceZero(context.Context, *Onu) (*OnuLogicalDistance, error)
+	GetLogicalOnuDistance(context.Context, *Onu) (*OnuLogicalDistance, error)
 }
 
 func RegisterOpenoltServer(s *grpc.Server, srv OpenoltServer) {
@@ -4052,6 +5217,114 @@
 	return x.ServerStream.SendMsg(m)
 }
 
+func _Openolt_PerformGroupOperation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Group)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).PerformGroupOperation(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/openolt.Openolt/PerformGroupOperation",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).PerformGroupOperation(ctx, req.(*Group))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_DeleteGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Group)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).DeleteGroup(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/openolt.Openolt/DeleteGroup",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).DeleteGroup(ctx, req.(*Group))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_GetExtValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ValueParam)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).GetExtValue(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/openolt.Openolt/GetExtValue",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).GetExtValue(ctx, req.(*ValueParam))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_OnuItuPonAlarmSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(config.OnuItuPonAlarm)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).OnuItuPonAlarmSet(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/openolt.Openolt/OnuItuPonAlarmSet",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).OnuItuPonAlarmSet(ctx, req.(*config.OnuItuPonAlarm))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_GetLogicalOnuDistanceZero_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Onu)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).GetLogicalOnuDistanceZero(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/openolt.Openolt/GetLogicalOnuDistanceZero",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).GetLogicalOnuDistanceZero(ctx, req.(*Onu))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_GetLogicalOnuDistance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Onu)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).GetLogicalOnuDistance(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/openolt.Openolt/GetLogicalOnuDistance",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).GetLogicalOnuDistance(ctx, req.(*Onu))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 var _Openolt_serviceDesc = grpc.ServiceDesc{
 	ServiceName: "openolt.Openolt",
 	HandlerType: (*OpenoltServer)(nil),
@@ -4136,6 +5409,30 @@
 			MethodName: "RemoveTrafficQueues",
 			Handler:    _Openolt_RemoveTrafficQueues_Handler,
 		},
+		{
+			MethodName: "PerformGroupOperation",
+			Handler:    _Openolt_PerformGroupOperation_Handler,
+		},
+		{
+			MethodName: "DeleteGroup",
+			Handler:    _Openolt_DeleteGroup_Handler,
+		},
+		{
+			MethodName: "GetExtValue",
+			Handler:    _Openolt_GetExtValue_Handler,
+		},
+		{
+			MethodName: "OnuItuPonAlarmSet",
+			Handler:    _Openolt_OnuItuPonAlarmSet_Handler,
+		},
+		{
+			MethodName: "GetLogicalOnuDistanceZero",
+			Handler:    _Openolt_GetLogicalOnuDistanceZero_Handler,
+		},
+		{
+			MethodName: "GetLogicalOnuDistance",
+			Handler:    _Openolt_GetLogicalOnuDistance_Handler,
+		},
 	},
 	Streams: []grpc.StreamDesc{
 		{
diff --git a/vendor/github.com/opencord/voltha-protos/v2/go/tech_profile/tech_profile.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/tech_profile/tech_profile.pb.go
similarity index 79%
rename from vendor/github.com/opencord/voltha-protos/v2/go/tech_profile/tech_profile.pb.go
rename to vendor/github.com/opencord/voltha-protos/v3/go/tech_profile/tech_profile.pb.go
index 5a78e1e..7d7c2ba 100644
--- a/vendor/github.com/opencord/voltha-protos/v2/go/tech_profile/tech_profile.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/tech_profile/tech_profile.pb.go
@@ -322,6 +322,7 @@
 	AllocId              uint32              `protobuf:"fixed32,2,opt,name=alloc_id,json=allocId,proto3" json:"alloc_id,omitempty"`
 	Scheduler            *SchedulerConfig    `protobuf:"bytes,3,opt,name=scheduler,proto3" json:"scheduler,omitempty"`
 	TrafficShapingInfo   *TrafficShapingInfo `protobuf:"bytes,4,opt,name=traffic_shaping_info,json=trafficShapingInfo,proto3" json:"traffic_shaping_info,omitempty"`
+	TechProfileId        uint32              `protobuf:"fixed32,5,opt,name=tech_profile_id,json=techProfileId,proto3" json:"tech_profile_id,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
 	XXX_unrecognized     []byte              `json:"-"`
 	XXX_sizecache        int32               `json:"-"`
@@ -380,6 +381,13 @@
 	return nil
 }
 
+func (m *TrafficScheduler) GetTechProfileId() uint32 {
+	if m != nil {
+		return m.TechProfileId
+	}
+	return 0
+}
+
 type TrafficSchedulers struct {
 	IntfId               uint32              `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
 	OnuId                uint32              `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
@@ -812,6 +820,7 @@
 	UniId                uint32          `protobuf:"fixed32,4,opt,name=uni_id,json=uniId,proto3" json:"uni_id,omitempty"`
 	PortNo               uint32          `protobuf:"fixed32,5,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
 	TrafficQueues        []*TrafficQueue `protobuf:"bytes,6,rep,name=traffic_queues,json=trafficQueues,proto3" json:"traffic_queues,omitempty"`
+	TechProfileId        uint32          `protobuf:"fixed32,7,opt,name=tech_profile_id,json=techProfileId,proto3" json:"tech_profile_id,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
 	XXX_unrecognized     []byte          `json:"-"`
 	XXX_sizecache        int32           `json:"-"`
@@ -877,6 +886,13 @@
 	return nil
 }
 
+func (m *TrafficQueues) GetTechProfileId() uint32 {
+	if m != nil {
+		return m.TechProfileId
+	}
+	return 0
+}
+
 func init() {
 	proto.RegisterEnum("tech_profile.Direction", Direction_name, Direction_value)
 	proto.RegisterEnum("tech_profile.SchedulingPolicy", SchedulingPolicy_name, SchedulingPolicy_value)
@@ -898,75 +914,77 @@
 func init() { proto.RegisterFile("voltha_protos/tech_profile.proto", fileDescriptor_d019a68bffe14cae) }
 
 var fileDescriptor_d019a68bffe14cae = []byte{
-	// 1106 bytes of a gzipped FileDescriptorProto
+	// 1139 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xdd, 0x6e, 0x1b, 0x45,
-	0x14, 0xf6, 0xda, 0x8d, 0x7f, 0x4e, 0x6c, 0x77, 0x33, 0x25, 0xc4, 0xa4, 0x0d, 0x04, 0x97, 0xaa,
-	0x91, 0x11, 0x31, 0x0a, 0x25, 0x37, 0x45, 0xaa, 0xec, 0x26, 0x52, 0x2c, 0xd1, 0x34, 0xdd, 0x04,
-	0x59, 0xe2, 0x82, 0xd5, 0x78, 0x67, 0x6c, 0x8f, 0xb4, 0x9e, 0x59, 0x66, 0xc7, 0x75, 0xd2, 0x2b,
-	0x6e, 0x78, 0x0b, 0x6e, 0x79, 0x01, 0xb8, 0x41, 0x3c, 0x11, 0x2f, 0xc0, 0x3d, 0x9a, 0xd9, 0x5d,
-	0xdb, 0xbb, 0x36, 0x29, 0x54, 0x70, 0x37, 0xe7, 0xdb, 0x6f, 0xce, 0x9c, 0x6f, 0xce, 0xcf, 0x0e,
-	0xec, 0xbf, 0x16, 0xbe, 0x1a, 0x63, 0x37, 0x90, 0x42, 0x89, 0xb0, 0xad, 0xa8, 0x37, 0xd6, 0xeb,
-	0x21, 0xf3, 0xe9, 0xa1, 0xc1, 0x50, 0x75, 0x19, 0xdb, 0x7d, 0x30, 0x12, 0x62, 0xe4, 0xd3, 0x36,
-	0x0e, 0x58, 0x1b, 0x73, 0x2e, 0x14, 0x56, 0x4c, 0xf0, 0x30, 0xe2, 0x36, 0x7f, 0xc8, 0xc3, 0xdd,
-	0x4b, 0x6f, 0x4c, 0xc9, 0xd4, 0xa7, 0xf2, 0xb9, 0xe0, 0x43, 0x36, 0x42, 0x5f, 0x42, 0x85, 0x30,
-	0x49, 0x3d, 0xcd, 0x6b, 0x58, 0xfb, 0xd6, 0x41, 0xfd, 0x68, 0xe7, 0x30, 0x75, 0xce, 0x49, 0xf2,
-	0xd9, 0x59, 0x30, 0xd1, 0x33, 0xa8, 0x61, 0x42, 0x98, 0x5e, 0x63, 0xdf, 0x1d, 0xcc, 0x1a, 0x79,
-	0xb3, 0x75, 0x37, 0xbd, 0xb5, 0x33, 0xa7, 0x74, 0xfb, 0x4e, 0x75, 0xb1, 0xa1, 0x3b, 0x43, 0xbb,
-	0x50, 0x0e, 0x24, 0x13, 0x92, 0xa9, 0x9b, 0x46, 0x61, 0xdf, 0x3a, 0x28, 0x39, 0x73, 0x1b, 0xbd,
-	0x0f, 0xc5, 0x19, 0x65, 0xa3, 0xb1, 0x6a, 0xdc, 0x31, 0x5f, 0x62, 0x0b, 0x75, 0xa0, 0x1a, 0xea,
-	0xf0, 0xdd, 0x40, 0xf8, 0xcc, 0xbb, 0x69, 0x6c, 0x98, 0x33, 0x3f, 0x4c, 0x9f, 0x19, 0x0b, 0x64,
-	0x7c, 0x74, 0x61, 0x58, 0xce, 0xa6, 0xd9, 0x13, 0x19, 0xcd, 0xdf, 0x2c, 0x40, 0x57, 0x12, 0x0f,
-	0x87, 0xcc, 0xbb, 0x1c, 0xe3, 0x80, 0xf1, 0x51, 0x8f, 0x0f, 0x05, 0xb2, 0xa1, 0xe0, 0x31, 0x69,
-	0xf4, 0x97, 0x1c, 0xbd, 0x34, 0xc8, 0x20, 0x34, 0xb2, 0x34, 0x32, 0x08, 0x35, 0x12, 0x30, 0x19,
-	0x07, 0xab, 0x97, 0x06, 0x19, 0x84, 0x71, 0x90, 0x7a, 0xa9, 0x91, 0x11, 0x93, 0x26, 0xb0, 0x92,
-	0xa3, 0x97, 0xe8, 0x0c, 0x00, 0x13, 0xe2, 0x0e, 0x66, 0x2e, 0xe3, 0xa4, 0x51, 0x34, 0x11, 0xb7,
-	0xd2, 0x11, 0xf7, 0xf8, 0x90, 0x4a, 0x49, 0x49, 0x72, 0x5b, 0xdd, 0x7e, 0x8f, 0x13, 0xe6, 0x99,
-	0xd4, 0x39, 0x65, 0x4c, 0x48, 0x77, 0xd6, 0xe3, 0xa4, 0xf9, 0xa7, 0x05, 0x76, 0x12, 0x7a, 0x92,
-	0xc4, 0x77, 0x4d, 0xdf, 0x07, 0x50, 0xc6, 0xbe, 0x2f, 0x3c, 0x97, 0x91, 0x58, 0x62, 0xc9, 0xd8,
-	0x3d, 0x82, 0x9e, 0x42, 0x25, 0x4c, 0xdc, 0x1b, 0xb1, 0x9b, 0x47, 0x7b, 0x6b, 0x6f, 0x38, 0x29,
-	0x21, 0x67, 0xc1, 0x47, 0x0e, 0xbc, 0xa7, 0xa2, 0x10, 0xdd, 0x30, 0xba, 0x5e, 0x97, 0xf1, 0xa1,
-	0x30, 0x57, 0xb4, 0x79, 0xb4, 0x9f, 0xf6, 0xb3, 0x9a, 0x07, 0x07, 0xa9, 0x15, 0xac, 0xf9, 0xbb,
-	0x05, 0x5b, 0x59, 0xdd, 0x21, 0xda, 0x81, 0x12, 0xe3, 0x6a, 0xa8, 0x05, 0x44, 0x59, 0x2b, 0x6a,
-	0xb3, 0x47, 0xd0, 0x36, 0x14, 0x05, 0x9f, 0x2e, 0x84, 0x6d, 0x08, 0x3e, 0x8d, 0xe0, 0x29, 0x67,
-	0x1a, 0x8e, 0xd2, 0xb5, 0x31, 0xe5, 0xac, 0x47, 0xb4, 0x9b, 0x40, 0x48, 0xe5, 0x72, 0x11, 0x27,
-	0xad, 0xa8, 0xcd, 0x73, 0x81, 0x4e, 0xa1, 0x3e, 0x57, 0xa2, 0x4f, 0x0d, 0x1b, 0x85, 0xfd, 0xc2,
-	0xc1, 0x66, 0xb6, 0xda, 0xb2, 0x81, 0x39, 0x35, 0xb5, 0x84, 0x84, 0xcd, 0x63, 0xd8, 0xbe, 0xc2,
-	0xcc, 0x3f, 0x91, 0x22, 0x38, 0x61, 0xa1, 0x87, 0x25, 0x89, 0xfb, 0x6e, 0x0f, 0xe0, 0xfb, 0x29,
-	0x9d, 0x52, 0x37, 0x64, 0x6f, 0x68, 0x2c, 0xa1, 0x62, 0x90, 0x4b, 0xf6, 0x86, 0x36, 0x7f, 0xb4,
-	0xc0, 0x76, 0x28, 0x49, 0xef, 0x79, 0x08, 0xb5, 0x09, 0xe3, 0xae, 0x1a, 0x4b, 0x1a, 0x8e, 0x85,
-	0x9f, 0x28, 0xaf, 0x4e, 0x18, 0xbf, 0x4a, 0x30, 0x43, 0xc2, 0xd7, 0x4b, 0xa4, 0x7c, 0x4c, 0xc2,
-	0xd7, 0x0b, 0xd2, 0x63, 0xb8, 0xab, 0x49, 0x81, 0x14, 0x03, 0x3c, 0x60, 0xfe, 0xa2, 0x09, 0xeb,
-	0x13, 0x7c, 0x7d, 0xb1, 0x40, 0x9b, 0xbf, 0x5a, 0xb0, 0xd5, 0x5f, 0x09, 0xe4, 0x09, 0x6c, 0x8c,
-	0x24, 0xa5, 0x51, 0xc5, 0xad, 0xdc, 0x49, 0x96, 0xee, 0x44, 0x64, 0x74, 0x0c, 0xc5, 0x1b, 0xea,
-	0xfb, 0x22, 0x1a, 0x16, 0x6f, 0xdf, 0x16, 0xb3, 0xd1, 0xe7, 0x50, 0x90, 0x94, 0xc4, 0xb5, 0xf8,
-	0xb6, 0x4d, 0x9a, 0xda, 0xfc, 0x23, 0x0f, 0xb5, 0x74, 0xc4, 0x5d, 0xa8, 0x93, 0x08, 0x48, 0x86,
-	0x47, 0xd4, 0x2c, 0xf7, 0xb3, 0xcd, 0x62, 0x38, 0xf1, 0xe4, 0xa8, 0x91, 0x65, 0x13, 0x7d, 0x07,
-	0x0d, 0x85, 0x99, 0xef, 0x12, 0x29, 0x02, 0x37, 0xf1, 0xe6, 0x19, 0xff, 0xb1, 0xa2, 0x87, 0x99,
-	0xe2, 0x58, 0x97, 0xf9, 0xb3, 0x9c, 0xb3, 0xad, 0xd6, 0x96, 0xc4, 0x39, 0x20, 0x49, 0x49, 0xd6,
-	0xf3, 0x3f, 0x92, 0x7d, 0x96, 0x73, 0x6c, 0x99, 0xcd, 0xd2, 0x2b, 0xb8, 0x37, 0x5b, 0xe3, 0x30,
-	0xea, 0xc5, 0x8f, 0xd2, 0x0e, 0xfb, 0x6b, 0x3c, 0x6e, 0xcd, 0xb2, 0x2e, 0xbb, 0xf6, 0xe2, 0x1a,
-	0x23, 0x6f, 0xcd, 0x9f, 0x0b, 0x50, 0x8d, 0x9b, 0xe0, 0x95, 0xae, 0xde, 0x77, 0x9d, 0x48, 0x7b,
-	0x00, 0x23, 0x3a, 0x31, 0xbd, 0x38, 0x6f, 0xdd, 0x4a, 0x8c, 0xf4, 0x88, 0x1e, 0x58, 0xc1, 0x80,
-	0x29, 0x77, 0x82, 0x03, 0x73, 0x23, 0x15, 0xa7, 0xa4, 0xed, 0x17, 0x38, 0x40, 0x8f, 0xa0, 0x8e,
-	0x69, 0xe8, 0x52, 0xee, 0xc9, 0x9b, 0xc0, 0x9c, 0xaa, 0x15, 0x96, 0x9d, 0x1a, 0xa6, 0xe1, 0xe9,
-	0x1c, 0xfc, 0x0f, 0x7e, 0x1e, 0xa9, 0x7f, 0x56, 0xf1, 0x6f, 0xff, 0x59, 0xa5, 0xd4, 0x3f, 0x6b,
-	0xb5, 0xf0, 0xca, 0xff, 0xba, 0xf0, 0xba, 0xd9, 0x5b, 0x6f, 0x54, 0x4c, 0x0e, 0xd7, 0xfb, 0x88,
-	0x1b, 0x21, 0xf1, 0x11, 0x99, 0xcd, 0x5f, 0x2c, 0xa8, 0x2d, 0xe7, 0xe9, 0xff, 0x9f, 0xa0, 0x9d,
-	0xc5, 0x04, 0x35, 0x73, 0x2d, 0x6c, 0x14, 0xcd, 0x04, 0xdd, 0x5d, 0x3b, 0x41, 0x4d, 0x50, 0xf3,
-	0xe9, 0x19, 0x85, 0xd8, 0xfa, 0x0a, 0x2a, 0xf3, 0x62, 0x41, 0x55, 0x28, 0x7f, 0x73, 0x71, 0x79,
-	0xe5, 0x9c, 0x76, 0x5e, 0xd8, 0x39, 0x54, 0x07, 0x38, 0x79, 0xd9, 0x3f, 0x8f, 0x6d, 0x0b, 0x6d,
-	0x41, 0xad, 0xdb, 0x3b, 0xe9, 0x39, 0xa7, 0xcf, 0xaf, 0x7a, 0x2f, 0xcf, 0x3b, 0x5f, 0xdb, 0xf9,
-	0xd6, 0x53, 0xb0, 0xb3, 0xf9, 0x44, 0x25, 0x28, 0xf4, 0x1d, 0xc7, 0xce, 0x21, 0x04, 0xf5, 0x4b,
-	0x25, 0x99, 0xa7, 0x2e, 0xe2, 0x0c, 0xda, 0x16, 0x02, 0x28, 0x9e, 0xdd, 0x0c, 0x24, 0x23, 0x76,
-	0xbe, 0xc5, 0xa1, 0xba, 0xfc, 0x7a, 0x41, 0xdb, 0xb0, 0xb5, 0x6c, 0xbb, 0xe7, 0x82, 0x53, 0x3b,
-	0x87, 0xee, 0xc1, 0xdd, 0x34, 0xdc, 0xb1, 0x2d, 0x74, 0x1f, 0x76, 0x52, 0x60, 0x97, 0x86, 0xea,
-	0x74, 0x38, 0x14, 0x52, 0xd9, 0xf9, 0x15, 0x47, 0x9d, 0xa9, 0x12, 0x76, 0xa1, 0xf5, 0x6c, 0x3e,
-	0xb1, 0xe2, 0x48, 0xab, 0x50, 0x4e, 0xe6, 0x87, 0x9d, 0x43, 0x35, 0xa8, 0xf4, 0xe7, 0xa6, 0xa5,
-	0x65, 0x38, 0x94, 0xd8, 0x79, 0x54, 0x86, 0x3b, 0xba, 0x75, 0xed, 0x42, 0xeb, 0x27, 0x0b, 0x1e,
-	0xdc, 0xf6, 0x92, 0x40, 0x8f, 0xe0, 0xe3, 0xdb, 0xbe, 0x27, 0x8a, 0x0e, 0xe0, 0x93, 0x5b, 0x69,
-	0x9d, 0x30, 0x9c, 0x4a, 0x4a, 0x6c, 0x0b, 0x7d, 0x0a, 0x8f, 0x6f, 0x65, 0x2e, 0xcb, 0xee, 0x1e,
-	0x7f, 0xfb, 0x64, 0xc4, 0xd4, 0x78, 0x3a, 0x38, 0xf4, 0xc4, 0xa4, 0x2d, 0x02, 0xca, 0x3d, 0x21,
-	0x49, 0x3b, 0x7a, 0xdf, 0x7e, 0x16, 0xbf, 0x6f, 0x5f, 0x1f, 0xb5, 0x47, 0x22, 0xf5, 0xca, 0x1d,
-	0x14, 0xcd, 0xa7, 0x2f, 0xfe, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x92, 0xf8, 0xb6, 0xb7, 0x0a, 0x0b,
-	0x00, 0x00,
+	0x14, 0xf6, 0xda, 0x8d, 0x7f, 0x4e, 0x6c, 0x67, 0x33, 0x25, 0xc4, 0xa4, 0x0d, 0x18, 0x97, 0xd2,
+	0xc8, 0x88, 0x18, 0xa5, 0xa5, 0x37, 0x45, 0xaa, 0xec, 0x26, 0x52, 0x56, 0xa2, 0x69, 0xba, 0x09,
+	0x32, 0xe2, 0x82, 0xd5, 0x7a, 0x67, 0xbc, 0x1e, 0x69, 0x3d, 0xb3, 0xcc, 0x8e, 0xeb, 0xa4, 0x57,
+	0xdc, 0xf0, 0x16, 0x70, 0xc9, 0x13, 0x70, 0x83, 0x78, 0x14, 0x9e, 0x80, 0xc7, 0x40, 0x33, 0xbb,
+	0x6b, 0x7b, 0x6d, 0x93, 0x42, 0x45, 0xef, 0xe6, 0x7c, 0xfb, 0x9d, 0x33, 0xe7, 0x7f, 0x16, 0x9a,
+	0xaf, 0x78, 0x20, 0x47, 0xae, 0x13, 0x0a, 0x2e, 0x79, 0xd4, 0x91, 0xc4, 0x1b, 0xa9, 0xf3, 0x90,
+	0x06, 0xe4, 0x50, 0x63, 0xa8, 0xba, 0x88, 0xed, 0xdd, 0xf5, 0x39, 0xf7, 0x03, 0xd2, 0x71, 0x43,
+	0xda, 0x71, 0x19, 0xe3, 0xd2, 0x95, 0x94, 0xb3, 0x28, 0xe6, 0xb6, 0x7e, 0xcc, 0xc3, 0xd6, 0x85,
+	0x37, 0x22, 0x78, 0x12, 0x10, 0xf1, 0x8c, 0xb3, 0x21, 0xf5, 0xd1, 0x97, 0x50, 0xc1, 0x54, 0x10,
+	0x4f, 0xf1, 0x1a, 0x46, 0xd3, 0x38, 0xa8, 0x1f, 0xed, 0x1e, 0x66, 0xee, 0x39, 0x4e, 0x3f, 0xdb,
+	0x73, 0x26, 0x7a, 0x0a, 0x35, 0x17, 0x63, 0xaa, 0xce, 0x6e, 0xe0, 0x0c, 0xa6, 0x8d, 0xbc, 0x56,
+	0xdd, 0xcb, 0xaa, 0x76, 0x67, 0x94, 0x5e, 0xdf, 0xae, 0xce, 0x15, 0x7a, 0x53, 0xb4, 0x07, 0xe5,
+	0x50, 0x50, 0x2e, 0xa8, 0xbc, 0x6e, 0x14, 0x9a, 0xc6, 0x41, 0xc9, 0x9e, 0xc9, 0xe8, 0x7d, 0x28,
+	0x4e, 0x09, 0xf5, 0x47, 0xb2, 0x71, 0x4b, 0x7f, 0x49, 0x24, 0xd4, 0x85, 0x6a, 0xa4, 0xdc, 0x77,
+	0x42, 0x1e, 0x50, 0xef, 0xba, 0xb1, 0xa1, 0xef, 0xfc, 0x30, 0x7b, 0x67, 0x12, 0x20, 0x65, 0xfe,
+	0xb9, 0x66, 0xd9, 0x9b, 0x5a, 0x27, 0x16, 0x5a, 0xbf, 0x1b, 0x80, 0x2e, 0x85, 0x3b, 0x1c, 0x52,
+	0xef, 0x62, 0xe4, 0x86, 0x94, 0xf9, 0x16, 0x1b, 0x72, 0x64, 0x42, 0xc1, 0xa3, 0x42, 0xc7, 0x5f,
+	0xb2, 0xd5, 0x51, 0x23, 0x83, 0x48, 0x87, 0xa5, 0x90, 0x41, 0xa4, 0x90, 0x90, 0x8a, 0xc4, 0x59,
+	0x75, 0xd4, 0xc8, 0x20, 0x4a, 0x9c, 0x54, 0x47, 0x85, 0xf8, 0x54, 0x68, 0xc7, 0x4a, 0xb6, 0x3a,
+	0xa2, 0x53, 0x00, 0x17, 0x63, 0x67, 0x30, 0x75, 0x28, 0xc3, 0x8d, 0xa2, 0xf6, 0xb8, 0x9d, 0xf5,
+	0xd8, 0x62, 0x43, 0x22, 0x04, 0xc1, 0x69, 0xb6, 0x7a, 0x7d, 0x8b, 0x61, 0xea, 0xe9, 0xd2, 0xd9,
+	0x65, 0x17, 0xe3, 0xde, 0xd4, 0x62, 0xb8, 0xf5, 0x4b, 0x1e, 0xcc, 0xd4, 0xf5, 0xb4, 0x88, 0x6f,
+	0x5b, 0xbe, 0x0f, 0xa0, 0xec, 0x06, 0x01, 0xf7, 0x1c, 0x8a, 0x93, 0x10, 0x4b, 0x5a, 0xb6, 0x30,
+	0x7a, 0x02, 0x95, 0x28, 0x35, 0xaf, 0x83, 0xdd, 0x3c, 0xda, 0x5f, 0x9b, 0xe1, 0xb4, 0x85, 0xec,
+	0x39, 0x1f, 0xd9, 0xf0, 0x9e, 0x8c, 0x5d, 0x74, 0xa2, 0x38, 0xbd, 0x0e, 0x65, 0x43, 0xae, 0x53,
+	0xb4, 0x79, 0xd4, 0xcc, 0xda, 0x59, 0xad, 0x83, 0x8d, 0xe4, 0x6a, 0x6d, 0x3e, 0x85, 0xad, 0x45,
+	0x35, 0xe5, 0x72, 0x9c, 0xdf, 0x9a, 0x82, 0xcf, 0x63, 0xd4, 0xc2, 0xad, 0x3f, 0x0c, 0xd8, 0x5e,
+	0xce, 0x4f, 0x84, 0x76, 0xa1, 0x44, 0x99, 0x1c, 0x2a, 0xad, 0xb8, 0xba, 0x45, 0x25, 0x5a, 0x18,
+	0xed, 0x40, 0x91, 0xb3, 0xc9, 0x3c, 0x01, 0x1b, 0x9c, 0x4d, 0x62, 0x78, 0xc2, 0xa8, 0x82, 0xe3,
+	0xb2, 0x6e, 0x4c, 0x18, 0xb5, 0xb0, 0x32, 0x13, 0x72, 0x21, 0x1d, 0xc6, 0x93, 0xcb, 0x8b, 0x4a,
+	0x3c, 0xe3, 0xe8, 0x04, 0xea, 0xb3, 0x88, 0xd5, 0xad, 0x51, 0xa3, 0xd0, 0x2c, 0x1c, 0x6c, 0x2e,
+	0x77, 0xe5, 0xb2, 0x63, 0x76, 0x4d, 0x2e, 0x20, 0x51, 0xeb, 0x31, 0xec, 0x5c, 0xba, 0x34, 0x38,
+	0x16, 0x3c, 0x3c, 0xa6, 0x91, 0xe7, 0x0a, 0x9c, 0xcc, 0xe7, 0x3e, 0xc0, 0x0f, 0x13, 0x32, 0x21,
+	0x4e, 0x44, 0x5f, 0x93, 0x24, 0x84, 0x8a, 0x46, 0x2e, 0xe8, 0x6b, 0xd2, 0xfa, 0xc9, 0x00, 0xd3,
+	0x26, 0x38, 0xab, 0x73, 0x0f, 0x6a, 0x63, 0xca, 0x1c, 0x39, 0x12, 0x24, 0x1a, 0xf1, 0x20, 0x8d,
+	0xbc, 0x3a, 0xa6, 0xec, 0x32, 0xc5, 0x34, 0xc9, 0xbd, 0x5a, 0x20, 0xe5, 0x13, 0x92, 0x7b, 0x35,
+	0x27, 0x3d, 0x80, 0x2d, 0x45, 0x0a, 0x05, 0x1f, 0xb8, 0x03, 0x1a, 0xcc, 0x87, 0xb5, 0x3e, 0x76,
+	0xaf, 0xce, 0xe7, 0x68, 0xeb, 0x37, 0x03, 0xb6, 0xfb, 0x2b, 0x8e, 0x3c, 0x82, 0x0d, 0x5f, 0x10,
+	0x12, 0x77, 0xe6, 0x4a, 0x4e, 0x96, 0xe9, 0x76, 0x4c, 0x46, 0x8f, 0xa1, 0x78, 0x4d, 0x82, 0x80,
+	0xc7, 0x4b, 0xe5, 0xcd, 0x6a, 0x09, 0x1b, 0x7d, 0x01, 0x05, 0x41, 0x70, 0xd2, 0xb3, 0x6f, 0x52,
+	0x52, 0xd4, 0xd6, 0x5f, 0x79, 0xa8, 0x65, 0x3d, 0xee, 0x41, 0x1d, 0xc7, 0x40, 0xba, 0x64, 0xe2,
+	0xa1, 0xba, 0xb3, 0x3c, 0x54, 0x9a, 0x93, 0x6c, 0x98, 0x1a, 0x5e, 0x14, 0xd1, 0xf7, 0xd0, 0x90,
+	0x2e, 0x0d, 0x1c, 0x2c, 0x78, 0xe8, 0xa4, 0xd6, 0x3c, 0x6d, 0x3f, 0x89, 0xe8, 0xde, 0x52, 0x73,
+	0xac, 0xab, 0xfc, 0x69, 0xce, 0xde, 0x91, 0x6b, 0x5b, 0xe2, 0x0c, 0x90, 0x20, 0x78, 0xd9, 0xf2,
+	0xbf, 0x0a, 0xfb, 0x34, 0x67, 0x9b, 0x62, 0xb9, 0x4a, 0x2f, 0xe1, 0xf6, 0x74, 0x8d, 0xc1, 0x78,
+	0x66, 0x3f, 0xca, 0x1a, 0xec, 0xaf, 0xb1, 0xb8, 0x3d, 0x5d, 0x36, 0xd9, 0x33, 0xe7, 0x69, 0x8c,
+	0xad, 0xb5, 0x7e, 0x2d, 0x40, 0x35, 0x19, 0x82, 0x97, 0xaa, 0x7b, 0xdf, 0x76, 0x73, 0xed, 0x03,
+	0xf8, 0x64, 0xac, 0x67, 0x71, 0x36, 0xba, 0x95, 0x04, 0xb1, 0xb0, 0x5a, 0x6c, 0xe1, 0x80, 0x4a,
+	0x67, 0xec, 0x86, 0x3a, 0x23, 0x15, 0xbb, 0xa4, 0xe4, 0xe7, 0x6e, 0x88, 0xee, 0x43, 0xdd, 0x25,
+	0x91, 0x43, 0x98, 0x27, 0xae, 0x43, 0x7d, 0xab, 0x8a, 0xb0, 0x6c, 0xd7, 0x5c, 0x12, 0x9d, 0xcc,
+	0xc0, 0xff, 0xe1, 0x91, 0xc9, 0xbc, 0x6d, 0xc5, 0x7f, 0x7c, 0xdb, 0x4a, 0x99, 0xb7, 0x6d, 0xb5,
+	0xf1, 0xca, 0xff, 0xb9, 0xf1, 0x7a, 0xcb, 0x59, 0x6f, 0x54, 0x74, 0x0d, 0xd7, 0xdb, 0x48, 0x06,
+	0x21, 0xb5, 0x11, 0x8b, 0xad, 0x3f, 0x0d, 0xa8, 0x2d, 0xd6, 0xe9, 0xdd, 0x6f, 0xd0, 0xee, 0x7c,
+	0x83, 0xea, 0xbd, 0x16, 0x35, 0x8a, 0x7a, 0x83, 0xee, 0xad, 0xdd, 0xa0, 0xda, 0xa9, 0xd9, 0xf6,
+	0x4c, 0x5c, 0x5c, 0xf3, 0x44, 0x94, 0xd6, 0x3c, 0x11, 0xed, 0xaf, 0xa0, 0x32, 0x6b, 0x2a, 0x54,
+	0x85, 0xf2, 0x37, 0xe7, 0x17, 0x97, 0xf6, 0x49, 0xf7, 0xb9, 0x99, 0x43, 0x75, 0x80, 0xe3, 0x17,
+	0xfd, 0xb3, 0x44, 0x36, 0xd0, 0x36, 0xd4, 0x7a, 0xd6, 0xb1, 0x65, 0x9f, 0x3c, 0xbb, 0xb4, 0x5e,
+	0x9c, 0x75, 0xbf, 0x36, 0xf3, 0xed, 0x27, 0x60, 0x2e, 0xd7, 0x1d, 0x95, 0xa0, 0xd0, 0xb7, 0x6d,
+	0x33, 0x87, 0x10, 0xd4, 0x2f, 0xa4, 0xa0, 0x9e, 0x3c, 0x4f, 0x2a, 0x6d, 0x1a, 0x08, 0xa0, 0x78,
+	0x7a, 0x3d, 0x10, 0x14, 0x9b, 0xf9, 0x36, 0x83, 0xea, 0xe2, 0xdf, 0x10, 0xda, 0x81, 0xed, 0x45,
+	0xd9, 0x39, 0xe3, 0x8c, 0x98, 0x39, 0x74, 0x1b, 0xb6, 0xb2, 0x70, 0xd7, 0x34, 0xd0, 0x1d, 0xd8,
+	0xcd, 0x80, 0x3d, 0x12, 0xc9, 0x93, 0xe1, 0x90, 0x0b, 0x69, 0xe6, 0x57, 0x0c, 0x75, 0x27, 0x92,
+	0x9b, 0x85, 0xf6, 0xd3, 0xd9, 0x66, 0x4b, 0x3c, 0xad, 0x42, 0x39, 0xdd, 0x33, 0x66, 0x0e, 0xd5,
+	0xa0, 0xd2, 0x9f, 0x89, 0x86, 0x0a, 0xc3, 0x26, 0xd8, 0xcc, 0xa3, 0x32, 0xdc, 0x52, 0x23, 0x6e,
+	0x16, 0xda, 0x3f, 0x1b, 0x70, 0xf7, 0xa6, 0x3f, 0x13, 0x74, 0x1f, 0x3e, 0xbe, 0xe9, 0x7b, 0x1a,
+	0xd1, 0x01, 0x7c, 0x72, 0x23, 0xad, 0x1b, 0x45, 0x13, 0x41, 0xb0, 0x69, 0xa0, 0xcf, 0xe0, 0xc1,
+	0x8d, 0xcc, 0xc5, 0xb0, 0x7b, 0xdf, 0x42, 0x93, 0x0b, 0xff, 0x90, 0x87, 0x84, 0x79, 0x5c, 0xe0,
+	0xc3, 0xf8, 0x47, 0x39, 0xd3, 0x32, 0xdf, 0x3d, 0xf2, 0xa9, 0x1c, 0x4d, 0x06, 0x87, 0x1e, 0x1f,
+	0x77, 0x52, 0x62, 0x27, 0x26, 0x7e, 0x9e, 0xfc, 0x51, 0xbf, 0x7a, 0xd8, 0xf1, 0x79, 0xe6, 0xbf,
+	0x7a, 0x50, 0xd4, 0x9f, 0x1e, 0xfe, 0x1d, 0x00, 0x00, 0xff, 0xff, 0xb6, 0x75, 0x37, 0xf5, 0x7c,
+	0x0b, 0x00, 0x00,
 }
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 8b82270..54d7b54 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -82,9 +82,11 @@
 github.com/opencord/cordctl/pkg/format
 # github.com/opencord/omci-sim v0.0.4
 github.com/opencord/omci-sim
-# github.com/opencord/voltha-protos/v2 v2.1.2
-github.com/opencord/voltha-protos/v2/go/openolt
-github.com/opencord/voltha-protos/v2/go/tech_profile
+# github.com/opencord/voltha-protos/v3 v3.4.5
+github.com/opencord/voltha-protos/v3/go/common
+github.com/opencord/voltha-protos/v3/go/ext/config
+github.com/opencord/voltha-protos/v3/go/openolt
+github.com/opencord/voltha-protos/v3/go/tech_profile
 # github.com/pierrec/lz4 v2.4.1+incompatible
 github.com/pierrec/lz4
 github.com/pierrec/lz4/internal/xxh32