diff --git a/vendor/github.com/opencord/voltha-protos/v5/LICENSE b/vendor/github.com/opencord/voltha-protos/v5/LICENSE
new file mode 100644
index 0000000..72f817f
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v5/LICENSE
@@ -0,0 +1,201 @@
+  Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
\ No newline at end of file
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/common/common.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/common/common.pb.go
index 87d3dca..f7472d5 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/common/common.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/common/common.pb.go
@@ -80,7 +80,7 @@
 }
 
 func (AdminState_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{3, 0}
+	return fileDescriptor_c2e3fd231961e826, []int{4, 0}
 }
 
 // Operational Status
@@ -103,6 +103,8 @@
 	OperStatus_RECONCILING OperStatus_Types = 6
 	// The device is in reconciling failed
 	OperStatus_RECONCILING_FAILED OperStatus_Types = 7
+	// The device has rebooted
+	OperStatus_REBOOTED OperStatus_Types = 8
 )
 
 var OperStatus_Types_name = map[int32]string{
@@ -114,6 +116,7 @@
 	5: "FAILED",
 	6: "RECONCILING",
 	7: "RECONCILING_FAILED",
+	8: "REBOOTED",
 }
 
 var OperStatus_Types_value = map[string]int32{
@@ -125,6 +128,7 @@
 	"FAILED":             5,
 	"RECONCILING":        6,
 	"RECONCILING_FAILED": 7,
+	"REBOOTED":           8,
 }
 
 func (x OperStatus_Types) String() string {
@@ -132,7 +136,7 @@
 }
 
 func (OperStatus_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{4, 0}
+	return fileDescriptor_c2e3fd231961e826, []int{5, 0}
 }
 
 // Connectivity Status
@@ -164,7 +168,7 @@
 }
 
 func (ConnectStatus_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{5, 0}
+	return fileDescriptor_c2e3fd231961e826, []int{6, 0}
 }
 
 type OperationResp_OperationReturnCode int32
@@ -195,7 +199,47 @@
 }
 
 func (OperationResp_OperationReturnCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{6, 0}
+	return fileDescriptor_c2e3fd231961e826, []int{7, 0}
+}
+
+// Full path for KV store
+type Key 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 *Key) Reset()         { *m = Key{} }
+func (m *Key) String() string { return proto.CompactTextString(m) }
+func (*Key) ProtoMessage()    {}
+func (*Key) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{0}
+}
+
+func (m *Key) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Key.Unmarshal(m, b)
+}
+func (m *Key) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Key.Marshal(b, m, deterministic)
+}
+func (m *Key) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Key.Merge(m, src)
+}
+func (m *Key) XXX_Size() int {
+	return xxx_messageInfo_Key.Size(m)
+}
+func (m *Key) XXX_DiscardUnknown() {
+	xxx_messageInfo_Key.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Key proto.InternalMessageInfo
+
+func (m *Key) GetKey() string {
+	if m != nil {
+		return m.Key
+	}
+	return ""
 }
 
 // Convey a resource identifier
@@ -210,7 +254,7 @@
 func (m *ID) String() string { return proto.CompactTextString(m) }
 func (*ID) ProtoMessage()    {}
 func (*ID) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{0}
+	return fileDescriptor_c2e3fd231961e826, []int{1}
 }
 
 func (m *ID) XXX_Unmarshal(b []byte) error {
@@ -250,7 +294,7 @@
 func (m *IDs) String() string { return proto.CompactTextString(m) }
 func (*IDs) ProtoMessage()    {}
 func (*IDs) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{1}
+	return fileDescriptor_c2e3fd231961e826, []int{2}
 }
 
 func (m *IDs) XXX_Unmarshal(b []byte) error {
@@ -295,7 +339,7 @@
 func (m *Connection) String() string { return proto.CompactTextString(m) }
 func (*Connection) ProtoMessage()    {}
 func (*Connection) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{2}
+	return fileDescriptor_c2e3fd231961e826, []int{3}
 }
 
 func (m *Connection) XXX_Unmarshal(b []byte) error {
@@ -347,7 +391,7 @@
 func (m *AdminState) String() string { return proto.CompactTextString(m) }
 func (*AdminState) ProtoMessage()    {}
 func (*AdminState) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{3}
+	return fileDescriptor_c2e3fd231961e826, []int{4}
 }
 
 func (m *AdminState) XXX_Unmarshal(b []byte) error {
@@ -378,7 +422,7 @@
 func (m *OperStatus) String() string { return proto.CompactTextString(m) }
 func (*OperStatus) ProtoMessage()    {}
 func (*OperStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{4}
+	return fileDescriptor_c2e3fd231961e826, []int{5}
 }
 
 func (m *OperStatus) XXX_Unmarshal(b []byte) error {
@@ -409,7 +453,7 @@
 func (m *ConnectStatus) String() string { return proto.CompactTextString(m) }
 func (*ConnectStatus) ProtoMessage()    {}
 func (*ConnectStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{5}
+	return fileDescriptor_c2e3fd231961e826, []int{6}
 }
 
 func (m *ConnectStatus) XXX_Unmarshal(b []byte) error {
@@ -444,7 +488,7 @@
 func (m *OperationResp) String() string { return proto.CompactTextString(m) }
 func (*OperationResp) ProtoMessage()    {}
 func (*OperationResp) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{6}
+	return fileDescriptor_c2e3fd231961e826, []int{7}
 }
 
 func (m *OperationResp) XXX_Unmarshal(b []byte) error {
@@ -485,6 +529,7 @@
 	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.RegisterType((*Key)(nil), "common.Key")
 	proto.RegisterType((*ID)(nil), "common.ID")
 	proto.RegisterType((*IDs)(nil), "common.IDs")
 	proto.RegisterType((*Connection)(nil), "common.Connection")
@@ -497,41 +542,43 @@
 func init() { proto.RegisterFile("voltha_protos/common.proto", fileDescriptor_c2e3fd231961e826) }
 
 var fileDescriptor_c2e3fd231961e826 = []byte{
-	// 570 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x53, 0x5d, 0x4f, 0xdb, 0x30,
-	0x14, 0x25, 0x09, 0x14, 0xb8, 0x85, 0x12, 0xcc, 0x98, 0x3a, 0xb4, 0x87, 0x2a, 0x2f, 0xb0, 0x49,
-	0x6b, 0x25, 0xb6, 0x3d, 0xee, 0x21, 0x24, 0x5e, 0x67, 0x01, 0x4e, 0xe5, 0xa4, 0x20, 0xf1, 0x12,
-	0x85, 0xc6, 0x03, 0x6b, 0xad, 0x1d, 0x25, 0xa6, 0x1a, 0x7b, 0xdc, 0x3f, 0xd8, 0x5f, 0xdd, 0x2f,
-	0x98, 0x9c, 0x86, 0x15, 0xa4, 0xbe, 0xe5, 0x9c, 0x73, 0x73, 0xbf, 0x8e, 0x2f, 0x1c, 0xcd, 0xd5,
-	0x54, 0xdf, 0x67, 0x69, 0x51, 0x2a, 0xad, 0xaa, 0xc1, 0x44, 0xcd, 0x66, 0x4a, 0xf6, 0x6b, 0x84,
-	0x5a, 0x0b, 0xe4, 0xbd, 0x02, 0x9b, 0x84, 0xa8, 0x03, 0xb6, 0xc8, 0xbb, 0x56, 0xcf, 0x3a, 0xd9,
-	0x66, 0xb6, 0xc8, 0xbd, 0x63, 0x70, 0x48, 0x58, 0xa1, 0x1e, 0x6c, 0x08, 0xcd, 0x67, 0x55, 0xd7,
-	0xea, 0x39, 0x27, 0xed, 0x53, 0xe8, 0x37, 0x29, 0x48, 0xc8, 0x16, 0x82, 0xf7, 0x0b, 0x20, 0x50,
-	0x52, 0xf2, 0x89, 0x16, 0x4a, 0xa2, 0x23, 0xd8, 0xe2, 0x32, 0x2f, 0x94, 0x90, 0xba, 0x49, 0xf6,
-	0x1f, 0xa3, 0x1e, 0xb4, 0x27, 0x4a, 0x6a, 0xfe, 0x53, 0x13, 0xf9, 0x5d, 0x75, 0xed, 0x5a, 0x7e,
-	0x4e, 0xa1, 0x3e, 0x1c, 0xfc, 0xe0, 0xbc, 0x48, 0xb3, 0xa9, 0x98, 0xf3, 0x54, 0x48, 0xcd, 0xcb,
-	0x79, 0x36, 0xed, 0x3a, 0x3d, 0xeb, 0xc4, 0x61, 0xfb, 0x46, 0xf2, 0x8d, 0x42, 0x1a, 0xc1, 0xbb,
-	0x07, 0xf0, 0xf3, 0x99, 0x90, 0xb1, 0xce, 0x34, 0xf7, 0x6e, 0x60, 0x23, 0x79, 0x2c, 0x78, 0x85,
-	0xda, 0xb0, 0x39, 0xa6, 0xe7, 0x34, 0xba, 0xa6, 0xee, 0x1a, 0x42, 0xd0, 0x19, 0x31, 0x3c, 0x62,
-	0xd1, 0x15, 0x89, 0x49, 0x44, 0x71, 0xe8, 0x5a, 0x26, 0x00, 0x53, 0xff, 0xec, 0x02, 0x87, 0xae,
-	0x8d, 0x76, 0x60, 0x2b, 0x24, 0xf1, 0x02, 0x39, 0xe8, 0x10, 0xf6, 0xc3, 0xe8, 0x9a, 0x5e, 0x44,
-	0x7e, 0x48, 0xe8, 0x30, 0x25, 0x97, 0xfe, 0x10, 0xbb, 0xeb, 0xde, 0x1f, 0x0b, 0x20, 0x2a, 0x78,
-	0x69, 0x2a, 0x3d, 0x54, 0xde, 0x6f, 0x6b, 0x65, 0xad, 0x0e, 0x40, 0x48, 0xe2, 0x20, 0xba, 0xc2,
-	0xac, 0xae, 0xd3, 0x01, 0xf0, 0x83, 0x84, 0x5c, 0xf9, 0x09, 0xa1, 0x43, 0xd7, 0x36, 0xc1, 0x09,
-	0x8e, 0x6b, 0xe0, 0x20, 0x80, 0x56, 0x2d, 0x62, 0x77, 0xdd, 0x7c, 0x7f, 0xf5, 0x89, 0xe9, 0x60,
-	0x03, 0xed, 0x41, 0x9b, 0xe1, 0x20, 0xa2, 0x01, 0xb9, 0x30, 0x81, 0x2d, 0xf4, 0x1a, 0xd0, 0x33,
-	0x22, 0x6d, 0x02, 0x37, 0x3d, 0x0c, 0xbb, 0xcd, 0xe6, 0x9b, 0xae, 0x3e, 0xad, 0x6c, 0x6a, 0x0f,
-	0xda, 0x63, 0xca, 0xb0, 0x1f, 0x7c, 0x33, 0x33, 0xba, 0x16, 0xda, 0x85, 0xed, 0x25, 0xb4, 0xbd,
-	0xbf, 0x16, 0xec, 0x9a, 0xd1, 0x32, 0x63, 0x20, 0xe3, 0x55, 0x81, 0xbe, 0xc0, 0xfa, 0x44, 0xe5,
-	0xbc, 0x36, 0xb0, 0x73, 0xfa, 0xee, 0xc9, 0xf3, 0x17, 0x41, 0xcf, 0x91, 0x7e, 0x28, 0x65, 0xa0,
-	0x72, 0xce, 0xea, 0xdf, 0xd0, 0x31, 0xec, 0x65, 0x79, 0x2e, 0x8c, 0x96, 0x4d, 0x53, 0xb1, 0xf4,
-	0xba, 0xb3, 0xa4, 0x8d, 0xdd, 0xde, 0x23, 0x1c, 0xac, 0xc8, 0x62, 0x2c, 0x88, 0x46, 0x98, 0xf9,
-	0x09, 0x89, 0x68, 0x1a, 0x8f, 0x83, 0x00, 0xc7, 0xb1, 0xbb, 0xf6, 0x92, 0x36, 0x4b, 0x18, 0x33,
-	0x33, 0xcd, 0x1b, 0x38, 0x5c, 0xd2, 0x63, 0x1a, 0x8f, 0x47, 0xa3, 0x88, 0x25, 0xb5, 0xb3, 0x2f,
-	0x24, 0x42, 0xd3, 0x11, 0x8b, 0x86, 0xcc, 0x24, 0x73, 0xde, 0xbf, 0x85, 0x9d, 0x84, 0x57, 0xfa,
-	0x52, 0xe5, 0xfc, 0x9c, 0x3f, 0x56, 0xe6, 0x11, 0x64, 0x85, 0x48, 0x35, 0xaf, 0xb4, 0xbb, 0x76,
-	0x86, 0xe1, 0x40, 0x95, 0x77, 0x7d, 0x55, 0x70, 0x39, 0x51, 0x65, 0xde, 0x5f, 0x5c, 0xd1, 0x4d,
-	0xff, 0x4e, 0xe8, 0xfb, 0x87, 0x5b, 0xb3, 0x8f, 0xc1, 0x93, 0x36, 0x58, 0x68, 0x1f, 0x9a, 0x0b,
-	0x9b, 0x7f, 0x1e, 0xdc, 0xa9, 0xe6, 0xce, 0x6e, 0x5b, 0x35, 0xf9, 0xf1, 0x5f, 0x00, 0x00, 0x00,
-	0xff, 0xff, 0x62, 0x34, 0x9d, 0xbf, 0x86, 0x03, 0x00, 0x00,
+	// 593 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x53, 0xdd, 0x4e, 0xdb, 0x30,
+	0x14, 0x26, 0x09, 0x14, 0x38, 0x85, 0x12, 0xcc, 0xd8, 0x3a, 0xb4, 0x8b, 0x2a, 0x37, 0xb0, 0x49,
+	0x6b, 0x25, 0xb6, 0x5d, 0xee, 0x22, 0x24, 0x5e, 0x67, 0x01, 0x76, 0xe5, 0xa4, 0x20, 0x71, 0x13,
+	0x85, 0xc6, 0x83, 0x88, 0xd6, 0x8e, 0x1a, 0x53, 0xad, 0x7b, 0x8a, 0xbd, 0xc1, 0xde, 0x71, 0x4f,
+	0x30, 0x39, 0x0d, 0x2b, 0x48, 0xbd, 0xf3, 0xf7, 0x7d, 0x27, 0xe7, 0xef, 0xcb, 0x81, 0xa3, 0x99,
+	0x1a, 0xeb, 0xfb, 0x34, 0x29, 0xa6, 0x4a, 0xab, 0xb2, 0x37, 0x52, 0x93, 0x89, 0x92, 0xdd, 0x0a,
+	0xa1, 0xc6, 0x02, 0x79, 0x6f, 0xc0, 0x39, 0x17, 0x73, 0xe4, 0x82, 0xf3, 0x20, 0xe6, 0x6d, 0xab,
+	0x63, 0x9d, 0x6c, 0x73, 0xf3, 0xf4, 0x5e, 0x81, 0x4d, 0x42, 0xd4, 0x02, 0x3b, 0xcf, 0x6a, 0xda,
+	0xce, 0x33, 0xef, 0x18, 0x1c, 0x12, 0x96, 0xa8, 0x03, 0x1b, 0xb9, 0x16, 0x93, 0xb2, 0x6d, 0x75,
+	0x9c, 0x93, 0xe6, 0x29, 0x74, 0xeb, 0xdc, 0x24, 0xe4, 0x0b, 0xc1, 0xfb, 0x05, 0x10, 0x28, 0x29,
+	0xc5, 0x48, 0xe7, 0x4a, 0xa2, 0x23, 0xd8, 0x12, 0x32, 0x2b, 0x54, 0x2e, 0x75, 0x9d, 0xec, 0x3f,
+	0x46, 0x1d, 0x68, 0x8e, 0x94, 0xd4, 0xe2, 0xa7, 0x26, 0xf2, 0x87, 0x6a, 0xdb, 0x95, 0xfc, 0x9c,
+	0x42, 0x5d, 0x38, 0x78, 0x10, 0xa2, 0x48, 0xd2, 0x71, 0x3e, 0x13, 0x49, 0x2e, 0xb5, 0x98, 0xce,
+	0xd2, 0x71, 0xdb, 0xe9, 0x58, 0x27, 0x0e, 0xdf, 0x37, 0x92, 0x6f, 0x14, 0x52, 0x0b, 0xde, 0x3d,
+	0x80, 0x9f, 0x4d, 0x72, 0x19, 0xe9, 0x54, 0x0b, 0xef, 0x06, 0x36, 0xe2, 0x79, 0x21, 0x4a, 0xd4,
+	0x84, 0xcd, 0x21, 0x3d, 0xa7, 0xec, 0x9a, 0xba, 0x6b, 0x08, 0x41, 0x6b, 0xc0, 0xf1, 0x80, 0xb3,
+	0x2b, 0x12, 0x11, 0x46, 0x71, 0xe8, 0x5a, 0x26, 0x00, 0x53, 0xff, 0xec, 0x02, 0x87, 0xae, 0x8d,
+	0x76, 0x60, 0x2b, 0x24, 0xd1, 0x02, 0x39, 0xe8, 0x10, 0xf6, 0x43, 0x76, 0x4d, 0x2f, 0x98, 0x1f,
+	0x12, 0xda, 0x4f, 0xc8, 0xa5, 0xdf, 0xc7, 0xee, 0xba, 0xf7, 0xc7, 0x02, 0x60, 0x85, 0x98, 0x9a,
+	0x4a, 0x8f, 0xa5, 0xf7, 0xdb, 0x5a, 0x59, 0xab, 0x05, 0x10, 0x92, 0x28, 0x60, 0x57, 0x98, 0x57,
+	0x75, 0x5a, 0x00, 0x7e, 0x10, 0x93, 0x2b, 0x3f, 0x26, 0xb4, 0xef, 0xda, 0x26, 0x38, 0xc6, 0x51,
+	0x05, 0x1c, 0x04, 0xd0, 0xa8, 0x44, 0xec, 0xae, 0x9b, 0xf7, 0x37, 0x9f, 0x98, 0x0e, 0x36, 0xd0,
+	0x1e, 0x34, 0x39, 0x0e, 0x18, 0x0d, 0xc8, 0x85, 0x09, 0x6c, 0xa0, 0xd7, 0x80, 0x9e, 0x11, 0x49,
+	0x1d, 0xb8, 0x69, 0x1a, 0xe7, 0xf8, 0x8c, 0xb1, 0x18, 0x87, 0xee, 0x96, 0x87, 0x61, 0xb7, 0xf6,
+	0xa1, 0xee, 0xf1, 0xf3, 0xca, 0x16, 0xf7, 0xa0, 0x39, 0xa4, 0x1c, 0xfb, 0xc1, 0x77, 0x33, 0xb1,
+	0x6b, 0xa1, 0x5d, 0xd8, 0x5e, 0x42, 0xdb, 0xfb, 0x6b, 0xc1, 0xae, 0x19, 0x34, 0x35, 0x76, 0x72,
+	0x51, 0x16, 0xe8, 0x2b, 0xac, 0x8f, 0x54, 0x26, 0x2a, 0x3b, 0x5b, 0xa7, 0xef, 0x9f, 0xfe, 0x80,
+	0x17, 0x41, 0xcf, 0x91, 0x7e, 0x9c, 0xca, 0x40, 0x65, 0x82, 0x57, 0x9f, 0xa1, 0x63, 0xd8, 0x4b,
+	0xb3, 0x2c, 0x37, 0x5a, 0x3a, 0x4e, 0xf2, 0xa5, 0xf3, 0xad, 0x25, 0x6d, 0xcc, 0xf7, 0xe6, 0x70,
+	0xb0, 0x22, 0x8b, 0x31, 0x84, 0x0d, 0x30, 0xf7, 0x63, 0xc2, 0x68, 0x12, 0x0d, 0x83, 0x00, 0x47,
+	0x91, 0xbb, 0xf6, 0x92, 0x36, 0x2b, 0x19, 0x72, 0x33, 0xcd, 0x5b, 0x38, 0x5c, 0xd2, 0x43, 0x1a,
+	0x0d, 0x07, 0x03, 0xc6, 0xe3, 0xca, 0xe7, 0x17, 0x12, 0xa1, 0xc9, 0x80, 0xb3, 0x3e, 0x37, 0xc9,
+	0x9c, 0x0f, 0xef, 0x60, 0x27, 0x16, 0xa5, 0xbe, 0x54, 0x99, 0x38, 0x17, 0xf3, 0xd2, 0x6c, 0x36,
+	0x2d, 0xf2, 0x44, 0x8b, 0x52, 0xbb, 0x6b, 0x67, 0x18, 0x0e, 0xd4, 0xf4, 0xae, 0xab, 0x0a, 0x21,
+	0x47, 0x6a, 0x9a, 0x75, 0x17, 0xc7, 0x76, 0xd3, 0xbd, 0xcb, 0xf5, 0xfd, 0xe3, 0xad, 0xd9, 0x47,
+	0xef, 0x49, 0xeb, 0x2d, 0xb4, 0x8f, 0xf5, 0x21, 0xce, 0xbe, 0xf4, 0xee, 0x54, 0x7d, 0x8e, 0xb7,
+	0x8d, 0x8a, 0xfc, 0xf4, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x78, 0x80, 0xdb, 0x29, 0xad, 0x03, 0x00,
+	0x00,
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/extension/extensions.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/extension/extensions.pb.go
index e6105b6..c4e91d3 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/extension/extensions.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/extension/extensions.pb.go
@@ -228,7 +228,7 @@
 }
 
 func (GetOmciEthernetFrameExtendedPmResponse_Format) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{21, 0}
+	return fileDescriptor_7ecf6e9799a9202d, []int{22, 0}
 }
 
 type GetValueResponse_Status int32
@@ -256,7 +256,7 @@
 }
 
 func (GetValueResponse_Status) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{24, 0}
+	return fileDescriptor_7ecf6e9799a9202d, []int{32, 0}
 }
 
 type GetValueResponse_ErrorReason int32
@@ -299,7 +299,7 @@
 }
 
 func (GetValueResponse_ErrorReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{24, 1}
+	return fileDescriptor_7ecf6e9799a9202d, []int{32, 1}
 }
 
 type SetValueResponse_Status int32
@@ -327,7 +327,7 @@
 }
 
 func (SetValueResponse_Status) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{26, 0}
+	return fileDescriptor_7ecf6e9799a9202d, []int{34, 0}
 }
 
 type SetValueResponse_ErrorReason int32
@@ -352,7 +352,7 @@
 }
 
 func (SetValueResponse_ErrorReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{26, 1}
+	return fileDescriptor_7ecf6e9799a9202d, []int{34, 1}
 }
 
 type ValueSet struct {
@@ -1450,6 +1450,7 @@
 	}
 }
 
+// DEPRECATED
 type GetRxPowerRequest 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"`
@@ -1497,6 +1498,57 @@
 	return 0
 }
 
