diff --git a/web/github.com/openconfig/gnmi/proto/collector/collector_grpc_web_pb.d.ts b/web/github.com/openconfig/gnmi/proto/collector/collector_grpc_web_pb.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..4dffff87659891de512f40fafd6c442f56959753
--- /dev/null
+++ b/web/github.com/openconfig/gnmi/proto/collector/collector_grpc_web_pb.d.ts
@@ -0,0 +1,31 @@
+import * as grpcWeb from 'grpc-web';
+
+import * as github_com_openconfig_gnmi_proto_collector_collector_pb from '../../../../../github.com/openconfig/gnmi/proto/collector/collector_pb';
+
+
+export class CollectorClient {
+  constructor (hostname: string,
+               credentials?: null | { [index: string]: string; },
+               options?: null | { [index: string]: any; });
+
+  reconnect(
+    request: github_com_openconfig_gnmi_proto_collector_collector_pb.ReconnectRequest,
+    metadata: grpcWeb.Metadata | undefined,
+    callback: (err: grpcWeb.Error,
+               response: github_com_openconfig_gnmi_proto_collector_collector_pb.Nil) => void
+  ): grpcWeb.ClientReadableStream<github_com_openconfig_gnmi_proto_collector_collector_pb.Nil>;
+
+}
+
+export class CollectorPromiseClient {
+  constructor (hostname: string,
+               credentials?: null | { [index: string]: string; },
+               options?: null | { [index: string]: any; });
+
+  reconnect(
+    request: github_com_openconfig_gnmi_proto_collector_collector_pb.ReconnectRequest,
+    metadata?: grpcWeb.Metadata
+  ): Promise<github_com_openconfig_gnmi_proto_collector_collector_pb.Nil>;
+
+}
+
diff --git a/web/github.com/openconfig/gnmi/proto/collector/collector_grpc_web_pb.js b/web/github.com/openconfig/gnmi/proto/collector/collector_grpc_web_pb.js
new file mode 100644
index 0000000000000000000000000000000000000000..f92c2862eb9122a34f7cd68b8824e9c8fe5cb2d7
--- /dev/null
+++ b/web/github.com/openconfig/gnmi/proto/collector/collector_grpc_web_pb.js
@@ -0,0 +1,154 @@
+/**
+ * @fileoverview gRPC-Web generated client stub for gnmi
+ * @enhanceable
+ * @public
+ */
+
+// GENERATED CODE -- DO NOT EDIT!
+
+
+/* eslint-disable */
+// @ts-nocheck
+
+
+
+const grpc = {};
+grpc.web = require('grpc-web');
+
+const proto = {};
+proto.gnmi = require('./collector_pb.js');
+
+/**
+ * @param {string} hostname
+ * @param {?Object} credentials
+ * @param {?Object} options
+ * @constructor
+ * @struct
+ * @final
+ */
+proto.gnmi.CollectorClient =
+    function(hostname, credentials, options) {
+  if (!options) options = {};
+  options['format'] = 'text';
+
+  /**
+   * @private @const {!grpc.web.GrpcWebClientBase} The client
+   */
+  this.client_ = new grpc.web.GrpcWebClientBase(options);
+
+  /**
+   * @private @const {string} The hostname
+   */
+  this.hostname_ = hostname;
+
+};
+
+
+/**
+ * @param {string} hostname
+ * @param {?Object} credentials
+ * @param {?Object} options
+ * @constructor
+ * @struct
+ * @final
+ */
+proto.gnmi.CollectorPromiseClient =
+    function(hostname, credentials, options) {
+  if (!options) options = {};
+  options['format'] = 'text';
+
+  /**
+   * @private @const {!grpc.web.GrpcWebClientBase} The client
+   */
+  this.client_ = new grpc.web.GrpcWebClientBase(options);
+
+  /**
+   * @private @const {string} The hostname
+   */
+  this.hostname_ = hostname;
+
+};
+
+
+/**
+ * @const
+ * @type {!grpc.web.MethodDescriptor<
+ *   !proto.gnmi.ReconnectRequest,
+ *   !proto.gnmi.Nil>}
+ */
+const methodDescriptor_Collector_Reconnect = new grpc.web.MethodDescriptor(
+  '/gnmi.Collector/Reconnect',
+  grpc.web.MethodType.UNARY,
+  proto.gnmi.ReconnectRequest,
+  proto.gnmi.Nil,
+  /**
+   * @param {!proto.gnmi.ReconnectRequest} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.gnmi.Nil.deserializeBinary
+);
+
+
+/**
+ * @const
+ * @type {!grpc.web.AbstractClientBase.MethodInfo<
+ *   !proto.gnmi.ReconnectRequest,
+ *   !proto.gnmi.Nil>}
+ */
+const methodInfo_Collector_Reconnect = new grpc.web.AbstractClientBase.MethodInfo(
+  proto.gnmi.Nil,
+  /**
+   * @param {!proto.gnmi.ReconnectRequest} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.gnmi.Nil.deserializeBinary
+);
+
+
+/**
+ * @param {!proto.gnmi.ReconnectRequest} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @param {function(?grpc.web.Error, ?proto.gnmi.Nil)}
+ *     callback The callback function(error, response)
+ * @return {!grpc.web.ClientReadableStream<!proto.gnmi.Nil>|undefined}
+ *     The XHR Node Readable Stream
+ */
+proto.gnmi.CollectorClient.prototype.reconnect =
+    function(request, metadata, callback) {
+  return this.client_.rpcCall(this.hostname_ +
+      '/gnmi.Collector/Reconnect',
+      request,
+      metadata || {},
+      methodDescriptor_Collector_Reconnect,
+      callback);
+};
+
+
+/**
+ * @param {!proto.gnmi.ReconnectRequest} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @return {!Promise<!proto.gnmi.Nil>}
+ *     Promise that resolves to the response
+ */
+proto.gnmi.CollectorPromiseClient.prototype.reconnect =
+    function(request, metadata) {
+  return this.client_.unaryCall(this.hostname_ +
+      '/gnmi.Collector/Reconnect',
+      request,
+      metadata || {},
+      methodDescriptor_Collector_Reconnect);
+};
+
+
+module.exports = proto.gnmi;
+
diff --git a/web/github.com/openconfig/gnmi/proto/collector/collector_pb.d.ts b/web/github.com/openconfig/gnmi/proto/collector/collector_pb.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..9c32c0eb3a36fca9023a33f3580d868d9adbf819
--- /dev/null
+++ b/web/github.com/openconfig/gnmi/proto/collector/collector_pb.d.ts
@@ -0,0 +1,38 @@
+import * as jspb from 'google-protobuf'
+
+
+
+export class ReconnectRequest extends jspb.Message {
+  getTargetList(): Array<string>;
+  setTargetList(value: Array<string>): ReconnectRequest;
+  clearTargetList(): ReconnectRequest;
+  addTarget(value: string, index?: number): ReconnectRequest;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): ReconnectRequest.AsObject;
+  static toObject(includeInstance: boolean, msg: ReconnectRequest): ReconnectRequest.AsObject;
+  static serializeBinaryToWriter(message: ReconnectRequest, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): ReconnectRequest;
+  static deserializeBinaryFromReader(message: ReconnectRequest, reader: jspb.BinaryReader): ReconnectRequest;
+}
+
+export namespace ReconnectRequest {
+  export type AsObject = {
+    targetList: Array<string>,
+  }
+}
+
+export class Nil extends jspb.Message {
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): Nil.AsObject;
+  static toObject(includeInstance: boolean, msg: Nil): Nil.AsObject;
+  static serializeBinaryToWriter(message: Nil, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): Nil;
+  static deserializeBinaryFromReader(message: Nil, reader: jspb.BinaryReader): Nil;
+}
+
+export namespace Nil {
+  export type AsObject = {
+  }
+}
+
diff --git a/web/github.com/openconfig/gnmi/proto/collector/collector_pb.js b/web/github.com/openconfig/gnmi/proto/collector/collector_pb.js
new file mode 100644
index 0000000000000000000000000000000000000000..aa465a03ee7baeb0e87535f0569297a22e9c6eb2
--- /dev/null
+++ b/web/github.com/openconfig/gnmi/proto/collector/collector_pb.js
@@ -0,0 +1,318 @@
+// source: github.com/openconfig/gnmi/proto/collector/collector.proto
+/**
+ * @fileoverview
+ * @enhanceable
+ * @suppress {messageConventions} JS Compiler reports an error if a variable or
+ *     field starts with 'MSG_' and isn't a translatable message.
+ * @public
+ */
+// GENERATED CODE -- DO NOT EDIT!
+/* eslint-disable */
+// @ts-nocheck
+
+var jspb = require('google-protobuf');
+var goog = jspb;
+var global = Function('return this')();
+
+goog.exportSymbol('proto.gnmi.Nil', null, global);
+goog.exportSymbol('proto.gnmi.ReconnectRequest', null, global);
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi.ReconnectRequest = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.gnmi.ReconnectRequest.repeatedFields_, null);
+};
+goog.inherits(proto.gnmi.ReconnectRequest, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi.ReconnectRequest.displayName = 'proto.gnmi.ReconnectRequest';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi.Nil = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gnmi.Nil, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi.Nil.displayName = 'proto.gnmi.Nil';
+}
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.gnmi.ReconnectRequest.repeatedFields_ = [1];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi.ReconnectRequest.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi.ReconnectRequest.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi.ReconnectRequest} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.ReconnectRequest.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    targetList: (f = jspb.Message.getRepeatedField(msg, 1)) == null ? undefined : f
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi.ReconnectRequest}
+ */
+proto.gnmi.ReconnectRequest.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi.ReconnectRequest;
+  return proto.gnmi.ReconnectRequest.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi.ReconnectRequest} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi.ReconnectRequest}
+ */
+proto.gnmi.ReconnectRequest.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.addTarget(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi.ReconnectRequest.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi.ReconnectRequest.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi.ReconnectRequest} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.ReconnectRequest.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getTargetList();
+  if (f.length > 0) {
+    writer.writeRepeatedString(
+      1,
+      f
+    );
+  }
+};
+
+
+/**
+ * repeated string target = 1;
+ * @return {!Array<string>}
+ */
+proto.gnmi.ReconnectRequest.prototype.getTargetList = function() {
+  return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 1));
+};
+
+
+/**
+ * @param {!Array<string>} value
+ * @return {!proto.gnmi.ReconnectRequest} returns this
+ */
+proto.gnmi.ReconnectRequest.prototype.setTargetList = function(value) {
+  return jspb.Message.setField(this, 1, value || []);
+};
+
+
+/**
+ * @param {string} value
+ * @param {number=} opt_index
+ * @return {!proto.gnmi.ReconnectRequest} returns this
+ */
+proto.gnmi.ReconnectRequest.prototype.addTarget = function(value, opt_index) {
+  return jspb.Message.addToRepeatedField(this, 1, value, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gnmi.ReconnectRequest} returns this
+ */
+proto.gnmi.ReconnectRequest.prototype.clearTargetList = function() {
+  return this.setTargetList([]);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi.Nil.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi.Nil.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi.Nil} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.Nil.toObject = function(includeInstance, msg) {
+  var f, obj = {
+
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi.Nil}
+ */
+proto.gnmi.Nil.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi.Nil;
+  return proto.gnmi.Nil.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi.Nil} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi.Nil}
+ */
+proto.gnmi.Nil.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi.Nil.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi.Nil.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi.Nil} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.Nil.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+};
+
+
+goog.object.extend(exports, proto.gnmi);
diff --git a/web/github.com/openconfig/gnmi/proto/gnmi/gnmi_grpc_web_pb.d.ts b/web/github.com/openconfig/gnmi/proto/gnmi/gnmi_grpc_web_pb.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..2a56c93674186728ae73e204489431a06d2c3889
--- /dev/null
+++ b/web/github.com/openconfig/gnmi/proto/gnmi/gnmi_grpc_web_pb.d.ts
@@ -0,0 +1,55 @@
+import * as grpcWeb from 'grpc-web';
+
+import * as github_com_openconfig_gnmi_proto_gnmi_gnmi_pb from '../../../../../github.com/openconfig/gnmi/proto/gnmi/gnmi_pb';
+
+
+export class gNMIClient {
+  constructor (hostname: string,
+               credentials?: null | { [index: string]: string; },
+               options?: null | { [index: string]: any; });
+
+  capabilities(
+    request: github_com_openconfig_gnmi_proto_gnmi_gnmi_pb.CapabilityRequest,
+    metadata: grpcWeb.Metadata | undefined,
+    callback: (err: grpcWeb.Error,
+               response: github_com_openconfig_gnmi_proto_gnmi_gnmi_pb.CapabilityResponse) => void
+  ): grpcWeb.ClientReadableStream<github_com_openconfig_gnmi_proto_gnmi_gnmi_pb.CapabilityResponse>;
+
+  get(
+    request: github_com_openconfig_gnmi_proto_gnmi_gnmi_pb.GetRequest,
+    metadata: grpcWeb.Metadata | undefined,
+    callback: (err: grpcWeb.Error,
+               response: github_com_openconfig_gnmi_proto_gnmi_gnmi_pb.GetResponse) => void
+  ): grpcWeb.ClientReadableStream<github_com_openconfig_gnmi_proto_gnmi_gnmi_pb.GetResponse>;
+
+  set(
+    request: github_com_openconfig_gnmi_proto_gnmi_gnmi_pb.SetRequest,
+    metadata: grpcWeb.Metadata | undefined,
+    callback: (err: grpcWeb.Error,
+               response: github_com_openconfig_gnmi_proto_gnmi_gnmi_pb.SetResponse) => void
+  ): grpcWeb.ClientReadableStream<github_com_openconfig_gnmi_proto_gnmi_gnmi_pb.SetResponse>;
+
+}
+
+export class gNMIPromiseClient {
+  constructor (hostname: string,
+               credentials?: null | { [index: string]: string; },
+               options?: null | { [index: string]: any; });
+
+  capabilities(
+    request: github_com_openconfig_gnmi_proto_gnmi_gnmi_pb.CapabilityRequest,
+    metadata?: grpcWeb.Metadata
+  ): Promise<github_com_openconfig_gnmi_proto_gnmi_gnmi_pb.CapabilityResponse>;
+
+  get(
+    request: github_com_openconfig_gnmi_proto_gnmi_gnmi_pb.GetRequest,
+    metadata?: grpcWeb.Metadata
+  ): Promise<github_com_openconfig_gnmi_proto_gnmi_gnmi_pb.GetResponse>;
+
+  set(
+    request: github_com_openconfig_gnmi_proto_gnmi_gnmi_pb.SetRequest,
+    metadata?: grpcWeb.Metadata
+  ): Promise<github_com_openconfig_gnmi_proto_gnmi_gnmi_pb.SetResponse>;
+
+}
+
diff --git a/web/github.com/openconfig/gnmi/proto/gnmi/gnmi_grpc_web_pb.js b/web/github.com/openconfig/gnmi/proto/gnmi/gnmi_grpc_web_pb.js
new file mode 100644
index 0000000000000000000000000000000000000000..6487a58979b84390262d3445a11b791d301e7855
--- /dev/null
+++ b/web/github.com/openconfig/gnmi/proto/gnmi/gnmi_grpc_web_pb.js
@@ -0,0 +1,320 @@
+/**
+ * @fileoverview gRPC-Web generated client stub for gnmi
+ * @enhanceable
+ * @public
+ */
+
+// GENERATED CODE -- DO NOT EDIT!
+
+
+/* eslint-disable */
+// @ts-nocheck
+
+
+
+const grpc = {};
+grpc.web = require('grpc-web');
+
+
+var google_protobuf_any_pb = require('google-protobuf/google/protobuf/any_pb.js')
+
+var google_protobuf_descriptor_pb = require('google-protobuf/google/protobuf/descriptor_pb.js')
+
+var github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb = require('../../../../../github.com/openconfig/gnmi/proto/gnmi_ext/gnmi_ext_pb.js')
+const proto = {};
+proto.gnmi = require('./gnmi_pb.js');
+
+/**
+ * @param {string} hostname
+ * @param {?Object} credentials
+ * @param {?Object} options
+ * @constructor
+ * @struct
+ * @final
+ */
+proto.gnmi.gNMIClient =
+    function(hostname, credentials, options) {
+  if (!options) options = {};
+  options['format'] = 'text';
+
+  /**
+   * @private @const {!grpc.web.GrpcWebClientBase} The client
+   */
+  this.client_ = new grpc.web.GrpcWebClientBase(options);
+
+  /**
+   * @private @const {string} The hostname
+   */
+  this.hostname_ = hostname;
+
+};
+
+
+/**
+ * @param {string} hostname
+ * @param {?Object} credentials
+ * @param {?Object} options
+ * @constructor
+ * @struct
+ * @final
+ */
+proto.gnmi.gNMIPromiseClient =
+    function(hostname, credentials, options) {
+  if (!options) options = {};
+  options['format'] = 'text';
+
+  /**
+   * @private @const {!grpc.web.GrpcWebClientBase} The client
+   */
+  this.client_ = new grpc.web.GrpcWebClientBase(options);
+
+  /**
+   * @private @const {string} The hostname
+   */
+  this.hostname_ = hostname;
+
+};
+
+
+/**
+ * @const
+ * @type {!grpc.web.MethodDescriptor<
+ *   !proto.gnmi.CapabilityRequest,
+ *   !proto.gnmi.CapabilityResponse>}
+ */
+const methodDescriptor_gNMI_Capabilities = new grpc.web.MethodDescriptor(
+  '/gnmi.gNMI/Capabilities',
+  grpc.web.MethodType.UNARY,
+  proto.gnmi.CapabilityRequest,
+  proto.gnmi.CapabilityResponse,
+  /**
+   * @param {!proto.gnmi.CapabilityRequest} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.gnmi.CapabilityResponse.deserializeBinary
+);
+
+
+/**
+ * @const
+ * @type {!grpc.web.AbstractClientBase.MethodInfo<
+ *   !proto.gnmi.CapabilityRequest,
+ *   !proto.gnmi.CapabilityResponse>}
+ */
+const methodInfo_gNMI_Capabilities = new grpc.web.AbstractClientBase.MethodInfo(
+  proto.gnmi.CapabilityResponse,
+  /**
+   * @param {!proto.gnmi.CapabilityRequest} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.gnmi.CapabilityResponse.deserializeBinary
+);
+
+
+/**
+ * @param {!proto.gnmi.CapabilityRequest} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @param {function(?grpc.web.Error, ?proto.gnmi.CapabilityResponse)}
+ *     callback The callback function(error, response)
+ * @return {!grpc.web.ClientReadableStream<!proto.gnmi.CapabilityResponse>|undefined}
+ *     The XHR Node Readable Stream
+ */
+proto.gnmi.gNMIClient.prototype.capabilities =
+    function(request, metadata, callback) {
+  return this.client_.rpcCall(this.hostname_ +
+      '/gnmi.gNMI/Capabilities',
+      request,
+      metadata || {},
+      methodDescriptor_gNMI_Capabilities,
+      callback);
+};
+
+
+/**
+ * @param {!proto.gnmi.CapabilityRequest} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @return {!Promise<!proto.gnmi.CapabilityResponse>}
+ *     Promise that resolves to the response
+ */
+proto.gnmi.gNMIPromiseClient.prototype.capabilities =
+    function(request, metadata) {
+  return this.client_.unaryCall(this.hostname_ +
+      '/gnmi.gNMI/Capabilities',
+      request,
+      metadata || {},
+      methodDescriptor_gNMI_Capabilities);
+};
+
+
+/**
+ * @const
+ * @type {!grpc.web.MethodDescriptor<
+ *   !proto.gnmi.GetRequest,
+ *   !proto.gnmi.GetResponse>}
+ */
+const methodDescriptor_gNMI_Get = new grpc.web.MethodDescriptor(
+  '/gnmi.gNMI/Get',
+  grpc.web.MethodType.UNARY,
+  proto.gnmi.GetRequest,
+  proto.gnmi.GetResponse,
+  /**
+   * @param {!proto.gnmi.GetRequest} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.gnmi.GetResponse.deserializeBinary
+);
+
+
+/**
+ * @const
+ * @type {!grpc.web.AbstractClientBase.MethodInfo<
+ *   !proto.gnmi.GetRequest,
+ *   !proto.gnmi.GetResponse>}
+ */
+const methodInfo_gNMI_Get = new grpc.web.AbstractClientBase.MethodInfo(
+  proto.gnmi.GetResponse,
+  /**
+   * @param {!proto.gnmi.GetRequest} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.gnmi.GetResponse.deserializeBinary
+);
+
+
+/**
+ * @param {!proto.gnmi.GetRequest} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @param {function(?grpc.web.Error, ?proto.gnmi.GetResponse)}
+ *     callback The callback function(error, response)
+ * @return {!grpc.web.ClientReadableStream<!proto.gnmi.GetResponse>|undefined}
+ *     The XHR Node Readable Stream
+ */
+proto.gnmi.gNMIClient.prototype.get =
+    function(request, metadata, callback) {
+  return this.client_.rpcCall(this.hostname_ +
+      '/gnmi.gNMI/Get',
+      request,
+      metadata || {},
+      methodDescriptor_gNMI_Get,
+      callback);
+};
+
+
+/**
+ * @param {!proto.gnmi.GetRequest} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @return {!Promise<!proto.gnmi.GetResponse>}
+ *     Promise that resolves to the response
+ */
+proto.gnmi.gNMIPromiseClient.prototype.get =
+    function(request, metadata) {
+  return this.client_.unaryCall(this.hostname_ +
+      '/gnmi.gNMI/Get',
+      request,
+      metadata || {},
+      methodDescriptor_gNMI_Get);
+};
+
+
+/**
+ * @const
+ * @type {!grpc.web.MethodDescriptor<
+ *   !proto.gnmi.SetRequest,
+ *   !proto.gnmi.SetResponse>}
+ */
+const methodDescriptor_gNMI_Set = new grpc.web.MethodDescriptor(
+  '/gnmi.gNMI/Set',
+  grpc.web.MethodType.UNARY,
+  proto.gnmi.SetRequest,
+  proto.gnmi.SetResponse,
+  /**
+   * @param {!proto.gnmi.SetRequest} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.gnmi.SetResponse.deserializeBinary
+);
+
+
+/**
+ * @const
+ * @type {!grpc.web.AbstractClientBase.MethodInfo<
+ *   !proto.gnmi.SetRequest,
+ *   !proto.gnmi.SetResponse>}
+ */
+const methodInfo_gNMI_Set = new grpc.web.AbstractClientBase.MethodInfo(
+  proto.gnmi.SetResponse,
+  /**
+   * @param {!proto.gnmi.SetRequest} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.gnmi.SetResponse.deserializeBinary
+);
+
+
+/**
+ * @param {!proto.gnmi.SetRequest} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @param {function(?grpc.web.Error, ?proto.gnmi.SetResponse)}
+ *     callback The callback function(error, response)
+ * @return {!grpc.web.ClientReadableStream<!proto.gnmi.SetResponse>|undefined}
+ *     The XHR Node Readable Stream
+ */
+proto.gnmi.gNMIClient.prototype.set =
+    function(request, metadata, callback) {
+  return this.client_.rpcCall(this.hostname_ +
+      '/gnmi.gNMI/Set',
+      request,
+      metadata || {},
+      methodDescriptor_gNMI_Set,
+      callback);
+};
+
+
+/**
+ * @param {!proto.gnmi.SetRequest} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @return {!Promise<!proto.gnmi.SetResponse>}
+ *     Promise that resolves to the response
+ */
+proto.gnmi.gNMIPromiseClient.prototype.set =
+    function(request, metadata) {
+  return this.client_.unaryCall(this.hostname_ +
+      '/gnmi.gNMI/Set',
+      request,
+      metadata || {},
+      methodDescriptor_gNMI_Set);
+};
+
+
+module.exports = proto.gnmi;
+
diff --git a/web/github.com/openconfig/gnmi/proto/gnmi/gnmi_pb.d.ts b/web/github.com/openconfig/gnmi/proto/gnmi/gnmi_pb.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..4ea5ad6231c89a040fdc912ccdabee308e6f7014
--- /dev/null
+++ b/web/github.com/openconfig/gnmi/proto/gnmi/gnmi_pb.d.ts
@@ -0,0 +1,910 @@
+import * as jspb from 'google-protobuf'
+
+import * as google_protobuf_any_pb from 'google-protobuf/google/protobuf/any_pb';
+import * as google_protobuf_descriptor_pb from 'google-protobuf/google/protobuf/descriptor_pb';
+import * as github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb from '../../../../../github.com/openconfig/gnmi/proto/gnmi_ext/gnmi_ext_pb';
+
+
+export class Notification extends jspb.Message {
+  getTimestamp(): number;
+  setTimestamp(value: number): Notification;
+
+  getPrefix(): Path | undefined;
+  setPrefix(value?: Path): Notification;
+  hasPrefix(): boolean;
+  clearPrefix(): Notification;
+
+  getAlias(): string;
+  setAlias(value: string): Notification;
+
+  getUpdateList(): Array<Update>;
+  setUpdateList(value: Array<Update>): Notification;
+  clearUpdateList(): Notification;
+  addUpdate(value?: Update, index?: number): Update;
+
+  getDeleteList(): Array<Path>;
+  setDeleteList(value: Array<Path>): Notification;
+  clearDeleteList(): Notification;
+  addDelete(value?: Path, index?: number): Path;
+
+  getAtomic(): boolean;
+  setAtomic(value: boolean): Notification;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): Notification.AsObject;
+  static toObject(includeInstance: boolean, msg: Notification): Notification.AsObject;
+  static serializeBinaryToWriter(message: Notification, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): Notification;
+  static deserializeBinaryFromReader(message: Notification, reader: jspb.BinaryReader): Notification;
+}
+
+export namespace Notification {
+  export type AsObject = {
+    timestamp: number,
+    prefix?: Path.AsObject,
+    alias: string,
+    updateList: Array<Update.AsObject>,
+    deleteList: Array<Path.AsObject>,
+    atomic: boolean,
+  }
+}
+
+export class Update extends jspb.Message {
+  getPath(): Path | undefined;
+  setPath(value?: Path): Update;
+  hasPath(): boolean;
+  clearPath(): Update;
+
+  getValue(): Value | undefined;
+  setValue(value?: Value): Update;
+  hasValue(): boolean;
+  clearValue(): Update;
+
+  getVal(): TypedValue | undefined;
+  setVal(value?: TypedValue): Update;
+  hasVal(): boolean;
+  clearVal(): Update;
+
+  getDuplicates(): number;
+  setDuplicates(value: number): Update;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): Update.AsObject;
+  static toObject(includeInstance: boolean, msg: Update): Update.AsObject;
+  static serializeBinaryToWriter(message: Update, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): Update;
+  static deserializeBinaryFromReader(message: Update, reader: jspb.BinaryReader): Update;
+}
+
+export namespace Update {
+  export type AsObject = {
+    path?: Path.AsObject,
+    value?: Value.AsObject,
+    val?: TypedValue.AsObject,
+    duplicates: number,
+  }
+}
+
+export class TypedValue extends jspb.Message {
+  getStringVal(): string;
+  setStringVal(value: string): TypedValue;
+
+  getIntVal(): number;
+  setIntVal(value: number): TypedValue;
+
+  getUintVal(): number;
+  setUintVal(value: number): TypedValue;
+
+  getBoolVal(): boolean;
+  setBoolVal(value: boolean): TypedValue;
+
+  getBytesVal(): Uint8Array | string;
+  getBytesVal_asU8(): Uint8Array;
+  getBytesVal_asB64(): string;
+  setBytesVal(value: Uint8Array | string): TypedValue;
+
+  getFloatVal(): number;
+  setFloatVal(value: number): TypedValue;
+
+  getDecimalVal(): Decimal64 | undefined;
+  setDecimalVal(value?: Decimal64): TypedValue;
+  hasDecimalVal(): boolean;
+  clearDecimalVal(): TypedValue;
+
+  getLeaflistVal(): ScalarArray | undefined;
+  setLeaflistVal(value?: ScalarArray): TypedValue;
+  hasLeaflistVal(): boolean;
+  clearLeaflistVal(): TypedValue;
+
+  getAnyVal(): google_protobuf_any_pb.Any | undefined;
+  setAnyVal(value?: google_protobuf_any_pb.Any): TypedValue;
+  hasAnyVal(): boolean;
+  clearAnyVal(): TypedValue;
+
+  getJsonVal(): Uint8Array | string;
+  getJsonVal_asU8(): Uint8Array;
+  getJsonVal_asB64(): string;
+  setJsonVal(value: Uint8Array | string): TypedValue;
+
+  getJsonIetfVal(): Uint8Array | string;
+  getJsonIetfVal_asU8(): Uint8Array;
+  getJsonIetfVal_asB64(): string;
+  setJsonIetfVal(value: Uint8Array | string): TypedValue;
+
+  getAsciiVal(): string;
+  setAsciiVal(value: string): TypedValue;
+
+  getProtoBytes(): Uint8Array | string;
+  getProtoBytes_asU8(): Uint8Array;
+  getProtoBytes_asB64(): string;
+  setProtoBytes(value: Uint8Array | string): TypedValue;
+
+  getValueCase(): TypedValue.ValueCase;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): TypedValue.AsObject;
+  static toObject(includeInstance: boolean, msg: TypedValue): TypedValue.AsObject;
+  static serializeBinaryToWriter(message: TypedValue, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): TypedValue;
+  static deserializeBinaryFromReader(message: TypedValue, reader: jspb.BinaryReader): TypedValue;
+}
+
+export namespace TypedValue {
+  export type AsObject = {
+    stringVal: string,
+    intVal: number,
+    uintVal: number,
+    boolVal: boolean,
+    bytesVal: Uint8Array | string,
+    floatVal: number,
+    decimalVal?: Decimal64.AsObject,
+    leaflistVal?: ScalarArray.AsObject,
+    anyVal?: google_protobuf_any_pb.Any.AsObject,
+    jsonVal: Uint8Array | string,
+    jsonIetfVal: Uint8Array | string,
+    asciiVal: string,
+    protoBytes: Uint8Array | string,
+  }
+
+  export enum ValueCase { 
+    VALUE_NOT_SET = 0,
+    STRING_VAL = 1,
+    INT_VAL = 2,
+    UINT_VAL = 3,
+    BOOL_VAL = 4,
+    BYTES_VAL = 5,
+    FLOAT_VAL = 6,
+    DECIMAL_VAL = 7,
+    LEAFLIST_VAL = 8,
+    ANY_VAL = 9,
+    JSON_VAL = 10,
+    JSON_IETF_VAL = 11,
+    ASCII_VAL = 12,
+    PROTO_BYTES = 13,
+  }
+}
+
+export class Path extends jspb.Message {
+  getElementList(): Array<string>;
+  setElementList(value: Array<string>): Path;
+  clearElementList(): Path;
+  addElement(value: string, index?: number): Path;
+
+  getOrigin(): string;
+  setOrigin(value: string): Path;
+
+  getElemList(): Array<PathElem>;
+  setElemList(value: Array<PathElem>): Path;
+  clearElemList(): Path;
+  addElem(value?: PathElem, index?: number): PathElem;
+
+  getTarget(): string;
+  setTarget(value: string): Path;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): Path.AsObject;
+  static toObject(includeInstance: boolean, msg: Path): Path.AsObject;
+  static serializeBinaryToWriter(message: Path, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): Path;
+  static deserializeBinaryFromReader(message: Path, reader: jspb.BinaryReader): Path;
+}
+
+export namespace Path {
+  export type AsObject = {
+    elementList: Array<string>,
+    origin: string,
+    elemList: Array<PathElem.AsObject>,
+    target: string,
+  }
+}
+
+export class PathElem extends jspb.Message {
+  getName(): string;
+  setName(value: string): PathElem;
+
+  getKeyMap(): jspb.Map<string, string>;
+  clearKeyMap(): PathElem;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): PathElem.AsObject;
+  static toObject(includeInstance: boolean, msg: PathElem): PathElem.AsObject;
+  static serializeBinaryToWriter(message: PathElem, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): PathElem;
+  static deserializeBinaryFromReader(message: PathElem, reader: jspb.BinaryReader): PathElem;
+}
+
+export namespace PathElem {
+  export type AsObject = {
+    name: string,
+    keyMap: Array<[string, string]>,
+  }
+}
+
+export class Value extends jspb.Message {
+  getValue(): Uint8Array | string;
+  getValue_asU8(): Uint8Array;
+  getValue_asB64(): string;
+  setValue(value: Uint8Array | string): Value;
+
+  getType(): Encoding;
+  setType(value: Encoding): Value;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): Value.AsObject;
+  static toObject(includeInstance: boolean, msg: Value): Value.AsObject;
+  static serializeBinaryToWriter(message: Value, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): Value;
+  static deserializeBinaryFromReader(message: Value, reader: jspb.BinaryReader): Value;
+}
+
+export namespace Value {
+  export type AsObject = {
+    value: Uint8Array | string,
+    type: Encoding,
+  }
+}
+
+export class Error extends jspb.Message {
+  getCode(): number;
+  setCode(value: number): Error;
+
+  getMessage(): string;
+  setMessage(value: string): Error;
+
+  getData(): google_protobuf_any_pb.Any | undefined;
+  setData(value?: google_protobuf_any_pb.Any): Error;
+  hasData(): boolean;
+  clearData(): Error;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): Error.AsObject;
+  static toObject(includeInstance: boolean, msg: Error): Error.AsObject;
+  static serializeBinaryToWriter(message: Error, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): Error;
+  static deserializeBinaryFromReader(message: Error, reader: jspb.BinaryReader): Error;
+}
+
+export namespace Error {
+  export type AsObject = {
+    code: number,
+    message: string,
+    data?: google_protobuf_any_pb.Any.AsObject,
+  }
+}
+
+export class Decimal64 extends jspb.Message {
+  getDigits(): number;
+  setDigits(value: number): Decimal64;
+
+  getPrecision(): number;
+  setPrecision(value: number): Decimal64;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): Decimal64.AsObject;
+  static toObject(includeInstance: boolean, msg: Decimal64): Decimal64.AsObject;
+  static serializeBinaryToWriter(message: Decimal64, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): Decimal64;
+  static deserializeBinaryFromReader(message: Decimal64, reader: jspb.BinaryReader): Decimal64;
+}
+
+export namespace Decimal64 {
+  export type AsObject = {
+    digits: number,
+    precision: number,
+  }
+}
+
+export class ScalarArray extends jspb.Message {
+  getElementList(): Array<TypedValue>;
+  setElementList(value: Array<TypedValue>): ScalarArray;
+  clearElementList(): ScalarArray;
+  addElement(value?: TypedValue, index?: number): TypedValue;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): ScalarArray.AsObject;
+  static toObject(includeInstance: boolean, msg: ScalarArray): ScalarArray.AsObject;
+  static serializeBinaryToWriter(message: ScalarArray, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): ScalarArray;
+  static deserializeBinaryFromReader(message: ScalarArray, reader: jspb.BinaryReader): ScalarArray;
+}
+
+export namespace ScalarArray {
+  export type AsObject = {
+    elementList: Array<TypedValue.AsObject>,
+  }
+}
+
+export class SubscribeRequest extends jspb.Message {
+  getSubscribe(): SubscriptionList | undefined;
+  setSubscribe(value?: SubscriptionList): SubscribeRequest;
+  hasSubscribe(): boolean;
+  clearSubscribe(): SubscribeRequest;
+
+  getPoll(): Poll | undefined;
+  setPoll(value?: Poll): SubscribeRequest;
+  hasPoll(): boolean;
+  clearPoll(): SubscribeRequest;
+
+  getAliases(): AliasList | undefined;
+  setAliases(value?: AliasList): SubscribeRequest;
+  hasAliases(): boolean;
+  clearAliases(): SubscribeRequest;
+
+  getExtensionList(): Array<github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension>;
+  setExtensionList(value: Array<github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension>): SubscribeRequest;
+  clearExtensionList(): SubscribeRequest;
+  addExtension(value?: github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension, index?: number): github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension;
+
+  getRequestCase(): SubscribeRequest.RequestCase;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): SubscribeRequest.AsObject;
+  static toObject(includeInstance: boolean, msg: SubscribeRequest): SubscribeRequest.AsObject;
+  static serializeBinaryToWriter(message: SubscribeRequest, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): SubscribeRequest;
+  static deserializeBinaryFromReader(message: SubscribeRequest, reader: jspb.BinaryReader): SubscribeRequest;
+}
+
+export namespace SubscribeRequest {
+  export type AsObject = {
+    subscribe?: SubscriptionList.AsObject,
+    poll?: Poll.AsObject,
+    aliases?: AliasList.AsObject,
+    extensionList: Array<github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.AsObject>,
+  }
+
+  export enum RequestCase { 
+    REQUEST_NOT_SET = 0,
+    SUBSCRIBE = 1,
+    POLL = 3,
+    ALIASES = 4,
+  }
+}
+
+export class Poll extends jspb.Message {
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): Poll.AsObject;
+  static toObject(includeInstance: boolean, msg: Poll): Poll.AsObject;
+  static serializeBinaryToWriter(message: Poll, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): Poll;
+  static deserializeBinaryFromReader(message: Poll, reader: jspb.BinaryReader): Poll;
+}
+
+export namespace Poll {
+  export type AsObject = {
+  }
+}
+
+export class SubscribeResponse extends jspb.Message {
+  getUpdate(): Notification | undefined;
+  setUpdate(value?: Notification): SubscribeResponse;
+  hasUpdate(): boolean;
+  clearUpdate(): SubscribeResponse;
+
+  getSyncResponse(): boolean;
+  setSyncResponse(value: boolean): SubscribeResponse;
+
+  getError(): Error | undefined;
+  setError(value?: Error): SubscribeResponse;
+  hasError(): boolean;
+  clearError(): SubscribeResponse;
+
+  getExtensionList(): Array<github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension>;
+  setExtensionList(value: Array<github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension>): SubscribeResponse;
+  clearExtensionList(): SubscribeResponse;
+  addExtension(value?: github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension, index?: number): github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension;
+
+  getResponseCase(): SubscribeResponse.ResponseCase;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): SubscribeResponse.AsObject;
+  static toObject(includeInstance: boolean, msg: SubscribeResponse): SubscribeResponse.AsObject;
+  static serializeBinaryToWriter(message: SubscribeResponse, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): SubscribeResponse;
+  static deserializeBinaryFromReader(message: SubscribeResponse, reader: jspb.BinaryReader): SubscribeResponse;
+}
+
+export namespace SubscribeResponse {
+  export type AsObject = {
+    update?: Notification.AsObject,
+    syncResponse: boolean,
+    error?: Error.AsObject,
+    extensionList: Array<github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.AsObject>,
+  }
+
+  export enum ResponseCase { 
+    RESPONSE_NOT_SET = 0,
+    UPDATE = 1,
+    SYNC_RESPONSE = 3,
+    ERROR = 4,
+  }
+}
+
+export class SubscriptionList extends jspb.Message {
+  getPrefix(): Path | undefined;
+  setPrefix(value?: Path): SubscriptionList;
+  hasPrefix(): boolean;
+  clearPrefix(): SubscriptionList;
+
+  getSubscriptionList(): Array<Subscription>;
+  setSubscriptionList(value: Array<Subscription>): SubscriptionList;
+  clearSubscriptionList(): SubscriptionList;
+  addSubscription(value?: Subscription, index?: number): Subscription;
+
+  getUseAliases(): boolean;
+  setUseAliases(value: boolean): SubscriptionList;
+
+  getQos(): QOSMarking | undefined;
+  setQos(value?: QOSMarking): SubscriptionList;
+  hasQos(): boolean;
+  clearQos(): SubscriptionList;
+
+  getMode(): SubscriptionList.Mode;
+  setMode(value: SubscriptionList.Mode): SubscriptionList;
+
+  getAllowAggregation(): boolean;
+  setAllowAggregation(value: boolean): SubscriptionList;
+
+  getUseModelsList(): Array<ModelData>;
+  setUseModelsList(value: Array<ModelData>): SubscriptionList;
+  clearUseModelsList(): SubscriptionList;
+  addUseModels(value?: ModelData, index?: number): ModelData;
+
+  getEncoding(): Encoding;
+  setEncoding(value: Encoding): SubscriptionList;
+
+  getUpdatesOnly(): boolean;
+  setUpdatesOnly(value: boolean): SubscriptionList;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): SubscriptionList.AsObject;
+  static toObject(includeInstance: boolean, msg: SubscriptionList): SubscriptionList.AsObject;
+  static serializeBinaryToWriter(message: SubscriptionList, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): SubscriptionList;
+  static deserializeBinaryFromReader(message: SubscriptionList, reader: jspb.BinaryReader): SubscriptionList;
+}
+
+export namespace SubscriptionList {
+  export type AsObject = {
+    prefix?: Path.AsObject,
+    subscriptionList: Array<Subscription.AsObject>,
+    useAliases: boolean,
+    qos?: QOSMarking.AsObject,
+    mode: SubscriptionList.Mode,
+    allowAggregation: boolean,
+    useModelsList: Array<ModelData.AsObject>,
+    encoding: Encoding,
+    updatesOnly: boolean,
+  }
+
+  export enum Mode { 
+    STREAM = 0,
+    ONCE = 1,
+    POLL = 2,
+  }
+}
+
+export class Subscription extends jspb.Message {
+  getPath(): Path | undefined;
+  setPath(value?: Path): Subscription;
+  hasPath(): boolean;
+  clearPath(): Subscription;
+
+  getMode(): SubscriptionMode;
+  setMode(value: SubscriptionMode): Subscription;
+
+  getSampleInterval(): number;
+  setSampleInterval(value: number): Subscription;
+
+  getSuppressRedundant(): boolean;
+  setSuppressRedundant(value: boolean): Subscription;
+
+  getHeartbeatInterval(): number;
+  setHeartbeatInterval(value: number): Subscription;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): Subscription.AsObject;
+  static toObject(includeInstance: boolean, msg: Subscription): Subscription.AsObject;
+  static serializeBinaryToWriter(message: Subscription, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): Subscription;
+  static deserializeBinaryFromReader(message: Subscription, reader: jspb.BinaryReader): Subscription;
+}
+
+export namespace Subscription {
+  export type AsObject = {
+    path?: Path.AsObject,
+    mode: SubscriptionMode,
+    sampleInterval: number,
+    suppressRedundant: boolean,
+    heartbeatInterval: number,
+  }
+}
+
+export class QOSMarking extends jspb.Message {
+  getMarking(): number;
+  setMarking(value: number): QOSMarking;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): QOSMarking.AsObject;
+  static toObject(includeInstance: boolean, msg: QOSMarking): QOSMarking.AsObject;
+  static serializeBinaryToWriter(message: QOSMarking, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): QOSMarking;
+  static deserializeBinaryFromReader(message: QOSMarking, reader: jspb.BinaryReader): QOSMarking;
+}
+
+export namespace QOSMarking {
+  export type AsObject = {
+    marking: number,
+  }
+}
+
+export class Alias extends jspb.Message {
+  getPath(): Path | undefined;
+  setPath(value?: Path): Alias;
+  hasPath(): boolean;
+  clearPath(): Alias;
+
+  getAlias(): string;
+  setAlias(value: string): Alias;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): Alias.AsObject;
+  static toObject(includeInstance: boolean, msg: Alias): Alias.AsObject;
+  static serializeBinaryToWriter(message: Alias, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): Alias;
+  static deserializeBinaryFromReader(message: Alias, reader: jspb.BinaryReader): Alias;
+}
+
+export namespace Alias {
+  export type AsObject = {
+    path?: Path.AsObject,
+    alias: string,
+  }
+}
+
+export class AliasList extends jspb.Message {
+  getAliasList(): Array<Alias>;
+  setAliasList(value: Array<Alias>): AliasList;
+  clearAliasList(): AliasList;
+  addAlias(value?: Alias, index?: number): Alias;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): AliasList.AsObject;
+  static toObject(includeInstance: boolean, msg: AliasList): AliasList.AsObject;
+  static serializeBinaryToWriter(message: AliasList, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): AliasList;
+  static deserializeBinaryFromReader(message: AliasList, reader: jspb.BinaryReader): AliasList;
+}
+
+export namespace AliasList {
+  export type AsObject = {
+    aliasList: Array<Alias.AsObject>,
+  }
+}
+
+export class SetRequest extends jspb.Message {
+  getPrefix(): Path | undefined;
+  setPrefix(value?: Path): SetRequest;
+  hasPrefix(): boolean;
+  clearPrefix(): SetRequest;
+
+  getDeleteList(): Array<Path>;
+  setDeleteList(value: Array<Path>): SetRequest;
+  clearDeleteList(): SetRequest;
+  addDelete(value?: Path, index?: number): Path;
+
+  getReplaceList(): Array<Update>;
+  setReplaceList(value: Array<Update>): SetRequest;
+  clearReplaceList(): SetRequest;
+  addReplace(value?: Update, index?: number): Update;
+
+  getUpdateList(): Array<Update>;
+  setUpdateList(value: Array<Update>): SetRequest;
+  clearUpdateList(): SetRequest;
+  addUpdate(value?: Update, index?: number): Update;
+
+  getExtensionList(): Array<github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension>;
+  setExtensionList(value: Array<github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension>): SetRequest;
+  clearExtensionList(): SetRequest;
+  addExtension(value?: github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension, index?: number): github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): SetRequest.AsObject;
+  static toObject(includeInstance: boolean, msg: SetRequest): SetRequest.AsObject;
+  static serializeBinaryToWriter(message: SetRequest, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): SetRequest;
+  static deserializeBinaryFromReader(message: SetRequest, reader: jspb.BinaryReader): SetRequest;
+}
+
+export namespace SetRequest {
+  export type AsObject = {
+    prefix?: Path.AsObject,
+    deleteList: Array<Path.AsObject>,
+    replaceList: Array<Update.AsObject>,
+    updateList: Array<Update.AsObject>,
+    extensionList: Array<github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.AsObject>,
+  }
+}
+
+export class SetResponse extends jspb.Message {
+  getPrefix(): Path | undefined;
+  setPrefix(value?: Path): SetResponse;
+  hasPrefix(): boolean;
+  clearPrefix(): SetResponse;
+
+  getResponseList(): Array<UpdateResult>;
+  setResponseList(value: Array<UpdateResult>): SetResponse;
+  clearResponseList(): SetResponse;
+  addResponse(value?: UpdateResult, index?: number): UpdateResult;
+
+  getMessage(): Error | undefined;
+  setMessage(value?: Error): SetResponse;
+  hasMessage(): boolean;
+  clearMessage(): SetResponse;
+
+  getTimestamp(): number;
+  setTimestamp(value: number): SetResponse;
+
+  getExtensionList(): Array<github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension>;
+  setExtensionList(value: Array<github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension>): SetResponse;
+  clearExtensionList(): SetResponse;
+  addExtension(value?: github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension, index?: number): github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): SetResponse.AsObject;
+  static toObject(includeInstance: boolean, msg: SetResponse): SetResponse.AsObject;
+  static serializeBinaryToWriter(message: SetResponse, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): SetResponse;
+  static deserializeBinaryFromReader(message: SetResponse, reader: jspb.BinaryReader): SetResponse;
+}
+
+export namespace SetResponse {
+  export type AsObject = {
+    prefix?: Path.AsObject,
+    responseList: Array<UpdateResult.AsObject>,
+    message?: Error.AsObject,
+    timestamp: number,
+    extensionList: Array<github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.AsObject>,
+  }
+}
+
+export class UpdateResult extends jspb.Message {
+  getTimestamp(): number;
+  setTimestamp(value: number): UpdateResult;
+
+  getPath(): Path | undefined;
+  setPath(value?: Path): UpdateResult;
+  hasPath(): boolean;
+  clearPath(): UpdateResult;
+
+  getMessage(): Error | undefined;
+  setMessage(value?: Error): UpdateResult;
+  hasMessage(): boolean;
+  clearMessage(): UpdateResult;
+
+  getOp(): UpdateResult.Operation;
+  setOp(value: UpdateResult.Operation): UpdateResult;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): UpdateResult.AsObject;
+  static toObject(includeInstance: boolean, msg: UpdateResult): UpdateResult.AsObject;
+  static serializeBinaryToWriter(message: UpdateResult, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): UpdateResult;
+  static deserializeBinaryFromReader(message: UpdateResult, reader: jspb.BinaryReader): UpdateResult;
+}
+
+export namespace UpdateResult {
+  export type AsObject = {
+    timestamp: number,
+    path?: Path.AsObject,
+    message?: Error.AsObject,
+    op: UpdateResult.Operation,
+  }
+
+  export enum Operation { 
+    INVALID = 0,
+    DELETE = 1,
+    REPLACE = 2,
+    UPDATE = 3,
+  }
+}
+
+export class GetRequest extends jspb.Message {
+  getPrefix(): Path | undefined;
+  setPrefix(value?: Path): GetRequest;
+  hasPrefix(): boolean;
+  clearPrefix(): GetRequest;
+
+  getPathList(): Array<Path>;
+  setPathList(value: Array<Path>): GetRequest;
+  clearPathList(): GetRequest;
+  addPath(value?: Path, index?: number): Path;
+
+  getType(): GetRequest.DataType;
+  setType(value: GetRequest.DataType): GetRequest;
+
+  getEncoding(): Encoding;
+  setEncoding(value: Encoding): GetRequest;
+
+  getUseModelsList(): Array<ModelData>;
+  setUseModelsList(value: Array<ModelData>): GetRequest;
+  clearUseModelsList(): GetRequest;
+  addUseModels(value?: ModelData, index?: number): ModelData;
+
+  getExtensionList(): Array<github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension>;
+  setExtensionList(value: Array<github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension>): GetRequest;
+  clearExtensionList(): GetRequest;
+  addExtension(value?: github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension, index?: number): github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): GetRequest.AsObject;
+  static toObject(includeInstance: boolean, msg: GetRequest): GetRequest.AsObject;
+  static serializeBinaryToWriter(message: GetRequest, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): GetRequest;
+  static deserializeBinaryFromReader(message: GetRequest, reader: jspb.BinaryReader): GetRequest;
+}
+
+export namespace GetRequest {
+  export type AsObject = {
+    prefix?: Path.AsObject,
+    pathList: Array<Path.AsObject>,
+    type: GetRequest.DataType,
+    encoding: Encoding,
+    useModelsList: Array<ModelData.AsObject>,
+    extensionList: Array<github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.AsObject>,
+  }
+
+  export enum DataType { 
+    ALL = 0,
+    CONFIG = 1,
+    STATE = 2,
+    OPERATIONAL = 3,
+  }
+}
+
+export class GetResponse extends jspb.Message {
+  getNotificationList(): Array<Notification>;
+  setNotificationList(value: Array<Notification>): GetResponse;
+  clearNotificationList(): GetResponse;
+  addNotification(value?: Notification, index?: number): Notification;
+
+  getError(): Error | undefined;
+  setError(value?: Error): GetResponse;
+  hasError(): boolean;
+  clearError(): GetResponse;
+
+  getExtensionList(): Array<github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension>;
+  setExtensionList(value: Array<github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension>): GetResponse;
+  clearExtensionList(): GetResponse;
+  addExtension(value?: github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension, index?: number): github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): GetResponse.AsObject;
+  static toObject(includeInstance: boolean, msg: GetResponse): GetResponse.AsObject;
+  static serializeBinaryToWriter(message: GetResponse, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): GetResponse;
+  static deserializeBinaryFromReader(message: GetResponse, reader: jspb.BinaryReader): GetResponse;
+}
+
+export namespace GetResponse {
+  export type AsObject = {
+    notificationList: Array<Notification.AsObject>,
+    error?: Error.AsObject,
+    extensionList: Array<github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.AsObject>,
+  }
+}
+
+export class CapabilityRequest extends jspb.Message {
+  getExtensionList(): Array<github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension>;
+  setExtensionList(value: Array<github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension>): CapabilityRequest;
+  clearExtensionList(): CapabilityRequest;
+  addExtension(value?: github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension, index?: number): github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): CapabilityRequest.AsObject;
+  static toObject(includeInstance: boolean, msg: CapabilityRequest): CapabilityRequest.AsObject;
+  static serializeBinaryToWriter(message: CapabilityRequest, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): CapabilityRequest;
+  static deserializeBinaryFromReader(message: CapabilityRequest, reader: jspb.BinaryReader): CapabilityRequest;
+}
+
+export namespace CapabilityRequest {
+  export type AsObject = {
+    extensionList: Array<github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.AsObject>,
+  }
+}
+
+export class CapabilityResponse extends jspb.Message {
+  getSupportedModelsList(): Array<ModelData>;
+  setSupportedModelsList(value: Array<ModelData>): CapabilityResponse;
+  clearSupportedModelsList(): CapabilityResponse;
+  addSupportedModels(value?: ModelData, index?: number): ModelData;
+
+  getSupportedEncodingsList(): Array<Encoding>;
+  setSupportedEncodingsList(value: Array<Encoding>): CapabilityResponse;
+  clearSupportedEncodingsList(): CapabilityResponse;
+  addSupportedEncodings(value: Encoding, index?: number): CapabilityResponse;
+
+  getGnmiVersion(): string;
+  setGnmiVersion(value: string): CapabilityResponse;
+
+  getExtensionList(): Array<github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension>;
+  setExtensionList(value: Array<github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension>): CapabilityResponse;
+  clearExtensionList(): CapabilityResponse;
+  addExtension(value?: github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension, index?: number): github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): CapabilityResponse.AsObject;
+  static toObject(includeInstance: boolean, msg: CapabilityResponse): CapabilityResponse.AsObject;
+  static serializeBinaryToWriter(message: CapabilityResponse, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): CapabilityResponse;
+  static deserializeBinaryFromReader(message: CapabilityResponse, reader: jspb.BinaryReader): CapabilityResponse;
+}
+
+export namespace CapabilityResponse {
+  export type AsObject = {
+    supportedModelsList: Array<ModelData.AsObject>,
+    supportedEncodingsList: Array<Encoding>,
+    gnmiVersion: string,
+    extensionList: Array<github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.AsObject>,
+  }
+}
+
+export class ModelData extends jspb.Message {
+  getName(): string;
+  setName(value: string): ModelData;
+
+  getOrganization(): string;
+  setOrganization(value: string): ModelData;
+
+  getVersion(): string;
+  setVersion(value: string): ModelData;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): ModelData.AsObject;
+  static toObject(includeInstance: boolean, msg: ModelData): ModelData.AsObject;
+  static serializeBinaryToWriter(message: ModelData, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): ModelData;
+  static deserializeBinaryFromReader(message: ModelData, reader: jspb.BinaryReader): ModelData;
+}
+
+export namespace ModelData {
+  export type AsObject = {
+    name: string,
+    organization: string,
+    version: string,
+  }
+}
+
+export enum Encoding { 
+  JSON = 0,
+  BYTES = 1,
+  PROTO = 2,
+  ASCII = 3,
+  JSON_IETF = 4,
+}
+export enum SubscriptionMode { 
+  TARGET_DEFINED = 0,
+  ON_CHANGE = 1,
+  SAMPLE = 2,
+}
diff --git a/web/github.com/openconfig/gnmi/proto/gnmi/gnmi_pb.js b/web/github.com/openconfig/gnmi/proto/gnmi/gnmi_pb.js
new file mode 100644
index 0000000000000000000000000000000000000000..ba6b69ee910a19271e736f6210c530907fb90f69
--- /dev/null
+++ b/web/github.com/openconfig/gnmi/proto/gnmi/gnmi_pb.js
@@ -0,0 +1,7553 @@
+// source: github.com/openconfig/gnmi/proto/gnmi/gnmi.proto
+/**
+ * @fileoverview
+ * @enhanceable
+ * @suppress {messageConventions} JS Compiler reports an error if a variable or
+ *     field starts with 'MSG_' and isn't a translatable message.
+ * @public
+ */
+// GENERATED CODE -- DO NOT EDIT!
+/* eslint-disable */
+// @ts-nocheck
+
+var jspb = require('google-protobuf');
+var goog = jspb;
+var global = Function('return this')();
+
+var google_protobuf_any_pb = require('google-protobuf/google/protobuf/any_pb.js');
+goog.object.extend(proto, google_protobuf_any_pb);
+var google_protobuf_descriptor_pb = require('google-protobuf/google/protobuf/descriptor_pb.js');
+goog.object.extend(proto, google_protobuf_descriptor_pb);
+var github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb = require('../../../../../github.com/openconfig/gnmi/proto/gnmi_ext/gnmi_ext_pb.js');
+goog.object.extend(proto, github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb);
+goog.exportSymbol('proto.gnmi.Alias', null, global);
+goog.exportSymbol('proto.gnmi.AliasList', null, global);
+goog.exportSymbol('proto.gnmi.CapabilityRequest', null, global);
+goog.exportSymbol('proto.gnmi.CapabilityResponse', null, global);
+goog.exportSymbol('proto.gnmi.Decimal64', null, global);
+goog.exportSymbol('proto.gnmi.Encoding', null, global);
+goog.exportSymbol('proto.gnmi.Error', null, global);
+goog.exportSymbol('proto.gnmi.GetRequest', null, global);
+goog.exportSymbol('proto.gnmi.GetRequest.DataType', null, global);
+goog.exportSymbol('proto.gnmi.GetResponse', null, global);
+goog.exportSymbol('proto.gnmi.ModelData', null, global);
+goog.exportSymbol('proto.gnmi.Notification', null, global);
+goog.exportSymbol('proto.gnmi.Path', null, global);
+goog.exportSymbol('proto.gnmi.PathElem', null, global);
+goog.exportSymbol('proto.gnmi.Poll', null, global);
+goog.exportSymbol('proto.gnmi.QOSMarking', null, global);
+goog.exportSymbol('proto.gnmi.ScalarArray', null, global);
+goog.exportSymbol('proto.gnmi.SetRequest', null, global);
+goog.exportSymbol('proto.gnmi.SetResponse', null, global);
+goog.exportSymbol('proto.gnmi.SubscribeRequest', null, global);
+goog.exportSymbol('proto.gnmi.SubscribeRequest.RequestCase', null, global);
+goog.exportSymbol('proto.gnmi.SubscribeResponse', null, global);
+goog.exportSymbol('proto.gnmi.SubscribeResponse.ResponseCase', null, global);
+goog.exportSymbol('proto.gnmi.Subscription', null, global);
+goog.exportSymbol('proto.gnmi.SubscriptionList', null, global);
+goog.exportSymbol('proto.gnmi.SubscriptionList.Mode', null, global);
+goog.exportSymbol('proto.gnmi.SubscriptionMode', null, global);
+goog.exportSymbol('proto.gnmi.TypedValue', null, global);
+goog.exportSymbol('proto.gnmi.TypedValue.ValueCase', null, global);
+goog.exportSymbol('proto.gnmi.Update', null, global);
+goog.exportSymbol('proto.gnmi.UpdateResult', null, global);
+goog.exportSymbol('proto.gnmi.UpdateResult.Operation', null, global);
+goog.exportSymbol('proto.gnmi.Value', null, global);
+goog.exportSymbol('proto.gnmi.gnmiService', null, global);
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi.Notification = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.gnmi.Notification.repeatedFields_, null);
+};
+goog.inherits(proto.gnmi.Notification, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi.Notification.displayName = 'proto.gnmi.Notification';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi.Update = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gnmi.Update, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi.Update.displayName = 'proto.gnmi.Update';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi.TypedValue = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, proto.gnmi.TypedValue.oneofGroups_);
+};
+goog.inherits(proto.gnmi.TypedValue, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi.TypedValue.displayName = 'proto.gnmi.TypedValue';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi.Path = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.gnmi.Path.repeatedFields_, null);
+};
+goog.inherits(proto.gnmi.Path, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi.Path.displayName = 'proto.gnmi.Path';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi.PathElem = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gnmi.PathElem, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi.PathElem.displayName = 'proto.gnmi.PathElem';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi.Value = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gnmi.Value, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi.Value.displayName = 'proto.gnmi.Value';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi.Error = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gnmi.Error, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi.Error.displayName = 'proto.gnmi.Error';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi.Decimal64 = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gnmi.Decimal64, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi.Decimal64.displayName = 'proto.gnmi.Decimal64';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi.ScalarArray = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.gnmi.ScalarArray.repeatedFields_, null);
+};
+goog.inherits(proto.gnmi.ScalarArray, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi.ScalarArray.displayName = 'proto.gnmi.ScalarArray';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi.SubscribeRequest = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.gnmi.SubscribeRequest.repeatedFields_, proto.gnmi.SubscribeRequest.oneofGroups_);
+};
+goog.inherits(proto.gnmi.SubscribeRequest, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi.SubscribeRequest.displayName = 'proto.gnmi.SubscribeRequest';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi.Poll = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gnmi.Poll, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi.Poll.displayName = 'proto.gnmi.Poll';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi.SubscribeResponse = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.gnmi.SubscribeResponse.repeatedFields_, proto.gnmi.SubscribeResponse.oneofGroups_);
+};
+goog.inherits(proto.gnmi.SubscribeResponse, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi.SubscribeResponse.displayName = 'proto.gnmi.SubscribeResponse';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi.SubscriptionList = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.gnmi.SubscriptionList.repeatedFields_, null);
+};
+goog.inherits(proto.gnmi.SubscriptionList, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi.SubscriptionList.displayName = 'proto.gnmi.SubscriptionList';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi.Subscription = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gnmi.Subscription, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi.Subscription.displayName = 'proto.gnmi.Subscription';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi.QOSMarking = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gnmi.QOSMarking, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi.QOSMarking.displayName = 'proto.gnmi.QOSMarking';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi.Alias = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gnmi.Alias, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi.Alias.displayName = 'proto.gnmi.Alias';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi.AliasList = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.gnmi.AliasList.repeatedFields_, null);
+};
+goog.inherits(proto.gnmi.AliasList, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi.AliasList.displayName = 'proto.gnmi.AliasList';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi.SetRequest = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.gnmi.SetRequest.repeatedFields_, null);
+};
+goog.inherits(proto.gnmi.SetRequest, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi.SetRequest.displayName = 'proto.gnmi.SetRequest';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi.SetResponse = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.gnmi.SetResponse.repeatedFields_, null);
+};
+goog.inherits(proto.gnmi.SetResponse, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi.SetResponse.displayName = 'proto.gnmi.SetResponse';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi.UpdateResult = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gnmi.UpdateResult, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi.UpdateResult.displayName = 'proto.gnmi.UpdateResult';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi.GetRequest = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.gnmi.GetRequest.repeatedFields_, null);
+};
+goog.inherits(proto.gnmi.GetRequest, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi.GetRequest.displayName = 'proto.gnmi.GetRequest';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi.GetResponse = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.gnmi.GetResponse.repeatedFields_, null);
+};
+goog.inherits(proto.gnmi.GetResponse, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi.GetResponse.displayName = 'proto.gnmi.GetResponse';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi.CapabilityRequest = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.gnmi.CapabilityRequest.repeatedFields_, null);
+};
+goog.inherits(proto.gnmi.CapabilityRequest, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi.CapabilityRequest.displayName = 'proto.gnmi.CapabilityRequest';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi.CapabilityResponse = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.gnmi.CapabilityResponse.repeatedFields_, null);
+};
+goog.inherits(proto.gnmi.CapabilityResponse, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi.CapabilityResponse.displayName = 'proto.gnmi.CapabilityResponse';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi.ModelData = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gnmi.ModelData, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi.ModelData.displayName = 'proto.gnmi.ModelData';
+}
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.gnmi.Notification.repeatedFields_ = [4,5];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi.Notification.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi.Notification.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi.Notification} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.Notification.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    timestamp: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    prefix: (f = msg.getPrefix()) && proto.gnmi.Path.toObject(includeInstance, f),
+    alias: jspb.Message.getFieldWithDefault(msg, 3, ""),
+    updateList: jspb.Message.toObjectList(msg.getUpdateList(),
+    proto.gnmi.Update.toObject, includeInstance),
+    deleteList: jspb.Message.toObjectList(msg.getDeleteList(),
+    proto.gnmi.Path.toObject, includeInstance),
+    atomic: jspb.Message.getBooleanFieldWithDefault(msg, 6, false)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi.Notification}
+ */
+proto.gnmi.Notification.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi.Notification;
+  return proto.gnmi.Notification.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi.Notification} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi.Notification}
+ */
+proto.gnmi.Notification.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setTimestamp(value);
+      break;
+    case 2:
+      var value = new proto.gnmi.Path;
+      reader.readMessage(value,proto.gnmi.Path.deserializeBinaryFromReader);
+      msg.setPrefix(value);
+      break;
+    case 3:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setAlias(value);
+      break;
+    case 4:
+      var value = new proto.gnmi.Update;
+      reader.readMessage(value,proto.gnmi.Update.deserializeBinaryFromReader);
+      msg.addUpdate(value);
+      break;
+    case 5:
+      var value = new proto.gnmi.Path;
+      reader.readMessage(value,proto.gnmi.Path.deserializeBinaryFromReader);
+      msg.addDelete(value);
+      break;
+    case 6:
+      var value = /** @type {boolean} */ (reader.readBool());
+      msg.setAtomic(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi.Notification.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi.Notification.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi.Notification} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.Notification.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getTimestamp();
+  if (f !== 0) {
+    writer.writeInt64(
+      1,
+      f
+    );
+  }
+  f = message.getPrefix();
+  if (f != null) {
+    writer.writeMessage(
+      2,
+      f,
+      proto.gnmi.Path.serializeBinaryToWriter
+    );
+  }
+  f = message.getAlias();
+  if (f.length > 0) {
+    writer.writeString(
+      3,
+      f
+    );
+  }
+  f = message.getUpdateList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      4,
+      f,
+      proto.gnmi.Update.serializeBinaryToWriter
+    );
+  }
+  f = message.getDeleteList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      5,
+      f,
+      proto.gnmi.Path.serializeBinaryToWriter
+    );
+  }
+  f = message.getAtomic();
+  if (f) {
+    writer.writeBool(
+      6,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional int64 timestamp = 1;
+ * @return {number}
+ */
+proto.gnmi.Notification.prototype.getTimestamp = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gnmi.Notification} returns this
+ */
+proto.gnmi.Notification.prototype.setTimestamp = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional Path prefix = 2;
+ * @return {?proto.gnmi.Path}
+ */
+proto.gnmi.Notification.prototype.getPrefix = function() {
+  return /** @type{?proto.gnmi.Path} */ (
+    jspb.Message.getWrapperField(this, proto.gnmi.Path, 2));
+};
+
+
+/**
+ * @param {?proto.gnmi.Path|undefined} value
+ * @return {!proto.gnmi.Notification} returns this
+*/
+proto.gnmi.Notification.prototype.setPrefix = function(value) {
+  return jspb.Message.setWrapperField(this, 2, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gnmi.Notification} returns this
+ */
+proto.gnmi.Notification.prototype.clearPrefix = function() {
+  return this.setPrefix(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.Notification.prototype.hasPrefix = function() {
+  return jspb.Message.getField(this, 2) != null;
+};
+
+
+/**
+ * optional string alias = 3;
+ * @return {string}
+ */
+proto.gnmi.Notification.prototype.getAlias = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gnmi.Notification} returns this
+ */
+proto.gnmi.Notification.prototype.setAlias = function(value) {
+  return jspb.Message.setProto3StringField(this, 3, value);
+};
+
+
+/**
+ * repeated Update update = 4;
+ * @return {!Array<!proto.gnmi.Update>}
+ */
+proto.gnmi.Notification.prototype.getUpdateList = function() {
+  return /** @type{!Array<!proto.gnmi.Update>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.gnmi.Update, 4));
+};
+
+
+/**
+ * @param {!Array<!proto.gnmi.Update>} value
+ * @return {!proto.gnmi.Notification} returns this
+*/
+proto.gnmi.Notification.prototype.setUpdateList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 4, value);
+};
+
+
+/**
+ * @param {!proto.gnmi.Update=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gnmi.Update}
+ */
+proto.gnmi.Notification.prototype.addUpdate = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.gnmi.Update, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gnmi.Notification} returns this
+ */
+proto.gnmi.Notification.prototype.clearUpdateList = function() {
+  return this.setUpdateList([]);
+};
+
+
+/**
+ * repeated Path delete = 5;
+ * @return {!Array<!proto.gnmi.Path>}
+ */
+proto.gnmi.Notification.prototype.getDeleteList = function() {
+  return /** @type{!Array<!proto.gnmi.Path>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.gnmi.Path, 5));
+};
+
+
+/**
+ * @param {!Array<!proto.gnmi.Path>} value
+ * @return {!proto.gnmi.Notification} returns this
+*/
+proto.gnmi.Notification.prototype.setDeleteList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 5, value);
+};
+
+
+/**
+ * @param {!proto.gnmi.Path=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gnmi.Path}
+ */
+proto.gnmi.Notification.prototype.addDelete = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 5, opt_value, proto.gnmi.Path, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gnmi.Notification} returns this
+ */
+proto.gnmi.Notification.prototype.clearDeleteList = function() {
+  return this.setDeleteList([]);
+};
+
+
+/**
+ * optional bool atomic = 6;
+ * @return {boolean}
+ */
+proto.gnmi.Notification.prototype.getAtomic = function() {
+  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 6, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.gnmi.Notification} returns this
+ */
+proto.gnmi.Notification.prototype.setAtomic = function(value) {
+  return jspb.Message.setProto3BooleanField(this, 6, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi.Update.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi.Update.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi.Update} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.Update.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    path: (f = msg.getPath()) && proto.gnmi.Path.toObject(includeInstance, f),
+    value: (f = msg.getValue()) && proto.gnmi.Value.toObject(includeInstance, f),
+    val: (f = msg.getVal()) && proto.gnmi.TypedValue.toObject(includeInstance, f),
+    duplicates: jspb.Message.getFieldWithDefault(msg, 4, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi.Update}
+ */
+proto.gnmi.Update.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi.Update;
+  return proto.gnmi.Update.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi.Update} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi.Update}
+ */
+proto.gnmi.Update.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = new proto.gnmi.Path;
+      reader.readMessage(value,proto.gnmi.Path.deserializeBinaryFromReader);
+      msg.setPath(value);
+      break;
+    case 2:
+      var value = new proto.gnmi.Value;
+      reader.readMessage(value,proto.gnmi.Value.deserializeBinaryFromReader);
+      msg.setValue(value);
+      break;
+    case 3:
+      var value = new proto.gnmi.TypedValue;
+      reader.readMessage(value,proto.gnmi.TypedValue.deserializeBinaryFromReader);
+      msg.setVal(value);
+      break;
+    case 4:
+      var value = /** @type {number} */ (reader.readUint32());
+      msg.setDuplicates(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi.Update.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi.Update.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi.Update} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.Update.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getPath();
+  if (f != null) {
+    writer.writeMessage(
+      1,
+      f,
+      proto.gnmi.Path.serializeBinaryToWriter
+    );
+  }
+  f = message.getValue();
+  if (f != null) {
+    writer.writeMessage(
+      2,
+      f,
+      proto.gnmi.Value.serializeBinaryToWriter
+    );
+  }
+  f = message.getVal();
+  if (f != null) {
+    writer.writeMessage(
+      3,
+      f,
+      proto.gnmi.TypedValue.serializeBinaryToWriter
+    );
+  }
+  f = message.getDuplicates();
+  if (f !== 0) {
+    writer.writeUint32(
+      4,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional Path path = 1;
+ * @return {?proto.gnmi.Path}
+ */
+proto.gnmi.Update.prototype.getPath = function() {
+  return /** @type{?proto.gnmi.Path} */ (
+    jspb.Message.getWrapperField(this, proto.gnmi.Path, 1));
+};
+
+
+/**
+ * @param {?proto.gnmi.Path|undefined} value
+ * @return {!proto.gnmi.Update} returns this
+*/
+proto.gnmi.Update.prototype.setPath = function(value) {
+  return jspb.Message.setWrapperField(this, 1, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gnmi.Update} returns this
+ */
+proto.gnmi.Update.prototype.clearPath = function() {
+  return this.setPath(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.Update.prototype.hasPath = function() {
+  return jspb.Message.getField(this, 1) != null;
+};
+
+
+/**
+ * optional Value value = 2;
+ * @return {?proto.gnmi.Value}
+ */
+proto.gnmi.Update.prototype.getValue = function() {
+  return /** @type{?proto.gnmi.Value} */ (
+    jspb.Message.getWrapperField(this, proto.gnmi.Value, 2));
+};
+
+
+/**
+ * @param {?proto.gnmi.Value|undefined} value
+ * @return {!proto.gnmi.Update} returns this
+*/
+proto.gnmi.Update.prototype.setValue = function(value) {
+  return jspb.Message.setWrapperField(this, 2, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gnmi.Update} returns this
+ */
+proto.gnmi.Update.prototype.clearValue = function() {
+  return this.setValue(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.Update.prototype.hasValue = function() {
+  return jspb.Message.getField(this, 2) != null;
+};
+
+
+/**
+ * optional TypedValue val = 3;
+ * @return {?proto.gnmi.TypedValue}
+ */
+proto.gnmi.Update.prototype.getVal = function() {
+  return /** @type{?proto.gnmi.TypedValue} */ (
+    jspb.Message.getWrapperField(this, proto.gnmi.TypedValue, 3));
+};
+
+
+/**
+ * @param {?proto.gnmi.TypedValue|undefined} value
+ * @return {!proto.gnmi.Update} returns this
+*/
+proto.gnmi.Update.prototype.setVal = function(value) {
+  return jspb.Message.setWrapperField(this, 3, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gnmi.Update} returns this
+ */
+proto.gnmi.Update.prototype.clearVal = function() {
+  return this.setVal(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.Update.prototype.hasVal = function() {
+  return jspb.Message.getField(this, 3) != null;
+};
+
+
+/**
+ * optional uint32 duplicates = 4;
+ * @return {number}
+ */
+proto.gnmi.Update.prototype.getDuplicates = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gnmi.Update} returns this
+ */
+proto.gnmi.Update.prototype.setDuplicates = function(value) {
+  return jspb.Message.setProto3IntField(this, 4, value);
+};
+
+
+
+/**
+ * Oneof group definitions for this message. Each group defines the field
+ * numbers belonging to that group. When of these fields' value is set, all
+ * other fields in the group are cleared. During deserialization, if multiple
+ * fields are encountered for a group, only the last value seen will be kept.
+ * @private {!Array<!Array<number>>}
+ * @const
+ */
+proto.gnmi.TypedValue.oneofGroups_ = [[1,2,3,4,5,6,7,8,9,10,11,12,13]];
+
+/**
+ * @enum {number}
+ */
+proto.gnmi.TypedValue.ValueCase = {
+  VALUE_NOT_SET: 0,
+  STRING_VAL: 1,
+  INT_VAL: 2,
+  UINT_VAL: 3,
+  BOOL_VAL: 4,
+  BYTES_VAL: 5,
+  FLOAT_VAL: 6,
+  DECIMAL_VAL: 7,
+  LEAFLIST_VAL: 8,
+  ANY_VAL: 9,
+  JSON_VAL: 10,
+  JSON_IETF_VAL: 11,
+  ASCII_VAL: 12,
+  PROTO_BYTES: 13
+};
+
+/**
+ * @return {proto.gnmi.TypedValue.ValueCase}
+ */
+proto.gnmi.TypedValue.prototype.getValueCase = function() {
+  return /** @type {proto.gnmi.TypedValue.ValueCase} */(jspb.Message.computeOneofCase(this, proto.gnmi.TypedValue.oneofGroups_[0]));
+};
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi.TypedValue.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi.TypedValue.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi.TypedValue} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.TypedValue.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    stringVal: jspb.Message.getFieldWithDefault(msg, 1, ""),
+    intVal: jspb.Message.getFieldWithDefault(msg, 2, 0),
+    uintVal: jspb.Message.getFieldWithDefault(msg, 3, 0),
+    boolVal: jspb.Message.getBooleanFieldWithDefault(msg, 4, false),
+    bytesVal: msg.getBytesVal_asB64(),
+    floatVal: jspb.Message.getFloatingPointFieldWithDefault(msg, 6, 0.0),
+    decimalVal: (f = msg.getDecimalVal()) && proto.gnmi.Decimal64.toObject(includeInstance, f),
+    leaflistVal: (f = msg.getLeaflistVal()) && proto.gnmi.ScalarArray.toObject(includeInstance, f),
+    anyVal: (f = msg.getAnyVal()) && google_protobuf_any_pb.Any.toObject(includeInstance, f),
+    jsonVal: msg.getJsonVal_asB64(),
+    jsonIetfVal: msg.getJsonIetfVal_asB64(),
+    asciiVal: jspb.Message.getFieldWithDefault(msg, 12, ""),
+    protoBytes: msg.getProtoBytes_asB64()
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi.TypedValue}
+ */
+proto.gnmi.TypedValue.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi.TypedValue;
+  return proto.gnmi.TypedValue.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi.TypedValue} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi.TypedValue}
+ */
+proto.gnmi.TypedValue.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setStringVal(value);
+      break;
+    case 2:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setIntVal(value);
+      break;
+    case 3:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setUintVal(value);
+      break;
+    case 4:
+      var value = /** @type {boolean} */ (reader.readBool());
+      msg.setBoolVal(value);
+      break;
+    case 5:
+      var value = /** @type {!Uint8Array} */ (reader.readBytes());
+      msg.setBytesVal(value);
+      break;
+    case 6:
+      var value = /** @type {number} */ (reader.readFloat());
+      msg.setFloatVal(value);
+      break;
+    case 7:
+      var value = new proto.gnmi.Decimal64;
+      reader.readMessage(value,proto.gnmi.Decimal64.deserializeBinaryFromReader);
+      msg.setDecimalVal(value);
+      break;
+    case 8:
+      var value = new proto.gnmi.ScalarArray;
+      reader.readMessage(value,proto.gnmi.ScalarArray.deserializeBinaryFromReader);
+      msg.setLeaflistVal(value);
+      break;
+    case 9:
+      var value = new google_protobuf_any_pb.Any;
+      reader.readMessage(value,google_protobuf_any_pb.Any.deserializeBinaryFromReader);
+      msg.setAnyVal(value);
+      break;
+    case 10:
+      var value = /** @type {!Uint8Array} */ (reader.readBytes());
+      msg.setJsonVal(value);
+      break;
+    case 11:
+      var value = /** @type {!Uint8Array} */ (reader.readBytes());
+      msg.setJsonIetfVal(value);
+      break;
+    case 12:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setAsciiVal(value);
+      break;
+    case 13:
+      var value = /** @type {!Uint8Array} */ (reader.readBytes());
+      msg.setProtoBytes(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi.TypedValue.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi.TypedValue.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi.TypedValue} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.TypedValue.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = /** @type {string} */ (jspb.Message.getField(message, 1));
+  if (f != null) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+  f = /** @type {number} */ (jspb.Message.getField(message, 2));
+  if (f != null) {
+    writer.writeInt64(
+      2,
+      f
+    );
+  }
+  f = /** @type {number} */ (jspb.Message.getField(message, 3));
+  if (f != null) {
+    writer.writeUint64(
+      3,
+      f
+    );
+  }
+  f = /** @type {boolean} */ (jspb.Message.getField(message, 4));
+  if (f != null) {
+    writer.writeBool(
+      4,
+      f
+    );
+  }
+  f = /** @type {!(string|Uint8Array)} */ (jspb.Message.getField(message, 5));
+  if (f != null) {
+    writer.writeBytes(
+      5,
+      f
+    );
+  }
+  f = /** @type {number} */ (jspb.Message.getField(message, 6));
+  if (f != null) {
+    writer.writeFloat(
+      6,
+      f
+    );
+  }
+  f = message.getDecimalVal();
+  if (f != null) {
+    writer.writeMessage(
+      7,
+      f,
+      proto.gnmi.Decimal64.serializeBinaryToWriter
+    );
+  }
+  f = message.getLeaflistVal();
+  if (f != null) {
+    writer.writeMessage(
+      8,
+      f,
+      proto.gnmi.ScalarArray.serializeBinaryToWriter
+    );
+  }
+  f = message.getAnyVal();
+  if (f != null) {
+    writer.writeMessage(
+      9,
+      f,
+      google_protobuf_any_pb.Any.serializeBinaryToWriter
+    );
+  }
+  f = /** @type {!(string|Uint8Array)} */ (jspb.Message.getField(message, 10));
+  if (f != null) {
+    writer.writeBytes(
+      10,
+      f
+    );
+  }
+  f = /** @type {!(string|Uint8Array)} */ (jspb.Message.getField(message, 11));
+  if (f != null) {
+    writer.writeBytes(
+      11,
+      f
+    );
+  }
+  f = /** @type {string} */ (jspb.Message.getField(message, 12));
+  if (f != null) {
+    writer.writeString(
+      12,
+      f
+    );
+  }
+  f = /** @type {!(string|Uint8Array)} */ (jspb.Message.getField(message, 13));
+  if (f != null) {
+    writer.writeBytes(
+      13,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional string string_val = 1;
+ * @return {string}
+ */
+proto.gnmi.TypedValue.prototype.getStringVal = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gnmi.TypedValue} returns this
+ */
+proto.gnmi.TypedValue.prototype.setStringVal = function(value) {
+  return jspb.Message.setOneofField(this, 1, proto.gnmi.TypedValue.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.gnmi.TypedValue} returns this
+ */
+proto.gnmi.TypedValue.prototype.clearStringVal = function() {
+  return jspb.Message.setOneofField(this, 1, proto.gnmi.TypedValue.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.TypedValue.prototype.hasStringVal = function() {
+  return jspb.Message.getField(this, 1) != null;
+};
+
+
+/**
+ * optional int64 int_val = 2;
+ * @return {number}
+ */
+proto.gnmi.TypedValue.prototype.getIntVal = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gnmi.TypedValue} returns this
+ */
+proto.gnmi.TypedValue.prototype.setIntVal = function(value) {
+  return jspb.Message.setOneofField(this, 2, proto.gnmi.TypedValue.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.gnmi.TypedValue} returns this
+ */
+proto.gnmi.TypedValue.prototype.clearIntVal = function() {
+  return jspb.Message.setOneofField(this, 2, proto.gnmi.TypedValue.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.TypedValue.prototype.hasIntVal = function() {
+  return jspb.Message.getField(this, 2) != null;
+};
+
+
+/**
+ * optional uint64 uint_val = 3;
+ * @return {number}
+ */
+proto.gnmi.TypedValue.prototype.getUintVal = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gnmi.TypedValue} returns this
+ */
+proto.gnmi.TypedValue.prototype.setUintVal = function(value) {
+  return jspb.Message.setOneofField(this, 3, proto.gnmi.TypedValue.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.gnmi.TypedValue} returns this
+ */
+proto.gnmi.TypedValue.prototype.clearUintVal = function() {
+  return jspb.Message.setOneofField(this, 3, proto.gnmi.TypedValue.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.TypedValue.prototype.hasUintVal = function() {
+  return jspb.Message.getField(this, 3) != null;
+};
+
+
+/**
+ * optional bool bool_val = 4;
+ * @return {boolean}
+ */
+proto.gnmi.TypedValue.prototype.getBoolVal = function() {
+  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 4, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.gnmi.TypedValue} returns this
+ */
+proto.gnmi.TypedValue.prototype.setBoolVal = function(value) {
+  return jspb.Message.setOneofField(this, 4, proto.gnmi.TypedValue.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.gnmi.TypedValue} returns this
+ */
+proto.gnmi.TypedValue.prototype.clearBoolVal = function() {
+  return jspb.Message.setOneofField(this, 4, proto.gnmi.TypedValue.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.TypedValue.prototype.hasBoolVal = function() {
+  return jspb.Message.getField(this, 4) != null;
+};
+
+
+/**
+ * optional bytes bytes_val = 5;
+ * @return {!(string|Uint8Array)}
+ */
+proto.gnmi.TypedValue.prototype.getBytesVal = function() {
+  return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 5, ""));
+};
+
+
+/**
+ * optional bytes bytes_val = 5;
+ * This is a type-conversion wrapper around `getBytesVal()`
+ * @return {string}
+ */
+proto.gnmi.TypedValue.prototype.getBytesVal_asB64 = function() {
+  return /** @type {string} */ (jspb.Message.bytesAsB64(
+      this.getBytesVal()));
+};
+
+
+/**
+ * optional bytes bytes_val = 5;
+ * Note that Uint8Array is not supported on all browsers.
+ * @see http://caniuse.com/Uint8Array
+ * This is a type-conversion wrapper around `getBytesVal()`
+ * @return {!Uint8Array}
+ */
+proto.gnmi.TypedValue.prototype.getBytesVal_asU8 = function() {
+  return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(
+      this.getBytesVal()));
+};
+
+
+/**
+ * @param {!(string|Uint8Array)} value
+ * @return {!proto.gnmi.TypedValue} returns this
+ */
+proto.gnmi.TypedValue.prototype.setBytesVal = function(value) {
+  return jspb.Message.setOneofField(this, 5, proto.gnmi.TypedValue.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.gnmi.TypedValue} returns this
+ */
+proto.gnmi.TypedValue.prototype.clearBytesVal = function() {
+  return jspb.Message.setOneofField(this, 5, proto.gnmi.TypedValue.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.TypedValue.prototype.hasBytesVal = function() {
+  return jspb.Message.getField(this, 5) != null;
+};
+
+
+/**
+ * optional float float_val = 6;
+ * @return {number}
+ */
+proto.gnmi.TypedValue.prototype.getFloatVal = function() {
+  return /** @type {number} */ (jspb.Message.getFloatingPointFieldWithDefault(this, 6, 0.0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gnmi.TypedValue} returns this
+ */
+proto.gnmi.TypedValue.prototype.setFloatVal = function(value) {
+  return jspb.Message.setOneofField(this, 6, proto.gnmi.TypedValue.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.gnmi.TypedValue} returns this
+ */
+proto.gnmi.TypedValue.prototype.clearFloatVal = function() {
+  return jspb.Message.setOneofField(this, 6, proto.gnmi.TypedValue.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.TypedValue.prototype.hasFloatVal = function() {
+  return jspb.Message.getField(this, 6) != null;
+};
+
+
+/**
+ * optional Decimal64 decimal_val = 7;
+ * @return {?proto.gnmi.Decimal64}
+ */
+proto.gnmi.TypedValue.prototype.getDecimalVal = function() {
+  return /** @type{?proto.gnmi.Decimal64} */ (
+    jspb.Message.getWrapperField(this, proto.gnmi.Decimal64, 7));
+};
+
+
+/**
+ * @param {?proto.gnmi.Decimal64|undefined} value
+ * @return {!proto.gnmi.TypedValue} returns this
+*/
+proto.gnmi.TypedValue.prototype.setDecimalVal = function(value) {
+  return jspb.Message.setOneofWrapperField(this, 7, proto.gnmi.TypedValue.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gnmi.TypedValue} returns this
+ */
+proto.gnmi.TypedValue.prototype.clearDecimalVal = function() {
+  return this.setDecimalVal(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.TypedValue.prototype.hasDecimalVal = function() {
+  return jspb.Message.getField(this, 7) != null;
+};
+
+
+/**
+ * optional ScalarArray leaflist_val = 8;
+ * @return {?proto.gnmi.ScalarArray}
+ */
+proto.gnmi.TypedValue.prototype.getLeaflistVal = function() {
+  return /** @type{?proto.gnmi.ScalarArray} */ (
+    jspb.Message.getWrapperField(this, proto.gnmi.ScalarArray, 8));
+};
+
+
+/**
+ * @param {?proto.gnmi.ScalarArray|undefined} value
+ * @return {!proto.gnmi.TypedValue} returns this
+*/
+proto.gnmi.TypedValue.prototype.setLeaflistVal = function(value) {
+  return jspb.Message.setOneofWrapperField(this, 8, proto.gnmi.TypedValue.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gnmi.TypedValue} returns this
+ */
+proto.gnmi.TypedValue.prototype.clearLeaflistVal = function() {
+  return this.setLeaflistVal(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.TypedValue.prototype.hasLeaflistVal = function() {
+  return jspb.Message.getField(this, 8) != null;
+};
+
+
+/**
+ * optional google.protobuf.Any any_val = 9;
+ * @return {?proto.google.protobuf.Any}
+ */
+proto.gnmi.TypedValue.prototype.getAnyVal = function() {
+  return /** @type{?proto.google.protobuf.Any} */ (
+    jspb.Message.getWrapperField(this, google_protobuf_any_pb.Any, 9));
+};
+
+
+/**
+ * @param {?proto.google.protobuf.Any|undefined} value
+ * @return {!proto.gnmi.TypedValue} returns this
+*/
+proto.gnmi.TypedValue.prototype.setAnyVal = function(value) {
+  return jspb.Message.setOneofWrapperField(this, 9, proto.gnmi.TypedValue.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gnmi.TypedValue} returns this
+ */
+proto.gnmi.TypedValue.prototype.clearAnyVal = function() {
+  return this.setAnyVal(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.TypedValue.prototype.hasAnyVal = function() {
+  return jspb.Message.getField(this, 9) != null;
+};
+
+
+/**
+ * optional bytes json_val = 10;
+ * @return {!(string|Uint8Array)}
+ */
+proto.gnmi.TypedValue.prototype.getJsonVal = function() {
+  return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 10, ""));
+};
+
+
+/**
+ * optional bytes json_val = 10;
+ * This is a type-conversion wrapper around `getJsonVal()`
+ * @return {string}
+ */
+proto.gnmi.TypedValue.prototype.getJsonVal_asB64 = function() {
+  return /** @type {string} */ (jspb.Message.bytesAsB64(
+      this.getJsonVal()));
+};
+
+
+/**
+ * optional bytes json_val = 10;
+ * Note that Uint8Array is not supported on all browsers.
+ * @see http://caniuse.com/Uint8Array
+ * This is a type-conversion wrapper around `getJsonVal()`
+ * @return {!Uint8Array}
+ */
+proto.gnmi.TypedValue.prototype.getJsonVal_asU8 = function() {
+  return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(
+      this.getJsonVal()));
+};
+
+
+/**
+ * @param {!(string|Uint8Array)} value
+ * @return {!proto.gnmi.TypedValue} returns this
+ */
+proto.gnmi.TypedValue.prototype.setJsonVal = function(value) {
+  return jspb.Message.setOneofField(this, 10, proto.gnmi.TypedValue.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.gnmi.TypedValue} returns this
+ */
+proto.gnmi.TypedValue.prototype.clearJsonVal = function() {
+  return jspb.Message.setOneofField(this, 10, proto.gnmi.TypedValue.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.TypedValue.prototype.hasJsonVal = function() {
+  return jspb.Message.getField(this, 10) != null;
+};
+
+
+/**
+ * optional bytes json_ietf_val = 11;
+ * @return {!(string|Uint8Array)}
+ */
+proto.gnmi.TypedValue.prototype.getJsonIetfVal = function() {
+  return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 11, ""));
+};
+
+
+/**
+ * optional bytes json_ietf_val = 11;
+ * This is a type-conversion wrapper around `getJsonIetfVal()`
+ * @return {string}
+ */
+proto.gnmi.TypedValue.prototype.getJsonIetfVal_asB64 = function() {
+  return /** @type {string} */ (jspb.Message.bytesAsB64(
+      this.getJsonIetfVal()));
+};
+
+
+/**
+ * optional bytes json_ietf_val = 11;
+ * Note that Uint8Array is not supported on all browsers.
+ * @see http://caniuse.com/Uint8Array
+ * This is a type-conversion wrapper around `getJsonIetfVal()`
+ * @return {!Uint8Array}
+ */
+proto.gnmi.TypedValue.prototype.getJsonIetfVal_asU8 = function() {
+  return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(
+      this.getJsonIetfVal()));
+};
+
+
+/**
+ * @param {!(string|Uint8Array)} value
+ * @return {!proto.gnmi.TypedValue} returns this
+ */
+proto.gnmi.TypedValue.prototype.setJsonIetfVal = function(value) {
+  return jspb.Message.setOneofField(this, 11, proto.gnmi.TypedValue.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.gnmi.TypedValue} returns this
+ */
+proto.gnmi.TypedValue.prototype.clearJsonIetfVal = function() {
+  return jspb.Message.setOneofField(this, 11, proto.gnmi.TypedValue.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.TypedValue.prototype.hasJsonIetfVal = function() {
+  return jspb.Message.getField(this, 11) != null;
+};
+
+
+/**
+ * optional string ascii_val = 12;
+ * @return {string}
+ */
+proto.gnmi.TypedValue.prototype.getAsciiVal = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 12, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gnmi.TypedValue} returns this
+ */
+proto.gnmi.TypedValue.prototype.setAsciiVal = function(value) {
+  return jspb.Message.setOneofField(this, 12, proto.gnmi.TypedValue.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.gnmi.TypedValue} returns this
+ */
+proto.gnmi.TypedValue.prototype.clearAsciiVal = function() {
+  return jspb.Message.setOneofField(this, 12, proto.gnmi.TypedValue.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.TypedValue.prototype.hasAsciiVal = function() {
+  return jspb.Message.getField(this, 12) != null;
+};
+
+
+/**
+ * optional bytes proto_bytes = 13;
+ * @return {!(string|Uint8Array)}
+ */
+proto.gnmi.TypedValue.prototype.getProtoBytes = function() {
+  return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 13, ""));
+};
+
+
+/**
+ * optional bytes proto_bytes = 13;
+ * This is a type-conversion wrapper around `getProtoBytes()`
+ * @return {string}
+ */
+proto.gnmi.TypedValue.prototype.getProtoBytes_asB64 = function() {
+  return /** @type {string} */ (jspb.Message.bytesAsB64(
+      this.getProtoBytes()));
+};
+
+
+/**
+ * optional bytes proto_bytes = 13;
+ * Note that Uint8Array is not supported on all browsers.
+ * @see http://caniuse.com/Uint8Array
+ * This is a type-conversion wrapper around `getProtoBytes()`
+ * @return {!Uint8Array}
+ */
+proto.gnmi.TypedValue.prototype.getProtoBytes_asU8 = function() {
+  return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(
+      this.getProtoBytes()));
+};
+
+
+/**
+ * @param {!(string|Uint8Array)} value
+ * @return {!proto.gnmi.TypedValue} returns this
+ */
+proto.gnmi.TypedValue.prototype.setProtoBytes = function(value) {
+  return jspb.Message.setOneofField(this, 13, proto.gnmi.TypedValue.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.gnmi.TypedValue} returns this
+ */
+proto.gnmi.TypedValue.prototype.clearProtoBytes = function() {
+  return jspb.Message.setOneofField(this, 13, proto.gnmi.TypedValue.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.TypedValue.prototype.hasProtoBytes = function() {
+  return jspb.Message.getField(this, 13) != null;
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.gnmi.Path.repeatedFields_ = [1,3];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi.Path.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi.Path.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi.Path} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.Path.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    elementList: (f = jspb.Message.getRepeatedField(msg, 1)) == null ? undefined : f,
+    origin: jspb.Message.getFieldWithDefault(msg, 2, ""),
+    elemList: jspb.Message.toObjectList(msg.getElemList(),
+    proto.gnmi.PathElem.toObject, includeInstance),
+    target: jspb.Message.getFieldWithDefault(msg, 4, "")
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi.Path}
+ */
+proto.gnmi.Path.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi.Path;
+  return proto.gnmi.Path.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi.Path} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi.Path}
+ */
+proto.gnmi.Path.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.addElement(value);
+      break;
+    case 2:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setOrigin(value);
+      break;
+    case 3:
+      var value = new proto.gnmi.PathElem;
+      reader.readMessage(value,proto.gnmi.PathElem.deserializeBinaryFromReader);
+      msg.addElem(value);
+      break;
+    case 4:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setTarget(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi.Path.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi.Path.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi.Path} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.Path.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getElementList();
+  if (f.length > 0) {
+    writer.writeRepeatedString(
+      1,
+      f
+    );
+  }
+  f = message.getOrigin();
+  if (f.length > 0) {
+    writer.writeString(
+      2,
+      f
+    );
+  }
+  f = message.getElemList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      3,
+      f,
+      proto.gnmi.PathElem.serializeBinaryToWriter
+    );
+  }
+  f = message.getTarget();
+  if (f.length > 0) {
+    writer.writeString(
+      4,
+      f
+    );
+  }
+};
+
+
+/**
+ * repeated string element = 1;
+ * @return {!Array<string>}
+ */
+proto.gnmi.Path.prototype.getElementList = function() {
+  return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 1));
+};
+
+
+/**
+ * @param {!Array<string>} value
+ * @return {!proto.gnmi.Path} returns this
+ */
+proto.gnmi.Path.prototype.setElementList = function(value) {
+  return jspb.Message.setField(this, 1, value || []);
+};
+
+
+/**
+ * @param {string} value
+ * @param {number=} opt_index
+ * @return {!proto.gnmi.Path} returns this
+ */
+proto.gnmi.Path.prototype.addElement = function(value, opt_index) {
+  return jspb.Message.addToRepeatedField(this, 1, value, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gnmi.Path} returns this
+ */
+proto.gnmi.Path.prototype.clearElementList = function() {
+  return this.setElementList([]);
+};
+
+
+/**
+ * optional string origin = 2;
+ * @return {string}
+ */
+proto.gnmi.Path.prototype.getOrigin = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gnmi.Path} returns this
+ */
+proto.gnmi.Path.prototype.setOrigin = function(value) {
+  return jspb.Message.setProto3StringField(this, 2, value);
+};
+
+
+/**
+ * repeated PathElem elem = 3;
+ * @return {!Array<!proto.gnmi.PathElem>}
+ */
+proto.gnmi.Path.prototype.getElemList = function() {
+  return /** @type{!Array<!proto.gnmi.PathElem>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.gnmi.PathElem, 3));
+};
+
+
+/**
+ * @param {!Array<!proto.gnmi.PathElem>} value
+ * @return {!proto.gnmi.Path} returns this
+*/
+proto.gnmi.Path.prototype.setElemList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 3, value);
+};
+
+
+/**
+ * @param {!proto.gnmi.PathElem=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gnmi.PathElem}
+ */
+proto.gnmi.Path.prototype.addElem = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.gnmi.PathElem, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gnmi.Path} returns this
+ */
+proto.gnmi.Path.prototype.clearElemList = function() {
+  return this.setElemList([]);
+};
+
+
+/**
+ * optional string target = 4;
+ * @return {string}
+ */
+proto.gnmi.Path.prototype.getTarget = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gnmi.Path} returns this
+ */
+proto.gnmi.Path.prototype.setTarget = function(value) {
+  return jspb.Message.setProto3StringField(this, 4, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi.PathElem.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi.PathElem.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi.PathElem} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.PathElem.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    name: jspb.Message.getFieldWithDefault(msg, 1, ""),
+    keyMap: (f = msg.getKeyMap()) ? f.toObject(includeInstance, undefined) : []
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi.PathElem}
+ */
+proto.gnmi.PathElem.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi.PathElem;
+  return proto.gnmi.PathElem.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi.PathElem} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi.PathElem}
+ */
+proto.gnmi.PathElem.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setName(value);
+      break;
+    case 2:
+      var value = msg.getKeyMap();
+      reader.readMessage(value, function(message, reader) {
+        jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, "", "");
+         });
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi.PathElem.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi.PathElem.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi.PathElem} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.PathElem.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getName();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+  f = message.getKeyMap(true);
+  if (f && f.getLength() > 0) {
+    f.serializeBinary(2, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString);
+  }
+};
+
+
+/**
+ * optional string name = 1;
+ * @return {string}
+ */
+proto.gnmi.PathElem.prototype.getName = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gnmi.PathElem} returns this
+ */
+proto.gnmi.PathElem.prototype.setName = function(value) {
+  return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * map<string, string> key = 2;
+ * @param {boolean=} opt_noLazyCreate Do not create the map if
+ * empty, instead returning `undefined`
+ * @return {!jspb.Map<string,string>}
+ */
+proto.gnmi.PathElem.prototype.getKeyMap = function(opt_noLazyCreate) {
+  return /** @type {!jspb.Map<string,string>} */ (
+      jspb.Message.getMapField(this, 2, opt_noLazyCreate,
+      null));
+};
+
+
+/**
+ * Clears values from the map. The map will be non-null.
+ * @return {!proto.gnmi.PathElem} returns this
+ */
+proto.gnmi.PathElem.prototype.clearKeyMap = function() {
+  this.getKeyMap().clear();
+  return this;};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi.Value.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi.Value.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi.Value} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.Value.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    value: msg.getValue_asB64(),
+    type: jspb.Message.getFieldWithDefault(msg, 2, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi.Value}
+ */
+proto.gnmi.Value.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi.Value;
+  return proto.gnmi.Value.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi.Value} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi.Value}
+ */
+proto.gnmi.Value.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {!Uint8Array} */ (reader.readBytes());
+      msg.setValue(value);
+      break;
+    case 2:
+      var value = /** @type {!proto.gnmi.Encoding} */ (reader.readEnum());
+      msg.setType(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi.Value.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi.Value.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi.Value} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.Value.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getValue_asU8();
+  if (f.length > 0) {
+    writer.writeBytes(
+      1,
+      f
+    );
+  }
+  f = message.getType();
+  if (f !== 0.0) {
+    writer.writeEnum(
+      2,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional bytes value = 1;
+ * @return {!(string|Uint8Array)}
+ */
+proto.gnmi.Value.prototype.getValue = function() {
+  return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * optional bytes value = 1;
+ * This is a type-conversion wrapper around `getValue()`
+ * @return {string}
+ */
+proto.gnmi.Value.prototype.getValue_asB64 = function() {
+  return /** @type {string} */ (jspb.Message.bytesAsB64(
+      this.getValue()));
+};
+
+
+/**
+ * optional bytes value = 1;
+ * Note that Uint8Array is not supported on all browsers.
+ * @see http://caniuse.com/Uint8Array
+ * This is a type-conversion wrapper around `getValue()`
+ * @return {!Uint8Array}
+ */
+proto.gnmi.Value.prototype.getValue_asU8 = function() {
+  return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(
+      this.getValue()));
+};
+
+
+/**
+ * @param {!(string|Uint8Array)} value
+ * @return {!proto.gnmi.Value} returns this
+ */
+proto.gnmi.Value.prototype.setValue = function(value) {
+  return jspb.Message.setProto3BytesField(this, 1, value);
+};
+
+
+/**
+ * optional Encoding type = 2;
+ * @return {!proto.gnmi.Encoding}
+ */
+proto.gnmi.Value.prototype.getType = function() {
+  return /** @type {!proto.gnmi.Encoding} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {!proto.gnmi.Encoding} value
+ * @return {!proto.gnmi.Value} returns this
+ */
+proto.gnmi.Value.prototype.setType = function(value) {
+  return jspb.Message.setProto3EnumField(this, 2, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi.Error.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi.Error.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi.Error} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.Error.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    code: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    message: jspb.Message.getFieldWithDefault(msg, 2, ""),
+    data: (f = msg.getData()) && google_protobuf_any_pb.Any.toObject(includeInstance, f)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi.Error}
+ */
+proto.gnmi.Error.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi.Error;
+  return proto.gnmi.Error.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi.Error} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi.Error}
+ */
+proto.gnmi.Error.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readUint32());
+      msg.setCode(value);
+      break;
+    case 2:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setMessage(value);
+      break;
+    case 3:
+      var value = new google_protobuf_any_pb.Any;
+      reader.readMessage(value,google_protobuf_any_pb.Any.deserializeBinaryFromReader);
+      msg.setData(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi.Error.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi.Error.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi.Error} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.Error.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getCode();
+  if (f !== 0) {
+    writer.writeUint32(
+      1,
+      f
+    );
+  }
+  f = message.getMessage();
+  if (f.length > 0) {
+    writer.writeString(
+      2,
+      f
+    );
+  }
+  f = message.getData();
+  if (f != null) {
+    writer.writeMessage(
+      3,
+      f,
+      google_protobuf_any_pb.Any.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * optional uint32 code = 1;
+ * @return {number}
+ */
+proto.gnmi.Error.prototype.getCode = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gnmi.Error} returns this
+ */
+proto.gnmi.Error.prototype.setCode = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional string message = 2;
+ * @return {string}
+ */
+proto.gnmi.Error.prototype.getMessage = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gnmi.Error} returns this
+ */
+proto.gnmi.Error.prototype.setMessage = function(value) {
+  return jspb.Message.setProto3StringField(this, 2, value);
+};
+
+
+/**
+ * optional google.protobuf.Any data = 3;
+ * @return {?proto.google.protobuf.Any}
+ */
+proto.gnmi.Error.prototype.getData = function() {
+  return /** @type{?proto.google.protobuf.Any} */ (
+    jspb.Message.getWrapperField(this, google_protobuf_any_pb.Any, 3));
+};
+
+
+/**
+ * @param {?proto.google.protobuf.Any|undefined} value
+ * @return {!proto.gnmi.Error} returns this
+*/
+proto.gnmi.Error.prototype.setData = function(value) {
+  return jspb.Message.setWrapperField(this, 3, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gnmi.Error} returns this
+ */
+proto.gnmi.Error.prototype.clearData = function() {
+  return this.setData(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.Error.prototype.hasData = function() {
+  return jspb.Message.getField(this, 3) != null;
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi.Decimal64.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi.Decimal64.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi.Decimal64} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.Decimal64.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    digits: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    precision: jspb.Message.getFieldWithDefault(msg, 2, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi.Decimal64}
+ */
+proto.gnmi.Decimal64.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi.Decimal64;
+  return proto.gnmi.Decimal64.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi.Decimal64} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi.Decimal64}
+ */
+proto.gnmi.Decimal64.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setDigits(value);
+      break;
+    case 2:
+      var value = /** @type {number} */ (reader.readUint32());
+      msg.setPrecision(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi.Decimal64.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi.Decimal64.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi.Decimal64} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.Decimal64.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getDigits();
+  if (f !== 0) {
+    writer.writeInt64(
+      1,
+      f
+    );
+  }
+  f = message.getPrecision();
+  if (f !== 0) {
+    writer.writeUint32(
+      2,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional int64 digits = 1;
+ * @return {number}
+ */
+proto.gnmi.Decimal64.prototype.getDigits = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gnmi.Decimal64} returns this
+ */
+proto.gnmi.Decimal64.prototype.setDigits = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional uint32 precision = 2;
+ * @return {number}
+ */
+proto.gnmi.Decimal64.prototype.getPrecision = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gnmi.Decimal64} returns this
+ */
+proto.gnmi.Decimal64.prototype.setPrecision = function(value) {
+  return jspb.Message.setProto3IntField(this, 2, value);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.gnmi.ScalarArray.repeatedFields_ = [1];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi.ScalarArray.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi.ScalarArray.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi.ScalarArray} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.ScalarArray.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    elementList: jspb.Message.toObjectList(msg.getElementList(),
+    proto.gnmi.TypedValue.toObject, includeInstance)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi.ScalarArray}
+ */
+proto.gnmi.ScalarArray.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi.ScalarArray;
+  return proto.gnmi.ScalarArray.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi.ScalarArray} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi.ScalarArray}
+ */
+proto.gnmi.ScalarArray.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = new proto.gnmi.TypedValue;
+      reader.readMessage(value,proto.gnmi.TypedValue.deserializeBinaryFromReader);
+      msg.addElement(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi.ScalarArray.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi.ScalarArray.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi.ScalarArray} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.ScalarArray.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getElementList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      1,
+      f,
+      proto.gnmi.TypedValue.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * repeated TypedValue element = 1;
+ * @return {!Array<!proto.gnmi.TypedValue>}
+ */
+proto.gnmi.ScalarArray.prototype.getElementList = function() {
+  return /** @type{!Array<!proto.gnmi.TypedValue>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.gnmi.TypedValue, 1));
+};
+
+
+/**
+ * @param {!Array<!proto.gnmi.TypedValue>} value
+ * @return {!proto.gnmi.ScalarArray} returns this
+*/
+proto.gnmi.ScalarArray.prototype.setElementList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 1, value);
+};
+
+
+/**
+ * @param {!proto.gnmi.TypedValue=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gnmi.TypedValue}
+ */
+proto.gnmi.ScalarArray.prototype.addElement = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.gnmi.TypedValue, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gnmi.ScalarArray} returns this
+ */
+proto.gnmi.ScalarArray.prototype.clearElementList = function() {
+  return this.setElementList([]);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.gnmi.SubscribeRequest.repeatedFields_ = [5];
+
+/**
+ * Oneof group definitions for this message. Each group defines the field
+ * numbers belonging to that group. When of these fields' value is set, all
+ * other fields in the group are cleared. During deserialization, if multiple
+ * fields are encountered for a group, only the last value seen will be kept.
+ * @private {!Array<!Array<number>>}
+ * @const
+ */
+proto.gnmi.SubscribeRequest.oneofGroups_ = [[1,3,4]];
+
+/**
+ * @enum {number}
+ */
+proto.gnmi.SubscribeRequest.RequestCase = {
+  REQUEST_NOT_SET: 0,
+  SUBSCRIBE: 1,
+  POLL: 3,
+  ALIASES: 4
+};
+
+/**
+ * @return {proto.gnmi.SubscribeRequest.RequestCase}
+ */
+proto.gnmi.SubscribeRequest.prototype.getRequestCase = function() {
+  return /** @type {proto.gnmi.SubscribeRequest.RequestCase} */(jspb.Message.computeOneofCase(this, proto.gnmi.SubscribeRequest.oneofGroups_[0]));
+};
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi.SubscribeRequest.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi.SubscribeRequest.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi.SubscribeRequest} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.SubscribeRequest.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    subscribe: (f = msg.getSubscribe()) && proto.gnmi.SubscriptionList.toObject(includeInstance, f),
+    poll: (f = msg.getPoll()) && proto.gnmi.Poll.toObject(includeInstance, f),
+    aliases: (f = msg.getAliases()) && proto.gnmi.AliasList.toObject(includeInstance, f),
+    extensionList: jspb.Message.toObjectList(msg.getExtensionList(),
+    github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.toObject, includeInstance)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi.SubscribeRequest}
+ */
+proto.gnmi.SubscribeRequest.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi.SubscribeRequest;
+  return proto.gnmi.SubscribeRequest.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi.SubscribeRequest} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi.SubscribeRequest}
+ */
+proto.gnmi.SubscribeRequest.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = new proto.gnmi.SubscriptionList;
+      reader.readMessage(value,proto.gnmi.SubscriptionList.deserializeBinaryFromReader);
+      msg.setSubscribe(value);
+      break;
+    case 3:
+      var value = new proto.gnmi.Poll;
+      reader.readMessage(value,proto.gnmi.Poll.deserializeBinaryFromReader);
+      msg.setPoll(value);
+      break;
+    case 4:
+      var value = new proto.gnmi.AliasList;
+      reader.readMessage(value,proto.gnmi.AliasList.deserializeBinaryFromReader);
+      msg.setAliases(value);
+      break;
+    case 5:
+      var value = new github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension;
+      reader.readMessage(value,github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.deserializeBinaryFromReader);
+      msg.addExtension$(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi.SubscribeRequest.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi.SubscribeRequest.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi.SubscribeRequest} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.SubscribeRequest.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getSubscribe();
+  if (f != null) {
+    writer.writeMessage(
+      1,
+      f,
+      proto.gnmi.SubscriptionList.serializeBinaryToWriter
+    );
+  }
+  f = message.getPoll();
+  if (f != null) {
+    writer.writeMessage(
+      3,
+      f,
+      proto.gnmi.Poll.serializeBinaryToWriter
+    );
+  }
+  f = message.getAliases();
+  if (f != null) {
+    writer.writeMessage(
+      4,
+      f,
+      proto.gnmi.AliasList.serializeBinaryToWriter
+    );
+  }
+  f = message.getExtensionList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      5,
+      f,
+      github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * optional SubscriptionList subscribe = 1;
+ * @return {?proto.gnmi.SubscriptionList}
+ */
+proto.gnmi.SubscribeRequest.prototype.getSubscribe = function() {
+  return /** @type{?proto.gnmi.SubscriptionList} */ (
+    jspb.Message.getWrapperField(this, proto.gnmi.SubscriptionList, 1));
+};
+
+
+/**
+ * @param {?proto.gnmi.SubscriptionList|undefined} value
+ * @return {!proto.gnmi.SubscribeRequest} returns this
+*/
+proto.gnmi.SubscribeRequest.prototype.setSubscribe = function(value) {
+  return jspb.Message.setOneofWrapperField(this, 1, proto.gnmi.SubscribeRequest.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gnmi.SubscribeRequest} returns this
+ */
+proto.gnmi.SubscribeRequest.prototype.clearSubscribe = function() {
+  return this.setSubscribe(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.SubscribeRequest.prototype.hasSubscribe = function() {
+  return jspb.Message.getField(this, 1) != null;
+};
+
+
+/**
+ * optional Poll poll = 3;
+ * @return {?proto.gnmi.Poll}
+ */
+proto.gnmi.SubscribeRequest.prototype.getPoll = function() {
+  return /** @type{?proto.gnmi.Poll} */ (
+    jspb.Message.getWrapperField(this, proto.gnmi.Poll, 3));
+};
+
+
+/**
+ * @param {?proto.gnmi.Poll|undefined} value
+ * @return {!proto.gnmi.SubscribeRequest} returns this
+*/
+proto.gnmi.SubscribeRequest.prototype.setPoll = function(value) {
+  return jspb.Message.setOneofWrapperField(this, 3, proto.gnmi.SubscribeRequest.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gnmi.SubscribeRequest} returns this
+ */
+proto.gnmi.SubscribeRequest.prototype.clearPoll = function() {
+  return this.setPoll(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.SubscribeRequest.prototype.hasPoll = function() {
+  return jspb.Message.getField(this, 3) != null;
+};
+
+
+/**
+ * optional AliasList aliases = 4;
+ * @return {?proto.gnmi.AliasList}
+ */
+proto.gnmi.SubscribeRequest.prototype.getAliases = function() {
+  return /** @type{?proto.gnmi.AliasList} */ (
+    jspb.Message.getWrapperField(this, proto.gnmi.AliasList, 4));
+};
+
+
+/**
+ * @param {?proto.gnmi.AliasList|undefined} value
+ * @return {!proto.gnmi.SubscribeRequest} returns this
+*/
+proto.gnmi.SubscribeRequest.prototype.setAliases = function(value) {
+  return jspb.Message.setOneofWrapperField(this, 4, proto.gnmi.SubscribeRequest.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gnmi.SubscribeRequest} returns this
+ */
+proto.gnmi.SubscribeRequest.prototype.clearAliases = function() {
+  return this.setAliases(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.SubscribeRequest.prototype.hasAliases = function() {
+  return jspb.Message.getField(this, 4) != null;
+};
+
+
+/**
+ * repeated gnmi_ext.Extension extension = 5;
+ * @return {!Array<!proto.gnmi_ext.Extension>}
+ */
+proto.gnmi.SubscribeRequest.prototype.getExtensionList = function() {
+  return /** @type{!Array<!proto.gnmi_ext.Extension>} */ (
+    jspb.Message.getRepeatedWrapperField(this, github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension, 5));
+};
+
+
+/**
+ * @param {!Array<!proto.gnmi_ext.Extension>} value
+ * @return {!proto.gnmi.SubscribeRequest} returns this
+*/
+proto.gnmi.SubscribeRequest.prototype.setExtensionList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 5, value);
+};
+
+
+/**
+ * @param {!proto.gnmi_ext.Extension=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gnmi_ext.Extension}
+ */
+proto.gnmi.SubscribeRequest.prototype.addExtension$ = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 5, opt_value, proto.gnmi_ext.Extension, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gnmi.SubscribeRequest} returns this
+ */
+proto.gnmi.SubscribeRequest.prototype.clearExtensionList = function() {
+  return this.setExtensionList([]);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi.Poll.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi.Poll.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi.Poll} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.Poll.toObject = function(includeInstance, msg) {
+  var f, obj = {
+
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi.Poll}
+ */
+proto.gnmi.Poll.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi.Poll;
+  return proto.gnmi.Poll.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi.Poll} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi.Poll}
+ */
+proto.gnmi.Poll.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi.Poll.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi.Poll.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi.Poll} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.Poll.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.gnmi.SubscribeResponse.repeatedFields_ = [5];
+
+/**
+ * Oneof group definitions for this message. Each group defines the field
+ * numbers belonging to that group. When of these fields' value is set, all
+ * other fields in the group are cleared. During deserialization, if multiple
+ * fields are encountered for a group, only the last value seen will be kept.
+ * @private {!Array<!Array<number>>}
+ * @const
+ */
+proto.gnmi.SubscribeResponse.oneofGroups_ = [[1,3,4]];
+
+/**
+ * @enum {number}
+ */
+proto.gnmi.SubscribeResponse.ResponseCase = {
+  RESPONSE_NOT_SET: 0,
+  UPDATE: 1,
+  SYNC_RESPONSE: 3,
+  ERROR: 4
+};
+
+/**
+ * @return {proto.gnmi.SubscribeResponse.ResponseCase}
+ */
+proto.gnmi.SubscribeResponse.prototype.getResponseCase = function() {
+  return /** @type {proto.gnmi.SubscribeResponse.ResponseCase} */(jspb.Message.computeOneofCase(this, proto.gnmi.SubscribeResponse.oneofGroups_[0]));
+};
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi.SubscribeResponse.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi.SubscribeResponse.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi.SubscribeResponse} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.SubscribeResponse.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    update: (f = msg.getUpdate()) && proto.gnmi.Notification.toObject(includeInstance, f),
+    syncResponse: jspb.Message.getBooleanFieldWithDefault(msg, 3, false),
+    error: (f = msg.getError()) && proto.gnmi.Error.toObject(includeInstance, f),
+    extensionList: jspb.Message.toObjectList(msg.getExtensionList(),
+    github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.toObject, includeInstance)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi.SubscribeResponse}
+ */
+proto.gnmi.SubscribeResponse.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi.SubscribeResponse;
+  return proto.gnmi.SubscribeResponse.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi.SubscribeResponse} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi.SubscribeResponse}
+ */
+proto.gnmi.SubscribeResponse.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = new proto.gnmi.Notification;
+      reader.readMessage(value,proto.gnmi.Notification.deserializeBinaryFromReader);
+      msg.setUpdate(value);
+      break;
+    case 3:
+      var value = /** @type {boolean} */ (reader.readBool());
+      msg.setSyncResponse(value);
+      break;
+    case 4:
+      var value = new proto.gnmi.Error;
+      reader.readMessage(value,proto.gnmi.Error.deserializeBinaryFromReader);
+      msg.setError(value);
+      break;
+    case 5:
+      var value = new github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension;
+      reader.readMessage(value,github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.deserializeBinaryFromReader);
+      msg.addExtension$(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi.SubscribeResponse.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi.SubscribeResponse.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi.SubscribeResponse} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.SubscribeResponse.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getUpdate();
+  if (f != null) {
+    writer.writeMessage(
+      1,
+      f,
+      proto.gnmi.Notification.serializeBinaryToWriter
+    );
+  }
+  f = /** @type {boolean} */ (jspb.Message.getField(message, 3));
+  if (f != null) {
+    writer.writeBool(
+      3,
+      f
+    );
+  }
+  f = message.getError();
+  if (f != null) {
+    writer.writeMessage(
+      4,
+      f,
+      proto.gnmi.Error.serializeBinaryToWriter
+    );
+  }
+  f = message.getExtensionList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      5,
+      f,
+      github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * optional Notification update = 1;
+ * @return {?proto.gnmi.Notification}
+ */
+proto.gnmi.SubscribeResponse.prototype.getUpdate = function() {
+  return /** @type{?proto.gnmi.Notification} */ (
+    jspb.Message.getWrapperField(this, proto.gnmi.Notification, 1));
+};
+
+
+/**
+ * @param {?proto.gnmi.Notification|undefined} value
+ * @return {!proto.gnmi.SubscribeResponse} returns this
+*/
+proto.gnmi.SubscribeResponse.prototype.setUpdate = function(value) {
+  return jspb.Message.setOneofWrapperField(this, 1, proto.gnmi.SubscribeResponse.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gnmi.SubscribeResponse} returns this
+ */
+proto.gnmi.SubscribeResponse.prototype.clearUpdate = function() {
+  return this.setUpdate(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.SubscribeResponse.prototype.hasUpdate = function() {
+  return jspb.Message.getField(this, 1) != null;
+};
+
+
+/**
+ * optional bool sync_response = 3;
+ * @return {boolean}
+ */
+proto.gnmi.SubscribeResponse.prototype.getSyncResponse = function() {
+  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 3, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.gnmi.SubscribeResponse} returns this
+ */
+proto.gnmi.SubscribeResponse.prototype.setSyncResponse = function(value) {
+  return jspb.Message.setOneofField(this, 3, proto.gnmi.SubscribeResponse.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.gnmi.SubscribeResponse} returns this
+ */
+proto.gnmi.SubscribeResponse.prototype.clearSyncResponse = function() {
+  return jspb.Message.setOneofField(this, 3, proto.gnmi.SubscribeResponse.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.SubscribeResponse.prototype.hasSyncResponse = function() {
+  return jspb.Message.getField(this, 3) != null;
+};
+
+
+/**
+ * optional Error error = 4;
+ * @return {?proto.gnmi.Error}
+ */
+proto.gnmi.SubscribeResponse.prototype.getError = function() {
+  return /** @type{?proto.gnmi.Error} */ (
+    jspb.Message.getWrapperField(this, proto.gnmi.Error, 4));
+};
+
+
+/**
+ * @param {?proto.gnmi.Error|undefined} value
+ * @return {!proto.gnmi.SubscribeResponse} returns this
+*/
+proto.gnmi.SubscribeResponse.prototype.setError = function(value) {
+  return jspb.Message.setOneofWrapperField(this, 4, proto.gnmi.SubscribeResponse.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gnmi.SubscribeResponse} returns this
+ */
+proto.gnmi.SubscribeResponse.prototype.clearError = function() {
+  return this.setError(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.SubscribeResponse.prototype.hasError = function() {
+  return jspb.Message.getField(this, 4) != null;
+};
+
+
+/**
+ * repeated gnmi_ext.Extension extension = 5;
+ * @return {!Array<!proto.gnmi_ext.Extension>}
+ */
+proto.gnmi.SubscribeResponse.prototype.getExtensionList = function() {
+  return /** @type{!Array<!proto.gnmi_ext.Extension>} */ (
+    jspb.Message.getRepeatedWrapperField(this, github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension, 5));
+};
+
+
+/**
+ * @param {!Array<!proto.gnmi_ext.Extension>} value
+ * @return {!proto.gnmi.SubscribeResponse} returns this
+*/
+proto.gnmi.SubscribeResponse.prototype.setExtensionList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 5, value);
+};
+
+
+/**
+ * @param {!proto.gnmi_ext.Extension=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gnmi_ext.Extension}
+ */
+proto.gnmi.SubscribeResponse.prototype.addExtension$ = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 5, opt_value, proto.gnmi_ext.Extension, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gnmi.SubscribeResponse} returns this
+ */
+proto.gnmi.SubscribeResponse.prototype.clearExtensionList = function() {
+  return this.setExtensionList([]);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.gnmi.SubscriptionList.repeatedFields_ = [2,7];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi.SubscriptionList.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi.SubscriptionList.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi.SubscriptionList} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.SubscriptionList.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    prefix: (f = msg.getPrefix()) && proto.gnmi.Path.toObject(includeInstance, f),
+    subscriptionList: jspb.Message.toObjectList(msg.getSubscriptionList(),
+    proto.gnmi.Subscription.toObject, includeInstance),
+    useAliases: jspb.Message.getBooleanFieldWithDefault(msg, 3, false),
+    qos: (f = msg.getQos()) && proto.gnmi.QOSMarking.toObject(includeInstance, f),
+    mode: jspb.Message.getFieldWithDefault(msg, 5, 0),
+    allowAggregation: jspb.Message.getBooleanFieldWithDefault(msg, 6, false),
+    useModelsList: jspb.Message.toObjectList(msg.getUseModelsList(),
+    proto.gnmi.ModelData.toObject, includeInstance),
+    encoding: jspb.Message.getFieldWithDefault(msg, 8, 0),
+    updatesOnly: jspb.Message.getBooleanFieldWithDefault(msg, 9, false)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi.SubscriptionList}
+ */
+proto.gnmi.SubscriptionList.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi.SubscriptionList;
+  return proto.gnmi.SubscriptionList.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi.SubscriptionList} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi.SubscriptionList}
+ */
+proto.gnmi.SubscriptionList.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = new proto.gnmi.Path;
+      reader.readMessage(value,proto.gnmi.Path.deserializeBinaryFromReader);
+      msg.setPrefix(value);
+      break;
+    case 2:
+      var value = new proto.gnmi.Subscription;
+      reader.readMessage(value,proto.gnmi.Subscription.deserializeBinaryFromReader);
+      msg.addSubscription(value);
+      break;
+    case 3:
+      var value = /** @type {boolean} */ (reader.readBool());
+      msg.setUseAliases(value);
+      break;
+    case 4:
+      var value = new proto.gnmi.QOSMarking;
+      reader.readMessage(value,proto.gnmi.QOSMarking.deserializeBinaryFromReader);
+      msg.setQos(value);
+      break;
+    case 5:
+      var value = /** @type {!proto.gnmi.SubscriptionList.Mode} */ (reader.readEnum());
+      msg.setMode(value);
+      break;
+    case 6:
+      var value = /** @type {boolean} */ (reader.readBool());
+      msg.setAllowAggregation(value);
+      break;
+    case 7:
+      var value = new proto.gnmi.ModelData;
+      reader.readMessage(value,proto.gnmi.ModelData.deserializeBinaryFromReader);
+      msg.addUseModels(value);
+      break;
+    case 8:
+      var value = /** @type {!proto.gnmi.Encoding} */ (reader.readEnum());
+      msg.setEncoding(value);
+      break;
+    case 9:
+      var value = /** @type {boolean} */ (reader.readBool());
+      msg.setUpdatesOnly(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi.SubscriptionList.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi.SubscriptionList.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi.SubscriptionList} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.SubscriptionList.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getPrefix();
+  if (f != null) {
+    writer.writeMessage(
+      1,
+      f,
+      proto.gnmi.Path.serializeBinaryToWriter
+    );
+  }
+  f = message.getSubscriptionList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      2,
+      f,
+      proto.gnmi.Subscription.serializeBinaryToWriter
+    );
+  }
+  f = message.getUseAliases();
+  if (f) {
+    writer.writeBool(
+      3,
+      f
+    );
+  }
+  f = message.getQos();
+  if (f != null) {
+    writer.writeMessage(
+      4,
+      f,
+      proto.gnmi.QOSMarking.serializeBinaryToWriter
+    );
+  }
+  f = message.getMode();
+  if (f !== 0.0) {
+    writer.writeEnum(
+      5,
+      f
+    );
+  }
+  f = message.getAllowAggregation();
+  if (f) {
+    writer.writeBool(
+      6,
+      f
+    );
+  }
+  f = message.getUseModelsList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      7,
+      f,
+      proto.gnmi.ModelData.serializeBinaryToWriter
+    );
+  }
+  f = message.getEncoding();
+  if (f !== 0.0) {
+    writer.writeEnum(
+      8,
+      f
+    );
+  }
+  f = message.getUpdatesOnly();
+  if (f) {
+    writer.writeBool(
+      9,
+      f
+    );
+  }
+};
+
+
+/**
+ * @enum {number}
+ */
+proto.gnmi.SubscriptionList.Mode = {
+  STREAM: 0,
+  ONCE: 1,
+  POLL: 2
+};
+
+/**
+ * optional Path prefix = 1;
+ * @return {?proto.gnmi.Path}
+ */
+proto.gnmi.SubscriptionList.prototype.getPrefix = function() {
+  return /** @type{?proto.gnmi.Path} */ (
+    jspb.Message.getWrapperField(this, proto.gnmi.Path, 1));
+};
+
+
+/**
+ * @param {?proto.gnmi.Path|undefined} value
+ * @return {!proto.gnmi.SubscriptionList} returns this
+*/
+proto.gnmi.SubscriptionList.prototype.setPrefix = function(value) {
+  return jspb.Message.setWrapperField(this, 1, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gnmi.SubscriptionList} returns this
+ */
+proto.gnmi.SubscriptionList.prototype.clearPrefix = function() {
+  return this.setPrefix(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.SubscriptionList.prototype.hasPrefix = function() {
+  return jspb.Message.getField(this, 1) != null;
+};
+
+
+/**
+ * repeated Subscription subscription = 2;
+ * @return {!Array<!proto.gnmi.Subscription>}
+ */
+proto.gnmi.SubscriptionList.prototype.getSubscriptionList = function() {
+  return /** @type{!Array<!proto.gnmi.Subscription>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.gnmi.Subscription, 2));
+};
+
+
+/**
+ * @param {!Array<!proto.gnmi.Subscription>} value
+ * @return {!proto.gnmi.SubscriptionList} returns this
+*/
+proto.gnmi.SubscriptionList.prototype.setSubscriptionList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 2, value);
+};
+
+
+/**
+ * @param {!proto.gnmi.Subscription=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gnmi.Subscription}
+ */
+proto.gnmi.SubscriptionList.prototype.addSubscription = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.gnmi.Subscription, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gnmi.SubscriptionList} returns this
+ */
+proto.gnmi.SubscriptionList.prototype.clearSubscriptionList = function() {
+  return this.setSubscriptionList([]);
+};
+
+
+/**
+ * optional bool use_aliases = 3;
+ * @return {boolean}
+ */
+proto.gnmi.SubscriptionList.prototype.getUseAliases = function() {
+  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 3, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.gnmi.SubscriptionList} returns this
+ */
+proto.gnmi.SubscriptionList.prototype.setUseAliases = function(value) {
+  return jspb.Message.setProto3BooleanField(this, 3, value);
+};
+
+
+/**
+ * optional QOSMarking qos = 4;
+ * @return {?proto.gnmi.QOSMarking}
+ */
+proto.gnmi.SubscriptionList.prototype.getQos = function() {
+  return /** @type{?proto.gnmi.QOSMarking} */ (
+    jspb.Message.getWrapperField(this, proto.gnmi.QOSMarking, 4));
+};
+
+
+/**
+ * @param {?proto.gnmi.QOSMarking|undefined} value
+ * @return {!proto.gnmi.SubscriptionList} returns this
+*/
+proto.gnmi.SubscriptionList.prototype.setQos = function(value) {
+  return jspb.Message.setWrapperField(this, 4, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gnmi.SubscriptionList} returns this
+ */
+proto.gnmi.SubscriptionList.prototype.clearQos = function() {
+  return this.setQos(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.SubscriptionList.prototype.hasQos = function() {
+  return jspb.Message.getField(this, 4) != null;
+};
+
+
+/**
+ * optional Mode mode = 5;
+ * @return {!proto.gnmi.SubscriptionList.Mode}
+ */
+proto.gnmi.SubscriptionList.prototype.getMode = function() {
+  return /** @type {!proto.gnmi.SubscriptionList.Mode} */ (jspb.Message.getFieldWithDefault(this, 5, 0));
+};
+
+
+/**
+ * @param {!proto.gnmi.SubscriptionList.Mode} value
+ * @return {!proto.gnmi.SubscriptionList} returns this
+ */
+proto.gnmi.SubscriptionList.prototype.setMode = function(value) {
+  return jspb.Message.setProto3EnumField(this, 5, value);
+};
+
+
+/**
+ * optional bool allow_aggregation = 6;
+ * @return {boolean}
+ */
+proto.gnmi.SubscriptionList.prototype.getAllowAggregation = function() {
+  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 6, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.gnmi.SubscriptionList} returns this
+ */
+proto.gnmi.SubscriptionList.prototype.setAllowAggregation = function(value) {
+  return jspb.Message.setProto3BooleanField(this, 6, value);
+};
+
+
+/**
+ * repeated ModelData use_models = 7;
+ * @return {!Array<!proto.gnmi.ModelData>}
+ */
+proto.gnmi.SubscriptionList.prototype.getUseModelsList = function() {
+  return /** @type{!Array<!proto.gnmi.ModelData>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.gnmi.ModelData, 7));
+};
+
+
+/**
+ * @param {!Array<!proto.gnmi.ModelData>} value
+ * @return {!proto.gnmi.SubscriptionList} returns this
+*/
+proto.gnmi.SubscriptionList.prototype.setUseModelsList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 7, value);
+};
+
+
+/**
+ * @param {!proto.gnmi.ModelData=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gnmi.ModelData}
+ */
+proto.gnmi.SubscriptionList.prototype.addUseModels = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 7, opt_value, proto.gnmi.ModelData, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gnmi.SubscriptionList} returns this
+ */
+proto.gnmi.SubscriptionList.prototype.clearUseModelsList = function() {
+  return this.setUseModelsList([]);
+};
+
+
+/**
+ * optional Encoding encoding = 8;
+ * @return {!proto.gnmi.Encoding}
+ */
+proto.gnmi.SubscriptionList.prototype.getEncoding = function() {
+  return /** @type {!proto.gnmi.Encoding} */ (jspb.Message.getFieldWithDefault(this, 8, 0));
+};
+
+
+/**
+ * @param {!proto.gnmi.Encoding} value
+ * @return {!proto.gnmi.SubscriptionList} returns this
+ */
+proto.gnmi.SubscriptionList.prototype.setEncoding = function(value) {
+  return jspb.Message.setProto3EnumField(this, 8, value);
+};
+
+
+/**
+ * optional bool updates_only = 9;
+ * @return {boolean}
+ */
+proto.gnmi.SubscriptionList.prototype.getUpdatesOnly = function() {
+  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 9, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.gnmi.SubscriptionList} returns this
+ */
+proto.gnmi.SubscriptionList.prototype.setUpdatesOnly = function(value) {
+  return jspb.Message.setProto3BooleanField(this, 9, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi.Subscription.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi.Subscription.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi.Subscription} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.Subscription.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    path: (f = msg.getPath()) && proto.gnmi.Path.toObject(includeInstance, f),
+    mode: jspb.Message.getFieldWithDefault(msg, 2, 0),
+    sampleInterval: jspb.Message.getFieldWithDefault(msg, 3, 0),
+    suppressRedundant: jspb.Message.getBooleanFieldWithDefault(msg, 4, false),
+    heartbeatInterval: jspb.Message.getFieldWithDefault(msg, 5, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi.Subscription}
+ */
+proto.gnmi.Subscription.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi.Subscription;
+  return proto.gnmi.Subscription.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi.Subscription} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi.Subscription}
+ */
+proto.gnmi.Subscription.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = new proto.gnmi.Path;
+      reader.readMessage(value,proto.gnmi.Path.deserializeBinaryFromReader);
+      msg.setPath(value);
+      break;
+    case 2:
+      var value = /** @type {!proto.gnmi.SubscriptionMode} */ (reader.readEnum());
+      msg.setMode(value);
+      break;
+    case 3:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setSampleInterval(value);
+      break;
+    case 4:
+      var value = /** @type {boolean} */ (reader.readBool());
+      msg.setSuppressRedundant(value);
+      break;
+    case 5:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setHeartbeatInterval(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi.Subscription.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi.Subscription.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi.Subscription} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.Subscription.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getPath();
+  if (f != null) {
+    writer.writeMessage(
+      1,
+      f,
+      proto.gnmi.Path.serializeBinaryToWriter
+    );
+  }
+  f = message.getMode();
+  if (f !== 0.0) {
+    writer.writeEnum(
+      2,
+      f
+    );
+  }
+  f = message.getSampleInterval();
+  if (f !== 0) {
+    writer.writeUint64(
+      3,
+      f
+    );
+  }
+  f = message.getSuppressRedundant();
+  if (f) {
+    writer.writeBool(
+      4,
+      f
+    );
+  }
+  f = message.getHeartbeatInterval();
+  if (f !== 0) {
+    writer.writeUint64(
+      5,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional Path path = 1;
+ * @return {?proto.gnmi.Path}
+ */
+proto.gnmi.Subscription.prototype.getPath = function() {
+  return /** @type{?proto.gnmi.Path} */ (
+    jspb.Message.getWrapperField(this, proto.gnmi.Path, 1));
+};
+
+
+/**
+ * @param {?proto.gnmi.Path|undefined} value
+ * @return {!proto.gnmi.Subscription} returns this
+*/
+proto.gnmi.Subscription.prototype.setPath = function(value) {
+  return jspb.Message.setWrapperField(this, 1, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gnmi.Subscription} returns this
+ */
+proto.gnmi.Subscription.prototype.clearPath = function() {
+  return this.setPath(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.Subscription.prototype.hasPath = function() {
+  return jspb.Message.getField(this, 1) != null;
+};
+
+
+/**
+ * optional SubscriptionMode mode = 2;
+ * @return {!proto.gnmi.SubscriptionMode}
+ */
+proto.gnmi.Subscription.prototype.getMode = function() {
+  return /** @type {!proto.gnmi.SubscriptionMode} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {!proto.gnmi.SubscriptionMode} value
+ * @return {!proto.gnmi.Subscription} returns this
+ */
+proto.gnmi.Subscription.prototype.setMode = function(value) {
+  return jspb.Message.setProto3EnumField(this, 2, value);
+};
+
+
+/**
+ * optional uint64 sample_interval = 3;
+ * @return {number}
+ */
+proto.gnmi.Subscription.prototype.getSampleInterval = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gnmi.Subscription} returns this
+ */
+proto.gnmi.Subscription.prototype.setSampleInterval = function(value) {
+  return jspb.Message.setProto3IntField(this, 3, value);
+};
+
+
+/**
+ * optional bool suppress_redundant = 4;
+ * @return {boolean}
+ */
+proto.gnmi.Subscription.prototype.getSuppressRedundant = function() {
+  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 4, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.gnmi.Subscription} returns this
+ */
+proto.gnmi.Subscription.prototype.setSuppressRedundant = function(value) {
+  return jspb.Message.setProto3BooleanField(this, 4, value);
+};
+
+
+/**
+ * optional uint64 heartbeat_interval = 5;
+ * @return {number}
+ */
+proto.gnmi.Subscription.prototype.getHeartbeatInterval = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 5, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gnmi.Subscription} returns this
+ */
+proto.gnmi.Subscription.prototype.setHeartbeatInterval = function(value) {
+  return jspb.Message.setProto3IntField(this, 5, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi.QOSMarking.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi.QOSMarking.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi.QOSMarking} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.QOSMarking.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    marking: jspb.Message.getFieldWithDefault(msg, 1, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi.QOSMarking}
+ */
+proto.gnmi.QOSMarking.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi.QOSMarking;
+  return proto.gnmi.QOSMarking.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi.QOSMarking} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi.QOSMarking}
+ */
+proto.gnmi.QOSMarking.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readUint32());
+      msg.setMarking(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi.QOSMarking.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi.QOSMarking.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi.QOSMarking} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.QOSMarking.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getMarking();
+  if (f !== 0) {
+    writer.writeUint32(
+      1,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional uint32 marking = 1;
+ * @return {number}
+ */
+proto.gnmi.QOSMarking.prototype.getMarking = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gnmi.QOSMarking} returns this
+ */
+proto.gnmi.QOSMarking.prototype.setMarking = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi.Alias.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi.Alias.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi.Alias} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.Alias.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    path: (f = msg.getPath()) && proto.gnmi.Path.toObject(includeInstance, f),
+    alias: jspb.Message.getFieldWithDefault(msg, 2, "")
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi.Alias}
+ */
+proto.gnmi.Alias.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi.Alias;
+  return proto.gnmi.Alias.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi.Alias} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi.Alias}
+ */
+proto.gnmi.Alias.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = new proto.gnmi.Path;
+      reader.readMessage(value,proto.gnmi.Path.deserializeBinaryFromReader);
+      msg.setPath(value);
+      break;
+    case 2:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setAlias(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi.Alias.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi.Alias.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi.Alias} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.Alias.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getPath();
+  if (f != null) {
+    writer.writeMessage(
+      1,
+      f,
+      proto.gnmi.Path.serializeBinaryToWriter
+    );
+  }
+  f = message.getAlias();
+  if (f.length > 0) {
+    writer.writeString(
+      2,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional Path path = 1;
+ * @return {?proto.gnmi.Path}
+ */
+proto.gnmi.Alias.prototype.getPath = function() {
+  return /** @type{?proto.gnmi.Path} */ (
+    jspb.Message.getWrapperField(this, proto.gnmi.Path, 1));
+};
+
+
+/**
+ * @param {?proto.gnmi.Path|undefined} value
+ * @return {!proto.gnmi.Alias} returns this
+*/
+proto.gnmi.Alias.prototype.setPath = function(value) {
+  return jspb.Message.setWrapperField(this, 1, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gnmi.Alias} returns this
+ */
+proto.gnmi.Alias.prototype.clearPath = function() {
+  return this.setPath(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.Alias.prototype.hasPath = function() {
+  return jspb.Message.getField(this, 1) != null;
+};
+
+
+/**
+ * optional string alias = 2;
+ * @return {string}
+ */
+proto.gnmi.Alias.prototype.getAlias = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gnmi.Alias} returns this
+ */
+proto.gnmi.Alias.prototype.setAlias = function(value) {
+  return jspb.Message.setProto3StringField(this, 2, value);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.gnmi.AliasList.repeatedFields_ = [1];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi.AliasList.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi.AliasList.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi.AliasList} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.AliasList.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    aliasList: jspb.Message.toObjectList(msg.getAliasList(),
+    proto.gnmi.Alias.toObject, includeInstance)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi.AliasList}
+ */
+proto.gnmi.AliasList.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi.AliasList;
+  return proto.gnmi.AliasList.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi.AliasList} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi.AliasList}
+ */
+proto.gnmi.AliasList.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = new proto.gnmi.Alias;
+      reader.readMessage(value,proto.gnmi.Alias.deserializeBinaryFromReader);
+      msg.addAlias(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi.AliasList.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi.AliasList.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi.AliasList} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.AliasList.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getAliasList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      1,
+      f,
+      proto.gnmi.Alias.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * repeated Alias alias = 1;
+ * @return {!Array<!proto.gnmi.Alias>}
+ */
+proto.gnmi.AliasList.prototype.getAliasList = function() {
+  return /** @type{!Array<!proto.gnmi.Alias>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.gnmi.Alias, 1));
+};
+
+
+/**
+ * @param {!Array<!proto.gnmi.Alias>} value
+ * @return {!proto.gnmi.AliasList} returns this
+*/
+proto.gnmi.AliasList.prototype.setAliasList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 1, value);
+};
+
+
+/**
+ * @param {!proto.gnmi.Alias=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gnmi.Alias}
+ */
+proto.gnmi.AliasList.prototype.addAlias = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.gnmi.Alias, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gnmi.AliasList} returns this
+ */
+proto.gnmi.AliasList.prototype.clearAliasList = function() {
+  return this.setAliasList([]);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.gnmi.SetRequest.repeatedFields_ = [2,3,4,5];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi.SetRequest.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi.SetRequest.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi.SetRequest} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.SetRequest.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    prefix: (f = msg.getPrefix()) && proto.gnmi.Path.toObject(includeInstance, f),
+    deleteList: jspb.Message.toObjectList(msg.getDeleteList(),
+    proto.gnmi.Path.toObject, includeInstance),
+    replaceList: jspb.Message.toObjectList(msg.getReplaceList(),
+    proto.gnmi.Update.toObject, includeInstance),
+    updateList: jspb.Message.toObjectList(msg.getUpdateList(),
+    proto.gnmi.Update.toObject, includeInstance),
+    extensionList: jspb.Message.toObjectList(msg.getExtensionList(),
+    github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.toObject, includeInstance)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi.SetRequest}
+ */
+proto.gnmi.SetRequest.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi.SetRequest;
+  return proto.gnmi.SetRequest.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi.SetRequest} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi.SetRequest}
+ */
+proto.gnmi.SetRequest.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = new proto.gnmi.Path;
+      reader.readMessage(value,proto.gnmi.Path.deserializeBinaryFromReader);
+      msg.setPrefix(value);
+      break;
+    case 2:
+      var value = new proto.gnmi.Path;
+      reader.readMessage(value,proto.gnmi.Path.deserializeBinaryFromReader);
+      msg.addDelete(value);
+      break;
+    case 3:
+      var value = new proto.gnmi.Update;
+      reader.readMessage(value,proto.gnmi.Update.deserializeBinaryFromReader);
+      msg.addReplace(value);
+      break;
+    case 4:
+      var value = new proto.gnmi.Update;
+      reader.readMessage(value,proto.gnmi.Update.deserializeBinaryFromReader);
+      msg.addUpdate(value);
+      break;
+    case 5:
+      var value = new github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension;
+      reader.readMessage(value,github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.deserializeBinaryFromReader);
+      msg.addExtension$(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi.SetRequest.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi.SetRequest.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi.SetRequest} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.SetRequest.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getPrefix();
+  if (f != null) {
+    writer.writeMessage(
+      1,
+      f,
+      proto.gnmi.Path.serializeBinaryToWriter
+    );
+  }
+  f = message.getDeleteList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      2,
+      f,
+      proto.gnmi.Path.serializeBinaryToWriter
+    );
+  }
+  f = message.getReplaceList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      3,
+      f,
+      proto.gnmi.Update.serializeBinaryToWriter
+    );
+  }
+  f = message.getUpdateList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      4,
+      f,
+      proto.gnmi.Update.serializeBinaryToWriter
+    );
+  }
+  f = message.getExtensionList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      5,
+      f,
+      github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * optional Path prefix = 1;
+ * @return {?proto.gnmi.Path}
+ */
+proto.gnmi.SetRequest.prototype.getPrefix = function() {
+  return /** @type{?proto.gnmi.Path} */ (
+    jspb.Message.getWrapperField(this, proto.gnmi.Path, 1));
+};
+
+
+/**
+ * @param {?proto.gnmi.Path|undefined} value
+ * @return {!proto.gnmi.SetRequest} returns this
+*/
+proto.gnmi.SetRequest.prototype.setPrefix = function(value) {
+  return jspb.Message.setWrapperField(this, 1, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gnmi.SetRequest} returns this
+ */
+proto.gnmi.SetRequest.prototype.clearPrefix = function() {
+  return this.setPrefix(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.SetRequest.prototype.hasPrefix = function() {
+  return jspb.Message.getField(this, 1) != null;
+};
+
+
+/**
+ * repeated Path delete = 2;
+ * @return {!Array<!proto.gnmi.Path>}
+ */
+proto.gnmi.SetRequest.prototype.getDeleteList = function() {
+  return /** @type{!Array<!proto.gnmi.Path>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.gnmi.Path, 2));
+};
+
+
+/**
+ * @param {!Array<!proto.gnmi.Path>} value
+ * @return {!proto.gnmi.SetRequest} returns this
+*/
+proto.gnmi.SetRequest.prototype.setDeleteList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 2, value);
+};
+
+
+/**
+ * @param {!proto.gnmi.Path=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gnmi.Path}
+ */
+proto.gnmi.SetRequest.prototype.addDelete = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.gnmi.Path, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gnmi.SetRequest} returns this
+ */
+proto.gnmi.SetRequest.prototype.clearDeleteList = function() {
+  return this.setDeleteList([]);
+};
+
+
+/**
+ * repeated Update replace = 3;
+ * @return {!Array<!proto.gnmi.Update>}
+ */
+proto.gnmi.SetRequest.prototype.getReplaceList = function() {
+  return /** @type{!Array<!proto.gnmi.Update>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.gnmi.Update, 3));
+};
+
+
+/**
+ * @param {!Array<!proto.gnmi.Update>} value
+ * @return {!proto.gnmi.SetRequest} returns this
+*/
+proto.gnmi.SetRequest.prototype.setReplaceList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 3, value);
+};
+
+
+/**
+ * @param {!proto.gnmi.Update=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gnmi.Update}
+ */
+proto.gnmi.SetRequest.prototype.addReplace = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.gnmi.Update, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gnmi.SetRequest} returns this
+ */
+proto.gnmi.SetRequest.prototype.clearReplaceList = function() {
+  return this.setReplaceList([]);
+};
+
+
+/**
+ * repeated Update update = 4;
+ * @return {!Array<!proto.gnmi.Update>}
+ */
+proto.gnmi.SetRequest.prototype.getUpdateList = function() {
+  return /** @type{!Array<!proto.gnmi.Update>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.gnmi.Update, 4));
+};
+
+
+/**
+ * @param {!Array<!proto.gnmi.Update>} value
+ * @return {!proto.gnmi.SetRequest} returns this
+*/
+proto.gnmi.SetRequest.prototype.setUpdateList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 4, value);
+};
+
+
+/**
+ * @param {!proto.gnmi.Update=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gnmi.Update}
+ */
+proto.gnmi.SetRequest.prototype.addUpdate = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.gnmi.Update, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gnmi.SetRequest} returns this
+ */
+proto.gnmi.SetRequest.prototype.clearUpdateList = function() {
+  return this.setUpdateList([]);
+};
+
+
+/**
+ * repeated gnmi_ext.Extension extension = 5;
+ * @return {!Array<!proto.gnmi_ext.Extension>}
+ */
+proto.gnmi.SetRequest.prototype.getExtensionList = function() {
+  return /** @type{!Array<!proto.gnmi_ext.Extension>} */ (
+    jspb.Message.getRepeatedWrapperField(this, github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension, 5));
+};
+
+
+/**
+ * @param {!Array<!proto.gnmi_ext.Extension>} value
+ * @return {!proto.gnmi.SetRequest} returns this
+*/
+proto.gnmi.SetRequest.prototype.setExtensionList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 5, value);
+};
+
+
+/**
+ * @param {!proto.gnmi_ext.Extension=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gnmi_ext.Extension}
+ */
+proto.gnmi.SetRequest.prototype.addExtension$ = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 5, opt_value, proto.gnmi_ext.Extension, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gnmi.SetRequest} returns this
+ */
+proto.gnmi.SetRequest.prototype.clearExtensionList = function() {
+  return this.setExtensionList([]);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.gnmi.SetResponse.repeatedFields_ = [2,5];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi.SetResponse.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi.SetResponse.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi.SetResponse} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.SetResponse.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    prefix: (f = msg.getPrefix()) && proto.gnmi.Path.toObject(includeInstance, f),
+    responseList: jspb.Message.toObjectList(msg.getResponseList(),
+    proto.gnmi.UpdateResult.toObject, includeInstance),
+    message: (f = msg.getMessage()) && proto.gnmi.Error.toObject(includeInstance, f),
+    timestamp: jspb.Message.getFieldWithDefault(msg, 4, 0),
+    extensionList: jspb.Message.toObjectList(msg.getExtensionList(),
+    github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.toObject, includeInstance)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi.SetResponse}
+ */
+proto.gnmi.SetResponse.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi.SetResponse;
+  return proto.gnmi.SetResponse.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi.SetResponse} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi.SetResponse}
+ */
+proto.gnmi.SetResponse.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = new proto.gnmi.Path;
+      reader.readMessage(value,proto.gnmi.Path.deserializeBinaryFromReader);
+      msg.setPrefix(value);
+      break;
+    case 2:
+      var value = new proto.gnmi.UpdateResult;
+      reader.readMessage(value,proto.gnmi.UpdateResult.deserializeBinaryFromReader);
+      msg.addResponse(value);
+      break;
+    case 3:
+      var value = new proto.gnmi.Error;
+      reader.readMessage(value,proto.gnmi.Error.deserializeBinaryFromReader);
+      msg.setMessage(value);
+      break;
+    case 4:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setTimestamp(value);
+      break;
+    case 5:
+      var value = new github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension;
+      reader.readMessage(value,github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.deserializeBinaryFromReader);
+      msg.addExtension$(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi.SetResponse.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi.SetResponse.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi.SetResponse} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.SetResponse.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getPrefix();
+  if (f != null) {
+    writer.writeMessage(
+      1,
+      f,
+      proto.gnmi.Path.serializeBinaryToWriter
+    );
+  }
+  f = message.getResponseList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      2,
+      f,
+      proto.gnmi.UpdateResult.serializeBinaryToWriter
+    );
+  }
+  f = message.getMessage();
+  if (f != null) {
+    writer.writeMessage(
+      3,
+      f,
+      proto.gnmi.Error.serializeBinaryToWriter
+    );
+  }
+  f = message.getTimestamp();
+  if (f !== 0) {
+    writer.writeInt64(
+      4,
+      f
+    );
+  }
+  f = message.getExtensionList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      5,
+      f,
+      github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * optional Path prefix = 1;
+ * @return {?proto.gnmi.Path}
+ */
+proto.gnmi.SetResponse.prototype.getPrefix = function() {
+  return /** @type{?proto.gnmi.Path} */ (
+    jspb.Message.getWrapperField(this, proto.gnmi.Path, 1));
+};
+
+
+/**
+ * @param {?proto.gnmi.Path|undefined} value
+ * @return {!proto.gnmi.SetResponse} returns this
+*/
+proto.gnmi.SetResponse.prototype.setPrefix = function(value) {
+  return jspb.Message.setWrapperField(this, 1, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gnmi.SetResponse} returns this
+ */
+proto.gnmi.SetResponse.prototype.clearPrefix = function() {
+  return this.setPrefix(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.SetResponse.prototype.hasPrefix = function() {
+  return jspb.Message.getField(this, 1) != null;
+};
+
+
+/**
+ * repeated UpdateResult response = 2;
+ * @return {!Array<!proto.gnmi.UpdateResult>}
+ */
+proto.gnmi.SetResponse.prototype.getResponseList = function() {
+  return /** @type{!Array<!proto.gnmi.UpdateResult>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.gnmi.UpdateResult, 2));
+};
+
+
+/**
+ * @param {!Array<!proto.gnmi.UpdateResult>} value
+ * @return {!proto.gnmi.SetResponse} returns this
+*/
+proto.gnmi.SetResponse.prototype.setResponseList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 2, value);
+};
+
+
+/**
+ * @param {!proto.gnmi.UpdateResult=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gnmi.UpdateResult}
+ */
+proto.gnmi.SetResponse.prototype.addResponse = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.gnmi.UpdateResult, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gnmi.SetResponse} returns this
+ */
+proto.gnmi.SetResponse.prototype.clearResponseList = function() {
+  return this.setResponseList([]);
+};
+
+
+/**
+ * optional Error message = 3;
+ * @return {?proto.gnmi.Error}
+ */
+proto.gnmi.SetResponse.prototype.getMessage = function() {
+  return /** @type{?proto.gnmi.Error} */ (
+    jspb.Message.getWrapperField(this, proto.gnmi.Error, 3));
+};
+
+
+/**
+ * @param {?proto.gnmi.Error|undefined} value
+ * @return {!proto.gnmi.SetResponse} returns this
+*/
+proto.gnmi.SetResponse.prototype.setMessage = function(value) {
+  return jspb.Message.setWrapperField(this, 3, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gnmi.SetResponse} returns this
+ */
+proto.gnmi.SetResponse.prototype.clearMessage = function() {
+  return this.setMessage(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.SetResponse.prototype.hasMessage = function() {
+  return jspb.Message.getField(this, 3) != null;
+};
+
+
+/**
+ * optional int64 timestamp = 4;
+ * @return {number}
+ */
+proto.gnmi.SetResponse.prototype.getTimestamp = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gnmi.SetResponse} returns this
+ */
+proto.gnmi.SetResponse.prototype.setTimestamp = function(value) {
+  return jspb.Message.setProto3IntField(this, 4, value);
+};
+
+
+/**
+ * repeated gnmi_ext.Extension extension = 5;
+ * @return {!Array<!proto.gnmi_ext.Extension>}
+ */
+proto.gnmi.SetResponse.prototype.getExtensionList = function() {
+  return /** @type{!Array<!proto.gnmi_ext.Extension>} */ (
+    jspb.Message.getRepeatedWrapperField(this, github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension, 5));
+};
+
+
+/**
+ * @param {!Array<!proto.gnmi_ext.Extension>} value
+ * @return {!proto.gnmi.SetResponse} returns this
+*/
+proto.gnmi.SetResponse.prototype.setExtensionList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 5, value);
+};
+
+
+/**
+ * @param {!proto.gnmi_ext.Extension=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gnmi_ext.Extension}
+ */
+proto.gnmi.SetResponse.prototype.addExtension$ = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 5, opt_value, proto.gnmi_ext.Extension, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gnmi.SetResponse} returns this
+ */
+proto.gnmi.SetResponse.prototype.clearExtensionList = function() {
+  return this.setExtensionList([]);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi.UpdateResult.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi.UpdateResult.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi.UpdateResult} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.UpdateResult.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    timestamp: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    path: (f = msg.getPath()) && proto.gnmi.Path.toObject(includeInstance, f),
+    message: (f = msg.getMessage()) && proto.gnmi.Error.toObject(includeInstance, f),
+    op: jspb.Message.getFieldWithDefault(msg, 4, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi.UpdateResult}
+ */
+proto.gnmi.UpdateResult.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi.UpdateResult;
+  return proto.gnmi.UpdateResult.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi.UpdateResult} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi.UpdateResult}
+ */
+proto.gnmi.UpdateResult.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setTimestamp(value);
+      break;
+    case 2:
+      var value = new proto.gnmi.Path;
+      reader.readMessage(value,proto.gnmi.Path.deserializeBinaryFromReader);
+      msg.setPath(value);
+      break;
+    case 3:
+      var value = new proto.gnmi.Error;
+      reader.readMessage(value,proto.gnmi.Error.deserializeBinaryFromReader);
+      msg.setMessage(value);
+      break;
+    case 4:
+      var value = /** @type {!proto.gnmi.UpdateResult.Operation} */ (reader.readEnum());
+      msg.setOp(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi.UpdateResult.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi.UpdateResult.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi.UpdateResult} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.UpdateResult.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getTimestamp();
+  if (f !== 0) {
+    writer.writeInt64(
+      1,
+      f
+    );
+  }
+  f = message.getPath();
+  if (f != null) {
+    writer.writeMessage(
+      2,
+      f,
+      proto.gnmi.Path.serializeBinaryToWriter
+    );
+  }
+  f = message.getMessage();
+  if (f != null) {
+    writer.writeMessage(
+      3,
+      f,
+      proto.gnmi.Error.serializeBinaryToWriter
+    );
+  }
+  f = message.getOp();
+  if (f !== 0.0) {
+    writer.writeEnum(
+      4,
+      f
+    );
+  }
+};
+
+
+/**
+ * @enum {number}
+ */
+proto.gnmi.UpdateResult.Operation = {
+  INVALID: 0,
+  DELETE: 1,
+  REPLACE: 2,
+  UPDATE: 3
+};
+
+/**
+ * optional int64 timestamp = 1;
+ * @return {number}
+ */
+proto.gnmi.UpdateResult.prototype.getTimestamp = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gnmi.UpdateResult} returns this
+ */
+proto.gnmi.UpdateResult.prototype.setTimestamp = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional Path path = 2;
+ * @return {?proto.gnmi.Path}
+ */
+proto.gnmi.UpdateResult.prototype.getPath = function() {
+  return /** @type{?proto.gnmi.Path} */ (
+    jspb.Message.getWrapperField(this, proto.gnmi.Path, 2));
+};
+
+
+/**
+ * @param {?proto.gnmi.Path|undefined} value
+ * @return {!proto.gnmi.UpdateResult} returns this
+*/
+proto.gnmi.UpdateResult.prototype.setPath = function(value) {
+  return jspb.Message.setWrapperField(this, 2, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gnmi.UpdateResult} returns this
+ */
+proto.gnmi.UpdateResult.prototype.clearPath = function() {
+  return this.setPath(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.UpdateResult.prototype.hasPath = function() {
+  return jspb.Message.getField(this, 2) != null;
+};
+
+
+/**
+ * optional Error message = 3;
+ * @return {?proto.gnmi.Error}
+ */
+proto.gnmi.UpdateResult.prototype.getMessage = function() {
+  return /** @type{?proto.gnmi.Error} */ (
+    jspb.Message.getWrapperField(this, proto.gnmi.Error, 3));
+};
+
+
+/**
+ * @param {?proto.gnmi.Error|undefined} value
+ * @return {!proto.gnmi.UpdateResult} returns this
+*/
+proto.gnmi.UpdateResult.prototype.setMessage = function(value) {
+  return jspb.Message.setWrapperField(this, 3, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gnmi.UpdateResult} returns this
+ */
+proto.gnmi.UpdateResult.prototype.clearMessage = function() {
+  return this.setMessage(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.UpdateResult.prototype.hasMessage = function() {
+  return jspb.Message.getField(this, 3) != null;
+};
+
+
+/**
+ * optional Operation op = 4;
+ * @return {!proto.gnmi.UpdateResult.Operation}
+ */
+proto.gnmi.UpdateResult.prototype.getOp = function() {
+  return /** @type {!proto.gnmi.UpdateResult.Operation} */ (jspb.Message.getFieldWithDefault(this, 4, 0));
+};
+
+
+/**
+ * @param {!proto.gnmi.UpdateResult.Operation} value
+ * @return {!proto.gnmi.UpdateResult} returns this
+ */
+proto.gnmi.UpdateResult.prototype.setOp = function(value) {
+  return jspb.Message.setProto3EnumField(this, 4, value);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.gnmi.GetRequest.repeatedFields_ = [2,6,7];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi.GetRequest.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi.GetRequest.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi.GetRequest} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.GetRequest.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    prefix: (f = msg.getPrefix()) && proto.gnmi.Path.toObject(includeInstance, f),
+    pathList: jspb.Message.toObjectList(msg.getPathList(),
+    proto.gnmi.Path.toObject, includeInstance),
+    type: jspb.Message.getFieldWithDefault(msg, 3, 0),
+    encoding: jspb.Message.getFieldWithDefault(msg, 5, 0),
+    useModelsList: jspb.Message.toObjectList(msg.getUseModelsList(),
+    proto.gnmi.ModelData.toObject, includeInstance),
+    extensionList: jspb.Message.toObjectList(msg.getExtensionList(),
+    github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.toObject, includeInstance)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi.GetRequest}
+ */
+proto.gnmi.GetRequest.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi.GetRequest;
+  return proto.gnmi.GetRequest.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi.GetRequest} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi.GetRequest}
+ */
+proto.gnmi.GetRequest.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = new proto.gnmi.Path;
+      reader.readMessage(value,proto.gnmi.Path.deserializeBinaryFromReader);
+      msg.setPrefix(value);
+      break;
+    case 2:
+      var value = new proto.gnmi.Path;
+      reader.readMessage(value,proto.gnmi.Path.deserializeBinaryFromReader);
+      msg.addPath(value);
+      break;
+    case 3:
+      var value = /** @type {!proto.gnmi.GetRequest.DataType} */ (reader.readEnum());
+      msg.setType(value);
+      break;
+    case 5:
+      var value = /** @type {!proto.gnmi.Encoding} */ (reader.readEnum());
+      msg.setEncoding(value);
+      break;
+    case 6:
+      var value = new proto.gnmi.ModelData;
+      reader.readMessage(value,proto.gnmi.ModelData.deserializeBinaryFromReader);
+      msg.addUseModels(value);
+      break;
+    case 7:
+      var value = new github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension;
+      reader.readMessage(value,github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.deserializeBinaryFromReader);
+      msg.addExtension$(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi.GetRequest.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi.GetRequest.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi.GetRequest} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.GetRequest.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getPrefix();
+  if (f != null) {
+    writer.writeMessage(
+      1,
+      f,
+      proto.gnmi.Path.serializeBinaryToWriter
+    );
+  }
+  f = message.getPathList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      2,
+      f,
+      proto.gnmi.Path.serializeBinaryToWriter
+    );
+  }
+  f = message.getType();
+  if (f !== 0.0) {
+    writer.writeEnum(
+      3,
+      f
+    );
+  }
+  f = message.getEncoding();
+  if (f !== 0.0) {
+    writer.writeEnum(
+      5,
+      f
+    );
+  }
+  f = message.getUseModelsList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      6,
+      f,
+      proto.gnmi.ModelData.serializeBinaryToWriter
+    );
+  }
+  f = message.getExtensionList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      7,
+      f,
+      github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * @enum {number}
+ */
+proto.gnmi.GetRequest.DataType = {
+  ALL: 0,
+  CONFIG: 1,
+  STATE: 2,
+  OPERATIONAL: 3
+};
+
+/**
+ * optional Path prefix = 1;
+ * @return {?proto.gnmi.Path}
+ */
+proto.gnmi.GetRequest.prototype.getPrefix = function() {
+  return /** @type{?proto.gnmi.Path} */ (
+    jspb.Message.getWrapperField(this, proto.gnmi.Path, 1));
+};
+
+
+/**
+ * @param {?proto.gnmi.Path|undefined} value
+ * @return {!proto.gnmi.GetRequest} returns this
+*/
+proto.gnmi.GetRequest.prototype.setPrefix = function(value) {
+  return jspb.Message.setWrapperField(this, 1, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gnmi.GetRequest} returns this
+ */
+proto.gnmi.GetRequest.prototype.clearPrefix = function() {
+  return this.setPrefix(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.GetRequest.prototype.hasPrefix = function() {
+  return jspb.Message.getField(this, 1) != null;
+};
+
+
+/**
+ * repeated Path path = 2;
+ * @return {!Array<!proto.gnmi.Path>}
+ */
+proto.gnmi.GetRequest.prototype.getPathList = function() {
+  return /** @type{!Array<!proto.gnmi.Path>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.gnmi.Path, 2));
+};
+
+
+/**
+ * @param {!Array<!proto.gnmi.Path>} value
+ * @return {!proto.gnmi.GetRequest} returns this
+*/
+proto.gnmi.GetRequest.prototype.setPathList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 2, value);
+};
+
+
+/**
+ * @param {!proto.gnmi.Path=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gnmi.Path}
+ */
+proto.gnmi.GetRequest.prototype.addPath = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.gnmi.Path, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gnmi.GetRequest} returns this
+ */
+proto.gnmi.GetRequest.prototype.clearPathList = function() {
+  return this.setPathList([]);
+};
+
+
+/**
+ * optional DataType type = 3;
+ * @return {!proto.gnmi.GetRequest.DataType}
+ */
+proto.gnmi.GetRequest.prototype.getType = function() {
+  return /** @type {!proto.gnmi.GetRequest.DataType} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
+};
+
+
+/**
+ * @param {!proto.gnmi.GetRequest.DataType} value
+ * @return {!proto.gnmi.GetRequest} returns this
+ */
+proto.gnmi.GetRequest.prototype.setType = function(value) {
+  return jspb.Message.setProto3EnumField(this, 3, value);
+};
+
+
+/**
+ * optional Encoding encoding = 5;
+ * @return {!proto.gnmi.Encoding}
+ */
+proto.gnmi.GetRequest.prototype.getEncoding = function() {
+  return /** @type {!proto.gnmi.Encoding} */ (jspb.Message.getFieldWithDefault(this, 5, 0));
+};
+
+
+/**
+ * @param {!proto.gnmi.Encoding} value
+ * @return {!proto.gnmi.GetRequest} returns this
+ */
+proto.gnmi.GetRequest.prototype.setEncoding = function(value) {
+  return jspb.Message.setProto3EnumField(this, 5, value);
+};
+
+
+/**
+ * repeated ModelData use_models = 6;
+ * @return {!Array<!proto.gnmi.ModelData>}
+ */
+proto.gnmi.GetRequest.prototype.getUseModelsList = function() {
+  return /** @type{!Array<!proto.gnmi.ModelData>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.gnmi.ModelData, 6));
+};
+
+
+/**
+ * @param {!Array<!proto.gnmi.ModelData>} value
+ * @return {!proto.gnmi.GetRequest} returns this
+*/
+proto.gnmi.GetRequest.prototype.setUseModelsList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 6, value);
+};
+
+
+/**
+ * @param {!proto.gnmi.ModelData=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gnmi.ModelData}
+ */
+proto.gnmi.GetRequest.prototype.addUseModels = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 6, opt_value, proto.gnmi.ModelData, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gnmi.GetRequest} returns this
+ */
+proto.gnmi.GetRequest.prototype.clearUseModelsList = function() {
+  return this.setUseModelsList([]);
+};
+
+
+/**
+ * repeated gnmi_ext.Extension extension = 7;
+ * @return {!Array<!proto.gnmi_ext.Extension>}
+ */
+proto.gnmi.GetRequest.prototype.getExtensionList = function() {
+  return /** @type{!Array<!proto.gnmi_ext.Extension>} */ (
+    jspb.Message.getRepeatedWrapperField(this, github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension, 7));
+};
+
+
+/**
+ * @param {!Array<!proto.gnmi_ext.Extension>} value
+ * @return {!proto.gnmi.GetRequest} returns this
+*/
+proto.gnmi.GetRequest.prototype.setExtensionList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 7, value);
+};
+
+
+/**
+ * @param {!proto.gnmi_ext.Extension=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gnmi_ext.Extension}
+ */
+proto.gnmi.GetRequest.prototype.addExtension$ = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 7, opt_value, proto.gnmi_ext.Extension, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gnmi.GetRequest} returns this
+ */
+proto.gnmi.GetRequest.prototype.clearExtensionList = function() {
+  return this.setExtensionList([]);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.gnmi.GetResponse.repeatedFields_ = [1,3];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi.GetResponse.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi.GetResponse.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi.GetResponse} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.GetResponse.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    notificationList: jspb.Message.toObjectList(msg.getNotificationList(),
+    proto.gnmi.Notification.toObject, includeInstance),
+    error: (f = msg.getError()) && proto.gnmi.Error.toObject(includeInstance, f),
+    extensionList: jspb.Message.toObjectList(msg.getExtensionList(),
+    github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.toObject, includeInstance)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi.GetResponse}
+ */
+proto.gnmi.GetResponse.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi.GetResponse;
+  return proto.gnmi.GetResponse.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi.GetResponse} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi.GetResponse}
+ */
+proto.gnmi.GetResponse.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = new proto.gnmi.Notification;
+      reader.readMessage(value,proto.gnmi.Notification.deserializeBinaryFromReader);
+      msg.addNotification(value);
+      break;
+    case 2:
+      var value = new proto.gnmi.Error;
+      reader.readMessage(value,proto.gnmi.Error.deserializeBinaryFromReader);
+      msg.setError(value);
+      break;
+    case 3:
+      var value = new github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension;
+      reader.readMessage(value,github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.deserializeBinaryFromReader);
+      msg.addExtension$(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi.GetResponse.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi.GetResponse.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi.GetResponse} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.GetResponse.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getNotificationList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      1,
+      f,
+      proto.gnmi.Notification.serializeBinaryToWriter
+    );
+  }
+  f = message.getError();
+  if (f != null) {
+    writer.writeMessage(
+      2,
+      f,
+      proto.gnmi.Error.serializeBinaryToWriter
+    );
+  }
+  f = message.getExtensionList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      3,
+      f,
+      github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * repeated Notification notification = 1;
+ * @return {!Array<!proto.gnmi.Notification>}
+ */
+proto.gnmi.GetResponse.prototype.getNotificationList = function() {
+  return /** @type{!Array<!proto.gnmi.Notification>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.gnmi.Notification, 1));
+};
+
+
+/**
+ * @param {!Array<!proto.gnmi.Notification>} value
+ * @return {!proto.gnmi.GetResponse} returns this
+*/
+proto.gnmi.GetResponse.prototype.setNotificationList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 1, value);
+};
+
+
+/**
+ * @param {!proto.gnmi.Notification=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gnmi.Notification}
+ */
+proto.gnmi.GetResponse.prototype.addNotification = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.gnmi.Notification, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gnmi.GetResponse} returns this
+ */
+proto.gnmi.GetResponse.prototype.clearNotificationList = function() {
+  return this.setNotificationList([]);
+};
+
+
+/**
+ * optional Error error = 2;
+ * @return {?proto.gnmi.Error}
+ */
+proto.gnmi.GetResponse.prototype.getError = function() {
+  return /** @type{?proto.gnmi.Error} */ (
+    jspb.Message.getWrapperField(this, proto.gnmi.Error, 2));
+};
+
+
+/**
+ * @param {?proto.gnmi.Error|undefined} value
+ * @return {!proto.gnmi.GetResponse} returns this
+*/
+proto.gnmi.GetResponse.prototype.setError = function(value) {
+  return jspb.Message.setWrapperField(this, 2, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gnmi.GetResponse} returns this
+ */
+proto.gnmi.GetResponse.prototype.clearError = function() {
+  return this.setError(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi.GetResponse.prototype.hasError = function() {
+  return jspb.Message.getField(this, 2) != null;
+};
+
+
+/**
+ * repeated gnmi_ext.Extension extension = 3;
+ * @return {!Array<!proto.gnmi_ext.Extension>}
+ */
+proto.gnmi.GetResponse.prototype.getExtensionList = function() {
+  return /** @type{!Array<!proto.gnmi_ext.Extension>} */ (
+    jspb.Message.getRepeatedWrapperField(this, github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension, 3));
+};
+
+
+/**
+ * @param {!Array<!proto.gnmi_ext.Extension>} value
+ * @return {!proto.gnmi.GetResponse} returns this
+*/
+proto.gnmi.GetResponse.prototype.setExtensionList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 3, value);
+};
+
+
+/**
+ * @param {!proto.gnmi_ext.Extension=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gnmi_ext.Extension}
+ */
+proto.gnmi.GetResponse.prototype.addExtension$ = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.gnmi_ext.Extension, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gnmi.GetResponse} returns this
+ */
+proto.gnmi.GetResponse.prototype.clearExtensionList = function() {
+  return this.setExtensionList([]);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.gnmi.CapabilityRequest.repeatedFields_ = [1];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi.CapabilityRequest.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi.CapabilityRequest.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi.CapabilityRequest} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.CapabilityRequest.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    extensionList: jspb.Message.toObjectList(msg.getExtensionList(),
+    github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.toObject, includeInstance)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi.CapabilityRequest}
+ */
+proto.gnmi.CapabilityRequest.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi.CapabilityRequest;
+  return proto.gnmi.CapabilityRequest.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi.CapabilityRequest} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi.CapabilityRequest}
+ */
+proto.gnmi.CapabilityRequest.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = new github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension;
+      reader.readMessage(value,github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.deserializeBinaryFromReader);
+      msg.addExtension$(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi.CapabilityRequest.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi.CapabilityRequest.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi.CapabilityRequest} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.CapabilityRequest.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getExtensionList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      1,
+      f,
+      github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * repeated gnmi_ext.Extension extension = 1;
+ * @return {!Array<!proto.gnmi_ext.Extension>}
+ */
+proto.gnmi.CapabilityRequest.prototype.getExtensionList = function() {
+  return /** @type{!Array<!proto.gnmi_ext.Extension>} */ (
+    jspb.Message.getRepeatedWrapperField(this, github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension, 1));
+};
+
+
+/**
+ * @param {!Array<!proto.gnmi_ext.Extension>} value
+ * @return {!proto.gnmi.CapabilityRequest} returns this
+*/
+proto.gnmi.CapabilityRequest.prototype.setExtensionList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 1, value);
+};
+
+
+/**
+ * @param {!proto.gnmi_ext.Extension=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gnmi_ext.Extension}
+ */
+proto.gnmi.CapabilityRequest.prototype.addExtension$ = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.gnmi_ext.Extension, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gnmi.CapabilityRequest} returns this
+ */
+proto.gnmi.CapabilityRequest.prototype.clearExtensionList = function() {
+  return this.setExtensionList([]);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.gnmi.CapabilityResponse.repeatedFields_ = [1,2,4];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi.CapabilityResponse.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi.CapabilityResponse.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi.CapabilityResponse} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.CapabilityResponse.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    supportedModelsList: jspb.Message.toObjectList(msg.getSupportedModelsList(),
+    proto.gnmi.ModelData.toObject, includeInstance),
+    supportedEncodingsList: (f = jspb.Message.getRepeatedField(msg, 2)) == null ? undefined : f,
+    gnmiVersion: jspb.Message.getFieldWithDefault(msg, 3, ""),
+    extensionList: jspb.Message.toObjectList(msg.getExtensionList(),
+    github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.toObject, includeInstance)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi.CapabilityResponse}
+ */
+proto.gnmi.CapabilityResponse.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi.CapabilityResponse;
+  return proto.gnmi.CapabilityResponse.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi.CapabilityResponse} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi.CapabilityResponse}
+ */
+proto.gnmi.CapabilityResponse.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = new proto.gnmi.ModelData;
+      reader.readMessage(value,proto.gnmi.ModelData.deserializeBinaryFromReader);
+      msg.addSupportedModels(value);
+      break;
+    case 2:
+      var values = /** @type {!Array<!proto.gnmi.Encoding>} */ (reader.isDelimited() ? reader.readPackedEnum() : [reader.readEnum()]);
+      for (var i = 0; i < values.length; i++) {
+        msg.addSupportedEncodings(values[i]);
+      }
+      break;
+    case 3:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setGnmiVersion(value);
+      break;
+    case 4:
+      var value = new github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension;
+      reader.readMessage(value,github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.deserializeBinaryFromReader);
+      msg.addExtension$(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi.CapabilityResponse.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi.CapabilityResponse.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi.CapabilityResponse} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.CapabilityResponse.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getSupportedModelsList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      1,
+      f,
+      proto.gnmi.ModelData.serializeBinaryToWriter
+    );
+  }
+  f = message.getSupportedEncodingsList();
+  if (f.length > 0) {
+    writer.writePackedEnum(
+      2,
+      f
+    );
+  }
+  f = message.getGnmiVersion();
+  if (f.length > 0) {
+    writer.writeString(
+      3,
+      f
+    );
+  }
+  f = message.getExtensionList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      4,
+      f,
+      github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * repeated ModelData supported_models = 1;
+ * @return {!Array<!proto.gnmi.ModelData>}
+ */
+proto.gnmi.CapabilityResponse.prototype.getSupportedModelsList = function() {
+  return /** @type{!Array<!proto.gnmi.ModelData>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.gnmi.ModelData, 1));
+};
+
+
+/**
+ * @param {!Array<!proto.gnmi.ModelData>} value
+ * @return {!proto.gnmi.CapabilityResponse} returns this
+*/
+proto.gnmi.CapabilityResponse.prototype.setSupportedModelsList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 1, value);
+};
+
+
+/**
+ * @param {!proto.gnmi.ModelData=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gnmi.ModelData}
+ */
+proto.gnmi.CapabilityResponse.prototype.addSupportedModels = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.gnmi.ModelData, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gnmi.CapabilityResponse} returns this
+ */
+proto.gnmi.CapabilityResponse.prototype.clearSupportedModelsList = function() {
+  return this.setSupportedModelsList([]);
+};
+
+
+/**
+ * repeated Encoding supported_encodings = 2;
+ * @return {!Array<!proto.gnmi.Encoding>}
+ */
+proto.gnmi.CapabilityResponse.prototype.getSupportedEncodingsList = function() {
+  return /** @type {!Array<!proto.gnmi.Encoding>} */ (jspb.Message.getRepeatedField(this, 2));
+};
+
+
+/**
+ * @param {!Array<!proto.gnmi.Encoding>} value
+ * @return {!proto.gnmi.CapabilityResponse} returns this
+ */
+proto.gnmi.CapabilityResponse.prototype.setSupportedEncodingsList = function(value) {
+  return jspb.Message.setField(this, 2, value || []);
+};
+
+
+/**
+ * @param {!proto.gnmi.Encoding} value
+ * @param {number=} opt_index
+ * @return {!proto.gnmi.CapabilityResponse} returns this
+ */
+proto.gnmi.CapabilityResponse.prototype.addSupportedEncodings = function(value, opt_index) {
+  return jspb.Message.addToRepeatedField(this, 2, value, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gnmi.CapabilityResponse} returns this
+ */
+proto.gnmi.CapabilityResponse.prototype.clearSupportedEncodingsList = function() {
+  return this.setSupportedEncodingsList([]);
+};
+
+
+/**
+ * optional string gNMI_version = 3;
+ * @return {string}
+ */
+proto.gnmi.CapabilityResponse.prototype.getGnmiVersion = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gnmi.CapabilityResponse} returns this
+ */
+proto.gnmi.CapabilityResponse.prototype.setGnmiVersion = function(value) {
+  return jspb.Message.setProto3StringField(this, 3, value);
+};
+
+
+/**
+ * repeated gnmi_ext.Extension extension = 4;
+ * @return {!Array<!proto.gnmi_ext.Extension>}
+ */
+proto.gnmi.CapabilityResponse.prototype.getExtensionList = function() {
+  return /** @type{!Array<!proto.gnmi_ext.Extension>} */ (
+    jspb.Message.getRepeatedWrapperField(this, github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_pb.Extension, 4));
+};
+
+
+/**
+ * @param {!Array<!proto.gnmi_ext.Extension>} value
+ * @return {!proto.gnmi.CapabilityResponse} returns this
+*/
+proto.gnmi.CapabilityResponse.prototype.setExtensionList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 4, value);
+};
+
+
+/**
+ * @param {!proto.gnmi_ext.Extension=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gnmi_ext.Extension}
+ */
+proto.gnmi.CapabilityResponse.prototype.addExtension$ = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.gnmi_ext.Extension, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gnmi.CapabilityResponse} returns this
+ */
+proto.gnmi.CapabilityResponse.prototype.clearExtensionList = function() {
+  return this.setExtensionList([]);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi.ModelData.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi.ModelData.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi.ModelData} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.ModelData.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    name: jspb.Message.getFieldWithDefault(msg, 1, ""),
+    organization: jspb.Message.getFieldWithDefault(msg, 2, ""),
+    version: jspb.Message.getFieldWithDefault(msg, 3, "")
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi.ModelData}
+ */
+proto.gnmi.ModelData.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi.ModelData;
+  return proto.gnmi.ModelData.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi.ModelData} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi.ModelData}
+ */
+proto.gnmi.ModelData.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setName(value);
+      break;
+    case 2:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setOrganization(value);
+      break;
+    case 3:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setVersion(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi.ModelData.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi.ModelData.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi.ModelData} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi.ModelData.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getName();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+  f = message.getOrganization();
+  if (f.length > 0) {
+    writer.writeString(
+      2,
+      f
+    );
+  }
+  f = message.getVersion();
+  if (f.length > 0) {
+    writer.writeString(
+      3,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional string name = 1;
+ * @return {string}
+ */
+proto.gnmi.ModelData.prototype.getName = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gnmi.ModelData} returns this
+ */
+proto.gnmi.ModelData.prototype.setName = function(value) {
+  return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * optional string organization = 2;
+ * @return {string}
+ */
+proto.gnmi.ModelData.prototype.getOrganization = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gnmi.ModelData} returns this
+ */
+proto.gnmi.ModelData.prototype.setOrganization = function(value) {
+  return jspb.Message.setProto3StringField(this, 2, value);
+};
+
+
+/**
+ * optional string version = 3;
+ * @return {string}
+ */
+proto.gnmi.ModelData.prototype.getVersion = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gnmi.ModelData} returns this
+ */
+proto.gnmi.ModelData.prototype.setVersion = function(value) {
+  return jspb.Message.setProto3StringField(this, 3, value);
+};
+
+
+/**
+ * @enum {number}
+ */
+proto.gnmi.Encoding = {
+  JSON: 0,
+  BYTES: 1,
+  PROTO: 2,
+  ASCII: 3,
+  JSON_IETF: 4
+};
+
+/**
+ * @enum {number}
+ */
+proto.gnmi.SubscriptionMode = {
+  TARGET_DEFINED: 0,
+  ON_CHANGE: 1,
+  SAMPLE: 2
+};
+
+
+/**
+ * A tuple of {field number, class constructor} for the extension
+ * field named `gnmiService`.
+ * @type {!jspb.ExtensionFieldInfo<string>}
+ */
+proto.gnmi.gnmiService = new jspb.ExtensionFieldInfo(
+    1001,
+    {gnmiService: 0},
+    null,
+     /** @type {?function((boolean|undefined),!jspb.Message=): !Object} */ (
+         null),
+    0);
+
+google_protobuf_descriptor_pb.FileOptions.extensionsBinary[1001] = new jspb.ExtensionFieldBinaryInfo(
+    proto.gnmi.gnmiService,
+    jspb.BinaryReader.prototype.readString,
+    jspb.BinaryWriter.prototype.writeString,
+    undefined,
+    undefined,
+    false);
+// This registers the extension field with the extended class, so that
+// toObject() will function correctly.
+google_protobuf_descriptor_pb.FileOptions.extensions[1001] = proto.gnmi.gnmiService;
+
+goog.object.extend(exports, proto.gnmi);
diff --git a/web/github.com/openconfig/gnmi/proto/gnmi_ext/gnmi_ext_pb.d.ts b/web/github.com/openconfig/gnmi/proto/gnmi_ext/gnmi_ext_pb.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..c4ccf33466f69515f615515eff3f27492a39c8dd
--- /dev/null
+++ b/web/github.com/openconfig/gnmi/proto/gnmi_ext/gnmi_ext_pb.d.ts
@@ -0,0 +1,193 @@
+import * as jspb from 'google-protobuf'
+
+
+
+export class Extension extends jspb.Message {
+  getRegisteredExt(): RegisteredExtension | undefined;
+  setRegisteredExt(value?: RegisteredExtension): Extension;
+  hasRegisteredExt(): boolean;
+  clearRegisteredExt(): Extension;
+
+  getMasterArbitration(): MasterArbitration | undefined;
+  setMasterArbitration(value?: MasterArbitration): Extension;
+  hasMasterArbitration(): boolean;
+  clearMasterArbitration(): Extension;
+
+  getHistory(): History | undefined;
+  setHistory(value?: History): Extension;
+  hasHistory(): boolean;
+  clearHistory(): Extension;
+
+  getExtCase(): Extension.ExtCase;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): Extension.AsObject;
+  static toObject(includeInstance: boolean, msg: Extension): Extension.AsObject;
+  static serializeBinaryToWriter(message: Extension, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): Extension;
+  static deserializeBinaryFromReader(message: Extension, reader: jspb.BinaryReader): Extension;
+}
+
+export namespace Extension {
+  export type AsObject = {
+    registeredExt?: RegisteredExtension.AsObject,
+    masterArbitration?: MasterArbitration.AsObject,
+    history?: History.AsObject,
+  }
+
+  export enum ExtCase { 
+    EXT_NOT_SET = 0,
+    REGISTERED_EXT = 1,
+    MASTER_ARBITRATION = 2,
+    HISTORY = 3,
+  }
+}
+
+export class RegisteredExtension extends jspb.Message {
+  getId(): ExtensionID;
+  setId(value: ExtensionID): RegisteredExtension;
+
+  getMsg(): Uint8Array | string;
+  getMsg_asU8(): Uint8Array;
+  getMsg_asB64(): string;
+  setMsg(value: Uint8Array | string): RegisteredExtension;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): RegisteredExtension.AsObject;
+  static toObject(includeInstance: boolean, msg: RegisteredExtension): RegisteredExtension.AsObject;
+  static serializeBinaryToWriter(message: RegisteredExtension, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): RegisteredExtension;
+  static deserializeBinaryFromReader(message: RegisteredExtension, reader: jspb.BinaryReader): RegisteredExtension;
+}
+
+export namespace RegisteredExtension {
+  export type AsObject = {
+    id: ExtensionID,
+    msg: Uint8Array | string,
+  }
+}
+
+export class MasterArbitration extends jspb.Message {
+  getRole(): Role | undefined;
+  setRole(value?: Role): MasterArbitration;
+  hasRole(): boolean;
+  clearRole(): MasterArbitration;
+
+  getElectionId(): Uint128 | undefined;
+  setElectionId(value?: Uint128): MasterArbitration;
+  hasElectionId(): boolean;
+  clearElectionId(): MasterArbitration;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): MasterArbitration.AsObject;
+  static toObject(includeInstance: boolean, msg: MasterArbitration): MasterArbitration.AsObject;
+  static serializeBinaryToWriter(message: MasterArbitration, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): MasterArbitration;
+  static deserializeBinaryFromReader(message: MasterArbitration, reader: jspb.BinaryReader): MasterArbitration;
+}
+
+export namespace MasterArbitration {
+  export type AsObject = {
+    role?: Role.AsObject,
+    electionId?: Uint128.AsObject,
+  }
+}
+
+export class Uint128 extends jspb.Message {
+  getHigh(): number;
+  setHigh(value: number): Uint128;
+
+  getLow(): number;
+  setLow(value: number): Uint128;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): Uint128.AsObject;
+  static toObject(includeInstance: boolean, msg: Uint128): Uint128.AsObject;
+  static serializeBinaryToWriter(message: Uint128, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): Uint128;
+  static deserializeBinaryFromReader(message: Uint128, reader: jspb.BinaryReader): Uint128;
+}
+
+export namespace Uint128 {
+  export type AsObject = {
+    high: number,
+    low: number,
+  }
+}
+
+export class Role extends jspb.Message {
+  getId(): string;
+  setId(value: string): Role;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): Role.AsObject;
+  static toObject(includeInstance: boolean, msg: Role): Role.AsObject;
+  static serializeBinaryToWriter(message: Role, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): Role;
+  static deserializeBinaryFromReader(message: Role, reader: jspb.BinaryReader): Role;
+}
+
+export namespace Role {
+  export type AsObject = {
+    id: string,
+  }
+}
+
+export class History extends jspb.Message {
+  getSnapshotTime(): number;
+  setSnapshotTime(value: number): History;
+
+  getRange(): TimeRange | undefined;
+  setRange(value?: TimeRange): History;
+  hasRange(): boolean;
+  clearRange(): History;
+
+  getRequestCase(): History.RequestCase;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): History.AsObject;
+  static toObject(includeInstance: boolean, msg: History): History.AsObject;
+  static serializeBinaryToWriter(message: History, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): History;
+  static deserializeBinaryFromReader(message: History, reader: jspb.BinaryReader): History;
+}
+
+export namespace History {
+  export type AsObject = {
+    snapshotTime: number,
+    range?: TimeRange.AsObject,
+  }
+
+  export enum RequestCase { 
+    REQUEST_NOT_SET = 0,
+    SNAPSHOT_TIME = 1,
+    RANGE = 2,
+  }
+}
+
+export class TimeRange extends jspb.Message {
+  getStart(): number;
+  setStart(value: number): TimeRange;
+
+  getEnd(): number;
+  setEnd(value: number): TimeRange;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): TimeRange.AsObject;
+  static toObject(includeInstance: boolean, msg: TimeRange): TimeRange.AsObject;
+  static serializeBinaryToWriter(message: TimeRange, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): TimeRange;
+  static deserializeBinaryFromReader(message: TimeRange, reader: jspb.BinaryReader): TimeRange;
+}
+
+export namespace TimeRange {
+  export type AsObject = {
+    start: number,
+    end: number,
+  }
+}
+
+export enum ExtensionID { 
+  EID_UNSET = 0,
+  EID_EXPERIMENTAL = 999,
+}
diff --git a/web/github.com/openconfig/gnmi/proto/gnmi_ext/gnmi_ext_pb.js b/web/github.com/openconfig/gnmi/proto/gnmi_ext/gnmi_ext_pb.js
new file mode 100644
index 0000000000000000000000000000000000000000..4fecd7577bc42bab2cc12b29747104289f75efdd
--- /dev/null
+++ b/web/github.com/openconfig/gnmi/proto/gnmi_ext/gnmi_ext_pb.js
@@ -0,0 +1,1523 @@
+// source: github.com/openconfig/gnmi/proto/gnmi_ext/gnmi_ext.proto
+/**
+ * @fileoverview
+ * @enhanceable
+ * @suppress {messageConventions} JS Compiler reports an error if a variable or
+ *     field starts with 'MSG_' and isn't a translatable message.
+ * @public
+ */
+// GENERATED CODE -- DO NOT EDIT!
+/* eslint-disable */
+// @ts-nocheck
+
+var jspb = require('google-protobuf');
+var goog = jspb;
+var global = Function('return this')();
+
+goog.exportSymbol('proto.gnmi_ext.Extension', null, global);
+goog.exportSymbol('proto.gnmi_ext.Extension.ExtCase', null, global);
+goog.exportSymbol('proto.gnmi_ext.ExtensionID', null, global);
+goog.exportSymbol('proto.gnmi_ext.History', null, global);
+goog.exportSymbol('proto.gnmi_ext.History.RequestCase', null, global);
+goog.exportSymbol('proto.gnmi_ext.MasterArbitration', null, global);
+goog.exportSymbol('proto.gnmi_ext.RegisteredExtension', null, global);
+goog.exportSymbol('proto.gnmi_ext.Role', null, global);
+goog.exportSymbol('proto.gnmi_ext.TimeRange', null, global);
+goog.exportSymbol('proto.gnmi_ext.Uint128', null, global);
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi_ext.Extension = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, proto.gnmi_ext.Extension.oneofGroups_);
+};
+goog.inherits(proto.gnmi_ext.Extension, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi_ext.Extension.displayName = 'proto.gnmi_ext.Extension';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi_ext.RegisteredExtension = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gnmi_ext.RegisteredExtension, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi_ext.RegisteredExtension.displayName = 'proto.gnmi_ext.RegisteredExtension';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi_ext.MasterArbitration = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gnmi_ext.MasterArbitration, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi_ext.MasterArbitration.displayName = 'proto.gnmi_ext.MasterArbitration';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi_ext.Uint128 = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gnmi_ext.Uint128, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi_ext.Uint128.displayName = 'proto.gnmi_ext.Uint128';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi_ext.Role = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gnmi_ext.Role, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi_ext.Role.displayName = 'proto.gnmi_ext.Role';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi_ext.History = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, proto.gnmi_ext.History.oneofGroups_);
+};
+goog.inherits(proto.gnmi_ext.History, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi_ext.History.displayName = 'proto.gnmi_ext.History';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gnmi_ext.TimeRange = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gnmi_ext.TimeRange, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gnmi_ext.TimeRange.displayName = 'proto.gnmi_ext.TimeRange';
+}
+
+/**
+ * Oneof group definitions for this message. Each group defines the field
+ * numbers belonging to that group. When of these fields' value is set, all
+ * other fields in the group are cleared. During deserialization, if multiple
+ * fields are encountered for a group, only the last value seen will be kept.
+ * @private {!Array<!Array<number>>}
+ * @const
+ */
+proto.gnmi_ext.Extension.oneofGroups_ = [[1,2,3]];
+
+/**
+ * @enum {number}
+ */
+proto.gnmi_ext.Extension.ExtCase = {
+  EXT_NOT_SET: 0,
+  REGISTERED_EXT: 1,
+  MASTER_ARBITRATION: 2,
+  HISTORY: 3
+};
+
+/**
+ * @return {proto.gnmi_ext.Extension.ExtCase}
+ */
+proto.gnmi_ext.Extension.prototype.getExtCase = function() {
+  return /** @type {proto.gnmi_ext.Extension.ExtCase} */(jspb.Message.computeOneofCase(this, proto.gnmi_ext.Extension.oneofGroups_[0]));
+};
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi_ext.Extension.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi_ext.Extension.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi_ext.Extension} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi_ext.Extension.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    registeredExt: (f = msg.getRegisteredExt()) && proto.gnmi_ext.RegisteredExtension.toObject(includeInstance, f),
+    masterArbitration: (f = msg.getMasterArbitration()) && proto.gnmi_ext.MasterArbitration.toObject(includeInstance, f),
+    history: (f = msg.getHistory()) && proto.gnmi_ext.History.toObject(includeInstance, f)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi_ext.Extension}
+ */
+proto.gnmi_ext.Extension.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi_ext.Extension;
+  return proto.gnmi_ext.Extension.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi_ext.Extension} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi_ext.Extension}
+ */
+proto.gnmi_ext.Extension.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = new proto.gnmi_ext.RegisteredExtension;
+      reader.readMessage(value,proto.gnmi_ext.RegisteredExtension.deserializeBinaryFromReader);
+      msg.setRegisteredExt(value);
+      break;
+    case 2:
+      var value = new proto.gnmi_ext.MasterArbitration;
+      reader.readMessage(value,proto.gnmi_ext.MasterArbitration.deserializeBinaryFromReader);
+      msg.setMasterArbitration(value);
+      break;
+    case 3:
+      var value = new proto.gnmi_ext.History;
+      reader.readMessage(value,proto.gnmi_ext.History.deserializeBinaryFromReader);
+      msg.setHistory(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi_ext.Extension.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi_ext.Extension.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi_ext.Extension} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi_ext.Extension.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getRegisteredExt();
+  if (f != null) {
+    writer.writeMessage(
+      1,
+      f,
+      proto.gnmi_ext.RegisteredExtension.serializeBinaryToWriter
+    );
+  }
+  f = message.getMasterArbitration();
+  if (f != null) {
+    writer.writeMessage(
+      2,
+      f,
+      proto.gnmi_ext.MasterArbitration.serializeBinaryToWriter
+    );
+  }
+  f = message.getHistory();
+  if (f != null) {
+    writer.writeMessage(
+      3,
+      f,
+      proto.gnmi_ext.History.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * optional RegisteredExtension registered_ext = 1;
+ * @return {?proto.gnmi_ext.RegisteredExtension}
+ */
+proto.gnmi_ext.Extension.prototype.getRegisteredExt = function() {
+  return /** @type{?proto.gnmi_ext.RegisteredExtension} */ (
+    jspb.Message.getWrapperField(this, proto.gnmi_ext.RegisteredExtension, 1));
+};
+
+
+/**
+ * @param {?proto.gnmi_ext.RegisteredExtension|undefined} value
+ * @return {!proto.gnmi_ext.Extension} returns this
+*/
+proto.gnmi_ext.Extension.prototype.setRegisteredExt = function(value) {
+  return jspb.Message.setOneofWrapperField(this, 1, proto.gnmi_ext.Extension.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gnmi_ext.Extension} returns this
+ */
+proto.gnmi_ext.Extension.prototype.clearRegisteredExt = function() {
+  return this.setRegisteredExt(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi_ext.Extension.prototype.hasRegisteredExt = function() {
+  return jspb.Message.getField(this, 1) != null;
+};
+
+
+/**
+ * optional MasterArbitration master_arbitration = 2;
+ * @return {?proto.gnmi_ext.MasterArbitration}
+ */
+proto.gnmi_ext.Extension.prototype.getMasterArbitration = function() {
+  return /** @type{?proto.gnmi_ext.MasterArbitration} */ (
+    jspb.Message.getWrapperField(this, proto.gnmi_ext.MasterArbitration, 2));
+};
+
+
+/**
+ * @param {?proto.gnmi_ext.MasterArbitration|undefined} value
+ * @return {!proto.gnmi_ext.Extension} returns this
+*/
+proto.gnmi_ext.Extension.prototype.setMasterArbitration = function(value) {
+  return jspb.Message.setOneofWrapperField(this, 2, proto.gnmi_ext.Extension.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gnmi_ext.Extension} returns this
+ */
+proto.gnmi_ext.Extension.prototype.clearMasterArbitration = function() {
+  return this.setMasterArbitration(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi_ext.Extension.prototype.hasMasterArbitration = function() {
+  return jspb.Message.getField(this, 2) != null;
+};
+
+
+/**
+ * optional History history = 3;
+ * @return {?proto.gnmi_ext.History}
+ */
+proto.gnmi_ext.Extension.prototype.getHistory = function() {
+  return /** @type{?proto.gnmi_ext.History} */ (
+    jspb.Message.getWrapperField(this, proto.gnmi_ext.History, 3));
+};
+
+
+/**
+ * @param {?proto.gnmi_ext.History|undefined} value
+ * @return {!proto.gnmi_ext.Extension} returns this
+*/
+proto.gnmi_ext.Extension.prototype.setHistory = function(value) {
+  return jspb.Message.setOneofWrapperField(this, 3, proto.gnmi_ext.Extension.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gnmi_ext.Extension} returns this
+ */
+proto.gnmi_ext.Extension.prototype.clearHistory = function() {
+  return this.setHistory(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi_ext.Extension.prototype.hasHistory = function() {
+  return jspb.Message.getField(this, 3) != null;
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi_ext.RegisteredExtension.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi_ext.RegisteredExtension.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi_ext.RegisteredExtension} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi_ext.RegisteredExtension.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    id: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    msg: msg.getMsg_asB64()
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi_ext.RegisteredExtension}
+ */
+proto.gnmi_ext.RegisteredExtension.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi_ext.RegisteredExtension;
+  return proto.gnmi_ext.RegisteredExtension.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi_ext.RegisteredExtension} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi_ext.RegisteredExtension}
+ */
+proto.gnmi_ext.RegisteredExtension.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {!proto.gnmi_ext.ExtensionID} */ (reader.readEnum());
+      msg.setId(value);
+      break;
+    case 2:
+      var value = /** @type {!Uint8Array} */ (reader.readBytes());
+      msg.setMsg(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi_ext.RegisteredExtension.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi_ext.RegisteredExtension.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi_ext.RegisteredExtension} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi_ext.RegisteredExtension.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getId();
+  if (f !== 0.0) {
+    writer.writeEnum(
+      1,
+      f
+    );
+  }
+  f = message.getMsg_asU8();
+  if (f.length > 0) {
+    writer.writeBytes(
+      2,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional ExtensionID id = 1;
+ * @return {!proto.gnmi_ext.ExtensionID}
+ */
+proto.gnmi_ext.RegisteredExtension.prototype.getId = function() {
+  return /** @type {!proto.gnmi_ext.ExtensionID} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {!proto.gnmi_ext.ExtensionID} value
+ * @return {!proto.gnmi_ext.RegisteredExtension} returns this
+ */
+proto.gnmi_ext.RegisteredExtension.prototype.setId = function(value) {
+  return jspb.Message.setProto3EnumField(this, 1, value);
+};
+
+
+/**
+ * optional bytes msg = 2;
+ * @return {!(string|Uint8Array)}
+ */
+proto.gnmi_ext.RegisteredExtension.prototype.getMsg = function() {
+  return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
+};
+
+
+/**
+ * optional bytes msg = 2;
+ * This is a type-conversion wrapper around `getMsg()`
+ * @return {string}
+ */
+proto.gnmi_ext.RegisteredExtension.prototype.getMsg_asB64 = function() {
+  return /** @type {string} */ (jspb.Message.bytesAsB64(
+      this.getMsg()));
+};
+
+
+/**
+ * optional bytes msg = 2;
+ * Note that Uint8Array is not supported on all browsers.
+ * @see http://caniuse.com/Uint8Array
+ * This is a type-conversion wrapper around `getMsg()`
+ * @return {!Uint8Array}
+ */
+proto.gnmi_ext.RegisteredExtension.prototype.getMsg_asU8 = function() {
+  return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(
+      this.getMsg()));
+};
+
+
+/**
+ * @param {!(string|Uint8Array)} value
+ * @return {!proto.gnmi_ext.RegisteredExtension} returns this
+ */
+proto.gnmi_ext.RegisteredExtension.prototype.setMsg = function(value) {
+  return jspb.Message.setProto3BytesField(this, 2, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi_ext.MasterArbitration.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi_ext.MasterArbitration.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi_ext.MasterArbitration} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi_ext.MasterArbitration.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    role: (f = msg.getRole()) && proto.gnmi_ext.Role.toObject(includeInstance, f),
+    electionId: (f = msg.getElectionId()) && proto.gnmi_ext.Uint128.toObject(includeInstance, f)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi_ext.MasterArbitration}
+ */
+proto.gnmi_ext.MasterArbitration.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi_ext.MasterArbitration;
+  return proto.gnmi_ext.MasterArbitration.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi_ext.MasterArbitration} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi_ext.MasterArbitration}
+ */
+proto.gnmi_ext.MasterArbitration.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = new proto.gnmi_ext.Role;
+      reader.readMessage(value,proto.gnmi_ext.Role.deserializeBinaryFromReader);
+      msg.setRole(value);
+      break;
+    case 2:
+      var value = new proto.gnmi_ext.Uint128;
+      reader.readMessage(value,proto.gnmi_ext.Uint128.deserializeBinaryFromReader);
+      msg.setElectionId(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi_ext.MasterArbitration.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi_ext.MasterArbitration.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi_ext.MasterArbitration} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi_ext.MasterArbitration.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getRole();
+  if (f != null) {
+    writer.writeMessage(
+      1,
+      f,
+      proto.gnmi_ext.Role.serializeBinaryToWriter
+    );
+  }
+  f = message.getElectionId();
+  if (f != null) {
+    writer.writeMessage(
+      2,
+      f,
+      proto.gnmi_ext.Uint128.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * optional Role role = 1;
+ * @return {?proto.gnmi_ext.Role}
+ */
+proto.gnmi_ext.MasterArbitration.prototype.getRole = function() {
+  return /** @type{?proto.gnmi_ext.Role} */ (
+    jspb.Message.getWrapperField(this, proto.gnmi_ext.Role, 1));
+};
+
+
+/**
+ * @param {?proto.gnmi_ext.Role|undefined} value
+ * @return {!proto.gnmi_ext.MasterArbitration} returns this
+*/
+proto.gnmi_ext.MasterArbitration.prototype.setRole = function(value) {
+  return jspb.Message.setWrapperField(this, 1, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gnmi_ext.MasterArbitration} returns this
+ */
+proto.gnmi_ext.MasterArbitration.prototype.clearRole = function() {
+  return this.setRole(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi_ext.MasterArbitration.prototype.hasRole = function() {
+  return jspb.Message.getField(this, 1) != null;
+};
+
+
+/**
+ * optional Uint128 election_id = 2;
+ * @return {?proto.gnmi_ext.Uint128}
+ */
+proto.gnmi_ext.MasterArbitration.prototype.getElectionId = function() {
+  return /** @type{?proto.gnmi_ext.Uint128} */ (
+    jspb.Message.getWrapperField(this, proto.gnmi_ext.Uint128, 2));
+};
+
+
+/**
+ * @param {?proto.gnmi_ext.Uint128|undefined} value
+ * @return {!proto.gnmi_ext.MasterArbitration} returns this
+*/
+proto.gnmi_ext.MasterArbitration.prototype.setElectionId = function(value) {
+  return jspb.Message.setWrapperField(this, 2, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gnmi_ext.MasterArbitration} returns this
+ */
+proto.gnmi_ext.MasterArbitration.prototype.clearElectionId = function() {
+  return this.setElectionId(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi_ext.MasterArbitration.prototype.hasElectionId = function() {
+  return jspb.Message.getField(this, 2) != null;
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi_ext.Uint128.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi_ext.Uint128.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi_ext.Uint128} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi_ext.Uint128.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    high: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    low: jspb.Message.getFieldWithDefault(msg, 2, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi_ext.Uint128}
+ */
+proto.gnmi_ext.Uint128.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi_ext.Uint128;
+  return proto.gnmi_ext.Uint128.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi_ext.Uint128} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi_ext.Uint128}
+ */
+proto.gnmi_ext.Uint128.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setHigh(value);
+      break;
+    case 2:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setLow(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi_ext.Uint128.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi_ext.Uint128.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi_ext.Uint128} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi_ext.Uint128.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getHigh();
+  if (f !== 0) {
+    writer.writeUint64(
+      1,
+      f
+    );
+  }
+  f = message.getLow();
+  if (f !== 0) {
+    writer.writeUint64(
+      2,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional uint64 high = 1;
+ * @return {number}
+ */
+proto.gnmi_ext.Uint128.prototype.getHigh = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gnmi_ext.Uint128} returns this
+ */
+proto.gnmi_ext.Uint128.prototype.setHigh = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional uint64 low = 2;
+ * @return {number}
+ */
+proto.gnmi_ext.Uint128.prototype.getLow = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gnmi_ext.Uint128} returns this
+ */
+proto.gnmi_ext.Uint128.prototype.setLow = function(value) {
+  return jspb.Message.setProto3IntField(this, 2, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi_ext.Role.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi_ext.Role.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi_ext.Role} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi_ext.Role.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    id: jspb.Message.getFieldWithDefault(msg, 1, "")
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi_ext.Role}
+ */
+proto.gnmi_ext.Role.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi_ext.Role;
+  return proto.gnmi_ext.Role.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi_ext.Role} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi_ext.Role}
+ */
+proto.gnmi_ext.Role.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setId(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi_ext.Role.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi_ext.Role.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi_ext.Role} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi_ext.Role.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getId();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional string id = 1;
+ * @return {string}
+ */
+proto.gnmi_ext.Role.prototype.getId = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gnmi_ext.Role} returns this
+ */
+proto.gnmi_ext.Role.prototype.setId = function(value) {
+  return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+
+/**
+ * Oneof group definitions for this message. Each group defines the field
+ * numbers belonging to that group. When of these fields' value is set, all
+ * other fields in the group are cleared. During deserialization, if multiple
+ * fields are encountered for a group, only the last value seen will be kept.
+ * @private {!Array<!Array<number>>}
+ * @const
+ */
+proto.gnmi_ext.History.oneofGroups_ = [[1,2]];
+
+/**
+ * @enum {number}
+ */
+proto.gnmi_ext.History.RequestCase = {
+  REQUEST_NOT_SET: 0,
+  SNAPSHOT_TIME: 1,
+  RANGE: 2
+};
+
+/**
+ * @return {proto.gnmi_ext.History.RequestCase}
+ */
+proto.gnmi_ext.History.prototype.getRequestCase = function() {
+  return /** @type {proto.gnmi_ext.History.RequestCase} */(jspb.Message.computeOneofCase(this, proto.gnmi_ext.History.oneofGroups_[0]));
+};
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi_ext.History.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi_ext.History.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi_ext.History} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi_ext.History.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    snapshotTime: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    range: (f = msg.getRange()) && proto.gnmi_ext.TimeRange.toObject(includeInstance, f)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi_ext.History}
+ */
+proto.gnmi_ext.History.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi_ext.History;
+  return proto.gnmi_ext.History.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi_ext.History} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi_ext.History}
+ */
+proto.gnmi_ext.History.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setSnapshotTime(value);
+      break;
+    case 2:
+      var value = new proto.gnmi_ext.TimeRange;
+      reader.readMessage(value,proto.gnmi_ext.TimeRange.deserializeBinaryFromReader);
+      msg.setRange(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi_ext.History.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi_ext.History.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi_ext.History} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi_ext.History.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = /** @type {number} */ (jspb.Message.getField(message, 1));
+  if (f != null) {
+    writer.writeInt64(
+      1,
+      f
+    );
+  }
+  f = message.getRange();
+  if (f != null) {
+    writer.writeMessage(
+      2,
+      f,
+      proto.gnmi_ext.TimeRange.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * optional int64 snapshot_time = 1;
+ * @return {number}
+ */
+proto.gnmi_ext.History.prototype.getSnapshotTime = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gnmi_ext.History} returns this
+ */
+proto.gnmi_ext.History.prototype.setSnapshotTime = function(value) {
+  return jspb.Message.setOneofField(this, 1, proto.gnmi_ext.History.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.gnmi_ext.History} returns this
+ */
+proto.gnmi_ext.History.prototype.clearSnapshotTime = function() {
+  return jspb.Message.setOneofField(this, 1, proto.gnmi_ext.History.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi_ext.History.prototype.hasSnapshotTime = function() {
+  return jspb.Message.getField(this, 1) != null;
+};
+
+
+/**
+ * optional TimeRange range = 2;
+ * @return {?proto.gnmi_ext.TimeRange}
+ */
+proto.gnmi_ext.History.prototype.getRange = function() {
+  return /** @type{?proto.gnmi_ext.TimeRange} */ (
+    jspb.Message.getWrapperField(this, proto.gnmi_ext.TimeRange, 2));
+};
+
+
+/**
+ * @param {?proto.gnmi_ext.TimeRange|undefined} value
+ * @return {!proto.gnmi_ext.History} returns this
+*/
+proto.gnmi_ext.History.prototype.setRange = function(value) {
+  return jspb.Message.setOneofWrapperField(this, 2, proto.gnmi_ext.History.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gnmi_ext.History} returns this
+ */
+proto.gnmi_ext.History.prototype.clearRange = function() {
+  return this.setRange(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gnmi_ext.History.prototype.hasRange = function() {
+  return jspb.Message.getField(this, 2) != null;
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gnmi_ext.TimeRange.prototype.toObject = function(opt_includeInstance) {
+  return proto.gnmi_ext.TimeRange.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gnmi_ext.TimeRange} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi_ext.TimeRange.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    start: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    end: jspb.Message.getFieldWithDefault(msg, 2, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gnmi_ext.TimeRange}
+ */
+proto.gnmi_ext.TimeRange.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gnmi_ext.TimeRange;
+  return proto.gnmi_ext.TimeRange.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gnmi_ext.TimeRange} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gnmi_ext.TimeRange}
+ */
+proto.gnmi_ext.TimeRange.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setStart(value);
+      break;
+    case 2:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setEnd(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gnmi_ext.TimeRange.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gnmi_ext.TimeRange.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gnmi_ext.TimeRange} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gnmi_ext.TimeRange.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getStart();
+  if (f !== 0) {
+    writer.writeInt64(
+      1,
+      f
+    );
+  }
+  f = message.getEnd();
+  if (f !== 0) {
+    writer.writeInt64(
+      2,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional int64 start = 1;
+ * @return {number}
+ */
+proto.gnmi_ext.TimeRange.prototype.getStart = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gnmi_ext.TimeRange} returns this
+ */
+proto.gnmi_ext.TimeRange.prototype.setStart = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional int64 end = 2;
+ * @return {number}
+ */
+proto.gnmi_ext.TimeRange.prototype.getEnd = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gnmi_ext.TimeRange} returns this
+ */
+proto.gnmi_ext.TimeRange.prototype.setEnd = function(value) {
+  return jspb.Message.setProto3IntField(this, 2, value);
+};
+
+
+/**
+ * @enum {number}
+ */
+proto.gnmi_ext.ExtensionID = {
+  EID_UNSET: 0,
+  EID_EXPERIMENTAL: 999
+};
+
+goog.object.extend(exports, proto.gnmi_ext);
diff --git a/web/github.com/openconfig/gnmi/proto/target/target_pb.d.ts b/web/github.com/openconfig/gnmi/proto/target/target_pb.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..80c6dcf7617cf1000a6d9fed97bcc4e8c821229b
--- /dev/null
+++ b/web/github.com/openconfig/gnmi/proto/target/target_pb.d.ts
@@ -0,0 +1,95 @@
+import * as jspb from 'google-protobuf'
+
+import * as github_com_openconfig_gnmi_proto_gnmi_gnmi_pb from '../../../../../github.com/openconfig/gnmi/proto/gnmi/gnmi_pb';
+
+
+export class Configuration extends jspb.Message {
+  getRequestMap(): jspb.Map<string, github_com_openconfig_gnmi_proto_gnmi_gnmi_pb.SubscribeRequest>;
+  clearRequestMap(): Configuration;
+
+  getTargetMap(): jspb.Map<string, Target>;
+  clearTargetMap(): Configuration;
+
+  getInstanceId(): string;
+  setInstanceId(value: string): Configuration;
+
+  getRevision(): number;
+  setRevision(value: number): Configuration;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): Configuration.AsObject;
+  static toObject(includeInstance: boolean, msg: Configuration): Configuration.AsObject;
+  static serializeBinaryToWriter(message: Configuration, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): Configuration;
+  static deserializeBinaryFromReader(message: Configuration, reader: jspb.BinaryReader): Configuration;
+}
+
+export namespace Configuration {
+  export type AsObject = {
+    requestMap: Array<[string, github_com_openconfig_gnmi_proto_gnmi_gnmi_pb.SubscribeRequest.AsObject]>,
+    targetMap: Array<[string, Target.AsObject]>,
+    instanceId: string,
+    revision: number,
+  }
+}
+
+export class Target extends jspb.Message {
+  getAddressesList(): Array<string>;
+  setAddressesList(value: Array<string>): Target;
+  clearAddressesList(): Target;
+  addAddresses(value: string, index?: number): Target;
+
+  getCredentials(): Credentials | undefined;
+  setCredentials(value?: Credentials): Target;
+  hasCredentials(): boolean;
+  clearCredentials(): Target;
+
+  getRequest(): string;
+  setRequest(value: string): Target;
+
+  getMetaMap(): jspb.Map<string, string>;
+  clearMetaMap(): Target;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): Target.AsObject;
+  static toObject(includeInstance: boolean, msg: Target): Target.AsObject;
+  static serializeBinaryToWriter(message: Target, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): Target;
+  static deserializeBinaryFromReader(message: Target, reader: jspb.BinaryReader): Target;
+}
+
+export namespace Target {
+  export type AsObject = {
+    addressesList: Array<string>,
+    credentials?: Credentials.AsObject,
+    request: string,
+    metaMap: Array<[string, string]>,
+  }
+}
+
+export class Credentials extends jspb.Message {
+  getUsername(): string;
+  setUsername(value: string): Credentials;
+
+  getPassword(): string;
+  setPassword(value: string): Credentials;
+
+  getPasswordId(): string;
+  setPasswordId(value: string): Credentials;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): Credentials.AsObject;
+  static toObject(includeInstance: boolean, msg: Credentials): Credentials.AsObject;
+  static serializeBinaryToWriter(message: Credentials, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): Credentials;
+  static deserializeBinaryFromReader(message: Credentials, reader: jspb.BinaryReader): Credentials;
+}
+
+export namespace Credentials {
+  export type AsObject = {
+    username: string,
+    password: string,
+    passwordId: string,
+  }
+}
+
diff --git a/web/github.com/openconfig/gnmi/proto/target/target_pb.js b/web/github.com/openconfig/gnmi/proto/target/target_pb.js
new file mode 100644
index 0000000000000000000000000000000000000000..a272e0f95b2d0dd385618828e14a20f600af9e96
--- /dev/null
+++ b/web/github.com/openconfig/gnmi/proto/target/target_pb.js
@@ -0,0 +1,771 @@
+// source: github.com/openconfig/gnmi/proto/target/target.proto
+/**
+ * @fileoverview
+ * @enhanceable
+ * @suppress {messageConventions} JS Compiler reports an error if a variable or
+ *     field starts with 'MSG_' and isn't a translatable message.
+ * @public
+ */
+// GENERATED CODE -- DO NOT EDIT!
+/* eslint-disable */
+// @ts-nocheck
+
+var jspb = require('google-protobuf');
+var goog = jspb;
+var global = Function('return this')();
+
+var github_com_openconfig_gnmi_proto_gnmi_gnmi_pb = require('../../../../../github.com/openconfig/gnmi/proto/gnmi/gnmi_pb.js');
+goog.object.extend(proto, github_com_openconfig_gnmi_proto_gnmi_gnmi_pb);
+goog.exportSymbol('proto.target.Configuration', null, global);
+goog.exportSymbol('proto.target.Credentials', null, global);
+goog.exportSymbol('proto.target.Target', null, global);
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.target.Configuration = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, 500, null, null);
+};
+goog.inherits(proto.target.Configuration, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.target.Configuration.displayName = 'proto.target.Configuration';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.target.Target = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.target.Target.repeatedFields_, null);
+};
+goog.inherits(proto.target.Target, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.target.Target.displayName = 'proto.target.Target';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.target.Credentials = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.target.Credentials, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.target.Credentials.displayName = 'proto.target.Credentials';
+}
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.target.Configuration.prototype.toObject = function(opt_includeInstance) {
+  return proto.target.Configuration.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.target.Configuration} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.target.Configuration.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    requestMap: (f = msg.getRequestMap()) ? f.toObject(includeInstance, proto.gnmi.SubscribeRequest.toObject) : [],
+    targetMap: (f = msg.getTargetMap()) ? f.toObject(includeInstance, proto.target.Target.toObject) : [],
+    instanceId: jspb.Message.getFieldWithDefault(msg, 3, ""),
+    revision: jspb.Message.getFieldWithDefault(msg, 536870911, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.target.Configuration}
+ */
+proto.target.Configuration.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.target.Configuration;
+  return proto.target.Configuration.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.target.Configuration} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.target.Configuration}
+ */
+proto.target.Configuration.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = msg.getRequestMap();
+      reader.readMessage(value, function(message, reader) {
+        jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readMessage, proto.gnmi.SubscribeRequest.deserializeBinaryFromReader, "", new proto.gnmi.SubscribeRequest());
+         });
+      break;
+    case 2:
+      var value = msg.getTargetMap();
+      reader.readMessage(value, function(message, reader) {
+        jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readMessage, proto.target.Target.deserializeBinaryFromReader, "", new proto.target.Target());
+         });
+      break;
+    case 3:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setInstanceId(value);
+      break;
+    case 536870911:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setRevision(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.target.Configuration.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.target.Configuration.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.target.Configuration} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.target.Configuration.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getRequestMap(true);
+  if (f && f.getLength() > 0) {
+    f.serializeBinary(1, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeMessage, proto.gnmi.SubscribeRequest.serializeBinaryToWriter);
+  }
+  f = message.getTargetMap(true);
+  if (f && f.getLength() > 0) {
+    f.serializeBinary(2, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeMessage, proto.target.Target.serializeBinaryToWriter);
+  }
+  f = message.getInstanceId();
+  if (f.length > 0) {
+    writer.writeString(
+      3,
+      f
+    );
+  }
+  f = message.getRevision();
+  if (f !== 0) {
+    writer.writeInt64(
+      536870911,
+      f
+    );
+  }
+};
+
+
+/**
+ * map<string, gnmi.SubscribeRequest> request = 1;
+ * @param {boolean=} opt_noLazyCreate Do not create the map if
+ * empty, instead returning `undefined`
+ * @return {!jspb.Map<string,!proto.gnmi.SubscribeRequest>}
+ */
+proto.target.Configuration.prototype.getRequestMap = function(opt_noLazyCreate) {
+  return /** @type {!jspb.Map<string,!proto.gnmi.SubscribeRequest>} */ (
+      jspb.Message.getMapField(this, 1, opt_noLazyCreate,
+      proto.gnmi.SubscribeRequest));
+};
+
+
+/**
+ * Clears values from the map. The map will be non-null.
+ * @return {!proto.target.Configuration} returns this
+ */
+proto.target.Configuration.prototype.clearRequestMap = function() {
+  this.getRequestMap().clear();
+  return this;};
+
+
+/**
+ * map<string, Target> target = 2;
+ * @param {boolean=} opt_noLazyCreate Do not create the map if
+ * empty, instead returning `undefined`
+ * @return {!jspb.Map<string,!proto.target.Target>}
+ */
+proto.target.Configuration.prototype.getTargetMap = function(opt_noLazyCreate) {
+  return /** @type {!jspb.Map<string,!proto.target.Target>} */ (
+      jspb.Message.getMapField(this, 2, opt_noLazyCreate,
+      proto.target.Target));
+};
+
+
+/**
+ * Clears values from the map. The map will be non-null.
+ * @return {!proto.target.Configuration} returns this
+ */
+proto.target.Configuration.prototype.clearTargetMap = function() {
+  this.getTargetMap().clear();
+  return this;};
+
+
+/**
+ * optional string instance_id = 3;
+ * @return {string}
+ */
+proto.target.Configuration.prototype.getInstanceId = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.target.Configuration} returns this
+ */
+proto.target.Configuration.prototype.setInstanceId = function(value) {
+  return jspb.Message.setProto3StringField(this, 3, value);
+};
+
+
+/**
+ * optional int64 revision = 536870911;
+ * @return {number}
+ */
+proto.target.Configuration.prototype.getRevision = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 536870911, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.target.Configuration} returns this
+ */
+proto.target.Configuration.prototype.setRevision = function(value) {
+  return jspb.Message.setProto3IntField(this, 536870911, value);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.target.Target.repeatedFields_ = [1];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.target.Target.prototype.toObject = function(opt_includeInstance) {
+  return proto.target.Target.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.target.Target} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.target.Target.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    addressesList: (f = jspb.Message.getRepeatedField(msg, 1)) == null ? undefined : f,
+    credentials: (f = msg.getCredentials()) && proto.target.Credentials.toObject(includeInstance, f),
+    request: jspb.Message.getFieldWithDefault(msg, 3, ""),
+    metaMap: (f = msg.getMetaMap()) ? f.toObject(includeInstance, undefined) : []
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.target.Target}
+ */
+proto.target.Target.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.target.Target;
+  return proto.target.Target.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.target.Target} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.target.Target}
+ */
+proto.target.Target.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.addAddresses(value);
+      break;
+    case 2:
+      var value = new proto.target.Credentials;
+      reader.readMessage(value,proto.target.Credentials.deserializeBinaryFromReader);
+      msg.setCredentials(value);
+      break;
+    case 3:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setRequest(value);
+      break;
+    case 4:
+      var value = msg.getMetaMap();
+      reader.readMessage(value, function(message, reader) {
+        jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, "", "");
+         });
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.target.Target.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.target.Target.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.target.Target} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.target.Target.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getAddressesList();
+  if (f.length > 0) {
+    writer.writeRepeatedString(
+      1,
+      f
+    );
+  }
+  f = message.getCredentials();
+  if (f != null) {
+    writer.writeMessage(
+      2,
+      f,
+      proto.target.Credentials.serializeBinaryToWriter
+    );
+  }
+  f = message.getRequest();
+  if (f.length > 0) {
+    writer.writeString(
+      3,
+      f
+    );
+  }
+  f = message.getMetaMap(true);
+  if (f && f.getLength() > 0) {
+    f.serializeBinary(4, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString);
+  }
+};
+
+
+/**
+ * repeated string addresses = 1;
+ * @return {!Array<string>}
+ */
+proto.target.Target.prototype.getAddressesList = function() {
+  return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 1));
+};
+
+
+/**
+ * @param {!Array<string>} value
+ * @return {!proto.target.Target} returns this
+ */
+proto.target.Target.prototype.setAddressesList = function(value) {
+  return jspb.Message.setField(this, 1, value || []);
+};
+
+
+/**
+ * @param {string} value
+ * @param {number=} opt_index
+ * @return {!proto.target.Target} returns this
+ */
+proto.target.Target.prototype.addAddresses = function(value, opt_index) {
+  return jspb.Message.addToRepeatedField(this, 1, value, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.target.Target} returns this
+ */
+proto.target.Target.prototype.clearAddressesList = function() {
+  return this.setAddressesList([]);
+};
+
+
+/**
+ * optional Credentials credentials = 2;
+ * @return {?proto.target.Credentials}
+ */
+proto.target.Target.prototype.getCredentials = function() {
+  return /** @type{?proto.target.Credentials} */ (
+    jspb.Message.getWrapperField(this, proto.target.Credentials, 2));
+};
+
+
+/**
+ * @param {?proto.target.Credentials|undefined} value
+ * @return {!proto.target.Target} returns this
+*/
+proto.target.Target.prototype.setCredentials = function(value) {
+  return jspb.Message.setWrapperField(this, 2, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.target.Target} returns this
+ */
+proto.target.Target.prototype.clearCredentials = function() {
+  return this.setCredentials(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.target.Target.prototype.hasCredentials = function() {
+  return jspb.Message.getField(this, 2) != null;
+};
+
+
+/**
+ * optional string request = 3;
+ * @return {string}
+ */
+proto.target.Target.prototype.getRequest = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.target.Target} returns this
+ */
+proto.target.Target.prototype.setRequest = function(value) {
+  return jspb.Message.setProto3StringField(this, 3, value);
+};
+
+
+/**
+ * map<string, string> meta = 4;
+ * @param {boolean=} opt_noLazyCreate Do not create the map if
+ * empty, instead returning `undefined`
+ * @return {!jspb.Map<string,string>}
+ */
+proto.target.Target.prototype.getMetaMap = function(opt_noLazyCreate) {
+  return /** @type {!jspb.Map<string,string>} */ (
+      jspb.Message.getMapField(this, 4, opt_noLazyCreate,
+      null));
+};
+
+
+/**
+ * Clears values from the map. The map will be non-null.
+ * @return {!proto.target.Target} returns this
+ */
+proto.target.Target.prototype.clearMetaMap = function() {
+  this.getMetaMap().clear();
+  return this;};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.target.Credentials.prototype.toObject = function(opt_includeInstance) {
+  return proto.target.Credentials.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.target.Credentials} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.target.Credentials.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    username: jspb.Message.getFieldWithDefault(msg, 1, ""),
+    password: jspb.Message.getFieldWithDefault(msg, 2, ""),
+    passwordId: jspb.Message.getFieldWithDefault(msg, 3, "")
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.target.Credentials}
+ */
+proto.target.Credentials.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.target.Credentials;
+  return proto.target.Credentials.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.target.Credentials} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.target.Credentials}
+ */
+proto.target.Credentials.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setUsername(value);
+      break;
+    case 2:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setPassword(value);
+      break;
+    case 3:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setPasswordId(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.target.Credentials.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.target.Credentials.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.target.Credentials} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.target.Credentials.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getUsername();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+  f = message.getPassword();
+  if (f.length > 0) {
+    writer.writeString(
+      2,
+      f
+    );
+  }
+  f = message.getPasswordId();
+  if (f.length > 0) {
+    writer.writeString(
+      3,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional string username = 1;
+ * @return {string}
+ */
+proto.target.Credentials.prototype.getUsername = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.target.Credentials} returns this
+ */
+proto.target.Credentials.prototype.setUsername = function(value) {
+  return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * optional string password = 2;
+ * @return {string}
+ */
+proto.target.Credentials.prototype.getPassword = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.target.Credentials} returns this
+ */
+proto.target.Credentials.prototype.setPassword = function(value) {
+  return jspb.Message.setProto3StringField(this, 2, value);
+};
+
+
+/**
+ * optional string password_id = 3;
+ * @return {string}
+ */
+proto.target.Credentials.prototype.getPasswordId = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.target.Credentials} returns this
+ */
+proto.target.Credentials.prototype.setPasswordId = function(value) {
+  return jspb.Message.setProto3StringField(this, 3, value);
+};
+
+
+goog.object.extend(exports, proto.target);
diff --git a/web/gosdn/core/core_grpc_web_pb.d.ts b/web/gosdn/core/core_grpc_web_pb.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f195c5f7a3867dbe52965df7b6194de235f53bc1
--- /dev/null
+++ b/web/gosdn/core/core_grpc_web_pb.d.ts
@@ -0,0 +1,43 @@
+import * as grpcWeb from 'grpc-web';
+
+import * as gosdn_core_core_pb from '../../gosdn/core/core_pb';
+
+
+export class coreClient {
+  constructor (hostname: string,
+               credentials?: null | { [index: string]: string; },
+               options?: null | { [index: string]: any; });
+
+  get(
+    request: gosdn_core_core_pb.GetRequest,
+    metadata: grpcWeb.Metadata | undefined,
+    callback: (err: grpcWeb.Error,
+               response: gosdn_core_core_pb.GetResponse) => void
+  ): grpcWeb.ClientReadableStream<gosdn_core_core_pb.GetResponse>;
+
+  set(
+    request: gosdn_core_core_pb.SetRequest,
+    metadata: grpcWeb.Metadata | undefined,
+    callback: (err: grpcWeb.Error,
+               response: gosdn_core_core_pb.SetResponse) => void
+  ): grpcWeb.ClientReadableStream<gosdn_core_core_pb.SetResponse>;
+
+}
+
+export class corePromiseClient {
+  constructor (hostname: string,
+               credentials?: null | { [index: string]: string; },
+               options?: null | { [index: string]: any; });
+
+  get(
+    request: gosdn_core_core_pb.GetRequest,
+    metadata?: grpcWeb.Metadata
+  ): Promise<gosdn_core_core_pb.GetResponse>;
+
+  set(
+    request: gosdn_core_core_pb.SetRequest,
+    metadata?: grpcWeb.Metadata
+  ): Promise<gosdn_core_core_pb.SetResponse>;
+
+}
+
diff --git a/web/gosdn/core/core_grpc_web_pb.js b/web/gosdn/core/core_grpc_web_pb.js
new file mode 100644
index 0000000000000000000000000000000000000000..135111221c85163d429a903c837a34b327ed7199
--- /dev/null
+++ b/web/gosdn/core/core_grpc_web_pb.js
@@ -0,0 +1,237 @@
+/**
+ * @fileoverview gRPC-Web generated client stub for gosdn.core
+ * @enhanceable
+ * @public
+ */
+
+// GENERATED CODE -- DO NOT EDIT!
+
+
+/* eslint-disable */
+// @ts-nocheck
+
+
+
+const grpc = {};
+grpc.web = require('grpc-web');
+
+
+var gosdn_pnd_pnd_pb = require('../../gosdn/pnd/pnd_pb.js')
+const proto = {};
+proto.gosdn = {};
+proto.gosdn.core = require('./core_pb.js');
+
+/**
+ * @param {string} hostname
+ * @param {?Object} credentials
+ * @param {?Object} options
+ * @constructor
+ * @struct
+ * @final
+ */
+proto.gosdn.core.coreClient =
+    function(hostname, credentials, options) {
+  if (!options) options = {};
+  options['format'] = 'text';
+
+  /**
+   * @private @const {!grpc.web.GrpcWebClientBase} The client
+   */
+  this.client_ = new grpc.web.GrpcWebClientBase(options);
+
+  /**
+   * @private @const {string} The hostname
+   */
+  this.hostname_ = hostname;
+
+};
+
+
+/**
+ * @param {string} hostname
+ * @param {?Object} credentials
+ * @param {?Object} options
+ * @constructor
+ * @struct
+ * @final
+ */
+proto.gosdn.core.corePromiseClient =
+    function(hostname, credentials, options) {
+  if (!options) options = {};
+  options['format'] = 'text';
+
+  /**
+   * @private @const {!grpc.web.GrpcWebClientBase} The client
+   */
+  this.client_ = new grpc.web.GrpcWebClientBase(options);
+
+  /**
+   * @private @const {string} The hostname
+   */
+  this.hostname_ = hostname;
+
+};
+
+
+/**
+ * @const
+ * @type {!grpc.web.MethodDescriptor<
+ *   !proto.gosdn.core.GetRequest,
+ *   !proto.gosdn.core.GetResponse>}
+ */
+const methodDescriptor_core_Get = new grpc.web.MethodDescriptor(
+  '/gosdn.core.core/Get',
+  grpc.web.MethodType.UNARY,
+  proto.gosdn.core.GetRequest,
+  proto.gosdn.core.GetResponse,
+  /**
+   * @param {!proto.gosdn.core.GetRequest} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.gosdn.core.GetResponse.deserializeBinary
+);
+
+
+/**
+ * @const
+ * @type {!grpc.web.AbstractClientBase.MethodInfo<
+ *   !proto.gosdn.core.GetRequest,
+ *   !proto.gosdn.core.GetResponse>}
+ */
+const methodInfo_core_Get = new grpc.web.AbstractClientBase.MethodInfo(
+  proto.gosdn.core.GetResponse,
+  /**
+   * @param {!proto.gosdn.core.GetRequest} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.gosdn.core.GetResponse.deserializeBinary
+);
+
+
+/**
+ * @param {!proto.gosdn.core.GetRequest} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @param {function(?grpc.web.Error, ?proto.gosdn.core.GetResponse)}
+ *     callback The callback function(error, response)
+ * @return {!grpc.web.ClientReadableStream<!proto.gosdn.core.GetResponse>|undefined}
+ *     The XHR Node Readable Stream
+ */
+proto.gosdn.core.coreClient.prototype.get =
+    function(request, metadata, callback) {
+  return this.client_.rpcCall(this.hostname_ +
+      '/gosdn.core.core/Get',
+      request,
+      metadata || {},
+      methodDescriptor_core_Get,
+      callback);
+};
+
+
+/**
+ * @param {!proto.gosdn.core.GetRequest} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @return {!Promise<!proto.gosdn.core.GetResponse>}
+ *     Promise that resolves to the response
+ */
+proto.gosdn.core.corePromiseClient.prototype.get =
+    function(request, metadata) {
+  return this.client_.unaryCall(this.hostname_ +
+      '/gosdn.core.core/Get',
+      request,
+      metadata || {},
+      methodDescriptor_core_Get);
+};
+
+
+/**
+ * @const
+ * @type {!grpc.web.MethodDescriptor<
+ *   !proto.gosdn.core.SetRequest,
+ *   !proto.gosdn.core.SetResponse>}
+ */
+const methodDescriptor_core_Set = new grpc.web.MethodDescriptor(
+  '/gosdn.core.core/Set',
+  grpc.web.MethodType.UNARY,
+  proto.gosdn.core.SetRequest,
+  proto.gosdn.core.SetResponse,
+  /**
+   * @param {!proto.gosdn.core.SetRequest} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.gosdn.core.SetResponse.deserializeBinary
+);
+
+
+/**
+ * @const
+ * @type {!grpc.web.AbstractClientBase.MethodInfo<
+ *   !proto.gosdn.core.SetRequest,
+ *   !proto.gosdn.core.SetResponse>}
+ */
+const methodInfo_core_Set = new grpc.web.AbstractClientBase.MethodInfo(
+  proto.gosdn.core.SetResponse,
+  /**
+   * @param {!proto.gosdn.core.SetRequest} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.gosdn.core.SetResponse.deserializeBinary
+);
+
+
+/**
+ * @param {!proto.gosdn.core.SetRequest} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @param {function(?grpc.web.Error, ?proto.gosdn.core.SetResponse)}
+ *     callback The callback function(error, response)
+ * @return {!grpc.web.ClientReadableStream<!proto.gosdn.core.SetResponse>|undefined}
+ *     The XHR Node Readable Stream
+ */
+proto.gosdn.core.coreClient.prototype.set =
+    function(request, metadata, callback) {
+  return this.client_.rpcCall(this.hostname_ +
+      '/gosdn.core.core/Set',
+      request,
+      metadata || {},
+      methodDescriptor_core_Set,
+      callback);
+};
+
+
+/**
+ * @param {!proto.gosdn.core.SetRequest} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @return {!Promise<!proto.gosdn.core.SetResponse>}
+ *     Promise that resolves to the response
+ */
+proto.gosdn.core.corePromiseClient.prototype.set =
+    function(request, metadata) {
+  return this.client_.unaryCall(this.hostname_ +
+      '/gosdn.core.core/Set',
+      request,
+      metadata || {},
+      methodDescriptor_core_Set);
+};
+
+
+module.exports = proto.gosdn.core;
+
diff --git a/web/gosdn/core/core_pb.d.ts b/web/gosdn/core/core_pb.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..00afa9b62dae349d5b881f90c8330a82d9dc9aa2
--- /dev/null
+++ b/web/gosdn/core/core_pb.d.ts
@@ -0,0 +1,134 @@
+import * as jspb from 'google-protobuf'
+
+import * as gosdn_pnd_pnd_pb from '../../gosdn/pnd/pnd_pb';
+
+
+export class GetRequest extends jspb.Message {
+  getTimestamp(): number;
+  setTimestamp(value: number): GetRequest;
+
+  getAll(): boolean;
+  setAll(value: boolean): GetRequest;
+
+  getPidList(): Array<string>;
+  setPidList(value: Array<string>): GetRequest;
+  clearPidList(): GetRequest;
+  addPid(value: string, index?: number): GetRequest;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): GetRequest.AsObject;
+  static toObject(includeInstance: boolean, msg: GetRequest): GetRequest.AsObject;
+  static serializeBinaryToWriter(message: GetRequest, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): GetRequest;
+  static deserializeBinaryFromReader(message: GetRequest, reader: jspb.BinaryReader): GetRequest;
+}
+
+export namespace GetRequest {
+  export type AsObject = {
+    timestamp: number,
+    all: boolean,
+    pidList: Array<string>,
+  }
+}
+
+export class GetResponse extends jspb.Message {
+  getTimestamp(): number;
+  setTimestamp(value: number): GetResponse;
+
+  getPndList(): Array<gosdn_pnd_pnd_pb.PrincipalNetworkDomain>;
+  setPndList(value: Array<gosdn_pnd_pnd_pb.PrincipalNetworkDomain>): GetResponse;
+  clearPndList(): GetResponse;
+  addPnd(value?: gosdn_pnd_pnd_pb.PrincipalNetworkDomain, index?: number): gosdn_pnd_pnd_pb.PrincipalNetworkDomain;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): GetResponse.AsObject;
+  static toObject(includeInstance: boolean, msg: GetResponse): GetResponse.AsObject;
+  static serializeBinaryToWriter(message: GetResponse, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): GetResponse;
+  static deserializeBinaryFromReader(message: GetResponse, reader: jspb.BinaryReader): GetResponse;
+}
+
+export namespace GetResponse {
+  export type AsObject = {
+    timestamp: number,
+    pndList: Array<gosdn_pnd_pnd_pb.PrincipalNetworkDomain.AsObject>,
+  }
+}
+
+export class SetRequest extends jspb.Message {
+  getTimestamp(): number;
+  setTimestamp(value: number): SetRequest;
+
+  getPndList(): Array<setPnd>;
+  setPndList(value: Array<setPnd>): SetRequest;
+  clearPndList(): SetRequest;
+  addPnd(value?: setPnd, index?: number): setPnd;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): SetRequest.AsObject;
+  static toObject(includeInstance: boolean, msg: SetRequest): SetRequest.AsObject;
+  static serializeBinaryToWriter(message: SetRequest, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): SetRequest;
+  static deserializeBinaryFromReader(message: SetRequest, reader: jspb.BinaryReader): SetRequest;
+}
+
+export namespace SetRequest {
+  export type AsObject = {
+    timestamp: number,
+    pndList: Array<setPnd.AsObject>,
+  }
+}
+
+export class setPnd extends jspb.Message {
+  getName(): string;
+  setName(value: string): setPnd;
+
+  getDescription(): string;
+  setDescription(value: string): setPnd;
+
+  getSbi(): string;
+  setSbi(value: string): setPnd;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): setPnd.AsObject;
+  static toObject(includeInstance: boolean, msg: setPnd): setPnd.AsObject;
+  static serializeBinaryToWriter(message: setPnd, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): setPnd;
+  static deserializeBinaryFromReader(message: setPnd, reader: jspb.BinaryReader): setPnd;
+}
+
+export namespace setPnd {
+  export type AsObject = {
+    name: string,
+    description: string,
+    sbi: string,
+  }
+}
+
+export class SetResponse extends jspb.Message {
+  getTimestamp(): number;
+  setTimestamp(value: number): SetResponse;
+
+  getStatus(): SetResponse.status;
+  setStatus(value: SetResponse.status): SetResponse;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): SetResponse.AsObject;
+  static toObject(includeInstance: boolean, msg: SetResponse): SetResponse.AsObject;
+  static serializeBinaryToWriter(message: SetResponse, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): SetResponse;
+  static deserializeBinaryFromReader(message: SetResponse, reader: jspb.BinaryReader): SetResponse;
+}
+
+export namespace SetResponse {
+  export type AsObject = {
+    timestamp: number,
+    status: SetResponse.status,
+  }
+
+  export enum status { 
+    OK = 0,
+    ERROR = 1,
+  }
+}
+
diff --git a/web/gosdn/core/core_pb.js b/web/gosdn/core/core_pb.js
new file mode 100644
index 0000000000000000000000000000000000000000..c3f83b61c6e3f716777c51004c74942ea67fe57b
--- /dev/null
+++ b/web/gosdn/core/core_pb.js
@@ -0,0 +1,1084 @@
+// source: gosdn/core/core.proto
+/**
+ * @fileoverview
+ * @enhanceable
+ * @suppress {messageConventions} JS Compiler reports an error if a variable or
+ *     field starts with 'MSG_' and isn't a translatable message.
+ * @public
+ */
+// GENERATED CODE -- DO NOT EDIT!
+/* eslint-disable */
+// @ts-nocheck
+
+var jspb = require('google-protobuf');
+var goog = jspb;
+var global = Function('return this')();
+
+var gosdn_pnd_pnd_pb = require('../../gosdn/pnd/pnd_pb.js');
+goog.object.extend(proto, gosdn_pnd_pnd_pb);
+goog.exportSymbol('proto.gosdn.core.GetRequest', null, global);
+goog.exportSymbol('proto.gosdn.core.GetResponse', null, global);
+goog.exportSymbol('proto.gosdn.core.SetRequest', null, global);
+goog.exportSymbol('proto.gosdn.core.SetResponse', null, global);
+goog.exportSymbol('proto.gosdn.core.SetResponse.status', null, global);
+goog.exportSymbol('proto.gosdn.core.setPnd', null, global);
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.core.GetRequest = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.gosdn.core.GetRequest.repeatedFields_, null);
+};
+goog.inherits(proto.gosdn.core.GetRequest, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.core.GetRequest.displayName = 'proto.gosdn.core.GetRequest';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.core.GetResponse = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.gosdn.core.GetResponse.repeatedFields_, null);
+};
+goog.inherits(proto.gosdn.core.GetResponse, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.core.GetResponse.displayName = 'proto.gosdn.core.GetResponse';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.core.SetRequest = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.gosdn.core.SetRequest.repeatedFields_, null);
+};
+goog.inherits(proto.gosdn.core.SetRequest, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.core.SetRequest.displayName = 'proto.gosdn.core.SetRequest';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.core.setPnd = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gosdn.core.setPnd, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.core.setPnd.displayName = 'proto.gosdn.core.setPnd';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.core.SetResponse = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gosdn.core.SetResponse, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.core.SetResponse.displayName = 'proto.gosdn.core.SetResponse';
+}
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.gosdn.core.GetRequest.repeatedFields_ = [3];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.core.GetRequest.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.core.GetRequest.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.core.GetRequest} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.core.GetRequest.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    timestamp: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    all: jspb.Message.getBooleanFieldWithDefault(msg, 2, false),
+    pidList: (f = jspb.Message.getRepeatedField(msg, 3)) == null ? undefined : f
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.core.GetRequest}
+ */
+proto.gosdn.core.GetRequest.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.core.GetRequest;
+  return proto.gosdn.core.GetRequest.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.core.GetRequest} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.core.GetRequest}
+ */
+proto.gosdn.core.GetRequest.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setTimestamp(value);
+      break;
+    case 2:
+      var value = /** @type {boolean} */ (reader.readBool());
+      msg.setAll(value);
+      break;
+    case 3:
+      var value = /** @type {string} */ (reader.readString());
+      msg.addPid(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.core.GetRequest.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.core.GetRequest.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.core.GetRequest} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.core.GetRequest.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getTimestamp();
+  if (f !== 0) {
+    writer.writeInt64(
+      1,
+      f
+    );
+  }
+  f = message.getAll();
+  if (f) {
+    writer.writeBool(
+      2,
+      f
+    );
+  }
+  f = message.getPidList();
+  if (f.length > 0) {
+    writer.writeRepeatedString(
+      3,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional int64 timestamp = 1;
+ * @return {number}
+ */
+proto.gosdn.core.GetRequest.prototype.getTimestamp = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gosdn.core.GetRequest} returns this
+ */
+proto.gosdn.core.GetRequest.prototype.setTimestamp = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional bool all = 2;
+ * @return {boolean}
+ */
+proto.gosdn.core.GetRequest.prototype.getAll = function() {
+  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 2, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.gosdn.core.GetRequest} returns this
+ */
+proto.gosdn.core.GetRequest.prototype.setAll = function(value) {
+  return jspb.Message.setProto3BooleanField(this, 2, value);
+};
+
+
+/**
+ * repeated string pid = 3;
+ * @return {!Array<string>}
+ */
+proto.gosdn.core.GetRequest.prototype.getPidList = function() {
+  return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 3));
+};
+
+
+/**
+ * @param {!Array<string>} value
+ * @return {!proto.gosdn.core.GetRequest} returns this
+ */
+proto.gosdn.core.GetRequest.prototype.setPidList = function(value) {
+  return jspb.Message.setField(this, 3, value || []);
+};
+
+
+/**
+ * @param {string} value
+ * @param {number=} opt_index
+ * @return {!proto.gosdn.core.GetRequest} returns this
+ */
+proto.gosdn.core.GetRequest.prototype.addPid = function(value, opt_index) {
+  return jspb.Message.addToRepeatedField(this, 3, value, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gosdn.core.GetRequest} returns this
+ */
+proto.gosdn.core.GetRequest.prototype.clearPidList = function() {
+  return this.setPidList([]);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.gosdn.core.GetResponse.repeatedFields_ = [2];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.core.GetResponse.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.core.GetResponse.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.core.GetResponse} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.core.GetResponse.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    timestamp: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    pndList: jspb.Message.toObjectList(msg.getPndList(),
+    gosdn_pnd_pnd_pb.PrincipalNetworkDomain.toObject, includeInstance)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.core.GetResponse}
+ */
+proto.gosdn.core.GetResponse.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.core.GetResponse;
+  return proto.gosdn.core.GetResponse.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.core.GetResponse} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.core.GetResponse}
+ */
+proto.gosdn.core.GetResponse.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setTimestamp(value);
+      break;
+    case 2:
+      var value = new gosdn_pnd_pnd_pb.PrincipalNetworkDomain;
+      reader.readMessage(value,gosdn_pnd_pnd_pb.PrincipalNetworkDomain.deserializeBinaryFromReader);
+      msg.addPnd(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.core.GetResponse.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.core.GetResponse.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.core.GetResponse} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.core.GetResponse.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getTimestamp();
+  if (f !== 0) {
+    writer.writeInt64(
+      1,
+      f
+    );
+  }
+  f = message.getPndList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      2,
+      f,
+      gosdn_pnd_pnd_pb.PrincipalNetworkDomain.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * optional int64 timestamp = 1;
+ * @return {number}
+ */
+proto.gosdn.core.GetResponse.prototype.getTimestamp = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gosdn.core.GetResponse} returns this
+ */
+proto.gosdn.core.GetResponse.prototype.setTimestamp = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * repeated gosdn.pnd.PrincipalNetworkDomain pnd = 2;
+ * @return {!Array<!proto.gosdn.pnd.PrincipalNetworkDomain>}
+ */
+proto.gosdn.core.GetResponse.prototype.getPndList = function() {
+  return /** @type{!Array<!proto.gosdn.pnd.PrincipalNetworkDomain>} */ (
+    jspb.Message.getRepeatedWrapperField(this, gosdn_pnd_pnd_pb.PrincipalNetworkDomain, 2));
+};
+
+
+/**
+ * @param {!Array<!proto.gosdn.pnd.PrincipalNetworkDomain>} value
+ * @return {!proto.gosdn.core.GetResponse} returns this
+*/
+proto.gosdn.core.GetResponse.prototype.setPndList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 2, value);
+};
+
+
+/**
+ * @param {!proto.gosdn.pnd.PrincipalNetworkDomain=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gosdn.pnd.PrincipalNetworkDomain}
+ */
+proto.gosdn.core.GetResponse.prototype.addPnd = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.gosdn.pnd.PrincipalNetworkDomain, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gosdn.core.GetResponse} returns this
+ */
+proto.gosdn.core.GetResponse.prototype.clearPndList = function() {
+  return this.setPndList([]);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.gosdn.core.SetRequest.repeatedFields_ = [2];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.core.SetRequest.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.core.SetRequest.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.core.SetRequest} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.core.SetRequest.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    timestamp: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    pndList: jspb.Message.toObjectList(msg.getPndList(),
+    proto.gosdn.core.setPnd.toObject, includeInstance)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.core.SetRequest}
+ */
+proto.gosdn.core.SetRequest.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.core.SetRequest;
+  return proto.gosdn.core.SetRequest.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.core.SetRequest} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.core.SetRequest}
+ */
+proto.gosdn.core.SetRequest.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setTimestamp(value);
+      break;
+    case 2:
+      var value = new proto.gosdn.core.setPnd;
+      reader.readMessage(value,proto.gosdn.core.setPnd.deserializeBinaryFromReader);
+      msg.addPnd(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.core.SetRequest.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.core.SetRequest.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.core.SetRequest} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.core.SetRequest.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getTimestamp();
+  if (f !== 0) {
+    writer.writeInt64(
+      1,
+      f
+    );
+  }
+  f = message.getPndList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      2,
+      f,
+      proto.gosdn.core.setPnd.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * optional int64 timestamp = 1;
+ * @return {number}
+ */
+proto.gosdn.core.SetRequest.prototype.getTimestamp = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gosdn.core.SetRequest} returns this
+ */
+proto.gosdn.core.SetRequest.prototype.setTimestamp = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * repeated setPnd pnd = 2;
+ * @return {!Array<!proto.gosdn.core.setPnd>}
+ */
+proto.gosdn.core.SetRequest.prototype.getPndList = function() {
+  return /** @type{!Array<!proto.gosdn.core.setPnd>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.gosdn.core.setPnd, 2));
+};
+
+
+/**
+ * @param {!Array<!proto.gosdn.core.setPnd>} value
+ * @return {!proto.gosdn.core.SetRequest} returns this
+*/
+proto.gosdn.core.SetRequest.prototype.setPndList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 2, value);
+};
+
+
+/**
+ * @param {!proto.gosdn.core.setPnd=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gosdn.core.setPnd}
+ */
+proto.gosdn.core.SetRequest.prototype.addPnd = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.gosdn.core.setPnd, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gosdn.core.SetRequest} returns this
+ */
+proto.gosdn.core.SetRequest.prototype.clearPndList = function() {
+  return this.setPndList([]);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.core.setPnd.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.core.setPnd.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.core.setPnd} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.core.setPnd.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    name: jspb.Message.getFieldWithDefault(msg, 1, ""),
+    description: jspb.Message.getFieldWithDefault(msg, 2, ""),
+    sbi: jspb.Message.getFieldWithDefault(msg, 3, "")
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.core.setPnd}
+ */
+proto.gosdn.core.setPnd.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.core.setPnd;
+  return proto.gosdn.core.setPnd.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.core.setPnd} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.core.setPnd}
+ */
+proto.gosdn.core.setPnd.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setName(value);
+      break;
+    case 2:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setDescription(value);
+      break;
+    case 3:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setSbi(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.core.setPnd.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.core.setPnd.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.core.setPnd} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.core.setPnd.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getName();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+  f = message.getDescription();
+  if (f.length > 0) {
+    writer.writeString(
+      2,
+      f
+    );
+  }
+  f = message.getSbi();
+  if (f.length > 0) {
+    writer.writeString(
+      3,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional string name = 1;
+ * @return {string}
+ */
+proto.gosdn.core.setPnd.prototype.getName = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.core.setPnd} returns this
+ */
+proto.gosdn.core.setPnd.prototype.setName = function(value) {
+  return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * optional string description = 2;
+ * @return {string}
+ */
+proto.gosdn.core.setPnd.prototype.getDescription = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.core.setPnd} returns this
+ */
+proto.gosdn.core.setPnd.prototype.setDescription = function(value) {
+  return jspb.Message.setProto3StringField(this, 2, value);
+};
+
+
+/**
+ * optional string sbi = 3;
+ * @return {string}
+ */
+proto.gosdn.core.setPnd.prototype.getSbi = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.core.setPnd} returns this
+ */
+proto.gosdn.core.setPnd.prototype.setSbi = function(value) {
+  return jspb.Message.setProto3StringField(this, 3, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.core.SetResponse.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.core.SetResponse.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.core.SetResponse} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.core.SetResponse.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    timestamp: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    status: jspb.Message.getFieldWithDefault(msg, 2, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.core.SetResponse}
+ */
+proto.gosdn.core.SetResponse.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.core.SetResponse;
+  return proto.gosdn.core.SetResponse.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.core.SetResponse} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.core.SetResponse}
+ */
+proto.gosdn.core.SetResponse.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setTimestamp(value);
+      break;
+    case 2:
+      var value = /** @type {!proto.gosdn.core.SetResponse.status} */ (reader.readEnum());
+      msg.setStatus(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.core.SetResponse.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.core.SetResponse.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.core.SetResponse} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.core.SetResponse.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getTimestamp();
+  if (f !== 0) {
+    writer.writeInt64(
+      1,
+      f
+    );
+  }
+  f = message.getStatus();
+  if (f !== 0.0) {
+    writer.writeEnum(
+      2,
+      f
+    );
+  }
+};
+
+
+/**
+ * @enum {number}
+ */
+proto.gosdn.core.SetResponse.status = {
+  OK: 0,
+  ERROR: 1
+};
+
+/**
+ * optional int64 timestamp = 1;
+ * @return {number}
+ */
+proto.gosdn.core.SetResponse.prototype.getTimestamp = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gosdn.core.SetResponse} returns this
+ */
+proto.gosdn.core.SetResponse.prototype.setTimestamp = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional status Status = 2;
+ * @return {!proto.gosdn.core.SetResponse.status}
+ */
+proto.gosdn.core.SetResponse.prototype.getStatus = function() {
+  return /** @type {!proto.gosdn.core.SetResponse.status} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {!proto.gosdn.core.SetResponse.status} value
+ * @return {!proto.gosdn.core.SetResponse} returns this
+ */
+proto.gosdn.core.SetResponse.prototype.setStatus = function(value) {
+  return jspb.Message.setProto3EnumField(this, 2, value);
+};
+
+
+goog.object.extend(exports, proto.gosdn.core);
diff --git a/web/gosdn/csbi/csbi_grpc_web_pb.d.ts b/web/gosdn/csbi/csbi_grpc_web_pb.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..b852cb91827ff86c2cef46a9c3f92333687e0041
--- /dev/null
+++ b/web/gosdn/csbi/csbi_grpc_web_pb.d.ts
@@ -0,0 +1,77 @@
+import * as grpcWeb from 'grpc-web';
+
+import * as gosdn_csbi_csbi_pb from '../../gosdn/csbi/csbi_pb';
+
+
+export class csbiClient {
+  constructor (hostname: string,
+               credentials?: null | { [index: string]: string; },
+               options?: null | { [index: string]: any; });
+
+  get(
+    request: gosdn_csbi_csbi_pb.GetRequest,
+    metadata: grpcWeb.Metadata | undefined,
+    callback: (err: grpcWeb.Error,
+               response: gosdn_csbi_csbi_pb.GetResponse) => void
+  ): grpcWeb.ClientReadableStream<gosdn_csbi_csbi_pb.GetResponse>;
+
+  create(
+    request: gosdn_csbi_csbi_pb.CreateRequest,
+    metadata: grpcWeb.Metadata | undefined,
+    callback: (err: grpcWeb.Error,
+               response: gosdn_csbi_csbi_pb.CreateResponse) => void
+  ): grpcWeb.ClientReadableStream<gosdn_csbi_csbi_pb.CreateResponse>;
+
+  delete(
+    request: gosdn_csbi_csbi_pb.DeleteRequest,
+    metadata: grpcWeb.Metadata | undefined,
+    callback: (err: grpcWeb.Error,
+               response: gosdn_csbi_csbi_pb.DeleteResponse) => void
+  ): grpcWeb.ClientReadableStream<gosdn_csbi_csbi_pb.DeleteResponse>;
+
+  hello(
+    request: gosdn_csbi_csbi_pb.Syn,
+    metadata: grpcWeb.Metadata | undefined,
+    callback: (err: grpcWeb.Error,
+               response: gosdn_csbi_csbi_pb.Ack) => void
+  ): grpcWeb.ClientReadableStream<gosdn_csbi_csbi_pb.Ack>;
+
+  createPlugin(
+    request: gosdn_csbi_csbi_pb.CreateRequest,
+    metadata?: grpcWeb.Metadata
+  ): grpcWeb.ClientReadableStream<gosdn_csbi_csbi_pb.Payload>;
+
+}
+
+export class csbiPromiseClient {
+  constructor (hostname: string,
+               credentials?: null | { [index: string]: string; },
+               options?: null | { [index: string]: any; });
+
+  get(
+    request: gosdn_csbi_csbi_pb.GetRequest,
+    metadata?: grpcWeb.Metadata
+  ): Promise<gosdn_csbi_csbi_pb.GetResponse>;
+
+  create(
+    request: gosdn_csbi_csbi_pb.CreateRequest,
+    metadata?: grpcWeb.Metadata
+  ): Promise<gosdn_csbi_csbi_pb.CreateResponse>;
+
+  delete(
+    request: gosdn_csbi_csbi_pb.DeleteRequest,
+    metadata?: grpcWeb.Metadata
+  ): Promise<gosdn_csbi_csbi_pb.DeleteResponse>;
+
+  hello(
+    request: gosdn_csbi_csbi_pb.Syn,
+    metadata?: grpcWeb.Metadata
+  ): Promise<gosdn_csbi_csbi_pb.Ack>;
+
+  createPlugin(
+    request: gosdn_csbi_csbi_pb.CreateRequest,
+    metadata?: grpcWeb.Metadata
+  ): grpcWeb.ClientReadableStream<gosdn_csbi_csbi_pb.Payload>;
+
+}
+
diff --git a/web/gosdn/csbi/csbi_grpc_web_pb.js b/web/gosdn/csbi/csbi_grpc_web_pb.js
new file mode 100644
index 0000000000000000000000000000000000000000..aa7328c0f0fa78bf473523d2cde797ab5b7e2741
--- /dev/null
+++ b/web/gosdn/csbi/csbi_grpc_web_pb.js
@@ -0,0 +1,472 @@
+/**
+ * @fileoverview gRPC-Web generated client stub for gosdn.csbi
+ * @enhanceable
+ * @public
+ */
+
+// GENERATED CODE -- DO NOT EDIT!
+
+
+/* eslint-disable */
+// @ts-nocheck
+
+
+
+const grpc = {};
+grpc.web = require('grpc-web');
+
+
+var gosdn_transport_transport_pb = require('../../gosdn/transport/transport_pb.js')
+const proto = {};
+proto.gosdn = {};
+proto.gosdn.csbi = require('./csbi_pb.js');
+
+/**
+ * @param {string} hostname
+ * @param {?Object} credentials
+ * @param {?Object} options
+ * @constructor
+ * @struct
+ * @final
+ */
+proto.gosdn.csbi.csbiClient =
+    function(hostname, credentials, options) {
+  if (!options) options = {};
+  options['format'] = 'text';
+
+  /**
+   * @private @const {!grpc.web.GrpcWebClientBase} The client
+   */
+  this.client_ = new grpc.web.GrpcWebClientBase(options);
+
+  /**
+   * @private @const {string} The hostname
+   */
+  this.hostname_ = hostname;
+
+};
+
+
+/**
+ * @param {string} hostname
+ * @param {?Object} credentials
+ * @param {?Object} options
+ * @constructor
+ * @struct
+ * @final
+ */
+proto.gosdn.csbi.csbiPromiseClient =
+    function(hostname, credentials, options) {
+  if (!options) options = {};
+  options['format'] = 'text';
+
+  /**
+   * @private @const {!grpc.web.GrpcWebClientBase} The client
+   */
+  this.client_ = new grpc.web.GrpcWebClientBase(options);
+
+  /**
+   * @private @const {string} The hostname
+   */
+  this.hostname_ = hostname;
+
+};
+
+
+/**
+ * @const
+ * @type {!grpc.web.MethodDescriptor<
+ *   !proto.gosdn.csbi.GetRequest,
+ *   !proto.gosdn.csbi.GetResponse>}
+ */
+const methodDescriptor_csbi_Get = new grpc.web.MethodDescriptor(
+  '/gosdn.csbi.csbi/Get',
+  grpc.web.MethodType.UNARY,
+  proto.gosdn.csbi.GetRequest,
+  proto.gosdn.csbi.GetResponse,
+  /**
+   * @param {!proto.gosdn.csbi.GetRequest} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.gosdn.csbi.GetResponse.deserializeBinary
+);
+
+
+/**
+ * @const
+ * @type {!grpc.web.AbstractClientBase.MethodInfo<
+ *   !proto.gosdn.csbi.GetRequest,
+ *   !proto.gosdn.csbi.GetResponse>}
+ */
+const methodInfo_csbi_Get = new grpc.web.AbstractClientBase.MethodInfo(
+  proto.gosdn.csbi.GetResponse,
+  /**
+   * @param {!proto.gosdn.csbi.GetRequest} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.gosdn.csbi.GetResponse.deserializeBinary
+);
+
+
+/**
+ * @param {!proto.gosdn.csbi.GetRequest} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @param {function(?grpc.web.Error, ?proto.gosdn.csbi.GetResponse)}
+ *     callback The callback function(error, response)
+ * @return {!grpc.web.ClientReadableStream<!proto.gosdn.csbi.GetResponse>|undefined}
+ *     The XHR Node Readable Stream
+ */
+proto.gosdn.csbi.csbiClient.prototype.get =
+    function(request, metadata, callback) {
+  return this.client_.rpcCall(this.hostname_ +
+      '/gosdn.csbi.csbi/Get',
+      request,
+      metadata || {},
+      methodDescriptor_csbi_Get,
+      callback);
+};
+
+
+/**
+ * @param {!proto.gosdn.csbi.GetRequest} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @return {!Promise<!proto.gosdn.csbi.GetResponse>}
+ *     Promise that resolves to the response
+ */
+proto.gosdn.csbi.csbiPromiseClient.prototype.get =
+    function(request, metadata) {
+  return this.client_.unaryCall(this.hostname_ +
+      '/gosdn.csbi.csbi/Get',
+      request,
+      metadata || {},
+      methodDescriptor_csbi_Get);
+};
+
+
+/**
+ * @const
+ * @type {!grpc.web.MethodDescriptor<
+ *   !proto.gosdn.csbi.CreateRequest,
+ *   !proto.gosdn.csbi.CreateResponse>}
+ */
+const methodDescriptor_csbi_Create = new grpc.web.MethodDescriptor(
+  '/gosdn.csbi.csbi/Create',
+  grpc.web.MethodType.UNARY,
+  proto.gosdn.csbi.CreateRequest,
+  proto.gosdn.csbi.CreateResponse,
+  /**
+   * @param {!proto.gosdn.csbi.CreateRequest} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.gosdn.csbi.CreateResponse.deserializeBinary
+);
+
+
+/**
+ * @const
+ * @type {!grpc.web.AbstractClientBase.MethodInfo<
+ *   !proto.gosdn.csbi.CreateRequest,
+ *   !proto.gosdn.csbi.CreateResponse>}
+ */
+const methodInfo_csbi_Create = new grpc.web.AbstractClientBase.MethodInfo(
+  proto.gosdn.csbi.CreateResponse,
+  /**
+   * @param {!proto.gosdn.csbi.CreateRequest} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.gosdn.csbi.CreateResponse.deserializeBinary
+);
+
+
+/**
+ * @param {!proto.gosdn.csbi.CreateRequest} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @param {function(?grpc.web.Error, ?proto.gosdn.csbi.CreateResponse)}
+ *     callback The callback function(error, response)
+ * @return {!grpc.web.ClientReadableStream<!proto.gosdn.csbi.CreateResponse>|undefined}
+ *     The XHR Node Readable Stream
+ */
+proto.gosdn.csbi.csbiClient.prototype.create =
+    function(request, metadata, callback) {
+  return this.client_.rpcCall(this.hostname_ +
+      '/gosdn.csbi.csbi/Create',
+      request,
+      metadata || {},
+      methodDescriptor_csbi_Create,
+      callback);
+};
+
+
+/**
+ * @param {!proto.gosdn.csbi.CreateRequest} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @return {!Promise<!proto.gosdn.csbi.CreateResponse>}
+ *     Promise that resolves to the response
+ */
+proto.gosdn.csbi.csbiPromiseClient.prototype.create =
+    function(request, metadata) {
+  return this.client_.unaryCall(this.hostname_ +
+      '/gosdn.csbi.csbi/Create',
+      request,
+      metadata || {},
+      methodDescriptor_csbi_Create);
+};
+
+
+/**
+ * @const
+ * @type {!grpc.web.MethodDescriptor<
+ *   !proto.gosdn.csbi.DeleteRequest,
+ *   !proto.gosdn.csbi.DeleteResponse>}
+ */
+const methodDescriptor_csbi_Delete = new grpc.web.MethodDescriptor(
+  '/gosdn.csbi.csbi/Delete',
+  grpc.web.MethodType.UNARY,
+  proto.gosdn.csbi.DeleteRequest,
+  proto.gosdn.csbi.DeleteResponse,
+  /**
+   * @param {!proto.gosdn.csbi.DeleteRequest} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.gosdn.csbi.DeleteResponse.deserializeBinary
+);
+
+
+/**
+ * @const
+ * @type {!grpc.web.AbstractClientBase.MethodInfo<
+ *   !proto.gosdn.csbi.DeleteRequest,
+ *   !proto.gosdn.csbi.DeleteResponse>}
+ */
+const methodInfo_csbi_Delete = new grpc.web.AbstractClientBase.MethodInfo(
+  proto.gosdn.csbi.DeleteResponse,
+  /**
+   * @param {!proto.gosdn.csbi.DeleteRequest} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.gosdn.csbi.DeleteResponse.deserializeBinary
+);
+
+
+/**
+ * @param {!proto.gosdn.csbi.DeleteRequest} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @param {function(?grpc.web.Error, ?proto.gosdn.csbi.DeleteResponse)}
+ *     callback The callback function(error, response)
+ * @return {!grpc.web.ClientReadableStream<!proto.gosdn.csbi.DeleteResponse>|undefined}
+ *     The XHR Node Readable Stream
+ */
+proto.gosdn.csbi.csbiClient.prototype.delete =
+    function(request, metadata, callback) {
+  return this.client_.rpcCall(this.hostname_ +
+      '/gosdn.csbi.csbi/Delete',
+      request,
+      metadata || {},
+      methodDescriptor_csbi_Delete,
+      callback);
+};
+
+
+/**
+ * @param {!proto.gosdn.csbi.DeleteRequest} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @return {!Promise<!proto.gosdn.csbi.DeleteResponse>}
+ *     Promise that resolves to the response
+ */
+proto.gosdn.csbi.csbiPromiseClient.prototype.delete =
+    function(request, metadata) {
+  return this.client_.unaryCall(this.hostname_ +
+      '/gosdn.csbi.csbi/Delete',
+      request,
+      metadata || {},
+      methodDescriptor_csbi_Delete);
+};
+
+
+/**
+ * @const
+ * @type {!grpc.web.MethodDescriptor<
+ *   !proto.gosdn.csbi.Syn,
+ *   !proto.gosdn.csbi.Ack>}
+ */
+const methodDescriptor_csbi_Hello = new grpc.web.MethodDescriptor(
+  '/gosdn.csbi.csbi/Hello',
+  grpc.web.MethodType.UNARY,
+  proto.gosdn.csbi.Syn,
+  proto.gosdn.csbi.Ack,
+  /**
+   * @param {!proto.gosdn.csbi.Syn} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.gosdn.csbi.Ack.deserializeBinary
+);
+
+
+/**
+ * @const
+ * @type {!grpc.web.AbstractClientBase.MethodInfo<
+ *   !proto.gosdn.csbi.Syn,
+ *   !proto.gosdn.csbi.Ack>}
+ */
+const methodInfo_csbi_Hello = new grpc.web.AbstractClientBase.MethodInfo(
+  proto.gosdn.csbi.Ack,
+  /**
+   * @param {!proto.gosdn.csbi.Syn} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.gosdn.csbi.Ack.deserializeBinary
+);
+
+
+/**
+ * @param {!proto.gosdn.csbi.Syn} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @param {function(?grpc.web.Error, ?proto.gosdn.csbi.Ack)}
+ *     callback The callback function(error, response)
+ * @return {!grpc.web.ClientReadableStream<!proto.gosdn.csbi.Ack>|undefined}
+ *     The XHR Node Readable Stream
+ */
+proto.gosdn.csbi.csbiClient.prototype.hello =
+    function(request, metadata, callback) {
+  return this.client_.rpcCall(this.hostname_ +
+      '/gosdn.csbi.csbi/Hello',
+      request,
+      metadata || {},
+      methodDescriptor_csbi_Hello,
+      callback);
+};
+
+
+/**
+ * @param {!proto.gosdn.csbi.Syn} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @return {!Promise<!proto.gosdn.csbi.Ack>}
+ *     Promise that resolves to the response
+ */
+proto.gosdn.csbi.csbiPromiseClient.prototype.hello =
+    function(request, metadata) {
+  return this.client_.unaryCall(this.hostname_ +
+      '/gosdn.csbi.csbi/Hello',
+      request,
+      metadata || {},
+      methodDescriptor_csbi_Hello);
+};
+
+
+/**
+ * @const
+ * @type {!grpc.web.MethodDescriptor<
+ *   !proto.gosdn.csbi.CreateRequest,
+ *   !proto.gosdn.csbi.Payload>}
+ */
+const methodDescriptor_csbi_CreatePlugin = new grpc.web.MethodDescriptor(
+  '/gosdn.csbi.csbi/CreatePlugin',
+  grpc.web.MethodType.SERVER_STREAMING,
+  proto.gosdn.csbi.CreateRequest,
+  proto.gosdn.csbi.Payload,
+  /**
+   * @param {!proto.gosdn.csbi.CreateRequest} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.gosdn.csbi.Payload.deserializeBinary
+);
+
+
+/**
+ * @const
+ * @type {!grpc.web.AbstractClientBase.MethodInfo<
+ *   !proto.gosdn.csbi.CreateRequest,
+ *   !proto.gosdn.csbi.Payload>}
+ */
+const methodInfo_csbi_CreatePlugin = new grpc.web.AbstractClientBase.MethodInfo(
+  proto.gosdn.csbi.Payload,
+  /**
+   * @param {!proto.gosdn.csbi.CreateRequest} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.gosdn.csbi.Payload.deserializeBinary
+);
+
+
+/**
+ * @param {!proto.gosdn.csbi.CreateRequest} request The request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @return {!grpc.web.ClientReadableStream<!proto.gosdn.csbi.Payload>}
+ *     The XHR Node Readable Stream
+ */
+proto.gosdn.csbi.csbiClient.prototype.createPlugin =
+    function(request, metadata) {
+  return this.client_.serverStreaming(this.hostname_ +
+      '/gosdn.csbi.csbi/CreatePlugin',
+      request,
+      metadata || {},
+      methodDescriptor_csbi_CreatePlugin);
+};
+
+
+/**
+ * @param {!proto.gosdn.csbi.CreateRequest} request The request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @return {!grpc.web.ClientReadableStream<!proto.gosdn.csbi.Payload>}
+ *     The XHR Node Readable Stream
+ */
+proto.gosdn.csbi.csbiPromiseClient.prototype.createPlugin =
+    function(request, metadata) {
+  return this.client_.serverStreaming(this.hostname_ +
+      '/gosdn.csbi.csbi/CreatePlugin',
+      request,
+      metadata || {},
+      methodDescriptor_csbi_CreatePlugin);
+};
+
+
+module.exports = proto.gosdn.csbi;
+
diff --git a/web/gosdn/csbi/csbi_pb.d.ts b/web/gosdn/csbi/csbi_pb.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..63dac8760432640d9d658d7ec52de76a51e0ae0f
--- /dev/null
+++ b/web/gosdn/csbi/csbi_pb.d.ts
@@ -0,0 +1,259 @@
+import * as jspb from 'google-protobuf'
+
+import * as gosdn_transport_transport_pb from '../../gosdn/transport/transport_pb';
+
+
+export class Syn extends jspb.Message {
+  getTimestamp(): number;
+  setTimestamp(value: number): Syn;
+
+  getId(): string;
+  setId(value: string): Syn;
+
+  getAddress(): string;
+  setAddress(value: string): Syn;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): Syn.AsObject;
+  static toObject(includeInstance: boolean, msg: Syn): Syn.AsObject;
+  static serializeBinaryToWriter(message: Syn, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): Syn;
+  static deserializeBinaryFromReader(message: Syn, reader: jspb.BinaryReader): Syn;
+}
+
+export namespace Syn {
+  export type AsObject = {
+    timestamp: number,
+    id: string,
+    address: string,
+  }
+}
+
+export class Ack extends jspb.Message {
+  getTimestamp(): number;
+  setTimestamp(value: number): Ack;
+
+  getTransportoption(): gosdn_transport_transport_pb.TransportOption | undefined;
+  setTransportoption(value?: gosdn_transport_transport_pb.TransportOption): Ack;
+  hasTransportoption(): boolean;
+  clearTransportoption(): Ack;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): Ack.AsObject;
+  static toObject(includeInstance: boolean, msg: Ack): Ack.AsObject;
+  static serializeBinaryToWriter(message: Ack, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): Ack;
+  static deserializeBinaryFromReader(message: Ack, reader: jspb.BinaryReader): Ack;
+}
+
+export namespace Ack {
+  export type AsObject = {
+    timestamp: number,
+    transportoption?: gosdn_transport_transport_pb.TransportOption.AsObject,
+  }
+}
+
+export class GetRequest extends jspb.Message {
+  getTimestamp(): number;
+  setTimestamp(value: number): GetRequest;
+
+  getAll(): boolean;
+  setAll(value: boolean): GetRequest;
+
+  getDidList(): Array<string>;
+  setDidList(value: Array<string>): GetRequest;
+  clearDidList(): GetRequest;
+  addDid(value: string, index?: number): GetRequest;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): GetRequest.AsObject;
+  static toObject(includeInstance: boolean, msg: GetRequest): GetRequest.AsObject;
+  static serializeBinaryToWriter(message: GetRequest, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): GetRequest;
+  static deserializeBinaryFromReader(message: GetRequest, reader: jspb.BinaryReader): GetRequest;
+}
+
+export namespace GetRequest {
+  export type AsObject = {
+    timestamp: number,
+    all: boolean,
+    didList: Array<string>,
+  }
+}
+
+export class GetResponse extends jspb.Message {
+  getTimestamp(): number;
+  setTimestamp(value: number): GetResponse;
+
+  getDeploymentsList(): Array<Deployment>;
+  setDeploymentsList(value: Array<Deployment>): GetResponse;
+  clearDeploymentsList(): GetResponse;
+  addDeployments(value?: Deployment, index?: number): Deployment;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): GetResponse.AsObject;
+  static toObject(includeInstance: boolean, msg: GetResponse): GetResponse.AsObject;
+  static serializeBinaryToWriter(message: GetResponse, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): GetResponse;
+  static deserializeBinaryFromReader(message: GetResponse, reader: jspb.BinaryReader): GetResponse;
+}
+
+export namespace GetResponse {
+  export type AsObject = {
+    timestamp: number,
+    deploymentsList: Array<Deployment.AsObject>,
+  }
+}
+
+export class Deployment extends jspb.Message {
+  getId(): string;
+  setId(value: string): Deployment;
+
+  getName(): string;
+  setName(value: string): Deployment;
+
+  getState(): State;
+  setState(value: State): Deployment;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): Deployment.AsObject;
+  static toObject(includeInstance: boolean, msg: Deployment): Deployment.AsObject;
+  static serializeBinaryToWriter(message: Deployment, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): Deployment;
+  static deserializeBinaryFromReader(message: Deployment, reader: jspb.BinaryReader): Deployment;
+}
+
+export namespace Deployment {
+  export type AsObject = {
+    id: string,
+    name: string,
+    state: State,
+  }
+}
+
+export class CreateRequest extends jspb.Message {
+  getTimestamp(): number;
+  setTimestamp(value: number): CreateRequest;
+
+  getTransportoptionList(): Array<gosdn_transport_transport_pb.TransportOption>;
+  setTransportoptionList(value: Array<gosdn_transport_transport_pb.TransportOption>): CreateRequest;
+  clearTransportoptionList(): CreateRequest;
+  addTransportoption(value?: gosdn_transport_transport_pb.TransportOption, index?: number): gosdn_transport_transport_pb.TransportOption;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): CreateRequest.AsObject;
+  static toObject(includeInstance: boolean, msg: CreateRequest): CreateRequest.AsObject;
+  static serializeBinaryToWriter(message: CreateRequest, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): CreateRequest;
+  static deserializeBinaryFromReader(message: CreateRequest, reader: jspb.BinaryReader): CreateRequest;
+}
+
+export namespace CreateRequest {
+  export type AsObject = {
+    timestamp: number,
+    transportoptionList: Array<gosdn_transport_transport_pb.TransportOption.AsObject>,
+  }
+}
+
+export class CreateResponse extends jspb.Message {
+  getTimestamp(): number;
+  setTimestamp(value: number): CreateResponse;
+
+  getDeploymentsList(): Array<Deployment>;
+  setDeploymentsList(value: Array<Deployment>): CreateResponse;
+  clearDeploymentsList(): CreateResponse;
+  addDeployments(value?: Deployment, index?: number): Deployment;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): CreateResponse.AsObject;
+  static toObject(includeInstance: boolean, msg: CreateResponse): CreateResponse.AsObject;
+  static serializeBinaryToWriter(message: CreateResponse, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): CreateResponse;
+  static deserializeBinaryFromReader(message: CreateResponse, reader: jspb.BinaryReader): CreateResponse;
+}
+
+export namespace CreateResponse {
+  export type AsObject = {
+    timestamp: number,
+    deploymentsList: Array<Deployment.AsObject>,
+  }
+}
+
+export class Payload extends jspb.Message {
+  getChunk(): Uint8Array | string;
+  getChunk_asU8(): Uint8Array;
+  getChunk_asB64(): string;
+  setChunk(value: Uint8Array | string): Payload;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): Payload.AsObject;
+  static toObject(includeInstance: boolean, msg: Payload): Payload.AsObject;
+  static serializeBinaryToWriter(message: Payload, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): Payload;
+  static deserializeBinaryFromReader(message: Payload, reader: jspb.BinaryReader): Payload;
+}
+
+export namespace Payload {
+  export type AsObject = {
+    chunk: Uint8Array | string,
+  }
+}
+
+export class DeleteRequest extends jspb.Message {
+  getTimestamp(): number;
+  setTimestamp(value: number): DeleteRequest;
+
+  getDidList(): Array<string>;
+  setDidList(value: Array<string>): DeleteRequest;
+  clearDidList(): DeleteRequest;
+  addDid(value: string, index?: number): DeleteRequest;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): DeleteRequest.AsObject;
+  static toObject(includeInstance: boolean, msg: DeleteRequest): DeleteRequest.AsObject;
+  static serializeBinaryToWriter(message: DeleteRequest, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): DeleteRequest;
+  static deserializeBinaryFromReader(message: DeleteRequest, reader: jspb.BinaryReader): DeleteRequest;
+}
+
+export namespace DeleteRequest {
+  export type AsObject = {
+    timestamp: number,
+    didList: Array<string>,
+  }
+}
+
+export class DeleteResponse extends jspb.Message {
+  getTimestamp(): number;
+  setTimestamp(value: number): DeleteResponse;
+
+  getStatus(): DeleteResponse.status;
+  setStatus(value: DeleteResponse.status): DeleteResponse;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): DeleteResponse.AsObject;
+  static toObject(includeInstance: boolean, msg: DeleteResponse): DeleteResponse.AsObject;
+  static serializeBinaryToWriter(message: DeleteResponse, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): DeleteResponse;
+  static deserializeBinaryFromReader(message: DeleteResponse, reader: jspb.BinaryReader): DeleteResponse;
+}
+
+export namespace DeleteResponse {
+  export type AsObject = {
+    timestamp: number,
+    status: DeleteResponse.status,
+  }
+
+  export enum status { 
+    OK = 0,
+    ERROR = 1,
+  }
+}
+
+export enum State { 
+  ANNOUNCED = 0,
+  BUILT = 1,
+  DEPLOYED = 2,
+  RUNNING = 3,
+  DECOMMISSIONED = 4,
+}
diff --git a/web/gosdn/csbi/csbi_pb.js b/web/gosdn/csbi/csbi_pb.js
new file mode 100644
index 0000000000000000000000000000000000000000..cf1bcea56f804786edba9feae1971e26c74d76bc
--- /dev/null
+++ b/web/gosdn/csbi/csbi_pb.js
@@ -0,0 +1,2107 @@
+// source: gosdn/csbi/csbi.proto
+/**
+ * @fileoverview
+ * @enhanceable
+ * @suppress {messageConventions} JS Compiler reports an error if a variable or
+ *     field starts with 'MSG_' and isn't a translatable message.
+ * @public
+ */
+// GENERATED CODE -- DO NOT EDIT!
+/* eslint-disable */
+// @ts-nocheck
+
+var jspb = require('google-protobuf');
+var goog = jspb;
+var global = Function('return this')();
+
+var gosdn_transport_transport_pb = require('../../gosdn/transport/transport_pb.js');
+goog.object.extend(proto, gosdn_transport_transport_pb);
+goog.exportSymbol('proto.gosdn.csbi.Ack', null, global);
+goog.exportSymbol('proto.gosdn.csbi.CreateRequest', null, global);
+goog.exportSymbol('proto.gosdn.csbi.CreateResponse', null, global);
+goog.exportSymbol('proto.gosdn.csbi.DeleteRequest', null, global);
+goog.exportSymbol('proto.gosdn.csbi.DeleteResponse', null, global);
+goog.exportSymbol('proto.gosdn.csbi.DeleteResponse.status', null, global);
+goog.exportSymbol('proto.gosdn.csbi.Deployment', null, global);
+goog.exportSymbol('proto.gosdn.csbi.GetRequest', null, global);
+goog.exportSymbol('proto.gosdn.csbi.GetResponse', null, global);
+goog.exportSymbol('proto.gosdn.csbi.Payload', null, global);
+goog.exportSymbol('proto.gosdn.csbi.State', null, global);
+goog.exportSymbol('proto.gosdn.csbi.Syn', null, global);
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.csbi.Syn = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gosdn.csbi.Syn, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.csbi.Syn.displayName = 'proto.gosdn.csbi.Syn';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.csbi.Ack = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gosdn.csbi.Ack, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.csbi.Ack.displayName = 'proto.gosdn.csbi.Ack';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.csbi.GetRequest = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.gosdn.csbi.GetRequest.repeatedFields_, null);
+};
+goog.inherits(proto.gosdn.csbi.GetRequest, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.csbi.GetRequest.displayName = 'proto.gosdn.csbi.GetRequest';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.csbi.GetResponse = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.gosdn.csbi.GetResponse.repeatedFields_, null);
+};
+goog.inherits(proto.gosdn.csbi.GetResponse, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.csbi.GetResponse.displayName = 'proto.gosdn.csbi.GetResponse';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.csbi.Deployment = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gosdn.csbi.Deployment, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.csbi.Deployment.displayName = 'proto.gosdn.csbi.Deployment';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.csbi.CreateRequest = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.gosdn.csbi.CreateRequest.repeatedFields_, null);
+};
+goog.inherits(proto.gosdn.csbi.CreateRequest, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.csbi.CreateRequest.displayName = 'proto.gosdn.csbi.CreateRequest';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.csbi.CreateResponse = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.gosdn.csbi.CreateResponse.repeatedFields_, null);
+};
+goog.inherits(proto.gosdn.csbi.CreateResponse, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.csbi.CreateResponse.displayName = 'proto.gosdn.csbi.CreateResponse';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.csbi.Payload = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gosdn.csbi.Payload, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.csbi.Payload.displayName = 'proto.gosdn.csbi.Payload';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.csbi.DeleteRequest = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.gosdn.csbi.DeleteRequest.repeatedFields_, null);
+};
+goog.inherits(proto.gosdn.csbi.DeleteRequest, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.csbi.DeleteRequest.displayName = 'proto.gosdn.csbi.DeleteRequest';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.csbi.DeleteResponse = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gosdn.csbi.DeleteResponse, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.csbi.DeleteResponse.displayName = 'proto.gosdn.csbi.DeleteResponse';
+}
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.csbi.Syn.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.csbi.Syn.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.csbi.Syn} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.csbi.Syn.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    timestamp: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    id: jspb.Message.getFieldWithDefault(msg, 2, ""),
+    address: jspb.Message.getFieldWithDefault(msg, 3, "")
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.csbi.Syn}
+ */
+proto.gosdn.csbi.Syn.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.csbi.Syn;
+  return proto.gosdn.csbi.Syn.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.csbi.Syn} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.csbi.Syn}
+ */
+proto.gosdn.csbi.Syn.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setTimestamp(value);
+      break;
+    case 2:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setId(value);
+      break;
+    case 3:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setAddress(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.csbi.Syn.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.csbi.Syn.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.csbi.Syn} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.csbi.Syn.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getTimestamp();
+  if (f !== 0) {
+    writer.writeInt64(
+      1,
+      f
+    );
+  }
+  f = message.getId();
+  if (f.length > 0) {
+    writer.writeString(
+      2,
+      f
+    );
+  }
+  f = message.getAddress();
+  if (f.length > 0) {
+    writer.writeString(
+      3,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional int64 timestamp = 1;
+ * @return {number}
+ */
+proto.gosdn.csbi.Syn.prototype.getTimestamp = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gosdn.csbi.Syn} returns this
+ */
+proto.gosdn.csbi.Syn.prototype.setTimestamp = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional string id = 2;
+ * @return {string}
+ */
+proto.gosdn.csbi.Syn.prototype.getId = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.csbi.Syn} returns this
+ */
+proto.gosdn.csbi.Syn.prototype.setId = function(value) {
+  return jspb.Message.setProto3StringField(this, 2, value);
+};
+
+
+/**
+ * optional string address = 3;
+ * @return {string}
+ */
+proto.gosdn.csbi.Syn.prototype.getAddress = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.csbi.Syn} returns this
+ */
+proto.gosdn.csbi.Syn.prototype.setAddress = function(value) {
+  return jspb.Message.setProto3StringField(this, 3, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.csbi.Ack.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.csbi.Ack.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.csbi.Ack} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.csbi.Ack.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    timestamp: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    transportoption: (f = msg.getTransportoption()) && gosdn_transport_transport_pb.TransportOption.toObject(includeInstance, f)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.csbi.Ack}
+ */
+proto.gosdn.csbi.Ack.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.csbi.Ack;
+  return proto.gosdn.csbi.Ack.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.csbi.Ack} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.csbi.Ack}
+ */
+proto.gosdn.csbi.Ack.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setTimestamp(value);
+      break;
+    case 2:
+      var value = new gosdn_transport_transport_pb.TransportOption;
+      reader.readMessage(value,gosdn_transport_transport_pb.TransportOption.deserializeBinaryFromReader);
+      msg.setTransportoption(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.csbi.Ack.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.csbi.Ack.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.csbi.Ack} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.csbi.Ack.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getTimestamp();
+  if (f !== 0) {
+    writer.writeInt64(
+      1,
+      f
+    );
+  }
+  f = message.getTransportoption();
+  if (f != null) {
+    writer.writeMessage(
+      2,
+      f,
+      gosdn_transport_transport_pb.TransportOption.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * optional int64 timestamp = 1;
+ * @return {number}
+ */
+proto.gosdn.csbi.Ack.prototype.getTimestamp = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gosdn.csbi.Ack} returns this
+ */
+proto.gosdn.csbi.Ack.prototype.setTimestamp = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional gosdn.transport.TransportOption TransportOption = 2;
+ * @return {?proto.gosdn.transport.TransportOption}
+ */
+proto.gosdn.csbi.Ack.prototype.getTransportoption = function() {
+  return /** @type{?proto.gosdn.transport.TransportOption} */ (
+    jspb.Message.getWrapperField(this, gosdn_transport_transport_pb.TransportOption, 2));
+};
+
+
+/**
+ * @param {?proto.gosdn.transport.TransportOption|undefined} value
+ * @return {!proto.gosdn.csbi.Ack} returns this
+*/
+proto.gosdn.csbi.Ack.prototype.setTransportoption = function(value) {
+  return jspb.Message.setWrapperField(this, 2, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gosdn.csbi.Ack} returns this
+ */
+proto.gosdn.csbi.Ack.prototype.clearTransportoption = function() {
+  return this.setTransportoption(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gosdn.csbi.Ack.prototype.hasTransportoption = function() {
+  return jspb.Message.getField(this, 2) != null;
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.gosdn.csbi.GetRequest.repeatedFields_ = [3];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.csbi.GetRequest.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.csbi.GetRequest.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.csbi.GetRequest} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.csbi.GetRequest.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    timestamp: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    all: jspb.Message.getBooleanFieldWithDefault(msg, 2, false),
+    didList: (f = jspb.Message.getRepeatedField(msg, 3)) == null ? undefined : f
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.csbi.GetRequest}
+ */
+proto.gosdn.csbi.GetRequest.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.csbi.GetRequest;
+  return proto.gosdn.csbi.GetRequest.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.csbi.GetRequest} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.csbi.GetRequest}
+ */
+proto.gosdn.csbi.GetRequest.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setTimestamp(value);
+      break;
+    case 2:
+      var value = /** @type {boolean} */ (reader.readBool());
+      msg.setAll(value);
+      break;
+    case 3:
+      var value = /** @type {string} */ (reader.readString());
+      msg.addDid(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.csbi.GetRequest.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.csbi.GetRequest.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.csbi.GetRequest} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.csbi.GetRequest.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getTimestamp();
+  if (f !== 0) {
+    writer.writeInt64(
+      1,
+      f
+    );
+  }
+  f = message.getAll();
+  if (f) {
+    writer.writeBool(
+      2,
+      f
+    );
+  }
+  f = message.getDidList();
+  if (f.length > 0) {
+    writer.writeRepeatedString(
+      3,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional int64 timestamp = 1;
+ * @return {number}
+ */
+proto.gosdn.csbi.GetRequest.prototype.getTimestamp = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gosdn.csbi.GetRequest} returns this
+ */
+proto.gosdn.csbi.GetRequest.prototype.setTimestamp = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional bool all = 2;
+ * @return {boolean}
+ */
+proto.gosdn.csbi.GetRequest.prototype.getAll = function() {
+  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 2, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.gosdn.csbi.GetRequest} returns this
+ */
+proto.gosdn.csbi.GetRequest.prototype.setAll = function(value) {
+  return jspb.Message.setProto3BooleanField(this, 2, value);
+};
+
+
+/**
+ * repeated string did = 3;
+ * @return {!Array<string>}
+ */
+proto.gosdn.csbi.GetRequest.prototype.getDidList = function() {
+  return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 3));
+};
+
+
+/**
+ * @param {!Array<string>} value
+ * @return {!proto.gosdn.csbi.GetRequest} returns this
+ */
+proto.gosdn.csbi.GetRequest.prototype.setDidList = function(value) {
+  return jspb.Message.setField(this, 3, value || []);
+};
+
+
+/**
+ * @param {string} value
+ * @param {number=} opt_index
+ * @return {!proto.gosdn.csbi.GetRequest} returns this
+ */
+proto.gosdn.csbi.GetRequest.prototype.addDid = function(value, opt_index) {
+  return jspb.Message.addToRepeatedField(this, 3, value, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gosdn.csbi.GetRequest} returns this
+ */
+proto.gosdn.csbi.GetRequest.prototype.clearDidList = function() {
+  return this.setDidList([]);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.gosdn.csbi.GetResponse.repeatedFields_ = [2];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.csbi.GetResponse.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.csbi.GetResponse.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.csbi.GetResponse} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.csbi.GetResponse.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    timestamp: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    deploymentsList: jspb.Message.toObjectList(msg.getDeploymentsList(),
+    proto.gosdn.csbi.Deployment.toObject, includeInstance)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.csbi.GetResponse}
+ */
+proto.gosdn.csbi.GetResponse.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.csbi.GetResponse;
+  return proto.gosdn.csbi.GetResponse.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.csbi.GetResponse} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.csbi.GetResponse}
+ */
+proto.gosdn.csbi.GetResponse.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setTimestamp(value);
+      break;
+    case 2:
+      var value = new proto.gosdn.csbi.Deployment;
+      reader.readMessage(value,proto.gosdn.csbi.Deployment.deserializeBinaryFromReader);
+      msg.addDeployments(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.csbi.GetResponse.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.csbi.GetResponse.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.csbi.GetResponse} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.csbi.GetResponse.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getTimestamp();
+  if (f !== 0) {
+    writer.writeInt64(
+      1,
+      f
+    );
+  }
+  f = message.getDeploymentsList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      2,
+      f,
+      proto.gosdn.csbi.Deployment.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * optional int64 timestamp = 1;
+ * @return {number}
+ */
+proto.gosdn.csbi.GetResponse.prototype.getTimestamp = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gosdn.csbi.GetResponse} returns this
+ */
+proto.gosdn.csbi.GetResponse.prototype.setTimestamp = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * repeated Deployment deployments = 2;
+ * @return {!Array<!proto.gosdn.csbi.Deployment>}
+ */
+proto.gosdn.csbi.GetResponse.prototype.getDeploymentsList = function() {
+  return /** @type{!Array<!proto.gosdn.csbi.Deployment>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.gosdn.csbi.Deployment, 2));
+};
+
+
+/**
+ * @param {!Array<!proto.gosdn.csbi.Deployment>} value
+ * @return {!proto.gosdn.csbi.GetResponse} returns this
+*/
+proto.gosdn.csbi.GetResponse.prototype.setDeploymentsList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 2, value);
+};
+
+
+/**
+ * @param {!proto.gosdn.csbi.Deployment=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gosdn.csbi.Deployment}
+ */
+proto.gosdn.csbi.GetResponse.prototype.addDeployments = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.gosdn.csbi.Deployment, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gosdn.csbi.GetResponse} returns this
+ */
+proto.gosdn.csbi.GetResponse.prototype.clearDeploymentsList = function() {
+  return this.setDeploymentsList([]);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.csbi.Deployment.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.csbi.Deployment.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.csbi.Deployment} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.csbi.Deployment.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    id: jspb.Message.getFieldWithDefault(msg, 1, ""),
+    name: jspb.Message.getFieldWithDefault(msg, 2, ""),
+    state: jspb.Message.getFieldWithDefault(msg, 3, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.csbi.Deployment}
+ */
+proto.gosdn.csbi.Deployment.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.csbi.Deployment;
+  return proto.gosdn.csbi.Deployment.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.csbi.Deployment} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.csbi.Deployment}
+ */
+proto.gosdn.csbi.Deployment.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setId(value);
+      break;
+    case 2:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setName(value);
+      break;
+    case 3:
+      var value = /** @type {!proto.gosdn.csbi.State} */ (reader.readEnum());
+      msg.setState(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.csbi.Deployment.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.csbi.Deployment.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.csbi.Deployment} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.csbi.Deployment.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getId();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+  f = message.getName();
+  if (f.length > 0) {
+    writer.writeString(
+      2,
+      f
+    );
+  }
+  f = message.getState();
+  if (f !== 0.0) {
+    writer.writeEnum(
+      3,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional string id = 1;
+ * @return {string}
+ */
+proto.gosdn.csbi.Deployment.prototype.getId = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.csbi.Deployment} returns this
+ */
+proto.gosdn.csbi.Deployment.prototype.setId = function(value) {
+  return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * optional string name = 2;
+ * @return {string}
+ */
+proto.gosdn.csbi.Deployment.prototype.getName = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.csbi.Deployment} returns this
+ */
+proto.gosdn.csbi.Deployment.prototype.setName = function(value) {
+  return jspb.Message.setProto3StringField(this, 2, value);
+};
+
+
+/**
+ * optional State state = 3;
+ * @return {!proto.gosdn.csbi.State}
+ */
+proto.gosdn.csbi.Deployment.prototype.getState = function() {
+  return /** @type {!proto.gosdn.csbi.State} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
+};
+
+
+/**
+ * @param {!proto.gosdn.csbi.State} value
+ * @return {!proto.gosdn.csbi.Deployment} returns this
+ */
+proto.gosdn.csbi.Deployment.prototype.setState = function(value) {
+  return jspb.Message.setProto3EnumField(this, 3, value);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.gosdn.csbi.CreateRequest.repeatedFields_ = [2];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.csbi.CreateRequest.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.csbi.CreateRequest.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.csbi.CreateRequest} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.csbi.CreateRequest.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    timestamp: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    transportoptionList: jspb.Message.toObjectList(msg.getTransportoptionList(),
+    gosdn_transport_transport_pb.TransportOption.toObject, includeInstance)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.csbi.CreateRequest}
+ */
+proto.gosdn.csbi.CreateRequest.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.csbi.CreateRequest;
+  return proto.gosdn.csbi.CreateRequest.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.csbi.CreateRequest} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.csbi.CreateRequest}
+ */
+proto.gosdn.csbi.CreateRequest.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setTimestamp(value);
+      break;
+    case 2:
+      var value = new gosdn_transport_transport_pb.TransportOption;
+      reader.readMessage(value,gosdn_transport_transport_pb.TransportOption.deserializeBinaryFromReader);
+      msg.addTransportoption(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.csbi.CreateRequest.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.csbi.CreateRequest.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.csbi.CreateRequest} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.csbi.CreateRequest.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getTimestamp();
+  if (f !== 0) {
+    writer.writeInt64(
+      1,
+      f
+    );
+  }
+  f = message.getTransportoptionList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      2,
+      f,
+      gosdn_transport_transport_pb.TransportOption.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * optional int64 timestamp = 1;
+ * @return {number}
+ */
+proto.gosdn.csbi.CreateRequest.prototype.getTimestamp = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gosdn.csbi.CreateRequest} returns this
+ */
+proto.gosdn.csbi.CreateRequest.prototype.setTimestamp = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * repeated gosdn.transport.TransportOption TransportOption = 2;
+ * @return {!Array<!proto.gosdn.transport.TransportOption>}
+ */
+proto.gosdn.csbi.CreateRequest.prototype.getTransportoptionList = function() {
+  return /** @type{!Array<!proto.gosdn.transport.TransportOption>} */ (
+    jspb.Message.getRepeatedWrapperField(this, gosdn_transport_transport_pb.TransportOption, 2));
+};
+
+
+/**
+ * @param {!Array<!proto.gosdn.transport.TransportOption>} value
+ * @return {!proto.gosdn.csbi.CreateRequest} returns this
+*/
+proto.gosdn.csbi.CreateRequest.prototype.setTransportoptionList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 2, value);
+};
+
+
+/**
+ * @param {!proto.gosdn.transport.TransportOption=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gosdn.transport.TransportOption}
+ */
+proto.gosdn.csbi.CreateRequest.prototype.addTransportoption = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.gosdn.transport.TransportOption, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gosdn.csbi.CreateRequest} returns this
+ */
+proto.gosdn.csbi.CreateRequest.prototype.clearTransportoptionList = function() {
+  return this.setTransportoptionList([]);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.gosdn.csbi.CreateResponse.repeatedFields_ = [2];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.csbi.CreateResponse.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.csbi.CreateResponse.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.csbi.CreateResponse} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.csbi.CreateResponse.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    timestamp: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    deploymentsList: jspb.Message.toObjectList(msg.getDeploymentsList(),
+    proto.gosdn.csbi.Deployment.toObject, includeInstance)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.csbi.CreateResponse}
+ */
+proto.gosdn.csbi.CreateResponse.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.csbi.CreateResponse;
+  return proto.gosdn.csbi.CreateResponse.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.csbi.CreateResponse} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.csbi.CreateResponse}
+ */
+proto.gosdn.csbi.CreateResponse.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setTimestamp(value);
+      break;
+    case 2:
+      var value = new proto.gosdn.csbi.Deployment;
+      reader.readMessage(value,proto.gosdn.csbi.Deployment.deserializeBinaryFromReader);
+      msg.addDeployments(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.csbi.CreateResponse.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.csbi.CreateResponse.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.csbi.CreateResponse} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.csbi.CreateResponse.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getTimestamp();
+  if (f !== 0) {
+    writer.writeInt64(
+      1,
+      f
+    );
+  }
+  f = message.getDeploymentsList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      2,
+      f,
+      proto.gosdn.csbi.Deployment.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * optional int64 timestamp = 1;
+ * @return {number}
+ */
+proto.gosdn.csbi.CreateResponse.prototype.getTimestamp = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gosdn.csbi.CreateResponse} returns this
+ */
+proto.gosdn.csbi.CreateResponse.prototype.setTimestamp = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * repeated Deployment deployments = 2;
+ * @return {!Array<!proto.gosdn.csbi.Deployment>}
+ */
+proto.gosdn.csbi.CreateResponse.prototype.getDeploymentsList = function() {
+  return /** @type{!Array<!proto.gosdn.csbi.Deployment>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.gosdn.csbi.Deployment, 2));
+};
+
+
+/**
+ * @param {!Array<!proto.gosdn.csbi.Deployment>} value
+ * @return {!proto.gosdn.csbi.CreateResponse} returns this
+*/
+proto.gosdn.csbi.CreateResponse.prototype.setDeploymentsList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 2, value);
+};
+
+
+/**
+ * @param {!proto.gosdn.csbi.Deployment=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gosdn.csbi.Deployment}
+ */
+proto.gosdn.csbi.CreateResponse.prototype.addDeployments = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.gosdn.csbi.Deployment, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gosdn.csbi.CreateResponse} returns this
+ */
+proto.gosdn.csbi.CreateResponse.prototype.clearDeploymentsList = function() {
+  return this.setDeploymentsList([]);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.csbi.Payload.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.csbi.Payload.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.csbi.Payload} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.csbi.Payload.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    chunk: msg.getChunk_asB64()
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.csbi.Payload}
+ */
+proto.gosdn.csbi.Payload.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.csbi.Payload;
+  return proto.gosdn.csbi.Payload.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.csbi.Payload} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.csbi.Payload}
+ */
+proto.gosdn.csbi.Payload.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {!Uint8Array} */ (reader.readBytes());
+      msg.setChunk(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.csbi.Payload.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.csbi.Payload.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.csbi.Payload} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.csbi.Payload.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getChunk_asU8();
+  if (f.length > 0) {
+    writer.writeBytes(
+      1,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional bytes Chunk = 1;
+ * @return {!(string|Uint8Array)}
+ */
+proto.gosdn.csbi.Payload.prototype.getChunk = function() {
+  return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * optional bytes Chunk = 1;
+ * This is a type-conversion wrapper around `getChunk()`
+ * @return {string}
+ */
+proto.gosdn.csbi.Payload.prototype.getChunk_asB64 = function() {
+  return /** @type {string} */ (jspb.Message.bytesAsB64(
+      this.getChunk()));
+};
+
+
+/**
+ * optional bytes Chunk = 1;
+ * Note that Uint8Array is not supported on all browsers.
+ * @see http://caniuse.com/Uint8Array
+ * This is a type-conversion wrapper around `getChunk()`
+ * @return {!Uint8Array}
+ */
+proto.gosdn.csbi.Payload.prototype.getChunk_asU8 = function() {
+  return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(
+      this.getChunk()));
+};
+
+
+/**
+ * @param {!(string|Uint8Array)} value
+ * @return {!proto.gosdn.csbi.Payload} returns this
+ */
+proto.gosdn.csbi.Payload.prototype.setChunk = function(value) {
+  return jspb.Message.setProto3BytesField(this, 1, value);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.gosdn.csbi.DeleteRequest.repeatedFields_ = [2];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.csbi.DeleteRequest.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.csbi.DeleteRequest.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.csbi.DeleteRequest} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.csbi.DeleteRequest.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    timestamp: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    didList: (f = jspb.Message.getRepeatedField(msg, 2)) == null ? undefined : f
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.csbi.DeleteRequest}
+ */
+proto.gosdn.csbi.DeleteRequest.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.csbi.DeleteRequest;
+  return proto.gosdn.csbi.DeleteRequest.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.csbi.DeleteRequest} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.csbi.DeleteRequest}
+ */
+proto.gosdn.csbi.DeleteRequest.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setTimestamp(value);
+      break;
+    case 2:
+      var value = /** @type {string} */ (reader.readString());
+      msg.addDid(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.csbi.DeleteRequest.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.csbi.DeleteRequest.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.csbi.DeleteRequest} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.csbi.DeleteRequest.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getTimestamp();
+  if (f !== 0) {
+    writer.writeInt64(
+      1,
+      f
+    );
+  }
+  f = message.getDidList();
+  if (f.length > 0) {
+    writer.writeRepeatedString(
+      2,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional int64 timestamp = 1;
+ * @return {number}
+ */
+proto.gosdn.csbi.DeleteRequest.prototype.getTimestamp = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gosdn.csbi.DeleteRequest} returns this
+ */
+proto.gosdn.csbi.DeleteRequest.prototype.setTimestamp = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * repeated string did = 2;
+ * @return {!Array<string>}
+ */
+proto.gosdn.csbi.DeleteRequest.prototype.getDidList = function() {
+  return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 2));
+};
+
+
+/**
+ * @param {!Array<string>} value
+ * @return {!proto.gosdn.csbi.DeleteRequest} returns this
+ */
+proto.gosdn.csbi.DeleteRequest.prototype.setDidList = function(value) {
+  return jspb.Message.setField(this, 2, value || []);
+};
+
+
+/**
+ * @param {string} value
+ * @param {number=} opt_index
+ * @return {!proto.gosdn.csbi.DeleteRequest} returns this
+ */
+proto.gosdn.csbi.DeleteRequest.prototype.addDid = function(value, opt_index) {
+  return jspb.Message.addToRepeatedField(this, 2, value, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gosdn.csbi.DeleteRequest} returns this
+ */
+proto.gosdn.csbi.DeleteRequest.prototype.clearDidList = function() {
+  return this.setDidList([]);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.csbi.DeleteResponse.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.csbi.DeleteResponse.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.csbi.DeleteResponse} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.csbi.DeleteResponse.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    timestamp: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    status: jspb.Message.getFieldWithDefault(msg, 2, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.csbi.DeleteResponse}
+ */
+proto.gosdn.csbi.DeleteResponse.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.csbi.DeleteResponse;
+  return proto.gosdn.csbi.DeleteResponse.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.csbi.DeleteResponse} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.csbi.DeleteResponse}
+ */
+proto.gosdn.csbi.DeleteResponse.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setTimestamp(value);
+      break;
+    case 2:
+      var value = /** @type {!proto.gosdn.csbi.DeleteResponse.status} */ (reader.readEnum());
+      msg.setStatus(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.csbi.DeleteResponse.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.csbi.DeleteResponse.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.csbi.DeleteResponse} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.csbi.DeleteResponse.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getTimestamp();
+  if (f !== 0) {
+    writer.writeInt64(
+      1,
+      f
+    );
+  }
+  f = message.getStatus();
+  if (f !== 0.0) {
+    writer.writeEnum(
+      2,
+      f
+    );
+  }
+};
+
+
+/**
+ * @enum {number}
+ */
+proto.gosdn.csbi.DeleteResponse.status = {
+  OK: 0,
+  ERROR: 1
+};
+
+/**
+ * optional int64 timestamp = 1;
+ * @return {number}
+ */
+proto.gosdn.csbi.DeleteResponse.prototype.getTimestamp = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gosdn.csbi.DeleteResponse} returns this
+ */
+proto.gosdn.csbi.DeleteResponse.prototype.setTimestamp = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional status Status = 2;
+ * @return {!proto.gosdn.csbi.DeleteResponse.status}
+ */
+proto.gosdn.csbi.DeleteResponse.prototype.getStatus = function() {
+  return /** @type {!proto.gosdn.csbi.DeleteResponse.status} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {!proto.gosdn.csbi.DeleteResponse.status} value
+ * @return {!proto.gosdn.csbi.DeleteResponse} returns this
+ */
+proto.gosdn.csbi.DeleteResponse.prototype.setStatus = function(value) {
+  return jspb.Message.setProto3EnumField(this, 2, value);
+};
+
+
+/**
+ * @enum {number}
+ */
+proto.gosdn.csbi.State = {
+  ANNOUNCED: 0,
+  BUILT: 1,
+  DEPLOYED: 2,
+  RUNNING: 3,
+  DECOMMISSIONED: 4
+};
+
+goog.object.extend(exports, proto.gosdn.csbi);
diff --git a/web/gosdn/pnd/pnd_grpc_web_pb.d.ts b/web/gosdn/pnd/pnd_grpc_web_pb.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..c017db86776767e825e01f27f29d21b697d8e8e5
--- /dev/null
+++ b/web/gosdn/pnd/pnd_grpc_web_pb.d.ts
@@ -0,0 +1,55 @@
+import * as grpcWeb from 'grpc-web';
+
+import * as gosdn_pnd_pnd_pb from '../../gosdn/pnd/pnd_pb';
+
+
+export class pndClient {
+  constructor (hostname: string,
+               credentials?: null | { [index: string]: string; },
+               options?: null | { [index: string]: any; });
+
+  get(
+    request: gosdn_pnd_pnd_pb.GetRequest,
+    metadata: grpcWeb.Metadata | undefined,
+    callback: (err: grpcWeb.Error,
+               response: gosdn_pnd_pnd_pb.GetResponse) => void
+  ): grpcWeb.ClientReadableStream<gosdn_pnd_pnd_pb.GetResponse>;
+
+  set(
+    request: gosdn_pnd_pnd_pb.SetRequest,
+    metadata: grpcWeb.Metadata | undefined,
+    callback: (err: grpcWeb.Error,
+               response: gosdn_pnd_pnd_pb.SetResponse) => void
+  ): grpcWeb.ClientReadableStream<gosdn_pnd_pnd_pb.SetResponse>;
+
+  delete(
+    request: gosdn_pnd_pnd_pb.DeleteRequest,
+    metadata: grpcWeb.Metadata | undefined,
+    callback: (err: grpcWeb.Error,
+               response: gosdn_pnd_pnd_pb.DeleteResponse) => void
+  ): grpcWeb.ClientReadableStream<gosdn_pnd_pnd_pb.DeleteResponse>;
+
+}
+
+export class pndPromiseClient {
+  constructor (hostname: string,
+               credentials?: null | { [index: string]: string; },
+               options?: null | { [index: string]: any; });
+
+  get(
+    request: gosdn_pnd_pnd_pb.GetRequest,
+    metadata?: grpcWeb.Metadata
+  ): Promise<gosdn_pnd_pnd_pb.GetResponse>;
+
+  set(
+    request: gosdn_pnd_pnd_pb.SetRequest,
+    metadata?: grpcWeb.Metadata
+  ): Promise<gosdn_pnd_pnd_pb.SetResponse>;
+
+  delete(
+    request: gosdn_pnd_pnd_pb.DeleteRequest,
+    metadata?: grpcWeb.Metadata
+  ): Promise<gosdn_pnd_pnd_pb.DeleteResponse>;
+
+}
+
diff --git a/web/gosdn/pnd/pnd_grpc_web_pb.js b/web/gosdn/pnd/pnd_grpc_web_pb.js
new file mode 100644
index 0000000000000000000000000000000000000000..f9b3964448d2e8431cf4161db2fb0378bbe4ef76
--- /dev/null
+++ b/web/gosdn/pnd/pnd_grpc_web_pb.js
@@ -0,0 +1,323 @@
+/**
+ * @fileoverview gRPC-Web generated client stub for gosdn.pnd
+ * @enhanceable
+ * @public
+ */
+
+// GENERATED CODE -- DO NOT EDIT!
+
+
+/* eslint-disable */
+// @ts-nocheck
+
+
+
+const grpc = {};
+grpc.web = require('grpc-web');
+
+
+var google_protobuf_descriptor_pb = require('google-protobuf/google/protobuf/descriptor_pb.js')
+
+var github_com_openconfig_gnmi_proto_gnmi_gnmi_pb = require('../../github.com/openconfig/gnmi/proto/gnmi/gnmi_pb.js')
+
+var gosdn_transport_transport_pb = require('../../gosdn/transport/transport_pb.js')
+
+var gosdn_southbound_southbound_pb = require('../../gosdn/southbound/southbound_pb.js')
+const proto = {};
+proto.gosdn = {};
+proto.gosdn.pnd = require('./pnd_pb.js');
+
+/**
+ * @param {string} hostname
+ * @param {?Object} credentials
+ * @param {?Object} options
+ * @constructor
+ * @struct
+ * @final
+ */
+proto.gosdn.pnd.pndClient =
+    function(hostname, credentials, options) {
+  if (!options) options = {};
+  options['format'] = 'text';
+
+  /**
+   * @private @const {!grpc.web.GrpcWebClientBase} The client
+   */
+  this.client_ = new grpc.web.GrpcWebClientBase(options);
+
+  /**
+   * @private @const {string} The hostname
+   */
+  this.hostname_ = hostname;
+
+};
+
+
+/**
+ * @param {string} hostname
+ * @param {?Object} credentials
+ * @param {?Object} options
+ * @constructor
+ * @struct
+ * @final
+ */
+proto.gosdn.pnd.pndPromiseClient =
+    function(hostname, credentials, options) {
+  if (!options) options = {};
+  options['format'] = 'text';
+
+  /**
+   * @private @const {!grpc.web.GrpcWebClientBase} The client
+   */
+  this.client_ = new grpc.web.GrpcWebClientBase(options);
+
+  /**
+   * @private @const {string} The hostname
+   */
+  this.hostname_ = hostname;
+
+};
+
+
+/**
+ * @const
+ * @type {!grpc.web.MethodDescriptor<
+ *   !proto.gosdn.pnd.GetRequest,
+ *   !proto.gosdn.pnd.GetResponse>}
+ */
+const methodDescriptor_pnd_Get = new grpc.web.MethodDescriptor(
+  '/gosdn.pnd.pnd/Get',
+  grpc.web.MethodType.UNARY,
+  proto.gosdn.pnd.GetRequest,
+  proto.gosdn.pnd.GetResponse,
+  /**
+   * @param {!proto.gosdn.pnd.GetRequest} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.gosdn.pnd.GetResponse.deserializeBinary
+);
+
+
+/**
+ * @const
+ * @type {!grpc.web.AbstractClientBase.MethodInfo<
+ *   !proto.gosdn.pnd.GetRequest,
+ *   !proto.gosdn.pnd.GetResponse>}
+ */
+const methodInfo_pnd_Get = new grpc.web.AbstractClientBase.MethodInfo(
+  proto.gosdn.pnd.GetResponse,
+  /**
+   * @param {!proto.gosdn.pnd.GetRequest} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.gosdn.pnd.GetResponse.deserializeBinary
+);
+
+
+/**
+ * @param {!proto.gosdn.pnd.GetRequest} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @param {function(?grpc.web.Error, ?proto.gosdn.pnd.GetResponse)}
+ *     callback The callback function(error, response)
+ * @return {!grpc.web.ClientReadableStream<!proto.gosdn.pnd.GetResponse>|undefined}
+ *     The XHR Node Readable Stream
+ */
+proto.gosdn.pnd.pndClient.prototype.get =
+    function(request, metadata, callback) {
+  return this.client_.rpcCall(this.hostname_ +
+      '/gosdn.pnd.pnd/Get',
+      request,
+      metadata || {},
+      methodDescriptor_pnd_Get,
+      callback);
+};
+
+
+/**
+ * @param {!proto.gosdn.pnd.GetRequest} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @return {!Promise<!proto.gosdn.pnd.GetResponse>}
+ *     Promise that resolves to the response
+ */
+proto.gosdn.pnd.pndPromiseClient.prototype.get =
+    function(request, metadata) {
+  return this.client_.unaryCall(this.hostname_ +
+      '/gosdn.pnd.pnd/Get',
+      request,
+      metadata || {},
+      methodDescriptor_pnd_Get);
+};
+
+
+/**
+ * @const
+ * @type {!grpc.web.MethodDescriptor<
+ *   !proto.gosdn.pnd.SetRequest,
+ *   !proto.gosdn.pnd.SetResponse>}
+ */
+const methodDescriptor_pnd_Set = new grpc.web.MethodDescriptor(
+  '/gosdn.pnd.pnd/Set',
+  grpc.web.MethodType.UNARY,
+  proto.gosdn.pnd.SetRequest,
+  proto.gosdn.pnd.SetResponse,
+  /**
+   * @param {!proto.gosdn.pnd.SetRequest} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.gosdn.pnd.SetResponse.deserializeBinary
+);
+
+
+/**
+ * @const
+ * @type {!grpc.web.AbstractClientBase.MethodInfo<
+ *   !proto.gosdn.pnd.SetRequest,
+ *   !proto.gosdn.pnd.SetResponse>}
+ */
+const methodInfo_pnd_Set = new grpc.web.AbstractClientBase.MethodInfo(
+  proto.gosdn.pnd.SetResponse,
+  /**
+   * @param {!proto.gosdn.pnd.SetRequest} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.gosdn.pnd.SetResponse.deserializeBinary
+);
+
+
+/**
+ * @param {!proto.gosdn.pnd.SetRequest} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @param {function(?grpc.web.Error, ?proto.gosdn.pnd.SetResponse)}
+ *     callback The callback function(error, response)
+ * @return {!grpc.web.ClientReadableStream<!proto.gosdn.pnd.SetResponse>|undefined}
+ *     The XHR Node Readable Stream
+ */
+proto.gosdn.pnd.pndClient.prototype.set =
+    function(request, metadata, callback) {
+  return this.client_.rpcCall(this.hostname_ +
+      '/gosdn.pnd.pnd/Set',
+      request,
+      metadata || {},
+      methodDescriptor_pnd_Set,
+      callback);
+};
+
+
+/**
+ * @param {!proto.gosdn.pnd.SetRequest} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @return {!Promise<!proto.gosdn.pnd.SetResponse>}
+ *     Promise that resolves to the response
+ */
+proto.gosdn.pnd.pndPromiseClient.prototype.set =
+    function(request, metadata) {
+  return this.client_.unaryCall(this.hostname_ +
+      '/gosdn.pnd.pnd/Set',
+      request,
+      metadata || {},
+      methodDescriptor_pnd_Set);
+};
+
+
+/**
+ * @const
+ * @type {!grpc.web.MethodDescriptor<
+ *   !proto.gosdn.pnd.DeleteRequest,
+ *   !proto.gosdn.pnd.DeleteResponse>}
+ */
+const methodDescriptor_pnd_Delete = new grpc.web.MethodDescriptor(
+  '/gosdn.pnd.pnd/Delete',
+  grpc.web.MethodType.UNARY,
+  proto.gosdn.pnd.DeleteRequest,
+  proto.gosdn.pnd.DeleteResponse,
+  /**
+   * @param {!proto.gosdn.pnd.DeleteRequest} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.gosdn.pnd.DeleteResponse.deserializeBinary
+);
+
+
+/**
+ * @const
+ * @type {!grpc.web.AbstractClientBase.MethodInfo<
+ *   !proto.gosdn.pnd.DeleteRequest,
+ *   !proto.gosdn.pnd.DeleteResponse>}
+ */
+const methodInfo_pnd_Delete = new grpc.web.AbstractClientBase.MethodInfo(
+  proto.gosdn.pnd.DeleteResponse,
+  /**
+   * @param {!proto.gosdn.pnd.DeleteRequest} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.gosdn.pnd.DeleteResponse.deserializeBinary
+);
+
+
+/**
+ * @param {!proto.gosdn.pnd.DeleteRequest} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @param {function(?grpc.web.Error, ?proto.gosdn.pnd.DeleteResponse)}
+ *     callback The callback function(error, response)
+ * @return {!grpc.web.ClientReadableStream<!proto.gosdn.pnd.DeleteResponse>|undefined}
+ *     The XHR Node Readable Stream
+ */
+proto.gosdn.pnd.pndClient.prototype.delete =
+    function(request, metadata, callback) {
+  return this.client_.rpcCall(this.hostname_ +
+      '/gosdn.pnd.pnd/Delete',
+      request,
+      metadata || {},
+      methodDescriptor_pnd_Delete,
+      callback);
+};
+
+
+/**
+ * @param {!proto.gosdn.pnd.DeleteRequest} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @return {!Promise<!proto.gosdn.pnd.DeleteResponse>}
+ *     Promise that resolves to the response
+ */
+proto.gosdn.pnd.pndPromiseClient.prototype.delete =
+    function(request, metadata) {
+  return this.client_.unaryCall(this.hostname_ +
+      '/gosdn.pnd.pnd/Delete',
+      request,
+      metadata || {},
+      methodDescriptor_pnd_Delete);
+};
+
+
+module.exports = proto.gosdn.pnd;
+
diff --git a/web/gosdn/pnd/pnd_pb.d.ts b/web/gosdn/pnd/pnd_pb.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..8dff10942e74e95650451a614c78a64051565398
--- /dev/null
+++ b/web/gosdn/pnd/pnd_pb.d.ts
@@ -0,0 +1,585 @@
+import * as jspb from 'google-protobuf'
+
+import * as google_protobuf_descriptor_pb from 'google-protobuf/google/protobuf/descriptor_pb';
+import * as github_com_openconfig_gnmi_proto_gnmi_gnmi_pb from '../../github.com/openconfig/gnmi/proto/gnmi/gnmi_pb';
+import * as gosdn_transport_transport_pb from '../../gosdn/transport/transport_pb';
+import * as gosdn_southbound_southbound_pb from '../../gosdn/southbound/southbound_pb';
+
+
+export class GetRequest extends jspb.Message {
+  getTimestamp(): number;
+  setTimestamp(value: number): GetRequest;
+
+  getPnd(): getPnd | undefined;
+  setPnd(value?: getPnd): GetRequest;
+  hasPnd(): boolean;
+  clearPnd(): GetRequest;
+
+  getOnd(): getOnd | undefined;
+  setOnd(value?: getOnd): GetRequest;
+  hasOnd(): boolean;
+  clearOnd(): GetRequest;
+
+  getSbi(): getSbi | undefined;
+  setSbi(value?: getSbi): GetRequest;
+  hasSbi(): boolean;
+  clearSbi(): GetRequest;
+
+  getChange(): getChange | undefined;
+  setChange(value?: getChange): GetRequest;
+  hasChange(): boolean;
+  clearChange(): GetRequest;
+
+  getPath(): getPath | undefined;
+  setPath(value?: getPath): GetRequest;
+  hasPath(): boolean;
+  clearPath(): GetRequest;
+
+  getPid(): string;
+  setPid(value: string): GetRequest;
+
+  getRequestCase(): GetRequest.RequestCase;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): GetRequest.AsObject;
+  static toObject(includeInstance: boolean, msg: GetRequest): GetRequest.AsObject;
+  static serializeBinaryToWriter(message: GetRequest, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): GetRequest;
+  static deserializeBinaryFromReader(message: GetRequest, reader: jspb.BinaryReader): GetRequest;
+}
+
+export namespace GetRequest {
+  export type AsObject = {
+    timestamp: number,
+    pnd?: getPnd.AsObject,
+    ond?: getOnd.AsObject,
+    sbi?: getSbi.AsObject,
+    change?: getChange.AsObject,
+    path?: getPath.AsObject,
+    pid: string,
+  }
+
+  export enum RequestCase { 
+    REQUEST_NOT_SET = 0,
+    PND = 2,
+    OND = 3,
+    SBI = 4,
+    CHANGE = 5,
+    PATH = 7,
+  }
+}
+
+export class getPnd extends jspb.Message {
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): getPnd.AsObject;
+  static toObject(includeInstance: boolean, msg: getPnd): getPnd.AsObject;
+  static serializeBinaryToWriter(message: getPnd, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): getPnd;
+  static deserializeBinaryFromReader(message: getPnd, reader: jspb.BinaryReader): getPnd;
+}
+
+export namespace getPnd {
+  export type AsObject = {
+  }
+}
+
+export class getOnd extends jspb.Message {
+  getAll(): boolean;
+  setAll(value: boolean): getOnd;
+
+  getDidList(): Array<string>;
+  setDidList(value: Array<string>): getOnd;
+  clearDidList(): getOnd;
+  addDid(value: string, index?: number): getOnd;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): getOnd.AsObject;
+  static toObject(includeInstance: boolean, msg: getOnd): getOnd.AsObject;
+  static serializeBinaryToWriter(message: getOnd, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): getOnd;
+  static deserializeBinaryFromReader(message: getOnd, reader: jspb.BinaryReader): getOnd;
+}
+
+export namespace getOnd {
+  export type AsObject = {
+    all: boolean,
+    didList: Array<string>,
+  }
+}
+
+export class getSbi extends jspb.Message {
+  getAll(): boolean;
+  setAll(value: boolean): getSbi;
+
+  getSidList(): Array<string>;
+  setSidList(value: Array<string>): getSbi;
+  clearSidList(): getSbi;
+  addSid(value: string, index?: number): getSbi;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): getSbi.AsObject;
+  static toObject(includeInstance: boolean, msg: getSbi): getSbi.AsObject;
+  static serializeBinaryToWriter(message: getSbi, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): getSbi;
+  static deserializeBinaryFromReader(message: getSbi, reader: jspb.BinaryReader): getSbi;
+}
+
+export namespace getSbi {
+  export type AsObject = {
+    all: boolean,
+    sidList: Array<string>,
+  }
+}
+
+export class getChange extends jspb.Message {
+  getAll(): boolean;
+  setAll(value: boolean): getChange;
+
+  getCuidList(): Array<string>;
+  setCuidList(value: Array<string>): getChange;
+  clearCuidList(): getChange;
+  addCuid(value: string, index?: number): getChange;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): getChange.AsObject;
+  static toObject(includeInstance: boolean, msg: getChange): getChange.AsObject;
+  static serializeBinaryToWriter(message: getChange, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): getChange;
+  static deserializeBinaryFromReader(message: getChange, reader: jspb.BinaryReader): getChange;
+}
+
+export namespace getChange {
+  export type AsObject = {
+    all: boolean,
+    cuidList: Array<string>,
+  }
+}
+
+export class getPath extends jspb.Message {
+  getDid(): string;
+  setDid(value: string): getPath;
+
+  getPath(): string;
+  setPath(value: string): getPath;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): getPath.AsObject;
+  static toObject(includeInstance: boolean, msg: getPath): getPath.AsObject;
+  static serializeBinaryToWriter(message: getPath, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): getPath;
+  static deserializeBinaryFromReader(message: getPath, reader: jspb.BinaryReader): getPath;
+}
+
+export namespace getPath {
+  export type AsObject = {
+    did: string,
+    path: string,
+  }
+}
+
+export class GetResponse extends jspb.Message {
+  getTimestamp(): number;
+  setTimestamp(value: number): GetResponse;
+
+  getPnd(): PrincipalNetworkDomain | undefined;
+  setPnd(value?: PrincipalNetworkDomain): GetResponse;
+  hasPnd(): boolean;
+  clearPnd(): GetResponse;
+
+  getOndList(): Array<OrchestratedNetworkingDevice>;
+  setOndList(value: Array<OrchestratedNetworkingDevice>): GetResponse;
+  clearOndList(): GetResponse;
+  addOnd(value?: OrchestratedNetworkingDevice, index?: number): OrchestratedNetworkingDevice;
+
+  getSbiList(): Array<gosdn_southbound_southbound_pb.SouthboundInterface>;
+  setSbiList(value: Array<gosdn_southbound_southbound_pb.SouthboundInterface>): GetResponse;
+  clearSbiList(): GetResponse;
+  addSbi(value?: gosdn_southbound_southbound_pb.SouthboundInterface, index?: number): gosdn_southbound_southbound_pb.SouthboundInterface;
+
+  getChangeList(): Array<Change>;
+  setChangeList(value: Array<Change>): GetResponse;
+  clearChangeList(): GetResponse;
+  addChange(value?: Change, index?: number): Change;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): GetResponse.AsObject;
+  static toObject(includeInstance: boolean, msg: GetResponse): GetResponse.AsObject;
+  static serializeBinaryToWriter(message: GetResponse, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): GetResponse;
+  static deserializeBinaryFromReader(message: GetResponse, reader: jspb.BinaryReader): GetResponse;
+}
+
+export namespace GetResponse {
+  export type AsObject = {
+    timestamp: number,
+    pnd?: PrincipalNetworkDomain.AsObject,
+    ondList: Array<OrchestratedNetworkingDevice.AsObject>,
+    sbiList: Array<gosdn_southbound_southbound_pb.SouthboundInterface.AsObject>,
+    changeList: Array<Change.AsObject>,
+  }
+}
+
+export class PrincipalNetworkDomain extends jspb.Message {
+  getId(): string;
+  setId(value: string): PrincipalNetworkDomain;
+
+  getName(): string;
+  setName(value: string): PrincipalNetworkDomain;
+
+  getDescription(): string;
+  setDescription(value: string): PrincipalNetworkDomain;
+
+  getOndList(): Array<OrchestratedNetworkingDevice>;
+  setOndList(value: Array<OrchestratedNetworkingDevice>): PrincipalNetworkDomain;
+  clearOndList(): PrincipalNetworkDomain;
+  addOnd(value?: OrchestratedNetworkingDevice, index?: number): OrchestratedNetworkingDevice;
+
+  getSbiList(): Array<gosdn_southbound_southbound_pb.SouthboundInterface>;
+  setSbiList(value: Array<gosdn_southbound_southbound_pb.SouthboundInterface>): PrincipalNetworkDomain;
+  clearSbiList(): PrincipalNetworkDomain;
+  addSbi(value?: gosdn_southbound_southbound_pb.SouthboundInterface, index?: number): gosdn_southbound_southbound_pb.SouthboundInterface;
+
+  getChangeList(): Array<Change>;
+  setChangeList(value: Array<Change>): PrincipalNetworkDomain;
+  clearChangeList(): PrincipalNetworkDomain;
+  addChange(value?: Change, index?: number): Change;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): PrincipalNetworkDomain.AsObject;
+  static toObject(includeInstance: boolean, msg: PrincipalNetworkDomain): PrincipalNetworkDomain.AsObject;
+  static serializeBinaryToWriter(message: PrincipalNetworkDomain, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): PrincipalNetworkDomain;
+  static deserializeBinaryFromReader(message: PrincipalNetworkDomain, reader: jspb.BinaryReader): PrincipalNetworkDomain;
+}
+
+export namespace PrincipalNetworkDomain {
+  export type AsObject = {
+    id: string,
+    name: string,
+    description: string,
+    ondList: Array<OrchestratedNetworkingDevice.AsObject>,
+    sbiList: Array<gosdn_southbound_southbound_pb.SouthboundInterface.AsObject>,
+    changeList: Array<Change.AsObject>,
+  }
+}
+
+export class OrchestratedNetworkingDevice extends jspb.Message {
+  getId(): string;
+  setId(value: string): OrchestratedNetworkingDevice;
+
+  getName(): string;
+  setName(value: string): OrchestratedNetworkingDevice;
+
+  getDeviceList(): Array<github_com_openconfig_gnmi_proto_gnmi_gnmi_pb.Notification>;
+  setDeviceList(value: Array<github_com_openconfig_gnmi_proto_gnmi_gnmi_pb.Notification>): OrchestratedNetworkingDevice;
+  clearDeviceList(): OrchestratedNetworkingDevice;
+  addDevice(value?: github_com_openconfig_gnmi_proto_gnmi_gnmi_pb.Notification, index?: number): github_com_openconfig_gnmi_proto_gnmi_gnmi_pb.Notification;
+
+  getSbi(): gosdn_southbound_southbound_pb.SouthboundInterface | undefined;
+  setSbi(value?: gosdn_southbound_southbound_pb.SouthboundInterface): OrchestratedNetworkingDevice;
+  hasSbi(): boolean;
+  clearSbi(): OrchestratedNetworkingDevice;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): OrchestratedNetworkingDevice.AsObject;
+  static toObject(includeInstance: boolean, msg: OrchestratedNetworkingDevice): OrchestratedNetworkingDevice.AsObject;
+  static serializeBinaryToWriter(message: OrchestratedNetworkingDevice, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): OrchestratedNetworkingDevice;
+  static deserializeBinaryFromReader(message: OrchestratedNetworkingDevice, reader: jspb.BinaryReader): OrchestratedNetworkingDevice;
+}
+
+export namespace OrchestratedNetworkingDevice {
+  export type AsObject = {
+    id: string,
+    name: string,
+    deviceList: Array<github_com_openconfig_gnmi_proto_gnmi_gnmi_pb.Notification.AsObject>,
+    sbi?: gosdn_southbound_southbound_pb.SouthboundInterface.AsObject,
+  }
+}
+
+export class Change extends jspb.Message {
+  getId(): string;
+  setId(value: string): Change;
+
+  getAge(): number;
+  setAge(value: number): Change;
+
+  getState(): Change.State;
+  setState(value: Change.State): Change;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): Change.AsObject;
+  static toObject(includeInstance: boolean, msg: Change): Change.AsObject;
+  static serializeBinaryToWriter(message: Change, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): Change;
+  static deserializeBinaryFromReader(message: Change, reader: jspb.BinaryReader): Change;
+}
+
+export namespace Change {
+  export type AsObject = {
+    id: string,
+    age: number,
+    state: Change.State,
+  }
+
+  export enum State { 
+    PENDING = 0,
+    COMMITTED = 1,
+    CONFIRMED = 2,
+    INCONSISTENT = 3,
+  }
+}
+
+export class SetRequest extends jspb.Message {
+  getTimestamp(): number;
+  setTimestamp(value: number): SetRequest;
+
+  getOndList(): Array<setOnd>;
+  setOndList(value: Array<setOnd>): SetRequest;
+  clearOndList(): SetRequest;
+  addOnd(value?: setOnd, index?: number): setOnd;
+
+  getSbiList(): Array<setSbi>;
+  setSbiList(value: Array<setSbi>): SetRequest;
+  clearSbiList(): SetRequest;
+  addSbi(value?: setSbi, index?: number): setSbi;
+
+  getChangeList(): Array<setChange>;
+  setChangeList(value: Array<setChange>): SetRequest;
+  clearChangeList(): SetRequest;
+  addChange(value?: setChange, index?: number): setChange;
+
+  getChangerequestList(): Array<ChangeRequest>;
+  setChangerequestList(value: Array<ChangeRequest>): SetRequest;
+  clearChangerequestList(): SetRequest;
+  addChangerequest(value?: ChangeRequest, index?: number): ChangeRequest;
+
+  getPid(): string;
+  setPid(value: string): SetRequest;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): SetRequest.AsObject;
+  static toObject(includeInstance: boolean, msg: SetRequest): SetRequest.AsObject;
+  static serializeBinaryToWriter(message: SetRequest, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): SetRequest;
+  static deserializeBinaryFromReader(message: SetRequest, reader: jspb.BinaryReader): SetRequest;
+}
+
+export namespace SetRequest {
+  export type AsObject = {
+    timestamp: number,
+    ondList: Array<setOnd.AsObject>,
+    sbiList: Array<setSbi.AsObject>,
+    changeList: Array<setChange.AsObject>,
+    changerequestList: Array<ChangeRequest.AsObject>,
+    pid: string,
+  }
+}
+
+export class setOnd extends jspb.Message {
+  getAddress(): string;
+  setAddress(value: string): setOnd;
+
+  getSbi(): gosdn_southbound_southbound_pb.SouthboundInterface | undefined;
+  setSbi(value?: gosdn_southbound_southbound_pb.SouthboundInterface): setOnd;
+  hasSbi(): boolean;
+  clearSbi(): setOnd;
+
+  getDevicename(): string;
+  setDevicename(value: string): setOnd;
+
+  getTransportoption(): gosdn_transport_transport_pb.TransportOption | undefined;
+  setTransportoption(value?: gosdn_transport_transport_pb.TransportOption): setOnd;
+  hasTransportoption(): boolean;
+  clearTransportoption(): setOnd;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): setOnd.AsObject;
+  static toObject(includeInstance: boolean, msg: setOnd): setOnd.AsObject;
+  static serializeBinaryToWriter(message: setOnd, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): setOnd;
+  static deserializeBinaryFromReader(message: setOnd, reader: jspb.BinaryReader): setOnd;
+}
+
+export namespace setOnd {
+  export type AsObject = {
+    address: string,
+    sbi?: gosdn_southbound_southbound_pb.SouthboundInterface.AsObject,
+    devicename: string,
+    transportoption?: gosdn_transport_transport_pb.TransportOption.AsObject,
+  }
+}
+
+export class setSbi extends jspb.Message {
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): setSbi.AsObject;
+  static toObject(includeInstance: boolean, msg: setSbi): setSbi.AsObject;
+  static serializeBinaryToWriter(message: setSbi, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): setSbi;
+  static deserializeBinaryFromReader(message: setSbi, reader: jspb.BinaryReader): setSbi;
+}
+
+export namespace setSbi {
+  export type AsObject = {
+  }
+}
+
+export class setChange extends jspb.Message {
+  getCuid(): string;
+  setCuid(value: string): setChange;
+
+  getOp(): setChange.Operation;
+  setOp(value: setChange.Operation): setChange;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): setChange.AsObject;
+  static toObject(includeInstance: boolean, msg: setChange): setChange.AsObject;
+  static serializeBinaryToWriter(message: setChange, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): setChange;
+  static deserializeBinaryFromReader(message: setChange, reader: jspb.BinaryReader): setChange;
+}
+
+export namespace setChange {
+  export type AsObject = {
+    cuid: string,
+    op: setChange.Operation,
+  }
+
+  export enum Operation { 
+    CREATE = 0,
+    COMMIT = 1,
+    CONFIRM = 2,
+  }
+}
+
+export class SetResponse extends jspb.Message {
+  getTimestamp(): number;
+  setTimestamp(value: number): SetResponse;
+
+  getStatus(): SetResponse.status;
+  setStatus(value: SetResponse.status): SetResponse;
+
+  getResponsesList(): Array<SetResponse>;
+  setResponsesList(value: Array<SetResponse>): SetResponse;
+  clearResponsesList(): SetResponse;
+  addResponses(value?: SetResponse, index?: number): SetResponse;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): SetResponse.AsObject;
+  static toObject(includeInstance: boolean, msg: SetResponse): SetResponse.AsObject;
+  static serializeBinaryToWriter(message: SetResponse, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): SetResponse;
+  static deserializeBinaryFromReader(message: SetResponse, reader: jspb.BinaryReader): SetResponse;
+}
+
+export namespace SetResponse {
+  export type AsObject = {
+    timestamp: number,
+    status: SetResponse.status,
+    responsesList: Array<SetResponse.AsObject>,
+  }
+
+  export enum status { 
+    OK = 0,
+    ERROR = 1,
+  }
+}
+
+export class ChangeRequest extends jspb.Message {
+  getId(): string;
+  setId(value: string): ChangeRequest;
+
+  getPath(): string;
+  setPath(value: string): ChangeRequest;
+
+  getValue(): string;
+  setValue(value: string): ChangeRequest;
+
+  getApiop(): ApiOperation;
+  setApiop(value: ApiOperation): ChangeRequest;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): ChangeRequest.AsObject;
+  static toObject(includeInstance: boolean, msg: ChangeRequest): ChangeRequest.AsObject;
+  static serializeBinaryToWriter(message: ChangeRequest, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): ChangeRequest;
+  static deserializeBinaryFromReader(message: ChangeRequest, reader: jspb.BinaryReader): ChangeRequest;
+}
+
+export namespace ChangeRequest {
+  export type AsObject = {
+    id: string,
+    path: string,
+    value: string,
+    apiop: ApiOperation,
+  }
+}
+
+export class DeleteRequest extends jspb.Message {
+  getTimestamp(): number;
+  setTimestamp(value: number): DeleteRequest;
+
+  getType(): DeleteRequest.Type;
+  setType(value: DeleteRequest.Type): DeleteRequest;
+
+  getUuid(): string;
+  setUuid(value: string): DeleteRequest;
+
+  getPid(): string;
+  setPid(value: string): DeleteRequest;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): DeleteRequest.AsObject;
+  static toObject(includeInstance: boolean, msg: DeleteRequest): DeleteRequest.AsObject;
+  static serializeBinaryToWriter(message: DeleteRequest, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): DeleteRequest;
+  static deserializeBinaryFromReader(message: DeleteRequest, reader: jspb.BinaryReader): DeleteRequest;
+}
+
+export namespace DeleteRequest {
+  export type AsObject = {
+    timestamp: number,
+    type: DeleteRequest.Type,
+    uuid: string,
+    pid: string,
+  }
+
+  export enum Type { 
+    OND = 0,
+    SBI = 1,
+    PND = 2,
+  }
+}
+
+export class DeleteResponse extends jspb.Message {
+  getTimestamp(): number;
+  setTimestamp(value: number): DeleteResponse;
+
+  getStatus(): DeleteResponse.status;
+  setStatus(value: DeleteResponse.status): DeleteResponse;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): DeleteResponse.AsObject;
+  static toObject(includeInstance: boolean, msg: DeleteResponse): DeleteResponse.AsObject;
+  static serializeBinaryToWriter(message: DeleteResponse, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): DeleteResponse;
+  static deserializeBinaryFromReader(message: DeleteResponse, reader: jspb.BinaryReader): DeleteResponse;
+}
+
+export namespace DeleteResponse {
+  export type AsObject = {
+    timestamp: number,
+    status: DeleteResponse.status,
+  }
+
+  export enum status { 
+    OK = 0,
+    ERROR = 1,
+  }
+}
+
+export enum ApiOperation { 
+  UPDATE = 0,
+  REPLACE = 1,
+  DELETE = 2,
+}
diff --git a/web/gosdn/pnd/pnd_pb.js b/web/gosdn/pnd/pnd_pb.js
new file mode 100644
index 0000000000000000000000000000000000000000..d59f43c83b4756e0f0755e2af4e0b2318d8c4e6a
--- /dev/null
+++ b/web/gosdn/pnd/pnd_pb.js
@@ -0,0 +1,4630 @@
+// source: gosdn/pnd/pnd.proto
+/**
+ * @fileoverview
+ * @enhanceable
+ * @suppress {messageConventions} JS Compiler reports an error if a variable or
+ *     field starts with 'MSG_' and isn't a translatable message.
+ * @public
+ */
+// GENERATED CODE -- DO NOT EDIT!
+/* eslint-disable */
+// @ts-nocheck
+
+var jspb = require('google-protobuf');
+var goog = jspb;
+var global = Function('return this')();
+
+var google_protobuf_descriptor_pb = require('google-protobuf/google/protobuf/descriptor_pb.js');
+goog.object.extend(proto, google_protobuf_descriptor_pb);
+var github_com_openconfig_gnmi_proto_gnmi_gnmi_pb = require('../../github.com/openconfig/gnmi/proto/gnmi/gnmi_pb.js');
+goog.object.extend(proto, github_com_openconfig_gnmi_proto_gnmi_gnmi_pb);
+var gosdn_transport_transport_pb = require('../../gosdn/transport/transport_pb.js');
+goog.object.extend(proto, gosdn_transport_transport_pb);
+var gosdn_southbound_southbound_pb = require('../../gosdn/southbound/southbound_pb.js');
+goog.object.extend(proto, gosdn_southbound_southbound_pb);
+goog.exportSymbol('proto.gosdn.pnd.ApiOperation', null, global);
+goog.exportSymbol('proto.gosdn.pnd.Change', null, global);
+goog.exportSymbol('proto.gosdn.pnd.Change.State', null, global);
+goog.exportSymbol('proto.gosdn.pnd.ChangeRequest', null, global);
+goog.exportSymbol('proto.gosdn.pnd.DeleteRequest', null, global);
+goog.exportSymbol('proto.gosdn.pnd.DeleteRequest.Type', null, global);
+goog.exportSymbol('proto.gosdn.pnd.DeleteResponse', null, global);
+goog.exportSymbol('proto.gosdn.pnd.DeleteResponse.status', null, global);
+goog.exportSymbol('proto.gosdn.pnd.GetRequest', null, global);
+goog.exportSymbol('proto.gosdn.pnd.GetRequest.RequestCase', null, global);
+goog.exportSymbol('proto.gosdn.pnd.GetResponse', null, global);
+goog.exportSymbol('proto.gosdn.pnd.OrchestratedNetworkingDevice', null, global);
+goog.exportSymbol('proto.gosdn.pnd.PrincipalNetworkDomain', null, global);
+goog.exportSymbol('proto.gosdn.pnd.SetRequest', null, global);
+goog.exportSymbol('proto.gosdn.pnd.SetResponse', null, global);
+goog.exportSymbol('proto.gosdn.pnd.SetResponse.status', null, global);
+goog.exportSymbol('proto.gosdn.pnd.getChange', null, global);
+goog.exportSymbol('proto.gosdn.pnd.getOnd', null, global);
+goog.exportSymbol('proto.gosdn.pnd.getPath', null, global);
+goog.exportSymbol('proto.gosdn.pnd.getPnd', null, global);
+goog.exportSymbol('proto.gosdn.pnd.getSbi', null, global);
+goog.exportSymbol('proto.gosdn.pnd.setChange', null, global);
+goog.exportSymbol('proto.gosdn.pnd.setChange.Operation', null, global);
+goog.exportSymbol('proto.gosdn.pnd.setOnd', null, global);
+goog.exportSymbol('proto.gosdn.pnd.setSbi', null, global);
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.pnd.GetRequest = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, proto.gosdn.pnd.GetRequest.oneofGroups_);
+};
+goog.inherits(proto.gosdn.pnd.GetRequest, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.pnd.GetRequest.displayName = 'proto.gosdn.pnd.GetRequest';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.pnd.getPnd = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gosdn.pnd.getPnd, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.pnd.getPnd.displayName = 'proto.gosdn.pnd.getPnd';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.pnd.getOnd = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.gosdn.pnd.getOnd.repeatedFields_, null);
+};
+goog.inherits(proto.gosdn.pnd.getOnd, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.pnd.getOnd.displayName = 'proto.gosdn.pnd.getOnd';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.pnd.getSbi = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.gosdn.pnd.getSbi.repeatedFields_, null);
+};
+goog.inherits(proto.gosdn.pnd.getSbi, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.pnd.getSbi.displayName = 'proto.gosdn.pnd.getSbi';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.pnd.getChange = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.gosdn.pnd.getChange.repeatedFields_, null);
+};
+goog.inherits(proto.gosdn.pnd.getChange, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.pnd.getChange.displayName = 'proto.gosdn.pnd.getChange';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.pnd.getPath = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gosdn.pnd.getPath, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.pnd.getPath.displayName = 'proto.gosdn.pnd.getPath';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.pnd.GetResponse = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.gosdn.pnd.GetResponse.repeatedFields_, null);
+};
+goog.inherits(proto.gosdn.pnd.GetResponse, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.pnd.GetResponse.displayName = 'proto.gosdn.pnd.GetResponse';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.pnd.PrincipalNetworkDomain = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.gosdn.pnd.PrincipalNetworkDomain.repeatedFields_, null);
+};
+goog.inherits(proto.gosdn.pnd.PrincipalNetworkDomain, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.pnd.PrincipalNetworkDomain.displayName = 'proto.gosdn.pnd.PrincipalNetworkDomain';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.pnd.OrchestratedNetworkingDevice = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.gosdn.pnd.OrchestratedNetworkingDevice.repeatedFields_, null);
+};
+goog.inherits(proto.gosdn.pnd.OrchestratedNetworkingDevice, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.pnd.OrchestratedNetworkingDevice.displayName = 'proto.gosdn.pnd.OrchestratedNetworkingDevice';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.pnd.Change = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gosdn.pnd.Change, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.pnd.Change.displayName = 'proto.gosdn.pnd.Change';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.pnd.SetRequest = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.gosdn.pnd.SetRequest.repeatedFields_, null);
+};
+goog.inherits(proto.gosdn.pnd.SetRequest, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.pnd.SetRequest.displayName = 'proto.gosdn.pnd.SetRequest';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.pnd.setOnd = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gosdn.pnd.setOnd, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.pnd.setOnd.displayName = 'proto.gosdn.pnd.setOnd';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.pnd.setSbi = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gosdn.pnd.setSbi, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.pnd.setSbi.displayName = 'proto.gosdn.pnd.setSbi';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.pnd.setChange = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gosdn.pnd.setChange, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.pnd.setChange.displayName = 'proto.gosdn.pnd.setChange';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.pnd.SetResponse = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.gosdn.pnd.SetResponse.repeatedFields_, null);
+};
+goog.inherits(proto.gosdn.pnd.SetResponse, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.pnd.SetResponse.displayName = 'proto.gosdn.pnd.SetResponse';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.pnd.ChangeRequest = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gosdn.pnd.ChangeRequest, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.pnd.ChangeRequest.displayName = 'proto.gosdn.pnd.ChangeRequest';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.pnd.DeleteRequest = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gosdn.pnd.DeleteRequest, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.pnd.DeleteRequest.displayName = 'proto.gosdn.pnd.DeleteRequest';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.pnd.DeleteResponse = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gosdn.pnd.DeleteResponse, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.pnd.DeleteResponse.displayName = 'proto.gosdn.pnd.DeleteResponse';
+}
+
+/**
+ * Oneof group definitions for this message. Each group defines the field
+ * numbers belonging to that group. When of these fields' value is set, all
+ * other fields in the group are cleared. During deserialization, if multiple
+ * fields are encountered for a group, only the last value seen will be kept.
+ * @private {!Array<!Array<number>>}
+ * @const
+ */
+proto.gosdn.pnd.GetRequest.oneofGroups_ = [[2,3,4,5,7]];
+
+/**
+ * @enum {number}
+ */
+proto.gosdn.pnd.GetRequest.RequestCase = {
+  REQUEST_NOT_SET: 0,
+  PND: 2,
+  OND: 3,
+  SBI: 4,
+  CHANGE: 5,
+  PATH: 7
+};
+
+/**
+ * @return {proto.gosdn.pnd.GetRequest.RequestCase}
+ */
+proto.gosdn.pnd.GetRequest.prototype.getRequestCase = function() {
+  return /** @type {proto.gosdn.pnd.GetRequest.RequestCase} */(jspb.Message.computeOneofCase(this, proto.gosdn.pnd.GetRequest.oneofGroups_[0]));
+};
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.pnd.GetRequest.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.pnd.GetRequest.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.pnd.GetRequest} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.GetRequest.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    timestamp: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    pnd: (f = msg.getPnd()) && proto.gosdn.pnd.getPnd.toObject(includeInstance, f),
+    ond: (f = msg.getOnd()) && proto.gosdn.pnd.getOnd.toObject(includeInstance, f),
+    sbi: (f = msg.getSbi()) && proto.gosdn.pnd.getSbi.toObject(includeInstance, f),
+    change: (f = msg.getChange()) && proto.gosdn.pnd.getChange.toObject(includeInstance, f),
+    path: (f = msg.getPath()) && proto.gosdn.pnd.getPath.toObject(includeInstance, f),
+    pid: jspb.Message.getFieldWithDefault(msg, 6, "")
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.pnd.GetRequest}
+ */
+proto.gosdn.pnd.GetRequest.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.pnd.GetRequest;
+  return proto.gosdn.pnd.GetRequest.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.pnd.GetRequest} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.pnd.GetRequest}
+ */
+proto.gosdn.pnd.GetRequest.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setTimestamp(value);
+      break;
+    case 2:
+      var value = new proto.gosdn.pnd.getPnd;
+      reader.readMessage(value,proto.gosdn.pnd.getPnd.deserializeBinaryFromReader);
+      msg.setPnd(value);
+      break;
+    case 3:
+      var value = new proto.gosdn.pnd.getOnd;
+      reader.readMessage(value,proto.gosdn.pnd.getOnd.deserializeBinaryFromReader);
+      msg.setOnd(value);
+      break;
+    case 4:
+      var value = new proto.gosdn.pnd.getSbi;
+      reader.readMessage(value,proto.gosdn.pnd.getSbi.deserializeBinaryFromReader);
+      msg.setSbi(value);
+      break;
+    case 5:
+      var value = new proto.gosdn.pnd.getChange;
+      reader.readMessage(value,proto.gosdn.pnd.getChange.deserializeBinaryFromReader);
+      msg.setChange(value);
+      break;
+    case 7:
+      var value = new proto.gosdn.pnd.getPath;
+      reader.readMessage(value,proto.gosdn.pnd.getPath.deserializeBinaryFromReader);
+      msg.setPath(value);
+      break;
+    case 6:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setPid(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.pnd.GetRequest.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.pnd.GetRequest.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.pnd.GetRequest} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.GetRequest.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getTimestamp();
+  if (f !== 0) {
+    writer.writeInt64(
+      1,
+      f
+    );
+  }
+  f = message.getPnd();
+  if (f != null) {
+    writer.writeMessage(
+      2,
+      f,
+      proto.gosdn.pnd.getPnd.serializeBinaryToWriter
+    );
+  }
+  f = message.getOnd();
+  if (f != null) {
+    writer.writeMessage(
+      3,
+      f,
+      proto.gosdn.pnd.getOnd.serializeBinaryToWriter
+    );
+  }
+  f = message.getSbi();
+  if (f != null) {
+    writer.writeMessage(
+      4,
+      f,
+      proto.gosdn.pnd.getSbi.serializeBinaryToWriter
+    );
+  }
+  f = message.getChange();
+  if (f != null) {
+    writer.writeMessage(
+      5,
+      f,
+      proto.gosdn.pnd.getChange.serializeBinaryToWriter
+    );
+  }
+  f = message.getPath();
+  if (f != null) {
+    writer.writeMessage(
+      7,
+      f,
+      proto.gosdn.pnd.getPath.serializeBinaryToWriter
+    );
+  }
+  f = message.getPid();
+  if (f.length > 0) {
+    writer.writeString(
+      6,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional int64 timestamp = 1;
+ * @return {number}
+ */
+proto.gosdn.pnd.GetRequest.prototype.getTimestamp = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gosdn.pnd.GetRequest} returns this
+ */
+proto.gosdn.pnd.GetRequest.prototype.setTimestamp = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional getPnd pnd = 2;
+ * @return {?proto.gosdn.pnd.getPnd}
+ */
+proto.gosdn.pnd.GetRequest.prototype.getPnd = function() {
+  return /** @type{?proto.gosdn.pnd.getPnd} */ (
+    jspb.Message.getWrapperField(this, proto.gosdn.pnd.getPnd, 2));
+};
+
+
+/**
+ * @param {?proto.gosdn.pnd.getPnd|undefined} value
+ * @return {!proto.gosdn.pnd.GetRequest} returns this
+*/
+proto.gosdn.pnd.GetRequest.prototype.setPnd = function(value) {
+  return jspb.Message.setOneofWrapperField(this, 2, proto.gosdn.pnd.GetRequest.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gosdn.pnd.GetRequest} returns this
+ */
+proto.gosdn.pnd.GetRequest.prototype.clearPnd = function() {
+  return this.setPnd(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gosdn.pnd.GetRequest.prototype.hasPnd = function() {
+  return jspb.Message.getField(this, 2) != null;
+};
+
+
+/**
+ * optional getOnd ond = 3;
+ * @return {?proto.gosdn.pnd.getOnd}
+ */
+proto.gosdn.pnd.GetRequest.prototype.getOnd = function() {
+  return /** @type{?proto.gosdn.pnd.getOnd} */ (
+    jspb.Message.getWrapperField(this, proto.gosdn.pnd.getOnd, 3));
+};
+
+
+/**
+ * @param {?proto.gosdn.pnd.getOnd|undefined} value
+ * @return {!proto.gosdn.pnd.GetRequest} returns this
+*/
+proto.gosdn.pnd.GetRequest.prototype.setOnd = function(value) {
+  return jspb.Message.setOneofWrapperField(this, 3, proto.gosdn.pnd.GetRequest.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gosdn.pnd.GetRequest} returns this
+ */
+proto.gosdn.pnd.GetRequest.prototype.clearOnd = function() {
+  return this.setOnd(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gosdn.pnd.GetRequest.prototype.hasOnd = function() {
+  return jspb.Message.getField(this, 3) != null;
+};
+
+
+/**
+ * optional getSbi sbi = 4;
+ * @return {?proto.gosdn.pnd.getSbi}
+ */
+proto.gosdn.pnd.GetRequest.prototype.getSbi = function() {
+  return /** @type{?proto.gosdn.pnd.getSbi} */ (
+    jspb.Message.getWrapperField(this, proto.gosdn.pnd.getSbi, 4));
+};
+
+
+/**
+ * @param {?proto.gosdn.pnd.getSbi|undefined} value
+ * @return {!proto.gosdn.pnd.GetRequest} returns this
+*/
+proto.gosdn.pnd.GetRequest.prototype.setSbi = function(value) {
+  return jspb.Message.setOneofWrapperField(this, 4, proto.gosdn.pnd.GetRequest.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gosdn.pnd.GetRequest} returns this
+ */
+proto.gosdn.pnd.GetRequest.prototype.clearSbi = function() {
+  return this.setSbi(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gosdn.pnd.GetRequest.prototype.hasSbi = function() {
+  return jspb.Message.getField(this, 4) != null;
+};
+
+
+/**
+ * optional getChange change = 5;
+ * @return {?proto.gosdn.pnd.getChange}
+ */
+proto.gosdn.pnd.GetRequest.prototype.getChange = function() {
+  return /** @type{?proto.gosdn.pnd.getChange} */ (
+    jspb.Message.getWrapperField(this, proto.gosdn.pnd.getChange, 5));
+};
+
+
+/**
+ * @param {?proto.gosdn.pnd.getChange|undefined} value
+ * @return {!proto.gosdn.pnd.GetRequest} returns this
+*/
+proto.gosdn.pnd.GetRequest.prototype.setChange = function(value) {
+  return jspb.Message.setOneofWrapperField(this, 5, proto.gosdn.pnd.GetRequest.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gosdn.pnd.GetRequest} returns this
+ */
+proto.gosdn.pnd.GetRequest.prototype.clearChange = function() {
+  return this.setChange(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gosdn.pnd.GetRequest.prototype.hasChange = function() {
+  return jspb.Message.getField(this, 5) != null;
+};
+
+
+/**
+ * optional getPath path = 7;
+ * @return {?proto.gosdn.pnd.getPath}
+ */
+proto.gosdn.pnd.GetRequest.prototype.getPath = function() {
+  return /** @type{?proto.gosdn.pnd.getPath} */ (
+    jspb.Message.getWrapperField(this, proto.gosdn.pnd.getPath, 7));
+};
+
+
+/**
+ * @param {?proto.gosdn.pnd.getPath|undefined} value
+ * @return {!proto.gosdn.pnd.GetRequest} returns this
+*/
+proto.gosdn.pnd.GetRequest.prototype.setPath = function(value) {
+  return jspb.Message.setOneofWrapperField(this, 7, proto.gosdn.pnd.GetRequest.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gosdn.pnd.GetRequest} returns this
+ */
+proto.gosdn.pnd.GetRequest.prototype.clearPath = function() {
+  return this.setPath(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gosdn.pnd.GetRequest.prototype.hasPath = function() {
+  return jspb.Message.getField(this, 7) != null;
+};
+
+
+/**
+ * optional string pid = 6;
+ * @return {string}
+ */
+proto.gosdn.pnd.GetRequest.prototype.getPid = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.pnd.GetRequest} returns this
+ */
+proto.gosdn.pnd.GetRequest.prototype.setPid = function(value) {
+  return jspb.Message.setProto3StringField(this, 6, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.pnd.getPnd.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.pnd.getPnd.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.pnd.getPnd} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.getPnd.toObject = function(includeInstance, msg) {
+  var f, obj = {
+
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.pnd.getPnd}
+ */
+proto.gosdn.pnd.getPnd.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.pnd.getPnd;
+  return proto.gosdn.pnd.getPnd.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.pnd.getPnd} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.pnd.getPnd}
+ */
+proto.gosdn.pnd.getPnd.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.pnd.getPnd.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.pnd.getPnd.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.pnd.getPnd} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.getPnd.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.gosdn.pnd.getOnd.repeatedFields_ = [2];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.pnd.getOnd.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.pnd.getOnd.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.pnd.getOnd} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.getOnd.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    all: jspb.Message.getBooleanFieldWithDefault(msg, 1, false),
+    didList: (f = jspb.Message.getRepeatedField(msg, 2)) == null ? undefined : f
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.pnd.getOnd}
+ */
+proto.gosdn.pnd.getOnd.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.pnd.getOnd;
+  return proto.gosdn.pnd.getOnd.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.pnd.getOnd} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.pnd.getOnd}
+ */
+proto.gosdn.pnd.getOnd.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {boolean} */ (reader.readBool());
+      msg.setAll(value);
+      break;
+    case 2:
+      var value = /** @type {string} */ (reader.readString());
+      msg.addDid(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.pnd.getOnd.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.pnd.getOnd.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.pnd.getOnd} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.getOnd.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getAll();
+  if (f) {
+    writer.writeBool(
+      1,
+      f
+    );
+  }
+  f = message.getDidList();
+  if (f.length > 0) {
+    writer.writeRepeatedString(
+      2,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional bool all = 1;
+ * @return {boolean}
+ */
+proto.gosdn.pnd.getOnd.prototype.getAll = function() {
+  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 1, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.gosdn.pnd.getOnd} returns this
+ */
+proto.gosdn.pnd.getOnd.prototype.setAll = function(value) {
+  return jspb.Message.setProto3BooleanField(this, 1, value);
+};
+
+
+/**
+ * repeated string did = 2;
+ * @return {!Array<string>}
+ */
+proto.gosdn.pnd.getOnd.prototype.getDidList = function() {
+  return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 2));
+};
+
+
+/**
+ * @param {!Array<string>} value
+ * @return {!proto.gosdn.pnd.getOnd} returns this
+ */
+proto.gosdn.pnd.getOnd.prototype.setDidList = function(value) {
+  return jspb.Message.setField(this, 2, value || []);
+};
+
+
+/**
+ * @param {string} value
+ * @param {number=} opt_index
+ * @return {!proto.gosdn.pnd.getOnd} returns this
+ */
+proto.gosdn.pnd.getOnd.prototype.addDid = function(value, opt_index) {
+  return jspb.Message.addToRepeatedField(this, 2, value, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gosdn.pnd.getOnd} returns this
+ */
+proto.gosdn.pnd.getOnd.prototype.clearDidList = function() {
+  return this.setDidList([]);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.gosdn.pnd.getSbi.repeatedFields_ = [2];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.pnd.getSbi.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.pnd.getSbi.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.pnd.getSbi} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.getSbi.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    all: jspb.Message.getBooleanFieldWithDefault(msg, 1, false),
+    sidList: (f = jspb.Message.getRepeatedField(msg, 2)) == null ? undefined : f
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.pnd.getSbi}
+ */
+proto.gosdn.pnd.getSbi.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.pnd.getSbi;
+  return proto.gosdn.pnd.getSbi.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.pnd.getSbi} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.pnd.getSbi}
+ */
+proto.gosdn.pnd.getSbi.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {boolean} */ (reader.readBool());
+      msg.setAll(value);
+      break;
+    case 2:
+      var value = /** @type {string} */ (reader.readString());
+      msg.addSid(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.pnd.getSbi.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.pnd.getSbi.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.pnd.getSbi} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.getSbi.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getAll();
+  if (f) {
+    writer.writeBool(
+      1,
+      f
+    );
+  }
+  f = message.getSidList();
+  if (f.length > 0) {
+    writer.writeRepeatedString(
+      2,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional bool all = 1;
+ * @return {boolean}
+ */
+proto.gosdn.pnd.getSbi.prototype.getAll = function() {
+  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 1, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.gosdn.pnd.getSbi} returns this
+ */
+proto.gosdn.pnd.getSbi.prototype.setAll = function(value) {
+  return jspb.Message.setProto3BooleanField(this, 1, value);
+};
+
+
+/**
+ * repeated string sid = 2;
+ * @return {!Array<string>}
+ */
+proto.gosdn.pnd.getSbi.prototype.getSidList = function() {
+  return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 2));
+};
+
+
+/**
+ * @param {!Array<string>} value
+ * @return {!proto.gosdn.pnd.getSbi} returns this
+ */
+proto.gosdn.pnd.getSbi.prototype.setSidList = function(value) {
+  return jspb.Message.setField(this, 2, value || []);
+};
+
+
+/**
+ * @param {string} value
+ * @param {number=} opt_index
+ * @return {!proto.gosdn.pnd.getSbi} returns this
+ */
+proto.gosdn.pnd.getSbi.prototype.addSid = function(value, opt_index) {
+  return jspb.Message.addToRepeatedField(this, 2, value, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gosdn.pnd.getSbi} returns this
+ */
+proto.gosdn.pnd.getSbi.prototype.clearSidList = function() {
+  return this.setSidList([]);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.gosdn.pnd.getChange.repeatedFields_ = [2];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.pnd.getChange.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.pnd.getChange.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.pnd.getChange} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.getChange.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    all: jspb.Message.getBooleanFieldWithDefault(msg, 1, false),
+    cuidList: (f = jspb.Message.getRepeatedField(msg, 2)) == null ? undefined : f
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.pnd.getChange}
+ */
+proto.gosdn.pnd.getChange.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.pnd.getChange;
+  return proto.gosdn.pnd.getChange.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.pnd.getChange} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.pnd.getChange}
+ */
+proto.gosdn.pnd.getChange.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {boolean} */ (reader.readBool());
+      msg.setAll(value);
+      break;
+    case 2:
+      var value = /** @type {string} */ (reader.readString());
+      msg.addCuid(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.pnd.getChange.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.pnd.getChange.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.pnd.getChange} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.getChange.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getAll();
+  if (f) {
+    writer.writeBool(
+      1,
+      f
+    );
+  }
+  f = message.getCuidList();
+  if (f.length > 0) {
+    writer.writeRepeatedString(
+      2,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional bool all = 1;
+ * @return {boolean}
+ */
+proto.gosdn.pnd.getChange.prototype.getAll = function() {
+  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 1, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.gosdn.pnd.getChange} returns this
+ */
+proto.gosdn.pnd.getChange.prototype.setAll = function(value) {
+  return jspb.Message.setProto3BooleanField(this, 1, value);
+};
+
+
+/**
+ * repeated string cuid = 2;
+ * @return {!Array<string>}
+ */
+proto.gosdn.pnd.getChange.prototype.getCuidList = function() {
+  return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 2));
+};
+
+
+/**
+ * @param {!Array<string>} value
+ * @return {!proto.gosdn.pnd.getChange} returns this
+ */
+proto.gosdn.pnd.getChange.prototype.setCuidList = function(value) {
+  return jspb.Message.setField(this, 2, value || []);
+};
+
+
+/**
+ * @param {string} value
+ * @param {number=} opt_index
+ * @return {!proto.gosdn.pnd.getChange} returns this
+ */
+proto.gosdn.pnd.getChange.prototype.addCuid = function(value, opt_index) {
+  return jspb.Message.addToRepeatedField(this, 2, value, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gosdn.pnd.getChange} returns this
+ */
+proto.gosdn.pnd.getChange.prototype.clearCuidList = function() {
+  return this.setCuidList([]);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.pnd.getPath.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.pnd.getPath.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.pnd.getPath} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.getPath.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    did: jspb.Message.getFieldWithDefault(msg, 1, ""),
+    path: jspb.Message.getFieldWithDefault(msg, 2, "")
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.pnd.getPath}
+ */
+proto.gosdn.pnd.getPath.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.pnd.getPath;
+  return proto.gosdn.pnd.getPath.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.pnd.getPath} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.pnd.getPath}
+ */
+proto.gosdn.pnd.getPath.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setDid(value);
+      break;
+    case 2:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setPath(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.pnd.getPath.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.pnd.getPath.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.pnd.getPath} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.getPath.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getDid();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+  f = message.getPath();
+  if (f.length > 0) {
+    writer.writeString(
+      2,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional string did = 1;
+ * @return {string}
+ */
+proto.gosdn.pnd.getPath.prototype.getDid = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.pnd.getPath} returns this
+ */
+proto.gosdn.pnd.getPath.prototype.setDid = function(value) {
+  return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * optional string path = 2;
+ * @return {string}
+ */
+proto.gosdn.pnd.getPath.prototype.getPath = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.pnd.getPath} returns this
+ */
+proto.gosdn.pnd.getPath.prototype.setPath = function(value) {
+  return jspb.Message.setProto3StringField(this, 2, value);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.gosdn.pnd.GetResponse.repeatedFields_ = [3,5,7];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.pnd.GetResponse.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.pnd.GetResponse.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.pnd.GetResponse} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.GetResponse.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    timestamp: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    pnd: (f = msg.getPnd()) && proto.gosdn.pnd.PrincipalNetworkDomain.toObject(includeInstance, f),
+    ondList: jspb.Message.toObjectList(msg.getOndList(),
+    proto.gosdn.pnd.OrchestratedNetworkingDevice.toObject, includeInstance),
+    sbiList: jspb.Message.toObjectList(msg.getSbiList(),
+    gosdn_southbound_southbound_pb.SouthboundInterface.toObject, includeInstance),
+    changeList: jspb.Message.toObjectList(msg.getChangeList(),
+    proto.gosdn.pnd.Change.toObject, includeInstance)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.pnd.GetResponse}
+ */
+proto.gosdn.pnd.GetResponse.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.pnd.GetResponse;
+  return proto.gosdn.pnd.GetResponse.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.pnd.GetResponse} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.pnd.GetResponse}
+ */
+proto.gosdn.pnd.GetResponse.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setTimestamp(value);
+      break;
+    case 2:
+      var value = new proto.gosdn.pnd.PrincipalNetworkDomain;
+      reader.readMessage(value,proto.gosdn.pnd.PrincipalNetworkDomain.deserializeBinaryFromReader);
+      msg.setPnd(value);
+      break;
+    case 3:
+      var value = new proto.gosdn.pnd.OrchestratedNetworkingDevice;
+      reader.readMessage(value,proto.gosdn.pnd.OrchestratedNetworkingDevice.deserializeBinaryFromReader);
+      msg.addOnd(value);
+      break;
+    case 5:
+      var value = new gosdn_southbound_southbound_pb.SouthboundInterface;
+      reader.readMessage(value,gosdn_southbound_southbound_pb.SouthboundInterface.deserializeBinaryFromReader);
+      msg.addSbi(value);
+      break;
+    case 7:
+      var value = new proto.gosdn.pnd.Change;
+      reader.readMessage(value,proto.gosdn.pnd.Change.deserializeBinaryFromReader);
+      msg.addChange(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.pnd.GetResponse.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.pnd.GetResponse.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.pnd.GetResponse} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.GetResponse.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getTimestamp();
+  if (f !== 0) {
+    writer.writeInt64(
+      1,
+      f
+    );
+  }
+  f = message.getPnd();
+  if (f != null) {
+    writer.writeMessage(
+      2,
+      f,
+      proto.gosdn.pnd.PrincipalNetworkDomain.serializeBinaryToWriter
+    );
+  }
+  f = message.getOndList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      3,
+      f,
+      proto.gosdn.pnd.OrchestratedNetworkingDevice.serializeBinaryToWriter
+    );
+  }
+  f = message.getSbiList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      5,
+      f,
+      gosdn_southbound_southbound_pb.SouthboundInterface.serializeBinaryToWriter
+    );
+  }
+  f = message.getChangeList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      7,
+      f,
+      proto.gosdn.pnd.Change.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * optional int64 timestamp = 1;
+ * @return {number}
+ */
+proto.gosdn.pnd.GetResponse.prototype.getTimestamp = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gosdn.pnd.GetResponse} returns this
+ */
+proto.gosdn.pnd.GetResponse.prototype.setTimestamp = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional PrincipalNetworkDomain pnd = 2;
+ * @return {?proto.gosdn.pnd.PrincipalNetworkDomain}
+ */
+proto.gosdn.pnd.GetResponse.prototype.getPnd = function() {
+  return /** @type{?proto.gosdn.pnd.PrincipalNetworkDomain} */ (
+    jspb.Message.getWrapperField(this, proto.gosdn.pnd.PrincipalNetworkDomain, 2));
+};
+
+
+/**
+ * @param {?proto.gosdn.pnd.PrincipalNetworkDomain|undefined} value
+ * @return {!proto.gosdn.pnd.GetResponse} returns this
+*/
+proto.gosdn.pnd.GetResponse.prototype.setPnd = function(value) {
+  return jspb.Message.setWrapperField(this, 2, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gosdn.pnd.GetResponse} returns this
+ */
+proto.gosdn.pnd.GetResponse.prototype.clearPnd = function() {
+  return this.setPnd(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gosdn.pnd.GetResponse.prototype.hasPnd = function() {
+  return jspb.Message.getField(this, 2) != null;
+};
+
+
+/**
+ * repeated OrchestratedNetworkingDevice ond = 3;
+ * @return {!Array<!proto.gosdn.pnd.OrchestratedNetworkingDevice>}
+ */
+proto.gosdn.pnd.GetResponse.prototype.getOndList = function() {
+  return /** @type{!Array<!proto.gosdn.pnd.OrchestratedNetworkingDevice>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.gosdn.pnd.OrchestratedNetworkingDevice, 3));
+};
+
+
+/**
+ * @param {!Array<!proto.gosdn.pnd.OrchestratedNetworkingDevice>} value
+ * @return {!proto.gosdn.pnd.GetResponse} returns this
+*/
+proto.gosdn.pnd.GetResponse.prototype.setOndList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 3, value);
+};
+
+
+/**
+ * @param {!proto.gosdn.pnd.OrchestratedNetworkingDevice=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gosdn.pnd.OrchestratedNetworkingDevice}
+ */
+proto.gosdn.pnd.GetResponse.prototype.addOnd = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.gosdn.pnd.OrchestratedNetworkingDevice, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gosdn.pnd.GetResponse} returns this
+ */
+proto.gosdn.pnd.GetResponse.prototype.clearOndList = function() {
+  return this.setOndList([]);
+};
+
+
+/**
+ * repeated gosdn.southbound.SouthboundInterface sbi = 5;
+ * @return {!Array<!proto.gosdn.southbound.SouthboundInterface>}
+ */
+proto.gosdn.pnd.GetResponse.prototype.getSbiList = function() {
+  return /** @type{!Array<!proto.gosdn.southbound.SouthboundInterface>} */ (
+    jspb.Message.getRepeatedWrapperField(this, gosdn_southbound_southbound_pb.SouthboundInterface, 5));
+};
+
+
+/**
+ * @param {!Array<!proto.gosdn.southbound.SouthboundInterface>} value
+ * @return {!proto.gosdn.pnd.GetResponse} returns this
+*/
+proto.gosdn.pnd.GetResponse.prototype.setSbiList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 5, value);
+};
+
+
+/**
+ * @param {!proto.gosdn.southbound.SouthboundInterface=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gosdn.southbound.SouthboundInterface}
+ */
+proto.gosdn.pnd.GetResponse.prototype.addSbi = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 5, opt_value, proto.gosdn.southbound.SouthboundInterface, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gosdn.pnd.GetResponse} returns this
+ */
+proto.gosdn.pnd.GetResponse.prototype.clearSbiList = function() {
+  return this.setSbiList([]);
+};
+
+
+/**
+ * repeated Change change = 7;
+ * @return {!Array<!proto.gosdn.pnd.Change>}
+ */
+proto.gosdn.pnd.GetResponse.prototype.getChangeList = function() {
+  return /** @type{!Array<!proto.gosdn.pnd.Change>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.gosdn.pnd.Change, 7));
+};
+
+
+/**
+ * @param {!Array<!proto.gosdn.pnd.Change>} value
+ * @return {!proto.gosdn.pnd.GetResponse} returns this
+*/
+proto.gosdn.pnd.GetResponse.prototype.setChangeList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 7, value);
+};
+
+
+/**
+ * @param {!proto.gosdn.pnd.Change=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gosdn.pnd.Change}
+ */
+proto.gosdn.pnd.GetResponse.prototype.addChange = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 7, opt_value, proto.gosdn.pnd.Change, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gosdn.pnd.GetResponse} returns this
+ */
+proto.gosdn.pnd.GetResponse.prototype.clearChangeList = function() {
+  return this.setChangeList([]);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.gosdn.pnd.PrincipalNetworkDomain.repeatedFields_ = [4,5,6];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.pnd.PrincipalNetworkDomain.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.pnd.PrincipalNetworkDomain.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.pnd.PrincipalNetworkDomain} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.PrincipalNetworkDomain.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    id: jspb.Message.getFieldWithDefault(msg, 1, ""),
+    name: jspb.Message.getFieldWithDefault(msg, 2, ""),
+    description: jspb.Message.getFieldWithDefault(msg, 3, ""),
+    ondList: jspb.Message.toObjectList(msg.getOndList(),
+    proto.gosdn.pnd.OrchestratedNetworkingDevice.toObject, includeInstance),
+    sbiList: jspb.Message.toObjectList(msg.getSbiList(),
+    gosdn_southbound_southbound_pb.SouthboundInterface.toObject, includeInstance),
+    changeList: jspb.Message.toObjectList(msg.getChangeList(),
+    proto.gosdn.pnd.Change.toObject, includeInstance)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.pnd.PrincipalNetworkDomain}
+ */
+proto.gosdn.pnd.PrincipalNetworkDomain.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.pnd.PrincipalNetworkDomain;
+  return proto.gosdn.pnd.PrincipalNetworkDomain.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.pnd.PrincipalNetworkDomain} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.pnd.PrincipalNetworkDomain}
+ */
+proto.gosdn.pnd.PrincipalNetworkDomain.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setId(value);
+      break;
+    case 2:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setName(value);
+      break;
+    case 3:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setDescription(value);
+      break;
+    case 4:
+      var value = new proto.gosdn.pnd.OrchestratedNetworkingDevice;
+      reader.readMessage(value,proto.gosdn.pnd.OrchestratedNetworkingDevice.deserializeBinaryFromReader);
+      msg.addOnd(value);
+      break;
+    case 5:
+      var value = new gosdn_southbound_southbound_pb.SouthboundInterface;
+      reader.readMessage(value,gosdn_southbound_southbound_pb.SouthboundInterface.deserializeBinaryFromReader);
+      msg.addSbi(value);
+      break;
+    case 6:
+      var value = new proto.gosdn.pnd.Change;
+      reader.readMessage(value,proto.gosdn.pnd.Change.deserializeBinaryFromReader);
+      msg.addChange(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.pnd.PrincipalNetworkDomain.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.pnd.PrincipalNetworkDomain.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.pnd.PrincipalNetworkDomain} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.PrincipalNetworkDomain.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getId();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+  f = message.getName();
+  if (f.length > 0) {
+    writer.writeString(
+      2,
+      f
+    );
+  }
+  f = message.getDescription();
+  if (f.length > 0) {
+    writer.writeString(
+      3,
+      f
+    );
+  }
+  f = message.getOndList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      4,
+      f,
+      proto.gosdn.pnd.OrchestratedNetworkingDevice.serializeBinaryToWriter
+    );
+  }
+  f = message.getSbiList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      5,
+      f,
+      gosdn_southbound_southbound_pb.SouthboundInterface.serializeBinaryToWriter
+    );
+  }
+  f = message.getChangeList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      6,
+      f,
+      proto.gosdn.pnd.Change.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * optional string id = 1;
+ * @return {string}
+ */
+proto.gosdn.pnd.PrincipalNetworkDomain.prototype.getId = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.pnd.PrincipalNetworkDomain} returns this
+ */
+proto.gosdn.pnd.PrincipalNetworkDomain.prototype.setId = function(value) {
+  return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * optional string name = 2;
+ * @return {string}
+ */
+proto.gosdn.pnd.PrincipalNetworkDomain.prototype.getName = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.pnd.PrincipalNetworkDomain} returns this
+ */
+proto.gosdn.pnd.PrincipalNetworkDomain.prototype.setName = function(value) {
+  return jspb.Message.setProto3StringField(this, 2, value);
+};
+
+
+/**
+ * optional string description = 3;
+ * @return {string}
+ */
+proto.gosdn.pnd.PrincipalNetworkDomain.prototype.getDescription = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.pnd.PrincipalNetworkDomain} returns this
+ */
+proto.gosdn.pnd.PrincipalNetworkDomain.prototype.setDescription = function(value) {
+  return jspb.Message.setProto3StringField(this, 3, value);
+};
+
+
+/**
+ * repeated OrchestratedNetworkingDevice ond = 4;
+ * @return {!Array<!proto.gosdn.pnd.OrchestratedNetworkingDevice>}
+ */
+proto.gosdn.pnd.PrincipalNetworkDomain.prototype.getOndList = function() {
+  return /** @type{!Array<!proto.gosdn.pnd.OrchestratedNetworkingDevice>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.gosdn.pnd.OrchestratedNetworkingDevice, 4));
+};
+
+
+/**
+ * @param {!Array<!proto.gosdn.pnd.OrchestratedNetworkingDevice>} value
+ * @return {!proto.gosdn.pnd.PrincipalNetworkDomain} returns this
+*/
+proto.gosdn.pnd.PrincipalNetworkDomain.prototype.setOndList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 4, value);
+};
+
+
+/**
+ * @param {!proto.gosdn.pnd.OrchestratedNetworkingDevice=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gosdn.pnd.OrchestratedNetworkingDevice}
+ */
+proto.gosdn.pnd.PrincipalNetworkDomain.prototype.addOnd = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.gosdn.pnd.OrchestratedNetworkingDevice, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gosdn.pnd.PrincipalNetworkDomain} returns this
+ */
+proto.gosdn.pnd.PrincipalNetworkDomain.prototype.clearOndList = function() {
+  return this.setOndList([]);
+};
+
+
+/**
+ * repeated gosdn.southbound.SouthboundInterface sbi = 5;
+ * @return {!Array<!proto.gosdn.southbound.SouthboundInterface>}
+ */
+proto.gosdn.pnd.PrincipalNetworkDomain.prototype.getSbiList = function() {
+  return /** @type{!Array<!proto.gosdn.southbound.SouthboundInterface>} */ (
+    jspb.Message.getRepeatedWrapperField(this, gosdn_southbound_southbound_pb.SouthboundInterface, 5));
+};
+
+
+/**
+ * @param {!Array<!proto.gosdn.southbound.SouthboundInterface>} value
+ * @return {!proto.gosdn.pnd.PrincipalNetworkDomain} returns this
+*/
+proto.gosdn.pnd.PrincipalNetworkDomain.prototype.setSbiList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 5, value);
+};
+
+
+/**
+ * @param {!proto.gosdn.southbound.SouthboundInterface=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gosdn.southbound.SouthboundInterface}
+ */
+proto.gosdn.pnd.PrincipalNetworkDomain.prototype.addSbi = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 5, opt_value, proto.gosdn.southbound.SouthboundInterface, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gosdn.pnd.PrincipalNetworkDomain} returns this
+ */
+proto.gosdn.pnd.PrincipalNetworkDomain.prototype.clearSbiList = function() {
+  return this.setSbiList([]);
+};
+
+
+/**
+ * repeated Change change = 6;
+ * @return {!Array<!proto.gosdn.pnd.Change>}
+ */
+proto.gosdn.pnd.PrincipalNetworkDomain.prototype.getChangeList = function() {
+  return /** @type{!Array<!proto.gosdn.pnd.Change>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.gosdn.pnd.Change, 6));
+};
+
+
+/**
+ * @param {!Array<!proto.gosdn.pnd.Change>} value
+ * @return {!proto.gosdn.pnd.PrincipalNetworkDomain} returns this
+*/
+proto.gosdn.pnd.PrincipalNetworkDomain.prototype.setChangeList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 6, value);
+};
+
+
+/**
+ * @param {!proto.gosdn.pnd.Change=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gosdn.pnd.Change}
+ */
+proto.gosdn.pnd.PrincipalNetworkDomain.prototype.addChange = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 6, opt_value, proto.gosdn.pnd.Change, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gosdn.pnd.PrincipalNetworkDomain} returns this
+ */
+proto.gosdn.pnd.PrincipalNetworkDomain.prototype.clearChangeList = function() {
+  return this.setChangeList([]);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.gosdn.pnd.OrchestratedNetworkingDevice.repeatedFields_ = [3];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.pnd.OrchestratedNetworkingDevice.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.pnd.OrchestratedNetworkingDevice.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.pnd.OrchestratedNetworkingDevice} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.OrchestratedNetworkingDevice.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    id: jspb.Message.getFieldWithDefault(msg, 1, ""),
+    name: jspb.Message.getFieldWithDefault(msg, 2, ""),
+    deviceList: jspb.Message.toObjectList(msg.getDeviceList(),
+    github_com_openconfig_gnmi_proto_gnmi_gnmi_pb.Notification.toObject, includeInstance),
+    sbi: (f = msg.getSbi()) && gosdn_southbound_southbound_pb.SouthboundInterface.toObject(includeInstance, f)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.pnd.OrchestratedNetworkingDevice}
+ */
+proto.gosdn.pnd.OrchestratedNetworkingDevice.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.pnd.OrchestratedNetworkingDevice;
+  return proto.gosdn.pnd.OrchestratedNetworkingDevice.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.pnd.OrchestratedNetworkingDevice} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.pnd.OrchestratedNetworkingDevice}
+ */
+proto.gosdn.pnd.OrchestratedNetworkingDevice.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setId(value);
+      break;
+    case 2:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setName(value);
+      break;
+    case 3:
+      var value = new github_com_openconfig_gnmi_proto_gnmi_gnmi_pb.Notification;
+      reader.readMessage(value,github_com_openconfig_gnmi_proto_gnmi_gnmi_pb.Notification.deserializeBinaryFromReader);
+      msg.addDevice(value);
+      break;
+    case 4:
+      var value = new gosdn_southbound_southbound_pb.SouthboundInterface;
+      reader.readMessage(value,gosdn_southbound_southbound_pb.SouthboundInterface.deserializeBinaryFromReader);
+      msg.setSbi(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.pnd.OrchestratedNetworkingDevice.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.pnd.OrchestratedNetworkingDevice.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.pnd.OrchestratedNetworkingDevice} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.OrchestratedNetworkingDevice.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getId();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+  f = message.getName();
+  if (f.length > 0) {
+    writer.writeString(
+      2,
+      f
+    );
+  }
+  f = message.getDeviceList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      3,
+      f,
+      github_com_openconfig_gnmi_proto_gnmi_gnmi_pb.Notification.serializeBinaryToWriter
+    );
+  }
+  f = message.getSbi();
+  if (f != null) {
+    writer.writeMessage(
+      4,
+      f,
+      gosdn_southbound_southbound_pb.SouthboundInterface.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * optional string id = 1;
+ * @return {string}
+ */
+proto.gosdn.pnd.OrchestratedNetworkingDevice.prototype.getId = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.pnd.OrchestratedNetworkingDevice} returns this
+ */
+proto.gosdn.pnd.OrchestratedNetworkingDevice.prototype.setId = function(value) {
+  return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * optional string name = 2;
+ * @return {string}
+ */
+proto.gosdn.pnd.OrchestratedNetworkingDevice.prototype.getName = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.pnd.OrchestratedNetworkingDevice} returns this
+ */
+proto.gosdn.pnd.OrchestratedNetworkingDevice.prototype.setName = function(value) {
+  return jspb.Message.setProto3StringField(this, 2, value);
+};
+
+
+/**
+ * repeated gnmi.Notification device = 3;
+ * @return {!Array<!proto.gnmi.Notification>}
+ */
+proto.gosdn.pnd.OrchestratedNetworkingDevice.prototype.getDeviceList = function() {
+  return /** @type{!Array<!proto.gnmi.Notification>} */ (
+    jspb.Message.getRepeatedWrapperField(this, github_com_openconfig_gnmi_proto_gnmi_gnmi_pb.Notification, 3));
+};
+
+
+/**
+ * @param {!Array<!proto.gnmi.Notification>} value
+ * @return {!proto.gosdn.pnd.OrchestratedNetworkingDevice} returns this
+*/
+proto.gosdn.pnd.OrchestratedNetworkingDevice.prototype.setDeviceList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 3, value);
+};
+
+
+/**
+ * @param {!proto.gnmi.Notification=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gnmi.Notification}
+ */
+proto.gosdn.pnd.OrchestratedNetworkingDevice.prototype.addDevice = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.gnmi.Notification, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gosdn.pnd.OrchestratedNetworkingDevice} returns this
+ */
+proto.gosdn.pnd.OrchestratedNetworkingDevice.prototype.clearDeviceList = function() {
+  return this.setDeviceList([]);
+};
+
+
+/**
+ * optional gosdn.southbound.SouthboundInterface sbi = 4;
+ * @return {?proto.gosdn.southbound.SouthboundInterface}
+ */
+proto.gosdn.pnd.OrchestratedNetworkingDevice.prototype.getSbi = function() {
+  return /** @type{?proto.gosdn.southbound.SouthboundInterface} */ (
+    jspb.Message.getWrapperField(this, gosdn_southbound_southbound_pb.SouthboundInterface, 4));
+};
+
+
+/**
+ * @param {?proto.gosdn.southbound.SouthboundInterface|undefined} value
+ * @return {!proto.gosdn.pnd.OrchestratedNetworkingDevice} returns this
+*/
+proto.gosdn.pnd.OrchestratedNetworkingDevice.prototype.setSbi = function(value) {
+  return jspb.Message.setWrapperField(this, 4, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gosdn.pnd.OrchestratedNetworkingDevice} returns this
+ */
+proto.gosdn.pnd.OrchestratedNetworkingDevice.prototype.clearSbi = function() {
+  return this.setSbi(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gosdn.pnd.OrchestratedNetworkingDevice.prototype.hasSbi = function() {
+  return jspb.Message.getField(this, 4) != null;
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.pnd.Change.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.pnd.Change.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.pnd.Change} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.Change.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    id: jspb.Message.getFieldWithDefault(msg, 1, ""),
+    age: jspb.Message.getFieldWithDefault(msg, 2, 0),
+    state: jspb.Message.getFieldWithDefault(msg, 3, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.pnd.Change}
+ */
+proto.gosdn.pnd.Change.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.pnd.Change;
+  return proto.gosdn.pnd.Change.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.pnd.Change} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.pnd.Change}
+ */
+proto.gosdn.pnd.Change.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setId(value);
+      break;
+    case 2:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setAge(value);
+      break;
+    case 3:
+      var value = /** @type {!proto.gosdn.pnd.Change.State} */ (reader.readEnum());
+      msg.setState(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.pnd.Change.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.pnd.Change.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.pnd.Change} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.Change.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getId();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+  f = message.getAge();
+  if (f !== 0) {
+    writer.writeInt64(
+      2,
+      f
+    );
+  }
+  f = message.getState();
+  if (f !== 0.0) {
+    writer.writeEnum(
+      3,
+      f
+    );
+  }
+};
+
+
+/**
+ * @enum {number}
+ */
+proto.gosdn.pnd.Change.State = {
+  PENDING: 0,
+  COMMITTED: 1,
+  CONFIRMED: 2,
+  INCONSISTENT: 3
+};
+
+/**
+ * optional string id = 1;
+ * @return {string}
+ */
+proto.gosdn.pnd.Change.prototype.getId = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.pnd.Change} returns this
+ */
+proto.gosdn.pnd.Change.prototype.setId = function(value) {
+  return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * optional int64 age = 2;
+ * @return {number}
+ */
+proto.gosdn.pnd.Change.prototype.getAge = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gosdn.pnd.Change} returns this
+ */
+proto.gosdn.pnd.Change.prototype.setAge = function(value) {
+  return jspb.Message.setProto3IntField(this, 2, value);
+};
+
+
+/**
+ * optional State state = 3;
+ * @return {!proto.gosdn.pnd.Change.State}
+ */
+proto.gosdn.pnd.Change.prototype.getState = function() {
+  return /** @type {!proto.gosdn.pnd.Change.State} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
+};
+
+
+/**
+ * @param {!proto.gosdn.pnd.Change.State} value
+ * @return {!proto.gosdn.pnd.Change} returns this
+ */
+proto.gosdn.pnd.Change.prototype.setState = function(value) {
+  return jspb.Message.setProto3EnumField(this, 3, value);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.gosdn.pnd.SetRequest.repeatedFields_ = [2,3,4,5];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.pnd.SetRequest.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.pnd.SetRequest.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.pnd.SetRequest} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.SetRequest.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    timestamp: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    ondList: jspb.Message.toObjectList(msg.getOndList(),
+    proto.gosdn.pnd.setOnd.toObject, includeInstance),
+    sbiList: jspb.Message.toObjectList(msg.getSbiList(),
+    proto.gosdn.pnd.setSbi.toObject, includeInstance),
+    changeList: jspb.Message.toObjectList(msg.getChangeList(),
+    proto.gosdn.pnd.setChange.toObject, includeInstance),
+    changerequestList: jspb.Message.toObjectList(msg.getChangerequestList(),
+    proto.gosdn.pnd.ChangeRequest.toObject, includeInstance),
+    pid: jspb.Message.getFieldWithDefault(msg, 6, "")
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.pnd.SetRequest}
+ */
+proto.gosdn.pnd.SetRequest.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.pnd.SetRequest;
+  return proto.gosdn.pnd.SetRequest.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.pnd.SetRequest} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.pnd.SetRequest}
+ */
+proto.gosdn.pnd.SetRequest.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setTimestamp(value);
+      break;
+    case 2:
+      var value = new proto.gosdn.pnd.setOnd;
+      reader.readMessage(value,proto.gosdn.pnd.setOnd.deserializeBinaryFromReader);
+      msg.addOnd(value);
+      break;
+    case 3:
+      var value = new proto.gosdn.pnd.setSbi;
+      reader.readMessage(value,proto.gosdn.pnd.setSbi.deserializeBinaryFromReader);
+      msg.addSbi(value);
+      break;
+    case 4:
+      var value = new proto.gosdn.pnd.setChange;
+      reader.readMessage(value,proto.gosdn.pnd.setChange.deserializeBinaryFromReader);
+      msg.addChange(value);
+      break;
+    case 5:
+      var value = new proto.gosdn.pnd.ChangeRequest;
+      reader.readMessage(value,proto.gosdn.pnd.ChangeRequest.deserializeBinaryFromReader);
+      msg.addChangerequest(value);
+      break;
+    case 6:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setPid(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.pnd.SetRequest.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.pnd.SetRequest.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.pnd.SetRequest} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.SetRequest.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getTimestamp();
+  if (f !== 0) {
+    writer.writeInt64(
+      1,
+      f
+    );
+  }
+  f = message.getOndList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      2,
+      f,
+      proto.gosdn.pnd.setOnd.serializeBinaryToWriter
+    );
+  }
+  f = message.getSbiList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      3,
+      f,
+      proto.gosdn.pnd.setSbi.serializeBinaryToWriter
+    );
+  }
+  f = message.getChangeList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      4,
+      f,
+      proto.gosdn.pnd.setChange.serializeBinaryToWriter
+    );
+  }
+  f = message.getChangerequestList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      5,
+      f,
+      proto.gosdn.pnd.ChangeRequest.serializeBinaryToWriter
+    );
+  }
+  f = message.getPid();
+  if (f.length > 0) {
+    writer.writeString(
+      6,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional int64 timestamp = 1;
+ * @return {number}
+ */
+proto.gosdn.pnd.SetRequest.prototype.getTimestamp = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gosdn.pnd.SetRequest} returns this
+ */
+proto.gosdn.pnd.SetRequest.prototype.setTimestamp = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * repeated setOnd ond = 2;
+ * @return {!Array<!proto.gosdn.pnd.setOnd>}
+ */
+proto.gosdn.pnd.SetRequest.prototype.getOndList = function() {
+  return /** @type{!Array<!proto.gosdn.pnd.setOnd>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.gosdn.pnd.setOnd, 2));
+};
+
+
+/**
+ * @param {!Array<!proto.gosdn.pnd.setOnd>} value
+ * @return {!proto.gosdn.pnd.SetRequest} returns this
+*/
+proto.gosdn.pnd.SetRequest.prototype.setOndList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 2, value);
+};
+
+
+/**
+ * @param {!proto.gosdn.pnd.setOnd=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gosdn.pnd.setOnd}
+ */
+proto.gosdn.pnd.SetRequest.prototype.addOnd = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.gosdn.pnd.setOnd, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gosdn.pnd.SetRequest} returns this
+ */
+proto.gosdn.pnd.SetRequest.prototype.clearOndList = function() {
+  return this.setOndList([]);
+};
+
+
+/**
+ * repeated setSbi sbi = 3;
+ * @return {!Array<!proto.gosdn.pnd.setSbi>}
+ */
+proto.gosdn.pnd.SetRequest.prototype.getSbiList = function() {
+  return /** @type{!Array<!proto.gosdn.pnd.setSbi>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.gosdn.pnd.setSbi, 3));
+};
+
+
+/**
+ * @param {!Array<!proto.gosdn.pnd.setSbi>} value
+ * @return {!proto.gosdn.pnd.SetRequest} returns this
+*/
+proto.gosdn.pnd.SetRequest.prototype.setSbiList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 3, value);
+};
+
+
+/**
+ * @param {!proto.gosdn.pnd.setSbi=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gosdn.pnd.setSbi}
+ */
+proto.gosdn.pnd.SetRequest.prototype.addSbi = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.gosdn.pnd.setSbi, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gosdn.pnd.SetRequest} returns this
+ */
+proto.gosdn.pnd.SetRequest.prototype.clearSbiList = function() {
+  return this.setSbiList([]);
+};
+
+
+/**
+ * repeated setChange change = 4;
+ * @return {!Array<!proto.gosdn.pnd.setChange>}
+ */
+proto.gosdn.pnd.SetRequest.prototype.getChangeList = function() {
+  return /** @type{!Array<!proto.gosdn.pnd.setChange>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.gosdn.pnd.setChange, 4));
+};
+
+
+/**
+ * @param {!Array<!proto.gosdn.pnd.setChange>} value
+ * @return {!proto.gosdn.pnd.SetRequest} returns this
+*/
+proto.gosdn.pnd.SetRequest.prototype.setChangeList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 4, value);
+};
+
+
+/**
+ * @param {!proto.gosdn.pnd.setChange=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gosdn.pnd.setChange}
+ */
+proto.gosdn.pnd.SetRequest.prototype.addChange = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.gosdn.pnd.setChange, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gosdn.pnd.SetRequest} returns this
+ */
+proto.gosdn.pnd.SetRequest.prototype.clearChangeList = function() {
+  return this.setChangeList([]);
+};
+
+
+/**
+ * repeated ChangeRequest changeRequest = 5;
+ * @return {!Array<!proto.gosdn.pnd.ChangeRequest>}
+ */
+proto.gosdn.pnd.SetRequest.prototype.getChangerequestList = function() {
+  return /** @type{!Array<!proto.gosdn.pnd.ChangeRequest>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.gosdn.pnd.ChangeRequest, 5));
+};
+
+
+/**
+ * @param {!Array<!proto.gosdn.pnd.ChangeRequest>} value
+ * @return {!proto.gosdn.pnd.SetRequest} returns this
+*/
+proto.gosdn.pnd.SetRequest.prototype.setChangerequestList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 5, value);
+};
+
+
+/**
+ * @param {!proto.gosdn.pnd.ChangeRequest=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gosdn.pnd.ChangeRequest}
+ */
+proto.gosdn.pnd.SetRequest.prototype.addChangerequest = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 5, opt_value, proto.gosdn.pnd.ChangeRequest, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gosdn.pnd.SetRequest} returns this
+ */
+proto.gosdn.pnd.SetRequest.prototype.clearChangerequestList = function() {
+  return this.setChangerequestList([]);
+};
+
+
+/**
+ * optional string pid = 6;
+ * @return {string}
+ */
+proto.gosdn.pnd.SetRequest.prototype.getPid = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.pnd.SetRequest} returns this
+ */
+proto.gosdn.pnd.SetRequest.prototype.setPid = function(value) {
+  return jspb.Message.setProto3StringField(this, 6, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.pnd.setOnd.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.pnd.setOnd.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.pnd.setOnd} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.setOnd.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    address: jspb.Message.getFieldWithDefault(msg, 1, ""),
+    sbi: (f = msg.getSbi()) && gosdn_southbound_southbound_pb.SouthboundInterface.toObject(includeInstance, f),
+    devicename: jspb.Message.getFieldWithDefault(msg, 3, ""),
+    transportoption: (f = msg.getTransportoption()) && gosdn_transport_transport_pb.TransportOption.toObject(includeInstance, f)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.pnd.setOnd}
+ */
+proto.gosdn.pnd.setOnd.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.pnd.setOnd;
+  return proto.gosdn.pnd.setOnd.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.pnd.setOnd} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.pnd.setOnd}
+ */
+proto.gosdn.pnd.setOnd.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setAddress(value);
+      break;
+    case 2:
+      var value = new gosdn_southbound_southbound_pb.SouthboundInterface;
+      reader.readMessage(value,gosdn_southbound_southbound_pb.SouthboundInterface.deserializeBinaryFromReader);
+      msg.setSbi(value);
+      break;
+    case 3:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setDevicename(value);
+      break;
+    case 4:
+      var value = new gosdn_transport_transport_pb.TransportOption;
+      reader.readMessage(value,gosdn_transport_transport_pb.TransportOption.deserializeBinaryFromReader);
+      msg.setTransportoption(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.pnd.setOnd.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.pnd.setOnd.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.pnd.setOnd} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.setOnd.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getAddress();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+  f = message.getSbi();
+  if (f != null) {
+    writer.writeMessage(
+      2,
+      f,
+      gosdn_southbound_southbound_pb.SouthboundInterface.serializeBinaryToWriter
+    );
+  }
+  f = message.getDevicename();
+  if (f.length > 0) {
+    writer.writeString(
+      3,
+      f
+    );
+  }
+  f = message.getTransportoption();
+  if (f != null) {
+    writer.writeMessage(
+      4,
+      f,
+      gosdn_transport_transport_pb.TransportOption.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * optional string address = 1;
+ * @return {string}
+ */
+proto.gosdn.pnd.setOnd.prototype.getAddress = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.pnd.setOnd} returns this
+ */
+proto.gosdn.pnd.setOnd.prototype.setAddress = function(value) {
+  return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * optional gosdn.southbound.SouthboundInterface sbi = 2;
+ * @return {?proto.gosdn.southbound.SouthboundInterface}
+ */
+proto.gosdn.pnd.setOnd.prototype.getSbi = function() {
+  return /** @type{?proto.gosdn.southbound.SouthboundInterface} */ (
+    jspb.Message.getWrapperField(this, gosdn_southbound_southbound_pb.SouthboundInterface, 2));
+};
+
+
+/**
+ * @param {?proto.gosdn.southbound.SouthboundInterface|undefined} value
+ * @return {!proto.gosdn.pnd.setOnd} returns this
+*/
+proto.gosdn.pnd.setOnd.prototype.setSbi = function(value) {
+  return jspb.Message.setWrapperField(this, 2, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gosdn.pnd.setOnd} returns this
+ */
+proto.gosdn.pnd.setOnd.prototype.clearSbi = function() {
+  return this.setSbi(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gosdn.pnd.setOnd.prototype.hasSbi = function() {
+  return jspb.Message.getField(this, 2) != null;
+};
+
+
+/**
+ * optional string deviceName = 3;
+ * @return {string}
+ */
+proto.gosdn.pnd.setOnd.prototype.getDevicename = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.pnd.setOnd} returns this
+ */
+proto.gosdn.pnd.setOnd.prototype.setDevicename = function(value) {
+  return jspb.Message.setProto3StringField(this, 3, value);
+};
+
+
+/**
+ * optional gosdn.transport.TransportOption transportOption = 4;
+ * @return {?proto.gosdn.transport.TransportOption}
+ */
+proto.gosdn.pnd.setOnd.prototype.getTransportoption = function() {
+  return /** @type{?proto.gosdn.transport.TransportOption} */ (
+    jspb.Message.getWrapperField(this, gosdn_transport_transport_pb.TransportOption, 4));
+};
+
+
+/**
+ * @param {?proto.gosdn.transport.TransportOption|undefined} value
+ * @return {!proto.gosdn.pnd.setOnd} returns this
+*/
+proto.gosdn.pnd.setOnd.prototype.setTransportoption = function(value) {
+  return jspb.Message.setWrapperField(this, 4, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gosdn.pnd.setOnd} returns this
+ */
+proto.gosdn.pnd.setOnd.prototype.clearTransportoption = function() {
+  return this.setTransportoption(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gosdn.pnd.setOnd.prototype.hasTransportoption = function() {
+  return jspb.Message.getField(this, 4) != null;
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.pnd.setSbi.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.pnd.setSbi.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.pnd.setSbi} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.setSbi.toObject = function(includeInstance, msg) {
+  var f, obj = {
+
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.pnd.setSbi}
+ */
+proto.gosdn.pnd.setSbi.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.pnd.setSbi;
+  return proto.gosdn.pnd.setSbi.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.pnd.setSbi} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.pnd.setSbi}
+ */
+proto.gosdn.pnd.setSbi.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.pnd.setSbi.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.pnd.setSbi.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.pnd.setSbi} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.setSbi.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.pnd.setChange.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.pnd.setChange.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.pnd.setChange} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.setChange.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    cuid: jspb.Message.getFieldWithDefault(msg, 1, ""),
+    op: jspb.Message.getFieldWithDefault(msg, 2, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.pnd.setChange}
+ */
+proto.gosdn.pnd.setChange.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.pnd.setChange;
+  return proto.gosdn.pnd.setChange.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.pnd.setChange} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.pnd.setChange}
+ */
+proto.gosdn.pnd.setChange.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setCuid(value);
+      break;
+    case 2:
+      var value = /** @type {!proto.gosdn.pnd.setChange.Operation} */ (reader.readEnum());
+      msg.setOp(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.pnd.setChange.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.pnd.setChange.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.pnd.setChange} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.setChange.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getCuid();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+  f = message.getOp();
+  if (f !== 0.0) {
+    writer.writeEnum(
+      2,
+      f
+    );
+  }
+};
+
+
+/**
+ * @enum {number}
+ */
+proto.gosdn.pnd.setChange.Operation = {
+  CREATE: 0,
+  COMMIT: 1,
+  CONFIRM: 2
+};
+
+/**
+ * optional string cuid = 1;
+ * @return {string}
+ */
+proto.gosdn.pnd.setChange.prototype.getCuid = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.pnd.setChange} returns this
+ */
+proto.gosdn.pnd.setChange.prototype.setCuid = function(value) {
+  return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * optional Operation op = 2;
+ * @return {!proto.gosdn.pnd.setChange.Operation}
+ */
+proto.gosdn.pnd.setChange.prototype.getOp = function() {
+  return /** @type {!proto.gosdn.pnd.setChange.Operation} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {!proto.gosdn.pnd.setChange.Operation} value
+ * @return {!proto.gosdn.pnd.setChange} returns this
+ */
+proto.gosdn.pnd.setChange.prototype.setOp = function(value) {
+  return jspb.Message.setProto3EnumField(this, 2, value);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.gosdn.pnd.SetResponse.repeatedFields_ = [3];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.pnd.SetResponse.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.pnd.SetResponse.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.pnd.SetResponse} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.SetResponse.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    timestamp: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    status: jspb.Message.getFieldWithDefault(msg, 2, 0),
+    responsesList: jspb.Message.toObjectList(msg.getResponsesList(),
+    proto.gosdn.pnd.SetResponse.toObject, includeInstance)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.pnd.SetResponse}
+ */
+proto.gosdn.pnd.SetResponse.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.pnd.SetResponse;
+  return proto.gosdn.pnd.SetResponse.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.pnd.SetResponse} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.pnd.SetResponse}
+ */
+proto.gosdn.pnd.SetResponse.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setTimestamp(value);
+      break;
+    case 2:
+      var value = /** @type {!proto.gosdn.pnd.SetResponse.status} */ (reader.readEnum());
+      msg.setStatus(value);
+      break;
+    case 3:
+      var value = new proto.gosdn.pnd.SetResponse;
+      reader.readMessage(value,proto.gosdn.pnd.SetResponse.deserializeBinaryFromReader);
+      msg.addResponses(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.pnd.SetResponse.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.pnd.SetResponse.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.pnd.SetResponse} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.SetResponse.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getTimestamp();
+  if (f !== 0) {
+    writer.writeInt64(
+      1,
+      f
+    );
+  }
+  f = message.getStatus();
+  if (f !== 0.0) {
+    writer.writeEnum(
+      2,
+      f
+    );
+  }
+  f = message.getResponsesList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      3,
+      f,
+      proto.gosdn.pnd.SetResponse.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * @enum {number}
+ */
+proto.gosdn.pnd.SetResponse.status = {
+  OK: 0,
+  ERROR: 1
+};
+
+/**
+ * optional int64 timestamp = 1;
+ * @return {number}
+ */
+proto.gosdn.pnd.SetResponse.prototype.getTimestamp = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gosdn.pnd.SetResponse} returns this
+ */
+proto.gosdn.pnd.SetResponse.prototype.setTimestamp = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional status Status = 2;
+ * @return {!proto.gosdn.pnd.SetResponse.status}
+ */
+proto.gosdn.pnd.SetResponse.prototype.getStatus = function() {
+  return /** @type {!proto.gosdn.pnd.SetResponse.status} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {!proto.gosdn.pnd.SetResponse.status} value
+ * @return {!proto.gosdn.pnd.SetResponse} returns this
+ */
+proto.gosdn.pnd.SetResponse.prototype.setStatus = function(value) {
+  return jspb.Message.setProto3EnumField(this, 2, value);
+};
+
+
+/**
+ * repeated SetResponse responses = 3;
+ * @return {!Array<!proto.gosdn.pnd.SetResponse>}
+ */
+proto.gosdn.pnd.SetResponse.prototype.getResponsesList = function() {
+  return /** @type{!Array<!proto.gosdn.pnd.SetResponse>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.gosdn.pnd.SetResponse, 3));
+};
+
+
+/**
+ * @param {!Array<!proto.gosdn.pnd.SetResponse>} value
+ * @return {!proto.gosdn.pnd.SetResponse} returns this
+*/
+proto.gosdn.pnd.SetResponse.prototype.setResponsesList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 3, value);
+};
+
+
+/**
+ * @param {!proto.gosdn.pnd.SetResponse=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.gosdn.pnd.SetResponse}
+ */
+proto.gosdn.pnd.SetResponse.prototype.addResponses = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.gosdn.pnd.SetResponse, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.gosdn.pnd.SetResponse} returns this
+ */
+proto.gosdn.pnd.SetResponse.prototype.clearResponsesList = function() {
+  return this.setResponsesList([]);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.pnd.ChangeRequest.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.pnd.ChangeRequest.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.pnd.ChangeRequest} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.ChangeRequest.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    id: jspb.Message.getFieldWithDefault(msg, 1, ""),
+    path: jspb.Message.getFieldWithDefault(msg, 2, ""),
+    value: jspb.Message.getFieldWithDefault(msg, 3, ""),
+    apiop: jspb.Message.getFieldWithDefault(msg, 4, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.pnd.ChangeRequest}
+ */
+proto.gosdn.pnd.ChangeRequest.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.pnd.ChangeRequest;
+  return proto.gosdn.pnd.ChangeRequest.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.pnd.ChangeRequest} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.pnd.ChangeRequest}
+ */
+proto.gosdn.pnd.ChangeRequest.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setId(value);
+      break;
+    case 2:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setPath(value);
+      break;
+    case 3:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setValue(value);
+      break;
+    case 4:
+      var value = /** @type {!proto.gosdn.pnd.ApiOperation} */ (reader.readEnum());
+      msg.setApiop(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.pnd.ChangeRequest.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.pnd.ChangeRequest.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.pnd.ChangeRequest} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.ChangeRequest.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getId();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+  f = message.getPath();
+  if (f.length > 0) {
+    writer.writeString(
+      2,
+      f
+    );
+  }
+  f = message.getValue();
+  if (f.length > 0) {
+    writer.writeString(
+      3,
+      f
+    );
+  }
+  f = message.getApiop();
+  if (f !== 0.0) {
+    writer.writeEnum(
+      4,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional string id = 1;
+ * @return {string}
+ */
+proto.gosdn.pnd.ChangeRequest.prototype.getId = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.pnd.ChangeRequest} returns this
+ */
+proto.gosdn.pnd.ChangeRequest.prototype.setId = function(value) {
+  return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * optional string path = 2;
+ * @return {string}
+ */
+proto.gosdn.pnd.ChangeRequest.prototype.getPath = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.pnd.ChangeRequest} returns this
+ */
+proto.gosdn.pnd.ChangeRequest.prototype.setPath = function(value) {
+  return jspb.Message.setProto3StringField(this, 2, value);
+};
+
+
+/**
+ * optional string value = 3;
+ * @return {string}
+ */
+proto.gosdn.pnd.ChangeRequest.prototype.getValue = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.pnd.ChangeRequest} returns this
+ */
+proto.gosdn.pnd.ChangeRequest.prototype.setValue = function(value) {
+  return jspb.Message.setProto3StringField(this, 3, value);
+};
+
+
+/**
+ * optional ApiOperation apiOp = 4;
+ * @return {!proto.gosdn.pnd.ApiOperation}
+ */
+proto.gosdn.pnd.ChangeRequest.prototype.getApiop = function() {
+  return /** @type {!proto.gosdn.pnd.ApiOperation} */ (jspb.Message.getFieldWithDefault(this, 4, 0));
+};
+
+
+/**
+ * @param {!proto.gosdn.pnd.ApiOperation} value
+ * @return {!proto.gosdn.pnd.ChangeRequest} returns this
+ */
+proto.gosdn.pnd.ChangeRequest.prototype.setApiop = function(value) {
+  return jspb.Message.setProto3EnumField(this, 4, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.pnd.DeleteRequest.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.pnd.DeleteRequest.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.pnd.DeleteRequest} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.DeleteRequest.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    timestamp: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    type: jspb.Message.getFieldWithDefault(msg, 2, 0),
+    uuid: jspb.Message.getFieldWithDefault(msg, 3, ""),
+    pid: jspb.Message.getFieldWithDefault(msg, 4, "")
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.pnd.DeleteRequest}
+ */
+proto.gosdn.pnd.DeleteRequest.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.pnd.DeleteRequest;
+  return proto.gosdn.pnd.DeleteRequest.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.pnd.DeleteRequest} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.pnd.DeleteRequest}
+ */
+proto.gosdn.pnd.DeleteRequest.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setTimestamp(value);
+      break;
+    case 2:
+      var value = /** @type {!proto.gosdn.pnd.DeleteRequest.Type} */ (reader.readEnum());
+      msg.setType(value);
+      break;
+    case 3:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setUuid(value);
+      break;
+    case 4:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setPid(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.pnd.DeleteRequest.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.pnd.DeleteRequest.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.pnd.DeleteRequest} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.DeleteRequest.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getTimestamp();
+  if (f !== 0) {
+    writer.writeInt64(
+      1,
+      f
+    );
+  }
+  f = message.getType();
+  if (f !== 0.0) {
+    writer.writeEnum(
+      2,
+      f
+    );
+  }
+  f = message.getUuid();
+  if (f.length > 0) {
+    writer.writeString(
+      3,
+      f
+    );
+  }
+  f = message.getPid();
+  if (f.length > 0) {
+    writer.writeString(
+      4,
+      f
+    );
+  }
+};
+
+
+/**
+ * @enum {number}
+ */
+proto.gosdn.pnd.DeleteRequest.Type = {
+  OND: 0,
+  SBI: 1,
+  PND: 2
+};
+
+/**
+ * optional int64 timestamp = 1;
+ * @return {number}
+ */
+proto.gosdn.pnd.DeleteRequest.prototype.getTimestamp = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gosdn.pnd.DeleteRequest} returns this
+ */
+proto.gosdn.pnd.DeleteRequest.prototype.setTimestamp = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional Type type = 2;
+ * @return {!proto.gosdn.pnd.DeleteRequest.Type}
+ */
+proto.gosdn.pnd.DeleteRequest.prototype.getType = function() {
+  return /** @type {!proto.gosdn.pnd.DeleteRequest.Type} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {!proto.gosdn.pnd.DeleteRequest.Type} value
+ * @return {!proto.gosdn.pnd.DeleteRequest} returns this
+ */
+proto.gosdn.pnd.DeleteRequest.prototype.setType = function(value) {
+  return jspb.Message.setProto3EnumField(this, 2, value);
+};
+
+
+/**
+ * optional string uuid = 3;
+ * @return {string}
+ */
+proto.gosdn.pnd.DeleteRequest.prototype.getUuid = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.pnd.DeleteRequest} returns this
+ */
+proto.gosdn.pnd.DeleteRequest.prototype.setUuid = function(value) {
+  return jspb.Message.setProto3StringField(this, 3, value);
+};
+
+
+/**
+ * optional string pid = 4;
+ * @return {string}
+ */
+proto.gosdn.pnd.DeleteRequest.prototype.getPid = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.pnd.DeleteRequest} returns this
+ */
+proto.gosdn.pnd.DeleteRequest.prototype.setPid = function(value) {
+  return jspb.Message.setProto3StringField(this, 4, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.pnd.DeleteResponse.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.pnd.DeleteResponse.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.pnd.DeleteResponse} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.DeleteResponse.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    timestamp: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    status: jspb.Message.getFieldWithDefault(msg, 2, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.pnd.DeleteResponse}
+ */
+proto.gosdn.pnd.DeleteResponse.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.pnd.DeleteResponse;
+  return proto.gosdn.pnd.DeleteResponse.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.pnd.DeleteResponse} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.pnd.DeleteResponse}
+ */
+proto.gosdn.pnd.DeleteResponse.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setTimestamp(value);
+      break;
+    case 2:
+      var value = /** @type {!proto.gosdn.pnd.DeleteResponse.status} */ (reader.readEnum());
+      msg.setStatus(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.pnd.DeleteResponse.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.pnd.DeleteResponse.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.pnd.DeleteResponse} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.pnd.DeleteResponse.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getTimestamp();
+  if (f !== 0) {
+    writer.writeInt64(
+      1,
+      f
+    );
+  }
+  f = message.getStatus();
+  if (f !== 0.0) {
+    writer.writeEnum(
+      2,
+      f
+    );
+  }
+};
+
+
+/**
+ * @enum {number}
+ */
+proto.gosdn.pnd.DeleteResponse.status = {
+  OK: 0,
+  ERROR: 1
+};
+
+/**
+ * optional int64 timestamp = 1;
+ * @return {number}
+ */
+proto.gosdn.pnd.DeleteResponse.prototype.getTimestamp = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.gosdn.pnd.DeleteResponse} returns this
+ */
+proto.gosdn.pnd.DeleteResponse.prototype.setTimestamp = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional status Status = 2;
+ * @return {!proto.gosdn.pnd.DeleteResponse.status}
+ */
+proto.gosdn.pnd.DeleteResponse.prototype.getStatus = function() {
+  return /** @type {!proto.gosdn.pnd.DeleteResponse.status} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {!proto.gosdn.pnd.DeleteResponse.status} value
+ * @return {!proto.gosdn.pnd.DeleteResponse} returns this
+ */
+proto.gosdn.pnd.DeleteResponse.prototype.setStatus = function(value) {
+  return jspb.Message.setProto3EnumField(this, 2, value);
+};
+
+
+/**
+ * @enum {number}
+ */
+proto.gosdn.pnd.ApiOperation = {
+  UPDATE: 0,
+  REPLACE: 1,
+  DELETE: 2
+};
+
+goog.object.extend(exports, proto.gosdn.pnd);
diff --git a/web/gosdn/southbound/southbound_pb.d.ts b/web/gosdn/southbound/southbound_pb.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..7781fedd72a5ad050f52ba280060c0fb2a268662
--- /dev/null
+++ b/web/gosdn/southbound/southbound_pb.d.ts
@@ -0,0 +1,32 @@
+import * as jspb from 'google-protobuf'
+
+import * as google_protobuf_descriptor_pb from 'google-protobuf/google/protobuf/descriptor_pb';
+
+
+export class SouthboundInterface extends jspb.Message {
+  getId(): string;
+  setId(value: string): SouthboundInterface;
+
+  getType(): Type;
+  setType(value: Type): SouthboundInterface;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): SouthboundInterface.AsObject;
+  static toObject(includeInstance: boolean, msg: SouthboundInterface): SouthboundInterface.AsObject;
+  static serializeBinaryToWriter(message: SouthboundInterface, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): SouthboundInterface;
+  static deserializeBinaryFromReader(message: SouthboundInterface, reader: jspb.BinaryReader): SouthboundInterface;
+}
+
+export namespace SouthboundInterface {
+  export type AsObject = {
+    id: string,
+    type: Type,
+  }
+}
+
+export enum Type { 
+  OPENCONFIG = 0,
+  CONTAINERISED = 1,
+  PLUGIN = 2,
+}
diff --git a/web/gosdn/southbound/southbound_pb.js b/web/gosdn/southbound/southbound_pb.js
new file mode 100644
index 0000000000000000000000000000000000000000..dcfea0c529e54c43e326f1b00156351ef1a12559
--- /dev/null
+++ b/web/gosdn/southbound/southbound_pb.js
@@ -0,0 +1,211 @@
+// source: gosdn/southbound/southbound.proto
+/**
+ * @fileoverview
+ * @enhanceable
+ * @suppress {messageConventions} JS Compiler reports an error if a variable or
+ *     field starts with 'MSG_' and isn't a translatable message.
+ * @public
+ */
+// GENERATED CODE -- DO NOT EDIT!
+/* eslint-disable */
+// @ts-nocheck
+
+var jspb = require('google-protobuf');
+var goog = jspb;
+var global = Function('return this')();
+
+var google_protobuf_descriptor_pb = require('google-protobuf/google/protobuf/descriptor_pb.js');
+goog.object.extend(proto, google_protobuf_descriptor_pb);
+goog.exportSymbol('proto.gosdn.southbound.SouthboundInterface', null, global);
+goog.exportSymbol('proto.gosdn.southbound.Type', null, global);
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.southbound.SouthboundInterface = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gosdn.southbound.SouthboundInterface, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.southbound.SouthboundInterface.displayName = 'proto.gosdn.southbound.SouthboundInterface';
+}
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.southbound.SouthboundInterface.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.southbound.SouthboundInterface.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.southbound.SouthboundInterface} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.southbound.SouthboundInterface.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    id: jspb.Message.getFieldWithDefault(msg, 1, ""),
+    type: jspb.Message.getFieldWithDefault(msg, 2, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.southbound.SouthboundInterface}
+ */
+proto.gosdn.southbound.SouthboundInterface.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.southbound.SouthboundInterface;
+  return proto.gosdn.southbound.SouthboundInterface.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.southbound.SouthboundInterface} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.southbound.SouthboundInterface}
+ */
+proto.gosdn.southbound.SouthboundInterface.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setId(value);
+      break;
+    case 2:
+      var value = /** @type {!proto.gosdn.southbound.Type} */ (reader.readEnum());
+      msg.setType(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.southbound.SouthboundInterface.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.southbound.SouthboundInterface.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.southbound.SouthboundInterface} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.southbound.SouthboundInterface.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getId();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+  f = message.getType();
+  if (f !== 0.0) {
+    writer.writeEnum(
+      2,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional string id = 1;
+ * @return {string}
+ */
+proto.gosdn.southbound.SouthboundInterface.prototype.getId = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.southbound.SouthboundInterface} returns this
+ */
+proto.gosdn.southbound.SouthboundInterface.prototype.setId = function(value) {
+  return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * optional Type type = 2;
+ * @return {!proto.gosdn.southbound.Type}
+ */
+proto.gosdn.southbound.SouthboundInterface.prototype.getType = function() {
+  return /** @type {!proto.gosdn.southbound.Type} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {!proto.gosdn.southbound.Type} value
+ * @return {!proto.gosdn.southbound.SouthboundInterface} returns this
+ */
+proto.gosdn.southbound.SouthboundInterface.prototype.setType = function(value) {
+  return jspb.Message.setProto3EnumField(this, 2, value);
+};
+
+
+/**
+ * @enum {number}
+ */
+proto.gosdn.southbound.Type = {
+  OPENCONFIG: 0,
+  CONTAINERISED: 1,
+  PLUGIN: 2
+};
+
+goog.object.extend(exports, proto.gosdn.southbound);
diff --git a/web/gosdn/transport/transport_pb.d.ts b/web/gosdn/transport/transport_pb.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..956be9d97ee0ca5626384afba3e0c29f0d17ea0b
--- /dev/null
+++ b/web/gosdn/transport/transport_pb.d.ts
@@ -0,0 +1,105 @@
+import * as jspb from 'google-protobuf'
+
+import * as google_protobuf_descriptor_pb from 'google-protobuf/google/protobuf/descriptor_pb';
+import * as github_com_openconfig_gnmi_proto_gnmi_gnmi_pb from '../../github.com/openconfig/gnmi/proto/gnmi/gnmi_pb';
+import * as gosdn_southbound_southbound_pb from '../../gosdn/southbound/southbound_pb';
+
+
+export class TransportOption extends jspb.Message {
+  getAddress(): string;
+  setAddress(value: string): TransportOption;
+
+  getUsername(): string;
+  setUsername(value: string): TransportOption;
+
+  getPassword(): string;
+  setPassword(value: string): TransportOption;
+
+  getTls(): boolean;
+  setTls(value: boolean): TransportOption;
+
+  getGnmitransportoption(): GnmiTransportOption | undefined;
+  setGnmitransportoption(value?: GnmiTransportOption): TransportOption;
+  hasGnmitransportoption(): boolean;
+  clearGnmitransportoption(): TransportOption;
+
+  getRestconftransportoption(): RestconfTransportOption | undefined;
+  setRestconftransportoption(value?: RestconfTransportOption): TransportOption;
+  hasRestconftransportoption(): boolean;
+  clearRestconftransportoption(): TransportOption;
+
+  getType(): gosdn_southbound_southbound_pb.Type;
+  setType(value: gosdn_southbound_southbound_pb.Type): TransportOption;
+
+  getTransportoptionCase(): TransportOption.TransportoptionCase;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): TransportOption.AsObject;
+  static toObject(includeInstance: boolean, msg: TransportOption): TransportOption.AsObject;
+  static serializeBinaryToWriter(message: TransportOption, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): TransportOption;
+  static deserializeBinaryFromReader(message: TransportOption, reader: jspb.BinaryReader): TransportOption;
+}
+
+export namespace TransportOption {
+  export type AsObject = {
+    address: string,
+    username: string,
+    password: string,
+    tls: boolean,
+    gnmitransportoption?: GnmiTransportOption.AsObject,
+    restconftransportoption?: RestconfTransportOption.AsObject,
+    type: gosdn_southbound_southbound_pb.Type,
+  }
+
+  export enum TransportoptionCase { 
+    TRANSPORTOPTION_NOT_SET = 0,
+    GNMITRANSPORTOPTION = 5,
+    RESTCONFTRANSPORTOPTION = 6,
+  }
+}
+
+export class GnmiTransportOption extends jspb.Message {
+  getCompression(): string;
+  setCompression(value: string): GnmiTransportOption;
+
+  getGrpcdialoptionsMap(): jspb.Map<string, string>;
+  clearGrpcdialoptionsMap(): GnmiTransportOption;
+
+  getToken(): string;
+  setToken(value: string): GnmiTransportOption;
+
+  getEncoding(): github_com_openconfig_gnmi_proto_gnmi_gnmi_pb.Encoding;
+  setEncoding(value: github_com_openconfig_gnmi_proto_gnmi_gnmi_pb.Encoding): GnmiTransportOption;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): GnmiTransportOption.AsObject;
+  static toObject(includeInstance: boolean, msg: GnmiTransportOption): GnmiTransportOption.AsObject;
+  static serializeBinaryToWriter(message: GnmiTransportOption, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): GnmiTransportOption;
+  static deserializeBinaryFromReader(message: GnmiTransportOption, reader: jspb.BinaryReader): GnmiTransportOption;
+}
+
+export namespace GnmiTransportOption {
+  export type AsObject = {
+    compression: string,
+    grpcdialoptionsMap: Array<[string, string]>,
+    token: string,
+    encoding: github_com_openconfig_gnmi_proto_gnmi_gnmi_pb.Encoding,
+  }
+}
+
+export class RestconfTransportOption extends jspb.Message {
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): RestconfTransportOption.AsObject;
+  static toObject(includeInstance: boolean, msg: RestconfTransportOption): RestconfTransportOption.AsObject;
+  static serializeBinaryToWriter(message: RestconfTransportOption, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): RestconfTransportOption;
+  static deserializeBinaryFromReader(message: RestconfTransportOption, reader: jspb.BinaryReader): RestconfTransportOption;
+}
+
+export namespace RestconfTransportOption {
+  export type AsObject = {
+  }
+}
+
diff --git a/web/gosdn/transport/transport_pb.js b/web/gosdn/transport/transport_pb.js
new file mode 100644
index 0000000000000000000000000000000000000000..a94e7e75c8982783807bbeebea572722715bf1da
--- /dev/null
+++ b/web/gosdn/transport/transport_pb.js
@@ -0,0 +1,792 @@
+// source: gosdn/transport/transport.proto
+/**
+ * @fileoverview
+ * @enhanceable
+ * @suppress {messageConventions} JS Compiler reports an error if a variable or
+ *     field starts with 'MSG_' and isn't a translatable message.
+ * @public
+ */
+// GENERATED CODE -- DO NOT EDIT!
+/* eslint-disable */
+// @ts-nocheck
+
+var jspb = require('google-protobuf');
+var goog = jspb;
+var global = Function('return this')();
+
+var google_protobuf_descriptor_pb = require('google-protobuf/google/protobuf/descriptor_pb.js');
+goog.object.extend(proto, google_protobuf_descriptor_pb);
+var github_com_openconfig_gnmi_proto_gnmi_gnmi_pb = require('../../github.com/openconfig/gnmi/proto/gnmi/gnmi_pb.js');
+goog.object.extend(proto, github_com_openconfig_gnmi_proto_gnmi_gnmi_pb);
+var gosdn_southbound_southbound_pb = require('../../gosdn/southbound/southbound_pb.js');
+goog.object.extend(proto, gosdn_southbound_southbound_pb);
+goog.exportSymbol('proto.gosdn.transport.GnmiTransportOption', null, global);
+goog.exportSymbol('proto.gosdn.transport.RestconfTransportOption', null, global);
+goog.exportSymbol('proto.gosdn.transport.TransportOption', null, global);
+goog.exportSymbol('proto.gosdn.transport.TransportOption.TransportoptionCase', null, global);
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.transport.TransportOption = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, proto.gosdn.transport.TransportOption.oneofGroups_);
+};
+goog.inherits(proto.gosdn.transport.TransportOption, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.transport.TransportOption.displayName = 'proto.gosdn.transport.TransportOption';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.transport.GnmiTransportOption = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gosdn.transport.GnmiTransportOption, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.transport.GnmiTransportOption.displayName = 'proto.gosdn.transport.GnmiTransportOption';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.gosdn.transport.RestconfTransportOption = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.gosdn.transport.RestconfTransportOption, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.gosdn.transport.RestconfTransportOption.displayName = 'proto.gosdn.transport.RestconfTransportOption';
+}
+
+/**
+ * Oneof group definitions for this message. Each group defines the field
+ * numbers belonging to that group. When of these fields' value is set, all
+ * other fields in the group are cleared. During deserialization, if multiple
+ * fields are encountered for a group, only the last value seen will be kept.
+ * @private {!Array<!Array<number>>}
+ * @const
+ */
+proto.gosdn.transport.TransportOption.oneofGroups_ = [[5,6]];
+
+/**
+ * @enum {number}
+ */
+proto.gosdn.transport.TransportOption.TransportoptionCase = {
+  TRANSPORTOPTION_NOT_SET: 0,
+  GNMITRANSPORTOPTION: 5,
+  RESTCONFTRANSPORTOPTION: 6
+};
+
+/**
+ * @return {proto.gosdn.transport.TransportOption.TransportoptionCase}
+ */
+proto.gosdn.transport.TransportOption.prototype.getTransportoptionCase = function() {
+  return /** @type {proto.gosdn.transport.TransportOption.TransportoptionCase} */(jspb.Message.computeOneofCase(this, proto.gosdn.transport.TransportOption.oneofGroups_[0]));
+};
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.transport.TransportOption.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.transport.TransportOption.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.transport.TransportOption} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.transport.TransportOption.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    address: jspb.Message.getFieldWithDefault(msg, 1, ""),
+    username: jspb.Message.getFieldWithDefault(msg, 2, ""),
+    password: jspb.Message.getFieldWithDefault(msg, 3, ""),
+    tls: jspb.Message.getBooleanFieldWithDefault(msg, 4, false),
+    gnmitransportoption: (f = msg.getGnmitransportoption()) && proto.gosdn.transport.GnmiTransportOption.toObject(includeInstance, f),
+    restconftransportoption: (f = msg.getRestconftransportoption()) && proto.gosdn.transport.RestconfTransportOption.toObject(includeInstance, f),
+    type: jspb.Message.getFieldWithDefault(msg, 7, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.transport.TransportOption}
+ */
+proto.gosdn.transport.TransportOption.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.transport.TransportOption;
+  return proto.gosdn.transport.TransportOption.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.transport.TransportOption} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.transport.TransportOption}
+ */
+proto.gosdn.transport.TransportOption.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setAddress(value);
+      break;
+    case 2:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setUsername(value);
+      break;
+    case 3:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setPassword(value);
+      break;
+    case 4:
+      var value = /** @type {boolean} */ (reader.readBool());
+      msg.setTls(value);
+      break;
+    case 5:
+      var value = new proto.gosdn.transport.GnmiTransportOption;
+      reader.readMessage(value,proto.gosdn.transport.GnmiTransportOption.deserializeBinaryFromReader);
+      msg.setGnmitransportoption(value);
+      break;
+    case 6:
+      var value = new proto.gosdn.transport.RestconfTransportOption;
+      reader.readMessage(value,proto.gosdn.transport.RestconfTransportOption.deserializeBinaryFromReader);
+      msg.setRestconftransportoption(value);
+      break;
+    case 7:
+      var value = /** @type {!proto.gosdn.southbound.Type} */ (reader.readEnum());
+      msg.setType(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.transport.TransportOption.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.transport.TransportOption.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.transport.TransportOption} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.transport.TransportOption.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getAddress();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+  f = message.getUsername();
+  if (f.length > 0) {
+    writer.writeString(
+      2,
+      f
+    );
+  }
+  f = message.getPassword();
+  if (f.length > 0) {
+    writer.writeString(
+      3,
+      f
+    );
+  }
+  f = message.getTls();
+  if (f) {
+    writer.writeBool(
+      4,
+      f
+    );
+  }
+  f = message.getGnmitransportoption();
+  if (f != null) {
+    writer.writeMessage(
+      5,
+      f,
+      proto.gosdn.transport.GnmiTransportOption.serializeBinaryToWriter
+    );
+  }
+  f = message.getRestconftransportoption();
+  if (f != null) {
+    writer.writeMessage(
+      6,
+      f,
+      proto.gosdn.transport.RestconfTransportOption.serializeBinaryToWriter
+    );
+  }
+  f = message.getType();
+  if (f !== 0.0) {
+    writer.writeEnum(
+      7,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional string address = 1;
+ * @return {string}
+ */
+proto.gosdn.transport.TransportOption.prototype.getAddress = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.transport.TransportOption} returns this
+ */
+proto.gosdn.transport.TransportOption.prototype.setAddress = function(value) {
+  return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * optional string username = 2;
+ * @return {string}
+ */
+proto.gosdn.transport.TransportOption.prototype.getUsername = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.transport.TransportOption} returns this
+ */
+proto.gosdn.transport.TransportOption.prototype.setUsername = function(value) {
+  return jspb.Message.setProto3StringField(this, 2, value);
+};
+
+
+/**
+ * optional string password = 3;
+ * @return {string}
+ */
+proto.gosdn.transport.TransportOption.prototype.getPassword = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.transport.TransportOption} returns this
+ */
+proto.gosdn.transport.TransportOption.prototype.setPassword = function(value) {
+  return jspb.Message.setProto3StringField(this, 3, value);
+};
+
+
+/**
+ * optional bool tls = 4;
+ * @return {boolean}
+ */
+proto.gosdn.transport.TransportOption.prototype.getTls = function() {
+  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 4, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.gosdn.transport.TransportOption} returns this
+ */
+proto.gosdn.transport.TransportOption.prototype.setTls = function(value) {
+  return jspb.Message.setProto3BooleanField(this, 4, value);
+};
+
+
+/**
+ * optional GnmiTransportOption GnmiTransportOption = 5;
+ * @return {?proto.gosdn.transport.GnmiTransportOption}
+ */
+proto.gosdn.transport.TransportOption.prototype.getGnmitransportoption = function() {
+  return /** @type{?proto.gosdn.transport.GnmiTransportOption} */ (
+    jspb.Message.getWrapperField(this, proto.gosdn.transport.GnmiTransportOption, 5));
+};
+
+
+/**
+ * @param {?proto.gosdn.transport.GnmiTransportOption|undefined} value
+ * @return {!proto.gosdn.transport.TransportOption} returns this
+*/
+proto.gosdn.transport.TransportOption.prototype.setGnmitransportoption = function(value) {
+  return jspb.Message.setOneofWrapperField(this, 5, proto.gosdn.transport.TransportOption.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gosdn.transport.TransportOption} returns this
+ */
+proto.gosdn.transport.TransportOption.prototype.clearGnmitransportoption = function() {
+  return this.setGnmitransportoption(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gosdn.transport.TransportOption.prototype.hasGnmitransportoption = function() {
+  return jspb.Message.getField(this, 5) != null;
+};
+
+
+/**
+ * optional RestconfTransportOption RestconfTransportOption = 6;
+ * @return {?proto.gosdn.transport.RestconfTransportOption}
+ */
+proto.gosdn.transport.TransportOption.prototype.getRestconftransportoption = function() {
+  return /** @type{?proto.gosdn.transport.RestconfTransportOption} */ (
+    jspb.Message.getWrapperField(this, proto.gosdn.transport.RestconfTransportOption, 6));
+};
+
+
+/**
+ * @param {?proto.gosdn.transport.RestconfTransportOption|undefined} value
+ * @return {!proto.gosdn.transport.TransportOption} returns this
+*/
+proto.gosdn.transport.TransportOption.prototype.setRestconftransportoption = function(value) {
+  return jspb.Message.setOneofWrapperField(this, 6, proto.gosdn.transport.TransportOption.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.gosdn.transport.TransportOption} returns this
+ */
+proto.gosdn.transport.TransportOption.prototype.clearRestconftransportoption = function() {
+  return this.setRestconftransportoption(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.gosdn.transport.TransportOption.prototype.hasRestconftransportoption = function() {
+  return jspb.Message.getField(this, 6) != null;
+};
+
+
+/**
+ * optional gosdn.southbound.Type type = 7;
+ * @return {!proto.gosdn.southbound.Type}
+ */
+proto.gosdn.transport.TransportOption.prototype.getType = function() {
+  return /** @type {!proto.gosdn.southbound.Type} */ (jspb.Message.getFieldWithDefault(this, 7, 0));
+};
+
+
+/**
+ * @param {!proto.gosdn.southbound.Type} value
+ * @return {!proto.gosdn.transport.TransportOption} returns this
+ */
+proto.gosdn.transport.TransportOption.prototype.setType = function(value) {
+  return jspb.Message.setProto3EnumField(this, 7, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.transport.GnmiTransportOption.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.transport.GnmiTransportOption.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.transport.GnmiTransportOption} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.transport.GnmiTransportOption.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    compression: jspb.Message.getFieldWithDefault(msg, 1, ""),
+    grpcdialoptionsMap: (f = msg.getGrpcdialoptionsMap()) ? f.toObject(includeInstance, undefined) : [],
+    token: jspb.Message.getFieldWithDefault(msg, 3, ""),
+    encoding: jspb.Message.getFieldWithDefault(msg, 4, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.transport.GnmiTransportOption}
+ */
+proto.gosdn.transport.GnmiTransportOption.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.transport.GnmiTransportOption;
+  return proto.gosdn.transport.GnmiTransportOption.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.transport.GnmiTransportOption} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.transport.GnmiTransportOption}
+ */
+proto.gosdn.transport.GnmiTransportOption.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setCompression(value);
+      break;
+    case 2:
+      var value = msg.getGrpcdialoptionsMap();
+      reader.readMessage(value, function(message, reader) {
+        jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, "", "");
+         });
+      break;
+    case 3:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setToken(value);
+      break;
+    case 4:
+      var value = /** @type {!proto.gnmi.Encoding} */ (reader.readEnum());
+      msg.setEncoding(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.transport.GnmiTransportOption.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.transport.GnmiTransportOption.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.transport.GnmiTransportOption} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.transport.GnmiTransportOption.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getCompression();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+  f = message.getGrpcdialoptionsMap(true);
+  if (f && f.getLength() > 0) {
+    f.serializeBinary(2, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString);
+  }
+  f = message.getToken();
+  if (f.length > 0) {
+    writer.writeString(
+      3,
+      f
+    );
+  }
+  f = message.getEncoding();
+  if (f !== 0.0) {
+    writer.writeEnum(
+      4,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional string compression = 1;
+ * @return {string}
+ */
+proto.gosdn.transport.GnmiTransportOption.prototype.getCompression = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.transport.GnmiTransportOption} returns this
+ */
+proto.gosdn.transport.GnmiTransportOption.prototype.setCompression = function(value) {
+  return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * map<string, string> grpcDialOptions = 2;
+ * @param {boolean=} opt_noLazyCreate Do not create the map if
+ * empty, instead returning `undefined`
+ * @return {!jspb.Map<string,string>}
+ */
+proto.gosdn.transport.GnmiTransportOption.prototype.getGrpcdialoptionsMap = function(opt_noLazyCreate) {
+  return /** @type {!jspb.Map<string,string>} */ (
+      jspb.Message.getMapField(this, 2, opt_noLazyCreate,
+      null));
+};
+
+
+/**
+ * Clears values from the map. The map will be non-null.
+ * @return {!proto.gosdn.transport.GnmiTransportOption} returns this
+ */
+proto.gosdn.transport.GnmiTransportOption.prototype.clearGrpcdialoptionsMap = function() {
+  this.getGrpcdialoptionsMap().clear();
+  return this;};
+
+
+/**
+ * optional string token = 3;
+ * @return {string}
+ */
+proto.gosdn.transport.GnmiTransportOption.prototype.getToken = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.gosdn.transport.GnmiTransportOption} returns this
+ */
+proto.gosdn.transport.GnmiTransportOption.prototype.setToken = function(value) {
+  return jspb.Message.setProto3StringField(this, 3, value);
+};
+
+
+/**
+ * optional gnmi.Encoding encoding = 4;
+ * @return {!proto.gnmi.Encoding}
+ */
+proto.gosdn.transport.GnmiTransportOption.prototype.getEncoding = function() {
+  return /** @type {!proto.gnmi.Encoding} */ (jspb.Message.getFieldWithDefault(this, 4, 0));
+};
+
+
+/**
+ * @param {!proto.gnmi.Encoding} value
+ * @return {!proto.gosdn.transport.GnmiTransportOption} returns this
+ */
+proto.gosdn.transport.GnmiTransportOption.prototype.setEncoding = function(value) {
+  return jspb.Message.setProto3EnumField(this, 4, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.gosdn.transport.RestconfTransportOption.prototype.toObject = function(opt_includeInstance) {
+  return proto.gosdn.transport.RestconfTransportOption.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.gosdn.transport.RestconfTransportOption} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.transport.RestconfTransportOption.toObject = function(includeInstance, msg) {
+  var f, obj = {
+
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.gosdn.transport.RestconfTransportOption}
+ */
+proto.gosdn.transport.RestconfTransportOption.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.gosdn.transport.RestconfTransportOption;
+  return proto.gosdn.transport.RestconfTransportOption.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.gosdn.transport.RestconfTransportOption} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.gosdn.transport.RestconfTransportOption}
+ */
+proto.gosdn.transport.RestconfTransportOption.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.gosdn.transport.RestconfTransportOption.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.gosdn.transport.RestconfTransportOption.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.gosdn.transport.RestconfTransportOption} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.gosdn.transport.RestconfTransportOption.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+};
+
+
+goog.object.extend(exports, proto.gosdn.transport);