+type GetOltRxPowerRequest struct {
+	PortLabel string `protobuf:"bytes,1,opt,name=port_label,json=portLabel,proto3" json:"port_label,omitempty"`
+	// onu_sn is optional and if onu_sn is an empty string and the label is
+	// of a PON port then it means that the Rx Power corresponding to all
+	// the ONUs on that PON port is requested. In case the port_label is not
+	// of a PON port, the onu_sn does not have any significance
+	OnuSn                string   `protobuf:"bytes,2,opt,name=onu_sn,json=onuSn,proto3" json:"onu_sn,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GetOltRxPowerRequest) Reset()         { *m = GetOltRxPowerRequest{} }
+func (m *GetOltRxPowerRequest) String() string { return proto.CompactTextString(m) }
+func (*GetOltRxPowerRequest) ProtoMessage()    {}
+func (*GetOltRxPowerRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_7ecf6e9799a9202d, []int{19}
+}
+
+func (m *GetOltRxPowerRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetOltRxPowerRequest.Unmarshal(m, b)
+}
+func (m *GetOltRxPowerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetOltRxPowerRequest.Marshal(b, m, deterministic)
+}
+func (m *GetOltRxPowerRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetOltRxPowerRequest.Merge(m, src)
+}
+func (m *GetOltRxPowerRequest) XXX_Size() int {
+	return xxx_messageInfo_GetOltRxPowerRequest.Size(m)
+}
+func (m *GetOltRxPowerRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetOltRxPowerRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetOltRxPowerRequest proto.InternalMessageInfo
+
+func (m *GetOltRxPowerRequest) GetPortLabel() string {
+	if m != nil {
+		return m.PortLabel
+	}
+	return ""
+}
+
+func (m *GetOltRxPowerRequest) GetOnuSn() string {
+	if m != nil {
+		return m.OnuSn
+	}
+	return ""
+}
+
 type GetOnuCountersResponse struct {
 	// Types that are valid to be assigned to IsIntfId:
 	//	*GetOnuCountersResponse_IntfId
@@ -1588,7 +1640,7 @@
 func (m *GetOnuCountersResponse) String() string { return proto.CompactTextString(m) }
 func (*GetOnuCountersResponse) ProtoMessage()    {}
 func (*GetOnuCountersResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{19}
+	return fileDescriptor_7ecf6e9799a9202d, []int{20}
 }
 
 func (m *GetOnuCountersResponse) XXX_Unmarshal(b []byte) error {
@@ -2318,7 +2370,7 @@
 func (m *OmciEthernetFrameExtendedPm) String() string { return proto.CompactTextString(m) }
 func (*OmciEthernetFrameExtendedPm) ProtoMessage()    {}
 func (*OmciEthernetFrameExtendedPm) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{20}
+	return fileDescriptor_7ecf6e9799a9202d, []int{21}
 }
 
 func (m *OmciEthernetFrameExtendedPm) XXX_Unmarshal(b []byte) error {
@@ -2452,7 +2504,7 @@
 func (m *GetOmciEthernetFrameExtendedPmResponse) String() string { return proto.CompactTextString(m) }
 func (*GetOmciEthernetFrameExtendedPmResponse) ProtoMessage()    {}
 func (*GetOmciEthernetFrameExtendedPmResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{21}
+	return fileDescriptor_7ecf6e9799a9202d, []int{22}
 }
 
 func (m *GetOmciEthernetFrameExtendedPmResponse) XXX_Unmarshal(b []byte) error {
@@ -2494,6 +2546,117 @@
 	return GetOmciEthernetFrameExtendedPmResponse_THIRTY_TWO_BIT
 }
 
+type RxPower struct {
+	OnuSn                string   `protobuf:"bytes,1,opt,name=onu_sn,json=onuSn,proto3" json:"onu_sn,omitempty"`
+	Status               string   `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`
+	FailReason           string   `protobuf:"bytes,3,opt,name=fail_reason,json=failReason,proto3" json:"fail_reason,omitempty"`
+	RxPower              float64  `protobuf:"fixed64,4,opt,name=rx_power,json=rxPower,proto3" json:"rx_power,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *RxPower) Reset()         { *m = RxPower{} }
+func (m *RxPower) String() string { return proto.CompactTextString(m) }
+func (*RxPower) ProtoMessage()    {}
+func (*RxPower) Descriptor() ([]byte, []int) {
+	return fileDescriptor_7ecf6e9799a9202d, []int{23}
+}
+
+func (m *RxPower) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_RxPower.Unmarshal(m, b)
+}
+func (m *RxPower) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_RxPower.Marshal(b, m, deterministic)
+}
+func (m *RxPower) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_RxPower.Merge(m, src)
+}
+func (m *RxPower) XXX_Size() int {
+	return xxx_messageInfo_RxPower.Size(m)
+}
+func (m *RxPower) XXX_DiscardUnknown() {
+	xxx_messageInfo_RxPower.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_RxPower proto.InternalMessageInfo
+
+func (m *RxPower) GetOnuSn() string {
+	if m != nil {
+		return m.OnuSn
+	}
+	return ""
+}
+
+func (m *RxPower) GetStatus() string {
+	if m != nil {
+		return m.Status
+	}
+	return ""
+}
+
+func (m *RxPower) GetFailReason() string {
+	if m != nil {
+		return m.FailReason
+	}
+	return ""
+}
+
+func (m *RxPower) GetRxPower() float64 {
+	if m != nil {
+		return m.RxPower
+	}
+	return 0
+}
+
+type GetOltRxPowerResponse struct {
+	PortLabel            string     `protobuf:"bytes,1,opt,name=port_label,json=portLabel,proto3" json:"port_label,omitempty"`
+	RxPower              []*RxPower `protobuf:"bytes,2,rep,name=rx_power,json=rxPower,proto3" json:"rx_power,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
+	XXX_unrecognized     []byte     `json:"-"`
+	XXX_sizecache        int32      `json:"-"`
+}
+
+func (m *GetOltRxPowerResponse) Reset()         { *m = GetOltRxPowerResponse{} }
+func (m *GetOltRxPowerResponse) String() string { return proto.CompactTextString(m) }
+func (*GetOltRxPowerResponse) ProtoMessage()    {}
+func (*GetOltRxPowerResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_7ecf6e9799a9202d, []int{24}
+}
+
+func (m *GetOltRxPowerResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetOltRxPowerResponse.Unmarshal(m, b)
+}
+func (m *GetOltRxPowerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetOltRxPowerResponse.Marshal(b, m, deterministic)
+}
+func (m *GetOltRxPowerResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetOltRxPowerResponse.Merge(m, src)
+}
+func (m *GetOltRxPowerResponse) XXX_Size() int {
+	return xxx_messageInfo_GetOltRxPowerResponse.Size(m)
+}
+func (m *GetOltRxPowerResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetOltRxPowerResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetOltRxPowerResponse proto.InternalMessageInfo
+
+func (m *GetOltRxPowerResponse) GetPortLabel() string {
+	if m != nil {
+		return m.PortLabel
+	}
+	return ""
+}
+
+func (m *GetOltRxPowerResponse) GetRxPower() []*RxPower {
+	if m != nil {
+		return m.RxPower
+	}
+	return nil
+}
+
+// DEPRECATED
 type GetRxPowerResponse 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"`
@@ -2509,7 +2672,7 @@
 func (m *GetRxPowerResponse) String() string { return proto.CompactTextString(m) }
 func (*GetRxPowerResponse) ProtoMessage()    {}
 func (*GetRxPowerResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{22}
+	return fileDescriptor_7ecf6e9799a9202d, []int{25}
 }
 
 func (m *GetRxPowerResponse) XXX_Unmarshal(b []byte) error {
@@ -2565,6 +2728,308 @@
 	return 0
 }
 
+type GetOnuOmciTxRxStatsRequest struct {
+	Empty                *empty.Empty `protobuf:"bytes,1,opt,name=empty,proto3" json:"empty,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
+}
+
+func (m *GetOnuOmciTxRxStatsRequest) Reset()         { *m = GetOnuOmciTxRxStatsRequest{} }
+func (m *GetOnuOmciTxRxStatsRequest) String() string { return proto.CompactTextString(m) }
+func (*GetOnuOmciTxRxStatsRequest) ProtoMessage()    {}
+func (*GetOnuOmciTxRxStatsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_7ecf6e9799a9202d, []int{26}
+}
+
+func (m *GetOnuOmciTxRxStatsRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetOnuOmciTxRxStatsRequest.Unmarshal(m, b)
+}
+func (m *GetOnuOmciTxRxStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetOnuOmciTxRxStatsRequest.Marshal(b, m, deterministic)
+}
+func (m *GetOnuOmciTxRxStatsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetOnuOmciTxRxStatsRequest.Merge(m, src)
+}
+func (m *GetOnuOmciTxRxStatsRequest) XXX_Size() int {
+	return xxx_messageInfo_GetOnuOmciTxRxStatsRequest.Size(m)
+}
+func (m *GetOnuOmciTxRxStatsRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetOnuOmciTxRxStatsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetOnuOmciTxRxStatsRequest proto.InternalMessageInfo
+
+func (m *GetOnuOmciTxRxStatsRequest) GetEmpty() *empty.Empty {
+	if m != nil {
+		return m.Empty
+	}
+	return nil
+}
+
+// see ITU-T G.988 clause 11.2.2
+type GetOnuOmciTxRxStatsResponse struct {
+	// OMCI baseline Tx frames with AR bit set
+	BaseTxArFrames uint32 `protobuf:"varint,1,opt,name=base_tx_ar_frames,json=baseTxArFrames,proto3" json:"base_tx_ar_frames,omitempty"`
+	// OMCI baseline Rx frames with AK bit set
+	BaseRxAkFrames uint32 `protobuf:"varint,2,opt,name=base_rx_ak_frames,json=baseRxAkFrames,proto3" json:"base_rx_ak_frames,omitempty"`
+	// OMCI baseline Tx frames with AR bit unset
+	BaseTxNoArFrames uint32 `protobuf:"varint,3,opt,name=base_tx_no_ar_frames,json=baseTxNoArFrames,proto3" json:"base_tx_no_ar_frames,omitempty"`
+	// OMCI baseline Rx frames with AK bit unset
+	BaseRxNoAkFrames uint32 `protobuf:"varint,4,opt,name=base_rx_no_ak_frames,json=baseRxNoAkFrames,proto3" json:"base_rx_no_ak_frames,omitempty"`
+	// OMCI extended Tx frames with AR bit set
+	ExtTxArFrames uint32 `protobuf:"varint,5,opt,name=ext_tx_ar_frames,json=extTxArFrames,proto3" json:"ext_tx_ar_frames,omitempty"`
+	// OMCI extended Rx frames with AK bit set
+	ExtRxAkFrames uint32 `protobuf:"varint,6,opt,name=ext_rx_ak_frames,json=extRxAkFrames,proto3" json:"ext_rx_ak_frames,omitempty"`
+	// OMCI extended Tx frames with AR bit unset
+	ExtTxNoArFrames uint32 `protobuf:"varint,7,opt,name=ext_tx_no_ar_frames,json=extTxNoArFrames,proto3" json:"ext_tx_no_ar_frames,omitempty"`
+	// OMCI extended Rx frames with AK bit unset
+	ExtRxNoAkFrames uint32 `protobuf:"varint,8,opt,name=ext_rx_no_ak_frames,json=extRxNoAkFrames,proto3" json:"ext_rx_no_ak_frames,omitempty"`
+	// Number of retries of requests (tx) due to not received responses (Rx)
+	TxOmciCounterRetries uint32 `protobuf:"varint,9,opt,name=tx_omci_counter_retries,json=txOmciCounterRetries,proto3" json:"tx_omci_counter_retries,omitempty"`
+	// Number of timeouts of requests (tx) due to not received responses (Rx) after configured number of retries
+	TxOmciCounterTimeouts uint32   `protobuf:"varint,10,opt,name=tx_omci_counter_timeouts,json=txOmciCounterTimeouts,proto3" json:"tx_omci_counter_timeouts,omitempty"`
+	XXX_NoUnkeyedLiteral  struct{} `json:"-"`
+	XXX_unrecognized      []byte   `json:"-"`
+	XXX_sizecache         int32    `json:"-"`
+}
+
+func (m *GetOnuOmciTxRxStatsResponse) Reset()         { *m = GetOnuOmciTxRxStatsResponse{} }
+func (m *GetOnuOmciTxRxStatsResponse) String() string { return proto.CompactTextString(m) }
+func (*GetOnuOmciTxRxStatsResponse) ProtoMessage()    {}
+func (*GetOnuOmciTxRxStatsResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_7ecf6e9799a9202d, []int{27}
+}
+
+func (m *GetOnuOmciTxRxStatsResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetOnuOmciTxRxStatsResponse.Unmarshal(m, b)
+}
+func (m *GetOnuOmciTxRxStatsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetOnuOmciTxRxStatsResponse.Marshal(b, m, deterministic)
+}
+func (m *GetOnuOmciTxRxStatsResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetOnuOmciTxRxStatsResponse.Merge(m, src)
+}
+func (m *GetOnuOmciTxRxStatsResponse) XXX_Size() int {
+	return xxx_messageInfo_GetOnuOmciTxRxStatsResponse.Size(m)
+}
+func (m *GetOnuOmciTxRxStatsResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetOnuOmciTxRxStatsResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetOnuOmciTxRxStatsResponse proto.InternalMessageInfo
+
+func (m *GetOnuOmciTxRxStatsResponse) GetBaseTxArFrames() uint32 {
+	if m != nil {
+		return m.BaseTxArFrames
+	}
+	return 0
+}
+
+func (m *GetOnuOmciTxRxStatsResponse) GetBaseRxAkFrames() uint32 {
+	if m != nil {
+		return m.BaseRxAkFrames
+	}
+	return 0
+}
+
+func (m *GetOnuOmciTxRxStatsResponse) GetBaseTxNoArFrames() uint32 {
+	if m != nil {
+		return m.BaseTxNoArFrames
+	}
+	return 0
+}
+
+func (m *GetOnuOmciTxRxStatsResponse) GetBaseRxNoAkFrames() uint32 {
+	if m != nil {
+		return m.BaseRxNoAkFrames
+	}
+	return 0
+}
+
+func (m *GetOnuOmciTxRxStatsResponse) GetExtTxArFrames() uint32 {
+	if m != nil {
+		return m.ExtTxArFrames
+	}
+	return 0
+}
+
+func (m *GetOnuOmciTxRxStatsResponse) GetExtRxAkFrames() uint32 {
+	if m != nil {
+		return m.ExtRxAkFrames
+	}
+	return 0
+}
+
+func (m *GetOnuOmciTxRxStatsResponse) GetExtTxNoArFrames() uint32 {
+	if m != nil {
+		return m.ExtTxNoArFrames
+	}
+	return 0
+}
+
+func (m *GetOnuOmciTxRxStatsResponse) GetExtRxNoAkFrames() uint32 {
+	if m != nil {
+		return m.ExtRxNoAkFrames
+	}
+	return 0
+}
+
+func (m *GetOnuOmciTxRxStatsResponse) GetTxOmciCounterRetries() uint32 {
+	if m != nil {
+		return m.TxOmciCounterRetries
+	}
+	return 0
+}
+
+func (m *GetOnuOmciTxRxStatsResponse) GetTxOmciCounterTimeouts() uint32 {
+	if m != nil {
+		return m.TxOmciCounterTimeouts
+	}
+	return 0
+}
+
+type GetOnuOmciActiveAlarmsRequest struct {
+	Empty                *empty.Empty `protobuf:"bytes,1,opt,name=empty,proto3" json:"empty,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
+}
+
+func (m *GetOnuOmciActiveAlarmsRequest) Reset()         { *m = GetOnuOmciActiveAlarmsRequest{} }
+func (m *GetOnuOmciActiveAlarmsRequest) String() string { return proto.CompactTextString(m) }
+func (*GetOnuOmciActiveAlarmsRequest) ProtoMessage()    {}
+func (*GetOnuOmciActiveAlarmsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_7ecf6e9799a9202d, []int{28}
+}
+
+func (m *GetOnuOmciActiveAlarmsRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetOnuOmciActiveAlarmsRequest.Unmarshal(m, b)
+}
+func (m *GetOnuOmciActiveAlarmsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetOnuOmciActiveAlarmsRequest.Marshal(b, m, deterministic)
+}
+func (m *GetOnuOmciActiveAlarmsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetOnuOmciActiveAlarmsRequest.Merge(m, src)
+}
+func (m *GetOnuOmciActiveAlarmsRequest) XXX_Size() int {
+	return xxx_messageInfo_GetOnuOmciActiveAlarmsRequest.Size(m)
+}
+func (m *GetOnuOmciActiveAlarmsRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetOnuOmciActiveAlarmsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetOnuOmciActiveAlarmsRequest proto.InternalMessageInfo
+
+func (m *GetOnuOmciActiveAlarmsRequest) GetEmpty() *empty.Empty {
+	if m != nil {
+		return m.Empty
+	}
+	return nil
+}
+
+type AlarmData struct {
+	ClassId              uint32   `protobuf:"varint,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"`
+	InstanceId           uint32   `protobuf:"varint,2,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"`
+	Name                 string   `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
+	Description          string   `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *AlarmData) Reset()         { *m = AlarmData{} }
+func (m *AlarmData) String() string { return proto.CompactTextString(m) }
+func (*AlarmData) ProtoMessage()    {}
+func (*AlarmData) Descriptor() ([]byte, []int) {
+	return fileDescriptor_7ecf6e9799a9202d, []int{29}
+}
+
+func (m *AlarmData) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_AlarmData.Unmarshal(m, b)
+}
+func (m *AlarmData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_AlarmData.Marshal(b, m, deterministic)
+}
+func (m *AlarmData) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AlarmData.Merge(m, src)
+}
+func (m *AlarmData) XXX_Size() int {
+	return xxx_messageInfo_AlarmData.Size(m)
+}
+func (m *AlarmData) XXX_DiscardUnknown() {
+	xxx_messageInfo_AlarmData.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AlarmData proto.InternalMessageInfo
+
+func (m *AlarmData) GetClassId() uint32 {
+	if m != nil {
+		return m.ClassId
+	}
+	return 0
+}
+
+func (m *AlarmData) GetInstanceId() uint32 {
+	if m != nil {
+		return m.InstanceId
+	}
+	return 0
+}
+
+func (m *AlarmData) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *AlarmData) GetDescription() string {
+	if m != nil {
+		return m.Description
+	}
+	return ""
+}
+
+type GetOnuOmciActiveAlarmsResponse struct {
+	ActiveAlarms         []*AlarmData `protobuf:"bytes,1,rep,name=active_alarms,json=activeAlarms,proto3" json:"active_alarms,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
+}
+
+func (m *GetOnuOmciActiveAlarmsResponse) Reset()         { *m = GetOnuOmciActiveAlarmsResponse{} }
+func (m *GetOnuOmciActiveAlarmsResponse) String() string { return proto.CompactTextString(m) }
+func (*GetOnuOmciActiveAlarmsResponse) ProtoMessage()    {}
+func (*GetOnuOmciActiveAlarmsResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_7ecf6e9799a9202d, []int{30}
+}
+
+func (m *GetOnuOmciActiveAlarmsResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetOnuOmciActiveAlarmsResponse.Unmarshal(m, b)
+}
+func (m *GetOnuOmciActiveAlarmsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetOnuOmciActiveAlarmsResponse.Marshal(b, m, deterministic)
+}
+func (m *GetOnuOmciActiveAlarmsResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetOnuOmciActiveAlarmsResponse.Merge(m, src)
+}
+func (m *GetOnuOmciActiveAlarmsResponse) XXX_Size() int {
+	return xxx_messageInfo_GetOnuOmciActiveAlarmsResponse.Size(m)
+}
+func (m *GetOnuOmciActiveAlarmsResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetOnuOmciActiveAlarmsResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetOnuOmciActiveAlarmsResponse proto.InternalMessageInfo
+
+func (m *GetOnuOmciActiveAlarmsResponse) GetActiveAlarms() []*AlarmData {
+	if m != nil {
+		return m.ActiveAlarms
+	}
+	return nil
+}
+
 type GetValueRequest struct {
 	// Types that are valid to be assigned to Request:
 	//	*GetValueRequest_Distance
@@ -2576,6 +3041,9 @@
 	//	*GetValueRequest_OnuPonInfo
 	//	*GetValueRequest_OnuInfo
 	//	*GetValueRequest_RxPower
+	//	*GetValueRequest_OnuOmciStats
+	//	*GetValueRequest_OltRxPower
+	//	*GetValueRequest_OnuActiveAlarms
 	Request              isGetValueRequest_Request `protobuf_oneof:"request"`
 	XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
 	XXX_unrecognized     []byte                    `json:"-"`
@@ -2586,7 +3054,7 @@
 func (m *GetValueRequest) String() string { return proto.CompactTextString(m) }
 func (*GetValueRequest) ProtoMessage()    {}
 func (*GetValueRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{23}
+	return fileDescriptor_7ecf6e9799a9202d, []int{31}
 }
 
 func (m *GetValueRequest) XXX_Unmarshal(b []byte) error {
@@ -2647,6 +3115,18 @@
 	RxPower *GetRxPowerRequest `protobuf:"bytes,9,opt,name=rxPower,proto3,oneof"`
 }
 
+type GetValueRequest_OnuOmciStats struct {
+	OnuOmciStats *GetOnuOmciTxRxStatsRequest `protobuf:"bytes,10,opt,name=onuOmciStats,proto3,oneof"`
+}
+
+type GetValueRequest_OltRxPower struct {
+	OltRxPower *GetOltRxPowerRequest `protobuf:"bytes,11,opt,name=oltRxPower,proto3,oneof"`
+}
+
+type GetValueRequest_OnuActiveAlarms struct {
+	OnuActiveAlarms *GetOnuOmciActiveAlarmsRequest `protobuf:"bytes,12,opt,name=onuActiveAlarms,proto3,oneof"`
+}
+
 func (*GetValueRequest_Distance) isGetValueRequest_Request() {}
 
 func (*GetValueRequest_UniInfo) isGetValueRequest_Request() {}
@@ -2665,6 +3145,12 @@
 
 func (*GetValueRequest_RxPower) isGetValueRequest_Request() {}
 
+func (*GetValueRequest_OnuOmciStats) isGetValueRequest_Request() {}
+
+func (*GetValueRequest_OltRxPower) isGetValueRequest_Request() {}
+
+func (*GetValueRequest_OnuActiveAlarms) isGetValueRequest_Request() {}
+
 func (m *GetValueRequest) GetRequest() isGetValueRequest_Request {
 	if m != nil {
 		return m.Request
@@ -2735,6 +3221,27 @@
 	return nil
 }
 
+func (m *GetValueRequest) GetOnuOmciStats() *GetOnuOmciTxRxStatsRequest {
+	if x, ok := m.GetRequest().(*GetValueRequest_OnuOmciStats); ok {
+		return x.OnuOmciStats
+	}
+	return nil
+}
+
+func (m *GetValueRequest) GetOltRxPower() *GetOltRxPowerRequest {
+	if x, ok := m.GetRequest().(*GetValueRequest_OltRxPower); ok {
+		return x.OltRxPower
+	}
+	return nil
+}
+
+func (m *GetValueRequest) GetOnuActiveAlarms() *GetOnuOmciActiveAlarmsRequest {
+	if x, ok := m.GetRequest().(*GetValueRequest_OnuActiveAlarms); ok {
+		return x.OnuActiveAlarms
+	}
+	return nil
+}
+
 // XXX_OneofWrappers is for the internal use of the proto package.
 func (*GetValueRequest) XXX_OneofWrappers() []interface{} {
 	return []interface{}{
@@ -2747,6 +3254,9 @@
 		(*GetValueRequest_OnuPonInfo)(nil),
 		(*GetValueRequest_OnuInfo)(nil),
 		(*GetValueRequest_RxPower)(nil),
+		(*GetValueRequest_OnuOmciStats)(nil),
+		(*GetValueRequest_OltRxPower)(nil),
+		(*GetValueRequest_OnuActiveAlarms)(nil),
 	}
 }
 
@@ -2763,6 +3273,9 @@
 	//	*GetValueResponse_OnuPonCounters
 	//	*GetValueResponse_OnuCounters
 	//	*GetValueResponse_RxPower
+	//	*GetValueResponse_OnuOmciStats
+	//	*GetValueResponse_OltRxPower
+	//	*GetValueResponse_OnuActiveAlarms
 	Response             isGetValueResponse_Response `protobuf_oneof:"response"`
 	XXX_NoUnkeyedLiteral struct{}                    `json:"-"`
 	XXX_unrecognized     []byte                      `json:"-"`
@@ -2773,7 +3286,7 @@
 func (m *GetValueResponse) String() string { return proto.CompactTextString(m) }
 func (*GetValueResponse) ProtoMessage()    {}
 func (*GetValueResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{24}
+	return fileDescriptor_7ecf6e9799a9202d, []int{32}
 }
 
 func (m *GetValueResponse) XXX_Unmarshal(b []byte) error {
@@ -2848,6 +3361,18 @@
 	RxPower *GetRxPowerResponse `protobuf:"bytes,11,opt,name=rxPower,proto3,oneof"`
 }
 
+type GetValueResponse_OnuOmciStats struct {
+	OnuOmciStats *GetOnuOmciTxRxStatsResponse `protobuf:"bytes,12,opt,name=onuOmciStats,proto3,oneof"`
+}
+
+type GetValueResponse_OltRxPower struct {
+	OltRxPower *GetOltRxPowerResponse `protobuf:"bytes,13,opt,name=oltRxPower,proto3,oneof"`
+}
+
+type GetValueResponse_OnuActiveAlarms struct {
+	OnuActiveAlarms *GetOnuOmciActiveAlarmsResponse `protobuf:"bytes,14,opt,name=onuActiveAlarms,proto3,oneof"`
+}
+
 func (*GetValueResponse_Distance) isGetValueResponse_Response() {}
 
 func (*GetValueResponse_UniInfo) isGetValueResponse_Response() {}
@@ -2866,6 +3391,12 @@
 
 func (*GetValueResponse_RxPower) isGetValueResponse_Response() {}
 
+func (*GetValueResponse_OnuOmciStats) isGetValueResponse_Response() {}
+
+func (*GetValueResponse_OltRxPower) isGetValueResponse_Response() {}
+
+func (*GetValueResponse_OnuActiveAlarms) isGetValueResponse_Response() {}
+
 func (m *GetValueResponse) GetResponse() isGetValueResponse_Response {
 	if m != nil {
 		return m.Response
@@ -2936,6 +3467,27 @@
 	return nil
 }
 
+func (m *GetValueResponse) GetOnuOmciStats() *GetOnuOmciTxRxStatsResponse {
+	if x, ok := m.GetResponse().(*GetValueResponse_OnuOmciStats); ok {
+		return x.OnuOmciStats
+	}
+	return nil
+}
+
+func (m *GetValueResponse) GetOltRxPower() *GetOltRxPowerResponse {
+	if x, ok := m.GetResponse().(*GetValueResponse_OltRxPower); ok {
+		return x.OltRxPower
+	}
+	return nil
+}
+
+func (m *GetValueResponse) GetOnuActiveAlarms() *GetOnuOmciActiveAlarmsResponse {
+	if x, ok := m.GetResponse().(*GetValueResponse_OnuActiveAlarms); ok {
+		return x.OnuActiveAlarms
+	}
+	return nil
+}
+
 // XXX_OneofWrappers is for the internal use of the proto package.
 func (*GetValueResponse) XXX_OneofWrappers() []interface{} {
 	return []interface{}{
@@ -2948,6 +3500,9 @@
 		(*GetValueResponse_OnuPonCounters)(nil),
 		(*GetValueResponse_OnuCounters)(nil),
 		(*GetValueResponse_RxPower)(nil),
+		(*GetValueResponse_OnuOmciStats)(nil),
+		(*GetValueResponse_OltRxPower)(nil),
+		(*GetValueResponse_OnuActiveAlarms)(nil),
 	}
 }
 
@@ -2964,7 +3519,7 @@
 func (m *SetValueRequest) String() string { return proto.CompactTextString(m) }
 func (*SetValueRequest) ProtoMessage()    {}
 func (*SetValueRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{25}
+	return fileDescriptor_7ecf6e9799a9202d, []int{33}
 }
 
 func (m *SetValueRequest) XXX_Unmarshal(b []byte) error {
@@ -3028,7 +3583,7 @@
 func (m *SetValueResponse) String() string { return proto.CompactTextString(m) }
 func (*SetValueResponse) ProtoMessage()    {}
 func (*SetValueResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{26}
+	return fileDescriptor_7ecf6e9799a9202d, []int{34}
 }
 
 func (m *SetValueResponse) XXX_Unmarshal(b []byte) error {
@@ -3075,7 +3630,7 @@
 func (m *SingleGetValueRequest) String() string { return proto.CompactTextString(m) }
 func (*SingleGetValueRequest) ProtoMessage()    {}
 func (*SingleGetValueRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{27}
+	return fileDescriptor_7ecf6e9799a9202d, []int{35}
 }
 
 func (m *SingleGetValueRequest) XXX_Unmarshal(b []byte) error {
@@ -3121,7 +3676,7 @@
 func (m *SingleGetValueResponse) String() string { return proto.CompactTextString(m) }
 func (*SingleGetValueResponse) ProtoMessage()    {}
 func (*SingleGetValueResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{28}
+	return fileDescriptor_7ecf6e9799a9202d, []int{36}
 }
 
 func (m *SingleGetValueResponse) XXX_Unmarshal(b []byte) error {
@@ -3161,7 +3716,7 @@
 func (m *SingleSetValueRequest) String() string { return proto.CompactTextString(m) }
 func (*SingleSetValueRequest) ProtoMessage()    {}
 func (*SingleSetValueRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{29}
+	return fileDescriptor_7ecf6e9799a9202d, []int{37}
 }
 
 func (m *SingleSetValueRequest) XXX_Unmarshal(b []byte) error {
@@ -3207,7 +3762,7 @@
 func (m *SingleSetValueResponse) String() string { return proto.CompactTextString(m) }
 func (*SingleSetValueResponse) ProtoMessage()    {}
 func (*SingleSetValueResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{30}
+	return fileDescriptor_7ecf6e9799a9202d, []int{38}
 }
 
 func (m *SingleSetValueResponse) XXX_Unmarshal(b []byte) error {
@@ -3266,10 +3821,18 @@
 	proto.RegisterType((*GetOnuCountersRequest)(nil), "extension.GetOnuCountersRequest")
 	proto.RegisterType((*GetOmciEthernetFrameExtendedPmRequest)(nil), "extension.GetOmciEthernetFrameExtendedPmRequest")
 	proto.RegisterType((*GetRxPowerRequest)(nil), "extension.GetRxPowerRequest")
+	proto.RegisterType((*GetOltRxPowerRequest)(nil), "extension.GetOltRxPowerRequest")
 	proto.RegisterType((*GetOnuCountersResponse)(nil), "extension.GetOnuCountersResponse")
 	proto.RegisterType((*OmciEthernetFrameExtendedPm)(nil), "extension.OmciEthernetFrameExtendedPm")
 	proto.RegisterType((*GetOmciEthernetFrameExtendedPmResponse)(nil), "extension.GetOmciEthernetFrameExtendedPmResponse")
+	proto.RegisterType((*RxPower)(nil), "extension.RxPower")
+	proto.RegisterType((*GetOltRxPowerResponse)(nil), "extension.GetOltRxPowerResponse")
 	proto.RegisterType((*GetRxPowerResponse)(nil), "extension.GetRxPowerResponse")
+	proto.RegisterType((*GetOnuOmciTxRxStatsRequest)(nil), "extension.GetOnuOmciTxRxStatsRequest")
+	proto.RegisterType((*GetOnuOmciTxRxStatsResponse)(nil), "extension.GetOnuOmciTxRxStatsResponse")
+	proto.RegisterType((*GetOnuOmciActiveAlarmsRequest)(nil), "extension.GetOnuOmciActiveAlarmsRequest")
+	proto.RegisterType((*AlarmData)(nil), "extension.AlarmData")
+	proto.RegisterType((*GetOnuOmciActiveAlarmsResponse)(nil), "extension.GetOnuOmciActiveAlarmsResponse")
 	proto.RegisterType((*GetValueRequest)(nil), "extension.GetValueRequest")
 	proto.RegisterType((*GetValueResponse)(nil), "extension.GetValueResponse")
 	proto.RegisterType((*SetValueRequest)(nil), "extension.SetValueRequest")
@@ -3283,209 +3846,239 @@
 func init() { proto.RegisterFile("voltha_protos/extensions.proto", fileDescriptor_7ecf6e9799a9202d) }
 
 var fileDescriptor_7ecf6e9799a9202d = []byte{
-	// 3230 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x5a, 0xcd, 0x6f, 0x1b, 0xc9,
-	0xb1, 0x17, 0x29, 0x89, 0x22, 0x8b, 0x22, 0x45, 0xb5, 0xbe, 0x28, 0xc9, 0x9f, 0xb3, 0x58, 0xdb,
-	0x6f, 0xe1, 0xa5, 0x4d, 0xae, 0xe4, 0xd5, 0xf3, 0xee, 0x03, 0x56, 0x23, 0x8e, 0x44, 0xc2, 0x32,
-	0x49, 0x37, 0x49, 0x7b, 0xfd, 0x80, 0x87, 0xc1, 0x88, 0xd3, 0x92, 0x07, 0x4b, 0xce, 0xf0, 0xcd,
-	0x34, 0xb5, 0x72, 0xae, 0xc9, 0x2d, 0xc9, 0x29, 0x97, 0xfc, 0x0d, 0x01, 0x82, 0x1c, 0x72, 0xc8,
-	0x3d, 0xe7, 0xfc, 0x13, 0x01, 0xf2, 0x17, 0x04, 0x39, 0x07, 0x41, 0x7f, 0xcc, 0x27, 0x29, 0xd9,
-	0xde, 0xe4, 0x62, 0xb3, 0xab, 0x7e, 0xf5, 0xeb, 0x9e, 0xea, 0xaa, 0xea, 0x9a, 0x1e, 0xc1, 0x9d,
-	0x4b, 0x67, 0x48, 0xdf, 0x19, 0xfa, 0xd8, 0x75, 0xa8, 0xe3, 0x3d, 0x21, 0x57, 0x94, 0xd8, 0x9e,
-	0xe5, 0xd8, 0x5e, 0x85, 0x4b, 0x50, 0x2e, 0x90, 0xec, 0x4c, 0x43, 0xf5, 0x81, 0x63, 0x9f, 0x5b,
-	0x17, 0x02, 0xba, 0xb3, 0x7b, 0xe1, 0x38, 0x17, 0x43, 0xf2, 0x84, 0x8f, 0xce, 0x26, 0xe7, 0x4f,
-	0xc8, 0x68, 0x4c, 0xdf, 0x0b, 0xa5, 0xf2, 0x7f, 0x90, 0x7d, 0x6d, 0x0c, 0x27, 0xa4, 0x4b, 0x28,
-	0x2a, 0x42, 0xda, 0x32, 0xcb, 0xa9, 0x7b, 0xa9, 0x47, 0x39, 0x9c, 0xb6, 0x4c, 0x74, 0x00, 0xcb,
-	0xc6, 0xd0, 0x70, 0x47, 0x92, 0xae, 0x9c, 0xbe, 0x97, 0x7a, 0x94, 0xaf, 0xad, 0x55, 0x24, 0xfb,
-	0x21, 0xd3, 0x1d, 0xf1, 0xdf, 0x8d, 0x39, 0x9c, 0x37, 0xc2, 0xa1, 0xba, 0x04, 0x8b, 0x97, 0x8c,
-	0x55, 0x79, 0x0c, 0x39, 0x4e, 0xdf, 0x7b, 0x3f, 0x26, 0xca, 0x5d, 0x58, 0x60, 0xff, 0xa3, 0x1c,
-	0x2c, 0x6a, 0x2f, 0x3b, 0xbd, 0xb7, 0xa5, 0x39, 0xb4, 0x0c, 0xd9, 0x7a, 0xb3, 0xdb, 0x3b, 0x6c,
-	0x1d, 0x69, 0xa5, 0x94, 0xf2, 0x0a, 0x8a, 0x62, 0x31, 0x63, 0x32, 0xb0, 0xce, 0x2d, 0xe2, 0x4e,
-	0x2d, 0xe9, 0x89, 0x24, 0xe6, 0x6b, 0x29, 0xd6, 0xb6, 0x2b, 0x81, 0x1b, 0x2a, 0xc1, 0x3c, 0x15,
-	0xf6, 0x0f, 0x96, 0x0b, 0xa0, 0xb0, 0x8c, 0x09, 0x9d, 0xb8, 0x36, 0x57, 0x7b, 0xa8, 0x04, 0xf3,
-	0x5d, 0x42, 0x39, 0x63, 0x01, 0xb3, 0x9f, 0xe8, 0x1e, 0xe4, 0xfb, 0xb6, 0x37, 0x19, 0x8f, 0x1d,
-	0x97, 0x12, 0x93, 0x13, 0x17, 0x70, 0x54, 0x84, 0xd6, 0x61, 0x51, 0x73, 0x5d, 0xc7, 0x2d, 0xcf,
-	0x73, 0x9d, 0x18, 0xa0, 0x1d, 0xc8, 0xd6, 0x2d, 0x8f, 0x1a, 0xf6, 0x80, 0x94, 0x17, 0xb8, 0x22,
-	0x18, 0x2b, 0xcf, 0x00, 0x9d, 0x10, 0xea, 0x0f, 0x31, 0xf9, 0xff, 0x09, 0xf1, 0xf8, 0x4c, 0x8e,
-	0x3d, 0xa9, 0x93, 0x4b, 0x6b, 0x40, 0x9a, 0xfe, 0x53, 0x45, 0x45, 0x4a, 0x15, 0xd6, 0x62, 0x76,
-	0xde, 0xd8, 0xb1, 0x3d, 0xc2, 0xa6, 0x32, 0xfd, 0xa9, 0xc4, 0xca, 0x83, 0xb1, 0x52, 0x83, 0xf5,
-	0x13, 0x42, 0xdb, 0xf6, 0xa4, 0x6f, 0x5b, 0x4d, 0xfb, 0xdc, 0xf1, 0x27, 0xdb, 0x81, 0xec, 0x84,
-	0x49, 0x4c, 0x72, 0xe5, 0xdb, 0xf8, 0x63, 0xe5, 0xaf, 0x0b, 0xb0, 0x91, 0x30, 0x92, 0x33, 0x75,
-	0x20, 0x6b, 0x98, 0xa3, 0x2e, 0x35, 0xa8, 0x98, 0xa9, 0x58, 0xdb, 0x8b, 0xb8, 0x78, 0xa6, 0x4d,
-	0xe5, 0xd0, 0x1c, 0x59, 0xb6, 0xe5, 0x51, 0xd7, 0xa0, 0xd6, 0x25, 0xe1, 0xb6, 0x38, 0x60, 0x41,
-	0x6d, 0xc8, 0x39, 0x63, 0xe2, 0x0a, 0x4a, 0xb1, 0x6b, 0xd5, 0x0f, 0x52, 0xb6, 0xc7, 0x84, 0xb1,
-	0x39, 0xb6, 0x31, 0x14, 0x7c, 0x21, 0x07, 0x23, 0x14, 0x01, 0xd8, 0xb4, 0x4d, 0xbe, 0x23, 0x1f,
-	0x43, 0x28, 0xe2, 0x72, 0x22, 0x48, 0x9b, 0xb6, 0x89, 0x43, 0x0e, 0xe5, 0xcf, 0x29, 0x28, 0x25,
-	0xf5, 0x08, 0x20, 0xd3, 0x6f, 0xbd, 0x68, 0xbf, 0x69, 0x95, 0xe6, 0x10, 0x82, 0x62, 0x4f, 0x6b,
-	0xe9, 0xea, 0x61, 0x57, 0xd3, 0x7b, 0xfa, 0x71, 0xfd, 0xfb, 0x52, 0x0a, 0x6d, 0x02, 0x6a, 0xf4,
-	0x5b, 0x75, 0xac, 0xd5, 0xa3, 0xf2, 0x34, 0x2a, 0xc3, 0xfa, 0x49, 0xf3, 0xe4, 0x50, 0x6d, 0xf6,
-	0x74, 0xad, 0xd7, 0xd0, 0x70, 0x4b, 0x13, 0x9a, 0x79, 0x66, 0xc1, 0x58, 0x4e, 0xe2, 0xf2, 0x85,
-	0x04, 0x7b, 0xa3, 0xfe, 0x7d, 0x69, 0x71, 0x06, 0x3b, 0x93, 0x67, 0x66, 0xb2, 0x33, 0xcd, 0x92,
-	0x72, 0x02, 0x6b, 0x33, 0xf6, 0x81, 0x11, 0x1d, 0xd6, 0x5f, 0x76, 0x7b, 0x87, 0x3d, 0x4d, 0xef,
-	0xb7, 0xea, 0xda, 0x71, 0xb3, 0xa5, 0xd5, 0x4b, 0x73, 0xec, 0xf1, 0x4e, 0xdb, 0x47, 0x2f, 0xb4,
-	0x7a, 0x29, 0xc5, 0x72, 0xb0, 0xdf, 0x92, 0xa3, 0xb4, 0x72, 0x0c, 0xa5, 0xa4, 0xf7, 0xd1, 0x16,
-	0xac, 0xb5, 0x3b, 0x1a, 0x9e, 0xa6, 0xc9, 0xc3, 0x92, 0xd6, 0x3a, 0x54, 0x4f, 0x7d, 0x9e, 0x7a,
-	0xb3, 0x2b, 0x46, 0x69, 0xe5, 0x4f, 0x29, 0x9e, 0x03, 0xed, 0x21, 0xed, 0x38, 0x2e, 0x3d, 0x72,
-	0x26, 0x36, 0x25, 0xae, 0x87, 0x36, 0x21, 0xc3, 0xb2, 0xaa, 0xe5, 0xc8, 0xa0, 0x94, 0x23, 0xa4,
-	0x42, 0x96, 0xfd, 0x62, 0xa9, 0x2b, 0xa3, 0xe4, 0x41, 0x62, 0x53, 0xe3, 0x44, 0x95, 0x8e, 0x44,
-	0xe3, 0xc0, 0x4e, 0xd1, 0x20, 0xeb, 0x4b, 0x51, 0x09, 0x96, 0xd9, 0x6f, 0xbd, 0xdf, 0x7a, 0xd1,
-	0x12, 0xbb, 0xb8, 0x01, 0xab, 0x5c, 0x12, 0x38, 0xae, 0xd5, 0x6a, 0x96, 0x52, 0x01, 0xb0, 0xd3,
-	0x6e, 0xe9, 0xed, 0xd3, 0x5e, 0x29, 0xad, 0xfc, 0x65, 0x1e, 0x76, 0xa6, 0x27, 0x0c, 0x52, 0xa4,
-	0x0c, 0x4b, 0xf4, 0x4a, 0x7d, 0x4f, 0x89, 0xc7, 0x1f, 0x61, 0x01, 0xfb, 0x43, 0xa6, 0x71, 0xa5,
-	0x26, 0x2d, 0x34, 0x72, 0x88, 0x6e, 0x41, 0x8e, 0x5e, 0x75, 0x8c, 0xc1, 0x0f, 0x84, 0x7a, 0x3c,
-	0x66, 0x17, 0x70, 0x28, 0x60, 0x5a, 0x37, 0xd0, 0x2e, 0x08, 0x6d, 0x20, 0x40, 0x0f, 0xa0, 0x48,
-	0xaf, 0x78, 0xc9, 0xf1, 0x21, 0x8b, 0x1c, 0x92, 0x90, 0x32, 0x9c, 0x1b, 0xc7, 0x65, 0x04, 0xce,
-	0x9d, 0xc2, 0xd1, 0x2b, 0x75, 0x60, 0x78, 0xd4, 0xc7, 0x2d, 0xf9, 0x7c, 0x51, 0xa9, 0xe0, 0x8b,
-	0xe1, 0xb2, 0x3e, 0x5f, 0x12, 0x47, 0xaf, 0xfa, 0x51, 0x5c, 0xce, 0xe7, 0xeb, 0x4f, 0xf1, 0xc5,
-	0x70, 0xe0, 0xf3, 0xf5, 0xa7, 0xf8, 0x5e, 0x46, 0x71, 0x79, 0x9f, 0xef, 0xe5, 0x14, 0x5f, 0x0c,
-	0xb7, 0xec, 0xf3, 0x45, 0xa5, 0x4a, 0xdd, 0x2f, 0x90, 0x1d, 0xc7, 0x6e, 0x8f, 0xa9, 0x35, 0x30,
-	0x86, 0xac, 0x34, 0xa0, 0xc7, 0xb0, 0xc8, 0x0f, 0x42, 0xbe, 0x8b, 0xf9, 0xda, 0x66, 0x45, 0x1c,
-	0x93, 0x15, 0xff, 0x98, 0xac, 0x68, 0x4c, 0x8b, 0x05, 0x48, 0xf9, 0x45, 0x1a, 0x6e, 0xcd, 0xa2,
-	0x09, 0xc2, 0xe2, 0x0b, 0x28, 0x8d, 0x9d, 0x1f, 0x89, 0x7b, 0x4c, 0x88, 0xf9, 0xda, 0x19, 0x52,
-	0xe3, 0x42, 0x54, 0xd0, 0x34, 0x9e, 0x92, 0xa3, 0x1a, 0xac, 0xbb, 0x64, 0x40, 0xac, 0x4b, 0x62,
-	0x4a, 0xaa, 0x0e, 0x83, 0xf0, 0xa8, 0x49, 0xe3, 0x99, 0x3a, 0xf4, 0x0c, 0x36, 0x47, 0xc4, 0xf0,
-	0xa7, 0x3e, 0x35, 0x26, 0xf6, 0xe0, 0x9d, 0xb0, 0x9a, 0xe7, 0x56, 0xd7, 0x68, 0xd9, 0xba, 0x86,
-	0x86, 0x47, 0x5c, 0xd5, 0x32, 0xbc, 0xa3, 0x89, 0xeb, 0x12, 0x9b, 0xf2, 0x18, 0x4b, 0xe3, 0x29,
-	0x39, 0x3b, 0xa0, 0x28, 0x19, 0xf1, 0xec, 0x9f, 0xb8, 0x84, 0xc7, 0x59, 0x1a, 0x47, 0x45, 0xca,
-	0x1f, 0x52, 0x70, 0x57, 0xb8, 0x41, 0xa3, 0xef, 0x88, 0x6b, 0x13, 0xaa, 0xba, 0x96, 0x79, 0x41,
-	0x58, 0xa6, 0x34, 0x2c, 0x8f, 0x3a, 0xee, 0x7b, 0x84, 0x21, 0x67, 0x5a, 0x2e, 0x19, 0xb0, 0x0a,
-	0x72, 0xed, 0x21, 0x72, 0xad, 0x79, 0xa5, 0xee, 0xdb, 0xe2, 0x90, 0x46, 0x39, 0x80, 0x5c, 0x20,
-	0x47, 0x05, 0xc8, 0x45, 0x8b, 0x10, 0xab, 0x5f, 0x9d, 0x6e, 0x0f, 0x6b, 0x87, 0x2f, 0x4b, 0x29,
-	0x54, 0x04, 0xa8, 0xb7, 0xdf, 0xb4, 0xe4, 0x38, 0xad, 0xfc, 0x66, 0x11, 0x1e, 0x7e, 0x60, 0xca,
-	0x60, 0x0f, 0xef, 0x00, 0x98, 0xae, 0x33, 0xd6, 0x2e, 0x89, 0x4d, 0x3d, 0x59, 0xa0, 0x22, 0x12,
-	0x56, 0xbc, 0x9c, 0x01, 0x65, 0xa1, 0x26, 0xba, 0x04, 0x39, 0x62, 0x89, 0x3f, 0x8e, 0x24, 0x77,
-	0x01, 0xfb, 0x43, 0xe6, 0xfd, 0x33, 0xd7, 0x31, 0xcc, 0x68, 0x98, 0x8a, 0x66, 0x61, 0x4a, 0xce,
-	0xb0, 0xa3, 0xc9, 0x90, 0x6d, 0x60, 0x88, 0x5d, 0x14, 0xd8, 0xa4, 0x1c, 0x3d, 0x86, 0xd5, 0x81,
-	0x3b, 0xe0, 0x79, 0x4d, 0xcc, 0x68, 0xbe, 0x17, 0xf0, 0xb4, 0x82, 0x31, 0x4f, 0x6c, 0x93, 0xb8,
-	0x9e, 0xf5, 0x33, 0x12, 0x4d, 0xfa, 0x02, 0x9e, 0x92, 0xa3, 0x47, 0xb0, 0xe2, 0x5c, 0xc6, 0xa1,
-	0x59, 0x0e, 0x4d, 0x8a, 0x19, 0x52, 0x3e, 0xe6, 0xb3, 0x3d, 0xe9, 0x96, 0x9c, 0x40, 0x26, 0xc4,
-	0x2c, 0xde, 0x7d, 0xd1, 0x7e, 0xcf, 0xa9, 0xd6, 0xbe, 0x96, 0x70, 0xe0, 0xf0, 0x99, 0x3a, 0xb4,
-	0x07, 0x1b, 0x52, 0x5e, 0xad, 0x1d, 0xf4, 0x9c, 0xda, 0xfe, 0x7e, 0x5b, 0x18, 0xe5, 0xb9, 0xd1,
-	0x6c, 0x65, 0xc4, 0xaa, 0xb6, 0xff, 0xac, 0xe7, 0xec, 0x57, 0xab, 0x72, 0xaa, 0xe5, 0x98, 0x55,
-	0x5c, 0xc9, 0x72, 0x4b, 0x2a, 0xf6, 0xab, 0xb5, 0x9e, 0x53, 0x7d, 0x5a, 0xfb, 0x4a, 0x9a, 0x15,
-	0xb8, 0xd9, 0x35, 0x5a, 0x74, 0x00, 0x5b, 0xfe, 0x32, 0x9e, 0xd6, 0xf6, 0x7a, 0x4e, 0x75, 0xbf,
-	0x7a, 0x20, 0x0d, 0x8b, 0xdc, 0xf0, 0x3a, 0xb5, 0xf2, 0x1d, 0x94, 0x44, 0x50, 0x1e, 0x93, 0x81,
-	0x9f, 0x37, 0x9f, 0x56, 0x90, 0xfe, 0x9e, 0x82, 0x72, 0x92, 0x22, 0x08, 0xe4, 0x07, 0x50, 0x1c,
-	0x38, 0x2e, 0xcb, 0x17, 0x62, 0x86, 0x47, 0x55, 0x01, 0x27, 0xa4, 0xa8, 0x02, 0x28, 0x90, 0x1c,
-	0x39, 0x26, 0x79, 0xe3, 0xb8, 0xa6, 0x1f, 0xdc, 0x33, 0x34, 0x2c, 0x41, 0xce, 0xc9, 0xa0, 0x4b,
-	0x06, 0x8e, 0x6d, 0xfa, 0xb1, 0x1e, 0x91, 0xf0, 0xda, 0xed, 0x50, 0x63, 0x18, 0x72, 0x89, 0x60,
-	0x4f, 0x48, 0x99, 0xc3, 0x27, 0xb6, 0xe4, 0x37, 0xce, 0x86, 0x24, 0xc4, 0x8b, 0x80, 0xbf, 0x46,
-	0xab, 0x9c, 0xf8, 0x7d, 0x6b, 0x78, 0x2a, 0x8b, 0x6e, 0x77, 0x0b, 0x96, 0x2c, 0x9b, 0x9e, 0xeb,
-	0xf2, 0x65, 0x61, 0x09, 0x67, 0xd8, 0xb0, 0x69, 0xa2, 0x0d, 0xc8, 0x38, 0xf6, 0x84, 0xc9, 0xd3,
-	0x5c, 0xbe, 0xe8, 0xd8, 0x93, 0xa6, 0xa9, 0xfc, 0x3a, 0x05, 0x9f, 0x33, 0xa6, 0xd1, 0xc0, 0xf2,
-	0xcb, 0xc2, 0xb1, 0x6b, 0x8c, 0x88, 0xc6, 0xca, 0x94, 0x49, 0xcc, 0xce, 0xe8, 0xa3, 0x9b, 0x76,
-	0x74, 0x2b, 0xd2, 0x69, 0x73, 0xd7, 0x35, 0xe6, 0xc2, 0x5e, 0x9b, 0xbd, 0x3c, 0xb8, 0xc4, 0x23,
-	0x94, 0x7b, 0x2b, 0x8b, 0xc5, 0x40, 0x2d, 0xc2, 0xb2, 0xe5, 0xe9, 0x13, 0xdb, 0xd2, 0x2d, 0xde,
-	0x91, 0x1f, 0xc1, 0xea, 0x09, 0xa1, 0xf8, 0x8a, 0xd7, 0xec, 0x9f, 0xfa, 0x50, 0x7f, 0x5b, 0x86,
-	0xcd, 0xa4, 0x7b, 0x64, 0x40, 0x6c, 0x27, 0xa8, 0x1a, 0x73, 0x01, 0xd9, 0x56, 0x9c, 0xac, 0x91,
-	0x92, 0x74, 0xe8, 0x21, 0x14, 0xc7, 0x8e, 0x67, 0xb1, 0x66, 0x52, 0x37, 0x5d, 0xeb, 0x5c, 0x3c,
-	0x42, 0xa6, 0x91, 0xc6, 0x05, 0x5f, 0x5e, 0x67, 0x62, 0x06, 0xb4, 0xc9, 0x85, 0x11, 0x01, 0x2e,
-	0x70, 0xe0, 0x3c, 0x2e, 0xf8, 0x72, 0x01, 0x7c, 0x0e, 0x65, 0x93, 0x0c, 0xad, 0x91, 0x45, 0x89,
-	0xab, 0x8f, 0x2c, 0xcf, 0xd3, 0x4d, 0x42, 0xe5, 0x41, 0xb1, 0xc8, 0x4d, 0x16, 0xf0, 0x66, 0x80,
-	0x78, 0x69, 0x79, 0x5e, 0xdd, 0xd7, 0xa3, 0xbb, 0x00, 0x67, 0xd6, 0x58, 0x27, 0xac, 0xb2, 0x89,
-	0x52, 0x97, 0x69, 0x2c, 0xe2, 0xdc, 0x99, 0x35, 0xe6, 0xc5, 0xce, 0x43, 0xb7, 0x81, 0x0d, 0x98,
-	0x4f, 0x65, 0x75, 0xcb, 0x34, 0x32, 0x38, 0x7b, 0x66, 0x8d, 0xfb, 0x4c, 0xc2, 0x2a, 0xc3, 0x39,
-	0x19, 0xe8, 0x41, 0x50, 0xeb, 0xde, 0xfb, 0xd1, 0x99, 0x33, 0x14, 0xd5, 0x2d, 0xd3, 0x58, 0xc2,
-	0x6b, 0xe7, 0x64, 0x70, 0xe4, 0x6b, 0xbb, 0x42, 0xc9, 0x32, 0x5c, 0x58, 0x99, 0xe4, 0x47, 0x16,
-	0x81, 0xa1, 0x3d, 0xaf, 0x75, 0x99, 0x46, 0x16, 0x6f, 0x70, 0x3b, 0xa9, 0x0f, 0x08, 0xd0, 0x77,
-	0xb0, 0x1b, 0xb7, 0x8c, 0x85, 0x34, 0x2f, 0x7d, 0x99, 0x46, 0x0e, 0x6f, 0x47, 0xad, 0xfb, 0x51,
-	0x08, 0xfa, 0x1c, 0x0a, 0x31, 0x06, 0x5e, 0xf9, 0x32, 0x0d, 0xc0, 0xcb, 0x51, 0x1b, 0xf4, 0x14,
-	0xd6, 0xe2, 0x0f, 0x26, 0x3c, 0xb0, 0xcc, 0xc1, 0x79, 0xbc, 0x1a, 0x7d, 0x2c, 0xe1, 0x8a, 0x47,
-	0xb0, 0x72, 0x75, 0x41, 0x46, 0xfa, 0x0f, 0xe4, 0xbd, 0xef, 0xcf, 0x02, 0x47, 0x2f, 0xe3, 0x02,
-	0x53, 0xbc, 0x20, 0xef, 0x43, 0x9f, 0x72, 0xe4, 0xd0, 0xf1, 0x44, 0x49, 0xcb, 0x34, 0x0a, 0x38,
-	0xcb, 0x44, 0xa7, 0x8e, 0xc7, 0x89, 0xdc, 0x2b, 0x7d, 0x3c, 0x74, 0x8c, 0x91, 0x27, 0x98, 0xca,
-	0x2b, 0x1c, 0x54, 0xc4, 0x05, 0xf7, 0xaa, 0xc3, 0xe5, 0xe2, 0x65, 0xf9, 0x4b, 0x40, 0x21, 0xd2,
-	0x76, 0x6c, 0xdd, 0x32, 0x87, 0xa4, 0x5c, 0xe2, 0xe0, 0x15, 0xbc, 0xe2, 0x83, 0x5b, 0x8e, 0xdd,
-	0x34, 0x87, 0x3c, 0x5c, 0xdd, 0x2b, 0xdd, 0x19, 0x0d, 0xac, 0xf2, 0x2a, 0xc7, 0x94, 0x70, 0xc6,
-	0xbd, 0x62, 0xd9, 0xca, 0x54, 0x54, 0xaa, 0x10, 0x57, 0xad, 0xe2, 0x0c, 0x15, 0xaa, 0xe7, 0xb0,
-	0x2d, 0xad, 0x74, 0x59, 0x77, 0xf5, 0x81, 0x3b, 0x90, 0x0b, 0x5b, 0xe3, 0x60, 0x84, 0x37, 0x04,
-	0x8f, 0x3c, 0xc4, 0x8e, 0xe4, 0x59, 0x89, 0x76, 0x21, 0xeb, 0x5e, 0xe9, 0x67, 0xbc, 0x56, 0xae,
-	0x73, 0xe8, 0x5a, 0xd8, 0xbe, 0xdf, 0x05, 0x60, 0xab, 0x97, 0xc7, 0xe1, 0x06, 0x57, 0xaf, 0x47,
-	0x7b, 0xf4, 0x5d, 0xc8, 0x52, 0xdf, 0x7a, 0x93, 0xab, 0x37, 0xc2, 0xd7, 0x82, 0xbb, 0x00, 0x34,
-	0xb4, 0xde, 0xe2, 0xea, 0xcd, 0x68, 0xff, 0xff, 0x19, 0x2c, 0x9f, 0x11, 0x57, 0x77, 0x89, 0xbc,
-	0x82, 0x28, 0x73, 0xc8, 0x16, 0xce, 0x9f, 0xb1, 0x5a, 0x20, 0x2f, 0x21, 0xee, 0x43, 0x7e, 0x38,
-	0x30, 0x2f, 0xfc, 0x0d, 0xdb, 0xe6, 0x98, 0x32, 0x06, 0x26, 0x94, 0xbb, 0xc5, 0x96, 0x69, 0x5a,
-	0x3e, 0x62, 0x87, 0x23, 0xb6, 0x71, 0xce, 0x35, 0x2d, 0x09, 0xb8, 0x03, 0x39, 0x6a, 0x8d, 0x88,
-	0x47, 0x8d, 0xd1, 0xb8, 0xbc, 0xcb, 0xb3, 0x7d, 0x07, 0x87, 0x22, 0x75, 0x19, 0xc0, 0xf2, 0x74,
-	0x59, 0x28, 0xd4, 0x3c, 0xe4, 0x2c, 0x4f, 0x17, 0xb5, 0x41, 0x5d, 0x83, 0x55, 0xcb, 0xd3, 0xe3,
-	0xf5, 0x40, 0x0a, 0xe3, 0xb9, 0xaf, 0xde, 0x86, 0x5d, 0x8b, 0x25, 0xf6, 0xec, 0x3c, 0x57, 0x57,
-	0xa0, 0x60, 0x79, 0x7a, 0x98, 0xca, 0xb2, 0x14, 0x06, 0xa9, 0xab, 0xee, 0x40, 0xd9, 0xf2, 0xf4,
-	0x99, 0xb9, 0xaa, 0xde, 0x82, 0x9d, 0x40, 0x37, 0x95, 0x91, 0xea, 0x3d, 0xb8, 0x33, 0xa5, 0x8d,
-	0x65, 0x9d, 0x8a, 0xa0, 0x94, 0x44, 0xa8, 0x65, 0xd8, 0x9c, 0x9a, 0x4f, 0xac, 0x64, 0x1d, 0x90,
-	0xe5, 0xe9, 0x89, 0x54, 0x91, 0xeb, 0x0d, 0xd2, 0x42, 0xa2, 0x12, 0x79, 0xa0, 0x6e, 0xc1, 0x46,
-	0x4c, 0xea, 0xc7, 0xbc, 0xf4, 0xb1, 0x8c, 0x53, 0x39, 0x92, 0x01, 0xad, 0xde, 0x81, 0x5b, 0xa1,
-	0x6e, 0x3a, 0x86, 0xd5, 0x02, 0xe4, 0x85, 0x9e, 0x47, 0x9a, 0x74, 0x65, 0x18, 0x99, 0x52, 0x4f,
-	0xe3, 0xfa, 0x30, 0xf6, 0xd4, 0x55, 0x58, 0x61, 0xae, 0x8e, 0xc4, 0x9a, 0x5a, 0x82, 0xa2, 0xe5,
-	0xe9, 0x91, 0xc8, 0xf2, 0x59, 0x83, 0x40, 0x92, 0x0f, 0x1c, 0x44, 0x89, 0xf2, 0xab, 0x45, 0xd8,
-	0xbd, 0xe1, 0xe0, 0x44, 0x77, 0x21, 0xcf, 0x7a, 0x66, 0x9d, 0x84, 0x6d, 0x74, 0xe6, 0x86, 0x36,
-	0x3a, 0x13, 0xb4, 0xd1, 0x9b, 0x90, 0x39, 0x67, 0x5c, 0xa2, 0xb3, 0xc8, 0x60, 0x39, 0x42, 0xff,
-	0x15, 0x69, 0xa2, 0x75, 0x89, 0xe0, 0x27, 0x0c, 0x5e, 0x09, 0xe4, 0xc7, 0x01, 0x34, 0xe8, 0x95,
-	0x7d, 0xe8, 0xa2, 0x80, 0x06, 0x72, 0x09, 0x7d, 0x0c, 0x28, 0xf0, 0x2c, 0x31, 0x7d, 0x30, 0x3f,
-	0x58, 0x70, 0x29, 0xec, 0xa1, 0x43, 0xe2, 0xa0, 0x55, 0xf6, 0xb1, 0x4b, 0x82, 0x38, 0x90, 0x4b,
-	0xe8, 0xc3, 0xb0, 0x83, 0xf6, 0x91, 0xfc, 0x8c, 0xc1, 0x45, 0x5f, 0x2c, 0x81, 0x8f, 0xa0, 0x24,
-	0xf4, 0xfa, 0xb3, 0x3d, 0x3d, 0xd2, 0x41, 0x67, 0x70, 0x51, 0xc8, 0x9f, 0xed, 0x05, 0x6d, 0xed,
-	0x96, 0x8f, 0xdc, 0xd7, 0xa9, 0xa3, 0x57, 0x6b, 0x5f, 0xeb, 0x91, 0x1e, 0x3a, 0x83, 0xd7, 0xa4,
-	0x81, 0x68, 0xa1, 0xdb, 0x7e, 0x5b, 0x5b, 0x96, 0x56, 0xd5, 0xda, 0x01, 0x33, 0xab, 0xed, 0xef,
-	0xfb, 0x66, 0xfc, 0x2c, 0xc1, 0xeb, 0x42, 0x9f, 0x68, 0xa2, 0x43, 0xbb, 0xda, 0xfe, 0x33, 0x66,
-	0xb7, 0x5f, 0xad, 0xea, 0x91, 0x3e, 0x3a, 0xb0, 0xf3, 0xdb, 0xe8, 0xb6, 0xdf, 0x0e, 0x6f, 0x4b,
-	0xbb, 0xfd, 0x6a, 0x8d, 0x2f, 0xf3, 0x69, 0xed, 0x2b, 0x3d, 0xd2, 0x49, 0x67, 0xf0, 0x86, 0x00,
-	0x04, 0x8d, 0xb4, 0xb4, 0x7c, 0x0e, 0x3b, 0xfe, 0x4a, 0x9f, 0xd6, 0xf6, 0xb8, 0xe9, 0x7e, 0xf5,
-	0x40, 0x8f, 0xf4, 0xd2, 0x19, 0xbc, 0x29, 0xd7, 0x1a, 0xb4, 0xd2, 0xc2, 0x56, 0xf9, 0x47, 0x1a,
-	0x1e, 0x7c, 0xa8, 0x95, 0x93, 0x5d, 0x90, 0x0a, 0xd9, 0xc9, 0xd8, 0xa3, 0x2e, 0x31, 0x46, 0xb2,
-	0xc9, 0x8e, 0x5e, 0x32, 0xdd, 0xc4, 0x10, 0xd8, 0xa1, 0x63, 0x00, 0xd3, 0xf9, 0xd1, 0x96, 0x2c,
-	0xe9, 0x4f, 0x62, 0x89, 0x58, 0xa2, 0x5f, 0xa6, 0xe0, 0x01, 0x4f, 0x73, 0x22, 0xc1, 0x22, 0x56,
-	0x74, 0x22, 0xe1, 0xfa, 0x78, 0xa4, 0x9f, 0x3b, 0xee, 0xc8, 0xa0, 0xf2, 0x92, 0xf3, 0x20, 0xf1,
-	0x0e, 0xfd, 0xe1, 0xe7, 0xad, 0x1c, 0x73, 0x7b, 0x7c, 0xdf, 0xb9, 0x1e, 0x2b, 0x20, 0xca, 0x53,
-	0xc8, 0x88, 0x5f, 0xfc, 0x3a, 0xb2, 0xd1, 0xc4, 0xbd, 0xb7, 0x7a, 0xef, 0x4d, 0x5b, 0x57, 0x9b,
-	0x3d, 0x71, 0x01, 0xda, 0x6d, 0x7e, 0xdf, 0x7b, 0xab, 0x1f, 0xb7, 0xfb, 0x98, 0xcb, 0x52, 0xca,
-	0x6f, 0xc5, 0xfd, 0x5e, 0xd0, 0xb2, 0x4a, 0x17, 0x7f, 0x62, 0xcf, 0xca, 0x72, 0xde, 0xa3, 0x06,
-	0x9d, 0x88, 0x9c, 0xcf, 0x61, 0x39, 0x62, 0x45, 0xe4, 0xdc, 0xb0, 0x86, 0xba, 0x4b, 0x0c, 0xcf,
-	0xb1, 0x79, 0xba, 0xe7, 0x30, 0x30, 0x11, 0xe6, 0x12, 0xb4, 0xcd, 0x0f, 0x6c, 0x7e, 0xb5, 0xc2,
-	0x33, 0x3c, 0xc5, 0x8e, 0x6b, 0xbe, 0x16, 0xe5, 0xe7, 0x8b, 0xb0, 0x72, 0x42, 0x28, 0xbf, 0xf1,
-	0xf7, 0x7b, 0xe9, 0x6f, 0x12, 0x57, 0xe8, 0xf9, 0xda, 0xed, 0xb8, 0x3f, 0x13, 0x97, 0xf5, 0xac,
-	0x87, 0xf7, 0x0d, 0xd0, 0x37, 0xb0, 0x34, 0x11, 0x17, 0xca, 0x72, 0xc3, 0xef, 0x5e, 0x7f, 0xe1,
-	0xec, 0x5b, 0xfb, 0x16, 0xe8, 0x10, 0xf2, 0x8e, 0xb8, 0x4a, 0xe4, 0x04, 0xf3, 0xb3, 0x26, 0x4f,
-	0xdc, 0x35, 0x36, 0xe6, 0x70, 0xd4, 0x06, 0x35, 0xa1, 0xe8, 0xd8, 0x93, 0xc8, 0xad, 0x13, 0xf7,
-	0xc7, 0xac, 0x65, 0xc4, 0x2f, 0xa7, 0x1a, 0x73, 0x38, 0x61, 0x88, 0x30, 0x14, 0x08, 0x7d, 0x17,
-	0x5e, 0x81, 0x70, 0xdf, 0xe5, 0x6b, 0x5f, 0x7c, 0xfc, 0x05, 0x4d, 0x63, 0x0e, 0xc7, 0x29, 0xd0,
-	0xff, 0xf0, 0xb7, 0x42, 0xa9, 0xe6, 0x15, 0x34, 0x5f, 0xdb, 0x9d, 0x22, 0x0c, 0x5f, 0x53, 0x1b,
-	0x73, 0x38, 0x62, 0x80, 0x54, 0x00, 0x87, 0xaf, 0x9c, 0x3f, 0xd9, 0x12, 0x37, 0xbf, 0x37, 0x65,
-	0x9e, 0x78, 0xe3, 0x63, 0x1c, 0xa1, 0x15, 0x3a, 0x85, 0x25, 0x16, 0x4f, 0x8c, 0x20, 0xcb, 0x09,
-	0x9e, 0x7e, 0x42, 0xb6, 0x04, 0x5b, 0x26, 0x29, 0xd0, 0x01, 0xf8, 0xb1, 0xc4, 0xeb, 0x71, 0xbe,
-	0x76, 0x2b, 0xce, 0x16, 0x7f, 0x4f, 0x63, 0x96, 0x12, 0xae, 0xe6, 0x60, 0xc9, 0x15, 0x52, 0xe5,
-	0x77, 0x59, 0xfe, 0x8e, 0x2f, 0xa3, 0x50, 0xa6, 0xc7, 0xf3, 0x20, 0xdc, 0xc5, 0xc5, 0x98, 0x12,
-	0x27, 0x8e, 0x81, 0x2b, 0x5d, 0x8e, 0x0c, 0x52, 0x42, 0x83, 0x1c, 0x71, 0x5d, 0x11, 0xfe, 0xf2,
-	0x8e, 0xfc, 0xe1, 0x4d, 0xe6, 0xfc, 0x00, 0x13, 0x70, 0x1c, 0x5a, 0xa2, 0x6f, 0x23, 0x99, 0x20,
-	0x82, 0xf1, 0xce, 0x75, 0x99, 0x20, 0x88, 0x62, 0xa9, 0xf0, 0x6d, 0x98, 0x0a, 0x0b, 0xd7, 0xec,
-	0x54, 0xe2, 0xdb, 0x4b, 0x34, 0x17, 0x5e, 0xc0, 0xf2, 0x58, 0xc4, 0x39, 0xb5, 0x89, 0xeb, 0xc9,
-	0xe0, 0xfb, 0xfc, 0xc6, 0x64, 0x88, 0xf0, 0xc4, 0x8c, 0xd1, 0xab, 0xa9, 0xac, 0x10, 0xa1, 0xf7,
-	0xf0, 0x03, 0x59, 0x11, 0x21, 0x4c, 0x66, 0xc7, 0x19, 0xac, 0xc6, 0x42, 0x3b, 0x12, 0x91, 0xb5,
-	0x8f, 0xcf, 0x90, 0xc8, 0x04, 0xd3, 0x74, 0x48, 0x8b, 0x65, 0x8b, 0x88, 0xd6, 0xcf, 0x6e, 0xc8,
-	0x96, 0x08, 0x5b, 0x34, 0x6b, 0x5e, 0xf0, 0xa7, 0xef, 0x38, 0xb6, 0xef, 0x27, 0x19, 0xaa, 0xf7,
-	0x6f, 0xc8, 0x9c, 0xd8, 0x73, 0x47, 0x4c, 0x51, 0x9f, 0x5f, 0x72, 0x04, 0x4c, 0xc0, 0x99, 0xaa,
-	0x9f, 0x7c, 0xe0, 0xf0, 0xba, 0x15, 0xf2, 0xa0, 0xff, 0x0e, 0xf3, 0x28, 0x3f, 0xab, 0xec, 0x25,
-	0x0e, 0x8f, 0x48, 0x22, 0x29, 0x55, 0xc8, 0x88, 0xf0, 0x47, 0xeb, 0x50, 0xea, 0xf6, 0x0e, 0x7b,
-	0xfd, 0x6e, 0xec, 0xcb, 0x53, 0x06, 0xd2, 0xed, 0x17, 0xa5, 0x14, 0xff, 0x96, 0x8c, 0x71, 0x1b,
-	0x97, 0xd2, 0xca, 0xef, 0x53, 0x90, 0x8f, 0xc4, 0x3c, 0x33, 0xc4, 0xda, 0x61, 0xb7, 0xdd, 0x8a,
-	0x19, 0xae, 0x40, 0xbe, 0xdf, 0xea, 0xf6, 0x3b, 0x9d, 0x36, 0xee, 0xf1, 0xcf, 0x56, 0x1b, 0xb0,
-	0xda, 0x6c, 0xbd, 0x3e, 0x3c, 0x6d, 0xd6, 0xf5, 0xba, 0xf6, 0xba, 0x79, 0xa4, 0xe9, 0xcd, 0x7a,
-	0x29, 0x1d, 0x15, 0x33, 0xa8, 0xde, 0x7b, 0xdb, 0xd1, 0x4a, 0xf3, 0x28, 0x0f, 0x4b, 0xbd, 0xe6,
-	0x4b, 0xad, 0xdd, 0xef, 0x95, 0x16, 0xd8, 0x0c, 0x3e, 0x06, 0x6b, 0xaf, 0x04, 0x64, 0x91, 0x9d,
-	0x96, 0xcd, 0x56, 0x4f, 0xc3, 0xad, 0xc3, 0x53, 0x5d, 0xac, 0x2d, 0x23, 0x64, 0xd1, 0x49, 0x4a,
-	0x4b, 0x2a, 0x40, 0xd6, 0x95, 0x4f, 0xae, 0xbc, 0x86, 0x95, 0x6e, 0xe2, 0xc4, 0x4a, 0x7e, 0x7d,
-	0x4f, 0x7d, 0xf4, 0xd7, 0xf7, 0x48, 0x11, 0xfa, 0x67, 0x0a, 0x4a, 0xdd, 0x4f, 0x29, 0x42, 0xdd,
-	0x7f, 0xaf, 0x08, 0x75, 0x3f, 0xae, 0x08, 0xfd, 0x94, 0xed, 0xdd, 0xfb, 0x29, 0xbb, 0xab, 0x58,
-	0xb0, 0xd1, 0xb5, 0xec, 0x8b, 0x21, 0x49, 0x36, 0x04, 0x3b, 0x90, 0xa5, 0x86, 0x7b, 0x41, 0x68,
-	0x70, 0xa9, 0x17, 0x8c, 0xd1, 0x5e, 0xe0, 0x40, 0x79, 0xde, 0xef, 0xcc, 0xac, 0xb3, 0x1c, 0x81,
-	0x03, 0x5f, 0xbf, 0x82, 0xcd, 0xe4, 0x54, 0xd2, 0xe1, 0x5f, 0x87, 0x3b, 0x2d, 0xb7, 0x71, 0xf7,
-	0x86, 0xc2, 0x8d, 0xc3, 0xb0, 0x08, 0x56, 0xdf, 0xfd, 0x4f, 0xad, 0xbe, 0xfb, 0xc1, 0xd5, 0x77,
-	0x3f, 0x6d, 0xf5, 0xdd, 0x6b, 0x57, 0x5f, 0xfb, 0x63, 0x0a, 0x72, 0x9a, 0x0f, 0x44, 0x18, 0xf2,
-	0x27, 0x84, 0x6a, 0x57, 0x02, 0x8e, 0xa2, 0xe7, 0xc6, 0xcc, 0x1d, 0xda, 0xb9, 0x7f, 0x03, 0x42,
-	0x2e, 0x0d, 0x43, 0xbe, 0x7b, 0x23, 0x67, 0xf7, 0x83, 0x9c, 0xc9, 0xf5, 0xab, 0x18, 0x6e, 0x3b,
-	0xee, 0x45, 0xc5, 0x19, 0x13, 0x7b, 0xe0, 0xb8, 0x66, 0x45, 0xfc, 0x75, 0x4d, 0x68, 0xf7, 0xbf,
-	0xd5, 0x0b, 0x8b, 0xbe, 0x9b, 0x9c, 0x55, 0x06, 0xce, 0xe8, 0x89, 0x8f, 0x7a, 0x22, 0x50, 0x5f,
-	0xca, 0xbf, 0xc1, 0xb9, 0xdc, 0x7f, 0x72, 0xe1, 0x84, 0x7f, 0xb4, 0x73, 0x96, 0xe1, 0xf2, 0xaf,
-	0xfe, 0x15, 0x00, 0x00, 0xff, 0xff, 0x86, 0xb9, 0xfc, 0x29, 0xd6, 0x23, 0x00, 0x00,
+	// 3710 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x5a, 0xcd, 0x73, 0xdb, 0xc8,
+	0x72, 0x17, 0x29, 0x89, 0x22, 0x9b, 0xa2, 0x44, 0x8d, 0x3e, 0x4c, 0x4b, 0xfe, 0x5a, 0xbc, 0x5a,
+	0xdb, 0xfb, 0xca, 0x4b, 0x9b, 0x5c, 0xc9, 0xab, 0xb7, 0xef, 0xa5, 0xea, 0x91, 0x22, 0x25, 0x32,
+	0x96, 0x49, 0xed, 0x90, 0xf4, 0xee, 0x26, 0x95, 0x42, 0x41, 0xc4, 0x48, 0x46, 0x99, 0x04, 0x18,
+	0x60, 0xe8, 0xa5, 0x53, 0x95, 0x5b, 0x6e, 0x49, 0x4e, 0xef, 0x92, 0x7f, 0x22, 0x95, 0x43, 0x0e,
+	0xb9, 0xe7, 0x9c, 0x7f, 0x22, 0x55, 0xb9, 0xe4, 0x98, 0x54, 0xce, 0xa9, 0xd4, 0x7c, 0x01, 0x03,
+	0x90, 0x92, 0xed, 0xcd, 0xbb, 0xd8, 0x9a, 0xee, 0x5f, 0xff, 0xa6, 0x31, 0xd3, 0xdd, 0xd3, 0x18,
+	0x10, 0x1e, 0xbc, 0xf7, 0x46, 0xf4, 0xad, 0x65, 0x4e, 0x7c, 0x8f, 0x7a, 0xc1, 0x73, 0x32, 0xa3,
+	0xc4, 0x0d, 0x1c, 0xcf, 0x0d, 0xca, 0x5c, 0x82, 0x72, 0xa1, 0x64, 0x7f, 0x1e, 0x6a, 0x0e, 0x3d,
+	0xf7, 0xca, 0xb9, 0x16, 0xd0, 0xfd, 0x83, 0x6b, 0xcf, 0xbb, 0x1e, 0x91, 0xe7, 0x7c, 0x74, 0x39,
+	0xbd, 0x7a, 0x4e, 0xc6, 0x13, 0xfa, 0x41, 0x28, 0x8d, 0xbf, 0x80, 0xec, 0x1b, 0x6b, 0x34, 0x25,
+	0x3d, 0x42, 0xd1, 0x06, 0xa4, 0x1d, 0xbb, 0x94, 0x7a, 0x94, 0x7a, 0x9a, 0xc3, 0x69, 0xc7, 0x46,
+	0xc7, 0xb0, 0x6e, 0x8d, 0x2c, 0x7f, 0x2c, 0xe9, 0x4a, 0xe9, 0x47, 0xa9, 0xa7, 0xf9, 0xea, 0x76,
+	0x59, 0xb2, 0xd7, 0x98, 0xee, 0x84, 0xff, 0xdd, 0x5a, 0xc2, 0x79, 0x2b, 0x1a, 0xd6, 0xd7, 0x60,
+	0xf5, 0x3d, 0x63, 0x35, 0x9e, 0x41, 0x8e, 0xd3, 0xf7, 0x3f, 0x4c, 0x88, 0xf1, 0x10, 0x56, 0xd8,
+	0xff, 0x28, 0x07, 0xab, 0xcd, 0xd7, 0x17, 0xfd, 0x9f, 0x8a, 0x4b, 0x68, 0x1d, 0xb2, 0x8d, 0x76,
+	0xaf, 0x5f, 0xeb, 0x9c, 0x34, 0x8b, 0x29, 0xe3, 0x7b, 0xd8, 0x10, 0xce, 0x4c, 0xc8, 0xd0, 0xb9,
+	0x72, 0x88, 0x3f, 0xe7, 0xd2, 0x73, 0x49, 0xcc, 0x7d, 0xd9, 0xa8, 0xde, 0x2d, 0x87, 0xcb, 0x50,
+	0x0e, 0xe7, 0x29, 0xb3, 0x7f, 0xb0, 0x74, 0x80, 0xc2, 0x3a, 0x26, 0x74, 0xea, 0xbb, 0x5c, 0x1d,
+	0xa0, 0x22, 0x2c, 0xf7, 0x08, 0xe5, 0x8c, 0x05, 0xcc, 0xfe, 0x44, 0x8f, 0x20, 0x3f, 0x70, 0x83,
+	0xe9, 0x64, 0xe2, 0xf9, 0x94, 0xd8, 0x9c, 0xb8, 0x80, 0x75, 0x11, 0xda, 0x81, 0xd5, 0xa6, 0xef,
+	0x7b, 0x7e, 0x69, 0x99, 0xeb, 0xc4, 0x00, 0xed, 0x43, 0xb6, 0xe1, 0x04, 0xd4, 0x72, 0x87, 0xa4,
+	0xb4, 0xc2, 0x15, 0xe1, 0xd8, 0x78, 0x09, 0xe8, 0x8c, 0x50, 0x35, 0xc4, 0xe4, 0x2f, 0xa7, 0x24,
+	0xe0, 0x33, 0x79, 0xee, 0xb4, 0x41, 0xde, 0x3b, 0x43, 0xd2, 0x56, 0x4f, 0xa5, 0x8b, 0x8c, 0x0a,
+	0x6c, 0xc7, 0xec, 0x82, 0x89, 0xe7, 0x06, 0x84, 0x4d, 0x65, 0xab, 0xa9, 0x84, 0xe7, 0xe1, 0xd8,
+	0xa8, 0xc2, 0xce, 0x19, 0xa1, 0x5d, 0x77, 0x3a, 0x70, 0x9d, 0xb6, 0x7b, 0xe5, 0xa9, 0xc9, 0xf6,
+	0x21, 0x3b, 0x65, 0x12, 0x9b, 0xcc, 0x94, 0x8d, 0x1a, 0x1b, 0xff, 0xbe, 0x02, 0xbb, 0x09, 0x23,
+	0x39, 0xd3, 0x05, 0x64, 0x2d, 0x7b, 0xdc, 0xa3, 0x16, 0x15, 0x33, 0x6d, 0x54, 0x0f, 0xb5, 0x25,
+	0x5e, 0x68, 0x53, 0xae, 0xd9, 0x63, 0xc7, 0x75, 0x02, 0xea, 0x5b, 0xd4, 0x79, 0x4f, 0xb8, 0x2d,
+	0x0e, 0x59, 0x50, 0x17, 0x72, 0xde, 0x84, 0xf8, 0x82, 0x52, 0xec, 0x5a, 0xe5, 0xa3, 0x94, 0xdd,
+	0x09, 0x61, 0x6c, 0x9e, 0x6b, 0x8d, 0x04, 0x5f, 0xc4, 0xc1, 0x08, 0x45, 0x00, 0xb6, 0x5d, 0x9b,
+	0xef, 0xc8, 0xa7, 0x10, 0x8a, 0xb8, 0x9c, 0x0a, 0xd2, 0xb6, 0x6b, 0xe3, 0x88, 0xc3, 0xf8, 0xd7,
+	0x14, 0x14, 0x93, 0x7a, 0x04, 0x90, 0x19, 0x74, 0x5e, 0x75, 0x7f, 0xe8, 0x14, 0x97, 0x10, 0x82,
+	0x8d, 0x7e, 0xb3, 0x63, 0xd6, 0x6b, 0xbd, 0xa6, 0xd9, 0x37, 0x4f, 0x1b, 0x3f, 0x16, 0x53, 0x68,
+	0x0f, 0x50, 0x6b, 0xd0, 0x69, 0xe0, 0x66, 0x43, 0x97, 0xa7, 0x51, 0x09, 0x76, 0xce, 0xda, 0x67,
+	0xb5, 0x7a, 0xbb, 0x6f, 0x36, 0xfb, 0xad, 0x26, 0xee, 0x34, 0x85, 0x66, 0x99, 0x59, 0x30, 0x96,
+	0xb3, 0xb8, 0x7c, 0x25, 0xc1, 0xde, 0x6a, 0xfc, 0x58, 0x5c, 0x5d, 0xc0, 0xce, 0xe4, 0x99, 0x85,
+	0xec, 0x4c, 0xb3, 0x66, 0x9c, 0xc1, 0xf6, 0x82, 0x7d, 0x60, 0x44, 0xb5, 0xc6, 0xeb, 0x5e, 0xbf,
+	0xd6, 0x6f, 0x9a, 0x83, 0x4e, 0xa3, 0x79, 0xda, 0xee, 0x34, 0x1b, 0xc5, 0x25, 0xf6, 0x78, 0xe7,
+	0xdd, 0x93, 0x57, 0xcd, 0x46, 0x31, 0xc5, 0x72, 0x70, 0xd0, 0x91, 0xa3, 0xb4, 0x71, 0x0a, 0xc5,
+	0xe4, 0xea, 0xa3, 0x3b, 0xb0, 0xdd, 0xbd, 0x68, 0xe2, 0x79, 0x9a, 0x3c, 0xac, 0x35, 0x3b, 0xb5,
+	0xfa, 0xb9, 0xe2, 0x69, 0xb4, 0x7b, 0x62, 0x94, 0x36, 0xfe, 0x25, 0xc5, 0x73, 0xa0, 0x3b, 0xa2,
+	0x17, 0x9e, 0x4f, 0x4f, 0xbc, 0xa9, 0x4b, 0x89, 0x1f, 0xa0, 0x3d, 0xc8, 0xb0, 0xac, 0xea, 0x78,
+	0x32, 0x28, 0xe5, 0x08, 0xd5, 0x21, 0xcb, 0xfe, 0x62, 0xa9, 0x2b, 0xa3, 0xe4, 0x71, 0x62, 0x53,
+	0xe3, 0x44, 0xe5, 0x0b, 0x89, 0xc6, 0xa1, 0x9d, 0xd1, 0x84, 0xac, 0x92, 0xa2, 0x22, 0xac, 0xb3,
+	0xbf, 0xcd, 0x41, 0xe7, 0x55, 0x47, 0xec, 0xe2, 0x2e, 0x6c, 0x71, 0x49, 0xb8, 0x70, 0x9d, 0x4e,
+	0xbb, 0x98, 0x0a, 0x81, 0x17, 0xdd, 0x8e, 0xd9, 0x3d, 0xef, 0x17, 0xd3, 0xc6, 0xbf, 0x2d, 0xc3,
+	0xfe, 0xfc, 0x84, 0x61, 0x8a, 0x94, 0x60, 0x8d, 0xce, 0xea, 0x1f, 0x28, 0x09, 0xf8, 0x23, 0xac,
+	0x60, 0x35, 0x64, 0x1a, 0x5f, 0x6a, 0xd2, 0x42, 0x23, 0x87, 0xe8, 0x1e, 0xe4, 0xe8, 0xec, 0xc2,
+	0x1a, 0xbe, 0x23, 0x34, 0xe0, 0x31, 0xbb, 0x82, 0x23, 0x01, 0xd3, 0xfa, 0xa1, 0x76, 0x45, 0x68,
+	0x43, 0x01, 0x7a, 0x0c, 0x1b, 0x74, 0xc6, 0x4b, 0x8e, 0x82, 0xac, 0x72, 0x48, 0x42, 0xca, 0x70,
+	0x7e, 0x1c, 0x97, 0x11, 0x38, 0x7f, 0x0e, 0x47, 0x67, 0xf5, 0xa1, 0x15, 0x50, 0x85, 0x5b, 0x53,
+	0x7c, 0xba, 0x54, 0xf0, 0xc5, 0x70, 0x59, 0xc5, 0x97, 0xc4, 0xd1, 0xd9, 0x40, 0xc7, 0xe5, 0x14,
+	0xdf, 0x60, 0x8e, 0x2f, 0x86, 0x03, 0xc5, 0x37, 0x98, 0xe3, 0x7b, 0xad, 0xe3, 0xf2, 0x8a, 0xef,
+	0xf5, 0x1c, 0x5f, 0x0c, 0xb7, 0xae, 0xf8, 0x74, 0xa9, 0xd1, 0x50, 0x05, 0xf2, 0xc2, 0x73, 0xbb,
+	0x13, 0xea, 0x0c, 0xad, 0x11, 0x2b, 0x0d, 0xe8, 0x19, 0xac, 0xf2, 0x83, 0x90, 0xef, 0x62, 0xbe,
+	0xba, 0x57, 0x16, 0xc7, 0x64, 0x59, 0x1d, 0x93, 0xe5, 0x26, 0xd3, 0x62, 0x01, 0x32, 0xfe, 0x26,
+	0x0d, 0xf7, 0x16, 0xd1, 0x84, 0x61, 0xf1, 0x6b, 0x28, 0x4e, 0xbc, 0x9f, 0x89, 0x7f, 0x4a, 0x88,
+	0xfd, 0xc6, 0x1b, 0x51, 0xeb, 0x5a, 0x54, 0xd0, 0x34, 0x9e, 0x93, 0xa3, 0x2a, 0xec, 0xf8, 0x64,
+	0x48, 0x9c, 0xf7, 0xc4, 0x96, 0x54, 0x17, 0x0c, 0xc2, 0xa3, 0x26, 0x8d, 0x17, 0xea, 0xd0, 0x4b,
+	0xd8, 0x1b, 0x13, 0x4b, 0x4d, 0x7d, 0x6e, 0x4d, 0xdd, 0xe1, 0x5b, 0x61, 0xb5, 0xcc, 0xad, 0x6e,
+	0xd0, 0x32, 0xbf, 0x46, 0x56, 0x40, 0xfc, 0xba, 0x63, 0x05, 0x27, 0x53, 0xdf, 0x27, 0x2e, 0xe5,
+	0x31, 0x96, 0xc6, 0x73, 0x72, 0x76, 0x40, 0x51, 0x32, 0xe6, 0xd9, 0x3f, 0xf5, 0x09, 0x8f, 0xb3,
+	0x34, 0xd6, 0x45, 0xc6, 0x3f, 0xa5, 0xe0, 0xa1, 0x58, 0x86, 0x26, 0x7d, 0x4b, 0x7c, 0x97, 0xd0,
+	0xba, 0xef, 0xd8, 0xd7, 0x84, 0x65, 0x4a, 0xcb, 0x09, 0xa8, 0xe7, 0x7f, 0x40, 0x18, 0x72, 0xb6,
+	0xe3, 0x93, 0x21, 0xab, 0x20, 0x37, 0x1e, 0x22, 0x37, 0x9a, 0x97, 0x1b, 0xca, 0x16, 0x47, 0x34,
+	0xc6, 0x31, 0xe4, 0x42, 0x39, 0x2a, 0x40, 0x4e, 0x2f, 0x42, 0xac, 0x7e, 0x5d, 0xf4, 0xfa, 0xb8,
+	0x59, 0x7b, 0x5d, 0x4c, 0xa1, 0x0d, 0x80, 0x46, 0xf7, 0x87, 0x8e, 0x1c, 0xa7, 0x8d, 0x3f, 0xac,
+	0xc2, 0x93, 0x8f, 0x4c, 0x19, 0xee, 0xe1, 0x03, 0x00, 0xdb, 0xf7, 0x26, 0xcd, 0xf7, 0xc4, 0xa5,
+	0x81, 0x2c, 0x50, 0x9a, 0x84, 0x15, 0x2f, 0x6f, 0x48, 0x59, 0xa8, 0x89, 0x2e, 0x41, 0x8e, 0x58,
+	0xe2, 0x4f, 0xb4, 0xe4, 0x2e, 0x60, 0x35, 0x64, 0xab, 0x7f, 0xe9, 0x7b, 0x96, 0xad, 0x87, 0xa9,
+	0x68, 0x16, 0xe6, 0xe4, 0x0c, 0x3b, 0x9e, 0x8e, 0xd8, 0x06, 0x46, 0xd8, 0x55, 0x81, 0x4d, 0xca,
+	0xd1, 0x33, 0xd8, 0x1a, 0xfa, 0x43, 0x9e, 0xd7, 0xc4, 0xd6, 0xf3, 0xbd, 0x80, 0xe7, 0x15, 0x8c,
+	0x79, 0xea, 0xda, 0xc4, 0x0f, 0x9c, 0xbf, 0x22, 0x7a, 0xd2, 0x17, 0xf0, 0x9c, 0x1c, 0x3d, 0x85,
+	0x4d, 0xef, 0x7d, 0x1c, 0x9a, 0xe5, 0xd0, 0xa4, 0x98, 0x21, 0xe5, 0x63, 0xbe, 0x3c, 0x94, 0xcb,
+	0x92, 0x13, 0xc8, 0x84, 0x98, 0xc5, 0xbb, 0x12, 0x1d, 0xf5, 0xbd, 0x4a, 0xf5, 0x5b, 0x09, 0x07,
+	0x0e, 0x5f, 0xa8, 0x43, 0x87, 0xb0, 0x2b, 0xe5, 0x95, 0xea, 0x71, 0xdf, 0xab, 0x1e, 0x1d, 0x75,
+	0x85, 0x51, 0x9e, 0x1b, 0x2d, 0x56, 0x6a, 0x56, 0xd5, 0xa3, 0x97, 0x7d, 0xef, 0xa8, 0x52, 0x91,
+	0x53, 0xad, 0xc7, 0xac, 0xe2, 0x4a, 0x96, 0x5b, 0x52, 0x71, 0x54, 0xa9, 0xf6, 0xbd, 0xca, 0x8b,
+	0xea, 0x37, 0xd2, 0xac, 0xc0, 0xcd, 0x6e, 0xd0, 0xa2, 0x63, 0xb8, 0xa3, 0xdc, 0x78, 0x51, 0x3d,
+	0xec, 0x7b, 0x95, 0xa3, 0xca, 0xb1, 0x34, 0xdc, 0xe0, 0x86, 0x37, 0xa9, 0x8d, 0xdf, 0x43, 0x51,
+	0x04, 0xe5, 0x29, 0x19, 0xaa, 0xbc, 0xf9, 0xbc, 0x82, 0xf4, 0xdf, 0x29, 0x28, 0x25, 0x29, 0xc2,
+	0x40, 0x7e, 0x0c, 0x1b, 0x43, 0xcf, 0x67, 0xf9, 0x42, 0xec, 0xe8, 0xa8, 0x2a, 0xe0, 0x84, 0x14,
+	0x95, 0x01, 0x85, 0x92, 0x13, 0xcf, 0x26, 0x3f, 0x78, 0xbe, 0xad, 0x82, 0x7b, 0x81, 0x86, 0x25,
+	0xc8, 0x15, 0x19, 0xf6, 0xc8, 0xd0, 0x73, 0x6d, 0x15, 0xeb, 0x9a, 0x84, 0xd7, 0x6e, 0x8f, 0x5a,
+	0xa3, 0x88, 0x4b, 0x04, 0x7b, 0x42, 0xca, 0x16, 0x7c, 0xea, 0x4a, 0x7e, 0xeb, 0x72, 0x44, 0x22,
+	0xbc, 0x08, 0xf8, 0x1b, 0xb4, 0xc6, 0x99, 0xea, 0x5b, 0xa3, 0x53, 0x59, 0x74, 0xbb, 0x77, 0x60,
+	0xcd, 0x71, 0xe9, 0x95, 0x29, 0x5f, 0x16, 0xd6, 0x70, 0x86, 0x0d, 0xdb, 0x36, 0xda, 0x85, 0x8c,
+	0xe7, 0x4e, 0x99, 0x3c, 0xcd, 0xe5, 0xab, 0x9e, 0x3b, 0x6d, 0xdb, 0xc6, 0xdf, 0xa7, 0xe0, 0x4b,
+	0xc6, 0x34, 0x1e, 0x3a, 0xaa, 0x2c, 0x9c, 0xfa, 0xd6, 0x98, 0x34, 0x59, 0x99, 0xb2, 0x89, 0x7d,
+	0x31, 0xfe, 0xe4, 0xa6, 0x1d, 0xdd, 0xd3, 0x3a, 0x6d, 0xbe, 0x74, 0xad, 0xa5, 0xa8, 0xd7, 0x66,
+	0x2f, 0x0f, 0x3e, 0x09, 0x08, 0xe5, 0xab, 0x95, 0xc5, 0x62, 0x50, 0xdf, 0x80, 0x75, 0x27, 0x30,
+	0xa7, 0xae, 0x63, 0x3a, 0xbc, 0x23, 0x3f, 0x81, 0xad, 0x33, 0x42, 0xf1, 0x8c, 0xd7, 0xec, 0x5f,
+	0xfa, 0x50, 0xe7, 0xe2, 0xa4, 0x1b, 0x25, 0x79, 0xee, 0x03, 0xb0, 0x1e, 0xc9, 0x1c, 0x59, 0x97,
+	0x64, 0x24, 0x9f, 0x20, 0xc7, 0x24, 0xe7, 0x4c, 0xa0, 0xd8, 0x02, 0x97, 0xb3, 0xe5, 0x38, 0x5b,
+	0xcf, 0x35, 0xfe, 0x63, 0x1d, 0xf6, 0x92, 0x8b, 0x2d, 0xc3, 0xeb, 0x6e, 0xc2, 0xb1, 0xd6, 0x52,
+	0xe8, 0xda, 0x9d, 0xb8, 0x6b, 0xad, 0x94, 0x74, 0x0e, 0x3d, 0x81, 0x8d, 0x89, 0x17, 0x38, 0xac,
+	0x35, 0x35, 0x6d, 0xdf, 0xb9, 0x12, 0x0b, 0x92, 0x69, 0xa5, 0x71, 0x41, 0xc9, 0x1b, 0x4c, 0xcc,
+	0x80, 0x2e, 0xb9, 0xb6, 0x34, 0xe0, 0x0a, 0x07, 0x2e, 0xe3, 0x82, 0x92, 0x0b, 0xe0, 0x77, 0x50,
+	0xb2, 0xc9, 0xc8, 0x19, 0x3b, 0x94, 0xf8, 0xe6, 0xd8, 0x09, 0x02, 0xd3, 0x26, 0x54, 0x1e, 0x3b,
+	0xab, 0xdc, 0x64, 0x05, 0xef, 0x85, 0x88, 0xd7, 0x4e, 0x10, 0x34, 0x94, 0x1e, 0x3d, 0x04, 0xb8,
+	0x74, 0x26, 0x26, 0x61, 0x75, 0x52, 0x14, 0xce, 0x4c, 0x6b, 0x15, 0xe7, 0x2e, 0x9d, 0x09, 0x2f,
+	0x9d, 0x01, 0xba, 0x0f, 0x6c, 0xc0, 0x76, 0x48, 0xd6, 0xca, 0x4c, 0x2b, 0x83, 0xb3, 0x97, 0xce,
+	0x64, 0xc0, 0x24, 0xac, 0xce, 0x5c, 0x91, 0xa1, 0x19, 0xa6, 0x88, 0x19, 0x7c, 0x18, 0x5f, 0x7a,
+	0x23, 0x51, 0x2b, 0x33, 0xad, 0x35, 0xbc, 0x7d, 0x45, 0x86, 0x27, 0x4a, 0xdb, 0x13, 0x4a, 0x56,
+	0x2f, 0x84, 0x95, 0x4d, 0x7e, 0x66, 0xf1, 0x1c, 0xd9, 0xf3, 0xca, 0x99, 0x69, 0x65, 0xf1, 0x2e,
+	0xb7, 0x93, 0xfa, 0x90, 0x00, 0xfd, 0x1e, 0x0e, 0xe2, 0x96, 0xb1, 0x04, 0xe1, 0x85, 0x34, 0xd3,
+	0xca, 0xe1, 0xbb, 0xba, 0xf5, 0x40, 0x87, 0xa0, 0x2f, 0xa1, 0x10, 0x63, 0xe0, 0x75, 0x34, 0xd3,
+	0x02, 0xbc, 0xae, 0xdb, 0xa0, 0x17, 0xb0, 0x1d, 0x7f, 0x30, 0xb1, 0x02, 0xeb, 0x1c, 0x9c, 0xc7,
+	0x5b, 0xfa, 0x63, 0x89, 0xa5, 0x78, 0x0a, 0x9b, 0xb3, 0x6b, 0x32, 0x36, 0xdf, 0x91, 0x0f, 0x6a,
+	0x3d, 0x0b, 0x1c, 0xbd, 0x8e, 0x0b, 0x4c, 0xf1, 0x8a, 0x7c, 0x88, 0xd6, 0x94, 0x23, 0x47, 0x5e,
+	0x20, 0x0a, 0x64, 0xa6, 0x55, 0xc0, 0x59, 0x26, 0x3a, 0xf7, 0x02, 0x4e, 0xe4, 0xcf, 0xcc, 0xc9,
+	0xc8, 0xb3, 0xc6, 0x81, 0x60, 0x2a, 0x6d, 0x72, 0xd0, 0x06, 0x2e, 0xf8, 0xb3, 0x0b, 0x2e, 0x17,
+	0xaf, 0xde, 0x5f, 0x03, 0x8a, 0x90, 0xae, 0xe7, 0x9a, 0x8e, 0x3d, 0x22, 0xa5, 0x22, 0x07, 0x6f,
+	0xe2, 0x4d, 0x05, 0xee, 0x78, 0x6e, 0xdb, 0x1e, 0xf1, 0x70, 0xf5, 0x67, 0xa6, 0x37, 0x1e, 0x3a,
+	0xa5, 0x2d, 0x8e, 0x29, 0xe2, 0x8c, 0x3f, 0x63, 0xb9, 0xcf, 0x54, 0x54, 0xaa, 0x10, 0x57, 0x6d,
+	0xe1, 0x0c, 0x15, 0xaa, 0xef, 0xe0, 0xae, 0xb4, 0x32, 0x65, 0x15, 0x37, 0x87, 0xfe, 0x50, 0x3a,
+	0xb6, 0xcd, 0xc1, 0x08, 0xef, 0x0a, 0x1e, 0x79, 0x24, 0x9e, 0xc8, 0x93, 0x17, 0x1d, 0x40, 0xd6,
+	0x9f, 0x99, 0x97, 0xbc, 0xf2, 0xee, 0x70, 0xe8, 0x76, 0xf4, 0x32, 0xf0, 0x10, 0x80, 0x79, 0x2f,
+	0x0f, 0xd7, 0x5d, 0xae, 0xde, 0xd1, 0x3b, 0xfe, 0x03, 0xc8, 0x52, 0x65, 0xbd, 0xc7, 0xd5, 0xbb,
+	0xd1, 0x4b, 0xc6, 0x43, 0x00, 0x1a, 0x59, 0xdf, 0xe1, 0xea, 0x3d, 0xfd, 0x6d, 0xe2, 0x57, 0xb0,
+	0x7e, 0x49, 0x7c, 0xd3, 0x27, 0xf2, 0x42, 0xa3, 0xc4, 0x21, 0x77, 0x70, 0xfe, 0x92, 0x55, 0x04,
+	0x79, 0xa5, 0xf1, 0x05, 0xe4, 0x47, 0x43, 0xfb, 0x5a, 0x6d, 0xd8, 0x5d, 0x8e, 0x29, 0x61, 0x60,
+	0x42, 0xb9, 0x5b, 0xcc, 0x4d, 0xdb, 0x51, 0x88, 0x7d, 0x8e, 0xb8, 0x8b, 0x73, 0xbe, 0xed, 0x48,
+	0xc0, 0x03, 0xc8, 0x51, 0x67, 0x4c, 0x02, 0x6a, 0x8d, 0x27, 0xa5, 0x03, 0x9e, 0xed, 0xfb, 0x38,
+	0x12, 0xd5, 0xd7, 0x01, 0x9c, 0xc0, 0x94, 0x85, 0xa2, 0x9e, 0x87, 0x9c, 0x13, 0x98, 0xa2, 0x36,
+	0xd4, 0xb7, 0x61, 0xcb, 0x09, 0xcc, 0x78, 0x3d, 0x90, 0xc2, 0x78, 0xee, 0xd7, 0xef, 0xc3, 0x81,
+	0xc3, 0x12, 0x7b, 0x71, 0x9e, 0xd7, 0x37, 0xa1, 0xe0, 0x04, 0x66, 0x94, 0xca, 0xb2, 0xb0, 0x86,
+	0xa9, 0x5b, 0xdf, 0x87, 0x92, 0x13, 0x98, 0x0b, 0x73, 0xb5, 0x7e, 0x0f, 0xf6, 0x43, 0xdd, 0x5c,
+	0x46, 0xd6, 0x1f, 0xc1, 0x83, 0x39, 0x6d, 0x2c, 0xeb, 0xea, 0x08, 0x8a, 0x49, 0x44, 0xbd, 0x04,
+	0x7b, 0x73, 0xf3, 0x09, 0x4f, 0x76, 0x00, 0x39, 0x81, 0x99, 0x48, 0x15, 0xe9, 0x6f, 0x98, 0x16,
+	0x12, 0x95, 0xc8, 0x83, 0xfa, 0x1d, 0xd8, 0x8d, 0x49, 0x55, 0xcc, 0xcb, 0x35, 0x96, 0x71, 0x2a,
+	0x47, 0x32, 0xa0, 0xeb, 0x0f, 0xe0, 0x5e, 0xa4, 0x9b, 0x8f, 0xe1, 0x7a, 0x01, 0xf2, 0x42, 0xcf,
+	0x23, 0x4d, 0x2e, 0x65, 0x14, 0x99, 0x52, 0x4f, 0xe3, 0xfa, 0x28, 0xf6, 0xea, 0x5b, 0xb0, 0xc9,
+	0x96, 0x5a, 0x8b, 0xb5, 0x7a, 0x11, 0x36, 0x9c, 0xc0, 0xd4, 0x22, 0x4b, 0xb1, 0x86, 0x81, 0x24,
+	0x1f, 0x38, 0x8c, 0x12, 0xe3, 0xef, 0x56, 0xe1, 0xe0, 0x96, 0x63, 0x18, 0x3d, 0x84, 0x3c, 0xeb,
+	0xc0, 0x4d, 0x12, 0x35, 0xe5, 0x99, 0x5b, 0x9a, 0xf2, 0x4c, 0xd8, 0x94, 0xef, 0x41, 0xe6, 0x8a,
+	0x71, 0x89, 0x3e, 0x25, 0x83, 0xe5, 0x08, 0x7d, 0xa5, 0xb5, 0xe4, 0xa6, 0x44, 0xf0, 0x13, 0x06,
+	0x6f, 0x86, 0xf2, 0xd3, 0x10, 0x1a, 0x76, 0xde, 0x0a, 0xba, 0x2a, 0xa0, 0xa1, 0x5c, 0x42, 0x9f,
+	0x01, 0x0a, 0x57, 0x96, 0xd8, 0x0a, 0xcc, 0x0f, 0x16, 0x5c, 0x8c, 0x3a, 0xf2, 0x88, 0x38, 0x6c,
+	0xbc, 0x15, 0x76, 0x4d, 0x10, 0x87, 0x72, 0x09, 0x7d, 0x12, 0xf5, 0xe3, 0x0a, 0xc9, 0xcf, 0x18,
+	0xbc, 0xa1, 0xc4, 0x12, 0xf8, 0x14, 0x8a, 0x42, 0x6f, 0xbe, 0x3c, 0x34, 0xb5, 0x7e, 0x3c, 0x83,
+	0x37, 0x84, 0xfc, 0xe5, 0x61, 0xd8, 0x24, 0xdf, 0x51, 0xc8, 0x23, 0x93, 0x7a, 0x66, 0xa5, 0xfa,
+	0xad, 0xa9, 0x75, 0xe4, 0x19, 0xbc, 0x2d, 0x0d, 0x44, 0x43, 0xde, 0x55, 0x4d, 0x72, 0x49, 0x5a,
+	0x55, 0xaa, 0xc7, 0xcc, 0xac, 0x7a, 0x74, 0xa4, 0xcc, 0xf8, 0x59, 0x82, 0x77, 0x84, 0x3e, 0xd1,
+	0x92, 0x47, 0x76, 0xd5, 0xa3, 0x97, 0xcc, 0xee, 0xa8, 0x52, 0x31, 0xb5, 0xae, 0x3c, 0xb4, 0x53,
+	0x4d, 0x79, 0x57, 0x35, 0xd7, 0x77, 0xa5, 0xdd, 0x51, 0xa5, 0xca, 0xdd, 0x7c, 0x51, 0xfd, 0xc6,
+	0xd4, 0xfa, 0xf2, 0x0c, 0xde, 0x15, 0x80, 0xb0, 0x2d, 0x97, 0x96, 0xdf, 0xc1, 0xbe, 0xf2, 0xf4,
+	0x45, 0xf5, 0x90, 0x9b, 0x1e, 0x55, 0x8e, 0x4d, 0xad, 0x33, 0xcf, 0xe0, 0x3d, 0xe9, 0x6b, 0xd8,
+	0x98, 0x0b, 0x5b, 0xe3, 0x7f, 0xd2, 0xf0, 0xf8, 0x63, 0x8d, 0xa1, 0xec, 0x82, 0xea, 0x90, 0x9d,
+	0x4e, 0x02, 0xea, 0x13, 0x6b, 0x2c, 0x5b, 0x76, 0xfd, 0xca, 0xea, 0x36, 0x86, 0xd0, 0x0e, 0x9d,
+	0x02, 0xd8, 0xde, 0xcf, 0xae, 0x64, 0x49, 0x7f, 0x16, 0x8b, 0x66, 0x89, 0xfe, 0x36, 0x05, 0x8f,
+	0x79, 0x9a, 0x13, 0x09, 0x16, 0xb1, 0x62, 0x12, 0x09, 0x37, 0x27, 0x63, 0xf3, 0xca, 0xf3, 0xc7,
+	0x16, 0x95, 0x57, 0xa6, 0xc7, 0x89, 0x37, 0xf2, 0x8f, 0x3f, 0x6f, 0xf9, 0x94, 0xdb, 0xe3, 0x2f,
+	0xbc, 0x9b, 0xb1, 0x02, 0x62, 0xbc, 0x80, 0x8c, 0xf8, 0x8b, 0x5f, 0x6e, 0xb6, 0xda, 0xb8, 0xff,
+	0x93, 0xd9, 0xff, 0xa1, 0x6b, 0xd6, 0xdb, 0x7d, 0x71, 0x9d, 0xda, 0x6b, 0xff, 0xd8, 0xff, 0xc9,
+	0x3c, 0xed, 0x0e, 0x30, 0x97, 0xa5, 0x0c, 0x0a, 0x6b, 0xb2, 0x69, 0xd5, 0xda, 0xd1, 0x94, 0xd6,
+	0x8e, 0xb2, 0x74, 0x0e, 0xa8, 0x45, 0xa7, 0x81, 0xec, 0x52, 0xe5, 0x88, 0xd5, 0x87, 0x2b, 0xcb,
+	0x19, 0x99, 0x3e, 0xb1, 0x02, 0xcf, 0xe5, 0x4f, 0x97, 0xc3, 0xc0, 0x44, 0x98, 0x4b, 0xd0, 0x5d,
+	0x7e, 0x16, 0xf3, 0x3b, 0x18, 0x9e, 0xe7, 0x29, 0x76, 0x12, 0xf3, 0xa9, 0x0c, 0x22, 0x5e, 0x27,
+	0xb4, 0x86, 0x59, 0x6e, 0xed, 0x47, 0x3a, 0xe6, 0xaf, 0x35, 0xca, 0xf4, 0xa3, 0xe5, 0xa7, 0xf9,
+	0x2a, 0xd2, 0x96, 0x53, 0x91, 0x85, 0xd3, 0xfc, 0x83, 0xb8, 0x0a, 0x4d, 0x4e, 0xf2, 0x99, 0xed,
+	0xbd, 0xb6, 0x02, 0xcb, 0xb7, 0xad, 0xc0, 0xca, 0xad, 0x2b, 0xb0, 0x1a, 0x5f, 0x81, 0x3f, 0x15,
+	0x57, 0x9d, 0xee, 0x94, 0x05, 0x40, 0x7f, 0x86, 0x67, 0x3d, 0x6a, 0xd1, 0xf0, 0xad, 0xea, 0xf3,
+	0xde, 0x48, 0xff, 0x6b, 0x19, 0x0e, 0x16, 0x92, 0xc9, 0xe7, 0xfd, 0x0a, 0xb6, 0x2e, 0xad, 0x80,
+	0xb0, 0x23, 0xc4, 0xf2, 0x55, 0x2d, 0x93, 0xef, 0xa5, 0x4c, 0xd1, 0x9f, 0xd5, 0xfc, 0xb0, 0x3e,
+	0x0a, 0xa8, 0x3f, 0x33, 0xad, 0x77, 0x0a, 0x9a, 0x8e, 0xa0, 0x78, 0x56, 0x7b, 0x27, 0xa1, 0x65,
+	0xd8, 0x51, 0xac, 0xae, 0xa7, 0x11, 0x2f, 0xcb, 0x5b, 0x16, 0x4e, 0xdc, 0xf1, 0x42, 0x6a, 0x85,
+	0xf7, 0x05, 0xfe, 0x9d, 0x7e, 0x04, 0x48, 0x3c, 0x66, 0xf8, 0x77, 0x61, 0xfd, 0x2d, 0x92, 0x19,
+	0x8d, 0x3b, 0x2d, 0x5e, 0x52, 0x0b, 0x64, 0x46, 0x35, 0x9f, 0x25, 0x30, 0xe6, 0x72, 0x26, 0x04,
+	0x6a, 0x1e, 0x3f, 0x83, 0x6d, 0xc9, 0x18, 0x73, 0x58, 0x5c, 0xc8, 0x6c, 0x72, 0x52, 0xcd, 0x5f,
+	0x89, 0x4e, 0xba, 0x9b, 0x0d, 0xd1, 0x31, 0x6f, 0x8f, 0xe0, 0x8e, 0x3c, 0xfe, 0xcd, 0xa1, 0x78,
+	0x6b, 0x33, 0x7d, 0x42, 0x7d, 0x87, 0xa8, 0xbb, 0x99, 0x1d, 0xd1, 0xdd, 0xca, 0x57, 0x3a, 0x2c,
+	0x74, 0xe8, 0x5b, 0x28, 0x25, 0xcd, 0xd8, 0x09, 0xed, 0x4d, 0xc3, 0x4b, 0x9a, 0xdd, 0x98, 0x5d,
+	0x5f, 0x2a, 0x8d, 0xd7, 0x70, 0x3f, 0xda, 0xf2, 0xda, 0x90, 0x35, 0x6e, 0xfc, 0xb3, 0xe0, 0x2f,
+	0x0c, 0xa1, 0xbf, 0x86, 0x1c, 0x37, 0x6f, 0x58, 0xd4, 0x62, 0x61, 0x3b, 0x1c, 0x59, 0x41, 0xa0,
+	0x12, 0xa4, 0x80, 0xd7, 0xf8, 0xb8, 0x6d, 0xb3, 0x90, 0x77, 0x5c, 0xf1, 0x01, 0x4c, 0xa5, 0x49,
+	0x01, 0x83, 0x12, 0xb5, 0x6d, 0x84, 0x60, 0xc5, 0xb5, 0xc6, 0x44, 0x66, 0x0a, 0xff, 0x9b, 0xbd,
+	0xc9, 0xdb, 0x24, 0x18, 0xfa, 0xce, 0x84, 0xbf, 0x22, 0x8a, 0x3c, 0xd1, 0x45, 0xc6, 0x9f, 0xc3,
+	0x83, 0x9b, 0x9e, 0x46, 0xc6, 0xf0, 0x6f, 0xa0, 0x60, 0x71, 0xb9, 0xc9, 0x3f, 0x77, 0xb2, 0xf8,
+	0x65, 0xe9, 0xbf, 0xa3, 0xa5, 0x7f, 0xf8, 0x00, 0x78, 0xdd, 0xd2, 0x28, 0x8c, 0xff, 0xcc, 0xc0,
+	0xe6, 0x19, 0xa1, 0xfc, 0x3b, 0xa4, 0x5a, 0x9d, 0xdf, 0x26, 0x3e, 0xec, 0xe5, 0xab, 0xf7, 0xe3,
+	0x75, 0x39, 0xf1, 0x09, 0xb1, 0xb5, 0x14, 0x7d, 0xf9, 0x43, 0xbf, 0x85, 0xb5, 0xa9, 0xf8, 0xcc,
+	0x25, 0x0f, 0x8e, 0x87, 0x37, 0x7f, 0x06, 0x53, 0xd6, 0xca, 0x02, 0xd5, 0x20, 0xef, 0x89, 0x0f,
+	0x1c, 0x9c, 0x60, 0x79, 0xd1, 0xe4, 0x89, 0x2f, 0x20, 0xad, 0x25, 0xac, 0xdb, 0xa0, 0x36, 0x6c,
+	0x78, 0xee, 0x54, 0xbb, 0x0b, 0xe7, 0x4b, 0xba, 0xc8, 0x8d, 0xf8, 0x95, 0x79, 0x6b, 0x09, 0x27,
+	0x0c, 0x11, 0x86, 0x02, 0xa1, 0x6f, 0xa3, 0x8b, 0x59, 0x9e, 0x61, 0xf9, 0xea, 0xaf, 0x3f, 0xfd,
+	0xda, 0xb8, 0xb5, 0x84, 0xe3, 0x14, 0xe8, 0x4f, 0xf8, 0x5d, 0x95, 0x54, 0xf3, 0x4c, 0xcc, 0x57,
+	0x0f, 0xe6, 0x08, 0xa3, 0xcb, 0xb3, 0xd6, 0x12, 0xd6, 0x0c, 0x50, 0x1d, 0xc0, 0xe3, 0x9e, 0xf3,
+	0x27, 0x5b, 0xe3, 0xe6, 0x8f, 0xe6, 0xcc, 0x13, 0xf7, 0x50, 0x8c, 0x23, 0xb2, 0x42, 0xe7, 0xb0,
+	0xc6, 0x4a, 0x37, 0x23, 0xc8, 0x72, 0x82, 0x17, 0x9f, 0x71, 0xea, 0x86, 0x5b, 0x26, 0x29, 0xd0,
+	0x31, 0xa8, 0xb2, 0xcd, 0x73, 0x39, 0x5f, 0xbd, 0x17, 0x67, 0x8b, 0xdf, 0xfa, 0x30, 0x4b, 0x09,
+	0x47, 0xaf, 0x60, 0xdd, 0x13, 0x41, 0xcd, 0x2b, 0x32, 0x4f, 0xe9, 0x7c, 0xf5, 0xcb, 0xb9, 0xa7,
+	0x59, 0x74, 0x08, 0xb4, 0x96, 0x70, 0xcc, 0x18, 0xd5, 0x00, 0xbc, 0xf0, 0xc4, 0xe4, 0x9d, 0xdf,
+	0xfc, 0x96, 0x8f, 0xe6, 0x9d, 0xd1, 0x8c, 0x50, 0x1f, 0x36, 0x3d, 0x77, 0xaa, 0x27, 0x18, 0xef,
+	0x04, 0xf3, 0xd5, 0xa7, 0x0b, 0x5d, 0x5a, 0x50, 0x57, 0x5a, 0x4b, 0x38, 0x49, 0x51, 0xcf, 0xc1,
+	0x9a, 0x2f, 0xb4, 0xc6, 0x1f, 0x80, 0xdf, 0xaf, 0xca, 0x5c, 0x93, 0xb9, 0xfb, 0x5d, 0x78, 0x7e,
+	0x8a, 0x8f, 0x12, 0x46, 0x7c, 0xb2, 0x18, 0xb8, 0xdc, 0xe3, 0xc8, 0xf0, 0x8c, 0x6d, 0x42, 0x8e,
+	0xf8, 0xbe, 0x38, 0x4f, 0xe5, 0xf7, 0xc9, 0x27, 0xb7, 0x99, 0xf3, 0x76, 0x5f, 0xc0, 0x71, 0x64,
+	0x89, 0x7e, 0xa7, 0xe5, 0xbb, 0x48, 0xb9, 0x07, 0x37, 0xe5, 0xbb, 0x20, 0x8a, 0x25, 0xfc, 0xef,
+	0xa2, 0x84, 0x5f, 0xb9, 0x21, 0x1e, 0x13, 0xdf, 0xbd, 0xf5, 0x8c, 0x7f, 0x05, 0xeb, 0x13, 0x91,
+	0xcd, 0xd4, 0x25, 0x7e, 0x20, 0x53, 0xec, 0xcb, 0x5b, 0x53, 0x5e, 0xe3, 0x89, 0x19, 0xa3, 0xef,
+	0xe7, 0x72, 0x5f, 0x24, 0xd8, 0x93, 0x8f, 0xe4, 0xbe, 0x46, 0x98, 0xac, 0x01, 0x97, 0xb0, 0x15,
+	0x4b, 0x60, 0x2d, 0xef, 0xaa, 0x9f, 0x5e, 0x07, 0xb4, 0x09, 0xe6, 0xe9, 0x50, 0x33, 0x56, 0x13,
+	0x44, 0x4e, 0xfe, 0xea, 0x96, 0x9a, 0xa0, 0xb1, 0xe9, 0xb5, 0xe1, 0x15, 0x7f, 0xfa, 0x0b, 0xcf,
+	0x55, 0xeb, 0x24, 0x13, 0xf2, 0x8b, 0x5b, 0xea, 0x43, 0xec, 0xb9, 0x35, 0x53, 0x34, 0xe0, 0x17,
+	0xcc, 0x21, 0x93, 0xc8, 0xcd, 0xca, 0x67, 0xb7, 0xe7, 0xbc, 0x3a, 0x47, 0x3c, 0xe8, 0x37, 0x51,
+	0xb5, 0xc8, 0x2f, 0x2a, 0xee, 0x89, 0x6e, 0x54, 0x2f, 0x17, 0xe7, 0x89, 0x72, 0xb1, 0x3e, 0xf7,
+	0x5a, 0x72, 0x4b, 0x9b, 0x37, 0x57, 0x2f, 0xea, 0xb1, 0x7a, 0x51, 0x58, 0x18, 0xb8, 0xa3, 0x05,
+	0xee, 0xe8, 0x05, 0x63, 0x30, 0x5f, 0x30, 0x36, 0x38, 0xd1, 0x57, 0x9f, 0x50, 0x30, 0x42, 0xc6,
+	0x24, 0x87, 0x51, 0x81, 0x8c, 0xc8, 0x73, 0xb4, 0x03, 0xc5, 0x5e, 0xbf, 0xd6, 0x1f, 0xf4, 0x62,
+	0x3f, 0x6f, 0xc8, 0x40, 0xba, 0xfb, 0xaa, 0x98, 0xe2, 0x3f, 0x58, 0xc2, 0xb8, 0x8b, 0x8b, 0x69,
+	0xe3, 0x1f, 0x53, 0x90, 0xd7, 0x92, 0x9b, 0x19, 0xe2, 0x66, 0xad, 0xd7, 0xed, 0xc4, 0x0c, 0x37,
+	0x21, 0x3f, 0xe8, 0xf4, 0x06, 0x17, 0x17, 0x5d, 0xdc, 0xe7, 0xbf, 0x8d, 0xd8, 0x85, 0xad, 0x76,
+	0xe7, 0x4d, 0xed, 0xbc, 0xdd, 0x30, 0x1b, 0xcd, 0x37, 0xed, 0x93, 0xa6, 0xd9, 0x6e, 0x14, 0xd3,
+	0xba, 0x98, 0x41, 0xcd, 0xfe, 0x4f, 0x17, 0xcd, 0xe2, 0x32, 0xca, 0xc3, 0x5a, 0xbf, 0xfd, 0xba,
+	0xd9, 0x1d, 0xf4, 0x8b, 0x2b, 0x6c, 0x06, 0x85, 0xc1, 0xcd, 0xef, 0x05, 0x64, 0x95, 0xbd, 0x44,
+	0xb5, 0x3b, 0xfd, 0x26, 0xee, 0xd4, 0xce, 0x4d, 0xe1, 0x5b, 0x46, 0xc8, 0xf4, 0x49, 0x8a, 0x6b,
+	0x75, 0x80, 0xac, 0x2f, 0x57, 0xc0, 0x78, 0x03, 0x9b, 0xbd, 0x44, 0x03, 0x92, 0xfc, 0x89, 0x57,
+	0xea, 0x93, 0x7f, 0xe2, 0xa5, 0x55, 0xdb, 0xff, 0x4d, 0x41, 0xb1, 0xf7, 0x39, 0xd5, 0xb6, 0xf7,
+	0xff, 0xab, 0xb6, 0xbd, 0x4f, 0xab, 0xb6, 0xbf, 0x64, 0x7b, 0x0f, 0x7f, 0xc9, 0xee, 0x1a, 0x0e,
+	0xec, 0xf6, 0x1c, 0xf7, 0x7a, 0x44, 0x92, 0xfd, 0xdd, 0x3e, 0x64, 0xa9, 0xe5, 0x5f, 0x13, 0x1a,
+	0x7e, 0x39, 0x0a, 0xc7, 0xe8, 0x30, 0x5c, 0x40, 0xd9, 0xbe, 0xed, 0x2f, 0x3c, 0x50, 0x38, 0x02,
+	0x87, 0x6b, 0xfd, 0x3d, 0xec, 0x25, 0xa7, 0x92, 0x0b, 0xfe, 0x6d, 0xb4, 0xd3, 0x72, 0x1b, 0x0f,
+	0x6e, 0x39, 0xa1, 0x70, 0x14, 0x16, 0xa1, 0xf7, 0xbd, 0x3f, 0x96, 0xf7, 0xbd, 0x8f, 0x7a, 0xdf,
+	0xfb, 0x3c, 0xef, 0x7b, 0x37, 0x7a, 0x5f, 0xfd, 0xe7, 0x14, 0xe4, 0x9a, 0x0a, 0x88, 0x30, 0xe4,
+	0xcf, 0x08, 0x6d, 0xce, 0x04, 0x1c, 0xe9, 0x75, 0x66, 0xe1, 0x0e, 0xed, 0x7f, 0x71, 0x0b, 0x42,
+	0xba, 0x86, 0x21, 0xdf, 0xbb, 0x95, 0xb3, 0xf7, 0x51, 0xce, 0xa4, 0xff, 0x75, 0x0c, 0xf7, 0x3d,
+	0xff, 0xba, 0xec, 0x4d, 0x88, 0x3b, 0xf4, 0x7c, 0xbb, 0x2c, 0x7e, 0xc2, 0x19, 0xd9, 0xfd, 0x59,
+	0xe5, 0xda, 0xa1, 0x6f, 0xa7, 0x97, 0xe5, 0xa1, 0x37, 0x7e, 0xae, 0x50, 0xcf, 0x05, 0xea, 0x6b,
+	0xf9, 0x43, 0xcf, 0xf7, 0x47, 0xcf, 0xaf, 0xbd, 0xe8, 0x97, 0xa1, 0x97, 0x19, 0x2e, 0xff, 0xe6,
+	0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x1c, 0x44, 0x89, 0x74, 0x3b, 0x2a, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/voip_system_profile/voip_system_profile.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/voip_system_profile/voip_system_profile.pb.go
new file mode 100644
index 0000000..b0aeb8e
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/voip_system_profile/voip_system_profile.pb.go
@@ -0,0 +1,1694 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: voltha_protos/voip_system_profile.proto
+
+package voip_system_profile
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	_ "google.golang.org/genproto/googleapis/api/annotations"
+	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 VoipSystemProfileRequest struct {
+	Key                  string             `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+	VoipSystemProfile    *VoipSystemProfile `protobuf:"bytes,2,opt,name=voipSystemProfile,proto3" json:"voipSystemProfile,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
+	XXX_unrecognized     []byte             `json:"-"`
+	XXX_sizecache        int32              `json:"-"`
+}
+
+func (m *VoipSystemProfileRequest) Reset()         { *m = VoipSystemProfileRequest{} }
+func (m *VoipSystemProfileRequest) String() string { return proto.CompactTextString(m) }
+func (*VoipSystemProfileRequest) ProtoMessage()    {}
+func (*VoipSystemProfileRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{0}
+}
+
+func (m *VoipSystemProfileRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_VoipSystemProfileRequest.Unmarshal(m, b)
+}
+func (m *VoipSystemProfileRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_VoipSystemProfileRequest.Marshal(b, m, deterministic)
+}
+func (m *VoipSystemProfileRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_VoipSystemProfileRequest.Merge(m, src)
+}
+func (m *VoipSystemProfileRequest) XXX_Size() int {
+	return xxx_messageInfo_VoipSystemProfileRequest.Size(m)
+}
+func (m *VoipSystemProfileRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_VoipSystemProfileRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_VoipSystemProfileRequest proto.InternalMessageInfo
+
+func (m *VoipSystemProfileRequest) GetKey() string {
+	if m != nil {
+		return m.Key
+	}
+	return ""
+}
+
+func (m *VoipSystemProfileRequest) GetVoipSystemProfile() *VoipSystemProfile {
+	if m != nil {
+		return m.VoipSystemProfile
+	}
+	return nil
+}
+
+// A system wide profile for voip service that can be stored into voltha KV anytime.
+// Designed based on G988-2017 (also designed flexible to be able to be modified later on)
+type VoipSystemProfile struct {
+	SipConfig            *SipConfig  `protobuf:"bytes,1,opt,name=sipConfig,proto3" json:"sipConfig,omitempty"`
+	VoipConfig           *VoipConfig `protobuf:"bytes,2,opt,name=voipConfig,proto3" json:"voipConfig,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
+	XXX_unrecognized     []byte      `json:"-"`
+	XXX_sizecache        int32       `json:"-"`
+}
+
+func (m *VoipSystemProfile) Reset()         { *m = VoipSystemProfile{} }
+func (m *VoipSystemProfile) String() string { return proto.CompactTextString(m) }
+func (*VoipSystemProfile) ProtoMessage()    {}
+func (*VoipSystemProfile) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{1}
+}
+
+func (m *VoipSystemProfile) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_VoipSystemProfile.Unmarshal(m, b)
+}
+func (m *VoipSystemProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_VoipSystemProfile.Marshal(b, m, deterministic)
+}
+func (m *VoipSystemProfile) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_VoipSystemProfile.Merge(m, src)
+}
+func (m *VoipSystemProfile) XXX_Size() int {
+	return xxx_messageInfo_VoipSystemProfile.Size(m)
+}
+func (m *VoipSystemProfile) XXX_DiscardUnknown() {
+	xxx_messageInfo_VoipSystemProfile.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_VoipSystemProfile proto.InternalMessageInfo
+
+func (m *VoipSystemProfile) GetSipConfig() *SipConfig {
+	if m != nil {
+		return m.SipConfig
+	}
+	return nil
+}
+
+func (m *VoipSystemProfile) GetVoipConfig() *VoipConfig {
+	if m != nil {
+		return m.VoipConfig
+	}
+	return nil
+}
+
+// Common voip fields are grouped here
+type VoipConfig struct {
+	IpHostConfig         *IpHostConfig        `protobuf:"bytes,1,opt,name=ipHostConfig,proto3" json:"ipHostConfig,omitempty"`
+	TcpUdpConfig         *TcpUdpConfig        `protobuf:"bytes,2,opt,name=tcpUdpConfig,proto3" json:"tcpUdpConfig,omitempty"`
+	VoipVoiceCtp         *VoipVoiceCtp        `protobuf:"bytes,3,opt,name=voipVoiceCtp,proto3" json:"voipVoiceCtp,omitempty"`
+	VoipMediaProfile     *VoipMediaProfile    `protobuf:"bytes,4,opt,name=voipMediaProfile,proto3" json:"voipMediaProfile,omitempty"`
+	VoiceServiceProfile  *VoiceServiceProfile `protobuf:"bytes,5,opt,name=voiceServiceProfile,proto3" json:"voiceServiceProfile,omitempty"`
+	RtpProfile           *RtpProfile          `protobuf:"bytes,6,opt,name=rtpProfile,proto3" json:"rtpProfile,omitempty"`
+	PptpPotsUni          *PptpPotsUni         `protobuf:"bytes,7,opt,name=pptpPotsUni,proto3" json:"pptpPotsUni,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
+}
+
+func (m *VoipConfig) Reset()         { *m = VoipConfig{} }
+func (m *VoipConfig) String() string { return proto.CompactTextString(m) }
+func (*VoipConfig) ProtoMessage()    {}
+func (*VoipConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{2}
+}
+
+func (m *VoipConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_VoipConfig.Unmarshal(m, b)
+}
+func (m *VoipConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_VoipConfig.Marshal(b, m, deterministic)
+}
+func (m *VoipConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_VoipConfig.Merge(m, src)
+}
+func (m *VoipConfig) XXX_Size() int {
+	return xxx_messageInfo_VoipConfig.Size(m)
+}
+func (m *VoipConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_VoipConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_VoipConfig proto.InternalMessageInfo
+
+func (m *VoipConfig) GetIpHostConfig() *IpHostConfig {
+	if m != nil {
+		return m.IpHostConfig
+	}
+	return nil
+}
+
+func (m *VoipConfig) GetTcpUdpConfig() *TcpUdpConfig {
+	if m != nil {
+		return m.TcpUdpConfig
+	}
+	return nil
+}
+
+func (m *VoipConfig) GetVoipVoiceCtp() *VoipVoiceCtp {
+	if m != nil {
+		return m.VoipVoiceCtp
+	}
+	return nil
+}
+
+func (m *VoipConfig) GetVoipMediaProfile() *VoipMediaProfile {
+	if m != nil {
+		return m.VoipMediaProfile
+	}
+	return nil
+}
+
+func (m *VoipConfig) GetVoiceServiceProfile() *VoiceServiceProfile {
+	if m != nil {
+		return m.VoiceServiceProfile
+	}
+	return nil
+}
+
+func (m *VoipConfig) GetRtpProfile() *RtpProfile {
+	if m != nil {
+		return m.RtpProfile
+	}
+	return nil
+}
+
+func (m *VoipConfig) GetPptpPotsUni() *PptpPotsUni {
+	if m != nil {
+		return m.PptpPotsUni
+	}
+	return nil
+}
+
+type IpHostConfig struct {
+	IpOptions            uint32   `protobuf:"varint,1,opt,name=ipOptions,proto3" json:"ipOptions,omitempty"`
+	OnuIdentifier        string   `protobuf:"bytes,2,opt,name=onuIdentifier,proto3" json:"onuIdentifier,omitempty"`
+	IpAddress            string   `protobuf:"bytes,3,opt,name=ipAddress,proto3" json:"ipAddress,omitempty"`
+	Mask                 string   `protobuf:"bytes,4,opt,name=mask,proto3" json:"mask,omitempty"`
+	Gateway              string   `protobuf:"bytes,5,opt,name=gateway,proto3" json:"gateway,omitempty"`
+	PrimaryDns           string   `protobuf:"bytes,6,opt,name=primaryDns,proto3" json:"primaryDns,omitempty"`
+	SecondaryDns         string   `protobuf:"bytes,7,opt,name=secondaryDns,proto3" json:"secondaryDns,omitempty"`
+	RelayAgentOptions    string   `protobuf:"bytes,8,opt,name=relayAgentOptions,proto3" json:"relayAgentOptions,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *IpHostConfig) Reset()         { *m = IpHostConfig{} }
+func (m *IpHostConfig) String() string { return proto.CompactTextString(m) }
+func (*IpHostConfig) ProtoMessage()    {}
+func (*IpHostConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{3}
+}
+
+func (m *IpHostConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_IpHostConfig.Unmarshal(m, b)
+}
+func (m *IpHostConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_IpHostConfig.Marshal(b, m, deterministic)
+}
+func (m *IpHostConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_IpHostConfig.Merge(m, src)
+}
+func (m *IpHostConfig) XXX_Size() int {
+	return xxx_messageInfo_IpHostConfig.Size(m)
+}
+func (m *IpHostConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_IpHostConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_IpHostConfig proto.InternalMessageInfo
+
+func (m *IpHostConfig) GetIpOptions() uint32 {
+	if m != nil {
+		return m.IpOptions
+	}
+	return 0
+}
+
+func (m *IpHostConfig) GetOnuIdentifier() string {
+	if m != nil {
+		return m.OnuIdentifier
+	}
+	return ""
+}
+
+func (m *IpHostConfig) GetIpAddress() string {
+	if m != nil {
+		return m.IpAddress
+	}
+	return ""
+}
+
+func (m *IpHostConfig) GetMask() string {
+	if m != nil {
+		return m.Mask
+	}
+	return ""
+}
+
+func (m *IpHostConfig) GetGateway() string {
+	if m != nil {
+		return m.Gateway
+	}
+	return ""
+}
+
+func (m *IpHostConfig) GetPrimaryDns() string {
+	if m != nil {
+		return m.PrimaryDns
+	}
+	return ""
+}
+
+func (m *IpHostConfig) GetSecondaryDns() string {
+	if m != nil {
+		return m.SecondaryDns
+	}
+	return ""
+}
+
+func (m *IpHostConfig) GetRelayAgentOptions() string {
+	if m != nil {
+		return m.RelayAgentOptions
+	}
+	return ""
+}
+
+type TcpUdpConfig struct {
+	Protocol             uint32   `protobuf:"varint,1,opt,name=protocol,proto3" json:"protocol,omitempty"`
+	TosField             string   `protobuf:"bytes,2,opt,name=tosField,proto3" json:"tosField,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *TcpUdpConfig) Reset()         { *m = TcpUdpConfig{} }
+func (m *TcpUdpConfig) String() string { return proto.CompactTextString(m) }
+func (*TcpUdpConfig) ProtoMessage()    {}
+func (*TcpUdpConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{4}
+}
+
+func (m *TcpUdpConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TcpUdpConfig.Unmarshal(m, b)
+}
+func (m *TcpUdpConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TcpUdpConfig.Marshal(b, m, deterministic)
+}
+func (m *TcpUdpConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TcpUdpConfig.Merge(m, src)
+}
+func (m *TcpUdpConfig) XXX_Size() int {
+	return xxx_messageInfo_TcpUdpConfig.Size(m)
+}
+func (m *TcpUdpConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_TcpUdpConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TcpUdpConfig proto.InternalMessageInfo
+
+func (m *TcpUdpConfig) GetProtocol() uint32 {
+	if m != nil {
+		return m.Protocol
+	}
+	return 0
+}
+
+func (m *TcpUdpConfig) GetTosField() string {
+	if m != nil {
+		return m.TosField
+	}
+	return ""
+}
+
+type VoipVoiceCtp struct {
+	SignallingCode       uint32   `protobuf:"varint,1,opt,name=signallingCode,proto3" json:"signallingCode,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *VoipVoiceCtp) Reset()         { *m = VoipVoiceCtp{} }
+func (m *VoipVoiceCtp) String() string { return proto.CompactTextString(m) }
+func (*VoipVoiceCtp) ProtoMessage()    {}
+func (*VoipVoiceCtp) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{5}
+}
+
+func (m *VoipVoiceCtp) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_VoipVoiceCtp.Unmarshal(m, b)
+}
+func (m *VoipVoiceCtp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_VoipVoiceCtp.Marshal(b, m, deterministic)
+}
+func (m *VoipVoiceCtp) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_VoipVoiceCtp.Merge(m, src)
+}
+func (m *VoipVoiceCtp) XXX_Size() int {
+	return xxx_messageInfo_VoipVoiceCtp.Size(m)
+}
+func (m *VoipVoiceCtp) XXX_DiscardUnknown() {
+	xxx_messageInfo_VoipVoiceCtp.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_VoipVoiceCtp proto.InternalMessageInfo
+
+func (m *VoipVoiceCtp) GetSignallingCode() uint32 {
+	if m != nil {
+		return m.SignallingCode
+	}
+	return 0
+}
+
+type VoipMediaProfile struct {
+	FaxMode                uint32   `protobuf:"varint,1,opt,name=faxMode,proto3" json:"faxMode,omitempty"`
+	CodecSelection1        uint32   `protobuf:"varint,2,opt,name=codecSelection1,proto3" json:"codecSelection1,omitempty"`
+	PacketPeriodSelection1 uint32   `protobuf:"varint,3,opt,name=packetPeriodSelection1,proto3" json:"packetPeriodSelection1,omitempty"`
+	SilenceSuppression1    uint32   `protobuf:"varint,4,opt,name=silenceSuppression1,proto3" json:"silenceSuppression1,omitempty"`
+	CodecSelection2        uint32   `protobuf:"varint,5,opt,name=codecSelection2,proto3" json:"codecSelection2,omitempty"`
+	PacketPeriodSelection2 uint32   `protobuf:"varint,6,opt,name=packetPeriodSelection2,proto3" json:"packetPeriodSelection2,omitempty"`
+	SilenceSuppression2    uint32   `protobuf:"varint,7,opt,name=silenceSuppression2,proto3" json:"silenceSuppression2,omitempty"`
+	CodecSelection3        uint32   `protobuf:"varint,8,opt,name=codecSelection3,proto3" json:"codecSelection3,omitempty"`
+	PacketPeriodSelection3 uint32   `protobuf:"varint,9,opt,name=packetPeriodSelection3,proto3" json:"packetPeriodSelection3,omitempty"`
+	SilenceSuppression3    uint32   `protobuf:"varint,10,opt,name=silenceSuppression3,proto3" json:"silenceSuppression3,omitempty"`
+	CodecSelection4        uint32   `protobuf:"varint,11,opt,name=codecSelection4,proto3" json:"codecSelection4,omitempty"`
+	PacketPeriodSelection4 uint32   `protobuf:"varint,12,opt,name=packetPeriodSelection4,proto3" json:"packetPeriodSelection4,omitempty"`
+	SilenceSuppression4    uint32   `protobuf:"varint,13,opt,name=silenceSuppression4,proto3" json:"silenceSuppression4,omitempty"`
+	OobDtmf                uint32   `protobuf:"varint,14,opt,name=oobDtmf,proto3" json:"oobDtmf,omitempty"`
+	XXX_NoUnkeyedLiteral   struct{} `json:"-"`
+	XXX_unrecognized       []byte   `json:"-"`
+	XXX_sizecache          int32    `json:"-"`
+}
+
+func (m *VoipMediaProfile) Reset()         { *m = VoipMediaProfile{} }
+func (m *VoipMediaProfile) String() string { return proto.CompactTextString(m) }
+func (*VoipMediaProfile) ProtoMessage()    {}
+func (*VoipMediaProfile) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{6}
+}
+
+func (m *VoipMediaProfile) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_VoipMediaProfile.Unmarshal(m, b)
+}
+func (m *VoipMediaProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_VoipMediaProfile.Marshal(b, m, deterministic)
+}
+func (m *VoipMediaProfile) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_VoipMediaProfile.Merge(m, src)
+}
+func (m *VoipMediaProfile) XXX_Size() int {
+	return xxx_messageInfo_VoipMediaProfile.Size(m)
+}
+func (m *VoipMediaProfile) XXX_DiscardUnknown() {
+	xxx_messageInfo_VoipMediaProfile.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_VoipMediaProfile proto.InternalMessageInfo
+
+func (m *VoipMediaProfile) GetFaxMode() uint32 {
+	if m != nil {
+		return m.FaxMode
+	}
+	return 0
+}
+
+func (m *VoipMediaProfile) GetCodecSelection1() uint32 {
+	if m != nil {
+		return m.CodecSelection1
+	}
+	return 0
+}
+
+func (m *VoipMediaProfile) GetPacketPeriodSelection1() uint32 {
+	if m != nil {
+		return m.PacketPeriodSelection1
+	}
+	return 0
+}
+
+func (m *VoipMediaProfile) GetSilenceSuppression1() uint32 {
+	if m != nil {
+		return m.SilenceSuppression1
+	}
+	return 0
+}
+
+func (m *VoipMediaProfile) GetCodecSelection2() uint32 {
+	if m != nil {
+		return m.CodecSelection2
+	}
+	return 0
+}
+
+func (m *VoipMediaProfile) GetPacketPeriodSelection2() uint32 {
+	if m != nil {
+		return m.PacketPeriodSelection2
+	}
+	return 0
+}
+
+func (m *VoipMediaProfile) GetSilenceSuppression2() uint32 {
+	if m != nil {
+		return m.SilenceSuppression2
+	}
+	return 0
+}
+
+func (m *VoipMediaProfile) GetCodecSelection3() uint32 {
+	if m != nil {
+		return m.CodecSelection3
+	}
+	return 0
+}
+
+func (m *VoipMediaProfile) GetPacketPeriodSelection3() uint32 {
+	if m != nil {
+		return m.PacketPeriodSelection3
+	}
+	return 0
+}
+
+func (m *VoipMediaProfile) GetSilenceSuppression3() uint32 {
+	if m != nil {
+		return m.SilenceSuppression3
+	}
+	return 0
+}
+
+func (m *VoipMediaProfile) GetCodecSelection4() uint32 {
+	if m != nil {
+		return m.CodecSelection4
+	}
+	return 0
+}
+
+func (m *VoipMediaProfile) GetPacketPeriodSelection4() uint32 {
+	if m != nil {
+		return m.PacketPeriodSelection4
+	}
+	return 0
+}
+
+func (m *VoipMediaProfile) GetSilenceSuppression4() uint32 {
+	if m != nil {
+		return m.SilenceSuppression4
+	}
+	return 0
+}
+
+func (m *VoipMediaProfile) GetOobDtmf() uint32 {
+	if m != nil {
+		return m.OobDtmf
+	}
+	return 0
+}
+
+type VoiceServiceProfile struct {
+	AnnouncementType     uint32   `protobuf:"varint,1,opt,name=announcementType,proto3" json:"announcementType,omitempty"`
+	JitterTarget         uint32   `protobuf:"varint,2,opt,name=jitterTarget,proto3" json:"jitterTarget,omitempty"`
+	JitterBufferMax      uint32   `protobuf:"varint,3,opt,name=jitterBufferMax,proto3" json:"jitterBufferMax,omitempty"`
+	EchoCancelInd        bool     `protobuf:"varint,4,opt,name=echoCancelInd,proto3" json:"echoCancelInd,omitempty"`
+	PstnProtocolVariant  uint32   `protobuf:"varint,5,opt,name=pstnProtocolVariant,proto3" json:"pstnProtocolVariant,omitempty"`
+	DtmfDigitLevels      uint32   `protobuf:"varint,6,opt,name=dtmfDigitLevels,proto3" json:"dtmfDigitLevels,omitempty"`
+	DtmfDigitDuration    uint32   `protobuf:"varint,7,opt,name=dtmfDigitDuration,proto3" json:"dtmfDigitDuration,omitempty"`
+	HookFlashMinimumTime uint32   `protobuf:"varint,8,opt,name=hookFlashMinimumTime,proto3" json:"hookFlashMinimumTime,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *VoiceServiceProfile) Reset()         { *m = VoiceServiceProfile{} }
+func (m *VoiceServiceProfile) String() string { return proto.CompactTextString(m) }
+func (*VoiceServiceProfile) ProtoMessage()    {}
+func (*VoiceServiceProfile) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{7}
+}
+
+func (m *VoiceServiceProfile) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_VoiceServiceProfile.Unmarshal(m, b)
+}
+func (m *VoiceServiceProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_VoiceServiceProfile.Marshal(b, m, deterministic)
+}
+func (m *VoiceServiceProfile) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_VoiceServiceProfile.Merge(m, src)
+}
+func (m *VoiceServiceProfile) XXX_Size() int {
+	return xxx_messageInfo_VoiceServiceProfile.Size(m)
+}
+func (m *VoiceServiceProfile) XXX_DiscardUnknown() {
+	xxx_messageInfo_VoiceServiceProfile.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_VoiceServiceProfile proto.InternalMessageInfo
+
+func (m *VoiceServiceProfile) GetAnnouncementType() uint32 {
+	if m != nil {
+		return m.AnnouncementType
+	}
+	return 0
+}
+
+func (m *VoiceServiceProfile) GetJitterTarget() uint32 {
+	if m != nil {
+		return m.JitterTarget
+	}
+	return 0
+}
+
+func (m *VoiceServiceProfile) GetJitterBufferMax() uint32 {
+	if m != nil {
+		return m.JitterBufferMax
+	}
+	return 0
+}
+
+func (m *VoiceServiceProfile) GetEchoCancelInd() bool {
+	if m != nil {
+		return m.EchoCancelInd
+	}
+	return false
+}
+
+func (m *VoiceServiceProfile) GetPstnProtocolVariant() uint32 {
+	if m != nil {
+		return m.PstnProtocolVariant
+	}
+	return 0
+}
+
+func (m *VoiceServiceProfile) GetDtmfDigitLevels() uint32 {
+	if m != nil {
+		return m.DtmfDigitLevels
+	}
+	return 0
+}
+
+func (m *VoiceServiceProfile) GetDtmfDigitDuration() uint32 {
+	if m != nil {
+		return m.DtmfDigitDuration
+	}
+	return 0
+}
+
+func (m *VoiceServiceProfile) GetHookFlashMinimumTime() uint32 {
+	if m != nil {
+		return m.HookFlashMinimumTime
+	}
+	return 0
+}
+
+type RtpProfile struct {
+	LocalPortMin         uint32   `protobuf:"varint,1,opt,name=localPortMin,proto3" json:"localPortMin,omitempty"`
+	LocalPortMax         uint32   `protobuf:"varint,2,opt,name=localPortMax,proto3" json:"localPortMax,omitempty"`
+	DscpMark             string   `protobuf:"bytes,3,opt,name=dscpMark,proto3" json:"dscpMark,omitempty"`
+	PiggyBackEvents      uint32   `protobuf:"varint,4,opt,name=piggyBackEvents,proto3" json:"piggyBackEvents,omitempty"`
+	ToneEvents           uint32   `protobuf:"varint,5,opt,name=toneEvents,proto3" json:"toneEvents,omitempty"`
+	DtmfEvents           uint32   `protobuf:"varint,6,opt,name=dtmfEvents,proto3" json:"dtmfEvents,omitempty"`
+	CasEvents            uint32   `protobuf:"varint,7,opt,name=casEvents,proto3" json:"casEvents,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *RtpProfile) Reset()         { *m = RtpProfile{} }
+func (m *RtpProfile) String() string { return proto.CompactTextString(m) }
+func (*RtpProfile) ProtoMessage()    {}
+func (*RtpProfile) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{8}
+}
+
+func (m *RtpProfile) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_RtpProfile.Unmarshal(m, b)
+}
+func (m *RtpProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_RtpProfile.Marshal(b, m, deterministic)
+}
+func (m *RtpProfile) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_RtpProfile.Merge(m, src)
+}
+func (m *RtpProfile) XXX_Size() int {
+	return xxx_messageInfo_RtpProfile.Size(m)
+}
+func (m *RtpProfile) XXX_DiscardUnknown() {
+	xxx_messageInfo_RtpProfile.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_RtpProfile proto.InternalMessageInfo
+
+func (m *RtpProfile) GetLocalPortMin() uint32 {
+	if m != nil {
+		return m.LocalPortMin
+	}
+	return 0
+}
+
+func (m *RtpProfile) GetLocalPortMax() uint32 {
+	if m != nil {
+		return m.LocalPortMax
+	}
+	return 0
+}
+
+func (m *RtpProfile) GetDscpMark() string {
+	if m != nil {
+		return m.DscpMark
+	}
+	return ""
+}
+
+func (m *RtpProfile) GetPiggyBackEvents() uint32 {
+	if m != nil {
+		return m.PiggyBackEvents
+	}
+	return 0
+}
+
+func (m *RtpProfile) GetToneEvents() uint32 {
+	if m != nil {
+		return m.ToneEvents
+	}
+	return 0
+}
+
+func (m *RtpProfile) GetDtmfEvents() uint32 {
+	if m != nil {
+		return m.DtmfEvents
+	}
+	return 0
+}
+
+func (m *RtpProfile) GetCasEvents() uint32 {
+	if m != nil {
+		return m.CasEvents
+	}
+	return 0
+}
+
+type PptpPotsUni struct {
+	Arc                  string   `protobuf:"bytes,1,opt,name=arc,proto3" json:"arc,omitempty"`
+	ArcInterval          string   `protobuf:"bytes,2,opt,name=arcInterval,proto3" json:"arcInterval,omitempty"`
+	Impedance            uint32   `protobuf:"varint,3,opt,name=impedance,proto3" json:"impedance,omitempty"`
+	TransmissionPath     uint32   `protobuf:"varint,4,opt,name=transmissionPath,proto3" json:"transmissionPath,omitempty"`
+	RxGain               int32    `protobuf:"zigzag32,5,opt,name=rxGain,proto3" json:"rxGain,omitempty"`
+	TxGain               int32    `protobuf:"zigzag32,6,opt,name=txGain,proto3" json:"txGain,omitempty"`
+	PotsHoldOverTime     uint32   `protobuf:"varint,7,opt,name=potsHoldOverTime,proto3" json:"potsHoldOverTime,omitempty"`
+	NominalFeedVoltage   uint32   `protobuf:"varint,8,opt,name=nominalFeedVoltage,proto3" json:"nominalFeedVoltage,omitempty"`
+	LossOfSoftSwitch     uint32   `protobuf:"varint,9,opt,name=lossOfSoftSwitch,proto3" json:"lossOfSoftSwitch,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *PptpPotsUni) Reset()         { *m = PptpPotsUni{} }
+func (m *PptpPotsUni) String() string { return proto.CompactTextString(m) }
+func (*PptpPotsUni) ProtoMessage()    {}
+func (*PptpPotsUni) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{9}
+}
+
+func (m *PptpPotsUni) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_PptpPotsUni.Unmarshal(m, b)
+}
+func (m *PptpPotsUni) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_PptpPotsUni.Marshal(b, m, deterministic)
+}
+func (m *PptpPotsUni) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PptpPotsUni.Merge(m, src)
+}
+func (m *PptpPotsUni) XXX_Size() int {
+	return xxx_messageInfo_PptpPotsUni.Size(m)
+}
+func (m *PptpPotsUni) XXX_DiscardUnknown() {
+	xxx_messageInfo_PptpPotsUni.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PptpPotsUni proto.InternalMessageInfo
+
+func (m *PptpPotsUni) GetArc() string {
+	if m != nil {
+		return m.Arc
+	}
+	return ""
+}
+
+func (m *PptpPotsUni) GetArcInterval() string {
+	if m != nil {
+		return m.ArcInterval
+	}
+	return ""
+}
+
+func (m *PptpPotsUni) GetImpedance() uint32 {
+	if m != nil {
+		return m.Impedance
+	}
+	return 0
+}
+
+func (m *PptpPotsUni) GetTransmissionPath() uint32 {
+	if m != nil {
+		return m.TransmissionPath
+	}
+	return 0
+}
+
+func (m *PptpPotsUni) GetRxGain() int32 {
+	if m != nil {
+		return m.RxGain
+	}
+	return 0
+}
+
+func (m *PptpPotsUni) GetTxGain() int32 {
+	if m != nil {
+		return m.TxGain
+	}
+	return 0
+}
+
+func (m *PptpPotsUni) GetPotsHoldOverTime() uint32 {
+	if m != nil {
+		return m.PotsHoldOverTime
+	}
+	return 0
+}
+
+func (m *PptpPotsUni) GetNominalFeedVoltage() uint32 {
+	if m != nil {
+		return m.NominalFeedVoltage
+	}
+	return 0
+}
+
+func (m *PptpPotsUni) GetLossOfSoftSwitch() uint32 {
+	if m != nil {
+		return m.LossOfSoftSwitch
+	}
+	return 0
+}
+
+// Sip specific fields are grouped here
+type SipConfig struct {
+	SipUserData                   *SipUserData                   `protobuf:"bytes,1,opt,name=sipUserData,proto3" json:"sipUserData,omitempty"`
+	SipAgentConfig                *SipAgentConfig                `protobuf:"bytes,2,opt,name=sipAgentConfig,proto3" json:"sipAgentConfig,omitempty"`
+	NetworkDialPlan               *NetworkDialPlan               `protobuf:"bytes,3,opt,name=networkDialPlan,proto3" json:"networkDialPlan,omitempty"`
+	VoipFeatureAccessCodes        *VoipFeatureAccessCodes        `protobuf:"bytes,4,opt,name=voipFeatureAccessCodes,proto3" json:"voipFeatureAccessCodes,omitempty"`
+	VoipApplicationServiceProfile *VoipApplicationServiceProfile `protobuf:"bytes,5,opt,name=voipApplicationServiceProfile,proto3" json:"voipApplicationServiceProfile,omitempty"`
+	XXX_NoUnkeyedLiteral          struct{}                       `json:"-"`
+	XXX_unrecognized              []byte                         `json:"-"`
+	XXX_sizecache                 int32                          `json:"-"`
+}
+
+func (m *SipConfig) Reset()         { *m = SipConfig{} }
+func (m *SipConfig) String() string { return proto.CompactTextString(m) }
+func (*SipConfig) ProtoMessage()    {}
+func (*SipConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{10}
+}
+
+func (m *SipConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SipConfig.Unmarshal(m, b)
+}
+func (m *SipConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SipConfig.Marshal(b, m, deterministic)
+}
+func (m *SipConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SipConfig.Merge(m, src)
+}
+func (m *SipConfig) XXX_Size() int {
+	return xxx_messageInfo_SipConfig.Size(m)
+}
+func (m *SipConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_SipConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SipConfig proto.InternalMessageInfo
+
+func (m *SipConfig) GetSipUserData() *SipUserData {
+	if m != nil {
+		return m.SipUserData
+	}
+	return nil
+}
+
+func (m *SipConfig) GetSipAgentConfig() *SipAgentConfig {
+	if m != nil {
+		return m.SipAgentConfig
+	}
+	return nil
+}
+
+func (m *SipConfig) GetNetworkDialPlan() *NetworkDialPlan {
+	if m != nil {
+		return m.NetworkDialPlan
+	}
+	return nil
+}
+
+func (m *SipConfig) GetVoipFeatureAccessCodes() *VoipFeatureAccessCodes {
+	if m != nil {
+		return m.VoipFeatureAccessCodes
+	}
+	return nil
+}
+
+func (m *SipConfig) GetVoipApplicationServiceProfile() *VoipApplicationServiceProfile {
+	if m != nil {
+		return m.VoipApplicationServiceProfile
+	}
+	return nil
+}
+
+type SipUserData struct {
+	UserPartAor                         string               `protobuf:"bytes,1,opt,name=userPartAor,proto3" json:"userPartAor,omitempty"`
+	UsernameAndPassword                 *UsernameAndPassword `protobuf:"bytes,2,opt,name=usernameAndPassword,proto3" json:"usernameAndPassword,omitempty"`
+	VoicemailServerSipUri               string               `protobuf:"bytes,3,opt,name=voicemailServerSipUri,proto3" json:"voicemailServerSipUri,omitempty"`
+	VoicemailSubscriptionExpirationTime int32                `protobuf:"varint,4,opt,name=voicemailSubscriptionExpirationTime,proto3" json:"voicemailSubscriptionExpirationTime,omitempty"`
+	ReleaseTimer                        int32                `protobuf:"varint,5,opt,name=releaseTimer,proto3" json:"releaseTimer,omitempty"`
+	RohTimer                            int32                `protobuf:"varint,6,opt,name=rohTimer,proto3" json:"rohTimer,omitempty"`
+	XXX_NoUnkeyedLiteral                struct{}             `json:"-"`
+	XXX_unrecognized                    []byte               `json:"-"`
+	XXX_sizecache                       int32                `json:"-"`
+}
+
+func (m *SipUserData) Reset()         { *m = SipUserData{} }
+func (m *SipUserData) String() string { return proto.CompactTextString(m) }
+func (*SipUserData) ProtoMessage()    {}
+func (*SipUserData) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{11}
+}
+
+func (m *SipUserData) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SipUserData.Unmarshal(m, b)
+}
+func (m *SipUserData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SipUserData.Marshal(b, m, deterministic)
+}
+func (m *SipUserData) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SipUserData.Merge(m, src)
+}
+func (m *SipUserData) XXX_Size() int {
+	return xxx_messageInfo_SipUserData.Size(m)
+}
+func (m *SipUserData) XXX_DiscardUnknown() {
+	xxx_messageInfo_SipUserData.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SipUserData proto.InternalMessageInfo
+
+func (m *SipUserData) GetUserPartAor() string {
+	if m != nil {
+		return m.UserPartAor
+	}
+	return ""
+}
+
+func (m *SipUserData) GetUsernameAndPassword() *UsernameAndPassword {
+	if m != nil {
+		return m.UsernameAndPassword
+	}
+	return nil
+}
+
+func (m *SipUserData) GetVoicemailServerSipUri() string {
+	if m != nil {
+		return m.VoicemailServerSipUri
+	}
+	return ""
+}
+
+func (m *SipUserData) GetVoicemailSubscriptionExpirationTime() int32 {
+	if m != nil {
+		return m.VoicemailSubscriptionExpirationTime
+	}
+	return 0
+}
+
+func (m *SipUserData) GetReleaseTimer() int32 {
+	if m != nil {
+		return m.ReleaseTimer
+	}
+	return 0
+}
+
+func (m *SipUserData) GetRohTimer() int32 {
+	if m != nil {
+		return m.RohTimer
+	}
+	return 0
+}
+
+type SipAgentConfig struct {
+	OutboundProxyAddress     string            `protobuf:"bytes,1,opt,name=outboundProxyAddress,proto3" json:"outboundProxyAddress,omitempty"`
+	PrimarySipDns            string            `protobuf:"bytes,2,opt,name=primarySipDns,proto3" json:"primarySipDns,omitempty"`
+	SecondarySipDns          string            `protobuf:"bytes,3,opt,name=secondarySipDns,proto3" json:"secondarySipDns,omitempty"`
+	SipRegExpTime            int32             `protobuf:"varint,4,opt,name=sipRegExpTime,proto3" json:"sipRegExpTime,omitempty"`
+	SipReregHeadStartTime    int32             `protobuf:"varint,5,opt,name=sipReregHeadStartTime,proto3" json:"sipReregHeadStartTime,omitempty"`
+	SipRegistrar             string            `protobuf:"bytes,6,opt,name=SipRegistrar,proto3" json:"SipRegistrar,omitempty"`
+	SoftSwitch               string            `protobuf:"bytes,7,opt,name=softSwitch,proto3" json:"softSwitch,omitempty"`
+	SipResponseTable         *SipResponseTable `protobuf:"bytes,8,opt,name=sipResponseTable,proto3" json:"sipResponseTable,omitempty"`
+	SipOptionTransmitControl bool              `protobuf:"varint,9,opt,name=sipOptionTransmitControl,proto3" json:"sipOptionTransmitControl,omitempty"`
+	SipUriFormat             string            `protobuf:"bytes,10,opt,name=sipUriFormat,proto3" json:"sipUriFormat,omitempty"`
+	RedundantSipAgentPointer string            `protobuf:"bytes,11,opt,name=redundantSipAgentPointer,proto3" json:"redundantSipAgentPointer,omitempty"`
+	XXX_NoUnkeyedLiteral     struct{}          `json:"-"`
+	XXX_unrecognized         []byte            `json:"-"`
+	XXX_sizecache            int32             `json:"-"`
+}
+
+func (m *SipAgentConfig) Reset()         { *m = SipAgentConfig{} }
+func (m *SipAgentConfig) String() string { return proto.CompactTextString(m) }
+func (*SipAgentConfig) ProtoMessage()    {}
+func (*SipAgentConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{12}
+}
+
+func (m *SipAgentConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SipAgentConfig.Unmarshal(m, b)
+}
+func (m *SipAgentConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SipAgentConfig.Marshal(b, m, deterministic)
+}
+func (m *SipAgentConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SipAgentConfig.Merge(m, src)
+}
+func (m *SipAgentConfig) XXX_Size() int {
+	return xxx_messageInfo_SipAgentConfig.Size(m)
+}
+func (m *SipAgentConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_SipAgentConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SipAgentConfig proto.InternalMessageInfo
+
+func (m *SipAgentConfig) GetOutboundProxyAddress() string {
+	if m != nil {
+		return m.OutboundProxyAddress
+	}
+	return ""
+}
+
+func (m *SipAgentConfig) GetPrimarySipDns() string {
+	if m != nil {
+		return m.PrimarySipDns
+	}
+	return ""
+}
+
+func (m *SipAgentConfig) GetSecondarySipDns() string {
+	if m != nil {
+		return m.SecondarySipDns
+	}
+	return ""
+}
+
+func (m *SipAgentConfig) GetSipRegExpTime() int32 {
+	if m != nil {
+		return m.SipRegExpTime
+	}
+	return 0
+}
+
+func (m *SipAgentConfig) GetSipReregHeadStartTime() int32 {
+	if m != nil {
+		return m.SipReregHeadStartTime
+	}
+	return 0
+}
+
+func (m *SipAgentConfig) GetSipRegistrar() string {
+	if m != nil {
+		return m.SipRegistrar
+	}
+	return ""
+}
+
+func (m *SipAgentConfig) GetSoftSwitch() string {
+	if m != nil {
+		return m.SoftSwitch
+	}
+	return ""
+}
+
+func (m *SipAgentConfig) GetSipResponseTable() *SipResponseTable {
+	if m != nil {
+		return m.SipResponseTable
+	}
+	return nil
+}
+
+func (m *SipAgentConfig) GetSipOptionTransmitControl() bool {
+	if m != nil {
+		return m.SipOptionTransmitControl
+	}
+	return false
+}
+
+func (m *SipAgentConfig) GetSipUriFormat() string {
+	if m != nil {
+		return m.SipUriFormat
+	}
+	return ""
+}
+
+func (m *SipAgentConfig) GetRedundantSipAgentPointer() string {
+	if m != nil {
+		return m.RedundantSipAgentPointer
+	}
+	return ""
+}
+
+type NetworkDialPlan struct {
+	CriticalDialTimeout  uint32         `protobuf:"varint,1,opt,name=criticalDialTimeout,proto3" json:"criticalDialTimeout,omitempty"`
+	PartialDialTimeout   uint32         `protobuf:"varint,2,opt,name=partialDialTimeout,proto3" json:"partialDialTimeout,omitempty"`
+	DialPlanFormat       uint32         `protobuf:"varint,3,opt,name=dialPlanFormat,proto3" json:"dialPlanFormat,omitempty"`
+	DialPlanTable        *DialPlanTable `protobuf:"bytes,4,opt,name=dialPlanTable,proto3" json:"dialPlanTable,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
+	XXX_unrecognized     []byte         `json:"-"`
+	XXX_sizecache        int32          `json:"-"`
+}
+
+func (m *NetworkDialPlan) Reset()         { *m = NetworkDialPlan{} }
+func (m *NetworkDialPlan) String() string { return proto.CompactTextString(m) }
+func (*NetworkDialPlan) ProtoMessage()    {}
+func (*NetworkDialPlan) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{13}
+}
+
+func (m *NetworkDialPlan) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_NetworkDialPlan.Unmarshal(m, b)
+}
+func (m *NetworkDialPlan) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_NetworkDialPlan.Marshal(b, m, deterministic)
+}
+func (m *NetworkDialPlan) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_NetworkDialPlan.Merge(m, src)
+}
+func (m *NetworkDialPlan) XXX_Size() int {
+	return xxx_messageInfo_NetworkDialPlan.Size(m)
+}
+func (m *NetworkDialPlan) XXX_DiscardUnknown() {
+	xxx_messageInfo_NetworkDialPlan.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_NetworkDialPlan proto.InternalMessageInfo
+
+func (m *NetworkDialPlan) GetCriticalDialTimeout() uint32 {
+	if m != nil {
+		return m.CriticalDialTimeout
+	}
+	return 0
+}
+
+func (m *NetworkDialPlan) GetPartialDialTimeout() uint32 {
+	if m != nil {
+		return m.PartialDialTimeout
+	}
+	return 0
+}
+
+func (m *NetworkDialPlan) GetDialPlanFormat() uint32 {
+	if m != nil {
+		return m.DialPlanFormat
+	}
+	return 0
+}
+
+func (m *NetworkDialPlan) GetDialPlanTable() *DialPlanTable {
+	if m != nil {
+		return m.DialPlanTable
+	}
+	return nil
+}
+
+type UsernameAndPassword struct {
+	ValidationScheme     int32    `protobuf:"varint,1,opt,name=validationScheme,proto3" json:"validationScheme,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *UsernameAndPassword) Reset()         { *m = UsernameAndPassword{} }
+func (m *UsernameAndPassword) String() string { return proto.CompactTextString(m) }
+func (*UsernameAndPassword) ProtoMessage()    {}
+func (*UsernameAndPassword) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{14}
+}
+
+func (m *UsernameAndPassword) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_UsernameAndPassword.Unmarshal(m, b)
+}
+func (m *UsernameAndPassword) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_UsernameAndPassword.Marshal(b, m, deterministic)
+}
+func (m *UsernameAndPassword) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_UsernameAndPassword.Merge(m, src)
+}
+func (m *UsernameAndPassword) XXX_Size() int {
+	return xxx_messageInfo_UsernameAndPassword.Size(m)
+}
+func (m *UsernameAndPassword) XXX_DiscardUnknown() {
+	xxx_messageInfo_UsernameAndPassword.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UsernameAndPassword proto.InternalMessageInfo
+
+func (m *UsernameAndPassword) GetValidationScheme() int32 {
+	if m != nil {
+		return m.ValidationScheme
+	}
+	return 0
+}
+
+type SipResponseTable struct {
+	SipResponseCode      string   `protobuf:"bytes,1,opt,name=sipResponseCode,proto3" json:"sipResponseCode,omitempty"`
+	Tone                 string   `protobuf:"bytes,2,opt,name=tone,proto3" json:"tone,omitempty"`
+	TextMessage          string   `protobuf:"bytes,3,opt,name=textMessage,proto3" json:"textMessage,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *SipResponseTable) Reset()         { *m = SipResponseTable{} }
+func (m *SipResponseTable) String() string { return proto.CompactTextString(m) }
+func (*SipResponseTable) ProtoMessage()    {}
+func (*SipResponseTable) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{15}
+}
+
+func (m *SipResponseTable) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SipResponseTable.Unmarshal(m, b)
+}
+func (m *SipResponseTable) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SipResponseTable.Marshal(b, m, deterministic)
+}
+func (m *SipResponseTable) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SipResponseTable.Merge(m, src)
+}
+func (m *SipResponseTable) XXX_Size() int {
+	return xxx_messageInfo_SipResponseTable.Size(m)
+}
+func (m *SipResponseTable) XXX_DiscardUnknown() {
+	xxx_messageInfo_SipResponseTable.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SipResponseTable proto.InternalMessageInfo
+
+func (m *SipResponseTable) GetSipResponseCode() string {
+	if m != nil {
+		return m.SipResponseCode
+	}
+	return ""
+}
+
+func (m *SipResponseTable) GetTone() string {
+	if m != nil {
+		return m.Tone
+	}
+	return ""
+}
+
+func (m *SipResponseTable) GetTextMessage() string {
+	if m != nil {
+		return m.TextMessage
+	}
+	return ""
+}
+
+type DialPlanTable struct {
+	DialPlanId           uint32   `protobuf:"varint,1,opt,name=dialPlanId,proto3" json:"dialPlanId,omitempty"`
+	Action               uint32   `protobuf:"varint,2,opt,name=action,proto3" json:"action,omitempty"`
+	DialPlanToken        string   `protobuf:"bytes,3,opt,name=dialPlanToken,proto3" json:"dialPlanToken,omitempty"`
+	DialPlanTableMaxSize uint32   `protobuf:"varint,4,opt,name=dialPlanTableMaxSize,proto3" json:"dialPlanTableMaxSize,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *DialPlanTable) Reset()         { *m = DialPlanTable{} }
+func (m *DialPlanTable) String() string { return proto.CompactTextString(m) }
+func (*DialPlanTable) ProtoMessage()    {}
+func (*DialPlanTable) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{16}
+}
+
+func (m *DialPlanTable) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DialPlanTable.Unmarshal(m, b)
+}
+func (m *DialPlanTable) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DialPlanTable.Marshal(b, m, deterministic)
+}
+func (m *DialPlanTable) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DialPlanTable.Merge(m, src)
+}
+func (m *DialPlanTable) XXX_Size() int {
+	return xxx_messageInfo_DialPlanTable.Size(m)
+}
+func (m *DialPlanTable) XXX_DiscardUnknown() {
+	xxx_messageInfo_DialPlanTable.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DialPlanTable proto.InternalMessageInfo
+
+func (m *DialPlanTable) GetDialPlanId() uint32 {
+	if m != nil {
+		return m.DialPlanId
+	}
+	return 0
+}
+
+func (m *DialPlanTable) GetAction() uint32 {
+	if m != nil {
+		return m.Action
+	}
+	return 0
+}
+
+func (m *DialPlanTable) GetDialPlanToken() string {
+	if m != nil {
+		return m.DialPlanToken
+	}
+	return ""
+}
+
+func (m *DialPlanTable) GetDialPlanTableMaxSize() uint32 {
+	if m != nil {
+		return m.DialPlanTableMaxSize
+	}
+	return 0
+}
+
+type VoipFeatureAccessCodes struct {
+	CancelCallWaiting        string   `protobuf:"bytes,1,opt,name=cancelCallWaiting,proto3" json:"cancelCallWaiting,omitempty"`
+	CallHold                 string   `protobuf:"bytes,2,opt,name=callHold,proto3" json:"callHold,omitempty"`
+	CallPark                 string   `protobuf:"bytes,3,opt,name=callPark,proto3" json:"callPark,omitempty"`
+	CallerIdActivate         string   `protobuf:"bytes,4,opt,name=callerIdActivate,proto3" json:"callerIdActivate,omitempty"`
+	CallerIdDeactivate       string   `protobuf:"bytes,5,opt,name=callerIdDeactivate,proto3" json:"callerIdDeactivate,omitempty"`
+	DoNotDisturbActivation   string   `protobuf:"bytes,6,opt,name=doNotDisturbActivation,proto3" json:"doNotDisturbActivation,omitempty"`
+	DoNotDisturbDeactivation string   `protobuf:"bytes,7,opt,name=doNotDisturbDeactivation,proto3" json:"doNotDisturbDeactivation,omitempty"`
+	DoNotDisturbPinChange    string   `protobuf:"bytes,8,opt,name=doNotDisturbPinChange,proto3" json:"doNotDisturbPinChange,omitempty"`
+	EmergencyServiceNumber   string   `protobuf:"bytes,9,opt,name=emergencyServiceNumber,proto3" json:"emergencyServiceNumber,omitempty"`
+	IntercomService          string   `protobuf:"bytes,10,opt,name=intercomService,proto3" json:"intercomService,omitempty"`
+	UnattendedCallTransfer   string   `protobuf:"bytes,11,opt,name=unattendedCallTransfer,proto3" json:"unattendedCallTransfer,omitempty"`
+	AttendedCallTransfer     string   `protobuf:"bytes,12,opt,name=attendedCallTransfer,proto3" json:"attendedCallTransfer,omitempty"`
+	XXX_NoUnkeyedLiteral     struct{} `json:"-"`
+	XXX_unrecognized         []byte   `json:"-"`
+	XXX_sizecache            int32    `json:"-"`
+}
+
+func (m *VoipFeatureAccessCodes) Reset()         { *m = VoipFeatureAccessCodes{} }
+func (m *VoipFeatureAccessCodes) String() string { return proto.CompactTextString(m) }
+func (*VoipFeatureAccessCodes) ProtoMessage()    {}
+func (*VoipFeatureAccessCodes) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{17}
+}
+
+func (m *VoipFeatureAccessCodes) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_VoipFeatureAccessCodes.Unmarshal(m, b)
+}
+func (m *VoipFeatureAccessCodes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_VoipFeatureAccessCodes.Marshal(b, m, deterministic)
+}
+func (m *VoipFeatureAccessCodes) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_VoipFeatureAccessCodes.Merge(m, src)
+}
+func (m *VoipFeatureAccessCodes) XXX_Size() int {
+	return xxx_messageInfo_VoipFeatureAccessCodes.Size(m)
+}
+func (m *VoipFeatureAccessCodes) XXX_DiscardUnknown() {
+	xxx_messageInfo_VoipFeatureAccessCodes.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_VoipFeatureAccessCodes proto.InternalMessageInfo
+
+func (m *VoipFeatureAccessCodes) GetCancelCallWaiting() string {
+	if m != nil {
+		return m.CancelCallWaiting
+	}
+	return ""
+}
+
+func (m *VoipFeatureAccessCodes) GetCallHold() string {
+	if m != nil {
+		return m.CallHold
+	}
+	return ""
+}
+
+func (m *VoipFeatureAccessCodes) GetCallPark() string {
+	if m != nil {
+		return m.CallPark
+	}
+	return ""
+}
+
+func (m *VoipFeatureAccessCodes) GetCallerIdActivate() string {
+	if m != nil {
+		return m.CallerIdActivate
+	}
+	return ""
+}
+
+func (m *VoipFeatureAccessCodes) GetCallerIdDeactivate() string {
+	if m != nil {
+		return m.CallerIdDeactivate
+	}
+	return ""
+}
+
+func (m *VoipFeatureAccessCodes) GetDoNotDisturbActivation() string {
+	if m != nil {
+		return m.DoNotDisturbActivation
+	}
+	return ""
+}
+
+func (m *VoipFeatureAccessCodes) GetDoNotDisturbDeactivation() string {
+	if m != nil {
+		return m.DoNotDisturbDeactivation
+	}
+	return ""
+}
+
+func (m *VoipFeatureAccessCodes) GetDoNotDisturbPinChange() string {
+	if m != nil {
+		return m.DoNotDisturbPinChange
+	}
+	return ""
+}
+
+func (m *VoipFeatureAccessCodes) GetEmergencyServiceNumber() string {
+	if m != nil {
+		return m.EmergencyServiceNumber
+	}
+	return ""
+}
+
+func (m *VoipFeatureAccessCodes) GetIntercomService() string {
+	if m != nil {
+		return m.IntercomService
+	}
+	return ""
+}
+
+func (m *VoipFeatureAccessCodes) GetUnattendedCallTransfer() string {
+	if m != nil {
+		return m.UnattendedCallTransfer
+	}
+	return ""
+}
+
+func (m *VoipFeatureAccessCodes) GetAttendedCallTransfer() string {
+	if m != nil {
+		return m.AttendedCallTransfer
+	}
+	return ""
+}
+
+type VoipApplicationServiceProfile struct {
+	CidFeatures                    uint32   `protobuf:"varint,1,opt,name=cidFeatures,proto3" json:"cidFeatures,omitempty"`
+	CallWaitingFeatures            uint32   `protobuf:"varint,2,opt,name=callWaitingFeatures,proto3" json:"callWaitingFeatures,omitempty"`
+	CallProgressOrTransferFeatures uint32   `protobuf:"varint,3,opt,name=callProgressOrTransferFeatures,proto3" json:"callProgressOrTransferFeatures,omitempty"`
+	CallPresentationFeatures       uint32   `protobuf:"varint,4,opt,name=callPresentationFeatures,proto3" json:"callPresentationFeatures,omitempty"`
+	DirectConnectFeature           uint32   `protobuf:"varint,5,opt,name=directConnectFeature,proto3" json:"directConnectFeature,omitempty"`
+	DirectConnectUriPointer        string   `protobuf:"bytes,6,opt,name=directConnectUriPointer,proto3" json:"directConnectUriPointer,omitempty"`
+	BridgedLineAgentUriPointer     string   `protobuf:"bytes,7,opt,name=bridgedLineAgentUriPointer,proto3" json:"bridgedLineAgentUriPointer,omitempty"`
+	ConferenceFactoryUriPointer    string   `protobuf:"bytes,8,opt,name=conferenceFactoryUriPointer,proto3" json:"conferenceFactoryUriPointer,omitempty"`
+	DialToneDelayTimer             uint32   `protobuf:"varint,9,opt,name=dialToneDelayTimer,proto3" json:"dialToneDelayTimer,omitempty"`
+	XXX_NoUnkeyedLiteral           struct{} `json:"-"`
+	XXX_unrecognized               []byte   `json:"-"`
+	XXX_sizecache                  int32    `json:"-"`
+}
+
+func (m *VoipApplicationServiceProfile) Reset()         { *m = VoipApplicationServiceProfile{} }
+func (m *VoipApplicationServiceProfile) String() string { return proto.CompactTextString(m) }
+func (*VoipApplicationServiceProfile) ProtoMessage()    {}
+func (*VoipApplicationServiceProfile) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{18}
+}
+
+func (m *VoipApplicationServiceProfile) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_VoipApplicationServiceProfile.Unmarshal(m, b)
+}
+func (m *VoipApplicationServiceProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_VoipApplicationServiceProfile.Marshal(b, m, deterministic)
+}
+func (m *VoipApplicationServiceProfile) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_VoipApplicationServiceProfile.Merge(m, src)
+}
+func (m *VoipApplicationServiceProfile) XXX_Size() int {
+	return xxx_messageInfo_VoipApplicationServiceProfile.Size(m)
+}
+func (m *VoipApplicationServiceProfile) XXX_DiscardUnknown() {
+	xxx_messageInfo_VoipApplicationServiceProfile.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_VoipApplicationServiceProfile proto.InternalMessageInfo
+
+func (m *VoipApplicationServiceProfile) GetCidFeatures() uint32 {
+	if m != nil {
+		return m.CidFeatures
+	}
+	return 0
+}
+
+func (m *VoipApplicationServiceProfile) GetCallWaitingFeatures() uint32 {
+	if m != nil {
+		return m.CallWaitingFeatures
+	}
+	return 0
+}
+
+func (m *VoipApplicationServiceProfile) GetCallProgressOrTransferFeatures() uint32 {
+	if m != nil {
+		return m.CallProgressOrTransferFeatures
+	}
+	return 0
+}
+
+func (m *VoipApplicationServiceProfile) GetCallPresentationFeatures() uint32 {
+	if m != nil {
+		return m.CallPresentationFeatures
+	}
+	return 0
+}
+
+func (m *VoipApplicationServiceProfile) GetDirectConnectFeature() uint32 {
+	if m != nil {
+		return m.DirectConnectFeature
+	}
+	return 0
+}
+
+func (m *VoipApplicationServiceProfile) GetDirectConnectUriPointer() string {
+	if m != nil {
+		return m.DirectConnectUriPointer
+	}
+	return ""
+}
+
+func (m *VoipApplicationServiceProfile) GetBridgedLineAgentUriPointer() string {
+	if m != nil {
+		return m.BridgedLineAgentUriPointer
+	}
+	return ""
+}
+
+func (m *VoipApplicationServiceProfile) GetConferenceFactoryUriPointer() string {
+	if m != nil {
+		return m.ConferenceFactoryUriPointer
+	}
+	return ""
+}
+
+func (m *VoipApplicationServiceProfile) GetDialToneDelayTimer() uint32 {
+	if m != nil {
+		return m.DialToneDelayTimer
+	}
+	return 0
+}
+
+func init() {
+	proto.RegisterType((*VoipSystemProfileRequest)(nil), "voip_system_profile.VoipSystemProfileRequest")
+	proto.RegisterType((*VoipSystemProfile)(nil), "voip_system_profile.VoipSystemProfile")
+	proto.RegisterType((*VoipConfig)(nil), "voip_system_profile.VoipConfig")
+	proto.RegisterType((*IpHostConfig)(nil), "voip_system_profile.IpHostConfig")
+	proto.RegisterType((*TcpUdpConfig)(nil), "voip_system_profile.TcpUdpConfig")
+	proto.RegisterType((*VoipVoiceCtp)(nil), "voip_system_profile.VoipVoiceCtp")
+	proto.RegisterType((*VoipMediaProfile)(nil), "voip_system_profile.VoipMediaProfile")
+	proto.RegisterType((*VoiceServiceProfile)(nil), "voip_system_profile.VoiceServiceProfile")
+	proto.RegisterType((*RtpProfile)(nil), "voip_system_profile.RtpProfile")
+	proto.RegisterType((*PptpPotsUni)(nil), "voip_system_profile.PptpPotsUni")
+	proto.RegisterType((*SipConfig)(nil), "voip_system_profile.SipConfig")
+	proto.RegisterType((*SipUserData)(nil), "voip_system_profile.SipUserData")
+	proto.RegisterType((*SipAgentConfig)(nil), "voip_system_profile.SipAgentConfig")
+	proto.RegisterType((*NetworkDialPlan)(nil), "voip_system_profile.NetworkDialPlan")
+	proto.RegisterType((*UsernameAndPassword)(nil), "voip_system_profile.UsernameAndPassword")
+	proto.RegisterType((*SipResponseTable)(nil), "voip_system_profile.SipResponseTable")
+	proto.RegisterType((*DialPlanTable)(nil), "voip_system_profile.DialPlanTable")
+	proto.RegisterType((*VoipFeatureAccessCodes)(nil), "voip_system_profile.VoipFeatureAccessCodes")
+	proto.RegisterType((*VoipApplicationServiceProfile)(nil), "voip_system_profile.VoipApplicationServiceProfile")
+}
+
+func init() {
+	proto.RegisterFile("voltha_protos/voip_system_profile.proto", fileDescriptor_02a00a136081bca5)
+}
+
+var fileDescriptor_02a00a136081bca5 = []byte{
+	// 2057 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x58, 0x5f, 0x73, 0x1b, 0x49,
+	0x11, 0x2f, 0x3b, 0x4e, 0x2e, 0x1a, 0xdb, 0xf9, 0x33, 0x81, 0xa0, 0x0a, 0x77, 0x21, 0xec, 0x1d,
+	0x77, 0x29, 0xfe, 0xd8, 0x60, 0x9b, 0x2b, 0x0a, 0x28, 0xc0, 0xb1, 0x62, 0xe2, 0xe2, 0x9c, 0x88,
+	0x95, 0x63, 0xaa, 0xee, 0xe5, 0x6a, 0x3c, 0xdb, 0x5a, 0x0d, 0xde, 0x9d, 0x59, 0x66, 0x46, 0x8a,
+	0xc4, 0x23, 0x9f, 0x80, 0xa2, 0x0a, 0x78, 0xa6, 0xf8, 0x28, 0x3c, 0xf2, 0x06, 0x9f, 0x81, 0x4f,
+	0xc0, 0x0b, 0x8f, 0x54, 0xcf, 0xcc, 0x4a, 0xbb, 0xda, 0x5d, 0xc3, 0x9b, 0xe6, 0xf7, 0xeb, 0x6e,
+	0xb5, 0xba, 0x7b, 0xba, 0x7b, 0x44, 0x3e, 0x99, 0xa9, 0xcc, 0x4e, 0xd8, 0x17, 0x85, 0x56, 0x56,
+	0x99, 0xfd, 0x99, 0x12, 0xc5, 0x17, 0x66, 0x61, 0x2c, 0xe4, 0x08, 0x8d, 0x45, 0x06, 0x7b, 0x8e,
+	0xa2, 0x8f, 0x5a, 0xa8, 0x27, 0xef, 0xa7, 0x4a, 0xa5, 0x19, 0xec, 0xb3, 0x42, 0xec, 0x33, 0x29,
+	0x95, 0x65, 0x56, 0x28, 0x69, 0xbc, 0x4a, 0xf4, 0xbb, 0x0d, 0xd2, 0xbf, 0x54, 0xa2, 0x18, 0x39,
+	0xa5, 0xa1, 0xd7, 0x89, 0xe1, 0x37, 0x53, 0x30, 0x96, 0x3e, 0x20, 0xb7, 0xae, 0x61, 0xd1, 0xdf,
+	0x78, 0xb6, 0xf1, 0xbc, 0x17, 0xe3, 0x47, 0x7a, 0x41, 0x1e, 0xce, 0xd6, 0xa5, 0xfb, 0x9b, 0xcf,
+	0x36, 0x9e, 0x6f, 0x1f, 0x7c, 0xbc, 0xd7, 0xe6, 0x58, 0xd3, 0x76, 0xd3, 0x40, 0xf4, 0x87, 0x0d,
+	0xf2, 0xb0, 0x21, 0x48, 0x7f, 0x4c, 0x7a, 0x46, 0x14, 0x27, 0x4a, 0x8e, 0x45, 0xea, 0x7c, 0xd8,
+	0x3e, 0x78, 0xda, 0xfa, 0x1d, 0xa3, 0x52, 0x2a, 0x5e, 0x29, 0xd0, 0x9f, 0x12, 0x82, 0xb2, 0x41,
+	0xdd, 0xbb, 0xf8, 0xb5, 0x4e, 0x17, 0x83, 0x7e, 0x45, 0x25, 0xfa, 0xe3, 0x16, 0x21, 0x2b, 0x8a,
+	0xbe, 0x24, 0x3b, 0xa2, 0x78, 0xa5, 0x8c, 0xad, 0x39, 0xf4, 0xf5, 0x56, 0x8b, 0x67, 0x15, 0xc1,
+	0xb8, 0xa6, 0x86, 0x66, 0x2c, 0x2f, 0xde, 0x26, 0x75, 0xc7, 0xda, 0xcd, 0x5c, 0x54, 0x04, 0xe3,
+	0x9a, 0x1a, 0x9a, 0x41, 0x8d, 0x4b, 0x25, 0x38, 0x9c, 0xd8, 0xa2, 0x7f, 0xeb, 0x06, 0x33, 0x97,
+	0x15, 0xc1, 0xb8, 0xa6, 0x46, 0x7f, 0x49, 0x1e, 0xe0, 0xf9, 0x1c, 0x12, 0xc1, 0xca, 0x6c, 0x6e,
+	0x39, 0x53, 0xdf, 0xe8, 0x34, 0x55, 0x15, 0x8e, 0x1b, 0xea, 0xf4, 0x73, 0x82, 0x55, 0xc8, 0x61,
+	0x04, 0x7a, 0x26, 0x38, 0x94, 0x56, 0x6f, 0x3b, 0xab, 0xcf, 0xbb, 0xac, 0xae, 0xcb, 0xc7, 0x6d,
+	0x46, 0x30, 0xa7, 0xda, 0x16, 0xa5, 0xc9, 0x3b, 0x37, 0xe4, 0x34, 0x5e, 0x8a, 0xc5, 0x15, 0x15,
+	0xfa, 0x82, 0x6c, 0x17, 0x85, 0x2d, 0x86, 0xca, 0x9a, 0xb7, 0x52, 0xf4, 0xdf, 0x73, 0x16, 0x9e,
+	0xb5, 0x5a, 0x18, 0xae, 0xe4, 0xe2, 0xaa, 0x52, 0xf4, 0xfb, 0x4d, 0xb2, 0x53, 0x4d, 0x30, 0x7d,
+	0x9f, 0xf4, 0x44, 0xf1, 0xa6, 0x70, 0xb7, 0xca, 0x95, 0xc5, 0x6e, 0xbc, 0x02, 0xe8, 0x47, 0x64,
+	0x57, 0xc9, 0xe9, 0x59, 0x02, 0xd2, 0x8a, 0xb1, 0x00, 0xed, 0x32, 0xde, 0x8b, 0xeb, 0xa0, 0xb7,
+	0x71, 0x9c, 0x24, 0x1a, 0x8c, 0x71, 0xc9, 0xec, 0xc5, 0x2b, 0x80, 0x52, 0xb2, 0x95, 0x33, 0x73,
+	0xed, 0x52, 0xd3, 0x8b, 0xdd, 0x67, 0xda, 0x27, 0xef, 0xa5, 0xcc, 0xc2, 0x3b, 0xb6, 0x70, 0xb1,
+	0xed, 0xc5, 0xe5, 0x91, 0x3e, 0x25, 0xa4, 0xd0, 0x22, 0x67, 0x7a, 0x31, 0x90, 0xc6, 0x45, 0xa9,
+	0x17, 0x57, 0x10, 0x1a, 0x91, 0x1d, 0x03, 0x5c, 0xc9, 0x24, 0x48, 0xbc, 0xe7, 0x24, 0x6a, 0x18,
+	0xfd, 0x36, 0x79, 0xa8, 0x21, 0x63, 0x8b, 0xe3, 0x14, 0xa4, 0x2d, 0x7f, 0xdb, 0x5d, 0x27, 0xd8,
+	0x24, 0xa2, 0x53, 0xb2, 0x53, 0xad, 0x55, 0xfa, 0x84, 0xdc, 0x75, 0xdd, 0x85, 0xab, 0x2c, 0x04,
+	0x64, 0x79, 0x46, 0xce, 0x2a, 0x73, 0x2a, 0x20, 0x4b, 0x42, 0x28, 0x96, 0xe7, 0xe8, 0x53, 0xb2,
+	0x53, 0x2d, 0x56, 0xfa, 0x31, 0xb9, 0x67, 0x44, 0x2a, 0x59, 0x96, 0x09, 0x99, 0x9e, 0xa8, 0x04,
+	0x82, 0xb5, 0x35, 0x34, 0xfa, 0xd3, 0x6d, 0xf2, 0x60, 0xbd, 0x34, 0x31, 0x40, 0x63, 0x36, 0x3f,
+	0x5f, 0x69, 0x95, 0x47, 0xfa, 0x9c, 0xdc, 0xe7, 0x2a, 0x01, 0x3e, 0x82, 0x0c, 0x38, 0xfe, 0x82,
+	0xef, 0x39, 0x4f, 0x76, 0xe3, 0x75, 0x98, 0x7e, 0x4a, 0x1e, 0x17, 0x8c, 0x5f, 0x83, 0x1d, 0x82,
+	0x16, 0x2a, 0xa9, 0x28, 0xdc, 0x72, 0x0a, 0x1d, 0x2c, 0xfd, 0x2e, 0x79, 0x64, 0x44, 0x06, 0x92,
+	0xc3, 0x68, 0x5a, 0x14, 0x98, 0x43, 0xa7, 0xb4, 0xe5, 0x94, 0xda, 0xa8, 0xa6, 0x4f, 0x07, 0x2e,
+	0xad, 0x0d, 0x9f, 0x0e, 0x3a, 0x7d, 0x3a, 0x70, 0xa9, 0xee, 0xf2, 0xe9, 0xa0, 0xdd, 0xa7, 0x03,
+	0x97, 0xfd, 0x56, 0x9f, 0x0e, 0x9a, 0x3e, 0x1d, 0xba, 0x12, 0x68, 0xf8, 0x74, 0xd8, 0xe9, 0xd3,
+	0x61, 0xbf, 0x77, 0x83, 0x4f, 0x87, 0xed, 0x3e, 0x1d, 0xf6, 0x49, 0x97, 0x4f, 0x87, 0x4d, 0x9f,
+	0x8e, 0xfa, 0xdb, 0x6d, 0x3e, 0x1d, 0x75, 0xfa, 0x74, 0xd4, 0xdf, 0xb9, 0xc1, 0xa7, 0xa3, 0x76,
+	0x9f, 0x8e, 0xfa, 0xbb, 0x5d, 0x3e, 0x1d, 0x61, 0xa5, 0x29, 0x75, 0x35, 0xb0, 0xf9, 0xb8, 0x7f,
+	0xcf, 0x57, 0x5a, 0x38, 0x46, 0xff, 0xde, 0x24, 0x8f, 0x5a, 0xba, 0x1b, 0xfd, 0x26, 0x79, 0x80,
+	0xa3, 0x78, 0x2a, 0x39, 0xe4, 0x20, 0xed, 0xc5, 0xa2, 0x28, 0x8b, 0xb4, 0x81, 0xe3, 0x75, 0xfd,
+	0xb5, 0xb0, 0x16, 0xf4, 0x05, 0xd3, 0x29, 0xd8, 0x50, 0xaa, 0x35, 0x0c, 0xa3, 0xe2, 0xcf, 0x2f,
+	0xa6, 0xe3, 0x31, 0xe8, 0x73, 0x36, 0x0f, 0x05, 0xba, 0x0e, 0x63, 0x3b, 0x02, 0x3e, 0x51, 0x27,
+	0x4c, 0x72, 0xc8, 0xce, 0x64, 0xe2, 0x6a, 0xf2, 0x6e, 0x5c, 0x07, 0x31, 0x06, 0x85, 0xb1, 0x72,
+	0x18, 0x2e, 0xed, 0x25, 0xd3, 0x82, 0x49, 0x1b, 0x2a, 0xb2, 0x8d, 0x42, 0x0f, 0x12, 0x9b, 0x8f,
+	0x07, 0x22, 0x15, 0xf6, 0x33, 0x98, 0x41, 0x66, 0x42, 0x39, 0xae, 0xc3, 0xd8, 0x5a, 0x96, 0xd0,
+	0x60, 0xaa, 0xdd, 0x36, 0x12, 0xaa, 0xb0, 0x49, 0xd0, 0x03, 0xf2, 0xa5, 0x89, 0x52, 0xd7, 0xa7,
+	0x19, 0x33, 0x93, 0x73, 0x21, 0x45, 0x3e, 0xcd, 0x2f, 0x44, 0x0e, 0xa1, 0x10, 0x5b, 0xb9, 0xe8,
+	0x3f, 0x1b, 0x84, 0xac, 0x06, 0x00, 0x06, 0x30, 0x53, 0x9c, 0x65, 0x43, 0xa5, 0xed, 0xb9, 0x90,
+	0x21, 0xd0, 0x35, 0xac, 0x2e, 0xc3, 0xe6, 0x65, 0x90, 0xab, 0x18, 0x76, 0xae, 0xc4, 0xf0, 0xe2,
+	0x9c, 0xe9, 0xeb, 0xd0, 0xa2, 0x97, 0x67, 0xfc, 0xf9, 0x85, 0x48, 0xd3, 0xc5, 0x0b, 0xc6, 0xaf,
+	0x5f, 0xce, 0x40, 0x5a, 0x13, 0x2e, 0xfb, 0x3a, 0x8c, 0xdd, 0xd9, 0x2a, 0x09, 0x41, 0xc8, 0x47,
+	0xb4, 0x82, 0x20, 0x8f, 0x51, 0x08, 0xbc, 0x8f, 0x61, 0x05, 0xc1, 0x49, 0xc1, 0x99, 0x09, 0xb4,
+	0x0f, 0xdb, 0x0a, 0x88, 0xfe, 0xb6, 0x49, 0xb6, 0x2b, 0x93, 0x0b, 0x37, 0x38, 0xa6, 0x79, 0xb9,
+	0xc1, 0x31, 0xcd, 0xe9, 0x33, 0xb2, 0xcd, 0x34, 0x3f, 0x93, 0x16, 0xf4, 0x8c, 0x65, 0xa1, 0x05,
+	0x57, 0x21, 0x37, 0x8b, 0xf2, 0x02, 0x12, 0xac, 0x86, 0x50, 0x46, 0x2b, 0x00, 0x4b, 0xd7, 0x6a,
+	0x26, 0x4d, 0x2e, 0x5c, 0xf5, 0x0f, 0x99, 0x9d, 0x84, 0x9f, 0xda, 0xc0, 0xe9, 0x63, 0x72, 0x47,
+	0xcf, 0x7f, 0xce, 0x84, 0x74, 0xbf, 0xf3, 0x61, 0x1c, 0x4e, 0x88, 0x5b, 0x8f, 0xdf, 0xf1, 0xb8,
+	0x3f, 0xa1, 0xed, 0x42, 0x59, 0xf3, 0x4a, 0x65, 0xc9, 0x9b, 0x19, 0x68, 0x97, 0x68, 0xff, 0x13,
+	0x1b, 0x38, 0xdd, 0x23, 0x54, 0xaa, 0x5c, 0x48, 0x96, 0x9d, 0x02, 0x24, 0x97, 0x2a, 0xb3, 0x2c,
+	0x2d, 0xcb, 0xa2, 0x85, 0x41, 0xdb, 0x99, 0x32, 0xe6, 0xcd, 0x78, 0xa4, 0xc6, 0x76, 0xf4, 0x4e,
+	0x58, 0x3e, 0x09, 0xcd, 0xa9, 0x81, 0x47, 0x7f, 0xbf, 0x45, 0x7a, 0xcb, 0xa5, 0x12, 0x97, 0x06,
+	0x23, 0x8a, 0xb7, 0x06, 0xf4, 0x80, 0x59, 0x16, 0x16, 0xbf, 0x67, 0x5d, 0x9b, 0x68, 0x29, 0x17,
+	0x57, 0x95, 0xe8, 0x2f, 0x70, 0x92, 0x15, 0x6e, 0x68, 0xd6, 0x16, 0xbf, 0x0f, 0xbb, 0xcc, 0x54,
+	0x44, 0xe3, 0x35, 0x55, 0xfa, 0x9a, 0xdc, 0x97, 0x60, 0xdf, 0x29, 0x7d, 0x3d, 0x10, 0x2c, 0x1b,
+	0x66, 0x4c, 0x86, 0xfd, 0xef, 0xa3, 0x56, 0x6b, 0xaf, 0xeb, 0xb2, 0xf1, 0xba, 0x32, 0xe5, 0xe4,
+	0x31, 0xea, 0x9d, 0x02, 0xb3, 0x53, 0x0d, 0xc7, 0x9c, 0x83, 0x31, 0x38, 0x57, 0x4d, 0xd8, 0x05,
+	0xbf, 0xd5, 0xb9, 0x0b, 0x36, 0x55, 0xe2, 0x0e, 0x53, 0x74, 0x4e, 0x3e, 0x40, 0xe6, 0xb8, 0x28,
+	0x32, 0xc1, 0xdd, 0xdd, 0x6e, 0xdd, 0x10, 0x0f, 0x3a, 0xbf, 0xab, 0x53, 0x33, 0xbe, 0xd9, 0x70,
+	0xf4, 0xcf, 0x4d, 0xb2, 0x5d, 0x49, 0x0c, 0xde, 0x80, 0xa9, 0x01, 0x3d, 0x64, 0xda, 0x1e, 0x2b,
+	0x1d, 0xee, 0x46, 0x15, 0xc2, 0x1d, 0x16, 0x8f, 0x92, 0xe5, 0x70, 0x2c, 0x93, 0x21, 0x33, 0xe6,
+	0x9d, 0xd2, 0x49, 0x48, 0x59, 0xfb, 0x0e, 0xfb, 0xb6, 0x29, 0x1f, 0xb7, 0x19, 0xa1, 0x47, 0xe4,
+	0xcb, 0x6e, 0xb5, 0xcd, 0x99, 0xc8, 0xd0, 0x51, 0xd0, 0xe8, 0x9b, 0x16, 0xa1, 0xa5, 0xb4, 0x93,
+	0x74, 0x48, 0x3e, 0x5c, 0x11, 0xd3, 0x2b, 0xc3, 0xb5, 0x70, 0xbb, 0xd7, 0xcb, 0x79, 0x21, 0x7c,
+	0xa7, 0x74, 0x97, 0x05, 0xf3, 0x75, 0x3b, 0xfe, 0x7f, 0x44, 0xb1, 0xe3, 0x69, 0xc8, 0x80, 0x19,
+	0xc0, 0xa3, 0x76, 0xe1, 0xbf, 0x1d, 0xd7, 0x30, 0xec, 0x78, 0x5a, 0x4d, 0x3c, 0x7f, 0xc7, 0xf1,
+	0xcb, 0x73, 0xf4, 0xd7, 0x2d, 0x72, 0xaf, 0x5e, 0xa7, 0xd8, 0xab, 0xd5, 0xd4, 0x5e, 0xa9, 0xa9,
+	0x4c, 0x86, 0x5a, 0xcd, 0x17, 0xe5, 0x3e, 0xeb, 0x23, 0xdc, 0xca, 0xe1, 0x3c, 0x0a, 0xab, 0xe9,
+	0x48, 0x14, 0xb8, 0x8d, 0x86, 0xf5, 0xb8, 0x06, 0x62, 0x7b, 0x5d, 0xae, 0xa7, 0x41, 0xce, 0x87,
+	0x6b, 0x1d, 0x46, 0x7b, 0x46, 0x14, 0x31, 0xa4, 0x2f, 0xe7, 0x45, 0x25, 0x24, 0x75, 0x10, 0x93,
+	0xe0, 0x00, 0x0d, 0xe9, 0x2b, 0x60, 0xc9, 0xc8, 0x32, 0x6d, 0x9d, 0xb4, 0x8f, 0x42, 0x3b, 0x89,
+	0x21, 0x1b, 0x39, 0x33, 0xc2, 0x58, 0xcd, 0x74, 0x58, 0xad, 0x6b, 0x18, 0xb6, 0x6f, 0xb3, 0x6a,
+	0x30, 0x7e, 0xb5, 0xae, 0x20, 0xf8, 0xe2, 0x72, 0xc6, 0x4d, 0xa1, 0xa4, 0x81, 0x0b, 0x76, 0x95,
+	0xf9, 0xa6, 0xd5, 0xf5, 0xe2, 0x1a, 0xad, 0x09, 0xc7, 0x0d, 0x75, 0xfa, 0x43, 0xd2, 0x37, 0xe5,
+	0x7b, 0xe3, 0xc2, 0xb7, 0x60, 0xcc, 0x88, 0xd5, 0x2a, 0x73, 0x1d, 0xee, 0x6e, 0xdc, 0xc9, 0xbb,
+	0xb7, 0x80, 0xab, 0xb0, 0x53, 0xa5, 0x73, 0x66, 0xdd, 0xe6, 0x85, 0x6f, 0x81, 0x0a, 0x86, 0xf6,
+	0x35, 0x24, 0x53, 0x99, 0x30, 0x69, 0xcb, 0x8c, 0x0f, 0x95, 0xc0, 0x71, 0xe1, 0x76, 0xaf, 0x5e,
+	0xdc, 0xc9, 0x47, 0xff, 0xda, 0x20, 0xf7, 0xd7, 0xfa, 0x0f, 0x2e, 0x17, 0x5c, 0x0b, 0x2b, 0x38,
+	0xcb, 0x10, 0xc3, 0xd0, 0xaa, 0xa9, 0x0d, 0x63, 0xb9, 0x8d, 0xc2, 0x5e, 0x5f, 0x30, 0x6d, 0x45,
+	0x5d, 0xc1, 0xcf, 0xe8, 0x16, 0x06, 0xdf, 0x0d, 0x49, 0xf8, 0xb6, 0xf0, 0xbb, 0xfc, 0x18, 0x5b,
+	0x43, 0xe9, 0x2b, 0xb2, 0x5b, 0x22, 0x3e, 0x13, 0xbe, 0xdf, 0x45, 0xad, 0x99, 0x18, 0x54, 0x25,
+	0xe3, 0xba, 0x62, 0x74, 0x4c, 0x1e, 0xb5, 0x74, 0x00, 0x1c, 0x3a, 0x33, 0x96, 0x89, 0xc4, 0xb7,
+	0x25, 0x3e, 0x81, 0xdc, 0xef, 0x79, 0xb7, 0xe3, 0x06, 0x1e, 0x69, 0xf2, 0x60, 0x3d, 0xd9, 0xae,
+	0xee, 0x57, 0xd8, 0xf2, 0x05, 0x84, 0x75, 0x5f, 0x87, 0xf1, 0x89, 0x88, 0x4b, 0x44, 0xb8, 0x3e,
+	0xee, 0x33, 0x36, 0x3a, 0x0b, 0x73, 0x7b, 0x0e, 0xc6, 0xe0, 0x6c, 0xf4, 0x37, 0xa6, 0x0a, 0x45,
+	0x7f, 0xd9, 0x20, 0xbb, 0xb5, 0xdf, 0xe5, 0xd6, 0x8f, 0x00, 0x9c, 0x25, 0x21, 0x27, 0x15, 0x04,
+	0x47, 0x37, 0x73, 0x8b, 0x72, 0x08, 0x7f, 0x38, 0xe1, 0xbd, 0x5b, 0x46, 0x44, 0x5d, 0x83, 0x0c,
+	0xdf, 0x56, 0x07, 0xb1, 0x43, 0xd4, 0xe2, 0x76, 0xce, 0xe6, 0x23, 0xf1, 0x5b, 0x08, 0x0b, 0x44,
+	0x2b, 0x17, 0xfd, 0x63, 0x8b, 0x3c, 0x6e, 0x9f, 0x35, 0xb8, 0x4a, 0x72, 0xb7, 0xb3, 0x9e, 0xb0,
+	0x2c, 0xfb, 0x15, 0x13, 0x56, 0xc8, 0x34, 0x04, 0xa8, 0x49, 0x60, 0x37, 0xe3, 0x2c, 0xcb, 0x70,
+	0x8b, 0x28, 0x5f, 0x9e, 0xe5, 0xb9, 0xe4, 0x86, 0x95, 0xdd, 0xae, 0x3c, 0x63, 0x12, 0xf1, 0x33,
+	0xe8, 0xb3, 0xe4, 0x98, 0x5b, 0x31, 0x63, 0x16, 0xc2, 0x4b, 0xbc, 0x81, 0x63, 0xa5, 0x96, 0xd8,
+	0x00, 0x58, 0x29, 0xed, 0x1f, 0xe8, 0x2d, 0x0c, 0x3e, 0x52, 0x12, 0xf5, 0x5a, 0xd9, 0x81, 0x30,
+	0x76, 0xaa, 0xaf, 0x82, 0x1d, 0x0c, 0xaf, 0x6f, 0x2e, 0x1d, 0x2c, 0xde, 0xc9, 0x2a, 0xb3, 0xb4,
+	0x58, 0xee, 0xd2, 0xbd, 0xb8, 0x93, 0xc7, 0xe6, 0x57, 0xe5, 0x86, 0x42, 0x9e, 0x4c, 0x98, 0x0c,
+	0xcb, 0x53, 0x2f, 0x6e, 0x27, 0xd1, 0x53, 0xc8, 0x41, 0xa7, 0x20, 0xf9, 0x22, 0x0c, 0xd8, 0xd7,
+	0xd3, 0xfc, 0x0a, 0xb4, 0xeb, 0x31, 0xbd, 0xb8, 0x83, 0xc5, 0x12, 0x76, 0xad, 0x80, 0xab, 0x3c,
+	0x10, 0xa1, 0xc9, 0xac, 0xc3, 0xf8, 0x0d, 0x53, 0xc9, 0xac, 0x05, 0x99, 0x40, 0x82, 0x89, 0x73,
+	0xcd, 0x6a, 0xbc, 0xec, 0x32, 0x1d, 0x2c, 0x16, 0x55, 0xab, 0xd6, 0x8e, 0x1f, 0x3b, 0x6d, 0x5c,
+	0xf4, 0xe7, 0x2d, 0xf2, 0xc1, 0x8d, 0x4b, 0x05, 0x5e, 0x1e, 0x2e, 0x92, 0x50, 0x74, 0xe5, 0xff,
+	0x3a, 0x55, 0xc8, 0xf5, 0xb1, 0x55, 0x79, 0x2d, 0x25, 0x37, 0x43, 0x1f, 0x6b, 0x52, 0xf4, 0x94,
+	0x3c, 0x75, 0x55, 0xa5, 0x55, 0x8a, 0xc3, 0xef, 0x8d, 0x2e, 0xfd, 0x59, 0x2a, 0xfb, 0x3e, 0xf5,
+	0x3f, 0xa4, 0x30, 0xfb, 0x5e, 0x02, 0x0c, 0x48, 0xff, 0x7f, 0xee, 0xd2, 0x82, 0xbf, 0x4a, 0x9d,
+	0xbc, 0xbf, 0x82, 0x1a, 0x38, 0x8e, 0x00, 0x09, 0xdc, 0x06, 0x22, 0xbc, 0x44, 0x5a, 0x39, 0xfa,
+	0x03, 0xf2, 0x95, 0x1a, 0xfe, 0x56, 0x8b, 0x72, 0x00, 0xf8, 0x32, 0xed, 0xa2, 0xe9, 0x4f, 0xc8,
+	0x93, 0x2b, 0x2d, 0x92, 0x14, 0x92, 0xcf, 0x84, 0x04, 0x37, 0x1a, 0x2a, 0xca, 0xbe, 0x52, 0x6f,
+	0x90, 0xa0, 0x3f, 0x23, 0x5f, 0xe5, 0x4a, 0x8e, 0x41, 0xe3, 0xa3, 0xfb, 0x94, 0x71, 0xab, 0xf4,
+	0xa2, 0x62, 0xc0, 0x57, 0xec, 0x4d, 0x22, 0x78, 0x23, 0xb1, 0xad, 0x5c, 0x28, 0x09, 0x03, 0xc8,
+	0xd8, 0xc2, 0x6f, 0x33, 0x7e, 0xf3, 0x6f, 0x61, 0x5e, 0x8c, 0xc9, 0x27, 0x4a, 0xa7, 0x7b, 0xaa,
+	0x00, 0xc9, 0x95, 0x4e, 0xf6, 0xfc, 0x7f, 0xef, 0x6d, 0x13, 0xe1, 0xf3, 0x1f, 0xa5, 0xc2, 0x4e,
+	0xa6, 0x57, 0x7b, 0x5c, 0xe5, 0xfb, 0xa5, 0xfc, 0xbe, 0x97, 0xff, 0x4e, 0xf9, 0x5f, 0xfd, 0xf7,
+	0xf7, 0x53, 0xd5, 0xf6, 0x8f, 0xfd, 0xd5, 0x1d, 0x27, 0x71, 0xf8, 0xdf, 0x00, 0x00, 0x00, 0xff,
+	0xff, 0xac, 0x32, 0x52, 0x2e, 0xdd, 0x17, 0x00, 0x00,
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/voip_user_profile/voip_user_profile.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/voip_user_profile/voip_user_profile.pb.go
new file mode 100644
index 0000000..a4f90f7
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/voip_user_profile/voip_user_profile.pb.go
@@ -0,0 +1,200 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: voltha_protos/voip_user_profile.proto
+
+package voip_user_profile
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	_ "google.golang.org/genproto/googleapis/api/annotations"
+	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
+
+// A user specific profile for voip service
+type VoipUserProfileRequest struct {
+	// for the path in KV store
+	Key                  string           `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+	VoipUserProfile      *VoipUserProfile `protobuf:"bytes,2,opt,name=voipUserProfile,proto3" json:"voipUserProfile,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
+	XXX_unrecognized     []byte           `json:"-"`
+	XXX_sizecache        int32            `json:"-"`
+}
+
+func (m *VoipUserProfileRequest) Reset()         { *m = VoipUserProfileRequest{} }
+func (m *VoipUserProfileRequest) String() string { return proto.CompactTextString(m) }
+func (*VoipUserProfileRequest) ProtoMessage()    {}
+func (*VoipUserProfileRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_0ecf0ef501fce1bc, []int{0}
+}
+
+func (m *VoipUserProfileRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_VoipUserProfileRequest.Unmarshal(m, b)
+}
+func (m *VoipUserProfileRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_VoipUserProfileRequest.Marshal(b, m, deterministic)
+}
+func (m *VoipUserProfileRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_VoipUserProfileRequest.Merge(m, src)
+}
+func (m *VoipUserProfileRequest) XXX_Size() int {
+	return xxx_messageInfo_VoipUserProfileRequest.Size(m)
+}
+func (m *VoipUserProfileRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_VoipUserProfileRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_VoipUserProfileRequest proto.InternalMessageInfo
+
+func (m *VoipUserProfileRequest) GetKey() string {
+	if m != nil {
+		return m.Key
+	}
+	return ""
+}
+
+func (m *VoipUserProfileRequest) GetVoipUserProfile() *VoipUserProfile {
+	if m != nil {
+		return m.VoipUserProfile
+	}
+	return nil
+}
+
+type VoipUserProfile struct {
+	VoipSystemProfileKey string   `protobuf:"bytes,1,opt,name=voipSystemProfileKey,proto3" json:"voipSystemProfileKey,omitempty"`
+	Username             string   `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"`
+	Password             string   `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"`
+	Domain               string   `protobuf:"bytes,4,opt,name=domain,proto3" json:"domain,omitempty"`
+	Proxy                string   `protobuf:"bytes,5,opt,name=proxy,proto3" json:"proxy,omitempty"`
+	Port                 uint32   `protobuf:"varint,6,opt,name=port,proto3" json:"port,omitempty"`
+	SipDisplayName       string   `protobuf:"bytes,7,opt,name=sipDisplayName,proto3" json:"sipDisplayName,omitempty"`
+	Realm                string   `protobuf:"bytes,8,opt,name=realm,proto3" json:"realm,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *VoipUserProfile) Reset()         { *m = VoipUserProfile{} }
+func (m *VoipUserProfile) String() string { return proto.CompactTextString(m) }
+func (*VoipUserProfile) ProtoMessage()    {}
+func (*VoipUserProfile) Descriptor() ([]byte, []int) {
+	return fileDescriptor_0ecf0ef501fce1bc, []int{1}
+}
+
+func (m *VoipUserProfile) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_VoipUserProfile.Unmarshal(m, b)
+}
+func (m *VoipUserProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_VoipUserProfile.Marshal(b, m, deterministic)
+}
+func (m *VoipUserProfile) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_VoipUserProfile.Merge(m, src)
+}
+func (m *VoipUserProfile) XXX_Size() int {
+	return xxx_messageInfo_VoipUserProfile.Size(m)
+}
+func (m *VoipUserProfile) XXX_DiscardUnknown() {
+	xxx_messageInfo_VoipUserProfile.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_VoipUserProfile proto.InternalMessageInfo
+
+func (m *VoipUserProfile) GetVoipSystemProfileKey() string {
+	if m != nil {
+		return m.VoipSystemProfileKey
+	}
+	return ""
+}
+
+func (m *VoipUserProfile) GetUsername() string {
+	if m != nil {
+		return m.Username
+	}
+	return ""
+}
+
+func (m *VoipUserProfile) GetPassword() string {
+	if m != nil {
+		return m.Password
+	}
+	return ""
+}
+
+func (m *VoipUserProfile) GetDomain() string {
+	if m != nil {
+		return m.Domain
+	}
+	return ""
+}
+
+func (m *VoipUserProfile) GetProxy() string {
+	if m != nil {
+		return m.Proxy
+	}
+	return ""
+}
+
+func (m *VoipUserProfile) GetPort() uint32 {
+	if m != nil {
+		return m.Port
+	}
+	return 0
+}
+
+func (m *VoipUserProfile) GetSipDisplayName() string {
+	if m != nil {
+		return m.SipDisplayName
+	}
+	return ""
+}
+
+func (m *VoipUserProfile) GetRealm() string {
+	if m != nil {
+		return m.Realm
+	}
+	return ""
+}
+
+func init() {
+	proto.RegisterType((*VoipUserProfileRequest)(nil), "voip_user_profile.VoipUserProfileRequest")
+	proto.RegisterType((*VoipUserProfile)(nil), "voip_user_profile.VoipUserProfile")
+}
+
+func init() {
+	proto.RegisterFile("voltha_protos/voip_user_profile.proto", fileDescriptor_0ecf0ef501fce1bc)
+}
+
+var fileDescriptor_0ecf0ef501fce1bc = []byte{
+	// 322 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x52, 0xcb, 0x4b, 0x33, 0x31,
+	0x10, 0x67, 0xbf, 0x3e, 0xbe, 0x76, 0x44, 0xab, 0xa1, 0x94, 0x50, 0x3c, 0x94, 0x42, 0xa5, 0x17,
+	0x77, 0xa1, 0xe2, 0xc1, 0xab, 0x78, 0x53, 0x44, 0x56, 0xf4, 0xe0, 0xa5, 0xa4, 0x6d, 0xdc, 0x06,
+	0x77, 0x77, 0x62, 0x92, 0xd6, 0xee, 0x1f, 0x2f, 0x48, 0x92, 0x6e, 0xc1, 0x5d, 0x6f, 0xf3, 0x7b,
+	0xcd, 0x0c, 0xc9, 0xc0, 0x64, 0x8b, 0xa9, 0x59, 0xb3, 0xb9, 0x54, 0x68, 0x50, 0x47, 0x5b, 0x14,
+	0x72, 0xbe, 0xd1, 0x5c, 0x59, 0xe2, 0x5d, 0xa4, 0x3c, 0x74, 0x02, 0x39, 0xab, 0x09, 0xc3, 0xf3,
+	0x04, 0x31, 0x49, 0x79, 0xc4, 0xa4, 0x88, 0x58, 0x9e, 0xa3, 0x61, 0x46, 0x60, 0xae, 0x7d, 0x60,
+	0xbc, 0x83, 0xc1, 0x2b, 0x0a, 0xf9, 0xa2, 0xb9, 0x7a, 0xf2, 0x81, 0x98, 0x7f, 0x6e, 0xb8, 0x36,
+	0xe4, 0x14, 0x1a, 0x1f, 0xbc, 0xa0, 0xc1, 0x28, 0x98, 0x76, 0x63, 0x5b, 0x92, 0x07, 0xe8, 0x6d,
+	0x7f, 0x7b, 0xe9, 0xbf, 0x51, 0x30, 0x3d, 0x9a, 0x8d, 0xc3, 0xfa, 0x3e, 0xd5, 0xae, 0xd5, 0xe8,
+	0xf8, 0x3b, 0x80, 0x5e, 0xc5, 0x44, 0x66, 0xd0, 0xb7, 0xb6, 0xe7, 0x42, 0x1b, 0x9e, 0xed, 0xc9,
+	0xfb, 0xc3, 0x12, 0x7f, 0x6a, 0x64, 0x08, 0x1d, 0x3b, 0x38, 0x67, 0x99, 0x5f, 0xa7, 0x1b, 0x1f,
+	0xb0, 0xd5, 0x24, 0xd3, 0xfa, 0x0b, 0xd5, 0x8a, 0x36, 0xbc, 0x56, 0x62, 0x32, 0x80, 0xf6, 0x0a,
+	0x33, 0x26, 0x72, 0xda, 0x74, 0xca, 0x1e, 0x91, 0x3e, 0xb4, 0xa4, 0xc2, 0x5d, 0x41, 0x5b, 0x8e,
+	0xf6, 0x80, 0x10, 0x68, 0x4a, 0x54, 0x86, 0xb6, 0x47, 0xc1, 0xf4, 0x38, 0x76, 0x35, 0xb9, 0x80,
+	0x13, 0x2d, 0xe4, 0x9d, 0xd0, 0x32, 0x65, 0xc5, 0xa3, 0x9d, 0xff, 0xdf, 0x45, 0x2a, 0xac, 0xed,
+	0xa8, 0x38, 0x4b, 0x33, 0xda, 0xf1, 0x1d, 0x1d, 0xb8, 0x5d, 0xc0, 0x04, 0x55, 0x12, 0xa2, 0xe4,
+	0xf9, 0x12, 0xd5, 0x2a, 0xf4, 0x1f, 0x5c, 0x7f, 0xc9, 0xb7, 0x9b, 0x44, 0x98, 0xf5, 0x66, 0x11,
+	0x2e, 0x31, 0x8b, 0x4a, 0x77, 0xe4, 0xdd, 0x97, 0xe5, 0x39, 0x5c, 0x47, 0x09, 0xd6, 0x8f, 0x62,
+	0xd1, 0x76, 0xfa, 0xd5, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x84, 0x23, 0x54, 0x5a, 0x3e, 0x02,
+	0x00, 0x00,
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/voltha/voltha.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/voltha.pb.go
index 217a597..acd0402 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/voltha/voltha.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/voltha.pb.go
@@ -13,6 +13,8 @@
 	health "github.com/opencord/voltha-protos/v5/go/health"
 	omci "github.com/opencord/voltha-protos/v5/go/omci"
 	openflow_13 "github.com/opencord/voltha-protos/v5/go/openflow_13"
+	voip_system_profile "github.com/opencord/voltha-protos/v5/go/voip_system_profile"
+	voip_user_profile "github.com/opencord/voltha-protos/v5/go/voip_user_profile"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
 	grpc "google.golang.org/grpc"
 	codes "google.golang.org/grpc/codes"
@@ -31,6 +33,9 @@
 // proto package needs to be updated.
 const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
+// Key from public import voltha_protos/common.proto
+type Key = common.Key
+
 // ID from public import voltha_protos/common.proto
 type ID = common.ID
 
@@ -86,6 +91,7 @@
 const OperStatus_FAILED = OperStatus_Types(common.OperStatus_FAILED)
 const OperStatus_RECONCILING = OperStatus_Types(common.OperStatus_RECONCILING)
 const OperStatus_RECONCILING_FAILED = OperStatus_Types(common.OperStatus_RECONCILING_FAILED)
+const OperStatus_REBOOTED = OperStatus_Types(common.OperStatus_REBOOTED)
 
 // ConnectStatus_Types from public import voltha_protos/common.proto
 type ConnectStatus_Types = common.ConnectStatus_Types
@@ -303,141 +309,149 @@
 func init() { proto.RegisterFile("voltha_protos/voltha.proto", fileDescriptor_e084f1a60ce7016c) }
 
 var fileDescriptor_e084f1a60ce7016c = []byte{
-	// 2130 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0xeb, 0x6e, 0x1b, 0xb9,
-	0x15, 0xde, 0x71, 0x76, 0x73, 0xa1, 0x25, 0xdb, 0xa2, 0x7c, 0x91, 0x25, 0xf9, 0xc6, 0x64, 0xb3,
-	0x5e, 0x25, 0x91, 0x92, 0x38, 0xd9, 0xb6, 0xd9, 0x2e, 0x0a, 0xaf, 0x6f, 0xf5, 0x36, 0x81, 0x0d,
-	0x29, 0x71, 0xda, 0x62, 0xb3, 0xc2, 0x48, 0x43, 0xcb, 0x83, 0x8e, 0x66, 0xd4, 0x21, 0x65, 0x27,
-	0x30, 0xf6, 0x4f, 0x2f, 0x40, 0x8a, 0xa2, 0xe8, 0x8f, 0x7d, 0x8b, 0x3e, 0x45, 0xff, 0xf5, 0x01,
-	0xfa, 0x0a, 0x7d, 0x90, 0x82, 0x87, 0xa4, 0x3c, 0xd4, 0xcc, 0xc8, 0x56, 0xba, 0x40, 0xff, 0x58,
-	0x26, 0x0f, 0xf9, 0x7d, 0x1f, 0xcf, 0x39, 0xbc, 0x0e, 0x2a, 0x9e, 0x06, 0x1e, 0x3f, 0xb1, 0x9b,
-	0xbd, 0x30, 0xe0, 0x01, 0xab, 0xc9, 0x52, 0x15, 0x4a, 0xf8, 0xba, 0x2c, 0x15, 0xcb, 0x9d, 0x20,
-	0xe8, 0x78, 0xb4, 0x66, 0xf7, 0xdc, 0x9a, 0xed, 0xfb, 0x01, 0xb7, 0xb9, 0x1b, 0xf8, 0x4c, 0xb6,
-	0x2a, 0x96, 0x94, 0x15, 0x4a, 0xad, 0xfe, 0x71, 0x8d, 0x76, 0x7b, 0xfc, 0x9d, 0x32, 0x0e, 0xc1,
-	0xb7, 0x83, 0x6e, 0x37, 0xf0, 0x93, 0x6d, 0x27, 0xd4, 0xf6, 0xf8, 0x89, 0xb2, 0x11, 0xd3, 0xe6,
-	0x05, 0x1d, 0xb7, 0x6d, 0x7b, 0x4d, 0x87, 0x9e, 0xba, 0x6d, 0x9a, 0xdc, 0xdf, 0xb0, 0x95, 0x4c,
-	0x9b, 0xed, 0xd8, 0x3d, 0x4e, 0x43, 0x65, 0x5c, 0x31, 0x8d, 0x41, 0x8f, 0xfa, 0xc7, 0x5e, 0x70,
-	0xd6, 0x7c, 0xb4, 0x91, 0x8c, 0x4c, 0x4f, 0xa9, 0xcf, 0xf5, 0x70, 0x97, 0x87, 0x6c, 0x6f, 0x39,
-	0xf5, 0x59, 0xc4, 0x1d, 0xc3, 0xe0, 0xdd, 0xb6, 0xdb, 0xec, 0xba, 0xad, 0xa6, 0xd3, 0x52, 0x0d,
-	0xd6, 0x12, 0x1a, 0xd8, 0x9e, 0x1d, 0x76, 0x2f, 0x9a, 0x2c, 0x25, 0x34, 0xe1, 0x94, 0x71, 0x69,
-	0x26, 0x6f, 0x50, 0x66, 0x2b, 0x08, 0xe9, 0xbe, 0xcf, 0xb8, 0xed, 0xb7, 0x29, 0x5e, 0x41, 0x93,
-	0xae, 0xfa, 0xbf, 0xe9, 0x3a, 0x05, 0x6b, 0xd5, 0x5a, 0xbf, 0x55, 0x47, 0xba, 0x6a, 0xdf, 0xc1,
-	0xf7, 0xd1, 0x75, 0xe9, 0xdd, 0xc2, 0xc4, 0xaa, 0xb5, 0x3e, 0xf9, 0x78, 0xb6, 0xaa, 0x9c, 0xfd,
-	0x4b, 0xf8, 0x69, 0x70, 0x9b, 0xf7, 0x59, 0x5d, 0xb5, 0x21, 0x5f, 0xa2, 0x6c, 0x14, 0x9e, 0xe1,
-	0x0a, 0xfa, 0xc4, 0xe5, 0xb4, 0xcb, 0x0a, 0xd6, 0xea, 0x35, 0xe8, 0xad, 0xb2, 0x24, 0xda, 0xaa,
-	0x2e, 0x9b, 0x90, 0x7f, 0x5e, 0x43, 0xd7, 0x8f, 0xc0, 0x8c, 0x0b, 0xe8, 0xc6, 0x29, 0x0d, 0x85,
-	0x6f, 0x94, 0x24, 0x5d, 0xc4, 0xf7, 0xd1, 0x4d, 0x15, 0x11, 0x56, 0x98, 0x00, 0xcc, 0x99, 0xaa,
-	0x0e, 0xd1, 0xa6, 0xfc, 0xad, 0x0f, 0x5a, 0xe0, 0x5d, 0x34, 0x6d, 0xc6, 0x9f, 0x15, 0xae, 0x41,
-	0xa7, 0xa5, 0xea, 0x50, 0x5e, 0x3c, 0x97, 0xc5, 0x6d, 0x28, 0xd5, 0xa7, 0xbc, 0x68, 0x91, 0xe1,
-	0x75, 0x74, 0x43, 0xf7, 0xff, 0x18, 0xfa, 0x4f, 0x55, 0x55, 0x3f, 0xd5, 0x41, 0x9b, 0xf1, 0x53,
-	0x94, 0x91, 0xff, 0x36, 0xf9, 0xbb, 0x1e, 0x65, 0x85, 0x4f, 0xa0, 0x39, 0x36, 0x9b, 0xbf, 0x7c,
-	0xd7, 0xa3, 0xf5, 0x49, 0x67, 0xf0, 0x3f, 0xc3, 0x3f, 0x41, 0x59, 0x48, 0x95, 0xe6, 0xb1, 0xeb,
-	0xc1, 0xd8, 0x6e, 0xa8, 0x7e, 0x50, 0x5b, 0xdd, 0x11, 0x7f, 0x77, 0xc1, 0x54, 0xcf, 0xd0, 0x8b,
-	0x02, 0xc3, 0xbf, 0x40, 0xb9, 0x8b, 0x3c, 0xb1, 0xb9, 0xdd, 0xb2, 0x19, 0x2d, 0x94, 0xa1, 0x73,
-	0xbe, 0x2a, 0x2c, 0xd5, 0x17, 0x6e, 0x4b, 0xb2, 0x6e, 0xdb, 0xdc, 0xae, 0x4f, 0x8b, 0x3a, 0x51,
-	0xa5, 0xda, 0xe2, 0x1d, 0x94, 0x8f, 0xe6, 0x91, 0x86, 0x58, 0x02, 0x88, 0x39, 0x09, 0xb1, 0x29,
-	0x6c, 0x11, 0x10, 0xa0, 0x94, 0x95, 0xaa, 0xfd, 0x37, 0x1f, 0xdf, 0xbc, 0x3e, 0x73, 0xe3, 0xf1,
-	0xbf, 0x36, 0x50, 0x56, 0x86, 0xb0, 0x41, 0x43, 0xd1, 0x1c, 0x6f, 0xa3, 0x5b, 0x7b, 0x94, 0xab,
-	0xb0, 0xce, 0x57, 0xe5, 0x84, 0xaf, 0xea, 0x09, 0x5f, 0xdd, 0x11, 0x13, 0xbe, 0x38, 0xa5, 0xd3,
-	0x42, 0xb6, 0x23, 0xd3, 0x7f, 0xf8, 0xf7, 0x7f, 0x7e, 0x98, 0xb8, 0x85, 0x6f, 0xc0, 0xba, 0x71,
-	0xfa, 0x08, 0xbf, 0x41, 0xb9, 0xe7, 0x2e, 0xe3, 0x66, 0x6e, 0xa5, 0xa1, 0xcd, 0x25, 0x25, 0x19,
-	0x23, 0x8b, 0x00, 0x9a, 0xc7, 0x39, 0x05, 0x5a, 0x73, 0x07, 0x48, 0x0d, 0x34, 0xbd, 0x47, 0x0d,
-	0x74, 0x8c, 0xaa, 0x6a, 0xc1, 0xd9, 0xdf, 0x2e, 0x26, 0x66, 0x2d, 0x59, 0x06, 0xbc, 0x02, 0x9e,
-	0x8f, 0xe1, 0xd5, 0xce, 0x5d, 0xe7, 0x7b, 0xdc, 0x40, 0x19, 0xa1, 0x79, 0x53, 0xe7, 0x62, 0x9a,
-	0xdc, 0xdc, 0x70, 0xfe, 0x32, 0x52, 0x00, 0x68, 0x8c, 0x67, 0x34, 0xf4, 0x20, 0xa1, 0xbb, 0x08,
-	0x0b, 0xd0, 0xe7, 0x66, 0x7a, 0xa6, 0x41, 0x2f, 0x8f, 0xcc, 0x72, 0x46, 0x56, 0x80, 0x67, 0x11,
-	0x2f, 0x68, 0x9e, 0xa1, 0xc9, 0x82, 0xdb, 0x68, 0x66, 0x8f, 0x9a, 0x6c, 0x86, 0x67, 0x46, 0x4f,
-	0x23, 0x72, 0x07, 0xf0, 0x97, 0x71, 0x39, 0x05, 0x5f, 0x3a, 0xca, 0x47, 0xf3, 0xb1, 0x31, 0x1d,
-	0x06, 0x21, 0x67, 0x06, 0x55, 0x39, 0x85, 0x0a, 0x5a, 0x92, 0x0a, 0x30, 0xdd, 0xc1, 0x64, 0x14,
-	0x53, 0xad, 0x07, 0xa8, 0xef, 0x2d, 0x34, 0x3b, 0x3c, 0x2a, 0x81, 0x82, 0x97, 0x46, 0x50, 0xec,
-	0x3b, 0xc5, 0xd2, 0x08, 0x33, 0x79, 0x02, 0x02, 0xaa, 0xf8, 0xfe, 0xe5, 0x02, 0x6a, 0xe7, 0xe2,
-	0xa7, 0x29, 0x86, 0xfe, 0x37, 0x0b, 0x2d, 0xec, 0xf8, 0x76, 0xcb, 0xa3, 0x63, 0xab, 0x49, 0x89,
-	0x39, 0xf9, 0x12, 0x84, 0x3c, 0x25, 0x1b, 0xe3, 0x08, 0xa9, 0x51, 0x10, 0x81, 0xff, 0x6e, 0xa1,
-	0xc2, 0xb6, 0xcb, 0x7e, 0x54, 0x41, 0x3f, 0x07, 0x41, 0x5f, 0x90, 0x27, 0x63, 0x09, 0x72, 0xa4,
-	0x0a, 0xec, 0x24, 0x24, 0xc7, 0xae, 0x17, 0x9c, 0x99, 0xc9, 0x81, 0xab, 0xd1, 0x9d, 0x18, 0xec,
-	0x57, 0x4c, 0x89, 0x63, 0xc0, 0xfa, 0xa3, 0x85, 0xca, 0xaf, 0x7a, 0x8e, 0xcd, 0x69, 0x8c, 0xe8,
-	0x25, 0xc8, 0x28, 0xc7, 0x08, 0xa0, 0x5e, 0xf6, 0x49, 0x1d, 0xfa, 0x03, 0x90, 0xf0, 0x19, 0xb9,
-	0x82, 0x84, 0x67, 0x56, 0x05, 0xff, 0xc9, 0x42, 0x4b, 0x09, 0x2a, 0x5e, 0x50, 0x4e, 0x43, 0x29,
-	0xa3, 0x64, 0xc8, 0x00, 0xc3, 0x8b, 0xc0, 0xb9, 0x44, 0x45, 0x15, 0x54, 0xac, 0x93, 0xdb, 0x23,
-	0x55, 0x74, 0x05, 0x18, 0xc8, 0xe8, 0xa0, 0x85, 0x98, 0xcb, 0x81, 0xca, 0xf4, 0x79, 0x3e, 0xae,
-	0x85, 0x91, 0x7b, 0xc0, 0xf5, 0x29, 0xbe, 0x0a, 0x17, 0xe6, 0xa8, 0x94, 0x18, 0xdb, 0xbd, 0x30,
-	0xe8, 0xf7, 0x4c, 0xb2, 0x85, 0x98, 0xff, 0x65, 0x23, 0xf2, 0x10, 0x08, 0x2b, 0x78, 0xfd, 0x52,
-	0x17, 0x37, 0x3b, 0x12, 0xf6, 0x07, 0x0b, 0xad, 0xa5, 0xc4, 0x1a, 0x30, 0xa5, 0xa7, 0xd7, 0x92,
-	0x09, 0xaf, 0x12, 0xf5, 0x0d, 0x90, 0xf4, 0x80, 0x5c, 0x59, 0x92, 0x70, 0xfa, 0x01, 0x9a, 0x14,
-	0xbe, 0xb8, 0x6c, 0x45, 0x9f, 0x36, 0x0f, 0x12, 0x8c, 0x2c, 0x00, 0x59, 0x0e, 0x4f, 0x6b, 0x32,
-	0xbd, 0x74, 0x1f, 0xa0, 0xec, 0x05, 0xe0, 0xbe, 0x93, 0x0e, 0x39, 0x79, 0xe1, 0xe6, 0x84, 0x4d,
-	0x52, 0xc2, 0xb9, 0x0e, 0xc3, 0xaf, 0xd0, 0x4c, 0x9d, 0xb6, 0x03, 0xbf, 0xed, 0x7a, 0x54, 0xcb,
-	0x8c, 0xf6, 0x4d, 0xf5, 0x47, 0x19, 0x30, 0xe7, 0x49, 0x1c, 0x53, 0x0c, 0x7c, 0x07, 0x0e, 0x08,
-	0x09, 0x7b, 0xcb, 0xd0, 0x11, 0x4b, 0xc3, 0xe0, 0xd9, 0xa1, 0x91, 0xca, 0x4d, 0xe4, 0x1b, 0x94,
-	0xd9, 0x0a, 0xa9, 0xcd, 0x95, 0x34, 0x3c, 0xd4, 0x3b, 0x86, 0x56, 0x04, 0xb4, 0x59, 0x32, 0xec,
-	0x37, 0x21, 0xe9, 0x35, 0xca, 0xc8, 0x45, 0x39, 0x41, 0x55, 0xda, 0x20, 0x6f, 0x03, 0xde, 0x12,
-	0x29, 0x25, 0xa9, 0xd3, 0xcb, 0xeb, 0x6f, 0x50, 0x56, 0xad, 0xae, 0x63, 0x20, 0xab, 0x4d, 0x94,
-	0x94, 0x13, 0x91, 0xf5, 0x3a, 0xf9, 0x1a, 0x65, 0xea, 0xb4, 0x15, 0x04, 0xfc, 0x47, 0xd3, 0x1c,
-	0x02, 0x9c, 0x00, 0xde, 0xa6, 0x1e, 0xe5, 0x1f, 0xe0, 0x8c, 0x4a, 0x32, 0xb0, 0x03, 0x70, 0xb8,
-	0x85, 0x72, 0xbb, 0x41, 0xd8, 0xa6, 0x63, 0xa3, 0x7f, 0x0e, 0xe8, 0xb7, 0x2b, 0x6b, 0x89, 0xe8,
-	0xc7, 0x02, 0xb3, 0xa9, 0x38, 0xde, 0xa2, 0xec, 0x76, 0x70, 0xe6, 0x7b, 0x81, 0xed, 0xec, 0x77,
-	0xed, 0x0e, 0xc5, 0x73, 0x3a, 0x0d, 0xa0, 0xa8, 0x6d, 0xc5, 0x39, 0x4d, 0x7b, 0xd0, 0xa3, 0x21,
-	0x5c, 0x51, 0xeb, 0x94, 0xf5, 0xc8, 0xcf, 0x80, 0xe9, 0x21, 0xb9, 0x97, 0xc8, 0xe4, 0x0a, 0x88,
-	0xa6, 0xa3, 0x30, 0x58, 0xed, 0xdc, 0xb7, 0xbb, 0xf4, 0xfb, 0x67, 0x56, 0xe5, 0xfd, 0x84, 0x85,
-	0xff, 0x6c, 0xa1, 0xf9, 0x3d, 0xca, 0x0d, 0x1a, 0x79, 0x59, 0x4a, 0xd7, 0x90, 0x54, 0x4d, 0xbe,
-	0x02, 0x0d, 0x4f, 0xf0, 0xe3, 0x31, 0x34, 0xd4, 0x18, 0x30, 0x09, 0x1d, 0x6f, 0xe1, 0x04, 0x67,
-	0x40, 0x8e, 0x29, 0xe0, 0x0b, 0xb9, 0x9c, 0xe1, 0x71, 0x9c, 0x20, 0x98, 0x5d, 0x79, 0x54, 0x35,
-	0xc0, 0xd8, 0x50, 0x80, 0x93, 0x08, 0x19, 0xa9, 0x01, 0xe3, 0x5d, 0x7c, 0xe7, 0x2a, 0x8c, 0x82,
-	0xea, 0x1c, 0xe5, 0xb7, 0xc4, 0xc9, 0xdb, 0xbb, 0xe2, 0x38, 0x13, 0x83, 0xad, 0xc6, 0x59, 0x19,
-	0x77, 0x9c, 0x7f, 0xb5, 0x50, 0x7e, 0xb3, 0xcd, 0xdd, 0x53, 0x9b, 0x53, 0x20, 0x92, 0xdb, 0xc3,
-	0x98, 0xec, 0xbb, 0xc0, 0xfe, 0x15, 0xf9, 0xe9, 0x38, 0x61, 0x96, 0xd5, 0x7d, 0xe0, 0x53, 0x79,
-	0xf7, 0x17, 0x0b, 0xe5, 0xea, 0xf4, 0x94, 0x86, 0xfc, 0xff, 0xa2, 0x25, 0x04, 0x6a, 0xa5, 0xe5,
-	0xbd, 0x85, 0xe6, 0x8c, 0xe9, 0xf7, 0x32, 0x50, 0xd3, 0x9c, 0x98, 0xab, 0xb1, 0xa1, 0xaa, 0x4e,
-	0x7f, 0xdf, 0xa7, 0x8c, 0x17, 0x4b, 0x09, 0x6d, 0x84, 0xbc, 0xc0, 0x67, 0x54, 0x9f, 0x69, 0xf0,
-	0xdd, 0x61, 0x89, 0x20, 0x83, 0xd5, 0xb4, 0xbc, 0xa6, 0x2c, 0xe3, 0x33, 0x34, 0xa5, 0xa7, 0x81,
-	0x9a, 0x85, 0xc5, 0x44, 0xf8, 0x2b, 0x50, 0xdf, 0x4f, 0xcb, 0x4e, 0x45, 0x2d, 0x7f, 0x9a, 0x72,
-	0x0a, 0x8a, 0x78, 0x2c, 0x6e, 0xb6, 0x82, 0x41, 0x38, 0x3a, 0xa1, 0xed, 0x5c, 0xf8, 0xe1, 0x83,
-	0x45, 0x6c, 0xa4, 0x4d, 0x4a, 0x25, 0xc2, 0x16, 0x94, 0xcd, 0xbe, 0xa4, 0xd3, 0x4e, 0x38, 0x42,
-	0x99, 0x3d, 0xca, 0x0f, 0xfc, 0xfe, 0xbe, 0x2c, 0x47, 0xe7, 0x62, 0x4e, 0xb3, 0x0d, 0xcc, 0xe4,
-	0x33, 0xe0, 0x58, 0xc3, 0x2b, 0x89, 0x69, 0x10, 0xf8, 0x7d, 0x8d, 0x7b, 0x8e, 0xb2, 0xc6, 0x04,
-	0xf8, 0xf0, 0x61, 0x3d, 0x02, 0xca, 0x7b, 0x24, 0x2d, 0xac, 0xb6, 0xa2, 0x51, 0xcc, 0x62, 0xb3,
-	0x3e, 0x43, 0x93, 0x5b, 0x41, 0xb7, 0xeb, 0xf2, 0xff, 0x91, 0x5a, 0x2e, 0x3a, 0x9f, 0x93, 0xb4,
-	0xb0, 0xb6, 0x81, 0x24, 0x42, 0x7c, 0x88, 0xa6, 0x2f, 0x0e, 0x58, 0xf1, 0xfb, 0x6a, 0x56, 0x93,
-	0xc9, 0x0b, 0x2a, 0x01, 0xf8, 0x32, 0x2e, 0x26, 0x3a, 0x53, 0x5e, 0x4c, 0xdf, 0xa0, 0x7c, 0x04,
-	0xb1, 0xbb, 0x15, 0xf8, 0xc7, 0x6e, 0x27, 0x25, 0x4c, 0x03, 0xf3, 0x25, 0x61, 0xea, 0x75, 0x9b,
-	0x6d, 0x85, 0xe3, 0xa3, 0x39, 0xb9, 0x1c, 0x0c, 0x13, 0xc4, 0x41, 0x53, 0xf7, 0x5e, 0x75, 0xa9,
-	0x22, 0x97, 0x91, 0x09, 0x07, 0xbd, 0x8a, 0x3a, 0xe8, 0x6a, 0x77, 0xb6, 0xd1, 0x5e, 0x92, 0x77,
-	0x35, 0x8a, 0x66, 0x4d, 0xd8, 0x71, 0xae, 0x0b, 0xeb, 0x40, 0x40, 0xf0, 0x6a, 0x2a, 0x81, 0xbe,
-	0x26, 0x7c, 0x1b, 0x55, 0x2f, 0x1f, 0xe9, 0xd2, 0x4e, 0xd0, 0xf9, 0xf8, 0xeb, 0x1e, 0x4b, 0x3b,
-	0xae, 0xca, 0x67, 0x41, 0x5c, 0x47, 0xd9, 0xc1, 0xa9, 0x57, 0xb4, 0x1f, 0xf2, 0x4c, 0x0c, 0x8f,
-	0xac, 0x01, 0x5c, 0x09, 0x2f, 0x26, 0xc1, 0xc9, 0x23, 0xf0, 0x2e, 0x9a, 0x69, 0xf0, 0x90, 0xda,
-	0xdd, 0x43, 0xbb, 0xfd, 0x3b, 0xca, 0xd9, 0x41, 0x9f, 0xe3, 0x79, 0xc3, 0x11, 0xd2, 0x70, 0xd0,
-	0xe7, 0xa9, 0xf1, 0xfd, 0x68, 0xdd, 0xc2, 0x3b, 0x70, 0xd0, 0xa7, 0xee, 0x29, 0x55, 0x40, 0xfb,
-	0xfe, 0x88, 0xb7, 0xb6, 0x38, 0xfe, 0xbe, 0x4f, 0x3e, 0x7a, 0x68, 0xe1, 0x5f, 0xa1, 0xbc, 0x82,
-	0xd9, 0x3a, 0xb1, 0xfd, 0x0e, 0x85, 0x37, 0xcc, 0x74, 0x27, 0x16, 0x0c, 0xa4, 0x48, 0x17, 0x00,
-	0x7b, 0x83, 0x72, 0xf2, 0x78, 0x1f, 0x79, 0x09, 0xc5, 0x09, 0xaf, 0xa3, 0xc5, 0x84, 0x3a, 0xb2,
-	0x0a, 0xbe, 0x2b, 0x92, 0x39, 0xed, 0x3b, 0xe3, 0xa9, 0x55, 0xa6, 0xaa, 0xd8, 0x1e, 0xa2, 0xd8,
-	0xe6, 0x4d, 0x37, 0x86, 0x99, 0x90, 0xaa, 0x06, 0xa8, 0x8c, 0x48, 0x0b, 0xe5, 0xe4, 0x8c, 0xfb,
-	0x10, 0xd5, 0x9f, 0x02, 0xc1, 0x4a, 0x71, 0x04, 0x81, 0x90, 0xde, 0x46, 0x39, 0x79, 0x82, 0xbe,
-	0x8c, 0x23, 0x2d, 0xe4, 0x6a, 0x20, 0x95, 0x51, 0x03, 0xf9, 0x0e, 0xcd, 0x88, 0xc9, 0x10, 0x75,
-	0xc0, 0x88, 0xd9, 0x90, 0xe0, 0xad, 0x25, 0x20, 0x59, 0xc0, 0xc9, 0x21, 0xc0, 0xcf, 0xe1, 0x12,
-	0x98, 0xb0, 0x2d, 0x4d, 0x19, 0x07, 0x17, 0xa6, 0x6f, 0x16, 0xb8, 0x94, 0x7e, 0x34, 0x61, 0xf8,
-	0xd7, 0xe8, 0x66, 0x83, 0x7a, 0xc7, 0x2f, 0x29, 0xe3, 0x06, 0x58, 0x41, 0x83, 0x69, 0xeb, 0x60,
-	0xf1, 0xbf, 0x0b, 0xb0, 0xab, 0x64, 0x39, 0x11, 0x96, 0x51, 0xef, 0x18, 0x3e, 0xa2, 0xe0, 0x23,
-	0x38, 0x4d, 0x1b, 0x2f, 0xea, 0xc3, 0x6f, 0x22, 0xb1, 0x27, 0xf7, 0xf8, 0xd4, 0x15, 0x89, 0x2e,
-	0xda, 0xa9, 0xc7, 0x10, 0xb7, 0x85, 0xbf, 0x45, 0x78, 0x8f, 0xf2, 0xa1, 0x67, 0x76, 0x03, 0x39,
-	0xf9, 0x25, 0x3e, 0xee, 0x0f, 0x13, 0x1b, 0x1e, 0xf5, 0x31, 0x43, 0xd9, 0x86, 0xdb, 0xed, 0x7b,
-	0x36, 0xa7, 0xd0, 0x1f, 0x97, 0x07, 0x8e, 0x88, 0x56, 0xeb, 0x6d, 0x32, 0xe5, 0x54, 0x18, 0x7b,
-	0xcc, 0x32, 0x7d, 0xa4, 0x90, 0x9a, 0x02, 0x49, 0xe4, 0xe5, 0x0b, 0x84, 0xe4, 0x25, 0x1a, 0xde,
-	0x0e, 0x33, 0xd1, 0xdd, 0x30, 0x35, 0x15, 0xd5, 0xeb, 0x03, 0x99, 0x12, 0xf0, 0x17, 0xbd, 0xd5,
-	0xfb, 0x88, 0xba, 0x3a, 0x8f, 0x81, 0x77, 0x71, 0xc9, 0x3f, 0x7d, 0x54, 0x8b, 0x74, 0x17, 0x80,
-	0xdf, 0xa1, 0x49, 0x31, 0xe5, 0xdf, 0xf2, 0x23, 0xdb, 0xeb, 0x53, 0xbc, 0x58, 0x1d, 0x7c, 0x8e,
-	0xab, 0x42, 0x4d, 0xa3, 0x47, 0xdb, 0xee, 0xb1, 0x4b, 0xc3, 0xe2, 0x42, 0xc4, 0x54, 0xa7, 0xbc,
-	0x1f, 0xfa, 0xd0, 0x80, 0x91, 0x12, 0xc0, 0xcf, 0xe1, 0xbc, 0xf6, 0x48, 0x14, 0xf0, 0x35, 0x9a,
-	0x6c, 0x44, 0x8a, 0xf9, 0x18, 0x3e, 0x4d, 0xd7, 0x1d, 0x03, 0x8e, 0x22, 0x39, 0x28, 0xdf, 0xe0,
-	0x76, 0xc8, 0x0f, 0xba, 0x6d, 0x57, 0x24, 0xb1, 0x38, 0x7a, 0x05, 0x3e, 0x56, 0x09, 0xa2, 0x6b,
-	0x75, 0x30, 0xb1, 0xac, 0x36, 0xb2, 0x5d, 0xcd, 0x78, 0x32, 0x78, 0xf6, 0x67, 0x02, 0xaf, 0x39,
-	0xf8, 0x56, 0xf8, 0xcc, 0xaa, 0x7c, 0xed, 0xa1, 0x7c, 0x10, 0x76, 0x60, 0x4d, 0x6e, 0x07, 0xa1,
-	0xa3, 0xbe, 0x80, 0x7c, 0x9d, 0x91, 0x5f, 0x68, 0x0e, 0xe1, 0xeb, 0xe2, 0x6f, 0xab, 0x1d, 0x97,
-	0x9f, 0xf4, 0x5b, 0x22, 0x5f, 0x6a, 0xba, 0xa5, 0xfa, 0x0e, 0xfc, 0x40, 0x7f, 0x15, 0x7e, 0x5a,
-	0xeb, 0x04, 0xaa, 0xee, 0x1f, 0x13, 0xf3, 0x07, 0x1a, 0xef, 0x28, 0xfa, 0xc1, 0xe7, 0x70, 0xa2,
-	0x75, 0x1d, 0xda, 0x6f, 0xfc, 0x37, 0x00, 0x00, 0xff, 0xff, 0x37, 0x95, 0xcc, 0x79, 0x55, 0x1e,
-	0x00, 0x00,
+	// 2265 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0xeb, 0x6e, 0x1b, 0xc7,
+	0x15, 0xce, 0x2a, 0x89, 0x2f, 0xa3, 0x2b, 0x87, 0xba, 0x50, 0x24, 0x65, 0x4b, 0xe3, 0x9b, 0x4c,
+	0xdb, 0x4b, 0x5f, 0x93, 0x36, 0x69, 0x50, 0x38, 0xba, 0x55, 0x89, 0x0d, 0x09, 0xa4, 0x2d, 0xb7,
+	0x45, 0x1c, 0x62, 0xc9, 0x1d, 0xd2, 0x8b, 0x2c, 0x77, 0xd9, 0x9d, 0xa1, 0x64, 0x41, 0xf0, 0x9f,
+	0xb6, 0x01, 0x5c, 0x14, 0x45, 0x7f, 0xe4, 0x2d, 0xfa, 0xa3, 0xcf, 0xd0, 0x77, 0xe8, 0x2b, 0xf4,
+	0x41, 0x8a, 0x39, 0x33, 0x43, 0xee, 0x95, 0x22, 0xdd, 0x00, 0xfd, 0x63, 0x6a, 0xe6, 0x9c, 0xf9,
+	0xbe, 0x6f, 0xce, 0x9c, 0xb9, 0xae, 0x51, 0xf1, 0xd8, 0x77, 0xf9, 0x1b, 0xab, 0xd1, 0x0b, 0x7c,
+	0xee, 0xb3, 0xaa, 0x2c, 0x99, 0x50, 0xc2, 0x17, 0x64, 0xa9, 0x58, 0xee, 0xf8, 0x7e, 0xc7, 0xa5,
+	0x55, 0xab, 0xe7, 0x54, 0x2d, 0xcf, 0xf3, 0xb9, 0xc5, 0x1d, 0xdf, 0x63, 0xd2, 0xab, 0x58, 0x52,
+	0x56, 0x28, 0x35, 0xfb, 0xed, 0x2a, 0xed, 0xf6, 0xf8, 0xa9, 0x32, 0xc6, 0xe0, 0x5b, 0x7e, 0xb7,
+	0xeb, 0x7b, 0xe9, 0xb6, 0x37, 0xd4, 0x72, 0xf9, 0x1b, 0x65, 0x23, 0x51, 0x9b, 0xeb, 0x77, 0x9c,
+	0x96, 0xe5, 0x36, 0x6c, 0x7a, 0xec, 0xb4, 0x68, 0x7a, 0xfb, 0x88, 0xad, 0x14, 0xb5, 0x59, 0xb6,
+	0xd5, 0xe3, 0x34, 0x50, 0xc6, 0xab, 0x51, 0xa3, 0xdf, 0xa3, 0x5e, 0xdb, 0xf5, 0x4f, 0x1a, 0x0f,
+	0x1e, 0xa5, 0x23, 0xd3, 0x63, 0xea, 0x71, 0xdd, 0xdd, 0x2b, 0x31, 0xdb, 0x5b, 0x4e, 0x3d, 0x16,
+	0x0a, 0xc7, 0xad, 0x78, 0x40, 0x9d, 0x5e, 0x83, 0x9d, 0x32, 0x4e, 0xbb, 0xa2, 0xaa, 0xed, 0xb8,
+	0x5a, 0xe2, 0x8d, 0x14, 0xc7, 0x3e, 0xa3, 0x41, 0xcc, 0x2d, 0x2e, 0xb6, 0xdb, 0x72, 0x1a, 0x5d,
+	0xa7, 0xd9, 0xb0, 0x9b, 0xca, 0x61, 0x23, 0xc5, 0xc1, 0x72, 0xad, 0xa0, 0x3b, 0x74, 0x59, 0x4b,
+	0x71, 0xe1, 0x94, 0x71, 0x69, 0x26, 0xaf, 0xd1, 0xcc, 0x96, 0x1f, 0xd0, 0x7d, 0x8f, 0x71, 0xcb,
+	0x6b, 0x51, 0x7c, 0x15, 0x4d, 0x3b, 0xea, 0xef, 0x86, 0x63, 0x17, 0x8c, 0x75, 0x63, 0xf3, 0x72,
+	0x0d, 0xe9, 0xaa, 0x7d, 0x1b, 0xdf, 0x45, 0x17, 0xe4, 0x68, 0x15, 0xa6, 0xd6, 0x8d, 0xcd, 0xe9,
+	0x87, 0x8b, 0xa6, 0x1a, 0xbc, 0xdf, 0xc0, 0x4f, 0x9d, 0x5b, 0xbc, 0xcf, 0x6a, 0xca, 0x87, 0x7c,
+	0x89, 0x66, 0xc3, 0xf0, 0x0c, 0x57, 0xd0, 0xa7, 0x0e, 0xa7, 0x5d, 0x56, 0x30, 0xd6, 0x3f, 0x86,
+	0xd6, 0x2a, 0xeb, 0xc2, 0x5e, 0x35, 0xe9, 0x42, 0xfe, 0xf5, 0x31, 0xba, 0x70, 0x04, 0x66, 0x5c,
+	0x40, 0x17, 0x8f, 0x69, 0x20, 0x62, 0xad, 0x24, 0xe9, 0x22, 0xbe, 0x8b, 0x2e, 0xa9, 0x11, 0x66,
+	0x85, 0x29, 0xc0, 0x5c, 0x30, 0xf5, 0x90, 0x3f, 0x95, 0xbf, 0xb5, 0x81, 0x07, 0xde, 0x45, 0xf3,
+	0xd1, 0x7c, 0x62, 0x85, 0x8f, 0xa1, 0xd1, 0x9a, 0x19, 0xcb, 0xb3, 0x67, 0xb2, 0xb8, 0x0d, 0xa5,
+	0xda, 0x9c, 0x1b, 0x2e, 0x32, 0xbc, 0x89, 0x2e, 0xea, 0xf6, 0x9f, 0x40, 0xfb, 0x39, 0x53, 0xb5,
+	0x53, 0x0d, 0xb4, 0x19, 0x3f, 0x41, 0x33, 0xf2, 0xcf, 0x06, 0x3f, 0xed, 0x51, 0x56, 0xf8, 0x14,
+	0xdc, 0x71, 0xd4, 0xfd, 0xc5, 0x69, 0x8f, 0xd6, 0xa6, 0xed, 0xc1, 0xdf, 0x0c, 0x7f, 0x8e, 0x66,
+	0x21, 0xf5, 0x1a, 0x6d, 0xc7, 0x85, 0xbe, 0x5d, 0x54, 0xed, 0xa0, 0xd6, 0xdc, 0x11, 0xff, 0xee,
+	0x82, 0xa9, 0x36, 0x43, 0x87, 0x05, 0x86, 0x7f, 0x8d, 0x72, 0xc3, 0x3c, 0xb1, 0xb8, 0xd5, 0xb4,
+	0x18, 0x2d, 0x94, 0xa1, 0x71, 0xde, 0x14, 0x16, 0xf3, 0xb9, 0xd3, 0x94, 0xac, 0xdb, 0x16, 0xb7,
+	0x6a, 0xf3, 0xa2, 0x4e, 0x54, 0x29, 0x5f, 0xbc, 0x83, 0xf2, 0xe1, 0x3c, 0xd2, 0x10, 0x6b, 0x00,
+	0xb1, 0x24, 0x21, 0x9e, 0x0a, 0x5b, 0x08, 0x04, 0x28, 0x65, 0xa5, 0xf2, 0xff, 0xe6, 0x93, 0x4b,
+	0x17, 0x16, 0x2e, 0x3e, 0xfc, 0xe7, 0xe7, 0x68, 0x56, 0x0e, 0x61, 0x9d, 0x06, 0xc2, 0x1d, 0x6f,
+	0xa3, 0xcb, 0x7b, 0x94, 0xab, 0x61, 0x5d, 0x36, 0xe5, 0x02, 0x62, 0xea, 0x05, 0xc4, 0xdc, 0x11,
+	0x0b, 0x48, 0x71, 0x4e, 0xa7, 0x85, 0xf4, 0x23, 0xf3, 0x7f, 0xfc, 0xf7, 0x7f, 0x7e, 0x9a, 0xba,
+	0x8c, 0x2f, 0xc2, 0x3a, 0x74, 0xfc, 0x00, 0xbf, 0x46, 0xb9, 0x67, 0x0e, 0xe3, 0xd1, 0xdc, 0xca,
+	0x42, 0x5b, 0x4a, 0x4b, 0x32, 0x46, 0x56, 0x01, 0x34, 0x8f, 0x73, 0x0a, 0xb4, 0xea, 0x0c, 0x90,
+	0xea, 0x68, 0x7e, 0x8f, 0x46, 0xd0, 0x31, 0x32, 0xd5, 0x02, 0xb6, 0xbf, 0x5d, 0x4c, 0xcd, 0x5a,
+	0x72, 0x05, 0xf0, 0x0a, 0x78, 0x39, 0x81, 0x57, 0x3d, 0x73, 0xec, 0x77, 0xb8, 0x8e, 0x66, 0x84,
+	0xe6, 0xa7, 0x3a, 0x17, 0xb3, 0xe4, 0xe6, 0xe2, 0xf9, 0xcb, 0x48, 0x01, 0xa0, 0x31, 0x5e, 0xd0,
+	0xd0, 0x83, 0x84, 0xee, 0x22, 0x2c, 0x40, 0x9f, 0x45, 0xd3, 0x33, 0x0b, 0xfa, 0xca, 0xc8, 0x2c,
+	0x67, 0xe4, 0x2a, 0xf0, 0xac, 0xe2, 0x15, 0xcd, 0x13, 0x9b, 0x2c, 0xb8, 0x85, 0x16, 0xf6, 0x68,
+	0x94, 0x2d, 0x12, 0x99, 0xd1, 0xd3, 0x88, 0x5c, 0x07, 0xfc, 0x2b, 0xb8, 0x9c, 0x81, 0x2f, 0x03,
+	0xe5, 0xa1, 0xe5, 0x44, 0x9f, 0x0e, 0xfd, 0x80, 0xb3, 0x08, 0x55, 0x39, 0x83, 0x0a, 0x3c, 0x49,
+	0x05, 0x98, 0xae, 0x63, 0x32, 0x8a, 0xa9, 0xda, 0x03, 0xd4, 0xf7, 0x06, 0x5a, 0x8c, 0xf7, 0x4a,
+	0xa0, 0xe0, 0xb5, 0x11, 0x14, 0xfb, 0x76, 0xb1, 0x34, 0xc2, 0x4c, 0x1e, 0x83, 0x00, 0x13, 0xdf,
+	0x3d, 0x5f, 0x40, 0xf5, 0x4c, 0xfc, 0x34, 0x44, 0xd7, 0xff, 0x66, 0xa0, 0x95, 0x1d, 0xcf, 0x6a,
+	0xba, 0x74, 0x62, 0x35, 0x19, 0x63, 0x4e, 0xbe, 0x04, 0x21, 0x4f, 0xc8, 0xa3, 0x49, 0x84, 0x54,
+	0x29, 0x88, 0xc0, 0x7f, 0x37, 0x50, 0x61, 0xdb, 0x61, 0x3f, 0xab, 0xa0, 0x5f, 0x81, 0xa0, 0xcf,
+	0xc8, 0xe3, 0x89, 0x04, 0xd9, 0x52, 0x05, 0xb6, 0x53, 0x92, 0x63, 0xd7, 0xf5, 0x4f, 0xa2, 0xc9,
+	0x81, 0xcd, 0xf0, 0xce, 0x0e, 0xf6, 0x31, 0x53, 0xa2, 0x0d, 0x58, 0x7f, 0x32, 0x50, 0xf9, 0x65,
+	0xcf, 0xb6, 0x38, 0x4d, 0x10, 0xbd, 0x00, 0x19, 0xe5, 0x04, 0x01, 0xd4, 0xcb, 0x36, 0x99, 0x5d,
+	0xbf, 0x07, 0x12, 0x6e, 0x91, 0x31, 0x24, 0x7c, 0x61, 0x54, 0xf0, 0x9f, 0x0d, 0xb4, 0x96, 0xa2,
+	0xe2, 0x39, 0xe5, 0x34, 0x90, 0x32, 0x4a, 0x11, 0x19, 0x60, 0x78, 0xee, 0xdb, 0xe7, 0xa8, 0x30,
+	0x41, 0xc5, 0x26, 0xb9, 0x36, 0x52, 0x45, 0x57, 0x80, 0x81, 0x8c, 0x0e, 0x5a, 0x49, 0x84, 0x1c,
+	0xa8, 0xa2, 0x31, 0xcf, 0x27, 0xb5, 0x30, 0x72, 0x07, 0xb8, 0x6e, 0xe0, 0x71, 0xb8, 0x30, 0x47,
+	0xa5, 0xd4, 0xb1, 0xdd, 0x0b, 0xfc, 0x7e, 0x2f, 0x4a, 0xb6, 0x92, 0x88, 0xbf, 0x74, 0x22, 0xf7,
+	0x81, 0xb0, 0x82, 0x37, 0xcf, 0x0d, 0x71, 0xa3, 0x23, 0x61, 0x7f, 0x32, 0xd0, 0x46, 0xc6, 0x58,
+	0x03, 0xa6, 0x8c, 0xf4, 0x46, 0x3a, 0xe1, 0x38, 0xa3, 0xfe, 0x08, 0x24, 0xdd, 0x23, 0x63, 0x4b,
+	0x12, 0x41, 0x3f, 0x40, 0xd3, 0x22, 0x16, 0xe7, 0xad, 0xe8, 0xf3, 0xd1, 0x83, 0x04, 0x23, 0x2b,
+	0x40, 0x96, 0xc3, 0xf3, 0x9a, 0x4c, 0x2f, 0xdd, 0x07, 0x68, 0x76, 0x08, 0xb8, 0x6f, 0x67, 0x43,
+	0x4e, 0x0f, 0xc3, 0x9c, 0xb2, 0x49, 0x4a, 0x38, 0xc7, 0x66, 0xf8, 0x25, 0x5a, 0xa8, 0xd1, 0x96,
+	0xef, 0xb5, 0x1c, 0x97, 0x6a, 0x99, 0xe1, 0xb6, 0x99, 0xf1, 0x28, 0x03, 0xe6, 0x32, 0x49, 0x62,
+	0x8a, 0x8e, 0xef, 0xc0, 0x01, 0x21, 0x65, 0x6f, 0x89, 0x1d, 0xb1, 0x34, 0x0c, 0x5e, 0x8c, 0xf5,
+	0x54, 0x6e, 0x22, 0xdf, 0xa0, 0x99, 0xad, 0x80, 0x5a, 0x5c, 0x49, 0xc3, 0xb1, 0xd6, 0x09, 0xb4,
+	0x22, 0xa0, 0x2d, 0x92, 0x78, 0xdc, 0x84, 0xa4, 0x57, 0x68, 0x46, 0x2e, 0xca, 0x29, 0xaa, 0xb2,
+	0x3a, 0x79, 0x0d, 0xf0, 0xd6, 0x48, 0x29, 0x4d, 0x9d, 0x5e, 0x5e, 0x7f, 0x87, 0x66, 0xd5, 0xea,
+	0x3a, 0x01, 0xb2, 0xda, 0x44, 0x49, 0x39, 0x15, 0x59, 0xaf, 0x93, 0xaf, 0xd0, 0x4c, 0x8d, 0x36,
+	0x7d, 0x9f, 0xff, 0x6c, 0x9a, 0x03, 0x80, 0x13, 0xc0, 0xdb, 0xd4, 0xa5, 0xfc, 0x03, 0x82, 0x51,
+	0x49, 0x07, 0xb6, 0x01, 0x0e, 0x37, 0x51, 0x6e, 0xd7, 0x0f, 0x5a, 0x74, 0x62, 0xf4, 0xdb, 0x80,
+	0x7e, 0xad, 0xb2, 0x91, 0x8a, 0xde, 0x16, 0x98, 0x0d, 0xc5, 0xf1, 0x16, 0xcd, 0x6e, 0xfb, 0x27,
+	0x9e, 0xeb, 0x5b, 0xf6, 0x7e, 0xd7, 0xea, 0x50, 0xbc, 0xa4, 0xd3, 0x00, 0x8a, 0xda, 0x56, 0x5c,
+	0xd2, 0xb4, 0x07, 0x3d, 0x1a, 0xc0, 0x95, 0xb7, 0x46, 0x59, 0x8f, 0xfc, 0x12, 0x98, 0xee, 0x93,
+	0x3b, 0xa9, 0x4c, 0x8e, 0x80, 0x68, 0xd8, 0x0a, 0x83, 0x55, 0xcf, 0x3c, 0xab, 0x4b, 0xdf, 0x7d,
+	0x61, 0x54, 0xde, 0x4f, 0x19, 0xf8, 0x47, 0x03, 0x2d, 0xef, 0x51, 0x1e, 0xa1, 0x91, 0x97, 0xa5,
+	0x6c, 0x0d, 0x69, 0xd5, 0xe4, 0x2b, 0xd0, 0xf0, 0x18, 0x3f, 0x9c, 0x40, 0x43, 0x95, 0x01, 0x93,
+	0xd0, 0xf1, 0x16, 0x4e, 0x70, 0x11, 0xc8, 0x09, 0x05, 0x7c, 0x26, 0x97, 0x33, 0x3c, 0x49, 0x10,
+	0x04, 0xb3, 0x23, 0x8f, 0xaa, 0x11, 0x30, 0x16, 0x1b, 0xe0, 0x34, 0x42, 0x46, 0xaa, 0xc0, 0x78,
+	0x13, 0x5f, 0x1f, 0x87, 0x51, 0x50, 0x9d, 0xa1, 0xfc, 0x96, 0x38, 0x79, 0xbb, 0x63, 0xf6, 0x33,
+	0x75, 0xb0, 0x55, 0x3f, 0x2b, 0x93, 0xf6, 0xf3, 0xaf, 0x06, 0xca, 0x3f, 0x6d, 0x71, 0xe7, 0xd8,
+	0xe2, 0x14, 0x88, 0xe4, 0xf6, 0x30, 0x21, 0xfb, 0x2e, 0xb0, 0x7f, 0x45, 0x7e, 0x31, 0xc9, 0x30,
+	0xcb, 0xea, 0x3e, 0xf0, 0xa9, 0xbc, 0xfb, 0x8b, 0x81, 0x72, 0x35, 0x7a, 0x4c, 0x03, 0xfe, 0x7f,
+	0xd1, 0x12, 0x00, 0xb5, 0xd2, 0xf2, 0xde, 0x40, 0x4b, 0x91, 0xe9, 0xf7, 0xc2, 0x57, 0xd3, 0x9c,
+	0x44, 0x57, 0xe3, 0x88, 0xaa, 0x1a, 0xfd, 0x43, 0x9f, 0x32, 0x5e, 0x2c, 0xa5, 0xf8, 0x08, 0x79,
+	0xbe, 0xc7, 0xa8, 0x3e, 0xd3, 0xe0, 0x9b, 0x71, 0x89, 0x20, 0x83, 0x55, 0xb5, 0xbc, 0x86, 0x2c,
+	0xe3, 0x13, 0x34, 0xa7, 0xa7, 0x81, 0x9a, 0x85, 0xc5, 0x54, 0xf8, 0x31, 0xa8, 0xef, 0x66, 0x65,
+	0xa7, 0xa2, 0x96, 0x3f, 0x0d, 0x39, 0x05, 0xc5, 0x78, 0xac, 0x3e, 0x6d, 0xfa, 0x83, 0xe1, 0xe8,
+	0x04, 0x96, 0x3d, 0x8c, 0xc3, 0x07, 0x8b, 0x78, 0x94, 0x35, 0x29, 0x95, 0x08, 0x4b, 0x50, 0x36,
+	0xfa, 0x92, 0x4e, 0x07, 0xe1, 0x08, 0xcd, 0xec, 0x51, 0x7e, 0xe0, 0xf5, 0xf7, 0x65, 0x39, 0x3c,
+	0x17, 0x73, 0x9a, 0x6d, 0x60, 0x26, 0xb7, 0x80, 0x63, 0x03, 0x5f, 0x4d, 0x4d, 0x03, 0xdf, 0xeb,
+	0x6b, 0xdc, 0x33, 0x34, 0x1b, 0x99, 0x00, 0x1f, 0xde, 0xad, 0x07, 0x40, 0x79, 0x87, 0x64, 0x0d,
+	0xab, 0xa5, 0x68, 0x14, 0xb3, 0xd8, 0xac, 0x4f, 0xd0, 0xf4, 0x96, 0xdf, 0xed, 0x3a, 0xfc, 0x7f,
+	0xa4, 0x96, 0x8b, 0xce, 0x6d, 0x92, 0x35, 0xac, 0x2d, 0x20, 0x09, 0x11, 0x1f, 0xa2, 0xf9, 0xe1,
+	0x01, 0x2b, 0x79, 0x5f, 0x9d, 0xd5, 0x64, 0xf2, 0x82, 0x4a, 0x00, 0xbe, 0x8c, 0x8b, 0xa9, 0xc1,
+	0x94, 0x17, 0xd3, 0xd7, 0x28, 0x1f, 0x42, 0xec, 0x6e, 0xf9, 0x5e, 0xdb, 0xe9, 0x64, 0x0c, 0xd3,
+	0xc0, 0x7c, 0xce, 0x30, 0xf5, 0xba, 0x8d, 0x96, 0xc2, 0xf1, 0xd0, 0x92, 0x5c, 0x0e, 0xe2, 0x04,
+	0x49, 0xd0, 0xcc, 0xbd, 0x57, 0x5d, 0xaa, 0xc8, 0x79, 0x64, 0x22, 0x40, 0x2f, 0xc3, 0x01, 0x1a,
+	0xef, 0xce, 0x36, 0x3a, 0x4a, 0xf2, 0xae, 0x46, 0xd1, 0x62, 0x14, 0x76, 0x92, 0xeb, 0xc2, 0x26,
+	0x10, 0x10, 0xbc, 0x9e, 0x49, 0xa0, 0xaf, 0x09, 0xdf, 0x85, 0xd5, 0xcb, 0x47, 0xba, 0xac, 0x13,
+	0x74, 0x3e, 0xf9, 0xba, 0xc7, 0xb2, 0x8e, 0xab, 0xf2, 0x59, 0x10, 0xd7, 0xd0, 0xec, 0xe0, 0xd4,
+	0x2b, 0xfc, 0x63, 0x91, 0x49, 0xe0, 0x91, 0x0d, 0x80, 0x2b, 0xe1, 0xd5, 0x34, 0x38, 0x79, 0x04,
+	0xde, 0x45, 0x0b, 0x75, 0x1e, 0x50, 0xab, 0x7b, 0x68, 0xb5, 0x7e, 0xa0, 0x9c, 0x1d, 0xf4, 0x39,
+	0x5e, 0x8e, 0x04, 0x42, 0x1a, 0x0e, 0xfa, 0x3c, 0x73, 0x7c, 0x3f, 0xda, 0x34, 0xf0, 0x0e, 0x1c,
+	0xf4, 0xa9, 0x73, 0x4c, 0x15, 0xd0, 0xbe, 0x37, 0xe2, 0xad, 0x2d, 0x89, 0xbf, 0xef, 0x91, 0x8f,
+	0xee, 0x1b, 0xf8, 0x5b, 0x94, 0x57, 0x30, 0x5b, 0x6f, 0x2c, 0xaf, 0x43, 0xe1, 0x0d, 0x33, 0x3b,
+	0x88, 0x85, 0x08, 0x52, 0xa8, 0x09, 0x80, 0xbd, 0x46, 0x39, 0x79, 0xbc, 0x0f, 0xbd, 0x84, 0xe2,
+	0x94, 0xd7, 0xd1, 0x62, 0x4a, 0x1d, 0x59, 0x87, 0xd8, 0x15, 0xc9, 0x92, 0x8e, 0x5d, 0xe4, 0xa9,
+	0x55, 0xa6, 0xaa, 0xd8, 0x1e, 0xc2, 0xd8, 0xd1, 0x9b, 0x6e, 0x02, 0x33, 0x25, 0x55, 0x23, 0xa0,
+	0x72, 0x44, 0x9a, 0x28, 0x27, 0x67, 0xdc, 0x87, 0xa8, 0xbe, 0x01, 0x04, 0x57, 0x8b, 0x23, 0x08,
+	0x84, 0xf4, 0x16, 0xca, 0xc9, 0x13, 0xf4, 0x79, 0x1c, 0x59, 0x43, 0xae, 0x3a, 0x52, 0x19, 0xd5,
+	0x91, 0xef, 0xd1, 0x82, 0x98, 0x0c, 0xe1, 0x00, 0x8c, 0x98, 0x0d, 0x29, 0xd1, 0x5a, 0x03, 0x92,
+	0x15, 0x9c, 0x3e, 0x04, 0xf8, 0x19, 0x5c, 0x02, 0x53, 0xb6, 0xa5, 0xb9, 0xc8, 0xc1, 0x85, 0xe9,
+	0x9b, 0x05, 0x2e, 0x65, 0x1f, 0x4d, 0x18, 0xfe, 0x2d, 0xba, 0x54, 0xa7, 0x6e, 0xfb, 0x05, 0x65,
+	0x3c, 0x02, 0x56, 0xd0, 0x60, 0xda, 0x3a, 0x58, 0xfc, 0x6f, 0x02, 0xec, 0x3a, 0xb9, 0x92, 0x0a,
+	0xcb, 0xa8, 0xdb, 0x86, 0x8f, 0x28, 0xf8, 0x08, 0x4e, 0xd3, 0x91, 0x17, 0xf5, 0xf8, 0x9b, 0x48,
+	0xe2, 0xc9, 0x3d, 0x39, 0x75, 0x45, 0xa2, 0x0b, 0x3f, 0xf5, 0x18, 0xe2, 0x34, 0xf1, 0x77, 0x08,
+	0xef, 0x51, 0x1e, 0x7b, 0x66, 0x8f, 0x20, 0xa7, 0xbf, 0xc4, 0x27, 0xe3, 0x11, 0xc5, 0x86, 0x47,
+	0x7d, 0xcc, 0xd0, 0x6c, 0xdd, 0xe9, 0xf6, 0x5d, 0x8b, 0x53, 0x68, 0x8f, 0xcb, 0x83, 0x40, 0x84,
+	0xab, 0xf5, 0x36, 0x99, 0x71, 0x2a, 0x4c, 0x3c, 0x66, 0x45, 0x63, 0xa4, 0x90, 0x1a, 0x02, 0x49,
+	0xe4, 0xe5, 0x73, 0x84, 0xe4, 0x25, 0x1a, 0xde, 0x0e, 0x67, 0xc2, 0xbb, 0x61, 0x66, 0x2a, 0xaa,
+	0xd7, 0x07, 0x32, 0x27, 0xe0, 0x87, 0xad, 0xd5, 0xfb, 0x88, 0xba, 0x3a, 0x4f, 0x80, 0x37, 0xbc,
+	0xe4, 0x1f, 0x3f, 0xa8, 0x86, 0x9a, 0x0b, 0xc0, 0xef, 0xd1, 0xb4, 0x98, 0xf2, 0x6f, 0xf9, 0x91,
+	0xe5, 0xf6, 0x29, 0x5e, 0x35, 0x07, 0x9f, 0xf7, 0x4c, 0xa8, 0xa9, 0xf7, 0x68, 0xcb, 0x69, 0x3b,
+	0x34, 0x28, 0xae, 0x84, 0x4c, 0x35, 0xca, 0xfb, 0x81, 0x07, 0x0e, 0x8c, 0x94, 0x00, 0x7e, 0x09,
+	0xe7, 0x75, 0x44, 0xc2, 0x80, 0xaf, 0xd0, 0x74, 0x3d, 0x54, 0xcc, 0x27, 0xf0, 0x69, 0xb6, 0xee,
+	0x04, 0x70, 0x18, 0xc9, 0x46, 0xf9, 0x3a, 0xb7, 0x02, 0x7e, 0xd0, 0x6d, 0x39, 0x22, 0x89, 0xc5,
+	0xd1, 0xcb, 0xf7, 0xb0, 0x4a, 0x10, 0x5d, 0xab, 0x07, 0x13, 0xcb, 0xea, 0x48, 0xb6, 0xab, 0x19,
+	0x4f, 0x06, 0xcf, 0xfe, 0x4c, 0xe0, 0x35, 0x06, 0xdf, 0x0a, 0x45, 0x78, 0x7e, 0x34, 0xd0, 0xe2,
+	0x61, 0x9f, 0x1f, 0xf9, 0x4e, 0xaf, 0x0e, 0x9f, 0x34, 0x0f, 0xe5, 0xa7, 0x4a, 0x7c, 0xcf, 0x4c,
+	0xfb, 0xce, 0x99, 0xf0, 0xd3, 0xfc, 0x59, 0x5d, 0xd4, 0x33, 0x6e, 0x90, 0xb8, 0x29, 0xa8, 0x42,
+	0x47, 0x0f, 0xad, 0xc8, 0xe5, 0x2d, 0xa9, 0x64, 0xf0, 0xf8, 0xf4, 0x2d, 0x3d, 0xcd, 0xe4, 0x51,
+	0xef, 0x83, 0x95, 0xcd, 0x11, 0x3c, 0xd5, 0xb3, 0x1f, 0xe8, 0xe9, 0xe0, 0x5d, 0xe2, 0x1d, 0xc2,
+	0xaa, 0xe3, 0x2f, 0x19, 0x0d, 0x34, 0xd9, 0x6d, 0x33, 0xf9, 0xd5, 0x36, 0xe6, 0x73, 0x5e, 0x97,
+	0xf5, 0x43, 0xce, 0x6a, 0x44, 0x4a, 0x18, 0x51, 0x74, 0xd8, 0x45, 0x4b, 0xc3, 0x0e, 0x87, 0x15,
+	0x8c, 0xd5, 0x5d, 0x75, 0x2f, 0xaa, 0xdc, 0xcc, 0xe4, 0x88, 0x74, 0xf6, 0x6b, 0x17, 0xe5, 0xfd,
+	0xa0, 0x03, 0x5b, 0x6f, 0xcb, 0x0f, 0x6c, 0xf5, 0xa1, 0xeb, 0xeb, 0x19, 0xf9, 0x21, 0xee, 0x10,
+	0x3e, 0x22, 0xff, 0xde, 0xec, 0x38, 0xfc, 0x4d, 0xbf, 0x29, 0xf8, 0xab, 0xda, 0x53, 0xfd, 0xf7,
+	0x81, 0x7b, 0xfa, 0x93, 0xf6, 0x93, 0x6a, 0xc7, 0x57, 0x75, 0xff, 0x98, 0x5a, 0x3e, 0xd0, 0x78,
+	0x47, 0xe1, 0xef, 0x7a, 0x87, 0x53, 0xcd, 0x0b, 0xe0, 0xff, 0xe8, 0xbf, 0x01, 0x00, 0x00, 0xff,
+	0xff, 0xda, 0x32, 0x13, 0xef, 0x8c, 0x20, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -609,6 +623,14 @@
 	SetExtValue(ctx context.Context, in *extension.ValueSet, opts ...grpc.CallOption) (*empty.Empty, error)
 	// omci start and stop cli implementation
 	StartOmciTestAction(ctx context.Context, in *omci.OmciTestRequest, opts ...grpc.CallOption) (*omci.TestResponse, error)
+	// Saves or updates system wide configuration into voltha KV
+	PutVoipSystemProfile(ctx context.Context, in *voip_system_profile.VoipSystemProfileRequest, opts ...grpc.CallOption) (*empty.Empty, error)
+	// Deletes the given profile from voltha KV
+	DeleteVoipSystemProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*empty.Empty, error)
+	// Saves or updates a profile (VOIP) into voltha KV
+	PutVoipUserProfile(ctx context.Context, in *voip_user_profile.VoipUserProfileRequest, opts ...grpc.CallOption) (*empty.Empty, error)
+	// Deletes the given profile from voltha KV
+	DeleteVoipUserProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*empty.Empty, error)
 }
 
 type volthaServiceClient struct {
@@ -1273,6 +1295,42 @@
 	return out, nil
 }
 
+func (c *volthaServiceClient) PutVoipSystemProfile(ctx context.Context, in *voip_system_profile.VoipSystemProfileRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
+	out := new(empty.Empty)
+	err := c.cc.Invoke(ctx, "/voltha.VolthaService/PutVoipSystemProfile", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DeleteVoipSystemProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*empty.Empty, error) {
+	out := new(empty.Empty)
+	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DeleteVoipSystemProfile", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) PutVoipUserProfile(ctx context.Context, in *voip_user_profile.VoipUserProfileRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
+	out := new(empty.Empty)
+	err := c.cc.Invoke(ctx, "/voltha.VolthaService/PutVoipUserProfile", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DeleteVoipUserProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*empty.Empty, error) {
+	out := new(empty.Empty)
+	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DeleteVoipUserProfile", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 // VolthaServiceServer is the server API for VolthaService service.
 type VolthaServiceServer interface {
 	// Get high level information on the Voltha cluster
@@ -1432,6 +1490,14 @@
 	SetExtValue(context.Context, *extension.ValueSet) (*empty.Empty, error)
 	// omci start and stop cli implementation
 	StartOmciTestAction(context.Context, *omci.OmciTestRequest) (*omci.TestResponse, error)
+	// Saves or updates system wide configuration into voltha KV
+	PutVoipSystemProfile(context.Context, *voip_system_profile.VoipSystemProfileRequest) (*empty.Empty, error)
+	// Deletes the given profile from voltha KV
+	DeleteVoipSystemProfile(context.Context, *common.Key) (*empty.Empty, error)
+	// Saves or updates a profile (VOIP) into voltha KV
+	PutVoipUserProfile(context.Context, *voip_user_profile.VoipUserProfileRequest) (*empty.Empty, error)
+	// Deletes the given profile from voltha KV
+	DeleteVoipUserProfile(context.Context, *common.Key) (*empty.Empty, error)
 }
 
 // UnimplementedVolthaServiceServer can be embedded to have forward compatible implementations.
@@ -1630,6 +1696,18 @@
 func (*UnimplementedVolthaServiceServer) StartOmciTestAction(ctx context.Context, req *omci.OmciTestRequest) (*omci.TestResponse, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method StartOmciTestAction not implemented")
 }
+func (*UnimplementedVolthaServiceServer) PutVoipSystemProfile(ctx context.Context, req *voip_system_profile.VoipSystemProfileRequest) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method PutVoipSystemProfile not implemented")
+}
+func (*UnimplementedVolthaServiceServer) DeleteVoipSystemProfile(ctx context.Context, req *common.Key) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method DeleteVoipSystemProfile not implemented")
+}
+func (*UnimplementedVolthaServiceServer) PutVoipUserProfile(ctx context.Context, req *voip_user_profile.VoipUserProfileRequest) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method PutVoipUserProfile not implemented")
+}
+func (*UnimplementedVolthaServiceServer) DeleteVoipUserProfile(ctx context.Context, req *common.Key) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method DeleteVoipUserProfile not implemented")
+}
 
 func RegisterVolthaServiceServer(s *grpc.Server, srv VolthaServiceServer) {
 	s.RegisterService(&_VolthaService_serviceDesc, srv)
@@ -2801,6 +2879,78 @@
 	return interceptor(ctx, in, info, handler)
 }
 
+func _VolthaService_PutVoipSystemProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voip_system_profile.VoipSystemProfileRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).PutVoipSystemProfile(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/voltha.VolthaService/PutVoipSystemProfile",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).PutVoipSystemProfile(ctx, req.(*voip_system_profile.VoipSystemProfileRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DeleteVoipSystemProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.Key)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DeleteVoipSystemProfile(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/voltha.VolthaService/DeleteVoipSystemProfile",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DeleteVoipSystemProfile(ctx, req.(*common.Key))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_PutVoipUserProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voip_user_profile.VoipUserProfileRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).PutVoipUserProfile(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/voltha.VolthaService/PutVoipUserProfile",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).PutVoipUserProfile(ctx, req.(*voip_user_profile.VoipUserProfileRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DeleteVoipUserProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.Key)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DeleteVoipUserProfile(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/voltha.VolthaService/DeleteVoipUserProfile",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DeleteVoipUserProfile(ctx, req.(*common.Key))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 var _VolthaService_serviceDesc = grpc.ServiceDesc{
 	ServiceName: "voltha.VolthaService",
 	HandlerType: (*VolthaServiceServer)(nil),
@@ -3049,6 +3199,22 @@
 			MethodName: "StartOmciTestAction",
 			Handler:    _VolthaService_StartOmciTestAction_Handler,
 		},
+		{
+			MethodName: "PutVoipSystemProfile",
+			Handler:    _VolthaService_PutVoipSystemProfile_Handler,
+		},
+		{
+			MethodName: "DeleteVoipSystemProfile",
+			Handler:    _VolthaService_DeleteVoipSystemProfile_Handler,
+		},
+		{
+			MethodName: "PutVoipUserProfile",
+			Handler:    _VolthaService_PutVoipUserProfile_Handler,
+		},
+		{
+			MethodName: "DeleteVoipUserProfile",
+			Handler:    _VolthaService_DeleteVoipUserProfile_Handler,
+		},
 	},
 	Streams: []grpc.StreamDesc{
 		{
